@topvisor/ui 0.0.35 → 0.0.36

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 (266) hide show
  1. package/{src/components/forms/inputDate/datepicker.css → .chunks/datepicker-1e725859.amd.js} +3 -2
  2. package/.chunks/datepicker-1e725859.amd.js.map +1 -0
  3. package/.chunks/datepicker-ad465c48.es.js +275 -0
  4. package/.chunks/datepicker-ad465c48.es.js.map +1 -0
  5. package/.chunks/forms-2891e074.amd.js +3 -0
  6. package/.chunks/forms-2891e074.amd.js.map +1 -0
  7. package/.chunks/forms-db4cb24d.es.js +946 -0
  8. package/.chunks/forms-db4cb24d.es.js.map +1 -0
  9. package/.chunks/popup-0f540839.es.js +700 -0
  10. package/.chunks/popup-0f540839.es.js.map +1 -0
  11. package/.chunks/popup-e49a9bab.amd.js +341 -0
  12. package/.chunks/popup-e49a9bab.amd.js.map +1 -0
  13. package/README.md +63 -30
  14. package/common/common.amd.js +2 -0
  15. package/common/common.amd.js.map +1 -0
  16. package/common/common.js +2 -0
  17. package/common/common.js.map +1 -0
  18. package/core/core.amd.js +2 -0
  19. package/core/core.amd.js.map +1 -0
  20. package/core/core.js +6 -0
  21. package/core/core.js.map +1 -0
  22. package/core.css +1 -0
  23. package/dark.css +1 -0
  24. package/forms/forms.amd.js +2 -0
  25. package/forms/forms.amd.js.map +1 -0
  26. package/forms/forms.js +15 -0
  27. package/forms/forms.js.map +1 -0
  28. package/forms/helpers.amd.js +2 -0
  29. package/forms/helpers.amd.js.map +1 -0
  30. package/forms/helpers.js +9 -0
  31. package/forms/helpers.js.map +1 -0
  32. package/forms.css +1 -0
  33. package/formsExt/formsExt.amd.js +3 -0
  34. package/formsExt/formsExt.amd.js.map +1 -0
  35. package/formsExt/formsExt.js +207 -0
  36. package/formsExt/formsExt.js.map +1 -0
  37. package/formsExt.css +1 -0
  38. package/light.css +1 -0
  39. package/package.json +1 -50
  40. package/popup/popup.amd.js +3 -0
  41. package/popup/popup.amd.js.map +1 -0
  42. package/popup/popup.js +144 -0
  43. package/popup/popup.js.map +1 -0
  44. package/popup/worker.amd.js +2 -0
  45. package/popup/worker.amd.js.map +1 -0
  46. package/popup/worker.js +154 -0
  47. package/popup/worker.js.map +1 -0
  48. package/popup.css +1 -0
  49. package/tabs/tabs.amd.js +3 -0
  50. package/tabs/tabs.amd.js.map +1 -0
  51. package/tabs/tabs.js +97 -0
  52. package/tabs/tabs.js.map +1 -0
  53. package/tabs.css +1 -0
  54. package/utils/date.amd.js +2 -0
  55. package/utils/date.amd.js.map +1 -0
  56. package/utils/date.js +6 -0
  57. package/utils/date.js.map +1 -0
  58. package/utils/device.amd.js +2 -0
  59. package/utils/device.amd.js.map +1 -0
  60. package/utils/device.js +6 -0
  61. package/utils/device.js.map +1 -0
  62. package/utils/dom.amd.js +2 -0
  63. package/utils/dom.amd.js.map +1 -0
  64. package/utils/dom.js +64 -0
  65. package/utils/dom.js.map +1 -0
  66. package/.storybook/TopTheme.js +0 -82
  67. package/.storybook/TopThemeManager.js +0 -44
  68. package/.storybook/main.ts +0 -43
  69. package/.storybook/manager.ts +0 -28
  70. package/.storybook/preview-head.html +0 -16
  71. package/.storybook/preview.ts +0 -48
  72. package/.storybook/vue/coreDecorator.ts +0 -19
  73. package/.storybook/vue/vModelDecorator.ts +0 -27
  74. package/.vscode/extensions.json +0 -11
  75. package/.vscode/keybindings.example.json +0 -121
  76. package/.vscode/settings.json +0 -46
  77. package/Dockerfile +0 -3
  78. package/NPM.md +0 -25
  79. package/PUBLISH.md +0 -18
  80. package/STORYBOOK.md +0 -27
  81. package/USE_IN_PROJECT.md +0 -29
  82. package/build/afterBuild.sh +0 -12
  83. package/build/cssModules.ts +0 -39
  84. package/build/plugin/amdFix.ts +0 -46
  85. package/build/rollup.config.ts +0 -18
  86. package/nbproject/project.properties +0 -11
  87. package/nbproject/project.xml +0 -9
  88. package/public/README.md +0 -63
  89. package/src/components/common/common.ts +0 -1
  90. package/src/components/common/icon/icon.ts +0 -4
  91. package/src/components/common/icon/icon.vue +0 -15
  92. package/src/components/component.ts +0 -133
  93. package/src/components/forms/button/button.stories.ts +0 -112
  94. package/src/components/forms/button/button.ts +0 -51
  95. package/src/components/forms/button/button.vue +0 -75
  96. package/src/components/forms/button/stories/README.md +0 -35
  97. package/src/components/forms/button/stories/overview.vue +0 -33
  98. package/src/components/forms/button/style/button.css +0 -124
  99. package/src/components/forms/button/style/style-outline.css +0 -42
  100. package/src/components/forms/button/style/style-soft.css +0 -31
  101. package/src/components/forms/button/style/style-transparent.css +0 -35
  102. package/src/components/forms/checkbox/checkbox.stories.ts +0 -33
  103. package/src/components/forms/checkbox/checkbox.ts +0 -23
  104. package/src/components/forms/checkbox/checkbox.vue +0 -135
  105. package/src/components/forms/checkbox/stories/overview.vue +0 -171
  106. package/src/components/forms/controlLabel/controlLabel.stories.ts +0 -38
  107. package/src/components/forms/controlLabel/controlLabel.ts +0 -4
  108. package/src/components/forms/controlLabel/controlLabel.vue +0 -48
  109. package/src/components/forms/forms.ts +0 -10
  110. package/src/components/forms/helpers.ts +0 -10
  111. package/src/components/forms/hint/hint.stories.ts +0 -46
  112. package/src/components/forms/hint/hint.ts +0 -8
  113. package/src/components/forms/hint/hint.vue +0 -32
  114. package/src/components/forms/input/input.stories.ts +0 -31
  115. package/src/components/forms/input/input.ts +0 -34
  116. package/src/components/forms/input/input.vue +0 -170
  117. package/src/components/forms/input/stories/overview.vue +0 -61
  118. package/src/components/forms/inputDate/datepicker.ts +0 -101
  119. package/src/components/forms/inputDate/inputDate.stories.ts +0 -41
  120. package/src/components/forms/inputDate/inputDate.ts +0 -4
  121. package/src/components/forms/inputDate/inputDate.vue +0 -127
  122. package/src/components/forms/inputDate/stories/overview.vue +0 -35
  123. package/src/components/forms/radio/radio.stories.ts +0 -34
  124. package/src/components/forms/radio/radio.ts +0 -15
  125. package/src/components/forms/radio/radio.vue +0 -107
  126. package/src/components/forms/radio/stories/overview.vue +0 -79
  127. package/src/components/forms/select/select.stories.ts +0 -34
  128. package/src/components/forms/select/select.ts +0 -36
  129. package/src/components/forms/select/select.vue +0 -253
  130. package/src/components/forms/select/stories/exampleOptions.ts +0 -71
  131. package/src/components/forms/select/stories/overview.vue +0 -60
  132. package/src/components/forms/switcher/stories/overview.vue +0 -139
  133. package/src/components/forms/switcher/switcher.stories.ts +0 -33
  134. package/src/components/forms/switcher/switcher.ts +0 -22
  135. package/src/components/forms/switcher/switcher.vue +0 -113
  136. package/src/components/forms/textarea/stories/overview.vue +0 -62
  137. package/src/components/forms/textarea/textarea.stories.ts +0 -33
  138. package/src/components/forms/textarea/textarea.ts +0 -38
  139. package/src/components/forms/textarea/textarea.vue +0 -119
  140. package/src/components/formsExt/editArea/editArea.stories.ts +0 -72
  141. package/src/components/formsExt/editArea/editArea.ts +0 -25
  142. package/src/components/formsExt/editArea/editArea.vue +0 -172
  143. package/src/components/formsExt/editArea/stories/README.md +0 -17
  144. package/src/components/formsExt/editArea/stories/overview.vue +0 -66
  145. package/src/components/formsExt/editInput/editInput.stories.ts +0 -36
  146. package/src/components/formsExt/editInput/editInput.ts +0 -20
  147. package/src/components/formsExt/editInput/editInput.vue +0 -57
  148. package/src/components/formsExt/editInput/stories/overview.vue +0 -54
  149. package/src/components/formsExt/formsExt.ts +0 -3
  150. package/src/components/formsExt/radioGroup/radioGroup.stories.ts +0 -51
  151. package/src/components/formsExt/radioGroup/radioGroup.ts +0 -28
  152. package/src/components/formsExt/radioGroup/radioGroup.vue +0 -143
  153. package/src/components/formsExt/radioGroup/stories/overview.vue +0 -78
  154. package/src/components/formsExt/radioGroup/styles/top-scrollBar.css +0 -52
  155. package/src/components/helper.js +0 -10
  156. package/src/components/helpersStories.ts +0 -151
  157. package/src/components/popup/lib/popup.globalEvents.js +0 -205
  158. package/src/components/popup/lib/popup.js +0 -702
  159. package/src/components/popup/lib/worker.globalEvents.js +0 -78
  160. package/src/components/popup/lib/worker.js +0 -232
  161. package/src/components/popup/popup/listItem.vue +0 -42
  162. package/src/components/popup/popup/opener.vue +0 -74
  163. package/src/components/popup/popup/popup.stories.ts +0 -68
  164. package/src/components/popup/popup/popup.ts +0 -93
  165. package/src/components/popup/popup/popup.vue +0 -95
  166. package/src/components/popup/popup/stories/README.md +0 -34
  167. package/src/components/popup/popup/stories/listItems.vue +0 -44
  168. package/src/components/popup/popup/stories/listSubItems.vue +0 -52
  169. package/src/components/popup/popup/stories/overview.vue +0 -208
  170. package/src/components/popup/popup/style/popup.css +0 -243
  171. package/src/components/popup/popup/style/popup.m.css +0 -71
  172. package/src/components/popup/popup/style/popup.pc.css +0 -28
  173. package/src/components/popup/popup.ts +0 -3
  174. package/src/components/popup/worker.ts +0 -1
  175. package/src/components/tabs/tabs/content.vue +0 -24
  176. package/src/components/tabs/tabs/stories/README.md +0 -10
  177. package/src/components/tabs/tabs/tab.vue +0 -52
  178. package/src/components/tabs/tabs/tabs.stories.ts +0 -171
  179. package/src/components/tabs/tabs/tabs.ts +0 -22
  180. package/src/components/tabs/tabs/tabs.vue +0 -64
  181. package/src/components/tabs/tabs.ts +0 -3
  182. package/src/core/base/Colors.stories.ts +0 -15
  183. package/src/core/base/Layout.stories.ts +0 -15
  184. package/src/core/base/Properties.stories.ts +0 -15
  185. package/src/core/base/base.mdx +0 -21
  186. package/src/core/core/core.ts +0 -144
  187. package/src/core/core/events.ts +0 -54
  188. package/src/core/core/options.ts +0 -15
  189. package/src/core/core/state.ts +0 -44
  190. package/src/core/directives/tooltip.ts +0 -55
  191. package/src/core/theme/Colors.stories.ts +0 -15
  192. package/src/core/theme/Properties.stories.ts +0 -15
  193. package/src/core/theme/theme.mdx +0 -15
  194. package/src/core/utils/date.ts +0 -164
  195. package/src/core/utils/device.ts +0 -48
  196. package/src/core/utils/dom.ts +0 -185
  197. package/src/core//320/235/320/260/320/261/320/276/321/200 /320/270/320/272/320/276/320/275/320/276/320/272/gallery.vue" +0 -72
  198. package/src/core//320/235/320/260/320/261/320/276/321/200 /320/270/320/272/320/276/320/275/320/276/320/272//320/235/320/260/320/261/320/276/321/200 /320/270/320/272/320/276/320/275/320/276/320/272.mdx" +0 -31
  199. package/src/core//320/235/320/260/320/261/320/276/321/200 /320/270/320/272/320/276/320/275/320/276/320/272//320/235/320/260/320/261/320/276/321/200 /320/270/320/272/320/276/320/275/320/276/320/272.stories.ts" +0 -14
  200. package/src/docs/CSS/FAQ.mdx +0 -43
  201. package/src/docs/CSS//320/236/320/261/321/211/320/270/320/265 /320/274/320/276/320/264/320/270/321/204/320/270/320/272/320/260/321/202/320/276/321/200/321/213.mdx" +0 -156
  202. package/src/docs/CSS//320/237/320/265/321/200/320/265/320/274/320/265/320/275/320/275/321/213/320/265.mdx +0 -47
  203. package/src/docs/CSS//320/237/321/200/320/265/320/264/320/277/321/200/320/276/321/206/320/265/321/201/321/201/320/276/321/200/321/213.mdx +0 -15
  204. package/src/docs/CSS//320/240/320/265/320/272/320/276/320/274/320/265/320/275/320/264/320/260/321/206/320/270/320/270 /320/221/320/255/320/234.mdx" +0 -49
  205. package/src/docs/CSS//320/241/321/202/320/270/320/273/320/270.md +0 -53
  206. package/src/docs/CSS//320/241/321/202/320/270/320/273/320/270.mdx +0 -4
  207. package/src/docs/CSS//320/247/321/202/320/276 /321/202/320/260/320/272/320/276/320/265 css /320/274/320/276/320/264/321/203/320/273/321/214.mdx" +0 -53
  208. package/src/docs/ROADMAP.md +0 -17
  209. package/src/docs/Roadmap.mdx +0 -4
  210. package/src/docs//320/222/320/262/320/265/320/264/320/265/320/275/320/270/320/265 /320/262 Storybook.mdx" +0 -323
  211. package/src/docs//320/232/320/276/320/274/320/277/320/276/320/275/320/265/320/275/321/202/321/213.mdx +0 -20
  212. package/src/docs//320/237/320/276/320/273/320/265/320/267/320/275/320/260/321/217 /320/270/320/275/321/204/320/276/321/200/320/274/320/260/321/206/320/270/321/217.mdx" +0 -8
  213. package/src/docs//320/241/321/202/320/260/320/275/320/264/320/260/321/200/321/202/321/213 /320/272/320/276/320/264/320/260/IDE.mdx" +0 -42
  214. package/src/docs//320/241/321/202/320/260/320/275/320/264/320/260/321/200/321/202/321/213 /320/272/320/276/320/264/320/260//320/233/320/270/320/275/321/202/320/265/321/200.mdx" +0 -72
  215. package/src/docs//320/241/321/202/320/260/320/275/320/264/320/260/321/200/321/202/321/213 /320/272/320/276/320/264/320/260//320/241/321/202/320/260/320/275/320/264/320/260/321/200/321/202/321/213 /320/272/320/276/320/264/320/260.mdx" +0 -29
  216. package/src/globals.d.ts +0 -1
  217. package/src/resources/styles/core/colors.css +0 -204
  218. package/src/resources/styles/core/components.css +0 -70
  219. package/src/resources/styles/core/core.ts +0 -10
  220. package/src/resources/styles/core/forms/clear.css +0 -19
  221. package/src/resources/styles/core/forms/controls.css +0 -20
  222. package/src/resources/styles/core/forms/focusable.css +0 -26
  223. package/src/resources/styles/core/forms/forms.css +0 -100
  224. package/src/resources/styles/core/icon.css +0 -58
  225. package/src/resources/styles/core/layout.css +0 -40
  226. package/src/resources/styles/core/modifiers/as.css +0 -9
  227. package/src/resources/styles/core/modifiers/ellipsis.css +0 -18
  228. package/src/resources/styles/core/modifiers/modifiers.css +0 -81
  229. package/src/resources/styles/core/modifiers/only.css +0 -19
  230. package/src/resources/styles/core/select.css +0 -16
  231. package/src/resources/styles/jquery-ui.min.css +0 -6
  232. package/src/resources/styles/storybook.css +0 -11
  233. package/src/resources/styles/themes/dark/theme.css +0 -139
  234. package/src/resources/styles/themes/dark.ts +0 -1
  235. package/src/resources/styles/themes/light/theme.css +0 -139
  236. package/src/resources/styles/themes/light.ts +0 -1
  237. package/src/storybook/components/color.vue +0 -45
  238. package/src/storybook/components/colors.vue +0 -34
  239. package/src/storybook/components/icomoon.ts +0 -38
  240. package/src/storybook/components/properties.vue +0 -82
  241. package/src/storybook/resources/accessibility.png +0 -0
  242. package/src/storybook/resources/accessibility.svg +0 -5
  243. package/src/storybook/resources/addon-library.png +0 -0
  244. package/src/storybook/resources/assets.png +0 -0
  245. package/src/storybook/resources/context.png +0 -0
  246. package/src/storybook/resources/discord.svg +0 -15
  247. package/src/storybook/resources/docs.png +0 -0
  248. package/src/storybook/resources/figma-plugin.png +0 -0
  249. package/src/storybook/resources/github.svg +0 -3
  250. package/src/storybook/resources/share.png +0 -0
  251. package/src/storybook/resources/styling.png +0 -0
  252. package/src/storybook/resources/testing.png +0 -0
  253. package/src/storybook/resources/theming.png +0 -0
  254. package/src/storybook/resources/tutorials.svg +0 -12
  255. package/src/storybook/resources/youtube.svg +0 -4
  256. package/src//320/224/320/276/320/261/321/200/320/276 /320/277/320/276/320/266/320/260/320/273/320/276/320/262/320/260/321/202/321/214.mdx" +0 -3
  257. package/tsconfig.json +0 -62
  258. package/vite.config.ts +0 -91
  259. /package/{src/resources/icomoon → icomoon}/demo-files/demo.css +0 -0
  260. /package/{src/resources/icomoon → icomoon}/demo-files/demo.js +0 -0
  261. /package/{src/resources/icomoon → icomoon}/demo.html +0 -0
  262. /package/{src/resources/icomoon → icomoon}/fonts/Topvisor-2.svg +0 -0
  263. /package/{src/resources/icomoon → icomoon}/fonts/Topvisor-2.ttf +0 -0
  264. /package/{src/resources/icomoon → icomoon}/fonts/Topvisor-2.woff +0 -0
  265. /package/{src/resources/icomoon → icomoon}/selection.json +0 -0
  266. /package/{src/resources/icomoon → icomoon}/style.css +0 -0
@@ -1,4 +1,4 @@
1
- /* ui-datepicker */
1
+ define(["exports","vue","./forms-2891e074.amd"],function(k,h,c){"use strict";const m=`/* ui-datepicker */
2
2
  .ui-datepicker {
3
3
  --datepicker-day-color: #FFF;
4
4
  --datepicker-day-color-hover: var(--color-blue-150);
@@ -230,4 +230,5 @@ td.ui-datepicker-today a {
230
230
 
231
231
  .ui-datepicker-row-break {
232
232
  display: none;
233
- }
233
+ }`;c.Core.appendStyle(m);const a=window,b=e=>{var t,n;if(!((n=(t=a==null?void 0:a.jQuery)==null?void 0:t.ui)!=null&&n.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(e)};function f(e,t){var n;return(n=b(e))==null?void 0:n.datepicker(t)}let o,p,l,u;h.watch(h.toRef(c.Core.state.dateFormat),()=>{var e;o=c.UtilsDate.dateFormat("2000-01-01"),p=((e=o.match(/\D/))==null?void 0:e[0])??"-",l=o.replace(/\D+/g,"").length,u=[];for(let t=0;t<o.length;t++)o[t]===p&&u.push(t)},{immediate:!0});function v(e){let t=e.target.selectionEnd,n=e.target.value,r=n.substring(0,t).replace(/\D+/g,""),i=n.substring(t).replace(/\D+/g,""),s=r.length+i.length-l;if(s>0){r=r.substring(0,l);const d=l-r.length;i=i.substring(i.length-d)}else s<0&&(e.inputType==="deleteContentForward"?r+="0".repeat(-s):i="0".repeat(-s)+i);t=r.length,n=r+i;for(let d=0;d<u.length;d++){const g=u[d];n=n.substring(0,g)+p+n.substring(g),t>=g&&t++}e.inputType==="deleteContentBackward"&&n[t-1]===p&&t--,n!==e.target.value&&(e.target.value=n,e.target.selectionStart=t,e.target.selectionEnd=t)}k.connectDatepicker=f,k.oninput=v,Object.defineProperty(k,Symbol.toStringTag,{value:"Module"})});
234
+ //# sourceMappingURL=datepicker-1e725859.amd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"datepicker-1e725859.amd.js","sources":["../../src/components/forms/inputDate/datepicker.css?raw","../../src/components/forms/inputDate/datepicker.ts"],"sourcesContent":["export default \"/* ui-datepicker */\\n.ui-datepicker {\\n\\t--datepicker-day-color: #FFF;\\n\\t--datepicker-day-color-hover: var(--color-blue-150);\\n\\t--datepicker-selected-color: var(--color-blue-500);\\n\\t--datepicker-selected-color-hover: var(--color-blue-550);\\n\\t--datepicker-range-color: var(--color-blue-100);\\n\\t--datepicker-range-color-hover: var(--color-blue-150);\\n\\n\\tuser-select: none;\\n\\twidth: auto;\\n\\tpadding: 0;\\n}\\n\\n.ui-datepicker:before,\\n.ui-datepicker:after {\\n\\tdisplay: none;\\n}\\n\\n/* на странице */\\n.ui-datepicker-inline {\\n\\tdisplay: inline-block !important;\\n}\\n\\n/* в popup */\\n.ui-datepicker:not(.ui-datepicker-inline) {\\n\\tborder-radius: 8px;\\n\\tbackground: var(--content-background-color);\\n\\tbox-shadow: var(--top-shadow);\\n\\tz-index: 10000000 !important;\\n\\tpadding: 8px;\\n}\\n\\n.ui-datepicker a {\\n\\ttext-decoration: none !important;\\n}\\n\\n.ui-datepicker option {\\n\\tcolor: var(--color-text);\\n\\tfont-size: 14px;\\n}\\n\\n.ui-datepicker-header {\\n\\tpadding: 0 !important;\\n\\tmargin: 0 0 18px 0;\\n\\tdisplay: flex;\\n\\talign-items: center;\\n}\\n\\n.ui-datepicker-header > * {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\tjustify-content: center;\\n}\\n\\n.ui-datepicker-title {\\n\\twidth: 100% !important;\\n\\theight: 24px;\\n\\tmargin: 0 !important;\\n}\\n\\n.ui-datepicker-month,\\n.ui-datepicker-year {\\n\\toutline: none !important;\\n\\twidth: auto !important;\\n\\tborder: none;\\n\\tpadding: 0;\\n\\tmargin: 0 6px !important;\\n\\ttext-align: center;\\n\\tfont-size: 16px !important;\\n}\\n\\n.ui-datepicker-month {\\n\\tcolor: var(--color-text);\\n}\\n\\n.ui-datepicker-year {\\n\\tcolor: var(--color-gray-300);\\n}\\n\\n/*\\tselect.ui-datepicker-month,\\nselect.ui-datepicker-year{ cursor: pointer; color: var(--color-blue-500); }*/\\nselect.ui-datepicker-month,\\nselect.ui-datepicker-year {\\n\\tcursor: pointer;\\n}\\n\\n.ui-datepicker-prev,\\n.ui-datepicker-next {\\n\\tcursor: pointer;\\n\\twidth: 24px !important;\\n\\theight: 24px !important;\\n\\tfont-size: 24px;\\n\\tfont-family: 'Topvisor-2';\\n\\tposition: static !important;\\n}\\n\\n.ui-datepicker-prev:before {\\n\\tcontent: '';\\n}\\n\\n.ui-datepicker-next {\\n\\torder: 1;\\n}\\n\\n.ui-datepicker-next:before {\\n\\tcontent: '';\\n}\\n\\n.ui-datepicker-prev > *,\\n.ui-datepicker-next > * {\\n\\tdisplay: none !important;\\n}\\n\\n.ui-datepicker thead th {\\n\\twidth: auto !important;\\n\\tpadding: 0 !important;\\n\\tcolor: #B3BEBF;\\n\\tfont-size: 14px;\\n\\tfont-weight: 400 !important;\\n}\\n\\n.ui-datepicker table {\\n\\tmargin: 0 !important;\\n\\tfont-size: 14px;\\n}\\n\\n.ui-datepicker td {\\n\\tbackground: none;\\n\\tpadding: 0 !important;\\n}\\n\\n.ui-datepicker td span,\\n.ui-datepicker td a {\\n\\tborder-radius: 8px;\\n\\tborder: none;\\n\\tmin-width: 32px;\\n\\theight: 32px;\\n\\tpadding: 0;\\n\\tmargin: 1px;\\n\\tcolor: var(--color-text) !important;\\n\\tline-height: 32px;\\n\\ttext-align: center;\\n\\tposition: relative;\\n\\tdisplay: block;\\n}\\n\\n/* обычные даты */\\n.ui-datepicker td a {\\n\\tbackground: var(--datepicker-day-color);\\n}\\n\\n.ui-datepicker td a:hover {\\n\\tbackground: var(--datepicker-day-color-hover);\\n}\\n\\n/* текущий день */\\ntd.ui-datepicker-today span,\\ntd.ui-datepicker-today a {\\n\\tbackground: none;\\n\\tposition: relative;\\n}\\n\\n/* выбранные даты */\\n.ui-datepicker td.selected a {\\n\\tbackground: var(--datepicker-range-color);\\n\\tpadding-right: 0;\\n\\tpadding-left: 1px;\\n\\tmargin-right: 1px;\\n\\tmargin-left: 0;\\n}\\n\\n.ui-datepicker td.selected a:hover {\\n\\tbackground: var(--datepicker-range-color-hover);\\n}\\n\\n.ui-datepicker td.selected:not(.selected-start):not(:first-child):not(.first-of-month) a {\\n\\tborder-top-left-radius: 0;\\n\\tborder-bottom-left-radius: 0;\\n\\tpadding-left: 1px;\\n\\tmargin-left: 0;\\n}\\n\\n.ui-datepicker td.selected:not(.selected-end):not(:last-child):not(.last-of-month) a {\\n\\tborder-top-right-radius: 0;\\n\\tborder-bottom-right-radius: 0;\\n\\tpadding-right: 1px;\\n\\tmargin-right: 0;\\n}\\n\\n.ui-datepicker td.selected-start a,\\n.ui-datepicker td.selected-end a,\\n.ui-datepicker td.ui-datepicker-current-day a {\\n\\tbackground: var(--datepicker-selected-color);\\n\\tcolor: #FFF !important;\\n}\\n\\n.ui-datepicker td.selected-start a:hover,\\n.ui-datepicker td.selected-end a:hover,\\n.ui-datepicker td.ui-datepicker-current-day a:hover {\\n\\tbackground: var(--datepicker-selected-color-hover);\\n}\\n\\n.ui-datepicker-day-marks {\\n\\tline-height: normal;\\n\\tposition: absolute;\\n\\tright: 0;\\n\\tbottom: 3px;\\n\\tleft: 0;\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\tjustify-content: center;\\n}\\n\\n.ui-datepicker-day-marks > i {\\n\\tborder-radius: 50%;\\n\\tborder: 1px solid #FFF;\\n\\twidth: 4px;\\n\\theight: 4px;\\n\\tmargin: 0 2px;\\n}\\n\\n.ui-datepicker-day-marks-exists {\\n\\tbackground: var(--color-blue-500);\\n}\\n\\n.ui-datepicker-day-marks-update {\\n\\tbackground: var(--color-red-500);\\n}\\n\\n.ui-datepicker-row-break {\\n\\tdisplay: none;\\n}\"","import { toRef, watch } from 'vue';\nimport Core from '@/core/core/core';\nimport UtilsDate from '@/core/utils/date';\n\nimport css from '@/components/forms/inputDate/datepicker.css?raw';\n\nCore.appendStyle(css);\n\nconst _window: any = window;\n\nconst $ = (el: HTMLInputElement) => {\n\tif (!_window?.jQuery?.ui?.datepicker) {\n\t\tconsole.info('Для работы datepicker требуется глобальная загрузка jQuery UI Datepicker');\n\n\t\treturn;\n\t}\n\n\t_window.jQuery.datepicker._defaults.dateFormat = Core.state.dateFormat.toLowerCase().replace('m', 'mm').replace('y', 'yy').replace('d', 'dd');\n\n\treturn _window.jQuery(el);\n};\n\nexport function connectDatepicker(el: HTMLInputElement, options: any) {\n\treturn $(el)?.datepicker(options);\n}\n\nlet dateFormatted;\nlet delimiter: string;\nlet dateNumbersCount: number;\nlet delimitersIndexes: number[];\n\nwatch(toRef(Core.state.dateFormat), () => {\n\t// генерация отформатированной даты, извлечение из нее разделителей и их индексов\n\tdateFormatted = UtilsDate.dateFormat('2000-01-01');\n\tdelimiter = dateFormatted.match(/\\D/)?.[0] ?? '-';\n\tdateNumbersCount = dateFormatted.replace(/\\D+/g, '').length;\n\tdelimitersIndexes = [];\n\n\tfor (let i = 0; i < dateFormatted.length; i++) {\n\t\tif (dateFormatted[i] === delimiter) {\n\t\t\tdelimitersIndexes.push(i);\n\t\t}\n\t}\n}, { immediate: true });\n\n/**\n * Автоформат при вводе в поле с датой\n */\nexport function oninput(e: any) {\n\tlet selectionPos = e.target.selectionEnd;\n\tlet value = e.target.value;\n\n\t// разбить занчение на две половины - до и после каретки\n\t// удалить все символы, кроме цифр\n\tlet valueChunkLeft = value.substring(0, selectionPos).replace(/\\D+/g, '');\n\tlet valueChunkRight = value.substring(selectionPos).replace(/\\D+/g, '');\n\n\tlet extraNumbersCount = valueChunkLeft.length + valueChunkRight.length - dateNumbersCount;\n\tif (extraNumbersCount > 0) {\n\t\t// // количество цифр больше требуемого - удалить лишние\n\t\tvalueChunkLeft = valueChunkLeft.substring(0, dateNumbersCount);\n\n\t\tconst valueChunkRightMaxLength = dateNumbersCount - valueChunkLeft.length;\n\t\tvalueChunkRight = valueChunkRight.substring(valueChunkRight.length - valueChunkRightMaxLength);\n\t} else if (extraNumbersCount < 0) {\n\t\t// количество цифр меньше требуемого - добавить 0\n\t\tif (e.inputType === 'deleteContentForward') {\n\t\t\t// нажатие на delete - добавить к левой части для правильного позиционирования каретки\n\t\t\tvalueChunkLeft += '0'.repeat(-extraNumbersCount);\n\t\t} else {\n\t\t\tvalueChunkRight = '0'.repeat(-extraNumbersCount) + valueChunkRight;\n\t\t}\n\t}\n\n\tselectionPos = valueChunkLeft.length;\n\tvalue = valueChunkLeft + valueChunkRight;\n\n\t// вставить разделители\n\tfor (let i = 0; i < delimitersIndexes.length; i++) {\n\t\tconst delimiterIndex = delimitersIndexes[i];\n\n\t\tvalue = value.substring(0, delimiterIndex) + delimiter + value.substring(delimiterIndex);\n\n\t\t// сдвинуть каретку, если разделитель вставлен левее ее\n\t\tif (selectionPos >= delimiterIndex) {\n\t\t\tselectionPos++;\n\t\t}\n\t}\n\n\t// нажатие на backspace - если слева символ разделителя, перенести каретку за него\n\tif (e.inputType === 'deleteContentBackward' && value[selectionPos - 1] === delimiter) {\n\t\tselectionPos--;\n\t}\n\n\t// если значение изменилось - вставить его и переместить каретку\n\tif (value !== e.target.value) {\n\t\te.target.value = value;\n\t\te.target.selectionStart = selectionPos;\n\t\te.target.selectionEnd = selectionPos;\n\t}\n}"],"names":["css","Core","_window","$","el","_b","_a","connectDatepicker","options","dateFormatted","delimiter","dateNumbersCount","delimitersIndexes","vue","toRef","UtilsDate","i","oninput","selectionPos","value","valueChunkLeft","valueChunkRight","extraNumbersCount","valueChunkRightMaxLength","delimiterIndex"],"mappings":"6EAAe,MAAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GCMfC,EAAAA,KAAK,YAAYD,CAAG,EAEpB,MAAME,EAAe,OAEfC,EAAKC,GAAyB,SACnC,GAAI,GAACC,GAAAC,EAAAJ,GAAA,YAAAA,EAAS,SAAT,YAAAI,EAAiB,KAAjB,MAAAD,EAAqB,YAAY,CACrC,QAAQ,KAAK,0EAA0E,EAEvF,MACD,CAEA,OAAAH,EAAQ,OAAO,WAAW,UAAU,WAAaD,OAAK,MAAM,WAAW,YAAY,EAAE,QAAQ,IAAK,IAAI,EAAE,QAAQ,IAAK,IAAI,EAAE,QAAQ,IAAK,IAAI,EAErIC,EAAQ,OAAOE,CAAE,CACzB,EAEgB,SAAAG,EAAkBH,EAAsBI,EAAc,OACrE,OAAOF,EAAAH,EAAEC,CAAE,IAAJ,YAAAE,EAAO,WAAWE,EAC1B,CAEA,IAAIC,EACAC,EACAC,EACAC,EAEJC,EAAA,MAAMC,EAAM,MAAAb,EAAA,KAAK,MAAM,UAAU,EAAG,IAAM,OAEzBQ,EAAAM,EAAA,UAAU,WAAW,YAAY,EACjDL,IAAYJ,EAAAG,EAAc,MAAM,IAAI,IAAxB,YAAAH,EAA4B,KAAM,IAC9CK,EAAmBF,EAAc,QAAQ,OAAQ,EAAE,EAAE,OACrDG,EAAoB,CAAA,EAEpB,QAASI,EAAI,EAAGA,EAAIP,EAAc,OAAQO,IACrCP,EAAcO,CAAC,IAAMN,GACxBE,EAAkB,KAAKI,CAAC,CAG3B,EAAG,CAAE,UAAW,EAAA,CAAM,EAKf,SAASC,EAAQ,EAAQ,CAC3B,IAAAC,EAAe,EAAE,OAAO,aACxBC,EAAQ,EAAE,OAAO,MAIjBC,EAAiBD,EAAM,UAAU,EAAGD,CAAY,EAAE,QAAQ,OAAQ,EAAE,EACpEG,EAAkBF,EAAM,UAAUD,CAAY,EAAE,QAAQ,OAAQ,EAAE,EAElEI,EAAoBF,EAAe,OAASC,EAAgB,OAASV,EACzE,GAAIW,EAAoB,EAAG,CAETF,EAAAA,EAAe,UAAU,EAAGT,CAAgB,EAEvD,MAAAY,EAA2BZ,EAAmBS,EAAe,OACnEC,EAAkBA,EAAgB,UAAUA,EAAgB,OAASE,CAAwB,CAAA,MACnFD,EAAoB,IAE1B,EAAE,YAAc,uBAEDF,GAAA,IAAI,OAAO,CAACE,CAAiB,EAE/CD,EAAkB,IAAI,OAAO,CAACC,CAAiB,EAAID,GAIrDH,EAAeE,EAAe,OAC9BD,EAAQC,EAAiBC,EAGzB,QAASL,EAAI,EAAGA,EAAIJ,EAAkB,OAAQI,IAAK,CAC5C,MAAAQ,EAAiBZ,EAAkBI,CAAC,EAElCG,EAAAA,EAAM,UAAU,EAAGK,CAAc,EAAId,EAAYS,EAAM,UAAUK,CAAc,EAGnFN,GAAgBM,GACnBN,GAEF,CAGI,EAAE,YAAc,yBAA2BC,EAAMD,EAAe,CAAC,IAAMR,GAC1EQ,IAIGC,IAAU,EAAE,OAAO,QACtB,EAAE,OAAO,MAAQA,EACjB,EAAE,OAAO,eAAiBD,EAC1B,EAAE,OAAO,aAAeA,EAE1B"}
@@ -0,0 +1,275 @@
1
+ import { watch as g, toRef as m } from "vue";
2
+ import { C as k, U as h } from "./forms-db4cb24d.es.js";
3
+ const b = `/* ui-datepicker */
4
+ .ui-datepicker {
5
+ --datepicker-day-color: #FFF;
6
+ --datepicker-day-color-hover: var(--color-blue-150);
7
+ --datepicker-selected-color: var(--color-blue-500);
8
+ --datepicker-selected-color-hover: var(--color-blue-550);
9
+ --datepicker-range-color: var(--color-blue-100);
10
+ --datepicker-range-color-hover: var(--color-blue-150);
11
+
12
+ user-select: none;
13
+ width: auto;
14
+ padding: 0;
15
+ }
16
+
17
+ .ui-datepicker:before,
18
+ .ui-datepicker:after {
19
+ display: none;
20
+ }
21
+
22
+ /* на странице */
23
+ .ui-datepicker-inline {
24
+ display: inline-block !important;
25
+ }
26
+
27
+ /* в popup */
28
+ .ui-datepicker:not(.ui-datepicker-inline) {
29
+ border-radius: 8px;
30
+ background: var(--content-background-color);
31
+ box-shadow: var(--top-shadow);
32
+ z-index: 10000000 !important;
33
+ padding: 8px;
34
+ }
35
+
36
+ .ui-datepicker a {
37
+ text-decoration: none !important;
38
+ }
39
+
40
+ .ui-datepicker option {
41
+ color: var(--color-text);
42
+ font-size: 14px;
43
+ }
44
+
45
+ .ui-datepicker-header {
46
+ padding: 0 !important;
47
+ margin: 0 0 18px 0;
48
+ display: flex;
49
+ align-items: center;
50
+ }
51
+
52
+ .ui-datepicker-header > * {
53
+ display: flex;
54
+ align-items: center;
55
+ justify-content: center;
56
+ }
57
+
58
+ .ui-datepicker-title {
59
+ width: 100% !important;
60
+ height: 24px;
61
+ margin: 0 !important;
62
+ }
63
+
64
+ .ui-datepicker-month,
65
+ .ui-datepicker-year {
66
+ outline: none !important;
67
+ width: auto !important;
68
+ border: none;
69
+ padding: 0;
70
+ margin: 0 6px !important;
71
+ text-align: center;
72
+ font-size: 16px !important;
73
+ }
74
+
75
+ .ui-datepicker-month {
76
+ color: var(--color-text);
77
+ }
78
+
79
+ .ui-datepicker-year {
80
+ color: var(--color-gray-300);
81
+ }
82
+
83
+ /* select.ui-datepicker-month,
84
+ select.ui-datepicker-year{ cursor: pointer; color: var(--color-blue-500); }*/
85
+ select.ui-datepicker-month,
86
+ select.ui-datepicker-year {
87
+ cursor: pointer;
88
+ }
89
+
90
+ .ui-datepicker-prev,
91
+ .ui-datepicker-next {
92
+ cursor: pointer;
93
+ width: 24px !important;
94
+ height: 24px !important;
95
+ font-size: 24px;
96
+ font-family: 'Topvisor-2';
97
+ position: static !important;
98
+ }
99
+
100
+ .ui-datepicker-prev:before {
101
+ content: '';
102
+ }
103
+
104
+ .ui-datepicker-next {
105
+ order: 1;
106
+ }
107
+
108
+ .ui-datepicker-next:before {
109
+ content: '';
110
+ }
111
+
112
+ .ui-datepicker-prev > *,
113
+ .ui-datepicker-next > * {
114
+ display: none !important;
115
+ }
116
+
117
+ .ui-datepicker thead th {
118
+ width: auto !important;
119
+ padding: 0 !important;
120
+ color: #B3BEBF;
121
+ font-size: 14px;
122
+ font-weight: 400 !important;
123
+ }
124
+
125
+ .ui-datepicker table {
126
+ margin: 0 !important;
127
+ font-size: 14px;
128
+ }
129
+
130
+ .ui-datepicker td {
131
+ background: none;
132
+ padding: 0 !important;
133
+ }
134
+
135
+ .ui-datepicker td span,
136
+ .ui-datepicker td a {
137
+ border-radius: 8px;
138
+ border: none;
139
+ min-width: 32px;
140
+ height: 32px;
141
+ padding: 0;
142
+ margin: 1px;
143
+ color: var(--color-text) !important;
144
+ line-height: 32px;
145
+ text-align: center;
146
+ position: relative;
147
+ display: block;
148
+ }
149
+
150
+ /* обычные даты */
151
+ .ui-datepicker td a {
152
+ background: var(--datepicker-day-color);
153
+ }
154
+
155
+ .ui-datepicker td a:hover {
156
+ background: var(--datepicker-day-color-hover);
157
+ }
158
+
159
+ /* текущий день */
160
+ td.ui-datepicker-today span,
161
+ td.ui-datepicker-today a {
162
+ background: none;
163
+ position: relative;
164
+ }
165
+
166
+ /* выбранные даты */
167
+ .ui-datepicker td.selected a {
168
+ background: var(--datepicker-range-color);
169
+ padding-right: 0;
170
+ padding-left: 1px;
171
+ margin-right: 1px;
172
+ margin-left: 0;
173
+ }
174
+
175
+ .ui-datepicker td.selected a:hover {
176
+ background: var(--datepicker-range-color-hover);
177
+ }
178
+
179
+ .ui-datepicker td.selected:not(.selected-start):not(:first-child):not(.first-of-month) a {
180
+ border-top-left-radius: 0;
181
+ border-bottom-left-radius: 0;
182
+ padding-left: 1px;
183
+ margin-left: 0;
184
+ }
185
+
186
+ .ui-datepicker td.selected:not(.selected-end):not(:last-child):not(.last-of-month) a {
187
+ border-top-right-radius: 0;
188
+ border-bottom-right-radius: 0;
189
+ padding-right: 1px;
190
+ margin-right: 0;
191
+ }
192
+
193
+ .ui-datepicker td.selected-start a,
194
+ .ui-datepicker td.selected-end a,
195
+ .ui-datepicker td.ui-datepicker-current-day a {
196
+ background: var(--datepicker-selected-color);
197
+ color: #FFF !important;
198
+ }
199
+
200
+ .ui-datepicker td.selected-start a:hover,
201
+ .ui-datepicker td.selected-end a:hover,
202
+ .ui-datepicker td.ui-datepicker-current-day a:hover {
203
+ background: var(--datepicker-selected-color-hover);
204
+ }
205
+
206
+ .ui-datepicker-day-marks {
207
+ line-height: normal;
208
+ position: absolute;
209
+ right: 0;
210
+ bottom: 3px;
211
+ left: 0;
212
+ display: flex;
213
+ align-items: center;
214
+ justify-content: center;
215
+ }
216
+
217
+ .ui-datepicker-day-marks > i {
218
+ border-radius: 50%;
219
+ border: 1px solid #FFF;
220
+ width: 4px;
221
+ height: 4px;
222
+ margin: 0 2px;
223
+ }
224
+
225
+ .ui-datepicker-day-marks-exists {
226
+ background: var(--color-blue-500);
227
+ }
228
+
229
+ .ui-datepicker-day-marks-update {
230
+ background: var(--color-red-500);
231
+ }
232
+
233
+ .ui-datepicker-row-break {
234
+ display: none;
235
+ }`;
236
+ k.appendStyle(b);
237
+ const o = window, x = (e) => {
238
+ var t, n;
239
+ if (!((n = (t = o == null ? void 0 : o.jQuery) == null ? void 0 : t.ui) != null && n.datepicker)) {
240
+ console.info("Для работы datepicker требуется глобальная загрузка jQuery UI Datepicker");
241
+ return;
242
+ }
243
+ return o.jQuery.datepicker._defaults.dateFormat = k.state.dateFormat.toLowerCase().replace("m", "mm").replace("y", "yy").replace("d", "dd"), o.jQuery(e);
244
+ };
245
+ function y(e, t) {
246
+ var n;
247
+ return (n = x(e)) == null ? void 0 : n.datepicker(t);
248
+ }
249
+ let d, l, p, u;
250
+ g(m(k.state.dateFormat), () => {
251
+ var e;
252
+ d = h.dateFormat("2000-01-01"), l = ((e = d.match(/\D/)) == null ? void 0 : e[0]) ?? "-", p = d.replace(/\D+/g, "").length, u = [];
253
+ for (let t = 0; t < d.length; t++)
254
+ d[t] === l && u.push(t);
255
+ }, { immediate: !0 });
256
+ function F(e) {
257
+ let t = e.target.selectionEnd, n = e.target.value, r = n.substring(0, t).replace(/\D+/g, ""), i = n.substring(t).replace(/\D+/g, ""), c = r.length + i.length - p;
258
+ if (c > 0) {
259
+ r = r.substring(0, p);
260
+ const a = p - r.length;
261
+ i = i.substring(i.length - a);
262
+ } else
263
+ c < 0 && (e.inputType === "deleteContentForward" ? r += "0".repeat(-c) : i = "0".repeat(-c) + i);
264
+ t = r.length, n = r + i;
265
+ for (let a = 0; a < u.length; a++) {
266
+ const s = u[a];
267
+ n = n.substring(0, s) + l + n.substring(s), t >= s && t++;
268
+ }
269
+ e.inputType === "deleteContentBackward" && n[t - 1] === l && t--, n !== e.target.value && (e.target.value = n, e.target.selectionStart = t, e.target.selectionEnd = t);
270
+ }
271
+ export {
272
+ y as connectDatepicker,
273
+ F as oninput
274
+ };
275
+ //# sourceMappingURL=datepicker-ad465c48.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"datepicker-ad465c48.es.js","sources":["../../src/components/forms/inputDate/datepicker.css?raw","../../src/components/forms/inputDate/datepicker.ts"],"sourcesContent":["export default \"/* ui-datepicker */\\n.ui-datepicker {\\n\\t--datepicker-day-color: #FFF;\\n\\t--datepicker-day-color-hover: var(--color-blue-150);\\n\\t--datepicker-selected-color: var(--color-blue-500);\\n\\t--datepicker-selected-color-hover: var(--color-blue-550);\\n\\t--datepicker-range-color: var(--color-blue-100);\\n\\t--datepicker-range-color-hover: var(--color-blue-150);\\n\\n\\tuser-select: none;\\n\\twidth: auto;\\n\\tpadding: 0;\\n}\\n\\n.ui-datepicker:before,\\n.ui-datepicker:after {\\n\\tdisplay: none;\\n}\\n\\n/* на странице */\\n.ui-datepicker-inline {\\n\\tdisplay: inline-block !important;\\n}\\n\\n/* в popup */\\n.ui-datepicker:not(.ui-datepicker-inline) {\\n\\tborder-radius: 8px;\\n\\tbackground: var(--content-background-color);\\n\\tbox-shadow: var(--top-shadow);\\n\\tz-index: 10000000 !important;\\n\\tpadding: 8px;\\n}\\n\\n.ui-datepicker a {\\n\\ttext-decoration: none !important;\\n}\\n\\n.ui-datepicker option {\\n\\tcolor: var(--color-text);\\n\\tfont-size: 14px;\\n}\\n\\n.ui-datepicker-header {\\n\\tpadding: 0 !important;\\n\\tmargin: 0 0 18px 0;\\n\\tdisplay: flex;\\n\\talign-items: center;\\n}\\n\\n.ui-datepicker-header > * {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\tjustify-content: center;\\n}\\n\\n.ui-datepicker-title {\\n\\twidth: 100% !important;\\n\\theight: 24px;\\n\\tmargin: 0 !important;\\n}\\n\\n.ui-datepicker-month,\\n.ui-datepicker-year {\\n\\toutline: none !important;\\n\\twidth: auto !important;\\n\\tborder: none;\\n\\tpadding: 0;\\n\\tmargin: 0 6px !important;\\n\\ttext-align: center;\\n\\tfont-size: 16px !important;\\n}\\n\\n.ui-datepicker-month {\\n\\tcolor: var(--color-text);\\n}\\n\\n.ui-datepicker-year {\\n\\tcolor: var(--color-gray-300);\\n}\\n\\n/*\\tselect.ui-datepicker-month,\\nselect.ui-datepicker-year{ cursor: pointer; color: var(--color-blue-500); }*/\\nselect.ui-datepicker-month,\\nselect.ui-datepicker-year {\\n\\tcursor: pointer;\\n}\\n\\n.ui-datepicker-prev,\\n.ui-datepicker-next {\\n\\tcursor: pointer;\\n\\twidth: 24px !important;\\n\\theight: 24px !important;\\n\\tfont-size: 24px;\\n\\tfont-family: 'Topvisor-2';\\n\\tposition: static !important;\\n}\\n\\n.ui-datepicker-prev:before {\\n\\tcontent: '';\\n}\\n\\n.ui-datepicker-next {\\n\\torder: 1;\\n}\\n\\n.ui-datepicker-next:before {\\n\\tcontent: '';\\n}\\n\\n.ui-datepicker-prev > *,\\n.ui-datepicker-next > * {\\n\\tdisplay: none !important;\\n}\\n\\n.ui-datepicker thead th {\\n\\twidth: auto !important;\\n\\tpadding: 0 !important;\\n\\tcolor: #B3BEBF;\\n\\tfont-size: 14px;\\n\\tfont-weight: 400 !important;\\n}\\n\\n.ui-datepicker table {\\n\\tmargin: 0 !important;\\n\\tfont-size: 14px;\\n}\\n\\n.ui-datepicker td {\\n\\tbackground: none;\\n\\tpadding: 0 !important;\\n}\\n\\n.ui-datepicker td span,\\n.ui-datepicker td a {\\n\\tborder-radius: 8px;\\n\\tborder: none;\\n\\tmin-width: 32px;\\n\\theight: 32px;\\n\\tpadding: 0;\\n\\tmargin: 1px;\\n\\tcolor: var(--color-text) !important;\\n\\tline-height: 32px;\\n\\ttext-align: center;\\n\\tposition: relative;\\n\\tdisplay: block;\\n}\\n\\n/* обычные даты */\\n.ui-datepicker td a {\\n\\tbackground: var(--datepicker-day-color);\\n}\\n\\n.ui-datepicker td a:hover {\\n\\tbackground: var(--datepicker-day-color-hover);\\n}\\n\\n/* текущий день */\\ntd.ui-datepicker-today span,\\ntd.ui-datepicker-today a {\\n\\tbackground: none;\\n\\tposition: relative;\\n}\\n\\n/* выбранные даты */\\n.ui-datepicker td.selected a {\\n\\tbackground: var(--datepicker-range-color);\\n\\tpadding-right: 0;\\n\\tpadding-left: 1px;\\n\\tmargin-right: 1px;\\n\\tmargin-left: 0;\\n}\\n\\n.ui-datepicker td.selected a:hover {\\n\\tbackground: var(--datepicker-range-color-hover);\\n}\\n\\n.ui-datepicker td.selected:not(.selected-start):not(:first-child):not(.first-of-month) a {\\n\\tborder-top-left-radius: 0;\\n\\tborder-bottom-left-radius: 0;\\n\\tpadding-left: 1px;\\n\\tmargin-left: 0;\\n}\\n\\n.ui-datepicker td.selected:not(.selected-end):not(:last-child):not(.last-of-month) a {\\n\\tborder-top-right-radius: 0;\\n\\tborder-bottom-right-radius: 0;\\n\\tpadding-right: 1px;\\n\\tmargin-right: 0;\\n}\\n\\n.ui-datepicker td.selected-start a,\\n.ui-datepicker td.selected-end a,\\n.ui-datepicker td.ui-datepicker-current-day a {\\n\\tbackground: var(--datepicker-selected-color);\\n\\tcolor: #FFF !important;\\n}\\n\\n.ui-datepicker td.selected-start a:hover,\\n.ui-datepicker td.selected-end a:hover,\\n.ui-datepicker td.ui-datepicker-current-day a:hover {\\n\\tbackground: var(--datepicker-selected-color-hover);\\n}\\n\\n.ui-datepicker-day-marks {\\n\\tline-height: normal;\\n\\tposition: absolute;\\n\\tright: 0;\\n\\tbottom: 3px;\\n\\tleft: 0;\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\tjustify-content: center;\\n}\\n\\n.ui-datepicker-day-marks > i {\\n\\tborder-radius: 50%;\\n\\tborder: 1px solid #FFF;\\n\\twidth: 4px;\\n\\theight: 4px;\\n\\tmargin: 0 2px;\\n}\\n\\n.ui-datepicker-day-marks-exists {\\n\\tbackground: var(--color-blue-500);\\n}\\n\\n.ui-datepicker-day-marks-update {\\n\\tbackground: var(--color-red-500);\\n}\\n\\n.ui-datepicker-row-break {\\n\\tdisplay: none;\\n}\"","import { toRef, watch } from 'vue';\nimport Core from '@/core/core/core';\nimport UtilsDate from '@/core/utils/date';\n\nimport css from '@/components/forms/inputDate/datepicker.css?raw';\n\nCore.appendStyle(css);\n\nconst _window: any = window;\n\nconst $ = (el: HTMLInputElement) => {\n\tif (!_window?.jQuery?.ui?.datepicker) {\n\t\tconsole.info('Для работы datepicker требуется глобальная загрузка jQuery UI Datepicker');\n\n\t\treturn;\n\t}\n\n\t_window.jQuery.datepicker._defaults.dateFormat = Core.state.dateFormat.toLowerCase().replace('m', 'mm').replace('y', 'yy').replace('d', 'dd');\n\n\treturn _window.jQuery(el);\n};\n\nexport function connectDatepicker(el: HTMLInputElement, options: any) {\n\treturn $(el)?.datepicker(options);\n}\n\nlet dateFormatted;\nlet delimiter: string;\nlet dateNumbersCount: number;\nlet delimitersIndexes: number[];\n\nwatch(toRef(Core.state.dateFormat), () => {\n\t// генерация отформатированной даты, извлечение из нее разделителей и их индексов\n\tdateFormatted = UtilsDate.dateFormat('2000-01-01');\n\tdelimiter = dateFormatted.match(/\\D/)?.[0] ?? '-';\n\tdateNumbersCount = dateFormatted.replace(/\\D+/g, '').length;\n\tdelimitersIndexes = [];\n\n\tfor (let i = 0; i < dateFormatted.length; i++) {\n\t\tif (dateFormatted[i] === delimiter) {\n\t\t\tdelimitersIndexes.push(i);\n\t\t}\n\t}\n}, { immediate: true });\n\n/**\n * Автоформат при вводе в поле с датой\n */\nexport function oninput(e: any) {\n\tlet selectionPos = e.target.selectionEnd;\n\tlet value = e.target.value;\n\n\t// разбить занчение на две половины - до и после каретки\n\t// удалить все символы, кроме цифр\n\tlet valueChunkLeft = value.substring(0, selectionPos).replace(/\\D+/g, '');\n\tlet valueChunkRight = value.substring(selectionPos).replace(/\\D+/g, '');\n\n\tlet extraNumbersCount = valueChunkLeft.length + valueChunkRight.length - dateNumbersCount;\n\tif (extraNumbersCount > 0) {\n\t\t// // количество цифр больше требуемого - удалить лишние\n\t\tvalueChunkLeft = valueChunkLeft.substring(0, dateNumbersCount);\n\n\t\tconst valueChunkRightMaxLength = dateNumbersCount - valueChunkLeft.length;\n\t\tvalueChunkRight = valueChunkRight.substring(valueChunkRight.length - valueChunkRightMaxLength);\n\t} else if (extraNumbersCount < 0) {\n\t\t// количество цифр меньше требуемого - добавить 0\n\t\tif (e.inputType === 'deleteContentForward') {\n\t\t\t// нажатие на delete - добавить к левой части для правильного позиционирования каретки\n\t\t\tvalueChunkLeft += '0'.repeat(-extraNumbersCount);\n\t\t} else {\n\t\t\tvalueChunkRight = '0'.repeat(-extraNumbersCount) + valueChunkRight;\n\t\t}\n\t}\n\n\tselectionPos = valueChunkLeft.length;\n\tvalue = valueChunkLeft + valueChunkRight;\n\n\t// вставить разделители\n\tfor (let i = 0; i < delimitersIndexes.length; i++) {\n\t\tconst delimiterIndex = delimitersIndexes[i];\n\n\t\tvalue = value.substring(0, delimiterIndex) + delimiter + value.substring(delimiterIndex);\n\n\t\t// сдвинуть каретку, если разделитель вставлен левее ее\n\t\tif (selectionPos >= delimiterIndex) {\n\t\t\tselectionPos++;\n\t\t}\n\t}\n\n\t// нажатие на backspace - если слева символ разделителя, перенести каретку за него\n\tif (e.inputType === 'deleteContentBackward' && value[selectionPos - 1] === delimiter) {\n\t\tselectionPos--;\n\t}\n\n\t// если значение изменилось - вставить его и переместить каретку\n\tif (value !== e.target.value) {\n\t\te.target.value = value;\n\t\te.target.selectionStart = selectionPos;\n\t\te.target.selectionEnd = selectionPos;\n\t}\n}"],"names":["css","Core","_window","$","el","_b","_a","connectDatepicker","options","dateFormatted","delimiter","dateNumbersCount","delimitersIndexes","watch","toRef","UtilsDate","i","oninput","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;;AAEzB,EAAAQ,IAAAM,EAAU,WAAW,YAAY,GACjDL,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,EAAQ,GAAQ;AAC3B,MAAAC,IAAe,EAAE,OAAO,cACxBC,IAAQ,EAAE,OAAO,OAIjBC,IAAiBD,EAAM,UAAU,GAAGD,CAAY,EAAE,QAAQ,QAAQ,EAAE,GACpEG,IAAkBF,EAAM,UAAUD,CAAY,EAAE,QAAQ,QAAQ,EAAE,GAElEI,IAAoBF,EAAe,SAASC,EAAgB,SAASV;AACzE,MAAIW,IAAoB,GAAG;AAET,IAAAF,IAAAA,EAAe,UAAU,GAAGT,CAAgB;AAEvD,UAAAY,IAA2BZ,IAAmBS,EAAe;AACnE,IAAAC,IAAkBA,EAAgB,UAAUA,EAAgB,SAASE,CAAwB;AAAA,EAAA;AAC9F,IAAWD,IAAoB,MAE1B,EAAE,cAAc,yBAEDF,KAAA,IAAI,OAAO,CAACE,CAAiB,IAE/CD,IAAkB,IAAI,OAAO,CAACC,CAAiB,IAAID;AAIrD,EAAAH,IAAeE,EAAe,QAC9BD,IAAQC,IAAiBC;AAGzB,WAASL,IAAI,GAAGA,IAAIJ,EAAkB,QAAQI,KAAK;AAC5C,UAAAQ,IAAiBZ,EAAkBI,CAAC;AAElC,IAAAG,IAAAA,EAAM,UAAU,GAAGK,CAAc,IAAId,IAAYS,EAAM,UAAUK,CAAc,GAGnFN,KAAgBM,KACnBN;AAAA,EAEF;AAGA,EAAI,EAAE,cAAc,2BAA2BC,EAAMD,IAAe,CAAC,MAAMR,KAC1EQ,KAIGC,MAAU,EAAE,OAAO,UACtB,EAAE,OAAO,QAAQA,GACjB,EAAE,OAAO,iBAAiBD,GAC1B,EAAE,OAAO,eAAeA;AAE1B;"}
@@ -0,0 +1,3 @@
1
+ define(["require","exports","vue"],function(N,b,o){var D,L;"use strict";var S=document.createElement("style");S.textContent=`.top-button{cursor:pointer;box-sizing:border-box;box-shadow:var(--top-button-box-shadow);border-radius:var(--top-forms-radius);border:var(--top-forms-border-width) solid var(--top-forms-border-color);background-color:var(--top-button-background-color);height:var(--top-forms-base-height);padding:0 var(--top-forms-padding);color:var(--top-button-color);line-height:1;white-space:nowrap;display:inline-flex;align-items:center;justify-content:center;transition:background-color .15s,border-color .15s,box-shadow .15s}.top-button:hover{box-shadow:var(--top-button-box-shadow-hover);background-color:var(--top-button-background-color-hover)}.top-button:active{box-shadow:var(--top-button-box-shadow-active);background-color:var(--top-button-background-color-active)}.top-button.top-active{box-shadow:var(--top-button-box-shadow-selected);background-color:var(--top-button-background-color-selected)}.top-button.top-button-progress{cursor:help;box-shadow:inset #00000080 0 0 64px;background-image:linear-gradient(-45deg,rgba(255,255,255,.2) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.2) 50%,rgba(255,255,255,.2) 75%,transparent 75%,transparent);background-size:32px 32px;animation:_progress_1hqxk_1 1s linear infinite}@keyframes _progress_1hqxk_1{0%{background-position-x:0px}to{background-position-x:32px}}a.top-button,button.top-button{min-width:100px;text-decoration:none}a.top-button,a.top-button:hover{min-width:var(--top-forms-base-height);text-decoration:none}.top-button[data-top-icon]:not(:empty),.top-button[data-top-icon2]:not(:empty){justify-content:flex-start;text-align:left}.top-button[data-top-icon]{padding-left:0}.top-button[data-top-icon2]{padding-right:var(--top-select_arrow-width)}.top-button[data-top-icon2]:after{margin-left:auto}.top-button:empty{min-width:var(--top-forms-base-height)}.top-button[data-top-icon]:empty,.top-button[data-top-icon2]:empty{padding:0}.top-button.top-color_blue{--top-button-background-color: var(--color-blue-500)}.top-button.top-color_green{--top-button-background-color: var(--color-green-500)}.top-button.top-color_orange{--top-button-background-color: var(--color-orange-500)}.top-button.top-color_red{--top-button-background-color: var(--color-red-500)}.top-button.top-color_pink{--top-button-background-color: var(--color-pink-500)}.top-button.top-color_theme{--top-button-box-shadow-hover: none;--top-button-box-shadow-active: none;--top-button-box-shadow-selected: none;--top-icon-color: var(--color-text-2);--top-icon2-color: var(--color-text-2);--top-button-color: var(--color-text-1);--top-button-background-color: transparent;--top-button-background-color-hover: var(--color-secondary-opacity);--top-button-background-color-active: var(--color-secondary-2-opacity);--top-button-background-color-selected: var(--color-secondary-2-opacity)}.top-button.top-color_theme.top-active{--top-icon-color: var(--color-text-2)}.top-button.top-style_outline{--top-button-box-shadow: none;--top-button-box-shadow-hover: none;--top-button-box-shadow-active: none;--top-button-box-shadow-selected: none;--top-forms-border-color: var(--top-style_outline-color);--top-style_outline-color: var(--color-steel-400);--top-button-color: var(--top-style_outline-color);--top-button-background-color: var(--content-background-color);--top-button-background-color-hover: var(--color-theme-100);--top-button-background-color-active: var(--color-theme-150);--top-button-background-color-selected: var(--color-theme-125);--top-forms-border-width: 1px}.top-button.top-style_outline.top-color_theme{--top-button-color: var(--color-text)}.top-button.top-style_outline.top-color_blue{--top-style_outline-color: var(--color-blue-500)}.top-button.top-style_outline.top-color_green{--top-style_outline-color: var(--color-green-500)}.top-button.top-style_outline.top-color_orange{--top-style_outline-color: var(--color-orange-500)}.top-button.top-style_outline.top-color_red{--top-style_outline-color: var(--color-red-500)}.top-button.top-style_outline.top-color_pink{--top-style_outline-color: var(--color-pink-500)}.top-button.top-style_soft{--top-shadow-darken: none;--top-shadow-darken-2: none;--top-shadow-darken-3: none;--top-button-color: var(--color-text);--top-button-background-color: var(--color-secondary-opacity);--top-button-background-color-hover: var(--color-secondary-2-opacity);--top-button-background-color-active: var(--color-secondary-3-opacity);--top-button-background-color-selected: var(--color-secondary-3-opacity)}.top-button.top-style_soft.top-color_blue{--top-button-color: var(--color-blue-500)}.top-button.top-style_soft.top-color_orange{--top-button-color: var(--color-orange-500)}.top-button.top-style_soft.top-color_green{--top-button-color: var(--color-green-500)}.top-button.top-style_soft.top-color_red{--top-button-color: var(--color-red-500)}.top-button.top-style_soft.top-color_pink{--top-button-color: var(--color-pink-500)}.top-button.top-style_transparent{--top-shadow-darken: none;--top-shadow-darken-2: none;--top-shadow-darken-3: none;--top-button-color: var(--color-text);--top-button-background-color: transparent;--top-button-background-color-hover: transparent;--top-button-background-color-active: transparent;--top-button-background-color-selected: var(--color-steel-200)}.top-button.top-style_transparent:hover{opacity:.8}.top-button.top-style_transparent.top-color_blue{--top-button-color: var(--color-blue-450)}.top-button.top-style_transparent.top-color_green{--top-button-color: var(--color-green-450)}.top-button.top-style_transparent.top-color_orange{--top-button-color: var(--color-orange-450)}.top-button.top-style_transparent.top-color_red{--top-button-color: var(--color-red-450)}.top-button.top-style_transparent.top-color_pink{--top-button-color: var(--color-pink-450)}.top-button{--top-button-color: var(--color-white);--top-button-background-color: transparent;--top-button-background-color-hover: var(--top-button-background-color);--top-button-background-color-active: var(--top-button-background-color-hover);--top-button-background-color-selected: var(--top-button-background-color-hover);--top-button-box-shadow: none;--top-button-box-shadow-hover: var(--top-shadow-darken-2);--top-button-box-shadow-active: var(--top-shadow-darken-3);--top-button-box-shadow-selected: var(--top-shadow-darken-3);--top-forms-border-width: 0px;--top-icon-width: calc(var(--top-icon-size) + var(--top-forms-padding));--top-icon2-width: calc(var(--top-icon2-size) + var(--top-forms-padding))}.top-button.top-size_l{--top-forms-padding: var(--top-forms-padding_l);--top-forms-base-height: var(--top-forms-base-height_l)}.top-button.top-size_xl{--top-forms-padding: var(--top-forms-padding_xl);--top-forms-base-height: var(--top-forms-base-height_xl)}.top-forms-optionLabel{flex-grow:1}.top-forms-optionLabel_title{min-height:var(--top-forms-option-height);display:flex;align-items:center}.top-forms-optionLabel_title-disabled{color:var(--color-text-3)}.top-forms-optionLabel_description{color:var(--color-text-3);font-size:.85em;line-height:var(--top-forms-option-height)}.top-checkbox{cursor:pointer;display:inline-flex}.top-checkbox_input{cursor:inherit;border-radius:4px;background:var(--content-background-color);border:1px solid var(--top-forms-border-color);width:calc(var(--top-forms-option-height) - 3px * 2);height:calc(var(--top-forms-option-height) - 3px * 2)}.top-checkbox_input:before{content:" ";color:#fff;font-family:Topvisor-2;font-size:16px}.top-checkbox_input:hover{border-color:var(--top-forms-option-color);background:var(--color-theme-50)}.top-checkbox_input:checked,.top-checkbox_input:indeterminate{border-color:var(--top-forms-option-color);background:var(--top-forms-option-color)}.top-checkbox_input:checked:before{content:""}.top-checkbox_input:indeterminate:before{content:""}.top-checkbox_input:checked:hover,.top-checkbox_input:indeterminate:hover{border-color:var(--top-forms-option-color-hover);background:var(--top-forms-option-color-hover)}.top-checkbox_input:disabled{border-color:var(--color-line-1-opacity);background:var(--color-theme-50)}.top-checkbox_input:checked:disabled,.top-checkbox_input:indeterminate:disabled{border-color:transparent;background:var(--color-theme-400)}.top-checkbox_input.top-error{border-color:var(--color-negative)}.top-checkbox_input.top-error:hover{border-color:var(--color-negative-2)}.top-checkbox_input:checked.top-error,.top-checkbox_input:indeterminate.top-error{background:var(--color-negative)}.top-checkbox_input:checked.top-error:hover,.top-checkbox_input:indeterminate.top-error:hover{background:var(--color-negative-2)}.top-hint{--top-icon-size: 16px;--top-icon-width: var(--top-icon-size);border-radius:50%;background:var(--content-background-color);padding:1px;color:var(--color-text-4);line-height:1;z-index:1;pointer-events:all}.top-hint:hover{color:var(--color-text-3)}.top-input{--top-forms_clear-width: 0px;width:180px;position:relative;display:inline-flex;align-items:center;gap:var(--top-gap-1)}.top-input_input{background:var(--top-forms-background-color);height:var(--top-forms-base-height);padding:0;padding-right:max(var(--top-forms-padding),calc(var(--top-icon2-width) + var(--top-forms_clear-width)));padding-left:max(var(--top-forms-padding),var(--top-icon-width))}.top-input_input:hover{background:var(--top-forms-background-color-hover)}.top-input_input:focus{outline-color:var(--color-theme-75);outline-offset:0}.top-input[data-top-icon]:before,.top-input[data-top-icon2]:after{--top-icon-color: var(--color-text-secondary);--top-icon2-color: var(--color-text-secondary);position:absolute;z-index:3}.top-input[data-top-icon]:before{left:0}.top-input[data-top-icon2]:after{right:0}.top-input-withCleaner{--top-forms_clear-width: 24px}.top-input_cleaner{--top-icon-size: 20px;--top-icon-width: 20px;--top-icon-color: var(--color-text-3);cursor:pointer;border-radius:50%;width:24px;height:24px;position:absolute;right:calc(var(--top-forms-border-width) + max(var(--top-icon2-width),var(--top-forms-padding) / 2));z-index:1;display:flex;align-items:center;justify-content:center}.top-input_cleaner:hover{--top-icon-color: var(--color-text-2)}.top-input_input{width:50%;flex-grow:1}.top-input-datepicker{width:calc(105px + var(--top-icon-width) + var(--top-icon2-width))}.top-input_input-date{opacity:0;position:absolute;inset:0;z-index:-1}.top-input_input-date::-webkit-inner-spin-button{display:none}.top-input_input-date::-webkit-calendar-picker-indicator{opacity:0}:root{--top-radio-background-color: var(--content-background-color);--top-radio-background-color-hover: var(--top-radio-background-color);--top-radio-background-color-active: var(--top-radio-background-color)}.top-radio{cursor:pointer}.top-radio_input{border-radius:50%;background:var(--content-background-color);border:1px solid var(--top-forms-border-color);width:calc(var(--top-forms-option-height) - 3px * 2);height:calc(var(--top-forms-option-height) - 3px * 2)}.top-radio_input:hover{border-color:var(--top-forms-option-color);background:var(--color-theme-50)}.top-radio_input:checked{border-color:var(--top-forms-option-color);border-width:5px}.top-radio_input:checked:hover{border-color:var(--top-forms-option-color-hover)}.top-radio_input:disabled{border-color:var(--color-line-1-opacity);background:var(--color-theme-50)}.top-radio_input:checked:disabled{border-color:var(--color-theme-400)}.top-radio_input.top-error{border-color:var(--color-negative)}.top-radio_input.top-error:hover{border-color:var(--color-negative-2)}.top-checkboxSwitcher{cursor:pointer;display:inline-flex;gap:4px}.top-checkboxSwitcher_input{border-radius:9px;border:none;background:var(--color-theme-100);width:36px;height:18px;position:relative}.top-checkboxSwitcher_input:before{content:"";border-radius:50%;background:var(--color-white);width:12px;height:12px;margin:3px;position:absolute;top:0;left:0;transition:left .1s}.top-checkboxSwitcher_input:hover{background:var(--color-theme-150)}.top-checkboxSwitcher_input:checked{background:var(--top-forms-option-color)}.top-checkboxSwitcher_input:checked:hover{background:var(--top-forms-option-color-hover)}.top-checkboxSwitcher_input:checked:before{left:50%}.top-checkboxSwitcher_input:disabled{background:var(--color-theme-400)}.top-checkboxSwitcher_input.top-error{background:var(--color-negative)}.top-checkboxSwitcher_input.top-error:hover{background:var(--color-negative-2)}.top-textarea{width:180px;display:inline-flex;align-items:center;position:relative}.top-textarea_textarea{background:var(--top-forms-background-color);width:100%;padding:var(--top-forms-padding);resize:none}.top-textarea_textarea:hover{background:var(--top-forms-background-color-hover)}.top-textarea_textarea:focus{outline-color:var(--color-theme-75);outline-offset:0px}.top-textarea_textarea.top-textarea_textarea-expandable{width:100%;height:100%;overflow:hidden;position:absolute;top:0;left:0}.top-textarea_pseudoContent{box-sizing:border-box;min-height:var(--c35baa86);padding:var(--top-forms-padding);font-size:14px;white-space:pre-wrap;overflow-wrap:anywhere;pointer-events:none;opacity:0;z-index:-1}.top-textarea_hint{position:absolute;top:2px;right:2px}.top-select{--top-icon-color: var(--color-text-3);--top-icon2-color: var(--color-text-2);align-items:center;width:180px;max-width:100%;vertical-align:middle;display:inline-flex}.top-select-error{--top-icon-color: var(--color-negative);--top-icon2-color: var(--color-negative)}.top-select_select{background-color:var(--top-forms-background-color);padding-left:var(--top-forms-padding);text-indent:clamp(0px,calc(var(--top-icon-both-width) - var(--top-forms-padding)),calc(var(--top-icon-both-width) - var(--top-forms-padding)));width:100%;height:var(--top-forms-base-height);text-overflow:ellipsis;white-space:nowrap;flex-grow:1;overflow:hidden}.top-select_select:focus{outline-color:var(--color-theme-75);outline-offset:0}.top-select_select:disabled{background:var(--color-theme-50)}.top-select optgroup{color:var(--color-text-1);font-style:normal}.top-select option{background:var(--content-background-color);color:var(--color-text-1)}@-moz-document url-prefix(){.top-select_select{text-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)}}@media only screen and (min-width: 900px){.top-changer{cursor:pointer;border-radius:100%;width:0;transform:translate(-44px);color:var(--color-text-secondary-2);font-size:16px;line-height:1;display:none;z-index:2;order:4}.top-changer:hover{color:var(--color-primary)}.top-changer:after{content:"";background-color:var(--top-forms-background-color);font-family:Topvisor-2}*:hover>.top-changer{display:block}}
2
+ `,document.head.appendChild(S);class k{static isRetina(){return"devicePixelRatio"in window&&window.devicePixelRatio>1}static isMobile(){return!!navigator.userAgent.match(/Android|BlackBerry|iPhone|iPad|iPod|IEMobile|Opera Mini/i)}static isApp(){return navigator.userAgent.indexOf("Topvisor_App")!=-1}static isMacOS(){return navigator.userAgent.indexOf("Mac OS X")!==-1}static isSafari(){const e=/Chrome|Android/.test(navigator.userAgent);let a=/Safari/.test(navigator.userAgent);return e&&a&&(a=!1),a}static getCommandKeyLabel(){return this.isMacOS()?"⌘":"Ctrl"}}const F=100;let M;const _=new Map,v={width:window.innerWidth,height:window.innerHeight};function T(l){_.set(l,l)}function P(l){_.delete(l)}function A(l){clearTimeout(M),M=setTimeout(function(){l.topEvent={widthDiff:v.width-window.innerWidth,hightDiff:v.height-window.innerHeight},v.width=window.innerWidth,v.height=window.innerHeight,_.forEach(e=>e(l))},F)}window.addEventListener("resize",A);const V={addOnReize:T,removeOnResize:P},R={widthForMobile:900,dateFormat:"Y-m-d",gmt:(D=new Date().toString().match(/GMT(\S+)/))==null?void 0:D[1]},W={isMobile:!1,isMobileUA:!1,isRetina:!1,isApp:!1,isLandscape:!0,isPortrait:!1,size:0,dateFormat:"Y-m-d",gmt:(L=new Date().toString().match(/GMT(\S+)/))==null?void 0:L[1]},y=window,x=l=>{var e,a;if(!((a=(e=y==null?void 0:y.jQuery)==null?void 0:e.ui)!=null&&a.tooltip)){console.info("Для работы v-top-tooltip требуется глобальная загрузка jQuery UI Tooltip");return}return y.jQuery(l)},z=(l,e)=>{var r;const a=l.value??{};return a.content??=(r=e.props)==null?void 0:r.title,a.content=String(a.content).replace(/\r\n|\r|\n/g,"<br>"),a.position??={my:"bottom-18px",at:"top center"},a},U={mounted(l,e,a){var r;(r=x(l))==null||r.tooltip(z(e,a))},updated(l,e,a,r){var n;const t=z(e,a),s=(n=x(l))==null?void 0:n.tooltip("instance");s&&(s.options={...s.options,...t})},unmounted(l,e,a){var r;(r=x(l))==null||r.tooltip("destroy")}},$=window;class c{static L=o.reactive({Not_date:"Not date"});static page=($==null?void 0:$.page)||{};static options=R;static state=o.reactive({...W});static matchMediaIsMobile;static appendStyle(e,a=""){let r="all";a==="m"&&(r="(max-width: "+this.options.widthForMobile+"px)"),a==="pc"&&(r="(min-width: "+this.options.widthForMobile+"px)");const t=document.createElement("style");t.innerHTML=e,t.media=r,document.head.append(t)}static install(e,a){c.defineOptions(a),e.provide("top-core",c),this.installDirectives(e)}static installDirectives(e){e.directive("top-tooltip",U)}static defineOptions(e){e!=null&&e.widthForMobile&&(this.options.widthForMobile=e.widthForMobile),e!=null&&e.dateFormat&&(this.options.dateFormat=e.dateFormat),e!=null&&e.gmt&&(this.options.gmt=e.gmt),c.setState()}static setState(){c.matchMediaIsMobile=window.matchMedia(`(max-width: ${c.options.widthForMobile}px)`),c.state.isMobileUA=k.isMobile(),c.state.isRetina=k.isRetina(),c.state.isApp=k.isApp(),c.state.dateFormat=this.options.dateFormat,c.state.gmt=this.options.gmt,c.setStateByWindowSize(),V.addOnReize(c.onResize),c.onResize(),c.saveToCookie()}static onResize(){c.setStateByWindowSize(),document.documentElement.style.setProperty("--100vh",window.innerHeight+"px")}static setStateByWindowSize(){var e;c.state.isMobile=!!((e=c.matchMediaIsMobile)!=null&&e.matches),c.state.isLandscape=window.innerWidth>window.innerHeight,c.state.isPortrait=!c.state.isLandscape,c.state.size=window.innerWidth>window.innerHeight?window.innerWidth:window.innerHeight,c.saveToCookie()}static saveToCookie(){const e=[1,window.innerWidth,window.innerHeight,window.devicePixelRatio,Number(c.state.isMobile),Number(c.state.isRetina)];document.cookie="device="+e.join(",")+"; path=/;"}}class f{static stringToDate(e){return e.indexOf("T")===-1&&(e.length==10&&(e+=" 00:00:00"),e=e.replace(" ","T")+c.state.gmt),new Date(e)}static ms2Date(e,a=!0){let r;e!=null?r=new Date(e):r=new Date;const t=r.getDate().toString().padStart(2,"0"),s=String(r.getMonth()+1).padStart(2,"0"),n=r.getFullYear(),i=r.getHours().toString().padStart(2,"0"),p=r.getMinutes().toString().padStart(2,"0"),d=r.getSeconds().toString().padStart(2,"0");return r=n+"-"+s+"-"+t+" "+i+":"+p+":"+d,a&&(r=this.dateFormat(r)),r}static dateFormat(e,a=2,r=c.L.Not_date){if((!e||e.substring(0,10)==="0000-00-00")&&r&&r!=="0000-00-00")return r;const t=c.state.dateFormat.toLowerCase();let s=e.substring(0,10);s.length===7&&(s+="-01"),s+=" 00:00",s=s.replace(/-/g,"/");const n=new Date(s);if(isNaN(Number(n)))return r;let i=t.replace("y",String(n.getFullYear()).padStart(2,"0")).replace("m",String(n.getMonth()+1).padStart(2,"0")).replace("d",String(n.getDate()).padStart(2,"0"));if(e.length>10)switch(a){case 1:i+=" "+e.substring(11,13);break;case 2:i+=" "+e.substring(11,16);break;case 3:i+=" "+e.substring(11,19);break}return i}static dateUnformat(e,a=c.L.Not_date){if(!e)return a;if(e.match(/\d\d\d\d-\d\d-\d\d/))return e;const r=c.state.dateFormat.toLowerCase(),t=e.split(/\W/),s=r.split(/\W/);let n="",i="",p="";s.forEach((u,h)=>{switch(u){case"d":n=t[h];break;case"m":i=t[h];break;case"y":p=t[h];break}});let d=p+"-"+i+"-"+n;return d.match(/\d\d\d\d-\d\d-\d\d/)||(console.info("Неверный формат даты, будет возращена текущая дата, "+d),d=this.ms2Date(new Date().getTime(),!1).substring(0,10)),d}}const H=o.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(l){const e=l,a=o.computed(()=>e.href?"a":"button"),r=o.computed(()=>e.isSubmit?"submit":void 0);return(t,s)=>(o.openBlock(),o.createBlock(o.resolveDynamicComponent(a.value),{class:o.normalizeClass({"top-active":t.isActive,"top-disabled":t.disabled,"top-forms-focusable":!t.disabled,"top-button":!0,"top-button-progress":t.isProgress,[`top-size_${t.size}`]:!!t.size,[`top-color_${t.color}`]:!0,[`top-style_${t.styling}`]:!!t.styling}),name:t.name,title:t.title,href:t.href,type:r.value,"data-top-icon":t.icon||void 0,"data-top-icon2":t.icon2||void 0,disabled:t.disabled||void 0,inProgress:t.isProgress},{default:o.withCtx(()=>[o.renderSlot(t.$slots,"default",{},()=>[o.createTextVNode(o.toDisplayString(t.icon?"":"Button"),1)])]),_:3},8,["class","name","title","href","type","data-top-icon","data-top-icon2","disabled","inProgress"]))}}),I={"top-button":"top-button","top-active":"top-active","top-button-progress":"top-button-progress",progress:"_progress_1hqxk_1","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"},m=(l,e)=>{const a=l.__vccOpts||l;for(const[r,t]of e)a[r]=t;return a},O=m(H,[["__cssModules",{$style:I}]]),j={class:"top-forms-optionLabel"},Y={key:0,class:"top-forms-optionLabel_description"},w=m(o.defineComponent({__name:"controlLabel",props:{description:{},disabled:{type:Boolean}},setup(l){return(e,a)=>(o.openBlock(),o.createElementBlock("div",j,[o.createElementVNode("div",{class:o.normalizeClass({"top-forms-optionLabel_title":!0,"top-forms-optionLabel_title-disabled":e.disabled})},[o.renderSlot(e.$slots,"default")],2),e.description?(o.openBlock(),o.createElementBlock("div",Y,o.toDisplayString(e.description),1)):o.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"}}]]),q=["name","value","indeterminate","disabled"],G=m(o.defineComponent({__name:"checkbox",props:{modelValue:{type:[Boolean,Array,Set]},name:{},value:{},description:{},disabled:{type:Boolean},indeterminate:{type:Boolean},isError:{type:Boolean}},emits:["update:modelValue"],setup(l,{emit:e}){const a=l,r=o.computed({get(){return a.modelValue},set(t){e("update:modelValue",t)}});return(t,s)=>(o.openBlock(),o.createElementBlock("label",{class:o.normalizeClass({"top-forms-optionWrapper":!0,"top-checkbox":!0,["top-checkbox_"+t.name]:t.name!=="","top-disabled":t.disabled,"top-error":t.isError&&!t.disabled})},[o.withDirectives(o.createElementVNode("input",{type:"checkbox",class:o.normalizeClass({"top-forms-focusable":!t.disabled,"top-forms-option":!0,"top-checkbox_input":!0,"top-error":t.isError&&!t.disabled}),name:t.name,"onUpdate:modelValue":s[0]||(s[0]=n=>r.value=n),value:t.value,indeterminate:t.indeterminate,disabled:t.disabled},null,10,q),[[o.vModelCheckbox,r.value]]),t.$slots.default?(o.openBlock(),o.createBlock(w,{key:0,description:t.description,disabled:t.disabled},{default:o.withCtx(()=>[o.renderSlot(t.$slots,"default")]),_:3},8,["description","disabled"])):o.createCommentVNode("",!0)],2))}}),[["__cssModules",{$style:{"top-checkbox":"top-checkbox","top-checkbox_input":"top-checkbox_input","top-error":"top-error"}}]]),K=["title"],C=m(o.defineComponent({__name:"hint",props:{hint:{}},setup(l){return(e,a)=>(o.openBlock(),o.createElementBlock("span",{class:"top-hint","data-top-icon":"",title:e.hint},null,8,K))}}),[["__cssModules",{$style:{"top-hint":"top-hint"}}]]),Q=["data-top-icon","data-top-icon2"],X=["name","title","placeholder","disabled","readonly"],J=["onClick"],Z={key:1,class:"top-formsCaption"},B=m(o.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(l,{emit:e}){const a=l,r=o.computed({get(){return a.modelValue},set(n){e("update:modelValue",n)}}),t=o.computed(()=>a.addCleaner&&!a.title||a.captionType!==""?"":a.title),s=()=>{e("update:modelValue","")};return(n,i)=>(o.openBlock(),o.createElementBlock("label",{class:o.normalizeClass({"top-input":!0,["top-size_"+n.size]:!0,"top-disabled":n.disabled,["top-input-"+n.modificator]:!!n.modificator,"top-input-withCleaner":n.addCleaner&&r.value&&r.value!=="0000-00-00","top-formsCaptionWrapper":n.captionType!=="","top-formsCaptionWrapper-always":n.captionType==="top"}),"data-top-icon":n.icon,"data-top-icon2":n.icon2},[o.withDirectives(o.createElementVNode("input",o.mergeProps({type:"text",class:{"top-input_input":!0,["top-input_input-"+n.modificator]:!!n.modificator,"top-forms-focusable":!n.disabled,"top-error":n.isError},autocomplete:"off_always",name:n.name,"onUpdate:modelValue":i[0]||(i[0]=p=>r.value=p),title:n.title,placeholder:t.value,disabled:n.disabled,readonly:n.readonly,onKeydown:i[1]||(i[1]=o.withKeys(o.withModifiers(()=>(n.addCleaner||!!n.$slots.btn)&&s(),["stop"]),["esc"]))},n.$attrs),null,16,X),[[o.vModelText,r.value]]),n.addCleaner&&r.value&&r.value!=="0000-00-00"?(o.openBlock(),o.createElementBlock("span",{key:0,class:"top-input_cleaner","data-top-icon":"",onClick:o.withModifiers(s,["prevent"])},null,8,J)):o.createCommentVNode("",!0),n.captionType!==""?(o.openBlock(),o.createElementBlock("span",Z,o.toDisplayString(n.title),1)):o.createCommentVNode("",!0),o.renderSlot(n.$slots,"default")],10,Q))}}),[["__cssModules",{$style:{"top-input":"top-input","top-input_input":"top-input_input","top-input-withCleaner":"top-input-withCleaner","top-input_cleaner":"top-input_cleaner"}}]]),oo=["modelValue"],to=!!document.documentElement.ontouchstart&&!!document.createElement("input").showPicker;let E=l=>{};const eo=m(o.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(l,{emit:e}){const a=l,r=o.ref(),t=o.computed({get(){return f.dateFormat(a.modelValue,2,"0000-00-00")},set(p){p=f.dateUnformat(p,"0000-00-00"),e("update:modelValue",p)}});let s=p=>{E(p)},n=p=>{const d=f.dateUnformat(p.target.value),u=f.dateFormat(d);if(!u||u===c.L.Not_date||p.target.value!==u){p.target.value=t.value;return}t.value=p.target.value};async function i(p){const d=await new Promise((h,g)=>N(["./datepicker-1e725859.amd"],h,g));E=d.oninput;const u=d.connectDatepicker(p.target,{onSelect:()=>n(p)});u&&(u.datepicker("show"),o.onUnmounted(()=>u.datepicker("destroy")))}return(p,d)=>o.unref(to)?(o.openBlock(),o.createBlock(o.unref(B),o.mergeProps({key:0},p.$props,{modelValue:t.value,readonly:"",onClick:d[1]||(d[1]=u=>r.value.showPicker())}),{default:o.withCtx(()=>[o.createElementVNode("input",{ref_key:"el",ref:r,type:"date",class:"top-input_input-date",modelValue:p.modelValue,onChange:d[0]||(d[0]=u=>t.value=u.target.value),tabindex:"-1"},null,40,oo)]),_:1},16,["modelValue"])):(o.openBlock(),o.createBlock(o.unref(B),o.mergeProps({key:1},p.$props,{modelValue:t.value,"onUpdate:modelValue":d[2]||(d[2]=u=>u===""?t.value="":""),onInput:o.unref(s),onFocusOnce:i,onChange:o.unref(n),modificator:"datepicker"}),null,16,["modelValue","onInput","onChange"]))}}),[["__cssModules",{$style:{"top-input-datepicker":"top-input-datepicker","top-input_input-date":"top-input_input-date"}}]]),ro=["name","value","disabled"],ao=m(o.defineComponent({__name:"radio",props:{modelValue:{},value:{},name:{},description:{},disabled:{type:Boolean},isError:{type:Boolean}},emits:["update:modelValue"],setup(l,{emit:e}){const a=l,r=o.computed({get(){return a.modelValue},set(t){e("update:modelValue",t)}});return(t,s)=>(o.openBlock(),o.createElementBlock("label",{class:o.normalizeClass({"top-forms-optionWrapper":!0,"top-radio":!0,["top-radio_"+t.name]:t.name!=="","top-disabled":t.disabled,"top-error":t.isError&&!t.disabled})},[o.withDirectives(o.createElementVNode("input",{type:"radio",class:o.normalizeClass({"top-forms-focusable":!t.disabled,"top-forms-option":!0,"top-radio_input":!0,"top-error":t.isError&&!t.disabled}),"onUpdate:modelValue":s[0]||(s[0]=n=>r.value=n),name:t.name,value:t.value,disabled:t.disabled},null,10,ro),[[o.vModelRadio,r.value]]),t.$slots.default?(o.openBlock(),o.createBlock(w,{key:0,description:t.description,disabled:t.disabled},{default:o.withCtx(()=>[o.renderSlot(t.$slots,"default")]),_:3},8,["description","disabled"])):o.createCommentVNode("",!0)],2))}}),[["__cssModules",{$style:{"top-radio":"top-radio","top-radio_input":"top-radio_input","top-error":"top-error"}}]]),no=["name","value","disabled"],io=m(o.defineComponent({__name:"switcher",props:{modelValue:{type:[Boolean,Array,Set]},name:{},value:{},description:{},disabled:{type:Boolean},isError:{type:Boolean}},emits:["update:modelValue"],setup(l,{emit:e}){const a=l,r=o.computed({get(){return a.modelValue},set(t){e("update:modelValue",t)}});return(t,s)=>(o.openBlock(),o.createElementBlock("label",{class:o.normalizeClass({"top-forms-optionWrapper":!0,"top-checkboxSwitcher":!0,"top-disabled":t.disabled,"top-error":t.isError&&!t.disabled})},[o.withDirectives(o.createElementVNode("input",{type:"checkbox",class:o.normalizeClass({"top-forms-focusable":!t.disabled,"top-forms-option":!0,"top-checkboxSwitcher_input":!0,"top-error":t.isError&&!t.disabled}),"onUpdate:modelValue":s[0]||(s[0]=n=>r.value=n),name:t.name,value:t.value,disabled:t.disabled},null,10,no),[[o.vModelCheckbox,r.value]]),t.$slots.default?(o.openBlock(),o.createBlock(w,{key:0,description:t.description,disabled:t.disabled},{default:o.withCtx(()=>[o.renderSlot(t.$slots,"default")]),_:3},8,["description","disabled"])):o.createCommentVNode("",!0)],2))}}),[["__cssModules",{$style:{"top-checkboxSwitcher":"top-checkboxSwitcher","top-checkboxSwitcher_input":"top-checkboxSwitcher_input","top-error":"top-error"}}]]),lo=["name","placeholder","disabled","readonly","rows"],so={key:0,class:"top-textarea_pseudoContent"},po=m(o.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(l,{emit:e}){const a=l;o.useCssVars(t=>({c35baa86:t.minHeight+"px"}));const r=o.computed({get(){return a.modelValue},set(t){e("update:modelValue",t)}});return(t,s)=>{const n=o.resolveDirective("top-tooltip");return o.openBlock(),o.createElementBlock("label",{class:o.normalizeClass({"top-textarea":!0,["top-textarea-"+t.name]:t.name,"top-disabled":t.disabled})},[o.withDirectives(o.createElementVNode("textarea",o.mergeProps({type:"text",class:{"top-forms-focusable":!t.disabled,"top-textarea_textarea":!0,"top-textarea_textarea-expandable":t.expandable,"top-error":t.isError},autocomplete:"off_always",name:t.name,placeholder:t.placeholder,disabled:t.disabled,readonly:t.readonly,rows:t.expandable?void 0:t.rows},t.$attrs,{"onUpdate:modelValue":s[0]||(s[0]=i=>r.value=i)}),null,16,lo),[[o.vModelText,r.value]]),t.expandable?(o.openBlock(),o.createElementBlock("div",so,o.toDisplayString(r.value+" "),1)):o.createCommentVNode("",!0),t.hint?o.withDirectives((o.openBlock(),o.createBlock(C,{key:1,class:"top-textarea_hint",hint:t.hint},null,8,["hint"])),[[n]]):o.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"}}]]),co=["data-value","data-top-icon","data-top-icon2"],uo=["name","disabled"],bo=["label","disabled"],mo=["value","selected","disabled"],ho=["value","selected","disabled"],go={key:1,class:"top-formsCaption"},fo=m(o.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(l,{emit:e}){const a=l,r=o.computed({get(){return a.modelValue},set(i){e("update:modelValue",i)}}),t=o.computed(()=>{var i;return(i=s.value.get(r.value))==null?void 0:i.icon}),s=o.computed(()=>{const i=new Map;return a.options.forEach(p=>{if(!p.disabled){if(p.children){p.children.forEach(d=>{d.disabled||i.set(d.value,d)});return}i.set(p.value,p)}}),i});o.watch([o.toRef(a.modelValue),s],()=>{(r.value===null||r.value===void 0)&&s.value.size&&(console.warn("Пожалуйста, не передавайте в компонент Select значения null и undefined"),r.value=s.value.keys().next().value)},{immediate:!0});const n=()=>{const i=[...s.value.keys()],d=(i.indexOf(r.value)+1)%i.length;r.value=i[d]};return(i,p)=>(o.openBlock(),o.createElementBlock("label",{class:o.normalizeClass({"top-select":!0,["top-select-"+i.name]:i.name,["top-size_"+i.size]:!0,"top-formsCaptionWrapper":!!i.title,"top-select-error":i.isError,"top-disabled":i.disabled}),"data-value":r.value,"data-top-icon":i.icon,"data-top-icon2":t.value},[o.withDirectives(o.createElementVNode("select",{class:o.normalizeClass({"top-forms-focusable":!i.disabled,"top-select_select":!0,"top-select_arrow":!0,"top-error":i.isError}),name:i.name,disabled:i.disabled,"onUpdate:modelValue":p[0]||(p[0]=d=>r.value=d)},[(o.openBlock(!0),o.createElementBlock(o.Fragment,null,o.renderList(i.options.entries(),([d,u])=>(o.openBlock(),o.createElementBlock(o.Fragment,null,[u.children?(o.openBlock(),o.createElementBlock("optgroup",{key:"group_"+u.value,label:u.title,disabled:u.disabled},[(o.openBlock(!0),o.createElementBlock(o.Fragment,null,o.renderList(u.children.entries(),([h,g])=>(o.openBlock(),o.createElementBlock("option",{key:u.value,value:g.value,selected:g.value===r.value,disabled:g.disabled},o.toDisplayString(g.title),9,mo))),128))],8,bo)):(o.openBlock(),o.createElementBlock("option",{key:u.value,value:u.value,selected:u.value===r.value,disabled:u.disabled},o.toDisplayString(u.title),9,ho))],64))),256))],10,uo),[[o.vModelSelect,r.value]]),i.addChanger&&s.value.size&&!i.disabled?(o.openBlock(),o.createElementBlock("span",{key:0,class:"top-changer",onClick:n})):o.createCommentVNode("",!0),i.title?(o.openBlock(),o.createElementBlock("span",go,o.toDisplayString(i.title),1)):o.createCommentVNode("",!0)],10,co))}}),[["__cssModules",{$style:{"top-select":"top-select","top-select-error":"top-select-error","top-select_select":"top-select_select","top-changer":"top-changer"}}]]);b.Button=O,b.ControlLabel=w,b.Core=c,b.Device=k,b.Events=V,b.Hint=C,b.Input=B,b.Textarea=po,b.UtilsDate=f,b._export_sfc=m,b.checkbox=G,b.inputDate=eo,b.radio=ao,b.select=fo,b.switcher=io});
3
+ //# sourceMappingURL=forms-2891e074.amd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"forms-2891e074.amd.js","sources":["../../src/core/utils/device.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/button/button.vue","../../src/components/forms/checkbox/checkbox.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":["class Device {\n\n\tstatic isRetina () {\n\t\treturn ('devicePixelRatio' in window && window.devicePixelRatio > 1);\n\t}\n\n\t// определить, является ли устройство мобильным\n\tstatic isMobile (): boolean {\n\t\treturn !!navigator.userAgent.match(/Android|BlackBerry|iPhone|iPad|iPod|IEMobile|Opera Mini/i);\n\t}\n\n\t// определить, открыт ли сайт в приложении\n\tstatic isApp () {\n\t\treturn (navigator.userAgent.indexOf('Topvisor_App') != -1);\n\t}\n\n\t// определить, является ли OS пользователя macOS\n\tstatic isMacOS () {\n\t\treturn navigator.userAgent.indexOf('Mac OS X') !== -1;\n\t}\n\n\t// определить, является ли текущий браузер пользователя Safari\n\tstatic isSafari () {\n\t\tconst isChrome = /Chrome|Android/.test(navigator.userAgent);\n\n\t\tlet isSafari = /Safari/.test(navigator.userAgent);\n\t\tif (isChrome && isSafari) {\n\t\t\tisSafari = false;\n\t\t}\n\n\t\treturn isSafari;\n\t};\n\n\t/**\n\t * Вернуть текст для обозначения клавиши Ctrl / Command в зависимости от OS\n\t * @returns {'Ctrl'|'⌘'}\n\t */\n\tstatic getCommandKeyLabel (): 'Ctrl' | '⌘' {\n\t\tif (this.isMacOS()) {\n\t\t\treturn '⌘';\n\t\t} else {\n\t\t\treturn 'Ctrl';\n\t\t}\n\t}\n\n}\n\nexport default Device;\n","const onResizeDelay = 100;\n\nlet onResizeTimer: NodeJS.Timeout;\n\ntype TopEvent = Event & { topEvent: { widthDiff: number, hightDiff: number } }\n\n/**\n * Установленные обрабочики на событие изменения размеров окна\n */\nconst onResizeListeners: Map<(ev: TopEvent) => any, (ev: TopEvent) => any> = new Map();\n\n// зафиксированное состояние размеров окна\nconst windowSize = {\n\twidth: window.innerWidth,\n\theight: window.innerHeight,\n};\n\n/**\n * Добавить обработчик на событие изменения размеров экрана\n * вызов таких обработчиков будет опмизирован и объединен в одно событие\n */\nfunction addOnReize (listener: (this: Element, ev: TopEvent) => any) {\n\tonResizeListeners.set(listener, listener);\n}\n\n/**\n * Удаление обработчика на событие изменений размеров экрана\n */\nfunction removeOnResize (listener: (this: Element, ev: TopEvent) => any) {\n\tonResizeListeners.delete(listener);\n}\n\nfunction onResize (e: any) {\n\tclearTimeout(onResizeTimer);\n\n\tonResizeTimer = setTimeout(function () {\n\t\te.topEvent = {\n\t\t\twidthDiff: windowSize.width - window.innerWidth,\n\t\t\thightDiff: windowSize.height - window.innerHeight,\n\t\t};\n\n\t\twindowSize.width = window.innerWidth;\n\t\twindowSize.height = window.innerHeight;\n\n\t\tonResizeListeners.forEach((callback) => callback(e));\n\t}, onResizeDelay);\n}\n\nwindow.addEventListener('resize', onResize);\n\nexport default {\n\taddOnReize,\n\tremoveOnResize,\n};\n","/**\n * Конфигурация UI\n * Можно переопределить при подклчюении UI во Vue приложение через app.use(Core, options)\n */\nconst options = {\n\twidthForMobile: 900,\n\tdateFormat: 'Y-m-d',\n\n\t/**\n\t * Для Москвы: +0300\n\t */\n\tgmt: new Date().toString().match(/GMT(\\S+)/)?.[1],\n};\n\nexport default options;","/**\n * State UI для взаимодейсвтиями с приложениями Vue\n */\nconst state = {\n\t/**\n\t * Device by size\n\t * @see widthForMobile\n\t */\n\tisMobile: false,\n\n\t/**\n\t * Device by user agent\n\t */\n\tisMobileUA: false,\n\n\t/**\n\t * true, если плотность пикселей экрана больше 1\n\t */\n\tisRetina: false,\n\n\t/**\n\t * true, елси это приложение\n\t */\n\tisApp: false,\n\n\t/**\n\t * true при горизонтальном расположении устройства\n\t */\n\tisLandscape: true,\n\n\t/**\n\t * true при вертикальном расположении устройства\n\t */\n\tisPortrait: false,\n\tsize: 0,\n\n\t// См. core.options\n\tdateFormat: 'Y-m-d',\n\n\t// См. core.options\n\tgmt: new Date().toString().match(/GMT(\\S+)/)?.[1],\n};\n\nexport default state;","import type { DirectiveBinding, ObjectDirective, VNode } from 'vue';\n\nconst _window: any = window;\n\nconst $ = (el: VNode) => {\n\tif (!_window?.jQuery?.ui?.tooltip) {\n\t\tconsole.info('Для работы v-top-tooltip требуется глобальная загрузка jQuery UI Tooltip');\n\n\t\treturn;\n\t}\n\n\treturn _window.jQuery(el);\n};\n\nconst tvTooltipGenOptions = (binding: DirectiveBinding, vnode: VNode) => {\n\tconst options = binding.value ?? {};\n\n\toptions.content ??= vnode.props?.title;\n\toptions.content = String(options.content).replace(/\\r\\n|\\r|\\n/g, '<br>');\n\n\toptions.position ??= {\n\t\tmy: 'bottom-18px',\n\t\tat: 'top center',\n\t};\n\n\treturn options;\n};\n\nconst tooltip = {\n\tmounted(el: VNode, binding: DirectiveBinding, vnode: VNode) {\n\t\t$(el)?.tooltip(tvTooltipGenOptions(binding, vnode));\n\t},\n\n\tupdated(el: VNode, binding: DirectiveBinding, vnode: VNode, _prevVnode: VNode) {\n\t\t/**\n\t\t * В результате обновления может быть открыто несколько тултипов поэтому изменить опции, без перерисовки тултипа\n\t\t */\n\t\tconst options = tvTooltipGenOptions(binding, vnode);\n\t\tconst instance = $(el)?.tooltip('instance');\n\t\tif (!instance) {\n\t\t\treturn;\n\t\t}\n\n\t\tinstance.options = {\n\t\t\t...instance.options,\n\t\t\t...options,\n\t\t};\n\t},\n\n\tunmounted(el: VNode, binding: DirectiveBinding, vnode: VNode) {\n\t\t$(el)?.tooltip('destroy');\n\t},\n} satisfies ObjectDirective;\n\nexport default tooltip;","import { reactive } from 'vue';\nimport Device from '@/core/utils/device';\nimport Events from '@/core/core/events';\nimport options from '@/core/core/options';\nimport state from '@/core/core/state';\nimport directiveTooltip from '@/core/directives/tooltip';\n\nconst _window: any = window;\n\nclass Core {\n\n\t/**\n\t * Настройки словаря\n\t */\n\tstatic L = reactive({\n\t\tNot_date: 'Not date',\n\t});\n\n\tstatic page = _window?.page || {};\n\n\tstatic options = options;\n\n\tstatic state = reactive({ ...state });\n\n\tstatic matchMediaIsMobile?: MediaQueryList;\n\n\t/**\n\t * Добавить на страницу стили, используется для загрузки стилей из js\n\t *\n\t * Условная загрузка стилей m и pc отключена в пользу производительсности, стили грузятся всегда, но применяются по условию\n\t * @param style - css стили в строке\n\t * @param type - если указать 'm' или 'pc', то стили будут применяться по условию в зависимости от настройки this.options.widthForMobile\n\t */\n\tstatic appendStyle(style: string, type: '' | 'm' | 'pc' = ''): void {\n\t\tlet media = 'all';\n\n\t\tif (type === 'm') {\n\t\t\tmedia = '(max-width: ' + this.options.widthForMobile + 'px)';\n\t\t}\n\n\t\tif (type === 'pc') {\n\t\t\tmedia = '(min-width: ' + this.options.widthForMobile + 'px)';\n\t\t}\n\n\t\tconst elStyle = document.createElement('style');\n\t\telStyle.innerHTML = style;\n\t\telStyle.media = media;\n\n\t\tdocument.head.append(elStyle);\n\t}\n\n\t/**\n\t * Установить как плагин в прилоежнии Vue\n\t * Core.state является общим для всех приложений Vue на странице\n\t * Core.options является общим для всех приложений Vue на странице\n\t * @param app - Vue App\n\t * @param {typeof options} options - параметры UI\n\t */\n\tstatic install(app: any, options: typeof this.options) {\n\t\tCore.defineOptions(options);\n\n\t\tapp.provide('top-core', Core);\n\n\t\tthis.installDirectives(app);\n\t}\n\n\tstatic installDirectives(app: any) {\n\t\tapp.directive('top-tooltip', directiveTooltip);\n\t}\n\n\t/**\n\t * Установить конфигурацию UI\n\t * @param {typeof options} options\n\t */\n\tstatic defineOptions(options: typeof this.options) {\n\t\tif (options?.widthForMobile) {\n\t\t\tthis.options.widthForMobile = options.widthForMobile;\n\t\t}\n\n\t\tif (options?.dateFormat) {\n\t\t\tthis.options.dateFormat = options.dateFormat;\n\t\t}\n\n\t\tif (options?.gmt) {\n\t\t\tthis.options.gmt = options.gmt;\n\t\t}\n\n\t\tCore.setState();\n\t}\n\n\tstatic setState() {\n\t\tCore.matchMediaIsMobile = window.matchMedia(`(max-width: ${Core.options.widthForMobile}px)`);\n\n\t\tCore.state.isMobileUA = Device.isMobile();\n\t\tCore.state.isRetina = Device.isRetina();\n\t\tCore.state.isApp = Device.isApp();\n\t\tCore.state.dateFormat = this.options.dateFormat;\n\t\tCore.state.gmt = this.options.gmt;\n\n\t\tCore.setStateByWindowSize();\n\n\t\t// пересчет значений, зависящих от рамзеров окна\n\t\tEvents.addOnReize(Core.onResize);\n\n\t\tCore.onResize();\n\n\t\tCore.saveToCookie();\n\t}\n\n\tstatic onResize() {\n\t\tCore.setStateByWindowSize();\n\n\t\t// честный vh\n\t\tdocument.documentElement.style.setProperty('--100vh', window.innerHeight + 'px');\n\t}\n\n\tstatic setStateByWindowSize() {\n\t\tCore.state.isMobile = !!Core.matchMediaIsMobile?.matches;\n\t\tCore.state.isLandscape = (window.innerWidth > window.innerHeight);\n\t\tCore.state.isPortrait = !Core.state.isLandscape;\n\t\tCore.state.size = (window.innerWidth > window.innerHeight) ? window.innerWidth : window.innerHeight;\n\n\t\tCore.saveToCookie();\n\t}\n\n\t/**\n\t * Сохранить информацию об устройстве в cookie\n\t */\n\tstatic saveToCookie() {\n\t\tconst device = [\n\t\t\t1,\n\t\t\twindow.innerWidth,\n\t\t\twindow.innerHeight,\n\t\t\twindow.devicePixelRatio,\n\t\t\tNumber(Core.state.isMobile),\n\t\t\tNumber(Core.state.isRetina),\n\t\t];\n\n\t\tdocument.cookie = 'device=' + device.join(',') + '; path=/;';\n\t}\n\n}\n\nexport default Core;","import Core from '@/core/core/core';\n\nclass UtilsDate {\n\n\t/**\n\t * Получить объект Date из строки\n\t * @param date - строка с датой\n\t */\n\tstatic stringToDate(date: string) {\n\t\tif (date.indexOf('T') === -1) {\n\t\t\tif (date.length == 10) {\n\t\t\t\tdate += ' 00:00:00';\n\t\t\t}\n\n\t\t\tdate = date.replace(' ', 'T') + Core.state.gmt;\n\t\t}\n\n\t\treturn new Date(date);\n\t}\n\n\t// Перевод миллисекунд (UTC) в дату-строку (время локальное)\n\n\t/**\n\t * Перевод миллисекунд (UTC) в дату-строку (время локальное)\n\t * @param {?number} ms\n\t * @param {?boolean} useFormat\n\t */\n\tstatic ms2Date(ms: number, useFormat: boolean = true): string {\n\t\tlet date;\n\t\tif (ms != undefined) {\n\t\t\tdate = new Date(ms);\n\t\t} else {\n\t\t\tdate = new Date();\n\t\t}\n\n\t\tconst d = date.getDate().toString().padStart(2, '0');\n\t\tconst m = String(date.getMonth() + 1).padStart(2, '0');\n\t\tconst Y = date.getFullYear();\n\t\tconst H = date.getHours().toString().padStart(2, '0');\n\t\tconst i = date.getMinutes().toString().padStart(2, '0');\n\t\tconst s = date.getSeconds().toString().padStart(2, '0');\n\n\t\tdate = Y + '-' + m + '-' + d + ' ' + H + ':' + i + ':' + s;\n\n\t\tif (useFormat) {\n\t\t\tdate = this.dateFormat(date);\n\t\t}\n\n\t\treturn date;\n\t}\n\n\t/**\n\t * Перевод даты в формат пользователя\n\t * @param {string} date\n\t * @param {0|1|2|3} time - 0: только дата, 1: дата и часы, 2: дата и часы с минутами, 3: дата и часы с минутами и секундами\n\t */\n\tstatic dateFormat(date: string, time: 0 | 1 | 2 | 3 = 2, emptyValue: string = Core.L.Not_date): string {\n\t\tif (!date || date.substring(0, 10) === '0000-00-00') {\n\t\t\tif (emptyValue && emptyValue !== '0000-00-00') {\n\t\t\t\treturn emptyValue;\n\t\t\t}\n\t\t}\n\n\t\tconst dateFormat = Core.state.dateFormat.toLowerCase();\n\n\t\tlet dateForObj = date.substring(0, 10);\n\n\t\tif (dateForObj.length === 7) {\n\t\t\tdateForObj += '-01';\n\t\t}\n\n\t\tdateForObj += ' 00:00';\n\n\t\t// safari fix\n\t\tdateForObj = dateForObj.replace(/-/g, '/');\n\n\t\tconst dateObject = new Date(dateForObj);\n\t\tif (isNaN(Number(dateObject))) {\n\t\t\treturn emptyValue;\n\t\t}\n\n\t\tlet result = dateFormat.\n\t\t\treplace('y', String(dateObject.getFullYear()).padStart(2, '0')).\n\t\t\treplace('m', String(dateObject.getMonth() + 1).padStart(2, '0')).\n\t\t\treplace('d', String(dateObject.getDate()).padStart(2, '0'));\n\n\t\tif (date.length > 10) {\n\t\t\tswitch (time) {\n\t\t\t\t// часы\n\t\t\t\tcase 1:\n\t\t\t\t\tresult += ' ' + date.substring(11, 13);\n\n\t\t\t\t\tbreak;\n\n\t\t\t\t// часы и минуты\n\t\t\t\tcase 2:\n\t\t\t\t\tresult += ' ' + date.substring(11, 16);\n\n\t\t\t\t\tbreak;\n\n\t\t\t\t// часы, минуты и секунды\n\t\t\t\tcase 3:\n\t\t\t\t\tresult += ' ' + date.substring(11, 19);\n\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * Перевод даты из формата пользователя в системный формат\n\t * @param {string} date\n\t */\n\tstatic dateUnformat(date: string, emptyValue: string = Core.L.Not_date): string {\n\t\tif (!date) {\n\t\t\treturn emptyValue;\n\t\t}\n\n\t\tif (date.match(/\\d\\d\\d\\d-\\d\\d-\\d\\d/)) {\n\t\t\treturn date;\n\t\t}\n\n\t\tconst dateFormat = Core.state.dateFormat.toLowerCase();\n\n\t\tconst dateChunks = date.split(/\\W/);\n\t\tconst dateFormatChunks = dateFormat.split(/\\W/);\n\n\t\tlet d = '';\n\t\tlet m = '';\n\t\tlet y = '';\n\n\t\tdateFormatChunks.forEach((type, index) => {\n\t\t\tswitch (type) {\n\t\t\t\tcase 'd':\n\t\t\t\t\td = dateChunks[index];\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'm':\n\t\t\t\t\tm = dateChunks[index];\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'y':\n\t\t\t\t\ty = dateChunks[index];\n\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t});\n\n\t\tlet result = y + '-' + m + '-' + d;\n\n\t\tif (!result.match(/\\d\\d\\d\\d-\\d\\d-\\d\\d/)) {\n\t\t\tconsole.info('Неверный формат даты, будет возращена текущая дата, ' + result);\n\n\t\t\tresult = this.ms2Date((new Date()).getTime(), false).substring(0, 10);\n\t\t}\n\n\t\treturn result;\n\t}\n\n}\n\nexport default UtilsDate;","<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport type { Props } from './button';\n\nconst props = withDefaults(defineProps<Props>(), {\n\tcolor: 'blue',\n\tstyling: '',\n\tsize: 's',\n});\n\nconst tagName = computed(() => props.href ? 'a' : 'button');\n\nconst type = computed(() => props.isSubmit ? 'submit' : undefined);\n</script>\n\n<template>\n\t<component\n\t\t:is=\"tagName\"\n\t\t:class=\"{\n\t\t\t['top-active']: isActive,\n\t\t\t['top-disabled']: disabled,\n\t\t\t['top-forms-focusable']: !disabled,\n\t\t\t['top-button']: true,\n\t\t\t['top-button-progress']: isProgress,\n\t\t\t[`top-size_${size}`]: !!size,\n\t\t\t[`top-color_${color}`]: true,\n\t\t\t[`top-style_${styling}`]: !!styling,\n\t\t}\"\n\t\t:name=\"name\"\n\t\t:title=\"title\"\n\t\t:href=\"href\"\n\t\t:type=\"type\"\n\t\t:data-top-icon=\"icon || undefined\"\n\t\t:data-top-icon2=\"icon2 || undefined\"\n\t\t:disabled=\"disabled || undefined\"\n\t\t:inProgress=\"isProgress\"\n\t>\n\t\t<!-- @slot Текст или HTML в кнопке -->\n\t\t<slot>\n\t\t\t{{ !icon ? 'Button' : '' }}\n\t\t</slot>\n\t</component>\n</template>\n\n<style module>\n@import \"./style/button.css\";\n@import \"./style/style-outline.css\";\n@import \"./style/style-soft.css\";\n@import \"./style/style-transparent.css\";\n\n.top-button {\n\t--top-button-color: var(--color-white);\n\t--top-button-background-color: transparent;\n\t--top-button-background-color-hover: var(--top-button-background-color);\n\t--top-button-background-color-active: var(--top-button-background-color-hover);\n\t--top-button-background-color-selected: var(--top-button-background-color-hover);\n\t--top-button-box-shadow: none;\n\t--top-button-box-shadow-hover: var(--top-shadow-darken-2);\n\t--top-button-box-shadow-active: var(--top-shadow-darken-3);\n\t--top-button-box-shadow-selected: var(--top-shadow-darken-3);\n\t--top-forms-border-width: 0px;\n\t--top-icon-width: calc(var(--top-icon-size) + var(--top-forms-padding));\n\t--top-icon2-width: calc(var(--top-icon2-size) + var(--top-forms-padding));\n}\n\n.top-button.top-size_l {\n\t--top-forms-padding: var(--top-forms-padding_l);\n\t--top-forms-base-height: var(--top-forms-base-height_l);\n}\n\n.top-button.top-size_xl {\n\t--top-forms-padding: var(--top-forms-padding_xl);\n\t--top-forms-base-height: var(--top-forms-base-height_xl);\n}\n</style>","<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport type { Props, Emits } from './checkbox';\nimport ControlLabel from '../controlLabel/controlLabel.vue';\n\nconst props = defineProps<Props>();\nconst emit = defineEmits<Emits>();\n\nconst localValue = computed({\n\tget() {\n\t\treturn props.modelValue;\n\t},\n\tset(value) {\n\t\temit('update:modelValue', value);\n\t},\n});\n\n</script>\n\n<template>\n\t<label\n\t\t:class=\"{\n\t\t\t['top-forms-optionWrapper']: true,\n\t\t\t['top-checkbox']: true,\n\t\t\t['top-checkbox_' + name]: name !== '',\n\t\t\t['top-disabled']: disabled,\n\t\t\t['top-error']: isError && !disabled,\n\t\t}\"\n\t>\n\t\t<input\n\t\t\ttype=\"checkbox\"\n\t\t\t:class=\"{\n\t\t\t\t['top-forms-focusable']: !disabled,\n\t\t\t\t['top-forms-option']: true,\n\t\t\t\t['top-checkbox_input']: true,\n\t\t\t\t['top-error']: isError && !disabled,\n\t\t\t}\"\n\t\t\t:name=\"name\"\n\t\t\tv-model=\"localValue\"\n\t\t\t:value=\"value\"\n\t\t\t:indeterminate=\"indeterminate\"\n\t\t\t:disabled=\"disabled\"\n\t\t>\n\n\t\t<ControlLabel\n\t\t\tv-if=\"$slots.default\"\n\t\t\t:description=\"description\"\n\t\t\t:disabled=\"disabled\"\n\t\t>\n\t\t\t<!-- @slot Слот с заголовком -->\n\t\t\t<slot></slot>\n\t\t</ControlLabel>\n\t</label>\n</template>\n\n<style module>\n.top-checkbox {\n\tcursor: pointer;\n\tdisplay: inline-flex;\n}\n\n.top-checkbox_input {\n\tcursor: inherit;\n\tborder-radius: 4px;\n\tbackground: var(--content-background-color);\n\tborder: 1px solid var(--top-forms-border-color);\n\twidth: calc(var(--top-forms-option-height) - 3px * 2);\n\theight: calc(var(--top-forms-option-height) - 3px * 2);\n}\n\n.top-checkbox_input:before {\n\tcontent: ' ';\n\tcolor: #FFF;\n\tfont-family: 'Topvisor-2';\n\tfont-size: 16px;\n}\n\n.top-checkbox_input:hover {\n\tborder-color: var(--top-forms-option-color);\n\tbackground: var(--color-theme-50)\n}\n\n/* checked / indeterminate */\n.top-checkbox_input:checked,\n.top-checkbox_input:indeterminate {\n\tborder-color: var(--top-forms-option-color);\n\tbackground: var(--top-forms-option-color);\n}\n\n.top-checkbox_input:checked:before {\n\tcontent: '';\n}\n\n.top-checkbox_input:indeterminate:before {\n\tcontent: '';\n}\n\n.top-checkbox_input:checked:hover,\n.top-checkbox_input:indeterminate:hover {\n\tborder-color: var(--top-forms-option-color-hover);\n\tbackground: var(--top-forms-option-color-hover);\n}\n\n/* disabled selected */\n.top-checkbox_input:disabled {\n\tborder-color: var(--color-line-1-opacity);\n\tbackground: var(--color-theme-50);\n}\n\n.top-checkbox_input:checked:disabled,\n.top-checkbox_input:indeterminate:disabled {\n\tborder-color: transparent;\n\tbackground: var(--color-theme-400);\n}\n\n/* isError */\n.top-checkbox_input.top-error {\n\tborder-color: var(--color-negative);\n}\n\n.top-checkbox_input.top-error:hover {\n\tborder-color: var(--color-negative-2);\n}\n\n/* isError selected */\n.top-checkbox_input:checked.top-error,\n.top-checkbox_input:indeterminate.top-error {\n\tbackground: var(--color-negative);\n}\n\n.top-checkbox_input:checked.top-error:hover,\n.top-checkbox_input:indeterminate.top-error:hover {\n\tbackground: var(--color-negative-2);\n}\n</style>","<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport type { Props, Emits } from './input';\n\ndefineOptions({\n\tinheritAttrs: false,\n});\n\nconst props = withDefaults(defineProps<Props>(), {\n\tsize: 's',\n\tcaptionType: '',\n});\n\nconst emit = defineEmits<Emits>();\n\nconst localValue = computed({\n\tget() {\n\t\treturn props.modelValue;\n\t},\n\tset(value) {\n\t\temit('update:modelValue', value);\n\t},\n});\n\nconst placeholder = computed(() => {\n\tif (props.addCleaner && !props.title) {\n\t\treturn '';\n\t}\n\tif (props.captionType !== '') {\n\t\treturn '';\n\t}\n\n\treturn props.title;\n});\n\nconst clean = () => {\n\temit('update:modelValue', '');\n};\n</script>\n\n<template>\n\t<label\n\t\t:class=\"{\n\t\t\t['top-input']: true,\n\t\t\t['top-size_' + size]: true,\n\t\t\t['top-disabled']: disabled,\n\t\t\t['top-input-' + modificator]: !!modificator,\n\t\t\t['top-input-withCleaner']: addCleaner && localValue && localValue !== '0000-00-00',\n\t\t\t['top-formsCaptionWrapper']: captionType !== '',\n\t\t\t['top-formsCaptionWrapper-always']: captionType === 'top',\n\t\t}\"\n\t\t:data-top-icon=\"icon\"\n\t\t:data-top-icon2=\"icon2\"\n\t>\n\t\t<input\n\t\t\ttype=\"text\"\n\t\t\t:class=\"{\n\t\t\t\t['top-input_input']: true,\n\t\t\t\t['top-input_input-' + modificator]: !!modificator,\n\t\t\t\t['top-forms-focusable']: !disabled,\n\t\t\t\t['top-error']: isError,\n\t\t\t}\"\n\t\t\tautocomplete=\"off_always\"\n\t\t\t:name=\"name\"\n\t\t\tv-model=\"localValue\"\n\t\t\t:title=\"title\"\n\t\t\t:placeholder=\"placeholder\"\n\t\t\t:disabled=\"disabled\"\n\t\t\t:readonly=\"readonly\"\n\t\t\t@keydown.esc.stop=\"() => (addCleaner || !!$slots.btn) && clean()\"\n\t\t\t:=\"$attrs\"\n\t\t>\n\n\t\t<span\n\t\t\tv-if=\"addCleaner && localValue && localValue !== '0000-00-00'\"\n\t\t\tclass=\"top-input_cleaner\"\n\t\t\tdata-top-icon=\"\"\n\t\t\t@click.prevent=\"clean\"\n\t\t></span>\n\n\t\t<span\n\t\t\tv-if=\"captionType !== ''\"\n\t\t\tclass=\"top-formsCaption\"\n\t\t>\n\t\t\t{{ title }}\n\t\t</span>\n\n\t\t<!-- @slot Слот для вставки произвольного кода в label -->\n\t\t<slot></slot>\n\t</label>\n</template>\n\n<style module>\n.top-input {\n\t--top-forms_clear-width: 0px;\n\n\twidth: 180px;\n\tposition: relative;\n\tdisplay: inline-flex;\n\talign-items: center;\n\tgap: var(--top-gap-1);\n}\n\n.top-input_input {\n\tbackground: var(--top-forms-background-color);\n\theight: var(--top-forms-base-height);\n\tpadding: 0;\n\tpadding-right: calc(max(var(--top-forms-padding), calc(var(--top-icon2-width) + var(--top-forms_clear-width))));\n\tpadding-left: calc(max(var(--top-forms-padding), var(--top-icon-width)));\n}\n\n.top-input_input:hover {\n\tbackground: var(--top-forms-background-color-hover);\n}\n\n.top-input_input:focus {\n\toutline-color: var(--color-theme-75);\n\toutline-offset: 0;\n}\n\n/* значки */\n.top-input[data-top-icon]:before,\n.top-input[data-top-icon2]:after {\n\t--top-icon-color: var(--color-text-secondary);\n\t--top-icon2-color: var(--color-text-secondary);\n\n\tposition: absolute;\n\tz-index: 3;\n}\n\n.top-input[data-top-icon]:before {\n\tleft: 0;\n}\n\n.top-input[data-top-icon2]:after {\n\tright: 0;\n}\n\n/* cleaner */\n.top-input-withCleaner {\n\t--top-forms_clear-width: 24px;\n}\n\n.top-input_cleaner {\n\t--top-icon-size: 20px;\n\t--top-icon-width: 20px;\n\t--top-icon-color: var(--color-text-3);\n\n\tcursor: pointer;\n\tborder-radius: 50%;\n\twidth: 24px;\n\theight: 24px;\n\tposition: absolute;\n\tright: calc(var(--top-forms-border-width) + max(var(--top-icon2-width), var(--top-forms-padding) / 2));\n\tz-index: 1;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n}\n\n.top-input_cleaner:hover {\n\t--top-icon-color: var(--color-text-2);\n}\n\n/* TODO: перенести в inputsRange */\n.top-input_input {\n\twidth: 50%;\n\tflex-grow: 1;\n}\n</style>","<script lang=\"ts\">\nconst useNativeDatepicker = !!document.documentElement.ontouchstart && !!document.createElement('input').showPicker;\n\nlet onInputLazy = (_e: any) => { };\n</script>\n\n<script setup lang=\"ts\">\nimport { ref, computed, onUnmounted } from 'vue';\nimport UtilsDate from '@/core/utils/date';\nimport type { Props, Emits } from './inputDate';\nimport { Input } from '@/components/forms/forms';\nimport Core from '@/core/core/core';\n\nconst props = withDefaults(defineProps<Props>(), {\n\ticon2: '',\n});\n\nconst emit = defineEmits<Emits>();\n\nconst el = ref();\n\nconst localValue = computed({\n\tget() {\n\t\treturn UtilsDate.dateFormat(props.modelValue, 2, '0000-00-00');\n\t},\n\n\tset(value) {\n\t\tvalue = UtilsDate.dateUnformat(value, '0000-00-00');\n\n\t\temit('update:modelValue', value);\n\t},\n});\n\nlet oninput = (e: any) => {\n\tonInputLazy(e);\n};\n\nlet onchange = (e: any) => {\n\tconst dateUnformat = UtilsDate.dateUnformat(e.target.value);\n\tconst dateFormat = UtilsDate.dateFormat(dateUnformat);\n\n\tif (!dateFormat || dateFormat === Core.L.Not_date || e.target.value !== dateFormat) {\n\t\te.target.value = localValue.value;\n\n\t\treturn;\n\t}\n\n\tlocalValue.value = e.target.value;\n};\n\n/**\n * Инициализпация функций выбора дат\n *\n * Для не нативного datepicker\n */\nasync function init(e: any) {\n\tconst datepicker = await import('./datepicker');\n\n\t// формат ввода\n\tonInputLazy = datepicker.oninput;\n\n\t// datepicker\n\tconst $el = datepicker.connectDatepicker(e.target, {\n\t\tonSelect: () => onchange(e),\n\t});\n\n\tif ($el) {\n\t\t$el.datepicker('show');\n\n\t\tonUnmounted(() => $el.datepicker('destroy'));\n\t}\n}\n</script>\n\n<template>\n\t<Input\n\t\tv-if=\"useNativeDatepicker\"\n\t\t:=\"$props\"\n\t\t:modelValue=\"localValue\"\n\t\treadonly\n\t\t@click=\"el.showPicker()\"\n\t>\n\t\t<input\n\t\t\tref=\"el\"\n\t\t\ttype=\"date\"\n\t\t\tclass=\"top-input_input-date\"\n\t\t\t:modelValue=\"modelValue\"\n\t\t\t@change=\"(e: any) => localValue = e.target.value\"\n\t\t\ttabindex=\"-1\"\n\t\t/>\n\t</Input>\n\n\t<Input\n\t\tv-else\n\t\t:=\"$props\"\n\t\t:modelValue=\"localValue\"\n\t\t@update:modelValue=\"(newValue) => (newValue === '') ? localValue = '' : ''\"\n\t\t@input.date=\"oninput\"\n\t\t@focus.once.date=\"init\"\n\t\t@change.date=\"onchange\"\n\t\tmodificator=\"datepicker\"\n\t/>\n</template>\n\n<style module>\n.top-input-datepicker {\n\twidth: calc(105px + var(--top-icon-width) + var(--top-icon2-width));\n}\n\n.top-input_input-date {\n\topacity: 0;\n\tposition: absolute;\n\ttop: 0;\n\tright: 0;\n\tbottom: 0;\n\tleft: 0;\n\tz-index: -1;\n}\n\n.top-input_input-date::-webkit-inner-spin-button {\n\tdisplay: none;\n}\n\n.top-input_input-date::-webkit-calendar-picker-indicator {\n\topacity: 0;\n}\n</style>","<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport type { Props, Emits } from './radio';\nimport ControlLabel from '../controlLabel/controlLabel.vue';\n\nconst props = defineProps<Props>();\nconst emit = defineEmits<Emits>();\n\nconst localValue = computed({\n\tget() {\n\t\treturn props.modelValue;\n\t},\n\tset(value) {\n\t\temit('update:modelValue', value);\n\t},\n});\n\n</script>\n\n<template>\n\t<label\n\t\t:class=\"{\n\t\t\t['top-forms-optionWrapper']: true,\n\t\t\t['top-radio']: true,\n\t\t\t['top-radio_' + name]: name !== '',\n\t\t\t['top-disabled']: disabled,\n\t\t\t['top-error']: isError && !disabled,\n\t\t}\"\n\t>\n\t\t<input\n\t\t\ttype=\"radio\"\n\t\t\t:class=\"{\n\t\t\t\t['top-forms-focusable']: !disabled,\n\t\t\t\t['top-forms-option']: true,\n\t\t\t\t['top-radio_input']: true,\n\t\t\t\t['top-error']: isError && !disabled,\n\t\t\t}\"\n\t\t\tv-model=\"localValue\"\n\t\t\t:name=\"name\"\n\t\t\t:value=\"value\"\n\t\t\t:disabled=\"disabled\"\n\t\t>\n\n\t\t<ControlLabel\n\t\t\tv-if=\"$slots.default\"\n\t\t\t:description=\"description\"\n\t\t\t:disabled=\"disabled\"\n\t\t>\n\t\t\t<!-- @slot Слот с заголовком -->\n\t\t\t<slot></slot>\n\t\t</ControlLabel>\n\t</label>\n</template>\n\n<style module>\n:root {\n\t--top-radio-background-color: var(--content-background-color);\n\t--top-radio-background-color-hover: var(--top-radio-background-color);\n\t--top-radio-background-color-active: var(--top-radio-background-color);\n}\n\n.top-radio {\n\tcursor: pointer;\n}\n\n.top-radio_input {\n\tborder-radius: 50%;\n\tbackground: var(--content-background-color);\n\tborder: 1px solid var(--top-forms-border-color);\n\twidth: calc(var(--top-forms-option-height) - 3px * 2);\n\theight: calc(var(--top-forms-option-height) - 3px * 2);\n}\n\n.top-radio_input:hover {\n\tborder-color: var(--top-forms-option-color);\n\tbackground: var(--color-theme-50)\n}\n\n.top-radio_input:checked {\n\tborder-color: var(--top-forms-option-color);\n\tborder-width: 5px;\n}\n\n.top-radio_input:checked:hover {\n\tborder-color: var(--top-forms-option-color-hover);\n}\n\n/* disabled */\n.top-radio_input:disabled {\n\tborder-color: var(--color-line-1-opacity);\n\tbackground: var(--color-theme-50);\n}\n\n/* disabled selected */\n.top-radio_input:checked:disabled {\n\tborder-color: var(--color-theme-400);\n}\n\n/* isError */\n.top-radio_input.top-error {\n\tborder-color: var(--color-negative);\n}\n\n.top-radio_input.top-error:hover {\n\tborder-color: var(--color-negative-2);\n}\n</style>","<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport type { Props, Emits } from './switcher';\nimport ControlLabel from '../controlLabel/controlLabel.vue';\n\nconst props = defineProps<Props>();\nconst emit = defineEmits<Emits>();\n\nconst localValue = computed({\n\tget() {\n\t\treturn props.modelValue;\n\t},\n\tset(value) {\n\t\temit('update:modelValue', value);\n\t},\n});\n</script>\n\n<template>\n\t<label\n\t\t:class=\"{\n\t\t['top-forms-optionWrapper']: true,\n\t\t['top-checkboxSwitcher']: true,\n\t\t['top-disabled']: disabled,\n\t\t['top-error']: isError && !disabled,\n\t}\"\n\t>\n\t\t<input\n\t\t\ttype=\"checkbox\"\n\t\t\t:class=\"{\n\t\t\t\t['top-forms-focusable']: !disabled,\n\t\t\t\t['top-forms-option']: true,\n\t\t\t\t['top-checkboxSwitcher_input']: true,\n\t\t\t\t['top-error']: isError && !disabled,\n\t\t\t}\"\n\t\t\tv-model=\"localValue\"\n\t\t\t:name=\"name\"\n\t\t\t:value=\"value\"\n\t\t\t:disabled=\"disabled\"\n\t\t>\n\n\t\t<ControlLabel\n\t\t\tv-if=\"$slots.default\"\n\t\t\t:description=\"description\"\n\t\t\t:disabled=\"disabled\"\n\t\t>\n\t\t\t<!-- @slot Слот с заголовком -->\n\t\t\t<slot></slot>\n\t\t</ControlLabel>\n\t</label>\n</template>\n\n<style module>\n.top-checkboxSwitcher {\n\tcursor: pointer;\n\tdisplay: inline-flex;\n\tgap: 4px;\n}\n\n.top-checkboxSwitcher_input {\n\tborder-radius: 9px;\n\tborder: none;\n\tbackground: var(--color-theme-100);\n\twidth: 36px;\n\theight: 18px;\n\tposition: relative;\n}\n\n.top-checkboxSwitcher_input:before {\n\tcontent: '';\n\tborder-radius: 50%;\n\tbackground: var(--color-white);\n\twidth: 12px;\n\theight: 12px;\n\tmargin: 3px;\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\n\ttransition: left 0.1s;\n}\n\n.top-checkboxSwitcher_input:hover {\n\tbackground: var(--color-theme-150);\n}\n\n/* checked */\n.top-checkboxSwitcher_input:checked {\n\tbackground: var(--top-forms-option-color);\n}\n\n.top-checkboxSwitcher_input:checked:hover {\n\tbackground: var(--top-forms-option-color-hover);\n}\n\n.top-checkboxSwitcher_input:checked:before {\n\tleft: 50%;\n}\n\n/* disabled */\n.top-checkboxSwitcher_input:disabled {\n\tbackground: var(--color-theme-400);\n}\n\n/* isError */\n.top-checkboxSwitcher_input.top-error {\n\tbackground: var(--color-negative);\n}\n\n.top-checkboxSwitcher_input.top-error:hover {\n\tbackground: var(--color-negative-2);\n}\n</style>","<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport Hint from '@/components/forms/hint/hint.vue';\nimport type { Props, Emits } from './textarea';\n\ndefineOptions({\n\tinheritAttrs: false,\n});\n\nconst props = withDefaults(defineProps<Props>(), {\n\trows: 5,\n\tminHeight: 120,\n});\n\nconst emit = defineEmits<Emits>();\n\nconst value = computed({\n\tget () {\n\t\treturn props.modelValue;\n\t},\n\tset (value) {\n\t\temit('update:modelValue', value);\n\t},\n});\n</script>\n\n<template>\n\t<label\n\t\t:class=\"{\n\t\t\t['top-textarea']: true,\n\t\t\t['top-textarea-' + name]: name,\n\t\t\t['top-disabled']: disabled,\n\t\t}\"\n\t>\n\t\t<textarea\n\t\t\ttype=\"text\"\n\t\t\t:class=\"{\n\t\t\t\t['top-forms-focusable']: !disabled,\n\t\t\t\t['top-textarea_textarea']: true,\n\t\t\t\t['top-textarea_textarea-expandable']: expandable,\n\t\t\t\t['top-error']: isError,\n\t\t\t}\"\n\t\t\tautocomplete=\"off_always\"\n\t\t\t:name=\"name\"\n\t\t\t:placeholder=\"placeholder\"\n\t\t\t:disabled=\"disabled\"\n\t\t\t:readonly=\"readonly\"\n\t\t\t:rows=\"!expandable ? rows : undefined\"\n\t\t\t:=\"$attrs\"\n\t\t\tv-model=\"value\"\n\t\t/>\n\n\t\t<div\n\t\t\tv-if=\"expandable\"\n\t\t\tclass=\"top-textarea_pseudoContent\"\n\t\t>\n\t\t\t{{ value + ' ' }}\n\t\t</div>\n\n\t\t<Hint\n\t\t\tv-if=\"hint\"\n\t\t\tclass=\"top-textarea_hint\"\n\t\t\t:hint=\"hint\"\n\t\t\tv-top-tooltip\n\t\t/>\n\t</label>\n</template>\n\n<style module>\n.top-textarea {\n\twidth: 180px;\n\tdisplay: inline-flex;\n\talign-items: center;\n\tposition: relative;\n}\n\n.top-textarea_textarea {\n\tbackground: var(--top-forms-background-color);\n\twidth: 100%;\n\tpadding: var(--top-forms-padding);\n\tresize: none;\n}\n\n.top-textarea_textarea:hover {\n\tbackground: var(--top-forms-background-color-hover);\n}\n\n.top-textarea_textarea:focus {\n\toutline-color: var(--color-theme-75);\n\toutline-offset: 0px;\n}\n\n.top-textarea_textarea.top-textarea_textarea-expandable {\n\twidth: 100%;\n\theight: 100%;\n\toverflow: hidden;\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n}\n\n.top-textarea_pseudoContent {\n\tbox-sizing: border-box;\n\tmin-height: v-bind(minHeight + 'px');\n\tpadding: var(--top-forms-padding);\n\tfont-size: 14px;\n\twhite-space: pre-wrap;\n\toverflow-wrap: anywhere;\n\tpointer-events: none;\n\topacity: 0;\n\tz-index: -1;\n}\n\n.top-textarea_hint {\n\tposition: absolute;\n\ttop: 2px;\n\tright: 2px;\n}\n</style>","<script setup lang=\"ts\">\nimport { toRef, computed, watch } from 'vue';\nimport type { Props, Emits } from './select';\n\nconst props = withDefaults(defineProps<Props>(), {\n\tsize: 's',\n});\n\nconst emit = defineEmits<Emits>();\n\nconst localValue = computed({\n\tget() {\n\t\treturn props.modelValue;\n\t},\n\n\tset(value) {\n\t\temit('update:modelValue', value);\n\t},\n});\n\n/**\n * Иконка выбранного option\n */\nconst optionIcon = computed(() => {\n\treturn optionByValue.value.get(localValue.value)?.icon;\n});\n\n/**\n * Словарь с доступными options\n */\nconst optionByValue = computed(() => {\n\tconst res = new Map();\n\n\tprops.options.forEach((option) => {\n\t\tif (option.disabled) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (option.children) {\n\t\t\toption.children.forEach(subOption => {\n\t\t\t\tif (subOption.disabled) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tres.set(subOption.value, subOption);\n\t\t\t});\n\n\t\t\treturn;\n\t\t}\n\n\t\tres.set(option.value, option);\n\t});\n\n\treturn res;\n});\n\n/**\n * Логика для обртаной своместимости:\n * - null - заменить на первое доступное значение\n * - undefined - заменить на первое доступное значение\n */\nwatch([\n\ttoRef(props.modelValue),\n\toptionByValue,\n], () => {\n\tif ((localValue.value === null || localValue.value === undefined) && optionByValue.value.size) {\n\t\tconsole.warn('Пожалуйста, не передавайте в компонент Select значения null и undefined');\n\n\t\tlocalValue.value = optionByValue.value.keys().next().value;\n\t}\n}, { immediate: true });\n\n/**\n * Выбрать следующее доступное значение\n */\nconst selectNextValue = () => {\n\tconst listEnabledValues = [...optionByValue.value.keys()];\n\tconst currentIndex = listEnabledValues.indexOf(localValue.value);\n\tconst nextIndex = (currentIndex + 1) % listEnabledValues.length;\n\n\tlocalValue.value = listEnabledValues[nextIndex];\n};\n</script>\n\n<template>\n\t<label\n\t\t:class=\"{\n\t\t\t['top-select']:true,\n\t\t\t['top-select-' + name]:name,\n\t\t\t['top-size_' + size]: true,\n\t\t\t['top-formsCaptionWrapper']: !!title,\n\t\t\t['top-select-error']: isError,\n\t\t\t['top-disabled']: disabled,\n\t\t}\"\n\t\t:data-value=\"localValue\"\n\t\t:data-top-icon=\"icon\"\n\t\t:data-top-icon2=\"optionIcon\"\n\t>\n\t\t<select\n\t\t\t:class=\"{\n\t\t\t\t['top-forms-focusable']: !disabled,\n\t\t\t\t['top-select_select']: true,\n\t\t\t\t['top-select_arrow']: true,\n\t\t\t\t['top-error']: isError,\n\t\t\t}\"\n\t\t\t:name=\"name\"\n\t\t\t:disabled=\"disabled\"\n\t\t\tv-model=\"localValue\"\n\t\t>\n\t\t\t<template v-for=\"[_index, option] of options.entries()\">\n\t\t\t\t<optgroup\n\t\t\t\t\tv-if=\"option.children\"\n\t\t\t\t\t:key=\"'group_' + option.value\"\n\t\t\t\t\t:label=\"option.title\"\n\t\t\t\t\t:disabled=\"option.disabled\"\n\t\t\t\t>\n\t\t\t\t\t<option\n\t\t\t\t\t\tv-for=\"[_index, subOption] of option.children.entries()\"\n\t\t\t\t\t\t:key=\"option.value\"\n\t\t\t\t\t\t:value=\"subOption.value\"\n\t\t\t\t\t\t:selected=\"subOption.value === localValue\"\n\t\t\t\t\t\t:disabled=\"subOption.disabled\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{{ subOption.title }}\n\t\t\t\t\t</option>\n\t\t\t\t</optgroup>\n\n\t\t\t\t<option\n\t\t\t\t\tv-else\n\t\t\t\t\t:key=\"option.value\"\n\t\t\t\t\t:value=\"option.value\"\n\t\t\t\t\t:selected=\"option.value === localValue\"\n\t\t\t\t\t:disabled=\"option.disabled\"\n\t\t\t\t>\n\t\t\t\t\t{{ option.title }}\n\t\t\t\t</option>\n\t\t\t</template>\n\t\t</select>\n\n\t\t<span\n\t\t\tv-if=\"addChanger && optionByValue.size && !disabled\"\n\t\t\tclass=\"top-changer\"\n\t\t\t@click=\"selectNextValue\"\n\t\t></span>\n\n\t\t<span\n\t\t\tv-if=\"title\"\n\t\t\tclass=\"top-formsCaption\"\n\t\t>\n\t\t\t{{ title }}\n\t\t</span>\n\t</label>\n</template>\n\n<style module>\n.top-select {\n\t--top-icon-color: var(--color-text-3);\n\t--top-icon2-color: var(--color-text-2);\n\n\talign-items: center;\n\twidth: 180px;\n\tmax-width: 100%;\n\tvertical-align: middle;\n\tdisplay: inline-flex;\n}\n\n.top-select-error {\n\t--top-icon-color: var(--color-negative);\n\t--top-icon2-color: var(--color-negative);\n}\n\n.top-select_select {\n\tbackground-color: var(--top-forms-background-color);\n\n\t/* для select вместо padding нужно использовать text-indent */\n\tpadding-left: var(--top-forms-padding);\n\n\t/* если есть значки, добавить отступ на их ширину с учетом уже добавленного padding */\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))));\n\n\twidth: 100%;\n\theight: var(--top-forms-base-height);\n\ttext-overflow: ellipsis;\n\twhite-space: nowrap;\n\tflex-grow: 1;\n\toverflow: hidden;\n}\n\n.top-select_select:focus {\n\toutline-color: var(--color-theme-75);\n\toutline-offset: 0;\n}\n\n.top-select_select:disabled {\n\tbackground: var(--color-theme-50);\n}\n\n.top-select optgroup {\n\tcolor: var(--color-text-1);\n\tfont-style: normal;\n}\n\n.top-select option {\n\tbackground: var(--content-background-color);\n\tcolor: var(--color-text-1);\n}\n\n/* хром не мерняет цвет для optgroup option, стили оставлены по умолчанию */\n/*\n.top-select optgroup:disabled,\n.top-select optgroup option,\n.top-select option:disabled {\n\n}\n*/\n\n/* https://bugzilla.mozilla.org/show_bug.cgi?id=1743066 */\n@-moz-document url-prefix() {\n\t.top-select_select {\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);\n\t}\n}\n\n@media only screen and (min-width: 900px) {\n\t/* changer */\n\t.top-changer {\n\t\tcursor: pointer;\n\t\tborder-radius: 100%;\n\t\twidth: 0;\n\t\ttransform: translateX(-44px);\n\t\tcolor: var(--color-text-secondary-2);\n\t\tfont-size: 16px;\n\t\tline-height: 1;\n\t\tdisplay: none;\n\t\tz-index: 2;\n\t\torder: 4;\n\t}\n\n\t.top-changer:hover {\n\t\tcolor: var(--color-primary);\n\t}\n\n\t.top-changer:after {\n\t\tcontent: '';\n\t\tbackground-color: var(--top-forms-background-color);\n\t\tfont-family: 'Topvisor-2';\n\t}\n\n\t*:hover > .top-changer {\n\t\tdisplay: block;\n\t}\n}\n</style>"],"names":["Device","isChrome","isSafari","onResizeDelay","onResizeTimer","onResizeListeners","windowSize","addOnReize","listener","removeOnResize","onResize","e","callback","Events","options","state","_window","$","el","tvTooltipGenOptions","binding","vnode","_a","tooltip","_prevVnode","instance","Core","reactive","style","type","media","elStyle","app","directiveTooltip","device","UtilsDate","date","ms","useFormat","d","m","Y","H","i","s","time","emptyValue","dateFormat","dateForObj","dateObject","result","dateChunks","dateFormatChunks","y","index","tagName","computed","props","localValue","value","emit","placeholder","clean","useNativeDatepicker","onInputLazy","_e","ref","oninput","onchange","dateUnformat","init","datepicker","resolve","reject","require","$el","onUnmounted","optionIcon","optionByValue","res","option","subOption","watch","toRef","selectNextValue","listEnabledValues","nextIndex"],"mappings":"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"}