refactor: client-side optimizations + lazy-loading
This commit is contained in:
		| @@ -1,93 +0,0 @@ | ||||
| <template lang="pug"> | ||||
|   .modal(v-bind:class='{ "is-active": isShown }') | ||||
|     .modal-background | ||||
|     .modal-container | ||||
|       .modal-content | ||||
|         header.is-blue | ||||
|           span Create / Authorize User | ||||
|           p.modal-notify(v-bind:class='{ "is-active": loading }'): i | ||||
|         section | ||||
|           label.label Email address: | ||||
|           p.control.is-fullwidth | ||||
|             input.input(type='text', placeholder='e.g. john.doe@company.com', v-model='email', autofocus) | ||||
|         section | ||||
|           label.label Provider: | ||||
|           p.control.is-fullwidth | ||||
|             select(v-model='provider') | ||||
|               option(value='local') Local Database | ||||
|               option(value='windowslive') Microsoft Account | ||||
|               option(value='google') Google ID | ||||
|               option(value='facebook') Facebook | ||||
|               option(value='github') GitHub | ||||
|               option(value='slack') Slack | ||||
|         section(v-if='provider=="local"') | ||||
|           label.label Password: | ||||
|           p.control.is-fullwidth | ||||
|             input.input(type='password', placeholder='', v-model='password') | ||||
|         section(v-if='provider=="local"') | ||||
|           label.label Full Name: | ||||
|           p.control.is-fullwidth | ||||
|             input.input(type='text', placeholder='e.g. John Doe', v-model='name') | ||||
|         footer | ||||
|           a.button.is-grey.is-outlined(v-on:click='cancel') Discard | ||||
|           a.button(v-on:click='create', v-if='provider=="local"', v-bind:disabled='loading', v-bind:class='{ "is-disabled": loading, "is-blue": !loading }') Create User | ||||
|           a.button(v-on:click='create', v-if='provider!="local"', v-bind:disabled='loading', v-bind:class='{ "is-disabled": loading, "is-blue": !loading }') Authorize User | ||||
| </template> | ||||
|  | ||||
| <script> | ||||
|   export default { | ||||
|     name: 'admin-users-create', | ||||
|     data () { | ||||
|       return { | ||||
|         email: '', | ||||
|         provider: 'local', | ||||
|         password: '', | ||||
|         name: '', | ||||
|         loading: false | ||||
|       } | ||||
|     }, | ||||
|     computed: { | ||||
|       isShown () { | ||||
|         return this.$store.state.adminUsersCreate.shown | ||||
|       } | ||||
|     }, | ||||
|     methods: { | ||||
|       cancel () { | ||||
|         this.$store.dispatch('adminUsersCreateClose') | ||||
|         this.email = '' | ||||
|         this.provider = 'local' | ||||
|       }, | ||||
|       create () { | ||||
|         let self = this | ||||
|         this.loading = true | ||||
|         this.$http.post('/admin/users/create', { | ||||
|           email: this.email, | ||||
|           provider: this.provider, | ||||
|           password: this.password, | ||||
|           name: this.name | ||||
|         }).then(resp => { | ||||
|           return resp.json() | ||||
|         }).then(resp => { | ||||
|           this.loading = false | ||||
|           if (resp.ok) { | ||||
|             this.cancel() | ||||
|             window.location.reload(true) | ||||
|           } else { | ||||
|             self.$store.dispatch('alert', { | ||||
|               style: 'red', | ||||
|               icon: 'square-cross', | ||||
|               msg: resp.msg | ||||
|             }) | ||||
|           } | ||||
|         }).catch(err => { | ||||
|           this.loading = false | ||||
|           self.$store.dispatch('alert', { | ||||
|             style: 'red', | ||||
|             icon: 'square-cross', | ||||
|             msg: 'Error: ' + err.body.msg | ||||
|           }) | ||||
|         }) | ||||
|       } | ||||
|     } | ||||
|   } | ||||
| </script> | ||||
| @@ -1,54 +0,0 @@ | ||||
| <template lang="pug"> | ||||
|   .modal(v-if='isShown') | ||||
|     .modal-background | ||||
|     .modal-container | ||||
|       .modal-content | ||||
|         header.is-light-blue Create New Document | ||||
|         section | ||||
|           label.label Enter the new document path: | ||||
|           p.control.is-fullwidth(v-class='{ "is-loading": isLoading }') | ||||
|             input.input(type='text', placeholder='page-name', v-model='entrypath', autofocus) | ||||
|             span.help.is-danger(v-show='isInvalid') This document path is invalid! | ||||
|         footer | ||||
|           a.button.is-grey.is-outlined(v-on:click='hide') Discard | ||||
|           a.button.is-light-blue(v-on:click='create') Create | ||||
| </template> | ||||
|  | ||||
| <script> | ||||
|   import * as _ from 'lodash' | ||||
|   import { makeSafePath } from '../helpers/pages' | ||||
|  | ||||
|   export default { | ||||
|     name: 'modal-create', | ||||
|     data () { | ||||
|       return { | ||||
|         entrypath: '' | ||||
|         isInvalid: false, | ||||
|         isLoading: false, | ||||
|         isShown: false | ||||
|       } | ||||
|     }, | ||||
|     methods: { | ||||
|       show: function () { | ||||
|         this.isInvalid = false | ||||
|         this.shown = true | ||||
|       }, | ||||
|       hide: function () { | ||||
|         this.shown = false | ||||
|       }, | ||||
|       create: function () { | ||||
|         this.isInvalid = false | ||||
|         let newDocPath = makeSafePath(this.entrypath) | ||||
|         if (_.isEmpty(newDocPath)) { | ||||
|           this.isInvalid = true | ||||
|         } else { | ||||
|           $('#txt-create-prompt').parent().addClass('is-loading') | ||||
|           window.location.assign('/create/' + newDocPath) | ||||
|         } | ||||
|       } | ||||
|     }, | ||||
|     mounted () { | ||||
|       this.entrypath = currentBasePath + '/new-page' | ||||
|     } | ||||
|   } | ||||
| </script> | ||||
		Reference in New Issue
	
	Block a user