TableEditorOverlay.vue 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. <template lang="pug">
  2. q-layout(view='hHh lpR fFf', container)
  3. q-header.card-header.q-px-md.q-py-sm
  4. q-icon(name='img:/_assets/icons/color-data-grid.svg', left, size='md')
  5. span {{t(`editor.tableEditor.title`)}}
  6. q-space
  7. q-btn.q-mr-sm(
  8. flat
  9. rounded
  10. color='white'
  11. :aria-label='t(`common.actions.refresh`)'
  12. icon='las la-question-circle'
  13. :href='siteStore.docsBase + `/admin/editors/markdown`'
  14. target='_blank'
  15. type='a'
  16. )
  17. q-btn-group(push)
  18. q-btn(
  19. push
  20. color='white'
  21. text-color='grey-7'
  22. :label='t(`common.actions.cancel`)'
  23. :aria-label='t(`common.actions.cancel`)'
  24. icon='las la-times'
  25. @click='close'
  26. )
  27. q-btn(
  28. push
  29. color='positive'
  30. text-color='white'
  31. :label='t(`common.actions.save`)'
  32. :aria-label='t(`common.actions.save`)'
  33. icon='las la-check'
  34. :disabled='state.loading > 0'
  35. )
  36. q-page-container
  37. q-page.q-pa-md
  38. div(ref='tblRef')
  39. q-inner-loading(:showing='state.loading > 0')
  40. q-spinner(color='accent', size='lg')
  41. </template>
  42. <script setup>
  43. import { useI18n } from 'vue-i18n'
  44. import { useQuasar } from 'quasar'
  45. import { onMounted, reactive, ref } from 'vue'
  46. import { Tabulator } from 'tabulator-tables'
  47. import gql from 'graphql-tag'
  48. import { cloneDeep } from 'lodash-es'
  49. import { useSiteStore } from 'src/stores/site'
  50. import 'tabulator-tables/dist/css/tabulator.css'
  51. // QUASAR
  52. const $q = useQuasar()
  53. // STORES
  54. const siteStore = useSiteStore()
  55. // I18N
  56. const { t } = useI18n()
  57. // DATA
  58. const state = reactive({
  59. loading: 0
  60. })
  61. const tblRef = ref(null)
  62. // METHODS
  63. function close () {
  64. siteStore.$patch({ overlay: '' })
  65. }
  66. onMounted(() => {
  67. const tbl = new Tabulator(tblRef.value, {
  68. clipboard: true,
  69. height: '100%'
  70. })
  71. })
  72. </script>