├── 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 | 4 | 5 | -------------------------------------------------------------------------------- /vui/components/FormCol.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | -------------------------------------------------------------------------------- /vui/components/CardText.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | -------------------------------------------------------------------------------- /vui/components/FormRow.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | -------------------------------------------------------------------------------- /vui/components/CardBody.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | -------------------------------------------------------------------------------- /vui/components/CardTitle.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | -------------------------------------------------------------------------------- /vui/components/FormGroup.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | -------------------------------------------------------------------------------- /vui/components/IconStack.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | -------------------------------------------------------------------------------- /vui/components/NavbarText.vue: -------------------------------------------------------------------------------- 1 | 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 | 6 | 7 | -------------------------------------------------------------------------------- /vui/components/DropdownItemHeader.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | -------------------------------------------------------------------------------- /vui/components/CardSubtitle.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | -------------------------------------------------------------------------------- /vui/components/DropdownItemText.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | -------------------------------------------------------------------------------- /vui/components/FormHelpText.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 12 | 13 | 16 | -------------------------------------------------------------------------------- /vui/components/Select.vue: -------------------------------------------------------------------------------- 1 | 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 | 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 | 6 | 7 | 12 | 13 | 19 | -------------------------------------------------------------------------------- /vui/components/CardLink.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | -------------------------------------------------------------------------------- /vui/components/FormLabel.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | -------------------------------------------------------------------------------- /vui/components/NavbarToggler.vue: -------------------------------------------------------------------------------- 1 | 11 | 12 | 17 | -------------------------------------------------------------------------------- /vui/components/Form.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | -------------------------------------------------------------------------------- /vui/components/NavbarCollapse.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 17 | -------------------------------------------------------------------------------- /vui/components/Accordion.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 21 | -------------------------------------------------------------------------------- /vui/components/Card.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 20 | -------------------------------------------------------------------------------- /vui/components/ListGroup.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | -------------------------------------------------------------------------------- /vui/components/CardFooter.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | -------------------------------------------------------------------------------- /vui/components/Progress.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 23 | 24 | -------------------------------------------------------------------------------- /vui/components/Fieldset.vue: -------------------------------------------------------------------------------- 1 | 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 | 8 | 9 | -------------------------------------------------------------------------------- /vui/components/ButtonGroup.vue: -------------------------------------------------------------------------------- 1 | 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 | 9 | 10 | 23 | 24 | 27 | -------------------------------------------------------------------------------- /vui/components/Badge.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | -------------------------------------------------------------------------------- /vui/components/DropdownSelectOption.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 19 | 20 | -------------------------------------------------------------------------------- /vui/components/NavbarNav.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 29 | -------------------------------------------------------------------------------- /vui/components/CardHeader.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | -------------------------------------------------------------------------------- /vui/components/InputGroup.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 25 | 26 | 29 | -------------------------------------------------------------------------------- /vui/components/NavbarBrand.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | -------------------------------------------------------------------------------- /vui/components/Legend.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 15 | 16 | -------------------------------------------------------------------------------- /vui/components/InputGroupPrepend.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | 23 | 24 | 29 | -------------------------------------------------------------------------------- /vui/components/Textarea.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | -------------------------------------------------------------------------------- /vui/components/BreadcrumbItem.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | -------------------------------------------------------------------------------- /vui/components/Nav.vue: -------------------------------------------------------------------------------- 1 | 14 | 15 | -------------------------------------------------------------------------------- /vui/components/ProgressBar.vue: -------------------------------------------------------------------------------- 1 | 15 | 16 | -------------------------------------------------------------------------------- /vui/components/NavbarItemDropdown.vue: -------------------------------------------------------------------------------- 1 | 11 | 12 | 36 | 37 | 44 | -------------------------------------------------------------------------------- /vui/components/Callout.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 15 | 16 | 42 | -------------------------------------------------------------------------------- /vui/components/CardImage.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | 20 | 21 | 53 | -------------------------------------------------------------------------------- /vui/components/Icon.vue: -------------------------------------------------------------------------------- 1 | 11 | 12 | -------------------------------------------------------------------------------- /vui/components/ImgPlaceholder.vue: -------------------------------------------------------------------------------- 1 | 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 | 10 | 11 | 45 | 46 | 52 | -------------------------------------------------------------------------------- /vui/components/Alert.vue: -------------------------------------------------------------------------------- 1 | 14 | 15 | 52 | 53 | 60 | -------------------------------------------------------------------------------- /vui/components/TabsPanel.vue: -------------------------------------------------------------------------------- 1 | 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 | 17 | 18 | 51 | 52 | 63 | -------------------------------------------------------------------------------- /vui/components/Breadcrumb.vue: -------------------------------------------------------------------------------- 1 | 18 | 19 | 56 | 57 | 67 | -------------------------------------------------------------------------------- /vui/components/DropdownButtonSplit.vue: -------------------------------------------------------------------------------- 1 | 23 | 24 | -------------------------------------------------------------------------------- /vui/widgets/CodePanel.vue: -------------------------------------------------------------------------------- 1 | 18 | 19 | 36 | 37 | -------------------------------------------------------------------------------- /vui/components/DropdownSelect.vue: -------------------------------------------------------------------------------- 1 | 15 | 16 | 48 | 49 | 71 | -------------------------------------------------------------------------------- /vui/components/DropdownButton.vue: -------------------------------------------------------------------------------- 1 | 16 | 17 | 63 | 64 | 70 | -------------------------------------------------------------------------------- /vui/components/DropdownLink.vue: -------------------------------------------------------------------------------- 1 | 16 | 17 | -------------------------------------------------------------------------------- /vui/components/DropdownItem.vue: -------------------------------------------------------------------------------- 1 | 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 | 15 | 16 | 43 | 44 | 80 | -------------------------------------------------------------------------------- /vui/components/InputFile.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 60 | 61 | 84 | -------------------------------------------------------------------------------- /vui/components/NavbarItem.vue: -------------------------------------------------------------------------------- 1 | 19 | 20 | 42 | 43 | 86 | 87 | -------------------------------------------------------------------------------- /vui/components/NavItem.vue: -------------------------------------------------------------------------------- 1 | 38 | 39 | 69 | 70 | 95 | 96 | -------------------------------------------------------------------------------- /vui/components/InputFileButton.vue: -------------------------------------------------------------------------------- 1 | 17 | 18 | 70 | 71 | 94 | -------------------------------------------------------------------------------- /vui/components/ListGroupItem.vue: -------------------------------------------------------------------------------- 1 | 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 | 12 | 13 | 98 | 99 | 110 | -------------------------------------------------------------------------------- /vui/components/Radio.vue: -------------------------------------------------------------------------------- 1 | 21 | 22 | 51 | 52 | 101 | -------------------------------------------------------------------------------- /vui/components/Checkbox.vue: -------------------------------------------------------------------------------- 1 | 21 | 22 | 51 | 52 | 101 | -------------------------------------------------------------------------------- /vui/components/Modal.vue: -------------------------------------------------------------------------------- 1 | 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 | 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 | 199 | 200 | 393 | 394 | 651 | --------------------------------------------------------------------------------