@topvisor/ui 0.9.6 → 0.9.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.
Files changed (100) hide show
  1. package/.chunks/{datepicker-2f8eb2f7.amd.js → datepicker-7w3ISMUW.amd.js} +3 -3
  2. package/.chunks/datepicker-7w3ISMUW.amd.js.map +1 -0
  3. package/.chunks/{datepicker-a62ae260.es.js → datepicker-KB2i-H67.es.js} +2 -2
  4. package/.chunks/{datepicker-a62ae260.es.js.map → datepicker-KB2i-H67.es.js.map} +1 -1
  5. package/.chunks/forms-AZXCfF-R.amd.js +3 -0
  6. package/.chunks/forms-AZXCfF-R.amd.js.map +1 -0
  7. package/.chunks/{forms-260b848a.es.js → forms-iL1swNCF.es.js} +368 -370
  8. package/.chunks/forms-iL1swNCF.es.js.map +1 -0
  9. package/.chunks/listItem.vue_vue_type_script_setup_true_lang-Mk92KW3C.es.js +154 -0
  10. package/.chunks/listItem.vue_vue_type_script_setup_true_lang-Mk92KW3C.es.js.map +1 -0
  11. package/.chunks/listItem.vue_vue_type_script_setup_true_lang-cBt2MlyL.amd.js +2 -0
  12. package/.chunks/listItem.vue_vue_type_script_setup_true_lang-cBt2MlyL.amd.js.map +1 -0
  13. package/.chunks/{popup-3a721019.amd.js → popup-8sqqRRR_.amd.js} +8 -2
  14. package/.chunks/popup-8sqqRRR_.amd.js.map +1 -0
  15. package/.chunks/{popup-90783ce2.es.js → popup-gLJT9tg6.es.js} +8 -2
  16. package/.chunks/popup-gLJT9tg6.es.js.map +1 -0
  17. package/assets/forms.css +1 -1
  18. package/assets/light.css +1 -1
  19. package/assets/tabsView.css +1 -1
  20. package/core/core.amd.js +1 -1
  21. package/core/core.js +1 -1
  22. package/forms/forms.amd.js +1 -1
  23. package/forms/forms.js +1 -1
  24. package/formsExt/formsExt.amd.js +1 -1
  25. package/formsExt/formsExt.js +1 -1
  26. package/package.json +2 -5
  27. package/popup/popup.amd.js +1 -1
  28. package/popup/popup.amd.js.map +1 -1
  29. package/popup/popup.js +7 -146
  30. package/popup/popup.js.map +1 -1
  31. package/popup/worker.amd.js +1 -1
  32. package/popup/worker.js +2 -2
  33. package/src/components/forms/avatar/avatar.stories.d.ts +1 -1
  34. package/src/components/forms/avatar/avatar.vue.d.ts +1 -1
  35. package/src/components/forms/button/button.d.ts +2 -2
  36. package/src/components/forms/button/button.vue.d.ts +1 -1
  37. package/src/components/forms/checkbox/checkbox.d.ts +1 -4
  38. package/src/components/forms/checkbox/checkbox.stories.d.ts +8 -32
  39. package/src/components/forms/checkbox/checkbox.vue.d.ts +41 -15
  40. package/src/components/forms/controlLabel/controlLabel.vue.d.ts +1 -1
  41. package/src/components/forms/hint/hint.stories.d.ts +2 -2
  42. package/src/components/forms/hint/hint.vue.d.ts +1 -1
  43. package/src/components/forms/input/input.d.ts +2 -2
  44. package/src/components/forms/input/input.vue.d.ts +1 -1
  45. package/src/components/forms/inputDate/inputDate.d.ts +2 -2
  46. package/src/components/forms/inputDate/inputDate.stories.d.ts +1 -1
  47. package/src/components/forms/inputDate/inputDate.vue.d.ts +1 -1
  48. package/src/components/forms/inputRange/inputRange.vue.d.ts +1 -1
  49. package/src/components/forms/radio/radio.vue.d.ts +1 -1
  50. package/src/components/forms/select/select.d.ts +2 -2
  51. package/src/components/forms/select/select.stories.d.ts +1 -1
  52. package/src/components/forms/select/select.vue.d.ts +1 -1
  53. package/src/components/forms/switcher/switcher.vue.d.ts +1 -1
  54. package/src/components/forms/textarea/textarea.stories.d.ts +1 -1
  55. package/src/components/forms/textarea/textarea.vue.d.ts +1 -1
  56. package/src/components/formsExt/editArea/editArea.d.ts +1 -1
  57. package/src/components/formsExt/editArea/editArea.stories.d.ts +1 -1
  58. package/src/components/formsExt/editArea/editArea.vue.d.ts +1 -1
  59. package/src/components/formsExt/editInput/editInput.d.ts +2 -2
  60. package/src/components/formsExt/editInput/editInput.vue.d.ts +1 -1
  61. package/src/components/formsExt/radioGroup/radioGroup.d.ts +2 -2
  62. package/src/components/formsExt/radioGroup/radioGroup.stories.d.ts +1 -1
  63. package/src/components/formsExt/radioGroup/radioGroup.vue.d.ts +1 -1
  64. package/src/components/popup/popup/listItem.vue.d.ts +1 -1
  65. package/src/components/popup/popup/opener.vue.d.ts +1 -1
  66. package/src/components/popup/popup/popup.stories.d.ts +79 -0
  67. package/src/components/popup/popup/popup.vue.d.ts +2 -1
  68. package/src/components/tabs/tabs/content.vue.d.ts +1 -1
  69. package/src/components/tabs/tabs/tab.vue.d.ts +1 -1
  70. package/src/components/tabs/tabs/tabs.stories.d.ts +2 -2
  71. package/src/components/tabs/tabs/tabs.vue.d.ts +1 -1
  72. package/src/components/tabsView/tabsView/_MenuItem.stories.d.ts +132 -31
  73. package/src/components/tabsView/tabsView/_MenuTitle.stories.d.ts +19 -1
  74. package/src/components/tabsView/tabsView/menu.vue.d.ts +1 -1
  75. package/src/components/tabsView/tabsView/menuDelimeter.vue.d.ts +1 -1
  76. package/src/components/tabsView/tabsView/menuItem.vue.d.ts +18 -1
  77. package/src/components/tabsView/tabsView/menuTitle.vue.d.ts +1 -1
  78. package/src/components/tabsView/tabsView/tabsView.d.ts +49 -24
  79. package/src/components/tabsView/tabsView/tabsView.stories.d.ts +95 -54
  80. package/src/components/tabsView/tabsView/tabsView.vue.d.ts +4 -2
  81. package/src/components/tabsView/tabsView.d.ts +0 -1
  82. package/src/core/core/core.d.ts +1 -1
  83. package/tabs/tabs.amd.js +1 -1
  84. package/tabs/tabs.js +1 -1
  85. package/tabsView/tabsView.amd.js +1 -1
  86. package/tabsView/tabsView.amd.js.map +1 -1
  87. package/tabsView/tabsView.js +146 -123
  88. package/tabsView/tabsView.js.map +1 -1
  89. package/utils/date.amd.js +1 -1
  90. package/utils/date.js +1 -1
  91. package/utils/device.amd.js +1 -1
  92. package/utils/device.js +1 -1
  93. package/.chunks/datepicker-2f8eb2f7.amd.js.map +0 -1
  94. package/.chunks/forms-2250b8db.amd.js +0 -3
  95. package/.chunks/forms-2250b8db.amd.js.map +0 -1
  96. package/.chunks/forms-260b848a.es.js.map +0 -1
  97. package/.chunks/popup-3a721019.amd.js.map +0 -1
  98. package/.chunks/popup-90783ce2.es.js.map +0 -1
  99. package/src/components/tabsView/tabsView/content.vue.d.ts +0 -19
  100. /package/assets/{popup.css → listItem.css} +0 -0
@@ -1,4 +1,4 @@
1
- define(["require","exports","vue","./forms-2250b8db.amd"],function(x,g,p,c){"use strict";if(typeof p>"u")var p=window.Vue;const m=`/* ui-datepicker */\r
1
+ define(["require","exports","vue","./forms-AZXCfF-R.amd"],function(f,g,p,c){"use strict";if(typeof p>"u")var p=window.Vue;c.Core.appendStyle(`/* ui-datepicker */\r
2
2
  .ui-datepicker {\r
3
3
  --datepicker-day-color: #FFF;\r
4
4
  --datepicker-day-color-hover: var(--color-blue-150);\r
@@ -230,5 +230,5 @@ td.ui-datepicker-today a {\r
230
230
  \r
231
231
  .ui-datepicker-row-break {\r
232
232
  display: none;\r
233
- }`;c.Core.appendStyle(m);const a=window,b=t=>{var r,e;if(!((e=(r=a==null?void 0:a.jQuery)==null?void 0:r.ui)!=null&&e.datepicker)){console.info("Для работы datepicker требуется глобальная загрузка jQuery UI Datepicker");return}return a.jQuery.datepicker._defaults.dateFormat=c.Core.state.dateFormat.toLowerCase().replace("m","mm").replace("y","yy").replace("d","dd"),a.jQuery(t)};function v(t,r){var e;return(e=b(t))==null?void 0:e.datepicker(r)}let o,l,u,s;p.watch(p.toRef(c.Core.state.dateFormat),()=>{var t;o=c.dateFormat("2000-01-01"),l=((t=o.match(/\D/))==null?void 0:t[0])??"-",u=o.replace(/\D+/g,"").length,s=[];for(let r=0;r<o.length;r++)o[r]===l&&s.push(r)},{immediate:!0});function f(t){let r=t.target.selectionEnd,e=t.target.value,n=e.substring(0,r).replace(/\D+/g,""),i=e.substring(r).replace(/\D+/g,""),k=n.length+i.length-u;if(k>0){n=n.substring(0,u);const d=u-n.length;i=i.substring(i.length-d)}else k<0&&(t.inputType==="deleteContentForward"?n+="0".repeat(-k):i="0".repeat(-k)+i);r=n.length,e=n+i;for(let d=0;d<s.length;d++){const h=s[d];e=e.substring(0,h)+l+e.substring(h),r>=h&&r++}t.inputType==="deleteContentBackward"&&e[r-1]===l&&r--,e!==t.target.value&&(t.target.value=e,t.target.selectionStart=r,t.target.selectionEnd=r)}g.connectDatepicker=v,g.oninput=f,Object.defineProperty(g,Symbol.toStringTag,{value:"Module"})});
234
- //# sourceMappingURL=datepicker-2f8eb2f7.amd.js.map
233
+ }`);const a=window,m=t=>{var r,e;if(!((e=(r=a==null?void 0:a.jQuery)==null?void 0:r.ui)!=null&&e.datepicker)){console.info("Для работы datepicker требуется глобальная загрузка jQuery UI Datepicker");return}return a.jQuery.datepicker._defaults.dateFormat=c.Core.state.dateFormat.toLowerCase().replace("m","mm").replace("y","yy").replace("d","dd"),a.jQuery(t)};function b(t,r){var e;return(e=m(t))==null?void 0:e.datepicker(r)}let o,l,u,s;p.watch(p.toRef(c.Core.state.dateFormat),()=>{var t;o=c.dateFormat("2000-01-01"),l=((t=o.match(/\D/))==null?void 0:t[0])??"-",u=o.replace(/\D+/g,"").length,s=[];for(let r=0;r<o.length;r++)o[r]===l&&s.push(r)},{immediate:!0});function v(t){let r=t.target.selectionEnd,e=t.target.value,n=e.substring(0,r).replace(/\D+/g,""),i=e.substring(r).replace(/\D+/g,""),k=n.length+i.length-u;if(k>0){n=n.substring(0,u);const d=u-n.length;i=i.substring(i.length-d)}else k<0&&(t.inputType==="deleteContentForward"?n+="0".repeat(-k):i="0".repeat(-k)+i);r=n.length,e=n+i;for(let d=0;d<s.length;d++){const h=s[d];e=e.substring(0,h)+l+e.substring(h),r>=h&&r++}t.inputType==="deleteContentBackward"&&e[r-1]===l&&r--,e!==t.target.value&&(t.target.value=e,t.target.selectionStart=r,t.target.selectionEnd=r)}g.connectDatepicker=b,g.oninput=v,Object.defineProperty(g,Symbol.toStringTag,{value:"Module"})});
234
+ //# sourceMappingURL=datepicker-7w3ISMUW.amd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"datepicker-7w3ISMUW.amd.js","sources":["../../src/components/forms/inputDate/datepicker.ts","../../src/components/forms/inputDate/datepicker.css?raw"],"sourcesContent":["import { toRef, watch } from 'vue';\r\nimport Core from '@/core/core/core';\r\nimport { dateFormat } from '@/core/utils/date';\r\n\r\nimport css from '@/components/forms/inputDate/datepicker.css?raw';\r\n\r\nCore.appendStyle(css);\r\n\r\nconst _window: any = window;\r\n\r\nconst $ = (el: HTMLInputElement) => {\r\n\tif (!_window?.jQuery?.ui?.datepicker) {\r\n\t\tconsole.info('Для работы datepicker требуется глобальная загрузка jQuery UI Datepicker');\r\n\r\n\t\treturn;\r\n\t}\r\n\r\n\t_window.jQuery.datepicker._defaults.dateFormat = Core.state.dateFormat.toLowerCase().replace('m', 'mm').replace('y', 'yy').replace('d', 'dd');\r\n\r\n\treturn _window.jQuery(el);\r\n};\r\n\r\nexport function connectDatepicker(el: HTMLInputElement, options: any) {\r\n\treturn $(el)?.datepicker(options);\r\n}\r\n\r\nlet dateFormatted;\r\nlet delimiter: string;\r\nlet dateNumbersCount: number;\r\nlet delimitersIndexes: number[];\r\n\r\nwatch(toRef(Core.state.dateFormat), () => {\r\n\t// генерация отформатированной даты, извлечение из нее разделителей и их индексов\r\n\tdateFormatted = dateFormat('2000-01-01');\r\n\tdelimiter = dateFormatted.match(/\\D/)?.[0] ?? '-';\r\n\tdateNumbersCount = dateFormatted.replace(/\\D+/g, '').length;\r\n\tdelimitersIndexes = [];\r\n\r\n\tfor (let i = 0; i < dateFormatted.length; i++) {\r\n\t\tif (dateFormatted[i] === delimiter) {\r\n\t\t\tdelimitersIndexes.push(i);\r\n\t\t}\r\n\t}\r\n}, { immediate: true });\r\n\r\n/**\r\n * Автоформат при вводе в поле с датой\r\n */\r\nexport function oninput(e: any) {\r\n\tlet selectionPos = e.target.selectionEnd;\r\n\tlet value = e.target.value;\r\n\r\n\t// разбить занчение на две половины - до и после каретки\r\n\t// удалить все символы, кроме цифр\r\n\tlet valueChunkLeft = value.substring(0, selectionPos).replace(/\\D+/g, '');\r\n\tlet valueChunkRight = value.substring(selectionPos).replace(/\\D+/g, '');\r\n\r\n\tlet extraNumbersCount = valueChunkLeft.length + valueChunkRight.length - dateNumbersCount;\r\n\tif (extraNumbersCount > 0) {\r\n\t\t// // количество цифр больше требуемого - удалить лишние\r\n\t\tvalueChunkLeft = valueChunkLeft.substring(0, dateNumbersCount);\r\n\r\n\t\tconst valueChunkRightMaxLength = dateNumbersCount - valueChunkLeft.length;\r\n\t\tvalueChunkRight = valueChunkRight.substring(valueChunkRight.length - valueChunkRightMaxLength);\r\n\t} else if (extraNumbersCount < 0) {\r\n\t\t// количество цифр меньше требуемого - добавить 0\r\n\t\tif (e.inputType === 'deleteContentForward') {\r\n\t\t\t// нажатие на delete - добавить к левой части для правильного позиционирования каретки\r\n\t\t\tvalueChunkLeft += '0'.repeat(-extraNumbersCount);\r\n\t\t} else {\r\n\t\t\tvalueChunkRight = '0'.repeat(-extraNumbersCount) + valueChunkRight;\r\n\t\t}\r\n\t}\r\n\r\n\tselectionPos = valueChunkLeft.length;\r\n\tvalue = valueChunkLeft + valueChunkRight;\r\n\r\n\t// вставить разделители\r\n\tfor (let i = 0; i < delimitersIndexes.length; i++) {\r\n\t\tconst delimiterIndex = delimitersIndexes[i];\r\n\r\n\t\tvalue = value.substring(0, delimiterIndex) + delimiter + value.substring(delimiterIndex);\r\n\r\n\t\t// сдвинуть каретку, если разделитель вставлен левее ее\r\n\t\tif (selectionPos >= delimiterIndex) {\r\n\t\t\tselectionPos++;\r\n\t\t}\r\n\t}\r\n\r\n\t// нажатие на backspace - если слева символ разделителя, перенести каретку за него\r\n\tif (e.inputType === 'deleteContentBackward' && value[selectionPos - 1] === delimiter) {\r\n\t\tselectionPos--;\r\n\t}\r\n\r\n\t// если значение изменилось - вставить его и переместить каретку\r\n\tif (value !== e.target.value) {\r\n\t\te.target.value = value;\r\n\t\te.target.selectionStart = selectionPos;\r\n\t\te.target.selectionEnd = selectionPos;\r\n\t}\r\n}","export default \"/* ui-datepicker */\\r\\n.ui-datepicker {\\r\\n\\t--datepicker-day-color: #FFF;\\r\\n\\t--datepicker-day-color-hover: var(--color-blue-150);\\r\\n\\t--datepicker-selected-color: var(--color-blue-500);\\r\\n\\t--datepicker-selected-color-hover: var(--color-blue-550);\\r\\n\\t--datepicker-range-color: var(--color-blue-100);\\r\\n\\t--datepicker-range-color-hover: var(--color-blue-150);\\r\\n\\r\\n\\tuser-select: none;\\r\\n\\twidth: auto;\\r\\n\\tpadding: 0;\\r\\n}\\r\\n\\r\\n.ui-datepicker:before,\\r\\n.ui-datepicker:after {\\r\\n\\tdisplay: none;\\r\\n}\\r\\n\\r\\n/* на странице */\\r\\n.ui-datepicker-inline {\\r\\n\\tdisplay: inline-block !important;\\r\\n}\\r\\n\\r\\n/* в popup */\\r\\n.ui-datepicker:not(.ui-datepicker-inline) {\\r\\n\\tborder-radius: 8px;\\r\\n\\tbackground: var(--content-background-color);\\r\\n\\tbox-shadow: var(--top-shadow);\\r\\n\\tz-index: 10000000 !important;\\r\\n\\tpadding: 8px;\\r\\n}\\r\\n\\r\\n.ui-datepicker a {\\r\\n\\ttext-decoration: none !important;\\r\\n}\\r\\n\\r\\n.ui-datepicker option {\\r\\n\\tcolor: var(--color-text);\\r\\n\\tfont-size: 14px;\\r\\n}\\r\\n\\r\\n.ui-datepicker-header {\\r\\n\\tpadding: 0 !important;\\r\\n\\tmargin: 0 0 18px 0;\\r\\n\\tdisplay: flex;\\r\\n\\talign-items: center;\\r\\n}\\r\\n\\r\\n.ui-datepicker-header > * {\\r\\n\\tdisplay: flex;\\r\\n\\talign-items: center;\\r\\n\\tjustify-content: center;\\r\\n}\\r\\n\\r\\n.ui-datepicker-title {\\r\\n\\twidth: 100% !important;\\r\\n\\theight: 24px;\\r\\n\\tmargin: 0 !important;\\r\\n}\\r\\n\\r\\n.ui-datepicker-month,\\r\\n.ui-datepicker-year {\\r\\n\\toutline: none !important;\\r\\n\\twidth: auto !important;\\r\\n\\tborder: none;\\r\\n\\tpadding: 0;\\r\\n\\tmargin: 0 6px !important;\\r\\n\\ttext-align: center;\\r\\n\\tfont-size: 16px !important;\\r\\n}\\r\\n\\r\\n.ui-datepicker-month {\\r\\n\\tcolor: var(--color-text);\\r\\n}\\r\\n\\r\\n.ui-datepicker-year {\\r\\n\\tcolor: var(--color-gray-300);\\r\\n}\\r\\n\\r\\n/*\\tselect.ui-datepicker-month,\\r\\nselect.ui-datepicker-year{ cursor: pointer; color: var(--color-blue-500); }*/\\r\\nselect.ui-datepicker-month,\\r\\nselect.ui-datepicker-year {\\r\\n\\tcursor: pointer;\\r\\n}\\r\\n\\r\\n.ui-datepicker-prev,\\r\\n.ui-datepicker-next {\\r\\n\\tcursor: pointer;\\r\\n\\twidth: 24px !important;\\r\\n\\theight: 24px !important;\\r\\n\\tfont-size: 24px;\\r\\n\\tfont-family: 'Topvisor-2';\\r\\n\\tposition: static !important;\\r\\n}\\r\\n\\r\\n.ui-datepicker-prev:before {\\r\\n\\tcontent: '';\\r\\n}\\r\\n\\r\\n.ui-datepicker-next {\\r\\n\\torder: 1;\\r\\n}\\r\\n\\r\\n.ui-datepicker-next:before {\\r\\n\\tcontent: '';\\r\\n}\\r\\n\\r\\n.ui-datepicker-prev > *,\\r\\n.ui-datepicker-next > * {\\r\\n\\tdisplay: none !important;\\r\\n}\\r\\n\\r\\n.ui-datepicker thead th {\\r\\n\\twidth: auto !important;\\r\\n\\tpadding: 0 !important;\\r\\n\\tcolor: #B3BEBF;\\r\\n\\tfont-size: 14px;\\r\\n\\tfont-weight: 400 !important;\\r\\n}\\r\\n\\r\\n.ui-datepicker table {\\r\\n\\tmargin: 0 !important;\\r\\n\\tfont-size: 14px;\\r\\n}\\r\\n\\r\\n.ui-datepicker td {\\r\\n\\tbackground: none;\\r\\n\\tpadding: 0 !important;\\r\\n}\\r\\n\\r\\n.ui-datepicker td span,\\r\\n.ui-datepicker td a {\\r\\n\\tborder-radius: 8px;\\r\\n\\tborder: none;\\r\\n\\tmin-width: 32px;\\r\\n\\theight: 32px;\\r\\n\\tpadding: 0;\\r\\n\\tmargin: 1px;\\r\\n\\tcolor: var(--color-text) !important;\\r\\n\\tline-height: 32px;\\r\\n\\ttext-align: center;\\r\\n\\tposition: relative;\\r\\n\\tdisplay: block;\\r\\n}\\r\\n\\r\\n/* обычные даты */\\r\\n.ui-datepicker td a {\\r\\n\\tbackground: var(--datepicker-day-color);\\r\\n}\\r\\n\\r\\n.ui-datepicker td a:hover {\\r\\n\\tbackground: var(--datepicker-day-color-hover);\\r\\n}\\r\\n\\r\\n/* текущий день */\\r\\ntd.ui-datepicker-today span,\\r\\ntd.ui-datepicker-today a {\\r\\n\\tbackground: none;\\r\\n\\tposition: relative;\\r\\n}\\r\\n\\r\\n/* выбранные даты */\\r\\n.ui-datepicker td.selected a {\\r\\n\\tbackground: var(--datepicker-range-color);\\r\\n\\tpadding-right: 0;\\r\\n\\tpadding-left: 1px;\\r\\n\\tmargin-right: 1px;\\r\\n\\tmargin-left: 0;\\r\\n}\\r\\n\\r\\n.ui-datepicker td.selected a:hover {\\r\\n\\tbackground: var(--datepicker-range-color-hover);\\r\\n}\\r\\n\\r\\n.ui-datepicker td.selected:not(.selected-start):not(:first-child):not(.first-of-month) a {\\r\\n\\tborder-top-left-radius: 0;\\r\\n\\tborder-bottom-left-radius: 0;\\r\\n\\tpadding-left: 1px;\\r\\n\\tmargin-left: 0;\\r\\n}\\r\\n\\r\\n.ui-datepicker td.selected:not(.selected-end):not(:last-child):not(.last-of-month) a {\\r\\n\\tborder-top-right-radius: 0;\\r\\n\\tborder-bottom-right-radius: 0;\\r\\n\\tpadding-right: 1px;\\r\\n\\tmargin-right: 0;\\r\\n}\\r\\n\\r\\n.ui-datepicker td.selected-start a,\\r\\n.ui-datepicker td.selected-end a,\\r\\n.ui-datepicker td.ui-datepicker-current-day a {\\r\\n\\tbackground: var(--datepicker-selected-color);\\r\\n\\tcolor: #FFF !important;\\r\\n}\\r\\n\\r\\n.ui-datepicker td.selected-start a:hover,\\r\\n.ui-datepicker td.selected-end a:hover,\\r\\n.ui-datepicker td.ui-datepicker-current-day a:hover {\\r\\n\\tbackground: var(--datepicker-selected-color-hover);\\r\\n}\\r\\n\\r\\n.ui-datepicker-day-marks {\\r\\n\\tline-height: normal;\\r\\n\\tposition: absolute;\\r\\n\\tright: 0;\\r\\n\\tbottom: 3px;\\r\\n\\tleft: 0;\\r\\n\\tdisplay: flex;\\r\\n\\talign-items: center;\\r\\n\\tjustify-content: center;\\r\\n}\\r\\n\\r\\n.ui-datepicker-day-marks > i {\\r\\n\\tborder-radius: 50%;\\r\\n\\tborder: 1px solid #FFF;\\r\\n\\twidth: 4px;\\r\\n\\theight: 4px;\\r\\n\\tmargin: 0 2px;\\r\\n}\\r\\n\\r\\n.ui-datepicker-day-marks-exists {\\r\\n\\tbackground: var(--color-blue-500);\\r\\n}\\r\\n\\r\\n.ui-datepicker-day-marks-update {\\r\\n\\tbackground: var(--color-red-500);\\r\\n}\\r\\n\\r\\n.ui-datepicker-row-break {\\r\\n\\tdisplay: none;\\r\\n}\""],"names":["Core","$","el","_window","forms","connectDatepicker","options","dateFormatted","delimiter","dateNumbersCount","delimitersIndexes","watch","_a","i","valueChunkLeft","value","selectionPos","valueChunkRight","extraNumbersCount","valueChunkRightMaxLength","e","delimiterIndex"],"mappings":"0HAMAA,EAAAA,KAAAA,YCNA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EDMAA,iBAIAC,EAAAC,GAAA,sFAEE,QAAA,KAAA,0EAAA,EAEA,OAGD,OAAAC,EAAA,OAAA,WAAA,UAAA,WAAAC,EAAA,KAAA,MAAA,WAAA,YAAA,EAAA,QAAA,IAAA,IAAA,EAAA,QAAA,IAAA,IAAA,EAAA,QAAA,IAAA,IAAA,EAEAD,EAAA,OAAAD,CAAA,CACD,EAEgB,SAAAG,EAAAH,EAAAI,EAAA,mDAIhB,IAAAC,EACAC,EACAC,EACAC,EAEAC,EAAAA,MAAAA,EAAAA,MAAAA,EAAAA,KAAAA,MAAAA,UAAAA,EAAAA,IAAAA,OAECJ,EAAAH,EAAA,WAAA,YAAA,EACAI,IAAAI,EAAAL,EAAA,MAAA,IAAA,IAAA,YAAAK,EAAA,KAAA,IACAH,EAAAF,EAAA,QAAA,OAAA,EAAA,EAAA,YAGA,QAAAM,EAAA,EAAAA,EAAAN,EAAA,OAAAM,IACCN,EAAAM,CAAA,IAAAL,GACCE,EAAA,KAAAG,CAAA,CAGH,EAAA,CAAA,UAAA,EAAA,CAAA,6DAWCC,EAAAC,EAAA,UAAA,EAAAC,CAAA,EAAA,QAAA,OAAA,EAAA,EACAC,EAAAF,EAAA,UAAAC,CAAA,EAAA,QAAA,OAAA,EAAA,EAEAE,EAAAJ,EAAA,OAAAG,EAAA,OAAAR,EACA,GAAAS,EAAA,EAAA,uCAKCD,EAAAA,EAAA,UAAAA,EAAA,OAAAE,CAAA,CAA6F,MAAAD,EAAA,IAG7FE,EAAA,YAAA,6DAQDJ,EAAAF,EAAA,OACAC,EAAAD,EAAAG,EAGA,QAAAJ,EAAA,EAAAA,EAAAH,EAAA,OAAAG,IAAA,CACC,MAAAQ,EAAAX,EAAAG,CAAA,EAEAE,EAAAA,EAAA,UAAA,EAAAM,CAAA,EAAAb,EAAAO,EAAA,UAAAM,CAAA,EAGAL,GAAAK,OAMDD,EAAA,YAAA,yBAAAL,EAAAC,EAAA,CAAA,IAAAR,4BAMCY,EAAA,OAAA,MAAAL,EACAK,EAAA,OAAA,eAAAJ,EACAI,EAAA,OAAA,aAAAJ,EAEF"}
@@ -1,5 +1,5 @@
1
1
  import { watch as g, toRef as m } from "vue";
2
- import { C as k, d as h } from "./forms-260b848a.es.js";
2
+ import { C as k, d as h } from "./forms-iL1swNCF.es.js";
3
3
  const b = `/* ui-datepicker */\r
4
4
  .ui-datepicker {\r
5
5
  --datepicker-day-color: #FFF;\r
@@ -272,4 +272,4 @@ export {
272
272
  y as connectDatepicker,
273
273
  F as oninput
274
274
  };
275
- //# sourceMappingURL=datepicker-a62ae260.es.js.map
275
+ //# sourceMappingURL=datepicker-KB2i-H67.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"datepicker-a62ae260.es.js","sources":["../../src/components/forms/inputDate/datepicker.css?raw","../../src/components/forms/inputDate/datepicker.ts"],"sourcesContent":["export default \"/* ui-datepicker */\\r\\n.ui-datepicker {\\r\\n\\t--datepicker-day-color: #FFF;\\r\\n\\t--datepicker-day-color-hover: var(--color-blue-150);\\r\\n\\t--datepicker-selected-color: var(--color-blue-500);\\r\\n\\t--datepicker-selected-color-hover: var(--color-blue-550);\\r\\n\\t--datepicker-range-color: var(--color-blue-100);\\r\\n\\t--datepicker-range-color-hover: var(--color-blue-150);\\r\\n\\r\\n\\tuser-select: none;\\r\\n\\twidth: auto;\\r\\n\\tpadding: 0;\\r\\n}\\r\\n\\r\\n.ui-datepicker:before,\\r\\n.ui-datepicker:after {\\r\\n\\tdisplay: none;\\r\\n}\\r\\n\\r\\n/* на странице */\\r\\n.ui-datepicker-inline {\\r\\n\\tdisplay: inline-block !important;\\r\\n}\\r\\n\\r\\n/* в popup */\\r\\n.ui-datepicker:not(.ui-datepicker-inline) {\\r\\n\\tborder-radius: 8px;\\r\\n\\tbackground: var(--content-background-color);\\r\\n\\tbox-shadow: var(--top-shadow);\\r\\n\\tz-index: 10000000 !important;\\r\\n\\tpadding: 8px;\\r\\n}\\r\\n\\r\\n.ui-datepicker a {\\r\\n\\ttext-decoration: none !important;\\r\\n}\\r\\n\\r\\n.ui-datepicker option {\\r\\n\\tcolor: var(--color-text);\\r\\n\\tfont-size: 14px;\\r\\n}\\r\\n\\r\\n.ui-datepicker-header {\\r\\n\\tpadding: 0 !important;\\r\\n\\tmargin: 0 0 18px 0;\\r\\n\\tdisplay: flex;\\r\\n\\talign-items: center;\\r\\n}\\r\\n\\r\\n.ui-datepicker-header > * {\\r\\n\\tdisplay: flex;\\r\\n\\talign-items: center;\\r\\n\\tjustify-content: center;\\r\\n}\\r\\n\\r\\n.ui-datepicker-title {\\r\\n\\twidth: 100% !important;\\r\\n\\theight: 24px;\\r\\n\\tmargin: 0 !important;\\r\\n}\\r\\n\\r\\n.ui-datepicker-month,\\r\\n.ui-datepicker-year {\\r\\n\\toutline: none !important;\\r\\n\\twidth: auto !important;\\r\\n\\tborder: none;\\r\\n\\tpadding: 0;\\r\\n\\tmargin: 0 6px !important;\\r\\n\\ttext-align: center;\\r\\n\\tfont-size: 16px !important;\\r\\n}\\r\\n\\r\\n.ui-datepicker-month {\\r\\n\\tcolor: var(--color-text);\\r\\n}\\r\\n\\r\\n.ui-datepicker-year {\\r\\n\\tcolor: var(--color-gray-300);\\r\\n}\\r\\n\\r\\n/*\\tselect.ui-datepicker-month,\\r\\nselect.ui-datepicker-year{ cursor: pointer; color: var(--color-blue-500); }*/\\r\\nselect.ui-datepicker-month,\\r\\nselect.ui-datepicker-year {\\r\\n\\tcursor: pointer;\\r\\n}\\r\\n\\r\\n.ui-datepicker-prev,\\r\\n.ui-datepicker-next {\\r\\n\\tcursor: pointer;\\r\\n\\twidth: 24px !important;\\r\\n\\theight: 24px !important;\\r\\n\\tfont-size: 24px;\\r\\n\\tfont-family: 'Topvisor-2';\\r\\n\\tposition: static !important;\\r\\n}\\r\\n\\r\\n.ui-datepicker-prev:before {\\r\\n\\tcontent: '';\\r\\n}\\r\\n\\r\\n.ui-datepicker-next {\\r\\n\\torder: 1;\\r\\n}\\r\\n\\r\\n.ui-datepicker-next:before {\\r\\n\\tcontent: '';\\r\\n}\\r\\n\\r\\n.ui-datepicker-prev > *,\\r\\n.ui-datepicker-next > * {\\r\\n\\tdisplay: none !important;\\r\\n}\\r\\n\\r\\n.ui-datepicker thead th {\\r\\n\\twidth: auto !important;\\r\\n\\tpadding: 0 !important;\\r\\n\\tcolor: #B3BEBF;\\r\\n\\tfont-size: 14px;\\r\\n\\tfont-weight: 400 !important;\\r\\n}\\r\\n\\r\\n.ui-datepicker table {\\r\\n\\tmargin: 0 !important;\\r\\n\\tfont-size: 14px;\\r\\n}\\r\\n\\r\\n.ui-datepicker td {\\r\\n\\tbackground: none;\\r\\n\\tpadding: 0 !important;\\r\\n}\\r\\n\\r\\n.ui-datepicker td span,\\r\\n.ui-datepicker td a {\\r\\n\\tborder-radius: 8px;\\r\\n\\tborder: none;\\r\\n\\tmin-width: 32px;\\r\\n\\theight: 32px;\\r\\n\\tpadding: 0;\\r\\n\\tmargin: 1px;\\r\\n\\tcolor: var(--color-text) !important;\\r\\n\\tline-height: 32px;\\r\\n\\ttext-align: center;\\r\\n\\tposition: relative;\\r\\n\\tdisplay: block;\\r\\n}\\r\\n\\r\\n/* обычные даты */\\r\\n.ui-datepicker td a {\\r\\n\\tbackground: var(--datepicker-day-color);\\r\\n}\\r\\n\\r\\n.ui-datepicker td a:hover {\\r\\n\\tbackground: var(--datepicker-day-color-hover);\\r\\n}\\r\\n\\r\\n/* текущий день */\\r\\ntd.ui-datepicker-today span,\\r\\ntd.ui-datepicker-today a {\\r\\n\\tbackground: none;\\r\\n\\tposition: relative;\\r\\n}\\r\\n\\r\\n/* выбранные даты */\\r\\n.ui-datepicker td.selected a {\\r\\n\\tbackground: var(--datepicker-range-color);\\r\\n\\tpadding-right: 0;\\r\\n\\tpadding-left: 1px;\\r\\n\\tmargin-right: 1px;\\r\\n\\tmargin-left: 0;\\r\\n}\\r\\n\\r\\n.ui-datepicker td.selected a:hover {\\r\\n\\tbackground: var(--datepicker-range-color-hover);\\r\\n}\\r\\n\\r\\n.ui-datepicker td.selected:not(.selected-start):not(:first-child):not(.first-of-month) a {\\r\\n\\tborder-top-left-radius: 0;\\r\\n\\tborder-bottom-left-radius: 0;\\r\\n\\tpadding-left: 1px;\\r\\n\\tmargin-left: 0;\\r\\n}\\r\\n\\r\\n.ui-datepicker td.selected:not(.selected-end):not(:last-child):not(.last-of-month) a {\\r\\n\\tborder-top-right-radius: 0;\\r\\n\\tborder-bottom-right-radius: 0;\\r\\n\\tpadding-right: 1px;\\r\\n\\tmargin-right: 0;\\r\\n}\\r\\n\\r\\n.ui-datepicker td.selected-start a,\\r\\n.ui-datepicker td.selected-end a,\\r\\n.ui-datepicker td.ui-datepicker-current-day a {\\r\\n\\tbackground: var(--datepicker-selected-color);\\r\\n\\tcolor: #FFF !important;\\r\\n}\\r\\n\\r\\n.ui-datepicker td.selected-start a:hover,\\r\\n.ui-datepicker td.selected-end a:hover,\\r\\n.ui-datepicker td.ui-datepicker-current-day a:hover {\\r\\n\\tbackground: var(--datepicker-selected-color-hover);\\r\\n}\\r\\n\\r\\n.ui-datepicker-day-marks {\\r\\n\\tline-height: normal;\\r\\n\\tposition: absolute;\\r\\n\\tright: 0;\\r\\n\\tbottom: 3px;\\r\\n\\tleft: 0;\\r\\n\\tdisplay: flex;\\r\\n\\talign-items: center;\\r\\n\\tjustify-content: center;\\r\\n}\\r\\n\\r\\n.ui-datepicker-day-marks > i {\\r\\n\\tborder-radius: 50%;\\r\\n\\tborder: 1px solid #FFF;\\r\\n\\twidth: 4px;\\r\\n\\theight: 4px;\\r\\n\\tmargin: 0 2px;\\r\\n}\\r\\n\\r\\n.ui-datepicker-day-marks-exists {\\r\\n\\tbackground: var(--color-blue-500);\\r\\n}\\r\\n\\r\\n.ui-datepicker-day-marks-update {\\r\\n\\tbackground: var(--color-red-500);\\r\\n}\\r\\n\\r\\n.ui-datepicker-row-break {\\r\\n\\tdisplay: none;\\r\\n}\"","import { toRef, watch } from 'vue';\r\nimport Core from '@/core/core/core';\r\nimport { dateFormat } from '@/core/utils/date';\r\n\r\nimport css from '@/components/forms/inputDate/datepicker.css?raw';\r\n\r\nCore.appendStyle(css);\r\n\r\nconst _window: any = window;\r\n\r\nconst $ = (el: HTMLInputElement) => {\r\n\tif (!_window?.jQuery?.ui?.datepicker) {\r\n\t\tconsole.info('Для работы datepicker требуется глобальная загрузка jQuery UI Datepicker');\r\n\r\n\t\treturn;\r\n\t}\r\n\r\n\t_window.jQuery.datepicker._defaults.dateFormat = Core.state.dateFormat.toLowerCase().replace('m', 'mm').replace('y', 'yy').replace('d', 'dd');\r\n\r\n\treturn _window.jQuery(el);\r\n};\r\n\r\nexport function connectDatepicker(el: HTMLInputElement, options: any) {\r\n\treturn $(el)?.datepicker(options);\r\n}\r\n\r\nlet dateFormatted;\r\nlet delimiter: string;\r\nlet dateNumbersCount: number;\r\nlet delimitersIndexes: number[];\r\n\r\nwatch(toRef(Core.state.dateFormat), () => {\r\n\t// генерация отформатированной даты, извлечение из нее разделителей и их индексов\r\n\tdateFormatted = dateFormat('2000-01-01');\r\n\tdelimiter = dateFormatted.match(/\\D/)?.[0] ?? '-';\r\n\tdateNumbersCount = dateFormatted.replace(/\\D+/g, '').length;\r\n\tdelimitersIndexes = [];\r\n\r\n\tfor (let i = 0; i < dateFormatted.length; i++) {\r\n\t\tif (dateFormatted[i] === delimiter) {\r\n\t\t\tdelimitersIndexes.push(i);\r\n\t\t}\r\n\t}\r\n}, { immediate: true });\r\n\r\n/**\r\n * Автоформат при вводе в поле с датой\r\n */\r\nexport function oninput(e: any) {\r\n\tlet selectionPos = e.target.selectionEnd;\r\n\tlet value = e.target.value;\r\n\r\n\t// разбить занчение на две половины - до и после каретки\r\n\t// удалить все символы, кроме цифр\r\n\tlet valueChunkLeft = value.substring(0, selectionPos).replace(/\\D+/g, '');\r\n\tlet valueChunkRight = value.substring(selectionPos).replace(/\\D+/g, '');\r\n\r\n\tlet extraNumbersCount = valueChunkLeft.length + valueChunkRight.length - dateNumbersCount;\r\n\tif (extraNumbersCount > 0) {\r\n\t\t// // количество цифр больше требуемого - удалить лишние\r\n\t\tvalueChunkLeft = valueChunkLeft.substring(0, dateNumbersCount);\r\n\r\n\t\tconst valueChunkRightMaxLength = dateNumbersCount - valueChunkLeft.length;\r\n\t\tvalueChunkRight = valueChunkRight.substring(valueChunkRight.length - valueChunkRightMaxLength);\r\n\t} else if (extraNumbersCount < 0) {\r\n\t\t// количество цифр меньше требуемого - добавить 0\r\n\t\tif (e.inputType === 'deleteContentForward') {\r\n\t\t\t// нажатие на delete - добавить к левой части для правильного позиционирования каретки\r\n\t\t\tvalueChunkLeft += '0'.repeat(-extraNumbersCount);\r\n\t\t} else {\r\n\t\t\tvalueChunkRight = '0'.repeat(-extraNumbersCount) + valueChunkRight;\r\n\t\t}\r\n\t}\r\n\r\n\tselectionPos = valueChunkLeft.length;\r\n\tvalue = valueChunkLeft + valueChunkRight;\r\n\r\n\t// вставить разделители\r\n\tfor (let i = 0; i < delimitersIndexes.length; i++) {\r\n\t\tconst delimiterIndex = delimitersIndexes[i];\r\n\r\n\t\tvalue = value.substring(0, delimiterIndex) + delimiter + value.substring(delimiterIndex);\r\n\r\n\t\t// сдвинуть каретку, если разделитель вставлен левее ее\r\n\t\tif (selectionPos >= delimiterIndex) {\r\n\t\t\tselectionPos++;\r\n\t\t}\r\n\t}\r\n\r\n\t// нажатие на backspace - если слева символ разделителя, перенести каретку за него\r\n\tif (e.inputType === 'deleteContentBackward' && value[selectionPos - 1] === delimiter) {\r\n\t\tselectionPos--;\r\n\t}\r\n\r\n\t// если значение изменилось - вставить его и переместить каретку\r\n\tif (value !== e.target.value) {\r\n\t\te.target.value = value;\r\n\t\te.target.selectionStart = selectionPos;\r\n\t\te.target.selectionEnd = selectionPos;\r\n\t}\r\n}"],"names":["css","Core","_window","$","el","_b","_a","connectDatepicker","options","dateFormatted","delimiter","dateNumbersCount","delimitersIndexes","watch","toRef","dateFormat","i","oninput","e","selectionPos","value","valueChunkLeft","valueChunkRight","extraNumbersCount","valueChunkRightMaxLength","delimiterIndex"],"mappings":";;AAAA,MAAeA,IAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACMfC,EAAK,YAAYD,CAAG;AAEpB,MAAME,IAAe,QAEfC,IAAI,CAACC,MAAyB;;AACnC,MAAI,GAACC,KAAAC,IAAAJ,KAAA,gBAAAA,EAAS,WAAT,gBAAAI,EAAiB,OAAjB,QAAAD,EAAqB,aAAY;AACrC,YAAQ,KAAK,0EAA0E;AAEvF;AAAA,EACD;AAEA,SAAAH,EAAQ,OAAO,WAAW,UAAU,aAAaD,EAAK,MAAM,WAAW,YAAY,EAAE,QAAQ,KAAK,IAAI,EAAE,QAAQ,KAAK,IAAI,EAAE,QAAQ,KAAK,IAAI,GAErIC,EAAQ,OAAOE,CAAE;AACzB;AAEgB,SAAAG,EAAkBH,GAAsBI,GAAc;;AACrE,UAAOF,IAAAH,EAAEC,CAAE,MAAJ,gBAAAE,EAAO,WAAWE;AAC1B;AAEA,IAAIC,GACAC,GACAC,GACAC;AAEJC,EAAMC,EAAMb,EAAK,MAAM,UAAU,GAAG,MAAM;;AAEzC,EAAAQ,IAAgBM,EAAW,YAAY,GACvCL,MAAYJ,IAAAG,EAAc,MAAM,IAAI,MAAxB,gBAAAH,EAA4B,OAAM,KAC9CK,IAAmBF,EAAc,QAAQ,QAAQ,EAAE,EAAE,QACrDG,IAAoB,CAAA;AAEpB,WAASI,IAAI,GAAGA,IAAIP,EAAc,QAAQO;AACrC,IAAAP,EAAcO,CAAC,MAAMN,KACxBE,EAAkB,KAAKI,CAAC;AAG3B,GAAG,EAAE,WAAW,GAAA,CAAM;AAKf,SAASC,EAAQC,GAAQ;AAC3B,MAAAC,IAAeD,EAAE,OAAO,cACxBE,IAAQF,EAAE,OAAO,OAIjBG,IAAiBD,EAAM,UAAU,GAAGD,CAAY,EAAE,QAAQ,QAAQ,EAAE,GACpEG,IAAkBF,EAAM,UAAUD,CAAY,EAAE,QAAQ,QAAQ,EAAE,GAElEI,IAAoBF,EAAe,SAASC,EAAgB,SAASX;AACzE,MAAIY,IAAoB,GAAG;AAET,IAAAF,IAAAA,EAAe,UAAU,GAAGV,CAAgB;AAEvD,UAAAa,IAA2Bb,IAAmBU,EAAe;AACnE,IAAAC,IAAkBA,EAAgB,UAAUA,EAAgB,SAASE,CAAwB;AAAA,EAAA;AAC9F,IAAWD,IAAoB,MAE1BL,EAAE,cAAc,yBAEDG,KAAA,IAAI,OAAO,CAACE,CAAiB,IAE/CD,IAAkB,IAAI,OAAO,CAACC,CAAiB,IAAID;AAIrD,EAAAH,IAAeE,EAAe,QAC9BD,IAAQC,IAAiBC;AAGzB,WAASN,IAAI,GAAGA,IAAIJ,EAAkB,QAAQI,KAAK;AAC5C,UAAAS,IAAiBb,EAAkBI,CAAC;AAElC,IAAAI,IAAAA,EAAM,UAAU,GAAGK,CAAc,IAAIf,IAAYU,EAAM,UAAUK,CAAc,GAGnFN,KAAgBM,KACnBN;AAAA,EAEF;AAGA,EAAID,EAAE,cAAc,2BAA2BE,EAAMD,IAAe,CAAC,MAAMT,KAC1ES,KAIGC,MAAUF,EAAE,OAAO,UACtBA,EAAE,OAAO,QAAQE,GACjBF,EAAE,OAAO,iBAAiBC,GAC1BD,EAAE,OAAO,eAAeC;AAE1B;"}
1
+ {"version":3,"file":"datepicker-KB2i-H67.es.js","sources":["../../src/components/forms/inputDate/datepicker.css?raw","../../src/components/forms/inputDate/datepicker.ts"],"sourcesContent":["export default \"/* ui-datepicker */\\r\\n.ui-datepicker {\\r\\n\\t--datepicker-day-color: #FFF;\\r\\n\\t--datepicker-day-color-hover: var(--color-blue-150);\\r\\n\\t--datepicker-selected-color: var(--color-blue-500);\\r\\n\\t--datepicker-selected-color-hover: var(--color-blue-550);\\r\\n\\t--datepicker-range-color: var(--color-blue-100);\\r\\n\\t--datepicker-range-color-hover: var(--color-blue-150);\\r\\n\\r\\n\\tuser-select: none;\\r\\n\\twidth: auto;\\r\\n\\tpadding: 0;\\r\\n}\\r\\n\\r\\n.ui-datepicker:before,\\r\\n.ui-datepicker:after {\\r\\n\\tdisplay: none;\\r\\n}\\r\\n\\r\\n/* на странице */\\r\\n.ui-datepicker-inline {\\r\\n\\tdisplay: inline-block !important;\\r\\n}\\r\\n\\r\\n/* в popup */\\r\\n.ui-datepicker:not(.ui-datepicker-inline) {\\r\\n\\tborder-radius: 8px;\\r\\n\\tbackground: var(--content-background-color);\\r\\n\\tbox-shadow: var(--top-shadow);\\r\\n\\tz-index: 10000000 !important;\\r\\n\\tpadding: 8px;\\r\\n}\\r\\n\\r\\n.ui-datepicker a {\\r\\n\\ttext-decoration: none !important;\\r\\n}\\r\\n\\r\\n.ui-datepicker option {\\r\\n\\tcolor: var(--color-text);\\r\\n\\tfont-size: 14px;\\r\\n}\\r\\n\\r\\n.ui-datepicker-header {\\r\\n\\tpadding: 0 !important;\\r\\n\\tmargin: 0 0 18px 0;\\r\\n\\tdisplay: flex;\\r\\n\\talign-items: center;\\r\\n}\\r\\n\\r\\n.ui-datepicker-header > * {\\r\\n\\tdisplay: flex;\\r\\n\\talign-items: center;\\r\\n\\tjustify-content: center;\\r\\n}\\r\\n\\r\\n.ui-datepicker-title {\\r\\n\\twidth: 100% !important;\\r\\n\\theight: 24px;\\r\\n\\tmargin: 0 !important;\\r\\n}\\r\\n\\r\\n.ui-datepicker-month,\\r\\n.ui-datepicker-year {\\r\\n\\toutline: none !important;\\r\\n\\twidth: auto !important;\\r\\n\\tborder: none;\\r\\n\\tpadding: 0;\\r\\n\\tmargin: 0 6px !important;\\r\\n\\ttext-align: center;\\r\\n\\tfont-size: 16px !important;\\r\\n}\\r\\n\\r\\n.ui-datepicker-month {\\r\\n\\tcolor: var(--color-text);\\r\\n}\\r\\n\\r\\n.ui-datepicker-year {\\r\\n\\tcolor: var(--color-gray-300);\\r\\n}\\r\\n\\r\\n/*\\tselect.ui-datepicker-month,\\r\\nselect.ui-datepicker-year{ cursor: pointer; color: var(--color-blue-500); }*/\\r\\nselect.ui-datepicker-month,\\r\\nselect.ui-datepicker-year {\\r\\n\\tcursor: pointer;\\r\\n}\\r\\n\\r\\n.ui-datepicker-prev,\\r\\n.ui-datepicker-next {\\r\\n\\tcursor: pointer;\\r\\n\\twidth: 24px !important;\\r\\n\\theight: 24px !important;\\r\\n\\tfont-size: 24px;\\r\\n\\tfont-family: 'Topvisor-2';\\r\\n\\tposition: static !important;\\r\\n}\\r\\n\\r\\n.ui-datepicker-prev:before {\\r\\n\\tcontent: '';\\r\\n}\\r\\n\\r\\n.ui-datepicker-next {\\r\\n\\torder: 1;\\r\\n}\\r\\n\\r\\n.ui-datepicker-next:before {\\r\\n\\tcontent: '';\\r\\n}\\r\\n\\r\\n.ui-datepicker-prev > *,\\r\\n.ui-datepicker-next > * {\\r\\n\\tdisplay: none !important;\\r\\n}\\r\\n\\r\\n.ui-datepicker thead th {\\r\\n\\twidth: auto !important;\\r\\n\\tpadding: 0 !important;\\r\\n\\tcolor: #B3BEBF;\\r\\n\\tfont-size: 14px;\\r\\n\\tfont-weight: 400 !important;\\r\\n}\\r\\n\\r\\n.ui-datepicker table {\\r\\n\\tmargin: 0 !important;\\r\\n\\tfont-size: 14px;\\r\\n}\\r\\n\\r\\n.ui-datepicker td {\\r\\n\\tbackground: none;\\r\\n\\tpadding: 0 !important;\\r\\n}\\r\\n\\r\\n.ui-datepicker td span,\\r\\n.ui-datepicker td a {\\r\\n\\tborder-radius: 8px;\\r\\n\\tborder: none;\\r\\n\\tmin-width: 32px;\\r\\n\\theight: 32px;\\r\\n\\tpadding: 0;\\r\\n\\tmargin: 1px;\\r\\n\\tcolor: var(--color-text) !important;\\r\\n\\tline-height: 32px;\\r\\n\\ttext-align: center;\\r\\n\\tposition: relative;\\r\\n\\tdisplay: block;\\r\\n}\\r\\n\\r\\n/* обычные даты */\\r\\n.ui-datepicker td a {\\r\\n\\tbackground: var(--datepicker-day-color);\\r\\n}\\r\\n\\r\\n.ui-datepicker td a:hover {\\r\\n\\tbackground: var(--datepicker-day-color-hover);\\r\\n}\\r\\n\\r\\n/* текущий день */\\r\\ntd.ui-datepicker-today span,\\r\\ntd.ui-datepicker-today a {\\r\\n\\tbackground: none;\\r\\n\\tposition: relative;\\r\\n}\\r\\n\\r\\n/* выбранные даты */\\r\\n.ui-datepicker td.selected a {\\r\\n\\tbackground: var(--datepicker-range-color);\\r\\n\\tpadding-right: 0;\\r\\n\\tpadding-left: 1px;\\r\\n\\tmargin-right: 1px;\\r\\n\\tmargin-left: 0;\\r\\n}\\r\\n\\r\\n.ui-datepicker td.selected a:hover {\\r\\n\\tbackground: var(--datepicker-range-color-hover);\\r\\n}\\r\\n\\r\\n.ui-datepicker td.selected:not(.selected-start):not(:first-child):not(.first-of-month) a {\\r\\n\\tborder-top-left-radius: 0;\\r\\n\\tborder-bottom-left-radius: 0;\\r\\n\\tpadding-left: 1px;\\r\\n\\tmargin-left: 0;\\r\\n}\\r\\n\\r\\n.ui-datepicker td.selected:not(.selected-end):not(:last-child):not(.last-of-month) a {\\r\\n\\tborder-top-right-radius: 0;\\r\\n\\tborder-bottom-right-radius: 0;\\r\\n\\tpadding-right: 1px;\\r\\n\\tmargin-right: 0;\\r\\n}\\r\\n\\r\\n.ui-datepicker td.selected-start a,\\r\\n.ui-datepicker td.selected-end a,\\r\\n.ui-datepicker td.ui-datepicker-current-day a {\\r\\n\\tbackground: var(--datepicker-selected-color);\\r\\n\\tcolor: #FFF !important;\\r\\n}\\r\\n\\r\\n.ui-datepicker td.selected-start a:hover,\\r\\n.ui-datepicker td.selected-end a:hover,\\r\\n.ui-datepicker td.ui-datepicker-current-day a:hover {\\r\\n\\tbackground: var(--datepicker-selected-color-hover);\\r\\n}\\r\\n\\r\\n.ui-datepicker-day-marks {\\r\\n\\tline-height: normal;\\r\\n\\tposition: absolute;\\r\\n\\tright: 0;\\r\\n\\tbottom: 3px;\\r\\n\\tleft: 0;\\r\\n\\tdisplay: flex;\\r\\n\\talign-items: center;\\r\\n\\tjustify-content: center;\\r\\n}\\r\\n\\r\\n.ui-datepicker-day-marks > i {\\r\\n\\tborder-radius: 50%;\\r\\n\\tborder: 1px solid #FFF;\\r\\n\\twidth: 4px;\\r\\n\\theight: 4px;\\r\\n\\tmargin: 0 2px;\\r\\n}\\r\\n\\r\\n.ui-datepicker-day-marks-exists {\\r\\n\\tbackground: var(--color-blue-500);\\r\\n}\\r\\n\\r\\n.ui-datepicker-day-marks-update {\\r\\n\\tbackground: var(--color-red-500);\\r\\n}\\r\\n\\r\\n.ui-datepicker-row-break {\\r\\n\\tdisplay: none;\\r\\n}\"","import { toRef, watch } from 'vue';\r\nimport Core from '@/core/core/core';\r\nimport { dateFormat } from '@/core/utils/date';\r\n\r\nimport css from '@/components/forms/inputDate/datepicker.css?raw';\r\n\r\nCore.appendStyle(css);\r\n\r\nconst _window: any = window;\r\n\r\nconst $ = (el: HTMLInputElement) => {\r\n\tif (!_window?.jQuery?.ui?.datepicker) {\r\n\t\tconsole.info('Для работы datepicker требуется глобальная загрузка jQuery UI Datepicker');\r\n\r\n\t\treturn;\r\n\t}\r\n\r\n\t_window.jQuery.datepicker._defaults.dateFormat = Core.state.dateFormat.toLowerCase().replace('m', 'mm').replace('y', 'yy').replace('d', 'dd');\r\n\r\n\treturn _window.jQuery(el);\r\n};\r\n\r\nexport function connectDatepicker(el: HTMLInputElement, options: any) {\r\n\treturn $(el)?.datepicker(options);\r\n}\r\n\r\nlet dateFormatted;\r\nlet delimiter: string;\r\nlet dateNumbersCount: number;\r\nlet delimitersIndexes: number[];\r\n\r\nwatch(toRef(Core.state.dateFormat), () => {\r\n\t// генерация отформатированной даты, извлечение из нее разделителей и их индексов\r\n\tdateFormatted = dateFormat('2000-01-01');\r\n\tdelimiter = dateFormatted.match(/\\D/)?.[0] ?? '-';\r\n\tdateNumbersCount = dateFormatted.replace(/\\D+/g, '').length;\r\n\tdelimitersIndexes = [];\r\n\r\n\tfor (let i = 0; i < dateFormatted.length; i++) {\r\n\t\tif (dateFormatted[i] === delimiter) {\r\n\t\t\tdelimitersIndexes.push(i);\r\n\t\t}\r\n\t}\r\n}, { immediate: true });\r\n\r\n/**\r\n * Автоформат при вводе в поле с датой\r\n */\r\nexport function oninput(e: any) {\r\n\tlet selectionPos = e.target.selectionEnd;\r\n\tlet value = e.target.value;\r\n\r\n\t// разбить занчение на две половины - до и после каретки\r\n\t// удалить все символы, кроме цифр\r\n\tlet valueChunkLeft = value.substring(0, selectionPos).replace(/\\D+/g, '');\r\n\tlet valueChunkRight = value.substring(selectionPos).replace(/\\D+/g, '');\r\n\r\n\tlet extraNumbersCount = valueChunkLeft.length + valueChunkRight.length - dateNumbersCount;\r\n\tif (extraNumbersCount > 0) {\r\n\t\t// // количество цифр больше требуемого - удалить лишние\r\n\t\tvalueChunkLeft = valueChunkLeft.substring(0, dateNumbersCount);\r\n\r\n\t\tconst valueChunkRightMaxLength = dateNumbersCount - valueChunkLeft.length;\r\n\t\tvalueChunkRight = valueChunkRight.substring(valueChunkRight.length - valueChunkRightMaxLength);\r\n\t} else if (extraNumbersCount < 0) {\r\n\t\t// количество цифр меньше требуемого - добавить 0\r\n\t\tif (e.inputType === 'deleteContentForward') {\r\n\t\t\t// нажатие на delete - добавить к левой части для правильного позиционирования каретки\r\n\t\t\tvalueChunkLeft += '0'.repeat(-extraNumbersCount);\r\n\t\t} else {\r\n\t\t\tvalueChunkRight = '0'.repeat(-extraNumbersCount) + valueChunkRight;\r\n\t\t}\r\n\t}\r\n\r\n\tselectionPos = valueChunkLeft.length;\r\n\tvalue = valueChunkLeft + valueChunkRight;\r\n\r\n\t// вставить разделители\r\n\tfor (let i = 0; i < delimitersIndexes.length; i++) {\r\n\t\tconst delimiterIndex = delimitersIndexes[i];\r\n\r\n\t\tvalue = value.substring(0, delimiterIndex) + delimiter + value.substring(delimiterIndex);\r\n\r\n\t\t// сдвинуть каретку, если разделитель вставлен левее ее\r\n\t\tif (selectionPos >= delimiterIndex) {\r\n\t\t\tselectionPos++;\r\n\t\t}\r\n\t}\r\n\r\n\t// нажатие на backspace - если слева символ разделителя, перенести каретку за него\r\n\tif (e.inputType === 'deleteContentBackward' && value[selectionPos - 1] === delimiter) {\r\n\t\tselectionPos--;\r\n\t}\r\n\r\n\t// если значение изменилось - вставить его и переместить каретку\r\n\tif (value !== e.target.value) {\r\n\t\te.target.value = value;\r\n\t\te.target.selectionStart = selectionPos;\r\n\t\te.target.selectionEnd = selectionPos;\r\n\t}\r\n}"],"names":["css","Core","_window","$","el","_b","_a","connectDatepicker","options","dateFormatted","delimiter","dateNumbersCount","delimitersIndexes","watch","toRef","dateFormat","i","oninput","e","selectionPos","value","valueChunkLeft","valueChunkRight","extraNumbersCount","valueChunkRightMaxLength","delimiterIndex"],"mappings":";;AAAA,MAAeA,IAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACMfC,EAAK,YAAYD,CAAG;AAEpB,MAAME,IAAe,QAEfC,IAAI,CAACC,MAAyB;;AACnC,MAAI,GAACC,KAAAC,IAAAJ,KAAA,gBAAAA,EAAS,WAAT,gBAAAI,EAAiB,OAAjB,QAAAD,EAAqB,aAAY;AACrC,YAAQ,KAAK,0EAA0E;AAEvF;AAAA,EACD;AAEA,SAAAH,EAAQ,OAAO,WAAW,UAAU,aAAaD,EAAK,MAAM,WAAW,YAAY,EAAE,QAAQ,KAAK,IAAI,EAAE,QAAQ,KAAK,IAAI,EAAE,QAAQ,KAAK,IAAI,GAErIC,EAAQ,OAAOE,CAAE;AACzB;AAEgB,SAAAG,EAAkBH,GAAsBI,GAAc;;AACrE,UAAOF,IAAAH,EAAEC,CAAE,MAAJ,gBAAAE,EAAO,WAAWE;AAC1B;AAEA,IAAIC,GACAC,GACAC,GACAC;AAEJC,EAAMC,EAAMb,EAAK,MAAM,UAAU,GAAG,MAAM;;AAEzC,EAAAQ,IAAgBM,EAAW,YAAY,GACvCL,MAAYJ,IAAAG,EAAc,MAAM,IAAI,MAAxB,gBAAAH,EAA4B,OAAM,KAC9CK,IAAmBF,EAAc,QAAQ,QAAQ,EAAE,EAAE,QACrDG,IAAoB,CAAA;AAEpB,WAASI,IAAI,GAAGA,IAAIP,EAAc,QAAQO;AACrC,IAAAP,EAAcO,CAAC,MAAMN,KACxBE,EAAkB,KAAKI,CAAC;AAG3B,GAAG,EAAE,WAAW,GAAA,CAAM;AAKf,SAASC,EAAQC,GAAQ;AAC3B,MAAAC,IAAeD,EAAE,OAAO,cACxBE,IAAQF,EAAE,OAAO,OAIjBG,IAAiBD,EAAM,UAAU,GAAGD,CAAY,EAAE,QAAQ,QAAQ,EAAE,GACpEG,IAAkBF,EAAM,UAAUD,CAAY,EAAE,QAAQ,QAAQ,EAAE,GAElEI,IAAoBF,EAAe,SAASC,EAAgB,SAASX;AACzE,MAAIY,IAAoB,GAAG;AAET,IAAAF,IAAAA,EAAe,UAAU,GAAGV,CAAgB;AAEvD,UAAAa,IAA2Bb,IAAmBU,EAAe;AACnE,IAAAC,IAAkBA,EAAgB,UAAUA,EAAgB,SAASE,CAAwB;AAAA,EAAA;AAC9F,IAAWD,IAAoB,MAE1BL,EAAE,cAAc,yBAEDG,KAAA,IAAI,OAAO,CAACE,CAAiB,IAE/CD,IAAkB,IAAI,OAAO,CAACC,CAAiB,IAAID;AAIrD,EAAAH,IAAeE,EAAe,QAC9BD,IAAQC,IAAiBC;AAGzB,WAASN,IAAI,GAAGA,IAAIJ,EAAkB,QAAQI,KAAK;AAC5C,UAAAS,IAAiBb,EAAkBI,CAAC;AAElC,IAAAI,IAAAA,EAAM,UAAU,GAAGK,CAAc,IAAIf,IAAYU,EAAM,UAAUK,CAAc,GAGnFN,KAAgBM,KACnBN;AAAA,EAEF;AAGA,EAAID,EAAE,cAAc,2BAA2BE,EAAMD,IAAe,CAAC,MAAMT,KAC1ES,KAIGC,MAAUF,EAAE,OAAO,UACtBA,EAAE,OAAO,QAAQE,GACjBF,EAAE,OAAO,iBAAiBC,GAC1BD,EAAE,OAAO,eAAeC;AAE1B;"}
@@ -0,0 +1,3 @@
1
+ define(["require","exports","vue","../require/css.amd!../assets/forms.css"],function(O,u,e){"use strict";var P,A;if(typeof e>"u")var e=window.Vue;function S(){return"devicePixelRatio"in window&&window.devicePixelRatio>1}function E(){return!!navigator.userAgent.match(/Android|BlackBerry|iPhone|iPad|iPod|IEMobile|Opera Mini/i)}function C(){return navigator.userAgent.indexOf("Topvisor_App")!=-1}function z(){return navigator.userAgent.indexOf("Mac OS X")!==-1}function W(){const s=/Chrome|Android/.test(navigator.userAgent);let t=/Safari/.test(navigator.userAgent);return s&&t&&(t=!1),t}function H(){return z()?"⌘":"Ctrl"}class I{}const U=100;let D;const $=new Map,g={width:window.innerWidth,height:window.innerHeight};function j(s){$.set(s,s)}function Y(s){$.delete(s)}function K(s){clearTimeout(D),D=setTimeout(function(){s.topEvent={widthDiff:g.width-window.innerWidth,hightDiff:g.height-window.innerHeight},g.width=window.innerWidth,g.height=window.innerHeight,$.forEach(t=>t(s))},U)}window.addEventListener("resize",K);const L={addOnReize:j,removeOnResize:Y},G={widthForMobile:900,dateFormat:"Y-m-d",gmt:(P=new Date().toString().match(/GMT(\S+)/))==null?void 0:P[1]},Q={isMobile:!1,isMobileUA:!1,isRetina:!1,isApp:!1,isLandscape:!0,isPortrait:!1,size:0,dateFormat:"Y-m-d",gmt:(A=new Date().toString().match(/GMT(\S+)/))==null?void 0:A[1]},k=window,_=s=>{var t,n;if(!((n=(t=k==null?void 0:k.jQuery)==null?void 0:t.ui)!=null&&n.tooltip)){console.info("Для работы v-top-tooltip требуется глобальная загрузка jQuery UI Tooltip");return}return k.jQuery(s)},N=(s,t)=>{var i;const n=s.value??{};return n.content??=(i=t.props)==null?void 0:i.title,n.content=String(n.content).replace(/\r\n|\r|\n/g,"<br>"),n.position??={my:"bottom-18px",at:"top center"},n},q={mounted(s,t,n){var i;(i=_(s))==null||i.tooltip(N(t,n))},updated(s,t,n,i){var d;const a=N(t,n),o=(d=_(s))==null?void 0:d.tooltip("instance");o&&(o.options={...o.options,...a})},unmounted(s,t,n){var i;(i=_(s))==null||i.tooltip("destroy")}},B=window;class p{static L=e.reactive({Not_date:"Not date"});static page=(B==null?void 0:B.page)||{};static Page=I;static options=G;static state=e.reactive({...Q});static matchMediaIsMobile;static appendStyle(t,n=""){let i="all";n==="m"&&(i="(max-width: "+this.options.widthForMobile+"px)"),n==="pc"&&(i="(min-width: "+this.options.widthForMobile+"px)");const a=document.createElement("style");a.innerHTML=t,a.media=i,document.head.append(a)}static install(t,n){p.defineOptions(n),t.provide("top-core",p),this.installDirectives(t)}static installDirectives(t){t.directive("top-tooltip",q)}static defineOptions(t){t!=null&&t.widthForMobile&&(this.options.widthForMobile=t.widthForMobile),t!=null&&t.dateFormat&&(this.options.dateFormat=t.dateFormat),t!=null&&t.gmt&&(this.options.gmt=t.gmt),p.setState()}static setState(){p.matchMediaIsMobile=window.matchMedia(`(max-width: ${p.options.widthForMobile}px)`),p.state.isMobileUA=E(),p.state.isRetina=S(),p.state.isApp=C(),p.state.dateFormat=this.options.dateFormat,p.state.gmt=this.options.gmt,p.setStateByWindowSize(),L.addOnReize(p.onResize),p.onResize(),p.saveToCookie()}static onResize(){p.setStateByWindowSize(),document.documentElement.style.setProperty("--100vh",window.innerHeight+"px")}static setStateByWindowSize(){var t;p.state.isMobile=!!((t=p.matchMediaIsMobile)!=null&&t.matches),p.state.isLandscape=window.innerWidth>window.innerHeight,p.state.isPortrait=!p.state.isLandscape,p.state.size=window.innerWidth>window.innerHeight?window.innerWidth:window.innerHeight,p.saveToCookie()}static saveToCookie(){const t=[1,window.innerWidth,window.innerHeight,window.devicePixelRatio,Number(p.state.isMobile),Number(p.state.isRetina)];document.cookie="device="+t.join(",")+"; path=/;"}}function X(s){return s.indexOf("T")===-1&&(s.length==10&&(s+=" 00:00:00"),s=s.replace(" ","T")+p.state.gmt),new Date(s)}function T(s,t=!0,n=0){let i;s!=null?i=new Date(s):i=new Date;const a=i.getFullYear(),o=String(i.getMonth()+1).padStart(2,"0"),d=i.getDate().toString().padStart(2,"0"),r=i.getHours().toString().padStart(2,"0"),l=i.getMinutes().toString().padStart(2,"0"),f=i.getSeconds().toString().padStart(2,"0");return i=a+"-"+o+"-"+d,n&&(i+=" "),n>=1&&(i+=r),n>=2&&(i+=":"+l),n>=3&&(i+=":"+f),t&&(i=y(i,n)),i}function y(s,t=2,n=p.L.Not_date){if((!s||s.substring(0,10)==="0000-00-00")&&n&&n!=="0000-00-00")return n;const i=p.state.dateFormat.toLowerCase();let a=s.substring(0,10);a.length===7&&(a+="-01"),a+=" 00:00",a=a.replace(/-/g,"/");const o=new Date(a);if(isNaN(Number(o)))return n;let d=i.replace("y",String(o.getFullYear()).padStart(2,"0")).replace("m",String(o.getMonth()+1).padStart(2,"0")).replace("d",String(o.getDate()).padStart(2,"0"));if(s.length>10)switch(t){case 1:d+=" "+s.substring(11,13);break;case 2:d+=" "+s.substring(11,16);break;case 3:d+=" "+s.substring(11,19);break}return d}function M(s,t=p.L.Not_date){if(!s)return t;if(s.match(/\d\d\d\d-\d\d-\d\d/))return s;const n=p.state.dateFormat.toLowerCase(),i=s.split(/\W/),a=n.split(/\W/);let o="",d="",r="";a.forEach((f,c)=>{switch(f){case"d":o=i[c];break;case"m":d=i[c];break;case"y":r=i[c];break}});let l=r+"-"+d+"-"+o;return l.match(/\d\d\d\d-\d\d-\d\d/)||(console.info("Неверный формат даты, будет возращена текущая дата, "+l),l=T(new Date().getTime(),!1).substring(0,10)),l}const J={class:"top-avatar"},Z=["src","title"],x=["title"],ee=e.defineComponent({__name:"avatar",props:{size:{default:64},image:{},nickname:{},isOnline:{type:Boolean},lastActiveTime:{}},setup(s){e.useCssVars(a=>({ed0c8a30:a.size+"px"}));const t=s,n={user:{Online:"Онлайн",LastSeen:"Заходил(а)"}},i=e.computed(()=>{if(t.isOnline)return n.user.Online;if(t.lastActiveTime)return n.user.LastSeen+": "+y(t.lastActiveTime,2)});return(a,o)=>(e.openBlock(),e.createElementBlock("div",J,[e.createElementVNode("img",{class:"top-avatar_image",src:a.image,title:t.nickname+(i.value?`
2
+ ${i.value}`:""),alt:""},null,8,Z),a.isOnline?(e.openBlock(),e.createElementBlock("div",{key:0,class:"top-avatar_status",title:i.value},null,8,x)):e.createCommentVNode("",!0)]))}}),te={"top-avatar":"top-avatar","top-avatar_image":"top-avatar_image","top-avatar_status":"top-avatar_status"},b=(s,t)=>{const n=s.__vccOpts||s;for(const[i,a]of t)n[i]=a;return n},oe=b(ee,[["__cssModules",{$style:te}]]),ae={key:0,class:"top-ellipsis"},ne=b(e.defineComponent({__name:"button",props:{color:{default:"blue"},styling:{default:""},size:{default:"s"},name:{},title:{},icon:{},icon2:{},href:{},disabled:{type:Boolean},isSubmit:{type:Boolean},isActive:{type:Boolean},isProgress:{type:Boolean}},setup(s){const t=s,n=e.computed(()=>t.href?"a":"button"),i=e.computed(()=>t.isSubmit?"submit":void 0);return(a,o)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(n.value),{class:e.normalizeClass({"top-active":a.isActive,"top-disabled":a.disabled,"top-forms-focusable":!a.disabled,"top-button":!0,"top-button-progress":a.isProgress,[`top-size_${a.size}`]:!!a.size,[`top-color_${a.color}`]:!0,[`top-style_${a.styling}`]:!!a.styling,"top-button-withoutText":!a.$slots.default}),name:a.name,title:a.title,href:a.href,type:i.value,"data-top-icon":a.icon||void 0,"data-top-icon2":a.icon2||void 0,disabled:a.disabled||void 0,inProgress:a.isProgress},{default:e.withCtx(()=>[a.$slots.default?(e.openBlock(),e.createElementBlock("span",ae,[e.renderSlot(a.$slots,"default",{},()=>[e.createTextVNode(e.toDisplayString(a.icon?"":"Button"),1)])])):e.createCommentVNode("",!0),e.renderSlot(a.$slots,"html")]),_:3},8,["class","name","title","href","type","data-top-icon","data-top-icon2","disabled","inProgress"]))}}),[["__cssModules",{$style:{"top-button":"top-button","top-active":"top-active","top-button-progress":"top-button-progress",progress:"_progress_1f1nw_1","top-button-withoutText":"top-button-withoutText","top-color_blue":"top-color_blue","top-color_green":"top-color_green","top-color_orange":"top-color_orange","top-color_red":"top-color_red","top-color_pink":"top-color_pink","top-color_theme":"top-color_theme","top-style_outline":"top-style_outline","top-style_soft":"top-style_soft","top-style_transparent":"top-style_transparent","top-size_l":"top-size_l","top-size_xl":"top-size_xl"}}]]),se={class:"top-forms-optionLabel"},w=b(e.defineComponent({__name:"controlLabel",props:{description:{},disabled:{type:Boolean}},setup(s){return(t,n)=>(e.openBlock(),e.createElementBlock("div",se,[e.createElementVNode("div",{class:e.normalizeClass({"top-forms-optionLabel_title":!0,"top-forms-optionLabel_title-disabled":t.disabled})},[e.renderSlot(t.$slots,"default")],2),t.description?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["top-forms-optionLabel_description",{"top-forms-optionLabel_description-disabled":t.disabled}])},e.toDisplayString(t.description),3)):e.createCommentVNode("",!0)]))}}),[["__cssModules",{$style:{"top-forms-optionLabel":"top-forms-optionLabel","top-forms-optionLabel_title":"top-forms-optionLabel_title","top-forms-optionLabel_title-disabled":"top-forms-optionLabel_title-disabled","top-forms-optionLabel_description":"top-forms-optionLabel_description","top-forms-optionLabel_description-disabled":"top-forms-optionLabel_description-disabled"}}]]),ie=["name","value","indeterminate","disabled"],le=b(e.defineComponent({__name:"checkbox",props:e.mergeModels({modelValue:{type:[Boolean,Array,Set]},name:{},value:{},description:{},disabled:{type:Boolean},indeterminate:{type:Boolean},isError:{type:Boolean}},{modelValue:{type:Boolean},modelModifiers:{}}),emits:["update:modelValue"],setup(s){const t=e.useModel(s,"modelValue");return(n,i)=>(e.openBlock(),e.createElementBlock("label",{class:e.normalizeClass({"top-forms-optionWrapper":!0,"top-checkbox":!0,["top-checkbox_"+n.name]:n.name!=="","top-disabled":n.disabled,"top-error":n.isError&&!n.disabled})},[e.withDirectives(e.createElementVNode("input",{type:"checkbox",class:e.normalizeClass({"top-forms-focusable":!n.disabled,"top-forms-option":!0,"top-checkbox_input":!0,"top-error":n.isError&&!n.disabled}),name:n.name,"onUpdate:modelValue":i[0]||(i[0]=a=>t.value=a),value:n.value,indeterminate:n.indeterminate,disabled:n.disabled},null,10,ie),[[e.vModelCheckbox,t.value]]),n.$slots.default?(e.openBlock(),e.createBlock(w,{key:0,description:n.description,disabled:n.disabled},{default:e.withCtx(()=>[e.renderSlot(n.$slots,"default")]),_:3},8,["description","disabled"])):e.createCommentVNode("",!0)],2))}}),[["__cssModules",{$style:{"top-checkbox":"top-checkbox","top-checkbox_input":"top-checkbox_input","top-error":"top-error"}}]]),re=["title"],F=b(e.defineComponent({__name:"hint",props:{hint:{}},setup(s){return(t,n)=>(e.openBlock(),e.createElementBlock("span",{class:"top-hint","data-top-icon":"",title:t.hint},null,8,re))}}),[["__cssModules",{$style:{"top-hint":"top-hint"}}]]),de=["data-top-icon","data-top-icon2"],pe=["name","title","placeholder","disabled","readonly"],ce={key:1,class:"top-formsCaption"},V=b(e.defineComponent({inheritAttrs:!1,__name:"input",props:{modelValue:{},name:{},disabled:{type:Boolean},readonly:{type:Boolean},title:{},captionType:{default:""},size:{default:"s"},icon:{},icon2:{},addCleaner:{type:Boolean},isError:{type:Boolean},modificator:{}},emits:["update:modelValue"],setup(s,{emit:t}){const n=s,i=t,a=e.computed({get(){return n.modelValue},set(r){i("update:modelValue",r)}}),o=e.computed(()=>n.addCleaner&&!n.title||n.captionType!==""?"":n.title),d=r=>{n.modelValue&&r.stopPropagation(),i("update:modelValue","")};return(r,l)=>(e.openBlock(),e.createElementBlock("label",{class:e.normalizeClass({"top-input":!0,["top-size_"+r.size]:!0,"top-disabled":r.disabled,["top-input-"+r.modificator]:!!r.modificator,"top-input-withCleaner":r.addCleaner&&a.value&&a.value!=="0000-00-00","top-formsCaptionWrapper":r.captionType!=="","top-formsCaptionWrapper-always":r.captionType==="top"}),"data-top-icon":r.icon,"data-top-icon2":r.icon2},[e.withDirectives(e.createElementVNode("input",e.mergeProps({type:"text",class:{"top-input_input":!0,["top-input_input-"+r.modificator]:!!r.modificator,"top-forms-focusable":!r.disabled,"top-error":r.isError},autocomplete:"off_always",name:r.name,"onUpdate:modelValue":l[0]||(l[0]=f=>a.value=f),title:r.title,placeholder:o.value,disabled:r.disabled,readonly:r.readonly,onKeydown:l[1]||(l[1]=e.withKeys(f=>(r.addCleaner||!!r.$slots.btn)&&d(f),["esc"]))},r.$attrs),null,16,pe),[[e.vModelText,a.value]]),r.addCleaner&&a.value&&a.value!=="0000-00-00"?(e.openBlock(),e.createElementBlock("span",{key:0,class:"top-input_cleaner","data-top-icon":"",onClick:e.withModifiers(d,["prevent"])})):e.createCommentVNode("",!0),r.captionType!==""?(e.openBlock(),e.createElementBlock("span",ce,e.toDisplayString(r.title),1)):e.createCommentVNode("",!0),e.renderSlot(r.$slots,"default")],10,de))}}),[["__cssModules",{$style:{"top-input":"top-input","top-input_input":"top-input_input","top-input-withCleaner":"top-input-withCleaner","top-input_cleaner":"top-input_cleaner"}}]]),ue=["modelValue"],me=!!document.documentElement.ontouchstart&&!!document.createElement("input").showPicker;let R=s=>{};const fe=b(e.defineComponent({__name:"inputDate",props:{modelValue:{},name:{},disabled:{type:Boolean},readonly:{type:Boolean},title:{},captionType:{},size:{},icon:{},icon2:{default:""},addCleaner:{type:Boolean},isError:{type:Boolean},modificator:{}},emits:["update:modelValue"],setup(s,{emit:t}){const n=s,i=t;e.onUnmounted(()=>{o&&o.datepicker("destroy")});const a=e.ref();let o;const d=e.computed({get(){return y(n.modelValue,2,"0000-00-00")},set(c){c=M(c,"0000-00-00"),i("update:modelValue",c)}});let r=c=>{R(c)},l=c=>{const m=M(c.target.value),h=y(m);if(!h||h===p.L.Not_date||c.target.value!==h){c.target.value=d.value;return}d.value=c.target.value};async function f(c){const m=await new Promise((h,v)=>O(["./datepicker-7w3ISMUW.amd"],h,v));R=m.oninput,o=m.connectDatepicker(c.target,{onSelect:()=>l(c)}),o&&o.datepicker("show")}return(c,m)=>e.unref(me)?(e.openBlock(),e.createBlock(e.unref(V),e.mergeProps({key:0},c.$props,{modelValue:d.value,readonly:"",onClick:m[1]||(m[1]=h=>a.value.showPicker())}),{default:e.withCtx(()=>[e.createElementVNode("input",{ref_key:"el",ref:a,type:"date",class:"top-input_input-date",modelValue:c.modelValue,onChange:m[0]||(m[0]=h=>d.value=h.target.value),tabindex:"-1"},null,40,ue)]),_:1},16,["modelValue"])):(e.openBlock(),e.createBlock(e.unref(V),e.mergeProps({key:1},c.$props,{modelValue:d.value,"onUpdate:modelValue":m[2]||(m[2]=h=>h===""?d.value="":""),onInput:e.unref(r),onFocusOnce:f,onChange:e.unref(l),modificator:"datepicker"}),null,16,["modelValue","onInput","onChange"]))}}),[["__cssModules",{$style:{"top-input-datepicker":"top-input-datepicker","top-input_input-date":"top-input_input-date"}}]]),be={class:"top-inputRange"},he=e.createElementVNode("span",{class:"top-inputRange_dash"}," — ",-1),ve=b(e.defineComponent({__name:"inputRange",setup(s){return(t,n)=>(e.openBlock(),e.createElementBlock("div",be,[e.renderSlot(t.$slots,"from"),he,e.renderSlot(t.$slots,"to")]))}}),[["__cssModules",{$style:{"top-inputRange":"top-inputRange","top-inputRange_dash":"top-inputRange_dash","top-input":"top-input"}}]]),ye=["name","value","disabled"],ge=b(e.defineComponent({__name:"radio",props:{modelValue:{},value:{},name:{},description:{},disabled:{type:Boolean},isError:{type:Boolean}},emits:["update:modelValue"],setup(s,{emit:t}){const n=s,i=t,a=e.computed({get(){return n.modelValue},set(o){i("update:modelValue",o)}});return(o,d)=>(e.openBlock(),e.createElementBlock("label",{class:e.normalizeClass({"top-forms-optionWrapper":!0,"top-radio":!0,["top-radio_"+o.name]:o.name!=="","top-disabled":o.disabled,"top-error":o.isError&&!o.disabled})},[e.withDirectives(e.createElementVNode("input",{type:"radio",class:e.normalizeClass({"top-forms-focusable":!o.disabled,"top-forms-option":!0,"top-radio_input":!0,"top-error":o.isError&&!o.disabled}),"onUpdate:modelValue":d[0]||(d[0]=r=>a.value=r),name:o.name,value:o.value,disabled:o.disabled},null,10,ye),[[e.vModelRadio,a.value]]),o.$slots.default?(e.openBlock(),e.createBlock(w,{key:0,description:o.description,disabled:o.disabled},{default:e.withCtx(()=>[e.renderSlot(o.$slots,"default")]),_:3},8,["description","disabled"])):e.createCommentVNode("",!0)],2))}}),[["__cssModules",{$style:{"top-radio":"top-radio","top-radio_input":"top-radio_input","top-error":"top-error"}}]]),ke=["name","value","disabled"],we=b(e.defineComponent({__name:"switcher",props:{modelValue:{type:[Boolean,Array,Set]},name:{},value:{},description:{},disabled:{type:Boolean},isError:{type:Boolean}},emits:["update:modelValue"],setup(s,{emit:t}){const n=s,i=t,a=e.computed({get(){return n.modelValue},set(o){i("update:modelValue",o)}});return(o,d)=>(e.openBlock(),e.createElementBlock("label",{class:e.normalizeClass({"top-forms-optionWrapper":!0,"top-checkboxSwitcher":!0,"top-disabled":o.disabled,"top-error":o.isError&&!o.disabled})},[e.withDirectives(e.createElementVNode("input",{type:"checkbox",class:e.normalizeClass({"top-forms-focusable":!o.disabled,"top-forms-option":!0,"top-checkboxSwitcher_input":!0,"top-error":o.isError&&!o.disabled}),"onUpdate:modelValue":d[0]||(d[0]=r=>a.value=r),name:o.name,value:o.value,disabled:o.disabled},null,10,ke),[[e.vModelCheckbox,a.value]]),o.$slots.default?(e.openBlock(),e.createBlock(w,{key:0,description:o.description,disabled:o.disabled},{default:e.withCtx(()=>[e.renderSlot(o.$slots,"default")]),_:3},8,["description","disabled"])):e.createCommentVNode("",!0)],2))}}),[["__cssModules",{$style:{"top-checkboxSwitcher":"top-checkboxSwitcher","top-checkboxSwitcher_input":"top-checkboxSwitcher_input","top-error":"top-error"}}]]),$e=["name","placeholder","disabled","readonly","rows"],_e={key:0,class:"top-textarea_pseudoContent"},Be=b(e.defineComponent({inheritAttrs:!1,__name:"textarea",props:{modelValue:{},name:{},placeholder:{},rows:{default:5},minHeight:{default:120},expandable:{type:Boolean},disabled:{type:Boolean},readonly:{type:Boolean},isError:{type:Boolean},hint:{}},emits:["update:modelValue"],setup(s,{emit:t}){e.useCssVars(o=>({c838a038:o.minHeight+"px"}));const n=s,i=t,a=e.computed({get(){return n.modelValue},set(o){i("update:modelValue",o)}});return(o,d)=>{const r=e.resolveDirective("top-tooltip");return e.openBlock(),e.createElementBlock("label",{class:e.normalizeClass({"top-textarea":!0,["top-textarea-"+o.name]:o.name,"top-disabled":o.disabled})},[e.withDirectives(e.createElementVNode("textarea",e.mergeProps({type:"text",class:{"top-forms-focusable":!o.disabled,"top-textarea_textarea":!0,"top-textarea_textarea-expandable":o.expandable,"top-error":o.isError},autocomplete:"off_always",name:o.name,placeholder:o.placeholder,disabled:o.disabled,readonly:o.readonly,rows:o.expandable?void 0:o.rows},o.$attrs,{"onUpdate:modelValue":d[0]||(d[0]=l=>a.value=l)}),null,16,$e),[[e.vModelText,a.value]]),o.expandable?(e.openBlock(),e.createElementBlock("div",_e,e.toDisplayString(a.value+" "),1)):e.createCommentVNode("",!0),o.hint?e.withDirectives((e.openBlock(),e.createBlock(F,{key:1,class:"top-textarea_hint",hint:o.hint},null,8,["hint"])),[[r]]):e.createCommentVNode("",!0)],2)}}}),[["__cssModules",{$style:{"top-textarea":"top-textarea","top-textarea_textarea":"top-textarea_textarea","top-textarea_textarea-expandable":"top-textarea_textarea-expandable","top-textarea_pseudoContent":"top-textarea_pseudoContent","top-textarea_hint":"top-textarea_hint"}}]]),Me=["data-value","data-top-icon","data-top-icon2"],Ve=["name","disabled"],Se=["label","disabled"],Ee=["value","selected","disabled"],Ce=["value","selected","disabled"],ze={key:1,class:"top-formsCaption"},De=b(e.defineComponent({__name:"select",props:{modelValue:{},options:{},name:{},disabled:{type:Boolean},icon:{},size:{default:"s"},addChanger:{type:Boolean},title:{},isError:{type:Boolean}},emits:["update:modelValue"],setup(s,{emit:t}){const n=s,i=t,a=e.computed({get(){return n.modelValue},set(l){i("update:modelValue",l)}}),o=e.computed(()=>{var l;return(l=d.value.get(a.value))==null?void 0:l.icon}),d=e.computed(()=>{const l=new Map;return n.options.forEach(f=>{if(!f.disabled){if(f.children){f.children.forEach(c=>{c.disabled||l.set(c.value,c)});return}l.set(f.value,f)}}),l});e.watch([e.toRef(n.modelValue),d],()=>{(a.value===null||a.value===void 0)&&d.value.size&&(console.warn("Пожалуйста, не передавайте в компонент Select значения null и undefined"),a.value=d.value.keys().next().value)},{immediate:!0});const r=()=>{const l=[...d.value.keys()],c=(l.indexOf(a.value)+1)%l.length;a.value=l[c]};return(l,f)=>(e.openBlock(),e.createElementBlock("label",{class:e.normalizeClass({"top-select":!0,["top-select-"+l.name]:l.name,["top-size_"+l.size]:!0,"top-formsCaptionWrapper":!!l.title,"top-select-error":l.isError,"top-disabled":l.disabled}),"data-value":a.value,"data-top-icon":l.icon,"data-top-icon2":o.value},[e.withDirectives(e.createElementVNode("select",{class:e.normalizeClass({"top-forms-focusable":!l.disabled,"top-select_select":!0,"top-select_arrow":!0,"top-error":l.isError}),name:l.name,disabled:l.disabled,"onUpdate:modelValue":f[0]||(f[0]=c=>a.value=c)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.options.entries(),([c,m])=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[m.children?(e.openBlock(),e.createElementBlock("optgroup",{key:"group_"+m.value,label:m.title,disabled:m.disabled},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(m.children.entries(),([h,v])=>(e.openBlock(),e.createElementBlock("option",{key:m.value,value:v.value,selected:v.value===a.value,disabled:v.disabled},e.toDisplayString(v.title),9,Ee))),128))],8,Se)):(e.openBlock(),e.createElementBlock("option",{key:m.value,value:m.value,selected:m.value===a.value,disabled:m.disabled},e.toDisplayString(m.title),9,Ce))],64))),256))],10,Ve),[[e.vModelSelect,a.value]]),l.addChanger&&d.value.size&&!l.disabled?(e.openBlock(),e.createElementBlock("span",{key:0,class:"top-changer",onClick:r})):e.createCommentVNode("",!0),l.title?(e.openBlock(),e.createElementBlock("span",ze,e.toDisplayString(l.title),1)):e.createCommentVNode("",!0)],10,Me))}}),[["__cssModules",{$style:{"top-select":"top-select","top-select-error":"top-select-error","top-select_select":"top-select_select","top-changer":"top-changer"}}]]);u.Button=ne,u.ControlLabel=w,u.Core=p,u.Events=L,u.Hint=F,u.Input=V,u.Textarea=Be,u._export_sfc=b,u.avatar=oe,u.checkbox=le,u.dateFormat=y,u.dateUnformat=M,u.genDate=T,u.getCommandKeyLabel=H,u.inputDate=fe,u.inputRange=ve,u.isApp=C,u.isMacOS=z,u.isMobile=E,u.isRetina=S,u.isSafari=W,u.radio=ge,u.select=De,u.stringToDate=X,u.switcher=we});
3
+ //# sourceMappingURL=forms-AZXCfF-R.amd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"forms-AZXCfF-R.amd.js","sources":["../../src/core/utils/device.ts","../../src/core/core/page.ts","../../src/core/core/events.ts","../../src/core/core/options.ts","../../src/core/core/state.ts","../../src/core/directives/tooltip.ts","../../src/core/core/core.ts","../../src/core/utils/date.ts","../../src/components/forms/avatar/avatar.vue","../../src/components/forms/button/button.vue","../../src/components/forms/input/input.vue","../../src/components/forms/inputDate/inputDate.vue","../../src/components/forms/radio/radio.vue","../../src/components/forms/switcher/switcher.vue","../../src/components/forms/textarea/textarea.vue","../../src/components/forms/select/select.vue"],"sourcesContent":["export function isRetina() {\r\n\treturn ('devicePixelRatio' in window && window.devicePixelRatio > 1);\r\n}\r\n\r\n// определить, является ли устройство мобильным\r\nexport function isMobile(): boolean {\r\n\treturn !!navigator.userAgent.match(/Android|BlackBerry|iPhone|iPad|iPod|IEMobile|Opera Mini/i);\r\n}\r\n\r\n// определить, открыт ли сайт в приложении\r\nexport function isApp() {\r\n\treturn (navigator.userAgent.indexOf('Topvisor_App') != -1);\r\n}\r\n\r\n// определить, является ли OS пользователя macOS\r\nexport function isMacOS() {\r\n\treturn navigator.userAgent.indexOf('Mac OS X') !== -1;\r\n}\r\n\r\n// определить, является ли текущий браузер пользователя Safari\r\nexport function isSafari() {\r\n\tconst isChrome = /Chrome|Android/.test(navigator.userAgent);\r\n\r\n\tlet isSafari = /Safari/.test(navigator.userAgent);\r\n\tif (isChrome && isSafari) {\r\n\t\tisSafari = false;\r\n\t}\r\n\r\n\treturn isSafari;\r\n};\r\n\r\n/**\r\n * Вернуть текст для обозначения клавиши Ctrl / Command в зависимости от OS\r\n * @returns {'Ctrl'|'⌘'}\r\n */\r\nexport function getCommandKeyLabel(): 'Ctrl' | '⌘' {\r\n\tif (isMacOS()) {\r\n\t\treturn '⌘';\r\n\t} else {\r\n\t\treturn 'Ctrl';\r\n\t}\r\n}","class Page {\r\n\r\n}\r\n\r\nexport default Page;","const onResizeDelay = 100;\r\n\r\nlet onResizeTimer: NodeJS.Timeout;\r\n\r\ntype TopEvent = Event & { topEvent: { widthDiff: number, hightDiff: number } }\r\n\r\n/**\r\n * Установленные обрабочики на событие изменения размеров окна\r\n */\r\nconst onResizeListeners: Map<(ev: TopEvent) => any, (ev: TopEvent) => any> = new Map();\r\n\r\n// зафиксированное состояние размеров окна\r\nconst windowSize = {\r\n\twidth: window.innerWidth,\r\n\theight: window.innerHeight,\r\n};\r\n\r\n/**\r\n * Добавить обработчик на событие изменения размеров экрана\r\n * вызов таких обработчиков будет опмизирован и объединен в одно событие\r\n */\r\nfunction addOnReize (listener: (this: Element, ev: TopEvent) => any) {\r\n\tonResizeListeners.set(listener, listener);\r\n}\r\n\r\n/**\r\n * Удаление обработчика на событие изменений размеров экрана\r\n */\r\nfunction removeOnResize (listener: (this: Element, ev: TopEvent) => any) {\r\n\tonResizeListeners.delete(listener);\r\n}\r\n\r\nfunction onResize (e: any) {\r\n\tclearTimeout(onResizeTimer);\r\n\r\n\tonResizeTimer = setTimeout(function () {\r\n\t\te.topEvent = {\r\n\t\t\twidthDiff: windowSize.width - window.innerWidth,\r\n\t\t\thightDiff: windowSize.height - window.innerHeight,\r\n\t\t};\r\n\r\n\t\twindowSize.width = window.innerWidth;\r\n\t\twindowSize.height = window.innerHeight;\r\n\r\n\t\tonResizeListeners.forEach((callback) => callback(e));\r\n\t}, onResizeDelay);\r\n}\r\n\r\nwindow.addEventListener('resize', onResize);\r\n\r\nexport default {\r\n\taddOnReize,\r\n\tremoveOnResize,\r\n};\r\n","/**\r\n * Конфигурация UI\r\n * Можно переопределить при подклчюении UI во Vue приложение через app.use(Core, options)\r\n */\r\nconst options = {\r\n\twidthForMobile: 900,\r\n\tdateFormat: 'Y-m-d',\r\n\r\n\t/**\r\n\t * Для Москвы: +0300\r\n\t */\r\n\tgmt: new Date().toString().match(/GMT(\\S+)/)?.[1],\r\n};\r\n\r\nexport default options;","/**\r\n * State UI для взаимодейсвтиями с приложениями Vue\r\n */\r\nconst state = {\r\n\t/**\r\n\t * Device by size\r\n\t * @see widthForMobile\r\n\t */\r\n\tisMobile: false,\r\n\r\n\t/**\r\n\t * Device by user agent\r\n\t */\r\n\tisMobileUA: false,\r\n\r\n\t/**\r\n\t * true, если плотность пикселей экрана больше 1\r\n\t */\r\n\tisRetina: false,\r\n\r\n\t/**\r\n\t * true, елси это приложение\r\n\t */\r\n\tisApp: false,\r\n\r\n\t/**\r\n\t * true при горизонтальном расположении устройства\r\n\t */\r\n\tisLandscape: true,\r\n\r\n\t/**\r\n\t * true при вертикальном расположении устройства\r\n\t */\r\n\tisPortrait: false,\r\n\tsize: 0,\r\n\r\n\t// См. core.options\r\n\tdateFormat: 'Y-m-d',\r\n\r\n\t// См. core.options\r\n\tgmt: new Date().toString().match(/GMT(\\S+)/)?.[1],\r\n};\r\n\r\nexport default state;","import type { DirectiveBinding, ObjectDirective, VNode } from 'vue';\r\n\r\nconst _window: any = window;\r\n\r\nconst $ = (el: VNode) => {\r\n\tif (!_window?.jQuery?.ui?.tooltip) {\r\n\t\tconsole.info('Для работы v-top-tooltip требуется глобальная загрузка jQuery UI Tooltip');\r\n\r\n\t\treturn;\r\n\t}\r\n\r\n\treturn _window.jQuery(el);\r\n};\r\n\r\nconst tvTooltipGenOptions = (binding: DirectiveBinding, vnode: VNode) => {\r\n\tconst options = binding.value ?? {};\r\n\r\n\toptions.content ??= vnode.props?.title;\r\n\toptions.content = String(options.content).replace(/\\r\\n|\\r|\\n/g, '<br>');\r\n\r\n\toptions.position ??= {\r\n\t\tmy: 'bottom-18px',\r\n\t\tat: 'top center',\r\n\t};\r\n\r\n\treturn options;\r\n};\r\n\r\nconst tooltip = {\r\n\tmounted(el: VNode, binding: DirectiveBinding, vnode: VNode) {\r\n\t\t$(el)?.tooltip(tvTooltipGenOptions(binding, vnode));\r\n\t},\r\n\r\n\tupdated(el: VNode, binding: DirectiveBinding, vnode: VNode, _prevVnode: VNode) {\r\n\t\t/**\r\n\t\t * В результате обновления может быть открыто несколько тултипов поэтому изменить опции, без перерисовки тултипа\r\n\t\t */\r\n\t\tconst options = tvTooltipGenOptions(binding, vnode);\r\n\t\tconst instance = $(el)?.tooltip('instance');\r\n\t\tif (!instance) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tinstance.options = {\r\n\t\t\t...instance.options,\r\n\t\t\t...options,\r\n\t\t};\r\n\t},\r\n\r\n\tunmounted(el: VNode, binding: DirectiveBinding, vnode: VNode) {\r\n\t\t$(el)?.tooltip('destroy');\r\n\t},\r\n} satisfies ObjectDirective;\r\n\r\nexport default tooltip;","import { reactive } from 'vue';\r\nimport { isMobile, isRetina, isApp } from '@/core/utils/device';\r\nimport Page from '@/core/core/page';\r\nimport Events from '@/core/core/events';\r\nimport options from '@/core/core/options';\r\nimport state from '@/core/core/state';\r\nimport directiveTooltip from '@/core/directives/tooltip';\r\n\r\nconst _window: any = window;\r\n\r\nclass Core {\r\n\r\n\t/**\r\n\t * Настройки словаря\r\n\t */\r\n\tstatic L = reactive({\r\n\t\tNot_date: 'Not date',\r\n\t});\r\n\r\n\tstatic page = _window?.page || {};\r\n\r\n\tstatic Page = Page;\r\n\r\n\tstatic options = options;\r\n\r\n\tstatic state = reactive({ ...state });\r\n\r\n\tstatic matchMediaIsMobile?: MediaQueryList;\r\n\r\n\t/**\r\n\t * Добавить на страницу стили, используется для загрузки стилей из js\r\n\t *\r\n\t * Условная загрузка стилей m и pc отключена в пользу производительсности, стили грузятся всегда, но применяются по условию\r\n\t * @param style - css стили в строке\r\n\t * @param type - если указать 'm' или 'pc', то стили будут применяться по условию в зависимости от настройки this.options.widthForMobile\r\n\t */\r\n\tstatic appendStyle(style: string, type: '' | 'm' | 'pc' = ''): void {\r\n\t\tlet media = 'all';\r\n\r\n\t\tif (type === 'm') {\r\n\t\t\tmedia = '(max-width: ' + this.options.widthForMobile + 'px)';\r\n\t\t}\r\n\r\n\t\tif (type === 'pc') {\r\n\t\t\tmedia = '(min-width: ' + this.options.widthForMobile + 'px)';\r\n\t\t}\r\n\r\n\t\tconst elStyle = document.createElement('style');\r\n\t\telStyle.innerHTML = style;\r\n\t\telStyle.media = media;\r\n\r\n\t\tdocument.head.append(elStyle);\r\n\t}\r\n\r\n\t/**\r\n\t * Установить как плагин в прилоежнии Vue\r\n\t * Core.state является общим для всех приложений Vue на странице\r\n\t * Core.options является общим для всех приложений Vue на странице\r\n\t * @param app - Vue App\r\n\t * @param {typeof options} options - параметры UI\r\n\t */\r\n\tstatic install(app: any, options: typeof this.options) {\r\n\t\tCore.defineOptions(options);\r\n\r\n\t\tapp.provide('top-core', Core);\r\n\r\n\t\tthis.installDirectives(app);\r\n\t}\r\n\r\n\tstatic installDirectives(app: any) {\r\n\t\tapp.directive('top-tooltip', directiveTooltip);\r\n\t}\r\n\r\n\t/**\r\n\t * Установить конфигурацию UI\r\n\t * @param {typeof options} options\r\n\t */\r\n\tstatic defineOptions(options: typeof this.options) {\r\n\t\tif (options?.widthForMobile) {\r\n\t\t\tthis.options.widthForMobile = options.widthForMobile;\r\n\t\t}\r\n\r\n\t\tif (options?.dateFormat) {\r\n\t\t\tthis.options.dateFormat = options.dateFormat;\r\n\t\t}\r\n\r\n\t\tif (options?.gmt) {\r\n\t\t\tthis.options.gmt = options.gmt;\r\n\t\t}\r\n\r\n\t\tCore.setState();\r\n\t}\r\n\r\n\tstatic setState() {\r\n\t\tCore.matchMediaIsMobile = window.matchMedia(`(max-width: ${Core.options.widthForMobile}px)`);\r\n\r\n\t\tCore.state.isMobileUA = isMobile();\r\n\t\tCore.state.isRetina = isRetina();\r\n\t\tCore.state.isApp = isApp();\r\n\t\tCore.state.dateFormat = this.options.dateFormat;\r\n\t\tCore.state.gmt = this.options.gmt;\r\n\r\n\t\tCore.setStateByWindowSize();\r\n\r\n\t\t// пересчет значений, зависящих от рамзеров окна\r\n\t\tEvents.addOnReize(Core.onResize);\r\n\r\n\t\tCore.onResize();\r\n\r\n\t\tCore.saveToCookie();\r\n\t}\r\n\r\n\tstatic onResize() {\r\n\t\tCore.setStateByWindowSize();\r\n\r\n\t\t// честный vh\r\n\t\tdocument.documentElement.style.setProperty('--100vh', window.innerHeight + 'px');\r\n\t}\r\n\r\n\tstatic setStateByWindowSize() {\r\n\t\tCore.state.isMobile = !!Core.matchMediaIsMobile?.matches;\r\n\t\tCore.state.isLandscape = (window.innerWidth > window.innerHeight);\r\n\t\tCore.state.isPortrait = !Core.state.isLandscape;\r\n\t\tCore.state.size = (window.innerWidth > window.innerHeight) ? window.innerWidth : window.innerHeight;\r\n\r\n\t\tCore.saveToCookie();\r\n\t}\r\n\r\n\t/**\r\n\t * Сохранить информацию об устройстве в cookie\r\n\t */\r\n\tstatic saveToCookie() {\r\n\t\tconst device = [\r\n\t\t\t1,\r\n\t\t\twindow.innerWidth,\r\n\t\t\twindow.innerHeight,\r\n\t\t\twindow.devicePixelRatio,\r\n\t\t\tNumber(Core.state.isMobile),\r\n\t\t\tNumber(Core.state.isRetina),\r\n\t\t];\r\n\r\n\t\tdocument.cookie = 'device=' + device.join(',') + '; path=/;';\r\n\t}\r\n\r\n}\r\n\r\nexport default Core;","import Core from '@/core/core/core';\r\n\r\n/**\r\n * Получить объект Date из строки\r\n * @param date - строка с датой\r\n */\r\nexport function stringToDate(date: string) {\r\n\tif (date.indexOf('T') === -1) {\r\n\t\tif (date.length == 10) {\r\n\t\t\tdate += ' 00:00:00';\r\n\t\t}\r\n\r\n\t\tdate = date.replace(' ', 'T') + Core.state.gmt;\r\n\t}\r\n\r\n\treturn new Date(date);\r\n}\r\n\r\n/**\r\n * Генерация строки с датой в формате Y-m-d H:i:s или в формате Core.state.dateFormat, если указан useFormat = true\r\n * @param {?number} timestamp\r\n * @param {?boolean} useFormat\r\n * @param {0|1|2|3} time - 0: только дата, 1: дата и часы, 2: дата и часы с минутами, 3: дата и часы с минутами и секундами\r\n */\r\nexport function genDate(timestamp: number, useFormat: boolean = true, time: 0 | 1 | 2 | 3 = 0): string {\r\n\tlet date;\r\n\tif (timestamp != undefined) {\r\n\t\tdate = new Date(timestamp);\r\n\t} else {\r\n\t\tdate = new Date();\r\n\t}\r\n\r\n\tconst Y = date.getFullYear();\r\n\tconst m = String(date.getMonth() + 1).padStart(2, '0');\r\n\tconst d = date.getDate().toString().padStart(2, '0');\r\n\r\n\tconst H = date.getHours().toString().padStart(2, '0');\r\n\tconst i = date.getMinutes().toString().padStart(2, '0');\r\n\tconst s = date.getSeconds().toString().padStart(2, '0');\r\n\r\n\tdate = Y + '-' + m + '-' + d;\r\n\r\n\tif (time) date += ' ';\r\n\tif (time >= 1) date += H;\r\n\tif (time >= 2) date += ':' + i;\r\n\tif (time >= 3) date += ':' + s;\r\n\r\n\tif (useFormat) {\r\n\t\tdate = dateFormat(date, time);\r\n\t}\r\n\r\n\treturn date;\r\n}\r\n\r\n/**\r\n * Перевод даты в формат пользователя\r\n * @param {string} date - строка в формате Y-m-d H:i:s\r\n * @param {0|1|2|3} time - 0: только дата, 1: дата и часы, 2: дата и часы с минутами, 3: дата и часы с минутами и секундами\r\n * @param {string} emptyValue - значение, которое надо вернуть, если дата не указана\r\n */\r\nexport function dateFormat(date: string, time: 0 | 1 | 2 | 3 = 2, emptyValue: string = Core.L.Not_date): string {\r\n\tif (!date || date.substring(0, 10) === '0000-00-00') {\r\n\t\tif (emptyValue && emptyValue !== '0000-00-00') {\r\n\t\t\treturn emptyValue;\r\n\t\t}\r\n\t}\r\n\r\n\tconst dateFormat = Core.state.dateFormat.toLowerCase();\r\n\r\n\tlet dateForObj = date.substring(0, 10);\r\n\r\n\tif (dateForObj.length === 7) {\r\n\t\tdateForObj += '-01';\r\n\t}\r\n\r\n\tdateForObj += ' 00:00';\r\n\r\n\t// safari fix\r\n\tdateForObj = dateForObj.replace(/-/g, '/');\r\n\r\n\tconst dateObject = new Date(dateForObj);\r\n\tif (isNaN(Number(dateObject))) {\r\n\t\treturn emptyValue;\r\n\t}\r\n\r\n\tlet result = dateFormat.\r\n\t\treplace('y', String(dateObject.getFullYear()).padStart(2, '0')).\r\n\t\treplace('m', String(dateObject.getMonth() + 1).padStart(2, '0')).\r\n\t\treplace('d', String(dateObject.getDate()).padStart(2, '0'));\r\n\r\n\tif (date.length > 10) {\r\n\t\tswitch (time) {\r\n\t\t\t// часы\r\n\t\t\tcase 1:\r\n\t\t\t\tresult += ' ' + date.substring(11, 13);\r\n\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t// часы и минуты\r\n\t\t\tcase 2:\r\n\t\t\t\tresult += ' ' + date.substring(11, 16);\r\n\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t// часы, минуты и секунды\r\n\t\t\tcase 3:\r\n\t\t\t\tresult += ' ' + date.substring(11, 19);\r\n\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\treturn result;\r\n}\r\n\r\n/**\r\n * Перевод даты из формата пользователя в системный формат\r\n * @param {string} date - строка в формате Y-m-d H:i:s\r\n * @param {string} emptyValue - значение, которое надо вернуть, если дата не указана\r\n */\r\nexport function dateUnformat(date: string, emptyValue: string = Core.L.Not_date): string {\r\n\tif (!date) {\r\n\t\treturn emptyValue;\r\n\t}\r\n\r\n\tif (date.match(/\\d\\d\\d\\d-\\d\\d-\\d\\d/)) {\r\n\t\treturn date;\r\n\t}\r\n\r\n\tconst dateFormat = Core.state.dateFormat.toLowerCase();\r\n\r\n\tconst dateChunks = date.split(/\\W/);\r\n\tconst dateFormatChunks = dateFormat.split(/\\W/);\r\n\r\n\tlet d = '';\r\n\tlet m = '';\r\n\tlet y = '';\r\n\r\n\tdateFormatChunks.forEach((type, index) => {\r\n\t\tswitch (type) {\r\n\t\t\tcase 'd':\r\n\t\t\t\td = dateChunks[index];\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'm':\r\n\t\t\t\tm = dateChunks[index];\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'y':\r\n\t\t\t\ty = dateChunks[index];\r\n\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\tlet result = y + '-' + m + '-' + d;\r\n\r\n\tif (!result.match(/\\d\\d\\d\\d-\\d\\d-\\d\\d/)) {\r\n\t\tconsole.info('Неверный формат даты, будет возращена текущая дата, ' + result);\r\n\r\n\t\tresult = genDate((new Date()).getTime(), false).substring(0, 10);\r\n\t}\r\n\r\n\treturn result;\r\n}\r\n","<script lang=\"ts\" setup>\r\nimport { computed } from 'vue';\r\nimport type { Props } from './avatar';\r\nimport { dateFormat } from '@/core/utils/date';\r\n\r\nconst props = withDefaults(defineProps<Props>(), {\r\n\tsize: 64,\r\n});\r\n\r\n// TODO: сделать компонент i18n\r\nconst i18n = {\r\n\tuser: {\r\n\t\tOnline: 'Онлайн',\r\n\t\tLastSeen: 'Заходил(а)',\r\n\t},\r\n};\r\n\r\nconst titleStatus = computed(() => {\r\n\tif (props.isOnline) {\r\n\t\treturn i18n.user.Online;\r\n\t}\r\n\r\n\tif (props.lastActiveTime) {\r\n\t\treturn i18n.user.LastSeen + ': ' + dateFormat(props.lastActiveTime, 2);\r\n\t}\r\n});\r\n</script>\r\n\r\n<template>\r\n\t<div class=\"top-avatar\">\r\n\t\t<img\r\n\t\t\tclass=\"top-avatar_image\"\r\n\t\t\t:src=\"image\"\r\n\t\t\t:title=\"props.nickname + (titleStatus ? `\\n${titleStatus}` : '')\"\r\n\t\t\talt=\"\"\r\n\t\t>\r\n\r\n\t\t<div\r\n\t\t\tv-if=\"isOnline\"\r\n\t\t\tclass=\"top-avatar_status\"\r\n\t\t\t:title=\"titleStatus\"\r\n\t\t>\r\n\t\t</div>\r\n\t</div>\r\n</template>\r\n\r\n<style module>\r\n.top-avatar {\r\n\twidth: v-bind(size+ \"px\");\r\n\theight: v-bind(size+ \"px\");\r\n\tdisplay: flex;\r\n\tflex-grow: 0;\r\n\tflex-shrink: 0;\r\n\tposition: relative;\r\n\ttop: 0;\r\n\tleft: 0;\r\n}\r\n\r\n.top-avatar_image {\r\n\tborder-radius: 50%;\r\n\twidth: 100%;\r\n\theight: 100%;\r\n}\r\n\r\n.top-avatar_status {\r\n\tborder-radius: 50%;\r\n\tborder: 2px solid var(--content-background-color);\r\n\tbackground-color: var(--color-green-500);\r\n\twidth: 25%;\r\n\theight: 25%;\r\n\tposition: absolute;\r\n\tright: 0;\r\n\tbottom: 0;\r\n}\r\n</style>","<script setup lang=\"ts\">\r\nimport { computed } from 'vue';\r\nimport type { Props } from './button';\r\n\r\nconst props = withDefaults(defineProps<Props>(), {\r\n\tcolor: 'blue',\r\n\tstyling: '',\r\n\tsize: 's',\r\n});\r\n\r\nconst tagName = computed(() => props.href ? 'a' : 'button');\r\n\r\nconst type = computed(() => props.isSubmit ? 'submit' : undefined);\r\n</script>\r\n\r\n<template>\r\n\t<component\r\n\t\t:is=\"tagName\"\r\n\t\t:class=\"{\r\n\t\t\t['top-active']: isActive,\r\n\t\t\t['top-disabled']: disabled,\r\n\t\t\t['top-forms-focusable']: !disabled,\r\n\t\t\t['top-button']: true,\r\n\t\t\t['top-button-progress']: isProgress,\r\n\t\t\t[`top-size_${size}`]: !!size,\r\n\t\t\t[`top-color_${color}`]: true,\r\n\t\t\t[`top-style_${styling}`]: !!styling,\r\n\t\t\t['top-button-withoutText']: !$slots.default,\r\n\t\t}\"\r\n\t\t:name=\"name\"\r\n\t\t:title=\"title\"\r\n\t\t:href=\"href\"\r\n\t\t:type=\"type\"\r\n\t\t:data-top-icon=\"icon || undefined\"\r\n\t\t:data-top-icon2=\"icon2 || undefined\"\r\n\t\t:disabled=\"disabled || undefined\"\r\n\t\t:inProgress=\"isProgress\"\r\n\t>\r\n\t\t<span\r\n\t\t\tv-if=\"$slots.default\"\r\n\t\t\tclass=\"top-ellipsis\"\r\n\t\t>\r\n\t\t\t<!-- @slot Текст в кнопке -->\r\n\t\t\t<slot>\r\n\t\t\t\t{{ !icon ? 'Button' : '' }}\r\n\t\t\t</slot>\r\n\t\t</span>\r\n\r\n\t\t<!-- @slot HTML в кнопке -->\r\n\t\t<slot name=\"html\"></slot>\r\n\t</component>\r\n</template>\r\n\r\n<style module>\r\n@import \"./style/button.css\";\r\n@import \"./style/style-outline.css\";\r\n@import \"./style/style-soft.css\";\r\n@import \"./style/style-transparent.css\";\r\n\r\n.top-button {\r\n\t--top-button-color: var(--color-white);\r\n\t--top-button-background-color: transparent;\r\n\t--top-button-background-color-hover: var(--top-button-background-color);\r\n\t--top-button-background-color-active: var(--top-button-background-color-hover);\r\n\t--top-button-background-color-selected: var(--top-button-background-color-hover);\r\n\t--top-button-box-shadow: none;\r\n\t--top-button-box-shadow-hover: var(--top-shadow-darken-2);\r\n\t--top-button-box-shadow-active: var(--top-shadow-darken-3);\r\n\t--top-button-box-shadow-selected: var(--top-shadow-darken-3);\r\n\t--top-forms-border-width: 0px;\r\n\t--top-icon-width: calc(var(--top-icon-size) + var(--top-forms-padding));\r\n\t--top-icon2-width: calc(var(--top-icon2-size) + var(--top-forms-padding));\r\n}\r\n\r\n.top-button.top-size_l {\r\n\t--top-forms-padding: var(--top-forms-padding_l);\r\n\t--top-forms-base-height: var(--top-forms-base-height_l);\r\n}\r\n\r\n.top-button.top-size_xl {\r\n\t--top-forms-padding: var(--top-forms-padding_xl);\r\n\t--top-forms-base-height: var(--top-forms-base-height_xl);\r\n}\r\n</style>","<script setup lang=\"ts\">\r\nimport { computed } from 'vue';\r\nimport type { Props, Emits } from './input';\r\n\r\ndefineOptions({\r\n\tinheritAttrs: false,\r\n});\r\n\r\nconst props = withDefaults(defineProps<Props>(), {\r\n\tsize: 's',\r\n\tcaptionType: '',\r\n});\r\n\r\nconst emit = defineEmits<Emits>();\r\n\r\nconst localValue = computed({\r\n\tget() {\r\n\t\treturn props.modelValue;\r\n\t},\r\n\tset(value) {\r\n\t\temit('update:modelValue', value);\r\n\t},\r\n});\r\n\r\nconst placeholder = computed(() => {\r\n\tif (props.addCleaner && !props.title) {\r\n\t\treturn '';\r\n\t}\r\n\tif (props.captionType !== '') {\r\n\t\treturn '';\r\n\t}\r\n\r\n\treturn props.title;\r\n});\r\n\r\nconst clean = (event: Event) => {\r\n\tif(props.modelValue){\r\n\t\tevent.stopPropagation();\r\n\t}\r\n\r\n\temit('update:modelValue', '');\r\n};\r\n</script>\r\n\r\n<template>\r\n\t<label\r\n\t\t:class=\"{\r\n\t\t\t['top-input']: true,\r\n\t\t\t['top-size_' + size]: true,\r\n\t\t\t['top-disabled']: disabled,\r\n\t\t\t['top-input-' + modificator]: !!modificator,\r\n\t\t\t['top-input-withCleaner']: addCleaner && localValue && localValue !== '0000-00-00',\r\n\t\t\t['top-formsCaptionWrapper']: captionType !== '',\r\n\t\t\t['top-formsCaptionWrapper-always']: captionType === 'top',\r\n\t\t}\"\r\n\t\t:data-top-icon=\"icon\"\r\n\t\t:data-top-icon2=\"icon2\"\r\n\t>\r\n\t\t<input\r\n\t\t\ttype=\"text\"\r\n\t\t\t:class=\"{\r\n\t\t\t\t['top-input_input']: true,\r\n\t\t\t\t['top-input_input-' + modificator]: !!modificator,\r\n\t\t\t\t['top-forms-focusable']: !disabled,\r\n\t\t\t\t['top-error']: isError,\r\n\t\t\t}\"\r\n\t\t\tautocomplete=\"off_always\"\r\n\t\t\t:name=\"name\"\r\n\t\t\tv-model=\"localValue\"\r\n\t\t\t:title=\"title\"\r\n\t\t\t:placeholder=\"placeholder\"\r\n\t\t\t:disabled=\"disabled\"\r\n\t\t\t:readonly=\"readonly\"\r\n\t\t\t@keydown.esc=\"(event) => (addCleaner || !!$slots.btn) && clean(event)\"\r\n\t\t\t:=\"$attrs\"\r\n\t\t>\r\n\r\n\t\t<span\r\n\t\t\tv-if=\"addCleaner && localValue && localValue !== '0000-00-00'\"\r\n\t\t\tclass=\"top-input_cleaner\"\r\n\t\t\tdata-top-icon=\"\"\r\n\t\t\t@click.prevent=\"clean\"\r\n\t\t></span>\r\n\r\n\t\t<span\r\n\t\t\tv-if=\"captionType !== ''\"\r\n\t\t\tclass=\"top-formsCaption\"\r\n\t\t>\r\n\t\t\t{{ title }}\r\n\t\t</span>\r\n\r\n\t\t<!-- @slot Слот для вставки произвольного кода в label -->\r\n\t\t<slot></slot>\r\n\t</label>\r\n</template>\r\n\r\n<style module>\r\n.top-input {\r\n\t--top-forms_clear-width: 0px;\r\n\r\n\twidth: 180px;\r\n\tposition: relative;\r\n\tdisplay: inline-flex;\r\n\talign-items: center;\r\n\tgap: var(--top-gap-1);\r\n}\r\n\r\n.top-input_input {\r\n\tbackground: var(--top-forms-background-color);\r\n\theight: var(--top-forms-base-height);\r\n\tpadding: 0;\r\n\tpadding-right: calc(max(var(--top-forms-padding), calc(var(--top-icon2-width) + var(--top-forms_clear-width))));\r\n\tpadding-left: calc(max(var(--top-forms-padding), var(--top-icon-width)));\r\n}\r\n\r\n.top-input_input:hover {\r\n\tbackground: var(--top-forms-background-color-hover);\r\n}\r\n\r\n.top-input_input:focus {\r\n\toutline-color: var(--color-theme-75);\r\n\toutline-offset: 0;\r\n}\r\n\r\n/* значки */\r\n.top-input[data-top-icon]:before,\r\n.top-input[data-top-icon2]:after {\r\n\t--top-icon-color: var(--color-text-secondary);\r\n\t--top-icon2-color: var(--color-text-secondary);\r\n\r\n\tposition: absolute;\r\n\tz-index: 3;\r\n}\r\n\r\n.top-input[data-top-icon]:before {\r\n\tleft: 0;\r\n}\r\n\r\n.top-input[data-top-icon2]:after {\r\n\tright: 0;\r\n}\r\n\r\n/* cleaner */\r\n.top-input-withCleaner {\r\n\t--top-forms_clear-width: 24px;\r\n}\r\n\r\n.top-input_cleaner {\r\n\t--top-icon-size: 16px;\r\n\t--top-icon-width: 20px;\r\n\t--top-icon-color: var(--color-text-3);\r\n\r\n\tcursor: pointer;\r\n\tborder-radius: 50%;\r\n\twidth: 20px;\r\n\theight: 16px;\r\n\tposition: absolute;\r\n\tright: calc(var(--top-forms-border-width) + max(var(--top-icon2-width), var(--top-forms-padding) / 2));\r\n\tz-index: 1;\r\n\tdisplay: flex;\r\n\talign-items: center;\r\n\tjustify-content: center;\r\n}\r\n\r\n.top-input_cleaner:hover {\r\n\t--top-icon-color: var(--color-text-2);\r\n}\r\n\r\n/* TODO: перенести в inputsRange */\r\n.top-input_input {\r\n\twidth: 50%;\r\n\tflex-grow: 1;\r\n}\r\n</style>","<script lang=\"ts\">\r\nconst useNativeDatepicker = !!document.documentElement.ontouchstart && !!document.createElement('input').showPicker;\r\n\r\nlet onInputLazy = (_e: any) => { };\r\n</script>\r\n\r\n<script setup lang=\"ts\">\r\nimport { ref, computed, onUnmounted } from 'vue';\r\nimport { dateFormat, dateUnformat } from '@/core/utils/date';\r\nimport type { Props, Emits } from './inputDate';\r\nimport { Input } from '@/components/forms/forms';\r\nimport Core from '@/core/core/core';\r\n\r\nconst props = withDefaults(defineProps<Props>(), {\r\n\ticon2: '',\r\n});\r\n\r\nconst emit = defineEmits<Emits>();\r\n\r\nonUnmounted(() => {\r\n\tif ($el) {\r\n\t\t$el.datepicker('destroy');\r\n\t}\r\n});\r\n\r\nconst el = ref();\r\nlet $el: any;\r\n\r\nconst localValue = computed({\r\n\tget() {\r\n\t\treturn dateFormat(props.modelValue, 2, '0000-00-00');\r\n\t},\r\n\r\n\tset(value) {\r\n\t\tvalue = dateUnformat(value, '0000-00-00');\r\n\r\n\t\temit('update:modelValue', value);\r\n\t},\r\n});\r\n\r\nlet oninput = (e: any) => {\r\n\tonInputLazy(e);\r\n};\r\n\r\nlet onchange = (e: any) => {\r\n\tconst date = dateUnformat(e.target.value);\r\n\tconst dateFormatted = dateFormat(date);\r\n\r\n\tif (!dateFormatted || dateFormatted === Core.L.Not_date || e.target.value !== dateFormatted) {\r\n\t\te.target.value = localValue.value;\r\n\r\n\t\treturn;\r\n\t}\r\n\r\n\tlocalValue.value = e.target.value;\r\n};\r\n\r\n/**\r\n * Инициализпация функций выбора дат\r\n *\r\n * Для не нативного datepicker\r\n */\r\nasync function init(e: any) {\r\n\tconst datepicker = await import('./datepicker');\r\n\r\n\t// формат ввода\r\n\tonInputLazy = datepicker.oninput;\r\n\r\n\t// datepicker\r\n\t$el = datepicker.connectDatepicker(e.target, {\r\n\t\tonSelect: () => onchange(e),\r\n\t});\r\n\r\n\tif ($el) {\r\n\t\t$el.datepicker('show');\r\n\t}\r\n}\r\n</script>\r\n\r\n<template>\r\n\t<Input\r\n\t\tv-if=\"useNativeDatepicker\"\r\n\t\t:=\"$props\"\r\n\t\t:modelValue=\"localValue\"\r\n\t\treadonly\r\n\t\t@click=\"el.showPicker()\"\r\n\t>\r\n\t\t<input\r\n\t\t\tref=\"el\"\r\n\t\t\ttype=\"date\"\r\n\t\t\tclass=\"top-input_input-date\"\r\n\t\t\t:modelValue=\"modelValue\"\r\n\t\t\t@change=\"(e: any) => localValue = e.target.value\"\r\n\t\t\ttabindex=\"-1\"\r\n\t\t/>\r\n\t</Input>\r\n\r\n\t<Input\r\n\t\tv-else\r\n\t\t:=\"$props\"\r\n\t\t:modelValue=\"localValue\"\r\n\t\t@update:modelValue=\"(newValue) => (newValue === '') ? localValue = '' : ''\"\r\n\t\t@input.date=\"oninput\"\r\n\t\t@focus.once.date=\"init\"\r\n\t\t@change.date=\"onchange\"\r\n\t\tmodificator=\"datepicker\"\r\n\t/>\r\n</template>\r\n\r\n<style module>\r\n.top-input-datepicker {\r\n\twidth: calc(105px + var(--top-icon-width) + var(--top-icon2-width));\r\n}\r\n\r\n.top-input_input-date {\r\n\topacity: 0;\r\n\tposition: absolute;\r\n\ttop: 0;\r\n\tright: 0;\r\n\tbottom: 0;\r\n\tleft: 0;\r\n\tz-index: -1;\r\n}\r\n\r\n.top-input_input-date::-webkit-inner-spin-button {\r\n\tdisplay: none;\r\n}\r\n\r\n.top-input_input-date::-webkit-calendar-picker-indicator {\r\n\topacity: 0;\r\n}\r\n</style>","<script setup lang=\"ts\">\r\nimport { computed } from 'vue';\r\nimport type { Props, Emits } from './radio';\r\nimport ControlLabel from '../controlLabel/controlLabel.vue';\r\n\r\nconst props = defineProps<Props>();\r\nconst emit = defineEmits<Emits>();\r\n\r\nconst localValue = computed({\r\n\tget() {\r\n\t\treturn props.modelValue;\r\n\t},\r\n\tset(value) {\r\n\t\temit('update:modelValue', value);\r\n\t},\r\n});\r\n\r\n</script>\r\n\r\n<template>\r\n\t<label\r\n\t\t:class=\"{\r\n\t\t\t['top-forms-optionWrapper']: true,\r\n\t\t\t['top-radio']: true,\r\n\t\t\t['top-radio_' + name]: name !== '',\r\n\t\t\t['top-disabled']: disabled,\r\n\t\t\t['top-error']: isError && !disabled,\r\n\t\t}\"\r\n\t>\r\n\t\t<input\r\n\t\t\ttype=\"radio\"\r\n\t\t\t:class=\"{\r\n\t\t\t\t['top-forms-focusable']: !disabled,\r\n\t\t\t\t['top-forms-option']: true,\r\n\t\t\t\t['top-radio_input']: true,\r\n\t\t\t\t['top-error']: isError && !disabled,\r\n\t\t\t}\"\r\n\t\t\tv-model=\"localValue\"\r\n\t\t\t:name=\"name\"\r\n\t\t\t:value=\"value\"\r\n\t\t\t:disabled=\"disabled\"\r\n\t\t>\r\n\r\n\t\t<ControlLabel\r\n\t\t\tv-if=\"$slots.default\"\r\n\t\t\t:description=\"description\"\r\n\t\t\t:disabled=\"disabled\"\r\n\t\t>\r\n\t\t\t<!-- @slot Слот с заголовком -->\r\n\t\t\t<slot></slot>\r\n\t\t</ControlLabel>\r\n\t</label>\r\n</template>\r\n\r\n<style module>\r\n:root {\r\n\t--top-radio-background-color: var(--content-background-color);\r\n\t--top-radio-background-color-hover: var(--top-radio-background-color);\r\n\t--top-radio-background-color-active: var(--top-radio-background-color);\r\n}\r\n\r\n.top-radio {\r\n\tcursor: pointer;\r\n}\r\n\r\n.top-radio_input {\r\n\tborder-radius: 50%;\r\n\tbackground: var(--content-background-color);\r\n\tborder: 1px solid var(--top-forms-border-color);\r\n\twidth: calc(var(--top-forms-option-height) - 3px * 2);\r\n\theight: calc(var(--top-forms-option-height) - 3px * 2);\r\n}\r\n\r\n.top-radio_input:hover {\r\n\tborder-color: var(--top-forms-option-color);\r\n\tbackground: var(--color-theme-50)\r\n}\r\n\r\n.top-radio_input:checked {\r\n\tborder-color: var(--top-forms-option-color);\r\n\tborder-width: 5px;\r\n}\r\n\r\n.top-radio_input:checked:hover {\r\n\tborder-color: var(--top-forms-option-color-hover);\r\n}\r\n\r\n/* disabled */\r\n.top-radio_input:disabled {\r\n\tborder-color: var(--color-line-1-opacity);\r\n\tbackground: var(--color-theme-50);\r\n}\r\n\r\n/* disabled selected */\r\n.top-radio_input:checked:disabled {\r\n\tborder-color: var(--color-theme-400);\r\n}\r\n\r\n/* isError */\r\n.top-radio_input.top-error {\r\n\tborder-color: var(--color-negative);\r\n}\r\n\r\n.top-radio_input.top-error:hover {\r\n\tborder-color: var(--color-negative-2);\r\n}\r\n</style>","<script setup lang=\"ts\">\r\nimport { computed } from 'vue';\r\nimport type { Props, Emits } from './switcher';\r\nimport ControlLabel from '../controlLabel/controlLabel.vue';\r\n\r\nconst props = defineProps<Props>();\r\nconst emit = defineEmits<Emits>();\r\n\r\nconst localValue = computed({\r\n\tget() {\r\n\t\treturn props.modelValue;\r\n\t},\r\n\tset(value) {\r\n\t\temit('update:modelValue', value);\r\n\t},\r\n});\r\n</script>\r\n\r\n<template>\r\n\t<label\r\n\t\t:class=\"{\r\n\t\t['top-forms-optionWrapper']: true,\r\n\t\t['top-checkboxSwitcher']: true,\r\n\t\t['top-disabled']: disabled,\r\n\t\t['top-error']: isError && !disabled,\r\n\t}\"\r\n\t>\r\n\t\t<input\r\n\t\t\ttype=\"checkbox\"\r\n\t\t\t:class=\"{\r\n\t\t\t\t['top-forms-focusable']: !disabled,\r\n\t\t\t\t['top-forms-option']: true,\r\n\t\t\t\t['top-checkboxSwitcher_input']: true,\r\n\t\t\t\t['top-error']: isError && !disabled,\r\n\t\t\t}\"\r\n\t\t\tv-model=\"localValue\"\r\n\t\t\t:name=\"name\"\r\n\t\t\t:value=\"value\"\r\n\t\t\t:disabled=\"disabled\"\r\n\t\t>\r\n\r\n\t\t<ControlLabel\r\n\t\t\tv-if=\"$slots.default\"\r\n\t\t\t:description=\"description\"\r\n\t\t\t:disabled=\"disabled\"\r\n\t\t>\r\n\t\t\t<!-- @slot Слот с заголовком -->\r\n\t\t\t<slot></slot>\r\n\t\t</ControlLabel>\r\n\t</label>\r\n</template>\r\n\r\n<style module>\r\n.top-checkboxSwitcher {\r\n\tcursor: pointer;\r\n\tdisplay: inline-flex;\r\n\tgap: 4px;\r\n}\r\n\r\n.top-checkboxSwitcher_input {\r\n\tborder-radius: 9px;\r\n\tborder: none;\r\n\tbackground: var(--color-theme-100);\r\n\twidth: 36px;\r\n\theight: 18px;\r\n\tposition: relative;\r\n}\r\n\r\n.top-checkboxSwitcher_input:before {\r\n\tcontent: '';\r\n\tborder-radius: 50%;\r\n\tbackground: var(--color-white);\r\n\twidth: 12px;\r\n\theight: 12px;\r\n\tmargin: 3px;\r\n\tposition: absolute;\r\n\ttop: 0;\r\n\tleft: 0;\r\n\r\n\ttransition: left 0.1s;\r\n}\r\n\r\n.top-checkboxSwitcher_input:hover {\r\n\tbackground: var(--color-theme-150);\r\n}\r\n\r\n/* checked */\r\n.top-checkboxSwitcher_input:checked {\r\n\tbackground: var(--top-forms-option-color);\r\n}\r\n\r\n.top-checkboxSwitcher_input:checked:hover {\r\n\tbackground: var(--top-forms-option-color-hover);\r\n}\r\n\r\n.top-checkboxSwitcher_input:checked:before {\r\n\tleft: 50%;\r\n}\r\n\r\n/* disabled */\r\n.top-checkboxSwitcher_input:disabled {\r\n\tbackground: var(--color-theme-400);\r\n}\r\n\r\n/* isError */\r\n.top-checkboxSwitcher_input.top-error {\r\n\tbackground: var(--color-negative);\r\n}\r\n\r\n.top-checkboxSwitcher_input.top-error:hover {\r\n\tbackground: var(--color-negative-2);\r\n}\r\n</style>","<script setup lang=\"ts\">\r\nimport { computed } from 'vue';\r\nimport Hint from '@/components/forms/hint/hint.vue';\r\nimport type { Props, Emits } from './textarea';\r\n\r\ndefineOptions({\r\n\tinheritAttrs: false,\r\n});\r\n\r\nconst props = withDefaults(defineProps<Props>(), {\r\n\trows: 5,\r\n\tminHeight: 120,\r\n});\r\n\r\nconst emit = defineEmits<Emits>();\r\n\r\nconst value = computed({\r\n\tget () {\r\n\t\treturn props.modelValue;\r\n\t},\r\n\tset (value) {\r\n\t\temit('update:modelValue', value);\r\n\t},\r\n});\r\n</script>\r\n\r\n<template>\r\n\t<label\r\n\t\t:class=\"{\r\n\t\t\t['top-textarea']: true,\r\n\t\t\t['top-textarea-' + name]: name,\r\n\t\t\t['top-disabled']: disabled,\r\n\t\t}\"\r\n\t>\r\n\t\t<textarea\r\n\t\t\ttype=\"text\"\r\n\t\t\t:class=\"{\r\n\t\t\t\t['top-forms-focusable']: !disabled,\r\n\t\t\t\t['top-textarea_textarea']: true,\r\n\t\t\t\t['top-textarea_textarea-expandable']: expandable,\r\n\t\t\t\t['top-error']: isError,\r\n\t\t\t}\"\r\n\t\t\tautocomplete=\"off_always\"\r\n\t\t\t:name=\"name\"\r\n\t\t\t:placeholder=\"placeholder\"\r\n\t\t\t:disabled=\"disabled\"\r\n\t\t\t:readonly=\"readonly\"\r\n\t\t\t:rows=\"!expandable ? rows : undefined\"\r\n\t\t\t:=\"$attrs\"\r\n\t\t\tv-model=\"value\"\r\n\t\t/>\r\n\r\n\t\t<div\r\n\t\t\tv-if=\"expandable\"\r\n\t\t\tclass=\"top-textarea_pseudoContent\"\r\n\t\t>\r\n\t\t\t{{ value + ' ' }}\r\n\t\t</div>\r\n\r\n\t\t<Hint\r\n\t\t\tv-if=\"hint\"\r\n\t\t\tclass=\"top-textarea_hint\"\r\n\t\t\t:hint=\"hint\"\r\n\t\t\tv-top-tooltip\r\n\t\t/>\r\n\t</label>\r\n</template>\r\n\r\n<style module>\r\n.top-textarea {\r\n\twidth: 180px;\r\n\tdisplay: inline-flex;\r\n\talign-items: center;\r\n\tposition: relative;\r\n}\r\n\r\n.top-textarea_textarea {\r\n\tbackground: var(--top-forms-background-color);\r\n\twidth: 100%;\r\n\tpadding: var(--top-forms-padding);\r\n\tresize: none;\r\n}\r\n\r\n.top-textarea_textarea:hover {\r\n\tbackground: var(--top-forms-background-color-hover);\r\n}\r\n\r\n.top-textarea_textarea:focus {\r\n\toutline-color: var(--color-theme-75);\r\n\toutline-offset: 0px;\r\n}\r\n\r\n.top-textarea_textarea.top-textarea_textarea-expandable {\r\n\twidth: 100%;\r\n\theight: 100%;\r\n\toverflow: hidden;\r\n\tposition: absolute;\r\n\ttop: 0;\r\n\tleft: 0;\r\n}\r\n\r\n.top-textarea_pseudoContent {\r\n\tbox-sizing: border-box;\r\n\tmin-height: v-bind(minHeight + 'px');\r\n\tpadding: var(--top-forms-padding);\r\n\tfont-size: 14px;\r\n\twhite-space: pre-wrap;\r\n\toverflow-wrap: anywhere;\r\n\tpointer-events: none;\r\n\topacity: 0;\r\n\tz-index: -1;\r\n}\r\n\r\n.top-textarea_hint {\r\n\tposition: absolute;\r\n\ttop: 2px;\r\n\tright: 2px;\r\n}\r\n</style>","<script setup lang=\"ts\">\r\nimport { toRef, computed, watch } from 'vue';\r\nimport type { Props, Emits } from './select';\r\n\r\nconst props = withDefaults(defineProps<Props>(), {\r\n\tsize: 's',\r\n});\r\n\r\nconst emit = defineEmits<Emits>();\r\n\r\nconst localValue = computed({\r\n\tget() {\r\n\t\treturn props.modelValue;\r\n\t},\r\n\r\n\tset(value) {\r\n\t\temit('update:modelValue', value);\r\n\t},\r\n});\r\n\r\n/**\r\n * Иконка выбранного option\r\n */\r\nconst optionIcon = computed(() => {\r\n\treturn optionByValue.value.get(localValue.value)?.icon;\r\n});\r\n\r\n/**\r\n * Словарь с доступными options\r\n */\r\nconst optionByValue = computed(() => {\r\n\tconst res = new Map();\r\n\r\n\tprops.options.forEach((option) => {\r\n\t\tif (option.disabled) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (option.children) {\r\n\t\t\toption.children.forEach(subOption => {\r\n\t\t\t\tif (subOption.disabled) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tres.set(subOption.value, subOption);\r\n\t\t\t});\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tres.set(option.value, option);\r\n\t});\r\n\r\n\treturn res;\r\n});\r\n\r\n/**\r\n * Логика для обртаной своместимости:\r\n * - null - заменить на первое доступное значение\r\n * - undefined - заменить на первое доступное значение\r\n */\r\nwatch([\r\n\ttoRef(props.modelValue),\r\n\toptionByValue,\r\n], () => {\r\n\tif ((localValue.value === null || localValue.value === undefined) && optionByValue.value.size) {\r\n\t\tconsole.warn('Пожалуйста, не передавайте в компонент Select значения null и undefined');\r\n\r\n\t\tlocalValue.value = optionByValue.value.keys().next().value;\r\n\t}\r\n}, { immediate: true });\r\n\r\n/**\r\n * Выбрать следующее доступное значение\r\n */\r\nconst selectNextValue = () => {\r\n\tconst listEnabledValues = [...optionByValue.value.keys()];\r\n\tconst currentIndex = listEnabledValues.indexOf(localValue.value);\r\n\tconst nextIndex = (currentIndex + 1) % listEnabledValues.length;\r\n\r\n\tlocalValue.value = listEnabledValues[nextIndex];\r\n};\r\n</script>\r\n\r\n<template>\r\n\t<label\r\n\t\t:class=\"{\r\n\t\t\t['top-select']:true,\r\n\t\t\t['top-select-' + name]:name,\r\n\t\t\t['top-size_' + size]: true,\r\n\t\t\t['top-formsCaptionWrapper']: !!title,\r\n\t\t\t['top-select-error']: isError,\r\n\t\t\t['top-disabled']: disabled,\r\n\t\t}\"\r\n\t\t:data-value=\"localValue\"\r\n\t\t:data-top-icon=\"icon\"\r\n\t\t:data-top-icon2=\"optionIcon\"\r\n\t>\r\n\t\t<select\r\n\t\t\t:class=\"{\r\n\t\t\t\t['top-forms-focusable']: !disabled,\r\n\t\t\t\t['top-select_select']: true,\r\n\t\t\t\t['top-select_arrow']: true,\r\n\t\t\t\t['top-error']: isError,\r\n\t\t\t}\"\r\n\t\t\t:name=\"name\"\r\n\t\t\t:disabled=\"disabled\"\r\n\t\t\tv-model=\"localValue\"\r\n\t\t>\r\n\t\t\t<template v-for=\"[_index, option] of options.entries()\">\r\n\t\t\t\t<optgroup\r\n\t\t\t\t\tv-if=\"option.children\"\r\n\t\t\t\t\t:key=\"'group_' + option.value\"\r\n\t\t\t\t\t:label=\"option.title\"\r\n\t\t\t\t\t:disabled=\"option.disabled\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<option\r\n\t\t\t\t\t\tv-for=\"[_index, subOption] of option.children.entries()\"\r\n\t\t\t\t\t\t:key=\"option.value\"\r\n\t\t\t\t\t\t:value=\"subOption.value\"\r\n\t\t\t\t\t\t:selected=\"subOption.value === localValue\"\r\n\t\t\t\t\t\t:disabled=\"subOption.disabled\"\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t{{ subOption.title }}\r\n\t\t\t\t\t</option>\r\n\t\t\t\t</optgroup>\r\n\r\n\t\t\t\t<option\r\n\t\t\t\t\tv-else\r\n\t\t\t\t\t:key=\"option.value\"\r\n\t\t\t\t\t:value=\"option.value\"\r\n\t\t\t\t\t:selected=\"option.value === localValue\"\r\n\t\t\t\t\t:disabled=\"option.disabled\"\r\n\t\t\t\t>\r\n\t\t\t\t\t{{ option.title }}\r\n\t\t\t\t</option>\r\n\t\t\t</template>\r\n\t\t</select>\r\n\r\n\t\t<span\r\n\t\t\tv-if=\"addChanger && optionByValue.size && !disabled\"\r\n\t\t\tclass=\"top-changer\"\r\n\t\t\t@click=\"selectNextValue\"\r\n\t\t></span>\r\n\r\n\t\t<span\r\n\t\t\tv-if=\"title\"\r\n\t\t\tclass=\"top-formsCaption\"\r\n\t\t>\r\n\t\t\t{{ title }}\r\n\t\t</span>\r\n\t</label>\r\n</template>\r\n\r\n<style module>\r\n.top-select {\r\n\t--top-icon-color: var(--color-text-3);\r\n\t--top-icon2-color: var(--color-text-2);\r\n\r\n\talign-items: center;\r\n\twidth: 180px;\r\n\tmax-width: 100%;\r\n\tdisplay: inline-flex;\r\n}\r\n\r\n.top-select-error {\r\n\t--top-icon-color: var(--color-negative);\r\n\t--top-icon2-color: var(--color-negative);\r\n}\r\n\r\n.top-select_select {\r\n\tbackground-color: var(--top-forms-background-color);\r\n\r\n\t/* для select вместо padding нужно использовать text-indent */\r\n\tpadding-left: var(--top-forms-padding);\r\n\r\n\t/* если есть значки, добавить отступ на их ширину с учетом уже добавленного padding */\r\n\ttext-indent: calc(clamp(0px, calc(var(--top-icon-both-width) - var(--top-forms-padding)), calc(var(--top-icon-both-width) - var(--top-forms-padding))));\r\n\r\n\twidth: 100%;\r\n\theight: var(--top-forms-base-height);\r\n\ttext-overflow: ellipsis;\r\n\twhite-space: nowrap;\r\n\tflex-grow: 1;\r\n\toverflow: hidden;\r\n}\r\n\r\n.top-select_select:focus {\r\n\toutline-color: var(--color-theme-75);\r\n\toutline-offset: 0;\r\n}\r\n\r\n.top-select_select:disabled {\r\n\tbackground: var(--color-theme-50);\r\n}\r\n\r\n.top-select optgroup {\r\n\tcolor: var(--color-text-1);\r\n\tfont-style: normal;\r\n}\r\n\r\n.top-select option {\r\n\tbackground: var(--content-background-color);\r\n\tcolor: var(--color-text-1);\r\n}\r\n\r\n/* хром не мерняет цвет для optgroup option, стили оставлены по умолчанию */\r\n/*\r\n.top-select optgroup:disabled,\r\n.top-select optgroup option,\r\n.top-select option:disabled {\r\n\r\n}\r\n*/\r\n\r\n/* https://bugzilla.mozilla.org/show_bug.cgi?id=1743066 */\r\n@-moz-document url-prefix() {\r\n\t.top-select_select {\r\n\t\ttext-indent: calc(clamp(0px, calc(var(--top-icon-both-width) - var(--top-forms-padding)), calc(var(--top-icon-both-width) - var(--top-forms-padding))) / 2);\r\n\t}\r\n}\r\n\r\n@media only screen and (min-width: 900px) {\r\n\t/* changer */\r\n\t.top-changer {\r\n\t\tcursor: pointer;\r\n\t\tborder-radius: 100%;\r\n\t\twidth: 0;\r\n\t\ttransform: translateX(-44px);\r\n\t\tcolor: var(--color-text-secondary-2);\r\n\t\tfont-size: 16px;\r\n\t\tline-height: 1;\r\n\t\tdisplay: none;\r\n\t\tz-index: 2;\r\n\t\torder: 4;\r\n\t}\r\n\r\n\t.top-changer:hover {\r\n\t\tcolor: var(--color-primary);\r\n\t}\r\n\r\n\t.top-changer:after {\r\n\t\tcontent: '';\r\n\t\tbackground-color: var(--top-forms-background-color);\r\n\t\tfont-family: 'Topvisor-2';\r\n\t}\r\n\r\n\t*:hover > .top-changer {\r\n\t\tdisplay: block;\r\n\t}\r\n}\r\n</style>"],"names":["isRetina","isMobile","isApp","isMacOS","isSafari","isChrome","isSafari2","getCommandKeyLabel","Page","onResizeTimer","onResizeListeners","windowSize","listener","callback","e","onResize","Events","addOnReize","removeOnResize","options","_a","state","_b","$","el","_window$1","tvTooltipGenOptions","binding","vnode","tooltip","instance","Core","vue","media","type","elStyle","style","app","options2","device","date","timestamp","Y","m","H","i","s","time","dateFormat","emptyValue","dateForObj","result","dateFormat2","dateObject","d","y","dateChunks","index","props","__props","titleStatus","i18n","tagName","emit","__emit","localValue","value","placeholder","clean","event","onInputLazy","_e","$el","oninput","onchange","dateFormatted","init","datepicker","resolve","reject","require","value2","optionIcon","optionByValue","res","option","subOption","listEnabledValues"],"mappings":"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"}