Drew Short
6 years ago
21 changed files with 8721 additions and 0 deletions
-
4.gitignore
-
21administration_client/.gitignore
-
26administration_client/README.md
-
5administration_client/babel.config.js
-
81administration_client/package.json
-
BINadministration_client/public/favicon.ico
-
17administration_client/public/index.html
-
29administration_client/src/App.vue
-
BINadministration_client/src/assets/logo.png
-
59administration_client/src/components/HelloWorld.vue
-
12administration_client/src/main.ts
-
23administration_client/src/router.ts
-
13administration_client/src/shims-tsx.d.ts
-
4administration_client/src/shims-vue.d.ts
-
16administration_client/src/store.ts
-
5administration_client/src/views/About.vue
-
18administration_client/src/views/Home.vue
-
12administration_client/tests/unit/HelloWorld.spec.ts
-
40administration_client/tsconfig.json
-
19administration_client/tslint.json
-
8317administration_client/yarn.lock
@ -0,0 +1,21 @@ |
|||
.DS_Store |
|||
node_modules |
|||
/dist |
|||
|
|||
# local env files |
|||
.env.local |
|||
.env.*.local |
|||
|
|||
# Log files |
|||
npm-debug.log* |
|||
yarn-debug.log* |
|||
yarn-error.log* |
|||
|
|||
# Editor directories and files |
|||
.idea |
|||
.vscode |
|||
*.suo |
|||
*.ntvs* |
|||
*.njsproj |
|||
*.sln |
|||
*.sw* |
@ -0,0 +1,26 @@ |
|||
# administration_client |
|||
|
|||
## Project setup |
|||
``` |
|||
yarn install |
|||
``` |
|||
|
|||
### Compiles and hot-reloads for development |
|||
``` |
|||
yarn run serve |
|||
``` |
|||
|
|||
### Compiles and minifies for production |
|||
``` |
|||
yarn run build |
|||
``` |
|||
|
|||
### Lints and fixes files |
|||
``` |
|||
yarn run lint |
|||
``` |
|||
|
|||
### Run your unit tests |
|||
``` |
|||
yarn run test:unit |
|||
``` |
@ -0,0 +1,5 @@ |
|||
module.exports = { |
|||
presets: [ |
|||
'@vue/app' |
|||
] |
|||
} |
@ -0,0 +1,81 @@ |
|||
{ |
|||
"name": "administration_client", |
|||
"version": "0.1.0", |
|||
"private": true, |
|||
"scripts": { |
|||
"serve": "vue-cli-service serve", |
|||
"build": "vue-cli-service build", |
|||
"lint": "vue-cli-service lint", |
|||
"test:unit": "vue-cli-service test:unit" |
|||
}, |
|||
"dependencies": { |
|||
"vue": "^2.5.17", |
|||
"vue-class-component": "^6.0.0", |
|||
"vue-property-decorator": "^7.0.0", |
|||
"vue-router": "^3.0.1", |
|||
"vuex": "^3.0.1" |
|||
}, |
|||
"devDependencies": { |
|||
"@types/jest": "^23.1.4", |
|||
"@vue/cli-plugin-babel": "^3.0.1", |
|||
"@vue/cli-plugin-typescript": "^3.0.1", |
|||
"@vue/cli-plugin-unit-jest": "^3.0.1", |
|||
"@vue/cli-service": "^3.0.1", |
|||
"@vue/test-utils": "^1.0.0-beta.20", |
|||
"babel-core": "7.0.0-bridge.0", |
|||
"lint-staged": "^7.2.2", |
|||
"node-sass": "^4.9.0", |
|||
"sass-loader": "^7.0.1", |
|||
"ts-jest": "^23.0.0", |
|||
"typescript": "^3.0.0", |
|||
"vue-template-compiler": "^2.5.17" |
|||
}, |
|||
"postcss": { |
|||
"plugins": { |
|||
"autoprefixer": {} |
|||
} |
|||
}, |
|||
"browserslist": [ |
|||
"> 1%", |
|||
"last 2 versions", |
|||
"not ie <= 8" |
|||
], |
|||
"jest": { |
|||
"moduleFileExtensions": [ |
|||
"js", |
|||
"jsx", |
|||
"json", |
|||
"vue", |
|||
"ts", |
|||
"tsx" |
|||
], |
|||
"transform": { |
|||
"^.+\\.vue$": "vue-jest", |
|||
".+\\.(css|styl|less|sass|scss|png|jpg|ttf|woff|woff2)$": "jest-transform-stub", |
|||
"^.+\\.tsx?$": "ts-jest" |
|||
}, |
|||
"moduleNameMapper": { |
|||
"^@/(.*)$": "<rootDir>/src/$1" |
|||
}, |
|||
"snapshotSerializers": [ |
|||
"jest-serializer-vue" |
|||
], |
|||
"testMatch": [ |
|||
"**/tests/unit/**/*.spec.(js|jsx|ts|tsx)|**/__tests__/*.(js|jsx|ts|tsx)" |
|||
], |
|||
"testURL": "http://localhost/" |
|||
}, |
|||
"gitHooks": { |
|||
"pre-commit": "lint-staged" |
|||
}, |
|||
"lint-staged": { |
|||
"*.ts": [ |
|||
"vue-cli-service lint", |
|||
"git add" |
|||
], |
|||
"*.vue": [ |
|||
"vue-cli-service lint", |
|||
"git add" |
|||
] |
|||
} |
|||
} |
@ -0,0 +1,17 @@ |
|||
<!DOCTYPE html> |
|||
<html lang="en"> |
|||
<head> |
|||
<meta charset="utf-8"> |
|||
<meta http-equiv="X-UA-Compatible" content="IE=edge"> |
|||
<meta name="viewport" content="width=device-width,initial-scale=1.0"> |
|||
<link rel="icon" href="<%= BASE_URL %>favicon.ico"> |
|||
<title>administration_client</title> |
|||
</head> |
|||
<body> |
|||
<noscript> |
|||
<strong>We're sorry but administration_client doesn't work properly without JavaScript enabled. Please enable it to continue.</strong> |
|||
</noscript> |
|||
<div id="app"></div> |
|||
<!-- built files will be auto injected --> |
|||
</body> |
|||
</html> |
@ -0,0 +1,29 @@ |
|||
<template> |
|||
<div id="app"> |
|||
<div id="nav"> |
|||
<router-link to="/">Home</router-link> | |
|||
<router-link to="/about">About</router-link> |
|||
</div> |
|||
<router-view/> |
|||
</div> |
|||
</template> |
|||
|
|||
<style lang="scss"> |
|||
#app { |
|||
font-family: 'Avenir', Helvetica, Arial, sans-serif; |
|||
-webkit-font-smoothing: antialiased; |
|||
-moz-osx-font-smoothing: grayscale; |
|||
text-align: center; |
|||
color: #2c3e50; |
|||
} |
|||
#nav { |
|||
padding: 30px; |
|||
a { |
|||
font-weight: bold; |
|||
color: #2c3e50; |
|||
&.router-link-exact-active { |
|||
color: #42b983; |
|||
} |
|||
} |
|||
} |
|||
</style> |
After Width: 200 | Height: 200 | Size: 6.7 KiB |
@ -0,0 +1,59 @@ |
|||
<template> |
|||
<div class="hello"> |
|||
<h1>{{ msg }}</h1> |
|||
<p> |
|||
For guide and recipes on how to configure / customize this project,<br> |
|||
check out the |
|||
<a href="https://cli.vuejs.org" target="_blank" rel="noopener">vue-cli documentation</a>. |
|||
</p> |
|||
<h3>Installed CLI Plugins</h3> |
|||
<ul> |
|||
<li><a href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-babel" target="_blank" rel="noopener">babel</a></li> |
|||
<li><a href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-typescript" target="_blank" rel="noopener">typescript</a></li> |
|||
<li><a href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-unit-jest" target="_blank" rel="noopener">unit-jest</a></li> |
|||
</ul> |
|||
<h3>Essential Links</h3> |
|||
<ul> |
|||
<li><a href="https://vuejs.org" target="_blank" rel="noopener">Core Docs</a></li> |
|||
<li><a href="https://forum.vuejs.org" target="_blank" rel="noopener">Forum</a></li> |
|||
<li><a href="https://chat.vuejs.org" target="_blank" rel="noopener">Community Chat</a></li> |
|||
<li><a href="https://twitter.com/vuejs" target="_blank" rel="noopener">Twitter</a></li> |
|||
<li><a href="https://news.vuejs.org" target="_blank" rel="noopener">News</a></li> |
|||
</ul> |
|||
<h3>Ecosystem</h3> |
|||
<ul> |
|||
<li><a href="https://router.vuejs.org" target="_blank" rel="noopener">vue-router</a></li> |
|||
<li><a href="https://vuex.vuejs.org" target="_blank" rel="noopener">vuex</a></li> |
|||
<li><a href="https://github.com/vuejs/vue-devtools#vue-devtools" target="_blank" rel="noopener">vue-devtools</a></li> |
|||
<li><a href="https://vue-loader.vuejs.org" target="_blank" rel="noopener">vue-loader</a></li> |
|||
<li><a href="https://github.com/vuejs/awesome-vue" target="_blank" rel="noopener">awesome-vue</a></li> |
|||
</ul> |
|||
</div> |
|||
</template> |
|||
|
|||
<script lang="ts"> |
|||
import { Component, Prop, Vue } from 'vue-property-decorator'; |
|||
|
|||
@Component |
|||
export default class HelloWorld extends Vue { |
|||
@Prop() private msg!: string; |
|||
} |
|||
</script> |
|||
|
|||
<!-- Add "scoped" attribute to limit CSS to this component only --> |
|||
<style scoped lang="scss"> |
|||
h3 { |
|||
margin: 40px 0 0; |
|||
} |
|||
ul { |
|||
list-style-type: none; |
|||
padding: 0; |
|||
} |
|||
li { |
|||
display: inline-block; |
|||
margin: 0 10px; |
|||
} |
|||
a { |
|||
color: #42b983; |
|||
} |
|||
</style> |
@ -0,0 +1,12 @@ |
|||
import Vue from 'vue'; |
|||
import App from './App.vue'; |
|||
import router from './router'; |
|||
import store from './store'; |
|||
|
|||
Vue.config.productionTip = false; |
|||
|
|||
new Vue({ |
|||
router, |
|||
store, |
|||
render: (h) => h(App), |
|||
}).$mount('#app'); |
@ -0,0 +1,23 @@ |
|||
import Vue from 'vue'; |
|||
import Router from 'vue-router'; |
|||
import Home from './views/Home.vue'; |
|||
|
|||
Vue.use(Router); |
|||
|
|||
export default new Router({ |
|||
routes: [ |
|||
{ |
|||
path: '/', |
|||
name: 'home', |
|||
component: Home, |
|||
}, |
|||
{ |
|||
path: '/about', |
|||
name: 'about', |
|||
// route level code-splitting
|
|||
// this generates a separate chunk (about.[hash].js) for this route
|
|||
// which is lazy-loaded when the route is visited.
|
|||
component: () => import(/* webpackChunkName: "about" */ './views/About.vue'), |
|||
}, |
|||
], |
|||
}); |
@ -0,0 +1,13 @@ |
|||
import Vue, { VNode } from 'vue'; |
|||
|
|||
declare global { |
|||
namespace JSX { |
|||
// tslint:disable no-empty-interface
|
|||
interface Element extends VNode {} |
|||
// tslint:disable no-empty-interface
|
|||
interface ElementClass extends Vue {} |
|||
interface IntrinsicElements { |
|||
[elem: string]: any; |
|||
} |
|||
} |
|||
} |
@ -0,0 +1,4 @@ |
|||
declare module '*.vue' { |
|||
import Vue from 'vue'; |
|||
export default Vue; |
|||
} |
@ -0,0 +1,16 @@ |
|||
import Vue from 'vue'; |
|||
import Vuex from 'vuex'; |
|||
|
|||
Vue.use(Vuex); |
|||
|
|||
export default new Vuex.Store({ |
|||
state: { |
|||
|
|||
}, |
|||
mutations: { |
|||
|
|||
}, |
|||
actions: { |
|||
|
|||
}, |
|||
}); |
@ -0,0 +1,5 @@ |
|||
<template> |
|||
<div class="about"> |
|||
<h1>This is an about page</h1> |
|||
</div> |
|||
</template> |
@ -0,0 +1,18 @@ |
|||
<template> |
|||
<div class="home"> |
|||
<img alt="Vue logo" src="../assets/logo.png"> |
|||
<HelloWorld msg="Welcome to Your Vue.js + TypeScript App"/> |
|||
</div> |
|||
</template> |
|||
|
|||
<script lang="ts"> |
|||
import { Component, Vue } from 'vue-property-decorator'; |
|||
import HelloWorld from '@/components/HelloWorld.vue'; // @ is an alias to /src |
|||
|
|||
@Component({ |
|||
components: { |
|||
HelloWorld, |
|||
}, |
|||
}) |
|||
export default class Home extends Vue {} |
|||
</script> |
@ -0,0 +1,12 @@ |
|||
import { shallowMount } from '@vue/test-utils'; |
|||
import HelloWorld from '@/components/HelloWorld.vue'; |
|||
|
|||
describe('HelloWorld.vue', () => { |
|||
it('renders props.msg when passed', () => { |
|||
const msg = 'new message'; |
|||
const wrapper = shallowMount(HelloWorld, { |
|||
propsData: { msg }, |
|||
}); |
|||
expect(wrapper.text()).toMatch(msg); |
|||
}); |
|||
}); |
@ -0,0 +1,40 @@ |
|||
{ |
|||
"compilerOptions": { |
|||
"target": "esnext", |
|||
"module": "esnext", |
|||
"strict": true, |
|||
"jsx": "preserve", |
|||
"importHelpers": true, |
|||
"moduleResolution": "node", |
|||
"experimentalDecorators": true, |
|||
"esModuleInterop": true, |
|||
"allowSyntheticDefaultImports": true, |
|||
"sourceMap": true, |
|||
"baseUrl": ".", |
|||
"types": [ |
|||
"node", |
|||
"jest" |
|||
], |
|||
"paths": { |
|||
"@/*": [ |
|||
"src/*" |
|||
] |
|||
}, |
|||
"lib": [ |
|||
"esnext", |
|||
"dom", |
|||
"dom.iterable", |
|||
"scripthost" |
|||
] |
|||
}, |
|||
"include": [ |
|||
"src/**/*.ts", |
|||
"src/**/*.tsx", |
|||
"src/**/*.vue", |
|||
"tests/**/*.ts", |
|||
"tests/**/*.tsx" |
|||
], |
|||
"exclude": [ |
|||
"node_modules" |
|||
] |
|||
} |
@ -0,0 +1,19 @@ |
|||
{ |
|||
"defaultSeverity": "warning", |
|||
"extends": [ |
|||
"tslint:recommended" |
|||
], |
|||
"linterOptions": { |
|||
"exclude": [ |
|||
"node_modules/**" |
|||
] |
|||
}, |
|||
"rules": { |
|||
"quotemark": [true, "single"], |
|||
"indent": [true, "spaces", 2], |
|||
"interface-name": false, |
|||
"ordered-imports": false, |
|||
"object-literal-sort-keys": false, |
|||
"no-consecutive-blank-lines": false |
|||
} |
|||
} |
8317
administration_client/yarn.lock
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
Reference in new issue
xxxxxxxxxx