@cortezaproject/corteza-vue 2021.9.6-dev.1.1 → 2021.9.6-dev.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/field/index.d.ts +2 -0
- package/dist/components/index.d.ts +1 -0
- package/dist/index.es.js +954 -332
- package/dist/index.es.js.map +1 -1
- package/dist/index.js +954 -332
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -22,6 +22,7 @@ var hps = _interopDefault(require('html-parse-stringify'));
|
|
|
22
22
|
var fontawesomeSvgCore = require('@fortawesome/fontawesome-svg-core');
|
|
23
23
|
var freeSolidSvgIcons = require('@fortawesome/free-solid-svg-icons');
|
|
24
24
|
var vuex = require('vuex');
|
|
25
|
+
var draggable = _interopDefault(require('vuedraggable'));
|
|
25
26
|
var pino = _interopDefault(require('pino'));
|
|
26
27
|
|
|
27
28
|
/* eslint-disable @typescript-eslint/ban-ts-ignore */
|
|
@@ -13954,11 +13955,11 @@ __vue_render__$1._withStripped = true;
|
|
|
13954
13955
|
/* style */
|
|
13955
13956
|
const __vue_inject_styles__$2 = function (inject) {
|
|
13956
13957
|
if (!inject) return
|
|
13957
|
-
inject("data-v-
|
|
13958
|
+
inject("data-v-2f92f970_0", { source: "div[data-v-2f92f970] {\n object-fit: contain;\n}\ndiv img.loaded[data-v-2f92f970] {\n width: auto;\n height: auto;\n display: block;\n}\ndiv.inline img[data-v-2f92f970] {\n cursor: zoom-in;\n}\n\n/*# sourceMappingURL=InlineIMG.vue.map */", map: {"version":3,"sources":["/home/fajfa/Kendu/Corteza/packages/corteza-vue/src/components/filePreview/common/types/IMG/InlineIMG.vue","InlineIMG.vue"],"names":[],"mappings":"AAiFA;EACA,mBAAA;AChFA;ADkFA;EACA,WAAA;EACA,YAAA;EACA,cAAA;AChFA;ADoFA;EACA,eAAA;AClFA;;AAEA,wCAAwC","file":"InlineIMG.vue","sourcesContent":["<template>\n <div class=\"inline\">\n <img\n ref=\"image\"\n :key=\"src\"\n :src=\"src\"\n :title=\"title\"\n :alt=\"alt\"\n :class=\"getClass\"\n :style=\"previewStyle\"\n :width=\"getWidth\"\n :height=\"getHeight\"\n @click=\"$emit('openPreview', {})\"\n @error.once=\"reloadBrokenImage\"\n @load=\"loaded=true\"\n >\n </div>\n</template>\n\n<script lang=\"js\">\nimport base from '../base.vue'\n\nexport default {\n extends: base,\n\n props: {\n alt: {\n required: false,\n type: String,\n default: null,\n },\n title: {\n required: false,\n type: String,\n default: null,\n },\n },\n\n data () {\n return {\n loaded: false,\n }\n },\n\n computed: {\n getClass () {\n const rtr = [...this.previewClass]\n if (this.$listeners.click) {\n rtr.push('clickable')\n }\n if (this.loaded) {\n rtr.push('loaded')\n }\n return rtr\n },\n\n getWidth () {\n return this.meta.preview.image.width\n },\n getHeight () {\n return this.meta.preview.image.height\n },\n },\n\n methods: {\n reloadBrokenImage (ev) {\n if (ev.target && ev.target.src) {\n window.setTimeout(() => {\n if (!ev.target && !ev.target.src) return\n\n // This forces Vue to re-try image download\n // eslint-disable-next-line\n ev.target.src = ev.target.src\n }, 500)\n }\n },\n },\n}\n</script>\n\n<style scoped lang=\"scss\">\ndiv {\n object-fit: contain;\n img {\n &.loaded {\n width: auto;\n height: auto;\n display: block;\n }\n }\n &.inline {\n img {\n cursor: zoom-in;\n }\n }\n}\n</style>\n","div {\n object-fit: contain;\n}\ndiv img.loaded {\n width: auto;\n height: auto;\n display: block;\n}\ndiv.inline img {\n cursor: zoom-in;\n}\n\n/*# sourceMappingURL=InlineIMG.vue.map */"]}, media: undefined });
|
|
13958
13959
|
|
|
13959
13960
|
};
|
|
13960
13961
|
/* scoped */
|
|
13961
|
-
const __vue_scope_id__$2 = "data-v-
|
|
13962
|
+
const __vue_scope_id__$2 = "data-v-2f92f970";
|
|
13962
13963
|
/* module identifier */
|
|
13963
13964
|
const __vue_module_identifier__$2 = undefined;
|
|
13964
13965
|
/* functional template */
|
|
@@ -14064,7 +14065,7 @@ __vue_render__$2._withStripped = true;
|
|
|
14064
14065
|
/* style */
|
|
14065
14066
|
const __vue_inject_styles__$3 = function (inject) {
|
|
14066
14067
|
if (!inject) return
|
|
14067
|
-
inject("data-v-
|
|
14068
|
+
inject("data-v-7c2a9272_0", { source: ".popup-img-preview .pswp {\n pointer-events: none;\n}\n.popup-img-preview .pswp .pswp__img {\n pointer-events: all;\n}\n.popup-img-preview .pswp__top-bar {\n display: none !important;\n}\n\n/*# sourceMappingURL=LightboxIMG.vue.map */", map: {"version":3,"sources":["/home/fajfa/Kendu/Corteza/packages/corteza-vue/src/components/filePreview/common/types/IMG/LightboxIMG.vue","LightboxIMG.vue"],"names":[],"mappings":"AAoEA;EACA,oBAAA;ACnEA;ADoEA;EACA,mBAAA;AClEA;ADqEA;EACA,wBAAA;ACnEA;;AAEA,0CAA0C","file":"LightboxIMG.vue","sourcesContent":["<template>\n <div class=\"popup-img-preview\">\n <photo-swipe\n :is-open=\"true\"\n :items=\"items\"\n :options=\"options\"\n @close=\"() => $emit('close')\"\n />\n </div>\n</template>\n\n<script lang=\"js\">\nimport { PhotoSwipe } from 'v-photoswipe'\nimport base from '../base.vue'\n\nexport default {\n components: {\n PhotoSwipe,\n },\n\n extends: base,\n\n data () {\n return {\n options: {\n index: 0,\n bgOpacity: 0,\n closeOnScroll: false,\n escKey: false,\n history: false,\n arrowKeys: false,\n modal: false,\n\n closeEl: false,\n captionEl: false,\n fullscreenEl: false,\n zoomEl: false,\n shareEl: false,\n counterEl: false,\n arrowEl: false,\n preloaderEl: false,\n\n clickToCloseNonZoomable: false,\n },\n }\n },\n\n computed: {\n items () {\n const { original, preview } = this.meta\n const image = (original || preview || {}).image\n if (!image) {\n this.$emit('close')\n return []\n }\n\n return [{\n src: this.src,\n w: image.width,\n h: image.height,\n }]\n },\n },\n}\n</script>\n\n<style lang=\"scss\">\n.popup-img-preview {\n .pswp {\n pointer-events: none;\n .pswp__img {\n pointer-events: all;\n }\n }\n .pswp__top-bar {\n display: none!important;\n }\n}\n</style>\n",".popup-img-preview .pswp {\n pointer-events: none;\n}\n.popup-img-preview .pswp .pswp__img {\n pointer-events: all;\n}\n.popup-img-preview .pswp__top-bar {\n display: none !important;\n}\n\n/*# sourceMappingURL=LightboxIMG.vue.map */"]}, media: undefined });
|
|
14068
14069
|
|
|
14069
14070
|
};
|
|
14070
14071
|
/* scoped */
|
|
@@ -70275,12 +70276,12 @@ __vue_render__$3._withStripped = true;
|
|
|
70275
70276
|
/* style */
|
|
70276
70277
|
const __vue_inject_styles__$4 = function (inject) {
|
|
70277
70278
|
if (!inject) return
|
|
70278
|
-
inject("data-v-
|
|
70279
|
-
,inject("data-v-66127e42_1", { source: ".pdf-preview {\n text-align: center;\n}\n.pdf-preview:not(.inline) {\n padding-top: 20px;\n padding-bottom: 20px;\n}\n.pdf-preview:not(.inline) canvas {\n box-shadow: 0 0 3px #1E1E1E41;\n}\n.pdf-preview.inline {\n height: 200px;\n overflow-y: scroll;\n display: inline-block;\n cursor: zoom-in;\n width: 100%;\n max-width: 500px;\n}\n.pdf-preview canvas {\n margin-bottom: 10px;\n}\n.pdf-preview canvas.inline {\n width: 100%;\n}\n.pdf-preview canvas:not(.inline) {\n margin: 0 auto 10px auto;\n display: block;\n}\n.pdf-preview canvas:last-of-type {\n margin-bottom: unset;\n}\n.pdf-preview .loader {\n margin-bottom: 10px;\n}\n\n/*# sourceMappingURL=PDF.vue.map */", map: {"version":3,"sources":["/Users/darh/dev/corteza/vue/src/components/filePreview/common/types/PDF/PDF.vue","PDF.vue"],"names":[],"mappings":"AA+TA;EACA,kBAAA;AC9TA;AD+TA;EACA,iBAAA;EACA,oBAAA;AC7TA;AD8TA;EACA,6BAAA;AC5TA;AD+TA;EACA,aAAA;EACA,kBAAA;EACA,qBAAA;EACA,eAAA;EACA,WAAA;EACA,gBAAA;AC7TA;ADgUA;EACA,mBAAA;AC9TA;AD+TA;EACA,WAAA;AC7TA;ADgUA;EACA,wBAAA;EACA,cAAA;AC9TA;ADiUA;EACA,oBAAA;AC/TA;ADmUA;EACA,mBAAA;ACjUA;;AAEA,kCAAkC","file":"PDF.vue","sourcesContent":["<template>\n <div\n :style=\"previewStyle\"\n :class=\"[...previewClass, 'pdf-preview', inline ? 'inline' : '', $listeners.click ? 'clickable' : '']\"\n @click=\"onPreviewClick\"\n >\n <!-- Container for pdf's pages -->\n <div\n v-show=\"show\"\n ref=\"pages\"\n class=\"pages\"\n />\n\n <div\n v-if=\"loadError\"\n class=\"doc-msg doc-err\"\n >\n <div>\n <h4 class=\"err-message\">\n {{ loadError.message }}\n </h4>\n <p v-if=\"labels.clickToRetry\">\n {{ labels.clickToRetry }}\n </p>\n </div>\n </div>\n <div\n v-else-if=\"!show && labels.loading\"\n class=\"doc-msg doc-err\"\n >\n <p>{{ labels.loading }}</p>\n </div>\n <div\n v-else-if=\"!pageCount && labels.noPages\"\n class=\"doc-msg doc-err\"\n >\n <p>{{ labels.noPages }}</p>\n </div>\n <template v-else>\n <div v-if=\"!inline && labels.downloadForAll && show && hasMore\">\n <p>{{ labels.downloadForAll }}</p>\n </div>\n <div v-else-if=\"inline && labels.firstPagePreview && show\">\n <p>{{ labels.firstPagePreview }}</p>\n </div>\n </template>\n </div>\n</template>\n\n<script lang=\"js\">\nimport pdfjs from 'pdfjs-dist'\nimport pdfjsWorker from 'pdfjs-dist/build/pdf.worker.entry'\nimport base from '../base.vue'\nimport { makePlaceholder, makeFailedPage, Page, Document } from './helpers'\n\npdfjs.GlobalWorkerOptions.workerSrc = pdfjsWorker\n\nfunction sleep (t) {\n return new Promise(resolve => setTimeout(resolve, t))\n}\n\nexport default {\n extends: base,\n\n props: {\n retryBackoff: {\n type: Number,\n required: false,\n default: 300,\n },\n maxRetries: {\n type: Number,\n required: false,\n default: 10,\n },\n\n maxPages: {\n required: false,\n type: Number,\n default: 5,\n },\n\n initialScale: {\n required: false,\n type: Number,\n default: 1,\n },\n },\n\n data () {\n return {\n document: null,\n pages: [],\n show: false,\n loadError: undefined,\n }\n },\n\n computed: {\n /**\n * Helper to provide the number of pages for the given PDF\n * @returns {Number}\n */\n pageCount () {\n if (!this.document || !this.document.pdf) {\n return 0\n }\n return this.document.pdf.numPages\n },\n\n /**\n * Helper to determine if the given PDF has more pages then we are willing to show\n * @returns {Boolean}\n */\n hasMore () {\n return this.maxPages < this.pageCount\n },\n },\n\n created () {\n if (!this.src) {\n this.stdErr(new Error('src.missing'))\n return\n }\n\n this.$nextTick(() => this.init())\n },\n\n methods: {\n /**\n * Helper to handle on preview click. It either requests a retry or\n * emits an open event\n */\n onPreviewClick () {\n if (this.loadError) {\n this.init()\n } else {\n this.$emit('openPreview', { document: this.document })\n }\n },\n\n /**\n * Initializes the state, loads the document & renderes it's pages\n */\n async init () {\n this.document = null\n this.pages = []\n this.show = false\n this.loadError = undefined\n\n return this.loadDocument(this.src)\n .then(this.renderDocument)\n .catch(this.stdErr)\n },\n\n /**\n * Helper method to load the given document. Needed for test stubbing\n * @param {String} src Document's src\n * @returns {Promise<PDFDocumentProxy>}\n */\n async pdfjsLoad (src) {\n return pdfjs.getDocument(src).promise\n },\n\n /**\n * Loads the given PDF. It can load it from API or re-use existing document\n * @param {Document|String} src PDF's source or a Document object\n * @returns {Document}\n */\n async loadDocument (src) {\n if (src instanceof Document) {\n this.document = new Document({ ...src, scale: this.initialScale })\n } else if (typeof src === 'string') {\n let retries = 0\n let err\n const pdfl = async () => {\n return sleep(retries * this.retryBackoff)\n .then(() => this.pdfjsLoad(src))\n .then(pdf => {\n this.document = new Document({ pdf, src, scale: this.initialScale })\n })\n }\n\n // Retry with backoff it it fails to load\n while (!this.document && retries < this.maxRetries) {\n await pdfl().catch(e => {\n retries++\n err = e\n })\n }\n\n if (!this.document) {\n throw err\n }\n } else {\n throw new Error('src.notValid')\n }\n return this.document\n },\n\n /**\n * Renders the given PDF\n * @param {Document} doc The Document to render\n * @return {Promise<undefined>}\n */\n async renderDocument (doc) {\n const rf = this.$refs.pages\n\n const pgCount = Math.min(this.pageCount, this.maxPages)\n this.pages = [...new Array(pgCount)].map((_, i) => new Page({ index: i }))\n\n if (pgCount <= 0) {\n this.show = true\n return\n }\n\n // Loadup pages\n for (let i = 0; i < pgCount; i++) {\n const node = makePlaceholder(this.labels)\n rf.appendChild(node)\n this.pages.splice(i, 1, new Page({ ...this.pages[i], node, loading: true }))\n\n this.renderPage(this.pages[i], doc, rf)\n .then(page => {\n this.pages.splice(page.index, 1, page)\n\n if (page.index === 0) {\n this.show = true\n }\n })\n .catch(this.stdErr)\n }\n },\n\n /**\n * Renders the given page\n * @param {Page} page The page in question\n * @param {Document} doc Page source\n * @param {Node} rf PDF container\n * @returns {Promise<undefined>}\n */\n async renderPage (page, doc, rf) {\n // pdfjs starts with 1!\n return doc.pdf.getPage(page.index + 1).then(p => {\n const np = new Page(page)\n np.loading = false\n np.loaded = true\n np.page = p\n\n // Render page\n const canvas = document.createElement('canvas')\n const scale = doc.scale\n const viewport = np.page.getViewport(scale)\n const canvasContext = canvas.getContext('2d')\n const renderContext = { canvasContext, viewport }\n canvas.height = viewport.height\n canvas.width = viewport.width\n\n return np.page.render(renderContext).then(() => {\n np.node = canvas\n np.rendered = true\n if (this.inline) {\n canvas.classList.add('inline')\n }\n return np\n })\n\n .catch(() => {\n const node = makeFailedPage(this.labels)\n np.node = node\n np.rendered = false\n np.failed = true\n return np\n })\n\n .then(np => {\n rf.replaceChild(np.node, page.node)\n return np\n })\n })\n },\n\n /**\n * Standard error handler\n * @param {Error} err The error\n */\n stdErr (err) {\n this.loadError = err\n this.$emit('error', err)\n },\n },\n}\n</script>\n\n<style lang=\"scss\" scoped>\n$white: white !default;\n$danger: red !default;\n\n.doc-msg {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n width: 100%;\n background-color: $white;\n}\n.doc-err {\n cursor: pointer;\n\n .err-message {\n color: $danger;\n }\n}\n\n</style>\n\n<style lang=\"scss\">\n// Style not scoped, since pages are manually rendered\n\n.pdf-preview {\n text-align: center;\n &:not(.inline) {\n padding-top: 20px;\n padding-bottom: 20px;\n canvas {\n box-shadow: 0 0 3px #1E1E1E41;\n }\n }\n &.inline {\n height: 200px;\n overflow-y: scroll;\n display: inline-block;\n cursor: zoom-in;\n width: 100%;\n max-width: 500px;\n }\n\n canvas {\n margin-bottom: 10px;\n &.inline {\n width: 100%;\n }\n\n &:not(.inline) {\n margin: 0 auto 10px auto;\n display: block;\n }\n\n &:last-of-type {\n margin-bottom: unset;\n }\n }\n\n .loader {\n margin-bottom: 10px;\n }\n}\n\n</style>\n",".pdf-preview {\n text-align: center;\n}\n.pdf-preview:not(.inline) {\n padding-top: 20px;\n padding-bottom: 20px;\n}\n.pdf-preview:not(.inline) canvas {\n box-shadow: 0 0 3px #1E1E1E41;\n}\n.pdf-preview.inline {\n height: 200px;\n overflow-y: scroll;\n display: inline-block;\n cursor: zoom-in;\n width: 100%;\n max-width: 500px;\n}\n.pdf-preview canvas {\n margin-bottom: 10px;\n}\n.pdf-preview canvas.inline {\n width: 100%;\n}\n.pdf-preview canvas:not(.inline) {\n margin: 0 auto 10px auto;\n display: block;\n}\n.pdf-preview canvas:last-of-type {\n margin-bottom: unset;\n}\n.pdf-preview .loader {\n margin-bottom: 10px;\n}\n\n/*# sourceMappingURL=PDF.vue.map */"]}, media: undefined });
|
|
70279
|
+
inject("data-v-0e0b6952_0", { source: ".doc-msg[data-v-0e0b6952] {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n width: 100%;\n background-color: white;\n}\n.doc-err[data-v-0e0b6952] {\n cursor: pointer;\n}\n.doc-err .err-message[data-v-0e0b6952] {\n color: red;\n}\n\n/*# sourceMappingURL=PDF.vue.map */", map: {"version":3,"sources":["/home/fajfa/Kendu/Corteza/packages/corteza-vue/src/components/filePreview/common/types/PDF/PDF.vue","PDF.vue"],"names":[],"mappings":"AA0SA;EACA,aAAA;EACA,mBAAA;EACA,uBAAA;EACA,YAAA;EACA,WAAA;EACA,uBATA;AChSA;AD2SA;EACA,eAAA;ACxSA;AD0SA;EACA,UAdA;AC1RA;;AAEA,kCAAkC","file":"PDF.vue","sourcesContent":["<template>\n <div\n :style=\"previewStyle\"\n :class=\"[...previewClass, 'pdf-preview', inline ? 'inline' : '', $listeners.click ? 'clickable' : '']\"\n @click=\"onPreviewClick\"\n >\n <!-- Container for pdf's pages -->\n <div\n v-show=\"show\"\n ref=\"pages\"\n class=\"pages\"\n />\n\n <div\n v-if=\"loadError\"\n class=\"doc-msg doc-err\"\n >\n <div>\n <h4 class=\"err-message\">\n {{ loadError.message }}\n </h4>\n <p v-if=\"labels.clickToRetry\">\n {{ labels.clickToRetry }}\n </p>\n </div>\n </div>\n <div\n v-else-if=\"!show && labels.loading\"\n class=\"doc-msg doc-err\"\n >\n <p>{{ labels.loading }}</p>\n </div>\n <div\n v-else-if=\"!pageCount && labels.noPages\"\n class=\"doc-msg doc-err\"\n >\n <p>{{ labels.noPages }}</p>\n </div>\n <template v-else>\n <div v-if=\"!inline && labels.downloadForAll && show && hasMore\">\n <p>{{ labels.downloadForAll }}</p>\n </div>\n <div v-else-if=\"inline && labels.firstPagePreview && show\">\n <p>{{ labels.firstPagePreview }}</p>\n </div>\n </template>\n </div>\n</template>\n\n<script lang=\"js\">\nimport pdfjs from 'pdfjs-dist'\nimport pdfjsWorker from 'pdfjs-dist/build/pdf.worker.entry'\nimport base from '../base.vue'\nimport { makePlaceholder, makeFailedPage, Page, Document } from './helpers'\n\npdfjs.GlobalWorkerOptions.workerSrc = pdfjsWorker\n\nfunction sleep (t) {\n return new Promise(resolve => setTimeout(resolve, t))\n}\n\nexport default {\n extends: base,\n\n props: {\n retryBackoff: {\n type: Number,\n required: false,\n default: 300,\n },\n maxRetries: {\n type: Number,\n required: false,\n default: 10,\n },\n\n maxPages: {\n required: false,\n type: Number,\n default: 5,\n },\n\n initialScale: {\n required: false,\n type: Number,\n default: 1,\n },\n },\n\n data () {\n return {\n document: null,\n pages: [],\n show: false,\n loadError: undefined,\n }\n },\n\n computed: {\n /**\n * Helper to provide the number of pages for the given PDF\n * @returns {Number}\n */\n pageCount () {\n if (!this.document || !this.document.pdf) {\n return 0\n }\n return this.document.pdf.numPages\n },\n\n /**\n * Helper to determine if the given PDF has more pages then we are willing to show\n * @returns {Boolean}\n */\n hasMore () {\n return this.maxPages < this.pageCount\n },\n },\n\n created () {\n if (!this.src) {\n this.stdErr(new Error('src.missing'))\n return\n }\n\n this.$nextTick(() => this.init())\n },\n\n methods: {\n /**\n * Helper to handle on preview click. It either requests a retry or\n * emits an open event\n */\n onPreviewClick () {\n if (this.loadError) {\n this.init()\n } else {\n this.$emit('openPreview', { document: this.document })\n }\n },\n\n /**\n * Initializes the state, loads the document & renderes it's pages\n */\n async init () {\n this.document = null\n this.pages = []\n this.show = false\n this.loadError = undefined\n\n return this.loadDocument(this.src)\n .then(this.renderDocument)\n .catch(this.stdErr)\n },\n\n /**\n * Helper method to load the given document. Needed for test stubbing\n * @param {String} src Document's src\n * @returns {Promise<PDFDocumentProxy>}\n */\n async pdfjsLoad (src) {\n return pdfjs.getDocument(src).promise\n },\n\n /**\n * Loads the given PDF. It can load it from API or re-use existing document\n * @param {Document|String} src PDF's source or a Document object\n * @returns {Document}\n */\n async loadDocument (src) {\n if (src instanceof Document) {\n this.document = new Document({ ...src, scale: this.initialScale })\n } else if (typeof src === 'string') {\n let retries = 0\n let err\n const pdfl = async () => {\n return sleep(retries * this.retryBackoff)\n .then(() => this.pdfjsLoad(src))\n .then(pdf => {\n this.document = new Document({ pdf, src, scale: this.initialScale })\n })\n }\n\n // Retry with backoff it it fails to load\n while (!this.document && retries < this.maxRetries) {\n await pdfl().catch(e => {\n retries++\n err = e\n })\n }\n\n if (!this.document) {\n throw err\n }\n } else {\n throw new Error('src.notValid')\n }\n return this.document\n },\n\n /**\n * Renders the given PDF\n * @param {Document} doc The Document to render\n * @return {Promise<undefined>}\n */\n async renderDocument (doc) {\n const rf = this.$refs.pages\n\n const pgCount = Math.min(this.pageCount, this.maxPages)\n this.pages = [...new Array(pgCount)].map((_, i) => new Page({ index: i }))\n\n if (pgCount <= 0) {\n this.show = true\n return\n }\n\n // Loadup pages\n for (let i = 0; i < pgCount; i++) {\n const node = makePlaceholder(this.labels)\n rf.appendChild(node)\n this.pages.splice(i, 1, new Page({ ...this.pages[i], node, loading: true }))\n\n this.renderPage(this.pages[i], doc, rf)\n .then(page => {\n this.pages.splice(page.index, 1, page)\n\n if (page.index === 0) {\n this.show = true\n }\n })\n .catch(this.stdErr)\n }\n },\n\n /**\n * Renders the given page\n * @param {Page} page The page in question\n * @param {Document} doc Page source\n * @param {Node} rf PDF container\n * @returns {Promise<undefined>}\n */\n async renderPage (page, doc, rf) {\n // pdfjs starts with 1!\n return doc.pdf.getPage(page.index + 1).then(p => {\n const np = new Page(page)\n np.loading = false\n np.loaded = true\n np.page = p\n\n // Render page\n const canvas = document.createElement('canvas')\n const scale = doc.scale\n const viewport = np.page.getViewport(scale)\n const canvasContext = canvas.getContext('2d')\n const renderContext = { canvasContext, viewport }\n canvas.height = viewport.height\n canvas.width = viewport.width\n\n return np.page.render(renderContext).then(() => {\n np.node = canvas\n np.rendered = true\n if (this.inline) {\n canvas.classList.add('inline')\n }\n return np\n })\n\n .catch(() => {\n const node = makeFailedPage(this.labels)\n np.node = node\n np.rendered = false\n np.failed = true\n return np\n })\n\n .then(np => {\n rf.replaceChild(np.node, page.node)\n return np\n })\n })\n },\n\n /**\n * Standard error handler\n * @param {Error} err The error\n */\n stdErr (err) {\n this.loadError = err\n this.$emit('error', err)\n },\n },\n}\n</script>\n\n<style lang=\"scss\" scoped>\n$white: white !default;\n$danger: red !default;\n\n.doc-msg {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n width: 100%;\n background-color: $white;\n}\n.doc-err {\n cursor: pointer;\n\n .err-message {\n color: $danger;\n }\n}\n\n</style>\n\n<style lang=\"scss\">\n// Style not scoped, since pages are manually rendered\n\n.pdf-preview {\n text-align: center;\n &:not(.inline) {\n padding-top: 20px;\n padding-bottom: 20px;\n canvas {\n box-shadow: 0 0 3px #1E1E1E41;\n }\n }\n &.inline {\n height: 200px;\n overflow-y: scroll;\n display: inline-block;\n cursor: zoom-in;\n width: 100%;\n max-width: 500px;\n }\n\n canvas {\n margin-bottom: 10px;\n &.inline {\n width: 100%;\n }\n\n &:not(.inline) {\n margin: 0 auto 10px auto;\n display: block;\n }\n\n &:last-of-type {\n margin-bottom: unset;\n }\n }\n\n .loader {\n margin-bottom: 10px;\n }\n}\n\n</style>\n",".doc-msg {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n width: 100%;\n background-color: white;\n}\n\n.doc-err {\n cursor: pointer;\n}\n.doc-err .err-message {\n color: red;\n}\n\n/*# sourceMappingURL=PDF.vue.map */"]}, media: undefined })
|
|
70280
|
+
,inject("data-v-0e0b6952_1", { source: ".pdf-preview {\n text-align: center;\n}\n.pdf-preview:not(.inline) {\n padding-top: 20px;\n padding-bottom: 20px;\n}\n.pdf-preview:not(.inline) canvas {\n box-shadow: 0 0 3px #1E1E1E41;\n}\n.pdf-preview.inline {\n height: 200px;\n overflow-y: scroll;\n display: inline-block;\n cursor: zoom-in;\n width: 100%;\n max-width: 500px;\n}\n.pdf-preview canvas {\n margin-bottom: 10px;\n}\n.pdf-preview canvas.inline {\n width: 100%;\n}\n.pdf-preview canvas:not(.inline) {\n margin: 0 auto 10px auto;\n display: block;\n}\n.pdf-preview canvas:last-of-type {\n margin-bottom: unset;\n}\n.pdf-preview .loader {\n margin-bottom: 10px;\n}\n\n/*# sourceMappingURL=PDF.vue.map */", map: {"version":3,"sources":["/home/fajfa/Kendu/Corteza/packages/corteza-vue/src/components/filePreview/common/types/PDF/PDF.vue","PDF.vue"],"names":[],"mappings":"AA+TA;EACA,kBAAA;AC9TA;AD+TA;EACA,iBAAA;EACA,oBAAA;AC7TA;AD8TA;EACA,6BAAA;AC5TA;AD+TA;EACA,aAAA;EACA,kBAAA;EACA,qBAAA;EACA,eAAA;EACA,WAAA;EACA,gBAAA;AC7TA;ADgUA;EACA,mBAAA;AC9TA;AD+TA;EACA,WAAA;AC7TA;ADgUA;EACA,wBAAA;EACA,cAAA;AC9TA;ADiUA;EACA,oBAAA;AC/TA;ADmUA;EACA,mBAAA;ACjUA;;AAEA,kCAAkC","file":"PDF.vue","sourcesContent":["<template>\n <div\n :style=\"previewStyle\"\n :class=\"[...previewClass, 'pdf-preview', inline ? 'inline' : '', $listeners.click ? 'clickable' : '']\"\n @click=\"onPreviewClick\"\n >\n <!-- Container for pdf's pages -->\n <div\n v-show=\"show\"\n ref=\"pages\"\n class=\"pages\"\n />\n\n <div\n v-if=\"loadError\"\n class=\"doc-msg doc-err\"\n >\n <div>\n <h4 class=\"err-message\">\n {{ loadError.message }}\n </h4>\n <p v-if=\"labels.clickToRetry\">\n {{ labels.clickToRetry }}\n </p>\n </div>\n </div>\n <div\n v-else-if=\"!show && labels.loading\"\n class=\"doc-msg doc-err\"\n >\n <p>{{ labels.loading }}</p>\n </div>\n <div\n v-else-if=\"!pageCount && labels.noPages\"\n class=\"doc-msg doc-err\"\n >\n <p>{{ labels.noPages }}</p>\n </div>\n <template v-else>\n <div v-if=\"!inline && labels.downloadForAll && show && hasMore\">\n <p>{{ labels.downloadForAll }}</p>\n </div>\n <div v-else-if=\"inline && labels.firstPagePreview && show\">\n <p>{{ labels.firstPagePreview }}</p>\n </div>\n </template>\n </div>\n</template>\n\n<script lang=\"js\">\nimport pdfjs from 'pdfjs-dist'\nimport pdfjsWorker from 'pdfjs-dist/build/pdf.worker.entry'\nimport base from '../base.vue'\nimport { makePlaceholder, makeFailedPage, Page, Document } from './helpers'\n\npdfjs.GlobalWorkerOptions.workerSrc = pdfjsWorker\n\nfunction sleep (t) {\n return new Promise(resolve => setTimeout(resolve, t))\n}\n\nexport default {\n extends: base,\n\n props: {\n retryBackoff: {\n type: Number,\n required: false,\n default: 300,\n },\n maxRetries: {\n type: Number,\n required: false,\n default: 10,\n },\n\n maxPages: {\n required: false,\n type: Number,\n default: 5,\n },\n\n initialScale: {\n required: false,\n type: Number,\n default: 1,\n },\n },\n\n data () {\n return {\n document: null,\n pages: [],\n show: false,\n loadError: undefined,\n }\n },\n\n computed: {\n /**\n * Helper to provide the number of pages for the given PDF\n * @returns {Number}\n */\n pageCount () {\n if (!this.document || !this.document.pdf) {\n return 0\n }\n return this.document.pdf.numPages\n },\n\n /**\n * Helper to determine if the given PDF has more pages then we are willing to show\n * @returns {Boolean}\n */\n hasMore () {\n return this.maxPages < this.pageCount\n },\n },\n\n created () {\n if (!this.src) {\n this.stdErr(new Error('src.missing'))\n return\n }\n\n this.$nextTick(() => this.init())\n },\n\n methods: {\n /**\n * Helper to handle on preview click. It either requests a retry or\n * emits an open event\n */\n onPreviewClick () {\n if (this.loadError) {\n this.init()\n } else {\n this.$emit('openPreview', { document: this.document })\n }\n },\n\n /**\n * Initializes the state, loads the document & renderes it's pages\n */\n async init () {\n this.document = null\n this.pages = []\n this.show = false\n this.loadError = undefined\n\n return this.loadDocument(this.src)\n .then(this.renderDocument)\n .catch(this.stdErr)\n },\n\n /**\n * Helper method to load the given document. Needed for test stubbing\n * @param {String} src Document's src\n * @returns {Promise<PDFDocumentProxy>}\n */\n async pdfjsLoad (src) {\n return pdfjs.getDocument(src).promise\n },\n\n /**\n * Loads the given PDF. It can load it from API or re-use existing document\n * @param {Document|String} src PDF's source or a Document object\n * @returns {Document}\n */\n async loadDocument (src) {\n if (src instanceof Document) {\n this.document = new Document({ ...src, scale: this.initialScale })\n } else if (typeof src === 'string') {\n let retries = 0\n let err\n const pdfl = async () => {\n return sleep(retries * this.retryBackoff)\n .then(() => this.pdfjsLoad(src))\n .then(pdf => {\n this.document = new Document({ pdf, src, scale: this.initialScale })\n })\n }\n\n // Retry with backoff it it fails to load\n while (!this.document && retries < this.maxRetries) {\n await pdfl().catch(e => {\n retries++\n err = e\n })\n }\n\n if (!this.document) {\n throw err\n }\n } else {\n throw new Error('src.notValid')\n }\n return this.document\n },\n\n /**\n * Renders the given PDF\n * @param {Document} doc The Document to render\n * @return {Promise<undefined>}\n */\n async renderDocument (doc) {\n const rf = this.$refs.pages\n\n const pgCount = Math.min(this.pageCount, this.maxPages)\n this.pages = [...new Array(pgCount)].map((_, i) => new Page({ index: i }))\n\n if (pgCount <= 0) {\n this.show = true\n return\n }\n\n // Loadup pages\n for (let i = 0; i < pgCount; i++) {\n const node = makePlaceholder(this.labels)\n rf.appendChild(node)\n this.pages.splice(i, 1, new Page({ ...this.pages[i], node, loading: true }))\n\n this.renderPage(this.pages[i], doc, rf)\n .then(page => {\n this.pages.splice(page.index, 1, page)\n\n if (page.index === 0) {\n this.show = true\n }\n })\n .catch(this.stdErr)\n }\n },\n\n /**\n * Renders the given page\n * @param {Page} page The page in question\n * @param {Document} doc Page source\n * @param {Node} rf PDF container\n * @returns {Promise<undefined>}\n */\n async renderPage (page, doc, rf) {\n // pdfjs starts with 1!\n return doc.pdf.getPage(page.index + 1).then(p => {\n const np = new Page(page)\n np.loading = false\n np.loaded = true\n np.page = p\n\n // Render page\n const canvas = document.createElement('canvas')\n const scale = doc.scale\n const viewport = np.page.getViewport(scale)\n const canvasContext = canvas.getContext('2d')\n const renderContext = { canvasContext, viewport }\n canvas.height = viewport.height\n canvas.width = viewport.width\n\n return np.page.render(renderContext).then(() => {\n np.node = canvas\n np.rendered = true\n if (this.inline) {\n canvas.classList.add('inline')\n }\n return np\n })\n\n .catch(() => {\n const node = makeFailedPage(this.labels)\n np.node = node\n np.rendered = false\n np.failed = true\n return np\n })\n\n .then(np => {\n rf.replaceChild(np.node, page.node)\n return np\n })\n })\n },\n\n /**\n * Standard error handler\n * @param {Error} err The error\n */\n stdErr (err) {\n this.loadError = err\n this.$emit('error', err)\n },\n },\n}\n</script>\n\n<style lang=\"scss\" scoped>\n$white: white !default;\n$danger: red !default;\n\n.doc-msg {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n width: 100%;\n background-color: $white;\n}\n.doc-err {\n cursor: pointer;\n\n .err-message {\n color: $danger;\n }\n}\n\n</style>\n\n<style lang=\"scss\">\n// Style not scoped, since pages are manually rendered\n\n.pdf-preview {\n text-align: center;\n &:not(.inline) {\n padding-top: 20px;\n padding-bottom: 20px;\n canvas {\n box-shadow: 0 0 3px #1E1E1E41;\n }\n }\n &.inline {\n height: 200px;\n overflow-y: scroll;\n display: inline-block;\n cursor: zoom-in;\n width: 100%;\n max-width: 500px;\n }\n\n canvas {\n margin-bottom: 10px;\n &.inline {\n width: 100%;\n }\n\n &:not(.inline) {\n margin: 0 auto 10px auto;\n display: block;\n }\n\n &:last-of-type {\n margin-bottom: unset;\n }\n }\n\n .loader {\n margin-bottom: 10px;\n }\n}\n\n</style>\n",".pdf-preview {\n text-align: center;\n}\n.pdf-preview:not(.inline) {\n padding-top: 20px;\n padding-bottom: 20px;\n}\n.pdf-preview:not(.inline) canvas {\n box-shadow: 0 0 3px #1E1E1E41;\n}\n.pdf-preview.inline {\n height: 200px;\n overflow-y: scroll;\n display: inline-block;\n cursor: zoom-in;\n width: 100%;\n max-width: 500px;\n}\n.pdf-preview canvas {\n margin-bottom: 10px;\n}\n.pdf-preview canvas.inline {\n width: 100%;\n}\n.pdf-preview canvas:not(.inline) {\n margin: 0 auto 10px auto;\n display: block;\n}\n.pdf-preview canvas:last-of-type {\n margin-bottom: unset;\n}\n.pdf-preview .loader {\n margin-bottom: 10px;\n}\n\n/*# sourceMappingURL=PDF.vue.map */"]}, media: undefined });
|
|
70280
70281
|
|
|
70281
70282
|
};
|
|
70282
70283
|
/* scoped */
|
|
70283
|
-
const __vue_scope_id__$4 = "data-v-
|
|
70284
|
+
const __vue_scope_id__$4 = "data-v-0e0b6952";
|
|
70284
70285
|
/* module identifier */
|
|
70285
70286
|
const __vue_module_identifier__$4 = undefined;
|
|
70286
70287
|
/* functional template */
|
|
@@ -70347,11 +70348,11 @@ __vue_render__$4._withStripped = true;
|
|
|
70347
70348
|
/* style */
|
|
70348
70349
|
const __vue_inject_styles__$5 = function (inject) {
|
|
70349
70350
|
if (!inject) return
|
|
70350
|
-
inject("data-v-
|
|
70351
|
+
inject("data-v-5950f2a0_0", { source: "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/* Temporary style; update when messaging is updated with bootstrap */\n.lightbox[data-v-5950f2a0] {\n position: fixed;\n left: 0;\n top: 0;\n right: 0;\n bottom: 0;\n\n background-color: #EEF1F3;\n z-index: 2000;\n}\n.lightbox header[data-v-5950f2a0] {\n display: flex;\n justify-content: space-between;\n background-color: #FFFFFF;\n position: absolute;\n left: 0;\n top: 0;\n right: 0;\n box-shadow: 0 0 3px #1E1E1E41;\n z-index: 1000;\n height: 50px;\n}\n.lightbox header .left[data-v-5950f2a0] {\n margin-left: 10px;\n}\n.lightbox header .right[data-v-5950f2a0] {\n margin-right: 10px;\n}\n.lightbox header > div[data-v-5950f2a0] {\n display: flex;\n align-items: center;\n}\n.lightbox main[data-v-5950f2a0] {\n position: absolute;\n top: 50px;\n left: 0;\n right: 0;\n bottom: 0;\n overflow-y: scroll;\n z-index: 1;\n}\n.lightbox header button[data-v-5950f2a0] {\n background-color: transparent;\n border: none;\n outline: none;\n font-size: 25px;\n font-weight: bold;\n margin: 10px;\n cursor: pointer;\n box-sizing: border-box;\n}\n.lightbox header button[data-v-5950f2a0]:last-of-type {\n margin-right: 0;\n}\n\n", map: {"version":3,"sources":["/home/fajfa/Kendu/Corteza/packages/corteza-vue/src/components/lightbox/CLightbox.vue"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAuBA,qEAAA;AAEA;EACA,eAAA;EACA,OAAA;EACA,MAAA;EACA,QAAA;EACA,SAAA;;EAEA,yBAAA;EACA,aAAA;AACA;AAEA;EACA,aAAA;EACA,8BAAA;EACA,yBAAA;EACA,kBAAA;EACA,OAAA;EACA,MAAA;EACA,QAAA;EACA,6BAAA;EACA,aAAA;EACA,YAAA;AACA;AAEA;EACA,iBAAA;AACA;AACA;EACA,kBAAA;AACA;AAEA;EACA,aAAA;EACA,mBAAA;AACA;AAEA;EACA,kBAAA;EACA,SAAA;EACA,OAAA;EACA,QAAA;EACA,SAAA;EACA,kBAAA;EACA,UAAA;AACA;AAEA;EACA,6BAAA;EACA,YAAA;EACA,aAAA;EACA,eAAA;EACA,iBAAA;EACA,YAAA;EACA,eAAA;EACA,sBAAA;AACA;AAEA;EACA,eAAA;AACA","file":"CLightbox.vue","sourcesContent":["<template>\n <div class=\"lightbox\">\n <header>\n <div class=\"left\">\n <slot name=\"header.left\" />\n </div>\n <div class=\"right\">\n <slot name=\"header.right\" />\n <button\n class=\"closer\"\n @click=\"$emit('close')\"\n >\n ×\n </button>\n </div>\n </header>\n <main>\n <slot name=\"main\" />\n </main>\n </div>\n</template>\n\n<style scoped>\n/* Temporary style; update when messaging is updated with bootstrap */\n\n.lightbox {\n position: fixed;\n left: 0;\n top: 0;\n right: 0;\n bottom: 0;\n\n background-color: #EEF1F3;\n z-index: 2000;\n}\n\n.lightbox header {\n display: flex;\n justify-content: space-between;\n background-color: #FFFFFF;\n position: absolute;\n left: 0;\n top: 0;\n right: 0;\n box-shadow: 0 0 3px #1E1E1E41;\n z-index: 1000;\n height: 50px;\n}\n\n.lightbox header .left {\n margin-left: 10px;\n}\n.lightbox header .right {\n margin-right: 10px;\n}\n\n.lightbox header > div {\n display: flex;\n align-items: center;\n}\n\n.lightbox main {\n position: absolute;\n top: 50px;\n left: 0;\n right: 0;\n bottom: 0;\n overflow-y: scroll;\n z-index: 1;\n}\n\n.lightbox header button {\n background-color: transparent;\n border: none;\n outline: none;\n font-size: 25px;\n font-weight: bold;\n margin: 10px;\n cursor: pointer;\n box-sizing: border-box;\n}\n\n.lightbox header button:last-of-type {\n margin-right: 0;\n}\n\n</style>\n"]}, media: undefined });
|
|
70351
70352
|
|
|
70352
70353
|
};
|
|
70353
70354
|
/* scoped */
|
|
70354
|
-
const __vue_scope_id__$5 = "data-v-
|
|
70355
|
+
const __vue_scope_id__$5 = "data-v-5950f2a0";
|
|
70355
70356
|
/* module identifier */
|
|
70356
70357
|
const __vue_module_identifier__$5 = undefined;
|
|
70357
70358
|
/* functional template */
|
|
@@ -71349,6 +71350,10 @@ var script$d = {
|
|
|
71349
71350
|
type: Function,
|
|
71350
71351
|
required: false,
|
|
71351
71352
|
default: () => {}
|
|
71353
|
+
},
|
|
71354
|
+
currentValue: {
|
|
71355
|
+
type: String,
|
|
71356
|
+
required: false
|
|
71352
71357
|
}
|
|
71353
71358
|
},
|
|
71354
71359
|
methods: {
|
|
@@ -71495,12 +71500,12 @@ __vue_render__$b._withStripped = true;
|
|
|
71495
71500
|
/* style */
|
|
71496
71501
|
const __vue_inject_styles__$f = function (inject) {
|
|
71497
71502
|
if (!inject) return
|
|
71498
|
-
inject("data-v-
|
|
71499
|
-
,inject("data-v-
|
|
71503
|
+
inject("data-v-bfd7c2ee_0", { source: ".icon[data-v-bfd7c2ee] {\n padding: 0 2px;\n}\n.icon.color-icon[data-v-bfd7c2ee] {\n border-bottom: 1px solid black;\n}\n.icon.background-icon[data-v-bfd7c2ee] {\n background-color: rgba(0, 0, 0, 0.07);\n padding: 2px 3px;\n}\n\n/*# sourceMappingURL=Color.vue.map */", map: {"version":3,"sources":["/home/fajfa/Kendu/Corteza/packages/corteza-vue/src/components/input/CRichTextInput/RToolbar/TMark/Color.vue","Color.vue"],"names":[],"mappings":"AA8DA;EACA,cAAA;AC7DA;AD+DA;EACA,8BAAA;AC7DA;ADgEA;EACA,qCAAA;EACA,gBAAA;AC9DA;;AAEA,oCAAoC","file":"Color.vue","sourcesContent":["<template>\n <div>\n <b-button\n variant=\"link\"\n class=\"text-dark font-weight-bold text-decoration-none\"\n :id=\"`color-popover-${format.type}`\">\n\n <span\n class=\"icon\"\n :class=\"typeStyle\">A</span>\n\n </b-button>\n\n <b-popover\n :delay=\"0\"\n no-fade\n custom-class=\"tcl-popover\"\n triggers=\"focus\"\n :target=\"`color-popover-${format.type}`\"\n placement=\"bottom\"\n :container=\"null\"\n ref=\"popover\">\n\n <swatches\n swatch-size=\"14\"\n colors=\"text-advanced\"\n @input=\"onClick(format.type, { color: $event })\"\n inline />\n\n </b-popover>\n </div>\n</template>\n\n<script>\nimport base from './base.vue'\nimport Swatches from 'vue-swatches'\nimport 'vue-swatches/dist/vue-swatches.min.css'\n\n/**\n * Component is used to display link formatters. It provides an interface to\n * input the URL that should be applied.\n */\nexport default {\n name: 't-mark-color',\n\n components: {\n Swatches,\n },\n extends: base,\n\n computed: {\n typeStyle () {\n return `${this.format.type}-icon`\n },\n },\n}\n\n</script>\n\n<style lang=\"scss\" scoped>\n// Since we don't have icons for color related formatters,\n// this extra styling makes up for that\n.icon {\n padding: 0 2px;\n\n &.color-icon {\n border-bottom: 1px solid black;\n }\n\n &.background-icon {\n background-color: rgba(black, 0.07);\n padding: 2px 3px;\n }\n}\n</style>\n\n<style lang=\"scss\">\n// Bootstrap popover doesn't provide a way to style it's body component\n// Can't be scoped, since it's not rendered in here\n.tcl-popover .popover-body {\n padding: 0 !important;\n}\n</style>\n",".icon {\n padding: 0 2px;\n}\n.icon.color-icon {\n border-bottom: 1px solid black;\n}\n.icon.background-icon {\n background-color: rgba(0, 0, 0, 0.07);\n padding: 2px 3px;\n}\n\n/*# sourceMappingURL=Color.vue.map */"]}, media: undefined })
|
|
71504
|
+
,inject("data-v-bfd7c2ee_1", { source: ".tcl-popover .popover-body {\n padding: 0 !important;\n}\n\n/*# sourceMappingURL=Color.vue.map */", map: {"version":3,"sources":["/home/fajfa/Kendu/Corteza/packages/corteza-vue/src/components/input/CRichTextInput/RToolbar/TMark/Color.vue","Color.vue"],"names":[],"mappings":"AA+EA;EACA,qBAAA;AC9EA;;AAEA,oCAAoC","file":"Color.vue","sourcesContent":["<template>\n <div>\n <b-button\n variant=\"link\"\n class=\"text-dark font-weight-bold text-decoration-none\"\n :id=\"`color-popover-${format.type}`\">\n\n <span\n class=\"icon\"\n :class=\"typeStyle\">A</span>\n\n </b-button>\n\n <b-popover\n :delay=\"0\"\n no-fade\n custom-class=\"tcl-popover\"\n triggers=\"focus\"\n :target=\"`color-popover-${format.type}`\"\n placement=\"bottom\"\n :container=\"null\"\n ref=\"popover\">\n\n <swatches\n swatch-size=\"14\"\n colors=\"text-advanced\"\n @input=\"onClick(format.type, { color: $event })\"\n inline />\n\n </b-popover>\n </div>\n</template>\n\n<script>\nimport base from './base.vue'\nimport Swatches from 'vue-swatches'\nimport 'vue-swatches/dist/vue-swatches.min.css'\n\n/**\n * Component is used to display link formatters. It provides an interface to\n * input the URL that should be applied.\n */\nexport default {\n name: 't-mark-color',\n\n components: {\n Swatches,\n },\n extends: base,\n\n computed: {\n typeStyle () {\n return `${this.format.type}-icon`\n },\n },\n}\n\n</script>\n\n<style lang=\"scss\" scoped>\n// Since we don't have icons for color related formatters,\n// this extra styling makes up for that\n.icon {\n padding: 0 2px;\n\n &.color-icon {\n border-bottom: 1px solid black;\n }\n\n &.background-icon {\n background-color: rgba(black, 0.07);\n padding: 2px 3px;\n }\n}\n</style>\n\n<style lang=\"scss\">\n// Bootstrap popover doesn't provide a way to style it's body component\n// Can't be scoped, since it's not rendered in here\n.tcl-popover .popover-body {\n padding: 0 !important;\n}\n</style>\n",".tcl-popover .popover-body {\n padding: 0 !important;\n}\n\n/*# sourceMappingURL=Color.vue.map */"]}, media: undefined });
|
|
71500
71505
|
|
|
71501
71506
|
};
|
|
71502
71507
|
/* scoped */
|
|
71503
|
-
const __vue_scope_id__$f = "data-v-
|
|
71508
|
+
const __vue_scope_id__$f = "data-v-bfd7c2ee";
|
|
71504
71509
|
/* module identifier */
|
|
71505
71510
|
const __vue_module_identifier__$f = undefined;
|
|
71506
71511
|
/* functional template */
|
|
@@ -71646,9 +71651,11 @@ var script$g = {
|
|
|
71646
71651
|
* Helper to show the popup & determine if a link already exists
|
|
71647
71652
|
*/
|
|
71648
71653
|
showPopover() {
|
|
71649
|
-
this.
|
|
71650
|
-
|
|
71651
|
-
|
|
71654
|
+
if (this.currentValue) {
|
|
71655
|
+
this.visible = true;
|
|
71656
|
+
this.attrs = { ...this.getMarkAttrs(this.format.type)
|
|
71657
|
+
};
|
|
71658
|
+
}
|
|
71652
71659
|
},
|
|
71653
71660
|
|
|
71654
71661
|
/**
|
|
@@ -71699,89 +71706,101 @@ var __vue_render__$d = function() {
|
|
|
71699
71706
|
]
|
|
71700
71707
|
),
|
|
71701
71708
|
_vm._v(" "),
|
|
71702
|
-
|
|
71703
|
-
|
|
71704
|
-
|
|
71705
|
-
|
|
71706
|
-
|
|
71707
|
-
|
|
71708
|
-
|
|
71709
|
-
|
|
71710
|
-
|
|
71711
|
-
|
|
71712
|
-
|
|
71713
|
-
|
|
71714
|
-
|
|
71715
|
-
|
|
71716
|
-
|
|
71717
|
-
}
|
|
71718
|
-
},
|
|
71719
|
-
[
|
|
71720
|
-
_c(
|
|
71721
|
-
"b-input-group",
|
|
71722
|
-
[
|
|
71723
|
-
_c("b-form-input", {
|
|
71724
|
-
attrs: {
|
|
71725
|
-
type: "url",
|
|
71726
|
-
autofocus: "",
|
|
71727
|
-
state: _vm.urlValid ? null : false,
|
|
71728
|
-
placeholder: _vm.labels.urlPlaceholder
|
|
71729
|
-
},
|
|
71730
|
-
on: {
|
|
71731
|
-
keydown: [
|
|
71732
|
-
function($event) {
|
|
71733
|
-
if (
|
|
71734
|
-
!$event.type.indexOf("key") &&
|
|
71735
|
-
_vm._k($event.keyCode, "enter", 13, $event.key, "Enter")
|
|
71736
|
-
) {
|
|
71737
|
-
return null
|
|
71738
|
-
}
|
|
71739
|
-
$event.preventDefault();
|
|
71740
|
-
$event.stopPropagation();
|
|
71741
|
-
return _vm.link.apply(null, arguments)
|
|
71742
|
-
},
|
|
71743
|
-
function($event) {
|
|
71744
|
-
if (
|
|
71745
|
-
!$event.type.indexOf("key") &&
|
|
71746
|
-
_vm._k($event.keyCode, "esc", 27, $event.key, [
|
|
71747
|
-
"Esc",
|
|
71748
|
-
"Escape"
|
|
71749
|
-
])
|
|
71750
|
-
) {
|
|
71751
|
-
return null
|
|
71752
|
-
}
|
|
71753
|
-
$event.preventDefault();
|
|
71754
|
-
$event.stopPropagation();
|
|
71755
|
-
return _vm.close.apply(null, arguments)
|
|
71756
|
-
}
|
|
71757
|
-
]
|
|
71758
|
-
},
|
|
71759
|
-
model: {
|
|
71760
|
-
value: _vm.attrs.href,
|
|
71761
|
-
callback: function($$v) {
|
|
71762
|
-
_vm.$set(_vm.attrs, "href", $$v);
|
|
71763
|
-
},
|
|
71764
|
-
expression: "attrs.href"
|
|
71709
|
+
_vm.currentValue
|
|
71710
|
+
? _c(
|
|
71711
|
+
"b-popover",
|
|
71712
|
+
{
|
|
71713
|
+
ref: "popover",
|
|
71714
|
+
attrs: {
|
|
71715
|
+
triggers: "focus",
|
|
71716
|
+
target: "link-popover",
|
|
71717
|
+
placement: "auto",
|
|
71718
|
+
show: _vm.visible,
|
|
71719
|
+
container: "link-popover-container"
|
|
71720
|
+
},
|
|
71721
|
+
on: {
|
|
71722
|
+
"update:show": function($event) {
|
|
71723
|
+
_vm.visible = $event;
|
|
71765
71724
|
}
|
|
71766
|
-
}
|
|
71767
|
-
|
|
71725
|
+
}
|
|
71726
|
+
},
|
|
71727
|
+
[
|
|
71768
71728
|
_c(
|
|
71769
|
-
"b-input-group
|
|
71729
|
+
"b-input-group",
|
|
71770
71730
|
[
|
|
71771
|
-
_c(
|
|
71772
|
-
|
|
71773
|
-
|
|
71774
|
-
|
|
71775
|
-
|
|
71776
|
-
|
|
71777
|
-
},
|
|
71778
|
-
on: { click: _vm.link }
|
|
71731
|
+
_c("b-form-input", {
|
|
71732
|
+
attrs: {
|
|
71733
|
+
type: "url",
|
|
71734
|
+
autofocus: "",
|
|
71735
|
+
state: _vm.urlValid ? null : false,
|
|
71736
|
+
placeholder: _vm.labels.urlPlaceholder
|
|
71779
71737
|
},
|
|
71738
|
+
on: {
|
|
71739
|
+
keydown: [
|
|
71740
|
+
function($event) {
|
|
71741
|
+
if (
|
|
71742
|
+
!$event.type.indexOf("key") &&
|
|
71743
|
+
_vm._k(
|
|
71744
|
+
$event.keyCode,
|
|
71745
|
+
"enter",
|
|
71746
|
+
13,
|
|
71747
|
+
$event.key,
|
|
71748
|
+
"Enter"
|
|
71749
|
+
)
|
|
71750
|
+
) {
|
|
71751
|
+
return null
|
|
71752
|
+
}
|
|
71753
|
+
$event.preventDefault();
|
|
71754
|
+
$event.stopPropagation();
|
|
71755
|
+
return _vm.link.apply(null, arguments)
|
|
71756
|
+
},
|
|
71757
|
+
function($event) {
|
|
71758
|
+
if (
|
|
71759
|
+
!$event.type.indexOf("key") &&
|
|
71760
|
+
_vm._k($event.keyCode, "esc", 27, $event.key, [
|
|
71761
|
+
"Esc",
|
|
71762
|
+
"Escape"
|
|
71763
|
+
])
|
|
71764
|
+
) {
|
|
71765
|
+
return null
|
|
71766
|
+
}
|
|
71767
|
+
$event.preventDefault();
|
|
71768
|
+
$event.stopPropagation();
|
|
71769
|
+
return _vm.close.apply(null, arguments)
|
|
71770
|
+
}
|
|
71771
|
+
]
|
|
71772
|
+
},
|
|
71773
|
+
model: {
|
|
71774
|
+
value: _vm.attrs.href,
|
|
71775
|
+
callback: function($$v) {
|
|
71776
|
+
_vm.$set(_vm.attrs, "href", $$v);
|
|
71777
|
+
},
|
|
71778
|
+
expression: "attrs.href"
|
|
71779
|
+
}
|
|
71780
|
+
}),
|
|
71781
|
+
_vm._v(" "),
|
|
71782
|
+
_c(
|
|
71783
|
+
"b-input-group-append",
|
|
71780
71784
|
[
|
|
71781
|
-
|
|
71782
|
-
"
|
|
71785
|
+
_c(
|
|
71786
|
+
"b-button",
|
|
71787
|
+
{
|
|
71788
|
+
attrs: {
|
|
71789
|
+
disabled: !_vm.urlValid,
|
|
71790
|
+
variant: "outline-success"
|
|
71791
|
+
},
|
|
71792
|
+
on: { click: _vm.link }
|
|
71793
|
+
},
|
|
71794
|
+
[
|
|
71795
|
+
_vm._v(
|
|
71796
|
+
"\n " +
|
|
71797
|
+
_vm._s(_vm.labels.ok) +
|
|
71798
|
+
"\n "
|
|
71799
|
+
)
|
|
71800
|
+
]
|
|
71783
71801
|
)
|
|
71784
|
-
]
|
|
71802
|
+
],
|
|
71803
|
+
1
|
|
71785
71804
|
)
|
|
71786
71805
|
],
|
|
71787
71806
|
1
|
|
@@ -71789,9 +71808,7 @@ var __vue_render__$d = function() {
|
|
|
71789
71808
|
],
|
|
71790
71809
|
1
|
|
71791
71810
|
)
|
|
71792
|
-
|
|
71793
|
-
1
|
|
71794
|
-
)
|
|
71811
|
+
: _vm._e()
|
|
71795
71812
|
],
|
|
71796
71813
|
1
|
|
71797
71814
|
)
|
|
@@ -79083,6 +79100,10 @@ var script$k = {
|
|
|
79083
79100
|
labels: {
|
|
79084
79101
|
type: Object,
|
|
79085
79102
|
default: () => ({})
|
|
79103
|
+
},
|
|
79104
|
+
currentValue: {
|
|
79105
|
+
type: String,
|
|
79106
|
+
required: false
|
|
79086
79107
|
}
|
|
79087
79108
|
},
|
|
79088
79109
|
methods: {
|
|
@@ -79153,7 +79174,11 @@ var __vue_render__$g = function() {
|
|
|
79153
79174
|
{
|
|
79154
79175
|
key: "" + f.name + i + "}",
|
|
79155
79176
|
tag: "component",
|
|
79156
|
-
attrs: {
|
|
79177
|
+
attrs: {
|
|
79178
|
+
format: f,
|
|
79179
|
+
labels: _vm.labels,
|
|
79180
|
+
"current-value": _vm.currentValue
|
|
79181
|
+
},
|
|
79157
79182
|
on: {
|
|
79158
79183
|
click: function($event) {
|
|
79159
79184
|
_vm.commands[$event.type]($event.attrs);
|
|
@@ -79240,7 +79265,8 @@ var script$l = {
|
|
|
79240
79265
|
toolbar: getToolbar(),
|
|
79241
79266
|
// Helper to determine if current content differes from prop's content
|
|
79242
79267
|
emittedContent: false,
|
|
79243
|
-
editor: undefined
|
|
79268
|
+
editor: undefined,
|
|
79269
|
+
currentValue: ''
|
|
79244
79270
|
};
|
|
79245
79271
|
},
|
|
79246
79272
|
|
|
@@ -79292,11 +79318,11 @@ var script$l = {
|
|
|
79292
79318
|
* Because of this, we are using `view.dom.innerHTML`. This should be improved at a later point
|
|
79293
79319
|
*/
|
|
79294
79320
|
onUpdate() {
|
|
79295
|
-
|
|
79321
|
+
this.currentValue = this.editor.view.dom.innerHTML; // Makes sure to default to '' as the value if no text is present, for validation purposes
|
|
79296
79322
|
|
|
79297
|
-
|
|
79323
|
+
this.currentValue = this.currentValue !== '<p><br></p>' ? this.currentValue : '';
|
|
79298
79324
|
this.emittedContent = true;
|
|
79299
|
-
this.$emit('input',
|
|
79325
|
+
this.$emit('input', this.currentValue);
|
|
79300
79326
|
}
|
|
79301
79327
|
|
|
79302
79328
|
}
|
|
@@ -79340,7 +79366,8 @@ var __vue_render__$h = function() {
|
|
|
79340
79366
|
"is-active": isActive,
|
|
79341
79367
|
"get-mark-attrs": getMarkAttrs,
|
|
79342
79368
|
"get-node-attrs": getNodeAttrs,
|
|
79343
|
-
labels: _vm.labels
|
|
79369
|
+
labels: _vm.labels,
|
|
79370
|
+
"current-value": _vm.currentValue
|
|
79344
79371
|
}
|
|
79345
79372
|
})
|
|
79346
79373
|
]
|
|
@@ -79349,7 +79376,7 @@ var __vue_render__$h = function() {
|
|
|
79349
79376
|
],
|
|
79350
79377
|
null,
|
|
79351
79378
|
false,
|
|
79352
|
-
|
|
79379
|
+
2342935495
|
|
79353
79380
|
)
|
|
79354
79381
|
})
|
|
79355
79382
|
],
|
|
@@ -79517,11 +79544,11 @@ __vue_render__$i._withStripped = true;
|
|
|
79517
79544
|
/* style */
|
|
79518
79545
|
const __vue_inject_styles__$n = function (inject) {
|
|
79519
79546
|
if (!inject) return
|
|
79520
|
-
inject("data-v-
|
|
79547
|
+
inject("data-v-7413f73a_0", { source: ".pointer[data-v-7413f73a] {\n cursor: pointer;\n}\n\n/*# sourceMappingURL=CPermissionsButton.vue.map */", map: {"version":3,"sources":["/home/fajfa/Kendu/Corteza/packages/corteza-vue/src/components/permissions/CPermissionsButton.vue","CPermissionsButton.vue"],"names":[],"mappings":"AA0FA;EACA,eAAA;ACzFA;;AAEA,iDAAiD","file":"CPermissionsButton.vue","sourcesContent":["<template>\n <a\n v-if=\"link\"\n class=\"pointer\"\n @click=\"onClick\"\n >\n <font-awesome-icon :icon=\"['fas', 'lock']\" />\n </a>\n <b-button\n v-else\n :variant=\"buttonVariant\"\n @click=\"onClick\"\n >\n <slot>\n <font-awesome-icon v-if=\"showButtonIcon\" :icon=\"['fas', 'lock']\" />\n <span v-if=\"buttonLabel\">\n {{ buttonLabel }}\n </span>\n </slot>\n </b-button>\n</template>\n<script lang=\"js\">\nimport { modalOpenEventName } from './def.ts'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faLock } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(faLock)\n\nexport default {\n props: {\n link: {\n type: Boolean,\n },\n\n buttonVariant: {\n type: String,\n default: undefined,\n },\n\n resource: {\n type: String,\n required: true,\n },\n\n title: {\n type: String,\n default: undefined,\n },\n\n buttonLabel: {\n type: String,\n default: undefined,\n },\n\n modalOpenEvent: {\n type: String,\n default: modalOpenEventName,\n },\n\n target: {\n type: String,\n required: false,\n default: undefined,\n },\n\n showButtonIcon: {\n type: Boolean,\n default: true,\n },\n\n // Use this prop if you want the translations to look for all-specific key instead of all/specific\n allSpecific: {\n type: Boolean,\n default: false\n },\n },\n\n methods: {\n onClick () {\n this.$root.$emit(this.modalOpenEvent, {\n target: this.target,\n resource: this.resource,\n title: this.title,\n allSpecific: this.allSpecific\n })\n },\n },\n}\n</script>\n<style lang=\"scss\" scoped>\n.pointer {\n cursor: pointer;\n}\n</style>\n",".pointer {\n cursor: pointer;\n}\n\n/*# sourceMappingURL=CPermissionsButton.vue.map */"]}, media: undefined });
|
|
79521
79548
|
|
|
79522
79549
|
};
|
|
79523
79550
|
/* scoped */
|
|
79524
|
-
const __vue_scope_id__$n = "data-v-
|
|
79551
|
+
const __vue_scope_id__$n = "data-v-7413f73a";
|
|
79525
79552
|
/* module identifier */
|
|
79526
79553
|
const __vue_module_identifier__$n = undefined;
|
|
79527
79554
|
/* functional template */
|
|
@@ -80288,11 +80315,11 @@ __vue_render__$m._withStripped = true;
|
|
|
80288
80315
|
/* style */
|
|
80289
80316
|
const __vue_inject_styles__$r = function (inject) {
|
|
80290
80317
|
if (!inject) return
|
|
80291
|
-
inject("data-v-
|
|
80318
|
+
inject("data-v-5004c9ac_0", { source: ".pointer[data-v-5004c9ac] {\n cursor: pointer;\n}\n\n/*# sourceMappingURL=CPermissionsForm.vue.map */", map: {"version":3,"sources":["/home/fajfa/Kendu/Corteza/packages/corteza-vue/src/components/permissions/CPermissionsForm.vue","CPermissionsForm.vue"],"names":[],"mappings":"AAsQA;EACA,eAAA;ACrQA;;AAEA,+CAA+C","file":"CPermissionsForm.vue","sourcesContent":["<template>\n <b-form @submit.prevent=\"onSubmit\">\n <b-row>\n <b-col\n class=\"role-list\"\n cols=\"12\"\n lg=\"3\"\n >\n <b-list-group class=\"d-none d-lg-block\">\n <b-list-group-item\n v-for=\"r in roles\"\n :key=\"r.roleID\"\n :active=\"r.roleID === currentRole.roleID\"\n active-class=\"primary\"\n variant=\"outline-primary\"\n class=\"text-break pointer\"\n @click=\"onRoleChange(r)\"\n >\n {{ r.name || r.handle || r.roleID }}\n </b-list-group-item>\n </b-list-group>\n <vue-select\n v-model=\"currentRole\"\n key=\"roleID\"\n label=\"name\"\n class=\"mb-4 d-block d-lg-none\"\n :clearable=\"false\"\n :options=\"roles\"\n @input=\"onRoleChange\"\n />\n </b-col>\n <b-col\n class=\"rule-list\"\n cols=\"12\"\n lg=\"9\"\n >\n <rules :rules.sync=\"rules\" />\n </b-col>\n </b-row>\n\n <b-row class=\"footer mt-3\"\n >\n <b-col\n class=\"rule-list text-right\"\n cols=\"9\"\n offset=\"3\"\n >\n <b-button\n type=\"submit\"\n variant=\"primary\"\n :disabled=\"disabled\"\n >\n {{ $t('permissions:ui.save-changes') }}\n </b-button>\n </b-col>\n </b-row>\n </b-form>\n</template>\n<script lang=\"js\">\nimport Rules from './form/Rules.vue'\nimport { VueSelect } from 'vue-select'\nimport { split } from './def.ts'\n\n// Data, Methods, Computed, Props\nexport default {\n i18nOptions: {\n /**\n * Using both, implicit (here) and explicit (at $t()) namespace setting.\n * If we only use implicit the behaviour is flaky.\n */\n namespaces: 'permissions',\n },\n\n components: {\n Rules,\n VueSelect,\n },\n\n props: {\n resource: {\n type: String,\n required: true,\n },\n\n target: {\n type: String,\n required: false,\n default: undefined,\n },\n\n allSpecific: {\n type: Boolean,\n default: false\n },\n\n backendComponentName: {\n type: String,\n default () {\n // Assuming backend service will\n // be equal to (first part of) resource\n if (!this.resource.startsWith('corteza::')) {\n throw Error('unrecognized resource type schema')\n }\n\n // <schema>::<backend-component-name>:...\n return this.resource.split(':')[2]\n },\n },\n },\n\n data () {\n return {\n processing: false,\n\n // List of available permissions (for a specific resource)\n permissions: [],\n\n // List of rules for the current role\n rules: [],\n\n // List of all available roles\n roles: [],\n\n // Current role object\n currentRole: undefined,\n }\n },\n\n computed: {\n dirty () {\n return this.collectChangedRules().length > 0\n },\n\n disabled () {\n return !this.dirty\n },\n\n api () {\n const s = this.backendComponentName\n return this['$' + s.charAt(0).toUpperCase() + s.slice(1) + 'API']\n },\n },\n\n created () {\n this.fetchPermissions()\n this.fetchRoles()\n },\n\n methods: {\n onRoleChange (role) {\n this.currentRole = role\n this.fetchRules(role.roleID)\n },\n\n onSubmit () {\n this.processing = true\n const rules = this.collectChangedRules()\n const { roleID } = this.currentRole\n\n this.api.permissionsUpdate({ roleID, rules }).then(() => {\n this.fetchRules(roleID)\n this.processing = false\n })\n },\n\n async fetchPermissions () {\n // clean loaded rules\n this.rules = []\n this.permissions = []\n this.processing = true\n\n return this.api.permissionsList().then((pp) => {\n this.permissions = this.filterPermissions(pp)\n this.processing = false\n })\n },\n\n async fetchRules (roleID) {\n this.processing = true\n return this.api.permissionsRead({ roleID }).then((rules) => {\n this.rules = this.normalizeRules(rules)\n this.processing = false\n })\n },\n\n async fetchRoles () {\n this.processing = true\n // Roles are always fetched from $SystemAPI.\n return this.$SystemAPI.roleList().then(({ set }) => {\n this.roles = set\n .filter(({ isBypass }) => !isBypass )\n .sort((a, b) => a.roleID.localeCompare(b.roleID))\n\n if (this.roles.length > 0) {\n this.onRoleChange(this.roles[0])\n }\n this.processing = false\n })\n },\n\n normalizeRules (rr) {\n const inherit = 'inherit'\n\n // merges roleRules (subset) with list of all permissions\n const findCurrent = ({ resource, operation }) => {\n if (!rr) {\n return inherit\n }\n\n return (rr.find(r => r.resource === resource && r.operation === operation) || {}).access || inherit\n }\n\n return this.permissions.map((p) => {\n const current = findCurrent(p)\n return { ...p, access: current, current }\n })\n },\n\n // Removes unneeded permissions (ones that do not match resource prop)\n // and translates the rest\n filterPermissions (pp) {\n const [ resourceType ] = this.resource.split('/', 2)\n return pp\n .filter(({ type }) => resourceType === type)\n .map(({ type, op: operation }) => {\n return {\n ...this.describePermission({ resource: type, operation }),\n operation,\n // override resource-type with the actual resource-ID\n resource: this.resource\n }\n })\n },\n\n collectChangedRules () {\n return this.rules.filter(r => r.access !== r.current).map(({ resource, operation, access }) => {\n return { resource, operation, access }\n })\n },\n\n describePermission ({ resource, operation }) {\n const i18nPrefix = split(resource).i18nPrefix + `.operations.${operation}`\n\n let title = ''\n if (this.allSpecific) {\n title = this.$t(`permissions:${i18nPrefix}.all-specific`, { target: this.target, interpolation: { escapeValue: false } })\n } else if (this.target) {\n title = this.$t(`permissions:${i18nPrefix}.specific`, { target: this.target, interpolation: { escapeValue: false } })\n } else {\n title = this.$t(`permissions:${i18nPrefix}.title`)\n }\n\n return {\n title,\n description: this.$t(`permissions:${i18nPrefix}.description`),\n }\n },\n },\n}\n\n</script>\n<style scoped lang=\"scss\">\n.pointer {\n cursor: pointer;\n}\n</style>\n",".pointer {\n cursor: pointer;\n}\n\n/*# sourceMappingURL=CPermissionsForm.vue.map */"]}, media: undefined });
|
|
80292
80319
|
|
|
80293
80320
|
};
|
|
80294
80321
|
/* scoped */
|
|
80295
|
-
const __vue_scope_id__$r = "data-v-
|
|
80322
|
+
const __vue_scope_id__$r = "data-v-5004c9ac";
|
|
80296
80323
|
/* module identifier */
|
|
80297
80324
|
const __vue_module_identifier__$r = undefined;
|
|
80298
80325
|
/* functional template */
|
|
@@ -81508,11 +81535,11 @@ __vue_render__$t._withStripped = true;
|
|
|
81508
81535
|
/* style */
|
|
81509
81536
|
const __vue_inject_styles__$z = function (inject) {
|
|
81510
81537
|
if (!inject) return
|
|
81511
|
-
inject("data-v-
|
|
81538
|
+
inject("data-v-7e37674b_0", { source: ".slide-enter-active[data-v-7e37674b] {\n transition: all 0.3s ease;\n}\n.slide-leave-active[data-v-7e37674b] {\n transition: all 0.8s cubic-bezier(1, 0.5, 0.8, 1);\n}\n.slide-enter[data-v-7e37674b], .slide-leave-to[data-v-7e37674b] {\n transform: translateX(10px);\n opacity: 0;\n}\n\n/*# sourceMappingURL=CPromptToast.vue.map */", map: {"version":3,"sources":["/home/fajfa/Kendu/Corteza/packages/corteza-vue/src/components/prompts/CPromptToast.vue","CPromptToast.vue"],"names":[],"mappings":"AAqJA;EACA,yBAAA;ACpJA;ADsJA;EACA,iDAAA;ACnJA;ADqJA;EAEA,2BAAA;EACA,UAAA;ACnJA;;AAEA,2CAA2C","file":"CPromptToast.vue","sourcesContent":["<template>\n <div>\n <b-toast\n v-for=\"({ prompt, component, passive }) in toasts\"\n :id=\"'wfPromptToast-'+prompt.stateID\"\n :key=\"'wfPromptToast-'+prompt.stateID\"\n :variant=\"pVal(prompt, 'variant', 'primary')\"\n :visible=\"!isActive\"\n solid\n :no-auto-hide=\"!passive\"\n :auto-hide-delay=\"pVal(prompt, 'timeout', defaultTimeout) * 1000\"\n :no-close-button=\"!passive\"\n >\n <template #toast-title>\n <div class=\"d-flex flex-grow-1 align-items-baseline\">\n <strong class=\"mr-auto\">{{ pVal(prompt, 'title', 'Workflow prompt') }}</strong>\n <b-button\n variant=\"link\"\n size=\"sm\"\n v-if=\"!passive && active.length > 1\"\n @click=\"activate(true)\"\n >\n {{ active.length }} waiting\n </b-button>\n </div>\n </template>\n <component\n v-if=\"component\"\n :is=\"component\"\n :payload=\"prompt.payload\"\n :loading=\"isLoading\"\n @submit=\"resumeToast({ input: $event, prompt })\"\n />\n </b-toast>\n </div>\n</template>\n<script>\nimport { mapGetters, mapActions } from 'vuex'\nimport definitions from './kinds/index.ts'\nimport { pVal } from './utils.ts'\n\nexport default {\n name: 'c-prompt-toast',\n\n data () {\n return {\n passive: new Set(),\n }\n },\n\n computed: {\n ...mapGetters({\n prompts: 'wfPrompts/all',\n isActive: 'wfPrompts/isActive',\n isLoading: 'wfPrompts/isLoading',\n }),\n\n withHandlers () {\n return this.prompts\n .filter(({ ref }) => !!definitions[ref] && !!definitions[ref].handler)\n .map(prompt => ({ ...definitions[prompt.ref], prompt }))\n },\n\n withComponents () {\n return this.prompts\n .filter(({ ref }) => !!definitions[ref] && !!definitions[ref].component)\n .map(prompt => ({ ...definitions[prompt.ref], prompt }))\n },\n\n /**\n * All non-passive prompts with components\n */\n active() {\n return this.withComponents.filter(({ passive }) => !passive)\n },\n\n /**\n * Returns list of prompts that we can interpret as toasts: display component is defined\n *\n * Toasts (prompts with components) are displayed in order received but\n * passive (no feedback or input from user required) first and the rest later\n */\n toasts () {\n return [\n ...this.passive.values(),\n ...this.active\n ]\n },\n\n defaultTimeout () {\n return 7\n }\n },\n\n watch: {\n // watch prompts with handlers and when a new one arrives\n // shift it from the stack, resume the prompt and handle it\n withHandlers (hh) {\n if (hh.length > 0) {\n const { handler, prompt } = hh.shift()\n this.resume({ input: {}, prompt }).then(() => {\n handler.call(this, prompt.payload)\n })\n }\n },\n\n /**\n * Make a copy of prompt if it is defined as passive\n *\n * We do this because we do not want it to be removed right away\n * but through a toast component's timeout\n */\n prompts: {\n immediate: true,\n handler () {\n this.withComponents.forEach(p => {\n if (p.passive) {\n this.passive.add(p)\n }\n })\n },\n },\n },\n\n methods: {\n ...mapActions({\n resume: 'wfPrompts/resume',\n activate: 'wfPrompts/activate',\n }),\n\n resumeToast (values) {\n // Only reset input if prompt is kept open\n if (values.input && values.input.keep) {\n values.input = {}\n } else {\n // Otherwise remove prompt from toasts\n this.toasts = this.toasts.filter(({ prompt }) => prompt.stateID !== values.prompt.stateID)\n }\n\n this.resume(values)\n },\n\n pVal (prompt, k, def = undefined) {\n return pVal(prompt.payload, k, def)\n },\n },\n}\n</script>\n<style scoped lang=\"scss\">\n.slide-enter-active {\n transition: all .3s ease;\n}\n.slide-leave-active {\n transition: all .8s cubic-bezier(1.0, 0.5, 0.8, 1.0);\n}\n.slide-enter, .slide-leave-to\n/* .slide-leave-active below version 2.1.8 */ {\n transform: translateX(10px);\n opacity: 0;\n}\n</style>\n",".slide-enter-active {\n transition: all 0.3s ease;\n}\n\n.slide-leave-active {\n transition: all 0.8s cubic-bezier(1, 0.5, 0.8, 1);\n}\n\n.slide-enter, .slide-leave-to {\n transform: translateX(10px);\n opacity: 0;\n}\n\n/*# sourceMappingURL=CPromptToast.vue.map */"]}, media: undefined });
|
|
81512
81539
|
|
|
81513
81540
|
};
|
|
81514
81541
|
/* scoped */
|
|
81515
|
-
const __vue_scope_id__$z = "data-v-
|
|
81542
|
+
const __vue_scope_id__$z = "data-v-7e37674b";
|
|
81516
81543
|
/* module identifier */
|
|
81517
81544
|
const __vue_module_identifier__$z = undefined;
|
|
81518
81545
|
/* functional template */
|
|
@@ -81976,11 +82003,11 @@ __vue_render__$w._withStripped = true;
|
|
|
81976
82003
|
/* style */
|
|
81977
82004
|
const __vue_inject_styles__$C = function (inject) {
|
|
81978
82005
|
if (!inject) return
|
|
81979
|
-
inject("data-v-
|
|
82006
|
+
inject("data-v-4482739a_0", { source: ".logo img[data-v-4482739a] {\n animation: pulse-data-v-4482739a 4.2s infinite;\n}\n@keyframes pulse-data-v-4482739a {\n0% {\n opacity: 0;\n}\n65% {\n opacity: 1;\n}\n100% {\n opacity: 0;\n}\n}\n\n/*# sourceMappingURL=CLoaderLogo.vue.map */", map: {"version":3,"sources":["/home/fajfa/Kendu/Corteza/packages/corteza-vue/src/components/loader/CLoaderLogo.vue","CLoaderLogo.vue"],"names":[],"mappings":"AA0BA;EACA,8CAAA;ACzBA;AD4BA;AACA;IACA,UAAA;AC1BE;AD4BF;IACA,UAAA;AC1BE;AD4BF;IACA,UAAA;AC1BE;AACF;;AAEA,0CAA0C","file":"CLoaderLogo.vue","sourcesContent":["<template>\n <b-container\n fluid\n class=\"d-flex justify-content-center vh-100 logo\"\n >\n <img\n v-if=\"logo\"\n :src=\"logo\"\n class=\"w-25 my-auto\"\n >\n </b-container>\n</template>\n\n<script>\nexport default {\n props: {\n logo: {\n type: String,\n default: () => ''\n },\n },\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.logo {\n img {\n animation: pulse 4.2s infinite;\n }\n\n @keyframes pulse {\n 0% {\n opacity: 0;\n }\n 65% {\n opacity: 1;\n }\n 100% {\n opacity: 0;\n }\n }\n}\n</style>\n",".logo img {\n animation: pulse 4.2s infinite;\n}\n@keyframes pulse {\n 0% {\n opacity: 0;\n }\n 65% {\n opacity: 1;\n }\n 100% {\n opacity: 0;\n }\n}\n\n/*# sourceMappingURL=CLoaderLogo.vue.map */"]}, media: undefined });
|
|
81980
82007
|
|
|
81981
82008
|
};
|
|
81982
82009
|
/* scoped */
|
|
81983
|
-
const __vue_scope_id__$C = "data-v-
|
|
82010
|
+
const __vue_scope_id__$C = "data-v-4482739a";
|
|
81984
82011
|
/* module identifier */
|
|
81985
82012
|
const __vue_module_identifier__$C = undefined;
|
|
81986
82013
|
/* functional template */
|
|
@@ -82490,11 +82517,11 @@ __vue_render__$x._withStripped = true;
|
|
|
82490
82517
|
/* style */
|
|
82491
82518
|
const __vue_inject_styles__$D = function (inject) {
|
|
82492
82519
|
if (!inject) return
|
|
82493
|
-
inject("data-v-
|
|
82520
|
+
inject("data-v-ff5125a8_0", { source: ".icon-logo[data-v-ff5125a8] {\n height: calc(64px / 2);\n background-repeat: no-repeat;\n background-position: center;\n}\n.nav-icon[data-v-ff5125a8] {\n width: 40px;\n height: 40px;\n}\n.nav-user-icon[data-v-ff5125a8] {\n width: 50px;\n height: 50px;\n}\n.header-navigation[data-v-ff5125a8] {\n width: 100vw;\n height: 64px;\n background-color: #F3F3F5 !important;\n}\n.header-navigation h2[data-v-ff5125a8] {\n padding-left: calc(0.5rem + 2px);\n}\n.spacer[data-v-ff5125a8] {\n min-width: 0px;\n -webkit-transition: min-width 0.15s ease-in-out;\n -moz-transition: min-width 0.15s ease-in-out;\n -o-transition: min-width 0.15s ease-in-out;\n transition: min-width 0.15s ease-in-out;\n}\n.spacer.expanded[data-v-ff5125a8] {\n min-width: calc(320px - 42px);\n -webkit-transition: min-width 0.2s ease-in-out;\n -moz-transition: min-width 0.2s ease-in-out;\n -o-transition: min-width 0.2s ease-in-out;\n transition: min-width 0.2s ease-in-out;\n}\n\n/*# sourceMappingURL=CTopbar.vue.map */", map: {"version":3,"sources":["/home/fajfa/Kendu/Corteza/packages/corteza-vue/src/components/navigation/CTopbar.vue","CTopbar.vue"],"names":[],"mappings":"AA2MA;EACA,sBAAA;EACA,4BAAA;EACA,2BAAA;AC1MA;AD6MA;EACA,WAVA;EAWA,YAXA;AC/LA;AD6MA;EACA,WAdA;EAeA,YAfA;AC3LA;AD6MA;EACA,YAAA;EACA,YAvBA;EAwBA,oCAAA;AC1MA;AD4MA;EACA,gCAAA;AC1MA;AD8MA;EACA,cAAA;EACA,+CAAA;EACA,4CAAA;EACA,0CAAA;EACA,uCAAA;AC3MA;AD6MA;EACA,6BAAA;EACA,8CAAA;EACA,2CAAA;EACA,yCAAA;EACA,sCAAA;AC3MA;;AAEA,sCAAsC","file":"CTopbar.vue","sourcesContent":["<template>\n <div class=\"header-navigation d-flex align-items-center justify-content-between sticky-top pr-3 pl-5 \">\n <div\n class=\"d-flex text-nowrap flex-grow-1 align-items-center header h-100 w-100\"\n >\n <template>\n <div\n class=\"spacer\"\n :class=\"{\n 'expanded': sidebarPinned,\n }\"\n />\n </template>\n\n <div\n class=\"d-flex align-items-center ml-2 text-truncate mr-auto h-100\"\n >\n <h2\n class=\"d-none d-sm-block mb-0\"\n >\n <slot name=\"title\" />\n </h2>\n\n </div>\n\n <div class=\"ml-3\">\n <slot name=\"tools\" />\n </div>\n\n <b-button\n v-if=\"!hideAppSelector\"\n variant=\"outline-light\"\n :href=\"appSelectorURL\"\n size=\"lg\"\n class=\"d-flex align-items-center justify-content-center text-dark border-0 nav-icon rounded-circle ml-2\"\n >\n <font-awesome-icon\n class=\"m-0 h5\"\n :icon=\"['fas', 'grip-horizontal']\"\n />\n </b-button>\n\n <b-dropdown\n size=\"lg\"\n variant=\"outline-light\"\n class=\"nav-icon mx-1\"\n toggle-class=\"text-decoration-none text-dark rounded-circle border-0 w-100\"\n menu-class=\"border-0 shadow-sm text-dark font-weight-bold mt-2\"\n right\n no-caret\n >\n <template #button-content>\n <div\n class=\"d-flex align-items-center justify-content-center\"\n >\n <font-awesome-icon\n class=\"m-0 h5\"\n :icon=\"['far', 'question-circle']\"\n />\n <span class=\"sr-only\">\n Help\n </span>\n </div>\n </template>\n <div>\n <slot name=\"help-dropdown\" />\n </div>\n <b-dropdown-item\n href=\"https://forum.cortezaproject.org/\"\n target=\"_blank\"\n >\n {{ labels.helpForum }}\n </b-dropdown-item>\n <b-dropdown-item\n :href=\"documentationURL\"\n target=\"_blank\"\n >\n {{ labels.helpDocumentation }}\n </b-dropdown-item>\n <b-dropdown-item\n href=\"mailto:info@crust.tech\"\n target=\"_blank\"\n >\n {{ labels.helpFeedback }}\n </b-dropdown-item>\n <b-dropdown-divider />\n <b-dropdown-item\n disabled\n class=\"small\"\n >\n {{ labels.helpVersion }}\n <br>\n {{ frontendVersion }}\n </b-dropdown-item>\n </b-dropdown>\n <b-dropdown\n data-v-onboarding=\"profile\"\n size=\"lg\"\n variant=\"outline-light\"\n class=\"nav-user-icon\"\n toggle-class=\"nav-icon text-decoration-none text-dark rounded-circle border\"\n menu-class=\"border-0 shadow-sm text-dark font-weight-bold mt-2\"\n right\n no-caret\n >\n <template #button-content>\n <div\n class=\"d-flex align-items-center justify-content-center\"\n >\n <font-awesome-icon\n class=\"m-0 h5\"\n :icon=\"['far', 'user']\"\n />\n <span class=\"sr-only\">\n {{ labels.helpForum }}\n </span>\n </div>\n </template>\n <b-dropdown-text class=\"text-muted mb-2\">\n {{ labels.userSettingsLoggedInAs }}\n </b-dropdown-text>\n <div>\n <slot name=\"avatar-dropdown\" />\n </div>\n <b-dropdown-item\n :href=\"userProfileURL\"\n target=\"_blank\"\n >\n {{ labels.userSettingsProfile }}\n </b-dropdown-item>\n <b-dropdown-item\n :href=\"changePasswordURL\"\n target=\"_blank\"\n >\n {{ labels.userSettingsChangePassword }}\n </b-dropdown-item>\n <b-dropdown-divider />\n <b-dropdown-item\n href=\"\"\n @click=\"$auth.logout()\"\n class=\"mt-2\"\n >\n {{ labels.userSettingsLogout }}\n </b-dropdown-item>\n </b-dropdown>\n </div>\n </div>\n</template>\n\n<script>\nexport default {\n props: {\n sidebarPinned: {\n type: Boolean,\n required: true,\n default: false,\n },\n\n hideAppSelector: {\n type: Boolean,\n required: false,\n default: false,\n },\n\n appSelectorURL: {\n type: String,\n default: '../'\n },\n\n labels: {\n type: Object,\n required: true,\n },\n },\n\n computed: {\n userProfileURL () {\n return this.$auth.cortezaAuthURL\n },\n\n changePasswordURL () {\n return `${this.$auth.cortezaAuthURL}/change-password`\n },\n\n documentationURL () {\n const [year, month] = VERSION.split('.')\n return `https://docs.cortezaproject.org/corteza-docs/${year}.${month}/index.html`\n },\n\n frontendVersion () {\n /* eslint-disable no-undef */\n return VERSION\n },\n }\n}\n</script>\n\n<style lang=\"scss\" scoped>\n$header-height: 64px;\n$nav-width: 320px;\n$nav-icon-size: 40px;\n$nav-user-icon-size: 50px;\n\n.icon-logo {\n height: calc(#{$header-height} / 2);\n background-repeat: no-repeat;\n background-position: center;\n}\n\n.nav-icon {\n width: $nav-icon-size;\n height: $nav-icon-size;\n}\n\n.nav-user-icon {\n width: $nav-user-icon-size;\n height: $nav-user-icon-size;\n}\n\n.header-navigation {\n width: 100vw;\n height: $header-height;\n background-color: #F3F3F5 !important;\n\n h2 {\n padding-left: calc(0.5rem + 2px);\n }\n}\n\n.spacer {\n min-width: 0px;\n -webkit-transition: min-width 0.15s ease-in-out;\n -moz-transition: min-width 0.15s ease-in-out;\n -o-transition: min-width 0.15s ease-in-out;\n transition: min-width 0.15s ease-in-out;\n\n &.expanded {\n min-width: calc(#{$nav-width} - 42px);\n -webkit-transition: min-width 0.2s ease-in-out;\n -moz-transition: min-width 0.2s ease-in-out;\n -o-transition: min-width 0.2s ease-in-out;\n transition: min-width 0.2s ease-in-out;\n }\n}\n</style>\n",".icon-logo {\n height: calc(64px / 2);\n background-repeat: no-repeat;\n background-position: center;\n}\n\n.nav-icon {\n width: 40px;\n height: 40px;\n}\n\n.nav-user-icon {\n width: 50px;\n height: 50px;\n}\n\n.header-navigation {\n width: 100vw;\n height: 64px;\n background-color: #F3F3F5 !important;\n}\n.header-navigation h2 {\n padding-left: calc(0.5rem + 2px);\n}\n\n.spacer {\n min-width: 0px;\n -webkit-transition: min-width 0.15s ease-in-out;\n -moz-transition: min-width 0.15s ease-in-out;\n -o-transition: min-width 0.15s ease-in-out;\n transition: min-width 0.15s ease-in-out;\n}\n.spacer.expanded {\n min-width: calc(320px - 42px);\n -webkit-transition: min-width 0.2s ease-in-out;\n -moz-transition: min-width 0.2s ease-in-out;\n -o-transition: min-width 0.2s ease-in-out;\n transition: min-width 0.2s ease-in-out;\n}\n\n/*# sourceMappingURL=CTopbar.vue.map */"]}, media: undefined });
|
|
82494
82521
|
|
|
82495
82522
|
};
|
|
82496
82523
|
/* scoped */
|
|
82497
|
-
const __vue_scope_id__$D = "data-v-
|
|
82524
|
+
const __vue_scope_id__$D = "data-v-ff5125a8";
|
|
82498
82525
|
/* module identifier */
|
|
82499
82526
|
const __vue_module_identifier__$D = undefined;
|
|
82500
82527
|
/* functional template */
|
|
@@ -83054,12 +83081,12 @@ __vue_render__$y._withStripped = true;
|
|
|
83054
83081
|
/* style */
|
|
83055
83082
|
const __vue_inject_styles__$E = function (inject) {
|
|
83056
83083
|
if (!inject) return
|
|
83057
|
-
inject("data-v-
|
|
83058
|
-
,inject("data-v-
|
|
83084
|
+
inject("data-v-6a351e13_0", { source: ".tab[data-v-6a351e13] {\n z-index: 1021;\n top: 0;\n height: 64px;\n width: 66px;\n}\n.icon[data-v-6a351e13] {\n max-height: 40px;\n max-width: 40px;\n}\n.logo[data-v-6a351e13] {\n max-height: 40px;\n}\n.sidebar-header[data-v-6a351e13] {\n height: 64px;\n}\n\n/*# sourceMappingURL=CSidebar.vue.map */", map: {"version":3,"sources":["/home/fajfa/Kendu/Corteza/packages/corteza-vue/src/components/navigation/CSidebar.vue","CSidebar.vue"],"names":[],"mappings":"AAiSA;EACA,aAAA;EACA,MAAA;EACA,YALA;EAMA,WAAA;AChSA;ADmSA;EACA,gBAAA;EACA,eAAA;AChSA;ADmSA;EACA,gBAAA;AChSA;ADmSA;EACA,YAnBA;AC7QA;;AAEA,uCAAuC","file":"CSidebar.vue","sourcesContent":["<template>\n <div>\n <div\n @mouseleave=\"onHover(false)\"\n >\n <b-sidebar\n v-model=\"isExpanded\"\n :sidebar-class=\"`sidebar ${isExpanded ? 'expanded' : ''}`\"\n :header-class=\"`d-block sidebar-header ${isExpanded ? 'expanded border-bottom p-2' : ''}`\"\n :body-class=\"`bg-white ${isExpanded ? 'py-2 px-3' : ''}`\"\n :footer-class=\"`bg-white rounded-right ${isExpanded ? 'p-2' : ''}`\"\n :no-header=\"!isExpanded\"\n :backdrop=\"isMobile\"\n :shadow=\"isExpanded\"\n no-slide\n no-close-on-route-change\n no-close-on-esc\n >\n <template #header>\n <div\n class=\"d-flex align-items-center justify-content-between px-2\"\n style=\"height: 50px;\"\n >\n <img\n class=\"logo w-auto border-0\"\n :src=\"logo\"\n >\n\n <b-button\n v-if=\"isMobile\"\n variant=\"outline-light border-0\"\n class=\"d-flex align-items-center justify-content-center p-2\"\n @click=\"closeSidebar()\"\n >\n <font-awesome-icon\n :icon=\"['fas', 'times']\"\n class=\"h6 mb-0 text-dark\"\n />\n </b-button>\n\n <b-button\n v-else\n variant=\"outline-light border-0\"\n class=\"d-flex align-items-center justify-content-center p-2\"\n @click=\"togglePin()\"\n >\n <font-awesome-icon\n :icon=\"['fas', 'thumbtack']\"\n :class=\"`h6 mb-0 ${isPinned ? 'text-primary' : 'text-secondary'}`\"\n />\n </b-button>\n </div>\n\n <div\n v-if=\"!isExpanded\"\n class=\"d-flex align-items-center justify-content-center my-3\"\n >\n <b-button\n variant=\"link\"\n @click=\"togglePin()\"\n >\n <font-awesome-icon\n :icon=\"['fas', 'chevron-right']\"\n class=\"h6 mb-0\"\n />\n </b-button>\n </div>\n\n <div\n v-if=\"isExpanded\"\n class=\"px-2\"\n >\n <slot\n name=\"header-expanded\"\n />\n </div>\n\n\n <hr\n v-if=\"!isExpanded\"\n class=\"my-2\"\n >\n </template>\n\n <slot\n v-if=\"isExpanded\"\n name=\"body-expanded\"\n />\n\n <template #footer>\n <slot\n v-if=\"isExpanded\"\n name=\"footer-expanded\"\n />\n </template>\n </b-sidebar>\n </div>\n\n <div\n class=\"d-flex align-items-center justify-content-center tab position-absolute p-2\"\n >\n <b-button\n v-if=\"expandOnHover && !disabledRoutes.includes($route.name)\"\n variant=\"outline-light\"\n size=\"lg\"\n class=\"d-flex align-items-center border-0\"\n @mouseover=\"onHover(true)\"\n >\n <font-awesome-icon\n :icon=\"['fas', 'bars']\"\n class=\"h4 mb-0 text-primary\"\n />\n </b-button>\n\n <b-button\n v-else-if=\"!disabledRoutes.includes($route.name)\"\n variant=\"outline-light\"\n size=\"lg\"\n class=\"d-flex align-items-center p-2 border-0\"\n :to=\"{ name: 'root' }\"\n >\n <font-awesome-icon\n :icon=\"['fas', 'home']\"\n class=\"h4 mb-0 text-primary\"\n />\n </b-button>\n\n <div\n v-else\n class=\"d-flex align-items-center border-0 p-2\"\n >\n <img\n class=\"icon w-auto border-0\"\n :src=\"icon\"\n >\n </div>\n </div>\n </div>\n</template>\n\n<script>\nexport default {\n props: {\n expanded: {\n type: Boolean,\n default: false,\n },\n\n pinned: {\n type: Boolean,\n default: false,\n },\n\n expandOnHover: {\n type: Boolean,\n default: false,\n },\n\n disabledRoutes: {\n type: Array,\n default: () => [],\n },\n\n icon: {\n type: String,\n default: () => ''\n },\n\n logo: {\n type: String,\n default: () => ''\n },\n },\n\n data () {\n return {\n sidebar_settings : {}\n }\n },\n\n computed: {\n isExpanded: {\n get () {\n return this.expanded\n },\n\n set (expanded) {\n this.$emit('update:expanded', expanded)\n },\n },\n\n isPinned: {\n get () {\n return this.pinned\n },\n\n set (pinned) {\n this.$emit('update:pinned', pinned)\n },\n },\n\n isMobile () {\n return window.innerWidth < 576\n },\n },\n\n created () {\n this.$root.$on('close-sidebar', () => {\n this.isExpanded = false\n this.isPinned = false\n })\n },\n\n beforeDestroy () {\n this.$root.$off('close-sidebar')\n },\n\n watch: {\n '$route.name': {\n immediate: true,\n handler (name) {\n // If sidebar should be disabled on route, close and unpin when navigating to route\n if (this.disabledRoutes.includes(name)) {\n this.isPinned = false\n this.isExpanded = false\n } else if(this.expandOnHover){\n this.defaultSidebarAppearance()\n }\n },\n },\n },\n\n methods: {\n onHover (expand) {\n if (!this.pinned && this.expandOnHover) {\n setTimeout(() => {\n this.isExpanded = expand\n }, expand ? 0 : 100)\n }\n },\n\n togglePin () {\n this.saveSettings(!this.isPinned)\n this.isPinned = !this.isPinned\n },\n\n defaultSidebarAppearance () {\n const localstorage_settings = JSON.parse(window.localStorage.getItem('sidebar_settings'))\n if (localstorage_settings) {\n this.sidebar_settings = localstorage_settings\n }\n const app_sidebar = (localstorage_settings || {})[this.$root.$options.name]\n if (!this.isMobile) {\n if (app_sidebar) {\n this.isExpanded = app_sidebar.pinned\n this.isPinned = app_sidebar.pinned\n } else {\n this.openSidebar()\n }\n } else {\n this.closeSidebar()\n }\n },\n\n saveSettings (pinned) {\n if (this.sidebar_settings[this.$root.$options.name]) {\n this.sidebar_settings[this.$root.$options.name].pinned = pinned\n } else {\n this.sidebar_settings[this.$root.$options.name] = { pinned: pinned }\n }\n window.localStorage.setItem('sidebar_settings', JSON.stringify(this.sidebar_settings))\n },\n\n openSidebar () {\n this.isPinned = true\n this.isExpanded = true\n },\n\n closeSidebar () {\n this.isPinned = false\n this.isExpanded = false\n },\n },\n}\n</script>\n\n<style lang=\"scss\" scoped>\n$header-height: 64px;\n\n.tab {\n z-index: 1021;\n top: 0;\n height: $header-height;\n width: 66px;\n}\n\n.icon {\n max-height: 40px;\n max-width: 40px;\n}\n\n.logo {\n max-height: 40px;\n}\n\n.sidebar-header {\n height: $header-height;\n}\n</style>\n\n<style lang=\"scss\">\n$nav-width: 320px;\n$sidebar-bg: #F4F7FA;\n\n.sidebar {\n display: flex !important;\n left: calc(-#{$nav-width}) !important;\n -webkit-transition: left 0.15s ease-in-out;\n -moz-transition: left 0.15s ease-in-out;\n -o-transition: left 0.15s ease-in-out;\n transition: left 0.15s ease-in-out;\n\n header {\n background-color: white;\n\n &.expanded {\n background-color: $sidebar-bg !important;\n }\n }\n\n &.expanded {\n left: 0 !important;\n -webkit-transition: left 0.2s ease-in-out;\n -moz-transition: left 0.2s ease-in-out;\n -o-transition: left 0.2s ease-in-out;\n transition: left 0.2s ease-in-out;\n }\n}\n</style>\n",".tab {\n z-index: 1021;\n top: 0;\n height: 64px;\n width: 66px;\n}\n\n.icon {\n max-height: 40px;\n max-width: 40px;\n}\n\n.logo {\n max-height: 40px;\n}\n\n.sidebar-header {\n height: 64px;\n}\n\n/*# sourceMappingURL=CSidebar.vue.map */"]}, media: undefined })
|
|
83085
|
+
,inject("data-v-6a351e13_1", { source: ".sidebar {\n display: flex !important;\n left: calc(-320px) !important;\n -webkit-transition: left 0.15s ease-in-out;\n -moz-transition: left 0.15s ease-in-out;\n -o-transition: left 0.15s ease-in-out;\n transition: left 0.15s ease-in-out;\n}\n.sidebar header {\n background-color: white;\n}\n.sidebar header.expanded {\n background-color: #F4F7FA !important;\n}\n.sidebar.expanded {\n left: 0 !important;\n -webkit-transition: left 0.2s ease-in-out;\n -moz-transition: left 0.2s ease-in-out;\n -o-transition: left 0.2s ease-in-out;\n transition: left 0.2s ease-in-out;\n}\n\n/*# sourceMappingURL=CSidebar.vue.map */", map: {"version":3,"sources":["/home/fajfa/Kendu/Corteza/packages/corteza-vue/src/components/navigation/CSidebar.vue","CSidebar.vue"],"names":[],"mappings":"AA0TA;EACA,wBAAA;EACA,6BAAA;EACA,0CAAA;EACA,uCAAA;EACA,qCAAA;EACA,kCAAA;ACzTA;AD2TA;EACA,uBAAA;ACzTA;AD2TA;EACA,oCAAA;ACzTA;AD6TA;EACA,kBAAA;EACA,yCAAA;EACA,sCAAA;EACA,oCAAA;EACA,iCAAA;AC3TA;;AAEA,uCAAuC","file":"CSidebar.vue","sourcesContent":["<template>\n <div>\n <div\n @mouseleave=\"onHover(false)\"\n >\n <b-sidebar\n v-model=\"isExpanded\"\n :sidebar-class=\"`sidebar ${isExpanded ? 'expanded' : ''}`\"\n :header-class=\"`d-block sidebar-header ${isExpanded ? 'expanded border-bottom p-2' : ''}`\"\n :body-class=\"`bg-white ${isExpanded ? 'py-2 px-3' : ''}`\"\n :footer-class=\"`bg-white rounded-right ${isExpanded ? 'p-2' : ''}`\"\n :no-header=\"!isExpanded\"\n :backdrop=\"isMobile\"\n :shadow=\"isExpanded\"\n no-slide\n no-close-on-route-change\n no-close-on-esc\n >\n <template #header>\n <div\n class=\"d-flex align-items-center justify-content-between px-2\"\n style=\"height: 50px;\"\n >\n <img\n class=\"logo w-auto border-0\"\n :src=\"logo\"\n >\n\n <b-button\n v-if=\"isMobile\"\n variant=\"outline-light border-0\"\n class=\"d-flex align-items-center justify-content-center p-2\"\n @click=\"closeSidebar()\"\n >\n <font-awesome-icon\n :icon=\"['fas', 'times']\"\n class=\"h6 mb-0 text-dark\"\n />\n </b-button>\n\n <b-button\n v-else\n variant=\"outline-light border-0\"\n class=\"d-flex align-items-center justify-content-center p-2\"\n @click=\"togglePin()\"\n >\n <font-awesome-icon\n :icon=\"['fas', 'thumbtack']\"\n :class=\"`h6 mb-0 ${isPinned ? 'text-primary' : 'text-secondary'}`\"\n />\n </b-button>\n </div>\n\n <div\n v-if=\"!isExpanded\"\n class=\"d-flex align-items-center justify-content-center my-3\"\n >\n <b-button\n variant=\"link\"\n @click=\"togglePin()\"\n >\n <font-awesome-icon\n :icon=\"['fas', 'chevron-right']\"\n class=\"h6 mb-0\"\n />\n </b-button>\n </div>\n\n <div\n v-if=\"isExpanded\"\n class=\"px-2\"\n >\n <slot\n name=\"header-expanded\"\n />\n </div>\n\n\n <hr\n v-if=\"!isExpanded\"\n class=\"my-2\"\n >\n </template>\n\n <slot\n v-if=\"isExpanded\"\n name=\"body-expanded\"\n />\n\n <template #footer>\n <slot\n v-if=\"isExpanded\"\n name=\"footer-expanded\"\n />\n </template>\n </b-sidebar>\n </div>\n\n <div\n class=\"d-flex align-items-center justify-content-center tab position-absolute p-2\"\n >\n <b-button\n v-if=\"expandOnHover && !disabledRoutes.includes($route.name)\"\n variant=\"outline-light\"\n size=\"lg\"\n class=\"d-flex align-items-center border-0\"\n @mouseover=\"onHover(true)\"\n >\n <font-awesome-icon\n :icon=\"['fas', 'bars']\"\n class=\"h4 mb-0 text-primary\"\n />\n </b-button>\n\n <b-button\n v-else-if=\"!disabledRoutes.includes($route.name)\"\n variant=\"outline-light\"\n size=\"lg\"\n class=\"d-flex align-items-center p-2 border-0\"\n :to=\"{ name: 'root' }\"\n >\n <font-awesome-icon\n :icon=\"['fas', 'home']\"\n class=\"h4 mb-0 text-primary\"\n />\n </b-button>\n\n <div\n v-else\n class=\"d-flex align-items-center border-0 p-2\"\n >\n <img\n class=\"icon w-auto border-0\"\n :src=\"icon\"\n >\n </div>\n </div>\n </div>\n</template>\n\n<script>\nexport default {\n props: {\n expanded: {\n type: Boolean,\n default: false,\n },\n\n pinned: {\n type: Boolean,\n default: false,\n },\n\n expandOnHover: {\n type: Boolean,\n default: false,\n },\n\n disabledRoutes: {\n type: Array,\n default: () => [],\n },\n\n icon: {\n type: String,\n default: () => ''\n },\n\n logo: {\n type: String,\n default: () => ''\n },\n },\n\n data () {\n return {\n sidebar_settings : {}\n }\n },\n\n computed: {\n isExpanded: {\n get () {\n return this.expanded\n },\n\n set (expanded) {\n this.$emit('update:expanded', expanded)\n },\n },\n\n isPinned: {\n get () {\n return this.pinned\n },\n\n set (pinned) {\n this.$emit('update:pinned', pinned)\n },\n },\n\n isMobile () {\n return window.innerWidth < 576\n },\n },\n\n created () {\n this.$root.$on('close-sidebar', () => {\n this.isExpanded = false\n this.isPinned = false\n })\n },\n\n beforeDestroy () {\n this.$root.$off('close-sidebar')\n },\n\n watch: {\n '$route.name': {\n immediate: true,\n handler (name) {\n // If sidebar should be disabled on route, close and unpin when navigating to route\n if (this.disabledRoutes.includes(name)) {\n this.isPinned = false\n this.isExpanded = false\n } else if(this.expandOnHover){\n this.defaultSidebarAppearance()\n }\n },\n },\n },\n\n methods: {\n onHover (expand) {\n if (!this.pinned && this.expandOnHover) {\n setTimeout(() => {\n this.isExpanded = expand\n }, expand ? 0 : 100)\n }\n },\n\n togglePin () {\n this.saveSettings(!this.isPinned)\n this.isPinned = !this.isPinned\n },\n\n defaultSidebarAppearance () {\n const localstorage_settings = JSON.parse(window.localStorage.getItem('sidebar_settings'))\n if (localstorage_settings) {\n this.sidebar_settings = localstorage_settings\n }\n const app_sidebar = (localstorage_settings || {})[this.$root.$options.name]\n if (!this.isMobile) {\n if (app_sidebar) {\n this.isExpanded = app_sidebar.pinned\n this.isPinned = app_sidebar.pinned\n } else {\n this.openSidebar()\n }\n } else {\n this.closeSidebar()\n }\n },\n\n saveSettings (pinned) {\n if (this.sidebar_settings[this.$root.$options.name]) {\n this.sidebar_settings[this.$root.$options.name].pinned = pinned\n } else {\n this.sidebar_settings[this.$root.$options.name] = { pinned: pinned }\n }\n window.localStorage.setItem('sidebar_settings', JSON.stringify(this.sidebar_settings))\n },\n\n openSidebar () {\n this.isPinned = true\n this.isExpanded = true\n },\n\n closeSidebar () {\n this.isPinned = false\n this.isExpanded = false\n },\n },\n}\n</script>\n\n<style lang=\"scss\" scoped>\n$header-height: 64px;\n\n.tab {\n z-index: 1021;\n top: 0;\n height: $header-height;\n width: 66px;\n}\n\n.icon {\n max-height: 40px;\n max-width: 40px;\n}\n\n.logo {\n max-height: 40px;\n}\n\n.sidebar-header {\n height: $header-height;\n}\n</style>\n\n<style lang=\"scss\">\n$nav-width: 320px;\n$sidebar-bg: #F4F7FA;\n\n.sidebar {\n display: flex !important;\n left: calc(-#{$nav-width}) !important;\n -webkit-transition: left 0.15s ease-in-out;\n -moz-transition: left 0.15s ease-in-out;\n -o-transition: left 0.15s ease-in-out;\n transition: left 0.15s ease-in-out;\n\n header {\n background-color: white;\n\n &.expanded {\n background-color: $sidebar-bg !important;\n }\n }\n\n &.expanded {\n left: 0 !important;\n -webkit-transition: left 0.2s ease-in-out;\n -moz-transition: left 0.2s ease-in-out;\n -o-transition: left 0.2s ease-in-out;\n transition: left 0.2s ease-in-out;\n }\n}\n</style>\n",".sidebar {\n display: flex !important;\n left: calc(-320px) !important;\n -webkit-transition: left 0.15s ease-in-out;\n -moz-transition: left 0.15s ease-in-out;\n -o-transition: left 0.15s ease-in-out;\n transition: left 0.15s ease-in-out;\n}\n.sidebar header {\n background-color: white;\n}\n.sidebar header.expanded {\n background-color: #F4F7FA !important;\n}\n.sidebar.expanded {\n left: 0 !important;\n -webkit-transition: left 0.2s ease-in-out;\n -moz-transition: left 0.2s ease-in-out;\n -o-transition: left 0.2s ease-in-out;\n transition: left 0.2s ease-in-out;\n}\n\n/*# sourceMappingURL=CSidebar.vue.map */"]}, media: undefined });
|
|
83059
83086
|
|
|
83060
83087
|
};
|
|
83061
83088
|
/* scoped */
|
|
83062
|
-
const __vue_scope_id__$E = "data-v-
|
|
83089
|
+
const __vue_scope_id__$E = "data-v-6a351e13";
|
|
83063
83090
|
/* module identifier */
|
|
83064
83091
|
const __vue_module_identifier__$E = undefined;
|
|
83065
83092
|
/* functional template */
|
|
@@ -83364,11 +83391,11 @@ __vue_render__$z._withStripped = true;
|
|
|
83364
83391
|
/* style */
|
|
83365
83392
|
const __vue_inject_styles__$F = function (inject) {
|
|
83366
83393
|
if (!inject) return
|
|
83367
|
-
inject("data-v-
|
|
83394
|
+
inject("data-v-48e0e128_0", { source: ".pointer-none[data-v-48e0e128] {\n pointer-events: none;\n}\n.svg-inline--fa[data-v-48e0e128] {\n width: 30px;\n}\n.nav-item > span > .title[data-v-48e0e128] {\n font-family: \"Poppins-Regular\";\n}\n.nav-active > span > .icon[data-v-48e0e128] {\n color: #4D7281;\n}\n.nav-active > span > .title[data-v-48e0e128] {\n font-family: \"Poppins-SemiBold\";\n}\n\n/*# sourceMappingURL=CSidebarNavItems.vue.map */", map: {"version":3,"sources":["/home/fajfa/Kendu/Corteza/packages/corteza-vue/src/components/navigation/CSidebarNavItems.vue","CSidebarNavItems.vue"],"names":[],"mappings":"AA+IA;EACA,oBAAA;AC9IA;ADiJA;EACA,WAAA;AC9IA;ADkJA;EACA,8BAAA;AC/IA;ADoJA;EACA,cAAA;ACjJA;ADoJA;EACA,+BAAA;AClJA;;AAEA,+CAA+C","file":"CSidebarNavItems.vue","sourcesContent":["<template>\n <div class=\"nav-sidebar\">\n <b-button\n v-for=\"({page = {}, params = {}, children = []}, index) of items\"\n :key=\"index\"\n variant=\"link\"\n class=\"w-100 text-left text-dark text-decoration-none p-0 pt-2 nav-item\"\n active-class=\"nav-active\"\n exact-active-class=\"nav-active\"\n :to=\"{ name: page.name || defaultRouteName, params }\"\n >\n <span\n class=\"d-inline-block w-75 text-nowrap text-truncate\"\n @click=\"closeSidebar()\"\n >\n <font-awesome-icon\n v-if=\"page.icon\"\n class=\"icon\"\n :icon=\"page.icon\"\n />\n <span\n class=\"title\"\n >\n {{ page.title }}\n </span>\n </span>\n\n <template\n v-if=\"children.length\"\n >\n <b-button\n variant=\"link\"\n class=\"p-0 float-right\"\n :disabled=\"showChildren(page, children)\"\n @click.self.stop.prevent=\"toggle(page)\"\n >\n <font-awesome-icon\n v-if=\"!collapses[pageIndex(page)]\"\n class=\"pointer-none\"\n :icon=\"['fas', 'chevron-down']\"\n />\n <font-awesome-icon\n v-else\n class=\"pointer-none\"\n :icon=\"['fas', 'chevron-up']\"\n />\n </b-button>\n\n <b-collapse\n :visible=\"collapses[pageIndex(page)] || showChildren(page, children)\"\n @click.stop.prevent\n >\n <c-sidebar-nav-items\n class=\"ml-2\"\n :items=\"children\"\n :start-expanded=\"startExpanded\"\n :default-route-name=\"defaultRouteName\"\n v-on=\"$listeners\"\n />\n </b-collapse>\n </template>\n </b-button>\n </div>\n</template>\n\n<script>\nexport default {\n name: 'CSidebarNavItems',\n\n props: {\n /*\n * {\n page: { name, title }\n params: {...}\n }\n */\n items: {\n type: Array,\n required: true,\n default: () => [],\n },\n defaultRouteName: {\n type: String,\n required: true,\n },\n startExpanded: {\n type: Boolean,\n required: false,\n },\n },\n\n data () {\n return {\n collapses: {},\n }\n },\n\n watch: {\n items: {\n handler: function (items) {\n for (const i of items) {\n this.setState(i.page, this.startExpanded)\n }\n },\n immediate: true,\n },\n },\n\n methods: {\n closeSidebar () {\n if (window.innerWidth < 576) {\n this.$root.$emit('close-sidebar')\n }\n },\n\n pageIndex (p) {\n return p.pageID || p.name || p.title\n },\n\n toggle (p) {\n const px = this.pageIndex(p)\n this.$set(this.collapses, px, !this.collapses[px])\n },\n\n setState (p, state = false) {\n const px = this.pageIndex(p)\n this.$set(this.collapses, px, state)\n },\n\n // Recursively check for child pages that are open, so that parents can open aswell\n showChildren (page = {}, children = []) {\n if (page.pageID === this.$route.params.pageID) {\n return page.pageID === this.$route.params.pageID\n }\n\n return children.map(({ page, children }) => this.showChildren(page, children)).some(isOpen => isOpen)\n },\n },\n}\n</script>\n\n<style scoped lang=\"scss\">\n// This has to be there, so chevrons are clickable inside the button\n.pointer-none {\n pointer-events: none;\n}\n\n.svg-inline--fa {\n width: 30px;\n}\n\n.nav-item > span > {\n .title {\n font-family: 'Poppins-Regular'\n }\n}\n\n.nav-active > span > {\n .icon {\n color: #4D7281;\n }\n\n .title {\n font-family: 'Poppins-SemiBold'\n }\n}\n</style>\n",".pointer-none {\n pointer-events: none;\n}\n\n.svg-inline--fa {\n width: 30px;\n}\n\n.nav-item > span > .title {\n font-family: \"Poppins-Regular\";\n}\n\n.nav-active > span > .icon {\n color: #4D7281;\n}\n.nav-active > span > .title {\n font-family: \"Poppins-SemiBold\";\n}\n\n/*# sourceMappingURL=CSidebarNavItems.vue.map */"]}, media: undefined });
|
|
83368
83395
|
|
|
83369
83396
|
};
|
|
83370
83397
|
/* scoped */
|
|
83371
|
-
const __vue_scope_id__$F = "data-v-
|
|
83398
|
+
const __vue_scope_id__$F = "data-v-48e0e128";
|
|
83372
83399
|
/* module identifier */
|
|
83373
83400
|
const __vue_module_identifier__$F = undefined;
|
|
83374
83401
|
/* functional template */
|
|
@@ -83767,7 +83794,7 @@ __vue_render__$A._withStripped = true;
|
|
|
83767
83794
|
/* style */
|
|
83768
83795
|
const __vue_inject_styles__$G = function (inject) {
|
|
83769
83796
|
if (!inject) return
|
|
83770
|
-
inject("data-v-
|
|
83797
|
+
inject("data-v-0353b5b3_0", { source: ".v-step {\n background: #5C5C5C;\n max-width: 320px;\n z-index: 10000;\n border-radius: 1.1rem;\n}\n.v-step--sticky {\n position: fixed;\n top: 50%;\n left: 50%;\n -webkit-transform: translate(-50%, -50%);\n transform: translate(-50%, -50%);\n}\n.v-step--sticky .v-step__arrow {\n display: none;\n}\n.v-step__arrow,\n.v-step__arrow:before {\n position: absolute;\n width: 10px;\n height: 10px;\n background: inherit;\n}\n.v-step__arrow {\n visibility: hidden;\n}\n.v-step__arrow--dark:before {\n background: #5C5C5C;\n}\n.v-step__arrow:before {\n visibility: visible;\n content: \"\";\n -webkit-transform: rotate(45deg);\n transform: rotate(45deg);\n margin-left: -5px;\n}\n.v-step[data-popper-placement^=top] > .v-step__arrow {\n bottom: -5px;\n}\n.v-step[data-popper-placement^=bottom] > .v-step__arrow {\n top: -5px;\n}\n.v-step[data-popper-placement^=right] > .v-step__arrow {\n left: -5px;\n}\n.v-step[data-popper-placement^=left] > .v-step__arrow {\n right: -5px;\n}\n\n/*# sourceMappingURL=Tour.vue.map */", map: {"version":3,"sources":["/home/fajfa/Kendu/Corteza/packages/corteza-vue/src/components/Tour/Tour.vue","Tour.vue"],"names":[],"mappings":"AA8IA;EACA,mBAAA;EACA,gBAAA;EACA,cAAA;EACA,qBAAA;AC7IA;AD+IA;EACA,eAAA;EACA,QAAA;EACA,SAAA;EACA,wCAAA;EACA,gCAAA;AC5IA;AD8IA;EACA,aAAA;AC3IA;AD6IA;;EAEA,kBAAA;EACA,WAAA;EACA,YAAA;EACA,mBAAA;AC1IA;AD4IA;EACA,kBAAA;ACzIA;AD2IA;EACA,mBAAA;ACxIA;AD0IA;EACA,mBAAA;EACA,WAAA;EACA,gCAAA;EACA,wBAAA;EACA,iBAAA;ACvIA;ADyIA;EACA,YAAA;ACtIA;ADwIA;EACA,SAAA;ACrIA;ADuIA;EACA,UAAA;ACpIA;ADsIA;EACA,WAAA;ACnIA;;AAEA,mCAAmC","file":"Tour.vue","sourcesContent":["<template>\n <v-tour\n v-if=\"tour !== null\"\n :name=\"tour.name\"\n :steps=\"tour.steps\"\n :options=\"tour\"\n :callbacks=\"this.callbacks\"\n @onStop=\"onStop\"\n >\n <template slot-scope=\"tour\">\n <transition name=\"fade\">\n <template v-for=\"(step, index) of tour.steps\">\n <v-step\n v-if=\"tour.currentStep === index\"\n :key=\"index\"\n class=\"shadow p-3 text-light text-center\"\n :step=\"step\"\n :previous-step=\"tour.previousStep\"\n :next-step=\"tour.nextStep\"\n :stop=\"tour.stop\"\n :is-first=\"tour.isFirst\"\n :is-last=\"tour.isLast\"\n :labels=\"tour.labels\"\n @onStop=\"onStop\"\n >\n <div slot=\"header\">\n <h5\n v-if=\"(step.header || {}).title\"\n v-html=\"$t(step.header.title)\"\n />\n </div>\n\n <div slot=\"content\">\n <div class=\"p-1 mb-2\">\n <div v-html=\"$t(step.content)\" />\n </div>\n </div>\n\n <div\n slot=\"actions\"\n >\n <b-button\n variant=\"primary\"\n @click=\"onStop\"\n >\n <template v-if=\"tour.isLast && !(callbacks || {}).onNextRedirect\">\n {{ $t('buttons.end') }}\n </template>\n <template v-else>\n {{ $t('buttons.skip') }}\n </template>\n </b-button>\n <b-button\n v-if=\"tour.isFirst && (callbacks || {}).onPrevRedirect\"\n variant=\"primary\"\n :href=\"callbacks.onPrevRedirect\"\n >\n {{ $t('buttons.previous') }}\n </b-button>\n <b-button\n v-else-if=\"!tour.isFirst\"\n variant=\"primary\"\n @click=\"tour.previousStep\"\n >\n {{ $t('buttons.previous') }}\n </b-button>\n <b-button\n v-if=\"tour.isLast && (callbacks || {}).onNextRedirect\"\n variant=\"primary\"\n :href=\"callbacks.onNextRedirect\"\n >\n {{ $t('buttons.next') }}\n </b-button>\n <b-button\n v-else-if=\"!tour.isLast\"\n variant=\"primary\"\n @click=\"tour.nextStep\"\n >\n {{ $t('buttons.next') }}\n </b-button>\n </div>\n </v-step>\n </template>\n </transition>\n </template>\n </v-tour>\n</template>\n<script>\nexport default {\n name: 'TourComponent',\n i18nOptions: {\n namespaces: 'onboarding-tour',\n },\n props: {\n name: String,\n callbacks: {\n type: Object,\n },\n steps: {\n default: () => [],\n type: Array,\n },\n },\n computed: {\n labels () {\n return this.tour.labels\n },\n tour () {\n return {\n name: this.name,\n steps: this.steps.map(step => {\n return {\n name: step,\n target: `[data-v-onboarding=\"${step}\"]`,\n header: {\n title: this.$t(`steps.${step}.title`),\n },\n content: this.$t(`steps.${step}.content`),\n }\n }),\n }\n },\n },\n methods: {\n onStart () {\n if (JSON.parse(localStorage.getItem('corteza.tour')) && this.tour.steps.length) {\n this.$tours[this.tour.name].start()\n }\n },\n onStop () {\n localStorage.setItem('corteza.tour', JSON.stringify(false))\n this.$tours[this.tour.name].stop()\n },\n onStartClick () {\n localStorage.setItem('corteza.tour', JSON.stringify(true))\n this.onStart()\n },\n },\n}\n</script>\n\n<style lang=\"scss\">\n.v-step {\n background: #5C5C5C;\n max-width: 320px;\n z-index: 10000;\n border-radius: 1.1rem;\n}\n.v-step--sticky {\n position: fixed;\n top: 50%;\n left: 50%;\n -webkit-transform: translate(-50%, -50%);\n transform: translate(-50%, -50%);\n}\n.v-step--sticky .v-step__arrow {\n display: none;\n}\n.v-step__arrow,\n.v-step__arrow:before {\n position: absolute;\n width: 10px;\n height: 10px;\n background: inherit;\n}\n.v-step__arrow {\n visibility: hidden;\n}\n.v-step__arrow--dark:before {\n background: #5C5C5C;\n}\n.v-step__arrow:before {\n visibility: visible;\n content: \"\";\n -webkit-transform: rotate(45deg);\n transform: rotate(45deg);\n margin-left: -5px;\n}\n.v-step[data-popper-placement^=\"top\"] > .v-step__arrow {\n bottom: -5px;\n}\n.v-step[data-popper-placement^=\"bottom\"] > .v-step__arrow {\n top: -5px;\n}\n.v-step[data-popper-placement^=\"right\"] > .v-step__arrow {\n left: -5px;\n}\n.v-step[data-popper-placement^=\"left\"] > .v-step__arrow {\n right: -5px;\n}\n</style>",".v-step {\n background: #5C5C5C;\n max-width: 320px;\n z-index: 10000;\n border-radius: 1.1rem;\n}\n\n.v-step--sticky {\n position: fixed;\n top: 50%;\n left: 50%;\n -webkit-transform: translate(-50%, -50%);\n transform: translate(-50%, -50%);\n}\n\n.v-step--sticky .v-step__arrow {\n display: none;\n}\n\n.v-step__arrow,\n.v-step__arrow:before {\n position: absolute;\n width: 10px;\n height: 10px;\n background: inherit;\n}\n\n.v-step__arrow {\n visibility: hidden;\n}\n\n.v-step__arrow--dark:before {\n background: #5C5C5C;\n}\n\n.v-step__arrow:before {\n visibility: visible;\n content: \"\";\n -webkit-transform: rotate(45deg);\n transform: rotate(45deg);\n margin-left: -5px;\n}\n\n.v-step[data-popper-placement^=top] > .v-step__arrow {\n bottom: -5px;\n}\n\n.v-step[data-popper-placement^=bottom] > .v-step__arrow {\n top: -5px;\n}\n\n.v-step[data-popper-placement^=right] > .v-step__arrow {\n left: -5px;\n}\n\n.v-step[data-popper-placement^=left] > .v-step__arrow {\n right: -5px;\n}\n\n/*# sourceMappingURL=Tour.vue.map */"]}, media: undefined });
|
|
83771
83798
|
|
|
83772
83799
|
};
|
|
83773
83800
|
/* scoped */
|
|
@@ -84443,7 +84470,7 @@ __vue_render__$G._withStripped = true;
|
|
|
84443
84470
|
/* style */
|
|
84444
84471
|
const __vue_inject_styles__$N = function (inject) {
|
|
84445
84472
|
if (!inject) return
|
|
84446
|
-
inject("data-v-
|
|
84473
|
+
inject("data-v-48660d74_0", { source: ".toast.overflow-unset {\n overflow: unset !important;\n}\n\n/*# sourceMappingURL=CToaster.vue.map */", map: {"version":3,"sources":["/home/fajfa/Kendu/Corteza/packages/corteza-vue/src/components/toaster/CToaster.vue","CToaster.vue"],"names":[],"mappings":"AA6EA;EACA,0BAAA;AC5EA;;AAEA,uCAAuC","file":"CToaster.vue","sourcesContent":["<template>\n <div>\n <b-toast\n v-for=\"t in toasts\"\n :key=\"t.id\"\n visible\n v-bind=\"t.options || {}\"\n :title=\"t.payload.title\"\n :no-close-button=\"!t.actions.hide\"\n toast-class=\"overflow-unset\"\n @hide=\"t.actions.hide ? t.actions.hide.cb(t) : evtSink\"\n >\n <b-card\n header-bg-variant=\"transparent\"\n bg-variant=\"transparent\"\n body-class=\"p-0\"\n class=\"border-0\"\n >\n <b-card-text>\n {{ t.payload.notes }}\n </b-card-text>\n\n <b-card-text v-if=\"t.payload.link\">\n <c-toaster-link :toast=\"t\" />\n </b-card-text>\n\n <component\n :is=\"actComponent(act)\"\n v-for=\"([name, act]) in extraActions(t)\"\n :key=\"name\"\n class=\"mr-1\"\n v-bind=\"act\"\n @action=\"act.cb ? act.cb(t, $event) : evtSink\"\n />\n </b-card>\n </b-toast>\n </div>\n</template>\n\n<script lang=\"js\">\nimport * as actions from './actions'\nimport CToasterLink from './CToasterLink.vue'\n\nexport default {\n components: {\n CToasterLink,\n },\n\n props: {\n toasts: {\n type: Array,\n required: false,\n default: () => [],\n },\n },\n\n methods: {\n extraActions ({ actions = {} }) {\n const { hide, ...act } = actions\n return Object.entries(act)\n },\n\n actComponent ({ kind }) {\n const act = actions[kind]\n if (!act) {\n throw new Error('toast.actionKind.unknown')\n }\n return act\n },\n\n evtSink () {},\n },\n}\n</script>\n\n<style lang=\"scss\">\n// BS only provides overflow-[auto, hidden]\n.toast.overflow-unset {\n overflow: unset!important;\n}\n</style>\n",".toast.overflow-unset {\n overflow: unset !important;\n}\n\n/*# sourceMappingURL=CToaster.vue.map */"]}, media: undefined });
|
|
84447
84474
|
|
|
84448
84475
|
};
|
|
84449
84476
|
/* scoped */
|
|
@@ -84577,7 +84604,7 @@ __vue_render__$H._withStripped = true;
|
|
|
84577
84604
|
/* style */
|
|
84578
84605
|
const __vue_inject_styles__$O = function (inject) {
|
|
84579
84606
|
if (!inject) return
|
|
84580
|
-
inject("data-v-
|
|
84607
|
+
inject("data-v-2125ea60_0", { source: ".reminder-sidebar-header {\n height: 64px;\n background-color: #F4F7FA;\n}\n\n/*# sourceMappingURL=CReminderSidebar.vue.map */", map: {"version":3,"sources":["/home/fajfa/Kendu/Corteza/packages/corteza-vue/src/components/reminders/CReminderSidebar.vue","CReminderSidebar.vue"],"names":[],"mappings":"AAsEA;EACA,YAAA;EACA,yBAAA;ACrEA;;AAEA,+CAA+C","file":"CReminderSidebar.vue","sourcesContent":["<template>\n <b-sidebar\n v-model=\"isVisible\"\n header-class=\"d-flex align-items-center justify-content-between reminder-sidebar-header px-2 py-3 border-bottom\"\n body-class=\"bg-white px-2\"\n :title=\"title\"\n :backdrop=\"isMobile\"\n no-footer\n right\n shadow\n no-close-on-route-change\n no-close-on-esc\n >\n <template #header>\n <h4\n class=\"text-primary mb-0\"\n >\n <b>{{ title }}</b>\n </h4>\n\n <b-button\n variant=\"outline-light border-0\"\n class=\"d-flex align-items-center justify-content-center p-2\"\n @click=\"isVisible = false\"\n >\n <font-awesome-icon\n :icon=\"['fas', 'times']\"\n class=\"h6 mb-0 text-dark\"\n />\n </b-button>\n </template>\n\n <slot />\n </b-sidebar>\n</template>\n\n<script lang=\"js\">\nexport default {\n props: {\n title: {\n type: String,\n default: '',\n },\n\n visible: {\n type: Boolean,\n required: false,\n default: false,\n },\n },\n\n computed: {\n isVisible: {\n get () {\n return this.visible\n },\n\n set (visible) {\n this.$emit('update:visible', visible)\n },\n },\n\n isMobile () {\n return window.innerWidth < 576\n },\n },\n}\n</script>\n\n<style lang=\"scss\">\n.reminder-sidebar-header {\n height: 64px;\n background-color: #F4F7FA;\n}\n</style>\n",".reminder-sidebar-header {\n height: 64px;\n background-color: #F4F7FA;\n}\n\n/*# sourceMappingURL=CReminderSidebar.vue.map */"]}, media: undefined });
|
|
84581
84608
|
|
|
84582
84609
|
};
|
|
84583
84610
|
/* scoped */
|
|
@@ -84605,77 +84632,63 @@ __vue_render__$H._withStripped = true;
|
|
|
84605
84632
|
undefined
|
|
84606
84633
|
);
|
|
84607
84634
|
|
|
84608
|
-
|
|
84609
|
-
|
|
84610
|
-
|
|
84611
|
-
|
|
84612
|
-
|
|
84613
|
-
|
|
84614
|
-
|
|
84615
|
-
|
|
84616
|
-
|
|
84617
|
-
|
|
84618
|
-
|
|
84619
|
-
|
|
84620
|
-
|
|
84621
|
-
|
|
84622
|
-
|
|
84623
|
-
|
|
84624
|
-
|
|
84625
|
-
|
|
84626
|
-
|
|
84627
|
-
|
|
84628
|
-
|
|
84629
|
-
|
|
84630
|
-
|
|
84631
|
-
|
|
84632
|
-
|
|
84633
|
-
|
|
84634
|
-
/**
|
|
84635
|
-
* Returns all components that match the given path
|
|
84636
|
-
*
|
|
84637
|
-
* @param cat Catalogue
|
|
84638
|
-
* @param path Array of groups that represent the path
|
|
84639
|
-
|
|
84640
|
-
*/
|
|
84641
|
-
function ExtractComponents(cat, ...path) {
|
|
84642
|
-
const jpath = path.join(del$1);
|
|
84643
|
-
return Object.values(cat)
|
|
84644
|
-
.filter(({ group }) => (group || []).join(del$1) === jpath);
|
|
84645
|
-
}
|
|
84646
|
-
|
|
84635
|
+
//
|
|
84636
|
+
//
|
|
84637
|
+
//
|
|
84638
|
+
//
|
|
84639
|
+
//
|
|
84640
|
+
//
|
|
84641
|
+
//
|
|
84642
|
+
//
|
|
84643
|
+
//
|
|
84644
|
+
//
|
|
84645
|
+
//
|
|
84646
|
+
//
|
|
84647
|
+
//
|
|
84648
|
+
//
|
|
84649
|
+
//
|
|
84650
|
+
//
|
|
84651
|
+
//
|
|
84652
|
+
//
|
|
84653
|
+
//
|
|
84654
|
+
//
|
|
84655
|
+
//
|
|
84656
|
+
//
|
|
84657
|
+
//
|
|
84658
|
+
//
|
|
84659
|
+
//
|
|
84660
|
+
//
|
|
84647
84661
|
//
|
|
84648
84662
|
var script$O = {
|
|
84649
|
-
name:
|
|
84663
|
+
name: "FieldItem",
|
|
84650
84664
|
props: {
|
|
84651
|
-
|
|
84652
|
-
|
|
84653
|
-
|
|
84665
|
+
field: {
|
|
84666
|
+
type: Object,
|
|
84667
|
+
required: true
|
|
84654
84668
|
},
|
|
84655
|
-
|
|
84669
|
+
isSelected: {
|
|
84670
|
+
type: Boolean,
|
|
84671
|
+
required: true
|
|
84672
|
+
},
|
|
84673
|
+
selectedFields: {
|
|
84656
84674
|
type: Array,
|
|
84657
|
-
|
|
84675
|
+
required: true
|
|
84676
|
+
},
|
|
84677
|
+
systemFieldLabel: {
|
|
84678
|
+
type: String,
|
|
84679
|
+
required: true
|
|
84658
84680
|
}
|
|
84659
84681
|
},
|
|
84660
84682
|
computed: {
|
|
84661
|
-
|
|
84662
|
-
|
|
84663
|
-
return this.path.length === 0;
|
|
84664
|
-
},
|
|
84665
|
-
|
|
84666
|
-
// name of the current group
|
|
84667
|
-
group() {
|
|
84668
|
-
return this.root ? undefined : this.path[this.path.length - 1];
|
|
84669
|
-
},
|
|
84683
|
+
fieldLabel() {
|
|
84684
|
+
let fieldLabel = this.field.name || "";
|
|
84670
84685
|
|
|
84671
|
-
|
|
84672
|
-
|
|
84673
|
-
|
|
84674
|
-
},
|
|
84686
|
+
if (this.field.label) {
|
|
84687
|
+
fieldLabel = `${this.field.label} (${this.field.name})`;
|
|
84688
|
+
}
|
|
84675
84689
|
|
|
84676
|
-
|
|
84677
|
-
|
|
84678
|
-
return ExtractComponents(this.catalogue, ...this.path);
|
|
84690
|
+
fieldLabel += this.field.isRequired ? " *" : "";
|
|
84691
|
+
return fieldLabel;
|
|
84679
84692
|
}
|
|
84680
84693
|
|
|
84681
84694
|
}
|
|
@@ -84689,70 +84702,47 @@ var __vue_render__$I = function() {
|
|
|
84689
84702
|
var _vm = this;
|
|
84690
84703
|
var _h = _vm.$createElement;
|
|
84691
84704
|
var _c = _vm._self._c || _h;
|
|
84692
|
-
return _c(
|
|
84693
|
-
|
|
84694
|
-
|
|
84695
|
-
|
|
84696
|
-
|
|
84697
|
-
|
|
84698
|
-
|
|
84699
|
-
|
|
84700
|
-
|
|
84701
|
-
|
|
84702
|
-
|
|
84703
|
-
|
|
84704
|
-
|
|
84705
|
-
|
|
84706
|
-
|
|
84707
|
-
|
|
84708
|
-
|
|
84709
|
-
|
|
84710
|
-
|
|
84711
|
-
|
|
84712
|
-
|
|
84713
|
-
|
|
84714
|
-
|
|
84715
|
-
|
|
84716
|
-
|
|
84717
|
-
|
|
84718
|
-
|
|
84719
|
-
|
|
84720
|
-
|
|
84721
|
-
|
|
84722
|
-
|
|
84723
|
-
|
|
84724
|
-
|
|
84725
|
-
|
|
84726
|
-
|
|
84727
|
-
|
|
84728
|
-
|
|
84729
|
-
|
|
84730
|
-
|
|
84731
|
-
|
|
84732
|
-
|
|
84733
|
-
)
|
|
84734
|
-
}),
|
|
84735
|
-
_vm._v(" "),
|
|
84736
|
-
_vm._l(_vm.subgroups, function(group) {
|
|
84737
|
-
return _c("component-list", {
|
|
84738
|
-
key: group,
|
|
84739
|
-
staticClass: "my-3",
|
|
84740
|
-
attrs: {
|
|
84741
|
-
catalogue: _vm.catalogue,
|
|
84742
|
-
path: _vm.path.concat([group])
|
|
84743
|
-
},
|
|
84744
|
-
on: {
|
|
84745
|
-
select: function($event) {
|
|
84746
|
-
return _vm.$emit("select", $event)
|
|
84747
|
-
}
|
|
84748
|
-
}
|
|
84749
|
-
})
|
|
84750
|
-
})
|
|
84751
|
-
],
|
|
84752
|
-
2
|
|
84753
|
-
)
|
|
84754
|
-
: _vm._e()
|
|
84755
|
-
])
|
|
84705
|
+
return _c(
|
|
84706
|
+
"div",
|
|
84707
|
+
{ staticClass: "d-flex align-items-center" },
|
|
84708
|
+
[
|
|
84709
|
+
_c("font-awesome-icon", {
|
|
84710
|
+
staticClass: "handle align-baseline mr-3 text-primary",
|
|
84711
|
+
attrs: { icon: ["fas", "grip-vertical"] }
|
|
84712
|
+
}),
|
|
84713
|
+
_vm._v(" "),
|
|
84714
|
+
_c("b", { staticClass: "cursor-default text-dark text-truncate" }, [
|
|
84715
|
+
_vm._v("\n " + _vm._s(_vm.fieldLabel) + "\n ")
|
|
84716
|
+
]),
|
|
84717
|
+
_vm._v(" "),
|
|
84718
|
+
_vm.field.isSystem
|
|
84719
|
+
? _c("small", { staticClass: "cursor-default ml-1 text-truncate" }, [
|
|
84720
|
+
_vm._v("\n " + _vm._s(_vm.systemFieldLabel) + "\n ")
|
|
84721
|
+
])
|
|
84722
|
+
: _vm._e(),
|
|
84723
|
+
_vm._v(" "),
|
|
84724
|
+
_vm.isSelected
|
|
84725
|
+
? _c("font-awesome-icon", {
|
|
84726
|
+
staticClass: "align-baseline ml-auto text-muted pointer",
|
|
84727
|
+
attrs: { icon: ["far", "eye"] },
|
|
84728
|
+
on: {
|
|
84729
|
+
click: function($event) {
|
|
84730
|
+
return _vm.$emit("unselect-field", _vm.field)
|
|
84731
|
+
}
|
|
84732
|
+
}
|
|
84733
|
+
})
|
|
84734
|
+
: _c("font-awesome-icon", {
|
|
84735
|
+
staticClass: "align-baseline ml-auto text-muted pointer",
|
|
84736
|
+
attrs: { icon: ["fas", "eye-slash"] },
|
|
84737
|
+
on: {
|
|
84738
|
+
click: function($event) {
|
|
84739
|
+
return _vm.$emit("select-field", _vm.field)
|
|
84740
|
+
}
|
|
84741
|
+
}
|
|
84742
|
+
})
|
|
84743
|
+
],
|
|
84744
|
+
1
|
|
84745
|
+
)
|
|
84756
84746
|
};
|
|
84757
84747
|
var __vue_staticRenderFns__$I = [];
|
|
84758
84748
|
__vue_render__$I._withStripped = true;
|
|
@@ -84760,11 +84750,11 @@ __vue_render__$I._withStripped = true;
|
|
|
84760
84750
|
/* style */
|
|
84761
84751
|
const __vue_inject_styles__$P = function (inject) {
|
|
84762
84752
|
if (!inject) return
|
|
84763
|
-
inject("data-v-
|
|
84753
|
+
inject("data-v-751c31b8_0", { source: "\n.handle[data-v-751c31b8] {\n cursor: grab;\n}\n.cursor-default[data-v-751c31b8] {\n cursor: default;\n}\n", map: {"version":3,"sources":["/home/fajfa/Kendu/Corteza/packages/corteza-vue/src/components/field/FieldItem.vue"],"names":[],"mappings":";AAoEA;EACA,YAAA;AACA;AAEA;EACA,eAAA;AACA","file":"FieldItem.vue","sourcesContent":["<template>\n <div class=\"d-flex align-items-center\">\n <font-awesome-icon\n :icon=\"['fas', 'grip-vertical']\"\n class=\"handle align-baseline mr-3 text-primary\"\n />\n <b class=\"cursor-default text-dark text-truncate\">\n {{ fieldLabel }}\n </b>\n <small v-if=\"field.isSystem\" class=\"cursor-default ml-1 text-truncate\">\n {{ systemFieldLabel }}\n </small>\n <font-awesome-icon\n v-if=\"isSelected\"\n :icon=\"['far', 'eye']\"\n class=\"align-baseline ml-auto text-muted pointer\"\n @click=\"$emit('unselect-field', field)\"\n />\n <font-awesome-icon\n v-else\n :icon=\"['fas', 'eye-slash']\"\n class=\"align-baseline ml-auto text-muted pointer\"\n @click=\"$emit('select-field', field)\"\n />\n </div>\n</template>\n\n<script>\nexport default {\n name: \"FieldItem\",\n\n props: {\n field: {\n type: Object,\n required: true,\n },\n\n isSelected: {\n type: Boolean,\n required: true,\n },\n\n selectedFields: {\n type: Array,\n required: true,\n },\n\n systemFieldLabel: {\n type: String,\n required: true,\n }\n },\n\n computed: {\n fieldLabel() {\n let fieldLabel = this.field.name || \"\";\n\n if (this.field.label) {\n fieldLabel = `${this.field.label} (${this.field.name})`;\n }\n\n fieldLabel += this.field.isRequired ? \" *\" : \"\";\n return fieldLabel;\n },\n },\n};\n</script>\n<style scoped>\n.handle {\n cursor: grab;\n}\n\n.cursor-default {\n cursor: default;\n}\n</style>\n"]}, media: undefined });
|
|
84764
84754
|
|
|
84765
84755
|
};
|
|
84766
84756
|
/* scoped */
|
|
84767
|
-
const __vue_scope_id__$P = "data-v-
|
|
84757
|
+
const __vue_scope_id__$P = "data-v-751c31b8";
|
|
84768
84758
|
/* module identifier */
|
|
84769
84759
|
const __vue_module_identifier__$P = undefined;
|
|
84770
84760
|
/* functional template */
|
|
@@ -84790,9 +84780,639 @@ __vue_render__$I._withStripped = true;
|
|
|
84790
84780
|
|
|
84791
84781
|
//
|
|
84792
84782
|
var script$P = {
|
|
84783
|
+
components: {
|
|
84784
|
+
draggable,
|
|
84785
|
+
FieldItem: __vue_component__$P
|
|
84786
|
+
},
|
|
84787
|
+
props: {
|
|
84788
|
+
module: {
|
|
84789
|
+
type: Object,
|
|
84790
|
+
required: true
|
|
84791
|
+
},
|
|
84792
|
+
fields: {
|
|
84793
|
+
type: Array,
|
|
84794
|
+
required: true
|
|
84795
|
+
},
|
|
84796
|
+
disabled: {
|
|
84797
|
+
type: Boolean,
|
|
84798
|
+
default: false
|
|
84799
|
+
},
|
|
84800
|
+
disabledTypes: {
|
|
84801
|
+
type: Array,
|
|
84802
|
+
default: () => []
|
|
84803
|
+
},
|
|
84804
|
+
disableSystemFields: {
|
|
84805
|
+
type: Boolean,
|
|
84806
|
+
default: false
|
|
84807
|
+
},
|
|
84808
|
+
systemFields: {
|
|
84809
|
+
type: Array,
|
|
84810
|
+
default: null
|
|
84811
|
+
},
|
|
84812
|
+
fieldSubset: {
|
|
84813
|
+
type: Array,
|
|
84814
|
+
default: null
|
|
84815
|
+
},
|
|
84816
|
+
group: {
|
|
84817
|
+
type: String,
|
|
84818
|
+
default: 'fields'
|
|
84819
|
+
},
|
|
84820
|
+
maxHeight: {
|
|
84821
|
+
type: String,
|
|
84822
|
+
default: 'max-height: 65vh;'
|
|
84823
|
+
},
|
|
84824
|
+
labels: {
|
|
84825
|
+
type: Object,
|
|
84826
|
+
required: true
|
|
84827
|
+
}
|
|
84828
|
+
},
|
|
84829
|
+
|
|
84830
|
+
data() {
|
|
84831
|
+
return {
|
|
84832
|
+
modules: [],
|
|
84833
|
+
query: ''
|
|
84834
|
+
};
|
|
84835
|
+
},
|
|
84836
|
+
|
|
84837
|
+
computed: {
|
|
84838
|
+
selectedFields: {
|
|
84839
|
+
get() {
|
|
84840
|
+
// Needs to be done this way so it retains order of fields
|
|
84841
|
+
return this.fields.reduce((fields, field) => {
|
|
84842
|
+
field = this.allFields.find(({
|
|
84843
|
+
name
|
|
84844
|
+
}) => name === field.name);
|
|
84845
|
+
|
|
84846
|
+
if (field) {
|
|
84847
|
+
fields.push(field);
|
|
84848
|
+
}
|
|
84849
|
+
|
|
84850
|
+
return fields;
|
|
84851
|
+
}, []);
|
|
84852
|
+
},
|
|
84853
|
+
|
|
84854
|
+
set(f) {
|
|
84855
|
+
this.$emit('update:fields', f);
|
|
84856
|
+
}
|
|
84857
|
+
|
|
84858
|
+
},
|
|
84859
|
+
|
|
84860
|
+
allFields() {
|
|
84861
|
+
let mFields = [];
|
|
84862
|
+
|
|
84863
|
+
if (this.fieldSubset) {
|
|
84864
|
+
mFields = this.module.filterFields(this.fieldSubset);
|
|
84865
|
+
} else {
|
|
84866
|
+
mFields = this.module.fields;
|
|
84867
|
+
}
|
|
84868
|
+
|
|
84869
|
+
if (this.disabledTypes.length > 0) {
|
|
84870
|
+
mFields = mFields.filter(({
|
|
84871
|
+
kind
|
|
84872
|
+
}) => !this.disabledTypes.find(t => t === kind));
|
|
84873
|
+
}
|
|
84874
|
+
|
|
84875
|
+
let sysFields = [];
|
|
84876
|
+
|
|
84877
|
+
if (!this.disableSystemFields) {
|
|
84878
|
+
sysFields = this.module.systemFields();
|
|
84879
|
+
|
|
84880
|
+
if (this.systemFields) {
|
|
84881
|
+
sysFields = sysFields.filter(({
|
|
84882
|
+
name
|
|
84883
|
+
}) => this.systemFields.find(sf => sf === name));
|
|
84884
|
+
}
|
|
84885
|
+
} else {
|
|
84886
|
+
mFields = mFields.filter(({
|
|
84887
|
+
isSystem
|
|
84888
|
+
}) => !isSystem);
|
|
84889
|
+
}
|
|
84890
|
+
|
|
84891
|
+
return [...[...mFields].sort((a, b) => a.label.localeCompare(b.label)), ...sysFields];
|
|
84892
|
+
},
|
|
84893
|
+
|
|
84894
|
+
allSelected() {
|
|
84895
|
+
return this.availableFields.length > 0;
|
|
84896
|
+
},
|
|
84897
|
+
|
|
84898
|
+
allUnselected() {
|
|
84899
|
+
return this.selectedFields.length > 0;
|
|
84900
|
+
},
|
|
84901
|
+
|
|
84902
|
+
availableFields() {
|
|
84903
|
+
// Remove selected fields
|
|
84904
|
+
return this.allFields.filter(a => !this.fields.some(f => a.name === f.name));
|
|
84905
|
+
},
|
|
84906
|
+
|
|
84907
|
+
filteredAvailableFields() {
|
|
84908
|
+
return this.filterFields(this.availableFields);
|
|
84909
|
+
},
|
|
84910
|
+
|
|
84911
|
+
filteredSelectedFields() {
|
|
84912
|
+
return this.filterFields(this.selectedFields);
|
|
84913
|
+
}
|
|
84914
|
+
|
|
84915
|
+
},
|
|
84916
|
+
watch: {
|
|
84917
|
+
'moduleID'(o, n) {
|
|
84918
|
+
if (o !== n) {
|
|
84919
|
+
this.selectedFields = [];
|
|
84920
|
+
}
|
|
84921
|
+
}
|
|
84922
|
+
|
|
84923
|
+
},
|
|
84924
|
+
methods: {
|
|
84925
|
+
filterFields(fields) {
|
|
84926
|
+
return fields.filter(f => f.name.toLowerCase().indexOf(this.query.toLowerCase()) > -1 || f.label.toLowerCase().indexOf(this.query.toLowerCase()) > -1);
|
|
84927
|
+
},
|
|
84928
|
+
|
|
84929
|
+
selectField(field) {
|
|
84930
|
+
if (this.selectedFields.some(selectedField => selectedField.label === field.label)) return;
|
|
84931
|
+
this.selectedFields = [...this.selectedFields, field];
|
|
84932
|
+
},
|
|
84933
|
+
|
|
84934
|
+
unselectField(field) {
|
|
84935
|
+
this.selectedFields = this.selectedFields.filter(({
|
|
84936
|
+
name
|
|
84937
|
+
}) => field.name !== name);
|
|
84938
|
+
}
|
|
84939
|
+
|
|
84940
|
+
}
|
|
84941
|
+
};
|
|
84942
|
+
|
|
84943
|
+
/* script */
|
|
84944
|
+
const __vue_script__$P = script$P;
|
|
84945
|
+
|
|
84946
|
+
/* template */
|
|
84947
|
+
var __vue_render__$J = function() {
|
|
84948
|
+
var _vm = this;
|
|
84949
|
+
var _h = _vm.$createElement;
|
|
84950
|
+
var _c = _vm._self._c || _h;
|
|
84951
|
+
return _c(
|
|
84952
|
+
"div",
|
|
84953
|
+
{ staticClass: "overflow-hidden" },
|
|
84954
|
+
[
|
|
84955
|
+
_c(
|
|
84956
|
+
"b-input-group",
|
|
84957
|
+
[
|
|
84958
|
+
_c("b-input", {
|
|
84959
|
+
staticClass: "text-truncate",
|
|
84960
|
+
attrs: {
|
|
84961
|
+
type: "search",
|
|
84962
|
+
placeholder: _vm.labels.searchPlaceholder
|
|
84963
|
+
},
|
|
84964
|
+
model: {
|
|
84965
|
+
value: _vm.query,
|
|
84966
|
+
callback: function($$v) {
|
|
84967
|
+
_vm.query = typeof $$v === "string" ? $$v.trim() : $$v;
|
|
84968
|
+
},
|
|
84969
|
+
expression: "query"
|
|
84970
|
+
}
|
|
84971
|
+
}),
|
|
84972
|
+
_vm._v(" "),
|
|
84973
|
+
_c(
|
|
84974
|
+
"b-input-group-append",
|
|
84975
|
+
[
|
|
84976
|
+
_c(
|
|
84977
|
+
"b-input-group-text",
|
|
84978
|
+
{ staticClass: "text-primary bg-white border-left-0" },
|
|
84979
|
+
[
|
|
84980
|
+
_c("font-awesome-icon", {
|
|
84981
|
+
attrs: { icon: ["fas", "search"] }
|
|
84982
|
+
})
|
|
84983
|
+
],
|
|
84984
|
+
1
|
|
84985
|
+
)
|
|
84986
|
+
],
|
|
84987
|
+
1
|
|
84988
|
+
)
|
|
84989
|
+
],
|
|
84990
|
+
1
|
|
84991
|
+
),
|
|
84992
|
+
_vm._v(" "),
|
|
84993
|
+
_c(
|
|
84994
|
+
"b-row",
|
|
84995
|
+
{ staticClass: "mt-2 h-100" },
|
|
84996
|
+
[
|
|
84997
|
+
_c(
|
|
84998
|
+
"b-col",
|
|
84999
|
+
{ attrs: { cols: "12", sm: "6" } },
|
|
85000
|
+
[
|
|
85001
|
+
_c(
|
|
85002
|
+
"div",
|
|
85003
|
+
{ staticClass: "d-flex align-items-center" },
|
|
85004
|
+
[
|
|
85005
|
+
_c("label", { staticClass: "text-primary mb-0" }, [
|
|
85006
|
+
_vm._v(
|
|
85007
|
+
"\n " +
|
|
85008
|
+
_vm._s(_vm.labels.availableFieldsLabel) +
|
|
85009
|
+
"\n "
|
|
85010
|
+
)
|
|
85011
|
+
]),
|
|
85012
|
+
_vm._v(" "),
|
|
85013
|
+
_c(
|
|
85014
|
+
"b-button",
|
|
85015
|
+
{
|
|
85016
|
+
staticClass: "ml-auto px-0 text-muted",
|
|
85017
|
+
class: [_vm.allSelected ? "visible" : "invisible"],
|
|
85018
|
+
attrs: { variant: "link" },
|
|
85019
|
+
on: {
|
|
85020
|
+
click: function($event) {
|
|
85021
|
+
$event.preventDefault();
|
|
85022
|
+
_vm.selectedFields = [].concat(_vm.allFields);
|
|
85023
|
+
}
|
|
85024
|
+
}
|
|
85025
|
+
},
|
|
85026
|
+
[
|
|
85027
|
+
_vm._v(
|
|
85028
|
+
"\n " +
|
|
85029
|
+
_vm._s(_vm.labels.selectAllFieldsLabel) +
|
|
85030
|
+
"\n "
|
|
85031
|
+
)
|
|
85032
|
+
]
|
|
85033
|
+
)
|
|
85034
|
+
],
|
|
85035
|
+
1
|
|
85036
|
+
),
|
|
85037
|
+
_vm._v(" "),
|
|
85038
|
+
_c(
|
|
85039
|
+
"b-list-group",
|
|
85040
|
+
{ attrs: { vertical: "" } },
|
|
85041
|
+
[
|
|
85042
|
+
_c(
|
|
85043
|
+
"draggable",
|
|
85044
|
+
{
|
|
85045
|
+
key: _vm.filteredAvailableFields.length,
|
|
85046
|
+
staticClass: "overflow-auto",
|
|
85047
|
+
style: "" + _vm.maxHeight,
|
|
85048
|
+
attrs: {
|
|
85049
|
+
handle: ".handle",
|
|
85050
|
+
disabled: _vm.disabled,
|
|
85051
|
+
group: _vm.group,
|
|
85052
|
+
value: _vm.filteredAvailableFields
|
|
85053
|
+
}
|
|
85054
|
+
},
|
|
85055
|
+
_vm._l(_vm.filteredAvailableFields, function(field) {
|
|
85056
|
+
return _c(
|
|
85057
|
+
"b-list-group-item",
|
|
85058
|
+
{
|
|
85059
|
+
key: field.name,
|
|
85060
|
+
staticClass: "mb-3 border rounded",
|
|
85061
|
+
on: {
|
|
85062
|
+
dblclick: function($event) {
|
|
85063
|
+
return _vm.selectField(field)
|
|
85064
|
+
}
|
|
85065
|
+
}
|
|
85066
|
+
},
|
|
85067
|
+
[
|
|
85068
|
+
_c("field-item", {
|
|
85069
|
+
attrs: {
|
|
85070
|
+
field: field,
|
|
85071
|
+
"selected-fields": _vm.selectedFields,
|
|
85072
|
+
"is-selected": false,
|
|
85073
|
+
"system-field-label": _vm.labels.systemFieldLabel
|
|
85074
|
+
},
|
|
85075
|
+
on: { "select-field": _vm.selectField }
|
|
85076
|
+
})
|
|
85077
|
+
],
|
|
85078
|
+
1
|
|
85079
|
+
)
|
|
85080
|
+
}),
|
|
85081
|
+
1
|
|
85082
|
+
)
|
|
85083
|
+
],
|
|
85084
|
+
1
|
|
85085
|
+
)
|
|
85086
|
+
],
|
|
85087
|
+
1
|
|
85088
|
+
),
|
|
85089
|
+
_vm._v(" "),
|
|
85090
|
+
_c(
|
|
85091
|
+
"b-col",
|
|
85092
|
+
{ staticClass: "pl-sm-0", attrs: { cols: "12", sm: "6" } },
|
|
85093
|
+
[
|
|
85094
|
+
_c(
|
|
85095
|
+
"div",
|
|
85096
|
+
{ staticClass: "d-flex align-items-center" },
|
|
85097
|
+
[
|
|
85098
|
+
_c("label", { staticClass: "mb-0 text-primary" }, [
|
|
85099
|
+
_vm._v(
|
|
85100
|
+
"\n " +
|
|
85101
|
+
_vm._s(_vm.labels.selectedFieldsLabel) +
|
|
85102
|
+
"\n "
|
|
85103
|
+
)
|
|
85104
|
+
]),
|
|
85105
|
+
_vm._v(" "),
|
|
85106
|
+
_c(
|
|
85107
|
+
"b-button",
|
|
85108
|
+
{
|
|
85109
|
+
staticClass: "ml-auto px-0 text-muted",
|
|
85110
|
+
class: [_vm.allUnselected ? "visible" : "invisible"],
|
|
85111
|
+
attrs: { variant: "link" },
|
|
85112
|
+
on: {
|
|
85113
|
+
click: function($event) {
|
|
85114
|
+
$event.preventDefault();
|
|
85115
|
+
_vm.selectedFields = [];
|
|
85116
|
+
}
|
|
85117
|
+
}
|
|
85118
|
+
},
|
|
85119
|
+
[
|
|
85120
|
+
_vm._v(
|
|
85121
|
+
"\n " +
|
|
85122
|
+
_vm._s(_vm.labels.unselectAllFieldsLabel) +
|
|
85123
|
+
"\n "
|
|
85124
|
+
)
|
|
85125
|
+
]
|
|
85126
|
+
)
|
|
85127
|
+
],
|
|
85128
|
+
1
|
|
85129
|
+
),
|
|
85130
|
+
_vm._v(" "),
|
|
85131
|
+
_c(
|
|
85132
|
+
"b-list-group",
|
|
85133
|
+
{ attrs: { vertical: "" } },
|
|
85134
|
+
[
|
|
85135
|
+
_c(
|
|
85136
|
+
"draggable",
|
|
85137
|
+
{
|
|
85138
|
+
staticClass: "overflow-auto",
|
|
85139
|
+
style: "" + _vm.maxHeight,
|
|
85140
|
+
attrs: {
|
|
85141
|
+
handle: ".handle",
|
|
85142
|
+
disabled: _vm.disabled,
|
|
85143
|
+
group: _vm.group
|
|
85144
|
+
},
|
|
85145
|
+
model: {
|
|
85146
|
+
value: _vm.selectedFields,
|
|
85147
|
+
callback: function($$v) {
|
|
85148
|
+
_vm.selectedFields = $$v;
|
|
85149
|
+
},
|
|
85150
|
+
expression: "selectedFields"
|
|
85151
|
+
}
|
|
85152
|
+
},
|
|
85153
|
+
_vm._l(_vm.filteredSelectedFields, function(field) {
|
|
85154
|
+
return _c(
|
|
85155
|
+
"b-list-group-item",
|
|
85156
|
+
{
|
|
85157
|
+
key: field.name,
|
|
85158
|
+
staticClass: "mb-3 border rounded",
|
|
85159
|
+
on: {
|
|
85160
|
+
dblclick: function($event) {
|
|
85161
|
+
return _vm.unselectField(field)
|
|
85162
|
+
}
|
|
85163
|
+
}
|
|
85164
|
+
},
|
|
85165
|
+
[
|
|
85166
|
+
_c("field-item", {
|
|
85167
|
+
attrs: {
|
|
85168
|
+
field: field,
|
|
85169
|
+
"selected-fields": _vm.selectedFields,
|
|
85170
|
+
"is-selected": true,
|
|
85171
|
+
"system-field-label": _vm.labels.systemFieldLabel
|
|
85172
|
+
},
|
|
85173
|
+
on: { "unselect-field": _vm.unselectField }
|
|
85174
|
+
})
|
|
85175
|
+
],
|
|
85176
|
+
1
|
|
85177
|
+
)
|
|
85178
|
+
}),
|
|
85179
|
+
1
|
|
85180
|
+
)
|
|
85181
|
+
],
|
|
85182
|
+
1
|
|
85183
|
+
)
|
|
85184
|
+
],
|
|
85185
|
+
1
|
|
85186
|
+
)
|
|
85187
|
+
],
|
|
85188
|
+
1
|
|
85189
|
+
)
|
|
85190
|
+
],
|
|
85191
|
+
1
|
|
85192
|
+
)
|
|
85193
|
+
};
|
|
85194
|
+
var __vue_staticRenderFns__$J = [];
|
|
85195
|
+
__vue_render__$J._withStripped = true;
|
|
85196
|
+
|
|
85197
|
+
/* style */
|
|
85198
|
+
const __vue_inject_styles__$Q = function (inject) {
|
|
85199
|
+
if (!inject) return
|
|
85200
|
+
inject("data-v-d614af34_0", { source: ".handle[data-v-d614af34] {\n cursor: grab;\n}\n\n/*# sourceMappingURL=FieldPicker.vue.map */", map: {"version":3,"sources":["/home/fajfa/Kendu/Corteza/packages/corteza-vue/src/components/field/FieldPicker.vue","FieldPicker.vue"],"names":[],"mappings":"AA2RA;EACA,YAAA;AC1RA;;AAEA,0CAA0C","file":"FieldPicker.vue","sourcesContent":["<template>\n <div\n class=\"overflow-hidden\"\n >\n <b-input-group>\n <b-input\n v-model.trim=\"query\"\n type=\"search\"\n :placeholder=\"labels.searchPlaceholder\"\n class=\"text-truncate\"\n />\n <b-input-group-append>\n <b-input-group-text class=\"text-primary bg-white border-left-0\">\n <font-awesome-icon\n :icon=\"['fas', 'search']\"\n />\n </b-input-group-text>\n </b-input-group-append>\n </b-input-group>\n\n <b-row\n class=\"mt-2 h-100\"\n >\n <b-col\n cols=\"12\"\n sm=\"6\"\n >\n <div class=\"d-flex align-items-center\">\n <label\n class=\"text-primary mb-0\"\n >\n {{ labels.availableFieldsLabel }}\n </label>\n <b-button\n variant=\"link\"\n :class=\"[allSelected ? 'visible' : 'invisible']\"\n class=\"ml-auto px-0 text-muted\"\n @click.prevent=\"selectedFields = [...allFields]\"\n >\n {{ labels.selectAllFieldsLabel }}\n </b-button>\n </div>\n <b-list-group\n vertical\n >\n <draggable\n :key=\"filteredAvailableFields.length\"\n handle=\".handle\"\n :disabled=\"disabled\"\n :group=\"group\"\n :value=\"filteredAvailableFields\"\n class=\"overflow-auto\"\n :style=\"`${maxHeight}`\"\n >\n <b-list-group-item\n v-for=\"field in filteredAvailableFields\"\n :key=\"field.name\"\n class=\"mb-3 border rounded\"\n @dblclick=\"selectField(field)\"\n >\n <field-item\n :field=\"field\"\n :selected-fields=\"selectedFields\"\n :is-selected=\"false\"\n :system-field-label=\"labels.systemFieldLabel\"\n @select-field=\"selectField\"\n />\n </b-list-group-item>\n </draggable>\n </b-list-group>\n </b-col>\n <b-col\n cols=\"12\"\n sm=\"6\"\n class=\"pl-sm-0\"\n >\n <div class=\"d-flex align-items-center\">\n <label\n class=\"mb-0 text-primary\"\n >\n {{ labels.selectedFieldsLabel }}\n </label>\n <b-button\n variant=\"link\"\n :class=\"[allUnselected ? 'visible' : 'invisible']\"\n class=\"ml-auto px-0 text-muted\"\n @click.prevent=\"selectedFields = []\"\n >\n {{ labels.unselectAllFieldsLabel }}\n </b-button>\n </div>\n <b-list-group\n vertical\n >\n <draggable\n v-model=\"selectedFields\"\n handle=\".handle\"\n :disabled=\"disabled\"\n :group=\"group\"\n class=\"overflow-auto\"\n :style=\"`${maxHeight}`\"\n >\n <b-list-group-item\n v-for=\"field in filteredSelectedFields\"\n :key=\"field.name\"\n class=\"mb-3 border rounded\"\n @dblclick=\"unselectField(field)\"\n >\n <field-item\n :field=\"field\"\n :selected-fields=\"selectedFields\"\n :is-selected=\"true\"\n :system-field-label=\"labels.systemFieldLabel\"\n @unselect-field=\"unselectField\"\n />\n </b-list-group-item>\n </draggable>\n </b-list-group>\n </b-col>\n </b-row>\n </div>\n</template>\n<script>\nimport draggable from 'vuedraggable'\nimport FieldItem from './FieldItem.vue'\n\nexport default {\n components: {\n draggable,\n FieldItem,\n },\n\n props: {\n module: {\n type: Object,\n required: true,\n },\n\n fields: {\n type: Array,\n required: true,\n },\n\n disabled: {\n type: Boolean,\n default: false,\n },\n\n disabledTypes: {\n type: Array,\n default: () => [],\n },\n\n disableSystemFields: {\n type: Boolean,\n default: false,\n },\n\n systemFields: {\n type: Array,\n default: null,\n },\n\n fieldSubset: {\n type: Array,\n default: null,\n },\n\n group: {\n type: String,\n default: 'fields',\n },\n\n maxHeight: {\n type: String,\n default: 'max-height: 65vh;',\n },\n\n labels: {\n type: Object,\n required: true,\n },\n },\n\n data () {\n return {\n modules: [],\n query: '',\n }\n },\n\n computed: {\n selectedFields: {\n get () {\n // Needs to be done this way so it retains order of fields\n return this.fields.reduce((fields, field) => {\n field = this.allFields.find(({ name }) => name === field.name)\n if (field) {\n fields.push(field)\n }\n return fields\n }, [])\n },\n\n set (f) {\n this.$emit('update:fields', f)\n },\n },\n\n allFields () {\n let mFields = []\n if (this.fieldSubset) {\n mFields = this.module.filterFields(this.fieldSubset)\n } else {\n mFields = this.module.fields\n }\n\n if (this.disabledTypes.length > 0) {\n mFields = mFields.filter(({ kind }) => !this.disabledTypes.find(t => t === kind))\n }\n\n let sysFields = []\n if (!this.disableSystemFields) {\n sysFields = this.module.systemFields()\n if (this.systemFields) {\n sysFields = sysFields.filter(({ name }) => this.systemFields.find(sf => sf === name))\n }\n } else {\n mFields = mFields.filter(({ isSystem }) => !isSystem)\n }\n\n return [\n ...[...mFields].sort((a, b) => a.label.localeCompare(b.label)),\n ...sysFields,\n ]\n },\n\n allSelected () {\n return this.availableFields.length > 0\n },\n\n allUnselected () {\n return this.selectedFields.length > 0\n },\n\n availableFields () {\n // Remove selected fields\n return this.allFields.filter(a => !this.fields.some(f => a.name === f.name))\n },\n\n filteredAvailableFields () {\n return this.filterFields(this.availableFields)\n },\n\n filteredSelectedFields () {\n return this.filterFields(this.selectedFields)\n },\n },\n\n watch: {\n 'moduleID' (o, n) {\n if (o !== n) {\n this.selectedFields = []\n }\n },\n },\n\n methods: {\n filterFields (fields) {\n return fields\n .filter(f => f.name.toLowerCase().indexOf(this.query.toLowerCase()) > -1 || f.label.toLowerCase().indexOf(this.query.toLowerCase()) > -1)\n },\n selectField (field) {\n if (this.selectedFields.some(selectedField => selectedField.label === field.label)) return\n this.selectedFields = [...this.selectedFields, field]\n },\n unselectField (field) {\n this.selectedFields = this.selectedFields.filter(({ name }) => field.name !== name)\n },\n },\n}\n</script>\n<style lang=\"scss\" scoped>\n.handle {\n cursor: grab;\n}\n</style>\n",".handle {\n cursor: grab;\n}\n\n/*# sourceMappingURL=FieldPicker.vue.map */"]}, media: undefined });
|
|
85201
|
+
|
|
85202
|
+
};
|
|
85203
|
+
/* scoped */
|
|
85204
|
+
const __vue_scope_id__$Q = "data-v-d614af34";
|
|
85205
|
+
/* module identifier */
|
|
85206
|
+
const __vue_module_identifier__$Q = undefined;
|
|
85207
|
+
/* functional template */
|
|
85208
|
+
const __vue_is_functional_template__$Q = false;
|
|
85209
|
+
/* style inject SSR */
|
|
85210
|
+
|
|
85211
|
+
/* style inject shadow dom */
|
|
85212
|
+
|
|
85213
|
+
|
|
85214
|
+
|
|
85215
|
+
const __vue_component__$Q = /*#__PURE__*/normalizeComponent(
|
|
85216
|
+
{ render: __vue_render__$J, staticRenderFns: __vue_staticRenderFns__$J },
|
|
85217
|
+
__vue_inject_styles__$Q,
|
|
85218
|
+
__vue_script__$P,
|
|
85219
|
+
__vue_scope_id__$Q,
|
|
85220
|
+
__vue_is_functional_template__$Q,
|
|
85221
|
+
__vue_module_identifier__$Q,
|
|
85222
|
+
false,
|
|
85223
|
+
createInjector,
|
|
85224
|
+
undefined,
|
|
85225
|
+
undefined
|
|
85226
|
+
);
|
|
85227
|
+
|
|
85228
|
+
const del$1 = '|||';
|
|
85229
|
+
/**
|
|
85230
|
+
* Extract subgroups from the given groups
|
|
85231
|
+
* @param groups
|
|
85232
|
+
* @param path Array of groups that represent the path
|
|
85233
|
+
*/
|
|
85234
|
+
function extractGroups(groups, ...path) {
|
|
85235
|
+
const jpath = path.join(del$1);
|
|
85236
|
+
return [...(new Set(groups
|
|
85237
|
+
.filter(g => g.slice(0, path.length).join(del$1) === jpath)
|
|
85238
|
+
.map(g => g.slice(path.length, path.length + 1)[0])
|
|
85239
|
+
.filter(g => !!g))).values()];
|
|
85240
|
+
}
|
|
85241
|
+
/**
|
|
85242
|
+
* Extract subgroups from the catalogue that match the given path
|
|
85243
|
+
*
|
|
85244
|
+
* @param cat Catalogue
|
|
85245
|
+
* @param path Array of groups that represent the path
|
|
85246
|
+
* @constructor
|
|
85247
|
+
*/
|
|
85248
|
+
function ExtractSubgroups(cat, ...path) {
|
|
85249
|
+
const groups = Object.values(cat)
|
|
85250
|
+
.map(({ group }) => group)
|
|
85251
|
+
.filter(g => g !== undefined);
|
|
85252
|
+
return extractGroups(groups, ...path);
|
|
85253
|
+
}
|
|
85254
|
+
/**
|
|
85255
|
+
* Returns all components that match the given path
|
|
85256
|
+
*
|
|
85257
|
+
* @param cat Catalogue
|
|
85258
|
+
* @param path Array of groups that represent the path
|
|
85259
|
+
|
|
85260
|
+
*/
|
|
85261
|
+
function ExtractComponents(cat, ...path) {
|
|
85262
|
+
const jpath = path.join(del$1);
|
|
85263
|
+
return Object.values(cat)
|
|
85264
|
+
.filter(({ group }) => (group || []).join(del$1) === jpath);
|
|
85265
|
+
}
|
|
85266
|
+
|
|
85267
|
+
//
|
|
85268
|
+
var script$Q = {
|
|
85269
|
+
name: 'ComponentList',
|
|
85270
|
+
props: {
|
|
85271
|
+
catalogue: {
|
|
85272
|
+
required: true,
|
|
85273
|
+
type: Object
|
|
85274
|
+
},
|
|
85275
|
+
path: {
|
|
85276
|
+
type: Array,
|
|
85277
|
+
default: () => []
|
|
85278
|
+
}
|
|
85279
|
+
},
|
|
85280
|
+
computed: {
|
|
85281
|
+
// name of the current group
|
|
85282
|
+
root() {
|
|
85283
|
+
return this.path.length === 0;
|
|
85284
|
+
},
|
|
85285
|
+
|
|
85286
|
+
// name of the current group
|
|
85287
|
+
group() {
|
|
85288
|
+
return this.root ? undefined : this.path[this.path.length - 1];
|
|
85289
|
+
},
|
|
85290
|
+
|
|
85291
|
+
// returns all groups at this level
|
|
85292
|
+
subgroups() {
|
|
85293
|
+
return ExtractSubgroups(this.catalogue, ...this.path);
|
|
85294
|
+
},
|
|
85295
|
+
|
|
85296
|
+
components() {
|
|
85297
|
+
// return ExtractComponents(this.catalogue, ...this.path)
|
|
85298
|
+
return ExtractComponents(this.catalogue, ...this.path);
|
|
85299
|
+
}
|
|
85300
|
+
|
|
85301
|
+
}
|
|
85302
|
+
};
|
|
85303
|
+
|
|
85304
|
+
/* script */
|
|
85305
|
+
const __vue_script__$Q = script$Q;
|
|
85306
|
+
|
|
85307
|
+
/* template */
|
|
85308
|
+
var __vue_render__$K = function() {
|
|
85309
|
+
var _vm = this;
|
|
85310
|
+
var _h = _vm.$createElement;
|
|
85311
|
+
var _c = _vm._self._c || _h;
|
|
85312
|
+
return _c("div", [
|
|
85313
|
+
!_vm.root
|
|
85314
|
+
? _c("h5", { staticClass: "mb-0" }, [
|
|
85315
|
+
_vm._v("\n " + _vm._s(_vm.group) + "\n ")
|
|
85316
|
+
])
|
|
85317
|
+
: _vm._e(),
|
|
85318
|
+
_vm._v(" "),
|
|
85319
|
+
_vm.subgroups.length > 0 || _vm.components.length > 0
|
|
85320
|
+
? _c(
|
|
85321
|
+
"div",
|
|
85322
|
+
[
|
|
85323
|
+
_vm._l(_vm.components, function(cmp, i) {
|
|
85324
|
+
return _c(
|
|
85325
|
+
"div",
|
|
85326
|
+
{
|
|
85327
|
+
key: i,
|
|
85328
|
+
staticClass: "component ml-2",
|
|
85329
|
+
on: {
|
|
85330
|
+
click: function($event) {
|
|
85331
|
+
return _vm.$emit("select", cmp)
|
|
85332
|
+
}
|
|
85333
|
+
}
|
|
85334
|
+
},
|
|
85335
|
+
[
|
|
85336
|
+
_vm._v(
|
|
85337
|
+
"\n " +
|
|
85338
|
+
_vm._s(cmp.name || cmp.component.name || "Untitled") +
|
|
85339
|
+
"\n "
|
|
85340
|
+
),
|
|
85341
|
+
cmp.wip
|
|
85342
|
+
? _c(
|
|
85343
|
+
"b-badge",
|
|
85344
|
+
{
|
|
85345
|
+
staticClass: "float-right",
|
|
85346
|
+
attrs: { variant: "warning" }
|
|
85347
|
+
},
|
|
85348
|
+
[_vm._v("\n wip\n ")]
|
|
85349
|
+
)
|
|
85350
|
+
: _vm._e()
|
|
85351
|
+
],
|
|
85352
|
+
1
|
|
85353
|
+
)
|
|
85354
|
+
}),
|
|
85355
|
+
_vm._v(" "),
|
|
85356
|
+
_vm._l(_vm.subgroups, function(group) {
|
|
85357
|
+
return _c("component-list", {
|
|
85358
|
+
key: group,
|
|
85359
|
+
staticClass: "my-3",
|
|
85360
|
+
attrs: {
|
|
85361
|
+
catalogue: _vm.catalogue,
|
|
85362
|
+
path: _vm.path.concat([group])
|
|
85363
|
+
},
|
|
85364
|
+
on: {
|
|
85365
|
+
select: function($event) {
|
|
85366
|
+
return _vm.$emit("select", $event)
|
|
85367
|
+
}
|
|
85368
|
+
}
|
|
85369
|
+
})
|
|
85370
|
+
})
|
|
85371
|
+
],
|
|
85372
|
+
2
|
|
85373
|
+
)
|
|
85374
|
+
: _vm._e()
|
|
85375
|
+
])
|
|
85376
|
+
};
|
|
85377
|
+
var __vue_staticRenderFns__$K = [];
|
|
85378
|
+
__vue_render__$K._withStripped = true;
|
|
85379
|
+
|
|
85380
|
+
/* style */
|
|
85381
|
+
const __vue_inject_styles__$R = function (inject) {
|
|
85382
|
+
if (!inject) return
|
|
85383
|
+
inject("data-v-f45e268a_0", { source: ".component[data-v-f45e268a] {\n cursor: pointer;\n}\n\n/*# sourceMappingURL=ComponentList.vue.map */", map: {"version":3,"sources":["/home/fajfa/Kendu/Corteza/packages/corteza-vue/src/components/c3/ComponentList.vue","ComponentList.vue"],"names":[],"mappings":"AA+EA;EACA,eAAA;AC9EA;;AAEA,4CAA4C","file":"ComponentList.vue","sourcesContent":["<template>\n <div>\n <h5\n v-if=\"!root\"\n class=\"mb-0\"\n >\n {{ group }}\n </h5>\n\n <div\n v-if=\"subgroups.length > 0 || components.length > 0\"\n >\n <div\n v-for=\"(cmp, i) in components\"\n :key=\"i\"\n @click=\"$emit('select', cmp)\"\n class=\"component ml-2\"\n >\n {{ cmp.name || cmp.component.name || 'Untitled' }}\n <b-badge\n v-if=\"cmp.wip\"\n variant=\"warning\"\n class=\"float-right\"\n >\n wip\n </b-badge>\n </div>\n <component-list\n v-for=\"(group) in subgroups\"\n :key=\"group\"\n :catalogue=\"catalogue\"\n :path=\"[...path, group]\"\n @select=\"$emit('select', $event)\"\n class=\"my-3\"\n />\n </div>\n </div>\n</template>\n<script>\nimport {ExtractComponents, ExtractSubgroups} from './helpers.ts'\n\nexport default {\n name: 'ComponentList',\n props: {\n catalogue: {\n required: true,\n type: Object,\n },\n\n path: {\n type: Array,\n default: () => []\n },\n },\n\n computed: {\n // name of the current group\n root () {\n return this.path.length === 0\n },\n\n // name of the current group\n group () {\n return this.root ? undefined : this.path[this.path.length - 1]\n },\n\n // returns all groups at this level\n subgroups () {\n return ExtractSubgroups(this.catalogue, ...this.path)\n },\n\n components () {\n // return ExtractComponents(this.catalogue, ...this.path)\n return ExtractComponents(this.catalogue, ...this.path)\n }\n }\n}\n</script>\n<style lang=\"scss\" scoped>\n.component {\n cursor: pointer;\n}\n</style>\n",".component {\n cursor: pointer;\n}\n\n/*# sourceMappingURL=ComponentList.vue.map */"]}, media: undefined });
|
|
85384
|
+
|
|
85385
|
+
};
|
|
85386
|
+
/* scoped */
|
|
85387
|
+
const __vue_scope_id__$R = "data-v-f45e268a";
|
|
85388
|
+
/* module identifier */
|
|
85389
|
+
const __vue_module_identifier__$R = undefined;
|
|
85390
|
+
/* functional template */
|
|
85391
|
+
const __vue_is_functional_template__$R = false;
|
|
85392
|
+
/* style inject SSR */
|
|
85393
|
+
|
|
85394
|
+
/* style inject shadow dom */
|
|
85395
|
+
|
|
85396
|
+
|
|
85397
|
+
|
|
85398
|
+
const __vue_component__$R = /*#__PURE__*/normalizeComponent(
|
|
85399
|
+
{ render: __vue_render__$K, staticRenderFns: __vue_staticRenderFns__$K },
|
|
85400
|
+
__vue_inject_styles__$R,
|
|
85401
|
+
__vue_script__$Q,
|
|
85402
|
+
__vue_scope_id__$R,
|
|
85403
|
+
__vue_is_functional_template__$R,
|
|
85404
|
+
__vue_module_identifier__$R,
|
|
85405
|
+
false,
|
|
85406
|
+
createInjector,
|
|
85407
|
+
undefined,
|
|
85408
|
+
undefined
|
|
85409
|
+
);
|
|
85410
|
+
|
|
85411
|
+
//
|
|
85412
|
+
var script$R = {
|
|
84793
85413
|
name: 'C3',
|
|
84794
85414
|
components: {
|
|
84795
|
-
ComponentList: __vue_component__$
|
|
85415
|
+
ComponentList: __vue_component__$R
|
|
84796
85416
|
},
|
|
84797
85417
|
props: {
|
|
84798
85418
|
catalogue: {
|
|
@@ -84853,10 +85473,10 @@ var script$P = {
|
|
|
84853
85473
|
};
|
|
84854
85474
|
|
|
84855
85475
|
/* script */
|
|
84856
|
-
const __vue_script__$
|
|
85476
|
+
const __vue_script__$R = script$R;
|
|
84857
85477
|
|
|
84858
85478
|
/* template */
|
|
84859
|
-
var __vue_render__$
|
|
85479
|
+
var __vue_render__$L = function() {
|
|
84860
85480
|
var _vm = this;
|
|
84861
85481
|
var _h = _vm.$createElement;
|
|
84862
85482
|
var _c = _vm._self._c || _h;
|
|
@@ -84980,34 +85600,34 @@ var __vue_render__$J = function() {
|
|
|
84980
85600
|
: _vm._e()
|
|
84981
85601
|
])
|
|
84982
85602
|
};
|
|
84983
|
-
var __vue_staticRenderFns__$
|
|
84984
|
-
__vue_render__$
|
|
85603
|
+
var __vue_staticRenderFns__$L = [];
|
|
85604
|
+
__vue_render__$L._withStripped = true;
|
|
84985
85605
|
|
|
84986
85606
|
/* style */
|
|
84987
|
-
const __vue_inject_styles__$
|
|
85607
|
+
const __vue_inject_styles__$S = function (inject) {
|
|
84988
85608
|
if (!inject) return
|
|
84989
|
-
inject("data-v-
|
|
85609
|
+
inject("data-v-99d21784_0", { source: ".layout {\n height: 100vh;\n width: 100vw;\n display: grid;\n grid-template-rows: auto 400px;\n grid-template-columns: 300px auto;\n align-content: stretch;\n grid-template-areas: \"side main\" \"side controls\";\n}\n.layout aside {\n grid-area: side;\n overflow: auto;\n}\n.layout main {\n grid-area: main;\n background-image: linear-gradient(135deg, #f3f3f5 21.43%, #ffffff 21.43%, #ffffff 50%, #f3f3f5 50%, #f3f3f5 71.43%, #ffffff 71.43%, #ffffff 100%);\n background-size: 35px 35px;\n overflow: auto;\n}\n.layout .controls {\n grid-area: controls;\n overflow: auto;\n}\n.layout .controls .control-group {\n float: left;\n}\n.layout .scenario {\n cursor: pointer;\n}\n\n/*# sourceMappingURL=C3.vue.map */", map: {"version":3,"sources":["/home/fajfa/Kendu/Corteza/packages/corteza-vue/src/components/c3/C3.vue","C3.vue"],"names":[],"mappings":"AAwIA;EACA,aAAA;EACA,YAAA;EAEA,aAAA;EACA,8BAAA;EACA,iCAAA;EACA,sBAAA;EACA,gDACA;ACzIA;AD6IA;EACA,eAAA;EACA,cAAA;AC3IA;AD8IA;EACA,eAAA;EACA,iJAAA;EAUA,0BAAA;EACA,cAAA;ACrJA;ADwJA;EACA,mBAAA;EACA,cAAA;ACtJA;ADwJA;EACA,WAAA;ACtJA;AD0JA;EACA,eAAA;ACxJA;;AAEA,iCAAiC","file":"C3.vue","sourcesContent":["<template>\n <div class=\"layout\">\n <aside class=\"sidebar p-2\">\n <h5\n class=\"border-bottom\">\n C3: Component Catalogue\n </h5>\n <component-list\n :catalogue=\"catalogue\"\n @select=\"setCurrent($event)\"\n />\n </aside>\n\n <main\n class=\"p-5\"\n >\n <component\n :is=\"current.component\"\n v-if=\"current\"\n v-bind=\"current.props\"\n />\n <p\n v-else\n class=\"text-center\"\n >\n Select a component from the C3 Catalogue and start hacking :)\n </p>\n </main>\n\n <div\n class=\"controls px-5 py-2 mt-2\"\n v-if=\"current\"\n >\n <div\n class=\"control-group mr-2\"\n v-for=\"(cg, g) in controlGroups\"\n :key=\"`control-group-${g}`\"\n >\n <h3>\n Controls\n </h3>\n <component\n :is=\"c.component\"\n v-for=\"(c, i) in cg\"\n :key=\"i\"\n :value=\"c.value(current.props)\"\n v-bind=\"c.props\"\n @update=\"c.update(current.props, $event)\"\n />\n </div>\n\n <div\n v-if=\"current.scenarios\"\n class=\"control-group float-right\"\n >\n <h3>\n Pre-set controls\n </h3>\n <ul\n class=\"pl-0\"\n >\n <li\n v-for=\"(s, i) in current.scenarios\"\n :key=\"i\"\n class=\"list-unstyled scenario\"\n @click=\"setScenario(s)\"\n >\n {{ s.label }}\n </li>\n </ul>\n </div>\n </div>\n </div>\n</template>\n<script>\nimport ComponentList from './ComponentList.vue'\n\nexport default {\n name: 'C3',\n\n components: {\n ComponentList,\n },\n\n props: {\n catalogue: {\n required: true,\n type: Object,\n },\n },\n\n computed: {\n controlGroups () {\n if (this.current.controls.length === 0) {\n return []\n }\n\n if (Array.isArray(this.current.controls[0])) {\n // already grouped\n return this.current.controls\n }\n\n // make one virtual group holding all controls\n return [this.current.controls]\n },\n },\n\n data () {\n return {\n current: undefined,\n }\n },\n\n methods: {\n setCurrent (component) {\n this.current = { props: {}, ...component }\n this.setScenario(this.current)\n },\n\n setScenario ({ props = {}, controls = [] }) {\n // create missing props from controls\n const apply = (c, props) => c.update(props, c.value(props) || null)\n controls.forEach(c => {\n if (Array.isArray(c)) {\n c.forEach(c => apply(c, props))\n } else {\n apply(c, props)\n }\n })\n\n this.current.props = props\n },\n },\n}\n</script>\n<style lang=\"scss\">\n.layout {\n height: 100vh;\n width: 100vw;\n\n display: grid;\n grid-template-rows: auto 400px;\n grid-template-columns: 300px auto;\n align-content: stretch;\n grid-template-areas:\n \"side main\"\n \"side controls\"\n ;\n\n aside {\n grid-area: side;\n overflow: auto;\n }\n\n main {\n grid-area: main;\n background-image: linear-gradient(\n 135deg,\n #f3f3f5 21.43%,\n #ffffff 21.43%,\n #ffffff 50%,\n #f3f3f5 50%,\n #f3f3f5 71.43%,\n #ffffff 71.43%,\n #ffffff 100%\n );\n background-size: 35.00px 35.00px;\n overflow: auto;\n }\n\n .controls {\n grid-area: controls;\n overflow: auto;\n\n .control-group {\n float: left;\n }\n }\n\n .scenario {\n cursor: pointer;\n }\n}\n</style>\n",".layout {\n height: 100vh;\n width: 100vw;\n display: grid;\n grid-template-rows: auto 400px;\n grid-template-columns: 300px auto;\n align-content: stretch;\n grid-template-areas: \"side main\" \"side controls\";\n}\n.layout aside {\n grid-area: side;\n overflow: auto;\n}\n.layout main {\n grid-area: main;\n background-image: linear-gradient(135deg, #f3f3f5 21.43%, #ffffff 21.43%, #ffffff 50%, #f3f3f5 50%, #f3f3f5 71.43%, #ffffff 71.43%, #ffffff 100%);\n background-size: 35px 35px;\n overflow: auto;\n}\n.layout .controls {\n grid-area: controls;\n overflow: auto;\n}\n.layout .controls .control-group {\n float: left;\n}\n.layout .scenario {\n cursor: pointer;\n}\n\n/*# sourceMappingURL=C3.vue.map */"]}, media: undefined });
|
|
84990
85610
|
|
|
84991
85611
|
};
|
|
84992
85612
|
/* scoped */
|
|
84993
|
-
const __vue_scope_id__$
|
|
85613
|
+
const __vue_scope_id__$S = undefined;
|
|
84994
85614
|
/* module identifier */
|
|
84995
|
-
const __vue_module_identifier__$
|
|
85615
|
+
const __vue_module_identifier__$S = undefined;
|
|
84996
85616
|
/* functional template */
|
|
84997
|
-
const __vue_is_functional_template__$
|
|
85617
|
+
const __vue_is_functional_template__$S = false;
|
|
84998
85618
|
/* style inject SSR */
|
|
84999
85619
|
|
|
85000
85620
|
/* style inject shadow dom */
|
|
85001
85621
|
|
|
85002
85622
|
|
|
85003
85623
|
|
|
85004
|
-
const __vue_component__$
|
|
85005
|
-
{ render: __vue_render__$
|
|
85006
|
-
__vue_inject_styles__$
|
|
85007
|
-
__vue_script__$
|
|
85008
|
-
__vue_scope_id__$
|
|
85009
|
-
__vue_is_functional_template__$
|
|
85010
|
-
__vue_module_identifier__$
|
|
85624
|
+
const __vue_component__$S = /*#__PURE__*/normalizeComponent(
|
|
85625
|
+
{ render: __vue_render__$L, staticRenderFns: __vue_staticRenderFns__$L },
|
|
85626
|
+
__vue_inject_styles__$S,
|
|
85627
|
+
__vue_script__$R,
|
|
85628
|
+
__vue_scope_id__$S,
|
|
85629
|
+
__vue_is_functional_template__$S,
|
|
85630
|
+
__vue_module_identifier__$S,
|
|
85011
85631
|
false,
|
|
85012
85632
|
createInjector,
|
|
85013
85633
|
undefined,
|
|
@@ -85025,7 +85645,7 @@ __vue_render__$J._withStripped = true;
|
|
|
85025
85645
|
//
|
|
85026
85646
|
//
|
|
85027
85647
|
//
|
|
85028
|
-
var script$
|
|
85648
|
+
var script$S = {
|
|
85029
85649
|
props: {
|
|
85030
85650
|
label: {
|
|
85031
85651
|
required: true,
|
|
@@ -85039,10 +85659,10 @@ var script$Q = {
|
|
|
85039
85659
|
};
|
|
85040
85660
|
|
|
85041
85661
|
/* script */
|
|
85042
|
-
const __vue_script__$
|
|
85662
|
+
const __vue_script__$S = script$S;
|
|
85043
85663
|
|
|
85044
85664
|
/* template */
|
|
85045
|
-
var __vue_render__$
|
|
85665
|
+
var __vue_render__$M = function() {
|
|
85046
85666
|
var _vm = this;
|
|
85047
85667
|
var _h = _vm.$createElement;
|
|
85048
85668
|
var _c = _vm._self._c || _h;
|
|
@@ -85062,17 +85682,17 @@ var __vue_render__$K = function() {
|
|
|
85062
85682
|
1
|
|
85063
85683
|
)
|
|
85064
85684
|
};
|
|
85065
|
-
var __vue_staticRenderFns__$
|
|
85066
|
-
__vue_render__$
|
|
85685
|
+
var __vue_staticRenderFns__$M = [];
|
|
85686
|
+
__vue_render__$M._withStripped = true;
|
|
85067
85687
|
|
|
85068
85688
|
/* style */
|
|
85069
|
-
const __vue_inject_styles__$
|
|
85689
|
+
const __vue_inject_styles__$T = undefined;
|
|
85070
85690
|
/* scoped */
|
|
85071
|
-
const __vue_scope_id__$
|
|
85691
|
+
const __vue_scope_id__$T = undefined;
|
|
85072
85692
|
/* module identifier */
|
|
85073
|
-
const __vue_module_identifier__$
|
|
85693
|
+
const __vue_module_identifier__$T = undefined;
|
|
85074
85694
|
/* functional template */
|
|
85075
|
-
const __vue_is_functional_template__$
|
|
85695
|
+
const __vue_is_functional_template__$T = false;
|
|
85076
85696
|
/* style inject */
|
|
85077
85697
|
|
|
85078
85698
|
/* style inject SSR */
|
|
@@ -85081,13 +85701,13 @@ __vue_render__$K._withStripped = true;
|
|
|
85081
85701
|
|
|
85082
85702
|
|
|
85083
85703
|
|
|
85084
|
-
const __vue_component__$
|
|
85085
|
-
{ render: __vue_render__$
|
|
85086
|
-
__vue_inject_styles__$
|
|
85087
|
-
__vue_script__$
|
|
85088
|
-
__vue_scope_id__$
|
|
85089
|
-
__vue_is_functional_template__$
|
|
85090
|
-
__vue_module_identifier__$
|
|
85704
|
+
const __vue_component__$T = /*#__PURE__*/normalizeComponent(
|
|
85705
|
+
{ render: __vue_render__$M, staticRenderFns: __vue_staticRenderFns__$M },
|
|
85706
|
+
__vue_inject_styles__$T,
|
|
85707
|
+
__vue_script__$S,
|
|
85708
|
+
__vue_scope_id__$T,
|
|
85709
|
+
__vue_is_functional_template__$T,
|
|
85710
|
+
__vue_module_identifier__$T,
|
|
85091
85711
|
false,
|
|
85092
85712
|
undefined,
|
|
85093
85713
|
undefined,
|
|
@@ -85105,7 +85725,7 @@ __vue_render__$K._withStripped = true;
|
|
|
85105
85725
|
//
|
|
85106
85726
|
//
|
|
85107
85727
|
//
|
|
85108
|
-
var script$
|
|
85728
|
+
var script$T = {
|
|
85109
85729
|
props: {
|
|
85110
85730
|
label: {
|
|
85111
85731
|
required: true,
|
|
@@ -85119,10 +85739,10 @@ var script$R = {
|
|
|
85119
85739
|
};
|
|
85120
85740
|
|
|
85121
85741
|
/* script */
|
|
85122
|
-
const __vue_script__$
|
|
85742
|
+
const __vue_script__$T = script$T;
|
|
85123
85743
|
|
|
85124
85744
|
/* template */
|
|
85125
|
-
var __vue_render__$
|
|
85745
|
+
var __vue_render__$N = function() {
|
|
85126
85746
|
var _vm = this;
|
|
85127
85747
|
var _h = _vm.$createElement;
|
|
85128
85748
|
var _c = _vm._self._c || _h;
|
|
@@ -85142,17 +85762,17 @@ var __vue_render__$L = function() {
|
|
|
85142
85762
|
1
|
|
85143
85763
|
)
|
|
85144
85764
|
};
|
|
85145
|
-
var __vue_staticRenderFns__$
|
|
85146
|
-
__vue_render__$
|
|
85765
|
+
var __vue_staticRenderFns__$N = [];
|
|
85766
|
+
__vue_render__$N._withStripped = true;
|
|
85147
85767
|
|
|
85148
85768
|
/* style */
|
|
85149
|
-
const __vue_inject_styles__$
|
|
85769
|
+
const __vue_inject_styles__$U = undefined;
|
|
85150
85770
|
/* scoped */
|
|
85151
|
-
const __vue_scope_id__$
|
|
85771
|
+
const __vue_scope_id__$U = undefined;
|
|
85152
85772
|
/* module identifier */
|
|
85153
|
-
const __vue_module_identifier__$
|
|
85773
|
+
const __vue_module_identifier__$U = undefined;
|
|
85154
85774
|
/* functional template */
|
|
85155
|
-
const __vue_is_functional_template__$
|
|
85775
|
+
const __vue_is_functional_template__$U = false;
|
|
85156
85776
|
/* style inject */
|
|
85157
85777
|
|
|
85158
85778
|
/* style inject SSR */
|
|
@@ -85161,13 +85781,13 @@ __vue_render__$L._withStripped = true;
|
|
|
85161
85781
|
|
|
85162
85782
|
|
|
85163
85783
|
|
|
85164
|
-
const __vue_component__$
|
|
85165
|
-
{ render: __vue_render__$
|
|
85166
|
-
__vue_inject_styles__$
|
|
85167
|
-
__vue_script__$
|
|
85168
|
-
__vue_scope_id__$
|
|
85169
|
-
__vue_is_functional_template__$
|
|
85170
|
-
__vue_module_identifier__$
|
|
85784
|
+
const __vue_component__$U = /*#__PURE__*/normalizeComponent(
|
|
85785
|
+
{ render: __vue_render__$N, staticRenderFns: __vue_staticRenderFns__$N },
|
|
85786
|
+
__vue_inject_styles__$U,
|
|
85787
|
+
__vue_script__$T,
|
|
85788
|
+
__vue_scope_id__$U,
|
|
85789
|
+
__vue_is_functional_template__$U,
|
|
85790
|
+
__vue_module_identifier__$U,
|
|
85171
85791
|
false,
|
|
85172
85792
|
undefined,
|
|
85173
85793
|
undefined,
|
|
@@ -85184,7 +85804,7 @@ __vue_render__$L._withStripped = true;
|
|
|
85184
85804
|
//
|
|
85185
85805
|
//
|
|
85186
85806
|
//
|
|
85187
|
-
var script$
|
|
85807
|
+
var script$U = {
|
|
85188
85808
|
props: {
|
|
85189
85809
|
label: {
|
|
85190
85810
|
required: true,
|
|
@@ -85198,10 +85818,10 @@ var script$S = {
|
|
|
85198
85818
|
};
|
|
85199
85819
|
|
|
85200
85820
|
/* script */
|
|
85201
|
-
const __vue_script__$
|
|
85821
|
+
const __vue_script__$U = script$U;
|
|
85202
85822
|
|
|
85203
85823
|
/* template */
|
|
85204
|
-
var __vue_render__$
|
|
85824
|
+
var __vue_render__$O = function() {
|
|
85205
85825
|
var _vm = this;
|
|
85206
85826
|
var _h = _vm.$createElement;
|
|
85207
85827
|
var _c = _vm._self._c || _h;
|
|
@@ -85224,17 +85844,17 @@ var __vue_render__$M = function() {
|
|
|
85224
85844
|
1
|
|
85225
85845
|
)
|
|
85226
85846
|
};
|
|
85227
|
-
var __vue_staticRenderFns__$
|
|
85228
|
-
__vue_render__$
|
|
85847
|
+
var __vue_staticRenderFns__$O = [];
|
|
85848
|
+
__vue_render__$O._withStripped = true;
|
|
85229
85849
|
|
|
85230
85850
|
/* style */
|
|
85231
|
-
const __vue_inject_styles__$
|
|
85851
|
+
const __vue_inject_styles__$V = undefined;
|
|
85232
85852
|
/* scoped */
|
|
85233
|
-
const __vue_scope_id__$
|
|
85853
|
+
const __vue_scope_id__$V = undefined;
|
|
85234
85854
|
/* module identifier */
|
|
85235
|
-
const __vue_module_identifier__$
|
|
85855
|
+
const __vue_module_identifier__$V = undefined;
|
|
85236
85856
|
/* functional template */
|
|
85237
|
-
const __vue_is_functional_template__$
|
|
85857
|
+
const __vue_is_functional_template__$V = false;
|
|
85238
85858
|
/* style inject */
|
|
85239
85859
|
|
|
85240
85860
|
/* style inject SSR */
|
|
@@ -85243,13 +85863,13 @@ __vue_render__$M._withStripped = true;
|
|
|
85243
85863
|
|
|
85244
85864
|
|
|
85245
85865
|
|
|
85246
|
-
const __vue_component__$
|
|
85247
|
-
{ render: __vue_render__$
|
|
85248
|
-
__vue_inject_styles__$
|
|
85249
|
-
__vue_script__$
|
|
85250
|
-
__vue_scope_id__$
|
|
85251
|
-
__vue_is_functional_template__$
|
|
85252
|
-
__vue_module_identifier__$
|
|
85866
|
+
const __vue_component__$V = /*#__PURE__*/normalizeComponent(
|
|
85867
|
+
{ render: __vue_render__$O, staticRenderFns: __vue_staticRenderFns__$O },
|
|
85868
|
+
__vue_inject_styles__$V,
|
|
85869
|
+
__vue_script__$U,
|
|
85870
|
+
__vue_scope_id__$V,
|
|
85871
|
+
__vue_is_functional_template__$V,
|
|
85872
|
+
__vue_module_identifier__$V,
|
|
85253
85873
|
false,
|
|
85254
85874
|
undefined,
|
|
85255
85875
|
undefined,
|
|
@@ -85268,7 +85888,7 @@ __vue_render__$M._withStripped = true;
|
|
|
85268
85888
|
//
|
|
85269
85889
|
//
|
|
85270
85890
|
//
|
|
85271
|
-
var script$
|
|
85891
|
+
var script$V = {
|
|
85272
85892
|
props: {
|
|
85273
85893
|
label: {
|
|
85274
85894
|
required: true,
|
|
@@ -85286,10 +85906,10 @@ var script$T = {
|
|
|
85286
85906
|
};
|
|
85287
85907
|
|
|
85288
85908
|
/* script */
|
|
85289
|
-
const __vue_script__$
|
|
85909
|
+
const __vue_script__$V = script$V;
|
|
85290
85910
|
|
|
85291
85911
|
/* template */
|
|
85292
|
-
var __vue_render__$
|
|
85912
|
+
var __vue_render__$P = function() {
|
|
85293
85913
|
var _vm = this;
|
|
85294
85914
|
var _h = _vm.$createElement;
|
|
85295
85915
|
var _c = _vm._self._c || _h;
|
|
@@ -85309,17 +85929,17 @@ var __vue_render__$N = function() {
|
|
|
85309
85929
|
1
|
|
85310
85930
|
)
|
|
85311
85931
|
};
|
|
85312
|
-
var __vue_staticRenderFns__$
|
|
85313
|
-
__vue_render__$
|
|
85932
|
+
var __vue_staticRenderFns__$P = [];
|
|
85933
|
+
__vue_render__$P._withStripped = true;
|
|
85314
85934
|
|
|
85315
85935
|
/* style */
|
|
85316
|
-
const __vue_inject_styles__$
|
|
85936
|
+
const __vue_inject_styles__$W = undefined;
|
|
85317
85937
|
/* scoped */
|
|
85318
|
-
const __vue_scope_id__$
|
|
85938
|
+
const __vue_scope_id__$W = undefined;
|
|
85319
85939
|
/* module identifier */
|
|
85320
|
-
const __vue_module_identifier__$
|
|
85940
|
+
const __vue_module_identifier__$W = undefined;
|
|
85321
85941
|
/* functional template */
|
|
85322
|
-
const __vue_is_functional_template__$
|
|
85942
|
+
const __vue_is_functional_template__$W = false;
|
|
85323
85943
|
/* style inject */
|
|
85324
85944
|
|
|
85325
85945
|
/* style inject SSR */
|
|
@@ -85328,13 +85948,13 @@ __vue_render__$N._withStripped = true;
|
|
|
85328
85948
|
|
|
85329
85949
|
|
|
85330
85950
|
|
|
85331
|
-
const __vue_component__$
|
|
85332
|
-
{ render: __vue_render__$
|
|
85333
|
-
__vue_inject_styles__$
|
|
85334
|
-
__vue_script__$
|
|
85335
|
-
__vue_scope_id__$
|
|
85336
|
-
__vue_is_functional_template__$
|
|
85337
|
-
__vue_module_identifier__$
|
|
85951
|
+
const __vue_component__$W = /*#__PURE__*/normalizeComponent(
|
|
85952
|
+
{ render: __vue_render__$P, staticRenderFns: __vue_staticRenderFns__$P },
|
|
85953
|
+
__vue_inject_styles__$W,
|
|
85954
|
+
__vue_script__$V,
|
|
85955
|
+
__vue_scope_id__$W,
|
|
85956
|
+
__vue_is_functional_template__$W,
|
|
85957
|
+
__vue_module_identifier__$W,
|
|
85338
85958
|
false,
|
|
85339
85959
|
undefined,
|
|
85340
85960
|
undefined,
|
|
@@ -102546,16 +103166,16 @@ function generic(component, { handler, props }) {
|
|
|
102546
103166
|
props }, handler);
|
|
102547
103167
|
}
|
|
102548
103168
|
function input(label, handler) {
|
|
102549
|
-
return generic(__vue_component__$
|
|
103169
|
+
return generic(__vue_component__$T, { handler, props: { label } });
|
|
102550
103170
|
}
|
|
102551
103171
|
function textarea(label, handler) {
|
|
102552
|
-
return generic(__vue_component__$
|
|
103172
|
+
return generic(__vue_component__$U, { handler, props: { label } });
|
|
102553
103173
|
}
|
|
102554
103174
|
function checkbox(label, handler) {
|
|
102555
|
-
return generic(__vue_component__$
|
|
103175
|
+
return generic(__vue_component__$V, { handler, props: { label } });
|
|
102556
103176
|
}
|
|
102557
103177
|
function select(label, handler, options) {
|
|
102558
|
-
return generic(__vue_component__$
|
|
103178
|
+
return generic(__vue_component__$W, {
|
|
102559
103179
|
handler,
|
|
102560
103180
|
props: {
|
|
102561
103181
|
label,
|
|
@@ -102574,7 +103194,7 @@ var controls = /*#__PURE__*/Object.freeze({
|
|
|
102574
103194
|
});
|
|
102575
103195
|
|
|
102576
103196
|
var index$2 = {
|
|
102577
|
-
View: __vue_component__$
|
|
103197
|
+
View: __vue_component__$S,
|
|
102578
103198
|
controls,
|
|
102579
103199
|
};
|
|
102580
103200
|
|
|
@@ -102604,6 +103224,8 @@ var index$3 = /*#__PURE__*/Object.freeze({
|
|
|
102604
103224
|
CToaster: __vue_component__$N,
|
|
102605
103225
|
CToasterLink: __vue_component__$M,
|
|
102606
103226
|
CReminderSidebar: __vue_component__$O,
|
|
103227
|
+
FieldItem: __vue_component__$P,
|
|
103228
|
+
FieldPicker: __vue_component__$Q,
|
|
102607
103229
|
C3: index$2,
|
|
102608
103230
|
CPrompts: __vue_component__$B,
|
|
102609
103231
|
CPromptModal: __vue_component__$A,
|