@topvisor/ui 0.0.34 → 0.0.35

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 (267) hide show
  1. package/.storybook/TopTheme.js +82 -0
  2. package/.storybook/TopThemeManager.js +44 -0
  3. package/.storybook/main.ts +43 -0
  4. package/.storybook/manager.ts +28 -0
  5. package/.storybook/preview-head.html +16 -0
  6. package/.storybook/preview.ts +48 -0
  7. package/.storybook/vue/coreDecorator.ts +19 -0
  8. package/.storybook/vue/vModelDecorator.ts +27 -0
  9. package/.vscode/extensions.json +11 -0
  10. package/.vscode/keybindings.example.json +121 -0
  11. package/.vscode/settings.json +46 -0
  12. package/Dockerfile +3 -0
  13. package/NPM.md +25 -0
  14. package/PUBLISH.md +18 -0
  15. package/README.md +19 -52
  16. package/STORYBOOK.md +27 -0
  17. package/USE_IN_PROJECT.md +29 -0
  18. package/build/afterBuild.sh +12 -0
  19. package/build/cssModules.ts +39 -0
  20. package/build/plugin/amdFix.ts +46 -0
  21. package/build/rollup.config.ts +18 -0
  22. package/nbproject/project.properties +11 -0
  23. package/nbproject/project.xml +9 -0
  24. package/package.json +68 -19
  25. package/public/README.md +63 -0
  26. package/src/components/common/common.ts +1 -0
  27. package/src/components/common/icon/icon.ts +4 -0
  28. package/src/components/common/icon/icon.vue +15 -0
  29. package/src/components/component.ts +133 -0
  30. package/src/components/forms/button/button.stories.ts +112 -0
  31. package/src/components/forms/button/button.ts +51 -0
  32. package/src/components/forms/button/button.vue +75 -0
  33. package/src/components/forms/button/stories/README.md +35 -0
  34. package/src/components/forms/button/stories/overview.vue +33 -0
  35. package/src/components/forms/button/style/button.css +124 -0
  36. package/src/components/forms/button/style/style-outline.css +42 -0
  37. package/src/components/forms/button/style/style-soft.css +31 -0
  38. package/src/components/forms/button/style/style-transparent.css +35 -0
  39. package/src/components/forms/checkbox/checkbox.stories.ts +33 -0
  40. package/src/components/forms/checkbox/checkbox.ts +23 -0
  41. package/src/components/forms/checkbox/checkbox.vue +135 -0
  42. package/src/components/forms/checkbox/stories/overview.vue +171 -0
  43. package/src/components/forms/controlLabel/controlLabel.stories.ts +38 -0
  44. package/src/components/forms/controlLabel/controlLabel.ts +4 -0
  45. package/src/components/forms/controlLabel/controlLabel.vue +48 -0
  46. package/src/components/forms/forms.ts +10 -0
  47. package/src/components/forms/helpers.ts +10 -0
  48. package/src/components/forms/hint/hint.stories.ts +46 -0
  49. package/src/components/forms/hint/hint.ts +8 -0
  50. package/src/components/forms/hint/hint.vue +32 -0
  51. package/src/components/forms/input/input.stories.ts +31 -0
  52. package/src/components/forms/input/input.ts +34 -0
  53. package/src/components/forms/input/input.vue +170 -0
  54. package/src/components/forms/input/stories/overview.vue +61 -0
  55. package/src/components/forms/inputDate/datepicker.css +233 -0
  56. package/src/components/forms/inputDate/datepicker.ts +101 -0
  57. package/src/components/forms/inputDate/inputDate.stories.ts +41 -0
  58. package/src/components/forms/inputDate/inputDate.ts +4 -0
  59. package/src/components/forms/inputDate/inputDate.vue +127 -0
  60. package/src/components/forms/inputDate/stories/overview.vue +35 -0
  61. package/src/components/forms/radio/radio.stories.ts +34 -0
  62. package/src/components/forms/radio/radio.ts +15 -0
  63. package/src/components/forms/radio/radio.vue +107 -0
  64. package/src/components/forms/radio/stories/overview.vue +79 -0
  65. package/src/components/forms/select/select.stories.ts +34 -0
  66. package/src/components/forms/select/select.ts +36 -0
  67. package/src/components/forms/select/select.vue +253 -0
  68. package/src/components/forms/select/stories/exampleOptions.ts +71 -0
  69. package/src/components/forms/select/stories/overview.vue +60 -0
  70. package/src/components/forms/switcher/stories/overview.vue +139 -0
  71. package/src/components/forms/switcher/switcher.stories.ts +33 -0
  72. package/src/components/forms/switcher/switcher.ts +22 -0
  73. package/src/components/forms/switcher/switcher.vue +113 -0
  74. package/src/components/forms/textarea/stories/overview.vue +62 -0
  75. package/src/components/forms/textarea/textarea.stories.ts +33 -0
  76. package/src/components/forms/textarea/textarea.ts +38 -0
  77. package/src/components/forms/textarea/textarea.vue +119 -0
  78. package/src/components/formsExt/editArea/editArea.stories.ts +72 -0
  79. package/src/components/formsExt/editArea/editArea.ts +25 -0
  80. package/src/components/formsExt/editArea/editArea.vue +172 -0
  81. package/src/components/formsExt/editArea/stories/README.md +17 -0
  82. package/src/components/formsExt/editArea/stories/overview.vue +66 -0
  83. package/src/components/formsExt/editInput/editInput.stories.ts +36 -0
  84. package/src/components/formsExt/editInput/editInput.ts +20 -0
  85. package/src/components/formsExt/editInput/editInput.vue +57 -0
  86. package/src/components/formsExt/editInput/stories/overview.vue +54 -0
  87. package/src/components/formsExt/formsExt.ts +3 -0
  88. package/src/components/formsExt/radioGroup/radioGroup.stories.ts +51 -0
  89. package/src/components/formsExt/radioGroup/radioGroup.ts +28 -0
  90. package/src/components/formsExt/radioGroup/radioGroup.vue +143 -0
  91. package/src/components/formsExt/radioGroup/stories/overview.vue +78 -0
  92. package/src/components/formsExt/radioGroup/styles/top-scrollBar.css +52 -0
  93. package/src/components/helper.js +10 -0
  94. package/src/components/helpersStories.ts +151 -0
  95. package/src/components/popup/lib/popup.globalEvents.js +205 -0
  96. package/src/components/popup/lib/popup.js +702 -0
  97. package/src/components/popup/lib/worker.globalEvents.js +78 -0
  98. package/src/components/popup/lib/worker.js +232 -0
  99. package/src/components/popup/popup/listItem.vue +42 -0
  100. package/src/components/popup/popup/opener.vue +74 -0
  101. package/src/components/popup/popup/popup.stories.ts +68 -0
  102. package/src/components/popup/popup/popup.ts +93 -0
  103. package/src/components/popup/popup/popup.vue +95 -0
  104. package/src/components/popup/popup/stories/README.md +34 -0
  105. package/src/components/popup/popup/stories/listItems.vue +44 -0
  106. package/src/components/popup/popup/stories/listSubItems.vue +52 -0
  107. package/src/components/popup/popup/stories/overview.vue +208 -0
  108. package/src/components/popup/popup/style/popup.css +243 -0
  109. package/src/components/popup/popup/style/popup.m.css +71 -0
  110. package/src/components/popup/popup/style/popup.pc.css +28 -0
  111. package/src/components/popup/popup.ts +3 -0
  112. package/src/components/popup/worker.ts +1 -0
  113. package/src/components/tabs/tabs/content.vue +24 -0
  114. package/src/components/tabs/tabs/stories/README.md +10 -0
  115. package/src/components/tabs/tabs/tab.vue +52 -0
  116. package/src/components/tabs/tabs/tabs.stories.ts +171 -0
  117. package/src/components/tabs/tabs/tabs.ts +22 -0
  118. package/src/components/tabs/tabs/tabs.vue +64 -0
  119. package/src/components/tabs/tabs.ts +3 -0
  120. package/src/core/base/Colors.stories.ts +15 -0
  121. package/src/core/base/Layout.stories.ts +15 -0
  122. package/src/core/base/Properties.stories.ts +15 -0
  123. package/src/core/base/base.mdx +21 -0
  124. package/src/core/core/core.ts +144 -0
  125. package/src/core/core/events.ts +54 -0
  126. package/src/core/core/options.ts +15 -0
  127. package/src/core/core/state.ts +44 -0
  128. package/src/core/directives/tooltip.ts +55 -0
  129. package/src/core/theme/Colors.stories.ts +15 -0
  130. package/src/core/theme/Properties.stories.ts +15 -0
  131. package/src/core/theme/theme.mdx +15 -0
  132. package/src/core/utils/date.ts +164 -0
  133. package/src/core/utils/device.ts +48 -0
  134. package/src/core/utils/dom.ts +185 -0
  135. 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" +72 -0
  136. 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" +31 -0
  137. 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" +14 -0
  138. package/src/docs/CSS/FAQ.mdx +43 -0
  139. 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" +156 -0
  140. 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 +47 -0
  141. 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 +15 -0
  142. 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" +49 -0
  143. package/src/docs/CSS//320/241/321/202/320/270/320/273/320/270.md +53 -0
  144. package/src/docs/CSS//320/241/321/202/320/270/320/273/320/270.mdx +4 -0
  145. 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" +53 -0
  146. package/src/docs/ROADMAP.md +17 -0
  147. package/src/docs/Roadmap.mdx +4 -0
  148. package/src/docs//320/222/320/262/320/265/320/264/320/265/320/275/320/270/320/265 /320/262 Storybook.mdx" +323 -0
  149. package/src/docs//320/232/320/276/320/274/320/277/320/276/320/275/320/265/320/275/321/202/321/213.mdx +20 -0
  150. 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" +8 -0
  151. 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" +42 -0
  152. 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" +72 -0
  153. 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" +29 -0
  154. package/src/globals.d.ts +1 -0
  155. package/{icomoon → src/resources/icomoon}/demo-files/demo.css +161 -161
  156. package/{icomoon → src/resources/icomoon}/demo-files/demo.js +30 -30
  157. package/{icomoon → src/resources/icomoon}/demo.html +2945 -2945
  158. package/{icomoon → src/resources/icomoon}/fonts/Topvisor-2.svg +232 -232
  159. package/{icomoon → src/resources/icomoon}/style.css +647 -647
  160. package/src/resources/styles/core/colors.css +204 -0
  161. package/src/resources/styles/core/components.css +70 -0
  162. package/src/resources/styles/core/core.ts +10 -0
  163. package/src/resources/styles/core/forms/clear.css +19 -0
  164. package/src/resources/styles/core/forms/controls.css +20 -0
  165. package/src/resources/styles/core/forms/focusable.css +26 -0
  166. package/src/resources/styles/core/forms/forms.css +100 -0
  167. package/src/resources/styles/core/icon.css +58 -0
  168. package/src/resources/styles/core/layout.css +40 -0
  169. package/src/resources/styles/core/modifiers/as.css +9 -0
  170. package/src/resources/styles/core/modifiers/ellipsis.css +18 -0
  171. package/src/resources/styles/core/modifiers/modifiers.css +81 -0
  172. package/src/resources/styles/core/modifiers/only.css +19 -0
  173. package/src/resources/styles/core/select.css +16 -0
  174. package/src/resources/styles/jquery-ui.min.css +6 -0
  175. package/src/resources/styles/storybook.css +11 -0
  176. package/src/resources/styles/themes/dark/theme.css +139 -0
  177. package/src/resources/styles/themes/dark.ts +1 -0
  178. package/src/resources/styles/themes/light/theme.css +139 -0
  179. package/src/resources/styles/themes/light.ts +1 -0
  180. package/src/storybook/components/color.vue +45 -0
  181. package/src/storybook/components/colors.vue +34 -0
  182. package/src/storybook/components/icomoon.ts +38 -0
  183. package/src/storybook/components/properties.vue +82 -0
  184. package/src/storybook/resources/accessibility.png +0 -0
  185. package/src/storybook/resources/accessibility.svg +5 -0
  186. package/src/storybook/resources/addon-library.png +0 -0
  187. package/src/storybook/resources/assets.png +0 -0
  188. package/src/storybook/resources/context.png +0 -0
  189. package/src/storybook/resources/discord.svg +15 -0
  190. package/src/storybook/resources/docs.png +0 -0
  191. package/src/storybook/resources/figma-plugin.png +0 -0
  192. package/src/storybook/resources/github.svg +3 -0
  193. package/src/storybook/resources/share.png +0 -0
  194. package/src/storybook/resources/styling.png +0 -0
  195. package/src/storybook/resources/testing.png +0 -0
  196. package/src/storybook/resources/theming.png +0 -0
  197. package/src/storybook/resources/tutorials.svg +12 -0
  198. package/src/storybook/resources/youtube.svg +4 -0
  199. 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" +3 -0
  200. package/tsconfig.json +62 -0
  201. package/vite.config.ts +91 -0
  202. package/.chunks/datepicker-0b648b9f.es.js +0 -275
  203. package/.chunks/datepicker-0b648b9f.es.js.map +0 -1
  204. package/.chunks/datepicker-0e9a0541.amd.js +0 -234
  205. package/.chunks/datepicker-0e9a0541.amd.js.map +0 -1
  206. package/.chunks/forms-02202302.amd.js +0 -3
  207. package/.chunks/forms-02202302.amd.js.map +0 -1
  208. package/.chunks/forms-eb00d0c1.es.js +0 -946
  209. package/.chunks/forms-eb00d0c1.es.js.map +0 -1
  210. package/.chunks/popup-6f73b4b2.es.js +0 -700
  211. package/.chunks/popup-6f73b4b2.es.js.map +0 -1
  212. package/.chunks/popup-e1f34511.amd.js +0 -341
  213. package/.chunks/popup-e1f34511.amd.js.map +0 -1
  214. package/common/common.amd.js +0 -2
  215. package/common/common.amd.js.map +0 -1
  216. package/common/common.js +0 -2
  217. package/common/common.js.map +0 -1
  218. package/core/core.amd.js +0 -2
  219. package/core/core.amd.js.map +0 -1
  220. package/core/core.js +0 -6
  221. package/core/core.js.map +0 -1
  222. package/core.css +0 -1
  223. package/dark.css +0 -1
  224. package/forms/forms.amd.js +0 -2
  225. package/forms/forms.amd.js.map +0 -1
  226. package/forms/forms.js +0 -15
  227. package/forms/forms.js.map +0 -1
  228. package/forms/helpers.amd.js +0 -2
  229. package/forms/helpers.amd.js.map +0 -1
  230. package/forms/helpers.js +0 -9
  231. package/forms/helpers.js.map +0 -1
  232. package/forms.css +0 -1
  233. package/formsExt/formsExt.amd.js +0 -3
  234. package/formsExt/formsExt.amd.js.map +0 -1
  235. package/formsExt/formsExt.js +0 -152
  236. package/formsExt/formsExt.js.map +0 -1
  237. package/formsExt.css +0 -1
  238. package/light.css +0 -1
  239. package/popup/popup.amd.js +0 -3
  240. package/popup/popup.amd.js.map +0 -1
  241. package/popup/popup.js +0 -144
  242. package/popup/popup.js.map +0 -1
  243. package/popup/worker.amd.js +0 -2
  244. package/popup/worker.amd.js.map +0 -1
  245. package/popup/worker.js +0 -154
  246. package/popup/worker.js.map +0 -1
  247. package/popup.css +0 -1
  248. package/tabs/tabs.amd.js +0 -3
  249. package/tabs/tabs.amd.js.map +0 -1
  250. package/tabs/tabs.js +0 -97
  251. package/tabs/tabs.js.map +0 -1
  252. package/tabs.css +0 -1
  253. package/utils/date.amd.js +0 -2
  254. package/utils/date.amd.js.map +0 -1
  255. package/utils/date.js +0 -6
  256. package/utils/date.js.map +0 -1
  257. package/utils/device.amd.js +0 -2
  258. package/utils/device.amd.js.map +0 -1
  259. package/utils/device.js +0 -6
  260. package/utils/device.js.map +0 -1
  261. package/utils/dom.amd.js +0 -2
  262. package/utils/dom.amd.js.map +0 -1
  263. package/utils/dom.js +0 -64
  264. package/utils/dom.js.map +0 -1
  265. /package/{icomoon → src/resources/icomoon}/fonts/Topvisor-2.ttf +0 -0
  266. /package/{icomoon → src/resources/icomoon}/fonts/Topvisor-2.woff +0 -0
  267. /package/{icomoon → src/resources/icomoon}/selection.json +0 -0
@@ -1,946 +0,0 @@
1
- import { reactive as P, defineComponent as v, computed as b, openBlock as u, createBlock as $, resolveDynamicComponent as X, normalizeClass as h, withCtx as S, renderSlot as M, createTextVNode as q, toDisplayString as w, createElementBlock as m, createElementVNode as g, createCommentVNode as f, withDirectives as k, vModelCheckbox as K, mergeProps as L, withKeys as J, withModifiers as U, vModelText as Q, ref as Z, unref as V, onUnmounted as x, vModelRadio as ee, useCssVars as te, resolveDirective as oe, watch as ae, toRef as se, Fragment as D, renderList as N, vModelSelect as ie } from "vue";
2
- class T {
3
- static isRetina() {
4
- return "devicePixelRatio" in window && window.devicePixelRatio > 1;
5
- }
6
- // определить, является ли устройство мобильным
7
- static isMobile() {
8
- return !!navigator.userAgent.match(/Android|BlackBerry|iPhone|iPad|iPod|IEMobile|Opera Mini/i);
9
- }
10
- // определить, открыт ли сайт в приложении
11
- static isApp() {
12
- return navigator.userAgent.indexOf("Topvisor_App") != -1;
13
- }
14
- // определить, является ли OS пользователя macOS
15
- static isMacOS() {
16
- return navigator.userAgent.indexOf("Mac OS X") !== -1;
17
- }
18
- // определить, является ли текущий браузер пользователя Safari
19
- static isSafari() {
20
- const t = /Chrome|Android/.test(navigator.userAgent);
21
- let a = /Safari/.test(navigator.userAgent);
22
- return t && a && (a = !1), a;
23
- }
24
- /**
25
- * Вернуть текст для обозначения клавиши Ctrl / Command в зависимости от OS
26
- * @returns {'Ctrl'|'⌘'}
27
- */
28
- static getCommandKeyLabel() {
29
- return this.isMacOS() ? "⌘" : "Ctrl";
30
- }
31
- }
32
- const ne = 100;
33
- let H;
34
- const R = /* @__PURE__ */ new Map(), z = {
35
- width: window.innerWidth,
36
- height: window.innerHeight
37
- };
38
- function le(n) {
39
- R.set(n, n);
40
- }
41
- function re(n) {
42
- R.delete(n);
43
- }
44
- function de(n) {
45
- clearTimeout(H), H = setTimeout(function() {
46
- n.topEvent = {
47
- widthDiff: z.width - window.innerWidth,
48
- hightDiff: z.height - window.innerHeight
49
- }, z.width = window.innerWidth, z.height = window.innerHeight, R.forEach((t) => t(n));
50
- }, ne);
51
- }
52
- window.addEventListener("resize", de);
53
- const pe = {
54
- addOnReize: le,
55
- removeOnResize: re
56
- };
57
- var Y;
58
- const ue = {
59
- widthForMobile: 900,
60
- dateFormat: "Y-m-d",
61
- /**
62
- * Для Москвы: +0300
63
- */
64
- gmt: (Y = (/* @__PURE__ */ new Date()).toString().match(/GMT(\S+)/)) == null ? void 0 : Y[1]
65
- };
66
- var G;
67
- const ce = {
68
- /**
69
- * Device by size
70
- * @see widthForMobile
71
- */
72
- isMobile: !1,
73
- /**
74
- * Device by user agent
75
- */
76
- isMobileUA: !1,
77
- /**
78
- * true, если плотность пикселей экрана больше 1
79
- */
80
- isRetina: !1,
81
- /**
82
- * true, елси это приложение
83
- */
84
- isApp: !1,
85
- /**
86
- * true при горизонтальном расположении устройства
87
- */
88
- isLandscape: !0,
89
- /**
90
- * true при вертикальном расположении устройства
91
- */
92
- isPortrait: !1,
93
- size: 0,
94
- // См. core.options
95
- dateFormat: "Y-m-d",
96
- // См. core.options
97
- gmt: (G = (/* @__PURE__ */ new Date()).toString().match(/GMT(\S+)/)) == null ? void 0 : G[1]
98
- }, E = window, C = (n) => {
99
- var t, a;
100
- if (!((a = (t = E == null ? void 0 : E.jQuery) == null ? void 0 : t.ui) != null && a.tooltip)) {
101
- console.info("Для работы v-top-tooltip требуется глобальная загрузка jQuery UI Tooltip");
102
- return;
103
- }
104
- return E.jQuery(n);
105
- }, I = (n, t) => {
106
- var o;
107
- const a = n.value ?? {};
108
- return a.content ??= (o = t.props) == null ? void 0 : o.title, a.content = String(a.content).replace(/\r\n|\r|\n/g, "<br>"), a.position ??= {
109
- my: "bottom-18px",
110
- at: "top center"
111
- }, a;
112
- }, me = {
113
- mounted(n, t, a) {
114
- var o;
115
- (o = C(n)) == null || o.tooltip(I(t, a));
116
- },
117
- updated(n, t, a, o) {
118
- var s;
119
- const e = I(t, a), l = (s = C(n)) == null ? void 0 : s.tooltip("instance");
120
- l && (l.options = {
121
- ...l.options,
122
- ...e
123
- });
124
- },
125
- unmounted(n, t, a) {
126
- var o;
127
- (o = C(n)) == null || o.tooltip("destroy");
128
- }
129
- }, A = window;
130
- class d {
131
- /**
132
- * Настройки словаря
133
- */
134
- static L = P({
135
- Not_date: "Not date"
136
- });
137
- static page = (A == null ? void 0 : A.page) || {};
138
- static options = ue;
139
- static state = P({ ...ce });
140
- static matchMediaIsMobile;
141
- /**
142
- * Добавить на страницу стили, используется для загрузки стилей из js
143
- *
144
- * Условная загрузка стилей m и pc отключена в пользу производительсности, стили грузятся всегда, но применяются по условию
145
- * @param style - css стили в строке
146
- * @param type - если указать 'm' или 'pc', то стили будут применяться по условию в зависимости от настройки this.options.widthForMobile
147
- */
148
- static appendStyle(t, a = "") {
149
- let o = "all";
150
- a === "m" && (o = "(max-width: " + this.options.widthForMobile + "px)"), a === "pc" && (o = "(min-width: " + this.options.widthForMobile + "px)");
151
- const e = document.createElement("style");
152
- e.innerHTML = t, e.media = o, document.head.append(e);
153
- }
154
- /**
155
- * Установить как плагин в прилоежнии Vue
156
- * Core.state является общим для всех приложений Vue на странице
157
- * Core.options является общим для всех приложений Vue на странице
158
- * @param app - Vue App
159
- * @param {typeof options} options - параметры UI
160
- */
161
- static install(t, a) {
162
- d.defineOptions(a), t.provide("top-core", d), this.installDirectives(t);
163
- }
164
- static installDirectives(t) {
165
- t.directive("top-tooltip", me);
166
- }
167
- /**
168
- * Установить конфигурацию UI
169
- * @param {typeof options} options
170
- */
171
- static defineOptions(t) {
172
- t != null && t.widthForMobile && (this.options.widthForMobile = t.widthForMobile), t != null && t.dateFormat && (this.options.dateFormat = t.dateFormat), t != null && t.gmt && (this.options.gmt = t.gmt), d.setState();
173
- }
174
- static setState() {
175
- d.matchMediaIsMobile = window.matchMedia(`(max-width: ${d.options.widthForMobile}px)`), d.state.isMobileUA = T.isMobile(), d.state.isRetina = T.isRetina(), d.state.isApp = T.isApp(), d.state.dateFormat = this.options.dateFormat, d.state.gmt = this.options.gmt, d.setStateByWindowSize(), pe.addOnReize(d.onResize), d.onResize(), d.saveToCookie();
176
- }
177
- static onResize() {
178
- d.setStateByWindowSize(), document.documentElement.style.setProperty("--100vh", window.innerHeight + "px");
179
- }
180
- static setStateByWindowSize() {
181
- var t;
182
- d.state.isMobile = !!((t = d.matchMediaIsMobile) != null && t.matches), d.state.isLandscape = window.innerWidth > window.innerHeight, d.state.isPortrait = !d.state.isLandscape, d.state.size = window.innerWidth > window.innerHeight ? window.innerWidth : window.innerHeight, d.saveToCookie();
183
- }
184
- /**
185
- * Сохранить информацию об устройстве в cookie
186
- */
187
- static saveToCookie() {
188
- const t = [
189
- 1,
190
- window.innerWidth,
191
- window.innerHeight,
192
- window.devicePixelRatio,
193
- Number(d.state.isMobile),
194
- Number(d.state.isRetina)
195
- ];
196
- document.cookie = "device=" + t.join(",") + "; path=/;";
197
- }
198
- }
199
- class F {
200
- /**
201
- * Получить объект Date из строки
202
- * @param date - строка с датой
203
- */
204
- static stringToDate(t) {
205
- return t.indexOf("T") === -1 && (t.length == 10 && (t += " 00:00:00"), t = t.replace(" ", "T") + d.state.gmt), new Date(t);
206
- }
207
- // Перевод миллисекунд (UTC) в дату-строку (время локальное)
208
- /**
209
- * Перевод миллисекунд (UTC) в дату-строку (время локальное)
210
- * @param {?number} ms
211
- * @param {?boolean} useFormat
212
- */
213
- static ms2Date(t, a = !0) {
214
- let o;
215
- t != null ? o = new Date(t) : o = /* @__PURE__ */ new Date();
216
- const e = o.getDate().toString().padStart(2, "0"), l = String(o.getMonth() + 1).padStart(2, "0"), s = o.getFullYear(), i = o.getHours().toString().padStart(2, "0"), r = o.getMinutes().toString().padStart(2, "0"), p = o.getSeconds().toString().padStart(2, "0");
217
- return o = s + "-" + l + "-" + e + " " + i + ":" + r + ":" + p, a && (o = this.dateFormat(o)), o;
218
- }
219
- /**
220
- * Перевод даты в формат пользователя
221
- * @param {string} date
222
- * @param {0|1|2|3} time - 0: только дата, 1: дата и часы, 2: дата и часы с минутами, 3: дата и часы с минутами и секундами
223
- */
224
- static dateFormat(t, a = 2, o = d.L.Not_date) {
225
- if ((!t || t.substring(0, 10) === "0000-00-00") && o && o !== "0000-00-00")
226
- return o;
227
- const e = d.state.dateFormat.toLowerCase();
228
- let l = t.substring(0, 10);
229
- l.length === 7 && (l += "-01"), l += " 00:00", l = l.replace(/-/g, "/");
230
- const s = new Date(l);
231
- if (isNaN(Number(s)))
232
- return o;
233
- let i = e.replace("y", String(s.getFullYear()).padStart(2, "0")).replace("m", String(s.getMonth() + 1).padStart(2, "0")).replace("d", String(s.getDate()).padStart(2, "0"));
234
- if (t.length > 10)
235
- switch (a) {
236
- case 1:
237
- i += " " + t.substring(11, 13);
238
- break;
239
- case 2:
240
- i += " " + t.substring(11, 16);
241
- break;
242
- case 3:
243
- i += " " + t.substring(11, 19);
244
- break;
245
- }
246
- return i;
247
- }
248
- /**
249
- * Перевод даты из формата пользователя в системный формат
250
- * @param {string} date
251
- */
252
- static dateUnformat(t, a = d.L.Not_date) {
253
- if (!t)
254
- return a;
255
- if (t.match(/\d\d\d\d-\d\d-\d\d/))
256
- return t;
257
- const o = d.state.dateFormat.toLowerCase(), e = t.split(/\W/), l = o.split(/\W/);
258
- let s = "", i = "", r = "";
259
- l.forEach((c, _) => {
260
- switch (c) {
261
- case "d":
262
- s = e[_];
263
- break;
264
- case "m":
265
- i = e[_];
266
- break;
267
- case "y":
268
- r = e[_];
269
- break;
270
- }
271
- });
272
- let p = r + "-" + i + "-" + s;
273
- return p.match(/\d\d\d\d-\d\d-\d\d/) || (console.info("Неверный формат даты, будет возращена текущая дата, " + p), p = this.ms2Date((/* @__PURE__ */ new Date()).getTime(), !1).substring(0, 10)), p;
274
- }
275
- }
276
- const be = /* @__PURE__ */ v({
277
- __name: "button",
278
- props: {
279
- color: { default: "blue" },
280
- styling: { default: "" },
281
- size: { default: "s" },
282
- name: {},
283
- title: {},
284
- icon: {},
285
- icon2: {},
286
- href: {},
287
- disabled: { type: Boolean },
288
- isSubmit: { type: Boolean },
289
- isActive: { type: Boolean },
290
- isProgress: { type: Boolean }
291
- },
292
- setup(n) {
293
- const t = n, a = b(() => t.href ? "a" : "button"), o = b(() => t.isSubmit ? "submit" : void 0);
294
- return (e, l) => (u(), $(X(a.value), {
295
- class: h({
296
- "top-active": e.isActive,
297
- "top-disabled": e.disabled,
298
- "top-forms-focusable": !e.disabled,
299
- "top-button": !0,
300
- "top-button-progress": e.isProgress,
301
- [`top-size_${e.size}`]: !!e.size,
302
- [`top-color_${e.color}`]: !0,
303
- [`top-style_${e.styling}`]: !!e.styling
304
- }),
305
- name: e.name,
306
- title: e.title,
307
- href: e.href,
308
- type: o.value,
309
- "data-top-icon": e.icon || void 0,
310
- "data-top-icon2": e.icon2 || void 0,
311
- disabled: e.disabled || void 0,
312
- inProgress: e.isProgress
313
- }, {
314
- default: S(() => [
315
- M(e.$slots, "default", {}, () => [
316
- q(w(e.icon ? "" : "Button"), 1)
317
- ])
318
- ]),
319
- _: 3
320
- }, 8, ["class", "name", "title", "href", "type", "data-top-icon", "data-top-icon2", "disabled", "inProgress"]));
321
- }
322
- }), he = "_progress_1f1nw_1", fe = {
323
- "top-button": "top-button",
324
- "top-active": "top-active",
325
- "top-button-progress": "top-button-progress",
326
- progress: he,
327
- "top-color_blue": "top-color_blue",
328
- "top-color_green": "top-color_green",
329
- "top-color_orange": "top-color_orange",
330
- "top-color_red": "top-color_red",
331
- "top-color_pink": "top-color_pink",
332
- "top-color_theme": "top-color_theme",
333
- "top-style_outline": "top-style_outline",
334
- "top-style_soft": "top-style_soft",
335
- "top-style_transparent": "top-style_transparent",
336
- "top-size_l": "top-size_l",
337
- "top-size_xl": "top-size_xl"
338
- }, y = (n, t) => {
339
- const a = n.__vccOpts || n;
340
- for (const [o, e] of t)
341
- a[o] = e;
342
- return a;
343
- }, ve = {
344
- $style: fe
345
- }, mt = /* @__PURE__ */ y(be, [["__cssModules", ve]]), ye = { class: "top-forms-optionLabel" }, ge = {
346
- key: 0,
347
- class: "top-forms-optionLabel_description"
348
- }, we = /* @__PURE__ */ v({
349
- __name: "controlLabel",
350
- props: {
351
- description: {},
352
- disabled: { type: Boolean }
353
- },
354
- setup(n) {
355
- return (t, a) => (u(), m("div", ye, [
356
- g("div", {
357
- class: h({
358
- "top-forms-optionLabel_title": !0,
359
- "top-forms-optionLabel_title-disabled": t.disabled
360
- })
361
- }, [
362
- M(t.$slots, "default")
363
- ], 2),
364
- t.description ? (u(), m("div", ge, w(t.description), 1)) : f("", !0)
365
- ]));
366
- }
367
- }), $e = {
368
- "top-forms-optionLabel": "top-forms-optionLabel",
369
- "top-forms-optionLabel_title": "top-forms-optionLabel_title",
370
- "top-forms-optionLabel_title-disabled": "top-forms-optionLabel_title-disabled",
371
- "top-forms-optionLabel_description": "top-forms-optionLabel_description"
372
- }, ke = {
373
- $style: $e
374
- }, W = /* @__PURE__ */ y(we, [["__cssModules", ke]]), Me = ["name", "value", "indeterminate", "disabled"], Ve = /* @__PURE__ */ v({
375
- __name: "checkbox",
376
- props: {
377
- modelValue: { type: [Boolean, Array, Set] },
378
- name: {},
379
- value: {},
380
- description: {},
381
- disabled: { type: Boolean },
382
- indeterminate: { type: Boolean },
383
- isError: { type: Boolean }
384
- },
385
- emits: ["update:modelValue"],
386
- setup(n, { emit: t }) {
387
- const a = n, o = b({
388
- get() {
389
- return a.modelValue;
390
- },
391
- set(e) {
392
- t("update:modelValue", e);
393
- }
394
- });
395
- return (e, l) => (u(), m("label", {
396
- class: h({
397
- "top-forms-optionWrapper": !0,
398
- "top-checkbox": !0,
399
- ["top-checkbox_" + e.name]: e.name !== "",
400
- "top-disabled": e.disabled,
401
- "top-error": e.isError && !e.disabled
402
- })
403
- }, [
404
- k(g("input", {
405
- type: "checkbox",
406
- class: h({
407
- "top-forms-focusable": !e.disabled,
408
- "top-forms-option": !0,
409
- "top-checkbox_input": !0,
410
- "top-error": e.isError && !e.disabled
411
- }),
412
- name: e.name,
413
- "onUpdate:modelValue": l[0] || (l[0] = (s) => o.value = s),
414
- value: e.value,
415
- indeterminate: e.indeterminate,
416
- disabled: e.disabled
417
- }, null, 10, Me), [
418
- [K, o.value]
419
- ]),
420
- e.$slots.default ? (u(), $(W, {
421
- key: 0,
422
- description: e.description,
423
- disabled: e.disabled
424
- }, {
425
- default: S(() => [
426
- M(e.$slots, "default")
427
- ]),
428
- _: 3
429
- }, 8, ["description", "disabled"])) : f("", !0)
430
- ], 2));
431
- }
432
- }), Se = {
433
- "top-checkbox": "top-checkbox",
434
- "top-checkbox_input": "top-checkbox_input",
435
- "top-error": "top-error"
436
- }, _e = {
437
- $style: Se
438
- }, bt = /* @__PURE__ */ y(Ve, [["__cssModules", _e]]), Be = ["title"], ze = /* @__PURE__ */ v({
439
- __name: "hint",
440
- props: {
441
- hint: {}
442
- },
443
- setup(n) {
444
- return (t, a) => (u(), m("span", {
445
- class: "top-hint",
446
- "data-top-icon": "",
447
- title: t.hint
448
- }, null, 8, Be));
449
- }
450
- }), Ee = {
451
- "top-hint": "top-hint"
452
- }, Fe = {
453
- $style: Ee
454
- }, Le = /* @__PURE__ */ y(ze, [["__cssModules", Fe]]), De = ["data-top-icon", "data-top-icon2"], Te = ["name", "title", "placeholder", "disabled", "readonly"], Ce = ["onClick"], Ae = {
455
- key: 1,
456
- class: "top-formsCaption"
457
- }, Re = /* @__PURE__ */ v({
458
- inheritAttrs: !1,
459
- __name: "input",
460
- props: {
461
- modelValue: {},
462
- name: {},
463
- disabled: { type: Boolean },
464
- readonly: { type: Boolean },
465
- title: {},
466
- captionType: { default: "" },
467
- size: { default: "s" },
468
- icon: {},
469
- icon2: {},
470
- addCleaner: { type: Boolean },
471
- isError: { type: Boolean },
472
- modificator: {}
473
- },
474
- emits: ["update:modelValue"],
475
- setup(n, { emit: t }) {
476
- const a = n, o = b({
477
- get() {
478
- return a.modelValue;
479
- },
480
- set(s) {
481
- t("update:modelValue", s);
482
- }
483
- }), e = b(() => a.addCleaner && !a.title || a.captionType !== "" ? "" : a.title), l = () => {
484
- t("update:modelValue", "");
485
- };
486
- return (s, i) => (u(), m("label", {
487
- class: h({
488
- "top-input": !0,
489
- ["top-size_" + s.size]: !0,
490
- "top-disabled": s.disabled,
491
- ["top-input-" + s.modificator]: !!s.modificator,
492
- "top-input-withCleaner": s.addCleaner && o.value && o.value !== "0000-00-00",
493
- "top-formsCaptionWrapper": s.captionType !== "",
494
- "top-formsCaptionWrapper-always": s.captionType === "top"
495
- }),
496
- "data-top-icon": s.icon,
497
- "data-top-icon2": s.icon2
498
- }, [
499
- k(g("input", L({
500
- type: "text",
501
- class: {
502
- "top-input_input": !0,
503
- ["top-input_input-" + s.modificator]: !!s.modificator,
504
- "top-forms-focusable": !s.disabled,
505
- "top-error": s.isError
506
- },
507
- autocomplete: "off_always",
508
- name: s.name,
509
- "onUpdate:modelValue": i[0] || (i[0] = (r) => o.value = r),
510
- title: s.title,
511
- placeholder: e.value,
512
- disabled: s.disabled,
513
- readonly: s.readonly,
514
- onKeydown: i[1] || (i[1] = J(U(() => (s.addCleaner || !!s.$slots.btn) && l(), ["stop"]), ["esc"]))
515
- }, s.$attrs), null, 16, Te), [
516
- [Q, o.value]
517
- ]),
518
- s.addCleaner && o.value && o.value !== "0000-00-00" ? (u(), m("span", {
519
- key: 0,
520
- class: "top-input_cleaner",
521
- "data-top-icon": "",
522
- onClick: U(l, ["prevent"])
523
- }, null, 8, Ce)) : f("", !0),
524
- s.captionType !== "" ? (u(), m("span", Ae, w(s.title), 1)) : f("", !0),
525
- M(s.$slots, "default")
526
- ], 10, De));
527
- }
528
- }), We = {
529
- "top-input": "top-input",
530
- "top-input_input": "top-input_input",
531
- "top-input-withCleaner": "top-input-withCleaner",
532
- "top-input_cleaner": "top-input_cleaner"
533
- }, Pe = {
534
- $style: We
535
- }, O = /* @__PURE__ */ y(Re, [["__cssModules", Pe]]), Ue = ["modelValue"], Ne = !!document.documentElement.ontouchstart && !!document.createElement("input").showPicker;
536
- let j = (n) => {
537
- };
538
- const He = /* @__PURE__ */ v({
539
- __name: "inputDate",
540
- props: {
541
- modelValue: {},
542
- name: {},
543
- disabled: { type: Boolean },
544
- readonly: { type: Boolean },
545
- title: {},
546
- captionType: {},
547
- size: {},
548
- icon: {},
549
- icon2: { default: "" },
550
- addCleaner: { type: Boolean },
551
- isError: { type: Boolean },
552
- modificator: {}
553
- },
554
- emits: ["update:modelValue"],
555
- setup(n, { emit: t }) {
556
- const a = n, o = Z(), e = b({
557
- get() {
558
- return F.dateFormat(a.modelValue, 2, "0000-00-00");
559
- },
560
- set(r) {
561
- r = F.dateUnformat(r, "0000-00-00"), t("update:modelValue", r);
562
- }
563
- });
564
- let l = (r) => {
565
- j(r);
566
- }, s = (r) => {
567
- const p = F.dateUnformat(r.target.value), c = F.dateFormat(p);
568
- if (!c || c === d.L.Not_date || r.target.value !== c) {
569
- r.target.value = e.value;
570
- return;
571
- }
572
- e.value = r.target.value;
573
- };
574
- async function i(r) {
575
- const p = await import("./datepicker-0b648b9f.es.js");
576
- j = p.oninput;
577
- const c = p.connectDatepicker(r.target, {
578
- onSelect: () => s(r)
579
- });
580
- c && (c.datepicker("show"), x(() => c.datepicker("destroy")));
581
- }
582
- return (r, p) => V(Ne) ? (u(), $(V(O), L({ key: 0 }, r.$props, {
583
- modelValue: e.value,
584
- readonly: "",
585
- onClick: p[1] || (p[1] = (c) => o.value.showPicker())
586
- }), {
587
- default: S(() => [
588
- g("input", {
589
- ref_key: "el",
590
- ref: o,
591
- type: "date",
592
- class: "top-input_input-date",
593
- modelValue: r.modelValue,
594
- onChange: p[0] || (p[0] = (c) => e.value = c.target.value),
595
- tabindex: "-1"
596
- }, null, 40, Ue)
597
- ]),
598
- _: 1
599
- }, 16, ["modelValue"])) : (u(), $(V(O), L({ key: 1 }, r.$props, {
600
- modelValue: e.value,
601
- "onUpdate:modelValue": p[2] || (p[2] = (c) => c === "" ? e.value = "" : ""),
602
- onInput: V(l),
603
- onFocusOnce: i,
604
- onChange: V(s),
605
- modificator: "datepicker"
606
- }), null, 16, ["modelValue", "onInput", "onChange"]));
607
- }
608
- }), Ie = {
609
- "top-input-datepicker": "top-input-datepicker",
610
- "top-input_input-date": "top-input_input-date"
611
- }, Oe = {
612
- $style: Ie
613
- }, ht = /* @__PURE__ */ y(He, [["__cssModules", Oe]]), je = ["name", "value", "disabled"], Ye = /* @__PURE__ */ v({
614
- __name: "radio",
615
- props: {
616
- modelValue: {},
617
- value: {},
618
- name: {},
619
- description: {},
620
- disabled: { type: Boolean },
621
- isError: { type: Boolean }
622
- },
623
- emits: ["update:modelValue"],
624
- setup(n, { emit: t }) {
625
- const a = n, o = b({
626
- get() {
627
- return a.modelValue;
628
- },
629
- set(e) {
630
- t("update:modelValue", e);
631
- }
632
- });
633
- return (e, l) => (u(), m("label", {
634
- class: h({
635
- "top-forms-optionWrapper": !0,
636
- "top-radio": !0,
637
- ["top-radio_" + e.name]: e.name !== "",
638
- "top-disabled": e.disabled,
639
- "top-error": e.isError && !e.disabled
640
- })
641
- }, [
642
- k(g("input", {
643
- type: "radio",
644
- class: h({
645
- "top-forms-focusable": !e.disabled,
646
- "top-forms-option": !0,
647
- "top-radio_input": !0,
648
- "top-error": e.isError && !e.disabled
649
- }),
650
- "onUpdate:modelValue": l[0] || (l[0] = (s) => o.value = s),
651
- name: e.name,
652
- value: e.value,
653
- disabled: e.disabled
654
- }, null, 10, je), [
655
- [ee, o.value]
656
- ]),
657
- e.$slots.default ? (u(), $(W, {
658
- key: 0,
659
- description: e.description,
660
- disabled: e.disabled
661
- }, {
662
- default: S(() => [
663
- M(e.$slots, "default")
664
- ]),
665
- _: 3
666
- }, 8, ["description", "disabled"])) : f("", !0)
667
- ], 2));
668
- }
669
- }), Ge = {
670
- "top-radio": "top-radio",
671
- "top-radio_input": "top-radio_input",
672
- "top-error": "top-error"
673
- }, Ke = {
674
- $style: Ge
675
- }, ft = /* @__PURE__ */ y(Ye, [["__cssModules", Ke]]), Qe = ["name", "value", "disabled"], Xe = /* @__PURE__ */ v({
676
- __name: "switcher",
677
- props: {
678
- modelValue: { type: [Boolean, Array, Set] },
679
- name: {},
680
- value: {},
681
- description: {},
682
- disabled: { type: Boolean },
683
- isError: { type: Boolean }
684
- },
685
- emits: ["update:modelValue"],
686
- setup(n, { emit: t }) {
687
- const a = n, o = b({
688
- get() {
689
- return a.modelValue;
690
- },
691
- set(e) {
692
- t("update:modelValue", e);
693
- }
694
- });
695
- return (e, l) => (u(), m("label", {
696
- class: h({
697
- "top-forms-optionWrapper": !0,
698
- "top-checkboxSwitcher": !0,
699
- "top-disabled": e.disabled,
700
- "top-error": e.isError && !e.disabled
701
- })
702
- }, [
703
- k(g("input", {
704
- type: "checkbox",
705
- class: h({
706
- "top-forms-focusable": !e.disabled,
707
- "top-forms-option": !0,
708
- "top-checkboxSwitcher_input": !0,
709
- "top-error": e.isError && !e.disabled
710
- }),
711
- "onUpdate:modelValue": l[0] || (l[0] = (s) => o.value = s),
712
- name: e.name,
713
- value: e.value,
714
- disabled: e.disabled
715
- }, null, 10, Qe), [
716
- [K, o.value]
717
- ]),
718
- e.$slots.default ? (u(), $(W, {
719
- key: 0,
720
- description: e.description,
721
- disabled: e.disabled
722
- }, {
723
- default: S(() => [
724
- M(e.$slots, "default")
725
- ]),
726
- _: 3
727
- }, 8, ["description", "disabled"])) : f("", !0)
728
- ], 2));
729
- }
730
- }), qe = {
731
- "top-checkboxSwitcher": "top-checkboxSwitcher",
732
- "top-checkboxSwitcher_input": "top-checkboxSwitcher_input",
733
- "top-error": "top-error"
734
- }, Je = {
735
- $style: qe
736
- }, vt = /* @__PURE__ */ y(Xe, [["__cssModules", Je]]), Ze = ["name", "placeholder", "disabled", "readonly", "rows"], xe = {
737
- key: 0,
738
- class: "top-textarea_pseudoContent"
739
- }, et = /* @__PURE__ */ v({
740
- inheritAttrs: !1,
741
- __name: "textarea",
742
- props: {
743
- modelValue: {},
744
- name: {},
745
- placeholder: {},
746
- rows: { default: 5 },
747
- minHeight: { default: 120 },
748
- expandable: { type: Boolean },
749
- disabled: { type: Boolean },
750
- readonly: { type: Boolean },
751
- isError: { type: Boolean },
752
- hint: {}
753
- },
754
- emits: ["update:modelValue"],
755
- setup(n, { emit: t }) {
756
- const a = n;
757
- te((e) => ({
758
- c838a038: e.minHeight + "px"
759
- }));
760
- const o = b({
761
- get() {
762
- return a.modelValue;
763
- },
764
- set(e) {
765
- t("update:modelValue", e);
766
- }
767
- });
768
- return (e, l) => {
769
- const s = oe("top-tooltip");
770
- return u(), m("label", {
771
- class: h({
772
- "top-textarea": !0,
773
- ["top-textarea-" + e.name]: e.name,
774
- "top-disabled": e.disabled
775
- })
776
- }, [
777
- k(g("textarea", L({
778
- type: "text",
779
- class: {
780
- "top-forms-focusable": !e.disabled,
781
- "top-textarea_textarea": !0,
782
- "top-textarea_textarea-expandable": e.expandable,
783
- "top-error": e.isError
784
- },
785
- autocomplete: "off_always",
786
- name: e.name,
787
- placeholder: e.placeholder,
788
- disabled: e.disabled,
789
- readonly: e.readonly,
790
- rows: e.expandable ? void 0 : e.rows
791
- }, e.$attrs, {
792
- "onUpdate:modelValue": l[0] || (l[0] = (i) => o.value = i)
793
- }), null, 16, Ze), [
794
- [Q, o.value]
795
- ]),
796
- e.expandable ? (u(), m("div", xe, w(o.value + " "), 1)) : f("", !0),
797
- e.hint ? k((u(), $(Le, {
798
- key: 1,
799
- class: "top-textarea_hint",
800
- hint: e.hint
801
- }, null, 8, ["hint"])), [
802
- [s]
803
- ]) : f("", !0)
804
- ], 2);
805
- };
806
- }
807
- }), tt = {
808
- "top-textarea": "top-textarea",
809
- "top-textarea_textarea": "top-textarea_textarea",
810
- "top-textarea_textarea-expandable": "top-textarea_textarea-expandable",
811
- "top-textarea_pseudoContent": "top-textarea_pseudoContent",
812
- "top-textarea_hint": "top-textarea_hint"
813
- }, ot = {
814
- $style: tt
815
- }, yt = /* @__PURE__ */ y(et, [["__cssModules", ot]]), at = ["data-value", "data-top-icon", "data-top-icon2"], st = ["name", "disabled"], it = ["label", "disabled"], nt = ["value", "selected", "disabled"], lt = ["value", "selected", "disabled"], rt = {
816
- key: 1,
817
- class: "top-formsCaption"
818
- }, dt = /* @__PURE__ */ v({
819
- __name: "select",
820
- props: {
821
- modelValue: {},
822
- options: {},
823
- name: {},
824
- disabled: { type: Boolean },
825
- icon: {},
826
- size: { default: "s" },
827
- addChanger: { type: Boolean },
828
- title: {},
829
- isError: { type: Boolean }
830
- },
831
- emits: ["update:modelValue"],
832
- setup(n, { emit: t }) {
833
- const a = n, o = b({
834
- get() {
835
- return a.modelValue;
836
- },
837
- set(i) {
838
- t("update:modelValue", i);
839
- }
840
- }), e = b(() => {
841
- var i;
842
- return (i = l.value.get(o.value)) == null ? void 0 : i.icon;
843
- }), l = b(() => {
844
- const i = /* @__PURE__ */ new Map();
845
- return a.options.forEach((r) => {
846
- if (!r.disabled) {
847
- if (r.children) {
848
- r.children.forEach((p) => {
849
- p.disabled || i.set(p.value, p);
850
- });
851
- return;
852
- }
853
- i.set(r.value, r);
854
- }
855
- }), i;
856
- });
857
- ae([
858
- se(a.modelValue),
859
- l
860
- ], () => {
861
- (o.value === null || o.value === void 0) && l.value.size && (console.warn("Пожалуйста, не передавайте в компонент Select значения null и undefined"), o.value = l.value.keys().next().value);
862
- }, { immediate: !0 });
863
- const s = () => {
864
- const i = [...l.value.keys()], p = (i.indexOf(o.value) + 1) % i.length;
865
- o.value = i[p];
866
- };
867
- return (i, r) => (u(), m("label", {
868
- class: h({
869
- "top-select": !0,
870
- ["top-select-" + i.name]: i.name,
871
- ["top-size_" + i.size]: !0,
872
- "top-formsCaptionWrapper": !!i.title,
873
- "top-select-error": i.isError,
874
- "top-disabled": i.disabled
875
- }),
876
- "data-value": o.value,
877
- "data-top-icon": i.icon,
878
- "data-top-icon2": e.value
879
- }, [
880
- k(g("select", {
881
- class: h({
882
- "top-forms-focusable": !i.disabled,
883
- "top-select_select": !0,
884
- "top-select_arrow": !0,
885
- "top-error": i.isError
886
- }),
887
- name: i.name,
888
- disabled: i.disabled,
889
- "onUpdate:modelValue": r[0] || (r[0] = (p) => o.value = p)
890
- }, [
891
- (u(!0), m(D, null, N(i.options.entries(), ([p, c]) => (u(), m(D, null, [
892
- c.children ? (u(), m("optgroup", {
893
- key: "group_" + c.value,
894
- label: c.title,
895
- disabled: c.disabled
896
- }, [
897
- (u(!0), m(D, null, N(c.children.entries(), ([_, B]) => (u(), m("option", {
898
- key: c.value,
899
- value: B.value,
900
- selected: B.value === o.value,
901
- disabled: B.disabled
902
- }, w(B.title), 9, nt))), 128))
903
- ], 8, it)) : (u(), m("option", {
904
- key: c.value,
905
- value: c.value,
906
- selected: c.value === o.value,
907
- disabled: c.disabled
908
- }, w(c.title), 9, lt))
909
- ], 64))), 256))
910
- ], 10, st), [
911
- [ie, o.value]
912
- ]),
913
- i.addChanger && l.value.size && !i.disabled ? (u(), m("span", {
914
- key: 0,
915
- class: "top-changer",
916
- onClick: s
917
- })) : f("", !0),
918
- i.title ? (u(), m("span", rt, w(i.title), 1)) : f("", !0)
919
- ], 10, at));
920
- }
921
- }), pt = {
922
- "top-select": "top-select",
923
- "top-select-error": "top-select-error",
924
- "top-select_select": "top-select_select",
925
- "top-changer": "top-changer"
926
- }, ut = {
927
- $style: pt
928
- }, gt = /* @__PURE__ */ y(dt, [["__cssModules", ut]]);
929
- export {
930
- mt as B,
931
- d as C,
932
- T as D,
933
- pe as E,
934
- Le as H,
935
- O as I,
936
- yt as T,
937
- F as U,
938
- y as _,
939
- W as a,
940
- gt as b,
941
- bt as c,
942
- ht as i,
943
- ft as r,
944
- vt as s
945
- };
946
- //# sourceMappingURL=forms-eb00d0c1.es.js.map