123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252 |
- <template lang='pug'>
- v-dialog(
- v-model='isShown'
- persistent
- lazy
- width='1100'
- :fullscreen='$vuetify.breakpoint.smAndDown'
- )
- .dialog-header
- v-icon(color='white') sort_by_alpha
- .subheading.white--text.ml-2 {{$t('editor:props.pageProperties')}}
- v-spacer
- v-btn.mx-0(
- outline
- dark
- @click.native='close'
- )
- v-icon(left) check
- span {{ $t('common:actions.ok') }}
- v-card.wiki-form(tile)
- v-card-text
- v-subheader.pl-0 {{$t('editor:props.pageInfo')}}
- v-text-field(
- ref='iptTitle'
- outline
- background-color='grey lighten-2'
- :label='$t(`editor:props.title`)'
- counter='255'
- v-model='title'
- )
- v-text-field(
- outline
- background-color='grey lighten-2'
- :label='$t(`editor:props.shortDescription`)'
- counter='255'
- v-model='description'
- persistent-hint
- :hint='$t(`editor:props.shortDescriptionHint`)'
- )
- v-divider
- v-card-text.grey(:class='darkMode ? `darken-3-d3` : `lighten-5`')
- v-subheader.pl-0 {{$t('editor:props.pathCategorization')}}
- v-container.pa-0(fluid, grid-list-lg)
- v-layout(row, wrap)
- v-flex(xs12, md2)
- v-select(
- outline
- background-color='grey lighten-2'
- :label='$t(`editor:props.locale`)'
- suffix='/'
- :items='namespaces'
- v-model='locale'
- hide-details
- :disabled='mode !== "create"'
- )
- v-flex(xs12, md10)
- v-text-field(
- outline
- background-color='grey lighten-2'
- :label='$t(`editor:props.path`)'
- append-icon='folder'
- v-model='path'
- :hint='$t(`editor:props.pathHint`)'
- persistent-hint
- @click:append='showPathSelector'
- :disabled='mode !== "create"'
- )
- v-combobox(
- background-color='grey lighten-2'
- chips
- deletable-chips
- :label='$t(`editor:props.tags`)'
- outline
- multiple
- v-model='tags'
- single-line
- :hint='$t(`editor:props.tagsHint`)'
- persistent-hint
- )
- v-divider
- v-card-text.pb-5.grey(:class='darkMode ? `darken-3-d5` : `lighten-4`')
- v-subheader.pl-0 {{$t('editor:props.publishState')}}
- v-container.pa-0(fluid, grid-list-lg)
- v-layout(row, wrap)
- v-flex(xs12, md4)
- v-switch(
- :label='$t(`editor:props.publishToggle`)'
- v-model='isPublished'
- color='primary'
- :hint='$t(`editor:props.publishToggleHint`)'
- persistent-hint
- )
- v-flex(xs12, md4)
- v-dialog(
- ref='menuPublishStart'
- lazy
- :close-on-content-click='false'
- v-model='isPublishStartShown'
- :return-value.sync='publishStartDate'
- full-width
- width='460px'
- :disabled='!isPublished'
- )
- v-text-field(
- slot='activator'
- :label='$t(`editor:props.publishStart`)'
- v-model='publishStartDate'
- prepend-icon='event'
- readonly
- outline
- background-color='grey lighten-2'
- clearable
- :hint='$t(`editor:props.publishStartHint`)'
- persistent-hint
- :disabled='!isPublished'
- )
- v-date-picker(
- v-model='publishStartDate'
- :min='(new Date()).toISOString().substring(0, 10)'
- color='primary'
- reactive
- scrollable
- landscape
- )
- v-spacer
- v-btn(
- flat=''
- color='primary'
- @click='isPublishStartShown = false'
- ) {{$t('common:actions.cancel')}}
- v-btn(
- flat=''
- color='primary'
- @click='$refs.menuPublishStart.save(publishStartDate)'
- ) {{$t('common:actions.ok')}}
- v-flex(xs12, md4)
- v-dialog(
- ref='menuPublishEnd'
- lazy
- :close-on-content-click='false'
- v-model='isPublishEndShown'
- :return-value.sync='publishEndDate'
- full-width
- width='460px'
- :disabled='!isPublished'
- )
- v-text-field(
- slot='activator'
- :label='$t(`editor:props.publishEnd`)'
- v-model='publishEndDate'
- prepend-icon='event'
- readonly
- outline
- background-color='grey lighten-2'
- clearable
- :hint='$t(`editor:props.publishEndHint`)'
- persistent-hint
- :disabled='!isPublished'
- )
- v-date-picker(
- v-model='publishEndDate'
- :min='(new Date()).toISOString().substring(0, 10)'
- color='primary'
- reactive
- scrollable
- landscape
- )
- v-spacer
- v-btn(
- flat=''
- color='primary'
- @click='isPublishEndShown = false'
- ) {{$t('common:actions.cancel')}}
- v-btn(
- flat=''
- color='primary'
- @click='$refs.menuPublishEnd.save(publishEndDate)'
- ) {{$t('common:actions.ok')}}
- page-selector(mode='create', v-model='pageSelectorShown', :path='path', :locale='locale', :open-handler='setPath')
- v-tour(name='editorPropertiesTour', :steps='tourSteps')
- </template>
- <script>
- import _ from 'lodash'
- import { sync, get } from 'vuex-pathify'
- export default {
- props: {
- value: {
- type: Boolean,
- default: false
- }
- },
- data() {
- return {
- isPublishStartShown: false,
- isPublishEndShown: false,
- pageSelectorShown: false,
- namespaces: ['en'],
- tourSteps: [
- {
- target: '.dialog-header',
- content: `First-time tour help here. <strong>TODO</strong>!`
- }
- ]
- }
- },
- computed: {
- isShown: {
- get() { return this.value },
- set(val) { this.$emit('input', val) }
- },
- darkMode: get('site/dark'),
- mode: get('editor/mode'),
- title: sync('page/title'),
- description: sync('page/description'),
- locale: sync('page/locale'),
- tags: sync('page/tags'),
- path: sync('page/path'),
- isPublished: sync('page/isPublished'),
- publishStartDate: sync('page/publishStartDate'),
- publishEndDate: sync('page/publishEndDate')
- },
- watch: {
- value(newValue, oldValue) {
- if (newValue) {
- _.delay(() => {
- this.$refs.iptTitle.focus()
- // this.$tours['editorPropertiesTour'].start()
- }, 500)
- }
- }
- },
- methods: {
- close() {
- this.isShown = false
- },
- showPathSelector() {
- this.pageSelectorShown = true
- },
- setPath({ path, locale }) {
- this.locale = locale
- this.path = path
- }
- }
- }
- </script>
- <style lang='scss'>
- </style>
|