From 3d6c6c7f1c938bc5ae62883004a7ba97b3a49139 Mon Sep 17 00:00:00 2001 From: fajardm Date: Sun, 23 Apr 2017 10:43:54 +0700 Subject: [PATCH] Simple mixin --- .gitignore | 3 +++ index.js | 14 ++++++++++++++ package.json | 36 ++++++++++++++++++++++++++++++++++++ views/index.pug | 5 +++++ views/mixins/form.pug | 26 ++++++++++++++++++++++++++ 5 files changed, 84 insertions(+) create mode 100644 index.js create mode 100644 package.json create mode 100644 views/index.pug create mode 100644 views/mixins/form.pug diff --git a/.gitignore b/.gitignore index 5148e52..f243c96 100644 --- a/.gitignore +++ b/.gitignore @@ -35,3 +35,6 @@ jspm_packages # Optional REPL history .node_repl_history + +# Jetbrains +.idea/ \ No newline at end of file diff --git a/index.js b/index.js new file mode 100644 index 0000000..95e275e --- /dev/null +++ b/index.js @@ -0,0 +1,14 @@ +const path = require('path'); +const express = require('express'); + +const app = express(); + +app.set('views', path.join(__dirname, 'views')); +app.set('view engine', 'pug'); + +app.get('/', (req, res) => res.render('index')); + +app.listen(3000, () => { +// eslint-disable-next-line no-console + console.log('Example app listening on port 3000!'); +}); diff --git a/package.json b/package.json new file mode 100644 index 0000000..6cc5635 --- /dev/null +++ b/package.json @@ -0,0 +1,36 @@ +{ + "name": "pug-form-helper", + "version": "1.0.0", + "description": "create form helper using pug", + "main": "index.js", + "scripts": { + "test": "test" + }, + "repository": { + "type": "git", + "url": "git+ssh://git@github.com/fajardm/pug-form-helper.git" + }, + "keywords": [ + "pug", + "form", + "helper", + "nodejs" + ], + "author": "fajar.dwi.mawan@gmail.com", + "license": "GPL-3.0", + "bugs": { + "url": "https://github.com/fajardm/pug-form-helper/issues" + }, + "homepage": "https://github.com/fajardm/pug-form-helper#readme", + "dependencies": { + "express": "^4.15.2", + "pug": "^2.0.0-beta.12" + }, + "devDependencies": { + "eslint": "^3.19.0", + "eslint-config-airbnb": "^14.1.0", + "eslint-plugin-import": "^2.2.0", + "eslint-plugin-jsx-a11y": "^4.0.0", + "eslint-plugin-react": "^6.10.3" + } +} diff --git a/views/index.pug b/views/index.pug new file mode 100644 index 0000000..7720b68 --- /dev/null +++ b/views/index.pug @@ -0,0 +1,5 @@ +include ../views/mixins/form + ++text_field({name: "email", type: "email"}) +br ++select_tag({name: 'address', items: ['item 1', 'item 2', 'item 3']}) \ No newline at end of file diff --git a/views/mixins/form.pug b/views/mixins/form.pug new file mode 100644 index 0000000..5ea71db --- /dev/null +++ b/views/mixins/form.pug @@ -0,0 +1,26 @@ +// + - Input field + - @params {object} params +// +mixin text_field (params) + - const name = params.name ? params.name : '' + - const label = params.label ? params.label : name + - const placeholder = params.placeholder ? params.placeholder : label + - const type = params.type ? params.type : 'text' + .form-group + label(for=name) #{label} + input.form-control(id=name, name=name, type=type, placeholder=placeholder) + +// + - Select tag + - @params {object} params +// +mixin select_tag (params) + - const name = params.name ? params.name : '' + - const label = params.label ? params.label : name + - const items = Array.isArray(params.items) ? params.items : [params.items] + .form-group + label(for=name) #{label} + select.form-control(id=name, name=name) + each item in items + option #{item} \ No newline at end of file