@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,170 +0,0 @@
1
- <script setup lang="ts">
2
- import { computed } from 'vue';
3
- import type { Props, Emits } from './input';
4
-
5
- defineOptions({
6
- inheritAttrs: false,
7
- });
8
-
9
- const props = withDefaults(defineProps<Props>(), {
10
- size: 's',
11
- captionType: '',
12
- });
13
-
14
- const emit = defineEmits<Emits>();
15
-
16
- const localValue = computed({
17
- get() {
18
- return props.modelValue;
19
- },
20
- set(value) {
21
- emit('update:modelValue', value);
22
- },
23
- });
24
-
25
- const placeholder = computed(() => {
26
- if (props.addCleaner && !props.title) {
27
- return '';
28
- }
29
- if (props.captionType !== '') {
30
- return '';
31
- }
32
-
33
- return props.title;
34
- });
35
-
36
- const clean = () => {
37
- emit('update:modelValue', '');
38
- };
39
- </script>
40
-
41
- <template>
42
- <label
43
- :class="{
44
- ['top-input']: true,
45
- ['top-size_' + size]: true,
46
- ['top-disabled']: disabled,
47
- ['top-input-' + modificator]: !!modificator,
48
- ['top-input-withCleaner']: addCleaner && localValue && localValue !== '0000-00-00',
49
- ['top-formsCaptionWrapper']: captionType !== '',
50
- ['top-formsCaptionWrapper-always']: captionType === 'top',
51
- }"
52
- :data-top-icon="icon"
53
- :data-top-icon2="icon2"
54
- >
55
- <input
56
- type="text"
57
- :class="{
58
- ['top-input_input']: true,
59
- ['top-input_input-' + modificator]: !!modificator,
60
- ['top-forms-focusable']: !disabled,
61
- ['top-error']: isError,
62
- }"
63
- autocomplete="off_always"
64
- :name="name"
65
- v-model="localValue"
66
- :title="title"
67
- :placeholder="placeholder"
68
- :disabled="disabled"
69
- :readonly="readonly"
70
- @keydown.esc.stop="() => (addCleaner || !!$slots.btn) && clean()"
71
- :="$attrs"
72
- >
73
-
74
- <span
75
- v-if="addCleaner && localValue && localValue !== '0000-00-00'"
76
- class="top-input_cleaner"
77
- data-top-icon=""
78
- @click.prevent="clean"
79
- ></span>
80
-
81
- <span
82
- v-if="captionType !== ''"
83
- class="top-formsCaption"
84
- >
85
- {{ title }}
86
- </span>
87
-
88
- <!-- @slot Слот для вставки произвольного кода в label -->
89
- <slot></slot>
90
- </label>
91
- </template>
92
-
93
- <style module>
94
- .top-input {
95
- --top-forms_clear-width: 0px;
96
-
97
- width: 180px;
98
- position: relative;
99
- display: inline-flex;
100
- align-items: center;
101
- gap: var(--top-gap-1);
102
- }
103
-
104
- .top-input_input {
105
- background: var(--top-forms-background-color);
106
- height: var(--top-forms-base-height);
107
- padding: 0;
108
- padding-right: calc(max(var(--top-forms-padding), calc(var(--top-icon2-width) + var(--top-forms_clear-width))));
109
- padding-left: calc(max(var(--top-forms-padding), var(--top-icon-width)));
110
- }
111
-
112
- .top-input_input:hover {
113
- background: var(--top-forms-background-color-hover);
114
- }
115
-
116
- .top-input_input:focus {
117
- outline-color: var(--color-theme-75);
118
- outline-offset: 0;
119
- }
120
-
121
- /* значки */
122
- .top-input[data-top-icon]:before,
123
- .top-input[data-top-icon2]:after {
124
- --top-icon-color: var(--color-text-secondary);
125
- --top-icon2-color: var(--color-text-secondary);
126
-
127
- position: absolute;
128
- z-index: 3;
129
- }
130
-
131
- .top-input[data-top-icon]:before {
132
- left: 0;
133
- }
134
-
135
- .top-input[data-top-icon2]:after {
136
- right: 0;
137
- }
138
-
139
- /* cleaner */
140
- .top-input-withCleaner {
141
- --top-forms_clear-width: 24px;
142
- }
143
-
144
- .top-input_cleaner {
145
- --top-icon-size: 20px;
146
- --top-icon-width: 20px;
147
- --top-icon-color: var(--color-text-3);
148
-
149
- cursor: pointer;
150
- border-radius: 50%;
151
- width: 24px;
152
- height: 24px;
153
- position: absolute;
154
- right: calc(var(--top-forms-border-width) + max(var(--top-icon2-width), var(--top-forms-padding) / 2));
155
- z-index: 1;
156
- display: flex;
157
- align-items: center;
158
- justify-content: center;
159
- }
160
-
161
- .top-input_cleaner:hover {
162
- --top-icon-color: var(--color-text-2);
163
- }
164
-
165
- /* TODO: перенести в inputsRange */
166
- .top-input_input {
167
- width: 50%;
168
- flex-grow: 1;
169
- }
170
- </style>
@@ -1,61 +0,0 @@
1
- <script setup lang="ts">
2
- import { sizes } from '@/components/forms/helpers';
3
- import type { Props } from '../input';
4
- import { Input, Button } from '../../forms';
5
- import { reactive } from 'vue';
6
-
7
- defineProps<Props>();
8
-
9
- /**
10
- * Варианты props для вывода компонента в различных состояних
11
- */
12
- const genVariantProps = () => [
13
- {
14
- modelValue: '',
15
- },
16
- {
17
- modelValue: 'Текст введен',
18
- },
19
- {
20
- modelValue: '',
21
- title: 'С иконкой поиска',
22
- icon: '',
23
- },
24
- {
25
- modelValue: '',
26
- title: 'С кнопкой очистки',
27
- addCleaner: true,
28
- },
29
- {
30
- modelValue: '',
31
- title: 'Не активное',
32
- disabled: true,
33
- },
34
- {
35
- modelValue: '',
36
- title: 'Только чтение',
37
- readonly: true,
38
- },
39
- ] satisfies Props[];
40
-
41
- const variantPropsBySize: Record<string, Props[]> = {};
42
- Object.values(sizes).forEach(keySize => variantPropsBySize[keySize] = reactive(genVariantProps()));
43
- </script>
44
-
45
- <template>
46
- <div>
47
- <template v-for="size in sizes">
48
- <h2>Размер: {{ size }}</h2>
49
-
50
- <template v-for="props in variantPropsBySize[size]">
51
- <Input
52
- :="{ ...$props, ...props }"
53
- v-model="props.modelValue"
54
- :size="size"
55
- />
56
- &nbsp;
57
- </template>
58
- <hr>
59
- </template>
60
- </div>
61
- </template>
@@ -1,101 +0,0 @@
1
- import { toRef, watch } from 'vue';
2
- import Core from '@/core/core/core';
3
- import UtilsDate from '@/core/utils/date';
4
-
5
- import css from '@/components/forms/inputDate/datepicker.css?raw';
6
-
7
- Core.appendStyle(css);
8
-
9
- const _window: any = window;
10
-
11
- const $ = (el: HTMLInputElement) => {
12
- if (!_window?.jQuery?.ui?.datepicker) {
13
- console.info('Для работы datepicker требуется глобальная загрузка jQuery UI Datepicker');
14
-
15
- return;
16
- }
17
-
18
- _window.jQuery.datepicker._defaults.dateFormat = Core.state.dateFormat.toLowerCase().replace('m', 'mm').replace('y', 'yy').replace('d', 'dd');
19
-
20
- return _window.jQuery(el);
21
- };
22
-
23
- export function connectDatepicker(el: HTMLInputElement, options: any) {
24
- return $(el)?.datepicker(options);
25
- }
26
-
27
- let dateFormatted;
28
- let delimiter: string;
29
- let dateNumbersCount: number;
30
- let delimitersIndexes: number[];
31
-
32
- watch(toRef(Core.state.dateFormat), () => {
33
- // генерация отформатированной даты, извлечение из нее разделителей и их индексов
34
- dateFormatted = UtilsDate.dateFormat('2000-01-01');
35
- delimiter = dateFormatted.match(/\D/)?.[0] ?? '-';
36
- dateNumbersCount = dateFormatted.replace(/\D+/g, '').length;
37
- delimitersIndexes = [];
38
-
39
- for (let i = 0; i < dateFormatted.length; i++) {
40
- if (dateFormatted[i] === delimiter) {
41
- delimitersIndexes.push(i);
42
- }
43
- }
44
- }, { immediate: true });
45
-
46
- /**
47
- * Автоформат при вводе в поле с датой
48
- */
49
- export function oninput(e: any) {
50
- let selectionPos = e.target.selectionEnd;
51
- let value = e.target.value;
52
-
53
- // разбить занчение на две половины - до и после каретки
54
- // удалить все символы, кроме цифр
55
- let valueChunkLeft = value.substring(0, selectionPos).replace(/\D+/g, '');
56
- let valueChunkRight = value.substring(selectionPos).replace(/\D+/g, '');
57
-
58
- let extraNumbersCount = valueChunkLeft.length + valueChunkRight.length - dateNumbersCount;
59
- if (extraNumbersCount > 0) {
60
- // // количество цифр больше требуемого - удалить лишние
61
- valueChunkLeft = valueChunkLeft.substring(0, dateNumbersCount);
62
-
63
- const valueChunkRightMaxLength = dateNumbersCount - valueChunkLeft.length;
64
- valueChunkRight = valueChunkRight.substring(valueChunkRight.length - valueChunkRightMaxLength);
65
- } else if (extraNumbersCount < 0) {
66
- // количество цифр меньше требуемого - добавить 0
67
- if (e.inputType === 'deleteContentForward') {
68
- // нажатие на delete - добавить к левой части для правильного позиционирования каретки
69
- valueChunkLeft += '0'.repeat(-extraNumbersCount);
70
- } else {
71
- valueChunkRight = '0'.repeat(-extraNumbersCount) + valueChunkRight;
72
- }
73
- }
74
-
75
- selectionPos = valueChunkLeft.length;
76
- value = valueChunkLeft + valueChunkRight;
77
-
78
- // вставить разделители
79
- for (let i = 0; i < delimitersIndexes.length; i++) {
80
- const delimiterIndex = delimitersIndexes[i];
81
-
82
- value = value.substring(0, delimiterIndex) + delimiter + value.substring(delimiterIndex);
83
-
84
- // сдвинуть каретку, если разделитель вставлен левее ее
85
- if (selectionPos >= delimiterIndex) {
86
- selectionPos++;
87
- }
88
- }
89
-
90
- // нажатие на backspace - если слева символ разделителя, перенести каретку за него
91
- if (e.inputType === 'deleteContentBackward' && value[selectionPos - 1] === delimiter) {
92
- selectionPos--;
93
- }
94
-
95
- // если значение изменилось - вставить его и переместить каретку
96
- if (value !== e.target.value) {
97
- e.target.value = value;
98
- e.target.selectionStart = selectionPos;
99
- e.target.selectionEnd = selectionPos;
100
- }
101
- }
@@ -1,41 +0,0 @@
1
- import type { Meta, StoryObj } from '@storybook/vue3';
2
-
3
- import { genArgsTypes, genOverviewStory } from '@/components/helpersStories';
4
- import Component from './inputDate.vue';
5
- import * as ComponentsConst from './inputDate';
6
- import OverviewComponent from './stories/overview.vue';
7
-
8
- const argTypes = genArgsTypes(Component, ComponentsConst, true);
9
-
10
- /**
11
- * Поле ввода с выбором даты.
12
- *
13
- * В современных браузерах для тач устройств выводится нативный выбор даты, в остальных устройствах подклчюается jQuery Datepicker
14
- * с автоформатом вводимой даты.
15
- *
16
- * Для формата дат используются функции utils/date.
17
- *
18
- * Формат определяется настройкой dateFormat, которую можно указать при подклчюении UI к приложению Vue или через Core.defineOptions().
19
- */
20
- const meta = {
21
- component: Component,
22
- tags: ['autodocs'],
23
- argTypes,
24
- args: {
25
- modelValue: '2000-01-01',
26
- },
27
- } satisfies Meta<typeof Component>;
28
-
29
- type Story = StoryObj<typeof meta>;
30
-
31
- export const Playground = {} satisfies Story;
32
-
33
- export const Overview: Story = genOverviewStory({
34
- args: {
35
- title: 'Заголовок поля',
36
- captionType: '',
37
- isError: false,
38
- },
39
- }, OverviewComponent);
40
-
41
- export default meta;
@@ -1,4 +0,0 @@
1
- import type { Props, Emits } from '@/components/forms/input/input';
2
- export * from '@/components/forms/input/input';
3
-
4
- export type{ Props, Emits };
@@ -1,127 +0,0 @@
1
- <script lang="ts">
2
- const useNativeDatepicker = !!document.documentElement.ontouchstart && !!document.createElement('input').showPicker;
3
-
4
- let onInputLazy = (_e: any) => { };
5
- </script>
6
-
7
- <script setup lang="ts">
8
- import { ref, computed, onUnmounted } from 'vue';
9
- import UtilsDate from '@/core/utils/date';
10
- import type { Props, Emits } from './inputDate';
11
- import { Input } from '@/components/forms/forms';
12
- import Core from '@/core/core/core';
13
-
14
- const props = withDefaults(defineProps<Props>(), {
15
- icon2: '',
16
- });
17
-
18
- const emit = defineEmits<Emits>();
19
-
20
- const el = ref();
21
-
22
- const localValue = computed({
23
- get() {
24
- return UtilsDate.dateFormat(props.modelValue, 2, '0000-00-00');
25
- },
26
-
27
- set(value) {
28
- value = UtilsDate.dateUnformat(value, '0000-00-00');
29
-
30
- emit('update:modelValue', value);
31
- },
32
- });
33
-
34
- let oninput = (e: any) => {
35
- onInputLazy(e);
36
- };
37
-
38
- let onchange = (e: any) => {
39
- const dateUnformat = UtilsDate.dateUnformat(e.target.value);
40
- const dateFormat = UtilsDate.dateFormat(dateUnformat);
41
-
42
- if (!dateFormat || dateFormat === Core.L.Not_date || e.target.value !== dateFormat) {
43
- e.target.value = localValue.value;
44
-
45
- return;
46
- }
47
-
48
- localValue.value = e.target.value;
49
- };
50
-
51
- /**
52
- * Инициализпация функций выбора дат
53
- *
54
- * Для не нативного datepicker
55
- */
56
- async function init(e: any) {
57
- const datepicker = await import('./datepicker');
58
-
59
- // формат ввода
60
- onInputLazy = datepicker.oninput;
61
-
62
- // datepicker
63
- const $el = datepicker.connectDatepicker(e.target, {
64
- onSelect: () => onchange(e),
65
- });
66
-
67
- if ($el) {
68
- $el.datepicker('show');
69
-
70
- onUnmounted(() => $el.datepicker('destroy'));
71
- }
72
- }
73
- </script>
74
-
75
- <template>
76
- <Input
77
- v-if="useNativeDatepicker"
78
- :="$props"
79
- :modelValue="localValue"
80
- readonly
81
- @click="el.showPicker()"
82
- >
83
- <input
84
- ref="el"
85
- type="date"
86
- class="top-input_input-date"
87
- :modelValue="modelValue"
88
- @change="(e: any) => localValue = e.target.value"
89
- tabindex="-1"
90
- />
91
- </Input>
92
-
93
- <Input
94
- v-else
95
- :="$props"
96
- :modelValue="localValue"
97
- @update:modelValue="(newValue) => (newValue === '') ? localValue = '' : ''"
98
- @input.date="oninput"
99
- @focus.once.date="init"
100
- @change.date="onchange"
101
- modificator="datepicker"
102
- />
103
- </template>
104
-
105
- <style module>
106
- .top-input-datepicker {
107
- width: calc(105px + var(--top-icon-width) + var(--top-icon2-width));
108
- }
109
-
110
- .top-input_input-date {
111
- opacity: 0;
112
- position: absolute;
113
- top: 0;
114
- right: 0;
115
- bottom: 0;
116
- left: 0;
117
- z-index: -1;
118
- }
119
-
120
- .top-input_input-date::-webkit-inner-spin-button {
121
- display: none;
122
- }
123
-
124
- .top-input_input-date::-webkit-calendar-picker-indicator {
125
- opacity: 0;
126
- }
127
- </style>
@@ -1,35 +0,0 @@
1
- <script setup lang="ts">
2
- import type { Props } from '../inputDate';
3
- import InputDate from '../inputDate.vue';
4
- import { reactive } from 'vue';
5
-
6
- defineProps<Props>();
7
-
8
- const modelValues = reactive([
9
- '2000-01-01',
10
- '2000-01-01',
11
- ]);
12
- </script>
13
-
14
- <template>
15
- <div>
16
- <h2>Выбор даты</h2>
17
-
18
- <InputDate
19
- :="$props"
20
- v-model="modelValues[0]"
21
- />
22
-
23
- Выбранная дата: {{ modelValues[0] }}
24
-
25
- <h2>Выбор даты с очисткой</h2>
26
-
27
- <InputDate
28
- :="$props"
29
- v-model="modelValues[1]"
30
- :addCleaner="true"
31
- />
32
-
33
- Выбранная дата: {{ modelValues[1] }}
34
- </div>
35
- </template>
@@ -1,34 +0,0 @@
1
- import type { Meta, StoryObj } from '@storybook/vue3';
2
-
3
- import { genArgsTypes, genOverviewStory } from '@/components/helpersStories';
4
- import Component from './radio.vue';
5
- import * as ComponentsConst from './radio';
6
- import OverviewComponent from './stories/overview.vue';
7
-
8
- const argTypes = genArgsTypes(Component, ComponentsConst, true);
9
-
10
- const meta = {
11
- component: Component,
12
- tags: ['autodocs'],
13
- argTypes,
14
- args: {
15
- value: 'default value',
16
- modelValue: '',
17
- },
18
- } satisfies Meta<typeof Component>;
19
-
20
- type Story = StoryObj<typeof meta>;
21
-
22
- export const Playground = {
23
- args: {
24
- default: 'radio',
25
- },
26
- } satisfies Story;
27
-
28
- export const Overview: Story = genOverviewStory({
29
- args: {
30
- isError: false,
31
- },
32
- }, OverviewComponent);
33
-
34
- export default meta;
@@ -1,15 +0,0 @@
1
- export interface Props {
2
- /**
3
- * [подробнее](https://vuejs.org/guide/essentials/forms.html#radio)
4
- */
5
- modelValue: string | object;
6
- value: Props['modelValue'];
7
- name?: string;
8
- description?: string;
9
- disabled?: boolean;
10
- isError?: boolean;
11
- }
12
-
13
- export interface Emits {
14
- (e: 'update:modelValue', value: Props['modelValue']): void;
15
- }
@@ -1,107 +0,0 @@
1
- <script setup lang="ts">
2
- import { computed } from 'vue';
3
- import type { Props, Emits } from './radio';
4
- import ControlLabel from '../controlLabel/controlLabel.vue';
5
-
6
- const props = defineProps<Props>();
7
- const emit = defineEmits<Emits>();
8
-
9
- const localValue = computed({
10
- get() {
11
- return props.modelValue;
12
- },
13
- set(value) {
14
- emit('update:modelValue', value);
15
- },
16
- });
17
-
18
- </script>
19
-
20
- <template>
21
- <label
22
- :class="{
23
- ['top-forms-optionWrapper']: true,
24
- ['top-radio']: true,
25
- ['top-radio_' + name]: name !== '',
26
- ['top-disabled']: disabled,
27
- ['top-error']: isError && !disabled,
28
- }"
29
- >
30
- <input
31
- type="radio"
32
- :class="{
33
- ['top-forms-focusable']: !disabled,
34
- ['top-forms-option']: true,
35
- ['top-radio_input']: true,
36
- ['top-error']: isError && !disabled,
37
- }"
38
- v-model="localValue"
39
- :name="name"
40
- :value="value"
41
- :disabled="disabled"
42
- >
43
-
44
- <ControlLabel
45
- v-if="$slots.default"
46
- :description="description"
47
- :disabled="disabled"
48
- >
49
- <!-- @slot Слот с заголовком -->
50
- <slot></slot>
51
- </ControlLabel>
52
- </label>
53
- </template>
54
-
55
- <style module>
56
- :root {
57
- --top-radio-background-color: var(--content-background-color);
58
- --top-radio-background-color-hover: var(--top-radio-background-color);
59
- --top-radio-background-color-active: var(--top-radio-background-color);
60
- }
61
-
62
- .top-radio {
63
- cursor: pointer;
64
- }
65
-
66
- .top-radio_input {
67
- border-radius: 50%;
68
- background: var(--content-background-color);
69
- border: 1px solid var(--top-forms-border-color);
70
- width: calc(var(--top-forms-option-height) - 3px * 2);
71
- height: calc(var(--top-forms-option-height) - 3px * 2);
72
- }
73
-
74
- .top-radio_input:hover {
75
- border-color: var(--top-forms-option-color);
76
- background: var(--color-theme-50)
77
- }
78
-
79
- .top-radio_input:checked {
80
- border-color: var(--top-forms-option-color);
81
- border-width: 5px;
82
- }
83
-
84
- .top-radio_input:checked:hover {
85
- border-color: var(--top-forms-option-color-hover);
86
- }
87
-
88
- /* disabled */
89
- .top-radio_input:disabled {
90
- border-color: var(--color-line-1-opacity);
91
- background: var(--color-theme-50);
92
- }
93
-
94
- /* disabled selected */
95
- .top-radio_input:checked:disabled {
96
- border-color: var(--color-theme-400);
97
- }
98
-
99
- /* isError */
100
- .top-radio_input.top-error {
101
- border-color: var(--color-negative);
102
- }
103
-
104
- .top-radio_input.top-error:hover {
105
- border-color: var(--color-negative-2);
106
- }
107
- </style>