@topvisor/ui 0.0.35 → 0.0.37
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.chunks/datepicker-6d57a408.es.js +275 -0
- package/.chunks/datepicker-6d57a408.es.js.map +1 -0
- package/.chunks/datepicker-a0840577.amd.js +234 -0
- package/.chunks/datepicker-a0840577.amd.js.map +1 -0
- package/.chunks/forms-1aa30229.amd.js +3 -0
- package/.chunks/forms-1aa30229.amd.js.map +1 -0
- package/.chunks/forms-7be951a7.es.js +962 -0
- package/.chunks/forms-7be951a7.es.js.map +1 -0
- package/.chunks/popup-604c0a49.amd.js +341 -0
- package/.chunks/popup-604c0a49.amd.js.map +1 -0
- package/.chunks/popup-b9517276.es.js +700 -0
- package/.chunks/popup-b9517276.es.js.map +1 -0
- package/README.md +52 -19
- package/common/common.amd.js +2 -0
- package/common/common.amd.js.map +1 -0
- package/common/common.js +2 -0
- package/common/common.js.map +1 -0
- package/core/core.amd.js +2 -0
- package/core/core.amd.js.map +1 -0
- package/core/core.js +6 -0
- package/core/core.js.map +1 -0
- package/core.css +1 -0
- package/dark.css +1 -0
- package/forms/forms.amd.js +2 -0
- package/forms/forms.amd.js.map +1 -0
- package/forms/forms.js +16 -0
- package/forms/forms.js.map +1 -0
- package/forms/helpers.amd.js +2 -0
- package/forms/helpers.amd.js.map +1 -0
- package/forms/helpers.js +9 -0
- package/forms/helpers.js.map +1 -0
- package/forms.css +1 -0
- package/formsExt/formsExt.amd.js +3 -0
- package/formsExt/formsExt.amd.js.map +1 -0
- package/formsExt/formsExt.js +220 -0
- package/formsExt/formsExt.js.map +1 -0
- package/formsExt.css +1 -0
- package/{src/resources/icomoon → icomoon}/demo-files/demo.css +161 -161
- package/{src/resources/icomoon → icomoon}/demo-files/demo.js +30 -30
- package/{src/resources/icomoon → icomoon}/demo.html +2945 -2945
- package/{src/resources/icomoon → icomoon}/fonts/Topvisor-2.svg +232 -232
- package/{src/resources/icomoon → icomoon}/style.css +647 -647
- package/light.css +1 -0
- package/package.json +19 -68
- package/popup/popup.amd.js +3 -0
- package/popup/popup.amd.js.map +1 -0
- package/popup/popup.js +144 -0
- package/popup/popup.js.map +1 -0
- package/popup/worker.amd.js +2 -0
- package/popup/worker.amd.js.map +1 -0
- package/popup/worker.js +154 -0
- package/popup/worker.js.map +1 -0
- package/popup.css +1 -0
- package/tabs/tabs.amd.js +3 -0
- package/tabs/tabs.amd.js.map +1 -0
- package/tabs/tabs.js +97 -0
- package/tabs/tabs.js.map +1 -0
- package/tabs.css +1 -0
- package/utils/date.amd.js +2 -0
- package/utils/date.amd.js.map +1 -0
- package/utils/date.js +6 -0
- package/utils/date.js.map +1 -0
- package/utils/device.amd.js +2 -0
- package/utils/device.amd.js.map +1 -0
- package/utils/device.js +6 -0
- package/utils/device.js.map +1 -0
- package/utils/dom.amd.js +2 -0
- package/utils/dom.amd.js.map +1 -0
- package/utils/dom.js +64 -0
- package/utils/dom.js.map +1 -0
- package/.storybook/TopTheme.js +0 -82
- package/.storybook/TopThemeManager.js +0 -44
- package/.storybook/main.ts +0 -43
- package/.storybook/manager.ts +0 -28
- package/.storybook/preview-head.html +0 -16
- package/.storybook/preview.ts +0 -48
- package/.storybook/vue/coreDecorator.ts +0 -19
- package/.storybook/vue/vModelDecorator.ts +0 -27
- package/.vscode/extensions.json +0 -11
- package/.vscode/keybindings.example.json +0 -121
- package/.vscode/settings.json +0 -46
- package/Dockerfile +0 -3
- package/NPM.md +0 -25
- package/PUBLISH.md +0 -18
- package/STORYBOOK.md +0 -27
- package/USE_IN_PROJECT.md +0 -29
- package/build/afterBuild.sh +0 -12
- package/build/cssModules.ts +0 -39
- package/build/plugin/amdFix.ts +0 -46
- package/build/rollup.config.ts +0 -18
- package/nbproject/project.properties +0 -11
- package/nbproject/project.xml +0 -9
- package/public/README.md +0 -63
- package/src/components/common/common.ts +0 -1
- package/src/components/common/icon/icon.ts +0 -4
- package/src/components/common/icon/icon.vue +0 -15
- package/src/components/component.ts +0 -133
- package/src/components/forms/button/button.stories.ts +0 -112
- package/src/components/forms/button/button.ts +0 -51
- package/src/components/forms/button/button.vue +0 -75
- package/src/components/forms/button/stories/README.md +0 -35
- package/src/components/forms/button/stories/overview.vue +0 -33
- package/src/components/forms/button/style/button.css +0 -124
- package/src/components/forms/button/style/style-outline.css +0 -42
- package/src/components/forms/button/style/style-soft.css +0 -31
- package/src/components/forms/button/style/style-transparent.css +0 -35
- package/src/components/forms/checkbox/checkbox.stories.ts +0 -33
- package/src/components/forms/checkbox/checkbox.ts +0 -23
- package/src/components/forms/checkbox/checkbox.vue +0 -135
- package/src/components/forms/checkbox/stories/overview.vue +0 -171
- package/src/components/forms/controlLabel/controlLabel.stories.ts +0 -38
- package/src/components/forms/controlLabel/controlLabel.ts +0 -4
- package/src/components/forms/controlLabel/controlLabel.vue +0 -48
- package/src/components/forms/forms.ts +0 -10
- package/src/components/forms/helpers.ts +0 -10
- package/src/components/forms/hint/hint.stories.ts +0 -46
- package/src/components/forms/hint/hint.ts +0 -8
- package/src/components/forms/hint/hint.vue +0 -32
- package/src/components/forms/input/input.stories.ts +0 -31
- package/src/components/forms/input/input.ts +0 -34
- package/src/components/forms/input/input.vue +0 -170
- package/src/components/forms/input/stories/overview.vue +0 -61
- package/src/components/forms/inputDate/datepicker.css +0 -233
- package/src/components/forms/inputDate/datepicker.ts +0 -101
- package/src/components/forms/inputDate/inputDate.stories.ts +0 -41
- package/src/components/forms/inputDate/inputDate.ts +0 -4
- package/src/components/forms/inputDate/inputDate.vue +0 -127
- package/src/components/forms/inputDate/stories/overview.vue +0 -35
- package/src/components/forms/radio/radio.stories.ts +0 -34
- package/src/components/forms/radio/radio.ts +0 -15
- package/src/components/forms/radio/radio.vue +0 -107
- package/src/components/forms/radio/stories/overview.vue +0 -79
- package/src/components/forms/select/select.stories.ts +0 -34
- package/src/components/forms/select/select.ts +0 -36
- package/src/components/forms/select/select.vue +0 -253
- package/src/components/forms/select/stories/exampleOptions.ts +0 -71
- package/src/components/forms/select/stories/overview.vue +0 -60
- package/src/components/forms/switcher/stories/overview.vue +0 -139
- package/src/components/forms/switcher/switcher.stories.ts +0 -33
- package/src/components/forms/switcher/switcher.ts +0 -22
- package/src/components/forms/switcher/switcher.vue +0 -113
- package/src/components/forms/textarea/stories/overview.vue +0 -62
- package/src/components/forms/textarea/textarea.stories.ts +0 -33
- package/src/components/forms/textarea/textarea.ts +0 -38
- package/src/components/forms/textarea/textarea.vue +0 -119
- package/src/components/formsExt/editArea/editArea.stories.ts +0 -72
- package/src/components/formsExt/editArea/editArea.ts +0 -25
- package/src/components/formsExt/editArea/editArea.vue +0 -172
- package/src/components/formsExt/editArea/stories/README.md +0 -17
- package/src/components/formsExt/editArea/stories/overview.vue +0 -66
- package/src/components/formsExt/editInput/editInput.stories.ts +0 -36
- package/src/components/formsExt/editInput/editInput.ts +0 -20
- package/src/components/formsExt/editInput/editInput.vue +0 -57
- package/src/components/formsExt/editInput/stories/overview.vue +0 -54
- package/src/components/formsExt/formsExt.ts +0 -3
- package/src/components/formsExt/radioGroup/radioGroup.stories.ts +0 -51
- package/src/components/formsExt/radioGroup/radioGroup.ts +0 -28
- package/src/components/formsExt/radioGroup/radioGroup.vue +0 -143
- package/src/components/formsExt/radioGroup/stories/overview.vue +0 -78
- package/src/components/formsExt/radioGroup/styles/top-scrollBar.css +0 -52
- package/src/components/helper.js +0 -10
- package/src/components/helpersStories.ts +0 -151
- package/src/components/popup/lib/popup.globalEvents.js +0 -205
- package/src/components/popup/lib/popup.js +0 -702
- package/src/components/popup/lib/worker.globalEvents.js +0 -78
- package/src/components/popup/lib/worker.js +0 -232
- package/src/components/popup/popup/listItem.vue +0 -42
- package/src/components/popup/popup/opener.vue +0 -74
- package/src/components/popup/popup/popup.stories.ts +0 -68
- package/src/components/popup/popup/popup.ts +0 -93
- package/src/components/popup/popup/popup.vue +0 -95
- package/src/components/popup/popup/stories/README.md +0 -34
- package/src/components/popup/popup/stories/listItems.vue +0 -44
- package/src/components/popup/popup/stories/listSubItems.vue +0 -52
- package/src/components/popup/popup/stories/overview.vue +0 -208
- package/src/components/popup/popup/style/popup.css +0 -243
- package/src/components/popup/popup/style/popup.m.css +0 -71
- package/src/components/popup/popup/style/popup.pc.css +0 -28
- package/src/components/popup/popup.ts +0 -3
- package/src/components/popup/worker.ts +0 -1
- package/src/components/tabs/tabs/content.vue +0 -24
- package/src/components/tabs/tabs/stories/README.md +0 -10
- package/src/components/tabs/tabs/tab.vue +0 -52
- package/src/components/tabs/tabs/tabs.stories.ts +0 -171
- package/src/components/tabs/tabs/tabs.ts +0 -22
- package/src/components/tabs/tabs/tabs.vue +0 -64
- package/src/components/tabs/tabs.ts +0 -3
- package/src/core/base/Colors.stories.ts +0 -15
- package/src/core/base/Layout.stories.ts +0 -15
- package/src/core/base/Properties.stories.ts +0 -15
- package/src/core/base/base.mdx +0 -21
- package/src/core/core/core.ts +0 -144
- package/src/core/core/events.ts +0 -54
- package/src/core/core/options.ts +0 -15
- package/src/core/core/state.ts +0 -44
- package/src/core/directives/tooltip.ts +0 -55
- package/src/core/theme/Colors.stories.ts +0 -15
- package/src/core/theme/Properties.stories.ts +0 -15
- package/src/core/theme/theme.mdx +0 -15
- package/src/core/utils/date.ts +0 -164
- package/src/core/utils/device.ts +0 -48
- package/src/core/utils/dom.ts +0 -185
- 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
- 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
- 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
- package/src/docs/CSS/FAQ.mdx +0 -43
- 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
- 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
- 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
- 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
- package/src/docs/CSS//320/241/321/202/320/270/320/273/320/270.md +0 -53
- package/src/docs/CSS//320/241/321/202/320/270/320/273/320/270.mdx +0 -4
- 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
- package/src/docs/ROADMAP.md +0 -17
- package/src/docs/Roadmap.mdx +0 -4
- 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
- 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
- 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
- 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
- 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
- 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
- package/src/globals.d.ts +0 -1
- package/src/resources/styles/core/colors.css +0 -204
- package/src/resources/styles/core/components.css +0 -70
- package/src/resources/styles/core/core.ts +0 -10
- package/src/resources/styles/core/forms/clear.css +0 -19
- package/src/resources/styles/core/forms/controls.css +0 -20
- package/src/resources/styles/core/forms/focusable.css +0 -26
- package/src/resources/styles/core/forms/forms.css +0 -100
- package/src/resources/styles/core/icon.css +0 -58
- package/src/resources/styles/core/layout.css +0 -40
- package/src/resources/styles/core/modifiers/as.css +0 -9
- package/src/resources/styles/core/modifiers/ellipsis.css +0 -18
- package/src/resources/styles/core/modifiers/modifiers.css +0 -81
- package/src/resources/styles/core/modifiers/only.css +0 -19
- package/src/resources/styles/core/select.css +0 -16
- package/src/resources/styles/jquery-ui.min.css +0 -6
- package/src/resources/styles/storybook.css +0 -11
- package/src/resources/styles/themes/dark/theme.css +0 -139
- package/src/resources/styles/themes/dark.ts +0 -1
- package/src/resources/styles/themes/light/theme.css +0 -139
- package/src/resources/styles/themes/light.ts +0 -1
- package/src/storybook/components/color.vue +0 -45
- package/src/storybook/components/colors.vue +0 -34
- package/src/storybook/components/icomoon.ts +0 -38
- package/src/storybook/components/properties.vue +0 -82
- package/src/storybook/resources/accessibility.png +0 -0
- package/src/storybook/resources/accessibility.svg +0 -5
- package/src/storybook/resources/addon-library.png +0 -0
- package/src/storybook/resources/assets.png +0 -0
- package/src/storybook/resources/context.png +0 -0
- package/src/storybook/resources/discord.svg +0 -15
- package/src/storybook/resources/docs.png +0 -0
- package/src/storybook/resources/figma-plugin.png +0 -0
- package/src/storybook/resources/github.svg +0 -3
- package/src/storybook/resources/share.png +0 -0
- package/src/storybook/resources/styling.png +0 -0
- package/src/storybook/resources/testing.png +0 -0
- package/src/storybook/resources/theming.png +0 -0
- package/src/storybook/resources/tutorials.svg +0 -12
- package/src/storybook/resources/youtube.svg +0 -4
- 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
- package/tsconfig.json +0 -62
- package/vite.config.ts +0 -91
- /package/{src/resources/icomoon → icomoon}/fonts/Topvisor-2.ttf +0 -0
- /package/{src/resources/icomoon → icomoon}/fonts/Topvisor-2.woff +0 -0
- /package/{src/resources/icomoon → icomoon}/selection.json +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"forms-1aa30229.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 {\r\n\r\n\tstatic isRetina () {\r\n\t\treturn ('devicePixelRatio' in window && window.devicePixelRatio > 1);\r\n\t}\r\n\r\n\t// определить, является ли устройство мобильным\r\n\tstatic isMobile (): boolean {\r\n\t\treturn !!navigator.userAgent.match(/Android|BlackBerry|iPhone|iPad|iPod|IEMobile|Opera Mini/i);\r\n\t}\r\n\r\n\t// определить, открыт ли сайт в приложении\r\n\tstatic isApp () {\r\n\t\treturn (navigator.userAgent.indexOf('Topvisor_App') != -1);\r\n\t}\r\n\r\n\t// определить, является ли OS пользователя macOS\r\n\tstatic isMacOS () {\r\n\t\treturn navigator.userAgent.indexOf('Mac OS X') !== -1;\r\n\t}\r\n\r\n\t// определить, является ли текущий браузер пользователя Safari\r\n\tstatic isSafari () {\r\n\t\tconst isChrome = /Chrome|Android/.test(navigator.userAgent);\r\n\r\n\t\tlet isSafari = /Safari/.test(navigator.userAgent);\r\n\t\tif (isChrome && isSafari) {\r\n\t\t\tisSafari = false;\r\n\t\t}\r\n\r\n\t\treturn isSafari;\r\n\t};\r\n\r\n\t/**\r\n\t * Вернуть текст для обозначения клавиши Ctrl / Command в зависимости от OS\r\n\t * @returns {'Ctrl'|'⌘'}\r\n\t */\r\n\tstatic getCommandKeyLabel (): 'Ctrl' | '⌘' {\r\n\t\tif (this.isMacOS()) {\r\n\t\t\treturn '⌘';\r\n\t\t} else {\r\n\t\t\treturn 'Ctrl';\r\n\t\t}\r\n\t}\r\n\r\n}\r\n\r\nexport default Device;\r\n","const onResizeDelay = 100;\r\n\r\nlet onResizeTimer: NodeJS.Timeout;\r\n\r\ntype TopEvent = Event & { topEvent: { widthDiff: number, hightDiff: number } }\r\n\r\n/**\r\n * Установленные обрабочики на событие изменения размеров окна\r\n */\r\nconst onResizeListeners: Map<(ev: TopEvent) => any, (ev: TopEvent) => any> = new Map();\r\n\r\n// зафиксированное состояние размеров окна\r\nconst windowSize = {\r\n\twidth: window.innerWidth,\r\n\theight: window.innerHeight,\r\n};\r\n\r\n/**\r\n * Добавить обработчик на событие изменения размеров экрана\r\n * вызов таких обработчиков будет опмизирован и объединен в одно событие\r\n */\r\nfunction addOnReize (listener: (this: Element, ev: TopEvent) => any) {\r\n\tonResizeListeners.set(listener, listener);\r\n}\r\n\r\n/**\r\n * Удаление обработчика на событие изменений размеров экрана\r\n */\r\nfunction removeOnResize (listener: (this: Element, ev: TopEvent) => any) {\r\n\tonResizeListeners.delete(listener);\r\n}\r\n\r\nfunction onResize (e: any) {\r\n\tclearTimeout(onResizeTimer);\r\n\r\n\tonResizeTimer = setTimeout(function () {\r\n\t\te.topEvent = {\r\n\t\t\twidthDiff: windowSize.width - window.innerWidth,\r\n\t\t\thightDiff: windowSize.height - window.innerHeight,\r\n\t\t};\r\n\r\n\t\twindowSize.width = window.innerWidth;\r\n\t\twindowSize.height = window.innerHeight;\r\n\r\n\t\tonResizeListeners.forEach((callback) => callback(e));\r\n\t}, onResizeDelay);\r\n}\r\n\r\nwindow.addEventListener('resize', onResize);\r\n\r\nexport default {\r\n\taddOnReize,\r\n\tremoveOnResize,\r\n};\r\n","/**\r\n * Конфигурация UI\r\n * Можно переопределить при подклчюении UI во Vue приложение через app.use(Core, options)\r\n */\r\nconst options = {\r\n\twidthForMobile: 900,\r\n\tdateFormat: 'Y-m-d',\r\n\r\n\t/**\r\n\t * Для Москвы: +0300\r\n\t */\r\n\tgmt: new Date().toString().match(/GMT(\\S+)/)?.[1],\r\n};\r\n\r\nexport default options;","/**\r\n * State UI для взаимодейсвтиями с приложениями Vue\r\n */\r\nconst state = {\r\n\t/**\r\n\t * Device by size\r\n\t * @see widthForMobile\r\n\t */\r\n\tisMobile: false,\r\n\r\n\t/**\r\n\t * Device by user agent\r\n\t */\r\n\tisMobileUA: false,\r\n\r\n\t/**\r\n\t * true, если плотность пикселей экрана больше 1\r\n\t */\r\n\tisRetina: false,\r\n\r\n\t/**\r\n\t * true, елси это приложение\r\n\t */\r\n\tisApp: false,\r\n\r\n\t/**\r\n\t * true при горизонтальном расположении устройства\r\n\t */\r\n\tisLandscape: true,\r\n\r\n\t/**\r\n\t * true при вертикальном расположении устройства\r\n\t */\r\n\tisPortrait: false,\r\n\tsize: 0,\r\n\r\n\t// См. core.options\r\n\tdateFormat: 'Y-m-d',\r\n\r\n\t// См. core.options\r\n\tgmt: new Date().toString().match(/GMT(\\S+)/)?.[1],\r\n};\r\n\r\nexport default state;","import type { DirectiveBinding, ObjectDirective, VNode } from 'vue';\r\n\r\nconst _window: any = window;\r\n\r\nconst $ = (el: VNode) => {\r\n\tif (!_window?.jQuery?.ui?.tooltip) {\r\n\t\tconsole.info('Для работы v-top-tooltip требуется глобальная загрузка jQuery UI Tooltip');\r\n\r\n\t\treturn;\r\n\t}\r\n\r\n\treturn _window.jQuery(el);\r\n};\r\n\r\nconst tvTooltipGenOptions = (binding: DirectiveBinding, vnode: VNode) => {\r\n\tconst options = binding.value ?? {};\r\n\r\n\toptions.content ??= vnode.props?.title;\r\n\toptions.content = String(options.content).replace(/\\r\\n|\\r|\\n/g, '<br>');\r\n\r\n\toptions.position ??= {\r\n\t\tmy: 'bottom-18px',\r\n\t\tat: 'top center',\r\n\t};\r\n\r\n\treturn options;\r\n};\r\n\r\nconst tooltip = {\r\n\tmounted(el: VNode, binding: DirectiveBinding, vnode: VNode) {\r\n\t\t$(el)?.tooltip(tvTooltipGenOptions(binding, vnode));\r\n\t},\r\n\r\n\tupdated(el: VNode, binding: DirectiveBinding, vnode: VNode, _prevVnode: VNode) {\r\n\t\t/**\r\n\t\t * В результате обновления может быть открыто несколько тултипов поэтому изменить опции, без перерисовки тултипа\r\n\t\t */\r\n\t\tconst options = tvTooltipGenOptions(binding, vnode);\r\n\t\tconst instance = $(el)?.tooltip('instance');\r\n\t\tif (!instance) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tinstance.options = {\r\n\t\t\t...instance.options,\r\n\t\t\t...options,\r\n\t\t};\r\n\t},\r\n\r\n\tunmounted(el: VNode, binding: DirectiveBinding, vnode: VNode) {\r\n\t\t$(el)?.tooltip('destroy');\r\n\t},\r\n} satisfies ObjectDirective;\r\n\r\nexport default tooltip;","import { reactive } from 'vue';\r\nimport Device from '@/core/utils/device';\r\nimport Events from '@/core/core/events';\r\nimport options from '@/core/core/options';\r\nimport state from '@/core/core/state';\r\nimport directiveTooltip from '@/core/directives/tooltip';\r\n\r\nconst _window: any = window;\r\n\r\nclass Core {\r\n\r\n\t/**\r\n\t * Настройки словаря\r\n\t */\r\n\tstatic L = reactive({\r\n\t\tNot_date: 'Not date',\r\n\t});\r\n\r\n\tstatic page = _window?.page || {};\r\n\r\n\tstatic options = options;\r\n\r\n\tstatic state = reactive({ ...state });\r\n\r\n\tstatic matchMediaIsMobile?: MediaQueryList;\r\n\r\n\t/**\r\n\t * Добавить на страницу стили, используется для загрузки стилей из js\r\n\t *\r\n\t * Условная загрузка стилей m и pc отключена в пользу производительсности, стили грузятся всегда, но применяются по условию\r\n\t * @param style - css стили в строке\r\n\t * @param type - если указать 'm' или 'pc', то стили будут применяться по условию в зависимости от настройки this.options.widthForMobile\r\n\t */\r\n\tstatic appendStyle(style: string, type: '' | 'm' | 'pc' = ''): void {\r\n\t\tlet media = 'all';\r\n\r\n\t\tif (type === 'm') {\r\n\t\t\tmedia = '(max-width: ' + this.options.widthForMobile + 'px)';\r\n\t\t}\r\n\r\n\t\tif (type === 'pc') {\r\n\t\t\tmedia = '(min-width: ' + this.options.widthForMobile + 'px)';\r\n\t\t}\r\n\r\n\t\tconst elStyle = document.createElement('style');\r\n\t\telStyle.innerHTML = style;\r\n\t\telStyle.media = media;\r\n\r\n\t\tdocument.head.append(elStyle);\r\n\t}\r\n\r\n\t/**\r\n\t * Установить как плагин в прилоежнии Vue\r\n\t * Core.state является общим для всех приложений Vue на странице\r\n\t * Core.options является общим для всех приложений Vue на странице\r\n\t * @param app - Vue App\r\n\t * @param {typeof options} options - параметры UI\r\n\t */\r\n\tstatic install(app: any, options: typeof this.options) {\r\n\t\tCore.defineOptions(options);\r\n\r\n\t\tapp.provide('top-core', Core);\r\n\r\n\t\tthis.installDirectives(app);\r\n\t}\r\n\r\n\tstatic installDirectives(app: any) {\r\n\t\tapp.directive('top-tooltip', directiveTooltip);\r\n\t}\r\n\r\n\t/**\r\n\t * Установить конфигурацию UI\r\n\t * @param {typeof options} options\r\n\t */\r\n\tstatic defineOptions(options: typeof this.options) {\r\n\t\tif (options?.widthForMobile) {\r\n\t\t\tthis.options.widthForMobile = options.widthForMobile;\r\n\t\t}\r\n\r\n\t\tif (options?.dateFormat) {\r\n\t\t\tthis.options.dateFormat = options.dateFormat;\r\n\t\t}\r\n\r\n\t\tif (options?.gmt) {\r\n\t\t\tthis.options.gmt = options.gmt;\r\n\t\t}\r\n\r\n\t\tCore.setState();\r\n\t}\r\n\r\n\tstatic setState() {\r\n\t\tCore.matchMediaIsMobile = window.matchMedia(`(max-width: ${Core.options.widthForMobile}px)`);\r\n\r\n\t\tCore.state.isMobileUA = Device.isMobile();\r\n\t\tCore.state.isRetina = Device.isRetina();\r\n\t\tCore.state.isApp = Device.isApp();\r\n\t\tCore.state.dateFormat = this.options.dateFormat;\r\n\t\tCore.state.gmt = this.options.gmt;\r\n\r\n\t\tCore.setStateByWindowSize();\r\n\r\n\t\t// пересчет значений, зависящих от рамзеров окна\r\n\t\tEvents.addOnReize(Core.onResize);\r\n\r\n\t\tCore.onResize();\r\n\r\n\t\tCore.saveToCookie();\r\n\t}\r\n\r\n\tstatic onResize() {\r\n\t\tCore.setStateByWindowSize();\r\n\r\n\t\t// честный vh\r\n\t\tdocument.documentElement.style.setProperty('--100vh', window.innerHeight + 'px');\r\n\t}\r\n\r\n\tstatic setStateByWindowSize() {\r\n\t\tCore.state.isMobile = !!Core.matchMediaIsMobile?.matches;\r\n\t\tCore.state.isLandscape = (window.innerWidth > window.innerHeight);\r\n\t\tCore.state.isPortrait = !Core.state.isLandscape;\r\n\t\tCore.state.size = (window.innerWidth > window.innerHeight) ? window.innerWidth : window.innerHeight;\r\n\r\n\t\tCore.saveToCookie();\r\n\t}\r\n\r\n\t/**\r\n\t * Сохранить информацию об устройстве в cookie\r\n\t */\r\n\tstatic saveToCookie() {\r\n\t\tconst device = [\r\n\t\t\t1,\r\n\t\t\twindow.innerWidth,\r\n\t\t\twindow.innerHeight,\r\n\t\t\twindow.devicePixelRatio,\r\n\t\t\tNumber(Core.state.isMobile),\r\n\t\t\tNumber(Core.state.isRetina),\r\n\t\t];\r\n\r\n\t\tdocument.cookie = 'device=' + device.join(',') + '; path=/;';\r\n\t}\r\n\r\n}\r\n\r\nexport default Core;","import Core from '@/core/core/core';\r\n\r\nclass UtilsDate {\r\n\r\n\t/**\r\n\t * Получить объект Date из строки\r\n\t * @param date - строка с датой\r\n\t */\r\n\tstatic stringToDate(date: string) {\r\n\t\tif (date.indexOf('T') === -1) {\r\n\t\t\tif (date.length == 10) {\r\n\t\t\t\tdate += ' 00:00:00';\r\n\t\t\t}\r\n\r\n\t\t\tdate = date.replace(' ', 'T') + Core.state.gmt;\r\n\t\t}\r\n\r\n\t\treturn new Date(date);\r\n\t}\r\n\r\n\t// Перевод миллисекунд (UTC) в дату-строку (время локальное)\r\n\r\n\t/**\r\n\t * Перевод миллисекунд (UTC) в дату-строку (время локальное)\r\n\t * @param {?number} ms\r\n\t * @param {?boolean} useFormat\r\n\t */\r\n\tstatic ms2Date(ms: number, useFormat: boolean = true): string {\r\n\t\tlet date;\r\n\t\tif (ms != undefined) {\r\n\t\t\tdate = new Date(ms);\r\n\t\t} else {\r\n\t\t\tdate = new Date();\r\n\t\t}\r\n\r\n\t\tconst d = date.getDate().toString().padStart(2, '0');\r\n\t\tconst m = String(date.getMonth() + 1).padStart(2, '0');\r\n\t\tconst Y = date.getFullYear();\r\n\t\tconst H = date.getHours().toString().padStart(2, '0');\r\n\t\tconst i = date.getMinutes().toString().padStart(2, '0');\r\n\t\tconst s = date.getSeconds().toString().padStart(2, '0');\r\n\r\n\t\tdate = Y + '-' + m + '-' + d + ' ' + H + ':' + i + ':' + s;\r\n\r\n\t\tif (useFormat) {\r\n\t\t\tdate = this.dateFormat(date);\r\n\t\t}\r\n\r\n\t\treturn date;\r\n\t}\r\n\r\n\t/**\r\n\t * Перевод даты в формат пользователя\r\n\t * @param {string} date\r\n\t * @param {0|1|2|3} time - 0: только дата, 1: дата и часы, 2: дата и часы с минутами, 3: дата и часы с минутами и секундами\r\n\t */\r\n\tstatic dateFormat(date: string, time: 0 | 1 | 2 | 3 = 2, emptyValue: string = Core.L.Not_date): string {\r\n\t\tif (!date || date.substring(0, 10) === '0000-00-00') {\r\n\t\t\tif (emptyValue && emptyValue !== '0000-00-00') {\r\n\t\t\t\treturn emptyValue;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst dateFormat = Core.state.dateFormat.toLowerCase();\r\n\r\n\t\tlet dateForObj = date.substring(0, 10);\r\n\r\n\t\tif (dateForObj.length === 7) {\r\n\t\t\tdateForObj += '-01';\r\n\t\t}\r\n\r\n\t\tdateForObj += ' 00:00';\r\n\r\n\t\t// safari fix\r\n\t\tdateForObj = dateForObj.replace(/-/g, '/');\r\n\r\n\t\tconst dateObject = new Date(dateForObj);\r\n\t\tif (isNaN(Number(dateObject))) {\r\n\t\t\treturn emptyValue;\r\n\t\t}\r\n\r\n\t\tlet result = dateFormat.\r\n\t\t\treplace('y', String(dateObject.getFullYear()).padStart(2, '0')).\r\n\t\t\treplace('m', String(dateObject.getMonth() + 1).padStart(2, '0')).\r\n\t\t\treplace('d', String(dateObject.getDate()).padStart(2, '0'));\r\n\r\n\t\tif (date.length > 10) {\r\n\t\t\tswitch (time) {\r\n\t\t\t\t// часы\r\n\t\t\t\tcase 1:\r\n\t\t\t\t\tresult += ' ' + date.substring(11, 13);\r\n\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t// часы и минуты\r\n\t\t\t\tcase 2:\r\n\t\t\t\t\tresult += ' ' + date.substring(11, 16);\r\n\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t// часы, минуты и секунды\r\n\t\t\t\tcase 3:\r\n\t\t\t\t\tresult += ' ' + date.substring(11, 19);\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\t/**\r\n\t * Перевод даты из формата пользователя в системный формат\r\n\t * @param {string} date\r\n\t */\r\n\tstatic dateUnformat(date: string, emptyValue: string = Core.L.Not_date): string {\r\n\t\tif (!date) {\r\n\t\t\treturn emptyValue;\r\n\t\t}\r\n\r\n\t\tif (date.match(/\\d\\d\\d\\d-\\d\\d-\\d\\d/)) {\r\n\t\t\treturn date;\r\n\t\t}\r\n\r\n\t\tconst dateFormat = Core.state.dateFormat.toLowerCase();\r\n\r\n\t\tconst dateChunks = date.split(/\\W/);\r\n\t\tconst dateFormatChunks = dateFormat.split(/\\W/);\r\n\r\n\t\tlet d = '';\r\n\t\tlet m = '';\r\n\t\tlet y = '';\r\n\r\n\t\tdateFormatChunks.forEach((type, index) => {\r\n\t\t\tswitch (type) {\r\n\t\t\t\tcase 'd':\r\n\t\t\t\t\td = dateChunks[index];\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'm':\r\n\t\t\t\t\tm = dateChunks[index];\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'y':\r\n\t\t\t\t\ty = dateChunks[index];\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tlet result = y + '-' + m + '-' + d;\r\n\r\n\t\tif (!result.match(/\\d\\d\\d\\d-\\d\\d-\\d\\d/)) {\r\n\t\t\tconsole.info('Неверный формат даты, будет возращена текущая дата, ' + result);\r\n\r\n\t\t\tresult = this.ms2Date((new Date()).getTime(), false).substring(0, 10);\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n}\r\n\r\nexport default UtilsDate;","<script setup lang=\"ts\">\r\nimport { computed } from 'vue';\r\nimport type { Props } from './button';\r\n\r\nconst props = withDefaults(defineProps<Props>(), {\r\n\tcolor: 'blue',\r\n\tstyling: '',\r\n\tsize: 's',\r\n});\r\n\r\nconst tagName = computed(() => props.href ? 'a' : 'button');\r\n\r\nconst type = computed(() => props.isSubmit ? 'submit' : undefined);\r\n</script>\r\n\r\n<template>\r\n\t<component\r\n\t\t:is=\"tagName\"\r\n\t\t:class=\"{\r\n\t\t\t['top-active']: isActive,\r\n\t\t\t['top-disabled']: disabled,\r\n\t\t\t['top-forms-focusable']: !disabled,\r\n\t\t\t['top-button']: true,\r\n\t\t\t['top-button-progress']: isProgress,\r\n\t\t\t[`top-size_${size}`]: !!size,\r\n\t\t\t[`top-color_${color}`]: true,\r\n\t\t\t[`top-style_${styling}`]: !!styling,\r\n\t\t}\"\r\n\t\t:name=\"name\"\r\n\t\t:title=\"title\"\r\n\t\t:href=\"href\"\r\n\t\t:type=\"type\"\r\n\t\t:data-top-icon=\"icon || undefined\"\r\n\t\t:data-top-icon2=\"icon2 || undefined\"\r\n\t\t:disabled=\"disabled || undefined\"\r\n\t\t:inProgress=\"isProgress\"\r\n\t>\r\n\t\t<!-- @slot Текст или HTML в кнопке -->\r\n\t\t<slot>\r\n\t\t\t{{ !icon ? 'Button' : '' }}\r\n\t\t</slot>\r\n\t</component>\r\n</template>\r\n\r\n<style module>\r\n@import \"./style/button.css\";\r\n@import \"./style/style-outline.css\";\r\n@import \"./style/style-soft.css\";\r\n@import \"./style/style-transparent.css\";\r\n\r\n.top-button {\r\n\t--top-button-color: var(--color-white);\r\n\t--top-button-background-color: transparent;\r\n\t--top-button-background-color-hover: var(--top-button-background-color);\r\n\t--top-button-background-color-active: var(--top-button-background-color-hover);\r\n\t--top-button-background-color-selected: var(--top-button-background-color-hover);\r\n\t--top-button-box-shadow: none;\r\n\t--top-button-box-shadow-hover: var(--top-shadow-darken-2);\r\n\t--top-button-box-shadow-active: var(--top-shadow-darken-3);\r\n\t--top-button-box-shadow-selected: var(--top-shadow-darken-3);\r\n\t--top-forms-border-width: 0px;\r\n\t--top-icon-width: calc(var(--top-icon-size) + var(--top-forms-padding));\r\n\t--top-icon2-width: calc(var(--top-icon2-size) + var(--top-forms-padding));\r\n}\r\n\r\n.top-button.top-size_l {\r\n\t--top-forms-padding: var(--top-forms-padding_l);\r\n\t--top-forms-base-height: var(--top-forms-base-height_l);\r\n}\r\n\r\n.top-button.top-size_xl {\r\n\t--top-forms-padding: var(--top-forms-padding_xl);\r\n\t--top-forms-base-height: var(--top-forms-base-height_xl);\r\n}\r\n</style>","<script setup lang=\"ts\">\r\nimport { computed } from 'vue';\r\nimport type { Props, Emits } from './checkbox';\r\nimport ControlLabel from '../controlLabel/controlLabel.vue';\r\n\r\nconst props = defineProps<Props>();\r\nconst emit = defineEmits<Emits>();\r\n\r\nconst localValue = computed({\r\n\tget() {\r\n\t\treturn props.modelValue;\r\n\t},\r\n\tset(value) {\r\n\t\temit('update:modelValue', value);\r\n\t},\r\n});\r\n\r\n</script>\r\n\r\n<template>\r\n\t<label\r\n\t\t:class=\"{\r\n\t\t\t['top-forms-optionWrapper']: true,\r\n\t\t\t['top-checkbox']: true,\r\n\t\t\t['top-checkbox_' + name]: name !== '',\r\n\t\t\t['top-disabled']: disabled,\r\n\t\t\t['top-error']: isError && !disabled,\r\n\t\t}\"\r\n\t>\r\n\t\t<input\r\n\t\t\ttype=\"checkbox\"\r\n\t\t\t:class=\"{\r\n\t\t\t\t['top-forms-focusable']: !disabled,\r\n\t\t\t\t['top-forms-option']: true,\r\n\t\t\t\t['top-checkbox_input']: true,\r\n\t\t\t\t['top-error']: isError && !disabled,\r\n\t\t\t}\"\r\n\t\t\t:name=\"name\"\r\n\t\t\tv-model=\"localValue\"\r\n\t\t\t:value=\"value\"\r\n\t\t\t:indeterminate=\"indeterminate\"\r\n\t\t\t:disabled=\"disabled\"\r\n\t\t>\r\n\r\n\t\t<ControlLabel\r\n\t\t\tv-if=\"$slots.default\"\r\n\t\t\t:description=\"description\"\r\n\t\t\t:disabled=\"disabled\"\r\n\t\t>\r\n\t\t\t<!-- @slot Слот с заголовком -->\r\n\t\t\t<slot></slot>\r\n\t\t</ControlLabel>\r\n\t</label>\r\n</template>\r\n\r\n<style module>\r\n.top-checkbox {\r\n\tcursor: pointer;\r\n\tdisplay: inline-flex;\r\n}\r\n\r\n.top-checkbox_input {\r\n\tcursor: inherit;\r\n\tborder-radius: 4px;\r\n\tbackground: var(--content-background-color);\r\n\tborder: 1px solid var(--top-forms-border-color);\r\n\twidth: calc(var(--top-forms-option-height) - 3px * 2);\r\n\theight: calc(var(--top-forms-option-height) - 3px * 2);\r\n}\r\n\r\n.top-checkbox_input:before {\r\n\tcontent: ' ';\r\n\tcolor: #FFF;\r\n\tfont-family: 'Topvisor-2';\r\n\tfont-size: 16px;\r\n}\r\n\r\n.top-checkbox_input:hover {\r\n\tborder-color: var(--top-forms-option-color);\r\n\tbackground: var(--color-theme-50)\r\n}\r\n\r\n/* checked / indeterminate */\r\n.top-checkbox_input:checked,\r\n.top-checkbox_input:indeterminate {\r\n\tborder-color: var(--top-forms-option-color);\r\n\tbackground: var(--top-forms-option-color);\r\n}\r\n\r\n.top-checkbox_input:checked:before {\r\n\tcontent: '';\r\n}\r\n\r\n.top-checkbox_input:indeterminate:before {\r\n\tcontent: '';\r\n}\r\n\r\n.top-checkbox_input:checked:hover,\r\n.top-checkbox_input:indeterminate:hover {\r\n\tborder-color: var(--top-forms-option-color-hover);\r\n\tbackground: var(--top-forms-option-color-hover);\r\n}\r\n\r\n/* disabled selected */\r\n.top-checkbox_input:disabled {\r\n\tborder-color: var(--color-line-1-opacity);\r\n\tbackground: var(--color-theme-50);\r\n}\r\n\r\n.top-checkbox_input:checked:disabled,\r\n.top-checkbox_input:indeterminate:disabled {\r\n\tborder-color: transparent;\r\n\tbackground: var(--color-theme-400);\r\n}\r\n\r\n/* isError */\r\n.top-checkbox_input.top-error {\r\n\tborder-color: var(--color-negative);\r\n}\r\n\r\n.top-checkbox_input.top-error:hover {\r\n\tborder-color: var(--color-negative-2);\r\n}\r\n\r\n/* isError selected */\r\n.top-checkbox_input:checked.top-error,\r\n.top-checkbox_input:indeterminate.top-error {\r\n\tbackground: var(--color-negative);\r\n}\r\n\r\n.top-checkbox_input:checked.top-error:hover,\r\n.top-checkbox_input:indeterminate.top-error:hover {\r\n\tbackground: var(--color-negative-2);\r\n}\r\n</style>","<script setup lang=\"ts\">\r\nimport { computed } from 'vue';\r\nimport type { Props, Emits } from './input';\r\n\r\ndefineOptions({\r\n\tinheritAttrs: false,\r\n});\r\n\r\nconst props = withDefaults(defineProps<Props>(), {\r\n\tsize: 's',\r\n\tcaptionType: '',\r\n});\r\n\r\nconst emit = defineEmits<Emits>();\r\n\r\nconst localValue = computed({\r\n\tget() {\r\n\t\treturn props.modelValue;\r\n\t},\r\n\tset(value) {\r\n\t\temit('update:modelValue', value);\r\n\t},\r\n});\r\n\r\nconst placeholder = computed(() => {\r\n\tif (props.addCleaner && !props.title) {\r\n\t\treturn '';\r\n\t}\r\n\tif (props.captionType !== '') {\r\n\t\treturn '';\r\n\t}\r\n\r\n\treturn props.title;\r\n});\r\n\r\nconst clean = () => {\r\n\temit('update:modelValue', '');\r\n};\r\n</script>\r\n\r\n<template>\r\n\t<label\r\n\t\t:class=\"{\r\n\t\t\t['top-input']: true,\r\n\t\t\t['top-size_' + size]: true,\r\n\t\t\t['top-disabled']: disabled,\r\n\t\t\t['top-input-' + modificator]: !!modificator,\r\n\t\t\t['top-input-withCleaner']: addCleaner && localValue && localValue !== '0000-00-00',\r\n\t\t\t['top-formsCaptionWrapper']: captionType !== '',\r\n\t\t\t['top-formsCaptionWrapper-always']: captionType === 'top',\r\n\t\t}\"\r\n\t\t:data-top-icon=\"icon\"\r\n\t\t:data-top-icon2=\"icon2\"\r\n\t>\r\n\t\t<input\r\n\t\t\ttype=\"text\"\r\n\t\t\t:class=\"{\r\n\t\t\t\t['top-input_input']: true,\r\n\t\t\t\t['top-input_input-' + modificator]: !!modificator,\r\n\t\t\t\t['top-forms-focusable']: !disabled,\r\n\t\t\t\t['top-error']: isError,\r\n\t\t\t}\"\r\n\t\t\tautocomplete=\"off_always\"\r\n\t\t\t:name=\"name\"\r\n\t\t\tv-model=\"localValue\"\r\n\t\t\t:title=\"title\"\r\n\t\t\t:placeholder=\"placeholder\"\r\n\t\t\t:disabled=\"disabled\"\r\n\t\t\t:readonly=\"readonly\"\r\n\t\t\t@keydown.esc.stop=\"() => (addCleaner || !!$slots.btn) && clean()\"\r\n\t\t\t:=\"$attrs\"\r\n\t\t>\r\n\r\n\t\t<span\r\n\t\t\tv-if=\"addCleaner && localValue && localValue !== '0000-00-00'\"\r\n\t\t\tclass=\"top-input_cleaner\"\r\n\t\t\tdata-top-icon=\"\"\r\n\t\t\t@click.prevent=\"clean\"\r\n\t\t></span>\r\n\r\n\t\t<span\r\n\t\t\tv-if=\"captionType !== ''\"\r\n\t\t\tclass=\"top-formsCaption\"\r\n\t\t>\r\n\t\t\t{{ title }}\r\n\t\t</span>\r\n\r\n\t\t<!-- @slot Слот для вставки произвольного кода в label -->\r\n\t\t<slot></slot>\r\n\t</label>\r\n</template>\r\n\r\n<style module>\r\n.top-input {\r\n\t--top-forms_clear-width: 0px;\r\n\r\n\twidth: 180px;\r\n\tposition: relative;\r\n\tdisplay: inline-flex;\r\n\talign-items: center;\r\n\tgap: var(--top-gap-1);\r\n}\r\n\r\n.top-input_input {\r\n\tbackground: var(--top-forms-background-color);\r\n\theight: var(--top-forms-base-height);\r\n\tpadding: 0;\r\n\tpadding-right: calc(max(var(--top-forms-padding), calc(var(--top-icon2-width) + var(--top-forms_clear-width))));\r\n\tpadding-left: calc(max(var(--top-forms-padding), var(--top-icon-width)));\r\n}\r\n\r\n.top-input_input:hover {\r\n\tbackground: var(--top-forms-background-color-hover);\r\n}\r\n\r\n.top-input_input:focus {\r\n\toutline-color: var(--color-theme-75);\r\n\toutline-offset: 0;\r\n}\r\n\r\n/* значки */\r\n.top-input[data-top-icon]:before,\r\n.top-input[data-top-icon2]:after {\r\n\t--top-icon-color: var(--color-text-secondary);\r\n\t--top-icon2-color: var(--color-text-secondary);\r\n\r\n\tposition: absolute;\r\n\tz-index: 3;\r\n}\r\n\r\n.top-input[data-top-icon]:before {\r\n\tleft: 0;\r\n}\r\n\r\n.top-input[data-top-icon2]:after {\r\n\tright: 0;\r\n}\r\n\r\n/* cleaner */\r\n.top-input-withCleaner {\r\n\t--top-forms_clear-width: 24px;\r\n}\r\n\r\n.top-input_cleaner {\r\n\t--top-icon-size: 20px;\r\n\t--top-icon-width: 20px;\r\n\t--top-icon-color: var(--color-text-3);\r\n\r\n\tcursor: pointer;\r\n\tborder-radius: 50%;\r\n\twidth: 24px;\r\n\theight: 24px;\r\n\tposition: absolute;\r\n\tright: calc(var(--top-forms-border-width) + max(var(--top-icon2-width), var(--top-forms-padding) / 2));\r\n\tz-index: 1;\r\n\tdisplay: flex;\r\n\talign-items: center;\r\n\tjustify-content: center;\r\n}\r\n\r\n.top-input_cleaner:hover {\r\n\t--top-icon-color: var(--color-text-2);\r\n}\r\n\r\n/* TODO: перенести в inputsRange */\r\n.top-input_input {\r\n\twidth: 50%;\r\n\tflex-grow: 1;\r\n}\r\n</style>","<script lang=\"ts\">\r\nconst useNativeDatepicker = !!document.documentElement.ontouchstart && !!document.createElement('input').showPicker;\r\n\r\nlet onInputLazy = (_e: any) => { };\r\n</script>\r\n\r\n<script setup lang=\"ts\">\r\nimport { ref, computed, onUnmounted } from 'vue';\r\nimport UtilsDate from '@/core/utils/date';\r\nimport type { Props, Emits } from './inputDate';\r\nimport { Input } from '@/components/forms/forms';\r\nimport Core from '@/core/core/core';\r\n\r\nconst props = withDefaults(defineProps<Props>(), {\r\n\ticon2: '',\r\n});\r\n\r\nconst emit = defineEmits<Emits>();\r\n\r\nconst el = ref();\r\n\r\nconst localValue = computed({\r\n\tget() {\r\n\t\treturn UtilsDate.dateFormat(props.modelValue, 2, '0000-00-00');\r\n\t},\r\n\r\n\tset(value) {\r\n\t\tvalue = UtilsDate.dateUnformat(value, '0000-00-00');\r\n\r\n\t\temit('update:modelValue', value);\r\n\t},\r\n});\r\n\r\nlet oninput = (e: any) => {\r\n\tonInputLazy(e);\r\n};\r\n\r\nlet onchange = (e: any) => {\r\n\tconst dateUnformat = UtilsDate.dateUnformat(e.target.value);\r\n\tconst dateFormat = UtilsDate.dateFormat(dateUnformat);\r\n\r\n\tif (!dateFormat || dateFormat === Core.L.Not_date || e.target.value !== dateFormat) {\r\n\t\te.target.value = localValue.value;\r\n\r\n\t\treturn;\r\n\t}\r\n\r\n\tlocalValue.value = e.target.value;\r\n};\r\n\r\n/**\r\n * Инициализпация функций выбора дат\r\n *\r\n * Для не нативного datepicker\r\n */\r\nasync function init(e: any) {\r\n\tconst datepicker = await import('./datepicker');\r\n\r\n\t// формат ввода\r\n\tonInputLazy = datepicker.oninput;\r\n\r\n\t// datepicker\r\n\tconst $el = datepicker.connectDatepicker(e.target, {\r\n\t\tonSelect: () => onchange(e),\r\n\t});\r\n\r\n\tif ($el) {\r\n\t\t$el.datepicker('show');\r\n\r\n\t\tonUnmounted(() => $el.datepicker('destroy'));\r\n\t}\r\n}\r\n</script>\r\n\r\n<template>\r\n\t<Input\r\n\t\tv-if=\"useNativeDatepicker\"\r\n\t\t:=\"$props\"\r\n\t\t:modelValue=\"localValue\"\r\n\t\treadonly\r\n\t\t@click=\"el.showPicker()\"\r\n\t>\r\n\t\t<input\r\n\t\t\tref=\"el\"\r\n\t\t\ttype=\"date\"\r\n\t\t\tclass=\"top-input_input-date\"\r\n\t\t\t:modelValue=\"modelValue\"\r\n\t\t\t@change=\"(e: any) => localValue = e.target.value\"\r\n\t\t\ttabindex=\"-1\"\r\n\t\t/>\r\n\t</Input>\r\n\r\n\t<Input\r\n\t\tv-else\r\n\t\t:=\"$props\"\r\n\t\t:modelValue=\"localValue\"\r\n\t\t@update:modelValue=\"(newValue) => (newValue === '') ? localValue = '' : ''\"\r\n\t\t@input.date=\"oninput\"\r\n\t\t@focus.once.date=\"init\"\r\n\t\t@change.date=\"onchange\"\r\n\t\tmodificator=\"datepicker\"\r\n\t/>\r\n</template>\r\n\r\n<style module>\r\n.top-input-datepicker {\r\n\twidth: calc(105px + var(--top-icon-width) + var(--top-icon2-width));\r\n}\r\n\r\n.top-input_input-date {\r\n\topacity: 0;\r\n\tposition: absolute;\r\n\ttop: 0;\r\n\tright: 0;\r\n\tbottom: 0;\r\n\tleft: 0;\r\n\tz-index: -1;\r\n}\r\n\r\n.top-input_input-date::-webkit-inner-spin-button {\r\n\tdisplay: none;\r\n}\r\n\r\n.top-input_input-date::-webkit-calendar-picker-indicator {\r\n\topacity: 0;\r\n}\r\n</style>","<script setup lang=\"ts\">\r\nimport { computed } from 'vue';\r\nimport type { Props, Emits } from './radio';\r\nimport ControlLabel from '../controlLabel/controlLabel.vue';\r\n\r\nconst props = defineProps<Props>();\r\nconst emit = defineEmits<Emits>();\r\n\r\nconst localValue = computed({\r\n\tget() {\r\n\t\treturn props.modelValue;\r\n\t},\r\n\tset(value) {\r\n\t\temit('update:modelValue', value);\r\n\t},\r\n});\r\n\r\n</script>\r\n\r\n<template>\r\n\t<label\r\n\t\t:class=\"{\r\n\t\t\t['top-forms-optionWrapper']: true,\r\n\t\t\t['top-radio']: true,\r\n\t\t\t['top-radio_' + name]: name !== '',\r\n\t\t\t['top-disabled']: disabled,\r\n\t\t\t['top-error']: isError && !disabled,\r\n\t\t}\"\r\n\t>\r\n\t\t<input\r\n\t\t\ttype=\"radio\"\r\n\t\t\t:class=\"{\r\n\t\t\t\t['top-forms-focusable']: !disabled,\r\n\t\t\t\t['top-forms-option']: true,\r\n\t\t\t\t['top-radio_input']: true,\r\n\t\t\t\t['top-error']: isError && !disabled,\r\n\t\t\t}\"\r\n\t\t\tv-model=\"localValue\"\r\n\t\t\t:name=\"name\"\r\n\t\t\t:value=\"value\"\r\n\t\t\t:disabled=\"disabled\"\r\n\t\t>\r\n\r\n\t\t<ControlLabel\r\n\t\t\tv-if=\"$slots.default\"\r\n\t\t\t:description=\"description\"\r\n\t\t\t:disabled=\"disabled\"\r\n\t\t>\r\n\t\t\t<!-- @slot Слот с заголовком -->\r\n\t\t\t<slot></slot>\r\n\t\t</ControlLabel>\r\n\t</label>\r\n</template>\r\n\r\n<style module>\r\n:root {\r\n\t--top-radio-background-color: var(--content-background-color);\r\n\t--top-radio-background-color-hover: var(--top-radio-background-color);\r\n\t--top-radio-background-color-active: var(--top-radio-background-color);\r\n}\r\n\r\n.top-radio {\r\n\tcursor: pointer;\r\n}\r\n\r\n.top-radio_input {\r\n\tborder-radius: 50%;\r\n\tbackground: var(--content-background-color);\r\n\tborder: 1px solid var(--top-forms-border-color);\r\n\twidth: calc(var(--top-forms-option-height) - 3px * 2);\r\n\theight: calc(var(--top-forms-option-height) - 3px * 2);\r\n}\r\n\r\n.top-radio_input:hover {\r\n\tborder-color: var(--top-forms-option-color);\r\n\tbackground: var(--color-theme-50)\r\n}\r\n\r\n.top-radio_input:checked {\r\n\tborder-color: var(--top-forms-option-color);\r\n\tborder-width: 5px;\r\n}\r\n\r\n.top-radio_input:checked:hover {\r\n\tborder-color: var(--top-forms-option-color-hover);\r\n}\r\n\r\n/* disabled */\r\n.top-radio_input:disabled {\r\n\tborder-color: var(--color-line-1-opacity);\r\n\tbackground: var(--color-theme-50);\r\n}\r\n\r\n/* disabled selected */\r\n.top-radio_input:checked:disabled {\r\n\tborder-color: var(--color-theme-400);\r\n}\r\n\r\n/* isError */\r\n.top-radio_input.top-error {\r\n\tborder-color: var(--color-negative);\r\n}\r\n\r\n.top-radio_input.top-error:hover {\r\n\tborder-color: var(--color-negative-2);\r\n}\r\n</style>","<script setup lang=\"ts\">\r\nimport { computed } from 'vue';\r\nimport type { Props, Emits } from './switcher';\r\nimport ControlLabel from '../controlLabel/controlLabel.vue';\r\n\r\nconst props = defineProps<Props>();\r\nconst emit = defineEmits<Emits>();\r\n\r\nconst localValue = computed({\r\n\tget() {\r\n\t\treturn props.modelValue;\r\n\t},\r\n\tset(value) {\r\n\t\temit('update:modelValue', value);\r\n\t},\r\n});\r\n</script>\r\n\r\n<template>\r\n\t<label\r\n\t\t:class=\"{\r\n\t\t['top-forms-optionWrapper']: true,\r\n\t\t['top-checkboxSwitcher']: true,\r\n\t\t['top-disabled']: disabled,\r\n\t\t['top-error']: isError && !disabled,\r\n\t}\"\r\n\t>\r\n\t\t<input\r\n\t\t\ttype=\"checkbox\"\r\n\t\t\t:class=\"{\r\n\t\t\t\t['top-forms-focusable']: !disabled,\r\n\t\t\t\t['top-forms-option']: true,\r\n\t\t\t\t['top-checkboxSwitcher_input']: true,\r\n\t\t\t\t['top-error']: isError && !disabled,\r\n\t\t\t}\"\r\n\t\t\tv-model=\"localValue\"\r\n\t\t\t:name=\"name\"\r\n\t\t\t:value=\"value\"\r\n\t\t\t:disabled=\"disabled\"\r\n\t\t>\r\n\r\n\t\t<ControlLabel\r\n\t\t\tv-if=\"$slots.default\"\r\n\t\t\t:description=\"description\"\r\n\t\t\t:disabled=\"disabled\"\r\n\t\t>\r\n\t\t\t<!-- @slot Слот с заголовком -->\r\n\t\t\t<slot></slot>\r\n\t\t</ControlLabel>\r\n\t</label>\r\n</template>\r\n\r\n<style module>\r\n.top-checkboxSwitcher {\r\n\tcursor: pointer;\r\n\tdisplay: inline-flex;\r\n\tgap: 4px;\r\n}\r\n\r\n.top-checkboxSwitcher_input {\r\n\tborder-radius: 9px;\r\n\tborder: none;\r\n\tbackground: var(--color-theme-100);\r\n\twidth: 36px;\r\n\theight: 18px;\r\n\tposition: relative;\r\n}\r\n\r\n.top-checkboxSwitcher_input:before {\r\n\tcontent: '';\r\n\tborder-radius: 50%;\r\n\tbackground: var(--color-white);\r\n\twidth: 12px;\r\n\theight: 12px;\r\n\tmargin: 3px;\r\n\tposition: absolute;\r\n\ttop: 0;\r\n\tleft: 0;\r\n\r\n\ttransition: left 0.1s;\r\n}\r\n\r\n.top-checkboxSwitcher_input:hover {\r\n\tbackground: var(--color-theme-150);\r\n}\r\n\r\n/* checked */\r\n.top-checkboxSwitcher_input:checked {\r\n\tbackground: var(--top-forms-option-color);\r\n}\r\n\r\n.top-checkboxSwitcher_input:checked:hover {\r\n\tbackground: var(--top-forms-option-color-hover);\r\n}\r\n\r\n.top-checkboxSwitcher_input:checked:before {\r\n\tleft: 50%;\r\n}\r\n\r\n/* disabled */\r\n.top-checkboxSwitcher_input:disabled {\r\n\tbackground: var(--color-theme-400);\r\n}\r\n\r\n/* isError */\r\n.top-checkboxSwitcher_input.top-error {\r\n\tbackground: var(--color-negative);\r\n}\r\n\r\n.top-checkboxSwitcher_input.top-error:hover {\r\n\tbackground: var(--color-negative-2);\r\n}\r\n</style>","<script setup lang=\"ts\">\r\nimport { computed } from 'vue';\r\nimport Hint from '@/components/forms/hint/hint.vue';\r\nimport type { Props, Emits } from './textarea';\r\n\r\ndefineOptions({\r\n\tinheritAttrs: false,\r\n});\r\n\r\nconst props = withDefaults(defineProps<Props>(), {\r\n\trows: 5,\r\n\tminHeight: 120,\r\n});\r\n\r\nconst emit = defineEmits<Emits>();\r\n\r\nconst value = computed({\r\n\tget () {\r\n\t\treturn props.modelValue;\r\n\t},\r\n\tset (value) {\r\n\t\temit('update:modelValue', value);\r\n\t},\r\n});\r\n</script>\r\n\r\n<template>\r\n\t<label\r\n\t\t:class=\"{\r\n\t\t\t['top-textarea']: true,\r\n\t\t\t['top-textarea-' + name]: name,\r\n\t\t\t['top-disabled']: disabled,\r\n\t\t}\"\r\n\t>\r\n\t\t<textarea\r\n\t\t\ttype=\"text\"\r\n\t\t\t:class=\"{\r\n\t\t\t\t['top-forms-focusable']: !disabled,\r\n\t\t\t\t['top-textarea_textarea']: true,\r\n\t\t\t\t['top-textarea_textarea-expandable']: expandable,\r\n\t\t\t\t['top-error']: isError,\r\n\t\t\t}\"\r\n\t\t\tautocomplete=\"off_always\"\r\n\t\t\t:name=\"name\"\r\n\t\t\t:placeholder=\"placeholder\"\r\n\t\t\t:disabled=\"disabled\"\r\n\t\t\t:readonly=\"readonly\"\r\n\t\t\t:rows=\"!expandable ? rows : undefined\"\r\n\t\t\t:=\"$attrs\"\r\n\t\t\tv-model=\"value\"\r\n\t\t/>\r\n\r\n\t\t<div\r\n\t\t\tv-if=\"expandable\"\r\n\t\t\tclass=\"top-textarea_pseudoContent\"\r\n\t\t>\r\n\t\t\t{{ value + ' ' }}\r\n\t\t</div>\r\n\r\n\t\t<Hint\r\n\t\t\tv-if=\"hint\"\r\n\t\t\tclass=\"top-textarea_hint\"\r\n\t\t\t:hint=\"hint\"\r\n\t\t\tv-top-tooltip\r\n\t\t/>\r\n\t</label>\r\n</template>\r\n\r\n<style module>\r\n.top-textarea {\r\n\twidth: 180px;\r\n\tdisplay: inline-flex;\r\n\talign-items: center;\r\n\tposition: relative;\r\n}\r\n\r\n.top-textarea_textarea {\r\n\tbackground: var(--top-forms-background-color);\r\n\twidth: 100%;\r\n\tpadding: var(--top-forms-padding);\r\n\tresize: none;\r\n}\r\n\r\n.top-textarea_textarea:hover {\r\n\tbackground: var(--top-forms-background-color-hover);\r\n}\r\n\r\n.top-textarea_textarea:focus {\r\n\toutline-color: var(--color-theme-75);\r\n\toutline-offset: 0px;\r\n}\r\n\r\n.top-textarea_textarea.top-textarea_textarea-expandable {\r\n\twidth: 100%;\r\n\theight: 100%;\r\n\toverflow: hidden;\r\n\tposition: absolute;\r\n\ttop: 0;\r\n\tleft: 0;\r\n}\r\n\r\n.top-textarea_pseudoContent {\r\n\tbox-sizing: border-box;\r\n\tmin-height: v-bind(minHeight + 'px');\r\n\tpadding: var(--top-forms-padding);\r\n\tfont-size: 14px;\r\n\twhite-space: pre-wrap;\r\n\toverflow-wrap: anywhere;\r\n\tpointer-events: none;\r\n\topacity: 0;\r\n\tz-index: -1;\r\n}\r\n\r\n.top-textarea_hint {\r\n\tposition: absolute;\r\n\ttop: 2px;\r\n\tright: 2px;\r\n}\r\n</style>","<script setup lang=\"ts\">\r\nimport { toRef, computed, watch } from 'vue';\r\nimport type { Props, Emits } from './select';\r\n\r\nconst props = withDefaults(defineProps<Props>(), {\r\n\tsize: 's',\r\n});\r\n\r\nconst emit = defineEmits<Emits>();\r\n\r\nconst localValue = computed({\r\n\tget() {\r\n\t\treturn props.modelValue;\r\n\t},\r\n\r\n\tset(value) {\r\n\t\temit('update:modelValue', value);\r\n\t},\r\n});\r\n\r\n/**\r\n * Иконка выбранного option\r\n */\r\nconst optionIcon = computed(() => {\r\n\treturn optionByValue.value.get(localValue.value)?.icon;\r\n});\r\n\r\n/**\r\n * Словарь с доступными options\r\n */\r\nconst optionByValue = computed(() => {\r\n\tconst res = new Map();\r\n\r\n\tprops.options.forEach((option) => {\r\n\t\tif (option.disabled) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (option.children) {\r\n\t\t\toption.children.forEach(subOption => {\r\n\t\t\t\tif (subOption.disabled) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tres.set(subOption.value, subOption);\r\n\t\t\t});\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tres.set(option.value, option);\r\n\t});\r\n\r\n\treturn res;\r\n});\r\n\r\n/**\r\n * Логика для обртаной своместимости:\r\n * - null - заменить на первое доступное значение\r\n * - undefined - заменить на первое доступное значение\r\n */\r\nwatch([\r\n\ttoRef(props.modelValue),\r\n\toptionByValue,\r\n], () => {\r\n\tif ((localValue.value === null || localValue.value === undefined) && optionByValue.value.size) {\r\n\t\tconsole.warn('Пожалуйста, не передавайте в компонент Select значения null и undefined');\r\n\r\n\t\tlocalValue.value = optionByValue.value.keys().next().value;\r\n\t}\r\n}, { immediate: true });\r\n\r\n/**\r\n * Выбрать следующее доступное значение\r\n */\r\nconst selectNextValue = () => {\r\n\tconst listEnabledValues = [...optionByValue.value.keys()];\r\n\tconst currentIndex = listEnabledValues.indexOf(localValue.value);\r\n\tconst nextIndex = (currentIndex + 1) % listEnabledValues.length;\r\n\r\n\tlocalValue.value = listEnabledValues[nextIndex];\r\n};\r\n</script>\r\n\r\n<template>\r\n\t<label\r\n\t\t:class=\"{\r\n\t\t\t['top-select']:true,\r\n\t\t\t['top-select-' + name]:name,\r\n\t\t\t['top-size_' + size]: true,\r\n\t\t\t['top-formsCaptionWrapper']: !!title,\r\n\t\t\t['top-select-error']: isError,\r\n\t\t\t['top-disabled']: disabled,\r\n\t\t}\"\r\n\t\t:data-value=\"localValue\"\r\n\t\t:data-top-icon=\"icon\"\r\n\t\t:data-top-icon2=\"optionIcon\"\r\n\t>\r\n\t\t<select\r\n\t\t\t:class=\"{\r\n\t\t\t\t['top-forms-focusable']: !disabled,\r\n\t\t\t\t['top-select_select']: true,\r\n\t\t\t\t['top-select_arrow']: true,\r\n\t\t\t\t['top-error']: isError,\r\n\t\t\t}\"\r\n\t\t\t:name=\"name\"\r\n\t\t\t:disabled=\"disabled\"\r\n\t\t\tv-model=\"localValue\"\r\n\t\t>\r\n\t\t\t<template v-for=\"[_index, option] of options.entries()\">\r\n\t\t\t\t<optgroup\r\n\t\t\t\t\tv-if=\"option.children\"\r\n\t\t\t\t\t:key=\"'group_' + option.value\"\r\n\t\t\t\t\t:label=\"option.title\"\r\n\t\t\t\t\t:disabled=\"option.disabled\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<option\r\n\t\t\t\t\t\tv-for=\"[_index, subOption] of option.children.entries()\"\r\n\t\t\t\t\t\t:key=\"option.value\"\r\n\t\t\t\t\t\t:value=\"subOption.value\"\r\n\t\t\t\t\t\t:selected=\"subOption.value === localValue\"\r\n\t\t\t\t\t\t:disabled=\"subOption.disabled\"\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t{{ subOption.title }}\r\n\t\t\t\t\t</option>\r\n\t\t\t\t</optgroup>\r\n\r\n\t\t\t\t<option\r\n\t\t\t\t\tv-else\r\n\t\t\t\t\t:key=\"option.value\"\r\n\t\t\t\t\t:value=\"option.value\"\r\n\t\t\t\t\t:selected=\"option.value === localValue\"\r\n\t\t\t\t\t:disabled=\"option.disabled\"\r\n\t\t\t\t>\r\n\t\t\t\t\t{{ option.title }}\r\n\t\t\t\t</option>\r\n\t\t\t</template>\r\n\t\t</select>\r\n\r\n\t\t<span\r\n\t\t\tv-if=\"addChanger && optionByValue.size && !disabled\"\r\n\t\t\tclass=\"top-changer\"\r\n\t\t\t@click=\"selectNextValue\"\r\n\t\t></span>\r\n\r\n\t\t<span\r\n\t\t\tv-if=\"title\"\r\n\t\t\tclass=\"top-formsCaption\"\r\n\t\t>\r\n\t\t\t{{ title }}\r\n\t\t</span>\r\n\t</label>\r\n</template>\r\n\r\n<style module>\r\n.top-select {\r\n\t--top-icon-color: var(--color-text-3);\r\n\t--top-icon2-color: var(--color-text-2);\r\n\r\n\talign-items: center;\r\n\twidth: 180px;\r\n\tmax-width: 100%;\r\n\tdisplay: inline-flex;\r\n}\r\n\r\n.top-select-error {\r\n\t--top-icon-color: var(--color-negative);\r\n\t--top-icon2-color: var(--color-negative);\r\n}\r\n\r\n.top-select_select {\r\n\tbackground-color: var(--top-forms-background-color);\r\n\r\n\t/* для select вместо padding нужно использовать text-indent */\r\n\tpadding-left: var(--top-forms-padding);\r\n\r\n\t/* если есть значки, добавить отступ на их ширину с учетом уже добавленного padding */\r\n\ttext-indent: calc(clamp(0px, calc(var(--top-icon-both-width) - var(--top-forms-padding)), calc(var(--top-icon-both-width) - var(--top-forms-padding))));\r\n\r\n\twidth: 100%;\r\n\theight: var(--top-forms-base-height);\r\n\ttext-overflow: ellipsis;\r\n\twhite-space: nowrap;\r\n\tflex-grow: 1;\r\n\toverflow: hidden;\r\n}\r\n\r\n.top-select_select:focus {\r\n\toutline-color: var(--color-theme-75);\r\n\toutline-offset: 0;\r\n}\r\n\r\n.top-select_select:disabled {\r\n\tbackground: var(--color-theme-50);\r\n}\r\n\r\n.top-select optgroup {\r\n\tcolor: var(--color-text-1);\r\n\tfont-style: normal;\r\n}\r\n\r\n.top-select option {\r\n\tbackground: var(--content-background-color);\r\n\tcolor: var(--color-text-1);\r\n}\r\n\r\n/* хром не мерняет цвет для optgroup option, стили оставлены по умолчанию */\r\n/*\r\n.top-select optgroup:disabled,\r\n.top-select optgroup option,\r\n.top-select option:disabled {\r\n\r\n}\r\n*/\r\n\r\n/* https://bugzilla.mozilla.org/show_bug.cgi?id=1743066 */\r\n@-moz-document url-prefix() {\r\n\t.top-select_select {\r\n\t\ttext-indent: calc(clamp(0px, calc(var(--top-icon-both-width) - var(--top-forms-padding)), calc(var(--top-icon-both-width) - var(--top-forms-padding))) / 2);\r\n\t}\r\n}\r\n\r\n@media only screen and (min-width: 900px) {\r\n\t/* changer */\r\n\t.top-changer {\r\n\t\tcursor: pointer;\r\n\t\tborder-radius: 100%;\r\n\t\twidth: 0;\r\n\t\ttransform: translateX(-44px);\r\n\t\tcolor: var(--color-text-secondary-2);\r\n\t\tfont-size: 16px;\r\n\t\tline-height: 1;\r\n\t\tdisplay: none;\r\n\t\tz-index: 2;\r\n\t\torder: 4;\r\n\t}\r\n\r\n\t.top-changer:hover {\r\n\t\tcolor: var(--color-primary);\r\n\t}\r\n\r\n\t.top-changer:after {\r\n\t\tcontent: '';\r\n\t\tbackground-color: var(--top-forms-background-color);\r\n\t\tfont-family: 'Topvisor-2';\r\n\t}\r\n\r\n\t*:hover > .top-changer {\r\n\t\tdisplay: block;\r\n\t}\r\n}\r\n</style>"],"names":["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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"}
|