From 1e97ec472c0b25aed1ab2701cb1fa9b03939d807 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matej=20Glasn=C3=A1k?= Date: Tue, 14 Oct 2025 19:34:53 +0200 Subject: [PATCH] refactor(task-modal): fixed calendar position in timeblock modal --- app/dist/js/index.js | 38 +++++++++---------- ...verview_tasks-ongoing_tasks-ongoing_vue.js | 4 +- 2 files changed, 21 insertions(+), 21 deletions(-) diff --git a/app/dist/js/index.js b/app/dist/js/index.js index adbc2d9..4a67778 100644 --- a/app/dist/js/index.js +++ b/app/dist/js/index.js @@ -158,7 +158,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! moment */ \"./node_modules/moment/moment.js\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_0__);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n enrichEmployees(employees) {\n return employees.map(employee => ({\n ...employee,\n _fullName: `${employee.name} ${employee.surname}`,\n _initials: employee.name.charAt(0) + employee.surname.charAt(0)\n }));\n },\n formatDateTime(date) {\n moment__WEBPACK_IMPORTED_MODULE_0___default()(date);\n return moment__WEBPACK_IMPORTED_MODULE_0___default()(date).format('DD.MM.yyyy, HH:mm');\n },\n formatDateTimeForBackend(date) {\n return moment__WEBPACK_IMPORTED_MODULE_0___default()(date).format('YYYY-MM-DD HH:mm:ss');\n },\n formatDate(date) {\n return moment__WEBPACK_IMPORTED_MODULE_0___default()(date).format('DD.MM.yyyy');\n },\n isBefore(date, compareTo = null) {\n return moment__WEBPACK_IMPORTED_MODULE_0___default()(date).isBefore(moment__WEBPACK_IMPORTED_MODULE_0___default()(compareTo));\n },\n isAfter(date, compareTo = moment__WEBPACK_IMPORTED_MODULE_0___default()()) {\n return moment__WEBPACK_IMPORTED_MODULE_0___default()(date).isAfter(moment__WEBPACK_IMPORTED_MODULE_0___default()(compareTo));\n }\n});\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@_utils/tm.utils.ts?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! moment */ \"./node_modules/moment/moment.js\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_0__);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n enrichEmployees(employees) {\n return employees.map(employee => ({\n ...employee,\n _fullName: `${employee.name} ${employee.surname}`,\n _initials: employee.name.charAt(0) + employee.surname.charAt(0)\n }));\n },\n formatDateTime(date) {\n moment__WEBPACK_IMPORTED_MODULE_0___default()(date);\n return moment__WEBPACK_IMPORTED_MODULE_0___default()(date).format('DD.MM.yyyy, HH:mm');\n },\n formatTimeblockDateTime(timeblock) {\n // Handle new format with separate date and time fields\n if (timeblock.date && timeblock.starts_at_time) {\n const dateStr = moment__WEBPACK_IMPORTED_MODULE_0___default()(timeblock.date).format('DD.MM.yyyy');\n return `${dateStr}, ${timeblock.starts_at_time}`;\n }\n // Fallback to old format\n if (timeblock.start) {\n return this.formatDateTime(timeblock.start);\n }\n return '';\n },\n formatDateTimeForBackend(date) {\n return moment__WEBPACK_IMPORTED_MODULE_0___default()(date).format('YYYY-MM-DD HH:mm:ss');\n },\n formatDate(date) {\n return moment__WEBPACK_IMPORTED_MODULE_0___default()(date).format('DD.MM.yyyy');\n },\n isBefore(date, compareTo = null) {\n return moment__WEBPACK_IMPORTED_MODULE_0___default()(date).isBefore(moment__WEBPACK_IMPORTED_MODULE_0___default()(compareTo));\n },\n isAfter(date, compareTo = moment__WEBPACK_IMPORTED_MODULE_0___default()()) {\n return moment__WEBPACK_IMPORTED_MODULE_0___default()(date).isAfter(moment__WEBPACK_IMPORTED_MODULE_0___default()(compareTo));\n }\n});\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@_utils/tm.utils.ts?"); /***/ }), @@ -180,7 +180,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n // Mixin to fix autofocus on v-input in modals where date selects are used\n data() {\n return {\n preventInputFocus: false\n };\n },\n methods: {\n setFocusEvent() {\n document.querySelectorAll('.v-autocomplete input').forEach(input => {\n input.addEventListener('focus', this.onInputFocus);\n });\n },\n onDateFocus($event) {\n if ($event == undefined) {\n this.preventInputFocus = true;\n }\n },\n onDateOpen($event) {\n if ($event == undefined) {\n this.preventInputFocus = true;\n }\n },\n onInputFocus($event) {\n setTimeout(() => {\n if (this.preventInputFocus) {\n $event.target.blur();\n this.preventInputFocus = false;\n }\n }, 100);\n }\n }\n});\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/_mixins/vuetify-fix-focus.ts?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n // Mixin to fix autofocus on v-input in modals where date selects are used\n data() {\n return {\n preventInputFocus: false,\n savedScrollPosition: null\n };\n },\n methods: {\n setFocusEvent() {\n document.querySelectorAll('.v-autocomplete input').forEach(input => {\n input.addEventListener('focus', this.onInputFocus);\n });\n },\n onDateFocus($event) {\n if ($event == undefined) {\n this.preventInputFocus = true;\n }\n },\n onDateOpen($event) {\n // $event should be the element reference (or any truthy value to trigger saving)\n if ($event) {\n // Find the scrollable modal container\n const modalContent = document.querySelector('.v-dialog .modal-content');\n if (modalContent) {\n this.savedScrollPosition = modalContent.scrollTop;\n }\n this.preventInputFocus = true;\n // Reset after datepicker is opened\n setTimeout(() => {\n this.preventInputFocus = false;\n this.savedScrollPosition = null;\n }, 500);\n }\n },\n onInputFocus($event) {\n // If we have a saved scroll position and an unwanted focus happened\n if (this.preventInputFocus && this.savedScrollPosition !== null) {\n const target = $event.target;\n // Only intercept text input focus (autocomplete fields)\n if (target.tagName === 'INPUT' && target.type === 'text') {\n // Blur the focused element\n setTimeout(() => {\n target.blur();\n const modalContent = document.querySelector('.v-dialog .modal-content');\n if (modalContent && this.savedScrollPosition !== null) {\n modalContent.scrollTop = this.savedScrollPosition;\n }\n }, 0);\n }\n }\n }\n }\n});\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/_mixins/vuetify-fix-focus.ts?"); /***/ }), @@ -686,7 +686,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _plu /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.push.js */ \"./node_modules/core-js/modules/es.array.push.js\");\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _vuepic_vue_datepicker__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @vuepic/vue-datepicker */ \"./node_modules/@vuepic/vue-datepicker/dist/vue-datepicker.js\");\n/* harmony import */ var _plugins_tm_components_z_files_upload_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/plugins/tm@_components/z-files-upload.vue */ \"./src/plugins/tm@_components/z-files-upload.vue\");\n/* harmony import */ var _vuelidate_core__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @vuelidate/core */ \"./node_modules/@vuelidate/core/dist/index.esm.js\");\n/* harmony import */ var _vuelidate_validators__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @vuelidate/validators */ \"./node_modules/@vuelidate/validators/dist/index.esm.js\");\n/* harmony import */ var _plugins_lib_auth_utils_error_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/plugins/lib@auth/_utils/error.utils */ \"./src/plugins/lib@auth/_utils/error.utils.ts\");\n/* harmony import */ var _plugins_tm_modal_mixins_vuetify_fix_focus__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/plugins/tm@modal/_mixins/vuetify-fix-focus */ \"./src/plugins/tm@modal/_mixins/vuetify-fix-focus.ts\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! moment */ \"./node_modules/moment/moment.js\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _vueup_vue_quill__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @vueup/vue-quill */ \"./node_modules/@vueup/vue-quill/dist/vue-quill.esm-bundler.js\");\n/* harmony import */ var _plugins_tm_modal_mixins_modal_mixin__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @/plugins/tm@modal/_mixins/modal.mixin */ \"./src/plugins/tm@modal/_mixins/modal.mixin.ts\");\n/* harmony import */ var _vueup_vue_quill_dist_vue_quill_snow_css__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @vueup/vue-quill/dist/vue-quill.snow.css */ \"./node_modules/@vueup/vue-quill/dist/vue-quill.snow.css\");\n/* harmony import */ var _vueup_vue_quill_dist_vue_quill_snow_css__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_vueup_vue_quill_dist_vue_quill_snow_css__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _mixins_selects_mixin__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./_mixins/selects.mixin */ \"./src/plugins/tm@modal/master-task/_mixins/selects.mixin.ts\");\n/* harmony import */ var _components_a_tasks_table_vue__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./_components/a-tasks-table.vue */ \"./src/plugins/tm@modal/master-task/_components/a-tasks-table.vue\");\n/* harmony import */ var _components_a_mastertask_description_vue__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./_components/a-mastertask-description.vue */ \"./src/plugins/tm@modal/master-task/_components/a-mastertask-description.vue\");\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm-bundler.js\");\n/* harmony import */ var _plugins_tm_mixins_autocomplete_mixin__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @/plugins/tm@_mixins/autocomplete.mixin */ \"./src/plugins/tm@_mixins/autocomplete.mixin.ts\");\n/* provided dependency */ var console = __webpack_require__(/*! ./node_modules/console-browserify/index.js */ \"./node_modules/console-browserify/index.js\");\n\n\n\n\n\n\n// import ZAutocomplete from '@/plugins/tm@_components/z-autocomplete.vue'\n\n\n\n// import tmUtils from '@/plugins/tm@_utils/tm.utils'\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n // MIXINS\n // computed: employeesOptions, projectsOptions\n // methods: onProjectSelected, onEmployeeSelected, onEmployeeDurationChanged\n // watch: mastertask.team_id\n\n emits: ['master-task-edited', 'close'],\n mixins: [_plugins_tm_modal_mixins_vuetify_fix_focus__WEBPACK_IMPORTED_MODULE_5__[\"default\"], _mixins_selects_mixin__WEBPACK_IMPORTED_MODULE_10__[\"default\"], _plugins_tm_mixins_autocomplete_mixin__WEBPACK_IMPORTED_MODULE_13__[\"default\"], _plugins_tm_modal_mixins_modal_mixin__WEBPACK_IMPORTED_MODULE_8__[\"default\"]],\n components: {\n AMastertaskDescription: _components_a_mastertask_description_vue__WEBPACK_IMPORTED_MODULE_12__[\"default\"],\n ATasksTable: _components_a_tasks_table_vue__WEBPACK_IMPORTED_MODULE_11__[\"default\"],\n Datepicker: _vuepic_vue_datepicker__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n ZFilesUpload: _plugins_tm_components_z_files_upload_vue__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n // ZAutocomplete,\n QuillEditor: _vueup_vue_quill__WEBPACK_IMPORTED_MODULE_7__.QuillEditor\n },\n data() {\n return {\n deadline: null,\n editMode: false,\n visible: false,\n errorUtils: _plugins_lib_auth_utils_error_utils__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n v$: (0,_vuelidate_core__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(),\n mastertask: null,\n isSaving: false,\n showAddEmployeeInput: false,\n date: null,\n projectCodeSearch: null\n };\n },\n computed: {\n ...(0,vuex__WEBPACK_IMPORTED_MODULE_14__.mapGetters)('tm', ['teams', 'projects', 'enrichedEmployees']),\n enrichedSubtasks() {\n if (!this.mastertask?.subtasks) return null;\n return this.mastertask.subtasks.map(subtask => {\n const employee = this.enrichedEmployees.find(employee => employee.id == subtask.employee_id);\n return {\n ...subtask,\n _initials: employee ? employee.name.charAt(0) + employee.surname.charAt(0) : '?',\n _fullName: employee ? `${employee.name} ${employee.surname}` : ''\n };\n }).filter(subtask => subtask !== null);\n }\n },\n validations() {\n const quillEditorRequired = value => {\n if (!value || !value.length || !value.replace(/<[^>]*>/g, '').length) return false;\n return true;\n };\n return {\n mastertask: {\n employees: {\n required: _vuelidate_validators__WEBPACK_IMPORTED_MODULE_15__.required,\n minLength: (0,_vuelidate_validators__WEBPACK_IMPORTED_MODULE_15__.minLength)(1),\n $each: {\n duration: {\n required: _vuelidate_validators__WEBPACK_IMPORTED_MODULE_15__.required\n }\n }\n },\n project_id: {\n required: _vuelidate_validators__WEBPACK_IMPORTED_MODULE_15__.required\n },\n name: {\n required: _vuelidate_validators__WEBPACK_IMPORTED_MODULE_15__.required\n },\n description: {\n quillEditorRequired\n },\n deadline: {\n required: _vuelidate_validators__WEBPACK_IMPORTED_MODULE_15__.required\n },\n estimated_duration: {\n required: _vuelidate_validators__WEBPACK_IMPORTED_MODULE_15__.required\n },\n _deadline_time: {\n required: _vuelidate_validators__WEBPACK_IMPORTED_MODULE_15__.required\n }\n }\n };\n },\n mounted() {\n this.$events.on('close-both-modals', this.closeBothModals);\n this.$events.on('master-task:team-member-deleted', ({\n teamId,\n memberId\n }) => {\n if (this.mastertask.team_id != teamId) return;\n this.mastertask.employees = this.mastertask.employees.filter(employee => employee.id != memberId);\n }), this.$events.on('on-mastertask-deleted', mastertask => {\n if (mastertask?.id == this.mastertask?.id) this.closeModal();\n });\n this.$events.on('on-subtask-deleted', task => {\n if (!this.mastertask) return;\n this.mastertask.subtasks = this.mastertask.subtasks.filter(subtask => subtask.id != task.id);\n });\n this.$events.on('on-subtask-edited', task => {\n if (!this.mastertask?.subtasks) return;\n if (this.mastertask.subtasks.find(subtask => subtask.id == task.id)) {\n this.mastertask.subtasks = this.mastertask.subtasks.map(t => t.id == task.id ? task : t);\n } else {\n this.mastertask.subtasks.push(task);\n }\n });\n },\n beforeUnmount() {\n this.$events.off('on-mastertask-deleted');\n this.$events.off('on-subtask-deleted');\n this.$events.off('on-subtask-edited');\n this.$events.off('master-task:team-member-deleted');\n this.$events.off('close-both-modals', this.closeBothModals);\n },\n methods: {\n closeBothModals() {\n this.$emit('close');\n this.visible = false;\n },\n removeEmployee({\n id\n }) {\n // const isEmployeeInTeam = this.mastertask.team?.employees.find(employee => employee.id == id)\n\n // if (isEmployeeInTeam) {\n // \tthis.mastertask.team_id = null\n // \tthis.mastertask.team = null\n // }\n\n this.mastertask.employees = this.mastertask.employees.filter(employee => employee.id != id);\n },\n removeMemberAlert(member) {\n const team = this.mastertask.team;\n this.$events.emit('show-delete-team-member-modal', {\n member,\n team\n });\n },\n async loadMastertask(id) {\n try {\n this.mastertask = await this.$axios.get_auth_data(`v1/mastertasks/${id}`);\n\n // TODO zmazat ked zacne prichadzat project_id a team_id\n const project = this.projects.find(project => project.code == this.mastertask.project_code);\n this.mastertask.project_id = project?.id || null;\n this.mastertask.team_id = this.mastertask.team?.id || null;\n this.mastertask._allEmployees = this.mastertask.subtasks.map(({\n employee_id,\n duration\n }) => {\n const employee = this.enrichedEmployees.find(({\n id\n }) => id == employee_id);\n if (!employee) {\n return null;\n }\n employee.duration = duration;\n return employee;\n }).filter(employee => employee !== null);\n } catch (error) {\n this.$toast.error(error.message || error);\n }\n },\n async showModal({\n mastertask,\n editMode = false\n }) {\n this.isSaving = false;\n this.editMode = null;\n this.visible = true;\n this.mastertask = null;\n this.$nextTick(() => {\n this.setFocusEvent();\n this.v$.$reset();\n });\n try {\n if (mastertask?.id) {\n await this.loadMastertask(mastertask.id);\n\n // this.mastertask.project_code \t= project.code\n } else {\n const savedMastertask = localStorage.getItem('mastertaskData');\n try {\n if (savedMastertask) {\n const parsedMastertask = JSON.parse(savedMastertask);\n this.mastertask = parsedMastertask;\n // If the parsed result is not an object, reset to default\n if (typeof this.mastertask !== 'object' || this.mastertask === null) {\n throw new Error('Parsed mastertask is not an object');\n }\n this.$nextTick(() => {\n this.$refs['description']?.setHTML(this.mastertask.description || '');\n });\n } else {\n throw new Error('mastertaskData is null or undefined');\n }\n } catch (error) {\n console.error('Error parsing mastertaskData:', error);\n this.mastertask = {\n employees: [],\n duration: 0,\n _deadline_time: '17:00'\n };\n }\n }\n this.editMode = editMode || !this.mastertask.id;\n } catch (error) {\n this.$toast.error(error.message || error);\n if (true) console.log('[z-master-task-modal.vue] Error: ', error);\n }\n },\n toggleIsFinished() {\n this.$events.emit('show-complete-master-task-modal', {\n mastertask: this.mastertask\n });\n },\n async save() {\n if (this.mastertask.id) {\n this.mastertask.employees = this.mastertask.employees.map(employee => {\n const {\n duration\n } = this.mastertask.subtasks.find(({\n employee_id\n }) => employee_id == employee.id) || {};\n employee.duration = duration;\n return employee;\n });\n }\n const vuelidateValid = await this.v$.$validate();\n const employeesValid = await this._validateEmployees();\n if (!vuelidateValid || !employeesValid) return;\n if (this.$refs['description']) this.mastertask.description = this.$refs['description'].getHTML();\n this._mergeDeadlineTimeDate();\n try {\n this.isSaving = true;\n this.mastertask.deadline = moment__WEBPACK_IMPORTED_MODULE_6___default()(this.mastertask.deadline).format('YYYY-MM-DD HH:MM:SS');\n if (this.mastertask.id) await this.$axios.patch_auth_form(`v1/mastertasks/${this.mastertask.id}`, this.mastertask);else await this.$axios.post_auth_data('v1/mastertasks', this.mastertask);\n localStorage.removeItem('mastertaskData');\n this.$emit('master-task-edited', this.mastertask);\n this.closeModal();\n } catch (error) {\n this.$toast.error(this.$parseError(error));\n if (true) console.log('[z-master-task-modal.vue] Error: ', error);\n } finally {\n this.isSaving = false;\n }\n },\n filesUploaded(files) {\n this.mastertask.files = files;\n },\n closeModal() {\n this.visible = false;\n },\n openDeleteMasterTaskModal(mastertask) {\n this.$events.emit('show-delete-master-task-modal', {\n mastertask\n });\n },\n addTask() {\n this.$events.emit('show-subtask-modal', {\n subtask: {\n master_task_id: this.mastertask.id,\n project_code: this.mastertask.project_code\n }\n });\n },\n onQuillEditorInput() {\n this.mastertask.description = this.$refs['description'].getHTML();\n },\n _mergeDeadlineTimeDate() {\n const date = new Date(this.mastertask.deadline);\n console.log('z-master-task-modal', this.subtask);\n const timeParts = this.mastertask._deadline_time.split(':');\n date.setHours(parseInt(timeParts[0]));\n date.setMinutes(parseInt(timeParts[1]));\n this.mastertask.deadline = date;\n },\n _validateEmployees() {\n let isValid = true;\n this.mastertask.employees = this.mastertask.employees.map(employee => {\n if (!employee.duration) {\n employee.invalid = true;\n isValid = false;\n }\n return employee;\n });\n return isValid;\n }\n },\n watch: {\n editMode() {\n this.$nextTick(() => {\n this.$refs['description']?.setHTML(this.mastertask.description || '');\n if (!this.mastertask?.id) return;\n const date = new Date(this.mastertask.deadline);\n const hours = date.getHours();\n const minutes = date.getMinutes();\n this.mastertask._deadline_time = `${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}`;\n });\n },\n mastertask: {\n handler(val) {\n if (this.editMode && !this.mastertask?.id) {\n localStorage.setItem('mastertaskData', JSON.stringify(val));\n }\n },\n deep: true\n },\n 'mastertask.team_id': {\n handler(value, oldValue) {\n if (this.editMode && !value && oldValue) {\n // Removes only employees from the old team when team_id is removed\n const oldTeamEmployeesIds = this.teams.find(team => team.id == oldValue)?.employees.map(employee => employee?.id) || [];\n const employeesNotInOldTeam = this.mastertask.employees.filter(employee => !oldTeamEmployeesIds.includes(employee?.id));\n this.mastertask.employees = employeesNotInOldTeam;\n }\n },\n deep: true\n },\n '$route.query': {\n handler(_, oldValue) {\n if (oldValue?.subtask?.length && this.mastertask?.id) {\n this.loadMastertask(this.mastertask.id);\n }\n },\n deep: true\n }\n }\n});\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/master-task/z-master-task-modal.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.push.js */ \"./node_modules/core-js/modules/es.array.push.js\");\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _vuepic_vue_datepicker__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @vuepic/vue-datepicker */ \"./node_modules/@vuepic/vue-datepicker/dist/vue-datepicker.js\");\n/* harmony import */ var _plugins_tm_components_z_files_upload_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/plugins/tm@_components/z-files-upload.vue */ \"./src/plugins/tm@_components/z-files-upload.vue\");\n/* harmony import */ var _vuelidate_core__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @vuelidate/core */ \"./node_modules/@vuelidate/core/dist/index.esm.js\");\n/* harmony import */ var _vuelidate_validators__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @vuelidate/validators */ \"./node_modules/@vuelidate/validators/dist/index.esm.js\");\n/* harmony import */ var _plugins_lib_auth_utils_error_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/plugins/lib@auth/_utils/error.utils */ \"./src/plugins/lib@auth/_utils/error.utils.ts\");\n/* harmony import */ var _plugins_tm_modal_mixins_vuetify_fix_focus__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/plugins/tm@modal/_mixins/vuetify-fix-focus */ \"./src/plugins/tm@modal/_mixins/vuetify-fix-focus.ts\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! moment */ \"./node_modules/moment/moment.js\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _vueup_vue_quill__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @vueup/vue-quill */ \"./node_modules/@vueup/vue-quill/dist/vue-quill.esm-bundler.js\");\n/* harmony import */ var _plugins_tm_modal_mixins_modal_mixin__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @/plugins/tm@modal/_mixins/modal.mixin */ \"./src/plugins/tm@modal/_mixins/modal.mixin.ts\");\n/* harmony import */ var _vueup_vue_quill_dist_vue_quill_snow_css__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @vueup/vue-quill/dist/vue-quill.snow.css */ \"./node_modules/@vueup/vue-quill/dist/vue-quill.snow.css\");\n/* harmony import */ var _vueup_vue_quill_dist_vue_quill_snow_css__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_vueup_vue_quill_dist_vue_quill_snow_css__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _mixins_selects_mixin__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./_mixins/selects.mixin */ \"./src/plugins/tm@modal/master-task/_mixins/selects.mixin.ts\");\n/* harmony import */ var _components_a_tasks_table_vue__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./_components/a-tasks-table.vue */ \"./src/plugins/tm@modal/master-task/_components/a-tasks-table.vue\");\n/* harmony import */ var _components_a_mastertask_description_vue__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./_components/a-mastertask-description.vue */ \"./src/plugins/tm@modal/master-task/_components/a-mastertask-description.vue\");\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm-bundler.js\");\n/* harmony import */ var _plugins_tm_mixins_autocomplete_mixin__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @/plugins/tm@_mixins/autocomplete.mixin */ \"./src/plugins/tm@_mixins/autocomplete.mixin.ts\");\n/* provided dependency */ var console = __webpack_require__(/*! ./node_modules/console-browserify/index.js */ \"./node_modules/console-browserify/index.js\");\n\n\n\n\n\n\n// import ZAutocomplete from '@/plugins/tm@_components/z-autocomplete.vue'\n\n\n\n// import tmUtils from '@/plugins/tm@_utils/tm.utils'\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n // MIXINS\n // computed: employeesOptions, projectsOptions\n // methods: onProjectSelected, onEmployeeSelected, onEmployeeDurationChanged\n // watch: mastertask.team_id\n\n emits: ['master-task-edited', 'close'],\n mixins: [_plugins_tm_modal_mixins_vuetify_fix_focus__WEBPACK_IMPORTED_MODULE_5__[\"default\"], _mixins_selects_mixin__WEBPACK_IMPORTED_MODULE_10__[\"default\"], _plugins_tm_mixins_autocomplete_mixin__WEBPACK_IMPORTED_MODULE_13__[\"default\"], _plugins_tm_modal_mixins_modal_mixin__WEBPACK_IMPORTED_MODULE_8__[\"default\"]],\n components: {\n AMastertaskDescription: _components_a_mastertask_description_vue__WEBPACK_IMPORTED_MODULE_12__[\"default\"],\n ATasksTable: _components_a_tasks_table_vue__WEBPACK_IMPORTED_MODULE_11__[\"default\"],\n Datepicker: _vuepic_vue_datepicker__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n ZFilesUpload: _plugins_tm_components_z_files_upload_vue__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n // ZAutocomplete,\n QuillEditor: _vueup_vue_quill__WEBPACK_IMPORTED_MODULE_7__.QuillEditor\n },\n data() {\n return {\n deadline: null,\n editMode: false,\n visible: false,\n errorUtils: _plugins_lib_auth_utils_error_utils__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n v$: (0,_vuelidate_core__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(),\n mastertask: null,\n isSaving: false,\n showAddEmployeeInput: false,\n date: null,\n projectCodeSearch: null\n };\n },\n computed: {\n ...(0,vuex__WEBPACK_IMPORTED_MODULE_14__.mapGetters)('tm', ['teams', 'projects', 'enrichedEmployees']),\n enrichedSubtasks() {\n if (!this.mastertask?.subtasks) return null;\n return this.mastertask.subtasks.map(subtask => {\n const employee = this.enrichedEmployees.find(employee => employee.id == subtask.employee_id);\n return {\n ...subtask,\n _initials: employee ? employee.name.charAt(0) + employee.surname.charAt(0) : '?',\n _fullName: employee ? `${employee.name} ${employee.surname}` : ''\n };\n }).filter(subtask => subtask !== null);\n }\n },\n validations() {\n const quillEditorRequired = value => {\n if (!value || !value.length || !value.replace(/<[^>]*>/g, '').length) return false;\n return true;\n };\n return {\n mastertask: {\n employees: {\n required: _vuelidate_validators__WEBPACK_IMPORTED_MODULE_15__.required,\n minLength: (0,_vuelidate_validators__WEBPACK_IMPORTED_MODULE_15__.minLength)(1),\n $each: {\n duration: {\n required: _vuelidate_validators__WEBPACK_IMPORTED_MODULE_15__.required\n }\n }\n },\n project_id: {\n required: _vuelidate_validators__WEBPACK_IMPORTED_MODULE_15__.required\n },\n name: {\n required: _vuelidate_validators__WEBPACK_IMPORTED_MODULE_15__.required\n },\n description: {\n quillEditorRequired\n },\n deadline: {\n required: _vuelidate_validators__WEBPACK_IMPORTED_MODULE_15__.required\n },\n estimated_duration: {\n required: _vuelidate_validators__WEBPACK_IMPORTED_MODULE_15__.required\n },\n _deadline_time: {\n required: _vuelidate_validators__WEBPACK_IMPORTED_MODULE_15__.required\n }\n }\n };\n },\n mounted() {\n this.$events.on('close-both-modals', this.closeBothModals);\n this.$events.on('master-task:team-member-deleted', ({\n teamId,\n memberId\n }) => {\n if (this.mastertask.team_id != teamId) return;\n this.mastertask.employees = this.mastertask.employees.filter(employee => employee.id != memberId);\n }), this.$events.on('on-mastertask-deleted', mastertask => {\n if (mastertask?.id == this.mastertask?.id) this.closeModal();\n });\n this.$events.on('on-subtask-deleted', task => {\n if (!this.mastertask) return;\n this.mastertask.subtasks = this.mastertask.subtasks.filter(subtask => subtask.id != task.id);\n });\n this.$events.on('on-subtask-edited', task => {\n if (!this.mastertask?.subtasks) return;\n if (this.mastertask.subtasks.find(subtask => subtask.id == task.id)) {\n this.mastertask.subtasks = this.mastertask.subtasks.map(t => t.id == task.id ? task : t);\n } else {\n this.mastertask.subtasks.push(task);\n }\n });\n },\n beforeUnmount() {\n this.$events.off('on-mastertask-deleted');\n this.$events.off('on-subtask-deleted');\n this.$events.off('on-subtask-edited');\n this.$events.off('master-task:team-member-deleted');\n this.$events.off('close-both-modals', this.closeBothModals);\n },\n methods: {\n handleDatepickerClick() {\n // Pass the datepicker wrapper element reference to the mixin\n const scrollTarget = this.$refs['datepicker-wrapper'];\n this.onDateOpen(scrollTarget);\n // Open the datepicker\n this.$refs['datepicker'].openMenu();\n },\n closeBothModals() {\n this.$emit('close');\n this.visible = false;\n },\n removeEmployee({\n id\n }) {\n // const isEmployeeInTeam = this.mastertask.team?.employees.find(employee => employee.id == id)\n\n // if (isEmployeeInTeam) {\n // \tthis.mastertask.team_id = null\n // \tthis.mastertask.team = null\n // }\n\n this.mastertask.employees = this.mastertask.employees.filter(employee => employee.id != id);\n },\n removeMemberAlert(member) {\n const team = this.mastertask.team;\n this.$events.emit('show-delete-team-member-modal', {\n member,\n team\n });\n },\n async loadMastertask(id) {\n try {\n this.mastertask = await this.$axios.get_auth_data(`v1/mastertasks/${id}`);\n\n // TODO zmazat ked zacne prichadzat project_id a team_id\n const project = this.projects.find(project => project.code == this.mastertask.project_code);\n this.mastertask.project_id = project?.id || null;\n this.mastertask.team_id = this.mastertask.team?.id || null;\n this.mastertask._allEmployees = this.mastertask.subtasks.map(({\n employee_id,\n duration\n }) => {\n const employee = this.enrichedEmployees.find(({\n id\n }) => id == employee_id);\n if (!employee) {\n return null;\n }\n employee.duration = duration;\n return employee;\n }).filter(employee => employee !== null);\n } catch (error) {\n this.$toast.error(error.message || error);\n }\n },\n async showModal({\n mastertask,\n editMode = false\n }) {\n this.isSaving = false;\n this.editMode = null;\n this.visible = true;\n this.mastertask = null;\n this.$nextTick(() => {\n this.setFocusEvent();\n this.v$.$reset();\n });\n try {\n if (mastertask?.id) {\n await this.loadMastertask(mastertask.id);\n\n // this.mastertask.project_code \t= project.code\n } else {\n const savedMastertask = localStorage.getItem('mastertaskData');\n try {\n if (savedMastertask) {\n const parsedMastertask = JSON.parse(savedMastertask);\n this.mastertask = parsedMastertask;\n // If the parsed result is not an object, reset to default\n if (typeof this.mastertask !== 'object' || this.mastertask === null) {\n throw new Error('Parsed mastertask is not an object');\n }\n this.$nextTick(() => {\n this.$refs['description']?.setHTML(this.mastertask.description || '');\n });\n } else {\n throw new Error('mastertaskData is null or undefined');\n }\n } catch (error) {\n console.error('Error parsing mastertaskData:', error);\n this.mastertask = {\n employees: [],\n duration: 0,\n _deadline_time: '17:00'\n };\n }\n }\n this.editMode = editMode || !this.mastertask.id;\n } catch (error) {\n this.$toast.error(error.message || error);\n if (true) console.log('[z-master-task-modal.vue] Error: ', error);\n }\n },\n toggleIsFinished() {\n this.$events.emit('show-complete-master-task-modal', {\n mastertask: this.mastertask\n });\n },\n async save() {\n if (this.mastertask.id) {\n this.mastertask.employees = this.mastertask.employees.map(employee => {\n const {\n duration\n } = this.mastertask.subtasks.find(({\n employee_id\n }) => employee_id == employee.id) || {};\n employee.duration = duration || 0;\n return employee;\n });\n }\n const vuelidateValid = await this.v$.$validate();\n const employeesValid = await this._validateEmployees();\n if (!vuelidateValid || !employeesValid) return;\n if (this.$refs['description']) this.mastertask.description = this.$refs['description'].getHTML();\n this._mergeDeadlineTimeDate();\n try {\n this.isSaving = true;\n this.mastertask.deadline = moment__WEBPACK_IMPORTED_MODULE_6___default()(this.mastertask.deadline).format('YYYY-MM-DD HH:MM:SS');\n if (this.mastertask.id) await this.$axios.patch_auth_form(`v1/mastertasks/${this.mastertask.id}`, this.mastertask);else await this.$axios.post_auth_data('v1/mastertasks', this.mastertask);\n localStorage.removeItem('mastertaskData');\n this.$emit('master-task-edited', this.mastertask);\n this.closeModal();\n } catch (error) {\n this.$toast.error(this.$parseError(error));\n if (true) console.log('[z-master-task-modal.vue] Error: ', error);\n } finally {\n this.isSaving = false;\n }\n },\n filesUploaded(files) {\n this.mastertask.files = files;\n },\n closeModal() {\n this.visible = false;\n },\n openDeleteMasterTaskModal(mastertask) {\n this.$events.emit('show-delete-master-task-modal', {\n mastertask\n });\n },\n addTask() {\n this.$events.emit('show-subtask-modal', {\n subtask: {\n master_task_id: this.mastertask.id,\n project_code: this.mastertask.project_code\n }\n });\n },\n onQuillEditorInput() {\n this.mastertask.description = this.$refs['description'].getHTML();\n },\n _mergeDeadlineTimeDate() {\n const date = new Date(this.mastertask.deadline);\n console.log('z-master-task-modal', this.subtask);\n const timeParts = this.mastertask._deadline_time.split(':');\n date.setHours(parseInt(timeParts[0]));\n date.setMinutes(parseInt(timeParts[1]));\n this.mastertask.deadline = date;\n },\n _validateEmployees() {\n let isValid = true;\n this.mastertask.employees = this.mastertask.employees.map(employee => {\n if (employee.duration === null || employee.duration === undefined) {\n employee.invalid = true;\n isValid = false;\n }\n return employee;\n });\n return isValid;\n }\n },\n watch: {\n editMode() {\n this.$nextTick(() => {\n this.$refs['description']?.setHTML(this.mastertask.description || '');\n if (!this.mastertask?.id) return;\n const date = new Date(this.mastertask.deadline);\n const hours = date.getHours();\n const minutes = date.getMinutes();\n this.mastertask._deadline_time = `${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}`;\n });\n },\n mastertask: {\n handler(val) {\n if (this.editMode && !this.mastertask?.id) {\n localStorage.setItem('mastertaskData', JSON.stringify(val));\n }\n },\n deep: true\n },\n 'mastertask.team_id': {\n handler(value, oldValue) {\n if (this.editMode && !value && oldValue) {\n // Removes only employees from the old team when team_id is removed\n const oldTeamEmployeesIds = this.teams.find(team => team.id == oldValue)?.employees.map(employee => employee?.id) || [];\n const employeesNotInOldTeam = this.mastertask.employees.filter(employee => !oldTeamEmployeesIds.includes(employee?.id));\n this.mastertask.employees = employeesNotInOldTeam;\n }\n },\n deep: true\n },\n '$route.query': {\n handler(_, oldValue) {\n if (oldValue?.subtask?.length && this.mastertask?.id) {\n this.loadMastertask(this.mastertask.id);\n }\n },\n deep: true\n }\n }\n});\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/master-task/z-master-task-modal.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D"); /***/ }), @@ -785,7 +785,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.push.js */ \"./node_modules/core-js/modules/es.array.push.js\");\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! moment */ \"./node_modules/moment/moment.js\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _plugins_lib_auth_utils_error_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/plugins/lib@auth/_utils/error.utils */ \"./src/plugins/lib@auth/_utils/error.utils.ts\");\n/* harmony import */ var _vuelidate_core__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @vuelidate/core */ \"./node_modules/@vuelidate/core/dist/index.esm.js\");\n/* harmony import */ var _vuelidate_validators__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @vuelidate/validators */ \"./node_modules/@vuelidate/validators/dist/index.esm.js\");\n/* harmony import */ var _plugins_tm_utils_tm_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/plugins/tm@_utils/tm.utils */ \"./src/plugins/tm@_utils/tm.utils.ts\");\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm-bundler.js\");\n/* harmony import */ var _plugins_tm_modal_mixins_modal_mixin__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/plugins/tm@modal/_mixins/modal.mixin */ \"./src/plugins/tm@modal/_mixins/modal.mixin.ts\");\n/* provided dependency */ var console = __webpack_require__(/*! ./node_modules/console-browserify/index.js */ \"./node_modules/console-browserify/index.js\");\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n mixins: [_plugins_tm_modal_mixins_modal_mixin__WEBPACK_IMPORTED_MODULE_5__[\"default\"]],\n props: {\n hours: {\n type: Number,\n required: true\n },\n subtask: {\n type: Object,\n required: true\n }\n },\n data() {\n return {\n moment: (moment__WEBPACK_IMPORTED_MODULE_1___default()),\n v$: (0,_vuelidate_core__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(),\n errorUtils: _plugins_lib_auth_utils_error_utils__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n showModal: false,\n form: {\n hours: null\n }\n };\n },\n validations() {\n return {\n form: {\n hours: {\n required: _vuelidate_validators__WEBPACK_IMPORTED_MODULE_6__.required,\n numeric: _vuelidate_validators__WEBPACK_IMPORTED_MODULE_6__.numeric,\n minValue: (0,_vuelidate_validators__WEBPACK_IMPORTED_MODULE_6__.minValue)(0.1)\n }\n }\n };\n },\n computed: {\n ...(0,vuex__WEBPACK_IMPORTED_MODULE_7__.mapGetters)('auth', ['user'])\n },\n methods: {\n async submit() {\n if (!(await this.v$.$validate())) return;\n const subtask = JSON.parse(JSON.stringify(this.subtask));\n subtask.timesheets.push({\n id: null,\n employee_id: this.user.id,\n time: typeof this.form.hours == 'string' ? parseFloat(this.form.hours) : this.form.hours\n });\n if (subtask.deadline) subtask.deadline = _plugins_tm_utils_tm_utils__WEBPACK_IMPORTED_MODULE_4__[\"default\"].formatDateTimeForBackend(this._mergeDeadlineTimeDate());\n this._update(subtask);\n },\n async deleteTimesheet({\n id\n }) {\n const subtask = JSON.parse(JSON.stringify(this.subtask));\n subtask.timesheets = subtask.timesheets.filter(timesheet => timesheet.id != id);\n if (subtask.deadline) subtask.deadline = _plugins_tm_utils_tm_utils__WEBPACK_IMPORTED_MODULE_4__[\"default\"].formatDateTimeForBackend(this._mergeDeadlineTimeDate());\n this._update(subtask);\n },\n closeModal() {\n this.form = {\n hours: null\n };\n this.showModal = false;\n this.$nextTick(() => this.v$.$reset());\n },\n async _update(data) {\n try {\n data.timesheets = data.timesheets.map(timesheet => {\n delete timesheet.employee_name;\n return timesheet;\n });\n const {\n subtask\n } = await this.$axios.put_auth(`v1/subtasks/${data.id}`, data);\n this.closeModal();\n this.$events.emit('on-subtask-edited', subtask);\n } catch (error) {\n this.$toast.error(error.message || error);\n if (true) console.log('[a-task-spent-time.vue] Error: ', error);\n }\n },\n _mergeDeadlineTimeDate() {\n const date = new Date(this.subtask.deadline);\n console.log('a-task-spent-time', this.subtask);\n const timeParts = this.subtask._deadline_time.split(':');\n date.setHours(parseInt(timeParts[0]));\n date.setMinutes(parseInt(timeParts[1]));\n return date;\n }\n }\n});\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/task/_components/_components/a-task-spent-time.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.push.js */ \"./node_modules/core-js/modules/es.array.push.js\");\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! moment */ \"./node_modules/moment/moment.js\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _plugins_lib_auth_utils_error_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/plugins/lib@auth/_utils/error.utils */ \"./src/plugins/lib@auth/_utils/error.utils.ts\");\n/* harmony import */ var _vuelidate_core__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @vuelidate/core */ \"./node_modules/@vuelidate/core/dist/index.esm.js\");\n/* harmony import */ var _vuelidate_validators__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @vuelidate/validators */ \"./node_modules/@vuelidate/validators/dist/index.esm.js\");\n/* harmony import */ var _plugins_tm_utils_tm_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/plugins/tm@_utils/tm.utils */ \"./src/plugins/tm@_utils/tm.utils.ts\");\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm-bundler.js\");\n/* harmony import */ var _plugins_tm_modal_mixins_modal_mixin__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/plugins/tm@modal/_mixins/modal.mixin */ \"./src/plugins/tm@modal/_mixins/modal.mixin.ts\");\n/* provided dependency */ var console = __webpack_require__(/*! ./node_modules/console-browserify/index.js */ \"./node_modules/console-browserify/index.js\");\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n mixins: [_plugins_tm_modal_mixins_modal_mixin__WEBPACK_IMPORTED_MODULE_5__[\"default\"]],\n props: {\n hours: {\n type: Number,\n required: true\n },\n subtask: {\n type: Object,\n required: true\n }\n },\n data() {\n return {\n moment: (moment__WEBPACK_IMPORTED_MODULE_1___default()),\n v$: (0,_vuelidate_core__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(),\n errorUtils: _plugins_lib_auth_utils_error_utils__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n showModal: false,\n form: {\n hours: null\n }\n };\n },\n validations() {\n return {\n form: {\n hours: {\n required: _vuelidate_validators__WEBPACK_IMPORTED_MODULE_6__.required,\n numeric: _vuelidate_validators__WEBPACK_IMPORTED_MODULE_6__.numeric,\n minValue: (0,_vuelidate_validators__WEBPACK_IMPORTED_MODULE_6__.minValue)(0.1)\n }\n }\n };\n },\n computed: {\n ...(0,vuex__WEBPACK_IMPORTED_MODULE_7__.mapGetters)('auth', ['user'])\n },\n methods: {\n async submit() {\n if (!(await this.v$.$validate())) return;\n const subtask = JSON.parse(JSON.stringify(this.subtask));\n subtask.timesheets.push({\n id: null,\n employee_id: this.user.id,\n time: typeof this.form.hours == 'string' ? parseFloat(this.form.hours) : this.form.hours\n });\n if (subtask.deadline) subtask.deadline = _plugins_tm_utils_tm_utils__WEBPACK_IMPORTED_MODULE_4__[\"default\"].formatDateTimeForBackend(this._mergeDeadlineTimeDate());\n this._update(subtask);\n },\n async deleteTimesheet({\n id\n }) {\n const subtask = JSON.parse(JSON.stringify(this.subtask));\n subtask.timesheets = subtask.timesheets.filter(timesheet => timesheet.id != id);\n if (subtask.deadline) subtask.deadline = _plugins_tm_utils_tm_utils__WEBPACK_IMPORTED_MODULE_4__[\"default\"].formatDateTimeForBackend(this._mergeDeadlineTimeDate());\n this._update(subtask);\n },\n closeModal() {\n this.form = {\n hours: null\n };\n this.showModal = false;\n this.$nextTick(() => this.v$.$reset());\n },\n async _update(data) {\n try {\n const timesheets = data.timesheets.map(timesheet => {\n delete timesheet.employee_name;\n return timesheet;\n });\n\n // Convert timeblocks from internal format to BE format\n const timeblocks = (data.timeblocks || []).filter(timeblock => {\n // Filter timeblocks that have either old format (date) or new format (start)\n return timeblock.date || timeblock.start;\n }).map(timeblock => {\n // If already in BE format (has start field), return as is\n if (timeblock.start && !timeblock.date) {\n return {\n id: timeblock.id || null,\n start: timeblock.start,\n end: timeblock.end,\n is_finished: timeblock.is_finished || 0\n };\n }\n\n // Convert from internal format to BE format\n const dateStr = moment__WEBPACK_IMPORTED_MODULE_1___default()(timeblock.date).format('YYYY-MM-DD');\n return {\n id: timeblock.id || null,\n start: `${dateStr} ${timeblock.starts_at_time}:00`,\n end: `${dateStr} ${timeblock.ends_at_time}:00`,\n is_finished: timeblock.is_finished || 0\n };\n });\n const {\n subtask\n } = await this.$axios.put_auth(`v1/subtasks/${data.id}`, {\n ...data,\n timesheets,\n timeblocks\n });\n this.closeModal();\n this.$events.emit('on-subtask-edited', subtask);\n } catch (error) {\n this.$toast.error(error.message || error);\n if (true) console.log('[a-task-spent-time.vue] Error: ', error);\n }\n },\n _mergeDeadlineTimeDate() {\n const date = new Date(this.subtask.deadline);\n console.log('a-task-spent-time', this.subtask);\n const timeParts = this.subtask._deadline_time.split(':');\n date.setHours(parseInt(timeParts[0]));\n date.setMinutes(parseInt(timeParts[1]));\n return date;\n }\n }\n});\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/task/_components/_components/a-task-spent-time.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D"); /***/ }), @@ -796,7 +796,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.push.js */ \"./node_modules/core-js/modules/es.array.push.js\");\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _plugins_tm_utils_tm_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/plugins/tm@_utils/tm.utils */ \"./src/plugins/tm@_utils/tm.utils.ts\");\n/* harmony import */ var _plugins_lib_auth_utils_error_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/plugins/lib@auth/_utils/error.utils */ \"./src/plugins/lib@auth/_utils/error.utils.ts\");\n/* harmony import */ var _vuelidate_core__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @vuelidate/core */ \"./node_modules/@vuelidate/core/dist/index.esm.js\");\n/* harmony import */ var _vuelidate_validators__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @vuelidate/validators */ \"./node_modules/@vuelidate/validators/dist/index.esm.js\");\n/* harmony import */ var _vuepic_vue_datepicker__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @vuepic/vue-datepicker */ \"./node_modules/@vuepic/vue-datepicker/dist/vue-datepicker.js\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! moment */ \"./node_modules/moment/moment.js\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _plugins_tm_modal_mixins_modal_mixin__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/plugins/tm@modal/_mixins/modal.mixin */ \"./src/plugins/tm@modal/_mixins/modal.mixin.ts\");\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm-bundler.js\");\n/* provided dependency */ var console = __webpack_require__(/*! ./node_modules/console-browserify/index.js */ \"./node_modules/console-browserify/index.js\");\n\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n mixins: [_plugins_tm_modal_mixins_modal_mixin__WEBPACK_IMPORTED_MODULE_6__[\"default\"]],\n emits: ['update-subtask'],\n components: {\n Datepicker: _vuepic_vue_datepicker__WEBPACK_IMPORTED_MODULE_4__[\"default\"]\n },\n props: {\n timeblocks: {\n type: Array,\n required: true\n },\n subtask: {\n type: Object,\n required: true\n }\n },\n data() {\n return {\n v$: (0,_vuelidate_core__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(),\n errorUtils: _plugins_lib_auth_utils_error_utils__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n tmUtils: _plugins_tm_utils_tm_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n showModal: false,\n visible: false,\n form: {\n date: null,\n starts_at_time: '09:00',\n ends_at_time: '16:00'\n }\n };\n },\n validations() {\n return {\n form: {\n date: {\n required: _vuelidate_validators__WEBPACK_IMPORTED_MODULE_7__.required\n },\n starts_at_time: {\n required: _vuelidate_validators__WEBPACK_IMPORTED_MODULE_7__.required\n },\n ends_at_time: {\n required: _vuelidate_validators__WEBPACK_IMPORTED_MODULE_7__.required\n }\n }\n };\n },\n computed: {\n ...(0,vuex__WEBPACK_IMPORTED_MODULE_8__.mapGetters)('tm', ['mastertasks']),\n isOffice365Task() {\n return this.subtask.type == 'office365';\n }\n },\n methods: {\n async submit() {\n if (!(await this.v$.$validate())) return;\n const subtask = JSON.parse(JSON.stringify(this.subtask));\n const splittedStartsAtTime = this.form.starts_at_time.split(':');\n const splittedEndsAtTime = this.form.ends_at_time.split(':');\n const start = moment__WEBPACK_IMPORTED_MODULE_5___default()(this.form.date).hours(parseInt(splittedStartsAtTime[0])).minutes(parseInt(splittedStartsAtTime[1])).toISOString();\n const end = moment__WEBPACK_IMPORTED_MODULE_5___default()(this.form.date).hours(parseInt(splittedEndsAtTime[0])).minutes(parseInt(splittedEndsAtTime[1])).toISOString();\n if (!subtask?.timeblocks) {\n subtask.timeblocks = [];\n }\n if (!subtask?.timesheets) {\n subtask.timesheets = [];\n }\n if (!subtask?.is_finished) {\n subtask.is_finished = 0;\n }\n subtask.timeblocks.push({\n end: _plugins_tm_utils_tm_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].formatDateTimeForBackend(end),\n id: null,\n is_finished: 0,\n start: _plugins_tm_utils_tm_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].formatDateTimeForBackend(start)\n });\n if (subtask.deadline) subtask.deadline = _plugins_tm_utils_tm_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].formatDateTimeForBackend(this._mergeDeadlineTimeDate());\n const isAfterDeadline = this.isAfterDeadline();\n if (isAfterDeadline) {\n this.visible = true;\n } else {\n if (!subtask.id) {\n this.$emit('update-unfinished-subtask', subtask);\n } else {\n this._update(subtask);\n }\n }\n },\n async confirmSubmit() {\n const subtask = JSON.parse(JSON.stringify(this.subtask));\n const splittedStartsAtTime = this.form.starts_at_time.split(':');\n const splittedEndsAtTime = this.form.ends_at_time.split(':');\n const start = moment__WEBPACK_IMPORTED_MODULE_5___default()(this.form.date).hours(parseInt(splittedStartsAtTime[0])).minutes(parseInt(splittedStartsAtTime[1])).toISOString();\n const end = moment__WEBPACK_IMPORTED_MODULE_5___default()(this.form.date).hours(parseInt(splittedEndsAtTime[0])).minutes(parseInt(splittedEndsAtTime[1])).toISOString();\n if (!subtask?.timeblocks) {\n subtask.timeblocks = [];\n }\n if (!subtask?.timesheets) {\n subtask.timesheets = [];\n }\n if (!subtask?.is_finished) {\n subtask.is_finished = 0;\n }\n subtask.timeblocks.push({\n end: _plugins_tm_utils_tm_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].formatDateTimeForBackend(end),\n id: null,\n is_finished: 0,\n start: _plugins_tm_utils_tm_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].formatDateTimeForBackend(start)\n });\n if (subtask.deadline) subtask.deadline = _plugins_tm_utils_tm_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].formatDateTimeForBackend(this._mergeDeadlineTimeDate());\n if (!subtask.id) {\n this.$emit('update-unfinished-subtask', subtask);\n this.closeModal();\n return;\n }\n this.visible = false;\n this._update(subtask);\n },\n async toggleTimeblockIsFinished(originalTimeblock) {\n // TODO: Pridat odpracovany cas modal?\n console.log('toggleTimeblockIsFinished 5', this.subtask);\n const subtask = JSON.parse(JSON.stringify(this.subtask));\n const timeblock = JSON.parse(JSON.stringify(originalTimeblock));\n timeblock.is_finished = timeblock.is_finished == 1 ? 0 : 1;\n try {\n const {\n data: newTimeblock\n } = await this.$axios.put_auth(`v1/timeblocks/${timeblock.id}`, timeblock);\n subtask.timeblocks = subtask.timeblocks.map(originalTimeblock => {\n if (originalTimeblock.id == newTimeblock.id) return newTimeblock;\n return originalTimeblock;\n });\n this.$events.emit('on-subtask-edited', subtask);\n this.$emit('update-subtask', subtask);\n if (timeblock.is_finished) this.$events.emit('show-task-add-time-modal', {\n subtask\n });\n } catch (error) {\n this.$toast.error(error.message || error);\n if (true) console.log('[a-task-timeblocks.vue] Error: ', error);\n }\n },\n async deleteTimeblock({\n id\n }) {\n const subtask = JSON.parse(JSON.stringify(this.subtask));\n subtask.timeblocks = subtask.timeblocks.filter(timeblock => timeblock.id != id);\n if (subtask.deadline) subtask.deadline = _plugins_tm_utils_tm_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].formatDateTimeForBackend(this._mergeDeadlineTimeDate());\n this._update(subtask);\n },\n deleteTimeblockWithoutId(i) {\n this.$emit('delete-timeblock');\n },\n async _update(data) {\n try {\n const timesheets = data.timesheets.map(timesheet => {\n delete timesheet.employee_name;\n return timesheet;\n });\n const {\n subtask\n } = await this.$axios.put_auth(`v1/subtasks/${data.id}`, {\n ...data,\n timesheets\n });\n this.closeModal();\n this.$events.emit('on-subtask-edited', subtask);\n } catch (error) {\n this.$toast.error(error.message || error);\n if (true) console.log('[a-task-timeblocks.vue] Error: ', error);\n }\n },\n isAfterDeadline() {\n const deadline = this.getDeadline(this.subtask);\n if (!deadline) return;\n const mDate = moment__WEBPACK_IMPORTED_MODULE_5___default()(this.form.date);\n const mDeadline = moment__WEBPACK_IMPORTED_MODULE_5___default()(deadline);\n const [hours, minutes] = this.form.ends_at_time.split(':').map(Number);\n mDate.hours(hours);\n mDate.minutes(minutes);\n return mDate.isAfter(mDeadline);\n },\n getDeadline(subtask) {\n if (subtask?.deadline) return subtask.deadline;\n return subtask.master_task_deadline;\n },\n _mergeDeadlineTimeDate() {\n const date = new Date(this.subtask.deadline);\n const timeParts = this.subtask._deadline_time.split(':');\n date.setHours(parseInt(timeParts[0]));\n date.setMinutes(parseInt(timeParts[1]));\n return date;\n },\n closeModal() {\n this.form = {\n date: null,\n starts_at_time: '09:00',\n ends_at_time: '16:00'\n };\n this.showModal = false;\n this.$nextTick(() => this.v$.$reset());\n }\n }\n});\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/task/_components/_components/a-task-timeblocks.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.push.js */ \"./node_modules/core-js/modules/es.array.push.js\");\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _plugins_tm_utils_tm_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/plugins/tm@_utils/tm.utils */ \"./src/plugins/tm@_utils/tm.utils.ts\");\n/* harmony import */ var _plugins_lib_auth_utils_error_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/plugins/lib@auth/_utils/error.utils */ \"./src/plugins/lib@auth/_utils/error.utils.ts\");\n/* harmony import */ var _vuelidate_core__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @vuelidate/core */ \"./node_modules/@vuelidate/core/dist/index.esm.js\");\n/* harmony import */ var _vuelidate_validators__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @vuelidate/validators */ \"./node_modules/@vuelidate/validators/dist/index.esm.js\");\n/* harmony import */ var _vuepic_vue_datepicker__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @vuepic/vue-datepicker */ \"./node_modules/@vuepic/vue-datepicker/dist/vue-datepicker.js\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! moment */ \"./node_modules/moment/moment.js\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _plugins_tm_modal_mixins_modal_mixin__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/plugins/tm@modal/_mixins/modal.mixin */ \"./src/plugins/tm@modal/_mixins/modal.mixin.ts\");\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm-bundler.js\");\n/* provided dependency */ var console = __webpack_require__(/*! ./node_modules/console-browserify/index.js */ \"./node_modules/console-browserify/index.js\");\n\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n mixins: [_plugins_tm_modal_mixins_modal_mixin__WEBPACK_IMPORTED_MODULE_6__[\"default\"]],\n emits: ['update-subtask'],\n components: {\n Datepicker: _vuepic_vue_datepicker__WEBPACK_IMPORTED_MODULE_4__[\"default\"]\n },\n props: {\n timeblocks: {\n type: Array,\n required: true\n },\n subtask: {\n type: Object,\n required: true\n }\n },\n data() {\n return {\n v$: (0,_vuelidate_core__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(),\n errorUtils: _plugins_lib_auth_utils_error_utils__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n tmUtils: _plugins_tm_utils_tm_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n showModal: false,\n visible: false,\n form: {\n date: null,\n starts_at_time: '09:00',\n ends_at_time: '16:00'\n }\n };\n },\n validations() {\n return {\n form: {\n date: {\n required: _vuelidate_validators__WEBPACK_IMPORTED_MODULE_7__.required\n },\n starts_at_time: {\n required: _vuelidate_validators__WEBPACK_IMPORTED_MODULE_7__.required\n },\n ends_at_time: {\n required: _vuelidate_validators__WEBPACK_IMPORTED_MODULE_7__.required\n }\n }\n };\n },\n computed: {\n ...(0,vuex__WEBPACK_IMPORTED_MODULE_8__.mapGetters)('tm', ['mastertasks']),\n isOffice365Task() {\n return this.subtask.type == 'office365';\n }\n },\n methods: {\n formatTimeblockStart(timeblock) {\n // Handle internal format with date and time fields\n if (timeblock.date && timeblock.starts_at_time) {\n const dateStr = moment__WEBPACK_IMPORTED_MODULE_5___default()(timeblock.date).format('DD.MM.yyyy');\n return `${dateStr}, ${timeblock.starts_at_time}`;\n }\n // Fallback to backend format\n if (timeblock.start) {\n return _plugins_tm_utils_tm_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].formatDateTime(timeblock.start);\n }\n return '';\n },\n formatTimeblockEnd(timeblock) {\n // Handle internal format with date and time fields\n if (timeblock.date && timeblock.ends_at_time) {\n return timeblock.ends_at_time;\n }\n // Fallback to backend format\n if (timeblock.end) {\n return _plugins_tm_utils_tm_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].formatDateTime(timeblock.end);\n }\n return '';\n },\n async submit() {\n if (!(await this.v$.$validate())) return;\n const subtask = JSON.parse(JSON.stringify(this.subtask));\n if (!subtask?.timeblocks) {\n subtask.timeblocks = [];\n }\n if (!subtask?.timesheets) {\n subtask.timesheets = [];\n }\n if (!subtask?.is_finished) {\n subtask.is_finished = 0;\n }\n\n // Add timeblock in internal format\n subtask.timeblocks.push({\n id: null,\n date: this.form.date,\n starts_at_time: this.form.starts_at_time,\n ends_at_time: this.form.ends_at_time,\n is_finished: 0\n });\n if (subtask.deadline) subtask.deadline = _plugins_tm_utils_tm_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].formatDateTimeForBackend(this._mergeDeadlineTimeDate());\n const isAfterDeadline = this.isAfterDeadline();\n if (isAfterDeadline) {\n this.visible = true;\n } else {\n if (!subtask.id) {\n this.$emit('update-unfinished-subtask', subtask);\n this.closeModal();\n } else {\n this._update(subtask);\n }\n }\n },\n async confirmSubmit() {\n const subtask = JSON.parse(JSON.stringify(this.subtask));\n if (!subtask?.timeblocks) {\n subtask.timeblocks = [];\n }\n if (!subtask?.timesheets) {\n subtask.timesheets = [];\n }\n if (!subtask?.is_finished) {\n subtask.is_finished = 0;\n }\n\n // Add timeblock in internal format\n subtask.timeblocks.push({\n id: null,\n date: this.form.date,\n starts_at_time: this.form.starts_at_time,\n ends_at_time: this.form.ends_at_time,\n is_finished: 0\n });\n if (subtask.deadline) subtask.deadline = _plugins_tm_utils_tm_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].formatDateTimeForBackend(this._mergeDeadlineTimeDate());\n if (!subtask.id) {\n this.$emit('update-unfinished-subtask', subtask);\n this.closeModal();\n return;\n }\n this.visible = false;\n this._update(subtask);\n },\n async toggleTimeblockIsFinished(originalTimeblock) {\n // TODO: Pridat odpracovany cas modal?\n const subtask = JSON.parse(JSON.stringify(this.subtask));\n const timeblock = JSON.parse(JSON.stringify(originalTimeblock));\n timeblock.is_finished = timeblock.is_finished == 1 ? 0 : 1;\n try {\n // Convert timeblock to backend format before sending\n const timeblockForBackend = {\n id: timeblock.id,\n is_finished: timeblock.is_finished\n };\n\n // If timeblock is in internal format, convert it\n if (timeblock.date) {\n const dateStr = moment__WEBPACK_IMPORTED_MODULE_5___default()(timeblock.date).format('YYYY-MM-DD');\n timeblockForBackend.start = `${dateStr} ${timeblock.starts_at_time}:00`;\n timeblockForBackend.end = `${dateStr} ${timeblock.ends_at_time}:00`;\n } else {\n // Already in backend format\n timeblockForBackend.start = timeblock.start;\n timeblockForBackend.end = timeblock.end;\n }\n const {\n data: newTimeblock\n } = await this.$axios.put_auth(`v1/timeblocks/${timeblock.id}`, timeblockForBackend);\n\n // Convert returned timeblock from backend format to internal format\n const startMoment = moment__WEBPACK_IMPORTED_MODULE_5___default()(newTimeblock.start, 'YYYY-MM-DD HH:mm:ss');\n const endMoment = moment__WEBPACK_IMPORTED_MODULE_5___default()(newTimeblock.end, 'YYYY-MM-DD HH:mm:ss');\n const convertedTimeblock = {\n id: newTimeblock.id,\n date: startMoment.toDate(),\n starts_at_time: startMoment.format('HH:mm'),\n ends_at_time: endMoment.format('HH:mm'),\n is_finished: newTimeblock.is_finished\n };\n subtask.timeblocks = subtask.timeblocks.map(originalTimeblock => {\n if (originalTimeblock.id == convertedTimeblock.id) return convertedTimeblock;\n return originalTimeblock;\n });\n this.$events.emit('on-subtask-edited', subtask);\n this.$emit('update-subtask', subtask);\n if (timeblock.is_finished) this.$events.emit('show-task-add-time-modal', {\n subtask\n });\n } catch (error) {\n this.$toast.error(error.message || error);\n if (true) console.log('[a-task-timeblocks.vue] Error: ', error);\n }\n },\n async deleteTimeblock({\n id\n }) {\n const subtask = JSON.parse(JSON.stringify(this.subtask));\n subtask.timeblocks = subtask.timeblocks.filter(timeblock => timeblock.id != id);\n if (subtask.deadline) subtask.deadline = _plugins_tm_utils_tm_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].formatDateTimeForBackend(this._mergeDeadlineTimeDate());\n this._update(subtask);\n },\n deleteTimeblockWithoutId(i) {\n this.$emit('delete-timeblock');\n },\n async _update(data) {\n try {\n const timesheets = data.timesheets.map(timesheet => {\n delete timesheet.employee_name;\n return timesheet;\n });\n\n // Convert timeblocks from internal format to BE format\n const timeblocks = (data.timeblocks || []).filter(timeblock => {\n // Filter timeblocks that have either old format (date) or new format (start)\n return timeblock.date || timeblock.start;\n }).map(timeblock => {\n // If already in BE format (has start field), return as is\n if (timeblock.start && !timeblock.date) {\n return {\n id: timeblock.id || null,\n start: timeblock.start,\n end: timeblock.end,\n is_finished: timeblock.is_finished || 0\n };\n }\n\n // Convert from internal format to BE format\n const dateStr = moment__WEBPACK_IMPORTED_MODULE_5___default()(timeblock.date).format('YYYY-MM-DD');\n return {\n id: timeblock.id || null,\n start: `${dateStr} ${timeblock.starts_at_time}:00`,\n end: `${dateStr} ${timeblock.ends_at_time}:00`,\n is_finished: timeblock.is_finished || 0\n };\n });\n const {\n subtask\n } = await this.$axios.put_auth(`v1/subtasks/${data.id}`, {\n ...data,\n timesheets,\n timeblocks\n });\n this.closeModal();\n this.$events.emit('on-subtask-edited', subtask);\n } catch (error) {\n this.$toast.error(error.message || error);\n if (true) console.log('[a-task-timeblocks.vue] Error: ', error);\n }\n },\n isAfterDeadline() {\n const deadline = this.getDeadline(this.subtask);\n if (!deadline) return;\n const mDate = moment__WEBPACK_IMPORTED_MODULE_5___default()(this.form.date);\n const mDeadline = moment__WEBPACK_IMPORTED_MODULE_5___default()(deadline);\n const [hours, minutes] = this.form.ends_at_time.split(':').map(Number);\n mDate.hours(hours);\n mDate.minutes(minutes);\n return mDate.isAfter(mDeadline);\n },\n getDeadline(subtask) {\n if (subtask?.deadline) return subtask.deadline;\n return subtask.master_task_deadline;\n },\n _mergeDeadlineTimeDate() {\n const date = new Date(this.subtask.deadline);\n const timeParts = this.subtask._deadline_time.split(':');\n date.setHours(parseInt(timeParts[0]));\n date.setMinutes(parseInt(timeParts[1]));\n return date;\n },\n closeModal() {\n this.form = {\n date: null,\n starts_at_time: '09:00',\n ends_at_time: '16:00'\n };\n this.showModal = false;\n this.$nextTick(() => this.v$.$reset());\n }\n }\n});\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/task/_components/_components/a-task-timeblocks.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D"); /***/ }), @@ -807,7 +807,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _vuelidate_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @vuelidate/core */ \"./node_modules/@vuelidate/core/dist/index.esm.js\");\n/* harmony import */ var _vuelidate_validators__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @vuelidate/validators */ \"./node_modules/@vuelidate/validators/dist/index.esm.js\");\n/* harmony import */ var _vuepic_vue_datepicker__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @vuepic/vue-datepicker */ \"./node_modules/@vuepic/vue-datepicker/dist/vue-datepicker.js\");\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n components: {\n Datepicker: _vuepic_vue_datepicker__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n },\n props: {\n timeblock: {\n type: Object,\n required: true\n },\n deletable: {\n type: Boolean,\n default: false\n },\n editable: {\n type: Boolean,\n default: false\n },\n preventInputFocus: {\n type: Boolean,\n default: false\n },\n onInputFocus: {\n type: Function,\n default: () => ({})\n },\n onDateOpen: {\n type: Function,\n default: () => ({})\n }\n },\n data() {\n return {\n v$: (0,_vuelidate_core__WEBPACK_IMPORTED_MODULE_0__[\"default\"])()\n };\n },\n validations() {\n return {\n timeblock: {\n starts_at_time: {\n required: (0,_vuelidate_validators__WEBPACK_IMPORTED_MODULE_2__.requiredIf)(this.timeblock.date)\n },\n ends_at_time: {\n required: (0,_vuelidate_validators__WEBPACK_IMPORTED_MODULE_2__.requiredIf)(this.timeblock.date)\n }\n }\n };\n },\n methods: {\n async openDatepicker(ref) {\n this.$refs[ref].openMenu();\n },\n updateDate(date) {\n const timeblock = {\n ...this.timeblock\n };\n if (date) timeblock.date = date;\n this.$emit('updateTimeblock', timeblock);\n },\n updateStartTime(event) {\n const timeblock = {\n ...this.timeblock\n };\n timeblock.starts_at_time = event.target.value;\n this.$emit('updateTimeblock', timeblock);\n },\n updateEndTime(event) {\n const timeblock = {\n ...this.timeblock\n };\n timeblock.ends_at_time = event.target.value;\n this.$emit('updateTimeblock', timeblock);\n }\n }\n});\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/task/_components/a-timeblock.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _vuelidate_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @vuelidate/core */ \"./node_modules/@vuelidate/core/dist/index.esm.js\");\n/* harmony import */ var _vuelidate_validators__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @vuelidate/validators */ \"./node_modules/@vuelidate/validators/dist/index.esm.js\");\n/* harmony import */ var _vuepic_vue_datepicker__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @vuepic/vue-datepicker */ \"./node_modules/@vuepic/vue-datepicker/dist/vue-datepicker.js\");\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n components: {\n Datepicker: _vuepic_vue_datepicker__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n },\n props: {\n timeblock: {\n type: Object,\n required: true\n },\n deletable: {\n type: Boolean,\n default: false\n },\n editable: {\n type: Boolean,\n default: false\n },\n preventInputFocus: {\n type: Boolean,\n default: false\n },\n onInputFocus: {\n type: Function,\n default: () => ({})\n },\n onDateOpen: {\n type: Function,\n default: () => ({})\n },\n index: {\n type: Number\n }\n },\n data() {\n return {\n v$: (0,_vuelidate_core__WEBPACK_IMPORTED_MODULE_0__[\"default\"])()\n };\n },\n validations() {\n return {\n timeblock: {\n starts_at_time: {\n required: (0,_vuelidate_validators__WEBPACK_IMPORTED_MODULE_2__.requiredIf)(this.timeblock.date)\n },\n ends_at_time: {\n required: (0,_vuelidate_validators__WEBPACK_IMPORTED_MODULE_2__.requiredIf)(this.timeblock.date)\n }\n }\n };\n },\n methods: {\n handleDatepickerClick() {\n // Pass the datepicker wrapper element reference to the mixin\n const scrollTarget = this.$refs[`timeblock-datepicker-wrapper-${this.index}`];\n this.onDateOpen(scrollTarget);\n // Open the datepicker\n this.openDatepicker(`timeblock-datepicker-${this.index}`);\n setTimeout(() => {\n const calendar = document.querySelector('.dp__menu.dp__menu_index.dp__theme_light');\n if (!calendar) return;\n\n // Get the datepicker wrapper element\n const datepickerWrapper = this.$refs[`timeblock-datepicker-wrapper-${this.index}`];\n\n // Get the modal container\n const modalContainer = document.querySelector('.v-overlay__content');\n if (!datepickerWrapper || !modalContainer) return;\n\n // Get bounding rectangles\n const wrapperRect = datepickerWrapper.getBoundingClientRect();\n const modalRect = modalContainer.getBoundingClientRect();\n\n // Calculate position relative to modal\n const topPosition = wrapperRect.top - modalRect.top + wrapperRect.height;\n const leftPosition = wrapperRect.left - modalRect.left;\n\n // Apply positioning\n // calendar.style.position = 'absolute';\n calendar.style.top = `${topPosition + 210}px`;\n // calendar.style.left = `${leftPosition}px`;\n }, 100);\n },\n async openDatepicker(ref) {\n this.$refs[ref].openMenu();\n },\n updateDate(date) {\n const updated = {\n ...this.timeblock,\n date\n };\n this.$emit('updateTimeblock', updated);\n },\n updateStartTime(event) {\n const updated = {\n ...this.timeblock,\n starts_at_time: event.target.value\n };\n this.$emit('updateTimeblock', updated);\n },\n updateEndTime(event) {\n const updated = {\n ...this.timeblock,\n ends_at_time: event.target.value\n };\n this.$emit('updateTimeblock', updated);\n }\n }\n});\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/task/_components/a-timeblock.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D"); /***/ }), @@ -829,7 +829,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _com /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _plugins_tm_modal_mixins_modal_mixin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/plugins/tm@modal/_mixins/modal.mixin */ \"./src/plugins/tm@modal/_mixins/modal.mixin.ts\");\n/* provided dependency */ var console = __webpack_require__(/*! ./node_modules/console-browserify/index.js */ \"./node_modules/console-browserify/index.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n mixins: [_plugins_tm_modal_mixins_modal_mixin__WEBPACK_IMPORTED_MODULE_0__[\"default\"]],\n emits: ['close', 'on-subtask-edited'],\n data() {\n return {\n visible: false,\n subtask: null\n };\n },\n methods: {\n async showModal({\n subtask\n }) {\n this.subtask = subtask;\n this.visible = true;\n },\n async complete() {\n try {\n const tempSubtask = {\n ...this.subtask,\n is_finished: this.subtask.is_finished ? 0 : 1,\n timesheets: this.subtask.timesheets.map(timesheet => {\n delete timesheet.employee_name;\n return timesheet;\n })\n };\n const {\n subtask\n } = await this.$axios.put_auth(`v1/subtasks/${tempSubtask.id}`, tempSubtask);\n this.visible = false;\n this.$emit('on-subtask-edited', subtask);\n } catch (error) {\n this.$toast.error(this.$parseError(error));\n if (true) console.log('[z-complete-task-modal.vue] Error: ', error);\n }\n },\n closeModal() {\n this.visible = false;\n }\n }\n});\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/task/z-complete-task-modal.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _plugins_tm_modal_mixins_modal_mixin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/plugins/tm@modal/_mixins/modal.mixin */ \"./src/plugins/tm@modal/_mixins/modal.mixin.ts\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! moment */ \"./node_modules/moment/moment.js\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_1__);\n/* provided dependency */ var console = __webpack_require__(/*! ./node_modules/console-browserify/index.js */ \"./node_modules/console-browserify/index.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n mixins: [_plugins_tm_modal_mixins_modal_mixin__WEBPACK_IMPORTED_MODULE_0__[\"default\"]],\n emits: ['close', 'on-subtask-edited'],\n data() {\n return {\n visible: false,\n subtask: null\n };\n },\n methods: {\n async showModal({\n subtask\n }) {\n this.subtask = subtask;\n this.visible = true;\n },\n async complete() {\n try {\n const timesheets = this.subtask.timesheets.map(timesheet => {\n delete timesheet.employee_name;\n return timesheet;\n });\n\n // Convert timeblocks from internal format to BE format\n const timeblocks = (this.subtask.timeblocks || []).filter(timeblock => {\n // Filter timeblocks that have either old format (date) or new format (start)\n return timeblock.date || timeblock.start;\n }).map(timeblock => {\n // If already in BE format (has start field), return as is\n if (timeblock.start && !timeblock.date) {\n return {\n id: timeblock.id || null,\n start: timeblock.start,\n end: timeblock.end,\n is_finished: timeblock.is_finished || 0\n };\n }\n\n // Convert from internal format to BE format\n const dateStr = moment__WEBPACK_IMPORTED_MODULE_1___default()(timeblock.date).format('YYYY-MM-DD');\n return {\n id: timeblock.id || null,\n start: `${dateStr} ${timeblock.starts_at_time}:00`,\n end: `${dateStr} ${timeblock.ends_at_time}:00`,\n is_finished: timeblock.is_finished || 0\n };\n });\n const tempSubtask = {\n ...this.subtask,\n is_finished: this.subtask.is_finished ? 0 : 1,\n timesheets,\n timeblocks\n };\n const {\n subtask\n } = await this.$axios.put_auth(`v1/subtasks/${tempSubtask.id}`, tempSubtask);\n this.visible = false;\n this.$emit('on-subtask-edited', subtask);\n } catch (error) {\n this.$toast.error(this.$parseError(error));\n if (true) console.log('[z-complete-task-modal.vue] Error: ', error);\n }\n },\n closeModal() {\n this.visible = false;\n }\n }\n});\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/task/z-complete-task-modal.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D"); /***/ }), @@ -851,7 +851,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _plu /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _plugins_tm_modal_mixins_modal_mixin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/plugins/tm@modal/_mixins/modal.mixin */ \"./src/plugins/tm@modal/_mixins/modal.mixin.ts\");\n/* harmony import */ var _plugins_tm_utils_tm_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/plugins/tm@_utils/tm.utils */ \"./src/plugins/tm@_utils/tm.utils.ts\");\n/* provided dependency */ var console = __webpack_require__(/*! ./node_modules/console-browserify/index.js */ \"./node_modules/console-browserify/index.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n mixins: [_plugins_tm_modal_mixins_modal_mixin__WEBPACK_IMPORTED_MODULE_0__[\"default\"]],\n emits: ['on-subtask-edited'],\n data() {\n return {\n visible: false,\n subtask: null,\n isDeleting: false,\n tmUtils: _plugins_tm_utils_tm_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n };\n },\n methods: {\n async showModal({\n subtask\n }) {\n this.subtask = subtask;\n this.visible = true;\n },\n closeModal() {\n this.visible = false;\n },\n async deleteTimeblock({\n id\n }) {\n const subtask = JSON.parse(JSON.stringify(this.subtask));\n subtask.timeblocks = subtask.timeblocks.filter(timeblock => timeblock.id != id);\n if (subtask.deadline) subtask.deadline = _plugins_tm_utils_tm_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].formatDateTimeForBackend(subtask.deadline);\n this._update(subtask);\n },\n deleteTimeblockWithoutId(i) {\n this.$emit('delete-timeblock');\n },\n async _update(data) {\n try {\n const timesheets = data.timesheets.map(timesheet => {\n delete timesheet.employee_name;\n return timesheet;\n });\n const {\n subtask\n } = await this.$axios.put_auth(`v1/subtasks/${data.id}`, {\n ...data,\n timesheets\n });\n this.closeModal();\n this.$events.emit('on-subtask-edited', subtask);\n } catch (error) {\n this.$toast.error(error.message || error);\n if (true) console.log('[z-delete-timeblock-modal.vue] Error: ', error);\n }\n }\n }\n});\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/task/z-delete-timeblock-modal.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _plugins_tm_modal_mixins_modal_mixin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/plugins/tm@modal/_mixins/modal.mixin */ \"./src/plugins/tm@modal/_mixins/modal.mixin.ts\");\n/* harmony import */ var _plugins_tm_utils_tm_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/plugins/tm@_utils/tm.utils */ \"./src/plugins/tm@_utils/tm.utils.ts\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! moment */ \"./node_modules/moment/moment.js\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_2__);\n/* provided dependency */ var console = __webpack_require__(/*! ./node_modules/console-browserify/index.js */ \"./node_modules/console-browserify/index.js\");\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n mixins: [_plugins_tm_modal_mixins_modal_mixin__WEBPACK_IMPORTED_MODULE_0__[\"default\"]],\n emits: ['on-subtask-edited'],\n data() {\n return {\n visible: false,\n subtask: null,\n isDeleting: false,\n tmUtils: _plugins_tm_utils_tm_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n };\n },\n methods: {\n async showModal({\n subtask\n }) {\n this.subtask = subtask;\n this.visible = true;\n },\n closeModal() {\n this.visible = false;\n },\n async deleteTimeblock({\n id\n }) {\n const subtask = JSON.parse(JSON.stringify(this.subtask));\n subtask.timeblocks = subtask.timeblocks.filter(timeblock => timeblock.id != id);\n if (subtask.deadline) subtask.deadline = _plugins_tm_utils_tm_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].formatDateTimeForBackend(subtask.deadline);\n this._update(subtask);\n },\n deleteTimeblockWithoutId(i) {\n this.$emit('delete-timeblock');\n },\n async _update(data) {\n try {\n const timesheets = data.timesheets.map(timesheet => {\n delete timesheet.employee_name;\n return timesheet;\n });\n\n // Convert timeblocks from internal format to BE format\n const timeblocks = (data.timeblocks || []).filter(timeblock => {\n // Filter timeblocks that have either old format (date) or new format (start)\n return timeblock.date || timeblock.start;\n }).map(timeblock => {\n // If already in BE format (has start field), return as is\n if (timeblock.start && !timeblock.date) {\n return {\n id: timeblock.id || null,\n start: timeblock.start,\n end: timeblock.end,\n is_finished: timeblock.is_finished || 0\n };\n }\n\n // Convert from internal format to BE format\n const dateStr = moment__WEBPACK_IMPORTED_MODULE_2___default()(timeblock.date).format('YYYY-MM-DD');\n return {\n id: timeblock.id || null,\n start: `${dateStr} ${timeblock.starts_at_time}:00`,\n end: `${dateStr} ${timeblock.ends_at_time}:00`,\n is_finished: timeblock.is_finished || 0\n };\n });\n const {\n subtask\n } = await this.$axios.put_auth(`v1/subtasks/${data.id}`, {\n ...data,\n timesheets,\n timeblocks\n });\n this.closeModal();\n this.$events.emit('on-subtask-edited', subtask);\n } catch (error) {\n this.$toast.error(error.message || error);\n if (true) console.log('[z-delete-timeblock-modal.vue] Error: ', error);\n }\n }\n }\n});\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/task/z-delete-timeblock-modal.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D"); /***/ }), @@ -862,7 +862,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _plu /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.push.js */ \"./node_modules/core-js/modules/es.array.push.js\");\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _plugins_lib_auth_utils_error_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/plugins/lib@auth/_utils/error.utils */ \"./src/plugins/lib@auth/_utils/error.utils.ts\");\n/* harmony import */ var _vuelidate_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @vuelidate/core */ \"./node_modules/@vuelidate/core/dist/index.esm.js\");\n/* harmony import */ var _vuelidate_validators__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @vuelidate/validators */ \"./node_modules/@vuelidate/validators/dist/index.esm.js\");\n/* harmony import */ var _plugins_tm_modal_mixins_modal_mixin__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/plugins/tm@modal/_mixins/modal.mixin */ \"./src/plugins/tm@modal/_mixins/modal.mixin.ts\");\n/* harmony import */ var _plugins_tm_utils_tm_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/plugins/tm@_utils/tm.utils */ \"./src/plugins/tm@_utils/tm.utils.ts\");\n/* provided dependency */ var console = __webpack_require__(/*! ./node_modules/console-browserify/index.js */ \"./node_modules/console-browserify/index.js\");\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n mixins: [_plugins_tm_modal_mixins_modal_mixin__WEBPACK_IMPORTED_MODULE_3__[\"default\"]],\n emits: ['close', 'on-subtask-edited'],\n data() {\n return {\n v$: (0,_vuelidate_core__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(),\n errorUtils: _plugins_lib_auth_utils_error_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n visible: false,\n subtask: null,\n form: {\n hours: null\n }\n };\n },\n validations() {\n return {\n form: {\n hours: {\n required: _vuelidate_validators__WEBPACK_IMPORTED_MODULE_5__.required,\n numeric: _vuelidate_validators__WEBPACK_IMPORTED_MODULE_5__.numeric,\n minValue: (0,_vuelidate_validators__WEBPACK_IMPORTED_MODULE_5__.minValue)(0.1)\n }\n }\n };\n },\n methods: {\n async showModal({\n subtask\n }) {\n this.subtask = subtask;\n this.visible = true;\n this.form.hours = null;\n this.$nextTick(() => this.v$.$reset());\n },\n async submit() {\n if (!(await this.v$.$validate())) return;\n if (this.subtask.deadline) this.subtask.deadline = _plugins_tm_utils_tm_utils__WEBPACK_IMPORTED_MODULE_4__[\"default\"].formatDateTimeForBackend(this.subtask.deadline);\n this.subtask.timesheets.push({\n id: null,\n employee_id: this.subtask.employee_id,\n time: typeof this.form.hours == 'string' ? parseFloat(this.form.hours) : this.form.hours\n });\n const payload = {\n ...this.subtask,\n timesheets: this.subtask.timesheets.map(timesheet => {\n delete timesheet.employee_name;\n return timesheet;\n })\n };\n try {\n const {\n subtask\n } = await this.$axios.put_auth(`v1/subtasks/${this.subtask.id}`, payload);\n this.closeModal();\n this.$events.emit('on-subtask-edited', subtask);\n } catch (error) {\n this.$toast.error(error.message || error);\n if (true) console.log('[z-task-add-time-modal.vue] Error: ', error);\n }\n },\n closeModal() {\n this.visible = false;\n this.v$.$reset();\n }\n }\n});\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/task/z-task-add-time-modal.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.push.js */ \"./node_modules/core-js/modules/es.array.push.js\");\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _plugins_lib_auth_utils_error_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/plugins/lib@auth/_utils/error.utils */ \"./src/plugins/lib@auth/_utils/error.utils.ts\");\n/* harmony import */ var _vuelidate_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @vuelidate/core */ \"./node_modules/@vuelidate/core/dist/index.esm.js\");\n/* harmony import */ var _vuelidate_validators__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @vuelidate/validators */ \"./node_modules/@vuelidate/validators/dist/index.esm.js\");\n/* harmony import */ var _plugins_tm_modal_mixins_modal_mixin__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/plugins/tm@modal/_mixins/modal.mixin */ \"./src/plugins/tm@modal/_mixins/modal.mixin.ts\");\n/* harmony import */ var _plugins_tm_utils_tm_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/plugins/tm@_utils/tm.utils */ \"./src/plugins/tm@_utils/tm.utils.ts\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! moment */ \"./node_modules/moment/moment.js\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_5__);\n/* provided dependency */ var console = __webpack_require__(/*! ./node_modules/console-browserify/index.js */ \"./node_modules/console-browserify/index.js\");\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n mixins: [_plugins_tm_modal_mixins_modal_mixin__WEBPACK_IMPORTED_MODULE_3__[\"default\"]],\n emits: ['close', 'on-subtask-edited'],\n data() {\n return {\n v$: (0,_vuelidate_core__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(),\n errorUtils: _plugins_lib_auth_utils_error_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n visible: false,\n subtask: null,\n form: {\n hours: null\n }\n };\n },\n validations() {\n return {\n form: {\n hours: {\n required: _vuelidate_validators__WEBPACK_IMPORTED_MODULE_6__.required,\n numeric: _vuelidate_validators__WEBPACK_IMPORTED_MODULE_6__.numeric,\n minValue: (0,_vuelidate_validators__WEBPACK_IMPORTED_MODULE_6__.minValue)(0.1)\n }\n }\n };\n },\n methods: {\n async showModal({\n subtask\n }) {\n this.subtask = subtask;\n this.visible = true;\n this.form.hours = null;\n this.$nextTick(() => this.v$.$reset());\n },\n async submit() {\n if (!(await this.v$.$validate())) return;\n if (this.subtask.deadline) this.subtask.deadline = _plugins_tm_utils_tm_utils__WEBPACK_IMPORTED_MODULE_4__[\"default\"].formatDateTimeForBackend(this.subtask.deadline);\n this.subtask.timesheets.push({\n id: null,\n employee_id: this.subtask.employee_id,\n time: typeof this.form.hours == 'string' ? parseFloat(this.form.hours) : this.form.hours\n });\n const timesheets = this.subtask.timesheets.map(timesheet => {\n delete timesheet.employee_name;\n return timesheet;\n });\n\n // Convert timeblocks from internal format to BE format\n const timeblocks = (this.subtask.timeblocks || []).filter(timeblock => {\n // Filter timeblocks that have either old format (date) or new format (start)\n return timeblock.date || timeblock.start;\n }).map(timeblock => {\n // If already in BE format (has start field), return as is\n if (timeblock.start && !timeblock.date) {\n return {\n id: timeblock.id || null,\n start: timeblock.start,\n end: timeblock.end,\n is_finished: timeblock.is_finished || 0\n };\n }\n\n // Convert from internal format to BE format\n const dateStr = moment__WEBPACK_IMPORTED_MODULE_5___default()(timeblock.date).format('YYYY-MM-DD');\n return {\n id: timeblock.id || null,\n start: `${dateStr} ${timeblock.starts_at_time}:00`,\n end: `${dateStr} ${timeblock.ends_at_time}:00`,\n is_finished: timeblock.is_finished || 0\n };\n });\n const payload = {\n ...this.subtask,\n timesheets,\n timeblocks\n };\n try {\n const {\n subtask\n } = await this.$axios.put_auth(`v1/subtasks/${this.subtask.id}`, payload);\n this.closeModal();\n this.$events.emit('on-subtask-edited', subtask);\n } catch (error) {\n this.$toast.error(error.message || error);\n if (true) console.log('[z-task-add-time-modal.vue] Error: ', error);\n }\n },\n closeModal() {\n this.visible = false;\n this.v$.$reset();\n }\n }\n});\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/task/z-task-add-time-modal.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D"); /***/ }), @@ -873,7 +873,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.push.js */ \"./node_modules/core-js/modules/es.array.push.js\");\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _vuepic_vue_datepicker__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @vuepic/vue-datepicker */ \"./node_modules/@vuepic/vue-datepicker/dist/vue-datepicker.js\");\n/* harmony import */ var _plugins_tm_components_z_files_upload_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/plugins/tm@_components/z-files-upload.vue */ \"./src/plugins/tm@_components/z-files-upload.vue\");\n/* harmony import */ var _plugins_tm_modal_task_components_components_a_task_timeblocks_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/plugins/tm@modal/task/_components/_components/a-task-timeblocks.vue */ \"./src/plugins/tm@modal/task/_components/_components/a-task-timeblocks.vue\");\n/* harmony import */ var _vuelidate_core__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @vuelidate/core */ \"./node_modules/@vuelidate/core/dist/index.esm.js\");\n/* harmony import */ var _vuelidate_validators__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! @vuelidate/validators */ \"./node_modules/@vuelidate/validators/dist/index.esm.js\");\n/* harmony import */ var _plugins_lib_auth_utils_error_utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/plugins/lib@auth/_utils/error.utils */ \"./src/plugins/lib@auth/_utils/error.utils.ts\");\n/* harmony import */ var _vueup_vue_quill__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @vueup/vue-quill */ \"./node_modules/@vueup/vue-quill/dist/vue-quill.esm-bundler.js\");\n/* harmony import */ var _plugins_tm_modal_mixins_vuetify_fix_focus__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @/plugins/tm@modal/_mixins/vuetify-fix-focus */ \"./src/plugins/tm@modal/_mixins/vuetify-fix-focus.ts\");\n/* harmony import */ var _master_task_mixins_selects_mixin__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../master-task/_mixins/selects.mixin */ \"./src/plugins/tm@modal/master-task/_mixins/selects.mixin.ts\");\n/* harmony import */ var file_saver__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! file-saver */ \"./node_modules/file-saver/dist/FileSaver.min.js\");\n/* harmony import */ var file_saver__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(file_saver__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _plugins_tm_utils_tm_utils__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @/plugins/tm@_utils/tm.utils */ \"./src/plugins/tm@_utils/tm.utils.ts\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! moment */ \"./node_modules/moment/moment.js\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var _vueup_vue_quill_dist_vue_quill_snow_css__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @vueup/vue-quill/dist/vue-quill.snow.css */ \"./node_modules/@vueup/vue-quill/dist/vue-quill.snow.css\");\n/* harmony import */ var _vueup_vue_quill_dist_vue_quill_snow_css__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(_vueup_vue_quill_dist_vue_quill_snow_css__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var _plugins_tm_mixins_autocomplete_mixin__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @/plugins/tm@_mixins/autocomplete.mixin */ \"./src/plugins/tm@_mixins/autocomplete.mixin.ts\");\n/* harmony import */ var _components_z_task_readonly_info_vue__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./_components/z-task-readonly-info.vue */ \"./src/plugins/tm@modal/task/_components/z-task-readonly-info.vue\");\n/* harmony import */ var _components_a_timeblock_vue__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./_components/a-timeblock.vue */ \"./src/plugins/tm@modal/task/_components/a-timeblock.vue\");\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm-bundler.js\");\n/* harmony import */ var _plugins_tm_modal_mixins_modal_mixin__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @/plugins/tm@modal/_mixins/modal.mixin */ \"./src/plugins/tm@modal/_mixins/modal.mixin.ts\");\n/* provided dependency */ var console = __webpack_require__(/*! ./node_modules/console-browserify/index.js */ \"./node_modules/console-browserify/index.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n emits: ['close', 'refresh'],\n mixins: [_plugins_tm_modal_mixins_vuetify_fix_focus__WEBPACK_IMPORTED_MODULE_7__[\"default\"], _master_task_mixins_selects_mixin__WEBPACK_IMPORTED_MODULE_8__[\"default\"], _plugins_tm_mixins_autocomplete_mixin__WEBPACK_IMPORTED_MODULE_13__[\"default\"], _plugins_tm_modal_mixins_modal_mixin__WEBPACK_IMPORTED_MODULE_16__[\"default\"]],\n components: {\n ZTaskReadonlyInfo: _components_z_task_readonly_info_vue__WEBPACK_IMPORTED_MODULE_14__[\"default\"],\n ATimeblock: _components_a_timeblock_vue__WEBPACK_IMPORTED_MODULE_15__[\"default\"],\n ZFilesUpload: _plugins_tm_components_z_files_upload_vue__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n Datepicker: _vuepic_vue_datepicker__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n // ATaskTimeblocks,\n QuillEditor: _vueup_vue_quill__WEBPACK_IMPORTED_MODULE_6__.QuillEditor\n },\n data() {\n return {\n tmUtils: _plugins_tm_utils_tm_utils__WEBPACK_IMPORTED_MODULE_10__[\"default\"],\n editMode: false,\n visible: false,\n subtask: null,\n isSaving: false,\n errorUtils: _plugins_lib_auth_utils_error_utils__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n v$: (0,_vuelidate_core__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(),\n employeeValidations: [],\n showDatePicker: false,\n selectedNewDate: [],\n timeblocks: [{\n date: null,\n starts_at_time: null,\n ends_at_time: null\n }],\n wasFormValidationTriggered: false\n };\n },\n computed: {\n ...(0,vuex__WEBPACK_IMPORTED_MODULE_17__.mapGetters)('tm', ['mastertasks', 'enrichedEmployees'])\n },\n validations() {\n return {\n subtask: {\n master_task_id: {\n required: _vuelidate_validators__WEBPACK_IMPORTED_MODULE_18__.required\n },\n deadline: {\n required: _vuelidate_validators__WEBPACK_IMPORTED_MODULE_18__.required\n },\n _deadline_time: {\n required: _vuelidate_validators__WEBPACK_IMPORTED_MODULE_18__.required\n }\n }\n };\n },\n mounted() {\n this.$events.on('add-timeblock', timeblock => {\n if (!this.subtask?.timeblocks) {\n this.subtask.timeblocks = [];\n }\n if (!this.subtask?.timesheets) {\n this.subtask.timesheets = [];\n }\n if (!this.subtask?.is_finished) {\n this.subtask.is_finished = 0;\n }\n this.subtask.timeblocks.push(timeblock);\n });\n this.$events.on('on-subtask-edited', subtask => {\n if (subtask?.id !== this.subtask?.id) return;\n const data = JSON.parse(JSON.stringify(subtask));\n const splittedDeadline = data.deadline?.split(' ') || [];\n data.deadline = splittedDeadline[0];\n data._deadline_time = splittedDeadline[1];\n this.subtask = this._enrichTask(data);\n\n // TODO: Remove? riesil som neodstranovanie jedineho zanamu v trvani a odpracovanom case\n console.log('2', this.subtask);\n this.$forceUpdate();\n });\n this.$events.on('on-subtask-deleted', subtask => {\n if (subtask?.id == this.subtask?.id) this.closeModal();\n });\n },\n methods: {\n toggleEditMode() {\n if (this.subtask.type == 'office365') return this.$events.emit('show-unable-to-edit-office-task-modal', {\n mode: 'edit'\n });\n this.editMode = !this.editMode;\n },\n openDatepicker(ref) {\n this.$refs[ref].openMenu();\n },\n updateTimeblock(val, index) {\n this.timeblocks[index] = val;\n },\n removeTimeblock(index) {\n this.timeblocks.splice(index, 1);\n },\n async showModal({\n subtask,\n editMode = false,\n mastertask = {}\n }) {\n this.isSaving = false;\n this.subtask = null;\n this.visible = true;\n this.timeblocks = [{\n date: null,\n starts_at_time: null,\n ends_at_time: null\n }];\n this.$nextTick(() => {\n this.v$.$reset();\n this.setFocusEvent();\n });\n try {\n if (subtask?.id) {\n const data = await this.$axios.get_auth_data(`v1/subtasks/${subtask.id}`);\n if (!data.deadline) {\n this.editMode = editMode || !data.id;\n return this.subtask = this._enrichTask(data);\n }\n const splittedDeadline = data.deadline.split(' ');\n data.deadline = splittedDeadline[0];\n data._deadline_time = splittedDeadline[1];\n this.subtask = this._enrichTask(data);\n } else {\n const savedSubtask = localStorage.getItem('subtaskData');\n try {\n if (savedSubtask) {\n const parsedSubtask = JSON.parse(savedSubtask);\n this.subtask = parsedSubtask;\n // If the parsed result is not an object, reset to default\n if (typeof this.subtask !== 'object' || this.subtask === null) {\n throw new Error('Parsed subtask is not an object');\n }\n this.$nextTick(() => {\n this.$refs['description']?.setHTML(this.subtask.description || '');\n });\n } else {\n throw new Error('subtaskData is null or undefined');\n }\n } catch (error) {\n console.error('Error parsing subtaskData:', error);\n this.subtask = {\n master_task: mastertask,\n employees: [{}],\n _deadline_time: '17:00'\n };\n }\n if (subtask?.deadline && subtask._deadline_time && subtask.employee_id) {\n const employee = this.enrichedEmployees.find(employee => employee.id == subtask.employee_id);\n this.subtask.employees = [employee];\n this.subtask.deadline = subtask.deadline;\n this.subtask._deadline_time = subtask._deadline_time;\n }\n if (subtask?.master_task_id && subtask?.project_code) {\n this.subtask.master_task_id = subtask.master_task_id;\n this.subtask.project_code = subtask.project_code;\n }\n }\n this.editMode = editMode || !this.subtask.id;\n } catch (error) {\n this.$toast.error(this.$parseError(error));\n if (true) console.log('[z-task-modal.vue] Error: ', error);\n }\n },\n deleteTimeblock(i) {\n this.subtask.timeblocks.splice(i, 1);\n },\n closeModal() {\n this.visible = false;\n this.$router.replace({\n name: this.$route.name\n });\n },\n async validateAllFields() {\n const employeesValid = await this._validateEmployees();\n const timeblocksValid = this.subtask?.id ? true : await this._validateTimeblocks();\n if (!(await this.v$.$validate())) return;\n if (!employeesValid || !timeblocksValid) return;\n return true;\n },\n async handleOnRemoveEmployee() {\n if (this.wasFormValidationTriggered) {\n setTimeout(async () => {\n this.validateAllFields();\n }, 100);\n }\n },\n async save() {\n this.wasFormValidationTriggered = true;\n if (!(await this.validateAllFields())) return;\n this.subtask.description = this.$refs['description'].getHTML();\n this._mergeDeadlineTimeDate();\n try {\n this.isSaving = true;\n this.subtask.deadline = moment__WEBPACK_IMPORTED_MODULE_11___default()(this.subtask.deadline).format('YYYY-MM-DD HH:mm:SS');\n if (this.subtask?.id) {\n const timesheets = this.subtask.timesheets.map(timesheet => {\n delete timesheet.employee_name;\n return timesheet;\n });\n const {\n subtask\n } = await this.$axios.patch_auth_form(`v1/subtasks/${this.subtask.id}`, {\n ...this.subtask,\n timesheets\n });\n localStorage.removeItem('subtaskData');\n this.$store.commit('tm/update_subtask', subtask);\n this.$events.emit('on-subtask-edited', this.subtask);\n } else {\n // Filter out employees that don't have both id and duration\n const validEmployees = this.subtask.employees.filter(employee => employee.id && employee.duration);\n validEmployees.forEach(employee => {\n employee.timeblocks = this.timeblocks.filter(timeblock => timeblock.date).map(timeblock => {\n return {\n start: `${moment__WEBPACK_IMPORTED_MODULE_11___default()(timeblock.date).format('YYYY-MM-DD')} ${timeblock.starts_at_time}:00`,\n end: `${moment__WEBPACK_IMPORTED_MODULE_11___default()(timeblock.date).format('YYYY-MM-DD')} ${timeblock.ends_at_time}:00`,\n id: null\n };\n });\n });\n const subtaskCopy = {\n ...this.subtask,\n employees: validEmployees\n };\n delete subtaskCopy._master_task;\n const {\n subtasks\n } = await this.$axios.post_auth(`v1/mastertasks/${this.subtask.master_task_id}/subtasks`, subtaskCopy);\n localStorage.removeItem('subtaskData');\n this.subtask.id = subtasks[0].id;\n subtasks.forEach(subtask => {\n this.$store.commit('tm/update_subtask', subtask);\n this.$events.emit('on-subtask-edited', this.subtask);\n });\n this.$events.emit('task-created');\n this.$events.emit('close-both-modals');\n }\n this.closeModal();\n } catch (error) {\n this.$toast.error(this.$parseError(error));\n if (true) console.log('[z-task-modal.vue] Error: ', error);\n } finally {\n this.isSaving = false;\n }\n },\n openDeleteTaskModal(subtask) {\n if (subtask.type == 'office365') return this.$events.emit('show-unable-to-edit-office-task-modal', {\n mode: 'delete'\n });\n this.$events.emit('show-delete-task-modal', {\n subtask\n });\n },\n showCompleteTaskModal() {\n this.$events.emit('show-complete-task-modal', {\n subtask: this.subtask\n });\n if (this.subtask.deadline) this.subtask.deadline = _plugins_tm_utils_tm_utils__WEBPACK_IMPORTED_MODULE_10__[\"default\"].formatDateTimeForBackend(this.subtask.deadline);\n },\n filesUploaded(files) {\n this.subtask.files = files;\n },\n updateSubtask(subtask) {\n this.subtask = subtask;\n },\n _mergeDeadlineTimeDate() {\n const date = new Date(this.subtask.deadline);\n console.log('z-task-modal', this.subtask);\n const timeParts = this.subtask._deadline_time.split(':');\n date.setHours(parseInt(timeParts[0]));\n date.setMinutes(parseInt(timeParts[1]));\n this.subtask.deadline = date;\n },\n _validateEmployees() {\n return new Promise(resolve => {\n this.employeeValidations = [];\n if (this.subtask.id) {\n // For existing subtasks, require both employee and duration\n if (!this.subtask.employee_id || !this.subtask.duration) {\n this.employeeValidations[0] = {\n employee: !this.subtask.employee_id,\n duration: !this.subtask.duration\n };\n }\n } else {\n // For new subtasks, require at least one employee with duration\n let hasValidEmployee = false;\n this.subtask.employees.forEach((employee, index) => {\n // Skip validation if both id and duration are empty\n if (!employee.id && !employee.duration) {\n // If this is the first employee and no valid employee exists yet, show validation\n if (index === 0 && !hasValidEmployee) {\n this.employeeValidations[index] = {\n employee: true,\n duration: true\n };\n }\n return;\n }\n\n // Validate if either id or duration is filled\n if (employee.id || employee.duration) {\n this.employeeValidations[index] = {\n employee: !employee.id,\n duration: !employee.duration\n };\n\n // If both id and duration are present, mark as valid\n if (employee.id && employee.duration) {\n hasValidEmployee = true;\n }\n }\n });\n }\n const isError = this.employeeValidations.some(employee => employee.duration || employee.employee);\n resolve(!isError);\n });\n },\n async _validateTimeblocks() {\n let invalid = false;\n for (let i = 0; i < this.timeblocks.length; i++) {\n const ref = this.$refs[`timetable-${i}`];\n invalid = (await ref[0].v$.$validate()) || invalid;\n }\n return invalid;\n },\n _enrichTask(subtask) {\n return {\n ...subtask,\n _created_by: this.enrichedEmployees.find(employee => employee.id == subtask.created_by),\n _employee: this.enrichedEmployees.find(employee => employee.id == subtask.employee_id),\n _master_task: this.mastertasks.find(mastertask => mastertask.id == subtask.master_task_id)\n };\n }\n },\n watch: {\n 'subtask.employee_id'(value, oldValue) {\n if (!value || !oldValue) return;\n this.subtask.timeblocks = [];\n this.subtask._employee = this.enrichedEmployees.find(employee => employee.id == this.subtask.employee_id);\n },\n 'subtask.employees': {\n handler() {\n if (!this.subtask?.employees) return;\n const lastEmployee = this.subtask.employees[this.subtask.employees.length - 1];\n if (lastEmployee?.id || lastEmployee?.duration) this.subtask.employees.push({});\n },\n deep: true\n },\n 'subtask.master_task_id'(value) {\n if (!value) return;\n this.subtask._master_task = this.mastertasks.find(mastertask => mastertask.id == this.subtask.master_task_id);\n this.subtask.project_code = this.subtask._master_task?.project_code || null;\n },\n editMode() {\n this.$nextTick(() => {\n this.$refs['description']?.setHTML(this.subtask.description || '');\n });\n },\n subtask: {\n handler(val) {\n if (this.editMode && !this.subtask?.id) {\n const employees = val?.employees?.filter(employee => employee?.id || employee?.duration) || [{}];\n const subtaskData = {\n ...val,\n employees: employees && employees.length > 0 ? employees : [{}]\n };\n console.log('subtaskData', subtaskData);\n localStorage.setItem('subtaskData', JSON.stringify(subtaskData));\n }\n },\n deep: true\n }\n }\n});\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/task/z-task-modal.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.push.js */ \"./node_modules/core-js/modules/es.array.push.js\");\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _vuepic_vue_datepicker__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @vuepic/vue-datepicker */ \"./node_modules/@vuepic/vue-datepicker/dist/vue-datepicker.js\");\n/* harmony import */ var _plugins_tm_components_z_files_upload_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/plugins/tm@_components/z-files-upload.vue */ \"./src/plugins/tm@_components/z-files-upload.vue\");\n/* harmony import */ var _vuelidate_core__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @vuelidate/core */ \"./node_modules/@vuelidate/core/dist/index.esm.js\");\n/* harmony import */ var _vuelidate_validators__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! @vuelidate/validators */ \"./node_modules/@vuelidate/validators/dist/index.esm.js\");\n/* harmony import */ var _plugins_lib_auth_utils_error_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/plugins/lib@auth/_utils/error.utils */ \"./src/plugins/lib@auth/_utils/error.utils.ts\");\n/* harmony import */ var _vueup_vue_quill__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @vueup/vue-quill */ \"./node_modules/@vueup/vue-quill/dist/vue-quill.esm-bundler.js\");\n/* harmony import */ var _plugins_tm_modal_mixins_vuetify_fix_focus__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/plugins/tm@modal/_mixins/vuetify-fix-focus */ \"./src/plugins/tm@modal/_mixins/vuetify-fix-focus.ts\");\n/* harmony import */ var _master_task_mixins_selects_mixin__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../master-task/_mixins/selects.mixin */ \"./src/plugins/tm@modal/master-task/_mixins/selects.mixin.ts\");\n/* harmony import */ var file_saver__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! file-saver */ \"./node_modules/file-saver/dist/FileSaver.min.js\");\n/* harmony import */ var file_saver__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(file_saver__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _plugins_tm_utils_tm_utils__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @/plugins/tm@_utils/tm.utils */ \"./src/plugins/tm@_utils/tm.utils.ts\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! moment */ \"./node_modules/moment/moment.js\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var _vueup_vue_quill_dist_vue_quill_snow_css__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @vueup/vue-quill/dist/vue-quill.snow.css */ \"./node_modules/@vueup/vue-quill/dist/vue-quill.snow.css\");\n/* harmony import */ var _vueup_vue_quill_dist_vue_quill_snow_css__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(_vueup_vue_quill_dist_vue_quill_snow_css__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var _plugins_tm_mixins_autocomplete_mixin__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @/plugins/tm@_mixins/autocomplete.mixin */ \"./src/plugins/tm@_mixins/autocomplete.mixin.ts\");\n/* harmony import */ var _components_z_task_readonly_info_vue__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./_components/z-task-readonly-info.vue */ \"./src/plugins/tm@modal/task/_components/z-task-readonly-info.vue\");\n/* harmony import */ var _components_a_timeblock_vue__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./_components/a-timeblock.vue */ \"./src/plugins/tm@modal/task/_components/a-timeblock.vue\");\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm-bundler.js\");\n/* harmony import */ var _plugins_tm_modal_mixins_modal_mixin__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @/plugins/tm@modal/_mixins/modal.mixin */ \"./src/plugins/tm@modal/_mixins/modal.mixin.ts\");\n/* provided dependency */ var console = __webpack_require__(/*! ./node_modules/console-browserify/index.js */ \"./node_modules/console-browserify/index.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n emits: ['close', 'refresh'],\n mixins: [_plugins_tm_modal_mixins_vuetify_fix_focus__WEBPACK_IMPORTED_MODULE_6__[\"default\"], _master_task_mixins_selects_mixin__WEBPACK_IMPORTED_MODULE_7__[\"default\"], _plugins_tm_mixins_autocomplete_mixin__WEBPACK_IMPORTED_MODULE_12__[\"default\"], _plugins_tm_modal_mixins_modal_mixin__WEBPACK_IMPORTED_MODULE_15__[\"default\"]],\n components: {\n ZTaskReadonlyInfo: _components_z_task_readonly_info_vue__WEBPACK_IMPORTED_MODULE_13__[\"default\"],\n ATimeblock: _components_a_timeblock_vue__WEBPACK_IMPORTED_MODULE_14__[\"default\"],\n ZFilesUpload: _plugins_tm_components_z_files_upload_vue__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n Datepicker: _vuepic_vue_datepicker__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n // ATaskTimeblocks,\n QuillEditor: _vueup_vue_quill__WEBPACK_IMPORTED_MODULE_5__.QuillEditor\n },\n data() {\n return {\n tmUtils: _plugins_tm_utils_tm_utils__WEBPACK_IMPORTED_MODULE_9__[\"default\"],\n editMode: false,\n visible: false,\n subtask: null,\n isSaving: false,\n errorUtils: _plugins_lib_auth_utils_error_utils__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n v$: (0,_vuelidate_core__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(),\n employeeValidations: [],\n showDatePicker: false,\n selectedNewDate: [],\n timeblocks: [{\n date: null,\n starts_at_time: null,\n ends_at_time: null\n }],\n wasFormValidationTriggered: false\n };\n },\n computed: {\n ...(0,vuex__WEBPACK_IMPORTED_MODULE_16__.mapGetters)('tm', ['mastertasks', 'enrichedEmployees']),\n enrichedMastertasks() {\n return this.mastertasks.map(mastertask => ({\n ...mastertask,\n _fullName: `${mastertask.name} [${mastertask.project_code}]`\n }));\n },\n // Unified timeblocks for both create and update modes\n editableTimeblocks: {\n get() {\n if (this.subtask?.id) {\n // Update mode: use subtask.timeblocks (from BE)\n return this.subtask.timeblocks || [];\n }\n // Create mode: use this.timeblocks (local state)\n return this.timeblocks;\n },\n set(value) {\n if (this.subtask?.id) {\n // Update mode: update subtask.timeblocks (Vue 3 reactivity)\n this.subtask.timeblocks = value;\n } else {\n // Create mode: update this.timeblocks\n this.timeblocks = value;\n }\n }\n }\n },\n validations() {\n return {\n subtask: {\n master_task_id: {\n required: _vuelidate_validators__WEBPACK_IMPORTED_MODULE_17__.required\n },\n deadline: {\n required: _vuelidate_validators__WEBPACK_IMPORTED_MODULE_17__.required\n },\n _deadline_time: {\n required: _vuelidate_validators__WEBPACK_IMPORTED_MODULE_17__.required\n }\n }\n };\n },\n mounted() {\n this.$events.on('add-timeblock', timeblock => {\n if (!this.subtask?.timeblocks) {\n this.subtask.timeblocks = [];\n }\n if (!this.subtask?.timesheets) {\n this.subtask.timesheets = [];\n }\n if (!this.subtask?.is_finished) {\n this.subtask.is_finished = 0;\n }\n this.subtask.timeblocks.push(timeblock);\n });\n this.$events.on('on-subtask-edited', subtask => {\n if (subtask?.id !== this.subtask?.id) return;\n const data = JSON.parse(JSON.stringify(subtask));\n const splittedDeadline = data.deadline?.split(' ') || [];\n data.deadline = splittedDeadline[0];\n data._deadline_time = splittedDeadline[1];\n\n // Convert BE format timeblocks to internal format\n const convertedTimeblocks = [];\n if (data.timeblocks && data.timeblocks.length > 0) {\n data.timeblocks.forEach(timeblock => {\n // If already in internal format, keep as is\n if (timeblock.date) {\n convertedTimeblocks.push(timeblock);\n return;\n }\n\n // Convert from BE format to internal format\n if (timeblock.start && timeblock.end) {\n const startMoment = moment__WEBPACK_IMPORTED_MODULE_10___default()(timeblock.start, 'YYYY-MM-DD HH:mm:ss');\n const endMoment = moment__WEBPACK_IMPORTED_MODULE_10___default()(timeblock.end, 'YYYY-MM-DD HH:mm:ss');\n convertedTimeblocks.push({\n id: timeblock.id || null,\n date: startMoment.toDate(),\n starts_at_time: startMoment.format('HH:mm'),\n ends_at_time: endMoment.format('HH:mm'),\n is_finished: timeblock.is_finished || 0\n });\n }\n });\n }\n data.timeblocks = convertedTimeblocks;\n this.subtask = this._enrichTask(data);\n\n // TODO: Remove? riesil som neodstranovanie jedineho zanamu v trvani a odpracovanom case\n this.$forceUpdate();\n });\n this.$events.on('on-subtask-deleted', subtask => {\n if (subtask?.id == this.subtask?.id) this.closeModal();\n });\n },\n methods: {\n toggleEditMode() {\n if (this.subtask.type == 'office365') return this.$events.emit('show-unable-to-edit-office-task-modal', {\n mode: 'edit'\n });\n this.editMode = !this.editMode;\n },\n openDatepicker(ref) {\n this.$refs[ref].openMenu();\n },\n updateTimeblock(val, index) {\n if (this.subtask?.id) {\n // Update mode: direct assignment (Vue 3 reactivity)\n this.subtask.timeblocks[index] = val;\n } else {\n // Create mode: direct assignment\n this.timeblocks[index] = val;\n }\n },\n addTimeblock() {\n const newTimeblock = {\n date: null,\n starts_at_time: null,\n ends_at_time: null\n };\n if (this.subtask?.id) {\n // Update mode\n if (!this.subtask.timeblocks) {\n this.subtask.timeblocks = [];\n }\n this.subtask.timeblocks.push(newTimeblock);\n } else {\n // Create mode\n this.timeblocks.push(newTimeblock);\n }\n },\n removeTimeblock(index) {\n if (this.subtask?.id) {\n // Update mode\n this.subtask.timeblocks.splice(index, 1);\n } else {\n // Create mode\n this.timeblocks.splice(index, 1);\n }\n },\n async showModal({\n subtask,\n editMode = false,\n mastertask = {}\n }) {\n this.isSaving = false;\n this.subtask = null;\n this.visible = true;\n this.timeblocks = [{\n date: null,\n starts_at_time: null,\n ends_at_time: null\n }];\n this.$nextTick(() => {\n this.v$.$reset();\n this.setFocusEvent();\n });\n try {\n if (subtask?.id) {\n const data = await this.$axios.get_auth_data(`v1/subtasks/${subtask.id}`);\n\n // Convert BE format timeblocks to internal format\n const convertedTimeblocks = [];\n if (data.timeblocks && data.timeblocks.length > 0) {\n data.timeblocks.forEach(timeblock => {\n // If already in internal format, keep as is\n if (timeblock.date) {\n convertedTimeblocks.push(timeblock);\n return;\n }\n\n // Convert from BE format to internal format\n if (timeblock.start && timeblock.end) {\n const startMoment = moment__WEBPACK_IMPORTED_MODULE_10___default()(timeblock.start, 'YYYY-MM-DD HH:mm:ss');\n const endMoment = moment__WEBPACK_IMPORTED_MODULE_10___default()(timeblock.end, 'YYYY-MM-DD HH:mm:ss');\n convertedTimeblocks.push({\n id: timeblock.id || null,\n date: startMoment.toDate(),\n starts_at_time: startMoment.format('HH:mm'),\n ends_at_time: endMoment.format('HH:mm'),\n is_finished: timeblock.is_finished || 0\n });\n }\n });\n }\n data.timeblocks = convertedTimeblocks;\n if (!data.deadline) {\n this.editMode = editMode || !data.id;\n return this.subtask = this._enrichTask(data);\n }\n const splittedDeadline = data.deadline.split(' ');\n data.deadline = splittedDeadline[0];\n data._deadline_time = splittedDeadline[1];\n this.subtask = this._enrichTask(data);\n } else {\n const savedSubtask = localStorage.getItem('subtaskData');\n try {\n if (savedSubtask) {\n const parsedSubtask = JSON.parse(savedSubtask);\n this.subtask = parsedSubtask;\n // If the parsed result is not an object, reset to default\n if (typeof this.subtask !== 'object' || this.subtask === null) {\n throw new Error('Parsed subtask is not an object');\n }\n this.$nextTick(() => {\n this.$refs['description']?.setHTML(this.subtask.description || '');\n });\n } else {\n throw new Error('subtaskData is null or undefined');\n }\n } catch (error) {\n console.error('Error parsing subtaskData:', error);\n this.subtask = {\n master_task: mastertask,\n employees: [{}],\n _deadline_time: '17:00'\n };\n }\n if (subtask?.deadline && subtask._deadline_time && subtask.employee_id) {\n const employee = this.enrichedEmployees.find(employee => employee.id == subtask.employee_id);\n this.subtask.employees = [employee];\n this.subtask.deadline = subtask.deadline;\n this.subtask._deadline_time = subtask._deadline_time;\n }\n if (subtask?.master_task_id && subtask?.project_code) {\n this.subtask.master_task_id = subtask.master_task_id;\n this.subtask.project_code = subtask.project_code;\n }\n }\n this.editMode = editMode || !this.subtask.id;\n } catch (error) {\n this.$toast.error(this.$parseError(error));\n if (true) console.log('[z-task-modal.vue] Error: ', error);\n }\n },\n deleteTimeblock(i) {\n this.subtask.timeblocks.splice(i, 1);\n },\n closeModal() {\n this.visible = false;\n this.$router.replace({\n name: this.$route.name\n });\n },\n async validateAllFields() {\n const employeesValid = await this._validateEmployees();\n const timeblocksValid = await this._validateTimeblocks();\n if (!(await this.v$.$validate())) return;\n if (!employeesValid || !timeblocksValid) return;\n return true;\n },\n async handleOnRemoveEmployee() {\n if (this.wasFormValidationTriggered) {\n setTimeout(async () => {\n this.validateAllFields();\n }, 100);\n }\n },\n async save() {\n this.wasFormValidationTriggered = true;\n if (!(await this.validateAllFields())) return;\n this.subtask.description = this.$refs['description'].getHTML();\n this._mergeDeadlineTimeDate();\n try {\n this.isSaving = true;\n this.subtask.deadline = moment__WEBPACK_IMPORTED_MODULE_10___default()(this.subtask.deadline).format('YYYY-MM-DD HH:mm:SS');\n if (this.subtask?.id) {\n const timesheets = this.subtask.timesheets.map(timesheet => {\n delete timesheet.employee_name;\n return timesheet;\n });\n\n // Convert timeblocks from internal format to BE format for update\n const timeblocks = (this.subtask.timeblocks || []).filter(timeblock => timeblock.date) // Only send timeblocks with dates\n .map(timeblock => {\n const dateStr = moment__WEBPACK_IMPORTED_MODULE_10___default()(timeblock.date).format('YYYY-MM-DD');\n return {\n id: timeblock.id || null,\n start: `${dateStr} ${timeblock.starts_at_time}:00`,\n end: `${dateStr} ${timeblock.ends_at_time}:00`,\n is_finished: timeblock.is_finished || 0\n };\n });\n const {\n subtask\n } = await this.$axios.patch_auth_form(`v1/subtasks/${this.subtask.id}`, {\n ...this.subtask,\n timesheets,\n timeblocks\n });\n localStorage.removeItem('subtaskData');\n this.$store.commit('tm/update_subtask', subtask);\n this.$events.emit('on-subtask-edited', this.subtask);\n } else {\n // Filter out employees that don't have both id and duration\n const validEmployees = this.subtask.employees.filter(employee => employee.id && employee.duration);\n validEmployees.forEach(employee => {\n employee.timeblocks = this.timeblocks.filter(timeblock => timeblock.date).map(timeblock => {\n return {\n start: `${moment__WEBPACK_IMPORTED_MODULE_10___default()(timeblock.date).format('YYYY-MM-DD')} ${timeblock.starts_at_time}:00`,\n end: `${moment__WEBPACK_IMPORTED_MODULE_10___default()(timeblock.date).format('YYYY-MM-DD')} ${timeblock.ends_at_time}:00`,\n id: null\n };\n });\n });\n const subtaskCopy = {\n ...this.subtask,\n employees: validEmployees\n };\n delete subtaskCopy._master_task;\n const {\n subtasks\n } = await this.$axios.post_auth(`v1/mastertasks/${this.subtask.master_task_id}/subtasks`, subtaskCopy);\n localStorage.removeItem('subtaskData');\n this.subtask.id = subtasks[0].id;\n subtasks.forEach(subtask => {\n this.$store.commit('tm/update_subtask', subtask);\n this.$events.emit('on-subtask-edited', this.subtask);\n });\n this.$events.emit('task-created');\n this.$events.emit('close-both-modals');\n }\n this.closeModal();\n } catch (error) {\n this.$toast.error(this.$parseError(error));\n if (true) console.log('[z-task-modal.vue] Error: ', error);\n } finally {\n this.isSaving = false;\n }\n },\n openDeleteTaskModal(subtask) {\n if (subtask.type == 'office365') return this.$events.emit('show-unable-to-edit-office-task-modal', {\n mode: 'delete'\n });\n this.$events.emit('show-delete-task-modal', {\n subtask\n });\n },\n showCompleteTaskModal() {\n this.$events.emit('show-complete-task-modal', {\n subtask: this.subtask\n });\n if (this.subtask.deadline) this.subtask.deadline = _plugins_tm_utils_tm_utils__WEBPACK_IMPORTED_MODULE_9__[\"default\"].formatDateTimeForBackend(this.subtask.deadline);\n },\n filesUploaded(files) {\n this.subtask.files = files;\n },\n updateSubtask(subtask) {\n this.subtask = subtask;\n },\n _mergeDeadlineTimeDate() {\n const date = new Date(this.subtask.deadline);\n console.log('z-task-modal', this.subtask);\n const timeParts = this.subtask._deadline_time.split(':');\n date.setHours(parseInt(timeParts[0]));\n date.setMinutes(parseInt(timeParts[1]));\n this.subtask.deadline = date;\n },\n _validateEmployees() {\n return new Promise(resolve => {\n this.employeeValidations = [];\n if (this.subtask.id) {\n // For existing subtasks, require both employee and duration\n if (!this.subtask.employee_id || !this.subtask.duration) {\n this.employeeValidations[0] = {\n employee: !this.subtask.employee_id,\n duration: !this.subtask.duration\n };\n }\n } else {\n // For new subtasks, require at least one employee with duration\n let hasValidEmployee = false;\n this.subtask.employees.forEach((employee, index) => {\n // Skip validation if both id and duration are empty\n if (!employee.id && !employee.duration) {\n // If this is the first employee and no valid employee exists yet, show validation\n if (index === 0 && !hasValidEmployee) {\n this.employeeValidations[index] = {\n employee: true,\n duration: true\n };\n }\n return;\n }\n\n // Validate if either id or duration is filled\n if (employee.id || employee.duration) {\n this.employeeValidations[index] = {\n employee: !employee.id,\n duration: !employee.duration\n };\n\n // If both id and duration are present, mark as valid\n if (employee.id && employee.duration) {\n hasValidEmployee = true;\n }\n }\n });\n }\n const isError = this.employeeValidations.some(employee => employee.duration || employee.employee);\n resolve(!isError);\n });\n },\n async _validateTimeblocks() {\n let valid = true;\n const timeblocks = this.editableTimeblocks;\n for (let i = 0; i < timeblocks.length; i++) {\n const ref = this.$refs[`timetable-${i}`];\n if (ref && ref[0]) {\n const isValid = await ref[0].v$.$validate();\n if (!isValid) {\n valid = false;\n }\n }\n }\n return valid;\n },\n _enrichTask(subtask) {\n return {\n ...subtask,\n _created_by: this.enrichedEmployees.find(employee => employee.id == subtask.created_by),\n _employee: this.enrichedEmployees.find(employee => employee.id == subtask.employee_id),\n _master_task: this.mastertasks.find(mastertask => mastertask.id == subtask.master_task_id)\n };\n }\n },\n watch: {\n 'subtask.employee_id'(value, oldValue) {\n if (!value || !oldValue) return;\n this.subtask.timeblocks = [];\n this.subtask._employee = this.enrichedEmployees.find(employee => employee.id == this.subtask.employee_id);\n },\n 'subtask.employees': {\n handler() {\n if (!this.subtask?.employees) return;\n const lastEmployee = this.subtask.employees[this.subtask.employees.length - 1];\n if (lastEmployee?.id || lastEmployee?.duration) this.subtask.employees.push({});\n },\n deep: true\n },\n 'subtask.master_task_id'(value) {\n if (!value) return;\n this.subtask._master_task = this.mastertasks.find(mastertask => mastertask.id == this.subtask.master_task_id);\n this.subtask.project_code = this.subtask._master_task?.project_code || null;\n },\n editMode() {\n this.$nextTick(() => {\n this.$refs['description']?.setHTML(this.subtask.description || '');\n });\n },\n subtask: {\n handler(val) {\n if (this.editMode && !this.subtask?.id) {\n const employees = val?.employees?.filter(employee => employee?.id || employee?.duration) || [{}];\n const subtaskData = {\n ...val,\n employees: employees && employees.length > 0 ? employees : [{}]\n };\n console.log('subtaskData', subtaskData);\n localStorage.setItem('subtaskData', JSON.stringify(subtaskData));\n }\n },\n deep: true\n }\n }\n});\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/task/z-task-modal.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D"); /***/ }), @@ -884,7 +884,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _plugins_tm_modal_mixins_modal_mixin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/plugins/tm@modal/_mixins/modal.mixin */ \"./src/plugins/tm@modal/_mixins/modal.mixin.ts\");\n/* harmony import */ var _plugins_tm_utils_tm_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/plugins/tm@_utils/tm.utils */ \"./src/plugins/tm@_utils/tm.utils.ts\");\n/* provided dependency */ var console = __webpack_require__(/*! ./node_modules/console-browserify/index.js */ \"./node_modules/console-browserify/index.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n mixins: [_plugins_tm_modal_mixins_modal_mixin__WEBPACK_IMPORTED_MODULE_0__[\"default\"]],\n emits: ['close', 'on-subtask-edited'],\n props: {\n mode: {\n type: String,\n default: 'edit' // edit or delete\n }\n },\n\n data() {\n return {\n tmUtils: _plugins_tm_utils_tm_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n visible: false,\n subtask: null,\n loadingTimeblocks: {},\n loadingCloseAll: false\n };\n },\n methods: {\n async showModal({\n subtask\n }) {\n this.subtask = subtask;\n this.visible = true;\n },\n async complete() {\n console.log('complete');\n },\n closeModal() {\n this.visible = false;\n },\n async handleFinishTimeblock(timeblock) {\n const subtask = JSON.parse(JSON.stringify(this.subtask));\n try {\n this.loadingTimeblocks[timeblock.id] = true;\n await this.$axios.put_auth(`v1/timeblocks/${timeblock.id}`, {\n ...timeblock,\n is_finished: 1\n });\n timeblock.is_finished = 1;\n const areAllTimeblocksFinished = subtask.timeblocks.every(timeblock => timeblock.is_finished);\n if (areAllTimeblocksFinished) {\n await this._finishSubtask();\n this.$store.dispatch('tm/removeOngoingSubtask', this.subtask.id);\n }\n this.$events.emit('on-subtask-edited', subtask);\n this.closeModal();\n } catch (error) {\n this.$toast.error(error.message || error);\n if (true) console.log('[a-task-timeblocks.vue] Error: ', error);\n } finally {\n this.loadingTimeblocks[timeblock.id] = false;\n }\n },\n async handleFinishAllTimeblocks() {\n this.loadingCloseAll = true;\n try {\n const promises = this.subtask.timeblocks.map(timeblock => {\n return this.$axios.put_auth(`v1/timeblocks/${timeblock.id}`, {\n ...timeblock,\n is_finished: 1\n });\n });\n await Promise.all(promises);\n this.subtask.timeblocks = this.subtask.timeblocks.map(timeblock => {\n timeblock.is_finished = 1;\n return timeblock;\n });\n await this._finishSubtask();\n this.$store.dispatch('tm/removeOngoingSubtask', this.subtask.id);\n this.$events.emit('on-subtask-edited', this.subtask);\n this.closeModal();\n } catch (error) {\n this.$toast.error(error.message || error);\n } finally {\n this.loadingCloseAll = false;\n }\n },\n async _finishSubtask() {\n const tempSubtask = {\n ...this.subtask,\n is_finished: 1,\n timesheets: this.subtask.timesheets.map(timesheet => {\n delete timesheet.employee_name;\n return timesheet;\n })\n };\n return this.$axios.put_auth(`v1/subtasks/${tempSubtask.id}`, tempSubtask);\n }\n }\n});\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/task/z-unable-to-complete-task-modal.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _plugins_tm_modal_mixins_modal_mixin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/plugins/tm@modal/_mixins/modal.mixin */ \"./src/plugins/tm@modal/_mixins/modal.mixin.ts\");\n/* harmony import */ var _plugins_tm_utils_tm_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/plugins/tm@_utils/tm.utils */ \"./src/plugins/tm@_utils/tm.utils.ts\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! moment */ \"./node_modules/moment/moment.js\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_2__);\n/* provided dependency */ var console = __webpack_require__(/*! ./node_modules/console-browserify/index.js */ \"./node_modules/console-browserify/index.js\");\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n mixins: [_plugins_tm_modal_mixins_modal_mixin__WEBPACK_IMPORTED_MODULE_0__[\"default\"]],\n emits: ['close', 'on-subtask-edited'],\n props: {\n mode: {\n type: String,\n default: 'edit' // edit or delete\n }\n },\n\n data() {\n return {\n tmUtils: _plugins_tm_utils_tm_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n visible: false,\n subtask: null,\n loadingTimeblocks: {},\n loadingCloseAll: false\n };\n },\n methods: {\n async showModal({\n subtask\n }) {\n this.subtask = subtask;\n this.visible = true;\n },\n async complete() {\n console.log('complete');\n },\n closeModal() {\n this.visible = false;\n },\n async handleFinishTimeblock(timeblock) {\n const subtask = JSON.parse(JSON.stringify(this.subtask));\n try {\n this.loadingTimeblocks[timeblock.id] = true;\n await this.$axios.put_auth(`v1/timeblocks/${timeblock.id}`, {\n ...timeblock,\n is_finished: 1\n });\n timeblock.is_finished = 1;\n const areAllTimeblocksFinished = subtask.timeblocks.every(timeblock => timeblock.is_finished);\n if (areAllTimeblocksFinished) {\n await this._finishSubtask();\n this.$store.dispatch('tm/removeOngoingSubtask', this.subtask.id);\n }\n this.$events.emit('on-subtask-edited', subtask);\n this.closeModal();\n } catch (error) {\n this.$toast.error(error.message || error);\n if (true) console.log('[a-task-timeblocks.vue] Error: ', error);\n } finally {\n this.loadingTimeblocks[timeblock.id] = false;\n }\n },\n async handleFinishAllTimeblocks() {\n this.loadingCloseAll = true;\n try {\n const promises = this.subtask.timeblocks.map(timeblock => {\n return this.$axios.put_auth(`v1/timeblocks/${timeblock.id}`, {\n ...timeblock,\n is_finished: 1\n });\n });\n await Promise.all(promises);\n this.subtask.timeblocks = this.subtask.timeblocks.map(timeblock => {\n timeblock.is_finished = 1;\n return timeblock;\n });\n await this._finishSubtask();\n this.$store.dispatch('tm/removeOngoingSubtask', this.subtask.id);\n this.$events.emit('on-subtask-edited', this.subtask);\n this.closeModal();\n } catch (error) {\n this.$toast.error(error.message || error);\n } finally {\n this.loadingCloseAll = false;\n }\n },\n async _finishSubtask() {\n const timesheets = this.subtask.timesheets.map(timesheet => {\n delete timesheet.employee_name;\n return timesheet;\n });\n\n // Convert timeblocks from internal format to BE format\n const timeblocks = (this.subtask.timeblocks || []).filter(timeblock => {\n // Filter timeblocks that have either old format (date) or new format (start)\n return timeblock.date || timeblock.start;\n }).map(timeblock => {\n // If already in BE format (has start field), return as is\n if (timeblock.start && !timeblock.date) {\n return {\n id: timeblock.id || null,\n start: timeblock.start,\n end: timeblock.end,\n is_finished: timeblock.is_finished || 0\n };\n }\n\n // Convert from internal format to BE format\n const dateStr = moment__WEBPACK_IMPORTED_MODULE_2___default()(timeblock.date).format('YYYY-MM-DD');\n return {\n id: timeblock.id || null,\n start: `${dateStr} ${timeblock.starts_at_time}:00`,\n end: `${dateStr} ${timeblock.ends_at_time}:00`,\n is_finished: timeblock.is_finished || 0\n };\n });\n const tempSubtask = {\n ...this.subtask,\n is_finished: 1,\n timesheets,\n timeblocks\n };\n return this.$axios.put_auth(`v1/subtasks/${tempSubtask.id}`, tempSubtask);\n }\n }\n});\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/task/z-unable-to-complete-task-modal.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D"); /***/ }), @@ -1082,7 +1082,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nod /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".date-wrap[data-v-327591c6] {\\n display: flex;\\n flex-flow: row;\\n width: 100%;\\n gap: 20px;\\n}\\n.date-wrap .dp__main[data-v-327591c6] {\\n width: calc(50% - 10px) !important;\\n}\\n.employee-select-avatar[data-v-327591c6] {\\n background: #6200EE;\\n color: #fff;\\n border-radius: 50%;\\n font-size: 11.5px;\\n height: 22px;\\n width: 22px;\\n position: absolute;\\n top: 50%;\\n right: 12px;\\n transform: translate(0, -50%);\\n}\\n.remove-input[data-v-327591c6] {\\n position: absolute;\\n top: 50%;\\n right: 0px;\\n transform: translate(-15px, -50%);\\n color: rgb(102, 102, 102) !important;\\n z-index: 10;\\n cursor: pointer;\\n}\\n.scrolling[data-v-327591c6] {\\n overflow: hidden !important;\\n}\\n.border-bottom[data-v-327591c6] {\\n border-bottom: 1px solid rgba(0, 0, 0, 0.1);\\n}\\n.subtask-btn[data-v-327591c6] {\\n border: thin solid rgba(var(--v-border-color), var(--v-border-opacity)) !important;\\n color: #7f39fb !important;\\n height: 53px;\\n text-align: center;\\n}\\n[data-v-327591c6] .v-field__clearable {\\n opacity: 1 !important;\\n}\", \"\"]);\n// Exports\n/* harmony default export */ __webpack_exports__[\"default\"] = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/master-task/z-master-task-modal.vue?./node_modules/css-loader/dist/cjs.js??clonedRuleSet-27.use%5B1%5D!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-27.use%5B2%5D!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-27.use%5B3%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".date-wrap[data-v-327591c6] {\\n display: flex;\\n flex-flow: row;\\n width: 100%;\\n gap: 20px;\\n}\\n.date-wrap .dp__main[data-v-327591c6] {\\n width: calc(50% - 10px) !important;\\n}\\n.employee-select-avatar[data-v-327591c6] {\\n background: #6200EE;\\n color: #fff;\\n border-radius: 50%;\\n font-size: 11.5px;\\n height: 22px;\\n width: 22px;\\n position: absolute;\\n top: 50%;\\n right: 12px;\\n transform: translate(0, -50%);\\n}\\n.remove-input[data-v-327591c6] {\\n position: absolute;\\n top: 50%;\\n right: 0px;\\n transform: translate(-15px, -50%);\\n color: rgb(102, 102, 102) !important;\\n z-index: 10;\\n cursor: pointer;\\n}\\n.scrolling[data-v-327591c6] {\\n overflow: hidden !important;\\n}\\n.border-bottom[data-v-327591c6] {\\n border-bottom: 1px solid rgba(0, 0, 0, 0.1);\\n}\\n.subtask-btn[data-v-327591c6] {\\n border: thin solid rgba(var(--v-border-color), var(--v-border-opacity)) !important;\\n color: #7f39fb !important;\\n height: 53px;\\n text-align: center;\\n}\\n[data-v-327591c6] .v-field__clearable {\\n opacity: 1 !important;\\n}\\n.datepicker-wrapper[data-v-327591c6] {\\n width: 100%;\\n}\\n.datepicker-wrapper .datepicker-input[data-v-327591c6] {\\n width: 100% !important;\\n height: 100%;\\n pointer-events: none;\\n}\", \"\"]);\n// Exports\n/* harmony default export */ __webpack_exports__[\"default\"] = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/master-task/z-master-task-modal.vue?./node_modules/css-loader/dist/cjs.js??clonedRuleSet-27.use%5B1%5D!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-27.use%5B2%5D!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-27.use%5B3%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D"); /***/ }), @@ -2856,7 +2856,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"render\": function() { return /* binding */ render; }\n/* harmony export */ });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.runtime.esm-bundler.js\");\n/* harmony import */ var vuetify_lib_components_VAutocomplete_index_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! vuetify/lib/components/VAutocomplete/index.mjs */ \"./node_modules/vuetify/lib/components/VAutocomplete/VAutocomplete.mjs\");\n/* harmony import */ var vuetify_lib_components_VBtn_index_mjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! vuetify/lib/components/VBtn/index.mjs */ \"./node_modules/vuetify/lib/components/VBtn/VBtn.mjs\");\n/* harmony import */ var vuetify_lib_components_VCard_index_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vuetify/lib/components/VCard/index.mjs */ \"./node_modules/vuetify/lib/components/VCard/VCard.mjs\");\n/* harmony import */ var vuetify_lib_components_VCard_index_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! vuetify/lib/components/VCard/index.mjs */ \"./node_modules/vuetify/lib/components/VCard/VCardActions.mjs\");\n/* harmony import */ var vuetify_lib_components_VDialog_index_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vuetify/lib/components/VDialog/index.mjs */ \"./node_modules/vuetify/lib/components/VDialog/VDialog.mjs\");\n/* harmony import */ var vuetify_lib_components_VIcon_index_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! vuetify/lib/components/VIcon/index.mjs */ \"./node_modules/vuetify/lib/components/VIcon/VIcon.mjs\");\n/* harmony import */ var vuetify_lib_components_VSelect_index_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! vuetify/lib/components/VSelect/index.mjs */ \"./node_modules/vuetify/lib/components/VSelect/VSelect.mjs\");\n/* harmony import */ var vuetify_lib_components_VTextField_index_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! vuetify/lib/components/VTextField/index.mjs */ \"./node_modules/vuetify/lib/components/VTextField/VTextField.mjs\");\n\nconst _withScopeId = n => ((0,vue__WEBPACK_IMPORTED_MODULE_0__.pushScopeId)(\"data-v-327591c6\"), n = n(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.popScopeId)(), n);\nconst _hoisted_1 = {\n class: \"d-flex justify-space-between align-center modal-header\"\n};\nconst _hoisted_2 = {\n class: \"splitted-inputs\"\n};\nconst _hoisted_3 = {\n class: \"employee-select-avatar d-flex justify-center align-center\"\n};\nconst _hoisted_4 = {\n class: \"employee-select-avatar d-flex justify-center align-center\"\n};\nconst _hoisted_5 = {\n class: \"d-flex justify-space-between align-center\"\n};\nconst _hoisted_6 = {\n class: \"d-flex justify-space-between align-center modal-header border-bottom pb-4\"\n};\nconst _hoisted_7 = {\n class: \"d-flex justify-start\"\n};\nconst _hoisted_8 = [\"src\"];\nconst _hoisted_9 = [\"src\"];\nconst _hoisted_10 = {\n class: \"w-100\"\n};\nconst _hoisted_11 = {\n class: \"d-flex justify-start align-center mt-8\"\n};\nconst _hoisted_12 = {\n class: \"d-flex align-center\"\n};\nfunction render(_ctx, _cache, $props, $setup, $data, $options) {\n \n \n \n const _component_Datepicker = (0,vue__WEBPACK_IMPORTED_MODULE_0__.resolveComponent)(\"Datepicker\");\n \n \n const _component_QuillEditor = (0,vue__WEBPACK_IMPORTED_MODULE_0__.resolveComponent)(\"QuillEditor\");\n const _component_Z_files_upload = (0,vue__WEBPACK_IMPORTED_MODULE_0__.resolveComponent)(\"Z-files-upload\");\n \n \n const _component_A_mastertask_description = (0,vue__WEBPACK_IMPORTED_MODULE_0__.resolveComponent)(\"A-mastertask-description\");\n const _component_A_tasks_table = (0,vue__WEBPACK_IMPORTED_MODULE_0__.resolveComponent)(\"A-tasks-table\");\n const _component_W_loadable = (0,vue__WEBPACK_IMPORTED_MODULE_0__.resolveComponent)(\"W-loadable\");\n \n return (0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createBlock)(vuetify_lib_components_VDialog_index_mjs__WEBPACK_IMPORTED_MODULE_1__.VDialog, {\n modelValue: $data.visible,\n \"onUpdate:modelValue\": _cache[17] || (_cache[17] = $event => $data.visible = $event),\n \"max-width\": \"750\",\n \"max-height\": \"90%\",\n height: \"700px\",\n persistent: \"\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(_component_W_loadable, {\n content: $data.mastertask,\n class: \"h-100\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [$data.editMode ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createBlock)(vuetify_lib_components_VCard_index_mjs__WEBPACK_IMPORTED_MODULE_2__.VCard, {\n key: 0,\n height: \"100%\",\n class: \"d-flex flex-column scrolling\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_1, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"h1\", null, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($data.mastertask?.id ? 'Upraviť master task' : 'Vytvoriť master task'), 1 /* TEXT */), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VIcon_index_mjs__WEBPACK_IMPORTED_MODULE_3__.VIcon, {\n onClick: _cache[0] || (_cache[0] = (0,vue__WEBPACK_IMPORTED_MODULE_0__.withModifiers)($event => $options.closeModal(), [\"stop\"])),\n icon: \"mdi-close\",\n size: \"large\"\n })]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VCard_index_mjs__WEBPACK_IMPORTED_MODULE_4__.VCardActions, {\n class: \"d-flex flex-column modal-content\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VAutocomplete_index_mjs__WEBPACK_IMPORTED_MODULE_5__.VAutocomplete, {\n \"custom-filter\": _ctx.customFilter,\n \"match-any\": true,\n modelValue: $data.mastertask.project_id,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $data.mastertask.project_id = $event),\n label: _ctx.$t('Project code'),\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)([{\n error: $data.v$.mastertask.project_id.$errors.length\n }, \"modal-input\"]),\n items: _ctx.projectsOptions,\n \"item-title\": \"code\",\n \"item-value\": \"id\",\n variant: \"solo\",\n clearable: \"\",\n \"onUpdate:search\": _cache[2] || (_cache[2] = $event => $data.projectCodeSearch = $event)\n }, null, 8 /* PROPS */, [\"custom-filter\", \"modelValue\", \"label\", \"class\", \"items\"]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VTextField_index_mjs__WEBPACK_IMPORTED_MODULE_6__.VTextField, {\n modelValue: $data.mastertask.name,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $data.mastertask.name = $event),\n onFocus: _ctx.onInputFocus,\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)([\"modal-input\", {\n error: $data.v$.mastertask.name.$errors.length\n }]),\n label: \"Názov mastertasku\",\n variant: \"solo\",\n hint: $data.v$.mastertask.name.$errors ? $data.errorUtils.parseErrors($data.v$.mastertask.name.$errors) : null\n }, null, 8 /* PROPS */, [\"modelValue\", \"onFocus\", \"class\", \"hint\"]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_2, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\" TODO: Bialko validacie \"), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(_component_Datepicker, {\n modelValue: $data.mastertask.deadline,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = $event => $data.mastertask.deadline = $event),\n \"auto-apply\": true,\n onFocus: _ctx.onDateFocus,\n \"min-date\": new Date(),\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)([\"modal-input left\", {\n error: $data.v$.mastertask.deadline.$errors?.length\n }]),\n format: \"dd.MM.yyyy\",\n locale: \"sk\",\n \"select-text\": \"Vybrať\",\n \"cancel-text\": \"Zrušiť\",\n placeholder: \"Dátum\",\n validations: $data.v$.mastertask.deadline\n }, null, 8 /* PROPS */, [\"modelValue\", \"onFocus\", \"min-date\", \"class\", \"validations\"]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VTextField_index_mjs__WEBPACK_IMPORTED_MODULE_6__.VTextField, {\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)([\"modal-input right\", {\n error: $data.v$.mastertask._deadline_time.$errors.length\n }]),\n variant: \"solo\",\n modelValue: $data.mastertask._deadline_time,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $data.mastertask._deadline_time = $event),\n label: \"Čas\",\n \"append-inner-icon\": \"mdi-clock-outline\",\n type: \"time\",\n onFocus: _ctx.onInputFocus,\n hint: $data.v$.mastertask._deadline_time.$errors ? $data.errorUtils.parseErrors($data.v$.mastertask._deadline_time.$errors) : null\n }, null, 8 /* PROPS */, [\"modelValue\", \"onFocus\", \"class\", \"hint\"])]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VTextField_index_mjs__WEBPACK_IMPORTED_MODULE_6__.VTextField, {\n modelValue: $data.mastertask.estimated_duration,\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = $event => $data.mastertask.estimated_duration = $event),\n onFocus: _ctx.onInputFocus,\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)([\"modal-input\", {\n error: $data.v$.mastertask.estimated_duration.$errors.length\n }]),\n variant: \"solo\",\n type: \"number\",\n label: \"Nacenené hodiny\",\n hint: $data.v$.mastertask.estimated_duration.$errors ? $data.errorUtils.parseErrors($data.v$.mastertask.estimated_duration.$errors) : null\n }, null, 8 /* PROPS */, [\"modelValue\", \"onFocus\", \"class\", \"hint\"]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VTextField_index_mjs__WEBPACK_IMPORTED_MODULE_6__.VTextField, {\n modelValue: $data.mastertask.duration,\n \"onUpdate:modelValue\": _cache[7] || (_cache[7] = $event => $data.mastertask.duration = $event),\n onFocus: _ctx.onInputFocus,\n class: \"modal-input\",\n variant: \"solo\",\n type: \"number\",\n label: `${$data.mastertask.duration} h`,\n disabled: true\n }, null, 8 /* PROPS */, [\"modelValue\", \"onFocus\", \"label\"]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VSelect_index_mjs__WEBPACK_IMPORTED_MODULE_7__.VSelect, {\n modelValue: $data.mastertask.team_id,\n \"onUpdate:modelValue\": _cache[8] || (_cache[8] = $event => $data.mastertask.team_id = $event),\n onFocus: _ctx.onInputFocus,\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)([\"modal-input border-select\", {\n error: $data.v$.mastertask.employees.$errors.length\n }]),\n label: \"Tím\",\n variant: \"solo\",\n items: _ctx.teams,\n \"item-value\": \"id\",\n \"item-title\": \"name\",\n disabled: !!$data.mastertask.id,\n clearable: true\n }, null, 8 /* PROPS */, [\"modelValue\", \"onFocus\", \"class\", \"items\", \"disabled\"]), !$data.mastertask.id ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(true), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(vue__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n key: 0\n }, (0,vue__WEBPACK_IMPORTED_MODULE_0__.renderList)($data.mastertask.employees, (employee, index) => {\n return (0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createBlock)(vuetify_lib_components_VTextField_index_mjs__WEBPACK_IMPORTED_MODULE_6__.VTextField, {\n key: employee.id,\n onFocus: _ctx.onInputFocus,\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)([\"modal-input\", {\n error: employee.invalid\n }]),\n label: `${employee.name} ${employee.surname}`,\n variant: \"solo\",\n placeholder: \"h\",\n modelValue: $data.mastertask.employees[index].duration,\n \"onUpdate:modelValue\": $event => $data.mastertask.employees[index].duration = $event,\n type: \"number\",\n min: \"1\",\n onInput: _ctx.onEmployeeDurationChanged\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"p\", _hoisted_3, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(employee?.name.charAt(0) + employee?.surname.charAt(0)), 1 /* TEXT */), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VIcon_index_mjs__WEBPACK_IMPORTED_MODULE_3__.VIcon, {\n onClick: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withModifiers)($event => $options.removeEmployee(employee), [\"stop\"]),\n class: \"remove-input\",\n icon: \"mdi-close-circle\",\n size: \"default\"\n }, null, 8 /* PROPS */, [\"onClick\"])]),\n _: 2 /* DYNAMIC */\n }, 1032 /* PROPS, DYNAMIC_SLOTS */, [\"onFocus\", \"class\", \"label\", \"modelValue\", \"onUpdate:modelValue\", \"onInput\"]);\n }), 128 /* KEYED_FRAGMENT */)) : ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(vue__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n key: 1\n }, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\" mastertask._allEmployees is used in edit to combine team employees with extra employees and subtask durations \"), ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(true), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(vue__WEBPACK_IMPORTED_MODULE_0__.Fragment, null, (0,vue__WEBPACK_IMPORTED_MODULE_0__.renderList)($data.mastertask._allEmployees, employee => {\n return (0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createBlock)(vuetify_lib_components_VTextField_index_mjs__WEBPACK_IMPORTED_MODULE_6__.VTextField, {\n key: employee.id,\n class: \"modal-input\",\n label: `${employee.name} ${employee.surname}`,\n variant: \"solo\",\n placeholder: \"h\",\n modelValue: employee.duration,\n \"onUpdate:modelValue\": $event => employee.duration = $event,\n type: \"number\",\n disabled: true\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"p\", _hoisted_4, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(employee?.name.charAt(0) + employee?.surname.charAt(0)), 1 /* TEXT */), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VIcon_index_mjs__WEBPACK_IMPORTED_MODULE_3__.VIcon, {\n onClick: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withModifiers)($event => $options.removeEmployee(employee), [\"stop\"]),\n class: \"remove-input\",\n icon: \"mdi-close-circle\",\n size: \"default\"\n }, null, 8 /* PROPS */, [\"onClick\"])]),\n _: 2 /* DYNAMIC */\n }, 1032 /* PROPS, DYNAMIC_SLOTS */, [\"label\", \"modelValue\", \"onUpdate:modelValue\"]);\n }), 128 /* KEYED_FRAGMENT */))], 64 /* STABLE_FRAGMENT */)), $data.showAddEmployeeInput ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createBlock)(vuetify_lib_components_VAutocomplete_index_mjs__WEBPACK_IMPORTED_MODULE_5__.VAutocomplete, {\n key: 2,\n \"custom-filter\": _ctx.customFilter,\n \"match-any\": true,\n label: _ctx.$t('Search for employee'),\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)([{\n error: $data.v$.mastertask.project_id.$errors.length\n }, \"modal-input\"]),\n items: _ctx.employeesOptions,\n \"item-title\": \"_fullName\",\n \"item-value\": \"id\",\n variant: \"solo\",\n clearable: \"\",\n \"onUpdate:modelValue\": _ctx.onEmployeeSelected\n }, null, 8 /* PROPS */, [\"custom-filter\", \"label\", \"class\", \"items\", \"onUpdate:modelValue\"])) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\" \"), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VBtn_index_mjs__WEBPACK_IMPORTED_MODULE_8__.VBtn, {\n disabled: !!$data.mastertask.id,\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)([\"w-100 mb-5 button secondary\", {\n error: $data.v$.mastertask.project_id.$errors.length\n }]),\n onClick: _cache[9] || (_cache[9] = $event => $data.showAddEmployeeInput = true)\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VIcon_index_mjs__WEBPACK_IMPORTED_MODULE_3__.VIcon, {\n class: \"mx-1\",\n icon: \"mdi-plus\"\n }), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createTextVNode)(\"Pridať zamestnanca \")]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"disabled\", \"class\"]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", {\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)([\"w-100 modal-input\", {\n error: $data.v$.mastertask.description.$errors.length\n }])\n }, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(_component_QuillEditor, {\n ref: \"description\",\n modelValue: $data.mastertask.description,\n \"onUpdate:modelValue\": _cache[10] || (_cache[10] = $event => $data.mastertask.description = $event),\n placeholder: \"Popis\",\n theme: \"snow\",\n class: \"rich-text-editor\",\n onKeyup: $options.onQuillEditorInput\n }, null, 8 /* PROPS */, [\"modelValue\", \"onKeyup\"])], 2 /* CLASS */), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(_component_Z_files_upload, {\n class: \"mt-15 files\",\n files: $data.mastertask.files,\n onFilesUploaded: $options.filesUploaded,\n \"is-saving\": $data.isSaving\n }, null, 8 /* PROPS */, [\"files\", \"onFilesUploaded\", \"is-saving\"])]),\n _: 1 /* STABLE */\n }), !$data.isSaving ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createBlock)(vuetify_lib_components_VBtn_index_mjs__WEBPACK_IMPORTED_MODULE_8__.VBtn, {\n key: 0,\n class: \"button primary\",\n onClick: _cache[11] || (_cache[11] = $event => $options.save())\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createTextVNode)((0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($data.mastertask.id ? 'ULOŽIŤ' : 'VYTVORIŤ'), 1 /* TEXT */)]),\n\n _: 1 /* STABLE */\n })) : ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createBlock)(vuetify_lib_components_VBtn_index_mjs__WEBPACK_IMPORTED_MODULE_8__.VBtn, {\n key: 1,\n class: \"button primary disabled\",\n disabled: \"\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createTextVNode)((0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(_ctx.$t('Ukladám...')), 1 /* TEXT */)]),\n\n _: 1 /* STABLE */\n }))]),\n\n _: 1 /* STABLE */\n })) : ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createBlock)(vuetify_lib_components_VCard_index_mjs__WEBPACK_IMPORTED_MODULE_2__.VCard, {\n key: 1,\n height: \"100%\",\n class: \"d-flex flex-column scrolling\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_5, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"p\", null, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($data.mastertask.project_code), 1 /* TEXT */), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VIcon_index_mjs__WEBPACK_IMPORTED_MODULE_3__.VIcon, {\n onClick: _cache[12] || (_cache[12] = (0,vue__WEBPACK_IMPORTED_MODULE_0__.withModifiers)($event => $options.closeModal(), [\"stop\"])),\n icon: \"mdi-close\",\n size: \"large\",\n class: \"pb-5\"\n })]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_6, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"h1\", null, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($data.mastertask.name), 1 /* TEXT */), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_7, [!$data.mastertask.is_finished ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"img\", {\n key: 0,\n class: \"icon\",\n src: __webpack_require__(/*! @/plugins/app/_img/icons/pencil.svg */ \"./src/plugins/app/_img/icons/pencil.svg\"),\n alt: \"pencil-icon\",\n onClick: _cache[13] || (_cache[13] = (0,vue__WEBPACK_IMPORTED_MODULE_0__.withModifiers)($event => $data.editMode = !$data.editMode, [\"stop\"]))\n }, null, 8 /* PROPS */, _hoisted_8)) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"img\", {\n class: \"icon trash\",\n src: __webpack_require__(/*! @/plugins/app/_img/icons/bin.svg */ \"./src/plugins/app/_img/icons/bin.svg\"),\n alt: \"trash-icon\",\n onClick: _cache[14] || (_cache[14] = (0,vue__WEBPACK_IMPORTED_MODULE_0__.withModifiers)($event => $options.openDeleteMasterTaskModal($data.mastertask), [\"stop\"]))\n }, null, 8 /* PROPS */, _hoisted_9)])]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VCard_index_mjs__WEBPACK_IMPORTED_MODULE_4__.VCardActions, {\n class: \"d-flex flex-column modal-content\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_10, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(_component_A_mastertask_description, {\n mastertask: $data.mastertask\n }, null, 8 /* PROPS */, [\"mastertask\"]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_11, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VBtn_index_mjs__WEBPACK_IMPORTED_MODULE_8__.VBtn, {\n class: \"button primary\",\n onClick: _cache[15] || (_cache[15] = $event => $options.toggleIsFinished($data.mastertask))\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createTextVNode)((0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($data.mastertask.is_finished ? 'Otvoriť mastertask' : 'Ukončiť mastertask'), 1 /* TEXT */)]),\n\n _: 1 /* STABLE */\n })]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(_component_A_tasks_table, {\n subtasks: $data.mastertask.subtasks\n }, null, 8 /* PROPS */, [\"subtasks\"]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_12, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VBtn_index_mjs__WEBPACK_IMPORTED_MODULE_8__.VBtn, {\n class: \"subtask-btn w-100\",\n onClick: _cache[16] || (_cache[16] = $event => $options.addTask())\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VIcon_index_mjs__WEBPACK_IMPORTED_MODULE_3__.VIcon, {\n class: \"mx-1\",\n icon: \"mdi-plus\"\n }), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createTextVNode)(\"Pridať sub task\")]),\n _: 1 /* STABLE */\n })])])]),\n\n _: 1 /* STABLE */\n })]),\n\n _: 1 /* STABLE */\n }))]),\n\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"content\"])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"]);\n}\n\n/* Vuetify */\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/master-task/z-master-task-modal.vue?./node_modules/webpack-plugin-vuetify/dist/scriptLoader.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/templateLoader.js??ruleSet%5B1%5D.rules%5B5%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"render\": function() { return /* binding */ render; }\n/* harmony export */ });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.runtime.esm-bundler.js\");\n/* harmony import */ var vuetify_lib_components_VAutocomplete_index_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! vuetify/lib/components/VAutocomplete/index.mjs */ \"./node_modules/vuetify/lib/components/VAutocomplete/VAutocomplete.mjs\");\n/* harmony import */ var vuetify_lib_components_VBtn_index_mjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! vuetify/lib/components/VBtn/index.mjs */ \"./node_modules/vuetify/lib/components/VBtn/VBtn.mjs\");\n/* harmony import */ var vuetify_lib_components_VCard_index_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vuetify/lib/components/VCard/index.mjs */ \"./node_modules/vuetify/lib/components/VCard/VCard.mjs\");\n/* harmony import */ var vuetify_lib_components_VCard_index_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! vuetify/lib/components/VCard/index.mjs */ \"./node_modules/vuetify/lib/components/VCard/VCardActions.mjs\");\n/* harmony import */ var vuetify_lib_components_VDialog_index_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vuetify/lib/components/VDialog/index.mjs */ \"./node_modules/vuetify/lib/components/VDialog/VDialog.mjs\");\n/* harmony import */ var vuetify_lib_components_VIcon_index_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! vuetify/lib/components/VIcon/index.mjs */ \"./node_modules/vuetify/lib/components/VIcon/VIcon.mjs\");\n/* harmony import */ var vuetify_lib_components_VSelect_index_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! vuetify/lib/components/VSelect/index.mjs */ \"./node_modules/vuetify/lib/components/VSelect/VSelect.mjs\");\n/* harmony import */ var vuetify_lib_components_VTextField_index_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! vuetify/lib/components/VTextField/index.mjs */ \"./node_modules/vuetify/lib/components/VTextField/VTextField.mjs\");\n\nconst _withScopeId = n => ((0,vue__WEBPACK_IMPORTED_MODULE_0__.pushScopeId)(\"data-v-327591c6\"), n = n(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.popScopeId)(), n);\nconst _hoisted_1 = {\n class: \"d-flex justify-space-between align-center modal-header\"\n};\nconst _hoisted_2 = {\n class: \"splitted-inputs\"\n};\nconst _hoisted_3 = {\n class: \"employee-select-avatar d-flex justify-center align-center\"\n};\nconst _hoisted_4 = {\n class: \"employee-select-avatar d-flex justify-center align-center\"\n};\nconst _hoisted_5 = {\n class: \"d-flex justify-space-between align-center\"\n};\nconst _hoisted_6 = {\n class: \"d-flex justify-space-between align-center modal-header border-bottom pb-4\"\n};\nconst _hoisted_7 = {\n class: \"d-flex justify-start\"\n};\nconst _hoisted_8 = [\"src\"];\nconst _hoisted_9 = [\"src\"];\nconst _hoisted_10 = {\n class: \"w-100\"\n};\nconst _hoisted_11 = {\n class: \"d-flex justify-start align-center mt-8\"\n};\nconst _hoisted_12 = {\n class: \"d-flex align-center\"\n};\nfunction render(_ctx, _cache, $props, $setup, $data, $options) {\n \n \n \n const _component_Datepicker = (0,vue__WEBPACK_IMPORTED_MODULE_0__.resolveComponent)(\"Datepicker\");\n \n \n const _component_QuillEditor = (0,vue__WEBPACK_IMPORTED_MODULE_0__.resolveComponent)(\"QuillEditor\");\n const _component_Z_files_upload = (0,vue__WEBPACK_IMPORTED_MODULE_0__.resolveComponent)(\"Z-files-upload\");\n \n \n const _component_A_mastertask_description = (0,vue__WEBPACK_IMPORTED_MODULE_0__.resolveComponent)(\"A-mastertask-description\");\n const _component_A_tasks_table = (0,vue__WEBPACK_IMPORTED_MODULE_0__.resolveComponent)(\"A-tasks-table\");\n const _component_W_loadable = (0,vue__WEBPACK_IMPORTED_MODULE_0__.resolveComponent)(\"W-loadable\");\n \n return (0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createBlock)(vuetify_lib_components_VDialog_index_mjs__WEBPACK_IMPORTED_MODULE_1__.VDialog, {\n modelValue: $data.visible,\n \"onUpdate:modelValue\": _cache[18] || (_cache[18] = $event => $data.visible = $event),\n \"max-width\": \"750\",\n \"max-height\": \"90%\",\n height: \"700px\",\n persistent: \"\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(_component_W_loadable, {\n content: $data.mastertask,\n class: \"h-100\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [$data.editMode ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createBlock)(vuetify_lib_components_VCard_index_mjs__WEBPACK_IMPORTED_MODULE_2__.VCard, {\n key: 0,\n height: \"100%\",\n class: \"d-flex flex-column scrolling\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_1, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"h1\", null, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($data.mastertask?.id ? 'Upraviť master task' : 'Vytvoriť master task'), 1 /* TEXT */), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VIcon_index_mjs__WEBPACK_IMPORTED_MODULE_3__.VIcon, {\n onClick: _cache[0] || (_cache[0] = (0,vue__WEBPACK_IMPORTED_MODULE_0__.withModifiers)($event => $options.closeModal(), [\"stop\"])),\n icon: \"mdi-close\",\n size: \"large\"\n })]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VCard_index_mjs__WEBPACK_IMPORTED_MODULE_4__.VCardActions, {\n class: \"d-flex flex-column modal-content\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VAutocomplete_index_mjs__WEBPACK_IMPORTED_MODULE_5__.VAutocomplete, {\n \"custom-filter\": _ctx.customFilter,\n \"match-any\": true,\n modelValue: $data.mastertask.project_id,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $data.mastertask.project_id = $event),\n label: _ctx.$t('Project code'),\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)([{\n error: $data.v$.mastertask.project_id.$errors.length\n }, \"modal-input\"]),\n items: _ctx.projectsOptions,\n \"item-title\": \"code\",\n \"item-value\": \"id\",\n variant: \"solo\",\n clearable: \"\",\n \"onUpdate:search\": _cache[2] || (_cache[2] = $event => $data.projectCodeSearch = $event)\n }, null, 8 /* PROPS */, [\"custom-filter\", \"modelValue\", \"label\", \"class\", \"items\"]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VTextField_index_mjs__WEBPACK_IMPORTED_MODULE_6__.VTextField, {\n modelValue: $data.mastertask.name,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $data.mastertask.name = $event),\n onFocus: _ctx.onInputFocus,\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)([\"modal-input\", {\n error: $data.v$.mastertask.name.$errors.length\n }]),\n label: \"Názov mastertasku\",\n variant: \"solo\",\n hint: $data.v$.mastertask.name.$errors ? $data.errorUtils.parseErrors($data.v$.mastertask.name.$errors) : null\n }, null, 8 /* PROPS */, [\"modelValue\", \"onFocus\", \"class\", \"hint\"]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_2, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\" TODO: Bialko validacie \"), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", {\n onClick: _cache[5] || (_cache[5] = (...args) => $options.handleDatepickerClick && $options.handleDatepickerClick(...args)),\n class: \"datepicker-wrapper left\",\n ref: \"datepicker-wrapper\"\n }, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(_component_Datepicker, {\n modelValue: $data.mastertask.deadline,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = $event => $data.mastertask.deadline = $event),\n ref: \"datepicker\",\n \"auto-apply\": true,\n \"min-date\": new Date(),\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)([\"modal-input datepicker-input\", {\n error: $data.v$.mastertask.deadline.$errors?.length\n }]),\n format: \"dd.MM.yyyy\",\n locale: \"sk\",\n \"select-text\": \"Vybrať\",\n \"cancel-text\": \"Zrušiť\",\n placeholder: \"Dátum\",\n validations: $data.v$.mastertask.deadline\n }, null, 8 /* PROPS */, [\"modelValue\", \"min-date\", \"class\", \"validations\"])], 512 /* NEED_PATCH */), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VTextField_index_mjs__WEBPACK_IMPORTED_MODULE_6__.VTextField, {\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)([\"modal-input right\", {\n error: $data.v$.mastertask._deadline_time.$errors.length\n }]),\n variant: \"solo\",\n modelValue: $data.mastertask._deadline_time,\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = $event => $data.mastertask._deadline_time = $event),\n label: \"Čas\",\n \"append-inner-icon\": \"mdi-clock-outline\",\n type: \"time\",\n onFocus: _ctx.onInputFocus,\n hint: $data.v$.mastertask._deadline_time.$errors ? $data.errorUtils.parseErrors($data.v$.mastertask._deadline_time.$errors) : null\n }, null, 8 /* PROPS */, [\"modelValue\", \"onFocus\", \"class\", \"hint\"])]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VTextField_index_mjs__WEBPACK_IMPORTED_MODULE_6__.VTextField, {\n modelValue: $data.mastertask.estimated_duration,\n \"onUpdate:modelValue\": _cache[7] || (_cache[7] = $event => $data.mastertask.estimated_duration = $event),\n onFocus: _ctx.onInputFocus,\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)([\"modal-input\", {\n error: $data.v$.mastertask.estimated_duration.$errors.length\n }]),\n variant: \"solo\",\n type: \"number\",\n label: \"Nacenené hodiny\",\n hint: $data.v$.mastertask.estimated_duration.$errors ? $data.errorUtils.parseErrors($data.v$.mastertask.estimated_duration.$errors) : null\n }, null, 8 /* PROPS */, [\"modelValue\", \"onFocus\", \"class\", \"hint\"]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VTextField_index_mjs__WEBPACK_IMPORTED_MODULE_6__.VTextField, {\n modelValue: $data.mastertask.duration,\n \"onUpdate:modelValue\": _cache[8] || (_cache[8] = $event => $data.mastertask.duration = $event),\n onFocus: _ctx.onInputFocus,\n class: \"modal-input\",\n variant: \"solo\",\n type: \"number\",\n label: `${$data.mastertask.duration} h`,\n disabled: true\n }, null, 8 /* PROPS */, [\"modelValue\", \"onFocus\", \"label\"]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VSelect_index_mjs__WEBPACK_IMPORTED_MODULE_7__.VSelect, {\n modelValue: $data.mastertask.team_id,\n \"onUpdate:modelValue\": _cache[9] || (_cache[9] = $event => $data.mastertask.team_id = $event),\n onFocus: _ctx.onInputFocus,\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)([\"modal-input border-select\", {\n error: $data.v$.mastertask.employees.$errors.length\n }]),\n label: \"Tím\",\n variant: \"solo\",\n items: _ctx.teams,\n \"item-value\": \"id\",\n \"item-title\": \"name\",\n disabled: !!$data.mastertask.id,\n clearable: true\n }, null, 8 /* PROPS */, [\"modelValue\", \"onFocus\", \"class\", \"items\", \"disabled\"]), !$data.mastertask.id ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(true), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(vue__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n key: 0\n }, (0,vue__WEBPACK_IMPORTED_MODULE_0__.renderList)($data.mastertask.employees, (employee, index) => {\n return (0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createBlock)(vuetify_lib_components_VTextField_index_mjs__WEBPACK_IMPORTED_MODULE_6__.VTextField, {\n key: employee.id,\n onFocus: _ctx.onInputFocus,\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)([\"modal-input\", {\n error: employee.invalid\n }]),\n label: `${employee.name} ${employee.surname}`,\n variant: \"solo\",\n placeholder: \"h\",\n modelValue: $data.mastertask.employees[index].duration,\n \"onUpdate:modelValue\": $event => $data.mastertask.employees[index].duration = $event,\n type: \"number\",\n min: \"1\",\n onInput: _ctx.onEmployeeDurationChanged\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"p\", _hoisted_3, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(employee?.name.charAt(0) + employee?.surname.charAt(0)), 1 /* TEXT */), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VIcon_index_mjs__WEBPACK_IMPORTED_MODULE_3__.VIcon, {\n onClick: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withModifiers)($event => $options.removeEmployee(employee), [\"stop\"]),\n class: \"remove-input\",\n icon: \"mdi-close-circle\",\n size: \"default\"\n }, null, 8 /* PROPS */, [\"onClick\"])]),\n _: 2 /* DYNAMIC */\n }, 1032 /* PROPS, DYNAMIC_SLOTS */, [\"onFocus\", \"class\", \"label\", \"modelValue\", \"onUpdate:modelValue\", \"onInput\"]);\n }), 128 /* KEYED_FRAGMENT */)) : ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(vue__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n key: 1\n }, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\" mastertask._allEmployees is used in edit to combine team employees with extra employees and subtask durations \"), ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(true), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(vue__WEBPACK_IMPORTED_MODULE_0__.Fragment, null, (0,vue__WEBPACK_IMPORTED_MODULE_0__.renderList)($data.mastertask._allEmployees, employee => {\n return (0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createBlock)(vuetify_lib_components_VTextField_index_mjs__WEBPACK_IMPORTED_MODULE_6__.VTextField, {\n key: employee.id,\n class: \"modal-input\",\n label: `${employee.name} ${employee.surname}`,\n variant: \"solo\",\n placeholder: \"h\",\n modelValue: employee.duration,\n \"onUpdate:modelValue\": $event => employee.duration = $event,\n type: \"number\",\n disabled: true\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"p\", _hoisted_4, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(employee?.name.charAt(0) + employee?.surname.charAt(0)), 1 /* TEXT */), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VIcon_index_mjs__WEBPACK_IMPORTED_MODULE_3__.VIcon, {\n onClick: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withModifiers)($event => $options.removeEmployee(employee), [\"stop\"]),\n class: \"remove-input\",\n icon: \"mdi-close-circle\",\n size: \"default\"\n }, null, 8 /* PROPS */, [\"onClick\"])]),\n _: 2 /* DYNAMIC */\n }, 1032 /* PROPS, DYNAMIC_SLOTS */, [\"label\", \"modelValue\", \"onUpdate:modelValue\"]);\n }), 128 /* KEYED_FRAGMENT */))], 64 /* STABLE_FRAGMENT */)), $data.showAddEmployeeInput ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createBlock)(vuetify_lib_components_VAutocomplete_index_mjs__WEBPACK_IMPORTED_MODULE_5__.VAutocomplete, {\n key: 2,\n \"custom-filter\": _ctx.customFilter,\n \"match-any\": true,\n label: _ctx.$t('Search for employee'),\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)([{\n error: $data.v$.mastertask.project_id.$errors.length\n }, \"modal-input\"]),\n items: _ctx.employeesOptions,\n \"item-title\": \"_fullName\",\n \"item-value\": \"id\",\n variant: \"solo\",\n clearable: \"\",\n \"onUpdate:modelValue\": _ctx.onEmployeeSelected\n }, null, 8 /* PROPS */, [\"custom-filter\", \"label\", \"class\", \"items\", \"onUpdate:modelValue\"])) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\" \"), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VBtn_index_mjs__WEBPACK_IMPORTED_MODULE_8__.VBtn, {\n disabled: !!$data.mastertask.id,\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)([\"w-100 mb-5 button secondary\", {\n error: $data.v$.mastertask.project_id.$errors.length\n }]),\n onClick: _cache[10] || (_cache[10] = $event => $data.showAddEmployeeInput = true)\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VIcon_index_mjs__WEBPACK_IMPORTED_MODULE_3__.VIcon, {\n class: \"mx-1\",\n icon: \"mdi-plus\"\n }), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createTextVNode)(\"Pridať zamestnanca \")]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"disabled\", \"class\"]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", {\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)([\"w-100 modal-input\", {\n error: $data.v$.mastertask.description.$errors.length\n }])\n }, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(_component_QuillEditor, {\n ref: \"description\",\n modelValue: $data.mastertask.description,\n \"onUpdate:modelValue\": _cache[11] || (_cache[11] = $event => $data.mastertask.description = $event),\n placeholder: \"Popis\",\n theme: \"snow\",\n class: \"rich-text-editor\",\n onKeyup: $options.onQuillEditorInput\n }, null, 8 /* PROPS */, [\"modelValue\", \"onKeyup\"])], 2 /* CLASS */), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(_component_Z_files_upload, {\n class: \"mt-15 files\",\n files: $data.mastertask.files,\n onFilesUploaded: $options.filesUploaded,\n \"is-saving\": $data.isSaving\n }, null, 8 /* PROPS */, [\"files\", \"onFilesUploaded\", \"is-saving\"])]),\n _: 1 /* STABLE */\n }), !$data.isSaving ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createBlock)(vuetify_lib_components_VBtn_index_mjs__WEBPACK_IMPORTED_MODULE_8__.VBtn, {\n key: 0,\n class: \"button primary\",\n onClick: _cache[12] || (_cache[12] = $event => $options.save())\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createTextVNode)((0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($data.mastertask.id ? 'ULOŽIŤ' : 'VYTVORIŤ'), 1 /* TEXT */)]),\n\n _: 1 /* STABLE */\n })) : ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createBlock)(vuetify_lib_components_VBtn_index_mjs__WEBPACK_IMPORTED_MODULE_8__.VBtn, {\n key: 1,\n class: \"button primary disabled\",\n disabled: \"\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createTextVNode)((0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(_ctx.$t('Ukladám...')), 1 /* TEXT */)]),\n\n _: 1 /* STABLE */\n }))]),\n\n _: 1 /* STABLE */\n })) : ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createBlock)(vuetify_lib_components_VCard_index_mjs__WEBPACK_IMPORTED_MODULE_2__.VCard, {\n key: 1,\n height: \"100%\",\n class: \"d-flex flex-column scrolling\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_5, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"p\", null, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($data.mastertask.project_code), 1 /* TEXT */), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VIcon_index_mjs__WEBPACK_IMPORTED_MODULE_3__.VIcon, {\n onClick: _cache[13] || (_cache[13] = (0,vue__WEBPACK_IMPORTED_MODULE_0__.withModifiers)($event => $options.closeModal(), [\"stop\"])),\n icon: \"mdi-close\",\n size: \"large\",\n class: \"pb-5\"\n })]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_6, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"h1\", null, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($data.mastertask.name), 1 /* TEXT */), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_7, [!$data.mastertask.is_finished ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"img\", {\n key: 0,\n class: \"icon\",\n src: __webpack_require__(/*! @/plugins/app/_img/icons/pencil.svg */ \"./src/plugins/app/_img/icons/pencil.svg\"),\n alt: \"pencil-icon\",\n onClick: _cache[14] || (_cache[14] = (0,vue__WEBPACK_IMPORTED_MODULE_0__.withModifiers)($event => $data.editMode = !$data.editMode, [\"stop\"]))\n }, null, 8 /* PROPS */, _hoisted_8)) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"img\", {\n class: \"icon trash\",\n src: __webpack_require__(/*! @/plugins/app/_img/icons/bin.svg */ \"./src/plugins/app/_img/icons/bin.svg\"),\n alt: \"trash-icon\",\n onClick: _cache[15] || (_cache[15] = (0,vue__WEBPACK_IMPORTED_MODULE_0__.withModifiers)($event => $options.openDeleteMasterTaskModal($data.mastertask), [\"stop\"]))\n }, null, 8 /* PROPS */, _hoisted_9)])]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VCard_index_mjs__WEBPACK_IMPORTED_MODULE_4__.VCardActions, {\n class: \"d-flex flex-column modal-content\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_10, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(_component_A_mastertask_description, {\n mastertask: $data.mastertask\n }, null, 8 /* PROPS */, [\"mastertask\"]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_11, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VBtn_index_mjs__WEBPACK_IMPORTED_MODULE_8__.VBtn, {\n class: \"button primary\",\n onClick: _cache[16] || (_cache[16] = $event => $options.toggleIsFinished($data.mastertask))\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createTextVNode)((0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($data.mastertask.is_finished ? 'Otvoriť mastertask' : 'Ukončiť mastertask'), 1 /* TEXT */)]),\n\n _: 1 /* STABLE */\n })]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(_component_A_tasks_table, {\n subtasks: $data.mastertask.subtasks\n }, null, 8 /* PROPS */, [\"subtasks\"]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_12, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VBtn_index_mjs__WEBPACK_IMPORTED_MODULE_8__.VBtn, {\n class: \"subtask-btn w-100\",\n onClick: _cache[17] || (_cache[17] = $event => $options.addTask())\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VIcon_index_mjs__WEBPACK_IMPORTED_MODULE_3__.VIcon, {\n class: \"mx-1\",\n icon: \"mdi-plus\"\n }), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createTextVNode)(\"Pridať sub task\")]),\n _: 1 /* STABLE */\n })])])]),\n\n _: 1 /* STABLE */\n })]),\n\n _: 1 /* STABLE */\n }))]),\n\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"content\"])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"]);\n}\n\n/* Vuetify */\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/master-task/z-master-task-modal.vue?./node_modules/webpack-plugin-vuetify/dist/scriptLoader.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/templateLoader.js??ruleSet%5B1%5D.rules%5B5%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D"); /***/ }), @@ -2955,7 +2955,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"render\": function() { return /* binding */ render; }\n/* harmony export */ });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.runtime.esm-bundler.js\");\n/* harmony import */ var vuetify_lib_components_VBtn_index_mjs__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! vuetify/lib/components/VBtn/index.mjs */ \"./node_modules/vuetify/lib/components/VBtn/VBtn.mjs\");\n/* harmony import */ var vuetify_lib_components_VCard_index_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! vuetify/lib/components/VCard/index.mjs */ \"./node_modules/vuetify/lib/components/VCard/VCard.mjs\");\n/* harmony import */ var vuetify_lib_components_VCard_index_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! vuetify/lib/components/VCard/index.mjs */ \"./node_modules/vuetify/lib/components/VCard/VCardActions.mjs\");\n/* harmony import */ var vuetify_lib_components_VDialog_index_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! vuetify/lib/components/VDialog/index.mjs */ \"./node_modules/vuetify/lib/components/VDialog/VDialog.mjs\");\n/* harmony import */ var vuetify_lib_components_VGrid_index_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vuetify/lib/components/VGrid/index.mjs */ \"./node_modules/vuetify/lib/components/VGrid/VRow.mjs\");\n/* harmony import */ var vuetify_lib_components_VGrid_index_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vuetify/lib/components/VGrid/index.mjs */ \"./node_modules/vuetify/lib/components/VGrid/VCol.mjs\");\n/* harmony import */ var vuetify_lib_components_VIcon_index_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! vuetify/lib/components/VIcon/index.mjs */ \"./node_modules/vuetify/lib/components/VIcon/VIcon.mjs\");\n/* harmony import */ var vuetify_lib_components_VSheet_index_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! vuetify/lib/components/VSheet/index.mjs */ \"./node_modules/vuetify/lib/components/VSheet/VSheet.mjs\");\n/* harmony import */ var vuetify_lib_components_VTextField_index_mjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! vuetify/lib/components/VTextField/index.mjs */ \"./node_modules/vuetify/lib/components/VTextField/VTextField.mjs\");\n\nconst _withScopeId = n => ((0,vue__WEBPACK_IMPORTED_MODULE_0__.pushScopeId)(\"data-v-f40d208a\"), n = n(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.popScopeId)(), n);\nconst _hoisted_1 = {\n class: \"d-flex align-center\"\n};\nconst _hoisted_2 = /*#__PURE__*/_withScopeId(() => /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"p\", {\n class: \"mx-3\"\n}, \"Odpracovaný čas\", -1 /* HOISTED */));\nconst _hoisted_3 = {\n class: \"d-flex align-center mb-3\"\n};\nconst _hoisted_4 = /*#__PURE__*/_withScopeId(() => /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"p\", {\n class: \"task-badge rounded-pill\"\n}, \"Pridať záznam\", -1 /* HOISTED */));\nconst _hoisted_5 = {\n class: \"d-flex align-center flex-start width-100\"\n};\nconst _hoisted_6 = {\n class: \"task-badge rounded-pill\"\n};\nconst _hoisted_7 = {\n class: \"ml-5\"\n};\nconst _hoisted_8 = {\n class: \"d-flex justify-space-between align-center\"\n};\nconst _hoisted_9 = /*#__PURE__*/_withScopeId(() => /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"h1\", null, \"Pridať odpracovaný čas\", -1 /* HOISTED */));\n\nfunction render(_ctx, _cache, $props, $setup, $data, $options) {\n \n \n \n \n \n \n \n \n \n return (0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(vue__WEBPACK_IMPORTED_MODULE_0__.Fragment, null, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VGrid_index_mjs__WEBPACK_IMPORTED_MODULE_1__.VRow, {\n \"no-gutters\": \"\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VGrid_index_mjs__WEBPACK_IMPORTED_MODULE_2__.VCol, {\n cols: \"5\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VSheet_index_mjs__WEBPACK_IMPORTED_MODULE_3__.VSheet, {\n class: \"py-3\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_1, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VIcon_index_mjs__WEBPACK_IMPORTED_MODULE_4__.VIcon, {\n icon: \"mdi-clock-time-three-outline\",\n size: \"large\"\n }), _hoisted_2])]),\n _: 1 /* STABLE */\n })]),\n\n _: 1 /* STABLE */\n }), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VGrid_index_mjs__WEBPACK_IMPORTED_MODULE_2__.VCol, {\n cols: \"7\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VSheet_index_mjs__WEBPACK_IMPORTED_MODULE_3__.VSheet, {\n class: \"py-3\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"p\", null, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($props.hours) + \" h\", 1 /* TEXT */)]),\n\n _: 1 /* STABLE */\n }), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VSheet_index_mjs__WEBPACK_IMPORTED_MODULE_3__.VSheet, {\n class: \"py-3\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_3, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VIcon_index_mjs__WEBPACK_IMPORTED_MODULE_4__.VIcon, {\n onClick: _cache[0] || (_cache[0] = $event => $data.showModal = true),\n class: \"add-date cursor-pointer mr-2\",\n icon: \"mdi-plus\",\n size: \"medium\"\n }), _hoisted_4]), $props.subtask.timesheets.length ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(true), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(vue__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n key: 0\n }, (0,vue__WEBPACK_IMPORTED_MODULE_0__.renderList)($props.subtask.timesheets, timesheet => {\n return (0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"div\", {\n key: timesheet.id,\n class: \"d-flex align-center mb-3\"\n }, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VIcon_index_mjs__WEBPACK_IMPORTED_MODULE_4__.VIcon, {\n onClick: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withModifiers)($event => $options.deleteTimesheet(timesheet), [\"stop\"]),\n class: \"circle-border cursor-pointer mr-2\",\n icon: \"mdi-minus\",\n size: \"medium\"\n }, null, 8 /* PROPS */, [\"onClick\"]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_5, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"p\", _hoisted_6, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(timesheet.time), 1 /* TEXT */), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"

{{ timesheet.employee_name }} ({{ moment(timesheet.timestamp).format('D.M.YYYY') }})

\"), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"p\", _hoisted_7, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(timesheet.employee_name) + \" (\" + (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(timesheet.timestamp) + \")\", 1 /* TEXT */)])]);\n }), 128 /* KEYED_FRAGMENT */)) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true)]),\n _: 1 /* STABLE */\n })]),\n\n _: 1 /* STABLE */\n })]),\n\n _: 1 /* STABLE */\n }), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VDialog_index_mjs__WEBPACK_IMPORTED_MODULE_5__.VDialog, {\n \"max-width\": \"750\",\n modelValue: $data.showModal,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = $event => $data.showModal = $event),\n persistent: \"\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VCard_index_mjs__WEBPACK_IMPORTED_MODULE_6__.VCard, null, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_8, [_hoisted_9, (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VIcon_index_mjs__WEBPACK_IMPORTED_MODULE_4__.VIcon, {\n onClick: _cache[1] || (_cache[1] = (0,vue__WEBPACK_IMPORTED_MODULE_0__.withModifiers)($event => $options.closeModal(), [\"stop\"])),\n icon: \"mdi-close\",\n size: \"large\"\n })]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VCard_index_mjs__WEBPACK_IMPORTED_MODULE_7__.VCardActions, {\n class: \"mt-10 d-flex justify-start align-center\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VTextField_index_mjs__WEBPACK_IMPORTED_MODULE_8__.VTextField, {\n modelValue: $data.form.hours,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $data.form.hours = $event),\n variant: \"solo\",\n \"bg-color\": \"white\",\n type: \"number\",\n hint: $data.v$.form.hours.$errors ? $data.errorUtils.parseErrors($data.v$.form.hours.$errors) : null,\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)([{\n error: $data.v$.form.hours.$errors.length\n }, \"mb-2\"]),\n label: \"Odpracovaný čas\"\n }, null, 8 /* PROPS */, [\"modelValue\", \"hint\", \"class\"])]),\n _: 1 /* STABLE */\n }), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VBtn_index_mjs__WEBPACK_IMPORTED_MODULE_9__.VBtn, {\n onClick: _cache[3] || (_cache[3] = $event => $options.submit()),\n class: \"button primary mt-5\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createTextVNode)(\"Potvrdiť\")]),\n _: 1 /* STABLE */\n })]),\n\n _: 1 /* STABLE */\n })]),\n\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])], 64 /* STABLE_FRAGMENT */);\n}\n\n/* Vuetify */\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/task/_components/_components/a-task-spent-time.vue?./node_modules/webpack-plugin-vuetify/dist/scriptLoader.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/templateLoader.js??ruleSet%5B1%5D.rules%5B5%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"render\": function() { return /* binding */ render; }\n/* harmony export */ });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.runtime.esm-bundler.js\");\n/* harmony import */ var vuetify_lib_components_VBtn_index_mjs__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! vuetify/lib/components/VBtn/index.mjs */ \"./node_modules/vuetify/lib/components/VBtn/VBtn.mjs\");\n/* harmony import */ var vuetify_lib_components_VCard_index_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! vuetify/lib/components/VCard/index.mjs */ \"./node_modules/vuetify/lib/components/VCard/VCard.mjs\");\n/* harmony import */ var vuetify_lib_components_VCard_index_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! vuetify/lib/components/VCard/index.mjs */ \"./node_modules/vuetify/lib/components/VCard/VCardActions.mjs\");\n/* harmony import */ var vuetify_lib_components_VDialog_index_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! vuetify/lib/components/VDialog/index.mjs */ \"./node_modules/vuetify/lib/components/VDialog/VDialog.mjs\");\n/* harmony import */ var vuetify_lib_components_VGrid_index_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vuetify/lib/components/VGrid/index.mjs */ \"./node_modules/vuetify/lib/components/VGrid/VRow.mjs\");\n/* harmony import */ var vuetify_lib_components_VGrid_index_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vuetify/lib/components/VGrid/index.mjs */ \"./node_modules/vuetify/lib/components/VGrid/VCol.mjs\");\n/* harmony import */ var vuetify_lib_components_VIcon_index_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! vuetify/lib/components/VIcon/index.mjs */ \"./node_modules/vuetify/lib/components/VIcon/VIcon.mjs\");\n/* harmony import */ var vuetify_lib_components_VSheet_index_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! vuetify/lib/components/VSheet/index.mjs */ \"./node_modules/vuetify/lib/components/VSheet/VSheet.mjs\");\n/* harmony import */ var vuetify_lib_components_VTextField_index_mjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! vuetify/lib/components/VTextField/index.mjs */ \"./node_modules/vuetify/lib/components/VTextField/VTextField.mjs\");\n\nconst _withScopeId = n => ((0,vue__WEBPACK_IMPORTED_MODULE_0__.pushScopeId)(\"data-v-f40d208a\"), n = n(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.popScopeId)(), n);\nconst _hoisted_1 = {\n class: \"d-flex align-center\"\n};\nconst _hoisted_2 = /*#__PURE__*/_withScopeId(() => /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"p\", {\n class: \"mx-3\"\n}, \"Odpracovaný čas\", -1 /* HOISTED */));\nconst _hoisted_3 = {\n class: \"d-flex align-center mb-3\"\n};\nconst _hoisted_4 = /*#__PURE__*/_withScopeId(() => /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"p\", {\n class: \"task-badge rounded-pill\"\n}, \"Pridať záznam\", -1 /* HOISTED */));\nconst _hoisted_5 = {\n class: \"d-flex align-center flex-start width-100\"\n};\nconst _hoisted_6 = {\n class: \"task-badge rounded-pill\"\n};\nconst _hoisted_7 = {\n class: \"ml-5\"\n};\nconst _hoisted_8 = {\n class: \"d-flex justify-space-between align-center\"\n};\nconst _hoisted_9 = /*#__PURE__*/_withScopeId(() => /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"h1\", null, \"Pridať odpracovaný čas\", -1 /* HOISTED */));\n\nfunction render(_ctx, _cache, $props, $setup, $data, $options) {\n \n \n \n \n \n \n \n \n \n return (0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(vue__WEBPACK_IMPORTED_MODULE_0__.Fragment, null, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VGrid_index_mjs__WEBPACK_IMPORTED_MODULE_1__.VRow, {\n \"no-gutters\": \"\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VGrid_index_mjs__WEBPACK_IMPORTED_MODULE_2__.VCol, {\n cols: \"5\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VSheet_index_mjs__WEBPACK_IMPORTED_MODULE_3__.VSheet, {\n class: \"py-3\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_1, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VIcon_index_mjs__WEBPACK_IMPORTED_MODULE_4__.VIcon, {\n icon: \"mdi-clock-time-three-outline\",\n size: \"large\"\n }), _hoisted_2])]),\n _: 1 /* STABLE */\n })]),\n\n _: 1 /* STABLE */\n }), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VGrid_index_mjs__WEBPACK_IMPORTED_MODULE_2__.VCol, {\n cols: \"7\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VSheet_index_mjs__WEBPACK_IMPORTED_MODULE_3__.VSheet, {\n class: \"py-3\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"p\", null, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($props.hours) + \" h\", 1 /* TEXT */)]),\n\n _: 1 /* STABLE */\n }), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VSheet_index_mjs__WEBPACK_IMPORTED_MODULE_3__.VSheet, {\n class: \"py-3\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_3, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VIcon_index_mjs__WEBPACK_IMPORTED_MODULE_4__.VIcon, {\n onClick: _cache[0] || (_cache[0] = $event => $data.showModal = true),\n class: \"add-date cursor-pointer mr-2\",\n icon: \"mdi-plus\",\n size: \"medium\"\n }), _hoisted_4]), $props.subtask.timesheets.length ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(true), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(vue__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n key: 0\n }, (0,vue__WEBPACK_IMPORTED_MODULE_0__.renderList)($props.subtask.timesheets, timesheet => {\n return (0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"div\", {\n key: timesheet.id,\n class: \"d-flex align-center mb-3\"\n }, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VIcon_index_mjs__WEBPACK_IMPORTED_MODULE_4__.VIcon, {\n onClick: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withModifiers)($event => $options.deleteTimesheet(timesheet), [\"stop\"]),\n class: \"circle-border cursor-pointer mr-2\",\n icon: \"mdi-minus\",\n size: \"medium\"\n }, null, 8 /* PROPS */, [\"onClick\"]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_5, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"p\", _hoisted_6, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(timesheet.time), 1 /* TEXT */), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"

{{ timesheet.employee_name }} ({{ moment(timesheet.timestamp).format('D.M.YYYY') }})

\"), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"p\", _hoisted_7, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(timesheet.employee_name) + \" (\" + (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(timesheet.timestamp) + \") \", 1 /* TEXT */)])]);\n }), 128 /* KEYED_FRAGMENT */)) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true)]),\n _: 1 /* STABLE */\n })]),\n\n _: 1 /* STABLE */\n })]),\n\n _: 1 /* STABLE */\n }), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VDialog_index_mjs__WEBPACK_IMPORTED_MODULE_5__.VDialog, {\n \"max-width\": \"750\",\n modelValue: $data.showModal,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = $event => $data.showModal = $event),\n persistent: \"\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VCard_index_mjs__WEBPACK_IMPORTED_MODULE_6__.VCard, null, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_8, [_hoisted_9, (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VIcon_index_mjs__WEBPACK_IMPORTED_MODULE_4__.VIcon, {\n onClick: _cache[1] || (_cache[1] = (0,vue__WEBPACK_IMPORTED_MODULE_0__.withModifiers)($event => $options.closeModal(), [\"stop\"])),\n icon: \"mdi-close\",\n size: \"large\"\n })]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VCard_index_mjs__WEBPACK_IMPORTED_MODULE_7__.VCardActions, {\n class: \"mt-10 d-flex justify-start align-center\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VTextField_index_mjs__WEBPACK_IMPORTED_MODULE_8__.VTextField, {\n modelValue: $data.form.hours,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $data.form.hours = $event),\n variant: \"solo\",\n \"bg-color\": \"white\",\n type: \"number\",\n hint: $data.v$.form.hours.$errors ? $data.errorUtils.parseErrors($data.v$.form.hours.$errors) : null,\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)([{\n error: $data.v$.form.hours.$errors.length\n }, \"mb-2\"]),\n label: \"Odpracovaný čas\"\n }, null, 8 /* PROPS */, [\"modelValue\", \"hint\", \"class\"])]),\n _: 1 /* STABLE */\n }), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VBtn_index_mjs__WEBPACK_IMPORTED_MODULE_9__.VBtn, {\n onClick: _cache[3] || (_cache[3] = $event => $options.submit()),\n class: \"button primary mt-5\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createTextVNode)(\"Potvrdiť\")]),\n _: 1 /* STABLE */\n })]),\n\n _: 1 /* STABLE */\n })]),\n\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])], 64 /* STABLE_FRAGMENT */);\n}\n\n/* Vuetify */\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/task/_components/_components/a-task-spent-time.vue?./node_modules/webpack-plugin-vuetify/dist/scriptLoader.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/templateLoader.js??ruleSet%5B1%5D.rules%5B5%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D"); /***/ }), @@ -2966,7 +2966,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"render\": function() { return /* binding */ render; }\n/* harmony export */ });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.runtime.esm-bundler.js\");\n/* harmony import */ var vuetify_lib_components_VBtn_index_mjs__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! vuetify/lib/components/VBtn/index.mjs */ \"./node_modules/vuetify/lib/components/VBtn/VBtn.mjs\");\n/* harmony import */ var vuetify_lib_components_VCard_index_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! vuetify/lib/components/VCard/index.mjs */ \"./node_modules/vuetify/lib/components/VCard/VCard.mjs\");\n/* harmony import */ var vuetify_lib_components_VCard_index_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! vuetify/lib/components/VCard/index.mjs */ \"./node_modules/vuetify/lib/components/VCard/VCardActions.mjs\");\n/* harmony import */ var vuetify_lib_components_VDialog_index_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! vuetify/lib/components/VDialog/index.mjs */ \"./node_modules/vuetify/lib/components/VDialog/VDialog.mjs\");\n/* harmony import */ var vuetify_lib_components_VGrid_index_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vuetify/lib/components/VGrid/index.mjs */ \"./node_modules/vuetify/lib/components/VGrid/VRow.mjs\");\n/* harmony import */ var vuetify_lib_components_VGrid_index_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vuetify/lib/components/VGrid/index.mjs */ \"./node_modules/vuetify/lib/components/VGrid/VCol.mjs\");\n/* harmony import */ var vuetify_lib_components_VIcon_index_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! vuetify/lib/components/VIcon/index.mjs */ \"./node_modules/vuetify/lib/components/VIcon/VIcon.mjs\");\n/* harmony import */ var vuetify_lib_components_VSheet_index_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! vuetify/lib/components/VSheet/index.mjs */ \"./node_modules/vuetify/lib/components/VSheet/VSheet.mjs\");\n/* harmony import */ var vuetify_lib_components_VTextField_index_mjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! vuetify/lib/components/VTextField/index.mjs */ \"./node_modules/vuetify/lib/components/VTextField/VTextField.mjs\");\n\nconst _hoisted_1 = {\n class: \"d-flex align-center\"\n};\nconst _hoisted_2 = /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"p\", {\n class: \"mx-3\"\n}, \"Trvanie\", -1 /* HOISTED */);\nconst _hoisted_3 = {\n key: 0,\n class: \"d-flex align-center mb-3\"\n};\nconst _hoisted_4 = /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"p\", {\n class: \"task-badge rounded-pill\"\n}, \"Pridať záznam\", -1 /* HOISTED */);\nconst _hoisted_5 = {\n class: \"d-flex justify-space-between align-center\"\n};\nconst _hoisted_6 = /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"h1\", null, \"Pridať dátum\", -1 /* HOISTED */);\nconst _hoisted_7 = {\n class: \"d-flex justify-space-between align-center\"\n};\nconst _hoisted_8 = {\n class: \"text-red\"\n};\nconst _hoisted_9 = /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"br\", null, null, -1 /* HOISTED */);\nconst _hoisted_10 = {\n class: \"text-black\"\n};\nfunction render(_ctx, _cache, $props, $setup, $data, $options) {\n \n \n \n \n const _component_Datepicker = (0,vue__WEBPACK_IMPORTED_MODULE_0__.resolveComponent)(\"Datepicker\");\n \n \n \n \n \n return (0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(vue__WEBPACK_IMPORTED_MODULE_0__.Fragment, null, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VGrid_index_mjs__WEBPACK_IMPORTED_MODULE_1__.VRow, {\n \"no-gutters\": \"\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VGrid_index_mjs__WEBPACK_IMPORTED_MODULE_2__.VCol, {\n cols: \"5\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VSheet_index_mjs__WEBPACK_IMPORTED_MODULE_3__.VSheet, {\n class: \"py-3\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_1, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VIcon_index_mjs__WEBPACK_IMPORTED_MODULE_4__.VIcon, {\n icon: \"mdi-calendar-week\",\n size: \"large\"\n }), _hoisted_2])]),\n _: 1 /* STABLE */\n })]),\n\n _: 1 /* STABLE */\n }), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VGrid_index_mjs__WEBPACK_IMPORTED_MODULE_2__.VCol, {\n cols: \"7\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VSheet_index_mjs__WEBPACK_IMPORTED_MODULE_3__.VSheet, {\n class: \"py-3\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [!$options.isOffice365Task ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"div\", _hoisted_3, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VIcon_index_mjs__WEBPACK_IMPORTED_MODULE_4__.VIcon, {\n onClick: _cache[0] || (_cache[0] = $event => $data.showModal = true),\n class: \"add-date cursor-pointer mr-2\",\n icon: \"mdi-plus\",\n size: \"medium\"\n }), _hoisted_4])) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true), ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(true), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(vue__WEBPACK_IMPORTED_MODULE_0__.Fragment, null, (0,vue__WEBPACK_IMPORTED_MODULE_0__.renderList)($props.timeblocks, (timeblock, index) => {\n return (0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"div\", {\n key: timeblock.id,\n class: \"d-flex align-center mb-3\"\n }, [!$options.isOffice365Task ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createBlock)(vuetify_lib_components_VIcon_index_mjs__WEBPACK_IMPORTED_MODULE_4__.VIcon, {\n key: 0,\n onClick: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withModifiers)($event => $props.subtask.id ? $options.deleteTimeblock(timeblock) : $options.deleteTimeblockWithoutId(index), [\"stop\"]),\n class: \"circle-border cursor-pointer mr-2\",\n icon: \"mdi-minus\",\n size: \"medium\"\n }, null, 8 /* PROPS */, [\"onClick\"])) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"p\", {\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)([\"task-badge rounded-pill\", {\n 'strike-through': timeblock.is_finished\n }])\n }, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($data.tmUtils.formatDateTime(timeblock.start)) + \" - \" + (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($data.tmUtils.formatDateTime(timeblock.end)), 3 /* TEXT, CLASS */), !$options.isOffice365Task ? (0,vue__WEBPACK_IMPORTED_MODULE_0__.withDirectives)(((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createBlock)(vuetify_lib_components_VIcon_index_mjs__WEBPACK_IMPORTED_MODULE_4__.VIcon, {\n key: 1,\n onClick: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withModifiers)($event => $options.toggleTimeblockIsFinished(timeblock), [\"stop\"]),\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)([\"circle-border cursor-pointer ml-2\", {\n 'completed': timeblock.is_finished\n }]),\n icon: \"mdi-check\",\n size: \"medium\"\n }, null, 8 /* PROPS */, [\"onClick\", \"class\"])), [[vue__WEBPACK_IMPORTED_MODULE_0__.vShow, $props.subtask.id]]) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true)]);\n }), 128 /* KEYED_FRAGMENT */))]),\n\n _: 1 /* STABLE */\n })]),\n\n _: 1 /* STABLE */\n })]),\n\n _: 1 /* STABLE */\n }), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VDialog_index_mjs__WEBPACK_IMPORTED_MODULE_5__.VDialog, {\n \"max-width\": \"750\",\n modelValue: $data.showModal,\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = $event => $data.showModal = $event),\n persistent: \"\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VCard_index_mjs__WEBPACK_IMPORTED_MODULE_6__.VCard, null, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_5, [_hoisted_6, (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VIcon_index_mjs__WEBPACK_IMPORTED_MODULE_4__.VIcon, {\n onClick: _cache[1] || (_cache[1] = (0,vue__WEBPACK_IMPORTED_MODULE_0__.withModifiers)($event => $options.closeModal(), [\"stop\"])),\n icon: \"mdi-close\",\n size: \"large\"\n })]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VCard_index_mjs__WEBPACK_IMPORTED_MODULE_7__.VCardActions, {\n class: \"mt-10 d-flex flex-column modal-content\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(_component_Datepicker, {\n modelValue: $data.form.date,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $data.form.date = $event),\n format: \"dd.MM.yyyy\",\n locale: \"sk\",\n \"select-text\": \"Vybrať\",\n \"cancel-text\": \"Zrušiť\",\n placeholder: \"Dátum\",\n \"auto-apply\": true,\n \"enable-time-picker\": false,\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)([\"mb-5 modal-input\", {\n error: $data.v$.form.date.$errors.length\n }])\n }, null, 8 /* PROPS */, [\"modelValue\", \"class\"]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VTextField_index_mjs__WEBPACK_IMPORTED_MODULE_8__.VTextField, {\n modelValue: $data.form.starts_at_time,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $data.form.starts_at_time = $event),\n type: \"time\",\n variant: \"solo\",\n \"bg-color\": \"white\",\n hint: $data.v$.form.starts_at_time.$errors ? $data.errorUtils.parseErrors($data.v$.form.starts_at_time.$errors) : null,\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)([{\n error: $data.v$.form.starts_at_time.$errors.length\n }, \"mb-1 modal-input\"]),\n label: \"Začiatok\"\n }, null, 8 /* PROPS */, [\"modelValue\", \"hint\", \"class\"]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VTextField_index_mjs__WEBPACK_IMPORTED_MODULE_8__.VTextField, {\n modelValue: $data.form.ends_at_time,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = $event => $data.form.ends_at_time = $event),\n type: \"time\",\n variant: \"solo\",\n \"bg-color\": \"white\",\n hint: $data.v$.form.ends_at_time.$errors ? $data.errorUtils.parseErrors($data.v$.form.ends_at_time.$errors) : null,\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)([{\n error: $data.v$.form.ends_at_time.$errors.length\n }, \"modal-input\"]),\n label: \"Koniec\"\n }, null, 8 /* PROPS */, [\"modelValue\", \"hint\", \"class\"])]),\n _: 1 /* STABLE */\n }), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VBtn_index_mjs__WEBPACK_IMPORTED_MODULE_9__.VBtn, {\n onClick: _cache[5] || (_cache[5] = $event => $options.submit()),\n class: \"button primary mt-5\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createTextVNode)(\"Potvrdiť\")]),\n _: 1 /* STABLE */\n })]),\n\n _: 1 /* STABLE */\n })]),\n\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VDialog_index_mjs__WEBPACK_IMPORTED_MODULE_5__.VDialog, {\n modelValue: $data.visible,\n \"onUpdate:modelValue\": _cache[10] || (_cache[10] = $event => $data.visible = $event),\n \"max-width\": \"750\",\n persistent: \"\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VCard_index_mjs__WEBPACK_IMPORTED_MODULE_6__.VCard, null, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_7, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"h1\", _hoisted_8, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createTextVNode)(\"Ste si istý, že chcete pridať timeblock po deadline \"), _hoisted_9, (0,vue__WEBPACK_IMPORTED_MODULE_0__.createTextVNode)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"b\", _hoisted_10, \"z mastertasku \" + (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($props.subtask?.project_code) + \" ?\", 1 /* TEXT */)]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VIcon_index_mjs__WEBPACK_IMPORTED_MODULE_4__.VIcon, {\n onClick: _cache[7] || (_cache[7] = (0,vue__WEBPACK_IMPORTED_MODULE_0__.withModifiers)($event => $data.visible = false, [\"stop\"])),\n icon: \"mdi-close\",\n size: \"large\",\n class: \"mb-15\"\n })]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VCard_index_mjs__WEBPACK_IMPORTED_MODULE_7__.VCardActions, {\n class: \"mt-10 d-flex justify-start align-center mobile-view\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VBtn_index_mjs__WEBPACK_IMPORTED_MODULE_9__.VBtn, {\n class: \"button primary half\",\n variant: \"flat\",\n onClick: _cache[8] || (_cache[8] = (0,vue__WEBPACK_IMPORTED_MODULE_0__.withModifiers)($event => $options.confirmSubmit(), [\"stop\"]))\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createTextVNode)(\"ÁNO\")]),\n _: 1 /* STABLE */\n }), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VBtn_index_mjs__WEBPACK_IMPORTED_MODULE_9__.VBtn, {\n class: \"button primary half outline\",\n onClick: _cache[9] || (_cache[9] = (0,vue__WEBPACK_IMPORTED_MODULE_0__.withModifiers)($event => $data.visible = false, [\"stop\"]))\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createTextVNode)(\"ZRUŠIŤ\")]),\n _: 1 /* STABLE */\n })]),\n\n _: 1 /* STABLE */\n })]),\n\n _: 1 /* STABLE */\n })]),\n\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])], 64 /* STABLE_FRAGMENT */);\n}\n\n/* Vuetify */\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/task/_components/_components/a-task-timeblocks.vue?./node_modules/webpack-plugin-vuetify/dist/scriptLoader.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/templateLoader.js??ruleSet%5B1%5D.rules%5B5%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"render\": function() { return /* binding */ render; }\n/* harmony export */ });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.runtime.esm-bundler.js\");\n/* harmony import */ var vuetify_lib_components_VBtn_index_mjs__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! vuetify/lib/components/VBtn/index.mjs */ \"./node_modules/vuetify/lib/components/VBtn/VBtn.mjs\");\n/* harmony import */ var vuetify_lib_components_VCard_index_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! vuetify/lib/components/VCard/index.mjs */ \"./node_modules/vuetify/lib/components/VCard/VCard.mjs\");\n/* harmony import */ var vuetify_lib_components_VCard_index_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! vuetify/lib/components/VCard/index.mjs */ \"./node_modules/vuetify/lib/components/VCard/VCardActions.mjs\");\n/* harmony import */ var vuetify_lib_components_VDialog_index_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! vuetify/lib/components/VDialog/index.mjs */ \"./node_modules/vuetify/lib/components/VDialog/VDialog.mjs\");\n/* harmony import */ var vuetify_lib_components_VGrid_index_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vuetify/lib/components/VGrid/index.mjs */ \"./node_modules/vuetify/lib/components/VGrid/VRow.mjs\");\n/* harmony import */ var vuetify_lib_components_VGrid_index_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vuetify/lib/components/VGrid/index.mjs */ \"./node_modules/vuetify/lib/components/VGrid/VCol.mjs\");\n/* harmony import */ var vuetify_lib_components_VIcon_index_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! vuetify/lib/components/VIcon/index.mjs */ \"./node_modules/vuetify/lib/components/VIcon/VIcon.mjs\");\n/* harmony import */ var vuetify_lib_components_VSheet_index_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! vuetify/lib/components/VSheet/index.mjs */ \"./node_modules/vuetify/lib/components/VSheet/VSheet.mjs\");\n/* harmony import */ var vuetify_lib_components_VTextField_index_mjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! vuetify/lib/components/VTextField/index.mjs */ \"./node_modules/vuetify/lib/components/VTextField/VTextField.mjs\");\n\nconst _hoisted_1 = {\n class: \"d-flex align-center\"\n};\nconst _hoisted_2 = /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"p\", {\n class: \"mx-3\"\n}, \"Trvanie\", -1 /* HOISTED */);\nconst _hoisted_3 = {\n key: 0,\n class: \"d-flex align-center mb-3\"\n};\nconst _hoisted_4 = /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"p\", {\n class: \"task-badge rounded-pill\"\n}, \"Pridať záznam\", -1 /* HOISTED */);\nconst _hoisted_5 = {\n class: \"d-flex justify-space-between align-center\"\n};\nconst _hoisted_6 = /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"h1\", null, \"Pridať dátum\", -1 /* HOISTED */);\nconst _hoisted_7 = {\n class: \"d-flex justify-space-between align-center\"\n};\nconst _hoisted_8 = {\n class: \"text-red\"\n};\nconst _hoisted_9 = /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"br\", null, null, -1 /* HOISTED */);\nconst _hoisted_10 = {\n class: \"text-black\"\n};\nfunction render(_ctx, _cache, $props, $setup, $data, $options) {\n \n \n \n \n const _component_Datepicker = (0,vue__WEBPACK_IMPORTED_MODULE_0__.resolveComponent)(\"Datepicker\");\n \n \n \n \n \n return (0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(vue__WEBPACK_IMPORTED_MODULE_0__.Fragment, null, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VGrid_index_mjs__WEBPACK_IMPORTED_MODULE_1__.VRow, {\n \"no-gutters\": \"\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VGrid_index_mjs__WEBPACK_IMPORTED_MODULE_2__.VCol, {\n cols: \"5\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VSheet_index_mjs__WEBPACK_IMPORTED_MODULE_3__.VSheet, {\n class: \"py-3\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_1, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VIcon_index_mjs__WEBPACK_IMPORTED_MODULE_4__.VIcon, {\n icon: \"mdi-calendar-week\",\n size: \"large\"\n }), _hoisted_2])]),\n _: 1 /* STABLE */\n })]),\n\n _: 1 /* STABLE */\n }), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VGrid_index_mjs__WEBPACK_IMPORTED_MODULE_2__.VCol, {\n cols: \"7\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VSheet_index_mjs__WEBPACK_IMPORTED_MODULE_3__.VSheet, {\n class: \"py-3\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [!$options.isOffice365Task ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"div\", _hoisted_3, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VIcon_index_mjs__WEBPACK_IMPORTED_MODULE_4__.VIcon, {\n onClick: _cache[0] || (_cache[0] = $event => $data.showModal = true),\n class: \"add-date cursor-pointer mr-2\",\n icon: \"mdi-plus\",\n size: \"medium\"\n }), _hoisted_4])) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true), ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(true), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(vue__WEBPACK_IMPORTED_MODULE_0__.Fragment, null, (0,vue__WEBPACK_IMPORTED_MODULE_0__.renderList)($props.timeblocks, (timeblock, index) => {\n return (0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"div\", {\n key: timeblock.id,\n class: \"d-flex align-center mb-3\"\n }, [!$options.isOffice365Task ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createBlock)(vuetify_lib_components_VIcon_index_mjs__WEBPACK_IMPORTED_MODULE_4__.VIcon, {\n key: 0,\n onClick: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withModifiers)($event => $props.subtask.id ? $options.deleteTimeblock(timeblock) : $options.deleteTimeblockWithoutId(index), [\"stop\"]),\n class: \"circle-border cursor-pointer mr-2\",\n icon: \"mdi-minus\",\n size: \"medium\"\n }, null, 8 /* PROPS */, [\"onClick\"])) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"p\", {\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)([\"task-badge rounded-pill\", {\n 'strike-through': timeblock.is_finished\n }])\n }, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($options.formatTimeblockStart(timeblock)) + \" - \" + (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($options.formatTimeblockEnd(timeblock)), 3 /* TEXT, CLASS */), !$options.isOffice365Task ? (0,vue__WEBPACK_IMPORTED_MODULE_0__.withDirectives)(((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createBlock)(vuetify_lib_components_VIcon_index_mjs__WEBPACK_IMPORTED_MODULE_4__.VIcon, {\n key: 1,\n onClick: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withModifiers)($event => $options.toggleTimeblockIsFinished(timeblock), [\"stop\"]),\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)([\"circle-border cursor-pointer ml-2\", {\n completed: timeblock.is_finished\n }]),\n icon: \"mdi-check\",\n size: \"medium\"\n }, null, 8 /* PROPS */, [\"onClick\", \"class\"])), [[vue__WEBPACK_IMPORTED_MODULE_0__.vShow, $props.subtask.id]]) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true)]);\n }), 128 /* KEYED_FRAGMENT */))]),\n\n _: 1 /* STABLE */\n })]),\n\n _: 1 /* STABLE */\n })]),\n\n _: 1 /* STABLE */\n }), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VDialog_index_mjs__WEBPACK_IMPORTED_MODULE_5__.VDialog, {\n \"max-width\": \"750\",\n modelValue: $data.showModal,\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = $event => $data.showModal = $event),\n persistent: \"\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VCard_index_mjs__WEBPACK_IMPORTED_MODULE_6__.VCard, null, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_5, [_hoisted_6, (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VIcon_index_mjs__WEBPACK_IMPORTED_MODULE_4__.VIcon, {\n onClick: _cache[1] || (_cache[1] = (0,vue__WEBPACK_IMPORTED_MODULE_0__.withModifiers)($event => $options.closeModal(), [\"stop\"])),\n icon: \"mdi-close\",\n size: \"large\"\n })]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VCard_index_mjs__WEBPACK_IMPORTED_MODULE_7__.VCardActions, {\n class: \"mt-10 d-flex flex-column modal-content\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(_component_Datepicker, {\n modelValue: $data.form.date,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $data.form.date = $event),\n format: \"dd.MM.yyyy\",\n locale: \"sk\",\n \"select-text\": \"Vybrať\",\n \"cancel-text\": \"Zrušiť\",\n placeholder: \"Dátum\",\n \"auto-apply\": true,\n \"enable-time-picker\": false,\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)([\"mb-5 modal-input\", {\n error: $data.v$.form.date.$errors.length\n }])\n }, null, 8 /* PROPS */, [\"modelValue\", \"class\"]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VTextField_index_mjs__WEBPACK_IMPORTED_MODULE_8__.VTextField, {\n modelValue: $data.form.starts_at_time,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $data.form.starts_at_time = $event),\n type: \"time\",\n variant: \"solo\",\n \"bg-color\": \"white\",\n hint: $data.v$.form.starts_at_time.$errors ? $data.errorUtils.parseErrors($data.v$.form.starts_at_time.$errors) : null,\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)([{\n error: $data.v$.form.starts_at_time.$errors.length\n }, \"mb-1 modal-input\"]),\n label: \"Začiatok\"\n }, null, 8 /* PROPS */, [\"modelValue\", \"hint\", \"class\"]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VTextField_index_mjs__WEBPACK_IMPORTED_MODULE_8__.VTextField, {\n modelValue: $data.form.ends_at_time,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = $event => $data.form.ends_at_time = $event),\n type: \"time\",\n variant: \"solo\",\n \"bg-color\": \"white\",\n hint: $data.v$.form.ends_at_time.$errors ? $data.errorUtils.parseErrors($data.v$.form.ends_at_time.$errors) : null,\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)([{\n error: $data.v$.form.ends_at_time.$errors.length\n }, \"modal-input\"]),\n label: \"Koniec\"\n }, null, 8 /* PROPS */, [\"modelValue\", \"hint\", \"class\"])]),\n _: 1 /* STABLE */\n }), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VBtn_index_mjs__WEBPACK_IMPORTED_MODULE_9__.VBtn, {\n onClick: _cache[5] || (_cache[5] = $event => $options.submit()),\n class: \"button primary mt-5\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createTextVNode)(\"Potvrdiť\")]),\n _: 1 /* STABLE */\n })]),\n\n _: 1 /* STABLE */\n })]),\n\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VDialog_index_mjs__WEBPACK_IMPORTED_MODULE_5__.VDialog, {\n modelValue: $data.visible,\n \"onUpdate:modelValue\": _cache[10] || (_cache[10] = $event => $data.visible = $event),\n \"max-width\": \"750\",\n persistent: \"\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VCard_index_mjs__WEBPACK_IMPORTED_MODULE_6__.VCard, null, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_7, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"h1\", _hoisted_8, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createTextVNode)(\" Ste si istý, že chcete pridať timeblock po deadline \"), _hoisted_9, (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"b\", _hoisted_10, \"z mastertasku \" + (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($props.subtask?.project_code) + \" ?\", 1 /* TEXT */)]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VIcon_index_mjs__WEBPACK_IMPORTED_MODULE_4__.VIcon, {\n onClick: _cache[7] || (_cache[7] = (0,vue__WEBPACK_IMPORTED_MODULE_0__.withModifiers)($event => $data.visible = false, [\"stop\"])),\n icon: \"mdi-close\",\n size: \"large\",\n class: \"mb-15\"\n })]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VCard_index_mjs__WEBPACK_IMPORTED_MODULE_7__.VCardActions, {\n class: \"mt-10 d-flex justify-start align-center mobile-view\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VBtn_index_mjs__WEBPACK_IMPORTED_MODULE_9__.VBtn, {\n class: \"button primary half\",\n variant: \"flat\",\n onClick: _cache[8] || (_cache[8] = (0,vue__WEBPACK_IMPORTED_MODULE_0__.withModifiers)($event => $options.confirmSubmit(), [\"stop\"]))\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createTextVNode)(\"ÁNO\")]),\n _: 1 /* STABLE */\n }), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VBtn_index_mjs__WEBPACK_IMPORTED_MODULE_9__.VBtn, {\n class: \"button primary half outline\",\n onClick: _cache[9] || (_cache[9] = (0,vue__WEBPACK_IMPORTED_MODULE_0__.withModifiers)($event => $data.visible = false, [\"stop\"]))\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createTextVNode)(\"ZRUŠIŤ\")]),\n _: 1 /* STABLE */\n })]),\n\n _: 1 /* STABLE */\n })]),\n\n _: 1 /* STABLE */\n })]),\n\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])], 64 /* STABLE_FRAGMENT */);\n}\n\n/* Vuetify */\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/task/_components/_components/a-task-timeblocks.vue?./node_modules/webpack-plugin-vuetify/dist/scriptLoader.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/templateLoader.js??ruleSet%5B1%5D.rules%5B5%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D"); /***/ }), @@ -2977,7 +2977,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"render\": function() { return /* binding */ render; }\n/* harmony export */ });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.runtime.esm-bundler.js\");\n/* harmony import */ var vuetify_lib_components_VTextField_index_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vuetify/lib/components/VTextField/index.mjs */ \"./node_modules/vuetify/lib/components/VTextField/VTextField.mjs\");\n\nconst _withScopeId = n => ((0,vue__WEBPACK_IMPORTED_MODULE_0__.pushScopeId)(\"data-v-da2562be\"), n = n(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.popScopeId)(), n);\nconst _hoisted_1 = {\n class: \"timeblock w-100\"\n};\nconst _hoisted_2 = {\n key: 0,\n class: \"x-button\"\n};\nconst _hoisted_3 = {\n class: \"splitted-time-inputs\"\n};\nfunction render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_Datepicker = (0,vue__WEBPACK_IMPORTED_MODULE_0__.resolveComponent)(\"Datepicker\");\n \n return (0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"div\", _hoisted_1, [$props.deletable && $props.editable ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"div\", _hoisted_2, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"button\", {\n onClick: _cache[0] || (_cache[0] = $event => _ctx.$emit('removeTimeblock')),\n class: \"x-button\"\n }, \"x\")])) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", {\n onClick: _cache[1] || (_cache[1] = $event => $options.openDatepicker('datepicker')),\n class: \"datepicker-wrapper\",\n ref: \"datepicker-wrapper\"\n }, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(_component_Datepicker, {\n \"model-value\": $props.timeblock.date,\n ref: \"datepicker\",\n onOpen: $props.onDateOpen,\n \"onUpdate:modelValue\": $options.updateDate,\n format: \"dd.MM.yyyy\",\n locale: \"sk\",\n \"select-text\": \"Vybrať\",\n \"cancel-text\": \"Zrušiť\",\n placeholder: \"Dátum\",\n \"auto-apply\": true,\n \"enable-time-picker\": false,\n class: \"mb-5 modal-input datepicker-input\"\n }, null, 8 /* PROPS */, [\"model-value\", \"onOpen\", \"onUpdate:modelValue\"])], 512 /* NEED_PATCH */), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_3, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VTextField_index_mjs__WEBPACK_IMPORTED_MODULE_1__.VTextField, {\n value: $props.timeblock.starts_at_time,\n onInput: $options.updateStartTime,\n onFocus: $props.onInputFocus,\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)({\n error: $data.v$?.timeblock.starts_at_time.$errors.length\n }),\n type: \"time\",\n variant: \"solo\",\n \"bg-color\": \"white\",\n label: \"Začiatok\"\n }, null, 8 /* PROPS */, [\"value\", \"onInput\", \"onFocus\", \"class\"]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VTextField_index_mjs__WEBPACK_IMPORTED_MODULE_1__.VTextField, {\n value: $props.timeblock.ends_at_time,\n onInput: $options.updateEndTime,\n onFocus: $props.onInputFocus,\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)({\n error: $data.v$?.timeblock.ends_at_time.$errors.length\n }),\n type: \"time\",\n variant: \"solo\",\n \"bg-color\": \"white\",\n label: \"Koniec\"\n }, null, 8 /* PROPS */, [\"value\", \"onInput\", \"onFocus\", \"class\"])])]);\n}\n\n/* Vuetify */\n\n\n\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/task/_components/a-timeblock.vue?./node_modules/webpack-plugin-vuetify/dist/scriptLoader.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/templateLoader.js??ruleSet%5B1%5D.rules%5B5%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"render\": function() { return /* binding */ render; }\n/* harmony export */ });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.runtime.esm-bundler.js\");\n/* harmony import */ var vuetify_lib_components_VTextField_index_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vuetify/lib/components/VTextField/index.mjs */ \"./node_modules/vuetify/lib/components/VTextField/VTextField.mjs\");\n\nconst _withScopeId = n => ((0,vue__WEBPACK_IMPORTED_MODULE_0__.pushScopeId)(\"data-v-da2562be\"), n = n(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.popScopeId)(), n);\nconst _hoisted_1 = {\n class: \"timeblock w-100\"\n};\nconst _hoisted_2 = {\n key: 0,\n class: \"x-button\"\n};\nconst _hoisted_3 = {\n class: \"splitted-time-inputs\"\n};\nfunction render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_Datepicker = (0,vue__WEBPACK_IMPORTED_MODULE_0__.resolveComponent)(\"Datepicker\");\n \n return (0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"div\", _hoisted_1, [$props.deletable && $props.editable ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"div\", _hoisted_2, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"button\", {\n onClick: _cache[0] || (_cache[0] = $event => _ctx.$emit('removeTimeblock')),\n class: \"x-button\"\n }, \"x\")])) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", {\n onClick: _cache[1] || (_cache[1] = (...args) => $options.handleDatepickerClick && $options.handleDatepickerClick(...args)),\n class: \"datepicker-wrapper\",\n ref: `timeblock-datepicker-wrapper-${$props.index}`\n }, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(_component_Datepicker, {\n \"model-value\": $props.timeblock.date,\n ref: `timeblock-datepicker-${$props.index}`,\n \"onUpdate:modelValue\": $options.updateDate,\n format: \"dd.MM.yyyy\",\n locale: \"sk\",\n \"select-text\": \"Vybrať\",\n \"cancel-text\": \"Zrušiť\",\n placeholder: \"Dátum\",\n \"auto-apply\": true,\n \"enable-time-picker\": false,\n class: \"mb-5 modal-input datepicker-input\"\n }, null, 8 /* PROPS */, [\"model-value\", \"onUpdate:modelValue\"])], 512 /* NEED_PATCH */), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_3, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VTextField_index_mjs__WEBPACK_IMPORTED_MODULE_1__.VTextField, {\n value: $props.timeblock.starts_at_time,\n onInput: $options.updateStartTime,\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)({\n error: $data.v$?.timeblock.starts_at_time.$errors.length\n }),\n type: \"time\",\n variant: \"solo\",\n \"bg-color\": \"white\",\n label: \"Začiatok\"\n }, null, 8 /* PROPS */, [\"value\", \"onInput\", \"class\"]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VTextField_index_mjs__WEBPACK_IMPORTED_MODULE_1__.VTextField, {\n value: $props.timeblock.ends_at_time,\n onInput: $options.updateEndTime,\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)({\n error: $data.v$?.timeblock.ends_at_time.$errors.length\n }),\n type: \"time\",\n variant: \"solo\",\n \"bg-color\": \"white\",\n label: \"Koniec\"\n }, null, 8 /* PROPS */, [\"value\", \"onInput\", \"class\"])])]);\n}\n\n/* Vuetify */\n\n\n\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/task/_components/a-timeblock.vue?./node_modules/webpack-plugin-vuetify/dist/scriptLoader.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/templateLoader.js??ruleSet%5B1%5D.rules%5B5%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D"); /***/ }), @@ -2999,7 +2999,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"render\": function() { return /* binding */ render; }\n/* harmony export */ });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.runtime.esm-bundler.js\");\n/* harmony import */ var vuetify_lib_components_VBtn_index_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! vuetify/lib/components/VBtn/index.mjs */ \"./node_modules/vuetify/lib/components/VBtn/VBtn.mjs\");\n/* harmony import */ var vuetify_lib_components_VCard_index_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vuetify/lib/components/VCard/index.mjs */ \"./node_modules/vuetify/lib/components/VCard/VCard.mjs\");\n/* harmony import */ var vuetify_lib_components_VCard_index_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! vuetify/lib/components/VCard/index.mjs */ \"./node_modules/vuetify/lib/components/VCard/VCardActions.mjs\");\n/* harmony import */ var vuetify_lib_components_VDialog_index_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vuetify/lib/components/VDialog/index.mjs */ \"./node_modules/vuetify/lib/components/VDialog/VDialog.mjs\");\n/* harmony import */ var vuetify_lib_components_VIcon_index_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! vuetify/lib/components/VIcon/index.mjs */ \"./node_modules/vuetify/lib/components/VIcon/VIcon.mjs\");\n\nconst _hoisted_1 = {\n class: \"d-flex justify-space-between align-center\"\n};\nfunction render(_ctx, _cache, $props, $setup, $data, $options) {\n \n \n \n \n \n return (0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createBlock)(vuetify_lib_components_VDialog_index_mjs__WEBPACK_IMPORTED_MODULE_1__.VDialog, {\n modelValue: $data.visible,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $data.visible = $event),\n \"max-width\": \"750\",\n persistent: \"\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VCard_index_mjs__WEBPACK_IMPORTED_MODULE_2__.VCard, null, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_1, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"h1\", null, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createTextVNode)(\"Ste si istý, že chcete \" + (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($data.subtask.is_finished ? 'znovu otvoriť' : 'dokončiť') + \" sub task, z mastertasku \", 1 /* TEXT */), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"b\", null, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($data.subtask?.master_task?.name || $data.subtask.master_task), 1 /* TEXT */), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createTextVNode)(\"?\")]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VIcon_index_mjs__WEBPACK_IMPORTED_MODULE_3__.VIcon, {\n onClick: _cache[0] || (_cache[0] = (0,vue__WEBPACK_IMPORTED_MODULE_0__.withModifiers)($event => $options.closeModal(), [\"stop\"])),\n icon: \"mdi-close\",\n size: \"large\"\n })]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VCard_index_mjs__WEBPACK_IMPORTED_MODULE_4__.VCardActions, {\n class: \"mt-10 d-flex justify-start align-center mobile-view\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VBtn_index_mjs__WEBPACK_IMPORTED_MODULE_5__.VBtn, {\n class: \"button primary half\",\n variant: \"flat\",\n onClick: _cache[1] || (_cache[1] = $event => $options.complete())\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createTextVNode)(\"ÁNO\")]),\n _: 1 /* STABLE */\n }), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VBtn_index_mjs__WEBPACK_IMPORTED_MODULE_5__.VBtn, {\n class: \"button primary half outline\",\n onClick: _cache[2] || (_cache[2] = (0,vue__WEBPACK_IMPORTED_MODULE_0__.withModifiers)($event => $data.visible = false, [\"stop\"]))\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createTextVNode)(\"ZRUŠIŤ\")]),\n _: 1 /* STABLE */\n })]),\n\n _: 1 /* STABLE */\n })]),\n\n _: 1 /* STABLE */\n })]),\n\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"]);\n}\n\n/* Vuetify */\n\n\n\n\n\n\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/task/z-complete-task-modal.vue?./node_modules/webpack-plugin-vuetify/dist/scriptLoader.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/templateLoader.js??ruleSet%5B1%5D.rules%5B5%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"render\": function() { return /* binding */ render; }\n/* harmony export */ });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.runtime.esm-bundler.js\");\n/* harmony import */ var vuetify_lib_components_VBtn_index_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! vuetify/lib/components/VBtn/index.mjs */ \"./node_modules/vuetify/lib/components/VBtn/VBtn.mjs\");\n/* harmony import */ var vuetify_lib_components_VCard_index_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vuetify/lib/components/VCard/index.mjs */ \"./node_modules/vuetify/lib/components/VCard/VCard.mjs\");\n/* harmony import */ var vuetify_lib_components_VCard_index_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! vuetify/lib/components/VCard/index.mjs */ \"./node_modules/vuetify/lib/components/VCard/VCardActions.mjs\");\n/* harmony import */ var vuetify_lib_components_VDialog_index_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vuetify/lib/components/VDialog/index.mjs */ \"./node_modules/vuetify/lib/components/VDialog/VDialog.mjs\");\n/* harmony import */ var vuetify_lib_components_VIcon_index_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! vuetify/lib/components/VIcon/index.mjs */ \"./node_modules/vuetify/lib/components/VIcon/VIcon.mjs\");\n\nconst _hoisted_1 = {\n class: \"d-flex justify-space-between align-center\"\n};\nfunction render(_ctx, _cache, $props, $setup, $data, $options) {\n \n \n \n \n \n return (0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createBlock)(vuetify_lib_components_VDialog_index_mjs__WEBPACK_IMPORTED_MODULE_1__.VDialog, {\n modelValue: $data.visible,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $data.visible = $event),\n \"max-width\": \"750\",\n persistent: \"\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VCard_index_mjs__WEBPACK_IMPORTED_MODULE_2__.VCard, null, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_1, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"h1\", null, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createTextVNode)(\" Ste si istý, že chcete \" + (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($data.subtask.is_finished ? 'znovu otvoriť' : 'dokončiť') + \" sub task, z mastertasku \", 1 /* TEXT */), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"b\", null, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($data.subtask?.master_task?.name || $data.subtask.master_task), 1 /* TEXT */), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createTextVNode)(\"? \")]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VIcon_index_mjs__WEBPACK_IMPORTED_MODULE_3__.VIcon, {\n onClick: _cache[0] || (_cache[0] = (0,vue__WEBPACK_IMPORTED_MODULE_0__.withModifiers)($event => $options.closeModal(), [\"stop\"])),\n icon: \"mdi-close\",\n size: \"large\"\n })]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VCard_index_mjs__WEBPACK_IMPORTED_MODULE_4__.VCardActions, {\n class: \"mt-10 d-flex justify-start align-center mobile-view\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VBtn_index_mjs__WEBPACK_IMPORTED_MODULE_5__.VBtn, {\n class: \"button primary half\",\n variant: \"flat\",\n onClick: _cache[1] || (_cache[1] = $event => $options.complete())\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createTextVNode)(\"ÁNO\")]),\n _: 1 /* STABLE */\n }), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VBtn_index_mjs__WEBPACK_IMPORTED_MODULE_5__.VBtn, {\n class: \"button primary half outline\",\n onClick: _cache[2] || (_cache[2] = (0,vue__WEBPACK_IMPORTED_MODULE_0__.withModifiers)($event => $data.visible = false, [\"stop\"]))\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createTextVNode)(\"ZRUŠIŤ\")]),\n _: 1 /* STABLE */\n })]),\n\n _: 1 /* STABLE */\n })]),\n\n _: 1 /* STABLE */\n })]),\n\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"]);\n}\n\n/* Vuetify */\n\n\n\n\n\n\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/task/z-complete-task-modal.vue?./node_modules/webpack-plugin-vuetify/dist/scriptLoader.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/templateLoader.js??ruleSet%5B1%5D.rules%5B5%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D"); /***/ }), @@ -3043,7 +3043,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"render\": function() { return /* binding */ render; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.push.js */ \"./node_modules/core-js/modules/es.array.push.js\");\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.runtime.esm-bundler.js\");\n/* harmony import */ var vuetify_lib_components_VAutocomplete_index_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! vuetify/lib/components/VAutocomplete/index.mjs */ \"./node_modules/vuetify/lib/components/VAutocomplete/VAutocomplete.mjs\");\n/* harmony import */ var vuetify_lib_components_VBtn_index_mjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! vuetify/lib/components/VBtn/index.mjs */ \"./node_modules/vuetify/lib/components/VBtn/VBtn.mjs\");\n/* harmony import */ var vuetify_lib_components_VCard_index_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! vuetify/lib/components/VCard/index.mjs */ \"./node_modules/vuetify/lib/components/VCard/VCard.mjs\");\n/* harmony import */ var vuetify_lib_components_VCard_index_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! vuetify/lib/components/VCard/index.mjs */ \"./node_modules/vuetify/lib/components/VCard/VCardActions.mjs\");\n/* harmony import */ var vuetify_lib_components_VDialog_index_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vuetify/lib/components/VDialog/index.mjs */ \"./node_modules/vuetify/lib/components/VDialog/VDialog.mjs\");\n/* harmony import */ var vuetify_lib_components_VIcon_index_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! vuetify/lib/components/VIcon/index.mjs */ \"./node_modules/vuetify/lib/components/VIcon/VIcon.mjs\");\n/* harmony import */ var vuetify_lib_components_VTextField_index_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! vuetify/lib/components/VTextField/index.mjs */ \"./node_modules/vuetify/lib/components/VTextField/VTextField.mjs\");\n\n\nconst _withScopeId = n => ((0,vue__WEBPACK_IMPORTED_MODULE_1__.pushScopeId)(\"data-v-1c35a9a1\"), n = n(), (0,vue__WEBPACK_IMPORTED_MODULE_1__.popScopeId)(), n);\nconst _hoisted_1 = {\n class: \"d-flex justify-space-between align-center modal-header\"\n};\nconst _hoisted_2 = {\n class: \"splitted-inputs\"\n};\nconst _hoisted_3 = /*#__PURE__*/_withScopeId(() => /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementVNode)(\"path\", {\n d: \"M23.057 7.057l-16 16c-0.52 0.52-0.52 1.365 0 1.885s1.365 0.52 1.885 0l16-16c0.52-0.52 0.52-1.365 0-1.885s-1.365-0.52-1.885 0z\"\n}, null, -1 /* HOISTED */));\nconst _hoisted_4 = /*#__PURE__*/_withScopeId(() => /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementVNode)(\"path\", {\n d: \"M7.057 8.943l16 16c0.52 0.52 1.365 0.52 1.885 0s0.52-1.365 0-1.885l-16-16c-0.52-0.52-1.365-0.52-1.885 0s-0.52 1.365 0 1.885z\"\n}, null, -1 /* HOISTED */));\nconst _hoisted_5 = [_hoisted_3, _hoisted_4];\nconst _hoisted_6 = [\"onClick\"];\nconst _hoisted_7 = /*#__PURE__*/_withScopeId(() => /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementVNode)(\"path\", {\n d: \"M23.057 7.057l-16 16c-0.52 0.52-0.52 1.365 0 1.885s1.365 0.52 1.885 0l16-16c0.52-0.52 0.52-1.365 0-1.885s-1.365-0.52-1.885 0z\"\n}, null, -1 /* HOISTED */));\nconst _hoisted_8 = /*#__PURE__*/_withScopeId(() => /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementVNode)(\"path\", {\n d: \"M7.057 8.943l16 16c0.52 0.52 1.365 0.52 1.885 0s0.52-1.365 0-1.885l-16-16c-0.52-0.52-1.365-0.52-1.885 0s-0.52 1.365 0 1.885z\"\n}, null, -1 /* HOISTED */));\nconst _hoisted_9 = [_hoisted_7, _hoisted_8];\nconst _hoisted_10 = {\n key: 2,\n class: \"timeblocks w-100\"\n};\nconst _hoisted_11 = {\n class: \"end-button w-100\"\n};\nconst _hoisted_12 = {\n class: \"splitted-time-inputs w-100\"\n};\nconst _hoisted_13 = {\n class: \"w-100 modal-input\"\n};\nconst _hoisted_14 = {\n class: \"d-flex justify-space-between align-center\"\n};\nconst _hoisted_15 = {\n class: \"d-flex justify-space-between align-center modal-header border-bottom pb-4\"\n};\nconst _hoisted_16 = {\n class: \"d-flex justify-start\"\n};\nconst _hoisted_17 = [\"src\"];\nconst _hoisted_18 = [\"src\"];\nconst _hoisted_19 = {\n class: \"w-100\"\n};\nconst _hoisted_20 = {\n class: \"d-flex justify-start align-center mt-8\"\n};\nfunction render(_ctx, _cache, $props, $setup, $data, $options) {\n \n \n \n const _component_Datepicker = (0,vue__WEBPACK_IMPORTED_MODULE_1__.resolveComponent)(\"Datepicker\");\n const _component_A_timeblock = (0,vue__WEBPACK_IMPORTED_MODULE_1__.resolveComponent)(\"A-timeblock\");\n const _component_QuillEditor = (0,vue__WEBPACK_IMPORTED_MODULE_1__.resolveComponent)(\"QuillEditor\");\n const _component_Z_files_upload = (0,vue__WEBPACK_IMPORTED_MODULE_1__.resolveComponent)(\"Z-files-upload\");\n \n \n \n const _component_Z_task_readonly_info = (0,vue__WEBPACK_IMPORTED_MODULE_1__.resolveComponent)(\"Z-task-readonly-info\");\n const _component_W_loadable = (0,vue__WEBPACK_IMPORTED_MODULE_1__.resolveComponent)(\"W-loadable\");\n \n return (0,vue__WEBPACK_IMPORTED_MODULE_1__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createBlock)(vuetify_lib_components_VDialog_index_mjs__WEBPACK_IMPORTED_MODULE_2__.VDialog, {\n modelValue: $data.visible,\n \"onUpdate:modelValue\": _cache[22] || (_cache[22] = $event => $data.visible = $event),\n \"max-width\": \"750\",\n \"max-height\": \"90%\",\n height: \"700px\",\n persistent: \"\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_1__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_1__.createVNode)(_component_W_loadable, {\n content: $data.subtask,\n class: \"h-100\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_1__.withCtx)(() => [$data.editMode ? ((0,vue__WEBPACK_IMPORTED_MODULE_1__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createBlock)(vuetify_lib_components_VCard_index_mjs__WEBPACK_IMPORTED_MODULE_3__.VCard, {\n key: 0,\n height: \"100%\",\n class: \"d-flex flex-column scrolling\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_1__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementVNode)(\"div\", _hoisted_1, [(0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementVNode)(\"h1\", null, (0,vue__WEBPACK_IMPORTED_MODULE_1__.toDisplayString)($data.subtask?.id ? 'Upraviť sub task' : 'Vytvoriť sub task'), 1 /* TEXT */), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createVNode)(vuetify_lib_components_VIcon_index_mjs__WEBPACK_IMPORTED_MODULE_4__.VIcon, {\n onClick: _cache[0] || (_cache[0] = (0,vue__WEBPACK_IMPORTED_MODULE_1__.withModifiers)($event => $options.closeModal(), [\"stop\"])),\n icon: \"mdi-close\",\n size: \"large\"\n })]), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createVNode)(vuetify_lib_components_VCard_index_mjs__WEBPACK_IMPORTED_MODULE_5__.VCardActions, {\n class: \"d-flex flex-column modal-content\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_1__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_1__.createVNode)(vuetify_lib_components_VTextField_index_mjs__WEBPACK_IMPORTED_MODULE_6__.VTextField, {\n modelValue: $data.subtask.project_code,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $data.subtask.project_code = $event),\n label: \"Kód projektu\",\n value: $data.subtask.project_code,\n onFocus: _ctx.onInputFocus,\n class: \"modal-input\",\n variant: \"solo\",\n disabled: \"\"\n }, null, 8 /* PROPS */, [\"modelValue\", \"value\", \"onFocus\"]), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createVNode)(vuetify_lib_components_VAutocomplete_index_mjs__WEBPACK_IMPORTED_MODULE_7__.VAutocomplete, {\n \"custom-filter\": _ctx.customFilter,\n \"match-any\": true,\n modelValue: $data.subtask.master_task_id,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $data.subtask.master_task_id = $event),\n label: \"Master task\",\n class: (0,vue__WEBPACK_IMPORTED_MODULE_1__.normalizeClass)([{\n error: $data.v$.subtask.master_task_id.$errors.length\n }, \"modal-input\"]),\n items: _ctx.mastertasks,\n \"item-title\": item => item.name + ' [' + item.project_code + ']',\n \"item-value\": \"id\",\n variant: \"solo\",\n clearable: \"\",\n onFocus: _ctx.onInputFocus\n }, null, 8 /* PROPS */, [\"custom-filter\", \"modelValue\", \"class\", \"items\", \"item-title\", \"onFocus\"]), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createVNode)(vuetify_lib_components_VTextField_index_mjs__WEBPACK_IMPORTED_MODULE_6__.VTextField, {\n modelValue: $data.subtask.title,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $data.subtask.title = $event),\n onFocus: _ctx.onInputFocus,\n class: \"modal-input\",\n label: \"Názov subtasku\",\n variant: \"solo\"\n }, null, 8 /* PROPS */, [\"modelValue\", \"onFocus\"]), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementVNode)(\"div\", _hoisted_2, [(0,vue__WEBPACK_IMPORTED_MODULE_1__.createCommentVNode)(\" TODO: Bialko validacie \"), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementVNode)(\"div\", {\n onClick: _cache[5] || (_cache[5] = $event => $options.openDatepicker('datepicker-01')),\n class: \"datepicker-wrapper\"\n }, [(0,vue__WEBPACK_IMPORTED_MODULE_1__.createVNode)(_component_Datepicker, {\n modelValue: $data.subtask.deadline,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = $event => $data.subtask.deadline = $event),\n onOpen: _ctx.onDateOpen,\n ref: \"datepicker-01\",\n \"auto-apply\": true,\n \"min-date\": new Date(),\n class: (0,vue__WEBPACK_IMPORTED_MODULE_1__.normalizeClass)([\"modal-input left datepicker-input\", {\n error: $data.v$.subtask.deadline.$errors?.length\n }]),\n format: \"dd.MM.yyyy\",\n locale: \"sk\",\n \"select-text\": \"Vybrať\",\n \"cancel-text\": \"Zrušiť\",\n placeholder: \"Deadline\",\n validations: $data.v$.subtask.deadline\n }, null, 8 /* PROPS */, [\"modelValue\", \"onOpen\", \"min-date\", \"class\", \"validations\"])]), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createVNode)(vuetify_lib_components_VTextField_index_mjs__WEBPACK_IMPORTED_MODULE_6__.VTextField, {\n class: (0,vue__WEBPACK_IMPORTED_MODULE_1__.normalizeClass)([\"modal-input right\", {\n error: $data.v$.subtask._deadline_time.$errors.length\n }]),\n variant: \"solo\",\n modelValue: $data.subtask._deadline_time,\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = $event => $data.subtask._deadline_time = $event),\n label: \"Čas\",\n \"append-inner-icon\": \"mdi-clock-outline\",\n type: \"time\",\n onFocus: _ctx.onInputFocus,\n hint: $data.v$.subtask._deadline_time.$errors ? $data.errorUtils.parseErrors($data.v$.subtask._deadline_time.$errors) : null\n }, null, 8 /* PROPS */, [\"modelValue\", \"onFocus\", \"class\", \"hint\"])]), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createCommentVNode)(\" TODO: Toto tu nema byt ci? \"), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createCommentVNode)(\"
\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t
\"), $data.subtask.id ? ((0,vue__WEBPACK_IMPORTED_MODULE_1__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementBlock)(vue__WEBPACK_IMPORTED_MODULE_1__.Fragment, {\n key: 0\n }, [(0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementVNode)(\"div\", {\n class: (0,vue__WEBPACK_IMPORTED_MODULE_1__.normalizeClass)([\"employee-wrapper\", {\n 'hide-arrow': $data.subtask.employee_id\n }])\n }, [$data.subtask.employee_id ? ((0,vue__WEBPACK_IMPORTED_MODULE_1__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementBlock)(\"svg\", {\n key: 0,\n version: \"1.1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"32\",\n height: \"32\",\n viewBox: \"0 0 32 32\",\n class: \"dp__icon dp__clear_icon dp__input_icons\",\n \"data-test\": \"clear-icon\",\n onClick: _cache[7] || (_cache[7] = (0,vue__WEBPACK_IMPORTED_MODULE_1__.withModifiers)($event => {\n $options.handleOnRemoveEmployee();\n $data.subtask.employee_id = null;\n $data.subtask.employee = null;\n }, [\"prevent\"]))\n }, _hoisted_5)) : (0,vue__WEBPACK_IMPORTED_MODULE_1__.createCommentVNode)(\"v-if\", true), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createVNode)(vuetify_lib_components_VAutocomplete_index_mjs__WEBPACK_IMPORTED_MODULE_7__.VAutocomplete, {\n \"custom-filter\": _ctx.customFilter,\n \"match-any\": true,\n modelValue: $data.subtask.employee_id,\n \"onUpdate:modelValue\": [_cache[8] || (_cache[8] = $event => $data.subtask.employee_id = $event), _cache[9] || (_cache[9] = $event => $data.employeeValidations[0] ? $data.employeeValidations[0].employee = false : null)],\n label: \"Priradený\",\n items: _ctx.enrichedEmployees,\n \"item-title\": \"_fullName\",\n \"item-value\": \"id\",\n variant: \"solo\",\n class: (0,vue__WEBPACK_IMPORTED_MODULE_1__.normalizeClass)([\"modal-input\", {\n error: $data.employeeValidations[0]?.employee\n }])\n }, null, 8 /* PROPS */, [\"custom-filter\", \"modelValue\", \"items\", \"class\"])], 2 /* CLASS */), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createVNode)(vuetify_lib_components_VTextField_index_mjs__WEBPACK_IMPORTED_MODULE_6__.VTextField, {\n modelValue: $data.subtask.duration,\n \"onUpdate:modelValue\": [_cache[10] || (_cache[10] = $event => $data.subtask.duration = $event), _cache[11] || (_cache[11] = $event => $data.employeeValidations[0] ? $data.employeeValidations[0].duration = false : null)],\n class: (0,vue__WEBPACK_IMPORTED_MODULE_1__.normalizeClass)([\"modal-input\", {\n error: $data.employeeValidations[0]?.duration\n }]),\n variant: \"solo\",\n type: \"number\",\n label: \"Časový odhad\",\n \"append-inner-icon\": \"mdi-clock-outline\",\n onFocus: _ctx.onInputFocus\n }, null, 8 /* PROPS */, [\"modelValue\", \"class\", \"onFocus\"])], 64 /* STABLE_FRAGMENT */)) : ((0,vue__WEBPACK_IMPORTED_MODULE_1__.openBlock)(true), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementBlock)(vue__WEBPACK_IMPORTED_MODULE_1__.Fragment, {\n key: 1\n }, (0,vue__WEBPACK_IMPORTED_MODULE_1__.renderList)($data.subtask.employees, (employee, index) => {\n return (0,vue__WEBPACK_IMPORTED_MODULE_1__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementBlock)(\"div\", {\n key: `employee-${index}`,\n class: (0,vue__WEBPACK_IMPORTED_MODULE_1__.normalizeClass)([\"splitted-inputs remove-employee\", {\n 'hide-arrow': employee?.id\n }])\n }, [(0,vue__WEBPACK_IMPORTED_MODULE_1__.createVNode)(vuetify_lib_components_VAutocomplete_index_mjs__WEBPACK_IMPORTED_MODULE_7__.VAutocomplete, {\n \"custom-filter\": _ctx.customFilter,\n \"match-any\": true,\n modelValue: employee.id,\n \"onUpdate:modelValue\": [$event => employee.id = $event, $event => $data.employeeValidations[index] ? $data.employeeValidations[index].employee = false : null],\n label: \"Priradený\",\n items: _ctx.enrichedEmployees,\n \"item-title\": \"_fullName\",\n \"item-value\": \"id\",\n variant: \"solo\",\n class: (0,vue__WEBPACK_IMPORTED_MODULE_1__.normalizeClass)([\"modal-input left\", {\n error: $data.employeeValidations[index]?.employee\n }])\n }, null, 8 /* PROPS */, [\"custom-filter\", \"modelValue\", \"onUpdate:modelValue\", \"items\", \"class\"]), employee.id ? ((0,vue__WEBPACK_IMPORTED_MODULE_1__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementBlock)(\"svg\", {\n key: 0,\n version: \"1.1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"32\",\n height: \"32\",\n viewBox: \"0 0 32 32\",\n class: \"dp__icon dp__clear_icon dp__input_icons\",\n \"data-test\": \"clear-icon\",\n onClick: (0,vue__WEBPACK_IMPORTED_MODULE_1__.withModifiers)($event => {\n $options.handleOnRemoveEmployee();\n employee.id = null;\n }, [\"prevent\"])\n }, _hoisted_9, 8 /* PROPS */, _hoisted_6)) : (0,vue__WEBPACK_IMPORTED_MODULE_1__.createCommentVNode)(\"v-if\", true), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createVNode)(vuetify_lib_components_VTextField_index_mjs__WEBPACK_IMPORTED_MODULE_6__.VTextField, {\n modelValue: employee.duration,\n \"onUpdate:modelValue\": [$event => employee.duration = $event, $event => $data.employeeValidations[index] ? $data.employeeValidations[index].duration = false : null],\n class: (0,vue__WEBPACK_IMPORTED_MODULE_1__.normalizeClass)([\"modal-input right\", {\n error: $data.employeeValidations[index]?.duration\n }]),\n variant: \"solo\",\n type: \"number\",\n label: \"Časový odhad\",\n \"append-inner-icon\": \"mdi-clock-outline\",\n onFocus: _ctx.onInputFocus\n }, null, 8 /* PROPS */, [\"modelValue\", \"onUpdate:modelValue\", \"class\", \"onFocus\"])], 2 /* CLASS */);\n }), 128 /* KEYED_FRAGMENT */)), !$data.subtask.id ? ((0,vue__WEBPACK_IMPORTED_MODULE_1__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementBlock)(\"div\", _hoisted_10, [((0,vue__WEBPACK_IMPORTED_MODULE_1__.openBlock)(true), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementBlock)(vue__WEBPACK_IMPORTED_MODULE_1__.Fragment, null, (0,vue__WEBPACK_IMPORTED_MODULE_1__.renderList)($data.timeblocks, (timeblock, index) => {\n return (0,vue__WEBPACK_IMPORTED_MODULE_1__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createBlock)(_component_A_timeblock, {\n key: index,\n onUpdateTimeblock: val => $options.updateTimeblock(val, index),\n onRemoveTimeblock: $event => $options.removeTimeblock(index),\n timeblock: timeblock,\n deletable: index > 0,\n editable: \"\",\n ref_for: true,\n ref: `timetable-${index}`,\n \"prevent-input-focus\": _ctx.preventInputFocus,\n \"on-input-focus\": _ctx.onInputFocus,\n \"on-date-open\": _ctx.onDateOpen\n }, null, 8 /* PROPS */, [\"onUpdateTimeblock\", \"onRemoveTimeblock\", \"timeblock\", \"deletable\", \"prevent-input-focus\", \"on-input-focus\", \"on-date-open\"]);\n }), 128 /* KEYED_FRAGMENT */)), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementVNode)(\"div\", _hoisted_11, [(0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementVNode)(\"button\", {\n onClick: _cache[12] || (_cache[12] = $event => $data.timeblocks.push({\n date: null,\n starts_at_time: null,\n ends_at_time: null\n }))\n }, \" Pridať časový blok \")])])) : ((0,vue__WEBPACK_IMPORTED_MODULE_1__.openBlock)(true), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementBlock)(vue__WEBPACK_IMPORTED_MODULE_1__.Fragment, {\n key: 3\n }, (0,vue__WEBPACK_IMPORTED_MODULE_1__.renderList)($data.subtask.timeblocks, (timeblock, index) => {\n return (0,vue__WEBPACK_IMPORTED_MODULE_1__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementBlock)(\"div\", {\n key: index,\n class: \"timeblock w-100\"\n }, [(0,vue__WEBPACK_IMPORTED_MODULE_1__.createVNode)(_component_Datepicker, {\n \"model-value\": timeblock.start.substring(0, 10),\n format: \"dd.MM.yyyy\",\n locale: \"sk\",\n \"select-text\": \"Vybrať\",\n \"cancel-text\": \"Zrušiť\",\n placeholder: \"Dátum\",\n \"auto-apply\": true,\n \"enable-time-picker\": false,\n readonly: \"\",\n class: \"mb-5 modal-input\"\n }, null, 8 /* PROPS */, [\"model-value\"]), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementVNode)(\"div\", _hoisted_12, [(0,vue__WEBPACK_IMPORTED_MODULE_1__.createVNode)(vuetify_lib_components_VTextField_index_mjs__WEBPACK_IMPORTED_MODULE_6__.VTextField, {\n value: timeblock.start.substring(11, 16),\n type: \"time\",\n variant: \"solo\",\n \"bg-color\": \"white\",\n label: \"Začiatok\"\n }, null, 8 /* PROPS */, [\"value\"]), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createVNode)(vuetify_lib_components_VTextField_index_mjs__WEBPACK_IMPORTED_MODULE_6__.VTextField, {\n value: timeblock.end.substring(11, 16),\n type: \"time\",\n variant: \"solo\",\n \"bg-color\": \"white\",\n label: \"Koniec\"\n }, null, 8 /* PROPS */, [\"value\"])])]);\n }), 128 /* KEYED_FRAGMENT */)), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementVNode)(\"div\", _hoisted_13, [(0,vue__WEBPACK_IMPORTED_MODULE_1__.createVNode)(_component_QuillEditor, {\n ref: \"description\",\n modelValue: $data.subtask.description,\n \"onUpdate:modelValue\": _cache[13] || (_cache[13] = $event => $data.subtask.description = $event),\n placeholder: \"Popis\",\n theme: \"snow\",\n class: \"rich-text-editor\",\n onInput: _cache[14] || (_cache[14] = $event => $data.subtask.description = $event.srcElement.innerHTML)\n }, null, 8 /* PROPS */, [\"modelValue\"])]), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createVNode)(_component_Z_files_upload, {\n class: \"mt-15 files\",\n files: $data.subtask.files,\n onFilesUploaded: $options.filesUploaded,\n \"is-saving\": $data.isSaving\n }, null, 8 /* PROPS */, [\"files\", \"onFilesUploaded\", \"is-saving\"])]),\n _: 1 /* STABLE */\n }), !$data.isSaving ? ((0,vue__WEBPACK_IMPORTED_MODULE_1__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createBlock)(vuetify_lib_components_VBtn_index_mjs__WEBPACK_IMPORTED_MODULE_8__.VBtn, {\n key: 0,\n class: \"button primary\",\n onClick: _cache[15] || (_cache[15] = $event => $options.save())\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_1__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_1__.createTextVNode)((0,vue__WEBPACK_IMPORTED_MODULE_1__.toDisplayString)($data.subtask.id ? 'UPRAVIŤ' : 'VYTVORIŤ'), 1 /* TEXT */)]),\n\n _: 1 /* STABLE */\n })) : ((0,vue__WEBPACK_IMPORTED_MODULE_1__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createBlock)(vuetify_lib_components_VBtn_index_mjs__WEBPACK_IMPORTED_MODULE_8__.VBtn, {\n key: 1,\n class: \"button primary disabled\",\n disabled: \"\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_1__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_1__.createTextVNode)((0,vue__WEBPACK_IMPORTED_MODULE_1__.toDisplayString)(_ctx.$t('Ukladám...')), 1 /* TEXT */)]),\n\n _: 1 /* STABLE */\n }))]),\n\n _: 1 /* STABLE */\n })) : ((0,vue__WEBPACK_IMPORTED_MODULE_1__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createBlock)(vuetify_lib_components_VCard_index_mjs__WEBPACK_IMPORTED_MODULE_3__.VCard, {\n key: 1,\n height: \"100%\",\n class: \"d-flex flex-column scrolling\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_1__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementVNode)(\"div\", _hoisted_14, [(0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementVNode)(\"div\", null, [(0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementVNode)(\"p\", null, (0,vue__WEBPACK_IMPORTED_MODULE_1__.toDisplayString)($data.subtask._master_task.project_code), 1 /* TEXT */), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementVNode)(\"h1\", null, (0,vue__WEBPACK_IMPORTED_MODULE_1__.toDisplayString)($data.subtask._master_task.name), 1 /* TEXT */)]), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createVNode)(vuetify_lib_components_VIcon_index_mjs__WEBPACK_IMPORTED_MODULE_4__.VIcon, {\n onClick: _cache[16] || (_cache[16] = (0,vue__WEBPACK_IMPORTED_MODULE_1__.withModifiers)($event => $options.closeModal(), [\"stop\"])),\n icon: \"mdi-close\",\n size: \"large\",\n class: \"pb-5\"\n })]), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementVNode)(\"div\", _hoisted_15, [(0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementVNode)(\"h1\", null, (0,vue__WEBPACK_IMPORTED_MODULE_1__.toDisplayString)($data.subtask.title), 1 /* TEXT */), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementVNode)(\"div\", _hoisted_16, [(0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementVNode)(\"img\", {\n class: \"icon\",\n src: __webpack_require__(/*! @/plugins/app/_img/icons/pencil.svg */ \"./src/plugins/app/_img/icons/pencil.svg\"),\n alt: \"pencil-icon\",\n onClick: _cache[17] || (_cache[17] = (0,vue__WEBPACK_IMPORTED_MODULE_1__.withModifiers)((...args) => $options.toggleEditMode && $options.toggleEditMode(...args), [\"stop\"]))\n }, null, 8 /* PROPS */, _hoisted_17), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementVNode)(\"img\", {\n class: \"icon trash\",\n src: __webpack_require__(/*! @/plugins/app/_img/icons/bin.svg */ \"./src/plugins/app/_img/icons/bin.svg\"),\n alt: \"trash-icon\",\n onClick: _cache[18] || (_cache[18] = (0,vue__WEBPACK_IMPORTED_MODULE_1__.withModifiers)($event => $options.openDeleteTaskModal($data.subtask), [\"stop\"]))\n }, null, 8 /* PROPS */, _hoisted_18)])]), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createVNode)(vuetify_lib_components_VCard_index_mjs__WEBPACK_IMPORTED_MODULE_5__.VCardActions, {\n class: \"d-flex flex-column modal-content\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_1__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementVNode)(\"div\", _hoisted_19, [(0,vue__WEBPACK_IMPORTED_MODULE_1__.createVNode)(_component_Z_task_readonly_info, {\n subtask: $data.subtask,\n onCloseModal: $options.closeModal,\n onUpdateSubtask: $options.updateSubtask\n }, null, 8 /* PROPS */, [\"subtask\", \"onCloseModal\", \"onUpdateSubtask\"]), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementVNode)(\"div\", _hoisted_20, [!$data.subtask.is_finished ? ((0,vue__WEBPACK_IMPORTED_MODULE_1__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createBlock)(vuetify_lib_components_VBtn_index_mjs__WEBPACK_IMPORTED_MODULE_8__.VBtn, {\n key: 0,\n class: \"done-btn\",\n onClick: _cache[19] || (_cache[19] = (0,vue__WEBPACK_IMPORTED_MODULE_1__.withModifiers)($event => $options.showCompleteTaskModal(), [\"stop\"]))\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_1__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_1__.createTextVNode)(\"Dokončiť\")]),\n _: 1 /* STABLE */\n })) : ((0,vue__WEBPACK_IMPORTED_MODULE_1__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createBlock)(vuetify_lib_components_VBtn_index_mjs__WEBPACK_IMPORTED_MODULE_8__.VBtn, {\n key: 1,\n class: \"button secondary\",\n onClick: _cache[20] || (_cache[20] = (0,vue__WEBPACK_IMPORTED_MODULE_1__.withModifiers)($event => $options.showCompleteTaskModal(), [\"stop\"]))\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_1__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_1__.createTextVNode)(\"Znovu otvoriť\")]),\n _: 1 /* STABLE */\n })), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createVNode)(vuetify_lib_components_VBtn_index_mjs__WEBPACK_IMPORTED_MODULE_8__.VBtn, {\n class: \"button secondary\",\n onClick: _cache[21] || (_cache[21] = $event => $options.closeModal())\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_1__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_1__.createTextVNode)(\"Uložiť zmeny\")]),\n _: 1 /* STABLE */\n })])])]),\n\n _: 1 /* STABLE */\n })]),\n\n _: 1 /* STABLE */\n }))]),\n\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"content\"])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"]);\n}\n\n/* Vuetify */\n\n\n\n\n\n\n\n\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/task/z-task-modal.vue?./node_modules/webpack-plugin-vuetify/dist/scriptLoader.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/templateLoader.js??ruleSet%5B1%5D.rules%5B5%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"render\": function() { return /* binding */ render; }\n/* harmony export */ });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.runtime.esm-bundler.js\");\n/* harmony import */ var vuetify_lib_components_VAutocomplete_index_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! vuetify/lib/components/VAutocomplete/index.mjs */ \"./node_modules/vuetify/lib/components/VAutocomplete/VAutocomplete.mjs\");\n/* harmony import */ var vuetify_lib_components_VBtn_index_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! vuetify/lib/components/VBtn/index.mjs */ \"./node_modules/vuetify/lib/components/VBtn/VBtn.mjs\");\n/* harmony import */ var vuetify_lib_components_VCard_index_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vuetify/lib/components/VCard/index.mjs */ \"./node_modules/vuetify/lib/components/VCard/VCard.mjs\");\n/* harmony import */ var vuetify_lib_components_VCard_index_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! vuetify/lib/components/VCard/index.mjs */ \"./node_modules/vuetify/lib/components/VCard/VCardActions.mjs\");\n/* harmony import */ var vuetify_lib_components_VDialog_index_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vuetify/lib/components/VDialog/index.mjs */ \"./node_modules/vuetify/lib/components/VDialog/VDialog.mjs\");\n/* harmony import */ var vuetify_lib_components_VIcon_index_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! vuetify/lib/components/VIcon/index.mjs */ \"./node_modules/vuetify/lib/components/VIcon/VIcon.mjs\");\n/* harmony import */ var vuetify_lib_components_VTextField_index_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! vuetify/lib/components/VTextField/index.mjs */ \"./node_modules/vuetify/lib/components/VTextField/VTextField.mjs\");\n\nconst _withScopeId = n => ((0,vue__WEBPACK_IMPORTED_MODULE_0__.pushScopeId)(\"data-v-1c35a9a1\"), n = n(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.popScopeId)(), n);\nconst _hoisted_1 = {\n class: \"d-flex justify-space-between align-center modal-header\"\n};\nconst _hoisted_2 = {\n class: \"splitted-inputs\"\n};\nconst _hoisted_3 = /*#__PURE__*/_withScopeId(() => /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"path\", {\n d: \"M23.057 7.057l-16 16c-0.52 0.52-0.52 1.365 0 1.885s1.365 0.52 1.885 0l16-16c0.52-0.52 0.52-1.365 0-1.885s-1.365-0.52-1.885 0z\"\n}, null, -1 /* HOISTED */));\nconst _hoisted_4 = /*#__PURE__*/_withScopeId(() => /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"path\", {\n d: \"M7.057 8.943l16 16c0.52 0.52 1.365 0.52 1.885 0s0.52-1.365 0-1.885l-16-16c-0.52-0.52-1.365-0.52-1.885 0s-0.52 1.365 0 1.885z\"\n}, null, -1 /* HOISTED */));\nconst _hoisted_5 = [_hoisted_3, _hoisted_4];\nconst _hoisted_6 = [\"onClick\"];\nconst _hoisted_7 = /*#__PURE__*/_withScopeId(() => /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"path\", {\n d: \"M23.057 7.057l-16 16c-0.52 0.52-0.52 1.365 0 1.885s1.365 0.52 1.885 0l16-16c0.52-0.52 0.52-1.365 0-1.885s-1.365-0.52-1.885 0z\"\n}, null, -1 /* HOISTED */));\nconst _hoisted_8 = /*#__PURE__*/_withScopeId(() => /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"path\", {\n d: \"M7.057 8.943l16 16c0.52 0.52 1.365 0.52 1.885 0s0.52-1.365 0-1.885l-16-16c-0.52-0.52-1.365-0.52-1.885 0s-0.52 1.365 0 1.885z\"\n}, null, -1 /* HOISTED */));\nconst _hoisted_9 = [_hoisted_7, _hoisted_8];\nconst _hoisted_10 = {\n class: \"timeblocks w-100\"\n};\nconst _hoisted_11 = {\n key: 0,\n class: \"end-button w-100\"\n};\nconst _hoisted_12 = {\n class: \"w-100 modal-input\"\n};\nconst _hoisted_13 = {\n class: \"d-flex justify-space-between align-center\"\n};\nconst _hoisted_14 = {\n class: \"d-flex justify-space-between align-center modal-header border-bottom pb-4\"\n};\nconst _hoisted_15 = {\n class: \"d-flex justify-start\"\n};\nconst _hoisted_16 = [\"src\"];\nconst _hoisted_17 = [\"src\"];\nconst _hoisted_18 = {\n class: \"w-100\"\n};\nconst _hoisted_19 = {\n class: \"d-flex justify-start align-center mt-8\"\n};\nfunction render(_ctx, _cache, $props, $setup, $data, $options) {\n \n \n \n const _component_Datepicker = (0,vue__WEBPACK_IMPORTED_MODULE_0__.resolveComponent)(\"Datepicker\");\n const _component_A_timeblock = (0,vue__WEBPACK_IMPORTED_MODULE_0__.resolveComponent)(\"A-timeblock\");\n const _component_QuillEditor = (0,vue__WEBPACK_IMPORTED_MODULE_0__.resolveComponent)(\"QuillEditor\");\n const _component_Z_files_upload = (0,vue__WEBPACK_IMPORTED_MODULE_0__.resolveComponent)(\"Z-files-upload\");\n \n \n \n const _component_Z_task_readonly_info = (0,vue__WEBPACK_IMPORTED_MODULE_0__.resolveComponent)(\"Z-task-readonly-info\");\n const _component_W_loadable = (0,vue__WEBPACK_IMPORTED_MODULE_0__.resolveComponent)(\"W-loadable\");\n \n return (0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createBlock)(vuetify_lib_components_VDialog_index_mjs__WEBPACK_IMPORTED_MODULE_1__.VDialog, {\n modelValue: $data.visible,\n \"onUpdate:modelValue\": _cache[22] || (_cache[22] = $event => $data.visible = $event),\n \"max-width\": \"750\",\n \"max-height\": \"90%\",\n height: \"700px\",\n persistent: \"\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(_component_W_loadable, {\n content: $data.subtask,\n class: \"h-100\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [$data.editMode ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createBlock)(vuetify_lib_components_VCard_index_mjs__WEBPACK_IMPORTED_MODULE_2__.VCard, {\n key: 0,\n height: \"100%\",\n class: \"d-flex flex-column scrolling\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_1, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"h1\", null, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($data.subtask?.id ? 'Upraviť sub task' : 'Vytvoriť sub task'), 1 /* TEXT */), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VIcon_index_mjs__WEBPACK_IMPORTED_MODULE_3__.VIcon, {\n onClick: _cache[0] || (_cache[0] = (0,vue__WEBPACK_IMPORTED_MODULE_0__.withModifiers)($event => $options.closeModal(), [\"stop\"])),\n icon: \"mdi-close\",\n size: \"large\"\n })]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VCard_index_mjs__WEBPACK_IMPORTED_MODULE_4__.VCardActions, {\n class: \"d-flex flex-column modal-content\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VTextField_index_mjs__WEBPACK_IMPORTED_MODULE_5__.VTextField, {\n modelValue: $data.subtask.project_code,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $data.subtask.project_code = $event),\n label: \"Kód projektu\",\n value: $data.subtask.project_code,\n onFocus: _ctx.onInputFocus,\n class: \"modal-input\",\n variant: \"solo\",\n disabled: \"\"\n }, null, 8 /* PROPS */, [\"modelValue\", \"value\", \"onFocus\"]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VAutocomplete_index_mjs__WEBPACK_IMPORTED_MODULE_6__.VAutocomplete, {\n \"custom-filter\": _ctx.customFilter,\n \"match-any\": true,\n modelValue: $data.subtask.master_task_id,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $data.subtask.master_task_id = $event),\n label: \"Master task\",\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)([{\n error: $data.v$.subtask.master_task_id.$errors.length\n }, \"modal-input\"]),\n items: $options.enrichedMastertasks,\n \"item-title\": item => item._fullName || item.name,\n \"item-value\": \"id\",\n variant: \"solo\",\n clearable: \"\",\n onFocus: _ctx.onInputFocus\n }, null, 8 /* PROPS */, [\"custom-filter\", \"modelValue\", \"class\", \"items\", \"item-title\", \"onFocus\"]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VTextField_index_mjs__WEBPACK_IMPORTED_MODULE_5__.VTextField, {\n modelValue: $data.subtask.title,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $data.subtask.title = $event),\n onFocus: _ctx.onInputFocus,\n class: \"modal-input\",\n label: \"Názov subtasku\",\n variant: \"solo\"\n }, null, 8 /* PROPS */, [\"modelValue\", \"onFocus\"]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_2, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\" TODO: Bialko validacie \"), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", {\n onClick: _cache[5] || (_cache[5] = $event => $options.openDatepicker('datepicker-01')),\n class: \"datepicker-wrapper\"\n }, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(_component_Datepicker, {\n modelValue: $data.subtask.deadline,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = $event => $data.subtask.deadline = $event),\n onOpen: _ctx.onDateOpen,\n ref: \"datepicker-01\",\n \"auto-apply\": true,\n \"min-date\": new Date(),\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)([\"modal-input left datepicker-input\", {\n error: $data.v$.subtask.deadline.$errors?.length\n }]),\n format: \"dd.MM.yyyy\",\n locale: \"sk\",\n \"select-text\": \"Vybrať\",\n \"cancel-text\": \"Zrušiť\",\n placeholder: \"Deadline\",\n validations: $data.v$.subtask.deadline\n }, null, 8 /* PROPS */, [\"modelValue\", \"onOpen\", \"min-date\", \"class\", \"validations\"])]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VTextField_index_mjs__WEBPACK_IMPORTED_MODULE_5__.VTextField, {\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)([\"modal-input right\", {\n error: $data.v$.subtask._deadline_time.$errors.length\n }]),\n variant: \"solo\",\n modelValue: $data.subtask._deadline_time,\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = $event => $data.subtask._deadline_time = $event),\n label: \"Čas\",\n \"append-inner-icon\": \"mdi-clock-outline\",\n type: \"time\",\n onFocus: _ctx.onInputFocus,\n hint: $data.v$.subtask._deadline_time.$errors ? $data.errorUtils.parseErrors($data.v$.subtask._deadline_time.$errors) : null\n }, null, 8 /* PROPS */, [\"modelValue\", \"onFocus\", \"class\", \"hint\"])]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\" TODO: Toto tu nema byt ci? \"), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"
\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t
\"), $data.subtask.id ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(vue__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n key: 0\n }, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", {\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)([\"employee-wrapper\", {\n 'hide-arrow': $data.subtask.employee_id\n }])\n }, [$data.subtask.employee_id ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"svg\", {\n key: 0,\n version: \"1.1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"32\",\n height: \"32\",\n viewBox: \"0 0 32 32\",\n class: \"dp__icon dp__clear_icon dp__input_icons\",\n \"data-test\": \"clear-icon\",\n onClick: _cache[7] || (_cache[7] = (0,vue__WEBPACK_IMPORTED_MODULE_0__.withModifiers)($event => {\n $options.handleOnRemoveEmployee();\n $data.subtask.employee_id = null;\n $data.subtask.employee = null;\n }, [\"prevent\"]))\n }, _hoisted_5)) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VAutocomplete_index_mjs__WEBPACK_IMPORTED_MODULE_6__.VAutocomplete, {\n \"custom-filter\": _ctx.customFilter,\n \"match-any\": true,\n modelValue: $data.subtask.employee_id,\n \"onUpdate:modelValue\": [_cache[8] || (_cache[8] = $event => $data.subtask.employee_id = $event), _cache[9] || (_cache[9] = $event => $data.employeeValidations[0] ? $data.employeeValidations[0].employee = false : null)],\n label: \"Priradený\",\n items: _ctx.enrichedEmployees,\n \"item-title\": \"_fullName\",\n \"item-value\": \"id\",\n variant: \"solo\",\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)([\"modal-input\", {\n error: $data.employeeValidations[0]?.employee\n }])\n }, null, 8 /* PROPS */, [\"custom-filter\", \"modelValue\", \"items\", \"class\"])], 2 /* CLASS */), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VTextField_index_mjs__WEBPACK_IMPORTED_MODULE_5__.VTextField, {\n modelValue: $data.subtask.duration,\n \"onUpdate:modelValue\": [_cache[10] || (_cache[10] = $event => $data.subtask.duration = $event), _cache[11] || (_cache[11] = $event => $data.employeeValidations[0] ? $data.employeeValidations[0].duration = false : null)],\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)([\"modal-input\", {\n error: $data.employeeValidations[0]?.duration\n }]),\n variant: \"solo\",\n type: \"number\",\n label: \"Časový odhad\",\n \"append-inner-icon\": \"mdi-clock-outline\",\n onFocus: _ctx.onInputFocus\n }, null, 8 /* PROPS */, [\"modelValue\", \"class\", \"onFocus\"])], 64 /* STABLE_FRAGMENT */)) : ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(true), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(vue__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n key: 1\n }, (0,vue__WEBPACK_IMPORTED_MODULE_0__.renderList)($data.subtask.employees, (employee, index) => {\n return (0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"div\", {\n key: `employee-${index}`,\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)([\"splitted-inputs remove-employee\", {\n 'hide-arrow': employee?.id\n }])\n }, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VAutocomplete_index_mjs__WEBPACK_IMPORTED_MODULE_6__.VAutocomplete, {\n \"custom-filter\": _ctx.customFilter,\n \"match-any\": true,\n modelValue: employee.id,\n \"onUpdate:modelValue\": [$event => employee.id = $event, $event => $data.employeeValidations[index] ? $data.employeeValidations[index].employee = false : null],\n label: \"Priradený\",\n items: _ctx.enrichedEmployees,\n \"item-title\": \"_fullName\",\n \"item-value\": \"id\",\n variant: \"solo\",\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)([\"modal-input left\", {\n error: $data.employeeValidations[index]?.employee\n }])\n }, null, 8 /* PROPS */, [\"custom-filter\", \"modelValue\", \"onUpdate:modelValue\", \"items\", \"class\"]), employee.id ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"svg\", {\n key: 0,\n version: \"1.1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"32\",\n height: \"32\",\n viewBox: \"0 0 32 32\",\n class: \"dp__icon dp__clear_icon dp__input_icons\",\n \"data-test\": \"clear-icon\",\n onClick: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withModifiers)($event => {\n $options.handleOnRemoveEmployee();\n employee.id = null;\n }, [\"prevent\"])\n }, _hoisted_9, 8 /* PROPS */, _hoisted_6)) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VTextField_index_mjs__WEBPACK_IMPORTED_MODULE_5__.VTextField, {\n modelValue: employee.duration,\n \"onUpdate:modelValue\": [$event => employee.duration = $event, $event => $data.employeeValidations[index] ? $data.employeeValidations[index].duration = false : null],\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)([\"modal-input right\", {\n error: $data.employeeValidations[index]?.duration\n }]),\n variant: \"solo\",\n type: \"number\",\n label: \"Časový odhad\",\n \"append-inner-icon\": \"mdi-clock-outline\",\n onFocus: _ctx.onInputFocus\n }, null, 8 /* PROPS */, [\"modelValue\", \"onUpdate:modelValue\", \"class\", \"onFocus\"])], 2 /* CLASS */);\n }), 128 /* KEYED_FRAGMENT */)), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_10, [((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(true), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(vue__WEBPACK_IMPORTED_MODULE_0__.Fragment, null, (0,vue__WEBPACK_IMPORTED_MODULE_0__.renderList)($options.editableTimeblocks, (timeblock, index) => {\n return (0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createBlock)(_component_A_timeblock, {\n key: index,\n onUpdateTimeblock: val => $options.updateTimeblock(val, index),\n onRemoveTimeblock: $event => $options.removeTimeblock(index),\n timeblock: timeblock,\n deletable: index > 0,\n editable: true,\n ref_for: true,\n ref: `timetable-${index}`,\n \"prevent-input-focus\": _ctx.preventInputFocus,\n \"on-input-focus\": _ctx.onInputFocus,\n \"on-date-open\": _ctx.onDateOpen,\n index: index\n }, null, 8 /* PROPS */, [\"onUpdateTimeblock\", \"onRemoveTimeblock\", \"timeblock\", \"deletable\", \"prevent-input-focus\", \"on-input-focus\", \"on-date-open\", \"index\"]);\n }), 128 /* KEYED_FRAGMENT */)), !$data.subtask.id ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"div\", _hoisted_11, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"button\", {\n onClick: _cache[12] || (_cache[12] = (...args) => $options.addTimeblock && $options.addTimeblock(...args))\n }, \"Pridať časový blok\")])) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true)]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_12, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(_component_QuillEditor, {\n ref: \"description\",\n modelValue: $data.subtask.description,\n \"onUpdate:modelValue\": _cache[13] || (_cache[13] = $event => $data.subtask.description = $event),\n placeholder: \"Popis\",\n theme: \"snow\",\n class: \"rich-text-editor\",\n onInput: _cache[14] || (_cache[14] = $event => $data.subtask.description = $event.srcElement.innerHTML)\n }, null, 8 /* PROPS */, [\"modelValue\"])]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(_component_Z_files_upload, {\n class: \"mt-15 files\",\n files: $data.subtask.files,\n onFilesUploaded: $options.filesUploaded,\n \"is-saving\": $data.isSaving\n }, null, 8 /* PROPS */, [\"files\", \"onFilesUploaded\", \"is-saving\"])]),\n _: 1 /* STABLE */\n }), !$data.isSaving ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createBlock)(vuetify_lib_components_VBtn_index_mjs__WEBPACK_IMPORTED_MODULE_7__.VBtn, {\n key: 0,\n class: \"button primary\",\n onClick: _cache[15] || (_cache[15] = $event => $options.save())\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createTextVNode)((0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($data.subtask.id ? 'UPRAVIŤ' : 'VYTVORIŤ'), 1 /* TEXT */)]),\n\n _: 1 /* STABLE */\n })) : ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createBlock)(vuetify_lib_components_VBtn_index_mjs__WEBPACK_IMPORTED_MODULE_7__.VBtn, {\n key: 1,\n class: \"button primary disabled\",\n disabled: \"\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createTextVNode)((0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(_ctx.$t('Ukladám...')), 1 /* TEXT */)]),\n\n _: 1 /* STABLE */\n }))]),\n\n _: 1 /* STABLE */\n })) : ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createBlock)(vuetify_lib_components_VCard_index_mjs__WEBPACK_IMPORTED_MODULE_2__.VCard, {\n key: 1,\n height: \"100%\",\n class: \"d-flex flex-column scrolling\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_13, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", null, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"p\", null, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($data.subtask._master_task.project_code), 1 /* TEXT */), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"h1\", null, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($data.subtask._master_task.name), 1 /* TEXT */)]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VIcon_index_mjs__WEBPACK_IMPORTED_MODULE_3__.VIcon, {\n onClick: _cache[16] || (_cache[16] = (0,vue__WEBPACK_IMPORTED_MODULE_0__.withModifiers)($event => $options.closeModal(), [\"stop\"])),\n icon: \"mdi-close\",\n size: \"large\",\n class: \"pb-5\"\n })]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_14, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"h1\", null, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($data.subtask.title), 1 /* TEXT */), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_15, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"img\", {\n class: \"icon\",\n src: __webpack_require__(/*! @/plugins/app/_img/icons/pencil.svg */ \"./src/plugins/app/_img/icons/pencil.svg\"),\n alt: \"pencil-icon\",\n onClick: _cache[17] || (_cache[17] = (0,vue__WEBPACK_IMPORTED_MODULE_0__.withModifiers)((...args) => $options.toggleEditMode && $options.toggleEditMode(...args), [\"stop\"]))\n }, null, 8 /* PROPS */, _hoisted_16), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"img\", {\n class: \"icon trash\",\n src: __webpack_require__(/*! @/plugins/app/_img/icons/bin.svg */ \"./src/plugins/app/_img/icons/bin.svg\"),\n alt: \"trash-icon\",\n onClick: _cache[18] || (_cache[18] = (0,vue__WEBPACK_IMPORTED_MODULE_0__.withModifiers)($event => $options.openDeleteTaskModal($data.subtask), [\"stop\"]))\n }, null, 8 /* PROPS */, _hoisted_17)])]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VCard_index_mjs__WEBPACK_IMPORTED_MODULE_4__.VCardActions, {\n class: \"d-flex flex-column modal-content\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_18, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(_component_Z_task_readonly_info, {\n subtask: $data.subtask,\n onCloseModal: $options.closeModal,\n onUpdateSubtask: $options.updateSubtask\n }, null, 8 /* PROPS */, [\"subtask\", \"onCloseModal\", \"onUpdateSubtask\"]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_19, [!$data.subtask.is_finished ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createBlock)(vuetify_lib_components_VBtn_index_mjs__WEBPACK_IMPORTED_MODULE_7__.VBtn, {\n key: 0,\n class: \"done-btn\",\n onClick: _cache[19] || (_cache[19] = (0,vue__WEBPACK_IMPORTED_MODULE_0__.withModifiers)($event => $options.showCompleteTaskModal(), [\"stop\"]))\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createTextVNode)(\"Dokončiť\")]),\n _: 1 /* STABLE */\n })) : ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createBlock)(vuetify_lib_components_VBtn_index_mjs__WEBPACK_IMPORTED_MODULE_7__.VBtn, {\n key: 1,\n class: \"button secondary\",\n onClick: _cache[20] || (_cache[20] = (0,vue__WEBPACK_IMPORTED_MODULE_0__.withModifiers)($event => $options.showCompleteTaskModal(), [\"stop\"]))\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createTextVNode)(\"Znovu otvoriť\")]),\n _: 1 /* STABLE */\n })), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VBtn_index_mjs__WEBPACK_IMPORTED_MODULE_7__.VBtn, {\n class: \"button secondary\",\n onClick: _cache[21] || (_cache[21] = $event => $options.closeModal())\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createTextVNode)(\"Uložiť zmeny\")]),\n _: 1 /* STABLE */\n })])])]),\n\n _: 1 /* STABLE */\n })]),\n\n _: 1 /* STABLE */\n }))]),\n\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"content\"])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"]);\n}\n\n/* Vuetify */\n\n\n\n\n\n\n\n\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/task/z-task-modal.vue?./node_modules/webpack-plugin-vuetify/dist/scriptLoader.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/templateLoader.js??ruleSet%5B1%5D.rules%5B5%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D"); /***/ }), @@ -3054,7 +3054,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"render\": function() { return /* binding */ render; }\n/* harmony export */ });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.runtime.esm-bundler.js\");\n/* harmony import */ var vuetify_lib_components_VBtn_index_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! vuetify/lib/components/VBtn/index.mjs */ \"./node_modules/vuetify/lib/components/VBtn/VBtn.mjs\");\n/* harmony import */ var vuetify_lib_components_VCard_index_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vuetify/lib/components/VCard/index.mjs */ \"./node_modules/vuetify/lib/components/VCard/VCard.mjs\");\n/* harmony import */ var vuetify_lib_components_VDialog_index_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vuetify/lib/components/VDialog/index.mjs */ \"./node_modules/vuetify/lib/components/VDialog/VDialog.mjs\");\n/* harmony import */ var vuetify_lib_components_VIcon_index_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! vuetify/lib/components/VIcon/index.mjs */ \"./node_modules/vuetify/lib/components/VIcon/VIcon.mjs\");\n\nconst _withScopeId = n => ((0,vue__WEBPACK_IMPORTED_MODULE_0__.pushScopeId)(\"data-v-24e90535\"), n = n(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.popScopeId)(), n);\nconst _hoisted_1 = {\n class: \"d-flex justify-space-between align-center\"\n};\nconst _hoisted_2 = /*#__PURE__*/_withScopeId(() => /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"h1\", null, \"Sub Task má nedokončené úlohy\", -1 /* HOISTED */));\nconst _hoisted_3 = {\n class: \"card-content\"\n};\nconst _hoisted_4 = {\n class: \"card-actions\"\n};\nfunction render(_ctx, _cache, $props, $setup, $data, $options) {\n \n \n \n \n return (0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createBlock)(vuetify_lib_components_VDialog_index_mjs__WEBPACK_IMPORTED_MODULE_1__.VDialog, {\n modelValue: $data.visible,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $data.visible = $event),\n \"max-width\": \"750\",\n persistent: \"\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VCard_index_mjs__WEBPACK_IMPORTED_MODULE_2__.VCard, null, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_1, [_hoisted_2, (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VIcon_index_mjs__WEBPACK_IMPORTED_MODULE_3__.VIcon, {\n onClick: _cache[0] || (_cache[0] = (0,vue__WEBPACK_IMPORTED_MODULE_0__.withModifiers)($event => $options.closeModal(), [\"stop\"])),\n icon: \"mdi-close\",\n size: \"large\"\n })]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_3, [((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(true), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(vue__WEBPACK_IMPORTED_MODULE_0__.Fragment, null, (0,vue__WEBPACK_IMPORTED_MODULE_0__.renderList)($data.subtask?.timeblocks, timeblock => {\n return (0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"div\", {\n key: timeblock.id,\n class: \"d-flex align-center mb-3\"\n }, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"p\", {\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)([\"task-badge rounded-pill\", {\n 'strike-through': timeblock.is_finished\n }])\n }, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($data.tmUtils.formatDateTime(timeblock.start)) + \" - \" + (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($data.tmUtils.formatDateTime(timeblock.end)), 3 /* TEXT, CLASS */), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VIcon_index_mjs__WEBPACK_IMPORTED_MODULE_3__.VIcon, {\n onClick: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withModifiers)($event => $options.handleFinishTimeblock(timeblock), [\"stop\"]),\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)([\"finish-icon circle-border cursor-pointer ml-2\", {\n 'disabled': $data.loadingTimeblocks[timeblock.id] || $data.loadingCloseAll,\n 'finished': timeblock.is_finished\n }]),\n icon: \"mdi-check\",\n size: \"medium\"\n }, null, 8 /* PROPS */, [\"onClick\", \"class\"])]);\n }), 128 /* KEYED_FRAGMENT */))]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_4, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VBtn_index_mjs__WEBPACK_IMPORTED_MODULE_4__.VBtn, {\n onClick: _cache[1] || (_cache[1] = $event => $options.closeModal()),\n class: \"button secondary\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createTextVNode)(\"Zrušiť\")]),\n _: 1 /* STABLE */\n }), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VBtn_index_mjs__WEBPACK_IMPORTED_MODULE_4__.VBtn, {\n onClick: _cache[2] || (_cache[2] = $event => $options.handleFinishAllTimeblocks()),\n loading: $data.loadingCloseAll,\n class: \"button primary\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createTextVNode)(\"Uzatvoriť všetky\")]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"loading\"])])]),\n _: 1 /* STABLE */\n })]),\n\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"]);\n}\n\n/* Vuetify */\n\n\n\n\n\n\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/task/z-unable-to-complete-task-modal.vue?./node_modules/webpack-plugin-vuetify/dist/scriptLoader.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/templateLoader.js??ruleSet%5B1%5D.rules%5B5%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"render\": function() { return /* binding */ render; }\n/* harmony export */ });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.runtime.esm-bundler.js\");\n/* harmony import */ var vuetify_lib_components_VBtn_index_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! vuetify/lib/components/VBtn/index.mjs */ \"./node_modules/vuetify/lib/components/VBtn/VBtn.mjs\");\n/* harmony import */ var vuetify_lib_components_VCard_index_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vuetify/lib/components/VCard/index.mjs */ \"./node_modules/vuetify/lib/components/VCard/VCard.mjs\");\n/* harmony import */ var vuetify_lib_components_VDialog_index_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vuetify/lib/components/VDialog/index.mjs */ \"./node_modules/vuetify/lib/components/VDialog/VDialog.mjs\");\n/* harmony import */ var vuetify_lib_components_VIcon_index_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! vuetify/lib/components/VIcon/index.mjs */ \"./node_modules/vuetify/lib/components/VIcon/VIcon.mjs\");\n\nconst _withScopeId = n => ((0,vue__WEBPACK_IMPORTED_MODULE_0__.pushScopeId)(\"data-v-24e90535\"), n = n(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.popScopeId)(), n);\nconst _hoisted_1 = {\n class: \"d-flex justify-space-between align-center\"\n};\nconst _hoisted_2 = /*#__PURE__*/_withScopeId(() => /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"h1\", null, \"Sub Task má nedokončené úlohy\", -1 /* HOISTED */));\nconst _hoisted_3 = {\n class: \"card-content\"\n};\nconst _hoisted_4 = {\n class: \"card-actions\"\n};\nfunction render(_ctx, _cache, $props, $setup, $data, $options) {\n \n \n \n \n return (0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createBlock)(vuetify_lib_components_VDialog_index_mjs__WEBPACK_IMPORTED_MODULE_1__.VDialog, {\n modelValue: $data.visible,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $data.visible = $event),\n \"max-width\": \"750\",\n persistent: \"\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VCard_index_mjs__WEBPACK_IMPORTED_MODULE_2__.VCard, null, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_1, [_hoisted_2, (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VIcon_index_mjs__WEBPACK_IMPORTED_MODULE_3__.VIcon, {\n onClick: _cache[0] || (_cache[0] = (0,vue__WEBPACK_IMPORTED_MODULE_0__.withModifiers)($event => $options.closeModal(), [\"stop\"])),\n icon: \"mdi-close\",\n size: \"large\"\n })]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_3, [((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(true), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(vue__WEBPACK_IMPORTED_MODULE_0__.Fragment, null, (0,vue__WEBPACK_IMPORTED_MODULE_0__.renderList)($data.subtask?.timeblocks, timeblock => {\n return (0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"div\", {\n key: timeblock.id,\n class: \"d-flex align-center mb-3\"\n }, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"p\", {\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)([\"task-badge rounded-pill\", {\n 'strike-through': timeblock.is_finished\n }])\n }, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($data.tmUtils.formatDateTime(timeblock.start)) + \" - \" + (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($data.tmUtils.formatDateTime(timeblock.end)), 3 /* TEXT, CLASS */), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VIcon_index_mjs__WEBPACK_IMPORTED_MODULE_3__.VIcon, {\n onClick: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withModifiers)($event => $options.handleFinishTimeblock(timeblock), [\"stop\"]),\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)([\"finish-icon circle-border cursor-pointer ml-2\", {\n disabled: $data.loadingTimeblocks[timeblock.id] || $data.loadingCloseAll,\n finished: timeblock.is_finished\n }]),\n icon: \"mdi-check\",\n size: \"medium\"\n }, null, 8 /* PROPS */, [\"onClick\", \"class\"])]);\n }), 128 /* KEYED_FRAGMENT */))]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_4, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VBtn_index_mjs__WEBPACK_IMPORTED_MODULE_4__.VBtn, {\n onClick: _cache[1] || (_cache[1] = $event => $options.closeModal()),\n class: \"button secondary\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createTextVNode)(\"Zrušiť\")]),\n _: 1 /* STABLE */\n }), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VBtn_index_mjs__WEBPACK_IMPORTED_MODULE_4__.VBtn, {\n onClick: _cache[2] || (_cache[2] = $event => $options.handleFinishAllTimeblocks()),\n loading: $data.loadingCloseAll,\n class: \"button primary\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createTextVNode)(\"Uzatvoriť všetky\")]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"loading\"])])]),\n _: 1 /* STABLE */\n })]),\n\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"]);\n}\n\n/* Vuetify */\n\n\n\n\n\n\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/task/z-unable-to-complete-task-modal.vue?./node_modules/webpack-plugin-vuetify/dist/scriptLoader.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/templateLoader.js??ruleSet%5B1%5D.rules%5B5%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D"); /***/ }), diff --git a/app/dist/js/src_plugins_tm_overview_tasks-ongoing_tasks-ongoing_vue.js b/app/dist/js/src_plugins_tm_overview_tasks-ongoing_tasks-ongoing_vue.js index f49f2cd..83bdd8e 100644 --- a/app/dist/js/src_plugins_tm_overview_tasks-ongoing_tasks-ongoing_vue.js +++ b/app/dist/js/src_plugins_tm_overview_tasks-ongoing_tasks-ongoing_vue.js @@ -26,7 +26,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var vuex /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _plugins_app_img__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/plugins/app/_img */ \"./src/plugins/app/_img/index.ts\");\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm-bundler.js\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! moment */ \"./node_modules/moment/moment.js\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_1__);\n/* provided dependency */ var console = __webpack_require__(/*! ./node_modules/console-browserify/index.js */ \"./node_modules/console-browserify/index.js\");\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n props: {\n subtasks: {\n type: Array,\n required: true\n }\n },\n data() {\n return {\n eye: _plugins_app_img__WEBPACK_IMPORTED_MODULE_0__.eye,\n bin: _plugins_app_img__WEBPACK_IMPORTED_MODULE_0__.bin,\n office365: _plugins_app_img__WEBPACK_IMPORTED_MODULE_0__.office365,\n checkmarkDouble: _plugins_app_img__WEBPACK_IMPORTED_MODULE_0__.checkmarkDouble,\n loadingSubtask: {}\n };\n },\n computed: {\n ...(0,vuex__WEBPACK_IMPORTED_MODULE_2__.mapGetters)('tm', ['mastertasks'])\n },\n methods: {\n editTask(subtask, editMode = false) {\n this.$events.emit('show-subtask-modal', {\n subtask,\n editMode\n });\n },\n async handleCompleteTask(subtask) {\n const areAllTimeBlocksFinished = subtask.timeblocks.every(tb => tb.is_finished);\n if (!areAllTimeBlocksFinished) {\n this.$events.emit('show-unable-to-complete-task-modal', {\n subtask\n });\n } else {\n await this._finishSubtask(subtask);\n }\n },\n deleteTask(subtask) {\n if (subtask.type == 'office365') return this.$events.emit('show-unable-to-edit-office-task-modal', {\n mode: 'delete'\n });\n this.$events.emit('show-delete-task-modal', {\n subtask\n });\n },\n getDeadline(subtask) {\n if (subtask?.deadline) return moment__WEBPACK_IMPORTED_MODULE_1___default()(subtask.deadline).format('DD.MM.yyyy');\n return moment__WEBPACK_IMPORTED_MODULE_1___default()(subtask.master_task_deadline).format('DD.MM.yyyy');\n },\n getSelectedTimeblockDeadline(timeblocks) {\n const currentDate = moment__WEBPACK_IMPORTED_MODULE_1___default()();\n const unfinishedTimeblocks = timeblocks.filter(tb => tb.is_finished === 0);\n if (unfinishedTimeblocks.length > 0) return moment__WEBPACK_IMPORTED_MODULE_1___default()(unfinishedTimeblocks[0].end).format('DD.MM.yyyy, HH:mm');\n const upcomingTimeblocks = timeblocks.filter(tb => moment__WEBPACK_IMPORTED_MODULE_1___default()(tb.end).isAfter(currentDate)).sort((a, b) => moment__WEBPACK_IMPORTED_MODULE_1___default()(a.end).diff(moment__WEBPACK_IMPORTED_MODULE_1___default()(b.end)));\n if (upcomingTimeblocks.length > 0 && upcomingTimeblocks.is_finished === 0) return moment__WEBPACK_IMPORTED_MODULE_1___default()(upcomingTimeblocks[0].end).format('DD.MM.yyyy, HH:mm');\n return '';\n },\n displayTimeblock(subtask) {\n const timeblockDeadline = this.getSelectedTimeblockDeadline(subtask.timeblocks);\n return timeblockDeadline !== '' ? timeblockDeadline : 'Žiadny termín';\n },\n async _finishSubtask(subtask) {\n const tempSubtask = {\n ...subtask,\n is_finished: 1,\n timesheets: subtask?.timesheets.map(timesheet => {\n delete timesheet.employee_name;\n return timesheet;\n }) || []\n };\n try {\n this.loadingSubtask[subtask.id] = true;\n await this.$axios.put_auth(`v1/subtasks/${tempSubtask.id}`, tempSubtask);\n this.$store.dispatch('tm/removeOngoingSubtask', subtask.id);\n this.$events.emit('on-subtask-edited', subtask);\n } catch (error) {\n this.$toast.error(error.message || error);\n if (true) console.log('[a-ongoing-table.vue] Error: ', error);\n } finally {\n this.loadingSubtask[subtask.id] = false;\n }\n }\n }\n});\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@overview/tasks-ongoing/_components/a-ongoing-table.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _plugins_app_img__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/plugins/app/_img */ \"./src/plugins/app/_img/index.ts\");\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm-bundler.js\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! moment */ \"./node_modules/moment/moment.js\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_1__);\n/* provided dependency */ var console = __webpack_require__(/*! ./node_modules/console-browserify/index.js */ \"./node_modules/console-browserify/index.js\");\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n props: {\n subtasks: {\n type: Array,\n required: true\n }\n },\n data() {\n return {\n eye: _plugins_app_img__WEBPACK_IMPORTED_MODULE_0__.eye,\n bin: _plugins_app_img__WEBPACK_IMPORTED_MODULE_0__.bin,\n office365: _plugins_app_img__WEBPACK_IMPORTED_MODULE_0__.office365,\n checkmarkDouble: _plugins_app_img__WEBPACK_IMPORTED_MODULE_0__.checkmarkDouble,\n loadingSubtask: {}\n };\n },\n computed: {\n ...(0,vuex__WEBPACK_IMPORTED_MODULE_2__.mapGetters)('tm', ['mastertasks'])\n },\n methods: {\n editTask(subtask, editMode = false) {\n this.$events.emit('show-subtask-modal', {\n subtask,\n editMode\n });\n },\n async handleCompleteTask(subtask) {\n const areAllTimeBlocksFinished = subtask.timeblocks.every(tb => tb.is_finished);\n if (!areAllTimeBlocksFinished) {\n this.$events.emit('show-unable-to-complete-task-modal', {\n subtask\n });\n } else {\n await this._finishSubtask(subtask);\n }\n },\n deleteTask(subtask) {\n if (subtask.type == 'office365') return this.$events.emit('show-unable-to-edit-office-task-modal', {\n mode: 'delete'\n });\n this.$events.emit('show-delete-task-modal', {\n subtask\n });\n },\n getDeadline(subtask) {\n if (subtask?.deadline) return moment__WEBPACK_IMPORTED_MODULE_1___default()(subtask.deadline).format('DD.MM.yyyy');\n return moment__WEBPACK_IMPORTED_MODULE_1___default()(subtask.master_task_deadline).format('DD.MM.yyyy');\n },\n getSelectedTimeblockDeadline(timeblocks) {\n const currentDate = moment__WEBPACK_IMPORTED_MODULE_1___default()();\n const unfinishedTimeblocks = timeblocks.filter(tb => tb.is_finished === 0);\n if (unfinishedTimeblocks.length > 0) return moment__WEBPACK_IMPORTED_MODULE_1___default()(unfinishedTimeblocks[0].end).format('DD.MM.yyyy, HH:mm');\n const upcomingTimeblocks = timeblocks.filter(tb => moment__WEBPACK_IMPORTED_MODULE_1___default()(tb.end).isAfter(currentDate)).sort((a, b) => moment__WEBPACK_IMPORTED_MODULE_1___default()(a.end).diff(moment__WEBPACK_IMPORTED_MODULE_1___default()(b.end)));\n if (upcomingTimeblocks.length > 0 && upcomingTimeblocks.is_finished === 0) return moment__WEBPACK_IMPORTED_MODULE_1___default()(upcomingTimeblocks[0].end).format('DD.MM.yyyy, HH:mm');\n return '';\n },\n displayTimeblock(subtask) {\n const timeblockDeadline = this.getSelectedTimeblockDeadline(subtask.timeblocks);\n return timeblockDeadline !== '' ? timeblockDeadline : 'Žiadny termín';\n },\n async _finishSubtask(subtask) {\n const timesheets = subtask?.timesheets.map(timesheet => {\n delete timesheet.employee_name;\n return timesheet;\n }) || [];\n\n // Convert timeblocks from internal format to BE format\n const timeblocks = (subtask.timeblocks || []).filter(timeblock => {\n // Filter timeblocks that have either old format (date) or new format (start)\n return timeblock.date || timeblock.start;\n }).map(timeblock => {\n // If already in BE format (has start field), return as is\n if (timeblock.start && !timeblock.date) {\n return {\n id: timeblock.id || null,\n start: timeblock.start,\n end: timeblock.end,\n is_finished: timeblock.is_finished || 0\n };\n }\n\n // Convert from internal format to BE format\n const dateStr = moment__WEBPACK_IMPORTED_MODULE_1___default()(timeblock.date).format('YYYY-MM-DD');\n return {\n id: timeblock.id || null,\n start: `${dateStr} ${timeblock.starts_at_time}:00`,\n end: `${dateStr} ${timeblock.ends_at_time}:00`,\n is_finished: timeblock.is_finished || 0\n };\n });\n const tempSubtask = {\n ...subtask,\n is_finished: 1,\n timesheets,\n timeblocks\n };\n try {\n this.loadingSubtask[subtask.id] = true;\n await this.$axios.put_auth(`v1/subtasks/${tempSubtask.id}`, tempSubtask);\n this.$store.dispatch('tm/removeOngoingSubtask', subtask.id);\n this.$events.emit('on-subtask-edited', subtask);\n } catch (error) {\n this.$toast.error(error.message || error);\n if (true) console.log('[a-ongoing-table.vue] Error: ', error);\n } finally {\n this.loadingSubtask[subtask.id] = false;\n }\n }\n }\n});\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@overview/tasks-ongoing/_components/a-ongoing-table.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D"); /***/ }), @@ -189,7 +189,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"render\": function() { return /* binding */ render; }\n/* harmony export */ });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.runtime.esm-bundler.js\");\n/* harmony import */ var vuetify_lib_components_VTable_index_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vuetify/lib/components/VTable/index.mjs */ \"./node_modules/vuetify/lib/components/VTable/VTable.mjs\");\n/* harmony import */ var vuetify_lib_components_VTooltip_index_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vuetify/lib/components/VTooltip/index.mjs */ \"./node_modules/vuetify/lib/components/VTooltip/VTooltip.mjs\");\n\nconst _withScopeId = n => ((0,vue__WEBPACK_IMPORTED_MODULE_0__.pushScopeId)(\"data-v-1bc7f53c\"), n = n(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.popScopeId)(), n);\nconst _hoisted_1 = /*#__PURE__*/_withScopeId(() => /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"th\", {\n class: \"text-left\"\n}, \"Názov\", -1 /* HOISTED */));\nconst _hoisted_2 = /*#__PURE__*/_withScopeId(() => /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"th\", {\n class: \"text-left\"\n}, \"Deadline\", -1 /* HOISTED */));\nconst _hoisted_3 = /*#__PURE__*/_withScopeId(() => /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"th\", {\n class: \"text-left\"\n}, \"Najbližší neuzavretý\", -1 /* HOISTED */));\nconst _hoisted_4 = /*#__PURE__*/_withScopeId(() => /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"th\", {\n class: \"text-left\"\n}, \"Naplánované\", -1 /* HOISTED */));\nconst _hoisted_5 = /*#__PURE__*/_withScopeId(() => /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"th\", {\n class: \"text-left\"\n}, \"Zostávajúce\", -1 /* HOISTED */));\nconst _hoisted_6 = /*#__PURE__*/_withScopeId(() => /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"th\", {\n class: \"text-left\"\n}, \"Akcia\", -1 /* HOISTED */));\nconst _hoisted_7 = [\"onClick\"];\nconst _hoisted_8 = {\n key: 0\n};\nconst _hoisted_9 = {\n class: \"task-action\"\n};\nconst _hoisted_10 = {\n class: \"d-flex justify-start align-center\"\n};\nconst _hoisted_11 = [\"src\", \"onClick\"];\nconst _hoisted_12 = [\"src\", \"onClick\"];\nconst _hoisted_13 = [\"src\"];\nconst _hoisted_14 = [\"src\", \"onClick\"];\nconst _hoisted_15 = [\"src\", \"onClick\"];\nfunction render(_ctx, _cache, $props, $setup, $data, $options) {\n \n \n return (0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createBlock)(vuetify_lib_components_VTable_index_mjs__WEBPACK_IMPORTED_MODULE_1__.VTable, null, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"thead\", null, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"tr\", null, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"th\", {\n onClick: _cache[0] || (_cache[0] = (...args) => $options.getSelectedTimeblockDeadline && $options.getSelectedTimeblockDeadline(...args)),\n class: \"text-left\"\n }, \"Kód projektu\"), _hoisted_1, _hoisted_2, _hoisted_3, _hoisted_4, _hoisted_5, _hoisted_6])]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"tbody\", null, [((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(true), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(vue__WEBPACK_IMPORTED_MODULE_0__.Fragment, null, (0,vue__WEBPACK_IMPORTED_MODULE_0__.renderList)($props.subtasks, subtask => {\n return (0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"tr\", {\n class: \"cursor-pointer\",\n key: subtask.id,\n onClick: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withModifiers)($event => $options.editTask(subtask, false), [\"stop\"])\n }, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"td\", null, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(subtask.project_code), 1 /* TEXT */), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"td\", null, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(subtask.title ?? subtask.master_task), 1 /* TEXT */), subtask.deadline ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"td\", _hoisted_8, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($options.getDeadline(subtask)), 1 /* TEXT */)) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VTooltip_index_mjs__WEBPACK_IMPORTED_MODULE_2__.VTooltip, {\n text: \"Deadline z Mastertasku\",\n location: \"end\"\n }, {\n activator: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(({\n props\n }) => [!subtask.deadline ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"td\", (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeProps)((0,vue__WEBPACK_IMPORTED_MODULE_0__.mergeProps)({\n key: 0\n }, props)), (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($options.getDeadline(subtask)) + \"*\", 17 /* TEXT, FULL_PROPS */)) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true)]),\n _: 2 /* DYNAMIC */\n }, 1024 /* DYNAMIC_SLOTS */), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"td\", null, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($options.displayTimeblock(subtask)), 1 /* TEXT */), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"td\", null, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(subtask.duration) + \" h\", 1 /* TEXT */), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"td\", null, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)((subtask.duration - subtask.spent_time).toFixed(2)) + \" h\", 1 /* TEXT */), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"td\", _hoisted_9, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_10, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"img\", {\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)([\"pencil-icon mr-3\", {\n 'disabled': $data.loadingSubtask[subtask.id]\n }]),\n src: $data.checkmarkDouble,\n onClick: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withModifiers)($event => $options.handleCompleteTask(subtask), [\"stop\"])\n }, null, 10 /* CLASS, PROPS */, _hoisted_11), subtask.type == 'office365' ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(vue__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n key: 0\n }, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"img\", {\n class: \"pencil-icon\",\n src: $data.eye,\n onClick: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withModifiers)($event => $options.editTask(subtask, false), [\"stop\"])\n }, null, 8 /* PROPS */, _hoisted_12), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"img\", {\n class: \"office-icon\",\n src: $data.office365\n }, null, 8 /* PROPS */, _hoisted_13)], 64 /* STABLE_FRAGMENT */)) : ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(vue__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n key: 1\n }, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"img\", {\n class: \"pencil-icon\",\n src: $data.eye,\n onClick: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withModifiers)($event => $options.editTask(subtask, false), [\"stop\"])\n }, null, 8 /* PROPS */, _hoisted_14), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"img\", {\n class: \"trash-icon\",\n src: $data.bin,\n onClick: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withModifiers)($event => $options.deleteTask(subtask), [\"stop\"])\n }, null, 8 /* PROPS */, _hoisted_15)], 64 /* STABLE_FRAGMENT */))])])], 8 /* PROPS */, _hoisted_7);\n }), 128 /* KEYED_FRAGMENT */))])]),\n\n _: 1 /* STABLE */\n });\n}\n\n/* Vuetify */\n\n\n\n\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@overview/tasks-ongoing/_components/a-ongoing-table.vue?./node_modules/webpack-plugin-vuetify/dist/scriptLoader.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/templateLoader.js??ruleSet%5B1%5D.rules%5B5%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"render\": function() { return /* binding */ render; }\n/* harmony export */ });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.runtime.esm-bundler.js\");\n/* harmony import */ var vuetify_lib_components_VTable_index_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vuetify/lib/components/VTable/index.mjs */ \"./node_modules/vuetify/lib/components/VTable/VTable.mjs\");\n/* harmony import */ var vuetify_lib_components_VTooltip_index_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vuetify/lib/components/VTooltip/index.mjs */ \"./node_modules/vuetify/lib/components/VTooltip/VTooltip.mjs\");\n\nconst _withScopeId = n => ((0,vue__WEBPACK_IMPORTED_MODULE_0__.pushScopeId)(\"data-v-1bc7f53c\"), n = n(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.popScopeId)(), n);\nconst _hoisted_1 = /*#__PURE__*/_withScopeId(() => /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"th\", {\n class: \"text-left\"\n}, \"Názov\", -1 /* HOISTED */));\nconst _hoisted_2 = /*#__PURE__*/_withScopeId(() => /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"th\", {\n class: \"text-left\"\n}, \"Deadline\", -1 /* HOISTED */));\nconst _hoisted_3 = /*#__PURE__*/_withScopeId(() => /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"th\", {\n class: \"text-left\"\n}, \"Najbližší neuzavretý\", -1 /* HOISTED */));\nconst _hoisted_4 = /*#__PURE__*/_withScopeId(() => /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"th\", {\n class: \"text-left\"\n}, \"Naplánované\", -1 /* HOISTED */));\nconst _hoisted_5 = /*#__PURE__*/_withScopeId(() => /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"th\", {\n class: \"text-left\"\n}, \"Zostávajúce\", -1 /* HOISTED */));\nconst _hoisted_6 = /*#__PURE__*/_withScopeId(() => /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"th\", {\n class: \"text-left\"\n}, \"Akcia\", -1 /* HOISTED */));\nconst _hoisted_7 = [\"onClick\"];\nconst _hoisted_8 = {\n key: 0\n};\nconst _hoisted_9 = {\n class: \"task-action\"\n};\nconst _hoisted_10 = {\n class: \"d-flex justify-start align-center\"\n};\nconst _hoisted_11 = [\"src\", \"onClick\"];\nconst _hoisted_12 = [\"src\", \"onClick\"];\nconst _hoisted_13 = [\"src\"];\nconst _hoisted_14 = [\"src\", \"onClick\"];\nconst _hoisted_15 = [\"src\", \"onClick\"];\nfunction render(_ctx, _cache, $props, $setup, $data, $options) {\n \n \n return (0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createBlock)(vuetify_lib_components_VTable_index_mjs__WEBPACK_IMPORTED_MODULE_1__.VTable, null, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"thead\", null, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"tr\", null, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"th\", {\n onClick: _cache[0] || (_cache[0] = (...args) => $options.getSelectedTimeblockDeadline && $options.getSelectedTimeblockDeadline(...args)),\n class: \"text-left\"\n }, \" Kód projektu \"), _hoisted_1, _hoisted_2, _hoisted_3, _hoisted_4, _hoisted_5, _hoisted_6])]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"tbody\", null, [((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(true), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(vue__WEBPACK_IMPORTED_MODULE_0__.Fragment, null, (0,vue__WEBPACK_IMPORTED_MODULE_0__.renderList)($props.subtasks, subtask => {\n return (0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"tr\", {\n class: \"cursor-pointer\",\n key: subtask.id,\n onClick: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withModifiers)($event => $options.editTask(subtask, false), [\"stop\"])\n }, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"td\", null, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(subtask.project_code), 1 /* TEXT */), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"td\", null, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(subtask.title ?? subtask.master_task), 1 /* TEXT */), subtask.deadline ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"td\", _hoisted_8, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($options.getDeadline(subtask)), 1 /* TEXT */)) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VTooltip_index_mjs__WEBPACK_IMPORTED_MODULE_2__.VTooltip, {\n text: \"Deadline z Mastertasku\",\n location: \"end\"\n }, {\n activator: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(({\n props\n }) => [!subtask.deadline ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"td\", (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeProps)((0,vue__WEBPACK_IMPORTED_MODULE_0__.mergeProps)({\n key: 0\n }, props)), (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($options.getDeadline(subtask)) + \"* \", 17 /* TEXT, FULL_PROPS */)) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true)]),\n _: 2 /* DYNAMIC */\n }, 1024 /* DYNAMIC_SLOTS */), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"td\", null, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($options.displayTimeblock(subtask)), 1 /* TEXT */), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"td\", null, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(subtask.duration) + \" h\", 1 /* TEXT */), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"td\", null, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)((subtask.duration - subtask.spent_time).toFixed(2)) + \" h\", 1 /* TEXT */), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"td\", _hoisted_9, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_10, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"img\", {\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)([\"pencil-icon mr-3\", {\n disabled: $data.loadingSubtask[subtask.id]\n }]),\n src: $data.checkmarkDouble,\n onClick: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withModifiers)($event => $options.handleCompleteTask(subtask), [\"stop\"])\n }, null, 10 /* CLASS, PROPS */, _hoisted_11), subtask.type == 'office365' ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(vue__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n key: 0\n }, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"img\", {\n class: \"pencil-icon\",\n src: $data.eye,\n onClick: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withModifiers)($event => $options.editTask(subtask, false), [\"stop\"])\n }, null, 8 /* PROPS */, _hoisted_12), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"img\", {\n class: \"office-icon\",\n src: $data.office365\n }, null, 8 /* PROPS */, _hoisted_13)], 64 /* STABLE_FRAGMENT */)) : ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(vue__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n key: 1\n }, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"img\", {\n class: \"pencil-icon\",\n src: $data.eye,\n onClick: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withModifiers)($event => $options.editTask(subtask, false), [\"stop\"])\n }, null, 8 /* PROPS */, _hoisted_14), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"img\", {\n class: \"trash-icon\",\n src: $data.bin,\n onClick: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withModifiers)($event => $options.deleteTask(subtask), [\"stop\"])\n }, null, 8 /* PROPS */, _hoisted_15)], 64 /* STABLE_FRAGMENT */))])])], 8 /* PROPS */, _hoisted_7);\n }), 128 /* KEYED_FRAGMENT */))])]),\n\n _: 1 /* STABLE */\n });\n}\n\n/* Vuetify */\n\n\n\n\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@overview/tasks-ongoing/_components/a-ongoing-table.vue?./node_modules/webpack-plugin-vuetify/dist/scriptLoader.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/templateLoader.js??ruleSet%5B1%5D.rules%5B5%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D"); /***/ }),