| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251 | <template lang='pug'>  v-dialog(    v-model='isShown'    persistent    lazy    width='1100'    )    .dialog-header      v-icon(color='white') sort_by_alpha      .subheading.white--text.ml-2 Page Properties      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 Page Info        v-text-field(          ref='iptTitle'          outline          background-color='grey lighten-2'          label='Title'          counter='255'          v-model='title'          )        v-text-field(          outline          background-color='grey lighten-2'          label='Short Description'          counter='255'          v-model='description'          persistent-hint          hint='Shown below the title'          )      v-divider      v-card-text.grey(:class='darkMode ? `darken-3-d3` : `lighten-5`')        v-subheader.pl-0 Path & Categorization        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='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='Path'                append-icon='folder'                v-model='path'                hint='Do not include any leading or trailing slashes.'                persistent-hint                @click:append='showPathSelector'                :disabled='mode !== "create"'                )        v-combobox(          background-color='grey lighten-2'          chips          deletable-chips          label='Tags'          outline          multiple          v-model='tags'          single-line          hint='Use tags to categorize your pages and make them easier to find.'          persistent-hint          )      v-divider      v-card-text.pb-5.grey(:class='darkMode ? `darken-3-d5` : `lighten-4`')        v-subheader.pl-0 Publishing State        v-container.pa-0(fluid, grid-list-lg)          v-layout(row, wrap)            v-flex(xs12, md4)              v-switch(                label='Published'                v-model='isPublished'                color='primary'                hint='Unpublished pages can still be seen by users having write permissions on this page.'                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='Publish starting on...'                  v-model='publishStartDate'                  prepend-icon='event'                  readonly                  outline                  background-color='grey lighten-2'                  clearable                  hint='Leave empty for no start date'                  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'                    ) Cancel                  v-btn(                    flat=''                    color='primary'                    @click='$refs.menuPublishStart.save(publishStartDate)'                    ) 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='Publish ending on...'                  v-model='publishEndDate'                  prepend-icon='event'                  readonly                  outline                  background-color='grey lighten-2'                  clearable                  hint='Leave empty for no end date'                  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'                    ) Cancel                  v-btn(                    flat=''                    color='primary'                    @click='$refs.menuPublishEnd.save(publishEndDate)'                    ) 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>
 |