diff --git a/app/dist/js/index.js b/app/dist/js/index.js
index fa77e44..adbc2d9 100644
--- a/app/dist/js/index.js
+++ b/app/dist/js/index.js
@@ -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 onInputFocus($event) {\n if (this.preventInputFocus) {\n $event.target.blur();\n this.preventInputFocus = false;\n }\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 };\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?");
/***/ }),
@@ -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_3__ = __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/* harmony import */ var _plugins_tm_modal_mixins_vuetify_fix_focus__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/plugins/tm@modal/_mixins/vuetify-fix-focus */ \"./src/plugins/tm@modal/_mixins/vuetify-fix-focus.ts\");\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n mixins: [_plugins_tm_modal_mixins_vuetify_fix_focus__WEBPACK_IMPORTED_MODULE_2__[\"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 },\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_3__.requiredIf)(this.timeblock.date)\n },\n ends_at_time: {\n required: (0,_vuelidate_validators__WEBPACK_IMPORTED_MODULE_3__.requiredIf)(this.timeblock.date)\n }\n }\n };\n },\n methods: {\n async openDatepicker(ref) {\n this.$refs[ref].openMenu();\n this.$nextTick(() => {\n this.$refs['datepicker-wrapper'].scrollIntoView({\n behavior: 'instant',\n block: 'center',\n inline: 'center'\n });\n this.$nextTick(() => {\n const popup = document.querySelector('.dp__menu.dp__menu_index');\n const isBottom = popup.querySelector('.dp__arrow_bottom');\n const yDifference = isBottom ? 0 - popup.clientHeight - 42 : 35;\n popup.style.top = window.innerHeight / 2 + yDifference + 'px';\n });\n });\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 },\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");
/***/ }),
@@ -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 onFocus: _ctx.onDateFocus,\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\", \"onFocus\", \"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: _ctx.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: _ctx.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] = $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");
/***/ }),
@@ -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 }, null, 8 /* PROPS */, [\"custom-filter\", \"modelValue\", \"class\", \"items\", \"item-title\"]), (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 onFocus: _ctx.onDateFocus,\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\", \"onFocus\", \"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 */)), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createCommentVNode)(\" \\n\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\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)(\"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 }, null, 8 /* PROPS */, [\"onUpdateTimeblock\", \"onRemoveTimeblock\", \"timeblock\", \"deletable\"]);\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__.createCommentVNode)(\" \\n\\t\\t\\t\\t\\t\\t\\t
Termín
\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t
\"), (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 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");
/***/ }),
diff --git a/app/src/plugins/tm@modal/_mixins/vuetify-fix-focus.ts b/app/src/plugins/tm@modal/_mixins/vuetify-fix-focus.ts
index 7e55738..ce566cc 100644
--- a/app/src/plugins/tm@modal/_mixins/vuetify-fix-focus.ts
+++ b/app/src/plugins/tm@modal/_mixins/vuetify-fix-focus.ts
@@ -1,29 +1,37 @@
export default {
- // Mixin to fix autofocus on v-input in modals where date selects are used
- data() {
- return {
- preventInputFocus: false
- }
- },
+ // Mixin to fix autofocus on v-input in modals where date selects are used
+ data() {
+ return {
+ preventInputFocus: false,
+ };
+ },
- methods: {
- setFocusEvent() {
- document.querySelectorAll('.v-autocomplete input').forEach(input => {
- input.addEventListener('focus', this.onInputFocus)
- })
- },
+ methods: {
+ setFocusEvent() {
+ document.querySelectorAll('.v-autocomplete input').forEach((input) => {
+ input.addEventListener('focus', this.onInputFocus);
+ });
+ },
- onDateFocus($event) {
- if ($event == undefined) {
- this.preventInputFocus = true
- }
- },
+ onDateFocus($event) {
+ if ($event == undefined) {
+ this.preventInputFocus = true;
+ }
+ },
- onInputFocus($event) {
- if (this.preventInputFocus) {
- $event.target.blur()
- this.preventInputFocus = false
- }
- }
- }
-}
\ No newline at end of file
+ onDateOpen($event) {
+ if ($event == undefined) {
+ this.preventInputFocus = true;
+ }
+ },
+
+ onInputFocus($event) {
+ setTimeout(() => {
+ if (this.preventInputFocus) {
+ $event.target.blur();
+ this.preventInputFocus = false;
+ }
+ }, 100);
+ },
+ },
+};
diff --git a/app/src/plugins/tm@modal/task/_components/a-timeblock.vue b/app/src/plugins/tm@modal/task/_components/a-timeblock.vue
index 3e30ce9..fe53717 100644
--- a/app/src/plugins/tm@modal/task/_components/a-timeblock.vue
+++ b/app/src/plugins/tm@modal/task/_components/a-timeblock.vue
@@ -1,93 +1,131 @@
-
-
-
-
-
-
-
-
-
-
-
+
e
\ No newline at end of file
+
+e
diff --git a/app/src/plugins/tm@modal/task/z-task-modal.vue b/app/src/plugins/tm@modal/task/z-task-modal.vue
index c9deb68..d85acd2 100644
--- a/app/src/plugins/tm@modal/task/z-task-modal.vue
+++ b/app/src/plugins/tm@modal/task/z-task-modal.vue
@@ -44,6 +44,7 @@
variant="solo"
class="modal-input"
clearable
+ @focus="onInputFocus"
/>
-
-