├── .DS_Store
├── .editorconfig
├── .eslintignore
├── .eslintrc.js
├── .ftpconfig
├── .gitignore
├── .npmignore
├── .postcssrc.js
├── README.md
├── babel.config.js
├── dist
├── demo.html
├── vue-fast-forms.common.js
├── vue-fast-forms.common.js.map
├── vue-fast-forms.css
├── vue-fast-forms.umd.js
├── vue-fast-forms.umd.js.map
├── vue-fast-forms.umd.min.js
└── vue-fast-forms.umd.min.js.map
├── lib
├── button.vue
├── datepicker
│ ├── datepicker.vue
│ ├── days.vue
│ ├── months.vue
│ └── years.vue
├── form.vue
├── group.vue
├── index.js
├── inputs
│ ├── _basic.vue
│ ├── checkbox.vue
│ ├── input-addon.vue
│ ├── input-help.vue
│ ├── input.vue
│ ├── radio.vue
│ └── select.vue
└── timepicker
│ └── timepicker.vue
├── package-lock.json
├── package.json
├── public
├── favicon.ico
├── img
│ └── icons
│ │ ├── android-chrome-192x192.png
│ │ ├── android-chrome-512x512.png
│ │ ├── apple-touch-icon-120x120.png
│ │ ├── apple-touch-icon-152x152.png
│ │ ├── apple-touch-icon-180x180.png
│ │ ├── apple-touch-icon-60x60.png
│ │ ├── apple-touch-icon-76x76.png
│ │ ├── apple-touch-icon.png
│ │ ├── favicon-16x16.png
│ │ ├── favicon-32x32.png
│ │ ├── msapplication-icon-144x144.png
│ │ ├── mstile-150x150.png
│ │ └── safari-pinned-tab.svg
├── index.html
└── manifest.json
├── src
├── App.vue
├── assets
│ ├── fonts
│ │ ├── Raleway-Black.ttf
│ │ ├── Raleway-Black.woff2
│ │ ├── Raleway-Bold.ttf
│ │ ├── Raleway-Bold.woff2
│ │ ├── Raleway-ExtraBold.ttf
│ │ ├── Raleway-ExtraBold.woff2
│ │ ├── Raleway-ExtraLight.ttf
│ │ ├── Raleway-ExtraLight.woff2
│ │ ├── Raleway-Light.ttf
│ │ ├── Raleway-Light.woff2
│ │ ├── Raleway-Medium.ttf
│ │ ├── Raleway-Medium.woff2
│ │ ├── Raleway-Regular.ttf
│ │ ├── Raleway-Regular.woff2
│ │ ├── Raleway-SemiBold.ttf
│ │ ├── Raleway-SemiBold.woff2
│ │ ├── Raleway-Thin.ttf
│ │ ├── Raleway-Thin.woff2
│ │ ├── Roboto-Bold-webfont.eot
│ │ ├── Roboto-Bold-webfont.svg
│ │ ├── Roboto-Bold-webfont.ttf
│ │ ├── Roboto-Bold-webfont.woff
│ │ ├── Roboto-Light-webfont.eot
│ │ ├── Roboto-Light-webfont.svg
│ │ ├── Roboto-Light-webfont.ttf
│ │ ├── Roboto-Light-webfont.woff
│ │ ├── Roboto-Medium-webfont.eot
│ │ ├── Roboto-Medium-webfont.svg
│ │ ├── Roboto-Medium-webfont.ttf
│ │ ├── Roboto-Medium-webfont.woff
│ │ ├── Roboto-Regular-webfont.eot
│ │ ├── Roboto-Regular-webfont.svg
│ │ ├── Roboto-Regular-webfont.ttf
│ │ ├── Roboto-Regular-webfont.woff
│ │ ├── mplus-2m-medium.eot
│ │ ├── mplus-2m-medium.ttf
│ │ ├── mplus-2m-medium.woff
│ │ ├── mplus-2m-regular.eot
│ │ ├── mplus-2m-regular.ttf
│ │ └── mplus-2m-regular.woff
│ └── styles
│ │ ├── app.scss
│ │ └── prism.scss
├── components
│ ├── CodeBlock.vue
│ └── DocSection.vue
├── helpers.js
├── main.js
├── pages
│ ├── Buttons.vue
│ ├── Custom.vue
│ ├── Datepicker.vue
│ ├── Forms.vue
│ ├── Home.vue
│ └── Inputs.vue
└── routes.js
└── vue.config.js
/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/andhovesyan/vue-fast-forms/5b3e70da5bac578b10a8e1d9125807cf31f6a0e0/.DS_Store
--------------------------------------------------------------------------------
/.editorconfig:
--------------------------------------------------------------------------------
1 | root = true
2 |
3 | [*]
4 | charset = utf-8
5 | indent_style = space
6 | indent_size = 2
7 | end_of_line = lf
8 | insert_final_newline = true
9 | trim_trailing_whitespace = true
10 |
--------------------------------------------------------------------------------
/.eslintignore:
--------------------------------------------------------------------------------
1 | build/*.js
2 | config/*.js
3 |
--------------------------------------------------------------------------------
/.eslintrc.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | root: true,
3 | env: {
4 | node: true
5 | },
6 | 'extends': [
7 | 'plugin:vue/essential',
8 | '@vue/airbnb'
9 | ],
10 | rules: {
11 | 'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off',
12 | 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off',
13 | 'import/extensions': ["error", "always", {
14 | "vue": "never",
15 | "js": "never",
16 | "json": "never",
17 | }],
18 | 'import/no-extraneous-dependencies': 0,
19 | 'no-prototype-builtins': 0,
20 | },
21 | parserOptions: {
22 | parser: 'babel-eslint'
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/.ftpconfig:
--------------------------------------------------------------------------------
1 | {
2 | "protocol": "sftp",
3 | "host": "hovesyan.pro",
4 | "port": 22,
5 | "user": "andranik",
6 | "pass": "",
7 | "promptForPass": false,
8 | "remote": "/var/www/libs/vue-fast-forms",
9 | "local": "",
10 | "agent": "",
11 | "privatekey": "/home/andranik/.ssh/id_rsa",
12 | "passphrase": "Cwj58ASu9k",
13 | "hosthash": "",
14 | "ignorehost": true,
15 | "connTimeout": 10000,
16 | "keepalive": 10000,
17 | "keyboardInteractive": false,
18 | "watchTimeout": 500
19 | }
20 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | node_modules
3 | #/dist
4 |
5 | # local env files
6 | .env.local
7 | .env.*.local
8 |
9 | # Log files
10 | npm-debug.log*
11 | yarn-debug.log*
12 | yarn-error.log*
13 |
14 | # Editor directories and files
15 | .idea
16 | .vscode
17 | *.suo
18 | *.ntvs*
19 | *.njsproj
20 | *.sln
21 | *.sw*
22 |
--------------------------------------------------------------------------------
/.npmignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | node_modules/
3 | dist/
4 | npm-debug.log
5 | sftp-config.json
--------------------------------------------------------------------------------
/.postcssrc.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | plugins: {
3 | autoprefixer: {}
4 | }
5 | }
6 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Vue.js Fast Forms
2 | VueJS components for fast and easy forms build, validation and data bindning.
3 |
4 | ## Dependencies
5 | vue-fast-forms requires [Bootstrap 4 CSS](https://getbootstrap.com/) for forms styling and [moment.js](https://momentjs.com/) for a datepicker.
6 |
7 | ## Installation
8 | ```bash
9 | $ npm install vue-fast-forms bootstrap@4 moment --save
10 | ```
11 |
12 | ## Docs and examples
13 | See the [documentation](http://vue-fast-forms.hovesyan.pro/).
14 |
15 | ---
16 |
17 | Sponsored by [Blockchain Today](https://blockchaintd.com/)
18 |
--------------------------------------------------------------------------------
/babel.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | presets: [
3 | '@vue/app',
4 | ],
5 | };
6 |
--------------------------------------------------------------------------------
/dist/demo.html:
--------------------------------------------------------------------------------
1 |
vue-fast-forms demo
2 |
3 |
4 |
5 |
8 |
--------------------------------------------------------------------------------
/dist/vue-fast-forms.css:
--------------------------------------------------------------------------------
1 | .input-autocomplete{position:relative}.input-autosuggest{list-style:none;position:absolute;padding:0;width:auto;z-index:100}.input-autosuggest li{background:#fff;border:1px solid #e0e0e0;border-top:0;line-height:2.25rem;padding:0 1rem;cursor:pointer;min-width:10rem;width:auto}.input-autosuggest li:hover{background:#f5f5f5}.datepicker{position:relative}.calendar{padding:0 .5rem .5rem;position:absolute;z-index:100;background:#fff;width:20rem;border:1px solid #ccc}.calendar.calendar-inline{position:static}.calendar.align-right{right:0;float:right}.calendar.align-left{left:0;float:left}.calendar header{display:block;line-height:40px}.calendar header span{display:inline-block;text-align:center;width:calc(71.42857142857143% + 1rem);float:left}.calendar header .next,.calendar header .prev{width:14.285714285714286%;float:left;text-indent:-10000px;position:relative}.calendar header .next:after,.calendar header .prev:after{content:"";position:absolute;left:50%;top:50%;-webkit-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%);border:6px solid transparent}.calendar header .prev{margin-left:-.5rem}.calendar header .prev:after{border-right:10px solid #000;margin-left:-5px}.calendar header .prev.disabled:after{border-right:10px solid #ddd}.calendar header .next{margin-right:-.5rem}.calendar header .next:after{border-left:10px solid #000;margin-left:5px}.calendar header .next.disabled:after{border-left:10px solid #ddd}.calendar header .next:not(.disabled),.calendar header .prev:not(.disabled),.calendar header .up:not(.disabled){cursor:pointer}.calendar header .next:not(.disabled):hover,.calendar header .prev:not(.disabled):hover,.calendar header .up:not(.disabled):hover{background:#eee}.calendar .disabled{color:#ddd;cursor:default}.calendar .cell{float:left;display:inline-block;padding:0 5px;width:calc(14.28% - .25rem);margin:.125rem;height:2.35rem;line-height:2.3rem;text-align:center;vertical-align:middle;border:1px solid transparent}.calendar .cell.selected,.calendar .cell:hover:not(.disabled){background:#39a1f4}.calendar .cell.selected{border:1px solid #0d8aed;-webkit-box-shadow:inset 0 0 1px #2196f3;box-shadow:inset 0 0 1px #2196f3}.calendar .cell:not(.blank):not(.disabled).day,.calendar .cell:not(.blank):not(.disabled).month,.calendar .cell:not(.blank):not(.disabled).year{cursor:pointer}.calendar .cell.day-header{font-size:75%;cursor:inherit}.calendar .cell.day-header:hover{background:inherit}.calendar .month,.calendar .year{width:calc(33.333% - .25rem)}.datepicker[data-v-7667e95a]{position:relative}.calendar[data-v-7667e95a]{padding:0 1rem;position:absolute;z-index:100;background:#fff;width:20rem;border:1px solid #ccc}.calendar.calendar-inline[data-v-7667e95a]{position:static}.calendar.align-right[data-v-7667e95a]{right:0;float:right}.calendar.align-left[data-v-7667e95a]{left:0;float:left}.calendar header[data-v-7667e95a]{display:block;line-height:40px}.calendar header span[data-v-7667e95a]{display:inline-block;text-align:center;width:calc(71.42857142857143% + 1rem);float:left}.calendar header .next[data-v-7667e95a],.calendar header .prev[data-v-7667e95a]{width:14.285714285714286%;float:left;text-indent:-10000px;position:relative}.calendar header .next[data-v-7667e95a]:after,.calendar header .prev[data-v-7667e95a]:after{content:"";position:absolute;left:50%;top:50%;-webkit-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%);border:6px solid transparent}.calendar header .prev[data-v-7667e95a]{margin-left:-.5rem}.calendar header .prev[data-v-7667e95a]:after{border-right:10px solid #000;margin-left:-5px}.calendar header .prev.disabled[data-v-7667e95a]:after{border-right:10px solid #ddd}.calendar header .next[data-v-7667e95a]{margin-right:-.5rem}.calendar header .next[data-v-7667e95a]:after{border-left:10px solid #000;margin-left:5px}.calendar header .next.disabled[data-v-7667e95a]:after{border-left:10px solid #ddd}.calendar header .next[data-v-7667e95a]:not(.disabled),.calendar header .prev[data-v-7667e95a]:not(.disabled),.calendar header .up[data-v-7667e95a]:not(.disabled){cursor:pointer}.calendar header .next[data-v-7667e95a]:not(.disabled):hover,.calendar header .prev[data-v-7667e95a]:not(.disabled):hover,.calendar header .up[data-v-7667e95a]:not(.disabled):hover{background:#eee}.calendar .disabled[data-v-7667e95a]{color:#ddd;cursor:default}.calendar .cell[data-v-7667e95a]{font-size:1.25rem;padding:0;width:100%;margin:0;height:2.35rem;line-height:2.3rem;text-align:center}.calendar .cell.hour[data-v-7667e95a]{background:transparent;font-size:1rem;height:3rem;width:calc(100% - 1rem);margin:.5rem}.calendar .cell:not(.blank):not(.disabled).day[data-v-7667e95a],.calendar .cell:not(.blank):not(.disabled).month[data-v-7667e95a],.calendar .cell:not(.blank):not(.disabled).year[data-v-7667e95a]{cursor:pointer}.calendar .cell.day-header[data-v-7667e95a]{font-size:75%;cursor:inherit}.calendar .cell.day-header[data-v-7667e95a]:hover{background:inherit}.calendar .month[data-v-7667e95a],.calendar .year[data-v-7667e95a]{width:calc(33.333% - .25rem)}.btn-arrow[data-v-7667e95a]{background:transparent;border-radius:.15rem;border:none;color:#337ab7;height:2.25rem;line-height:2.25rem;margin:.5rem 0;text-align:center;width:100%}.btn-arrow[data-v-7667e95a]:hover{background:#f0f0f0}
--------------------------------------------------------------------------------
/lib/button.vue:
--------------------------------------------------------------------------------
1 |
2 |
13 |
14 |
15 |
16 |
17 |
18 |
145 |
--------------------------------------------------------------------------------
/lib/datepicker/datepicker.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
24 |
25 |
26 |
27 | <
28 | {{header}}
29 | >
30 |
31 |
39 |
40 |
41 |
42 |
43 |
44 |
279 |
280 |
414 |
--------------------------------------------------------------------------------
/lib/datepicker/days.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | {{ day.date() }}
10 |
11 |
12 |
13 |
73 |
--------------------------------------------------------------------------------
/lib/datepicker/months.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 | {{ month.format('MMM') }}
8 |
9 |
10 |
11 |
37 |
--------------------------------------------------------------------------------
/lib/datepicker/years.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 | {{ year.year() }}
8 |
9 |
10 |
11 |
43 |
--------------------------------------------------------------------------------
/lib/form.vue:
--------------------------------------------------------------------------------
1 |
2 |
12 |
13 |
14 |
113 |
--------------------------------------------------------------------------------
/lib/group.vue:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
43 |
--------------------------------------------------------------------------------
/lib/index.js:
--------------------------------------------------------------------------------
1 | import Form from './form';
2 | import Group from './group';
3 |
4 | import Button from './button';
5 |
6 | import Checkbox from './inputs/checkbox';
7 | import Input from './inputs/input';
8 | import Radio from './inputs/radio';
9 | import Select from './inputs/select';
10 |
11 | import Help from './inputs/input-help';
12 | import Addon from './inputs/input-addon';
13 |
14 | import Datepicker from './datepicker/datepicker';
15 | import Timepicker from './timepicker/timepicker';
16 |
17 | const VueFastForms = {
18 | Form,
19 | Group,
20 | Button,
21 | Checkbox,
22 | Input,
23 | Radio,
24 | Select,
25 | Help,
26 | Addon,
27 | Datepicker,
28 | Timepicker,
29 | };
30 |
31 | export default VueFastForms;
32 |
--------------------------------------------------------------------------------
/lib/inputs/_basic.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
72 |
--------------------------------------------------------------------------------
/lib/inputs/checkbox.vue:
--------------------------------------------------------------------------------
1 |
2 | div.custom-control.custom-checkbox
3 | input(
4 | :id="uid",
5 | class="custom-control-input",
6 | type="checkbox",
7 | :name="name",
8 | :checked="isChecked",
9 | @change="onChange"
10 | )
11 | label.custom-control-label(:for="uid")
12 | slot
13 |
14 |
15 |
94 |
--------------------------------------------------------------------------------
/lib/inputs/input-addon.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
17 |
--------------------------------------------------------------------------------
/lib/inputs/input-help.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
57 |
--------------------------------------------------------------------------------
/lib/inputs/input.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
30 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
243 |
268 |
--------------------------------------------------------------------------------
/lib/inputs/radio.vue:
--------------------------------------------------------------------------------
1 |
2 | span
3 | div.custom-control.custom-radio(
4 | v-for="(val, ind) in formattedValues",
5 | :class="{'custom-control-inline': inline}"
6 | )
7 | input.custom-control-input(
8 | :id="`${uid}_${ind}`",
9 | type="radio",
10 | :name="name",
11 | :value="val.value",
12 | @change="onChange",
13 | :checked="val.value == realVal"
14 | )
15 | label.custom-control-label(:for="`${uid}_${ind}`")
16 | | {{val.name}}
17 |
18 |
19 |
89 |
--------------------------------------------------------------------------------
/lib/inputs/select.vue:
--------------------------------------------------------------------------------
1 |
2 |
12 |
13 |
14 |
78 |
--------------------------------------------------------------------------------
/lib/timepicker/timepicker.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
23 |
24 |
25 |
26 |
27 |
30 |
31 |
32 |
33 |
34 |
35 |
38 |
39 |
44 |
45 |
46 |
47 | {{currTime.format('hh')}}
48 |
49 |
50 |
51 | :
52 |
53 |
54 |
55 | {{currTime.format('mm')}}
56 |
57 |
58 |
59 |
60 | {{currTime.format('A')}}
61 |
62 |
63 |
64 |
65 |
68 |
69 |
70 |
71 |
72 |
73 |
76 |
77 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
281 |
282 |
426 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "vue-fast-forms",
3 | "description": "VueJS forms builder and validator ",
4 | "author": "Andranik Hovesyan ",
5 | "version": "1.0.1",
6 | "private": false,
7 | "main": "dist/vue-fast-forms.common.js",
8 | "scripts": {
9 | "serve": "vue-cli-service serve",
10 | "build": "vue-cli-service build",
11 | "build:lib": "vue-cli-service build --target lib --name vue-fast-forms lib",
12 | "lint": "vue-cli-service lint"
13 | },
14 | "repository": {
15 | "type": "git",
16 | "url": "git+https://github.com/Hovesyan/vue-fast-forms.git"
17 | },
18 | "license": "ISC",
19 | "bugs": {
20 | "url": "https://github.com/Hovesyan/vue-fast-forms/issues"
21 | },
22 | "homepage": "http://vue-fast-forms.hovesyan.pro/",
23 | "dependencies": {
24 | "bootstrap": "4.3.1",
25 | "moment": "^2.22.2",
26 | "register-service-worker": "^1.0.0",
27 | "vue": "^2.5.16",
28 | "vue-fontawesome": "0.0.2"
29 | },
30 | "devDependencies": {
31 | "@vue/cli-plugin-babel": "3.11.0",
32 | "@vue/cli-plugin-eslint": "^3.0.0-beta.15",
33 | "@vue/cli-plugin-pwa": "^3.0.0-beta.15",
34 | "@vue/cli-service": "3.11.0",
35 | "@vue/eslint-config-airbnb": "^3.0.0-rc.3",
36 | "babel-preset-stage-0": "^6.24.1",
37 | "jquery": "3.4.1",
38 | "node-sass": "^7.0.0",
39 | "prismjs": "^1.15.0",
40 | "pug": "^2.0.3",
41 | "pug-plain-loader": "^1.0.0",
42 | "sass-loader": "^7.0.1",
43 | "vue-router": "^3.0.1",
44 | "vue-template-compiler": "^2.5.16",
45 | "vuex": "^3.0.1"
46 | },
47 | "browserslist": [
48 | "> 1%",
49 | "last 2 versions",
50 | "not ie <= 8"
51 | ]
52 | }
53 |
--------------------------------------------------------------------------------
/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/andhovesyan/vue-fast-forms/5b3e70da5bac578b10a8e1d9125807cf31f6a0e0/public/favicon.ico
--------------------------------------------------------------------------------
/public/img/icons/android-chrome-192x192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/andhovesyan/vue-fast-forms/5b3e70da5bac578b10a8e1d9125807cf31f6a0e0/public/img/icons/android-chrome-192x192.png
--------------------------------------------------------------------------------
/public/img/icons/android-chrome-512x512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/andhovesyan/vue-fast-forms/5b3e70da5bac578b10a8e1d9125807cf31f6a0e0/public/img/icons/android-chrome-512x512.png
--------------------------------------------------------------------------------
/public/img/icons/apple-touch-icon-120x120.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/andhovesyan/vue-fast-forms/5b3e70da5bac578b10a8e1d9125807cf31f6a0e0/public/img/icons/apple-touch-icon-120x120.png
--------------------------------------------------------------------------------
/public/img/icons/apple-touch-icon-152x152.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/andhovesyan/vue-fast-forms/5b3e70da5bac578b10a8e1d9125807cf31f6a0e0/public/img/icons/apple-touch-icon-152x152.png
--------------------------------------------------------------------------------
/public/img/icons/apple-touch-icon-180x180.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/andhovesyan/vue-fast-forms/5b3e70da5bac578b10a8e1d9125807cf31f6a0e0/public/img/icons/apple-touch-icon-180x180.png
--------------------------------------------------------------------------------
/public/img/icons/apple-touch-icon-60x60.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/andhovesyan/vue-fast-forms/5b3e70da5bac578b10a8e1d9125807cf31f6a0e0/public/img/icons/apple-touch-icon-60x60.png
--------------------------------------------------------------------------------
/public/img/icons/apple-touch-icon-76x76.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/andhovesyan/vue-fast-forms/5b3e70da5bac578b10a8e1d9125807cf31f6a0e0/public/img/icons/apple-touch-icon-76x76.png
--------------------------------------------------------------------------------
/public/img/icons/apple-touch-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/andhovesyan/vue-fast-forms/5b3e70da5bac578b10a8e1d9125807cf31f6a0e0/public/img/icons/apple-touch-icon.png
--------------------------------------------------------------------------------
/public/img/icons/favicon-16x16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/andhovesyan/vue-fast-forms/5b3e70da5bac578b10a8e1d9125807cf31f6a0e0/public/img/icons/favicon-16x16.png
--------------------------------------------------------------------------------
/public/img/icons/favicon-32x32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/andhovesyan/vue-fast-forms/5b3e70da5bac578b10a8e1d9125807cf31f6a0e0/public/img/icons/favicon-32x32.png
--------------------------------------------------------------------------------
/public/img/icons/msapplication-icon-144x144.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/andhovesyan/vue-fast-forms/5b3e70da5bac578b10a8e1d9125807cf31f6a0e0/public/img/icons/msapplication-icon-144x144.png
--------------------------------------------------------------------------------
/public/img/icons/mstile-150x150.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/andhovesyan/vue-fast-forms/5b3e70da5bac578b10a8e1d9125807cf31f6a0e0/public/img/icons/mstile-150x150.png
--------------------------------------------------------------------------------
/public/img/icons/safari-pinned-tab.svg:
--------------------------------------------------------------------------------
1 |
2 |
4 |
150 |
--------------------------------------------------------------------------------
/public/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 | my-project
10 |
11 |
12 |
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/public/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "my-project",
3 | "short_name": "my-project",
4 | "icons": [
5 | {
6 | "src": "/img/icons/android-chrome-192x192.png",
7 | "sizes": "192x192",
8 | "type": "image/png"
9 | },
10 | {
11 | "src": "/img/icons/android-chrome-512x512.png",
12 | "sizes": "512x512",
13 | "type": "image/png"
14 | }
15 | ],
16 | "start_url": "/index.html",
17 | "display": "standalone",
18 | "background_color": "#000000",
19 | "theme_color": "#4DBA87"
20 | }
21 |
--------------------------------------------------------------------------------
/src/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
24 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 | Components
56 | -
57 |
58 | Forms
59 |
60 |
61 | Inputs
62 | -
63 |
64 | Base inputs
65 |
66 |
67 | -
68 |
69 | Custom inputs
70 |
71 |
72 | -
73 |
74 | Datepicker
75 |
76 |
77 | Buttons
78 | -
79 |
80 | Buttons
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
140 |
141 |
264 |
--------------------------------------------------------------------------------
/src/assets/fonts/Raleway-Black.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/andhovesyan/vue-fast-forms/5b3e70da5bac578b10a8e1d9125807cf31f6a0e0/src/assets/fonts/Raleway-Black.ttf
--------------------------------------------------------------------------------
/src/assets/fonts/Raleway-Black.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/andhovesyan/vue-fast-forms/5b3e70da5bac578b10a8e1d9125807cf31f6a0e0/src/assets/fonts/Raleway-Black.woff2
--------------------------------------------------------------------------------
/src/assets/fonts/Raleway-Bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/andhovesyan/vue-fast-forms/5b3e70da5bac578b10a8e1d9125807cf31f6a0e0/src/assets/fonts/Raleway-Bold.ttf
--------------------------------------------------------------------------------
/src/assets/fonts/Raleway-Bold.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/andhovesyan/vue-fast-forms/5b3e70da5bac578b10a8e1d9125807cf31f6a0e0/src/assets/fonts/Raleway-Bold.woff2
--------------------------------------------------------------------------------
/src/assets/fonts/Raleway-ExtraBold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/andhovesyan/vue-fast-forms/5b3e70da5bac578b10a8e1d9125807cf31f6a0e0/src/assets/fonts/Raleway-ExtraBold.ttf
--------------------------------------------------------------------------------
/src/assets/fonts/Raleway-ExtraBold.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/andhovesyan/vue-fast-forms/5b3e70da5bac578b10a8e1d9125807cf31f6a0e0/src/assets/fonts/Raleway-ExtraBold.woff2
--------------------------------------------------------------------------------
/src/assets/fonts/Raleway-ExtraLight.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/andhovesyan/vue-fast-forms/5b3e70da5bac578b10a8e1d9125807cf31f6a0e0/src/assets/fonts/Raleway-ExtraLight.ttf
--------------------------------------------------------------------------------
/src/assets/fonts/Raleway-ExtraLight.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/andhovesyan/vue-fast-forms/5b3e70da5bac578b10a8e1d9125807cf31f6a0e0/src/assets/fonts/Raleway-ExtraLight.woff2
--------------------------------------------------------------------------------
/src/assets/fonts/Raleway-Light.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/andhovesyan/vue-fast-forms/5b3e70da5bac578b10a8e1d9125807cf31f6a0e0/src/assets/fonts/Raleway-Light.ttf
--------------------------------------------------------------------------------
/src/assets/fonts/Raleway-Light.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/andhovesyan/vue-fast-forms/5b3e70da5bac578b10a8e1d9125807cf31f6a0e0/src/assets/fonts/Raleway-Light.woff2
--------------------------------------------------------------------------------
/src/assets/fonts/Raleway-Medium.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/andhovesyan/vue-fast-forms/5b3e70da5bac578b10a8e1d9125807cf31f6a0e0/src/assets/fonts/Raleway-Medium.ttf
--------------------------------------------------------------------------------
/src/assets/fonts/Raleway-Medium.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/andhovesyan/vue-fast-forms/5b3e70da5bac578b10a8e1d9125807cf31f6a0e0/src/assets/fonts/Raleway-Medium.woff2
--------------------------------------------------------------------------------
/src/assets/fonts/Raleway-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/andhovesyan/vue-fast-forms/5b3e70da5bac578b10a8e1d9125807cf31f6a0e0/src/assets/fonts/Raleway-Regular.ttf
--------------------------------------------------------------------------------
/src/assets/fonts/Raleway-Regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/andhovesyan/vue-fast-forms/5b3e70da5bac578b10a8e1d9125807cf31f6a0e0/src/assets/fonts/Raleway-Regular.woff2
--------------------------------------------------------------------------------
/src/assets/fonts/Raleway-SemiBold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/andhovesyan/vue-fast-forms/5b3e70da5bac578b10a8e1d9125807cf31f6a0e0/src/assets/fonts/Raleway-SemiBold.ttf
--------------------------------------------------------------------------------
/src/assets/fonts/Raleway-SemiBold.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/andhovesyan/vue-fast-forms/5b3e70da5bac578b10a8e1d9125807cf31f6a0e0/src/assets/fonts/Raleway-SemiBold.woff2
--------------------------------------------------------------------------------
/src/assets/fonts/Raleway-Thin.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/andhovesyan/vue-fast-forms/5b3e70da5bac578b10a8e1d9125807cf31f6a0e0/src/assets/fonts/Raleway-Thin.ttf
--------------------------------------------------------------------------------
/src/assets/fonts/Raleway-Thin.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/andhovesyan/vue-fast-forms/5b3e70da5bac578b10a8e1d9125807cf31f6a0e0/src/assets/fonts/Raleway-Thin.woff2
--------------------------------------------------------------------------------
/src/assets/fonts/Roboto-Bold-webfont.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/andhovesyan/vue-fast-forms/5b3e70da5bac578b10a8e1d9125807cf31f6a0e0/src/assets/fonts/Roboto-Bold-webfont.eot
--------------------------------------------------------------------------------
/src/assets/fonts/Roboto-Bold-webfont.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/src/assets/fonts/Roboto-Bold-webfont.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/andhovesyan/vue-fast-forms/5b3e70da5bac578b10a8e1d9125807cf31f6a0e0/src/assets/fonts/Roboto-Bold-webfont.ttf
--------------------------------------------------------------------------------
/src/assets/fonts/Roboto-Bold-webfont.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/andhovesyan/vue-fast-forms/5b3e70da5bac578b10a8e1d9125807cf31f6a0e0/src/assets/fonts/Roboto-Bold-webfont.woff
--------------------------------------------------------------------------------
/src/assets/fonts/Roboto-Light-webfont.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/andhovesyan/vue-fast-forms/5b3e70da5bac578b10a8e1d9125807cf31f6a0e0/src/assets/fonts/Roboto-Light-webfont.eot
--------------------------------------------------------------------------------
/src/assets/fonts/Roboto-Light-webfont.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/andhovesyan/vue-fast-forms/5b3e70da5bac578b10a8e1d9125807cf31f6a0e0/src/assets/fonts/Roboto-Light-webfont.ttf
--------------------------------------------------------------------------------
/src/assets/fonts/Roboto-Light-webfont.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/andhovesyan/vue-fast-forms/5b3e70da5bac578b10a8e1d9125807cf31f6a0e0/src/assets/fonts/Roboto-Light-webfont.woff
--------------------------------------------------------------------------------
/src/assets/fonts/Roboto-Medium-webfont.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/andhovesyan/vue-fast-forms/5b3e70da5bac578b10a8e1d9125807cf31f6a0e0/src/assets/fonts/Roboto-Medium-webfont.eot
--------------------------------------------------------------------------------
/src/assets/fonts/Roboto-Medium-webfont.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/andhovesyan/vue-fast-forms/5b3e70da5bac578b10a8e1d9125807cf31f6a0e0/src/assets/fonts/Roboto-Medium-webfont.ttf
--------------------------------------------------------------------------------
/src/assets/fonts/Roboto-Medium-webfont.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/andhovesyan/vue-fast-forms/5b3e70da5bac578b10a8e1d9125807cf31f6a0e0/src/assets/fonts/Roboto-Medium-webfont.woff
--------------------------------------------------------------------------------
/src/assets/fonts/Roboto-Regular-webfont.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/andhovesyan/vue-fast-forms/5b3e70da5bac578b10a8e1d9125807cf31f6a0e0/src/assets/fonts/Roboto-Regular-webfont.eot
--------------------------------------------------------------------------------
/src/assets/fonts/Roboto-Regular-webfont.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/andhovesyan/vue-fast-forms/5b3e70da5bac578b10a8e1d9125807cf31f6a0e0/src/assets/fonts/Roboto-Regular-webfont.ttf
--------------------------------------------------------------------------------
/src/assets/fonts/Roboto-Regular-webfont.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/andhovesyan/vue-fast-forms/5b3e70da5bac578b10a8e1d9125807cf31f6a0e0/src/assets/fonts/Roboto-Regular-webfont.woff
--------------------------------------------------------------------------------
/src/assets/fonts/mplus-2m-medium.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/andhovesyan/vue-fast-forms/5b3e70da5bac578b10a8e1d9125807cf31f6a0e0/src/assets/fonts/mplus-2m-medium.eot
--------------------------------------------------------------------------------
/src/assets/fonts/mplus-2m-medium.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/andhovesyan/vue-fast-forms/5b3e70da5bac578b10a8e1d9125807cf31f6a0e0/src/assets/fonts/mplus-2m-medium.ttf
--------------------------------------------------------------------------------
/src/assets/fonts/mplus-2m-medium.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/andhovesyan/vue-fast-forms/5b3e70da5bac578b10a8e1d9125807cf31f6a0e0/src/assets/fonts/mplus-2m-medium.woff
--------------------------------------------------------------------------------
/src/assets/fonts/mplus-2m-regular.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/andhovesyan/vue-fast-forms/5b3e70da5bac578b10a8e1d9125807cf31f6a0e0/src/assets/fonts/mplus-2m-regular.eot
--------------------------------------------------------------------------------
/src/assets/fonts/mplus-2m-regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/andhovesyan/vue-fast-forms/5b3e70da5bac578b10a8e1d9125807cf31f6a0e0/src/assets/fonts/mplus-2m-regular.ttf
--------------------------------------------------------------------------------
/src/assets/fonts/mplus-2m-regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/andhovesyan/vue-fast-forms/5b3e70da5bac578b10a8e1d9125807cf31f6a0e0/src/assets/fonts/mplus-2m-regular.woff
--------------------------------------------------------------------------------
/src/assets/styles/app.scss:
--------------------------------------------------------------------------------
1 | $font-family-sans-serif: "Source Sans Pro", -apple-system, system-ui, BlinkMacSystemFont,
2 | "Segoe UI", "Roboto", "Helvetica Neue", Arial, sans-serif;
3 |
4 | $fa-font-path: "../node_modules/font-awesome/fonts";
5 |
6 | @import "./prism.scss";
7 | @import "~font-awesome/scss/font-awesome";
8 | @import "~bootstrap/scss/bootstrap";
9 |
10 | @font-face {
11 | font-family: "M+ 2m";
12 | font-weight: 400;
13 | src: url("assets/fonts/mplus-2m-regular.eot");
14 | src:
15 | url("assets/fonts/mplus-2m-regular.eot?#iefix") format("embedded-opentype"),
16 | url("assets/fonts/mplus-2m-regular.woff") format("woff"),
17 | url("assets/fonts/mplus-2m-regular.ttf") format("truetype");
18 | }
19 | @font-face {
20 | font-family: "M+ 2m";
21 | font-weight: 500;
22 | src: url("assets/fonts/mplus-2m-medium.eot");
23 | src:
24 | url("assets/fonts/mplus-2m-medium.eot?#iefix") format("embedded-opentype"),
25 | url("assets/fonts/mplus-2m-medium.woff") format("woff"),
26 | url("assets/fonts/mplus-2m-medium.ttf") format("truetype");
27 | }
28 |
29 | input::-webkit-input-placeholder { /* Chrome/Opera/Safari */
30 | font-family: $font-family-sans-serif;
31 | }
32 | input::-moz-placeholder { /* Firefox 19+ */
33 | font-family: $font-family-sans-serif;
34 | }
35 | input:-ms-input-placeholder { /* IE 10+ */
36 | font-family: $font-family-sans-serif;
37 | }
38 | input:-moz-placeholder { /* Firefox 18- */
39 | font-family: $font-family-sans-serif;
40 | }
41 |
42 | .btn {
43 | font-family: $font-family-sans-serif;
44 | }
45 |
46 | // /* latin */
47 | // @font-face {
48 | // font-family: 'Raleway';
49 | // font-style: normal;
50 | // font-weight: 100;
51 | // src:
52 | // local('Raleway Thin'),
53 | // local('Raleway-Thin'),
54 | // url("assets/fonts/Raleway-Thin.ttf") format('truetype'),
55 | // url("assets/fonts/Raleway-Thin.woff2") format('woff2');
56 | // unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215;
57 | // }
58 | // /* latin */
59 | // @font-face {
60 | // font-family: 'Raleway';
61 | // font-style: normal;
62 | // font-weight: 200;
63 | // src:
64 | // local('Raleway ExtraLight'),
65 | // local('Raleway-ExtraLight'),
66 | // url("assets/fonts/Raleway-ExtraLight.ttf") format('truetype'),
67 | // url("assets/fonts/Raleway-ExtraLight.woff2") format('woff2');
68 | // unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215;
69 | // }
70 | // /* latin */
71 | // @font-face {
72 | // font-family: 'Raleway';
73 | // font-style: normal;
74 | // font-weight: 300;
75 | // src:
76 | // local('Raleway Light'),
77 | // local('Raleway-Light'),
78 | // url("assets/fonts/Raleway-Light.ttf") format('truetype'),
79 | // url("assets/fonts/Raleway-Light.woff2") format('woff2');
80 | // unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215;
81 | // }
82 | // /* latin */
83 | // @font-face {
84 | // font-family: 'Raleway';
85 | // font-style: normal;
86 | // font-weight: 400;
87 | // src:
88 | // local('Raleway'),
89 | // local('Raleway-Regular'),
90 | // url("assets/fonts/Raleway-Regular.woff2") format('woff2');
91 | // unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215;
92 | // }
93 | // /* latin */
94 | // @font-face {
95 | // font-family: 'Raleway';
96 | // font-style: normal;
97 | // font-weight: 500;
98 | // src:
99 | // local('Raleway Medium'),
100 | // local('Raleway-Medium'),
101 | // url("assets/fonts/Raleway-Medium.ttf") format('truetype'),
102 | // url("assets/fonts/Raleway-Medium.woff2") format('woff2');
103 | // unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215;
104 | // }
105 | // /* latin */
106 | // @font-face {
107 | // font-family: 'Raleway';
108 | // font-style: normal;
109 | // font-weight: 600;
110 | // src:
111 | // local('Raleway SemiBold'),
112 | // local('Raleway-SemiBold'),
113 | // url("assets/fonts/Raleway-SemiBold.ttf") format('truetype'),
114 | // url("assets/fonts/Raleway-SemiBold.woff2") format('woff2');
115 | // unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215;
116 | // }
117 | // /* latin */
118 | // @font-face {
119 | // font-family: 'Raleway';
120 | // font-style: normal;
121 | // font-weight: 700;
122 | // src:
123 | // local('Raleway Bold'),
124 | // local('Raleway-Bold'),
125 | // url("assets/fonts/Raleway-Bold.ttf") format('truetype'),
126 | // url("assets/fonts/Raleway-Bold.woff2") format('woff2');
127 | // unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215;
128 | // }
129 | // /* latin */
130 | // @font-face {
131 | // font-family: 'Raleway';
132 | // font-style: normal;
133 | // font-weight: 800;
134 | // src:
135 | // local('Raleway ExtraBold'),
136 | // local('Raleway-ExtraBold'),
137 | // url("assets/fonts/Raleway-ExtraBold.ttf") format('truetype'),
138 | // url("assets/fonts/Raleway-ExtraBold.woff2") format('woff2');
139 | // unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215;
140 | // }
141 | // /* latin */
142 | // @font-face {
143 | // font-family: 'Raleway';
144 | // font-style: normal;
145 | // font-weight: 900;
146 | // src:
147 | // local('Raleway Black'),
148 | // local('Raleway-Black'),
149 | // url("assets/fonts/Raleway-Black.ttf") format('truetype'),
150 | // url("assets/fonts/Raleway-Black.woff2") format('woff2');
151 | // unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215;
152 | // }
153 |
154 | // @font-face {
155 | // font-family: 'Roboto';
156 | // src: url('assets/fonts/Roboto-Light-webfont.eot');
157 | // src: url('assets/fonts/Roboto-Light-webfont.eot?#iefix') format('embedded-opentype'),
158 | // url('assets/fonts/Roboto-Light-webfont.woff') format('woff'),
159 | // url('assets/fonts/Roboto-Light-webfont.ttf') format('truetype'),
160 | // url('assets/fonts/Roboto-Light-webfont.svg#robotoregular') format('svg');
161 | // font-weight: 300;
162 | // font-style: normal;
163 | // }
164 |
165 | // @font-face {
166 | // font-family: 'Roboto';
167 | // src: url('assets/fonts/Roboto-Regular-webfont.eot');
168 | // src: url('assets/fonts/Roboto-Regular-webfont.eot?#iefix') format('embedded-opentype'),
169 | // url('assets/fonts/Roboto-Regular-webfont.woff') format('woff'),
170 | // url('assets/fonts/Roboto-Regular-webfont.ttf') format('truetype'),
171 | // url('assets/fonts/Roboto-Regular-webfont.svg#robotoregular') format('svg');
172 | // font-weight: normal;
173 | // font-style: normal;
174 | // }
175 |
176 | // @font-face {
177 | // font-family: 'Roboto';
178 | // src: url('assets/fonts/Roboto-Medium-webfont.eot');
179 | // src: url('assets/fonts/Roboto-Medium-webfont.eot?#iefix') format('embedded-opentype'),
180 | // url('assets/fonts/Roboto-Medium-webfont.woff') format('woff'),
181 | // url('assets/fonts/Roboto-Medium-webfont.ttf') format('truetype'),
182 | // url('assets/fonts/Roboto-Medium-webfont.svg#robotoregular') format('svg');
183 | // font-weight: 500;
184 | // font-style: normal;
185 | // }
186 |
187 | // @font-face {
188 | // font-family: 'Roboto';
189 | // src: url('assets/fonts/Roboto-Medium-webfont.eot');
190 | // src: url('assets/fonts/Roboto-Medium-webfont.eot?#iefix') format('embedded-opentype'),
191 | // url('assets/fonts/Roboto-Medium-webfont.woff') format('woff'),
192 | // url('assets/fonts/Roboto-Medium-webfont.ttf') format('truetype'),
193 | // url('assets/fonts/Roboto-Medium-webfont.svg#robotoregular') format('svg');
194 | // font-weight: 500;
195 | // font-style: normal;
196 | // }
197 |
198 |
199 | // @font-face {
200 | // font-family: 'Roboto';
201 | // src: url('assets/fonts/Roboto-Bold-webfont.eot');
202 | // src: url('assets/fonts/Roboto-Bold-webfont.eot?#iefix') format('embedded-opentype'),
203 | // url('assets/fonts/Roboto-Bold-webfont.woff') format('woff'),
204 | // url('assets/fonts/Roboto-Bold-webfont.ttf') format('truetype'),
205 | // url('assets/fonts/Roboto-Bold-webfont.svg#robotoregular') format('svg');
206 | // font-weight: 700;
207 | // font-style: normal;
208 | // }
209 |
210 | select,
211 | option,
212 | input {
213 | font-family: $font-family-sans-serif;
214 | }
215 |
216 | html {
217 | font-family: $font-family-sans-serif;
218 | overflow-y: scroll;
219 | }
220 |
221 | body {
222 | background: #fff;
223 | padding-top: 4rem;
224 | }
225 |
226 | pre,
227 | code {
228 | font-family: "M+ 2m", monospace !important;
229 | margin: 0;
230 | border-radius: inherit;
231 | }
232 |
233 | .navbar {
234 | border-bottom: 1px solid #e0e0e0;
235 | }
236 |
237 | .code-block {
238 | background: #F7F7F9;
239 | }
240 |
241 | .tag {
242 | font-size: 100% !important;
243 | }
244 |
245 | .card-example {
246 | border-color: #D8D8D8;
247 | border-radius: .1rem;
248 | overflow: hidden;
249 | padding-top: 1.75rem;
250 |
251 | &::before {
252 | position: absolute;
253 | left: 0;
254 | top: 0;
255 | padding: 1em;
256 | color: #aaa;
257 | font-size: smaller;
258 | font-weight: 500;
259 | content: "EXAMPLE";
260 | }
261 | }
262 |
263 | .tag {
264 | padding: 0.15rem 0 !important;
265 | font-weight: 500 !important;
266 | }
267 |
268 | h1, h2, h3 {
269 | font-weight: 300;
270 | }
271 |
272 | .form-control {
273 | box-shadow: none!important;
274 | }
275 |
276 | .datepicker {
277 | .calendar {
278 | border-radius: $border-radius;
279 | }
280 |
281 | .cell:not(.day-header) {
282 | border-radius: $border-radius;
283 |
284 | &:hover:not(.blank):not(.disabled):not(.selected) {
285 | // background: $brand-primary;
286 | // border: 1px solid $brand-primary;
287 | color: #fff;
288 | }
289 |
290 | &.selected {
291 | // background: lighten($brand-primary, 10%);
292 | color: #fff;
293 | }
294 | }
295 |
296 | .form-control:not(.readonly) {
297 | background: $input-bg;
298 | }
299 | }
300 |
301 |
302 | .block.custom-control.custom-radio {
303 | display: block;
304 | margin-left: 0;
305 | }
306 |
307 | $cell-width: 100% / 7;
308 |
309 | .datepicker {
310 | position: relative;
311 | }
312 |
313 | .calendar {
314 | padding: 0 .5rem .5rem;
315 | position: absolute;
316 | z-index: 100;
317 | background: #fff;
318 | border: 1px solid #ccc;
319 | &.align-right {
320 | right: 0;
321 | }
322 | &.align-left {
323 | left: 0;
324 | }
325 |
326 | header {
327 | display: block;
328 | line-height: 40px;
329 |
330 | span {
331 | display: inline-block;
332 | text-align: center;
333 | width: calc(71.42857142857143% + 1rem);
334 | float: left;
335 | }
336 |
337 | .prev,
338 | .next {
339 | width: 14.285714285714286%;
340 | float: left;
341 | text-indent: -10000px;
342 | position: relative;
343 | &:after {
344 | content: '';
345 | position: absolute;
346 | left: 50%;
347 | top: 50%;
348 | transform: translateX(-50%) translateY(-50%);
349 | border: 6px solid transparent;
350 | }
351 | }
352 |
353 | .prev {
354 | margin-left: -.5rem;
355 | &:after {
356 | border-right: 10px solid #000;
357 | margin-left: -5px;
358 | }
359 | &.disabled:after {
360 | border-right: 10px solid #ddd;
361 | }
362 | }
363 |
364 | .next {
365 | margin-right: -.5rem;
366 | &:after {
367 | border-left: 10px solid #000;
368 | margin-left: 5px;
369 | }
370 | &.disabled:after {
371 | border-left: 10px solid #ddd;
372 | }
373 | }
374 |
375 | .prev:not(.disabled),
376 | .next:not(.disabled),
377 | .up:not(.disabled) {
378 | cursor: pointer;
379 | &:hover {
380 | background: #eee;
381 | }
382 | }
383 | }
384 |
385 | .disabled {
386 | color: #ddd;
387 | cursor: default;
388 | }
389 |
390 | .cell {
391 | float: left;
392 | display: inline-block;
393 | padding: 0 5px;
394 | width: calc(14.28% - .25rem);
395 | margin: .125rem;
396 | height: 2.35rem;
397 | line-height: 2.3rem;
398 | text-align: center;
399 | vertical-align: middle;
400 | border: 1px solid transparent;
401 |
402 | &:not(.blank):not(.disabled) {
403 | &.day,
404 | &.month,
405 | &.year {
406 | cursor: pointer;
407 | }
408 | }
409 |
410 | &.grey {
411 | color: #888;
412 | &:hover {
413 | background: inherit;
414 | }
415 | }
416 |
417 | &.day-header {
418 | font-size: 75%;
419 | cursor: inherit;
420 | &:hover {
421 | background: inherit;
422 | }
423 | }
424 | }
425 |
426 | .month,
427 | .year {
428 | width: calc(33.333% - .25rem);
429 | }
430 | }
--------------------------------------------------------------------------------
/src/assets/styles/prism.scss:
--------------------------------------------------------------------------------
1 | /**
2 | * prism.js Monokai theme
3 | * @author Sam Clarke
4 | */
5 | code[class*="language-"],
6 | pre[class*="language-"] {
7 | color: #f8f8f2;
8 | background: none;
9 | font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace;
10 | text-align: left;
11 | white-space: pre;
12 | word-spacing: normal;
13 | word-break: normal;
14 | word-wrap: normal;
15 | line-height: 1.4;
16 |
17 | -moz-tab-size: 8;
18 | -o-tab-size: 8;
19 | tab-size: 8;
20 |
21 | -webkit-hyphens: none;
22 | -moz-hyphens: none;
23 | -ms-hyphens: none;
24 | hyphens: none;
25 | }
26 |
27 | /* Code blocks */
28 | pre[class*="language-"] {
29 | padding: .8em;
30 | overflow: auto;
31 | background: #272822;
32 | }
33 |
34 | /* Inline code */
35 | :not(pre) > code[class*="language-"] {
36 | padding: .1em;
37 | border-radius: .3em;
38 | white-space: normal;
39 | background: #272822;
40 | }
41 |
42 | .token.comment,
43 | .token.blockquote,
44 | .token.shebang.important,
45 | .token.shebang {
46 | color: #75715e;
47 | }
48 |
49 | .token.operator,
50 | .token.important,
51 | .token.keyword,
52 | .token.rule,
53 | .token.tag,
54 | .token.deleted,
55 | .token.selector,
56 | .token.prolog,
57 | .token.title .token.punctuation {
58 | color: #f92672;
59 | }
60 |
61 | .token.property,
62 | .token.entity,
63 | .token.atrule,
64 | .token.command,
65 | .token.code {
66 | color: #66d9ef;
67 | }
68 |
69 | .token.regex,
70 | .token.atrule .token.property {
71 | color: #fd971f;
72 | }
73 |
74 | .token.pseudo-element,
75 | .token.id,
76 | .token.class,
77 | .token.class-name,
78 | .token.pseudo-class,
79 | .token.function,
80 | .token.namespace,
81 | .token.inserted,
82 | .token.symbol,
83 | .token.url-reference .token.variable,
84 | .token.attr-name {
85 | color: #a6e22e;
86 | }
87 |
88 | .token.string,
89 | .token.url,
90 | .token.list,
91 | .token.cdata,
92 | .token.attr-value,
93 | .token.attr-value a.token.url-link {
94 | color: #e6db74;
95 | }
96 |
97 | .token.constant,
98 | .token.hexcode,
99 | .token.builtin,
100 | .token.number,
101 | .token.boolean {
102 | color: #ae81ff;
103 | }
104 |
105 | .token.doctype,
106 | .token.punctuation,
107 | .token.variable,
108 | .token.macro.property {
109 | color: #f8f8f2;
110 | }
111 |
112 | .token.entity {
113 | cursor: help;
114 | }
115 |
116 | .token.title,
117 | .token.title .token.punctuation {
118 | font-weight: bold;
119 | }
120 |
121 | .token.bold {
122 | font-weight: bold;
123 | }
124 |
125 | .token.italic {
126 | font-style: italic;
127 | }
128 |
129 | /* YAML */
130 | .language-yaml .token.atrule {
131 | color: #f92672;
132 | }
133 |
134 | /* Bash */
135 | .language-bash .token.function {
136 | color: #f92672;
137 | }
138 |
139 |
140 | pre.code-toolbar {
141 | position: relative;
142 | }
143 |
144 | pre.code-toolbar > .toolbar {
145 | position: absolute;
146 | top: .5rem;
147 | right: .25rem;
148 | transition: opacity 0.3s ease-in-out;
149 | opacity: 0;
150 | }
151 |
152 | pre.code-toolbar:hover > .toolbar {
153 | opacity: 1;
154 | }
155 |
156 | pre.code-toolbar > .toolbar .toolbar-item {
157 | display: inline-block;
158 | }
159 |
160 | pre.code-toolbar > .toolbar a {
161 | cursor: pointer;
162 | }
163 |
164 | pre.code-toolbar > .toolbar button {
165 | background: none;
166 | border: 0;
167 | color: inherit;
168 | font: inherit;
169 | line-height: normal;
170 | overflow: visible;
171 | padding: 0;
172 | -webkit-user-select: none; /* for button */
173 | -moz-user-select: none;
174 | -ms-user-select: none;
175 | }
176 |
177 | pre.code-toolbar > .toolbar a,
178 | pre.code-toolbar > .toolbar button,
179 | pre.code-toolbar > .toolbar span {
180 | color: #bbb;
181 | font-size: .8rem;
182 | padding: .25rem .75rem .35rem;
183 | background: #f5f2f0;
184 | background: rgba(224, 224, 224, 0.2);
185 | box-shadow: 0 2px 0 0 rgba(0,0,0,0.2);
186 | border-radius: .15rem;
187 | }
188 |
189 | pre.code-toolbar > .toolbar a:hover,
190 | pre.code-toolbar > .toolbar a:focus,
191 | pre.code-toolbar > .toolbar button:hover,
192 | pre.code-toolbar > .toolbar button:focus,
193 | pre.code-toolbar > .toolbar span:hover,
194 | pre.code-toolbar > .toolbar span:focus {
195 | color: inherit;
196 | text-decoration: none;
197 | }
198 |
--------------------------------------------------------------------------------
/src/components/CodeBlock.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Result
5 |
6 |
7 |
8 |
9 | Code
10 |
11 |
12 |
13 |
14 |
15 |
16 |
43 |
--------------------------------------------------------------------------------
/src/components/DocSection.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | {{title}}
5 |
6 |
7 |
8 |
9 |
10 |
11 |
27 |
--------------------------------------------------------------------------------
/src/helpers.js:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/andhovesyan/vue-fast-forms/5b3e70da5bac578b10a8e1d9125807cf31f6a0e0/src/helpers.js
--------------------------------------------------------------------------------
/src/main.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue';
2 | import VueRouter from 'vue-router';
3 |
4 | import VF from 'vue-fast-forms';
5 |
6 | import DocSection from 'components/DocSection';
7 | import CodeBlock from 'components/CodeBlock';
8 |
9 | import App from './App';
10 | import routes from './routes';
11 |
12 | Vue.component('vf-btn', VF.Button);
13 | Vue.component('vf-checkbox', VF.Checkbox);
14 | Vue.component('vf-form', VF.Form);
15 | Vue.component('vf-group', VF.Group);
16 | Vue.component('vf-input', VF.Input);
17 | Vue.component('vf-radio', VF.Radio);
18 | Vue.component('vf-datepicker', VF.Datepicker);
19 | Vue.component('vf-timepicker', VF.Timepicker);
20 | Vue.component('vf-select', VF.Select);
21 | Vue.component('vf-addon', VF.Addon);
22 | Vue.component('vf-help', VF.Help);
23 |
24 | Vue.component('doc-section', DocSection);
25 | Vue.component('code-block', CodeBlock);
26 |
27 | Vue.use(VueRouter);
28 |
29 | const router = new VueRouter({
30 | linkActiveClass: 'active',
31 | mode: 'history',
32 | routes,
33 | });
34 |
35 | /* eslint-disable no-new */
36 | new Vue({
37 | strict: process.env.NODE_ENV !== 'production',
38 | router,
39 | render: h => h(App),
40 | el: '#app',
41 | });
42 |
--------------------------------------------------------------------------------
/src/pages/Buttons.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
Buttons
4 |
5 | Properties:
6 | text
,
7 | vf-style
,
8 | vf-size
,
9 | vf-type
,
10 | disabled
,
11 | active
,
12 | block
,
13 | href
,
14 | to
15 |
16 |
17 | Events:
18 | @click
,
19 | @dbclick
,
20 | @focus
,
21 | @blur
22 |
23 |
24 |
25 | Use vf-style
and outline
attributes to define button color style:
26 |
27 |
28 |
29 | Primary
30 | Secondary
31 | Success
32 | Info
33 | Warning
34 | Danger
35 | Link
36 |
37 |
38 | <vf-btn vf-style="primary">Primary</vf-btn>
39 | <vf-btn vf-style="secondary">Secondary</vf-btn>
40 | <vf-btn vf-style="success">Success</vf-btn>
41 | <vf-btn vf-style="info">Info</vf-btn>
42 | <vf-btn vf-style="warning">Warning</vf-btn>
43 | <vf-btn vf-style="danger">Danger</vf-btn>
44 | <vf-btn vf-style="link">Link</vf-btn>
45 |
46 |
47 |
48 | Primary
49 | Secondary
50 | Success
51 | Info
52 | Warning
53 | Danger
54 |
55 |
56 | <vf-btn vf-style="primary" outline>Primary</vf-btn>
57 | <vf-btn vf-style="secondary" outline>Secondary</vf-btn>
58 | <vf-btn vf-style="success" outline>Success</vf-btn>
59 | <vf-btn vf-style="info" outline>Info</vf-btn>
60 | <vf-btn vf-style="warning" outline>Warning</vf-btn>
61 | <vf-btn vf-style="danger" outline>Danger</vf-btn>
62 |
63 |
64 |
65 | Use vf-size
(sm or lg) attribute to define button size:
66 |
67 |
68 | Primary
69 | Primary
70 |
71 |
72 | <vf-btn vf-style="primary" vf-size="sm">Primary</vf-btn>
73 | <vf-btn vf-style="secondary" vf-size="sm">Secondary</vf-btn>
74 |
75 |
76 |
77 | Primary
78 | Secondary
79 |
80 |
81 | <vf-btn vf-style="primary" vf-size="lg">Primary</vf-btn>
82 | <vf-btn vf-style="secondary" vf-size="lg">Secondary</vf-btn>
83 |
84 | Use block
attribute to get a block-sized button:
85 |
86 |
87 | Block Level Button
88 | Block Level Button
89 |
90 |
91 | <vf-btn vf-style="primary" vf-size="lg" block>Primary</vf-btn>
92 | <vf-btn vf-style="secondary" vf-size="lg" block>Secondary</vf-btn>
93 |
94 |
95 |
96 |
97 |
98 | Active Primary
99 | Active Secondary
100 |
101 |
102 | <vf-btn vf-style="primary" active>Primary</vf-btn>
103 | <vf-btn vf-style="secondary" active>Secondary</vf-btn>
104 |
105 |
106 |
107 | Disabled Primary
108 | Disabled Secondary
109 |
110 |
111 | <vf-btn vf-style="primary" disabled>Primary</vf-btn>
112 | <vf-btn vf-style="secondary" disabled>Secondary</vf-btn>
113 |
114 |
115 |
116 | By default vf-btn
will render button
tag.
117 | Define a href
attribute, to render <a>
tag instead:
118 |
119 |
120 | Primary
121 | Secondary
122 |
123 |
124 | <vf-btn vf-style="primary" href="#">Primary</vf-btn>
125 | <vf-btn vf-style="secondary" href="#">Secondary</vf-btn>
126 |
127 | Define a :to
attribute, to get a <router-link>
component:
128 |
129 |
130 |
131 | Primary
132 |
133 |
134 | Secondary
135 |
136 |
137 |
138 | <vf-btn vf-style="primary" :to="{name: 'buttons.test1'}">Primary</vf-btn>
139 | <vf-btn vf-style="secondary" :to="{name: 'buttons.test2'}">Secondary</vf-btn>
140 |
141 |
142 |
143 |
144 |
145 |
150 |
--------------------------------------------------------------------------------
/src/pages/Custom.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
Custom Inputs
4 |
5 |
6 |
7 |
8 |
13 |
14 | Selected: {{select}}
15 |
16 |
17 | <vf-group>
18 | <vf-select v-model="select" :options="['One', 'Two', 'Three']" />
19 | </vf-group>
20 | Selected: {{'{{'}}select}}
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 | Checked
31 |
32 |
33 | Checked: {{isCheckedBool}}
34 |
35 |
36 |
37 |
38 |
44 | Checked
45 |
46 |
47 | Checked: {{isCheckedString}}
48 |
49 |
50 |
51 |
52 |
53 | One
54 |
55 |
56 | Two
57 |
58 |
59 | Three
60 |
61 |
62 | Checked values: {{arChecked}}
63 |
64 |
65 | <vf-group>
66 | <label>Boolean <code>v-model</code>:</label>
67 | <div class="clearfix"></div>
68 | <vf-checkbox v-model="isCheckedBool">Checked</vf-checkbox>
69 | </vf-group>
70 | Checked: {{'{{'}}isCheckedBool}}
71 | <hr>
72 | <vf-group>
73 | <label>String <code>v-model</code>:</label>
74 | <div class="clearfix"></div>
75 | <vf-checkbox v-model="isCheckedString" value-checked="YES" value-unchecked="NO">
76 | Checked
77 | </vf-checkbox>
78 | </vf-group>
79 | Checked: {{'{{'}}isCheckedString}}
80 | <hr>
81 | <vf-group>
82 | <label>Array <code>v-model</code>:</label>
83 | <div class="clearfix"></div>
84 | <vf-checkbox v-model="arChecked" :vf-value="1">One</vf-checkbox>
85 | <vf-checkbox v-model="arChecked" :vf-value="2">Two</vf-checkbox>
86 | <vf-checkbox v-model="arChecked" :vf-value="3">Three</vf-checkbox>
87 | </vf-group>
88 | Checked values: {{'{{'}}arChecked}}
89 |
90 |
91 |
92 |
93 |
94 |
95 |
100 |
101 | Selected: {{radioHorizontal}}
102 |
103 |
104 |
110 |
111 | Selected: {{radioInline}}
112 |
113 |
114 | <vf-group>
115 | <vf-radio v-model="radioHorizontal" :values="['One', 'Two', 'Three']" />
116 | </vf-group>
117 | Selected: {{'{{'}}radioHorizontal}}
118 | <hr>
119 | <vf-group>
120 | <vf-radio v-model="radioInline" :values="['One', 'Two', 'Three']" inline />
121 | </vf-group>
122 | Selected: {{'{{'}}radioInline}}
123 |
124 |
125 |
126 |
127 |
128 |
145 |
--------------------------------------------------------------------------------
/src/pages/Datepicker.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
Datepicker
4 |
5 |
6 |
7 |
8 |
9 |
15 |
16 |
17 |
18 |
19 |
25 |
26 |
27 |
28 |
29 | <template>
30 | <vf-group>
31 | <label for="defaultDatepicker">Datepicker:</label>
32 | <vf-datepicker
33 | id="defaultDatepicker"
34 | v-model="date"
35 | placeholder="date"
36 | />
37 | </vf-group>
38 | </template>
39 |
40 | <script>
41 | export default {
42 |
43 | name: 'default_datepicker',
44 |
45 | data () {
46 | return {
47 | date: new Date(),
48 | };
49 | }
50 | };
51 | </script>
52 |
53 |
54 |
55 | You can use vf-addon
component to get icon before or after datepicker input, like on basic inputs.
56 | Vue-fontawesome library was used to get calendar icon.
57 |
58 |
59 |
60 |
61 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 | <vf-group>
75 | <label for="iconedDatepicker">Datepicker:</label>
76 | <vf-datepicker
77 | id="iconedDatepicker"
78 | v-model="date"
79 | placeholder="Select date"
80 | >
81 | <vf-addon slot="before">
82 | <vf-icon icon="calendar" fixed />
83 | </vf-addon>
84 | </vf-datepicker>
85 | </vf-group>
86 |
87 |
88 |
89 |
90 |
91 |
Date selected: {{inlineDate.format('MM/DD/YYYY')}}
92 |
93 |
94 |
95 |
96 |
97 | <template>
98 | <p>Date selected: {{'{{'}}date.format('MM/DD/YYYY')}}</p>
99 | <vf-group>
100 | <vf-datepicker v-model="date" inline />
101 | </vf-group>
102 | </template>
103 |
104 | <script>
105 | import moment from 'moment';
106 |
107 | export default {
108 |
109 | name: 'inline_datepicker',
110 |
111 | data () {
112 | return {
113 | date: moment(),
114 | };
115 | }
116 | };
117 | </script>
118 |
119 |
120 |
121 |
122 |
123 |
124 |
140 |
--------------------------------------------------------------------------------
/src/pages/Forms.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
VueJS Fast Forms
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
19 |
20 |
21 |
22 |
28 |
29 |
30 |
31 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
53 |
54 |
55 |
61 |
62 |
63 |
64 | Remember me
65 |
66 |
67 |
68 |
69 | Reset
70 |
71 |
72 | Submit
73 |
74 |
75 |
76 |
77 |
80 |
81 |
82 |
83 | <vf-form ref="form" v-model="formData" @submit="onSubmit">
84 | <vf-group>
85 | <label>Username (text):</label>
86 | <vf-input
87 | name="username"
88 | type="text"
89 | placeholder="username"
90 | block
91 | />
92 | </vf-group>
93 | <vf-group>
94 | <label>Email address (email):</label>
95 | <vf-input
96 | name="email"
97 | type="email"
98 | placeholder="example@mail.com"
99 | block
100 | />
101 | </vf-group>
102 | <vf-group>
103 | <label>Password (password):</label>
104 | <vf-input
105 | name="password"
106 | type="password"
107 | placeholder="password"
108 | block
109 | />
110 | </vf-group>
111 | <vf-group>
112 | <label>Date of birth:</label>
113 | <vf-datepicker name="dob" placeholder="MM/DD/YYYY"/>
114 | </vf-group>
115 | <vf-group>
116 | <vf-radio name="gender" :values="['Male', 'Female']" />
117 | </vf-group>
118 | <vf-group label="Product count (number):">
119 | <vf-input
120 | name="count"
121 | id="countInput"
122 | type="number"
123 | placeholder="1"
124 | block
125 | />
126 | </vf-group>
127 | <vf-group label="Product type:">
128 | <vf-select
129 | name="product"
130 | placeholder="Select product"
131 | :options="['Product 1', 'Product 2', 'Product 3']"
132 | block
133 | />
134 | </vf-group>
135 | <vf-group>
136 | <vf-checkbox name="remember">
137 | Remember me
138 | </vf-checkbox>
139 | </vf-group>
140 | <vf-group>
141 | <vf-btn vf-color="secondary" vf-type="reset">
142 | Reset
143 | </vf-btn>
144 | <vf-btn vf-color="primary" vf-type="submit">
145 | Submit
146 | </vf-btn>
147 | </vf-group>
148 | </vf-form>
149 |
150 |
151 |
152 |
153 |
154 |
180 |
181 |
197 |
--------------------------------------------------------------------------------
/src/pages/Home.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
Full example
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
18 |
19 |
20 |
21 |
27 |
28 |
29 |
30 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
52 |
53 |
54 |
60 |
61 |
62 |
63 | Remember me
64 |
65 |
66 |
67 |
68 | Reset
69 |
70 |
71 | Submit
72 |
73 |
74 |
75 |
76 |
79 |
80 |
81 | <vf-form ref="form" v-model="formData" @submit="onSubmit">
82 | <vf-group>
83 | <label>Username (text):</label>
84 | <vf-input
85 | name="username"
86 | type="text"
87 | placeholder="username"
88 | block
89 | />
90 | </vf-group>
91 | <vf-group>
92 | <label>Email address (email):</label>
93 | <vf-input
94 | name="email"
95 | type="email"
96 | placeholder="example@mail.com"
97 | block
98 | />
99 | </vf-group>
100 | <vf-group>
101 | <label>Password (password):</label>
102 | <vf-input
103 | name="password"
104 | type="password"
105 | placeholder="password"
106 | block
107 | />
108 | </vf-group>
109 | <vf-group>
110 | <label>Date of birth:</label>
111 | <vf-datepicker name="dob" placeholder="MM/DD/YYYY"/>
112 | </vf-group>
113 | <vf-group>
114 | <vf-radio name="gender" :values="['Male', 'Female']" />
115 | </vf-group>
116 | <vf-group label="Product count (number):">
117 | <vf-input
118 | name="count"
119 | id="countInput"
120 | type="number"
121 | placeholder="1"
122 | block
123 | />
124 | </vf-group>
125 | <vf-group label="Product type:">
126 | <vf-select
127 | name="product"
128 | placeholder="Select product"
129 | :options="['Product 1', 'Product 2', 'Product 3']"
130 | block
131 | />
132 | </vf-group>
133 | <vf-group>
134 | <vf-checkbox name="remember">
135 | Remember me
136 | </vf-checkbox>
137 | </vf-group>
138 | <vf-group>
139 | <vf-btn vf-color="secondary" vf-type="reset">
140 | Reset
141 | </vf-btn>
142 | <vf-btn vf-color="primary" vf-type="submit">
143 | Submit
144 | </vf-btn>
145 | </vf-group>
146 | </vf-form>
147 |
148 |
149 |
150 |
151 |
152 |
178 |
179 |
195 |
--------------------------------------------------------------------------------
/src/pages/Inputs.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
Inputs
4 |
5 |
6 |
7 |
8 |
9 | {{text}}
10 |
17 |
18 | This field can contain any string value.
19 |
20 |
21 |
22 |
23 |
30 |
31 | This field must contain only numeric value.
32 |
33 |
34 |
35 |
36 | <vf-group>
37 | <label for="textField">Text field:</label>
38 | <vf-input
39 | id="textField"
40 | v-model="text"
41 | type="text"
42 | placeholder="text"
43 | />
44 | </vf-group>
45 | <vf-group>
46 | <label for="numberField">Number field:</label>
47 | <vf-input
48 | id="numberField"
49 | v-model="number"
50 | type="number"
51 | placeholder="number"
52 | />
53 | </vf-group>
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 | @
63 | example.com
64 |
65 |
66 |
67 |
68 |
69 | $
70 | .00
71 |
72 |
73 |
74 |
75 | <vf-group>
76 | <label for="textField">Username:</label>
77 | <vf-input id="textField" v-model="text2" type="text" placeholder="username">
78 | <vf-addon slot="append">@</vf-addon>
79 | <vf-addon slot="append">example.com</vf-addon>
80 | </vf-input>
81 | </vf-group>
82 | <vf-group>
83 | <label for="numberField">Price:</label>
84 | <vf-input id="numberField" v-model="number2" type="number" placeholder="price">
85 | <vf-addon slot="prepend">$</vf-addon>
86 | <vf-addon slot="append">.00</vf-addon>
87 | </vf-input>
88 | </vf-group>
89 |
90 |
91 |
92 |
93 |
94 |
109 |
--------------------------------------------------------------------------------
/src/routes.js:
--------------------------------------------------------------------------------
1 | import Home from './pages/Home';
2 | import Buttons from './pages/Buttons';
3 | import Forms from './pages/Forms';
4 | import Inputs from './pages/Inputs';
5 | import Custom from './pages/Custom';
6 | import Datepicker from './pages/Datepicker';
7 |
8 | export default [{
9 | name: 'home',
10 | path: '/',
11 | component: Home,
12 | }, {
13 | name: 'forms',
14 | path: '/forms',
15 | component: Forms,
16 | }, {
17 | name: 'inputs',
18 | path: '/inputs',
19 | component: Inputs,
20 | }, {
21 | name: 'custom',
22 | path: '/custom',
23 | component: Custom,
24 | }, {
25 | name: 'datepicker',
26 | path: '/datepicker',
27 | component: Datepicker,
28 | }, {
29 | name: 'buttons',
30 | path: '/buttons',
31 | component: Buttons,
32 | children: [{
33 | path: 'test1',
34 | name: 'buttons.test1',
35 | component: Buttons,
36 | }, {
37 | path: 'test2',
38 | name: 'buttons.test2',
39 | component: Buttons,
40 | }],
41 | }];
42 |
--------------------------------------------------------------------------------
/vue.config.js:
--------------------------------------------------------------------------------
1 | const path = require('path')
2 |
3 | function resolve (dir) {
4 | return path.join(__dirname, dir)
5 | }
6 |
7 | module.exports = {
8 | configureWebpack: {
9 | output: {
10 | libraryExport: 'default'
11 | },
12 | resolve: {
13 | extensions: ['.js', '.vue', '.json'],
14 | alias: {
15 | 'vue$': 'vue/dist/vue.esm.js',
16 | '@': resolve('docs'),
17 | 'components': resolve('src/components'),
18 | 'vue-fast-forms': resolve('lib'),
19 | }
20 | },
21 | },
22 | };
23 |
--------------------------------------------------------------------------------