{"version":3,"sources":["webpack:///./src/mixins/shared/user/principalMixin.js","webpack:///./src/mixins/shared/base/component/baseComponentMixin.js","webpack:///./src/mixins/shared/base/app/appMixin.js","webpack:///./src/mixins/public/publicAccessMixin.js","webpack:///./src/mixins/shared/router/routerMixin.js","webpack:///./src/mixins/shared/navigatable/moduleItemNavigatable.js","webpack:///./src/mixins/shared/snackbarable/snackbarableMixin.js","webpack:///./src/mixins/shared/content/contentRecordMixin.js","webpack:///./src/mixins/shared/content/moduleContentRecordMixin.js","webpack:///./src/views/folder/FolderContent.vue","webpack:///./src/mixins/folder/content/folderContentMixin.js","webpack:///src/views/folder/FolderContent.vue","webpack:///./src/views/folder/FolderContent.vue?a8aa","webpack:///./src/views/folder/FolderContent.vue?8a34","webpack:///./src/mixins/shared/content/moduleContentMixin.js","webpack:///./src/services/error/errorMessages.js"],"names":["mapGetters","createNamespacedHelpers","principalMixin","mixins","publicAccessMixin","computed","principal","findFeature","isAvailableApplicationModule","isAvailableProjectsModule","this","moduleNames","Projects","isAvailableMyInboxModule","Tasks","isAvailableAgendaModule","Agenda","methods","isUserStateOwner","record","isStateOwner","isAvailableFeature","name","status","featureStatus","supported","licenced","released","feature","used","total","baseComponentMixin","data","currentError","isLoading","componentName","$options","loadingText","hasError","isEmpty","fullMethodName","handleError","error","methodName","_error$toString","toString","console","clearError","undefined","onAlertVisibilityChanged","visible","appMixin","appModuleName","appModuleTitle","appModuleIcon","isPublicAccess","publicAccess","routerMixin","canNavigateToModuleItemByModuleItemId","moduleName","id","_this$$router$current","_id$toString","$router","currentRoute","params","canNavigateToChildRecordById","expandedId","_this$$router$current2","_this$$router$current3","moduleItemNavigatable","canNavigateToModuleItem","push","createModuleItemContentRoute","e","warn","createModuleItemContentRouteLocation","snackbarableMixin","snackbarVisible","snackbarColor","snackbarText","snackbarTimeout","snackbarVisibleCloseButton","snackbarTop","snackbarMultiLine","components","Snackbar","showSnackbarSuccess","text","top","showSnackbar","colorTheme","success","showSnackbarInfo","info","showSnackbarError","timeout","multiLine","showSnackbarWarning","warning","color","closeSnackbar","contentRecordMixin","projects","allowedViewFileHistory","isAllowedOperation","recordOperation","AccessVersion","visibleSubRecords","_this$record$recordTy","_this$record","typeId","recordTypeId","recordType","RECORD","FILE","visibleFileVersions","_this$record$recordTy2","_this$record2","visiblePreviewTab","canPreview","visibleDocumentPreview","visibleDocumentViewerPreview","fullRecordName","moduleContentRecordMixin","moduleContentMixin","expandedPreview","recordId","_this$record$id","recordVersion","_this$record$version","version","previewRecordVersion","canPreviewInDocumentViewer","projectCount","_this$projects$length","_this$projects","length","visibleProjectsTab","_this$record$id2","_this$record3","onExpandedPreview","value","render","_vm","_c","_self","attrs","visibleDataTable","on","scopedSlots","_u","key","fn","breadcrumbs","proxy","directives","rawName","expression","_e","model","callback","$$v","_v","_s","computedSnackbarText","staticRenderFns","mapState","mapActions","folderContentMixin","props","type","Number","default","selectedModuleItemId","selectedModuleItemName","isShortcut","log","payload","parentId","setRecordShortcut","setRecord","setProjects","storeSelectedModuleItemId","storeSelectedModuleExpandedId","panelDocuments","panelHistory","FolderRecordDetails","FolderDocuments","FolderFileVersions","DocumentPreview","DocumentViewer","BreadcrumbsRecord","FolderProjects","component","BaseContentLayout","ExpansionPanelLayout","notImplementedMethod","setModuleItem","_ref","$route","createModuleExpandRecordShortcutContentRouteName","setCurrentModuleItem","watch","to","_ref2","notImplementedComputed","propertyName","byClient"],"mappings":"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","file":"js/chunk-10da3e10.44da4362.js","sourcesContent":["// services\r\nimport { isStateOwner } from \"@/services/record/recordService\";\r\n\r\n// model\r\nimport { featureStatus } from \"@/model/features/featuresModel\";\r\nimport { moduleNames } from \"@/model/solution/moduleModel\";\r\n\r\n// vuex\r\nimport { createNamespacedHelpers } from \"vuex\";\r\nconst { mapGetters } = createNamespacedHelpers(\"user\");\r\n\r\nimport { publicAccessMixin } from \"@/mixins/public/publicAccessMixin\";\r\n\r\n/**\r\n * Encapsulate Questys principal\r\n */\r\nexport const principalMixin = {\r\n mixins: [publicAccessMixin],\r\n computed: {\r\n ...mapGetters({\r\n principal: \"principal\",\r\n findFeature: \"findFeature\",\r\n isAvailableApplicationModule: \"isAvailableApplicationModule\"\r\n }),\r\n\r\n /**\r\n * compute whether workflow projects module is available (licensed, supported, enabled)\r\n * @return {boolean} true if workflow projects module is available\r\n */\r\n isAvailableProjectsModule() {\r\n return this.isAvailableApplicationModule(moduleNames.Projects);\r\n },\r\n\r\n /**\r\n * compute whether workflow my inbox (tasks) module is available (licensed, supported, enabled)\r\n * @return {boolean} true if workflow my inbox (tasks) module is available\r\n */\r\n isAvailableMyInboxModule() {\r\n return this.isAvailableApplicationModule(moduleNames.Tasks);\r\n },\r\n\r\n /**\r\n * compute whether Agenda module is available (licensed, supported, enabled)\r\n * @return {boolean} true if Agenda module is available\r\n */\r\n isAvailableAgendaModule() {\r\n return this.isAvailableApplicationModule(moduleNames.Agenda);\r\n }\r\n },\r\n methods: {\r\n /**\r\n * determines whether the current user (principal) is State Owner of specified record\r\n * @param {{id: number, name: string, stateOwnerId: number}} record\r\n * @return {boolean} returns true if current user (principal) is State Owner of specified record\r\n */\r\n isUserStateOwner(record) {\r\n return isStateOwner(record, this.principal);\r\n },\r\n\r\n /**\r\n * is Available Feature\r\n * @param {string} name Feature name\r\n * @return {boolean} true if Feature is Available (supported, licenced, released)\r\n */\r\n isAvailableFeature(name) {\r\n const status = this.featureStatus(name);\r\n return status.supported && status.licenced && status.released;\r\n },\r\n\r\n /**\r\n * get feature Status\r\n * @param name\r\n * @return {{licenced: boolean, released: boolean, statusText: string, supported: boolean, notSupportedReason: string}}\r\n */\r\n featureStatus(name) {\r\n let feature = this.findFeature(name);\r\n if (!feature) {\r\n feature = {\r\n name: name,\r\n used: 1,\r\n total: 1\r\n };\r\n }\r\n return featureStatus(feature);\r\n }\r\n }\r\n};\r\n","/**\r\n * Base Component Mixin serves as a base class for components\r\n */\r\nimport { isEmpty } from \"@/utils\";\r\n\r\nexport const baseComponentMixin = {\r\n data() {\r\n return {\r\n /**\r\n * Current Error\r\n * @type {string}\r\n */\r\n currentError: \"\",\r\n\r\n /**\r\n * Is Loading indicator\r\n * @type {boolean}\r\n */\r\n isLoading: false\r\n };\r\n },\r\n computed: {\r\n /**\r\n * Get component Name\r\n * @returns {string}\r\n */\r\n componentName() {\r\n return this.$options.name;\r\n },\r\n /**\r\n * Get loading Text (overwrite it if needed)\r\n * @returns {string}\r\n */\r\n loadingText() {\r\n return `Loading ...`;\r\n },\r\n /**\r\n * Has an Error occurred\r\n * @returns {boolean}\r\n */\r\n hasError() {\r\n return !isEmpty(this.currentError);\r\n }\r\n },\r\n methods: {\r\n /**\r\n * Build full Method (function) Name (this.componentName + Method Name)\r\n * @param {string} name\r\n * @returns {string}\r\n */\r\n fullMethodName(name) {\r\n return `${this.componentName}.${name}`;\r\n },\r\n /**\r\n * Handle Error\r\n * @param {string} error\r\n * @param {string} methodName\r\n */\r\n handleError(error, methodName = \"\") {\r\n this.currentError = error?.toString() ?? \"\";\r\n\r\n console.error(\r\n methodName ? `${this.fullMethodName(methodName)} Error:` : \"Error:\",\r\n this.currentError\r\n );\r\n },\r\n /**\r\n * Clear current error\r\n */\r\n clearError() {\r\n this.currentError = undefined;\r\n },\r\n /**\r\n * on Alert Visibility Changed event handler\r\n * @param {Boolean|boolean} visible\r\n */\r\n onAlertVisibilityChanged(visible) {\r\n if (!visible) {\r\n this.clearError();\r\n }\r\n }\r\n }\r\n};\r\n","import { createNamespacedHelpers } from \"vuex\";\r\nconst { mapGetters } = createNamespacedHelpers(\"solution\");\r\n\r\n/**\r\n * appMixin contains options (adhere to the DRY principle) &\r\n * code re-usability for Application\r\n */\r\nexport const appMixin = {\r\n computed: {\r\n ...mapGetters({\r\n appModuleName: \"appModuleName\",\r\n appModuleTitle: \"appModuleTitle\",\r\n appModuleIcon: \"appModuleIcon\"\r\n })\r\n }\r\n};\r\n","import { isPublicAccess, publicAccess } from \"@/services/config/configService\";\r\n\r\n/**\r\n * Encapsulate public Access business logic\r\n */\r\nexport const publicAccessMixin = {\r\n computed: {\r\n /**\r\n * is Public Access\r\n * @return {boolean} true if Public Access is enabled\r\n */\r\n isPublicAccess() {\r\n return isPublicAccess;\r\n },\r\n\r\n /**\r\n * public Access\r\n * @return {\r\n * {searcher: {name: string, code: string, repository: string}},\r\n * {appBar: {prominent: boolean, color: string, gradient: string, useTabs: boolean, logo: string, logoSize:number, backgroundImageUrl: string, title: string, collapseOnScroll: boolean, fadeImgOnScroll: boolean, shrinkOnScroll: boolean}}, {sideBar: {enableMiniSidebar: boolean, backgroundImageUrl: string}}, {sideBar: {enableMiniSidebar: boolean, backgroundImageUrl: string}},\r\n * {buttons: {color: string, elevation: number, outlined: boolean, rounded: boolean, textStyle: boolean}},\r\n * {company: {disclaimers: string, name: string, logo: string, description: string, linkedIn: string, address: {zip: string, country: string, city: string, addressLine1: string, addressLine2: string, state: string}}},\r\n * {contact: {name: string, description: string, phone: string, phoneDescription: string, email: string, emailDescription: string}},\r\n * {modules: {visibleFolder: string, visibleCategory: string, visibleMeetings: string}}\r\n * }\r\n */\r\n publicAccess() {\r\n return publicAccess;\r\n }\r\n }\r\n};\r\n","/**\r\n * Contains options (adhere to the DRY principle) & code re-usability\r\n * for components that needs router functionality\r\n */\r\nexport const routerMixin = {\r\n methods: {\r\n /**\r\n * can Navigate To Module Item By Module Item Id\r\n * @param {String|string} moduleName\r\n * @param {Number|number} id\r\n * @return {boolean} true if navigatable To Module Item By Module Item id\r\n */\r\n canNavigateToModuleItemByModuleItemId(moduleName, id) {\r\n return !(\r\n this.$router.currentRoute.name === moduleName &&\r\n this.$router.currentRoute.params?.id?.toString() ===\r\n (id?.toString() ?? \"\")\r\n );\r\n },\r\n\r\n /**\r\n * can Navigate To Module Child Record By id\r\n * @param {String|string} moduleName\r\n * @param {Number|number} id record id\r\n * @param {Number|number} expandedId record's parent id\r\n * @return {boolean}\r\n */\r\n canNavigateToChildRecordById(moduleName, id, expandedId) {\r\n return !(\r\n this.$router.currentRoute.name === moduleName &&\r\n this.$router.currentRoute.params?.id?.toString() === id.toString() &&\r\n this.$router.currentRoute.params?.expandedId?.toString() ===\r\n expandedId.toString()\r\n );\r\n }\r\n }\r\n};\r\n","// router\r\nimport { createModuleItemContentRouteLocation } from \"@/router/solution/solutionRoutes\";\r\n\r\n// mixins\r\nimport { appMixin } from \"@/mixins/shared/base/app/appMixin\";\r\nimport { routerMixin } from \"@/mixins/shared/router/routerMixin\";\r\n\r\n/**\r\n * Contains options (adhere to the DRY principle) & code re-usability\r\n * for components that needs Application module navigatable behavior\r\n */\r\nexport const moduleItemNavigatable = {\r\n mixins: [appMixin, routerMixin],\r\n methods: {\r\n /**\r\n * Navigate to Application Module Item\r\n * @param {Number|number} id Application Module Item id\r\n */\r\n async navigateToModuleItem(id) {\r\n if (!this.canNavigateToModuleItem(id)) {\r\n console.warn(\r\n `Couldn't navigate to ${this.appModuleName} Item by id:`,\r\n id\r\n );\r\n return;\r\n }\r\n\r\n try {\r\n await this.$router.push(this.createModuleItemContentRoute(id));\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n },\r\n\r\n /**\r\n * create Module Item Target Route\r\n * @param {Number|number} id Module Item id\r\n * @return {{name: (String|string), params: {id:number}}}\r\n */\r\n createModuleItemContentRoute(id) {\r\n return createModuleItemContentRouteLocation(this.appModuleName, id);\r\n },\r\n\r\n /**\r\n * can Navigate To Module Item\r\n * @param {Number|number} id Module Item id\r\n * @return {boolean} true if Navigatable To Module Item\r\n */\r\n canNavigateToModuleItem(id) {\r\n return this.canNavigateToModuleItemByModuleItemId(this.appModuleName, id);\r\n }\r\n }\r\n};\r\n","import { colorTheme } from \"@/design/colors/mdColors\";\r\n\r\n/**\r\n * snackbar-able Mixin\r\n */\r\nexport const snackbarableMixin = {\r\n data() {\r\n return {\r\n snackbarVisible: false,\r\n snackbarColor: \"\",\r\n snackbarText: \"\",\r\n snackbarTimeout: 2000,\r\n snackbarVisibleCloseButton: true,\r\n snackbarTop: false,\r\n snackbarMultiLine: false\r\n };\r\n },\r\n components: {\r\n Snackbar: () => import(\"@/components/shared/base/BaseSnackbar\")\r\n },\r\n methods: {\r\n /**\r\n * show Snackbar Success\r\n * @param {String} text\r\n * @param {Boolean} top\r\n */\r\n showSnackbarSuccess(text, top = false) {\r\n this.showSnackbar(text, colorTheme.success, top);\r\n },\r\n /**\r\n * show Snackbar Info\r\n * @param {String} text\r\n * @param {Boolean} top\r\n */\r\n showSnackbarInfo(text, top = false) {\r\n this.showSnackbar(text, colorTheme.info, top);\r\n },\r\n /**\r\n * show Snackbar Error (timeout: Use -1 to keep open indefinitely)\r\n * @param {String} text\r\n * @param {Boolean} top\r\n * @param {Number|number} timeout\r\n * @param {Boolean} multiLine\r\n */\r\n showSnackbarError(text, top = false, timeout = -1, multiLine = true) {\r\n this.showSnackbar(text, colorTheme.error, top, timeout, multiLine);\r\n },\r\n /**\r\n * show Snackbar Warning\r\n * @param {String} text\r\n * @param {Boolean} top\r\n */\r\n showSnackbarWarning(text, top = false) {\r\n this.showSnackbar(text, colorTheme.warning, top);\r\n },\r\n /**\r\n * show Snackbar\r\n * @param {String} text\r\n * @param {String} color\r\n * @param {Boolean} top\r\n * @param {Number|number} timeout\r\n * @param {Boolean} multiLine\r\n */\r\n showSnackbar(\r\n text,\r\n color = undefined,\r\n top = false,\r\n timeout = 2000,\r\n multiLine = false\r\n ) {\r\n this.snackbarVisible = true;\r\n this.snackbarColor = color;\r\n this.snackbarText = text;\r\n this.snackbarTop = top;\r\n this.snackbarTimeout = timeout;\r\n this.snackbarMultiLine = multiLine;\r\n },\r\n /**\r\n * close Snackbar\r\n */\r\n closeSnackbar() {\r\n this.snackbarVisible = false;\r\n }\r\n }\r\n};\r\n","// model\r\nimport { recordOperation, recordType } from \"@/model/record/recordModel\";\r\n\r\n// services\r\nimport {\r\n fullRecordName,\r\n isAllowedOperation,\r\n canPreview\r\n} from \"@/services/record/recordService\";\r\n\r\nimport { publicAccessMixin } from \"@/mixins/public/publicAccessMixin\";\r\nimport { principalMixin } from \"@/mixins/shared/user/principalMixin\";\r\n\r\n/**\r\n * This mixin serves as a base class for Record *Content*.vue components\r\n */\r\nexport const contentRecordMixin = {\r\n mixins: [publicAccessMixin, principalMixin],\r\n computed: {\r\n /**\r\n * Get current record\r\n * remarks: Abstract computed\r\n * @type {{id:number, name:string, categoryId:number, recordTypeId:number, recordType: string, canUpdate: boolean, canDelete: boolean, cannotUpdateReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, parentId:number, children:number, createdBy:string, creationDate:string, modificationDate:string, extension:string, isComposite:boolean, isLink:boolean, isReadOnly:boolean, isDeleted: boolean, isDraft: boolean, isLink: boolean, isLocked: boolean, stateId:number, state:string, stateDescription: string, owner:string, stateOwnerId:number, pageCount:number, version:number, versionDate:string, versionOwner:string, fileSize:number, comments:string, flags:number, ancestor: {id: number, name: string, categoryId: number, code: number, canUpdate: boolean, canDelete: boolean, cannotUpdateReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, flags: number, isComposite:boolean, isDeleted: boolean, isDraft:boolean, isHidden:boolean, isLocked:boolean, isOnHold: boolean, isReadOnly: boolean, isRetained: boolean, recordType: {id:number, name: string}, createdBy: {id:number, name: string}, updatedBy: {id:number, name: string}}, localFile: {hasFile:boolean, isModified:boolean, pageCount:Number, extension: {type:number, extensions:Array, description:string}}, fieldValues: {id: number, name:string, fieldDataType: number, fieldDataTypeName: string, value: string}[], flyingFields: {id:number, sequence:number}[], operations: {name: string, allowed: boolean, valid: boolean}[], agendaItemOperations: {name: string, allowed: boolean, valid: boolean}[], meetingOperations: {name: string, allowed: boolean, valid: boolean}[]}}\r\n */\r\n record() {\r\n console.warn(`${this.$options.name} Called Abstract computed record()`);\r\n return undefined;\r\n },\r\n\r\n /**\r\n * compute current record's workflow projects\r\n * remarks: Abstract computed\r\n * @return {*[]}\r\n */\r\n projects() {\r\n console.warn(`${this.$options.name} Called Abstract computed projects()`);\r\n return [];\r\n },\r\n\r\n /**\r\n * allowed View File History\r\n * @return {boolean} true if View File History is allowed\r\n */\r\n allowedViewFileHistory() {\r\n if (this.isPublicAccess) {\r\n return false;\r\n }\r\n return this.record\r\n ? isAllowedOperation(this.record, recordOperation.AccessVersion)\r\n : false;\r\n },\r\n\r\n /**\r\n * visible Sub Records component\r\n * @return {boolean} true if visible Sub Records component\r\n */\r\n visibleSubRecords() {\r\n const typeId = this.record?.recordTypeId ?? -1;\r\n return !(typeId === recordType.RECORD || typeId === recordType.FILE);\r\n },\r\n\r\n /**\r\n * Determines File Versions visibility\r\n * @return {boolean} true if File Versions are visible\r\n */\r\n visibleFileVersions() {\r\n return (\r\n (this.record?.recordTypeId ?? recordType.RECORD) === recordType.FILE &&\r\n this.allowedViewFileHistory\r\n );\r\n },\r\n\r\n /**\r\n * Determines Preview Tab visibility\r\n * @return {boolean} true if Record Preview is visible\r\n */\r\n visiblePreviewTab() {\r\n return canPreview(this.record);\r\n },\r\n\r\n /**\r\n * compute Document Preview visibility\r\n * @return {boolean} true when Document Preview is visible\r\n */\r\n visibleDocumentPreview() {\r\n return this.visiblePreviewTab && !this.visibleDocumentViewerPreview;\r\n },\r\n\r\n /**\r\n * computed full Record Name\r\n * @return {string|string}\r\n */\r\n fullRecordName() {\r\n return this.record ? fullRecordName(this.record) : \"\";\r\n }\r\n }\r\n};\r\n","// services\r\nimport {\r\n canPreviewInDocumentViewer,\r\n previewRecordVersion\r\n} from \"@/services/record/recordService\";\r\n\r\n// Mixins\r\nimport { moduleContentMixin } from \"@/mixins/shared/content/moduleContentMixin\";\r\nimport { contentRecordMixin } from \"@/mixins/shared/content/contentRecordMixin\";\r\nimport { principalMixin } from \"@/mixins/shared/user/principalMixin\";\r\n\r\n/**\r\n * This mixin serves as a base class for Record *Content*.vue components\r\n */\r\nexport const moduleContentRecordMixin = {\r\n mixins: [moduleContentMixin, contentRecordMixin, principalMixin],\r\n data() {\r\n return {\r\n expandedPreview: false\r\n };\r\n },\r\n computed: {\r\n /**\r\n * compute current record Id\r\n * @return {number|number}\r\n */\r\n recordId() {\r\n return this.record?.id ?? -1;\r\n },\r\n\r\n /**\r\n * compute current record version\r\n * @return {*|number}\r\n */\r\n recordVersion() {\r\n return this.record?.version ?? -1;\r\n },\r\n\r\n /**\r\n * compute preview Record Version\r\n * @return {number}\r\n */\r\n previewRecordVersion() {\r\n return previewRecordVersion(this.record);\r\n },\r\n\r\n /**\r\n * compute whether the current record-file can be previewed by Questys Web Document Viewer\r\n * @return {boolean|Boolean}\r\n */\r\n visibleDocumentViewerPreview() {\r\n if (!this.visiblePreviewTab) {\r\n return false;\r\n }\r\n return canPreviewInDocumentViewer(this.record, this.principal);\r\n },\r\n\r\n /**\r\n * get current record's workflow project Count\r\n * @return {number}\r\n */\r\n projectCount() {\r\n return this.projects?.length ?? 0;\r\n },\r\n\r\n /**\r\n * compute Record - Projects Tab visibility\r\n * @return {boolean} true if Record - Projects Tab is visible\r\n */\r\n visibleProjectsTab() {\r\n return (\r\n this.isAvailableProjectsModule &&\r\n (this.record?.id ?? -1) > 0 &&\r\n this.projectCount > 0\r\n );\r\n }\r\n },\r\n methods: {\r\n onExpandedPreview(value) {\r\n this.expandedPreview = value;\r\n }\r\n }\r\n};\r\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('base-content-layout',{attrs:{\"visible-data-table-in\":_vm.visibleDataTable,\"error\":_vm.currentError,\"loading\":_vm.isLoading,\"record\":_vm.record},on:{\"alertVisibilityChanged\":_vm.onAlertVisibilityChanged,\"expandedPreview\":_vm.onExpandedPreview},scopedSlots:_vm._u([{key:\"breadcrumbs\",fn:function(){return [_c('breadcrumbs-record',{attrs:{\"breadcrumbs\":_vm.breadcrumbs,\"selected-record\":_vm.record,\"can-navigate\":_vm.canNavigateToModuleItem,\"build-target-route\":_vm.createModuleItemContentRoute}})]},proxy:true},{key:\"record-details\",fn:function(){return [_c('folder-record-details')]},proxy:true},(_vm.visibleProjectsTab)?{key:\"record-projects\",fn:function(){return [_c('folder-projects',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.visibleProjectsTab),expression:\"visibleProjectsTab\"}]})]},proxy:true}:null,(_vm.visibleSubRecords)?{key:\"record-list\",fn:function(){return [_c('folder-documents',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.visibleSubRecords),expression:\"visibleSubRecords\"}]})]},proxy:true}:null,(_vm.visibleFileVersions)?{key:\"record-history\",fn:function(){return [_c('folder-file-versions',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.visibleFileVersions),expression:\"visibleFileVersions\"}]})]},proxy:true}:null,(_vm.visiblePreviewTab)?{key:\"record-preview\",fn:function(){return [(_vm.visibleDocumentViewerPreview)?_c('document-viewer',{attrs:{\"record-id\":_vm.recordId,\"record-version\":_vm.previewRecordVersion,\"preview-only\":true,\"is-open-document\":_vm.expandedPreview}}):_vm._e(),(_vm.visibleDocumentPreview)?_c('document-preview',{attrs:{\"record\":_vm.record,\"open\":_vm.expandedPreview}}):_vm._e()]},proxy:true}:null,{key:\"snackbar\",fn:function(){return [_c('snackbar',{attrs:{\"color\":_vm.snackbarColor},on:{\"close\":_vm.closeSnackbar},model:{value:(_vm.snackbarVisible),callback:function ($$v) {_vm.snackbarVisible=$$v},expression:\"snackbarVisible\"}},[_vm._v(_vm._s(_vm.computedSnackbarText))])]},proxy:true}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","// services\r\nimport {\r\n storeSelectedModuleItemId,\r\n storeSelectedModuleExpandedId\r\n} from \"@/services/folder/folderModuleService\";\r\n\r\n// vuex\r\nimport { createNamespacedHelpers } from \"vuex\";\r\nconst { mapState, mapGetters, mapActions } = createNamespacedHelpers(\"folder\");\r\n\r\n// mixins\r\nimport { moduleContentRecordMixin } from \"@/mixins/shared/content/moduleContentRecordMixin\";\r\nimport { moduleItemNavigatable } from \"@/mixins/shared/navigatable/moduleItemNavigatable\";\r\n\r\nexport const folderContentMixin = {\r\n mixins: [moduleContentRecordMixin, moduleItemNavigatable],\r\n props: {\r\n /**\r\n * Folder expandedId: used as a second dynamic segment in the route path\r\n */\r\n expandedId: {\r\n type: Number,\r\n default: -1\r\n }\r\n },\r\n computed: {\r\n ...mapState({\r\n /**\r\n * Get current Folder Module's selected record\r\n * Overwrite moduleContentRecordMixin.record()\r\n * @return {{id:number, name:string, categoryId:number, recordTypeId:number, recordType: string, parentId:number, children:number, createdBy:string, creationDate:string, extension:string, isComposite:boolean, isLink:boolean, isReadOnly:boolean, isComposite: boolean, isDeleted: boolean, isDraft: boolean, isLink: boolean, isLocked: boolean, stateId:number, state:string, fieldValues: {id: number, name:string, fieldDataType: number, fieldDataTypeName: string, value: string}[], flyingFields: {id:number, sequence:number}[] }}\r\n */\r\n record: \"record\",\r\n\r\n /**\r\n * breadcrumbs\r\n * @return {Array<{id:number, name:string, categoryId:number, recordTypeId:number, recordType: string, parentId:number, children:number, createdBy:string, creationDate:string, modificationDate:string, extension:string, isComposite:boolean, isLink:boolean, isReadOnly:boolean, isDeleted: boolean, isDraft: boolean, isLink: boolean, isLocked: boolean, stateId:number, state:string, owner:string, stateOwnerId:number, pageCount:number, version:number, versionDate:string, versionOwner:string, fileSize:number, comments:string, flags:number, ancestor: {id: number, name: string, categoryId: number, code: number, flags: number, isComposite:boolean, isDeleted: boolean, isDraft:boolean, isHidden:boolean, isLocked:boolean, isOnHold: boolean, isReadOnly: boolean, isRetained: boolean, recordType: {id:number, name: string}, createdBy: {id:number, name: string}, updatedBy: {id:number, name: string}}, localFile: {hasFile:boolean, isModified:boolean, pageCount:Number, extension: {type:number, extensions:Array, description:string}}, operations: {name: string, allowed: boolean, valid: boolean}[], agendaItemOperations: {name: string, allowed: boolean, valid: boolean}[], meetingOperations: {name: string, allowed: boolean, valid: boolean}[]}>}\r\n */\r\n breadcrumbs: \"breadcrumbs\",\r\n\r\n /**\r\n * workflow projects\r\n * @return {{projectId: Number, creationDate: string, definitionId: Number, workflowInstanceId: Number, workflowTypeId: Number, projectName: String, recordId: Number, subject: String, owner: String, projectManagerId: Number, templateId: Number, templateName: String, workflowInstanceId: number, status: number, isOverdue: Boolean, isSuspended: false, canAccess: Boolean, canCancel: Boolean, canChangeOwnership: Boolean, canReassign: Boolean, canSuspend: Boolean}[]}\r\n */\r\n projects: \"projects\"\r\n }),\r\n ...mapGetters({\r\n /**\r\n * Get selected Folder Module's Item id\r\n * Overwrite moduleContentMixin.selectedModuleItemId()\r\n * @return {number}\r\n */\r\n selectedModuleItemId: \"selectedModuleItemId\",\r\n\r\n /**\r\n * Get selected Folder Module's Item name\r\n * Overwrite moduleContentMixin.selectedModuleItemName()\r\n * @return {string}\r\n */\r\n selectedModuleItemName: \"selectedModuleItemName\"\r\n })\r\n },\r\n methods: {\r\n ...mapActions([\r\n \"setRecord\",\r\n \"setBreadcrumbs\",\r\n \"setRecordShortcut\",\r\n \"setProjects\"\r\n ]),\r\n\r\n /**|\r\n * Set current Folder Module's item (record)\r\n * Overwrite moduleContentMixin.setModuleItem()\r\n * @param {Number}id\r\n * @param {Boolean} isShortcut - optional\r\n * @return {Promise}\r\n */\r\n async setModuleItem(id, isShortcut = false) {\r\n console.log(\r\n `${this.$options.name}.setModuleItem() (this.id: ${this.id}, this.expandedId: ${this.expandedId}`\r\n );\r\n console.log(\r\n `${this.$options.name}.setModuleItem() isShortcut : ${isShortcut}`\r\n );\r\n\r\n if (id !== this.id) {\r\n console.warn(\r\n `${this.$options.name}.setModuleItem(${id}) id: ${id} !== this.id: ${this.id}`\r\n );\r\n }\r\n\r\n // Set the current record\r\n if (isShortcut) {\r\n const payload = {\r\n id: id,\r\n parentId: this.expandedId\r\n };\r\n await this.setRecordShortcut(payload);\r\n } else {\r\n await this.setRecord(id);\r\n }\r\n\r\n // Set current record's workflow projects\r\n if (this.isAvailableProjectsModule) {\r\n try {\r\n await this.setProjects(this.record?.id);\r\n } catch (e) {\r\n console.error(e); // provide a UI error notification, e.g. unable to set projects ...\r\n }\r\n }\r\n\r\n // store\r\n if (id === this.record?.id) {\r\n storeSelectedModuleItemId(this.record?.id);\r\n storeSelectedModuleExpandedId(this.expandedId);\r\n }\r\n }\r\n },\r\n async created() {\r\n console.log(\r\n `${this.$options.name}.created() this.expandedId:`,\r\n this.expandedId\r\n );\r\n console.log(`${this.$options.name}.created() this.id:`, this.id);\r\n }\r\n};\r\n","\r\n\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FolderContent.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FolderContent.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./FolderContent.vue?vue&type=template&id=4385cdcc\"\nimport script from \"./FolderContent.vue?vue&type=script&lang=js\"\nexport * from \"./FolderContent.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","// services\r\nimport { notImplementedMethod } from \"@/services/error/errorMessages\";\r\n\r\n// Mixins\r\nimport { appMixin } from \"@/mixins/shared/base/app/appMixin\";\r\nimport { baseComponentMixin } from \"@/mixins/shared/base/component/baseComponentMixin\";\r\nimport { snackbarableMixin } from \"@/mixins/shared/snackbarable/snackbarableMixin\";\r\nimport { createModuleExpandRecordShortcutContentRouteName } from \"@/router/solution/solutionRoutes\";\r\n\r\n/**\r\n * This mixin serves as a base class for *Content*.vue components\r\n */\r\nexport const moduleContentMixin = {\r\n mixins: [appMixin, snackbarableMixin, baseComponentMixin],\r\n components: {\r\n BaseContentLayout: () => import(\"@/views/shared/layout/BaseContentLayout\"),\r\n ExpansionPanelLayout: () =>\r\n import(\"@/components/shared/core/expansionPanel/ExpansionPanelLayout\")\r\n },\r\n data() {\r\n return {\r\n /**\r\n * Visible Data Table\r\n * @type {Boolean}\r\n */\r\n visibleDataTable: true\r\n };\r\n },\r\n props: {\r\n /**\r\n * Module Item id: used as dynamic segment in the route path\r\n */\r\n id: {\r\n type: Number,\r\n default: -1\r\n }\r\n },\r\n computed: {\r\n /**\r\n * Get selected Module ItemId\r\n * Abstract computed getter\r\n * @return {number}\r\n */\r\n selectedModuleItemId() {\r\n return -1;\r\n },\r\n\r\n /**\r\n * Get selected Module Item Name\r\n * Abstract computed getter\r\n * @return {string}\r\n */\r\n selectedModuleItemName() {\r\n return \"\";\r\n },\r\n\r\n /**\r\n * Get Snackbar Text\r\n * @returns {string}\r\n */\r\n computedSnackbarText() {\r\n return `Selected: ${this.selectedModuleItemName || \"\"}`;\r\n }\r\n },\r\n methods: {\r\n /**\r\n * set Module Item\r\n * Abstract method which has to be implemented by caller\r\n * @param {number} id\r\n * @param {Boolean} isShortcut - optional\r\n * @return {Promise}\r\n */\r\n async setModuleItem(id, isShortcut = false) {\r\n console.warn(\r\n notImplementedMethod(\r\n `${this.$options.name}.setModuleItem(${id})`,\r\n isShortcut\r\n )\r\n );\r\n },\r\n\r\n /**\r\n * set Current selected Module Item\r\n * @return {Promise}\r\n */\r\n async setCurrentModuleItem(isShortcut = false) {\r\n try {\r\n this.clearError();\r\n this.isLoading = true;\r\n console.log(\r\n `${this.$options.name}.setCurrentModuleItem() this.id:`,\r\n this.id\r\n );\r\n await this.setModuleItem(this.id, isShortcut);\r\n } catch (e) {\r\n this.handleError(e);\r\n } finally {\r\n this.isLoading = false;\r\n }\r\n }\r\n },\r\n\r\n // /**\r\n // * In-Component Navigation Guards: beforeRouteEnter\r\n // * @param to\r\n // * @param from\r\n // * @param next\r\n // * @return {Promise}\r\n // */\r\n // async beforeRouteEnter(to, from, next) {\r\n // console.log(`beforeRouteEnter to:`, to);\r\n // // console.log(`beforeRouteEnter from:`, from);\r\n //\r\n // // called before the route that renders this component is confirmed.\r\n // // does NOT have access to `this` component instance,\r\n // // because it has not been created yet when this guard is called!\r\n // next(async vm => {\r\n // //\r\n // // access to component instance via `vm`\r\n // //\r\n // // console.log(`beforeRouteEnter()`, `vm.id: ${vm.id}`);\r\n // // console.log(`beforeRouteEnter()`, `to?.params?.id: ${to?.params?.id}`);\r\n // // console.log(\r\n // // `beforeRouteEnter()`,\r\n // // `vm.id === to?.params?.id: ${vm.id === to?.params?.id}`\r\n // // );\r\n // return await vm.setCurrentModuleItem();\r\n // });\r\n // },\r\n\r\n // /**\r\n // * In-Component Navigation Guards: beforeRouteUpdate\r\n // * @param to\r\n // * @param from\r\n // * @param next\r\n // * @return {Promise}\r\n // */\r\n // async beforeRouteUpdate(to, from, next) {\r\n // try {\r\n // // called when the route that renders this component has changed.\r\n // // This component being reused (by using an explicit `key`)\r\n // // in the new route or not doesn't change anything.\r\n //\r\n // // const id = to?.params?.id;\r\n // // console.log(\"beforeRouteUpdate()\", `id: ${id}`);\r\n //\r\n // // e.g. apply Navigation Guard - prevent going to 'to' route\r\n // // if (id === 259704) {\r\n // // // Cancel navigation to route\r\n // // next(false);\r\n // // return;\r\n // // }\r\n //\r\n // console.log(`beforeRouteUpdate to:`, to);\r\n // // console.log(`beforeRouteUpdate from:`, from);\r\n //\r\n // await this.setCurrentModuleItem();\r\n // next();\r\n // } catch (e) {\r\n // console.error(e.toString());\r\n // next();\r\n // }\r\n // }\r\n\r\n async created() {\r\n console.log(`${this.$options.name}.created()`);\r\n const isShortcut =\r\n this.$route.name ===\r\n createModuleExpandRecordShortcutContentRouteName(\"Folder\") ?? false;\r\n await this.setCurrentModuleItem(isShortcut);\r\n },\r\n\r\n watch: {\r\n // when using routes with params, the same component instance will be reused,\r\n // this also means that the lifecycle hooks of the component will not be called,\r\n // To react to params changes in the same component, we can simply watch the $route object:\r\n //\r\n\r\n // eslint-disable-next-line no-unused-vars\r\n async $route(to) {\r\n try {\r\n console.log(`watch ${this.$options.name}.route to:`, to);\r\n\r\n //Compute if path name is Folder Shortcut\r\n const isShortcut =\r\n to.name ===\r\n createModuleExpandRecordShortcutContentRouteName(\"Folder\") ?? false;\r\n\r\n //Pass isShortcut to get Record Shortcut Data from Api if true\r\n await this.setCurrentModuleItem(isShortcut);\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n }\r\n};\r\n","/**\r\n * Get not Implemented Computed formatted optionJump\r\n * @param {String|string} propertyName\r\n * @param {Boolean|boolean} byClient\r\n * @returns {String|string}\r\n */\r\nconst notImplementedComputed = (propertyName, byClient = true) =>\r\n byClient\r\n ? `Return value of Computed property: '${propertyName}' has to be be implemented by client.`\r\n : `Return value of Computed property: '${propertyName}' has to be be implemented.`;\r\n\r\n/**\r\n * Get not Implemented Method formatted optionJump\r\n * @param {String|string} propertyName\r\n * @param {Boolean|boolean} byClient\r\n * @returns {String|string}\r\n */\r\nconst notImplementedMethod = (propertyName, byClient = true) =>\r\n byClient\r\n ? `Method: '${propertyName}' has to be be implemented by client.`\r\n : `Method: '${propertyName}' has to be be implemented.`;\r\n\r\nexport { notImplementedComputed, notImplementedMethod };\r\n"],"sourceRoot":""}