2 |
3 |
8 | A mostly renderless Vue UI component and utility library. 9 |
10 | 11 | ## Introduction 12 | 13 | Banshee is a component library for Vue which seeks to only provide the JavaScript functionality and leaves the HTML markup and styling to you. It ships with no CSS and minimal to no HTML in all components. 14 | 15 | Banshee allows you to focus on building custom applications the way you want them to look without having to conform to another library's design specs. Gain complete control on how you build Vue applications. 16 | 17 | **NOTE: Banshee is under active development and should not be used in a production environment. Expect API changes before Beta release.** 18 | 19 | ## Installation 20 | 21 | ```bash 22 | npm install --save banshee-ui 23 | ``` 24 | 25 | ## Documentation 26 | 27 | You can find the official documentation for Banshee [here](https://banshee-ui.github.io/docs/). 28 | 29 | -------------------------------------------------------------------------------- /src/components/ErrorBoundary/src/ErrorBoundary.vue: -------------------------------------------------------------------------------- 1 | 44 | -------------------------------------------------------------------------------- /src/components/Tabs/src/TabList.vue: -------------------------------------------------------------------------------- 1 | 46 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 Dillon Chanis 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /src/components/Listbox/src/ListboxItem.vue: -------------------------------------------------------------------------------- 1 | 54 | -------------------------------------------------------------------------------- /src/components/Expandable/src/ExpandableTitle.vue: -------------------------------------------------------------------------------- 1 | 58 | -------------------------------------------------------------------------------- /src/components/Tabs/src/Tabs.vue: -------------------------------------------------------------------------------- 1 | 58 | -------------------------------------------------------------------------------- /src/components/Tabs/src/Tab.vue: -------------------------------------------------------------------------------- 1 | 65 | -------------------------------------------------------------------------------- /src/components/MediaQuery/src/MediaQuery.vue: -------------------------------------------------------------------------------- 1 | 70 | -------------------------------------------------------------------------------- /src/components/Toggle/src/Toggle.vue: -------------------------------------------------------------------------------- 1 | 82 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "banshee-ui", 3 | "description": "A mostly renderless Vue UI component and utility library.", 4 | "version": "0.0.2", 5 | "license": "MIT", 6 | "author": { 7 | "name": "Dillon Chanis", 8 | "email": "dillonchanis92@gmail.com" 9 | }, 10 | "repository": "banshee-ui/banshee", 11 | "main": "dist/BansheeUI.umd.js", 12 | "module": "dist/BansheeUI.common.js", 13 | "unpkg": "dist/BansheeUI.umd.min.js", 14 | "scripts": { 15 | "serve": "vue-cli-service serve playground/main.js", 16 | "build": "vue-cli-service build", 17 | "test": "vue-cli-service test:unit", 18 | "e2e": "vue-cli-service e2e", 19 | "lint": "vue-cli-service lint", 20 | "e2e:open": "vue-cli-service e2e:open", 21 | "package": "vue-cli-service build --target lib --name BansheeUI src/index.js" 22 | }, 23 | "dependencies": { 24 | "vue": "^2.5.16" 25 | }, 26 | "devDependencies": { 27 | "@cypress/webpack-preprocessor": "^3.0.0", 28 | "@vue/cli-plugin-babel": "^3.0.4", 29 | "@vue/cli-plugin-e2e-cypress": "^3.0.4", 30 | "@vue/cli-plugin-eslint": "^3.0.4", 31 | "@vue/cli-plugin-unit-jest": "^3.0.4", 32 | "@vue/cli-service": "^3.0.4", 33 | "@vue/eslint-config-standard": "^3.0.5", 34 | "@vue/test-utils": "^1.0.0-beta.20", 35 | "babel-core": "7.0.0-bridge.0", 36 | "babel-jest": "^23.0.1", 37 | "vue-template-compiler": "^2.5.17", 38 | "lint-staged": "^6.0.0" 39 | }, 40 | "browserslist": [ 41 | "> 1%", 42 | "last 2 versions", 43 | "not ie <= 8" 44 | ], 45 | "gitHooks": { 46 | "pre-commit": "lint-staged" 47 | }, 48 | "lint-staged": { 49 | "*.js": [ 50 | "vue-cli-service lint", 51 | "git add" 52 | ], 53 | "*.vue": [ 54 | "vue-cli-service lint", 55 | "git add" 56 | ] 57 | }, 58 | "keywords": [ 59 | "vue", 60 | "vuejs", 61 | "banshee", 62 | "banshee-ui", 63 | "component", 64 | "components", 65 | "vue-components", 66 | "renderless", 67 | "javascript" 68 | ] 69 | } 70 | -------------------------------------------------------------------------------- /tests/unit/SmartList.spec.js: -------------------------------------------------------------------------------- 1 | import { shallowMount } from '@vue/test-utils' 2 | import BansheeSmartList from '@/components/SmartList/src/SmartList.vue' 3 | 4 | describe('SmartList.vue', () => { 5 | it('renders props.items when passed', () => { 6 | const items = ['One', 'Two', 'Three'] 7 | 8 | const wrapper = shallowMount(BansheeSmartList, { 9 | propsData: { items }, 10 | scopedSlots: { 11 | default: ` 12 |{{ response.body }}
16 || Name | 60 |Faction | 61 |Gold | 62 |Lumber | 63 |Food | 64 |
|---|---|---|---|---|
| {{ unit.name }} | 69 |{{ unit.faction }} | 70 |{{ unit.gold }} | 71 |{{ unit.lumber }} | 72 |{{ unit.food }} | 73 |
81 | {{ result.monsters }}
82 |
83 | My favorite:
101 || Name | 97 |Faction | 98 |Gold | 99 |Lumber | 100 |Food | 101 |
|---|---|---|---|---|
| {{ unit.name }} | 106 |{{ unit.faction }} | 107 |{{ unit.gold }} | 108 |{{ unit.lumber }} | 109 |{{ unit.food }} | 110 |
some text Lorem ipsum dolor sit amet consectetur adipisicing elit. Ab, repudiandae ratione debitis blanditiis magni voluptates ex dolor nemo, ad quo odit quibusdam dicta inventore sunt necessitatibus impedit incidunt aliquam eligendi.
46 |
137 |
Panel 1. Lorem ipsum dolor.
165 |Panel 1. Lorem ipsum dolor.
187 |