├── vui-logo.png
├── vui
├── components
│ ├── DropdownDivider.vue
│ ├── FormCol.vue
│ ├── CardText.vue
│ ├── FormRow.vue
│ ├── CardBody.vue
│ ├── CardTitle.vue
│ ├── FormGroup.vue
│ ├── IconStack.vue
│ ├── NavbarText.vue
│ ├── FormGroupRow.vue
│ ├── DropdownItemHeader.vue
│ ├── CardSubtitle.vue
│ ├── DropdownItemText.vue
│ ├── FormHelpText.vue
│ ├── Select.vue
│ ├── AlertLink.vue
│ ├── Option.vue
│ ├── CardLink.vue
│ ├── FormLabel.vue
│ ├── NavbarToggler.vue
│ ├── Form.vue
│ ├── NavbarCollapse.vue
│ ├── Accordion.vue
│ ├── Card.vue
│ ├── ListGroup.vue
│ ├── CardFooter.vue
│ ├── Progress.vue
│ ├── Fieldset.vue
│ ├── Jumbotron.vue
│ ├── ButtonGroup.vue
│ ├── InputGroupAppend.vue
│ ├── Badge.vue
│ ├── DropdownSelectOption.vue
│ ├── NavbarNav.vue
│ ├── CardHeader.vue
│ ├── InputGroup.vue
│ ├── NavbarBrand.vue
│ ├── Legend.vue
│ ├── InputGroupPrepend.vue
│ ├── Textarea.vue
│ ├── BreadcrumbItem.vue
│ ├── Nav.vue
│ ├── ProgressBar.vue
│ ├── NavbarItemDropdown.vue
│ ├── Callout.vue
│ ├── CardImage.vue
│ ├── Icon.vue
│ ├── ImgPlaceholder.vue
│ ├── Navbar.vue
│ ├── Alert.vue
│ ├── TabsPanel.vue
│ ├── AccordionPanel.vue
│ ├── Breadcrumb.vue
│ ├── DropdownButtonSplit.vue
│ ├── DropdownSelect.vue
│ ├── DropdownButton.vue
│ ├── DropdownLink.vue
│ ├── DropdownItem.vue
│ ├── Input.vue
│ ├── InputFile.vue
│ ├── NavbarItem.vue
│ ├── NavItem.vue
│ ├── InputFileButton.vue
│ ├── ListGroupItem.vue
│ ├── Button.vue
│ ├── Radio.vue
│ ├── Checkbox.vue
│ ├── Modal.vue
│ ├── Pagination.vue
│ └── Dtable.vue
├── directives
│ ├── AlignDirective.js
│ ├── FloatDirective.js
│ ├── ShadowDirective.js
│ ├── DragDirective.js
│ ├── ColorsDirective.js
│ ├── FontDirective.js
│ └── BorderDirective.js
├── images
│ ├── angle-asc.svg
│ ├── angle-desc.svg
│ └── angle-down.svg
├── vui_filters.js
├── widgets
│ └── CodePanel.vue
├── vui.css
└── vui.js
├── LICENSE
└── README.md
/vui-logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vui-kit/vui/HEAD/vui-logo.png
--------------------------------------------------------------------------------
/vui/components/DropdownDivider.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/vui/components/FormCol.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/vui/components/CardText.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/vui/components/FormRow.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/vui/components/CardBody.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/vui/components/CardTitle.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/vui/components/FormGroup.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/vui/components/IconStack.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/vui/components/NavbarText.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/vui/directives/AlignDirective.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 |
3 | Vue.directive('align', {
4 | bind: function(el, binding) {
5 | if (binding.arg) {
6 | el.classList.add(`align-${binding.arg}`)
7 | }
8 | }
9 | })
--------------------------------------------------------------------------------
/vui/directives/FloatDirective.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 |
3 | Vue.directive('float', {
4 | bind: function(el, binding) {
5 | if (binding.arg) {
6 | el.classList.add(`float-${binding.arg}`)
7 | }
8 | }
9 | })
--------------------------------------------------------------------------------
/vui/components/FormGroupRow.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/vui/components/DropdownItemHeader.vue:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/vui/components/CardSubtitle.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/vui/components/DropdownItemText.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/vui/components/FormHelpText.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
12 |
13 |
16 |
--------------------------------------------------------------------------------
/vui/components/Select.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
15 |
16 |
19 |
--------------------------------------------------------------------------------
/vui/directives/ShadowDirective.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 |
3 | Vue.directive('shadow', {
4 | bind: function(el, binding) {
5 | if (!binding.arg) {
6 | el.classList.add('shadow')
7 | }
8 | else {
9 | el.classList.add(`shadow-${binding.arg}`)
10 | }
11 | }
12 | })
--------------------------------------------------------------------------------
/vui/images/angle-asc.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/vui/components/AlertLink.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/vui/images/angle-desc.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/vui/images/angle-down.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/vui/directives/DragDirective.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 |
3 | Vue.directive('drag', {
4 | inserted: function(el, binding) {
5 | Draggable.create(el, {
6 | type: "x,y",
7 | edgeResistance: .8,
8 | trigger: binding.value,
9 | bounds: "#" + binding.arg,
10 | throwProps: true
11 | })
12 | }
13 | })
--------------------------------------------------------------------------------
/vui/components/Option.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
12 |
13 |
19 |
--------------------------------------------------------------------------------
/vui/components/CardLink.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/vui/components/FormLabel.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/vui/components/NavbarToggler.vue:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
10 |
11 |
12 |
17 |
--------------------------------------------------------------------------------
/vui/components/Form.vue:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/vui/components/NavbarCollapse.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
17 |
--------------------------------------------------------------------------------
/vui/components/Accordion.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
21 |
--------------------------------------------------------------------------------
/vui/components/Card.vue:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
9 |
10 |
11 |
20 |
--------------------------------------------------------------------------------
/vui/components/ListGroup.vue:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/vui/components/CardFooter.vue:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/vui/components/Progress.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
23 |
24 |
--------------------------------------------------------------------------------
/vui/components/Fieldset.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
12 |
13 |
25 |
--------------------------------------------------------------------------------
/vui/directives/ColorsDirective.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 |
3 | Vue.directive('color', {
4 | bind: function(el, binding) {
5 | if (binding.arg === 'txt' && binding.value !== '') {
6 | // Overrides preset router-link color property
7 | el.style.color = ''
8 | el.classList.add(`text-${binding.value}`)
9 | }
10 | if (binding.arg === 'bg' && binding.value !== '') {
11 | el.classList.add(`bg-${binding.value}`)
12 | }
13 | }
14 | })
--------------------------------------------------------------------------------
/vui/components/Jumbotron.vue:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/vui/components/ButtonGroup.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/vui/vui_filters.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 |
3 | Vue.filter('capFirst', function(value) {
4 | if (!value) return ''
5 | value = value.toString()
6 | return value.charAt(0).toUpperCase() + value.slice(1)
7 | })
8 |
9 | Vue.filter('capAll', function(value) {
10 | if (!value) return ''
11 | value = value.toString()
12 | return value.toUpperCase()
13 | })
14 |
15 | Vue.filter('lowercase', function(value) {
16 | if (!value) return ''
17 | value = value.toString()
18 | return value.toLowerCase()
19 | })
--------------------------------------------------------------------------------
/vui/components/InputGroupAppend.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
23 |
24 |
27 |
--------------------------------------------------------------------------------
/vui/components/Badge.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/vui/components/DropdownSelectOption.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
19 |
20 |
--------------------------------------------------------------------------------
/vui/components/NavbarNav.vue:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
29 |
--------------------------------------------------------------------------------
/vui/components/CardHeader.vue:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/vui/components/InputGroup.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
25 |
26 |
29 |
--------------------------------------------------------------------------------
/vui/components/NavbarBrand.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/vui/components/Legend.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
15 |
16 |
--------------------------------------------------------------------------------
/vui/components/InputGroupPrepend.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
23 |
24 |
29 |
--------------------------------------------------------------------------------
/vui/components/Textarea.vue:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/vui/components/BreadcrumbItem.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/vui/components/Nav.vue:
--------------------------------------------------------------------------------
1 |
2 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/vui/components/ProgressBar.vue:
--------------------------------------------------------------------------------
1 |
2 |
12 | {{ label }}
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/vui/components/NavbarItemDropdown.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | {{ text }}
5 |
6 |
9 |
10 |
11 |
12 |
36 |
37 |
44 |
--------------------------------------------------------------------------------
/vui/components/Callout.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
15 |
16 |
42 |
--------------------------------------------------------------------------------
/vui/components/CardImage.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | {{ cap }}
5 |
6 |
7 |
8 |
9 |
10 |
20 |
21 |
53 |
--------------------------------------------------------------------------------
/vui/components/Icon.vue:
--------------------------------------------------------------------------------
1 |
2 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/vui/components/ImgPlaceholder.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2011-2018 Twitter, Inc.
4 | Copyright (c) 2011-2018 The Bootstrap Authors
5 |
6 | Permission is hereby granted, free of charge, to any person obtaining a copy
7 | of this software and associated documentation files (the "Software"), to deal
8 | in the Software without restriction, including without limitation the rights
9 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 | copies of the Software, and to permit persons to whom the Software is
11 | furnished to do so, subject to the following conditions:
12 |
13 | The above copyright notice and this permission notice shall be included in
14 | all copies or substantial portions of the Software.
15 |
16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22 | THE SOFTWARE.
23 |
--------------------------------------------------------------------------------
/vui/components/Navbar.vue:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
9 |
10 |
11 |
45 |
46 |
52 |
--------------------------------------------------------------------------------
/vui/components/Alert.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
10 |
11 |
12 |
13 |
14 |
15 |
52 |
53 |
60 |
--------------------------------------------------------------------------------
/vui/components/TabsPanel.vue:
--------------------------------------------------------------------------------
1 |
2 |
35 |
36 |
37 |
56 |
57 |
62 |
--------------------------------------------------------------------------------
/vui/directives/FontDirective.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 |
3 | Vue.directive('font', {
4 | bind: function(el, binding) {
5 | if (binding.arg === 'lcase') {
6 | el.classList.add('text-lowercase')
7 | }
8 | else if (binding.arg === 'ucase') {
9 | el.classList.add('text-uppercase')
10 | }
11 | else if (binding.arg === 'cap') {
12 | el.classList.add('text-capitalize')
13 | }
14 |
15 | else if (binding.arg === 'justify') {
16 | el.classList.add('text-justify')
17 | }
18 | else if (binding.arg === 'left') {
19 | el.classList.add('text-left')
20 | }
21 | else if (binding.arg === 'center') {
22 | el.classList.add('text-center')
23 | }
24 | else if (binding.arg === 'right') {
25 | el.classList.add('text-right')
26 | }
27 |
28 | else if (binding.arg === 'truncate') {
29 | el.classList.add('text-truncate')
30 | }
31 |
32 | else if (binding.arg === 'bold') {
33 | el.classList.add('font-weight-bold')
34 | }
35 | else if (binding.arg === 'normal') {
36 | el.classList.add('font-weight-normal')
37 | }
38 | else if (binding.arg === 'light') {
39 | el.classList.add('font-weight-light')
40 | }
41 | else if (binding.arg === 'italic') {
42 | el.classList.add('font-italic')
43 | }
44 | else if (binding.arg === 'monospace') {
45 | el.classList.add('text-monospace')
46 | }
47 | }
48 | })
--------------------------------------------------------------------------------
/vui/components/AccordionPanel.vue:
--------------------------------------------------------------------------------
1 |
2 |
16 |
17 |
18 |
51 |
52 |
63 |
--------------------------------------------------------------------------------
/vui/components/Breadcrumb.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
9 |
10 | {{ path }}
11 |
12 | {{ seperator }}
13 |
14 | {{ path }}
15 |
16 |
17 |
18 |
19 |
56 |
57 |
67 |
--------------------------------------------------------------------------------
/vui/components/DropdownButtonSplit.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
9 | {{ text }}
10 |
11 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/vui/widgets/CodePanel.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | Copy
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
36 |
37 |
--------------------------------------------------------------------------------
/vui/components/DropdownSelect.vue:
--------------------------------------------------------------------------------
1 |
2 |
14 |
15 |
16 |
48 |
49 |
71 |
--------------------------------------------------------------------------------
/vui/components/DropdownButton.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
9 | {{ text }}
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
63 |
64 |
70 |
--------------------------------------------------------------------------------
/vui/components/DropdownLink.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
9 | {{ text }}
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/vui/components/DropdownItem.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
10 |
11 |
12 |
22 |
23 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
55 |
56 |
77 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
Vui
7 |
8 |
9 | A lightweight component library for Vue2 Single Page Applications
10 |
11 |
12 |
13 |
14 |
15 | ## Documentation
16 |
17 |
18 |
19 | ## Features
20 | - Large set of easy to use Vue Components.
21 | - Download and add to any new or existing project.
22 | - Detailed documentaion.
23 |
24 | ## Roadmap
25 | - 20 New Components (Spring 2019)
26 | - Vui Admin (Python Flask) (Spring 2019)
27 | - Emmet support for VSCode & Atom (Spring 2019)
28 | - Support for Fontawesome 4 & 5 icons (Spring 2019)
29 | - Vui Studio (Quasar/Electron App) (Summer 2019)
30 |
31 | ### Vui Admin
32 | Unlike most themes that only provide a static UI, Vui Admin is a quick start application that provides a functional layout with many working features and a richer set of Vui components designed especially for Admin projects. Just drop the package into your Python Flask project folder and your ready to start developing.
33 |
34 | ### Vui Studio
35 | Design and prototype your project interfaces using this drag and drop editor. Once you have a design, you can then generate
36 | template code to add to your Vue project. Similar to Bootstrap Studio.
37 |
38 | ## Patreons
39 | In order for me to dedicate time to design and develop these projects, I need to be able to support myself and pay the bills, so if you like the work I am doing and want to see more great projects added to the Vui Kit show your support and
40 | become a pateron. You will get your logo or photo on this README page and also on every page of the Offical Vui-Kit website with a link to your site. [Become a patron. ]
41 |
--------------------------------------------------------------------------------
/vui/components/Input.vue:
--------------------------------------------------------------------------------
1 |
2 |
14 |
15 |
16 |
43 |
44 |
80 |
--------------------------------------------------------------------------------
/vui/components/InputFile.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Choose file
5 |
6 |
7 |
8 |
60 |
61 |
84 |
--------------------------------------------------------------------------------
/vui/components/NavbarItem.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
42 |
43 |
86 |
87 |
--------------------------------------------------------------------------------
/vui/components/NavItem.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
23 |
24 |
25 |
26 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
69 |
70 |
95 |
96 |
--------------------------------------------------------------------------------
/vui/components/InputFileButton.vue:
--------------------------------------------------------------------------------
1 |
2 |
16 |
17 |
18 |
70 |
71 |
94 |
--------------------------------------------------------------------------------
/vui/components/ListGroupItem.vue:
--------------------------------------------------------------------------------
1 |
2 |
11 |
12 |
13 |
19 |
20 |
21 |
22 |
30 |
31 |
32 |
33 |
38 |
39 |
40 |
41 |
42 |
43 |
78 |
79 |
105 |
--------------------------------------------------------------------------------
/vui/directives/BorderDirective.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 |
3 | Vue.directive('border', {
4 | bind: function(el, binding) {
5 |
6 | // Additive: All Boders
7 | if (!binding.arg && !binding.modifiers[0]) {
8 | el.classList.add("border")
9 | }
10 | // Additive: Top Boder
11 | else if (binding.arg === 'top' && !binding.modifiers[0]) {
12 | el.classList.add("border-top")
13 | }
14 | // Additive: Right Boder
15 | else if (binding.arg === 'right' && !binding.modifiers[0]) {
16 | el.classList.add("border-right")
17 | }
18 | // Additive: Bottom Boder
19 | else if (binding.arg === 'bottom' && !binding.modifiers[0]) {
20 | el.classList.add("border-bottom")
21 | }
22 | // Additive: Left Boder
23 | else if (binding.arg === 'left' && !binding.modifiers[0]) {
24 | el.classList.add("border-left")
25 | }
26 |
27 | // Subtractive: No Boders
28 | else if (!binding.arg && binding.modifiers[0]) {
29 | el.classList.add("border-0")
30 | }
31 | // Subtractive: No Top Boder
32 | else if (binding.arg === 'top' && binding.modifiers[0]) {
33 | el.classList.add("border")
34 | el.classList.add("border-top-0")
35 | }
36 | // Subtractive: No Right Boder
37 | else if (binding.arg === 'right' && binding.modifiers[0]) {
38 | el.classList.add("border")
39 | el.classList.add("border-right-0")
40 | }
41 | // Subtractive: No Bottom Boder
42 | else if (binding.arg === 'bottom' && binding.modifiers[0]) {
43 | el.classList.add("border")
44 | el.classList.add("border-bottom-0")
45 | }
46 | // Subtractive: No Left Boder
47 | else if (binding.arg === 'left' && binding.modifiers[0]) {
48 | el.classList.add("border")
49 | el.classList.add("border-left-0")
50 | }
51 |
52 | // Border Colors
53 | if (binding.value) {
54 | el.classList.add("border-" + binding.value)
55 | }
56 |
57 | // Border Radius: All
58 | if (binding.modifiers['rounded']) {
59 | el.classList.add("rounded")
60 | }
61 | // Border Radius: Top
62 | else if (binding.modifiers['rounded-top']) {
63 | el.classList.add("rounded-top")
64 | }
65 | // Border Radius: Right
66 | else if (binding.modifiers['rounded-right']) {
67 | el.classList.add("rounded-right")
68 | }
69 | // Border Radius: Bottom
70 | else if (binding.modifiers['rounded-bottom']) {
71 | el.classList.add("rounded-bottom")
72 | }
73 | // Border Radius: Left
74 | else if (binding.modifiers['rounded-left']) {
75 | el.classList.add("rounded-left")
76 | }
77 | // Border Radius: Circle
78 | else if (binding.modifiers['rounded-circle']) {
79 | el.classList.add("rounded-circle")
80 | }
81 | // Border Radius: None
82 | else if (binding.modifiers['rounded-0']) {
83 | el.classList.add("rounded-0")
84 | }
85 |
86 | // el.innerHTML =
87 | // 'name - ' + binding.name + ' ' +
88 | // 'expression - ' + binding.expression + ' ' +
89 | // 'argument - ' + binding.arg + ' ' +
90 | // 'modifiers - ' + JSON.stringify(binding.modifiers) + ' ' +
91 | // 'value - ' + binding.value
92 | }
93 | })
--------------------------------------------------------------------------------
/vui/components/Button.vue:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
11 |
12 |
13 |
98 |
99 |
110 |
--------------------------------------------------------------------------------
/vui/components/Radio.vue:
--------------------------------------------------------------------------------
1 |
2 |
6 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
51 |
52 |
101 |
--------------------------------------------------------------------------------
/vui/components/Checkbox.vue:
--------------------------------------------------------------------------------
1 |
2 |
6 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
51 |
52 |
101 |
--------------------------------------------------------------------------------
/vui/components/Modal.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
14 |
36 |
37 |
38 |
39 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
103 |
104 |
151 |
--------------------------------------------------------------------------------
/vui/vui.css:
--------------------------------------------------------------------------------
1 | /** TOOLTIP STYLES: Default ***************************************/
2 | [tooltip] {
3 | position: relative;
4 | display: inline-block;
5 | }
6 | [tooltip]::before {
7 | content: "";
8 | position: absolute;
9 | top: -6px;
10 | left: 50%;
11 | transform: translateX(-50%);
12 | border-width: 4px 6px 0 6px;
13 | border-style: solid;
14 | border-color: rgba(0,0,0,0.7) transparent transparent transparent;
15 | z-index: 99;
16 | opacity: 0;
17 | }
18 |
19 | [tooltip-position='left']::before {
20 | left: 0%;
21 | top: 50%;
22 | margin-left: -12px;
23 | transform: translatey(-50%) rotate(-90deg)
24 | }
25 | [tooltip-position='top']::before {
26 | left: 50%;
27 | }
28 | [tooltip-position='bottom']::before {
29 | top: 100%;
30 | margin-top: 8px;
31 | transform: translateX(-50%) translatey(-100%) rotate(-180deg)
32 | }
33 | [tooltip-position='right']::before {
34 | left: 100%;
35 | top: 50%;
36 | margin-left: 1px;
37 | transform: translatey(-50%) rotate(90deg)
38 | }
39 |
40 | [tooltip]::after {
41 | content: attr(tooltip);
42 | position: absolute;
43 | left: 50%;
44 | top: -6px;
45 | transform: translateX(-50%) translateY(-100%);
46 | background: rgba(0,0,0,1);
47 | text-align: center;
48 | color: #fff;
49 | padding: 6px 10px;
50 | font-size: 14px;
51 | min-width: 100px;
52 | max-width: 300px;
53 | border-radius: 5px;
54 | pointer-events: none;
55 | z-index: 99;
56 | opacity: 0;
57 | white-space: nowrap;
58 | }
59 |
60 | [tooltip-position='left']::after {
61 | left: 0%;
62 | top: 50%;
63 | margin-left: -8px;
64 | transform: translateX(-100%) translateY(-50%);
65 | }
66 | [tooltip-position='top']::after {
67 | left: 50%;
68 | }
69 | [tooltip-position='bottom']::after {
70 | top: 100%;
71 | margin-top: 8px;
72 | transform: translateX(-50%) translateY(0%);
73 | }
74 | [tooltip-position='right']::after {
75 | left: 100%;
76 | top: 50%;
77 | margin-left: 8px;
78 | transform: translateX(0%) translateY(-50%);
79 | }
80 |
81 | [tooltip]:hover::after,
82 | [tooltip]:hover::before {
83 | opacity: 1
84 | }
85 |
86 | [tooltip].show::after,
87 | [tooltip].show::before {
88 | opacity: 1
89 | }
90 |
91 | /** TOOLTIP STYLES: Primary ***************************************/
92 | [tooltip-color='primary']::before {
93 | border-color: #007bff transparent transparent transparent;
94 | }
95 | [tooltip-color='primary']::after {
96 | background: #007bff;
97 | }
98 |
99 | /** TOOLTIP STYLES: Secondary ***************************************/
100 | [tooltip-color='secondary']::before {
101 | border-color: #6c757d transparent transparent transparent;
102 | }
103 | [tooltip-color='secondary']::after {
104 | background: #6c757d;
105 | }
106 |
107 | /** TOOLTIP STYLES: Success ***************************************/
108 | [tooltip-color='success']::before {
109 | border-color: #28a745 transparent transparent transparent;
110 | }
111 | [tooltip-color='success']::after {
112 | background: #28a745;
113 | }
114 |
115 | /** TOOLTIP STYLES: Danger ***************************************/
116 | [tooltip-color='danger']::before {
117 | border-color: #dc3545 transparent transparent transparent;
118 | }
119 | [tooltip-color='danger']::after {
120 | background: #dc3545;
121 | }
122 |
123 | /** TOOLTIP STYLES: Warning ***************************************/
124 | [tooltip-color='warning']::before {
125 | border-color: #ffc107 transparent transparent transparent;
126 | }
127 | [tooltip-color='warning']::after {
128 | background: #ffc107;
129 | color: #343a40;
130 | }
131 |
132 | /** TOOLTIP STYLES: Info ***************************************/
133 | [tooltip-color='info']::before {
134 | border-color: #17a2b8 transparent transparent transparent;
135 | }
136 | [tooltip-color='info']::after {
137 | background: #17a2b8;
138 | }
139 |
140 | /** TOOLTIP STYLES: Dark ***************************************/
141 | [tooltip-color='dark']::before {
142 | border-color: #343a40 transparent transparent transparent;
143 | }
144 | [tooltip-color='dark']::after {
145 | background: #343a40;
146 | }
147 |
148 |
149 |
--------------------------------------------------------------------------------
/vui/components/Pagination.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
27 |
28 |
29 |
58 |
59 |
60 |
183 |
184 |
--------------------------------------------------------------------------------
/vui/vui.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 |
3 | /*** IMPORT GLOBAL STYLES **************************/
4 | import './vui.css'
5 |
6 | /*** IMPORT GLOBAL FILTERS **************************/
7 | import './vui_filters.js'
8 |
9 | /*** IMPORT GLOBAL DIRECTIVES **************************/
10 | import './directives/BorderDirective.js'
11 | import './directives/DragDirective.js'
12 | import './directives/ColorsDirective.js'
13 | import './directives/FloatDirective.js'
14 | import './directives/ShadowDirective.js'
15 | import './directives/FontDirective.js'
16 | import './directives/AlignDirective.js'
17 |
18 | /*** IMPORT GLOBAL COMPONENTS **************************/
19 | import Accordion from "@/vui/components/Accordion"
20 | import AccordionPanel from "@/vui/components/AccordionPanel"
21 | import Alert from "@/vui/components/Alert"
22 | import AlertLink from "@/vui/components/AlertLink"
23 | import Badge from "@/vui/components/Badge"
24 | import Breadcrumb from "@/vui/components/Breadcrumb"
25 | import BreadcrumbItem from "@/vui/components/BreadcrumbItem"
26 | import Button from "@/vui/components/Button"
27 | import ButtonGroup from "@/vui/components/ButtonGroup"
28 | import Callout from "@/vui/components/Callout"
29 | import Card from "@/vui/components/Card"
30 | import CardHeader from "@/vui/components/CardHeader"
31 | import CardBody from "@/vui/components/CardBody"
32 | import CardTitle from "@/vui/components/CardTitle"
33 | import CardSubtitle from "@/vui/components/CardSubtitle"
34 | import CardText from "@/vui/components/CardText"
35 | import CardLink from "@/vui/components/CardLink"
36 | import CardImage from "@/vui/components/CardImage"
37 | import CardFooter from "@/vui/components/CardFooter"
38 | import Checkbox from "@/vui/components/Checkbox"
39 | import Container from "@/vui/components/Container"
40 | import DataTable from "@/vui/components/DataTable"
41 | import Dtable from "@/vui/components/Dtable"
42 | import Dthead from "@/vui/components/Dthead"
43 | import DataTableBody from "@/vui/components/DataTableBody"
44 | import DataTableRow from "@/vui/components/DataTableRow"
45 | import DtheadCol from "@/vui/components/DtheadCol"
46 | import DataTableCaption from "@/vui/components/DataTableCaption"
47 | import Datepicker from "@/vui/components/Datepicker"
48 | import DropdownItem from "@/vui/components/DropdownItem"
49 | import DropdownItemText from "@/vui/components/DropdownItemText"
50 | import DropdownItemHeader from "@/vui/components/DropdownItemHeader"
51 | import DropdownDivider from "@/vui/components/DropdownDivider"
52 | import DropdownButton from "@/vui/components/DropdownButton"
53 | import DropdownButtonSplit from "@/vui/components/DropdownButtonSplit"
54 | import DropdownLink from "@/vui/components/DropdownLink"
55 | import DropdownSelect from "@/vui/components/DropdownSelect"
56 | import DropdownSelectOption from "@/vui/components/DropdownSelectOption"
57 |
58 | import Fieldset from "@/vui/components/Fieldset"
59 | import Form from "@/vui/components/Form"
60 | import FormLabel from "@/vui/components/FormLabel"
61 | import FormHelpText from "@/vui/components/FormHelpText"
62 | import FormRow from "@/vui/components/FormRow"
63 | import FormCol from "@/vui/components/FormCol"
64 | import FormGroup from "@/vui/components/FormGroup"
65 | import FormGroupRow from "@/vui/components/FormGroupRow"
66 | import Icon from "@/vui/components/Icon"
67 | import IconStack from "@/vui/components/IconStack"
68 | import ImgPlaceholder from "@/vui/components/ImgPlaceholder"
69 | import InputGroup from "@/vui/components/InputGroup"
70 | import InputGroupPrepend from "@/vui/components/InputGroupPrepend"
71 | import InputGroupAppend from "@/vui/components/InputGroupAppend"
72 | import Input from "@/vui/components/Input"
73 | import InputFile from "@/vui/components/InputFile"
74 | import InputFileButton from "@/vui/components/InputFileButton"
75 | import Jumbotron from "@/vui/components/Jumbotron"
76 | import Legend from "@/vui/components/Legend"
77 | import ListGroup from "@/vui/components/ListGroup"
78 | import ListGroupItem from "@/vui/components/ListGroupItem"
79 | import Modal from "@/vui/components/Modal"
80 | import Nav from "@/vui/components/Nav"
81 | import Navbar from "@/vui/components/Navbar"
82 | import NavbarBrand from "@/vui/components/NavbarBrand"
83 | import NavbarToggler from "@/vui/components/NavbarToggler"
84 | import NavbarCollapse from "@/vui/components/NavbarCollapse"
85 | import NavbarNav from "@/vui/components/NavbarNav"
86 | import NavItem from "@/vui/components/NavItem"
87 | import NavbarItem from "@/vui/components/NavbarItem"
88 | import NavbarItemDropdown from "@/vui/components/NavbarItemDropdown"
89 | import NavbarText from "@/vui/components/NavbarText"
90 | import Option from "@/vui/components/Option"
91 | import Pagination from '@/vui/components/Pagination'
92 | import Progress from '@/vui/components/Progress'
93 | import ProgressBar from '@/vui/components/ProgressBar'
94 | import Radio from "@/vui/components/Radio"
95 | import Row from "@/vui/components/Row"
96 | import Select from "@/vui/components/Select"
97 | import Textarea from "@/vui/components/Textarea"
98 |
99 | /*** IMPORT GLOBAL WIDGETS ****************************/
100 | import CodePanel from "@/vui/widgets/CodePanel"
101 | //import LoginPanel from "@/vui/widgets/LoginPanel"
102 | //import TabsPanel from "@/vui/widgets/TabsPanel"
103 |
104 |
105 | /*** REGISTER GLOBAL COMPONENTS ************************/
106 | Vue.component('vuiAccordion', Accordion)
107 | Vue.component('vuiAccordionPanel', AccordionPanel)
108 | Vue.component('vuiAlert', Alert)
109 | Vue.component('vuiAlertLink', AlertLink)
110 | Vue.component('vuiBadge', Badge)
111 | Vue.component('vuiBreadcrumb', Breadcrumb)
112 | Vue.component('vuiBreadcrumbItem', BreadcrumbItem)
113 | Vue.component('vuiButton', Button)
114 | Vue.component('vuiButtonGroup', ButtonGroup)
115 |
116 | Vue.component('vuiCallout', Callout)
117 | Vue.component('vuiCard', Card)
118 | Vue.component('vuiCardHeader', CardHeader)
119 | Vue.component('vuiCardBody', CardBody)
120 | Vue.component('vuiCardTitle', CardTitle)
121 | Vue.component('vuiCardSubtitle', CardSubtitle)
122 | Vue.component('vuiCardText', CardText)
123 | Vue.component('vuiCardLink', CardLink)
124 | Vue.component('vuiCardImage', CardImage)
125 | Vue.component('vuiCardFooter', CardFooter)
126 | Vue.component('vuiCheckbox', Checkbox)
127 | Vue.component('vuiContainer', Container)
128 |
129 | Vue.component('vuiDataTable', DataTable)
130 | Vue.component('vuiDtable', Dtable)
131 | Vue.component('vuiDthead', Dthead)
132 | Vue.component('vuiDataTableBody', DataTableBody)
133 | Vue.component('vuiDataTableRow', DataTableRow)
134 | Vue.component('vuiDtheadCol', DtheadCol)
135 | Vue.component('vuiDataTableCaption', DataTableCaption)
136 |
137 | Vue.component('vuiDatepicker', Datepicker)
138 | Vue.component('vuiDropdownButton', DropdownButton)
139 | Vue.component('vuiDropdownButtonSplit', DropdownButtonSplit)
140 | Vue.component('vuiDropdownItem', DropdownItem)
141 | Vue.component('vuiDropdownItemHeader', DropdownItemHeader)
142 | Vue.component('vuiDropdownItemText', DropdownItemText)
143 | Vue.component('vuiDropdownDivider', DropdownDivider)
144 | Vue.component('vuiDropdownLink', DropdownLink)
145 | Vue.component('vuiDropdownSelect', DropdownSelect)
146 | Vue.component('vuiDropdownSelectOption', DropdownSelectOption)
147 |
148 | Vue.component('vuiFieldset', Fieldset)
149 | Vue.component('vuiForm', Form)
150 | Vue.component('vuiFormLabel', FormLabel)
151 | Vue.component('vuiFormHelpText', FormHelpText)
152 | Vue.component('vuiFormRow', FormRow)
153 | Vue.component('vuiFormCol', FormCol)
154 | Vue.component('vuiFormGroup', FormGroup)
155 | Vue.component('vuiFormGroupRow', FormGroupRow)
156 | Vue.component('vuiIcon', Icon)
157 | Vue.component('vuiIconStack', IconStack)
158 | Vue.component('vuiImgPlaceholder', ImgPlaceholder)
159 | Vue.component('vuiInputGroup', InputGroup)
160 | Vue.component('vuiInputGroupPrepend', InputGroupPrepend)
161 | Vue.component('vuiInputGroupAppend', InputGroupAppend)
162 | Vue.component('vuiInput', Input)
163 | Vue.component('vuiInputFile', InputFile)
164 | Vue.component('vuiInputFileButton', InputFileButton)
165 | Vue.component('vuiJumbotron', Jumbotron)
166 | Vue.component('vuiLegend', Legend)
167 | Vue.component('vuiListGroup', ListGroup)
168 | Vue.component('vuiListGroupItem', ListGroupItem)
169 | Vue.component('vuiModal', Modal)
170 | Vue.component('vuiNav', Nav)
171 | Vue.component('vuiNavbar', Navbar)
172 | Vue.component('vuiNavbarBrand', NavbarBrand)
173 | Vue.component('vuiNavbarToggler', NavbarToggler)
174 | Vue.component('vuiNavbarCollapse', NavbarCollapse)
175 | Vue.component('vuiNavbarNav', NavbarNav)
176 | Vue.component('vuiNavItem', NavItem)
177 | Vue.component('vuiNavbarItem', NavbarItem)
178 | Vue.component('vuiNavbarItemDropdown', NavbarItemDropdown)
179 | Vue.component('vuiNavbarText', NavbarText)
180 |
181 | Vue.component('vuiOption', Option)
182 | Vue.component('vuiPagination', Pagination)
183 | Vue.component('vuiProgress', Progress)
184 | Vue.component('vuiProgressBar', ProgressBar)
185 | Vue.component('vuiRadio', Radio)
186 | Vue.component('vuiRow', Row)
187 | Vue.component('vuiSelect', Select)
188 | Vue.component('vuiTextarea', Textarea)
189 |
190 | /*** REGISTER GLOBAL WIDGETS ****************************/
191 | Vue.component('vuiCodePanel', CodePanel)
192 | //Vue.component('vuiLoginPanel', LoginPanel)
193 | //Vue.component('vuiTabsPanel', TabsPanel)
--------------------------------------------------------------------------------
/vui/components/Dtable.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 | {{ header.label }}
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
24 | {{ header.label }}
25 |
26 |
27 |
28 |
34 |
35 |
36 |
37 |
38 |
39 |
55 |
56 |
57 |
58 |
65 | {{ header.label }}
66 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
90 |
95 | {{ row[key] }}
96 |
97 |
98 |
99 |
100 |
108 |
109 |
110 |
111 |
112 |
113 | Showing {{ pageSize }} of {{ totalRows }} records
114 |
115 |
141 |
142 |
143 |
144 |
145 |
146 |
147 |
151 |
169 |
170 |
171 |
176 | {{ key | capFirst }}
177 |
178 |
179 |
185 | Update
186 |
187 |
188 |
193 |
194 |
195 |
196 |
197 |
198 |
199 |
200 |
393 |
394 |
651 |
--------------------------------------------------------------------------------