@topvisor/ui 1.5.8-dialogShadow.0 → 1.5.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.chunks/{app-DGsWGbDX.amd.js → app-BaHwxbWz.amd.js} +2 -2
- package/.chunks/{app-DGsWGbDX.amd.js.map → app-BaHwxbWz.amd.js.map} +1 -1
- package/.chunks/{app-DGsWGbDX.esm.js → app-BaHwxbWz.esm.js} +2 -2
- package/.chunks/{app-DGsWGbDX.esm.js.map → app-BaHwxbWz.esm.js.map} +1 -1
- package/.chunks/{dialog-DKGzAD_z.amd.js → dialog-BM4mfi7y.amd.js} +2 -2
- package/.chunks/{dialog-DKGzAD_z.amd.js.map → dialog-BM4mfi7y.amd.js.map} +1 -1
- package/.chunks/{dialog-DKGzAD_z.esm.js → dialog-BM4mfi7y.esm.js} +2 -2
- package/.chunks/{dialog-DKGzAD_z.esm.js.map → dialog-BM4mfi7y.esm.js.map} +1 -1
- package/.chunks/{dialog_regionSelectorRegions-BIjtdwxa.amd.js → dialog_regionSelectorRegions-CN3F-67P.amd.js} +2 -2
- package/.chunks/{dialog_regionSelectorRegions-BIjtdwxa.amd.js.map → dialog_regionSelectorRegions-CN3F-67P.amd.js.map} +1 -1
- package/.chunks/{dialog_regionSelectorRegions-BIjtdwxa.esm.js → dialog_regionSelectorRegions-CN3F-67P.esm.js} +3 -3
- package/.chunks/{dialog_regionSelectorRegions-BIjtdwxa.esm.js.map → dialog_regionSelectorRegions-CN3F-67P.esm.js.map} +1 -1
- package/.chunks/{utils-BtqYaMHp.amd.js → utils-B1P0BzZ1.amd.js} +2 -2
- package/.chunks/{utils-BtqYaMHp.amd.js.map → utils-B1P0BzZ1.amd.js.map} +1 -1
- package/.chunks/{utils-BtqYaMHp.esm.js → utils-B1P0BzZ1.esm.js} +2 -2
- package/.chunks/{utils-BtqYaMHp.esm.js.map → utils-B1P0BzZ1.esm.js.map} +1 -1
- package/.chunks/{utils-Cou0pGI4.amd.js → utils-B1tz7GZc.amd.js} +2 -2
- package/.chunks/utils-B1tz7GZc.amd.js.map +1 -0
- package/.chunks/{utils-Cou0pGI4.esm.js → utils-B1tz7GZc.esm.js} +3 -3
- package/.chunks/utils-B1tz7GZc.esm.js.map +1 -0
- package/autoload-css-manifest.amd.json +1 -1
- package/autoload-css-manifest.json +1 -1
- package/core/app.amd.js +1 -1
- package/core/app.amd.js.map +1 -1
- package/core/app.js +2 -2
- package/dialog/dialog.amd.js +1 -1
- package/dialog/dialog.amd.js.map +1 -1
- package/dialog/dialog.js +2 -2
- package/icomoon/Topvisor icons.json +152 -129
- package/icomoon/demo-files/demo.amd.js +1 -1
- package/icomoon/demo-files/demo.amd.js.map +1 -1
- package/icomoon/demo-files/demo.js +2 -2
- package/icomoon/demo.html +15 -1
- package/icomoon/fonts/Topvisor-2.eot +0 -0
- package/icomoon/fonts/Topvisor-2.svg +1 -0
- package/icomoon/fonts/Topvisor-2.ttf +0 -0
- package/icomoon/fonts/Topvisor-2.woff +0 -0
- package/icomoon/selection.json +1 -1
- package/icomoon/style.css +8 -5
- package/package.json +1 -1
- package/project/project.amd.js +1 -1
- package/project/project.amd.js.map +1 -1
- package/project/project.js +3 -3
- package/schedule/schedule.amd.js +1 -1
- package/schedule/schedule.amd.js.map +1 -1
- package/schedule/schedule.js +1 -1
- package/.chunks/utils-Cou0pGI4.amd.js.map +0 -1
- package/.chunks/utils-Cou0pGI4.esm.js.map +0 -1
package/project/project.js
CHANGED
|
@@ -10,8 +10,8 @@ import { E as e, O as t, P as n, h as r, n as i } from "../.chunks/forms-_4U0sLF
|
|
|
10
10
|
import { n as a, t as o } from "../.chunks/field-DEusYVqS.esm.js";
|
|
11
11
|
import { storage as s } from "../utils/dom.js";
|
|
12
12
|
import { t as c } from "../.chunks/worker-D28QqQ45.esm.js";
|
|
13
|
-
import "../.chunks/app-
|
|
14
|
-
import { t as l } from "../.chunks/utils-
|
|
13
|
+
import "../.chunks/app-BaHwxbWz.esm.js";
|
|
14
|
+
import { t as l } from "../.chunks/utils-B1P0BzZ1.esm.js";
|
|
15
15
|
import { validUrl as u } from "../utils/check.js";
|
|
16
16
|
import { ellipsis as d } from "../utils/string.js";
|
|
17
17
|
import { getDeviceGIcon as f, getLangLabel as p, getSearcherGIcon as m } from "../utils/searchers.js";
|
|
@@ -167,7 +167,7 @@ var ge = { class: "top-competitorSelector" }, _e = { class: "top-ellipsis1" }, v
|
|
|
167
167
|
if (!i && !(t.key !== void 0 && t.key != r.key) && !(t.index !== void 0 && t.index != r.index) && !(!e && (t.lang !== void 0 && t.lang != r.lang || t.device !== void 0 && t.device != r.device))) return r.searcher_key = n.key, i = r, !1;
|
|
168
168
|
}), i)) return !1;
|
|
169
169
|
}), i;
|
|
170
|
-
}, Me = l(() => import("../.chunks/dialog_regionSelectorRegions-
|
|
170
|
+
}, Me = l(() => import("../.chunks/dialog_regionSelectorRegions-CN3F-67P.esm.js")), Ne = (t, n) => {
|
|
171
171
|
let r = e();
|
|
172
172
|
return {
|
|
173
173
|
searcherKey: I(n.value.keys().next().value ?? -2),
|
package/schedule/schedule.amd.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
define([`require`,`exports`,`../.chunks/forms-_4U0sLFk.amd`,`../utils/check.amd`,`../utils/string.amd`,`vue`,`../.chunks/app-DGsWGbDX.amd`,`../require/css.amd!../assets/schedule.css`],function(e,t,n,r,i,a){"use strict";if(o===void 0)var o=window.Vue;Object.defineProperty(t,"__esModule",{value:!0}),t.TopScheduleTimeSelectors=t.TopScheduleTimeSelector=t.TopScheduleReportSend=t.TopScheduleEmailSelector=t.TopScheduleEmail=t.TopScheduleContainer=t.TopScheduleCalendar=t.TopSchedule=void 0;var s={class:`top-schedule_header`},c={class:`top-schedule_headerTitle`},l={key:0,class:`top-schedule_body`},u=(0,a.defineComponent)({name:`TopSchedule`,__name:`schedule`,props:{styling:{},triggerType:{default:`onDemand`},triggerTypes:{},triggerTypeOptions:{},title:{}},emits:[`update:triggerType`],setup(e,{emit:t,slots:r}){let i=e,o=(0,n.E)(),u={go:o.Projects.Checks,report:o.Projects.Reports,neutral:``},d=i.title??u[i.styling];return(i,o)=>((0,a.openBlock)(),(0,a.createElementBlock)(`div`,{class:(0,a.normalizeClass)({"top-schedule":!0,[`top-schedule-style_${e.styling}`]:!0})},[(0,a.createElementVNode)(`div`,s,[(0,a.createElementVNode)(`div`,c,(0,a.toDisplayString)((0,a.unref)(d)),1),(0,a.createVNode)(n.n,{class:`top-schedule_headerTriggerType`,modelValue:e.triggerType,"onUpdate:modelValue":o[0]||=e=>t(`update:triggerType`,e),options:e.triggerTypeOptions,size:`s`},null,8,[`modelValue`,`options`])]),e.triggerType!==`onDemand`&&r.body?((0,a.openBlock)(),(0,a.createElementBlock)(`div`,l,[(0,a.renderSlot)(i.$slots,`body`)])):(0,a.createCommentVNode)(``,!0)],2))}}),d={},f={class:`top-schedule_bodyContainer`};t.TopSchedule=u;function p(e,t){return(0,a.openBlock)(),(0,a.createElementBlock)(`div`,f,[(0,a.renderSlot)(e.$slots,`default`)])}var m=(0,n.u)(d,[[`render`,p]]),h=e=>{let t=(0,n.E)();switch(e){case`dayOfMonth`:{let e=Array.from({length:27},(e,t)=>({value:String(t+1),title:String(t+1)}));return e.push({value:`LAST_OF_MONTH`,title:``,isIcon:!0}),e}case`dayOfWeek`:return[{value:`MONDAY`,title:t.Calendar.Dw_1},{value:`TUESDAY`,title:t.Calendar.Dw_2},{value:`WEDNESDAY`,title:t.Calendar.Dw_3},{value:`THURSDAY`,title:t.Calendar.Dw_4},{value:`FRIDAY`,title:t.Calendar.Dw_5},{value:`SATURDAY`,title:t.Calendar.Dw_6},{value:`SUNDAY`,title:t.Calendar.Dw_7}]}},g={class:`top-scheduleCalendar`},_={class:`top-scheduleCalendar_header`},v={class:`top-scheduleCalendar_calendar`},y=[`value`],b=[`data-top-icon`],x=(0,a.defineComponent)({__name:`calendar`,props:{modelValue:{},mode:{},timesCount:{default:1}},emits:[`update:modelValue`],setup(e,{emit:t}){let r=(0,n.E)(),o=e,s=t,c=(0,a.computed)({get:()=>o.modelValue,set:e=>s(`update:modelValue`,e)}),l=(0,a.computed)(()=>h(o.mode)),u={dayOfWeek:{totalDaysCount:7,period:r.Common.a_week},dayOfMonth:{totalDaysCount:28,period:r.Common.a_month}},d=(0,a.computed)(()=>{let e=c.value.length,{totalDaysCount:t,period:n}=u[o.mode],a=e===t;if(a&&o.timesCount===1)return r.Common.Every_day;let s=o.timesCount===1?e:o.timesCount;return`${a?r.Common.Every_day:`${e}`}${o.timesCount>1?` × ${o.timesCount}`:``} ${(0,i.numberEnding)(s,r.Common.time_a_0,r.Common.time_a_0,r.Common.time_a_2)} ${n}`}),f=(0,a.computed)(()=>c.value.length>1),p=()=>{c.value=f.value?[]:l.value.map(e=>e.value)};return(e,t)=>{let n=(0,a.resolveComponent)(`TopButton`);return(0,a.openBlock)(),(0,a.createElementBlock)(`div`,g,[(0,a.createElementVNode)(`div`,_,[(0,a.renderSlot)(e.$slots,`header`),(0,a.createVNode)(n,{class:`top-scheduleCalendar_headerButton`,onClick:p,color:`theme`,tabindex:`0`},{default:(0,a.withCtx)(()=>[(0,a.createTextVNode)((0,a.toDisplayString)(f.value?e.$i18n.Common.Clear:e.$i18n.Common.Select_all),1)]),_:1})]),(0,a.createElementVNode)(`div`,v,[((0,a.openBlock)(!0),(0,a.createElementBlock)(a.Fragment,null,(0,a.renderList)(l.value,e=>((0,a.openBlock)(),(0,a.createElementBlock)(`label`,{class:`top-scheduleCalendar_calendarDay`,key:e.value},[(0,a.withDirectives)((0,a.createElementVNode)(`input`,{class:`top-scheduleCalendar_calendarDayRadio`,type:`checkbox`,value:e.value,"onUpdate:modelValue":t[0]||=e=>c.value=e,tabindex:`0`},null,8,y),[[a.vModelCheckbox,c.value]]),(0,a.createElementVNode)(`span`,{class:`top-scheduleCalendar_calendarDayTitle`,"data-top-icon":e.isIcon?e.title:void 0},[e.isIcon?(0,a.createCommentVNode)(``,!0):((0,a.openBlock)(),(0,a.createElementBlock)(a.Fragment,{key:0},[(0,a.createTextVNode)((0,a.toDisplayString)(e.title),1)],64))],8,b)]))),128))]),(0,a.createElementVNode)(`span`,{class:(0,a.normalizeClass)({"top-scheduleCalendar_selectionSummary":!0,"top-error":!c.value.length})},(0,a.toDisplayString)(d.value),3)])}}}),S=(0,a.defineComponent)({__name:`selector`,props:{modelValue:{},emails:{default:()=>[]},getEmailSuggestions:{type:Function,default:()=>[]}},emits:[`update:modelValue`,`submit`],setup(e,{emit:t}){let i=t,o=e,s=t,c=(0,n.E)(),l=n.O.$,u=(0,a.ref)(),d=(0,a.ref)(),f=null,p={},m=e=>e.filter(e=>!o.emails.includes(e)),h=(e=o.modelValue)=>{let t=String(e).trim();if(t){if(!(0,r.isEmail)(t)){n.O.notice(c.Common.Enter_valid_email_notice,`error`);return}s(`submit`,t)}},g=async()=>{if(await(0,a.nextTick)(),f=d.value?.$el.querySelector(`input`)??null,f){if(!l?.ui?.autocomplete){console.info(`Для работы autocomplete требуется глобальная загрузка jQuery UI Autocomplete`);return}l(f).autocomplete({appendTo:u.value,minLength:0,source:async(e,t)=>{let n=e.term;n in p||(p[n]=await o.getEmailSuggestions(n)),t(m(p[n]).map(e=>({label:e,value:e})))},select:(e,t)=>{!t.item||!f||(e.preventDefault(),h(t.item.value),s(`update:modelValue`,``),l(f).trigger(`focus`))}}),l(f).attr(`autocomplete`,`disabled`),l(f).on(`focus.scheduleEmailSelector`,()=>{f&&l(f).trigger(`input`)})}};return(0,a.onMounted)(()=>{g()}),(0,a.onBeforeUnmount)(()=>{!l?.ui?.autocomplete||!f||(l(f).off(`focus.scheduleEmailSelector`),l(f).autocomplete(`destroy`))}),(t,r)=>((0,a.openBlock)(),(0,a.createElementBlock)(`div`,{class:`top-scheduleEmailSelector`,ref_key:`elRootRef`,ref:u},[(0,a.createVNode)(n.c,{ref_key:`elInputRef`,ref:d,modelValue:e.modelValue,"onUpdate:modelValue":r[1]||=e=>i(`update:modelValue`,e),onKeydown:r[2]||=(0,a.withKeys)((0,a.withModifiers)(e=>h(),[`prevent`]),[`enter`]),title:t.$i18n.Common.Enter_email,type:`email`,size:`l`},{default:(0,a.withCtx)(()=>[(0,a.createVNode)(n.h,{class:`top-scheduleEmailSelector_submit`,color:`theme`,icon:``,onClick:r[0]||=(0,a.withModifiers)(e=>h(),[`prevent`])})]),_:1},8,[`modelValue`,`title`])],512))}}),C={class:`top-scheduleEmail`},w={class:`top-scheduleEmail_title`},T={key:1,class:`top-scheduleEmail_emails`},E={class:`top-ellipsis1`},D=(0,a.defineComponent)({__name:`email`,props:{emails:{default:()=>[]},getEmailSuggestions:{type:Function,default:()=>[]},maxEmailsCount:{default:-1}},emits:[`add:email`,`remove:email`],setup(e,{emit:t}){let n=t,r=e,i=t,o=(0,a.ref)(``),s=e=>{let t=e.trim();if(!t||r.emails.includes(t)){o.value=``;return}i(`add:email`,t),o.value=``};return(t,r)=>{let i=(0,a.resolveComponent)(`TopButton`);return(0,a.openBlock)(),(0,a.createElementBlock)(`div`,C,[(0,a.createElementVNode)(`div`,w,(0,a.toDisplayString)(t.$i18n.Projects.Reports_send_to_address)+` E-mail: `,1),e.maxEmailsCount&&e.emails.length===e.maxEmailsCount?(0,a.createCommentVNode)(``,!0):((0,a.openBlock)(),(0,a.createBlock)(S,{key:0,modelValue:o.value,"onUpdate:modelValue":r[0]||=e=>o.value=e,getEmailSuggestions:e.getEmailSuggestions,emails:e.emails,onSubmit:s},null,8,[`modelValue`,`getEmailSuggestions`,`emails`])),e.emails.length?((0,a.openBlock)(),(0,a.createElementBlock)(`div`,T,[((0,a.openBlock)(!0),(0,a.createElementBlock)(a.Fragment,null,(0,a.renderList)(e.emails,e=>((0,a.openBlock)(),(0,a.createElementBlock)(`div`,{class:`top-scheduleEmail_emailsItem`,key:e},[(0,a.createElementVNode)(`span`,E,(0,a.toDisplayString)(e),1),(0,a.createVNode)(i,{onClick:t=>n(`remove:email`,e),color:`theme`,icon:``},null,8,[`onClick`])]))),128))])):(0,a.createCommentVNode)(``,!0)])}}}),O={class:`top-scheduleReportSend`},k={class:`top-scheduleReportSend_title`},A={class:`top-scheduleReportSend_channels`},j=[`data-top-icon`],M={class:`top-scheduleReportSend_channelLabel top-ellipsis1`},N={key:0,class:`top-scheduleReportSend_channel`},P=[`data-top-icon`],F=[`href`],I=(0,a.defineComponent)({__name:`reportSend`,props:{channels:{},connectors:{default:()=>[]}},emits:[`update:channelSelected`],setup(e,{emit:t}){let n=e,r=e=>n.channels.some(t=>t.source===e),i={informer:``,telegram:``};return(n,o)=>{let s=(0,a.resolveComponent)(`TopButton`),c=(0,a.resolveComponent)(`TopSwitcher`);return(0,a.openBlock)(),(0,a.createElementBlock)(`div`,O,[(0,a.createElementVNode)(`div`,k,(0,a.toDisplayString)(n.$i18n.Projects.Reports_send),1),(0,a.createElementVNode)(`div`,A,[((0,a.openBlock)(!0),(0,a.createElementBlock)(a.Fragment,null,(0,a.renderList)(e.channels,e=>((0,a.openBlock)(),(0,a.createElementBlock)(`div`,{class:`top-scheduleReportSend_channel`,key:`${e.source}-${e.id}`},[(0,a.createElementVNode)(`span`,{class:`top-scheduleReportSend_channelIcon`,"data-top-icon":i[e.source]},null,8,j),(0,a.createElementVNode)(`span`,M,(0,a.toDisplayString)(e.label),1),e.settingLink?((0,a.openBlock)(),(0,a.createBlock)(s,{key:0,class:`top-scheduleReportSend_channelSettings`,size:`xs`,href:e.settingLink,target:`_blank`,icon:``,color:`theme`,tabindex:`0`},null,8,[`href`])):(0,a.createCommentVNode)(``,!0),(0,a.createVNode)(c,{class:`top-scheduleReportSend_channelSwitcher`,modelValue:e.selected,"onUpdate:modelValue":n=>t(`update:channelSelected`,{id:e.id,source:e.source,selected:n})},null,8,[`modelValue`,`onUpdate:modelValue`])]))),128)),((0,a.openBlock)(!0),(0,a.createElementBlock)(a.Fragment,null,(0,a.renderList)(e.connectors,e=>((0,a.openBlock)(),(0,a.createElementBlock)(a.Fragment,{key:e.source},[r(e.source)?(0,a.createCommentVNode)(``,!0):((0,a.openBlock)(),(0,a.createElementBlock)(`div`,N,[(0,a.createElementVNode)(`span`,{class:`top-scheduleReportSend_channelIcon`,"data-top-icon":i[e.source]},null,8,P),(0,a.createElementVNode)(`a`,{class:`top-scheduleReportSend_channelLabel top-ellipsis1`,href:e.connectLink,target:`_blank`},(0,a.toDisplayString)(e.connectLabel),9,F)]))],64))),128))])])}}}),L={class:`top-scheduleTimeSelector`},R=(0,a.defineComponent)({__name:`timeSelector`,props:{hour:{},minute:{}},emits:[`update:hour`,`update:minute`],setup(e,{emit:t}){let n=e,r=Array.from({length:24},(e,t)=>({value:String(t),title:String(t).padStart(2,`0`)})),i=[{value:`0`,title:`00`},{value:`15`,title:`15`},{value:`30`,title:`30`},{value:`45`,title:`45`}],o=(0,a.computed)(()=>i.some(e=>e.value===n.minute)?i:[...i,{value:n.minute,title:n.minute.padStart(2,`0`),disabled:!0}]);return(n,i)=>{let s=(0,a.resolveComponent)(`TopSelect`);return(0,a.openBlock)(),(0,a.createElementBlock)(`div`,L,[(0,a.createVNode)(s,{class:`top-scheduleTimeSelector_hour`,modelValue:e.hour,options:(0,a.unref)(r),"onUpdate:modelValue":i[0]||=e=>t(`update:hour`,e)},null,8,[`modelValue`,`options`]),(0,a.createVNode)(s,{class:`top-scheduleTimeSelector_minute`,modelValue:e.minute,options:o.value,"onUpdate:modelValue":i[1]||=e=>t(`update:minute`,e)},null,8,[`modelValue`,`options`])])}}}),z={class:`top-scheduleTimeSelectors`},B=(0,a.defineComponent)({__name:`timeSelectors`,props:{times:{}},emits:[`update:times`],setup(e,{emit:t}){let n=t,r=e,i=t,o=new WeakMap,s=0,c=e=>{let t=(0,a.toRaw)(e),n=o.get(t);if(n!==void 0)return n;let r=s++;return o.set(t,r),r},l=(e,t)=>{let n=r.times.map((n,r)=>{if(r!==e)return n;let i={...n,...t};return o.set(i,c(n)),i});i(`update:times`,n)},u=()=>{let e=[{hour:`0`,minute:`0`},...r.times];i(`update:times`,e)};return(t,r)=>{let i=(0,a.resolveComponent)(`TopButton`);return(0,a.openBlock)(),(0,a.createElementBlock)(`div`,z,[((0,a.openBlock)(!0),(0,a.createElementBlock)(a.Fragment,null,(0,a.renderList)(e.times,(t,r)=>((0,a.openBlock)(),(0,a.createElementBlock)(`div`,{class:`top-scheduleTimeSelectors_item`,key:c(t)},[(0,a.createVNode)(R,{hour:t.hour,minute:t.minute,"onUpdate:hour":e=>l(r,{hour:e}),"onUpdate:minute":e=>l(r,{minute:e})},null,8,[`hour`,`minute`,`onUpdate:hour`,`onUpdate:minute`]),r?((0,a.openBlock)(),(0,a.createBlock)(i,{key:0,onClick:t=>n(`update:times`,e.times.filter((e,t)=>t!==r)),color:`theme`,icon:``},null,8,[`onClick`])):((0,a.openBlock)(),(0,a.createBlock)(i,{key:1,class:`top-scheduleTimeSelectors_itemAdd`,onClick:u,color:`theme`,icon:``}))]))),128))])}}});t.TopScheduleContainer=m,t.TopScheduleCalendar=x,t.TopScheduleEmailSelector=S,t.TopScheduleEmail=D,t.TopScheduleReportSend=I,t.TopScheduleTimeSelector=R,t.TopScheduleTimeSelectors=B});
|
|
1
|
+
define([`require`,`exports`,`../.chunks/forms-_4U0sLFk.amd`,`../utils/check.amd`,`../utils/string.amd`,`vue`,`../.chunks/app-BaHwxbWz.amd`,`../require/css.amd!../assets/schedule.css`],function(e,t,n,r,i,a){"use strict";if(o===void 0)var o=window.Vue;Object.defineProperty(t,"__esModule",{value:!0}),t.TopScheduleTimeSelectors=t.TopScheduleTimeSelector=t.TopScheduleReportSend=t.TopScheduleEmailSelector=t.TopScheduleEmail=t.TopScheduleContainer=t.TopScheduleCalendar=t.TopSchedule=void 0;var s={class:`top-schedule_header`},c={class:`top-schedule_headerTitle`},l={key:0,class:`top-schedule_body`},u=(0,a.defineComponent)({name:`TopSchedule`,__name:`schedule`,props:{styling:{},triggerType:{default:`onDemand`},triggerTypes:{},triggerTypeOptions:{},title:{}},emits:[`update:triggerType`],setup(e,{emit:t,slots:r}){let i=e,o=(0,n.E)(),u={go:o.Projects.Checks,report:o.Projects.Reports,neutral:``},d=i.title??u[i.styling];return(i,o)=>((0,a.openBlock)(),(0,a.createElementBlock)(`div`,{class:(0,a.normalizeClass)({"top-schedule":!0,[`top-schedule-style_${e.styling}`]:!0})},[(0,a.createElementVNode)(`div`,s,[(0,a.createElementVNode)(`div`,c,(0,a.toDisplayString)((0,a.unref)(d)),1),(0,a.createVNode)(n.n,{class:`top-schedule_headerTriggerType`,modelValue:e.triggerType,"onUpdate:modelValue":o[0]||=e=>t(`update:triggerType`,e),options:e.triggerTypeOptions,size:`s`},null,8,[`modelValue`,`options`])]),e.triggerType!==`onDemand`&&r.body?((0,a.openBlock)(),(0,a.createElementBlock)(`div`,l,[(0,a.renderSlot)(i.$slots,`body`)])):(0,a.createCommentVNode)(``,!0)],2))}}),d={},f={class:`top-schedule_bodyContainer`};t.TopSchedule=u;function p(e,t){return(0,a.openBlock)(),(0,a.createElementBlock)(`div`,f,[(0,a.renderSlot)(e.$slots,`default`)])}var m=(0,n.u)(d,[[`render`,p]]),h=e=>{let t=(0,n.E)();switch(e){case`dayOfMonth`:{let e=Array.from({length:27},(e,t)=>({value:String(t+1),title:String(t+1)}));return e.push({value:`LAST_OF_MONTH`,title:``,isIcon:!0}),e}case`dayOfWeek`:return[{value:`MONDAY`,title:t.Calendar.Dw_1},{value:`TUESDAY`,title:t.Calendar.Dw_2},{value:`WEDNESDAY`,title:t.Calendar.Dw_3},{value:`THURSDAY`,title:t.Calendar.Dw_4},{value:`FRIDAY`,title:t.Calendar.Dw_5},{value:`SATURDAY`,title:t.Calendar.Dw_6},{value:`SUNDAY`,title:t.Calendar.Dw_7}]}},g={class:`top-scheduleCalendar`},_={class:`top-scheduleCalendar_header`},v={class:`top-scheduleCalendar_calendar`},y=[`value`],b=[`data-top-icon`],x=(0,a.defineComponent)({__name:`calendar`,props:{modelValue:{},mode:{},timesCount:{default:1}},emits:[`update:modelValue`],setup(e,{emit:t}){let r=(0,n.E)(),o=e,s=t,c=(0,a.computed)({get:()=>o.modelValue,set:e=>s(`update:modelValue`,e)}),l=(0,a.computed)(()=>h(o.mode)),u={dayOfWeek:{totalDaysCount:7,period:r.Common.a_week},dayOfMonth:{totalDaysCount:28,period:r.Common.a_month}},d=(0,a.computed)(()=>{let e=c.value.length,{totalDaysCount:t,period:n}=u[o.mode],a=e===t;if(a&&o.timesCount===1)return r.Common.Every_day;let s=o.timesCount===1?e:o.timesCount;return`${a?r.Common.Every_day:`${e}`}${o.timesCount>1?` × ${o.timesCount}`:``} ${(0,i.numberEnding)(s,r.Common.time_a_0,r.Common.time_a_0,r.Common.time_a_2)} ${n}`}),f=(0,a.computed)(()=>c.value.length>1),p=()=>{c.value=f.value?[]:l.value.map(e=>e.value)};return(e,t)=>{let n=(0,a.resolveComponent)(`TopButton`);return(0,a.openBlock)(),(0,a.createElementBlock)(`div`,g,[(0,a.createElementVNode)(`div`,_,[(0,a.renderSlot)(e.$slots,`header`),(0,a.createVNode)(n,{class:`top-scheduleCalendar_headerButton`,onClick:p,color:`theme`,tabindex:`0`},{default:(0,a.withCtx)(()=>[(0,a.createTextVNode)((0,a.toDisplayString)(f.value?e.$i18n.Common.Clear:e.$i18n.Common.Select_all),1)]),_:1})]),(0,a.createElementVNode)(`div`,v,[((0,a.openBlock)(!0),(0,a.createElementBlock)(a.Fragment,null,(0,a.renderList)(l.value,e=>((0,a.openBlock)(),(0,a.createElementBlock)(`label`,{class:`top-scheduleCalendar_calendarDay`,key:e.value},[(0,a.withDirectives)((0,a.createElementVNode)(`input`,{class:`top-scheduleCalendar_calendarDayRadio`,type:`checkbox`,value:e.value,"onUpdate:modelValue":t[0]||=e=>c.value=e,tabindex:`0`},null,8,y),[[a.vModelCheckbox,c.value]]),(0,a.createElementVNode)(`span`,{class:`top-scheduleCalendar_calendarDayTitle`,"data-top-icon":e.isIcon?e.title:void 0},[e.isIcon?(0,a.createCommentVNode)(``,!0):((0,a.openBlock)(),(0,a.createElementBlock)(a.Fragment,{key:0},[(0,a.createTextVNode)((0,a.toDisplayString)(e.title),1)],64))],8,b)]))),128))]),(0,a.createElementVNode)(`span`,{class:(0,a.normalizeClass)({"top-scheduleCalendar_selectionSummary":!0,"top-error":!c.value.length})},(0,a.toDisplayString)(d.value),3)])}}}),S=(0,a.defineComponent)({__name:`selector`,props:{modelValue:{},emails:{default:()=>[]},getEmailSuggestions:{type:Function,default:()=>[]}},emits:[`update:modelValue`,`submit`],setup(e,{emit:t}){let i=t,o=e,s=t,c=(0,n.E)(),l=n.O.$,u=(0,a.ref)(),d=(0,a.ref)(),f=null,p={},m=e=>e.filter(e=>!o.emails.includes(e)),h=(e=o.modelValue)=>{let t=String(e).trim();if(t){if(!(0,r.isEmail)(t)){n.O.notice(c.Common.Enter_valid_email_notice,`error`);return}s(`submit`,t)}},g=async()=>{if(await(0,a.nextTick)(),f=d.value?.$el.querySelector(`input`)??null,f){if(!l?.ui?.autocomplete){console.info(`Для работы autocomplete требуется глобальная загрузка jQuery UI Autocomplete`);return}l(f).autocomplete({appendTo:u.value,minLength:0,source:async(e,t)=>{let n=e.term;n in p||(p[n]=await o.getEmailSuggestions(n)),t(m(p[n]).map(e=>({label:e,value:e})))},select:(e,t)=>{!t.item||!f||(e.preventDefault(),h(t.item.value),s(`update:modelValue`,``),l(f).trigger(`focus`))}}),l(f).attr(`autocomplete`,`disabled`),l(f).on(`focus.scheduleEmailSelector`,()=>{f&&l(f).trigger(`input`)})}};return(0,a.onMounted)(()=>{g()}),(0,a.onBeforeUnmount)(()=>{!l?.ui?.autocomplete||!f||(l(f).off(`focus.scheduleEmailSelector`),l(f).autocomplete(`destroy`))}),(t,r)=>((0,a.openBlock)(),(0,a.createElementBlock)(`div`,{class:`top-scheduleEmailSelector`,ref_key:`elRootRef`,ref:u},[(0,a.createVNode)(n.c,{ref_key:`elInputRef`,ref:d,modelValue:e.modelValue,"onUpdate:modelValue":r[1]||=e=>i(`update:modelValue`,e),onKeydown:r[2]||=(0,a.withKeys)((0,a.withModifiers)(e=>h(),[`prevent`]),[`enter`]),title:t.$i18n.Common.Enter_email,type:`email`,size:`l`},{default:(0,a.withCtx)(()=>[(0,a.createVNode)(n.h,{class:`top-scheduleEmailSelector_submit`,color:`theme`,icon:``,onClick:r[0]||=(0,a.withModifiers)(e=>h(),[`prevent`])})]),_:1},8,[`modelValue`,`title`])],512))}}),C={class:`top-scheduleEmail`},w={class:`top-scheduleEmail_title`},T={key:1,class:`top-scheduleEmail_emails`},E={class:`top-ellipsis1`},D=(0,a.defineComponent)({__name:`email`,props:{emails:{default:()=>[]},getEmailSuggestions:{type:Function,default:()=>[]},maxEmailsCount:{default:-1}},emits:[`add:email`,`remove:email`],setup(e,{emit:t}){let n=t,r=e,i=t,o=(0,a.ref)(``),s=e=>{let t=e.trim();if(!t||r.emails.includes(t)){o.value=``;return}i(`add:email`,t),o.value=``};return(t,r)=>{let i=(0,a.resolveComponent)(`TopButton`);return(0,a.openBlock)(),(0,a.createElementBlock)(`div`,C,[(0,a.createElementVNode)(`div`,w,(0,a.toDisplayString)(t.$i18n.Projects.Reports_send_to_address)+` E-mail: `,1),e.maxEmailsCount&&e.emails.length===e.maxEmailsCount?(0,a.createCommentVNode)(``,!0):((0,a.openBlock)(),(0,a.createBlock)(S,{key:0,modelValue:o.value,"onUpdate:modelValue":r[0]||=e=>o.value=e,getEmailSuggestions:e.getEmailSuggestions,emails:e.emails,onSubmit:s},null,8,[`modelValue`,`getEmailSuggestions`,`emails`])),e.emails.length?((0,a.openBlock)(),(0,a.createElementBlock)(`div`,T,[((0,a.openBlock)(!0),(0,a.createElementBlock)(a.Fragment,null,(0,a.renderList)(e.emails,e=>((0,a.openBlock)(),(0,a.createElementBlock)(`div`,{class:`top-scheduleEmail_emailsItem`,key:e},[(0,a.createElementVNode)(`span`,E,(0,a.toDisplayString)(e),1),(0,a.createVNode)(i,{onClick:t=>n(`remove:email`,e),color:`theme`,icon:``},null,8,[`onClick`])]))),128))])):(0,a.createCommentVNode)(``,!0)])}}}),O={class:`top-scheduleReportSend`},k={class:`top-scheduleReportSend_title`},A={class:`top-scheduleReportSend_channels`},j=[`data-top-icon`],M={class:`top-scheduleReportSend_channelLabel top-ellipsis1`},N={key:0,class:`top-scheduleReportSend_channel`},P=[`data-top-icon`],F=[`href`],I=(0,a.defineComponent)({__name:`reportSend`,props:{channels:{},connectors:{default:()=>[]}},emits:[`update:channelSelected`],setup(e,{emit:t}){let n=e,r=e=>n.channels.some(t=>t.source===e),i={informer:``,telegram:``};return(n,o)=>{let s=(0,a.resolveComponent)(`TopButton`),c=(0,a.resolveComponent)(`TopSwitcher`);return(0,a.openBlock)(),(0,a.createElementBlock)(`div`,O,[(0,a.createElementVNode)(`div`,k,(0,a.toDisplayString)(n.$i18n.Projects.Reports_send),1),(0,a.createElementVNode)(`div`,A,[((0,a.openBlock)(!0),(0,a.createElementBlock)(a.Fragment,null,(0,a.renderList)(e.channels,e=>((0,a.openBlock)(),(0,a.createElementBlock)(`div`,{class:`top-scheduleReportSend_channel`,key:`${e.source}-${e.id}`},[(0,a.createElementVNode)(`span`,{class:`top-scheduleReportSend_channelIcon`,"data-top-icon":i[e.source]},null,8,j),(0,a.createElementVNode)(`span`,M,(0,a.toDisplayString)(e.label),1),e.settingLink?((0,a.openBlock)(),(0,a.createBlock)(s,{key:0,class:`top-scheduleReportSend_channelSettings`,size:`xs`,href:e.settingLink,target:`_blank`,icon:``,color:`theme`,tabindex:`0`},null,8,[`href`])):(0,a.createCommentVNode)(``,!0),(0,a.createVNode)(c,{class:`top-scheduleReportSend_channelSwitcher`,modelValue:e.selected,"onUpdate:modelValue":n=>t(`update:channelSelected`,{id:e.id,source:e.source,selected:n})},null,8,[`modelValue`,`onUpdate:modelValue`])]))),128)),((0,a.openBlock)(!0),(0,a.createElementBlock)(a.Fragment,null,(0,a.renderList)(e.connectors,e=>((0,a.openBlock)(),(0,a.createElementBlock)(a.Fragment,{key:e.source},[r(e.source)?(0,a.createCommentVNode)(``,!0):((0,a.openBlock)(),(0,a.createElementBlock)(`div`,N,[(0,a.createElementVNode)(`span`,{class:`top-scheduleReportSend_channelIcon`,"data-top-icon":i[e.source]},null,8,P),(0,a.createElementVNode)(`a`,{class:`top-scheduleReportSend_channelLabel top-ellipsis1`,href:e.connectLink,target:`_blank`},(0,a.toDisplayString)(e.connectLabel),9,F)]))],64))),128))])])}}}),L={class:`top-scheduleTimeSelector`},R=(0,a.defineComponent)({__name:`timeSelector`,props:{hour:{},minute:{}},emits:[`update:hour`,`update:minute`],setup(e,{emit:t}){let n=e,r=Array.from({length:24},(e,t)=>({value:String(t),title:String(t).padStart(2,`0`)})),i=[{value:`0`,title:`00`},{value:`15`,title:`15`},{value:`30`,title:`30`},{value:`45`,title:`45`}],o=(0,a.computed)(()=>i.some(e=>e.value===n.minute)?i:[...i,{value:n.minute,title:n.minute.padStart(2,`0`),disabled:!0}]);return(n,i)=>{let s=(0,a.resolveComponent)(`TopSelect`);return(0,a.openBlock)(),(0,a.createElementBlock)(`div`,L,[(0,a.createVNode)(s,{class:`top-scheduleTimeSelector_hour`,modelValue:e.hour,options:(0,a.unref)(r),"onUpdate:modelValue":i[0]||=e=>t(`update:hour`,e)},null,8,[`modelValue`,`options`]),(0,a.createVNode)(s,{class:`top-scheduleTimeSelector_minute`,modelValue:e.minute,options:o.value,"onUpdate:modelValue":i[1]||=e=>t(`update:minute`,e)},null,8,[`modelValue`,`options`])])}}}),z={class:`top-scheduleTimeSelectors`},B=(0,a.defineComponent)({__name:`timeSelectors`,props:{times:{}},emits:[`update:times`],setup(e,{emit:t}){let n=t,r=e,i=t,o=new WeakMap,s=0,c=e=>{let t=(0,a.toRaw)(e),n=o.get(t);if(n!==void 0)return n;let r=s++;return o.set(t,r),r},l=(e,t)=>{let n=r.times.map((n,r)=>{if(r!==e)return n;let i={...n,...t};return o.set(i,c(n)),i});i(`update:times`,n)},u=()=>{let e=[{hour:`0`,minute:`0`},...r.times];i(`update:times`,e)};return(t,r)=>{let i=(0,a.resolveComponent)(`TopButton`);return(0,a.openBlock)(),(0,a.createElementBlock)(`div`,z,[((0,a.openBlock)(!0),(0,a.createElementBlock)(a.Fragment,null,(0,a.renderList)(e.times,(t,r)=>((0,a.openBlock)(),(0,a.createElementBlock)(`div`,{class:`top-scheduleTimeSelectors_item`,key:c(t)},[(0,a.createVNode)(R,{hour:t.hour,minute:t.minute,"onUpdate:hour":e=>l(r,{hour:e}),"onUpdate:minute":e=>l(r,{minute:e})},null,8,[`hour`,`minute`,`onUpdate:hour`,`onUpdate:minute`]),r?((0,a.openBlock)(),(0,a.createBlock)(i,{key:0,onClick:t=>n(`update:times`,e.times.filter((e,t)=>t!==r)),color:`theme`,icon:``},null,8,[`onClick`])):((0,a.openBlock)(),(0,a.createBlock)(i,{key:1,class:`top-scheduleTimeSelectors_itemAdd`,onClick:u,color:`theme`,icon:``}))]))),128))])}}});t.TopScheduleContainer=m,t.TopScheduleCalendar=x,t.TopScheduleEmailSelector=S,t.TopScheduleEmail=D,t.TopScheduleReportSend=I,t.TopScheduleTimeSelector=R,t.TopScheduleTimeSelectors=B});
|
|
2
2
|
//# sourceMappingURL=schedule.amd.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["schedule/schedule.js","../../src/components/schedule/schedule/schedule.vue","../../src/components/schedule/schedule/compoents/container/container.vue","../../src/components/schedule/schedule/compoents/calendar/utils.ts","../../src/components/schedule/schedule/compoents/calendar/calendar.vue","../../src/components/schedule/schedule/compoents/email/selector/selector.vue","../../src/components/schedule/schedule/compoents/email/email.vue","../../src/components/schedule/schedule/compoents/reportSend/reportSend.vue","../../src/components/schedule/schedule/compoents/timeSelector/timeSelector.vue","../../src/components/schedule/schedule/compoents/timeSelectors/timeSelectors.vue"],"names":["vue","exports","j","M","N","P","vue_1","n","a","t","forms__4U0sLFk_esm_js_1","s","c","e","F","I","L","R","z","B","V","H","U","W","G","i","o","u","g","_","string_js_1","y","b","K","l","d","p","m","v","C","w","check_js_1","T","q","J","Y","X","Z","re","ie","ae","oe","se","Q","ce","le","ue","de","$","fe","pe"],"mappings":"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","sourcesContent":["define([\"require\", \"exports\", \"../.chunks/forms-_4U0sLFk.esm.js\", \"../utils/check.js\", \"../utils/string.js\", \"vue\", \"../.chunks/app-DGsWGbDX.esm.js\"], function (require, exports, forms__4U0sLFk_esm_js_1, check_js_1, string_js_1, vue_1) {\n \"use strict\";\n Object.defineProperty(exports, \"__esModule\", { value: true });\n exports.TopScheduleTimeSelectors = exports.TopScheduleTimeSelector = exports.TopScheduleReportSend = exports.TopScheduleEmailSelector = exports.TopScheduleEmail = exports.TopScheduleContainer = exports.TopScheduleCalendar = exports.TopSchedule = void 0;\n //#region src/components/schedule/schedule/schedule.vue?vue&type=script&setup=true&lang.ts\n var j = { class: \"top-schedule_header\" }, M = { class: \"top-schedule_headerTitle\" }, N = {\n key: 0,\n class: \"top-schedule_body\"\n }, P = /* @__PURE__ */ (0, vue_1.defineComponent)({\n name: \"TopSchedule\",\n __name: \"schedule\",\n props: {\n styling: {},\n triggerType: { default: \"onDemand\" },\n triggerTypes: {},\n triggerTypeOptions: {},\n title: {}\n },\n emits: [\"update:triggerType\"],\n setup(t, { emit: n, slots: r }) {\n let a = t, o = (0, forms__4U0sLFk_esm_js_1.E)(), s = {\n go: o.Projects.Checks,\n report: o.Projects.Reports,\n neutral: \"\"\n }, c = a.title ?? s[a.styling];\n return (e, a) => ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", { class: (0, vue_1.normalizeClass)({\n \"top-schedule\": !0,\n [`top-schedule-style_${t.styling}`]: !0\n }) }, [(0, vue_1.createElementVNode)(\"div\", j, [(0, vue_1.createElementVNode)(\"div\", M, (0, vue_1.toDisplayString)((0, vue_1.unref)(c)), 1), (0, vue_1.createVNode)(forms__4U0sLFk_esm_js_1.n, {\n class: \"top-schedule_headerTriggerType\",\n modelValue: t.triggerType,\n \"onUpdate:modelValue\": a[0] ||= (e) => n(\"update:triggerType\", e),\n options: t.triggerTypeOptions,\n size: \"s\"\n }, null, 8, [\"modelValue\", \"options\"])]), t.triggerType !== \"onDemand\" && r.body ? ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", N, [(0, vue_1.renderSlot)(e.$slots, \"body\")])) : (0, vue_1.createCommentVNode)(\"\", !0)], 2));\n }\n }), F = {}, I = { class: \"top-schedule_bodyContainer\" };\n exports.TopSchedule = P;\n function L(e, t) {\n return (0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", I, [(0, vue_1.renderSlot)(e.$slots, \"default\")]);\n }\n var R = /*#__PURE__*/ (0, forms__4U0sLFk_esm_js_1.u)(F, [[\"render\", L]]), z = (t) => {\n let n = (0, forms__4U0sLFk_esm_js_1.E)();\n switch (t) {\n case \"dayOfMonth\": {\n let e = Array.from({ length: 27 }, (e, t) => ({\n value: String(t + 1),\n title: String(t + 1)\n }));\n return e.push({\n value: \"LAST_OF_MONTH\",\n title: \"\",\n isIcon: !0\n }), e;\n }\n case \"dayOfWeek\": return [\n {\n value: \"MONDAY\",\n title: n.Calendar.Dw_1\n },\n {\n value: \"TUESDAY\",\n title: n.Calendar.Dw_2\n },\n {\n value: \"WEDNESDAY\",\n title: n.Calendar.Dw_3\n },\n {\n value: \"THURSDAY\",\n title: n.Calendar.Dw_4\n },\n {\n value: \"FRIDAY\",\n title: n.Calendar.Dw_5\n },\n {\n value: \"SATURDAY\",\n title: n.Calendar.Dw_6\n },\n {\n value: \"SUNDAY\",\n title: n.Calendar.Dw_7\n }\n ];\n }\n }, B = { class: \"top-scheduleCalendar\" }, V = { class: \"top-scheduleCalendar_header\" }, H = { class: \"top-scheduleCalendar_calendar\" }, U = [\"value\"], W = [\"data-top-icon\"], G = /* @__PURE__ */ (0, vue_1.defineComponent)({\n __name: \"calendar\",\n props: {\n modelValue: {},\n mode: {},\n timesCount: { default: 1 }\n },\n emits: [\"update:modelValue\"],\n setup(t, { emit: n }) {\n let r = (0, forms__4U0sLFk_esm_js_1.E)(), i = t, a = n, o = (0, vue_1.computed)({\n get: () => i.modelValue,\n set: (e) => a(\"update:modelValue\", e)\n }), u = (0, vue_1.computed)(() => z(i.mode)), g = {\n dayOfWeek: {\n totalDaysCount: 7,\n period: r.Common.a_week\n },\n dayOfMonth: {\n totalDaysCount: 28,\n period: r.Common.a_month\n }\n }, _ = (0, vue_1.computed)(() => {\n let e = o.value.length, { totalDaysCount: t, period: n } = g[i.mode], a = e === t;\n if (a && i.timesCount === 1)\n return r.Common.Every_day;\n let c = i.timesCount === 1 ? e : i.timesCount;\n return `${a ? r.Common.Every_day : `${e}`}${i.timesCount > 1 ? ` × ${i.timesCount}` : \"\"} ${(0, string_js_1.numberEnding)(c, r.Common.time_a_0, r.Common.time_a_0, r.Common.time_a_2)} ${n}`;\n }), y = (0, vue_1.computed)(() => o.value.length > 1), b = () => {\n o.value = y.value ? [] : u.value.map((e) => e.value);\n };\n return (e, t) => {\n let n = (0, vue_1.resolveComponent)(\"TopButton\");\n return (0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", B, [\n (0, vue_1.createElementVNode)(\"div\", V, [(0, vue_1.renderSlot)(e.$slots, \"header\"), (0, vue_1.createVNode)(n, {\n class: \"top-scheduleCalendar_headerButton\",\n onClick: b,\n color: \"theme\",\n tabindex: \"0\"\n }, {\n default: (0, vue_1.withCtx)(() => [(0, vue_1.createTextVNode)((0, vue_1.toDisplayString)(y.value ? e.$i18n.Common.Clear : e.$i18n.Common.Select_all), 1)]),\n _: 1\n })]),\n (0, vue_1.createElementVNode)(\"div\", H, [((0, vue_1.openBlock)(!0), (0, vue_1.createElementBlock)(vue_1.Fragment, null, (0, vue_1.renderList)(u.value, (e) => ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"label\", {\n class: \"top-scheduleCalendar_calendarDay\",\n key: e.value\n }, [(0, vue_1.withDirectives)((0, vue_1.createElementVNode)(\"input\", {\n class: \"top-scheduleCalendar_calendarDayRadio\",\n type: \"checkbox\",\n value: e.value,\n \"onUpdate:modelValue\": t[0] ||= (e) => o.value = e,\n tabindex: \"0\"\n }, null, 8, U), [[vue_1.vModelCheckbox, o.value]]), (0, vue_1.createElementVNode)(\"span\", {\n class: \"top-scheduleCalendar_calendarDayTitle\",\n \"data-top-icon\": e.isIcon ? e.title : void 0\n }, [e.isIcon ? (0, vue_1.createCommentVNode)(\"\", !0) : ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(vue_1.Fragment, { key: 0 }, [(0, vue_1.createTextVNode)((0, vue_1.toDisplayString)(e.title), 1)], 64))], 8, W)]))), 128))]),\n (0, vue_1.createElementVNode)(\"span\", { class: (0, vue_1.normalizeClass)({\n \"top-scheduleCalendar_selectionSummary\": !0,\n \"top-error\": !o.value.length\n }) }, (0, vue_1.toDisplayString)(_.value), 3)\n ]);\n };\n }\n }), K = /* @__PURE__ */ (0, vue_1.defineComponent)({\n __name: \"selector\",\n props: {\n modelValue: {},\n emails: { default: () => [] },\n getEmailSuggestions: {\n type: Function,\n default: () => []\n }\n },\n emits: [\"update:modelValue\", \"submit\"],\n setup(i, { emit: a }) {\n let s = a, c = i, l = a, u = (0, forms__4U0sLFk_esm_js_1.E)(), d = forms__4U0sLFk_esm_js_1.O.$, p = (0, vue_1.ref)(), m = (0, vue_1.ref)(), g = null, v = {}, C = (e) => e.filter((e) => !c.emails.includes(e)), w = (e = c.modelValue) => {\n let n = String(e).trim();\n if (n) {\n if (!(0, check_js_1.isEmail)(n)) {\n forms__4U0sLFk_esm_js_1.O.notice(u.Common.Enter_valid_email_notice, \"error\");\n return;\n }\n l(\"submit\", n);\n }\n }, T = async () => {\n if (await (0, vue_1.nextTick)(), g = m.value?.$el.querySelector(\"input\") ?? null, g) {\n if (!d?.ui?.autocomplete) {\n console.info(\"Для работы autocomplete требуется глобальная загрузка jQuery UI Autocomplete\");\n return;\n }\n d(g).autocomplete({\n appendTo: p.value,\n minLength: 0,\n source: async (e, t) => {\n let n = e.term;\n n in v || (v[n] = await c.getEmailSuggestions(n)), t(C(v[n]).map((e) => ({\n label: e,\n value: e\n })));\n },\n select: (e, t) => {\n !t.item || !g || (e.preventDefault(), w(t.item.value), l(\"update:modelValue\", \"\"), d(g).trigger(\"focus\"));\n }\n }), d(g).attr(\"autocomplete\", \"disabled\"), d(g).on(\"focus.scheduleEmailSelector\", () => {\n g && d(g).trigger(\"input\");\n });\n }\n };\n return (0, vue_1.onMounted)(() => {\n T();\n }), (0, vue_1.onBeforeUnmount)(() => {\n !d?.ui?.autocomplete || !g || (d(g).off(\"focus.scheduleEmailSelector\"), d(g).autocomplete(\"destroy\"));\n }), (e, t) => ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", {\n class: \"top-scheduleEmailSelector\",\n ref_key: \"elRootRef\",\n ref: p\n }, [(0, vue_1.createVNode)(forms__4U0sLFk_esm_js_1.c, {\n ref_key: \"elInputRef\",\n ref: m,\n modelValue: i.modelValue,\n \"onUpdate:modelValue\": t[1] ||= (e) => s(\"update:modelValue\", e),\n onKeydown: t[2] ||= (0, vue_1.withKeys)((0, vue_1.withModifiers)((e) => w(), [\"prevent\"]), [\"enter\"]),\n title: e.$i18n.Common.Enter_email,\n type: \"email\",\n size: \"l\"\n }, {\n default: (0, vue_1.withCtx)(() => [(0, vue_1.createVNode)(forms__4U0sLFk_esm_js_1.h, {\n class: \"top-scheduleEmailSelector_submit\",\n color: \"theme\",\n icon: \"\",\n onClick: t[0] ||= (0, vue_1.withModifiers)((e) => w(), [\"prevent\"])\n })]),\n _: 1\n }, 8, [\"modelValue\", \"title\"])], 512));\n }\n }), q = { class: \"top-scheduleEmail\" }, J = { class: \"top-scheduleEmail_title\" }, Y = {\n key: 1,\n class: \"top-scheduleEmail_emails\"\n }, X = { class: \"top-ellipsis1\" }, Z = /* @__PURE__ */ (0, vue_1.defineComponent)({\n __name: \"email\",\n props: {\n emails: { default: () => [] },\n getEmailSuggestions: {\n type: Function,\n default: () => []\n },\n maxEmailsCount: { default: -1 }\n },\n emits: [\"add:email\", \"remove:email\"],\n setup(e, { emit: t }) {\n let n = t, r = e, i = t, a = (0, vue_1.ref)(\"\"), o = (e) => {\n let t = e.trim();\n if (!t || r.emails.includes(t)) {\n a.value = \"\";\n return;\n }\n i(\"add:email\", t), a.value = \"\";\n };\n return (t, r) => {\n let i = (0, vue_1.resolveComponent)(\"TopButton\");\n return (0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", q, [\n (0, vue_1.createElementVNode)(\"div\", J, (0, vue_1.toDisplayString)(t.$i18n.Projects.Reports_send_to_address) + \" E-mail: \", 1),\n e.maxEmailsCount && e.emails.length === e.maxEmailsCount ? (0, vue_1.createCommentVNode)(\"\", !0) : ((0, vue_1.openBlock)(), (0, vue_1.createBlock)(K, {\n key: 0,\n modelValue: a.value,\n \"onUpdate:modelValue\": r[0] ||= (e) => a.value = e,\n getEmailSuggestions: e.getEmailSuggestions,\n emails: e.emails,\n onSubmit: o\n }, null, 8, [\n \"modelValue\",\n \"getEmailSuggestions\",\n \"emails\"\n ])),\n e.emails.length ? ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", Y, [((0, vue_1.openBlock)(!0), (0, vue_1.createElementBlock)(vue_1.Fragment, null, (0, vue_1.renderList)(e.emails, (e) => ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", {\n class: \"top-scheduleEmail_emailsItem\",\n key: e\n }, [(0, vue_1.createElementVNode)(\"span\", X, (0, vue_1.toDisplayString)(e), 1), (0, vue_1.createVNode)(i, {\n onClick: (t) => n(\"remove:email\", e),\n color: \"theme\",\n icon: \"\"\n }, null, 8, [\"onClick\"])]))), 128))])) : (0, vue_1.createCommentVNode)(\"\", !0)\n ]);\n };\n }\n }), re = { class: \"top-scheduleReportSend\" }, ie = { class: \"top-scheduleReportSend_title\" }, ae = { class: \"top-scheduleReportSend_channels\" }, oe = [\"data-top-icon\"], se = { class: \"top-scheduleReportSend_channelLabel top-ellipsis1\" }, Q = {\n key: 0,\n class: \"top-scheduleReportSend_channel\"\n }, ce = [\"data-top-icon\"], le = [\"href\"], ue = /* @__PURE__ */ (0, vue_1.defineComponent)({\n __name: \"reportSend\",\n props: {\n channels: {},\n connectors: { default: () => [] }\n },\n emits: [\"update:channelSelected\"],\n setup(e, { emit: t }) {\n let n = e, r = (e) => n.channels.some((t) => t.source === e), i = {\n informer: \"\",\n telegram: \"\"\n };\n return (n, a) => {\n let o = (0, vue_1.resolveComponent)(\"TopButton\"), s = (0, vue_1.resolveComponent)(\"TopSwitcher\");\n return (0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", re, [(0, vue_1.createElementVNode)(\"div\", ie, (0, vue_1.toDisplayString)(n.$i18n.Projects.Reports_send), 1), (0, vue_1.createElementVNode)(\"div\", ae, [((0, vue_1.openBlock)(!0), (0, vue_1.createElementBlock)(vue_1.Fragment, null, (0, vue_1.renderList)(e.channels, (e) => ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", {\n class: \"top-scheduleReportSend_channel\",\n key: `${e.source}-${e.id}`\n }, [\n (0, vue_1.createElementVNode)(\"span\", {\n class: \"top-scheduleReportSend_channelIcon\",\n \"data-top-icon\": i[e.source]\n }, null, 8, oe),\n (0, vue_1.createElementVNode)(\"span\", se, (0, vue_1.toDisplayString)(e.label), 1),\n e.settingLink ? ((0, vue_1.openBlock)(), (0, vue_1.createBlock)(o, {\n key: 0,\n class: \"top-scheduleReportSend_channelSettings\",\n size: \"xs\",\n href: e.settingLink,\n target: \"_blank\",\n icon: \"\",\n color: \"theme\",\n tabindex: \"0\"\n }, null, 8, [\"href\"])) : (0, vue_1.createCommentVNode)(\"\", !0),\n (0, vue_1.createVNode)(s, {\n class: \"top-scheduleReportSend_channelSwitcher\",\n modelValue: e.selected,\n \"onUpdate:modelValue\": (n) => t(\"update:channelSelected\", {\n id: e.id,\n source: e.source,\n selected: n\n })\n }, null, 8, [\"modelValue\", \"onUpdate:modelValue\"])\n ]))), 128)), ((0, vue_1.openBlock)(!0), (0, vue_1.createElementBlock)(vue_1.Fragment, null, (0, vue_1.renderList)(e.connectors, (e) => ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(vue_1.Fragment, { key: e.source }, [r(e.source) ? (0, vue_1.createCommentVNode)(\"\", !0) : ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", Q, [(0, vue_1.createElementVNode)(\"span\", {\n class: \"top-scheduleReportSend_channelIcon\",\n \"data-top-icon\": i[e.source]\n }, null, 8, ce), (0, vue_1.createElementVNode)(\"a\", {\n class: \"top-scheduleReportSend_channelLabel top-ellipsis1\",\n href: e.connectLink,\n target: \"_blank\"\n }, (0, vue_1.toDisplayString)(e.connectLabel), 9, le)]))], 64))), 128))])]);\n };\n }\n }), de = { class: \"top-scheduleTimeSelector\" }, $ = /* @__PURE__ */ (0, vue_1.defineComponent)({\n __name: \"timeSelector\",\n props: {\n hour: {},\n minute: {}\n },\n emits: [\"update:hour\", \"update:minute\"],\n setup(e, { emit: t }) {\n let n = e, r = Array.from({ length: 24 }, (e, t) => ({\n value: String(t),\n title: String(t).padStart(2, \"0\")\n })), i = [\n {\n value: \"0\",\n title: \"00\"\n },\n {\n value: \"15\",\n title: \"15\"\n },\n {\n value: \"30\",\n title: \"30\"\n },\n {\n value: \"45\",\n title: \"45\"\n }\n ], a = (0, vue_1.computed)(() => i.some((e) => e.value === n.minute) ? i : [...i, {\n value: n.minute,\n title: n.minute.padStart(2, \"0\"),\n disabled: !0\n }]);\n return (n, i) => {\n let o = (0, vue_1.resolveComponent)(\"TopSelect\");\n return (0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", de, [(0, vue_1.createVNode)(o, {\n class: \"top-scheduleTimeSelector_hour\",\n modelValue: e.hour,\n options: (0, vue_1.unref)(r),\n \"onUpdate:modelValue\": i[0] ||= (e) => t(\"update:hour\", e)\n }, null, 8, [\"modelValue\", \"options\"]), (0, vue_1.createVNode)(o, {\n class: \"top-scheduleTimeSelector_minute\",\n modelValue: e.minute,\n options: a.value,\n \"onUpdate:modelValue\": i[1] ||= (e) => t(\"update:minute\", e)\n }, null, 8, [\"modelValue\", \"options\"])]);\n };\n }\n }), fe = { class: \"top-scheduleTimeSelectors\" }, pe = /* @__PURE__ */ (0, vue_1.defineComponent)({\n __name: \"timeSelectors\",\n props: { times: {} },\n emits: [\"update:times\"],\n setup(e, { emit: t }) {\n let n = t, r = e, i = t, a = /* @__PURE__ */ new WeakMap(), o = 0, s = (e) => {\n let t = (0, vue_1.toRaw)(e), n = a.get(t);\n if (n !== void 0)\n return n;\n let r = o++;\n return a.set(t, r), r;\n }, l = (e, t) => {\n let n = r.times.map((n, r) => {\n if (r !== e)\n return n;\n let i = {\n ...n,\n ...t\n };\n return a.set(i, s(n)), i;\n });\n i(\"update:times\", n);\n }, d = () => {\n let e = [{\n hour: \"0\",\n minute: \"0\"\n }, ...r.times];\n i(\"update:times\", e);\n };\n return (t, r) => {\n let i = (0, vue_1.resolveComponent)(\"TopButton\");\n return (0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", fe, [((0, vue_1.openBlock)(!0), (0, vue_1.createElementBlock)(vue_1.Fragment, null, (0, vue_1.renderList)(e.times, (t, r) => ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", {\n class: \"top-scheduleTimeSelectors_item\",\n key: s(t)\n }, [(0, vue_1.createVNode)($, {\n hour: t.hour,\n minute: t.minute,\n \"onUpdate:hour\": (e) => l(r, { hour: e }),\n \"onUpdate:minute\": (e) => l(r, { minute: e })\n }, null, 8, [\n \"hour\",\n \"minute\",\n \"onUpdate:hour\",\n \"onUpdate:minute\"\n ]), r ? ((0, vue_1.openBlock)(), (0, vue_1.createBlock)(i, {\n key: 0,\n onClick: (t) => n(\"update:times\", e.times.filter((e, t) => t !== r)),\n color: \"theme\",\n icon: \"\"\n }, null, 8, [\"onClick\"])) : ((0, vue_1.openBlock)(), (0, vue_1.createBlock)(i, {\n key: 1,\n class: \"top-scheduleTimeSelectors_itemAdd\",\n onClick: d,\n color: \"theme\",\n icon: \"\"\n }))]))), 128))]);\n };\n }\n });\n exports.TopScheduleContainer = R;\n exports.TopScheduleCalendar = G;\n exports.TopScheduleEmailSelector = K;\n exports.TopScheduleEmail = Z;\n exports.TopScheduleReportSend = ue;\n exports.TopScheduleTimeSelector = $;\n exports.TopScheduleTimeSelectors = pe;\n});\n//# sourceMappingURL=schedule.js.map\n","<script setup lang=\"ts\">\nimport TopSelect from '@/components/forms/select/select.vue';\nimport type { Props, Emits, TriggerType } from '@/components/schedule/schedule/types';\nimport { useI18n } from '@/core/plugins/i18n';\n\ndefineOptions({\n\tname: 'TopSchedule',\n});\n\nconst props = withDefaults(defineProps<Props>(), {\n\ttriggerType: 'onDemand',\n});\n\ndefineEmits<Emits>();\n\nconst i18n = useI18n();\nconst labelByStyling = {\n\t'go': i18n.Projects.Checks,\n\t'report': i18n.Projects.Reports,\n\t'neutral': '',\n};\nconst title = props.title ?? labelByStyling[props.styling];\n</script>\n\n<template>\n\t<div\n\t\t:class=\"{\n\t\t\t'top-schedule': true,\n\t\t\t[`top-schedule-style_${styling}`]: true,\n\t\t}\"\n\t>\n\t\t<div class=\"top-schedule_header\">\n\t\t\t<div class=\"top-schedule_headerTitle\">\n\t\t\t\t{{ title }}\n\t\t\t</div>\n\n\t\t\t<TopSelect\n\t\t\t\tclass=\"top-schedule_headerTriggerType\"\n\t\t\t\t:modelValue=\"triggerType\"\n\t\t\t\t@update:modelValue=\"$emit('update:triggerType', $event as TriggerType)\"\n\t\t\t\t:options=\"triggerTypeOptions\"\n\t\t\t\tsize=\"s\"\n\t\t\t/>\n\t\t</div>\n\n\t\t<div\n\t\t\tv-if=\"triggerType !== 'onDemand' && $slots.body\"\n\t\t\tclass=\"top-schedule_body\"\n\t\t>\n\t\t\t<slot name=\"body\"></slot>\n\t\t</div>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","<template>\n\t<div class=\"top-schedule_bodyContainer\">\n\t\t<slot></slot>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","import type { Day, Props } from './types';\nimport { useI18n } from '@/core/app';\n\n/**\n * Количество дней в месяце\n */\nexport const COUNT_DAYS_IN_MONTHS = 27;\n\n/**\n * Количество дней в неделе\n */\nexport const COUNT_DAYS_IN_WEEK = 7;\n\nexport const genDaysByCalendarMode = (mode: Props['mode']): Day[] => {\n\tconst i18n = useI18n();\n\n\tswitch (mode) {\n\t\tcase 'dayOfMonth': {\n\t\t\tconst days: Day[] = Array.from({ length: COUNT_DAYS_IN_MONTHS }, (_, index) => ({\n\t\t\t\tvalue: String(index + 1) as Day['value'],\n\t\t\t\ttitle: String(index + 1),\n\t\t\t}));\n\n\t\t\tdays.push({\n\t\t\t\tvalue: 'LAST_OF_MONTH',\n\t\t\t\ttitle: '',\n\t\t\t\tisIcon: true,\n\t\t\t});\n\n\t\t\treturn days;\n\t\t}\n\n\t\tcase 'dayOfWeek': {\n\t\t\treturn [\n\t\t\t\t{ value: 'MONDAY', title: i18n.Calendar.Dw_1 },\n\t\t\t\t{ value: 'TUESDAY', title: i18n.Calendar.Dw_2 },\n\t\t\t\t{ value: 'WEDNESDAY', title: i18n.Calendar.Dw_3 },\n\t\t\t\t{ value: 'THURSDAY', title: i18n.Calendar.Dw_4 },\n\t\t\t\t{ value: 'FRIDAY', title: i18n.Calendar.Dw_5 },\n\t\t\t\t{ value: 'SATURDAY', title: i18n.Calendar.Dw_6 },\n\t\t\t\t{ value: 'SUNDAY', title: i18n.Calendar.Dw_7 },\n\t\t\t];\n\t\t}\n\t}\n};\n","<script setup lang=\"ts\">\nimport type { Props, Emits } from '@/components/schedule/schedule/compoents/calendar/types';\nimport { COUNT_DAYS_IN_MONTHS, COUNT_DAYS_IN_WEEK, genDaysByCalendarMode } from '@/components/schedule/schedule/compoents/calendar/utils';\nimport { numberEnding } from '@/core/utils/string';\nimport { computed } from 'vue';\nimport { useI18n } from '@/core/app';\n\nconst i18n = useI18n();\nconst props = withDefaults(defineProps<Props>(), {\n\ttimesCount: 1,\n});\nconst emit = defineEmits<Emits>();\n\nconst selectedDays = computed<Props['modelValue']>({\n\tget: () => props.modelValue,\n\tset: value => emit('update:modelValue', value),\n});\n\nconst days = computed(() => genDaysByCalendarMode(props.mode));\n\n/**\n * Параметры отображения выбранных дней для каждого режима календаря\n */\nconst modeConfig = {\n\tdayOfWeek: {\n\t\ttotalDaysCount: COUNT_DAYS_IN_WEEK,\n\t\tperiod: i18n.Common.a_week,\n\t},\n\tdayOfMonth: {\n\t\t// плюс \"последний день месяца\"\n\t\ttotalDaysCount: COUNT_DAYS_IN_MONTHS + 1,\n\t\tperiod: i18n.Common.a_month,\n\t},\n};\n\n/**\n * Текстовая сводка выбранных дней и временных слотов\n */\nconst selectionSummary = computed(() => {\n\t// Количество выбранных пользователем дней\n\tconst daysCount = selectedDays.value.length;\n\t// Общее количество доступных дней и название периода для текущего режима\n\tconst { totalDaysCount, period } = modeConfig[props.mode];\n\t// Выбраны ли все доступные дни\n\tconst isEveryDay = daysCount === totalDaysCount;\n\n\tif (isEveryDay && props.timesCount === 1) return i18n.Common.Every_day;\n\n\t// Число, для которого нужно подобрать склонение слова «раз»\n\tconst count = props.timesCount === 1 ? daysCount : props.timesCount;\n\t// Подпись количества выбранных дней\n\tconst daysLabel = isEveryDay ? i18n.Common.Every_day : `${daysCount}`;\n\t// Множитель времени отображается только при нескольких временных слотах\n\tconst multiplier = props.timesCount > 1 ? ` × ${props.timesCount}` : '';\n\t// Склонённая подпись количества запусков\n\tconst countLabel = numberEnding(\n\t\tcount,\n\t\ti18n.Common.time_a_0,\n\t\ti18n.Common.time_a_0,\n\t\ti18n.Common.time_a_2,\n\t);\n\n\treturn `${daysLabel}${multiplier} ${countLabel} ${period}`;\n});\n\nconst isClearAction = computed(() => selectedDays.value.length > 1);\n\nconst toggleAllDays = () => {\n\tselectedDays.value = isClearAction.value ? [] : days.value.map(day => day.value);\n};\n</script>\n\n<template>\n\t<div class=\"top-scheduleCalendar\">\n\t\t<div class=\"top-scheduleCalendar_header\">\n\t\t\t<slot name=\"header\"></slot>\n\n\t\t\t<TopButton\n\t\t\t\tclass=\"top-scheduleCalendar_headerButton\"\n\t\t\t\t@click=\"toggleAllDays\"\n\t\t\t\tcolor=\"theme\"\n\t\t\t\ttabindex=\"0\"\n\t\t\t>\n\t\t\t\t{{ isClearAction ? $i18n.Common.Clear : $i18n.Common.Select_all}}\n\t\t\t</TopButton>\n\t\t</div>\n\n\t\t<div class=\"top-scheduleCalendar_calendar\">\n\t\t\t<label\n\t\t\t\tclass=\"top-scheduleCalendar_calendarDay\"\n\t\t\t\tv-for=\"day in days\"\n\t\t\t\t:key=\"day.value\"\n\t\t\t>\n\t\t\t\t<input\n\t\t\t\t\tclass=\"top-scheduleCalendar_calendarDayRadio\"\n\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t:value=\"day.value\"\n\t\t\t\t\tv-model=\"selectedDays\"\n\t\t\t\t\ttabindex=\"0\"\n\t\t\t\t>\n\n\t\t\t\t<span\n\t\t\t\t\tclass=\"top-scheduleCalendar_calendarDayTitle\"\n\t\t\t\t\t:data-top-icon=\"day.isIcon ? day.title : undefined\"\n\t\t\t\t>\n\t\t\t\t\t<template v-if=\"!day.isIcon\">\n\t\t\t\t\t\t{{ day.title }}\n\t\t\t\t\t</template>\n\t\t\t\t</span>\n\t\t\t</label>\n\t\t</div>\n\n\t\t<span\n\t\t\t:class=\"{\n\t\t\t\t'top-scheduleCalendar_selectionSummary': true,\n\t\t\t\t'top-error': !selectedDays.length\n\t\t\t}\"\n\t\t>\n\t\t\t{{ selectionSummary }}\n\t\t</span>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","<script setup lang=\"ts\">\nimport { nextTick, onBeforeUnmount, onMounted, ref } from 'vue';\nimport TopInput from '@/components/forms/input/input.vue';\nimport TopButton from '@/components/forms/button/button.vue';\nimport Core from '@/core/core/core';\nimport { isEmail } from '@/core/utils/check';\nimport { useI18n } from '@/core/plugins/i18n';\nimport type { Props, Emits } from '@/components/schedule/schedule/compoents/email/selector/types';\n\nconst props = withDefaults(defineProps<Props>(), {\n\temails: () => [],\n\tgetEmailSuggestions: () => [],\n});\n\nconst emit = defineEmits<Emits>();\nconst i18n = useI18n();\nconst $ = Core.$;\n\nconst elRootRef = ref<HTMLElement>();\nconst elInputRef = ref<InstanceType<typeof TopInput>>();\nlet elInput: HTMLInputElement | null = null;\nconst autocompleteCache: Record<string, string[]> = {};\n\nconst filterEmails = (emails: string[]) => emails.filter(email => !props.emails.includes(email));\n\nconst submit = (value: unknown = props.modelValue) => {\n\tconst email = String(value).trim();\n\tif (!email) return;\n\tif (!isEmail(email)) {\n\t\tvoid Core.notice(i18n.Common.Enter_valid_email_notice, 'error');\n\n\t\treturn;\n\t}\n\n\temit('submit', email);\n};\n\nconst initAutocomplete = async () => {\n\tawait nextTick();\n\n\telInput = elInputRef.value?.$el.querySelector('input') ?? null;\n\tif (!elInput) return;\n\n\tif (!$?.ui?.autocomplete) {\n\t\tconsole.info('Для работы autocomplete требуется глобальная загрузка jQuery UI Autocomplete');\n\n\t\treturn;\n\t}\n\n\t$(elInput).autocomplete({\n\t\tappendTo: elRootRef.value,\n\t\tminLength: 0,\n\t\tsource: async (request: { term: string }, response: (items: Array<{ label: string, value: string }>) => void) => {\n\t\t\tconst term = request.term;\n\t\t\tif (!(term in autocompleteCache)) {\n\t\t\t\tautocompleteCache[term] = await props.getEmailSuggestions(term);\n\t\t\t}\n\n\t\t\tresponse(filterEmails(autocompleteCache[term]).map(email => ({\n\t\t\t\tlabel: email,\n\t\t\t\tvalue: email,\n\t\t\t})));\n\t\t},\n\t\tselect: (event: Event, ui: { item?: { value: string } }) => {\n\t\t\tif (!ui.item || !elInput) return;\n\n\t\t\tevent.preventDefault();\n\t\t\tsubmit(ui.item.value);\n\t\t\temit('update:modelValue', '');\n\n\t\t\t$(elInput).trigger('focus');\n\t\t},\n\t});\n\n\t$(elInput).attr('autocomplete', 'disabled');\n\t$(elInput).on('focus.scheduleEmailSelector', () => {\n\t\tif (!elInput) return;\n\n\t\t$(elInput).trigger('input');\n\t});\n};\n\nonMounted(() => {\n\tvoid initAutocomplete();\n});\n\nonBeforeUnmount(() => {\n\tif (!$?.ui?.autocomplete || !elInput) return;\n\n\t$(elInput).off('focus.scheduleEmailSelector');\n\t$(elInput).autocomplete('destroy');\n});\n</script>\n\n<template>\n\t<div\n\t\tclass=\"top-scheduleEmailSelector\"\n\t\tref=\"elRootRef\"\n\t>\n\t\t<TopInput\n\t\t\tref=\"elInputRef\"\n\t\t\t:modelValue\n\t\t\t@update:modelValue=\"$emit('update:modelValue', $event)\"\n\t\t\t@keydown.enter.prevent=\"submit()\"\n\t\t\t:title=\"$i18n.Common.Enter_email\"\n\t\t\ttype=\"email\"\n\t\t\tsize=\"l\"\n\t\t>\n\t\t\t<TopButton\n\t\t\t\tclass=\"top-scheduleEmailSelector_submit\"\n\t\t\t\tcolor=\"theme\"\n\t\t\t\ticon=\"\"\n\t\t\t\t@click.prevent=\"submit()\"\n\t\t\t/>\n\t\t</TopInput>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport type { Props, Emits } from '@/components/schedule/schedule/compoents/email/types';\nimport ScheduleEmailSelector from '@/components/schedule/schedule/compoents/email/selector/selector.vue';\n\nconst props = withDefaults(defineProps<Props>(), {\n\temails: () => [],\n\tgetEmailSuggestions: () => [],\n\tmaxEmailsCount: -1,\n});\n\nconst emit = defineEmits<Emits>();\n\nconst value = ref('');\n\nconst addEmail = (email: string) => {\n\tconst preparedEmail = email.trim();\n\tif (!preparedEmail || props.emails.includes(preparedEmail)) {\n\t\tvalue.value = '';\n\n\t\treturn;\n\t}\n\n\temit('add:email', preparedEmail);\n\n\tvalue.value = '';\n};\n</script>\n\n<template>\n\t<div class=\"top-scheduleEmail\">\n\t\t<div class=\"top-scheduleEmail_title\">\n\t\t\t{{ $i18n.Projects.Reports_send_to_address }} E-mail:\n\t\t</div>\n\n\t\t<ScheduleEmailSelector\n\t\t\tv-if=\"!(maxEmailsCount && emails.length === maxEmailsCount)\"\n\t\t\tv-model=\"value\"\n\t\t\t:getEmailSuggestions=\"getEmailSuggestions\"\n\t\t\t:emails=\"emails\"\n\t\t\t@submit=\"addEmail\"\n\t\t/>\n\n\t\t<div\n\t\t\tv-if=\"emails.length\"\n\t\t\tclass=\"top-scheduleEmail_emails\"\n\t\t>\n\t\t\t<div\n\t\t\t\tclass=\"top-scheduleEmail_emailsItem\"\n\t\t\t\tv-for=\"email in emails\"\n\t\t\t\t:key=\"email\"\n\t\t\t>\n\t\t\t\t<span class=\"top-ellipsis1\">{{ email }}</span>\n\n\t\t\t\t<TopButton\n\t\t\t\t\t@click=\"$emit('remove:email', email)\"\n\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\ticon=\"\"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","<script setup lang=\"ts\">\nimport type { Emits, Props, ReportChannelSource } from '@/components/schedule/schedule/compoents/reportSend/types';\n\nconst props = withDefaults(defineProps<Props>(), {\n\tconnectors: () => [],\n});\ndefineEmits<Emits>();\n\nconst hasChannel = (source: ReportChannelSource) => props.channels.some(channel => channel.source === source);\n\nconst sourceIconBySource: Record<ReportChannelSource, string> = {\n\tinformer: '',\n\ttelegram: '',\n};\n</script>\n\n<template>\n\t<div class=\"top-scheduleReportSend\">\n\t\t<div class=\"top-scheduleReportSend_title\">\n\t\t\t{{ $i18n.Projects.Reports_send }}\n\t\t</div>\n\n\t\t<div class=\"top-scheduleReportSend_channels\">\n\t\t\t<div\n\t\t\t\tclass=\"top-scheduleReportSend_channel\"\n\t\t\t\tv-for=\"channel in channels\"\n\t\t\t\t:key=\"`${channel.source}-${channel.id}`\"\n\t\t\t>\n\t\t\t\t<span\n\t\t\t\t\tclass=\"top-scheduleReportSend_channelIcon\"\n\t\t\t\t\t:data-top-icon=\"sourceIconBySource[channel.source]\"\n\t\t\t\t></span>\n\n\t\t\t\t<span class=\"top-scheduleReportSend_channelLabel top-ellipsis1\">\n\t\t\t\t\t{{ channel.label }}\n\t\t\t\t</span>\n\n\t\t\t\t<TopButton\n\t\t\t\t\tv-if=\"channel.settingLink\"\n\t\t\t\t\tclass=\"top-scheduleReportSend_channelSettings\"\n\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t:href=\"channel.settingLink\"\n\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\ticon=\"\"\n\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\ttabindex=\"0\"\n\t\t\t\t></TopButton>\n\n\t\t\t\t<TopSwitcher\n\t\t\t\t\tclass=\"top-scheduleReportSend_channelSwitcher\"\n\t\t\t\t\t:modelValue=\"channel.selected\"\n\t\t\t\t\t@update:modelValue=\"$emit('update:channelSelected', {\n\t\t\t\t\t\tid: channel.id,\n\t\t\t\t\t\tsource: channel.source,\n\t\t\t\t\t\tselected: $event as boolean,\n\t\t\t\t\t})\"\n\t\t\t\t/>\n\t\t\t</div>\n\n\t\t\t<template\n\t\t\t\tv-for=\"connector in connectors\"\n\t\t\t\t:key=\"connector.source\"\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tv-if=\"!hasChannel(connector.source)\"\n\t\t\t\t\tclass=\"top-scheduleReportSend_channel\"\n\t\t\t\t>\n\t\t\t\t\t<span\n\t\t\t\t\t\tclass=\"top-scheduleReportSend_channelIcon\"\n\t\t\t\t\t\t:data-top-icon=\"sourceIconBySource[connector.source]\"\n\t\t\t\t\t></span>\n\n\t\t\t\t\t<a\n\t\t\t\t\t\tclass=\"top-scheduleReportSend_channelLabel top-ellipsis1\"\n\t\t\t\t\t\t:href=\"connector.connectLink\"\n\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{{ connector.connectLabel }}\n\t\t\t\t\t</a>\n\t\t\t\t</div>\n\t\t\t</template>\n\t\t</div>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport type { Props, Emits, Time } from '@/components/schedule/schedule/compoents/timeSelector/types';\n\nconst props = defineProps<Props>();\ndefineEmits<Emits>();\n\n/**\n * Варианты выбора часа\n */\nconst hourOptions = Array.from({ length: 24 }, (_, index) => ({\n\tvalue: String(index),\n\ttitle: String(index).padStart(2, '0'),\n}));\n\n/**\n * Варианты выбора минут по умолчанию\n */\nconst defaultMinuteOptions = [\n\t{\n\t\tvalue: '0',\n\t\ttitle: '00',\n\t},\n\t{\n\t\tvalue: '15',\n\t\ttitle: '15',\n\t},\n\t{\n\t\tvalue: '30',\n\t\ttitle: '30',\n\t},\n\t{\n\t\tvalue: '45',\n\t\ttitle: '45',\n\t},\n];\n\n/**\n * Варианты выбора минут\n *\n * Дополняются выбранным нестандартным значением, чтобы вывести его в интерфейсе\n */\nconst minuteOptions = computed(() => {\n\tif (defaultMinuteOptions.some((option) => option.value === props.minute)) return defaultMinuteOptions;\n\n\treturn [\n\t\t...defaultMinuteOptions, {\n\t\t\tvalue: props.minute,\n\t\t\ttitle: props.minute.padStart(2, '0'),\n\t\t\tdisabled: true,\n\t\t},\n\t];\n});\n</script>\n\n<template>\n\t<div class=\"top-scheduleTimeSelector\">\n\t\t<TopSelect\n\t\t\tclass=\"top-scheduleTimeSelector_hour\"\n\t\t\t:modelValue=\"hour\"\n\t\t\t:options=\"hourOptions\"\n\t\t\t@update:modelValue=\"$emit('update:hour', $event as Time['hour'])\"\n\t\t/>\n\n\t\t<TopSelect\n\t\t\tclass=\"top-scheduleTimeSelector_minute\"\n\t\t\t:modelValue=\"minute\"\n\t\t\t:options=\"minuteOptions\"\n\t\t\t@update:modelValue=\"$emit('update:minute', $event as Time['minute'])\"\n\t\t/>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","<script setup lang=\"ts\">\nimport { toRaw } from 'vue';\nimport type { Props, Emits } from '@/components/schedule/schedule/compoents/timeSelectors/types';\nimport type { Time } from '@/components/schedule/schedule/compoents/timeSelector/types';\nimport TimeSelector from '@/components/schedule/schedule/compoents/timeSelector/timeSelector.vue';\n\nconst props = defineProps<Props>();\nconst emit = defineEmits<Emits>();\nconst timeKeys = new WeakMap<Time, number>();\nlet nextTimeKey = 0;\n\nconst getTimeKey = (rawOrProxyTime: Time) => {\n\t// time может быть proxy или обычным объектом\n\tconst time = toRaw(rawOrProxyTime);\n\n\tconst existingKey = timeKeys.get(time);\n\tif (existingKey !== undefined) return existingKey;\n\n\tconst key = nextTimeKey++;\n\ttimeKeys.set(time, key);\n\n\treturn key;\n};\n\nconst updateTime = (index: number, patch: Partial<Props['times'][number]>) => {\n\tconst updatedTimes = props.times.map((time, i) => {\n\t\tif (i !== index) return time;\n\n\t\tconst updatedTime = { ...time, ...patch };\n\t\ttimeKeys.set(updatedTime, getTimeKey(time));\n\n\t\treturn updatedTime;\n\t});\n\n\temit('update:times', updatedTimes);\n};\n\nconst addTime = () => {\n\tconst time: Time = {\n\t\thour: '0',\n\t\tminute: '0',\n\t};\n\n\tconst updatedTimes = [\n\t\ttime,\n\t\t...props.times,\n\t];\n\n\temit('update:times', updatedTimes);\n};\n</script>\n\n<template>\n\t<div class=\"top-scheduleTimeSelectors\">\n\t\t<div\n\t\t\tclass=\"top-scheduleTimeSelectors_item\"\n\t\t\tv-for=\"(time, index) in times\"\n\t\t\t:key=\"getTimeKey(time)\"\n\t\t>\n\t\t\t<TimeSelector\n\t\t\t\t:hour=\"time.hour\"\n\t\t\t\t:minute=\"time.minute\"\n\t\t\t\t@update:hour=\"updateTime(index, { hour: $event as Time['hour'] })\"\n\t\t\t\t@update:minute=\"updateTime(index, { minute: $event as Time['minute'] })\"\n\t\t\t/>\n\n\t\t\t<TopButton\n\t\t\t\tv-if=\"index\"\n\t\t\t\t@click=\"$emit('update:times', times.filter((_, i) => i !== index))\"\n\t\t\t\tcolor=\"theme\"\n\t\t\t\ticon=\"\"\n\t\t\t/>\n\n\t\t\t<TopButton\n\t\t\t\tv-else\n\t\t\t\tclass=\"top-scheduleTimeSelectors_itemAdd\"\n\t\t\t\t@click=\"addTime\"\n\t\t\t\tcolor=\"theme\"\n\t\t\t\ticon=\"\"\n\t\t\t/>\n\t\t</div>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n"]}
|
|
1
|
+
{"version":3,"sources":["schedule/schedule.js","../../src/components/schedule/schedule/schedule.vue","../../src/components/schedule/schedule/compoents/container/container.vue","../../src/components/schedule/schedule/compoents/calendar/utils.ts","../../src/components/schedule/schedule/compoents/calendar/calendar.vue","../../src/components/schedule/schedule/compoents/email/selector/selector.vue","../../src/components/schedule/schedule/compoents/email/email.vue","../../src/components/schedule/schedule/compoents/reportSend/reportSend.vue","../../src/components/schedule/schedule/compoents/timeSelector/timeSelector.vue","../../src/components/schedule/schedule/compoents/timeSelectors/timeSelectors.vue"],"names":["vue","exports","j","M","N","P","vue_1","n","a","t","forms__4U0sLFk_esm_js_1","s","c","e","F","I","L","R","z","B","V","H","U","W","G","i","o","u","g","_","string_js_1","y","b","K","l","d","p","m","v","C","w","check_js_1","T","q","J","Y","X","Z","re","ie","ae","oe","se","Q","ce","le","ue","de","$","fe","pe"],"mappings":"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","sourcesContent":["define([\"require\", \"exports\", \"../.chunks/forms-_4U0sLFk.esm.js\", \"../utils/check.js\", \"../utils/string.js\", \"vue\", \"../.chunks/app-BaHwxbWz.esm.js\"], function (require, exports, forms__4U0sLFk_esm_js_1, check_js_1, string_js_1, vue_1) {\n \"use strict\";\n Object.defineProperty(exports, \"__esModule\", { value: true });\n exports.TopScheduleTimeSelectors = exports.TopScheduleTimeSelector = exports.TopScheduleReportSend = exports.TopScheduleEmailSelector = exports.TopScheduleEmail = exports.TopScheduleContainer = exports.TopScheduleCalendar = exports.TopSchedule = void 0;\n //#region src/components/schedule/schedule/schedule.vue?vue&type=script&setup=true&lang.ts\n var j = { class: \"top-schedule_header\" }, M = { class: \"top-schedule_headerTitle\" }, N = {\n key: 0,\n class: \"top-schedule_body\"\n }, P = /* @__PURE__ */ (0, vue_1.defineComponent)({\n name: \"TopSchedule\",\n __name: \"schedule\",\n props: {\n styling: {},\n triggerType: { default: \"onDemand\" },\n triggerTypes: {},\n triggerTypeOptions: {},\n title: {}\n },\n emits: [\"update:triggerType\"],\n setup(t, { emit: n, slots: r }) {\n let a = t, o = (0, forms__4U0sLFk_esm_js_1.E)(), s = {\n go: o.Projects.Checks,\n report: o.Projects.Reports,\n neutral: \"\"\n }, c = a.title ?? s[a.styling];\n return (e, a) => ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", { class: (0, vue_1.normalizeClass)({\n \"top-schedule\": !0,\n [`top-schedule-style_${t.styling}`]: !0\n }) }, [(0, vue_1.createElementVNode)(\"div\", j, [(0, vue_1.createElementVNode)(\"div\", M, (0, vue_1.toDisplayString)((0, vue_1.unref)(c)), 1), (0, vue_1.createVNode)(forms__4U0sLFk_esm_js_1.n, {\n class: \"top-schedule_headerTriggerType\",\n modelValue: t.triggerType,\n \"onUpdate:modelValue\": a[0] ||= (e) => n(\"update:triggerType\", e),\n options: t.triggerTypeOptions,\n size: \"s\"\n }, null, 8, [\"modelValue\", \"options\"])]), t.triggerType !== \"onDemand\" && r.body ? ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", N, [(0, vue_1.renderSlot)(e.$slots, \"body\")])) : (0, vue_1.createCommentVNode)(\"\", !0)], 2));\n }\n }), F = {}, I = { class: \"top-schedule_bodyContainer\" };\n exports.TopSchedule = P;\n function L(e, t) {\n return (0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", I, [(0, vue_1.renderSlot)(e.$slots, \"default\")]);\n }\n var R = /*#__PURE__*/ (0, forms__4U0sLFk_esm_js_1.u)(F, [[\"render\", L]]), z = (t) => {\n let n = (0, forms__4U0sLFk_esm_js_1.E)();\n switch (t) {\n case \"dayOfMonth\": {\n let e = Array.from({ length: 27 }, (e, t) => ({\n value: String(t + 1),\n title: String(t + 1)\n }));\n return e.push({\n value: \"LAST_OF_MONTH\",\n title: \"\",\n isIcon: !0\n }), e;\n }\n case \"dayOfWeek\": return [\n {\n value: \"MONDAY\",\n title: n.Calendar.Dw_1\n },\n {\n value: \"TUESDAY\",\n title: n.Calendar.Dw_2\n },\n {\n value: \"WEDNESDAY\",\n title: n.Calendar.Dw_3\n },\n {\n value: \"THURSDAY\",\n title: n.Calendar.Dw_4\n },\n {\n value: \"FRIDAY\",\n title: n.Calendar.Dw_5\n },\n {\n value: \"SATURDAY\",\n title: n.Calendar.Dw_6\n },\n {\n value: \"SUNDAY\",\n title: n.Calendar.Dw_7\n }\n ];\n }\n }, B = { class: \"top-scheduleCalendar\" }, V = { class: \"top-scheduleCalendar_header\" }, H = { class: \"top-scheduleCalendar_calendar\" }, U = [\"value\"], W = [\"data-top-icon\"], G = /* @__PURE__ */ (0, vue_1.defineComponent)({\n __name: \"calendar\",\n props: {\n modelValue: {},\n mode: {},\n timesCount: { default: 1 }\n },\n emits: [\"update:modelValue\"],\n setup(t, { emit: n }) {\n let r = (0, forms__4U0sLFk_esm_js_1.E)(), i = t, a = n, o = (0, vue_1.computed)({\n get: () => i.modelValue,\n set: (e) => a(\"update:modelValue\", e)\n }), u = (0, vue_1.computed)(() => z(i.mode)), g = {\n dayOfWeek: {\n totalDaysCount: 7,\n period: r.Common.a_week\n },\n dayOfMonth: {\n totalDaysCount: 28,\n period: r.Common.a_month\n }\n }, _ = (0, vue_1.computed)(() => {\n let e = o.value.length, { totalDaysCount: t, period: n } = g[i.mode], a = e === t;\n if (a && i.timesCount === 1)\n return r.Common.Every_day;\n let c = i.timesCount === 1 ? e : i.timesCount;\n return `${a ? r.Common.Every_day : `${e}`}${i.timesCount > 1 ? ` × ${i.timesCount}` : \"\"} ${(0, string_js_1.numberEnding)(c, r.Common.time_a_0, r.Common.time_a_0, r.Common.time_a_2)} ${n}`;\n }), y = (0, vue_1.computed)(() => o.value.length > 1), b = () => {\n o.value = y.value ? [] : u.value.map((e) => e.value);\n };\n return (e, t) => {\n let n = (0, vue_1.resolveComponent)(\"TopButton\");\n return (0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", B, [\n (0, vue_1.createElementVNode)(\"div\", V, [(0, vue_1.renderSlot)(e.$slots, \"header\"), (0, vue_1.createVNode)(n, {\n class: \"top-scheduleCalendar_headerButton\",\n onClick: b,\n color: \"theme\",\n tabindex: \"0\"\n }, {\n default: (0, vue_1.withCtx)(() => [(0, vue_1.createTextVNode)((0, vue_1.toDisplayString)(y.value ? e.$i18n.Common.Clear : e.$i18n.Common.Select_all), 1)]),\n _: 1\n })]),\n (0, vue_1.createElementVNode)(\"div\", H, [((0, vue_1.openBlock)(!0), (0, vue_1.createElementBlock)(vue_1.Fragment, null, (0, vue_1.renderList)(u.value, (e) => ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"label\", {\n class: \"top-scheduleCalendar_calendarDay\",\n key: e.value\n }, [(0, vue_1.withDirectives)((0, vue_1.createElementVNode)(\"input\", {\n class: \"top-scheduleCalendar_calendarDayRadio\",\n type: \"checkbox\",\n value: e.value,\n \"onUpdate:modelValue\": t[0] ||= (e) => o.value = e,\n tabindex: \"0\"\n }, null, 8, U), [[vue_1.vModelCheckbox, o.value]]), (0, vue_1.createElementVNode)(\"span\", {\n class: \"top-scheduleCalendar_calendarDayTitle\",\n \"data-top-icon\": e.isIcon ? e.title : void 0\n }, [e.isIcon ? (0, vue_1.createCommentVNode)(\"\", !0) : ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(vue_1.Fragment, { key: 0 }, [(0, vue_1.createTextVNode)((0, vue_1.toDisplayString)(e.title), 1)], 64))], 8, W)]))), 128))]),\n (0, vue_1.createElementVNode)(\"span\", { class: (0, vue_1.normalizeClass)({\n \"top-scheduleCalendar_selectionSummary\": !0,\n \"top-error\": !o.value.length\n }) }, (0, vue_1.toDisplayString)(_.value), 3)\n ]);\n };\n }\n }), K = /* @__PURE__ */ (0, vue_1.defineComponent)({\n __name: \"selector\",\n props: {\n modelValue: {},\n emails: { default: () => [] },\n getEmailSuggestions: {\n type: Function,\n default: () => []\n }\n },\n emits: [\"update:modelValue\", \"submit\"],\n setup(i, { emit: a }) {\n let s = a, c = i, l = a, u = (0, forms__4U0sLFk_esm_js_1.E)(), d = forms__4U0sLFk_esm_js_1.O.$, p = (0, vue_1.ref)(), m = (0, vue_1.ref)(), g = null, v = {}, C = (e) => e.filter((e) => !c.emails.includes(e)), w = (e = c.modelValue) => {\n let n = String(e).trim();\n if (n) {\n if (!(0, check_js_1.isEmail)(n)) {\n forms__4U0sLFk_esm_js_1.O.notice(u.Common.Enter_valid_email_notice, \"error\");\n return;\n }\n l(\"submit\", n);\n }\n }, T = async () => {\n if (await (0, vue_1.nextTick)(), g = m.value?.$el.querySelector(\"input\") ?? null, g) {\n if (!d?.ui?.autocomplete) {\n console.info(\"Для работы autocomplete требуется глобальная загрузка jQuery UI Autocomplete\");\n return;\n }\n d(g).autocomplete({\n appendTo: p.value,\n minLength: 0,\n source: async (e, t) => {\n let n = e.term;\n n in v || (v[n] = await c.getEmailSuggestions(n)), t(C(v[n]).map((e) => ({\n label: e,\n value: e\n })));\n },\n select: (e, t) => {\n !t.item || !g || (e.preventDefault(), w(t.item.value), l(\"update:modelValue\", \"\"), d(g).trigger(\"focus\"));\n }\n }), d(g).attr(\"autocomplete\", \"disabled\"), d(g).on(\"focus.scheduleEmailSelector\", () => {\n g && d(g).trigger(\"input\");\n });\n }\n };\n return (0, vue_1.onMounted)(() => {\n T();\n }), (0, vue_1.onBeforeUnmount)(() => {\n !d?.ui?.autocomplete || !g || (d(g).off(\"focus.scheduleEmailSelector\"), d(g).autocomplete(\"destroy\"));\n }), (e, t) => ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", {\n class: \"top-scheduleEmailSelector\",\n ref_key: \"elRootRef\",\n ref: p\n }, [(0, vue_1.createVNode)(forms__4U0sLFk_esm_js_1.c, {\n ref_key: \"elInputRef\",\n ref: m,\n modelValue: i.modelValue,\n \"onUpdate:modelValue\": t[1] ||= (e) => s(\"update:modelValue\", e),\n onKeydown: t[2] ||= (0, vue_1.withKeys)((0, vue_1.withModifiers)((e) => w(), [\"prevent\"]), [\"enter\"]),\n title: e.$i18n.Common.Enter_email,\n type: \"email\",\n size: \"l\"\n }, {\n default: (0, vue_1.withCtx)(() => [(0, vue_1.createVNode)(forms__4U0sLFk_esm_js_1.h, {\n class: \"top-scheduleEmailSelector_submit\",\n color: \"theme\",\n icon: \"\",\n onClick: t[0] ||= (0, vue_1.withModifiers)((e) => w(), [\"prevent\"])\n })]),\n _: 1\n }, 8, [\"modelValue\", \"title\"])], 512));\n }\n }), q = { class: \"top-scheduleEmail\" }, J = { class: \"top-scheduleEmail_title\" }, Y = {\n key: 1,\n class: \"top-scheduleEmail_emails\"\n }, X = { class: \"top-ellipsis1\" }, Z = /* @__PURE__ */ (0, vue_1.defineComponent)({\n __name: \"email\",\n props: {\n emails: { default: () => [] },\n getEmailSuggestions: {\n type: Function,\n default: () => []\n },\n maxEmailsCount: { default: -1 }\n },\n emits: [\"add:email\", \"remove:email\"],\n setup(e, { emit: t }) {\n let n = t, r = e, i = t, a = (0, vue_1.ref)(\"\"), o = (e) => {\n let t = e.trim();\n if (!t || r.emails.includes(t)) {\n a.value = \"\";\n return;\n }\n i(\"add:email\", t), a.value = \"\";\n };\n return (t, r) => {\n let i = (0, vue_1.resolveComponent)(\"TopButton\");\n return (0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", q, [\n (0, vue_1.createElementVNode)(\"div\", J, (0, vue_1.toDisplayString)(t.$i18n.Projects.Reports_send_to_address) + \" E-mail: \", 1),\n e.maxEmailsCount && e.emails.length === e.maxEmailsCount ? (0, vue_1.createCommentVNode)(\"\", !0) : ((0, vue_1.openBlock)(), (0, vue_1.createBlock)(K, {\n key: 0,\n modelValue: a.value,\n \"onUpdate:modelValue\": r[0] ||= (e) => a.value = e,\n getEmailSuggestions: e.getEmailSuggestions,\n emails: e.emails,\n onSubmit: o\n }, null, 8, [\n \"modelValue\",\n \"getEmailSuggestions\",\n \"emails\"\n ])),\n e.emails.length ? ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", Y, [((0, vue_1.openBlock)(!0), (0, vue_1.createElementBlock)(vue_1.Fragment, null, (0, vue_1.renderList)(e.emails, (e) => ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", {\n class: \"top-scheduleEmail_emailsItem\",\n key: e\n }, [(0, vue_1.createElementVNode)(\"span\", X, (0, vue_1.toDisplayString)(e), 1), (0, vue_1.createVNode)(i, {\n onClick: (t) => n(\"remove:email\", e),\n color: \"theme\",\n icon: \"\"\n }, null, 8, [\"onClick\"])]))), 128))])) : (0, vue_1.createCommentVNode)(\"\", !0)\n ]);\n };\n }\n }), re = { class: \"top-scheduleReportSend\" }, ie = { class: \"top-scheduleReportSend_title\" }, ae = { class: \"top-scheduleReportSend_channels\" }, oe = [\"data-top-icon\"], se = { class: \"top-scheduleReportSend_channelLabel top-ellipsis1\" }, Q = {\n key: 0,\n class: \"top-scheduleReportSend_channel\"\n }, ce = [\"data-top-icon\"], le = [\"href\"], ue = /* @__PURE__ */ (0, vue_1.defineComponent)({\n __name: \"reportSend\",\n props: {\n channels: {},\n connectors: { default: () => [] }\n },\n emits: [\"update:channelSelected\"],\n setup(e, { emit: t }) {\n let n = e, r = (e) => n.channels.some((t) => t.source === e), i = {\n informer: \"\",\n telegram: \"\"\n };\n return (n, a) => {\n let o = (0, vue_1.resolveComponent)(\"TopButton\"), s = (0, vue_1.resolveComponent)(\"TopSwitcher\");\n return (0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", re, [(0, vue_1.createElementVNode)(\"div\", ie, (0, vue_1.toDisplayString)(n.$i18n.Projects.Reports_send), 1), (0, vue_1.createElementVNode)(\"div\", ae, [((0, vue_1.openBlock)(!0), (0, vue_1.createElementBlock)(vue_1.Fragment, null, (0, vue_1.renderList)(e.channels, (e) => ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", {\n class: \"top-scheduleReportSend_channel\",\n key: `${e.source}-${e.id}`\n }, [\n (0, vue_1.createElementVNode)(\"span\", {\n class: \"top-scheduleReportSend_channelIcon\",\n \"data-top-icon\": i[e.source]\n }, null, 8, oe),\n (0, vue_1.createElementVNode)(\"span\", se, (0, vue_1.toDisplayString)(e.label), 1),\n e.settingLink ? ((0, vue_1.openBlock)(), (0, vue_1.createBlock)(o, {\n key: 0,\n class: \"top-scheduleReportSend_channelSettings\",\n size: \"xs\",\n href: e.settingLink,\n target: \"_blank\",\n icon: \"\",\n color: \"theme\",\n tabindex: \"0\"\n }, null, 8, [\"href\"])) : (0, vue_1.createCommentVNode)(\"\", !0),\n (0, vue_1.createVNode)(s, {\n class: \"top-scheduleReportSend_channelSwitcher\",\n modelValue: e.selected,\n \"onUpdate:modelValue\": (n) => t(\"update:channelSelected\", {\n id: e.id,\n source: e.source,\n selected: n\n })\n }, null, 8, [\"modelValue\", \"onUpdate:modelValue\"])\n ]))), 128)), ((0, vue_1.openBlock)(!0), (0, vue_1.createElementBlock)(vue_1.Fragment, null, (0, vue_1.renderList)(e.connectors, (e) => ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(vue_1.Fragment, { key: e.source }, [r(e.source) ? (0, vue_1.createCommentVNode)(\"\", !0) : ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", Q, [(0, vue_1.createElementVNode)(\"span\", {\n class: \"top-scheduleReportSend_channelIcon\",\n \"data-top-icon\": i[e.source]\n }, null, 8, ce), (0, vue_1.createElementVNode)(\"a\", {\n class: \"top-scheduleReportSend_channelLabel top-ellipsis1\",\n href: e.connectLink,\n target: \"_blank\"\n }, (0, vue_1.toDisplayString)(e.connectLabel), 9, le)]))], 64))), 128))])]);\n };\n }\n }), de = { class: \"top-scheduleTimeSelector\" }, $ = /* @__PURE__ */ (0, vue_1.defineComponent)({\n __name: \"timeSelector\",\n props: {\n hour: {},\n minute: {}\n },\n emits: [\"update:hour\", \"update:minute\"],\n setup(e, { emit: t }) {\n let n = e, r = Array.from({ length: 24 }, (e, t) => ({\n value: String(t),\n title: String(t).padStart(2, \"0\")\n })), i = [\n {\n value: \"0\",\n title: \"00\"\n },\n {\n value: \"15\",\n title: \"15\"\n },\n {\n value: \"30\",\n title: \"30\"\n },\n {\n value: \"45\",\n title: \"45\"\n }\n ], a = (0, vue_1.computed)(() => i.some((e) => e.value === n.minute) ? i : [...i, {\n value: n.minute,\n title: n.minute.padStart(2, \"0\"),\n disabled: !0\n }]);\n return (n, i) => {\n let o = (0, vue_1.resolveComponent)(\"TopSelect\");\n return (0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", de, [(0, vue_1.createVNode)(o, {\n class: \"top-scheduleTimeSelector_hour\",\n modelValue: e.hour,\n options: (0, vue_1.unref)(r),\n \"onUpdate:modelValue\": i[0] ||= (e) => t(\"update:hour\", e)\n }, null, 8, [\"modelValue\", \"options\"]), (0, vue_1.createVNode)(o, {\n class: \"top-scheduleTimeSelector_minute\",\n modelValue: e.minute,\n options: a.value,\n \"onUpdate:modelValue\": i[1] ||= (e) => t(\"update:minute\", e)\n }, null, 8, [\"modelValue\", \"options\"])]);\n };\n }\n }), fe = { class: \"top-scheduleTimeSelectors\" }, pe = /* @__PURE__ */ (0, vue_1.defineComponent)({\n __name: \"timeSelectors\",\n props: { times: {} },\n emits: [\"update:times\"],\n setup(e, { emit: t }) {\n let n = t, r = e, i = t, a = /* @__PURE__ */ new WeakMap(), o = 0, s = (e) => {\n let t = (0, vue_1.toRaw)(e), n = a.get(t);\n if (n !== void 0)\n return n;\n let r = o++;\n return a.set(t, r), r;\n }, l = (e, t) => {\n let n = r.times.map((n, r) => {\n if (r !== e)\n return n;\n let i = {\n ...n,\n ...t\n };\n return a.set(i, s(n)), i;\n });\n i(\"update:times\", n);\n }, d = () => {\n let e = [{\n hour: \"0\",\n minute: \"0\"\n }, ...r.times];\n i(\"update:times\", e);\n };\n return (t, r) => {\n let i = (0, vue_1.resolveComponent)(\"TopButton\");\n return (0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", fe, [((0, vue_1.openBlock)(!0), (0, vue_1.createElementBlock)(vue_1.Fragment, null, (0, vue_1.renderList)(e.times, (t, r) => ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", {\n class: \"top-scheduleTimeSelectors_item\",\n key: s(t)\n }, [(0, vue_1.createVNode)($, {\n hour: t.hour,\n minute: t.minute,\n \"onUpdate:hour\": (e) => l(r, { hour: e }),\n \"onUpdate:minute\": (e) => l(r, { minute: e })\n }, null, 8, [\n \"hour\",\n \"minute\",\n \"onUpdate:hour\",\n \"onUpdate:minute\"\n ]), r ? ((0, vue_1.openBlock)(), (0, vue_1.createBlock)(i, {\n key: 0,\n onClick: (t) => n(\"update:times\", e.times.filter((e, t) => t !== r)),\n color: \"theme\",\n icon: \"\"\n }, null, 8, [\"onClick\"])) : ((0, vue_1.openBlock)(), (0, vue_1.createBlock)(i, {\n key: 1,\n class: \"top-scheduleTimeSelectors_itemAdd\",\n onClick: d,\n color: \"theme\",\n icon: \"\"\n }))]))), 128))]);\n };\n }\n });\n exports.TopScheduleContainer = R;\n exports.TopScheduleCalendar = G;\n exports.TopScheduleEmailSelector = K;\n exports.TopScheduleEmail = Z;\n exports.TopScheduleReportSend = ue;\n exports.TopScheduleTimeSelector = $;\n exports.TopScheduleTimeSelectors = pe;\n});\n//# sourceMappingURL=schedule.js.map\n","<script setup lang=\"ts\">\nimport TopSelect from '@/components/forms/select/select.vue';\nimport type { Props, Emits, TriggerType } from '@/components/schedule/schedule/types';\nimport { useI18n } from '@/core/plugins/i18n';\n\ndefineOptions({\n\tname: 'TopSchedule',\n});\n\nconst props = withDefaults(defineProps<Props>(), {\n\ttriggerType: 'onDemand',\n});\n\ndefineEmits<Emits>();\n\nconst i18n = useI18n();\nconst labelByStyling = {\n\t'go': i18n.Projects.Checks,\n\t'report': i18n.Projects.Reports,\n\t'neutral': '',\n};\nconst title = props.title ?? labelByStyling[props.styling];\n</script>\n\n<template>\n\t<div\n\t\t:class=\"{\n\t\t\t'top-schedule': true,\n\t\t\t[`top-schedule-style_${styling}`]: true,\n\t\t}\"\n\t>\n\t\t<div class=\"top-schedule_header\">\n\t\t\t<div class=\"top-schedule_headerTitle\">\n\t\t\t\t{{ title }}\n\t\t\t</div>\n\n\t\t\t<TopSelect\n\t\t\t\tclass=\"top-schedule_headerTriggerType\"\n\t\t\t\t:modelValue=\"triggerType\"\n\t\t\t\t@update:modelValue=\"$emit('update:triggerType', $event as TriggerType)\"\n\t\t\t\t:options=\"triggerTypeOptions\"\n\t\t\t\tsize=\"s\"\n\t\t\t/>\n\t\t</div>\n\n\t\t<div\n\t\t\tv-if=\"triggerType !== 'onDemand' && $slots.body\"\n\t\t\tclass=\"top-schedule_body\"\n\t\t>\n\t\t\t<slot name=\"body\"></slot>\n\t\t</div>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","<template>\n\t<div class=\"top-schedule_bodyContainer\">\n\t\t<slot></slot>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","import type { Day, Props } from './types';\nimport { useI18n } from '@/core/app';\n\n/**\n * Количество дней в месяце\n */\nexport const COUNT_DAYS_IN_MONTHS = 27;\n\n/**\n * Количество дней в неделе\n */\nexport const COUNT_DAYS_IN_WEEK = 7;\n\nexport const genDaysByCalendarMode = (mode: Props['mode']): Day[] => {\n\tconst i18n = useI18n();\n\n\tswitch (mode) {\n\t\tcase 'dayOfMonth': {\n\t\t\tconst days: Day[] = Array.from({ length: COUNT_DAYS_IN_MONTHS }, (_, index) => ({\n\t\t\t\tvalue: String(index + 1) as Day['value'],\n\t\t\t\ttitle: String(index + 1),\n\t\t\t}));\n\n\t\t\tdays.push({\n\t\t\t\tvalue: 'LAST_OF_MONTH',\n\t\t\t\ttitle: '',\n\t\t\t\tisIcon: true,\n\t\t\t});\n\n\t\t\treturn days;\n\t\t}\n\n\t\tcase 'dayOfWeek': {\n\t\t\treturn [\n\t\t\t\t{ value: 'MONDAY', title: i18n.Calendar.Dw_1 },\n\t\t\t\t{ value: 'TUESDAY', title: i18n.Calendar.Dw_2 },\n\t\t\t\t{ value: 'WEDNESDAY', title: i18n.Calendar.Dw_3 },\n\t\t\t\t{ value: 'THURSDAY', title: i18n.Calendar.Dw_4 },\n\t\t\t\t{ value: 'FRIDAY', title: i18n.Calendar.Dw_5 },\n\t\t\t\t{ value: 'SATURDAY', title: i18n.Calendar.Dw_6 },\n\t\t\t\t{ value: 'SUNDAY', title: i18n.Calendar.Dw_7 },\n\t\t\t];\n\t\t}\n\t}\n};\n","<script setup lang=\"ts\">\nimport type { Props, Emits } from '@/components/schedule/schedule/compoents/calendar/types';\nimport { COUNT_DAYS_IN_MONTHS, COUNT_DAYS_IN_WEEK, genDaysByCalendarMode } from '@/components/schedule/schedule/compoents/calendar/utils';\nimport { numberEnding } from '@/core/utils/string';\nimport { computed } from 'vue';\nimport { useI18n } from '@/core/app';\n\nconst i18n = useI18n();\nconst props = withDefaults(defineProps<Props>(), {\n\ttimesCount: 1,\n});\nconst emit = defineEmits<Emits>();\n\nconst selectedDays = computed<Props['modelValue']>({\n\tget: () => props.modelValue,\n\tset: value => emit('update:modelValue', value),\n});\n\nconst days = computed(() => genDaysByCalendarMode(props.mode));\n\n/**\n * Параметры отображения выбранных дней для каждого режима календаря\n */\nconst modeConfig = {\n\tdayOfWeek: {\n\t\ttotalDaysCount: COUNT_DAYS_IN_WEEK,\n\t\tperiod: i18n.Common.a_week,\n\t},\n\tdayOfMonth: {\n\t\t// плюс \"последний день месяца\"\n\t\ttotalDaysCount: COUNT_DAYS_IN_MONTHS + 1,\n\t\tperiod: i18n.Common.a_month,\n\t},\n};\n\n/**\n * Текстовая сводка выбранных дней и временных слотов\n */\nconst selectionSummary = computed(() => {\n\t// Количество выбранных пользователем дней\n\tconst daysCount = selectedDays.value.length;\n\t// Общее количество доступных дней и название периода для текущего режима\n\tconst { totalDaysCount, period } = modeConfig[props.mode];\n\t// Выбраны ли все доступные дни\n\tconst isEveryDay = daysCount === totalDaysCount;\n\n\tif (isEveryDay && props.timesCount === 1) return i18n.Common.Every_day;\n\n\t// Число, для которого нужно подобрать склонение слова «раз»\n\tconst count = props.timesCount === 1 ? daysCount : props.timesCount;\n\t// Подпись количества выбранных дней\n\tconst daysLabel = isEveryDay ? i18n.Common.Every_day : `${daysCount}`;\n\t// Множитель времени отображается только при нескольких временных слотах\n\tconst multiplier = props.timesCount > 1 ? ` × ${props.timesCount}` : '';\n\t// Склонённая подпись количества запусков\n\tconst countLabel = numberEnding(\n\t\tcount,\n\t\ti18n.Common.time_a_0,\n\t\ti18n.Common.time_a_0,\n\t\ti18n.Common.time_a_2,\n\t);\n\n\treturn `${daysLabel}${multiplier} ${countLabel} ${period}`;\n});\n\nconst isClearAction = computed(() => selectedDays.value.length > 1);\n\nconst toggleAllDays = () => {\n\tselectedDays.value = isClearAction.value ? [] : days.value.map(day => day.value);\n};\n</script>\n\n<template>\n\t<div class=\"top-scheduleCalendar\">\n\t\t<div class=\"top-scheduleCalendar_header\">\n\t\t\t<slot name=\"header\"></slot>\n\n\t\t\t<TopButton\n\t\t\t\tclass=\"top-scheduleCalendar_headerButton\"\n\t\t\t\t@click=\"toggleAllDays\"\n\t\t\t\tcolor=\"theme\"\n\t\t\t\ttabindex=\"0\"\n\t\t\t>\n\t\t\t\t{{ isClearAction ? $i18n.Common.Clear : $i18n.Common.Select_all}}\n\t\t\t</TopButton>\n\t\t</div>\n\n\t\t<div class=\"top-scheduleCalendar_calendar\">\n\t\t\t<label\n\t\t\t\tclass=\"top-scheduleCalendar_calendarDay\"\n\t\t\t\tv-for=\"day in days\"\n\t\t\t\t:key=\"day.value\"\n\t\t\t>\n\t\t\t\t<input\n\t\t\t\t\tclass=\"top-scheduleCalendar_calendarDayRadio\"\n\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t:value=\"day.value\"\n\t\t\t\t\tv-model=\"selectedDays\"\n\t\t\t\t\ttabindex=\"0\"\n\t\t\t\t>\n\n\t\t\t\t<span\n\t\t\t\t\tclass=\"top-scheduleCalendar_calendarDayTitle\"\n\t\t\t\t\t:data-top-icon=\"day.isIcon ? day.title : undefined\"\n\t\t\t\t>\n\t\t\t\t\t<template v-if=\"!day.isIcon\">\n\t\t\t\t\t\t{{ day.title }}\n\t\t\t\t\t</template>\n\t\t\t\t</span>\n\t\t\t</label>\n\t\t</div>\n\n\t\t<span\n\t\t\t:class=\"{\n\t\t\t\t'top-scheduleCalendar_selectionSummary': true,\n\t\t\t\t'top-error': !selectedDays.length\n\t\t\t}\"\n\t\t>\n\t\t\t{{ selectionSummary }}\n\t\t</span>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","<script setup lang=\"ts\">\nimport { nextTick, onBeforeUnmount, onMounted, ref } from 'vue';\nimport TopInput from '@/components/forms/input/input.vue';\nimport TopButton from '@/components/forms/button/button.vue';\nimport Core from '@/core/core/core';\nimport { isEmail } from '@/core/utils/check';\nimport { useI18n } from '@/core/plugins/i18n';\nimport type { Props, Emits } from '@/components/schedule/schedule/compoents/email/selector/types';\n\nconst props = withDefaults(defineProps<Props>(), {\n\temails: () => [],\n\tgetEmailSuggestions: () => [],\n});\n\nconst emit = defineEmits<Emits>();\nconst i18n = useI18n();\nconst $ = Core.$;\n\nconst elRootRef = ref<HTMLElement>();\nconst elInputRef = ref<InstanceType<typeof TopInput>>();\nlet elInput: HTMLInputElement | null = null;\nconst autocompleteCache: Record<string, string[]> = {};\n\nconst filterEmails = (emails: string[]) => emails.filter(email => !props.emails.includes(email));\n\nconst submit = (value: unknown = props.modelValue) => {\n\tconst email = String(value).trim();\n\tif (!email) return;\n\tif (!isEmail(email)) {\n\t\tvoid Core.notice(i18n.Common.Enter_valid_email_notice, 'error');\n\n\t\treturn;\n\t}\n\n\temit('submit', email);\n};\n\nconst initAutocomplete = async () => {\n\tawait nextTick();\n\n\telInput = elInputRef.value?.$el.querySelector('input') ?? null;\n\tif (!elInput) return;\n\n\tif (!$?.ui?.autocomplete) {\n\t\tconsole.info('Для работы autocomplete требуется глобальная загрузка jQuery UI Autocomplete');\n\n\t\treturn;\n\t}\n\n\t$(elInput).autocomplete({\n\t\tappendTo: elRootRef.value,\n\t\tminLength: 0,\n\t\tsource: async (request: { term: string }, response: (items: Array<{ label: string, value: string }>) => void) => {\n\t\t\tconst term = request.term;\n\t\t\tif (!(term in autocompleteCache)) {\n\t\t\t\tautocompleteCache[term] = await props.getEmailSuggestions(term);\n\t\t\t}\n\n\t\t\tresponse(filterEmails(autocompleteCache[term]).map(email => ({\n\t\t\t\tlabel: email,\n\t\t\t\tvalue: email,\n\t\t\t})));\n\t\t},\n\t\tselect: (event: Event, ui: { item?: { value: string } }) => {\n\t\t\tif (!ui.item || !elInput) return;\n\n\t\t\tevent.preventDefault();\n\t\t\tsubmit(ui.item.value);\n\t\t\temit('update:modelValue', '');\n\n\t\t\t$(elInput).trigger('focus');\n\t\t},\n\t});\n\n\t$(elInput).attr('autocomplete', 'disabled');\n\t$(elInput).on('focus.scheduleEmailSelector', () => {\n\t\tif (!elInput) return;\n\n\t\t$(elInput).trigger('input');\n\t});\n};\n\nonMounted(() => {\n\tvoid initAutocomplete();\n});\n\nonBeforeUnmount(() => {\n\tif (!$?.ui?.autocomplete || !elInput) return;\n\n\t$(elInput).off('focus.scheduleEmailSelector');\n\t$(elInput).autocomplete('destroy');\n});\n</script>\n\n<template>\n\t<div\n\t\tclass=\"top-scheduleEmailSelector\"\n\t\tref=\"elRootRef\"\n\t>\n\t\t<TopInput\n\t\t\tref=\"elInputRef\"\n\t\t\t:modelValue\n\t\t\t@update:modelValue=\"$emit('update:modelValue', $event)\"\n\t\t\t@keydown.enter.prevent=\"submit()\"\n\t\t\t:title=\"$i18n.Common.Enter_email\"\n\t\t\ttype=\"email\"\n\t\t\tsize=\"l\"\n\t\t>\n\t\t\t<TopButton\n\t\t\t\tclass=\"top-scheduleEmailSelector_submit\"\n\t\t\t\tcolor=\"theme\"\n\t\t\t\ticon=\"\"\n\t\t\t\t@click.prevent=\"submit()\"\n\t\t\t/>\n\t\t</TopInput>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport type { Props, Emits } from '@/components/schedule/schedule/compoents/email/types';\nimport ScheduleEmailSelector from '@/components/schedule/schedule/compoents/email/selector/selector.vue';\n\nconst props = withDefaults(defineProps<Props>(), {\n\temails: () => [],\n\tgetEmailSuggestions: () => [],\n\tmaxEmailsCount: -1,\n});\n\nconst emit = defineEmits<Emits>();\n\nconst value = ref('');\n\nconst addEmail = (email: string) => {\n\tconst preparedEmail = email.trim();\n\tif (!preparedEmail || props.emails.includes(preparedEmail)) {\n\t\tvalue.value = '';\n\n\t\treturn;\n\t}\n\n\temit('add:email', preparedEmail);\n\n\tvalue.value = '';\n};\n</script>\n\n<template>\n\t<div class=\"top-scheduleEmail\">\n\t\t<div class=\"top-scheduleEmail_title\">\n\t\t\t{{ $i18n.Projects.Reports_send_to_address }} E-mail:\n\t\t</div>\n\n\t\t<ScheduleEmailSelector\n\t\t\tv-if=\"!(maxEmailsCount && emails.length === maxEmailsCount)\"\n\t\t\tv-model=\"value\"\n\t\t\t:getEmailSuggestions=\"getEmailSuggestions\"\n\t\t\t:emails=\"emails\"\n\t\t\t@submit=\"addEmail\"\n\t\t/>\n\n\t\t<div\n\t\t\tv-if=\"emails.length\"\n\t\t\tclass=\"top-scheduleEmail_emails\"\n\t\t>\n\t\t\t<div\n\t\t\t\tclass=\"top-scheduleEmail_emailsItem\"\n\t\t\t\tv-for=\"email in emails\"\n\t\t\t\t:key=\"email\"\n\t\t\t>\n\t\t\t\t<span class=\"top-ellipsis1\">{{ email }}</span>\n\n\t\t\t\t<TopButton\n\t\t\t\t\t@click=\"$emit('remove:email', email)\"\n\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\ticon=\"\"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","<script setup lang=\"ts\">\nimport type { Emits, Props, ReportChannelSource } from '@/components/schedule/schedule/compoents/reportSend/types';\n\nconst props = withDefaults(defineProps<Props>(), {\n\tconnectors: () => [],\n});\ndefineEmits<Emits>();\n\nconst hasChannel = (source: ReportChannelSource) => props.channels.some(channel => channel.source === source);\n\nconst sourceIconBySource: Record<ReportChannelSource, string> = {\n\tinformer: '',\n\ttelegram: '',\n};\n</script>\n\n<template>\n\t<div class=\"top-scheduleReportSend\">\n\t\t<div class=\"top-scheduleReportSend_title\">\n\t\t\t{{ $i18n.Projects.Reports_send }}\n\t\t</div>\n\n\t\t<div class=\"top-scheduleReportSend_channels\">\n\t\t\t<div\n\t\t\t\tclass=\"top-scheduleReportSend_channel\"\n\t\t\t\tv-for=\"channel in channels\"\n\t\t\t\t:key=\"`${channel.source}-${channel.id}`\"\n\t\t\t>\n\t\t\t\t<span\n\t\t\t\t\tclass=\"top-scheduleReportSend_channelIcon\"\n\t\t\t\t\t:data-top-icon=\"sourceIconBySource[channel.source]\"\n\t\t\t\t></span>\n\n\t\t\t\t<span class=\"top-scheduleReportSend_channelLabel top-ellipsis1\">\n\t\t\t\t\t{{ channel.label }}\n\t\t\t\t</span>\n\n\t\t\t\t<TopButton\n\t\t\t\t\tv-if=\"channel.settingLink\"\n\t\t\t\t\tclass=\"top-scheduleReportSend_channelSettings\"\n\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t:href=\"channel.settingLink\"\n\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\ticon=\"\"\n\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\ttabindex=\"0\"\n\t\t\t\t></TopButton>\n\n\t\t\t\t<TopSwitcher\n\t\t\t\t\tclass=\"top-scheduleReportSend_channelSwitcher\"\n\t\t\t\t\t:modelValue=\"channel.selected\"\n\t\t\t\t\t@update:modelValue=\"$emit('update:channelSelected', {\n\t\t\t\t\t\tid: channel.id,\n\t\t\t\t\t\tsource: channel.source,\n\t\t\t\t\t\tselected: $event as boolean,\n\t\t\t\t\t})\"\n\t\t\t\t/>\n\t\t\t</div>\n\n\t\t\t<template\n\t\t\t\tv-for=\"connector in connectors\"\n\t\t\t\t:key=\"connector.source\"\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tv-if=\"!hasChannel(connector.source)\"\n\t\t\t\t\tclass=\"top-scheduleReportSend_channel\"\n\t\t\t\t>\n\t\t\t\t\t<span\n\t\t\t\t\t\tclass=\"top-scheduleReportSend_channelIcon\"\n\t\t\t\t\t\t:data-top-icon=\"sourceIconBySource[connector.source]\"\n\t\t\t\t\t></span>\n\n\t\t\t\t\t<a\n\t\t\t\t\t\tclass=\"top-scheduleReportSend_channelLabel top-ellipsis1\"\n\t\t\t\t\t\t:href=\"connector.connectLink\"\n\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{{ connector.connectLabel }}\n\t\t\t\t\t</a>\n\t\t\t\t</div>\n\t\t\t</template>\n\t\t</div>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport type { Props, Emits, Time } from '@/components/schedule/schedule/compoents/timeSelector/types';\n\nconst props = defineProps<Props>();\ndefineEmits<Emits>();\n\n/**\n * Варианты выбора часа\n */\nconst hourOptions = Array.from({ length: 24 }, (_, index) => ({\n\tvalue: String(index),\n\ttitle: String(index).padStart(2, '0'),\n}));\n\n/**\n * Варианты выбора минут по умолчанию\n */\nconst defaultMinuteOptions = [\n\t{\n\t\tvalue: '0',\n\t\ttitle: '00',\n\t},\n\t{\n\t\tvalue: '15',\n\t\ttitle: '15',\n\t},\n\t{\n\t\tvalue: '30',\n\t\ttitle: '30',\n\t},\n\t{\n\t\tvalue: '45',\n\t\ttitle: '45',\n\t},\n];\n\n/**\n * Варианты выбора минут\n *\n * Дополняются выбранным нестандартным значением, чтобы вывести его в интерфейсе\n */\nconst minuteOptions = computed(() => {\n\tif (defaultMinuteOptions.some((option) => option.value === props.minute)) return defaultMinuteOptions;\n\n\treturn [\n\t\t...defaultMinuteOptions, {\n\t\t\tvalue: props.minute,\n\t\t\ttitle: props.minute.padStart(2, '0'),\n\t\t\tdisabled: true,\n\t\t},\n\t];\n});\n</script>\n\n<template>\n\t<div class=\"top-scheduleTimeSelector\">\n\t\t<TopSelect\n\t\t\tclass=\"top-scheduleTimeSelector_hour\"\n\t\t\t:modelValue=\"hour\"\n\t\t\t:options=\"hourOptions\"\n\t\t\t@update:modelValue=\"$emit('update:hour', $event as Time['hour'])\"\n\t\t/>\n\n\t\t<TopSelect\n\t\t\tclass=\"top-scheduleTimeSelector_minute\"\n\t\t\t:modelValue=\"minute\"\n\t\t\t:options=\"minuteOptions\"\n\t\t\t@update:modelValue=\"$emit('update:minute', $event as Time['minute'])\"\n\t\t/>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","<script setup lang=\"ts\">\nimport { toRaw } from 'vue';\nimport type { Props, Emits } from '@/components/schedule/schedule/compoents/timeSelectors/types';\nimport type { Time } from '@/components/schedule/schedule/compoents/timeSelector/types';\nimport TimeSelector from '@/components/schedule/schedule/compoents/timeSelector/timeSelector.vue';\n\nconst props = defineProps<Props>();\nconst emit = defineEmits<Emits>();\nconst timeKeys = new WeakMap<Time, number>();\nlet nextTimeKey = 0;\n\nconst getTimeKey = (rawOrProxyTime: Time) => {\n\t// time может быть proxy или обычным объектом\n\tconst time = toRaw(rawOrProxyTime);\n\n\tconst existingKey = timeKeys.get(time);\n\tif (existingKey !== undefined) return existingKey;\n\n\tconst key = nextTimeKey++;\n\ttimeKeys.set(time, key);\n\n\treturn key;\n};\n\nconst updateTime = (index: number, patch: Partial<Props['times'][number]>) => {\n\tconst updatedTimes = props.times.map((time, i) => {\n\t\tif (i !== index) return time;\n\n\t\tconst updatedTime = { ...time, ...patch };\n\t\ttimeKeys.set(updatedTime, getTimeKey(time));\n\n\t\treturn updatedTime;\n\t});\n\n\temit('update:times', updatedTimes);\n};\n\nconst addTime = () => {\n\tconst time: Time = {\n\t\thour: '0',\n\t\tminute: '0',\n\t};\n\n\tconst updatedTimes = [\n\t\ttime,\n\t\t...props.times,\n\t];\n\n\temit('update:times', updatedTimes);\n};\n</script>\n\n<template>\n\t<div class=\"top-scheduleTimeSelectors\">\n\t\t<div\n\t\t\tclass=\"top-scheduleTimeSelectors_item\"\n\t\t\tv-for=\"(time, index) in times\"\n\t\t\t:key=\"getTimeKey(time)\"\n\t\t>\n\t\t\t<TimeSelector\n\t\t\t\t:hour=\"time.hour\"\n\t\t\t\t:minute=\"time.minute\"\n\t\t\t\t@update:hour=\"updateTime(index, { hour: $event as Time['hour'] })\"\n\t\t\t\t@update:minute=\"updateTime(index, { minute: $event as Time['minute'] })\"\n\t\t\t/>\n\n\t\t\t<TopButton\n\t\t\t\tv-if=\"index\"\n\t\t\t\t@click=\"$emit('update:times', times.filter((_, i) => i !== index))\"\n\t\t\t\tcolor=\"theme\"\n\t\t\t\ticon=\"\"\n\t\t\t/>\n\n\t\t\t<TopButton\n\t\t\t\tv-else\n\t\t\t\tclass=\"top-scheduleTimeSelectors_itemAdd\"\n\t\t\t\t@click=\"addTime\"\n\t\t\t\tcolor=\"theme\"\n\t\t\t\ticon=\"\"\n\t\t\t/>\n\t\t</div>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n"]}
|
package/schedule/schedule.js
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
/* end import css */
|
|
7
7
|
|
|
8
8
|
import { E as e, O as t, c as n, h as r, n as i, u as a } from "../.chunks/forms-_4U0sLFk.esm.js";
|
|
9
|
-
import "../.chunks/app-
|
|
9
|
+
import "../.chunks/app-BaHwxbWz.esm.js";
|
|
10
10
|
import { isEmail as o } from "../utils/check.js";
|
|
11
11
|
import { numberEnding as s } from "../utils/string.js";
|
|
12
12
|
import { Fragment as c, computed as l, createBlock as u, createCommentVNode as d, createElementBlock as f, createElementVNode as p, createTextVNode as m, createVNode as h, defineComponent as g, nextTick as _, normalizeClass as v, onBeforeUnmount as y, onMounted as b, openBlock as x, ref as S, renderList as C, renderSlot as w, resolveComponent as T, toDisplayString as E, toRaw as ee, unref as D, vModelCheckbox as O, withCtx as k, withDirectives as te, withKeys as ne, withModifiers as A } from "vue";
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[".chunks/utils-Cou0pGI4.esm.js","../../src/storybook/jquery.ts","../../src/components/dialog/lib/utils.globalEvents.ts","../../src/components/dialog/lib/utils.ts"],"names":["vue","exports","p","m","i","dom_js_1","a","r","I","o","s","route_js_1","utils_BtqYaMHp_esm_js_1","t","forms__4U0sLFk_esm_js_1","h","g","_","v","S","w","T","y","b","x","vue_1","system_js_1","scroll_js_1","C","n","E","D","O","k","F","c","l","u","d","M","N","worker_D28QqQ45_esm_js_1","f","A","j","P"],"mappings":"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","sourcesContent":["define([\"require\", \"exports\", \"./forms-_4U0sLFk.esm.js\", \"../utils/dom.js\", \"./worker-D28QqQ45.esm.js\", \"../utils/system.js\", \"./utils-BtqYaMHp.esm.js\", \"../utils/route.js\", \"../utils/scroll.js\", \"vue\", \"../popup/worker.js\"], function (require, exports, forms__4U0sLFk_esm_js_1, dom_js_1, worker_D28QqQ45_esm_js_1, system_js_1, utils_BtqYaMHp_esm_js_1, route_js_1, scroll_js_1, vue_1) {\n \"use strict\";\n Object.defineProperty(exports, \"__esModule\", { value: true });\n exports.TopDialogUtils = void 0;\n $;\n //#endregion\n //#region src/components/dialog/lib/utils.globalEvents.ts\n var p = !1, m = () => {\n p || (p = !0, document.addEventListener(\"keydown\", (e) => {\n if (e.key !== \"Escape\" || !e.target || !(e.target instanceof HTMLElement))\n return;\n let i = e.target;\n if (!i.closest(\".ui-dialog\") || i.contentEditable === \"true\" || i.contentEditable === \"plaintext-only\" || (0, dom_js_1.querySelectorVisible)(document.documentElement, \".top-popup-wrapper\") || i.classList.contains(\"autocomplete\") || (0, dom_js_1.querySelectorVisible)(document.documentElement, \".fancybox-container\"))\n return;\n let a = (0, dom_js_1.querySelectorAllArray)(document, \".ui-dialog-content\").filter((e) => (0, dom_js_1.isVisible)(e));\n $(a[a.length - 1]).dialog(\"close\");\n }), document.addEventListener(\"click\", (e) => {\n if (!(e.target instanceof HTMLElement))\n return;\n let r = e.target.closest(\"[data-action=\\\"top-dialog-close\\\"]\");\n if (!r)\n return;\n e.preventDefault();\n let i = r.closest(\".ui-dialog-content\");\n if (!i)\n return;\n let a = r.dataset.toView;\n if (a == \"toPrevPage()\") {\n I.toPrevPage(i);\n return;\n }\n if (a) {\n let e = a.split(\"-\"), r = e.shift(), i = e.join(\"-\");\n if (!r)\n return;\n let o = I.getElDialogById(r);\n if (!o)\n return;\n let s = (0, dom_js_1.querySelectorAllArray)(o, `[data-view-page=\"${i}\"]`);\n if (!s)\n return;\n if (!(0, dom_js_1.isVisible)(s[0])) {\n (0, route_js_1.historySetState)(!1, utils_BtqYaMHp_esm_js_1.o.genViewPageHash(a, \"prev\"));\n return;\n }\n }\n $(i).dialog(\"close\");\n }), document.addEventListener(\"submit\", (e) => {\n let t = e.target;\n (t.matches(\".modal-body > form\") || t.matches(\".modal-layer-body > form\")) && e.preventDefault();\n }), document.addEventListener(\"keypress\", (e) => {\n if (!(e.target instanceof HTMLElement))\n return;\n let r = e.target;\n if (r.closest(\".ui-dialog .modal-body\") && (r.matches(\"input:not(.searcher), textarea:not(.searcher), select:not(.searcher), button:not(.searcher)\") || r.hasAttribute(\"contenteditable\")) && e.key === \"Enter\") {\n if (r.classList.contains(\"autocomplete\")) {\n e.preventDefault();\n return;\n }\n if (r.tagName === \"TEXTAREA\") {\n if (!e.ctrlKey && !e.metaKey)\n return;\n let i = r.closest(\"form\");\n i && (0, dom_js_1.querySelectorAllArray)(i, \"button[type=\\\"submit\\\"]\").concat((0, dom_js_1.querySelectorAllArray)(i, \"input[type=\\\"submit\\\"]\")).find((e) => (0, dom_js_1.isVisible)(e))?.click();\n }\n }\n }), document.addEventListener(\"click\", function (e) {\n if (!(e.target instanceof HTMLElement) || !e.target.classList.contains(\"ui-widget-overlay\"))\n return;\n let r, i = 0;\n if ((0, dom_js_1.querySelectorAllArray)(document, \".ui-dialog\").filter((e) => (0, dom_js_1.isVisible)(e)).forEach((e) => {\n let t = Number(window.getComputedStyle(e).zIndex);\n t < i || (r = e, i = t);\n }), r) {\n let e = r.querySelector(\".ui-dialog-content\");\n $(e).dialog(\"close\");\n }\n }), window.addEventListener(\"resize\", I.recalcPositions), I.recalcPositions());\n };\n forms__4U0sLFk_esm_js_1.O.insertStyleToPage(\":root{--dialog-border-color:var(--color-line-1);--dialog-loading-duration:10s;--top-dialog-footer-height:var(--top-forms-base-height_s)}html.with_dialog{overflow:hidden!important}a[data-to-view]{cursor:pointer}.ui-widget-overlay{opacity:.5;filter:Alpha(Opacity=50);background:#040404}.ui-dialog{border:none;border-radius:8px;padding:0}.ui-dialog.ui-widget{border:none}.ui-dialog-titlebar{display:none}.ui-dialog .ui-dialog-content{padding:0;overflow:visible}.ui-dialog .project_name{word-break:break-all}.ui-dialog-content{--dialog-header-height:50px;--dialog-layer-pageSelector:0px}.ui-dialog-content-withPageSelector{--dialog-layer-pageSelector:42px}.modal-header,.modal-body,.modal-footer{font-size:14px;position:relative}.modal-body{padding:var(--padding-default)}.modal-body:has(>.topTable:first-child){padding-top:calc(var(--padding-default) / 4)}.modal-header{border-bottom:1px solid var(--dialog-border-color);height:var(--dialog-header-height);padding:0 var(--padding-default);justify-content:space-between;align-items:center;gap:var(--top-padding-2);display:flex}.modal-header>*{padding:10px 0;font-size:16px}.modal-header>.top-title{text-overflow:ellipsis;white-space:nowrap;flex-grow:1;order:50;align-items:center;margin:0;font-weight:400;display:flex;overflow:hidden}.modal-header>.top-title>div[class*=icon]{display:none}.modal-header>div:not(.top-title){order:60}.modal-header>div.close{--top-icon-color:var(--color-text-2);cursor:pointer;background:var(--color-layout-front-1);order:100;font-size:16px;animation-name:none!important}.modal-header>div.close:hover{--top-icon-color:var(--color-text-1)}.modal-header .links_icons{position:absolute;right:50px}.modal-header .links_icons [class*=icon-]{color:#d6dee0;width:auto;height:auto;padding:0 5px}.modal-header .links_icons [class*=icon-].active{color:var(--color-bg-warning-1)}.modal-layer-pageSelector{padding:0 10px!important}.modal-body{max-height:calc(var(--100vh) - var(--dialog-header-height) - 1px - var(--dialog-layer-pageSelector) - var(--top-dialog-footer-height) - 1px);box-sizing:border-box;flex-grow:1;overflow:hidden auto}.modal-body hr{margin:16px -15px}.modal-body h4{margin:0 0 10px;padding:0;line-height:normal}.modal-body .inner{padding:var(--padding-default);margin:0 calc(0px - var(--padding-default));position:relative}.modal-body .inner .bt{border-top:1px dashed var(--color-layout-front-primary-3);position:absolute;top:0;left:0;right:0}.modal-body .inner .bb{border-bottom:1px dashed var(--color-layout-front-primary-3);position:absolute;bottom:0;left:0;right:0}.modal-body .inner.color-1{background:var(--color-layout-front-primary-3);color:var(--color-text-1)}.modal-body .inner strong{color:var(--color-text-1)}.modal-body .comment{line-height:18px}.modal-footer{min-height:var(--top-dialog-footer-height);padding:var(--top-gap-2);justify-content:flex-end;align-items:center;gap:var(--top-gap-2);flex-shrink:0;display:flex}.modal-footer .modal-footer-btn-left{margin-right:auto}.modal-footer>.btn.full_width,.modal-footer>.top-button.full_width{flex-grow:1;align-self:flex-end}.modal-footer-fullWith{flex-wrap:wrap}.modal-footer-fullWith>*{flex-grow:1}.modal-footer-fullWith>.top-info{flex-grow:5}.modal-footer-fullWith>:empty{flex-grow:0}.ui-dialog-content>.modal-layer>[data-view-page]>input[type=submit]{visibility:hidden;position:absolute}.help_popup .modal-header{display:none}.help_popup .modal-header a{z-index:10;top:2px}.help_popup .modal-header .top-title{display:none}.modal-layer{overflow:hidden}.modal-layer a[data-top-icon]:empty{color:var(--color-text-4);text-decoration:none}.modal-layer>[data-view-page]>div>div.buttons{white-space:nowrap;gap:var(--top-padding-1);display:flex}.modal-layer>[data-view-page]>div>div.buttons:empty{display:none}.modal-layer>[data-view-page]>div>div.buttons>div,.modal-layer>[data-view-page]>div>div.buttons>a{cursor:pointer;width:auto;min-width:auto;height:auto;min-height:auto;color:var(--color-text-4);padding:10px 9px}.modal-layer>[data-view-page]>div>div.buttons>div:hover{color:var(--color-text-2)}.modal-layer>[data-view-page]>div>div.buttons>div.hidden{display:none!important}.ui-dialog-content[data-view-page-active]{flex-direction:column;justify-items:stretch;display:flex!important}.ui-dialog-content>.modal-layer{align-items:stretch;position:relative;display:flex!important}.ui-dialog-content.i-change-page>.modal-layer{overflow:hidden}.ui-dialog-content>.modal-layer>[data-view-page]{flex-direction:column;justify-content:space-between;width:100%;animation:none;display:none;position:relative}.ui-dialog-content>.modal-layer>[data-view-page].active{display:flex}.ui-dialog-content>.modal-layer>[data-view-page].reverse{animation-direction:reverse}.ui-dialog-content>.modal-layer>[data-view-page].center-to-left,.ui-dialog-content>.modal-layer>[data-view-page].right-to-center{display:flex;position:absolute;inset:0}.ui-dialog-content>.modal-layer>[data-view-page].center-to-left>div,.ui-dialog-content>.modal-layer>[data-view-page].right-to-center>div{overflow:hidden}.ui-dialog-content>.modal-layer-header{border-bottom:1px solid var(--dialog-border-color);min-height:var(--dialog-header-height)}.ui-dialog-content>.modal-layer-header>[data-view-page]>.modal-header{background:0 0;border:none}.ui-dialog-content>.modal-layer-header>[data-view-page]>.modal-header>*{animation:none}.ui-dialog-content>.modal-layer-header>[data-view-page].reverse>.modal-header>*{animation-direction:reverse}.ui-dialog-content>.modal-layer-header>[data-view-page].center-to-left>.modal-header>.top-title{animation-name:dialog-center-to-left-header-title}.ui-dialog-content>.modal-layer-header>[data-view-page].right-to-center>.modal-header>.top-title{animation-name:dialog-right-to-center-header-title}.ui-dialog-content>.modal-layer-header>[data-view-page].center-to-left>.modal-header>[class*=widget-]{animation-name:dialog-center-to-left-header-title}.ui-dialog-content>.modal-layer-header>[data-view-page].right-to-center>.modal-header>[class*=widget-]{animation-name:dialog-right-to-center-header-title}.ui-dialog-content>.modal-layer-header>[data-view-page].center-to-left>.modal-header>div{animation-name:dialog-center-to-left-header-icons}.ui-dialog-content>.modal-layer-header>[data-view-page].right-to-center>.modal-header>div{animation-name:dialog-right-to-center-header-icons}.ui-dialog-content>.modal-layer-body{max-height:calc(var(--100vh) - var(--dialog-header-height) - var(--dialog-layer-pageSelector) - var(--toolbar-height));border-radius:0 0 8px 8px;flex-grow:2}.ui-dialog-content.i-change-page>.modal-layer-body>[data-view-page]{background:var(--color-layout-front-1)}.ui-dialog-content>.modal-layer-body>[data-view-page].center-to-left{animation-name:dialog-center-to-left}.ui-dialog-content>.modal-layer-body>[data-view-page].right-to-center{animation-name:dialog-right-to-center}.ui-dialog-content .modal-footer .second_level{box-sizing:border-box;background:var(--color-layout-front-1);justify-content:center;align-items:center;width:100%;min-height:25px;display:flex}.ui-dialog-content .modal-footer .second_level input{width:100%;height:var(--top-forms-base-height);padding:var(--top-padding-1) var(--top-padding-3);box-sizing:border-box;border-radius:8px}.ui-dialog-content>.modal-layer-body>[data-view-page].i-load-data{pointer-events:none}.ui-dialog-content>.modal-layer-body>[data-view-page].i-load-data:before{content:\\\" \\\";z-index:100;width:0;height:4px;animation:top-loadbar var(--dialog-loading-duration) forwards;background:#378dc6;position:absolute;top:0;left:0}.ui-dialog-content.modal-expanded{width:100vw!important;height:calc(var(--100vh) + 10px)!important}.modal-header>[data-widget]{opacity:0;visibility:hidden;z-index:1;align-items:center;padding:0 8px;transition:opacity .3s;position:absolute;inset:0;overflow:hidden}.modal-header>[data-widget=search] div.cancel{opacity:0;transition:transform .3s,opacity .3s;transform:translate(100%)}[data-view-page].i-show-search .modal-header>:not([data-widget=search]){visibility:hidden}[data-view-page].i-show-search [data-widget=search]{visibility:visible;opacity:1}[data-view-page].i-show-search [data-widget=search] .cancel{opacity:1;transform:translate(0)}[data-view-page]>.modal-header>*{transition:opacity .3s}[data-view-page].i-show-search>.modal-header>div.buttons{opacity:0}.modal-layer .top-popup-wrapper{height:100%!important}@keyframes dialog-center-to-left-header-title{0%{opacity:1;transform:translate(0)}75%{opacity:0}to{opacity:0;transform:translate(-30%)}}@keyframes dialog-right-to-center-header-title{0%{opacity:0;transform:translate(100%)}25%{opacity:0}to{opacity:1;transform:translate(0)}}@keyframes dialog-center-to-left-header-icons{0%{opacity:1;transform:translate(0)}35%{opacity:0;transform:translate(-20%)}to{opacity:0;transform:translate(-20%)}}@keyframes dialog-right-to-center-header-icons{0%{opacity:0;transform:translate(20%)}65%{opacity:0;transform:translate(20%)}to{opacity:1;transform:translate(0)}}@keyframes dialog-center-to-left{0%{filter:brightness();transform:translate(0)}to{filter:brightness(.9);transform:translate(-30%)}}@keyframes dialog-right-to-center{0%{transform:translate(100%);box-shadow:0 0 10px #0000001a}to{transform:translate(0);box-shadow:0 0 10px #0003}}@media only screen and (max-width:1480px){.win_side_panel_opener{display:none}}@media only screen and (min-width:1480px){.ui-dialog-content.with_side_panel{box-shadow:0 0 6px #0003}.ui-dialog-content.with_side_panel .modal-layer-body{background:var(--color-layout-front-1)}[data-widget=side_panel]{--side_panel_width:calc((100vw - 900px) / 2 - 28px);box-sizing:border-box;background:var(--color-layout-front-1);max-width:var(--side_panel_width);top:calc(var(--dialog-header-height) + 1px + var(--dialog-layer-pageSelector));bottom:calc(var(--top-dialog-footer-height) + 1px);z-index:-1;padding:18px;transition:all .2s;display:block;position:absolute}.win_side_panel_left{border-radius:8px 0 0 8px;right:100%}.win_side_panel_right{border-radius:0 8px 8px 0;left:100%}.win_side_panel_closed.win_side_panel_left{right:calc(100% - var(--side_panel_width))}.win_side_panel_closed.win_side_panel_right{left:calc(100% - var(--side_panel_width))}[data-widget=side_panel] .template{display:block}[data-widget=side_panel] .template>.header,[data-widget=side_panel] .template>.footer{display:flex}.win_side_panel_opener{cursor:pointer;background:var(--color-cyan);color:#fff;padding:4px;position:absolute;top:20px}.win_side_panel_closed .win_side_panel_opener:not(:hover){opacity:.3}.win_side_panel_left .win_side_panel_opener{border-radius:4px 0 0 4px;right:100%}.win_side_panel_right .win_side_panel_opener{border-radius:0 6px 6px 0;left:100%}}@media only screen and (max-height:900px){html.with_dialog{background:#f1f1f1;overflow:hidden}.ui-dialog.me-tightly{border-radius:0;position:fixed;height:auto!important;top:0!important;bottom:0!important}.ui-dialog.me-tightly .ui-dialog-content{min-height:100%!important}.ui-dialog.me-tightly>div>.modal-body{top:var(--dialog-header-height);left:0;right:0;bottom:var(--dialog-header-height);position:absolute}.ui-dialog.me-tightly>div>.modal-body:last-child{bottom:0}.ui-dialog.me-tightly>div>.modal-footer{position:absolute;bottom:0;left:0;right:0}.ui-dialog.me-tightly .modal-layer-body{border-radius:0;min-height:0!important}.ui-dialog.me-tightly .modal-layer-body .modal-footer{min-height:unset}}\"), forms__4U0sLFk_esm_js_1.O.insertStyleToPage(\"html.with_dialog body{height:var(--100vh);overflow:hidden}.ui-widget-overlay{height:calc(100% - var(--toolbar-height))}.ui-dialog{border-radius:0;position:fixed;width:auto!important;height:auto!important;inset:0!important}.ui-dialog-content{width:100%!important;min-width:0!important;max-width:100%!important;height:100%!important}.modal-header>.top-title{text-align:center;font-size:14px}.modal-header>div.close{order:1;font-size:14px}.modal-header>div.close:before{content:\\\"\\\"}.modal-body:last-child,.modal-footer{bottom:0}.modal-footer .second_level{padding:10px 8px}.modal-layer-body{min-height:0!important}.ui-dialog-content>.modal-layer-body{border-radius:0}.modal-body,.modal-footer{padding-left:12px;padding-right:12px}.modal-footer .btn:last-child{margin-right:12px}.modal-body .inner{margin:0 -12px;padding:12px;position:relative}\", \"m\"), forms__4U0sLFk_esm_js_1.O.insertStyleToPage(\".modal-menu-opener{order:1!important}.modal-menu-opener:before{--top-icon-size:20px;--top-icon-color:#fff;--top-icon-width:var(--top-icon-size);background:var(--color-bg-primary-1);border-radius:50%;padding:3px;transition:transform .1s}.modal-menu-opener:hover:before{background:var(--color-bg-primary-2)}.modal-menu-opener.top-active:before{background:var(--color-bg-primary-2);transform:scale(.8)}.modal-layer .top-popup-wrapper{background:0 0;transition:background .3s;width:auto!important;margin:0!important;padding:0!important;top:0!important;left:0!important;right:0!important}.modal-layer .top-popup-wrapper>.top-popup[class],.modal-layer .top-popup-wrapper.with_notch>.top-popup[class]{opacity:1;border:none;border-radius:8px;flex-direction:column;max-width:100%;max-height:calc(100% - 24px);transition:transform .3s;display:flex;overflow:auto;transform:translateY(calc(-100% - 24px));margin:12px!important;inset:0 0 auto!important}.modal-layer .top-popup>.top-popup_header{background:var(--color-theme-50)}.modal-layer .top-theme-lite .top-popup>.top-popup_header .select{border:none}.modal-layer .top-theme-lite .top-popup>.top-popup_header .select .text{color:#fff}.modal-layer .top-theme-lite .top-popup>.top-popup_header .select .arrow{background:0 0}.modal-layer .top-popup-wrapper-shown:not(.top-popup-wrapper-closed){pointer-events:auto;background:#34495e40}@media only screen and (min-width:1480px){.ui-dialog-content.with_side_panel{box-shadow:0 0 6px #0003}.ui-dialog-content.with_side_panel .modal-layer-body{background:var(--color-layout-front-1)}[data-widget=side_panel]{--side_panel_width:calc((100vw - 900px) / 2 - 28px);box-sizing:border-box;background:var(--color-layout-front-1);max-width:var(--side_panel_width);z-index:-1;padding:18px;transition:all .2s;display:block;position:absolute;top:51px;bottom:51px}.win_side_panel_left{border-radius:8px 0 0 8px;right:100%}.win_side_panel_right{border-radius:0 8px 8px 0;left:100%}.win_side_panel_closed.win_side_panel_left{right:calc(100% - var(--side_panel_width))}.win_side_panel_closed.win_side_panel_right{left:calc(100% - var(--side_panel_width))}[data-widget=side_panel] .template{display:block}[data-widget=side_panel] .template>.header,[data-widget=side_panel] .template>.footer{display:flex}.win_side_panel_opener{cursor:pointer;background:var(--color-cyan);color:#fff;padding:4px;position:absolute;top:20px}.win_side_panel_closed .win_side_panel_opener:not(:hover){opacity:.3}.win_side_panel_left .win_side_panel_opener{border-radius:4px 0 0 4px;right:100%}.win_side_panel_right .win_side_panel_opener{border-radius:0 6px 6px 0;left:100%}}\", \"pc\"), forms__4U0sLFk_esm_js_1.O.insertStyleToPage(\"html{--top-dialog-width:auto;--top-dialog-height:auto}.top-dialog{max-width:100vw}.top-dialog .modal-layer-body{height:var(--top-dialog-height)}\"), forms__4U0sLFk_esm_js_1.O.insertStyleToPage(\".top-dialog{width:var(--top-dialog-width)!important}\", \"pc\");\n var h, g = !1, _ = (e) => !!e && typeof e == \"object\" && \"jquery\" in e, v = () => {\n $.extend($.ui.dialog.prototype.options, {\n focus: (e) => {\n e.target.focus(), $(\"[autofocus]\", e.target)[0]?.focus();\n },\n create: (e) => S(e.target),\n open: (e) => w(e.target),\n close: (e) => T(e.target),\n modal: !0,\n resizable: !1,\n closeOnEscape: !1,\n width: \"auto\",\n minHeight: 0\n }), $.ui.dialog.prototype._focusTabbable = $.noop, $.ui.dialog.prototype._moveToTopOriginal = $.ui.dialog.prototype._moveToTop, $.ui.dialog.prototype._moveToTop = function () {\n this._moveToTopOriginal();\n let e = $(this.element);\n e.trigger(\"dialogsMoveToTop\", [e]);\n }, m(), g = !0;\n }, y = (e) => {\n let t = {};\n return e.dataset?.modal === \"false\" && (t.modal = !1), e.dataset?.position && (t.position = JSON.parse(e.dataset.position)), t;\n }, b = (e) => document.getElementById(e), x = async (e, t, n) => {\n if (!e.startsWith(\"dialog_\"))\n return;\n let r = (0, utils_BtqYaMHp_esm_js_1.a)(e);\n if (r && (r.isOpened.value = !0, t !== void 0 && (r.pageActive.value = t), n !== void 0 && (r.pageActiveNext.value = n), await (0, vue_1.nextTick)(), n)) {\n let t = b(e);\n if (!t)\n return;\n t.querySelectorAll(`[data-view-page=\"${n}\"]`).length || await (0, system_js_1.waitWhile)(() => !t.querySelectorAll(`[data-view-page=\"${n}\"]`).length);\n }\n }, S = (e) => {\n let t = (0, dom_js_1.querySelectorAllArray)(e, \".modal-body\");\n t.forEach((e) => {\n (0, scroll_js_1.connectScrollShadow)(e);\n }), t.length && (utils_BtqYaMHp_esm_js_1.o.state.decoratorOnCreate?.(e), C(e));\n }, C = (e) => {\n $(e).on(\"aftershow.top-menu-popup\", \"[data-top-popup]\", (e, t) => {\n let n = t[0];\n utils_BtqYaMHp_esm_js_1.o.getPairPage(n)?.[1]?.prepend(n);\n });\n }, w = async (t) => {\n let n = t.dataset.viewPageActive, r = t.dataset.args ? t.dataset.args?.split(\":\") : [], i = window.innerWidth;\n forms__4U0sLFk_esm_js_1.O.state.documentClassModificators.set(\"top-dialog\", \"with_dialog\");\n let a = window.innerWidth - i;\n document.documentElement.scrollHeight > window.innerHeight && (document.querySelector(\"html\").style.marginRight = a + \"px\"), E(), (0, utils_BtqYaMHp_esm_js_1.a)(t.getAttribute(\"id\"))?.emit?.(\"open\", n, r);\n }, T = async (r) => {\n let i = r.getAttribute(\"id\"), a = r.dataset.viewPageActive;\n if (a) {\n let e = {\n vpn: utils_BtqYaMHp_esm_js_1.o.state.viewPageN,\n [\"view-\" + i]: null\n };\n e[\"view-\" + i] = null, (utils_BtqYaMHp_esm_js_1.o.state.viewPageN === 0 || utils_BtqYaMHp_esm_js_1.o.state.viewPageN === 1) && (e.vpn = null), (0, route_js_1.setHashs)(e, !1);\n }\n (0, dom_js_1.querySelectorAllArray)(document, \".ui-widget-overlay\").filter((e) => (0, dom_js_1.isVisible)(e)).length || (forms__4U0sLFk_esm_js_1.O.state.documentClassModificators.delete(\"top-dialog\"), document.querySelector(\"html\").style.marginRight = \"\"), $(r).trigger(\"viewAfterClose\", [$(r)]);\n let o = (0, utils_BtqYaMHp_esm_js_1.a)(i);\n o && (o.isOpened.value = !1, o.emit?.(\"close\", a), o.onCloseOnce &&= (o.onCloseOnce(o.props, a), void 0)), window.dispatchEvent(new Event(\"resize\"));\n }, E = () => {\n (0, dom_js_1.querySelectorAllArray)(document, \".ui-dialog\").filter((e) => (0, dom_js_1.isVisible)(e) && e.querySelector(\":scope > .ui-dialog-content\")).map((e) => e.querySelector(\":scope > .ui-dialog-content\")).forEach((e) => {\n if (!e.querySelector(\".modal-body\"))\n return;\n let t = e.closest(\".ui-dialog\"), n = y(e);\n n.position ??= { of: window }, $(e).dialog(\"option\", n), t.classList.remove(\"me-tightly\"), (t.clientHeight ?? 0) > window.innerHeight && t.classList.add(\"me-tightly\");\n });\n }, D = async (e, t) => {\n let n = /(\\w+)[=-]([\\w-]+)(?::([\\w.:-]+))?/g.exec(e);\n if (n) {\n let e = n[1], r = n[2], i = n[3], a = [];\n i && (a = i.split(\":\")), await O(e, r, a, t);\n }\n }, O = async (e, t, n, r, i) => {\n g || await new Promise((e, t) => {\n let n = setInterval(() => {\n g && (clearInterval(n), e());\n }, 10);\n }), await (0, vue_1.nextTick)();\n let a;\n if (typeof e == \"object\" ? (_(e) && (e = e?.[0]), a = e) : a = b(e), !a && typeof e == \"string\" && utils_BtqYaMHp_esm_js_1.o.state.load && (await utils_BtqYaMHp_esm_js_1.o.state.load(e), a = b(e), !a))\n throw Error(\"Dialog no exists: \" + e);\n if (!a)\n return;\n await k(a, t, n, r);\n let o = $(a);\n if (a?.classList.contains(\"ui-dialog-content\"))\n o.dialog(\"open\");\n else {\n let e = y(a);\n o.dialog(e);\n }\n i && i(o);\n }, k = async (e, r, o, s) => {\n _(e) && (e = e?.[0]), r === void 0 && (r = e.dataset.viewPageActive), o === void 0 && (o = e.dataset.args?.split(\":\") ?? []), r !== e.dataset.viewPageActive && F(e) && await (0, system_js_1.sleep)(100), await x(e.getAttribute(\"id\"), void 0, r);\n let c = (0, dom_js_1.querySelectorAllArray)(e, \".modal-layer\"), l = c.reduce((e, t) => {\n let n = t.querySelector(\":scope > .active\");\n return n && e.push(n), e;\n }, []), u = c.reduce((e, t) => {\n let n = t.querySelector(`:scope > [data-view-page=\"${r}\"]`);\n return n && e.push(n), e;\n }, []), d = o.join(\":\");\n if (s === void 0 && (s = \"next\", (u[0]?.dataset.order ?? 0) < (l[0]?.dataset.order ?? 0) && (s = \"prev\")), !u.length)\n return;\n if (e.dataset.viewPageActive = r, e.dataset.args = o?.join(\":\") ?? \"\", u[0].classList.contains(\"active\")) {\n u[0].dataset.viewPageArgs !== d && u.forEach((e) => {\n e.dataset.viewPageArgs = d;\n }), M(e, u, r, o), N(e, u, r, o);\n return;\n }\n u.forEach((e) => {\n e.dataset.viewPageArgs = d;\n }), l.forEach((e) => {\n e.querySelector(\".top-popup-wrapper\") && worker_D28QqQ45_esm_js_1.t.close(e.querySelector(\".top-popup-wrapper\"));\n });\n let f = u[0].closest(\".ui-dialog\");\n switch (f && !(0, dom_js_1.isVisible)(f) && (s = \"none\"), l.length || (s = \"none\"), (0, dom_js_1.isVisible)(u[0]) && (s = \"none\"), s) {\n case \"prev\":\n u.forEach((e) => {\n let t = e.parentNode?.querySelector(\":scope > .active\");\n t && e.parentNode?.insertBefore(e, t);\n }), l.forEach((e) => {\n e.classList.add(\"right-to-center\", \"reverse\");\n }), u.forEach((e) => {\n e.classList.add(\"center-to-left\", \"reverse\");\n });\n break;\n case \"next\":\n u.forEach((e) => {\n let t = e.parentNode?.querySelector(\":scope > .active\");\n t && e.parentNode?.insertBefore(e, t.nextSibling);\n }), l.forEach((e) => {\n e?.classList.add(\"center-to-left\");\n }), u.forEach((e) => {\n e.classList.add(\"right-to-center\");\n });\n break;\n }\n if (e.setAttribute(\"view-page-active\", r), l.forEach((e) => {\n e.classList.remove(\"active\");\n }), u.forEach((e) => {\n e.classList.add(\"active\");\n }), M(e, u, r, o), s) {\n e.classList.add(\"i-change-page\");\n let t = Number(window.getComputedStyle(u[0]).animationDuration.replace(\"s\", \"\")) * 1e3;\n h = setTimeout(function () {\n x(e.getAttribute(\"id\"), r, \"\"), F(e), N(e, u, r, o);\n }, t);\n }\n else\n await x(e.getAttribute(\"id\"), r, \"\"), N(e, u, r, o);\n }, A = (e) => {\n let t = (0, dom_js_1.querySelectorAllArray)(e, \".modal-layer\").reduce((e, t) => {\n let n = t.querySelector(\":scope > .active\");\n return n && e.push(n), e;\n }, []).reduce((e, t) => {\n let n = t.previousElementSibling;\n for (; n && !n.hasAttribute(\"data-view-page\");)\n n = n.previousElementSibling;\n return n && e.push(n), e;\n }, [])[0]?.dataset.viewPage;\n t ? k(e, t, void 0, \"prev\") : $(e).dialog(\"close\");\n }, j = /* @__PURE__ */ new Set(), M = (e, t, n, r) => {\n let i = e.getAttribute(\"id\") + t[0].dataset.viewPage + n + r.join();\n j.has(i) || (j.add(i), setTimeout(function () {\n j.delete(i), $(e).trigger(\"viewBeforeOpen\", [\n $(e),\n $(t),\n n,\n r\n ]);\n }));\n }, N = (e, t, n, r) => {\n setTimeout(function () {\n $(e).trigger(\"viewAfterOpen\", [\n $(e),\n $(t),\n n,\n r\n ]);\n });\n }, P = (e) => (_(e) && (e = e?.[0]), e.classList.contains(\"i-change-page\")), F = (e) => {\n if (!P(e))\n return !1;\n clearTimeout(h);\n let t = (0, dom_js_1.querySelectorAllArray)(e, \".modal-layer\"), r = e.dataset.viewPageActive;\n return e.classList.remove(\"i-change-page\"), t.forEach((e) => {\n e.querySelectorAll(\":scope > [data-view-page]\").forEach((e) => {\n e.classList.remove(\"center-to-left\", \"right-to-center\", \"reverse\", \"active\");\n });\n }), t.forEach((e) => {\n e.querySelector(`:scope > [data-view-page=\"${r}\"]`)?.classList.add(\"active\");\n }), !0;\n }, I = {\n getElDialogById: b,\n updatePageVue: x,\n recalcPositions: E,\n toViewDirty: D,\n toView: O,\n toViewPage: k,\n toPrevPage: A,\n setLoading: (e, n, r) => {\n _(e) && (e = e.toArray());\n let i = e.reduce((e, n) => (n.hasAttribute(\"data-view-page\") && (0, dom_js_1.isVisible)(n) && e.push(n), e), []);\n n ? (r !== void 0 && i.forEach((e) => {\n e.style.setProperty(\"--dialog-loading-duration\", r + \"s\");\n }), i.forEach((e) => {\n e.classList.add(\"i-load-data\");\n })) : (i.forEach((e) => {\n e.classList.remove(\"i-load-data\");\n }), i.forEach((e) => {\n e.style.setProperty(\"--dialog-loading-duration\", \"10s\");\n }));\n },\n isLoading: (e) => (_(e) && (e = e?.[0]), e.classList.contains(\"i-load-data\")),\n inAnimation: P,\n close: function (e) {\n let t = b(e);\n if (!t)\n return;\n let n = $(t);\n n.dialog(\"instance\") && n.dialog(\"close\");\n }\n };\n exports.TopDialogUtils = I;\n v();\n});\n//# sourceMappingURL=utils-Cou0pGI4.esm.js.map\n","/**\n * см. /.storybook/preview-head.html\n */\nexport default $;\n","import { TopDialogUtils } from './utils';\nimport { TopDialogWorker } from './worker';\nimport { isVisible, querySelectorAllArray, querySelectorVisible } from '@/core/utils/dom';\nimport { historySetState } from '@/core/utils/route';\nimport type { ElTopDialog, ElTopDialogWrapper } from '@/components/dialog/lib/types';\n\nlet inited = false;\n\n/**\n * Инициализация глобальных событий для диалоговых окон\n *\n * Производится один раз при подключении диалогового окна\n *\n * События не размонтируются\n */\nexport const initDialogGlobalEvents = () => {\n\tif (inited) return;\n\tinited = true;\n\n\t/**\n\t * Закрытие диалога по Esc\n\t */\n\tdocument.addEventListener('keydown', (e) => {\n\t\tif (e.key !== 'Escape') return;\n\t\tif (!e.target || !(e.target instanceof HTMLElement)) return;\n\n\t\tconst el = e.target;\n\n\t\t// событие произошло вне диалогового окна\n\t\tif (!el.closest('.ui-dialog')) return;\n\n\t\tif (el.contentEditable === 'true' || el.contentEditable === 'plaintext-only') return;\n\n\t\t// не закрывать окно при открытом TopPopup\n\t\tif (querySelectorVisible(document.documentElement, '.top-popup-wrapper')) return;\n\n\t\t// не закрывать окно при работе с jquery autocomplete\n\t\tif (el.classList.contains('autocomplete')) return;\n\n\t\t// не закрывать окно при открытом fancybox\n\t\tif (querySelectorVisible(document.documentElement, '.fancybox-container')) return;\n\n\t\tconst elDialogs = querySelectorAllArray<ElTopDialog>(document, '.ui-dialog-content').filter((elDialog) => {\n\t\t\treturn isVisible(elDialog);\n\t\t});\n\n\t\t$(elDialogs[elDialogs.length - 1]).dialog('close');\n\t});\n\n\t/**\n\t * Закрытие диалога по кнопке закрыть\n\t */\n\tdocument.addEventListener('click', (e) => {\n\t\t// // навигация без истории\n\t\t// var $dialog = $(this).closest('.ui-dialog-content');\n\t\t// var viewName = $dialog.attr('id');\n\t\t// var pageName = getHash('view-' + viewName);\n\t\t// if (!pageName) {\n\t\t// \ttoPrevPage($dialog);\n\t\t//\n\t\t// \treturn;\n\t\t// }\n\t\t//\n\t\t// // навигация по истории\n\t\t// if (Core.state.isMobile && history.length > 1 && $(this).closest('.modal-layer').length) {\n\t\t// \tvar href = location.href;\n\t\t//\n\t\t// \thistory.go(-1);\n\t\t//\n\t\t// \tsetTimeout(() => {\n\t\t// \t\t// это первая страница в истории вкладки браузера\n\t\t// \t\tif (href === location.href) $(e.target).closest('.ui-dialog-content').dialog('close');\n\t\t// \t});\n\t\t// } else {\n\t\t// \t$(this).closest('.ui-dialog-content').dialog('close');\n\t\t// }\n\n\t\tif (!(e.target instanceof HTMLElement)) return;\n\n\t\tconst el = e.target.closest('[data-action=\"top-dialog-close\"]') as HTMLElement | null;\n\t\tif (!el) return;\n\n\t\te.preventDefault();\n\n\t\tconst elDialog = el.closest<ElTopDialog>('.ui-dialog-content');\n\t\tif (!elDialog) return;\n\n\t\t// если к кнопке привязана ссылка, диалоговое окно не нужно закрывать\n\t\tconst toView = el.dataset.toView;\n\n\t\tif (toView == 'toPrevPage()') {\n\t\t\tTopDialogUtils.toPrevPage(elDialog);\n\n\t\t\treturn;\n\t\t}\n\n\t\tif (toView) {\n\t\t\tconst viewNameAndPageLink = toView.split('-');\n\t\t\tconst viewName = viewNameAndPageLink.shift();\n\t\t\tconst pageLink = viewNameAndPageLink.join('-');\n\n\t\t\tif (!viewName) return;\n\n\t\t\tconst elDialog = TopDialogUtils.getElDialogById(viewName);\n\t\t\tif (!elDialog) return;\n\n\t\t\tconst elToPages = querySelectorAllArray(elDialog, `[data-view-page=\"${pageLink}\"]`);\n\t\t\tif (!elToPages) return;\n\n\t\t\tif (!isVisible(elToPages[0])) {\n\t\t\t\tconst hash = TopDialogWorker.genViewPageHash(toView, 'prev');\n\n\t\t\t\t// // не убирает кнопку \"Вперед\" в браузере\n\t\t\t\t// history.replaceState(null, '', hash);\n\t\t\t\t// toViewDirty(toView, 'prev');\n\n\t\t\t\t// // добавляет текущую страницу в историю браузера\n\t\t\t\thistorySetState(false, hash);\n\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tconst $dialog = $(elDialog);\n\n\t\t$dialog.dialog('close');\n\t});\n\n\t/**\n\t * Все submit должны обрабатываться через js\n\t */\n\tdocument.addEventListener('submit', (e) => {\n\t\tconst elForm = e.target as HTMLElement;\n\n\t\tif (elForm.matches('.modal-body > form') || elForm.matches('.modal-layer-body > form')) {\n\t\t\te.preventDefault();\n\t\t}\n\t});\n\n\t/**\n\t * Выполнение действия по нажатию Enter\n\t *\n\t * @todo Убрать `.searcher`\n\t */\n\tdocument.addEventListener('keypress', (e) => {\n\t\tif (!(e.target instanceof HTMLElement)) return;\n\n\t\tconst eventTarget = e.target;\n\n\t\tconst elModalBody = eventTarget.closest('.ui-dialog .modal-body');\n\t\tif (!elModalBody) return;\n\n\t\tconst isInput =\n\t\t\teventTarget.matches('input:not(.searcher), textarea:not(.searcher), select:not(.searcher), button:not(.searcher)')\n\t\t\t|| eventTarget.hasAttribute('contenteditable');\n\t\tif (!isInput) return;\n\n\t\t// if (e.keyCode !== 10 && e.key !== 'ENTER') return;\n\t\tif (e.key !== 'Enter') return;\n\n\t\t// не выполнять submit действий при работе с jquery autocomplete\n\t\tif (eventTarget.classList.contains('autocomplete')) {\n\t\t\te.preventDefault();\n\n\t\t\treturn;\n\t\t}\n\n\t\tif (eventTarget.tagName === 'TEXTAREA') {\n\t\t\tif (!e.ctrlKey && !e.metaKey) return;\n\n\t\t\tconst elForm = eventTarget.closest('form');\n\n\t\t\tif (elForm) {\n\t\t\t\t// Find visible submit buttons\n\t\t\t\tconst elSubmitButton = querySelectorAllArray(elForm, 'button[type=\"submit\"]')\n\t\t\t\t\t.concat(querySelectorAllArray(elForm, 'input[type=\"submit\"]'))\n\t\t\t\t\t.find((elSubmitButton) => {\n\t\t\t\t\t\treturn isVisible(elSubmitButton);\n\t\t\t\t\t});\n\n\t\t\t\telSubmitButton?.click();\n\t\t\t}\n\t\t}\n\t});\n\n\t/**\n\t * Закрытие диалога по клику вне окна\n\t */\n\tdocument.addEventListener('click', function (event) {\n\t\tif (!(event.target instanceof HTMLElement)) return;\n\n\t\tconst eventTarget = event.target;\n\n\t\tif (!eventTarget.classList.contains('ui-widget-overlay')) return;\n\n\t\tlet elDialogWrapperWithTopZIndex: ElTopDialogWrapper | undefined;\n\t\tlet topZIndex = 0;\n\n\t\tconst elDialogWrapperVisibles = querySelectorAllArray<ElTopDialogWrapper>(document, '.ui-dialog').filter((elDialogWrapper) => {\n\t\t\treturn isVisible(elDialogWrapper);\n\t\t});\n\n\t\telDialogWrapperVisibles.forEach((elDialogWrapper) => {\n\t\t\tconst zIndex = Number(window.getComputedStyle(elDialogWrapper).zIndex);\n\t\t\tif (zIndex < topZIndex) return;\n\n\t\t\telDialogWrapperWithTopZIndex = elDialogWrapper;\n\t\t\ttopZIndex = zIndex;\n\t\t});\n\n\t\tif (elDialogWrapperWithTopZIndex) {\n\t\t\tconst elDialog = elDialogWrapperWithTopZIndex.querySelector('.ui-dialog-content');\n\n\t\t\t$(elDialog).dialog('close');\n\t\t}\n\t});\n\n\twindow.addEventListener('resize', TopDialogUtils.recalcPositions);\n\tTopDialogUtils.recalcPositions();\n};\n","import 'jquery';\nimport { nextTick } from 'vue';\n\nimport Core from '@/core/core/core';\nimport { TopPopupWorker } from '@/components/popup/worker';\nimport { sleep, waitWhile } from '@/core/utils/system';\nimport { setHashs } from '@/core/utils/route';\nimport { connectScrollShadow } from '@/core/utils/scroll';\n\nimport type { ElTopDialog, ElTopDialogBody, ElTopDialogModalLayer, ElTopDialogPage, ElTopDialogWrapper, MoveDirection } from './types';\nimport { TopDialogWorker } from './worker';\nimport { initDialogGlobalEvents } from './utils.globalEvents';\nimport { getDialogWorker } from '../dialog/dialogs/dialogs.vue';\n\nimport css from '../dialog/style/dialog.css?inline';\nimport cssM from '../dialog/style/dialog.m.css?inline';\nimport cssPC from '../dialog/style/dialog.pc.css?inline';\nimport cssModern from '../dialog/style/modern/dialog.css?inline';\nimport cssModernPC from '../dialog/style/modern/dialog.pc.css?inline';\nimport { isVisible, querySelectorAllArray } from '@/core/utils/dom';\n\nCore.insertStyleToPage(css);\nCore.insertStyleToPage(cssM, 'm');\nCore.insertStyleToPage(cssPC, 'pc');\nCore.insertStyleToPage(cssModern);\nCore.insertStyleToPage(cssModernPC, 'pc');\n\nlet timerClearAnimation: NodeJS.Timeout;\nlet isInited = false;\n\n/**\n * Является ли элемент JQuery<HTMLElement>\n */\nconst isElJQuery = (el: JQuery<HTMLElement> | HTMLElement | HTMLElement[]) => {\n\treturn !!el && typeof el === 'object' && 'jquery' in el;\n};\n\nconst init = () => {\n\t$.extend($.ui.dialog.prototype.options, {\n\t\tfocus: (e: any) => {\n\t\t\te.target.focus();\n\n\t\t\t$('[autofocus]', e.target)[0]?.focus();\n\n\t\t\t// setTimeout(function () {\n\t\t\t// \tif ($('[autofocus]', e.target).length) return;\n\t\t\t// \t$('.modal-footer button:first, .modal-body :input:first', e.target).eq(0).focus();\n\t\t\t//\n\t\t\t// \t// fix пропадающего autocomplete при нажатии на scroll в autocomplete\n\t\t\t// \t$(e.target).add($(e.target).closest('.ui-dialog')).removeAttr('tabindex');\n\t\t\t// });\n\t\t},\n\t\tcreate: (e: any) => onCreate(e.target),\n\t\topen: (e: any) => onOpen(e.target),\n\t\tclose: (e: any) => onClose(e.target),\n\t\tmodal: true,\n\t\tresizable: false,\n\t\tcloseOnEscape: false,\n\t\twidth: 'auto',\n\t\tminHeight: 0,\n\t});\n\n\t$.ui.dialog.prototype._focusTabbable = $.noop;\n\n\t$.ui.dialog.prototype._moveToTopOriginal = $.ui.dialog.prototype._moveToTop;\n\t$.ui.dialog.prototype._moveToTop = function () {\n\t\tthis._moveToTopOriginal();\n\n\t\tconst $dialog = $(this.element);\n\t\t$dialog.trigger('dialogsMoveToTop', [$dialog]);\n\t};\n\n\tinitDialogGlobalEvents();\n\n\tisInited = true;\n};\n\n/**\n * Получить настройки диалогового окна из Vue компонента\n */\nconst genVueOptions = (elDialog: ElTopDialog) => {\n\tconst options: {\n\t\tmodal?: boolean,\n\t\tposition?: any,\n\t} = {};\n\n\tif (elDialog.dataset?.modal === 'false') options.modal = false;\n\tif (elDialog.dataset?.position) options.position = JSON.parse(elDialog.dataset.position);\n\n\treturn options;\n};\n\nconst getElDialogById = (id: string) => {\n\treturn <ElTopDialog | null>document.getElementById(id);\n};\n\n/**\n * Сменить состояние диалогового окна Vue\n */\nconst updatePageVue = async (dialogId: string, pageName?: string, pageNameNext?: string) => {\n\tif (!dialogId.startsWith('dialog_')) return;\n\n\tconst dialog = getDialogWorker(dialogId);\n\tif (!dialog) return;\n\n\tdialog.isOpened.value = true;\n\tif (pageName !== undefined) dialog.pageActive.value = pageName;\n\tif (pageNameNext !== undefined) dialog.pageActiveNext.value = pageNameNext;\n\n\tawait nextTick();\n\n\tif (pageNameNext) {\n\t\tconst elDialog = getElDialogById(dialogId);\n\t\tif (!elDialog) return;\n\n\t\tconst elNextpages = elDialog.querySelectorAll(`[data-view-page=\"${pageNameNext}\"]`);\n\n\t\tif (!elNextpages.length) {\n\t\t\tawait waitWhile(() => !elDialog.querySelectorAll(`[data-view-page=\"${pageNameNext}\"]`).length);\n\t\t}\n\t}\n};\n\n/**\n * Callback for jQuery dialog onCreate\n */\nconst onCreate = (elDialog: ElTopDialog) => {\n\tconst elsDialogBodies = querySelectorAllArray(elDialog, '.modal-body');\n\telsDialogBodies.forEach((elDialogBody) => {\n\t\tconnectScrollShadow(elDialogBody);\n\t});\n\n\tif (!elsDialogBodies.length) return;\n\n\tTopDialogWorker.state.decoratorOnCreate?.(elDialog);\n\n\tinitPopup(elDialog);\n};\n\n/**\n * Инициирование событий TopPopup в диалоговом окне\n */\nconst initPopup = (elDialog: HTMLElement) => {\n\t$(elDialog).on('aftershow.top-menu-popup', '[data-top-popup]', (_e, $popup) => {\n\t\t// перенести popup в корневой элемент страницы диалогового окна\n\t\tconst elPopup = $popup[0];\n\n\t\t// перенести popup в корневой элемент страницы диалогового окна\n\t\tconst elPageContents = TopDialogWorker.getPairPage(elPopup);\n\t\telPageContents?.[1]?.prepend(elPopup);\n\t});\n};\n\n/**\n * Callback for jQuery dialog onOpen\n */\nconst onOpen = async (elDialog: ElTopDialog) => {\n\tconst pageName = elDialog.dataset.viewPageActive;\n\tconst args = elDialog.dataset.args ? elDialog.dataset.args?.split(':') : [];\n\n\tconst w1 = window.innerWidth;\n\n\tCore.state.documentClassModificators.set('top-dialog', 'with_dialog');\n\n\tconst w2 = window.innerWidth;\n\n\tconst scrollBarWidth = w2 - w1;\n\tif (document.documentElement.scrollHeight > window.innerHeight) document.querySelector('html')!.style.marginRight = scrollBarWidth + 'px';\n\n\trecalcPositions();\n\n\tconst dialog = getDialogWorker(elDialog.getAttribute('id')!);\n\tdialog?.emit?.('open', pageName, args);\n};\n\n/**\n * Callback for jQuery dialog onClose\n */\nconst onClose = async (elDialog: ElTopDialog) => {\n\tconst viewName = elDialog.getAttribute('id');\n\tconst pageName = elDialog.dataset.viewPageActive;\n\n\tif (pageName) {\n\t\tconst hashData = {\n\t\t\tvpn: TopDialogWorker.state.viewPageN as number | null,\n\t\t\t['view-' + viewName]: null,\n\t\t};\n\t\thashData['view-' + viewName] = null;\n\n\t\tif (TopDialogWorker.state.viewPageN === 0 || TopDialogWorker.state.viewPageN === 1) {\n\t\t\thashData.vpn = null;\n\t\t}\n\n\t\tsetHashs(hashData, false);\n\t}\n\n\tconst elUiWidgetOverlayVisibles = querySelectorAllArray(document, '.ui-widget-overlay').filter((el) => {\n\t\treturn isVisible(el);\n\t});\n\n\tif (!elUiWidgetOverlayVisibles.length) {\n\t\tCore.state.documentClassModificators.delete('top-dialog');\n\n\t\tdocument.querySelector('html')!.style.marginRight = '';\n\t}\n\n\t$(elDialog).trigger('viewAfterClose', [$(elDialog)]);\n\n\tconst dialog = getDialogWorker(viewName);\n\n\tif (dialog) {\n\t\tdialog.isOpened.value = false;\n\t\tdialog.emit?.('close', pageName);\n\n\t\tif (dialog.onCloseOnce) {\n\t\t\tdialog.onCloseOnce(dialog.props, pageName);\n\t\t\tdialog.onCloseOnce = undefined;\n\t\t}\n\t}\n\n\t// после закрытия диалога может потребоваться пересчет позиций элементов\n\twindow.dispatchEvent(new Event('resize'));\n};\n\n/**\n * Пересчитать положения и размеры открытых диалоговых окон\n */\nconst recalcPositions = () => {\n\tconst elDialogVisibilityes = querySelectorAllArray(document, '.ui-dialog').filter((el) => {\n\t\treturn isVisible(el) && el.querySelector<ElTopDialog>(':scope > .ui-dialog-content');\n\t}).map((el) => {\n\t\treturn el.querySelector<ElTopDialog>(':scope > .ui-dialog-content')!;\n\t});\n\n\telDialogVisibilityes.forEach((elDialog) => {\n\t\tconst elDialogBody = elDialog.querySelector<ElTopDialogBody>('.modal-body');\n\t\tif (!elDialogBody) return;\n\n\t\tconst elDialogWrapper = elDialog.closest('.ui-dialog');\n\n\t\tconst options = genVueOptions(elDialog);\n\n\t\toptions.position ??= { of: window };\n\n\t\tconst $dialog = $(elDialog);\n\t\t$dialog.dialog('option', options);\n\n\t\telDialogWrapper.classList.remove('me-tightly');\n\t\tif ((elDialogWrapper.clientHeight ?? 0) > window.innerHeight) elDialogWrapper.classList.add('me-tightly');\n\t});\n};\n\n/**\n * Переход к view page по неразобранной ссылке в формате: {viewName}-{pageName}[:args]\n */\nconst toViewDirty = async (toViewPageName: string, moveDirection?: MoveDirection) => {\n\tconst regexp = /(\\w+)[=-]([\\w-]+)(?::([\\w.:-]+))?/g;\n\tconst toViewParts = regexp.exec(toViewPageName);\n\tif (toViewParts) {\n\t\tconst viewName = toViewParts[1];\n\t\tconst pageName = toViewParts[2];\n\t\tconst argsString = toViewParts[3];\n\n\t\tlet args: string[] = [];\n\t\tif (argsString) args = argsString.split(':');\n\n\t\tawait toView(viewName, pageName, args, moveDirection);\n\t}\n};\n\n/**\n * Открыть диалоговое окно, возможно указать нужную страницу\n * @param viewNameOrElDialog - id страницы окна или элемент окна\n * @param pageName - имя страницы\n * @param args - аргументы, набор проивзольных параметров, которые могут обрабатываться каждым окном по своему\n * @param moveDirection\n * @param callback - функция, которая будет запущена после октытия страницы\n */\nconst toView = async (\n\tviewNameOrElDialog: ElTopDialog | JQuery<ElTopDialog> | string,\n\tpageName?: string,\n\targs?: string[],\n\tmoveDirection?: MoveDirection,\n\tcallback?: (dialog: JQuery<ElTopDialog>) => void,\n) => {\n\tif (!isInited) {\n\t\tawait new Promise<void>((resolve, _reject) => {\n\t\t\tconst timer = setInterval(() => {\n\t\t\t\tif (!isInited) return;\n\n\t\t\t\tclearInterval(timer);\n\n\t\t\t\tresolve();\n\t\t\t}, 10);\n\t\t});\n\t}\n\n\tawait nextTick();\n\n\tlet elDialog: ElTopDialog | null;\n\tif (typeof (viewNameOrElDialog) === 'object') {\n\t\tif (isElJQuery(viewNameOrElDialog)) viewNameOrElDialog = viewNameOrElDialog?.[0]; // todo: убрать после переписки jquery на сайте\n\n\t\telDialog = viewNameOrElDialog;\n\t} else {\n\t\telDialog = getElDialogById(viewNameOrElDialog);\n\t}\n\n\t// Диалоговое окно еще не загружено\n\tif (!elDialog && typeof viewNameOrElDialog === 'string' && TopDialogWorker.state.load) {\n\t\tawait TopDialogWorker.state.load(viewNameOrElDialog);\n\n\t\telDialog = getElDialogById(viewNameOrElDialog);\n\t\tif (!elDialog) {\n\t\t\tthrow new Error('Dialog no exists: ' + viewNameOrElDialog);\n\t\t}\n\t}\n\n\tif (!elDialog) return;\n\n\tawait toViewPage(elDialog, pageName, args, moveDirection);\n\n\tconst $dialog = $(elDialog);\n\n\tif (elDialog?.classList.contains('ui-dialog-content')) {\n\t\t// var zIndexMax = 0;\n\t\t// $.map($('.ui-dialog'), function (el) {\n\t\t// \tvar zIndex = $(el).css('z-index') * 1;\n\t\t// \tif (zIndex > zIndexMax) zIndexMax = zIndex;\n\t\t// });\n\t\t//\n\t\t// if ($dialog.is(':hidden')) $dialog.dialog('open');\n\t\t//\n\t\t// var $dialogWrapper = $dialog.parent();\n\t\t// var $dialogOverlay = $dialogWrapper.next();\n\t\t//\n\t\t// if ($dialogWrapper.css('z-index') * 1 < zIndexMax) {\n\t\t// \t$dialogWrapper.css('z-index', zIndexMax + 2);\n\t\t// \t$dialogOverlay.css('z-index', zIndexMax + 1);\n\t\t// }\n\n\t\t$dialog.dialog('open');\n\t} else {\n\t\tconst options = genVueOptions(elDialog);\n\n\t\t$dialog.dialog(options);\n\t}\n\n\tif (callback) callback($dialog);\n};\n\nconst toViewPage = async (elDialog: ElTopDialog | JQuery<ElTopDialog>, pageName?: string, args?: string[], moveDirection?: MoveDirection) => {\n\t// todo: убрать после переписки jquery на сайте\n\tif (isElJQuery(elDialog)) elDialog = elDialog?.[0];\n\n\tif (pageName === undefined) pageName = elDialog.dataset.viewPageActive;\n\tif (args === undefined) args = elDialog.dataset.args?.split(':') ?? [];\n\n\tif (pageName !== elDialog.dataset.viewPageActive) {\n\t\tconst stopped = stopAnimations(elDialog);\n\t\tif (stopped) await sleep(100);\n\t}\n\n\tawait updatePageVue(elDialog.getAttribute('id') as string, undefined, pageName);\n\n\tconst elModalLayers = querySelectorAllArray<ElTopDialogModalLayer>(elDialog, '.modal-layer');\n\tconst elCurrentPages = elModalLayers.reduce<ElTopDialogPage[]>((acc, elModalLayer) => {\n\t\tconst elCurrentPage = elModalLayer.querySelector<ElTopDialogPage>(':scope > .active');\n\t\tif (elCurrentPage) {\n\t\t\tacc.push(elCurrentPage);\n\t\t}\n\n\t\treturn acc;\n\t}, []);\n\n\tconst elNextPages = elModalLayers.reduce<ElTopDialogPage[]>((acc, elModalLayer) => {\n\t\tconst elNextPage = elModalLayer.querySelector<ElTopDialogPage>(`:scope > [data-view-page=\"${pageName}\"]`);\n\t\tif (elNextPage) {\n\t\t\tacc.push(elNextPage);\n\t\t}\n\n\t\treturn acc;\n\t}, []);\n\n\tconst argsString = args.join(':');\n\n\tif (moveDirection === undefined) {\n\t\tmoveDirection = 'next';\n\t\tif ((elNextPages[0]?.dataset.order ?? 0) < (elCurrentPages[0]?.dataset.order ?? 0)) moveDirection = 'prev';\n\t}\n\n\tif (!elNextPages.length) return;\n\n\telDialog.dataset.viewPageActive = pageName;\n\telDialog.dataset.args = args?.join(':') ?? '';\n\n\t// запрашиваемая страница уже открыта\n\tif (elNextPages[0].classList.contains('active')) {\n\t\tif (elNextPages[0].dataset.viewPageArgs !== argsString) {\n\t\t\telNextPages.forEach((elNextPage) => {\n\t\t\t\telNextPage.dataset.viewPageArgs = argsString;\n\t\t\t});\n\n\t\t\t// dialogs.beforeOpenViewPage($dialog, $nextPage, pageName, args);\n\t\t\t// dialogs.afterOpenViewPage($dialog, $nextPage, pageName, args);\n\t\t}\n\n\t\tbeforeOpenViewPage(elDialog, elNextPages, pageName, args);\n\t\tafterOpenViewPage(elDialog, elNextPages, pageName, args);\n\n\t\treturn;\n\t}\n\n\telNextPages.forEach((elNextPage) => {\n\t\telNextPage.dataset.viewPageArgs = argsString;\n\t});\n\n\telCurrentPages.forEach((elCurrentPage) => {\n\t\tif (elCurrentPage.querySelector('.top-popup-wrapper')) {\n\t\t\tTopPopupWorker.close(elCurrentPage.querySelector('.top-popup-wrapper')!);\n\t\t}\n\t});\n\n\tconst elDialogWrapper = elNextPages[0].closest<ElTopDialogWrapper>('.ui-dialog');\n\n\tif (elDialogWrapper && !isVisible(elDialogWrapper)) moveDirection = 'none';\n\tif (!elCurrentPages.length) moveDirection = 'none';\n\tif (isVisible(elNextPages[0])) moveDirection = 'none';\n\n\tswitch (moveDirection) {\n\t\tcase 'prev': {\n\t\t\telNextPages.forEach((elNextPage) => {\n\t\t\t\tconst elActive = elNextPage.parentNode?.querySelector(':scope > .active');\n\t\t\t\tif (elActive) elNextPage.parentNode?.insertBefore(elNextPage, elActive);\n\t\t\t});\n\n\t\t\telCurrentPages.forEach((elCurrentPage) => {\n\t\t\t\telCurrentPage.classList.add('right-to-center', 'reverse');\n\t\t\t});\n\n\t\t\telNextPages.forEach((elNextPage) => {\n\t\t\t\telNextPage.classList.add('center-to-left', 'reverse');\n\t\t\t});\n\n\t\t\tbreak;\n\t\t}\n\t\tcase 'next': {\n\t\t\telNextPages.forEach((elNextPage) => {\n\t\t\t\tconst elActive = elNextPage.parentNode?.querySelector(':scope > .active');\n\t\t\t\tif (elActive) elNextPage.parentNode?.insertBefore(elNextPage, elActive.nextSibling);\n\t\t\t});\n\n\t\t\telCurrentPages.forEach((elCurrentPage) => {\n\t\t\t\telCurrentPage?.classList.add('center-to-left');\n\t\t\t});\n\n\t\t\telNextPages.forEach((elNextPage) => {\n\t\t\t\telNextPage.classList.add('right-to-center');\n\t\t\t});\n\n\t\t\tbreak;\n\t\t}\n\t}\n\n\telDialog.setAttribute('view-page-active', pageName);\n\n\telCurrentPages.forEach((elCurrentPage) => {\n\t\telCurrentPage.classList.remove('active');\n\t});\n\n\telNextPages.forEach((elNextPage) => {\n\t\telNextPage.classList.add('active');\n\t});\n\n\tbeforeOpenViewPage(elDialog, elNextPages, pageName, args);\n\n\tif (moveDirection) {\n\t\telDialog.classList.add('i-change-page');\n\n\t\tconst delay = Number(window.getComputedStyle(elNextPages[0]).animationDuration.replace('s', '')) * 1000;\n\n\t\ttimerClearAnimation = setTimeout(function () {\n\t\t\tupdatePageVue(elDialog.getAttribute('id'), pageName, '');\n\t\t\tstopAnimations(elDialog);\n\t\t\tafterOpenViewPage(elDialog, elNextPages, pageName, args);\n\t\t}, delay);\n\t} else {\n\t\tawait updatePageVue(elDialog.getAttribute('id'), pageName, '');\n\t\tafterOpenViewPage(elDialog, elNextPages, pageName, args);\n\t}\n};\n\n/**\n * К предыдущему представлению\n */\nconst toPrevPage = (elDialog: ElTopDialog) => {\n\tconst elModalLayers = querySelectorAllArray<ElTopDialogModalLayer>(elDialog, '.modal-layer');\n\tconst elCurrentPages = elModalLayers.reduce<ElTopDialogPage[]>((acc, elModalLayer) => {\n\t\tconst elCurrentPage = elModalLayer.querySelector<ElTopDialogPage>(':scope > .active');\n\n\t\tif (elCurrentPage) {\n\t\t\tacc.push(elCurrentPage);\n\t\t}\n\n\t\treturn acc;\n\t}, []);\n\n\tconst elPrevPages = elCurrentPages.reduce<ElTopDialogPage[]>((acc, elCurrentPage) => {\n\t\tlet elPrevPage = elCurrentPage.previousElementSibling as ElTopDialogPage | null;\n\t\twhile (elPrevPage && !elPrevPage.hasAttribute('data-view-page')) {\n\t\t\telPrevPage = elPrevPage.previousElementSibling as ElTopDialogPage | null;\n\t\t}\n\n\t\tif (elPrevPage) acc.push(elPrevPage);\n\n\t\treturn acc;\n\t}, []);\n\n\tconst prevPageName = (elPrevPages[0])?.dataset.viewPage;\n\n\tif (prevPageName) {\n\t\tvoid toViewPage(elDialog, prevPageName, undefined, 'prev');\n\t} else {\n\t\tconst $dialog = $(elDialog);\n\t\t$dialog.dialog('close');\n\t}\n};\n\n/**\n * Для обработки событий вне vue\n */\nconst beforeOpenViewPageTimers = new Set();\nconst beforeOpenViewPage = (elDialog: ElTopDialog, elPages: ElTopDialogPage[], pageName: string, args: string[]) => {\n\t// группировка цепочки событий\n\t// запрос на открытие страницы может выполняться несколько раз, чаще такое может быть при открытии, загрузке и переходе сразу к нужной странице\n\tconst eventKey = elDialog.getAttribute('id') + elPages[0].dataset.viewPage + pageName + args.join();\n\n\tif (beforeOpenViewPageTimers.has(eventKey)) return;\n\tbeforeOpenViewPageTimers.add(eventKey);\n\n\tsetTimeout(function () {\n\t\tbeforeOpenViewPageTimers.delete(eventKey);\n\n\t\t$(elDialog).trigger('viewBeforeOpen', [$(elDialog), $(elPages), pageName, args]);\n\t});\n};\n\n/**\n * Для обработки событий вне vue\n */\nconst afterOpenViewPage = (elDialog: ElTopDialog, elPages: ElTopDialogPage[], pageName: string, args: string[]) => {\n\tsetTimeout(function () {\n\t\t$(elDialog).trigger('viewAfterOpen', [$(elDialog), $(elPages), pageName, args]);\n\t});\n};\n\n/**\n * Получить состояние: Диалоговое окно находится в состоянии смены страницы\n */\nconst inAnimation = (elDialog: ElTopDialog | JQuery<ElTopDialog>) => {\n\tif (isElJQuery(elDialog)) elDialog = elDialog?.[0]; // todo: убрать после переписки jquery на сайте\n\n\treturn elDialog.classList.contains('i-change-page');\n};\n\n/**\n * Остановить анимацию смены страницы\n *\n * @returns Вернет true, если анимация производилась и была остановлена\n */\nconst stopAnimations = (elDialog: ElTopDialog) => {\n\tif (!inAnimation(elDialog)) return false;\n\n\tclearTimeout(timerClearAnimation);\n\n\tconst elModalLayers = querySelectorAllArray(elDialog, '.modal-layer');\n\n\tconst pageName = elDialog.dataset.viewPageActive;\n\telDialog.classList.remove('i-change-page');\n\n\telModalLayers.forEach((elModalLayer) => {\n\t\telModalLayer.querySelectorAll(':scope > [data-view-page]').forEach((el) => {\n\t\t\tel.classList.remove('center-to-left', 'right-to-center', 'reverse', 'active');\n\t\t});\n\t});\n\n\telModalLayers.forEach((elModalLayer) => {\n\t\telModalLayer.querySelector(`:scope > [data-view-page=\"${pageName}\"]`)?.classList.add('active');\n\t});\n\n\treturn true;\n};\n\n/**\n * Закрыть диалоговое окно\n */\nconst close = function (dialogId: string) {\n\tconst elDialog = getElDialogById(dialogId);\n\tif (!elDialog) return;\n\n\tconst $dialog = $(elDialog);\n\n\tif (!$dialog.dialog('instance')) return;\n\n\t$dialog.dialog('close');\n};\n\n/**\n * Управление props.isLoading\n */\nconst setLoading = (elPages: ElTopDialogPage[] | JQuery<ElTopDialogPage>, isLoading: boolean, duration?: number) => {\n\tif (isElJQuery(elPages)) elPages = elPages.toArray(); // todo: убрать после переписки jquery на сайте\n\n\tconst elPagesVisibleds = elPages.reduce<ElTopDialogPage[]>((acc, elPage) => {\n\t\tif (elPage.hasAttribute('data-view-page') && isVisible(elPage)) acc.push(elPage);\n\n\t\treturn acc;\n\t}, []);\n\n\tif (isLoading) {\n\t\tif (duration !== undefined) {\n\t\t\telPagesVisibleds.forEach((elPagesVisibled) => {\n\t\t\t\telPagesVisibled.style.setProperty('--dialog-loading-duration', duration + 's');\n\t\t\t});\n\t\t}\n\n\t\telPagesVisibleds.forEach((elPagesVisibled) => {\n\t\t\telPagesVisibled.classList.add('i-load-data');\n\t\t});\n\t} else {\n\t\telPagesVisibleds.forEach((elPagesVisibled) => {\n\t\t\telPagesVisibled.classList.remove('i-load-data');\n\t\t});\n\n\t\telPagesVisibleds.forEach((elPagesVisibled) => {\n\t\t\telPagesVisibled.style.setProperty('--dialog-loading-duration', '10s');\n\t\t});\n\t}\n};\n\nconst isLoading = (elPage: ElTopDialogPage | JQuery<ElTopDialogPage>) => {\n\tif (isElJQuery(elPage)) elPage = elPage?.[0]; // todo: убрать после переписки jquery на сайте\n\n\treturn elPage.classList.contains('i-load-data');\n};\n\nexport const TopDialogUtils = {\n\tgetElDialogById,\n\tupdatePageVue,\n\trecalcPositions,\n\ttoViewDirty,\n\ttoView,\n\ttoViewPage,\n\ttoPrevPage,\n\tsetLoading,\n\tisLoading,\n\tinAnimation,\n\tclose,\n};\n\ninit();\n"]}
|