@topvisor/ui 1.0.13 → 1.0.14
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-DX0qKxI_.amd.js → datepicker-DW_EVh8-.amd.js} +2 -2
- package/.chunks/datepicker-DW_EVh8-.amd.js.map +1 -0
- package/.chunks/{datepicker-DOmAO7Nq.es.js → datepicker-Ri3BN3-Y.es.js} +2 -2
- package/.chunks/datepicker-Ri3BN3-Y.es.js.map +1 -0
- package/.chunks/{forms-FHMqYVvM.es.js → forms-CHyoeELv.es.js} +126 -126
- package/.chunks/forms-CHyoeELv.es.js.map +1 -0
- package/.chunks/{forms-Dg1N8Jv3.amd.js → forms-CORLOoYZ.amd.js} +3 -3
- package/.chunks/forms-CORLOoYZ.amd.js.map +1 -0
- package/.chunks/{listItem.vue_vue_type_script_setup_true_lang-tzOQcPs_.amd.js → listItem.vue_vue_type_script_setup_true_lang-BZar2z_p.amd.js} +2 -2
- package/.chunks/listItem.vue_vue_type_script_setup_true_lang-BZar2z_p.amd.js.map +1 -0
- package/.chunks/{listItem.vue_vue_type_script_setup_true_lang-CuWOLCGe.es.js → listItem.vue_vue_type_script_setup_true_lang-Dvz76-gx.es.js} +2 -2
- package/.chunks/listItem.vue_vue_type_script_setup_true_lang-Dvz76-gx.es.js.map +1 -0
- package/.chunks/{menu.vue_vue_type_style_index_0_lang-C_ND48ou.amd.js → menu.vue_vue_type_style_index_0_lang-Chd1ygyG.amd.js} +2 -2
- package/.chunks/menu.vue_vue_type_style_index_0_lang-Chd1ygyG.amd.js.map +1 -0
- package/.chunks/{menu.vue_vue_type_style_index_0_lang-BGdS1bYl.es.js → menu.vue_vue_type_style_index_0_lang-Rex3a5_T.es.js} +2 -2
- package/.chunks/menu.vue_vue_type_style_index_0_lang-Rex3a5_T.es.js.map +1 -0
- package/.chunks/notice-Bh-LvHpR.es.js +175 -0
- package/.chunks/notice-Bh-LvHpR.es.js.map +1 -0
- package/.chunks/notice-BnvlWLlj.amd.js +4 -0
- package/.chunks/notice-BnvlWLlj.amd.js.map +1 -0
- package/.chunks/{popup-CBNL-Ixi.es.js → popup-0nFCdjiM.es.js} +4 -4
- package/.chunks/popup-0nFCdjiM.es.js.map +1 -0
- package/.chunks/{popup-CSNWKE4F.amd.js → popup-B285SUGc.amd.js} +2 -2
- package/.chunks/popup-B285SUGc.amd.js.map +1 -0
- package/.chunks/store-CX_6ZXhO.es.js.map +1 -1
- package/.chunks/store-esTid5oI.amd.js.map +1 -1
- package/.chunks/{utils-B6497Bik.es.js → utils-B3neE-vU.es.js} +52 -44
- package/.chunks/utils-B3neE-vU.es.js.map +1 -0
- package/.chunks/{utils-DINqzHO_.amd.js → utils-COOeS9rk.amd.js} +2 -2
- package/.chunks/utils-COOeS9rk.amd.js.map +1 -0
- package/.chunks/utils-k0wIxxij.amd.js +2 -0
- package/.chunks/utils-k0wIxxij.amd.js.map +1 -0
- package/.chunks/{utils-BgirCapu.es.js → utils-tB3V9IWe.es.js} +59 -54
- package/.chunks/utils-tB3V9IWe.es.js.map +1 -0
- package/README.md +82 -87
- package/assets/core.css +1 -1
- package/assets/forms.css +1 -1
- package/assets/layout.css +1 -0
- package/charts/charts.amd.js +1 -1
- package/charts/charts.amd.js.map +1 -1
- package/charts/charts.js +47 -42
- package/charts/charts.js.map +1 -1
- package/components/charts/miniChart/miniChart.d.ts +5 -0
- package/components/core/notice/item/item.vue.d.ts +3 -1
- package/components/core/notice/item/types.d.ts +4 -0
- package/components/core/notice/utils.d.ts +1 -0
- package/components/dialog/dialog/composables/{asyncDialogWorker.d.ts → asyncDialogHandle.d.ts} +1 -1
- package/components/dialog/dialog/composables/utils.d.ts +2 -2
- package/components/dialog/dialog/dialogs/dialogs.vue.d.ts +1 -1
- package/components/dialog/lib/types.d.ts +6 -1
- package/components/dialog/lib/worker.d.ts +5 -0
- package/components/layout/islandRows/islandRows.vue.d.ts +16 -0
- package/components/layout/islandRows/islandRowsRow/islandRowsRow.vue.d.ts +17 -0
- package/components/layout/islandRows/islandRowsRow/types.d.ts +2 -0
- package/components/layout/islandRows/types.d.ts +10 -0
- package/components/layout/layout.d.ts +7 -0
- package/components/layout/rows/rows.vue.d.ts +20 -0
- package/components/layout/rows/types.d.ts +6 -0
- package/components/project/project.d.ts +1 -0
- package/core/app.amd.js +1 -1
- package/core/app.amd.js.map +1 -1
- package/core/app.js +14 -15
- package/core/app.js.map +1 -1
- package/core/core/options.d.ts +2 -2
- package/core/utils/check.d.ts +1 -1
- package/dialog/dialog.amd.js +1 -1
- package/dialog/dialog.amd.js.map +1 -1
- package/dialog/dialog.js +2 -2
- package/dialog/dialog.js.map +1 -1
- package/forms/forms.amd.js +1 -1
- package/forms/forms.js +1 -1
- package/forms/helpers.amd.js.map +1 -1
- package/forms/helpers.js.map +1 -1
- package/formsExt/formsExt.amd.js +1 -1
- package/formsExt/formsExt.amd.js.map +1 -1
- package/formsExt/formsExt.js +54 -54
- package/formsExt/formsExt.js.map +1 -1
- package/icomoon/Read Me.txt +7 -7
- package/icomoon/Topvisor icons.json +6073 -5845
- package/icomoon/demo-files/demo.css +158 -161
- package/icomoon/demo-files/demo.js +30 -30
- package/icomoon/demo.html +3446 -3379
- package/icomoon/fonts/Topvisor-2.eot +0 -0
- package/icomoon/fonts/Topvisor-2.svg +268 -263
- package/icomoon/fonts/Topvisor-2.ttf +0 -0
- package/icomoon/fonts/Topvisor-2.woff +0 -0
- package/icomoon/selection.json +1 -1
- package/icomoon/style.css +756 -740
- package/jquery-ui.min.css +5 -5
- package/layout/layout.amd.js +2 -0
- package/layout/layout.amd.js.map +1 -0
- package/layout/layout.d.ts +2 -0
- package/layout/layout.js +54 -0
- package/layout/layout.js.map +1 -0
- package/package.json +33 -33
- package/popup/popup.amd.js +1 -1
- package/popup/popup.amd.js.map +1 -1
- package/popup/popup.js +2 -2
- package/popup/popup.js.map +1 -1
- package/popup/worker.amd.js +1 -1
- package/popup/worker.amd.js.map +1 -1
- package/popup/worker.js +2 -2
- package/popup/worker.js.map +1 -1
- package/project/project.amd.js +1 -1
- package/project/project.amd.js.map +1 -1
- package/project/project.js +482 -469
- package/project/project.js.map +1 -1
- package/require/css.amd.js +12 -12
- package/tabs/tabs.amd.js.map +1 -1
- package/tabs/tabs.js.map +1 -1
- package/tabsView/tabsView.amd.js +1 -1
- package/tabsView/tabsView.amd.js.map +1 -1
- package/tabsView/tabsView.js +16 -16
- package/tabsView/tabsView.js.map +1 -1
- package/utils/check.amd.js +1 -1
- package/utils/check.amd.js.map +1 -1
- package/utils/check.js +12 -12
- package/utils/check.js.map +1 -1
- package/utils/clipboard.amd.js.map +1 -1
- package/utils/clipboard.js.map +1 -1
- package/utils/date.amd.js +1 -1
- package/utils/date.js +1 -1
- package/utils/device.amd.js +1 -1
- package/utils/device.js +1 -1
- package/utils/dom.amd.js.map +1 -1
- package/utils/dom.js.map +1 -1
- package/utils/image.amd.js.map +1 -1
- package/utils/image.js.map +1 -1
- package/utils/keyboard.amd.js.map +1 -1
- package/utils/keyboard.js.map +1 -1
- package/utils/lodash.amd.js +1 -1
- package/utils/lodash.js +5 -5
- package/utils/number.amd.js.map +1 -1
- package/utils/number.js.map +1 -1
- package/utils/price.amd.js +1 -1
- package/utils/price.amd.js.map +1 -1
- package/utils/price.js +1 -1
- package/utils/price.js.map +1 -1
- package/utils/route.amd.js.map +1 -1
- package/utils/route.js.map +1 -1
- package/utils/scroll.amd.js.map +1 -1
- package/utils/scroll.js.map +1 -1
- package/utils/searchers.amd.js.map +1 -1
- package/utils/searchers.js.map +1 -1
- package/utils/string.amd.js +1 -1
- package/utils/string.amd.js.map +1 -1
- package/utils/string.js +1 -1
- package/utils/string.js.map +1 -1
- package/utils/system.amd.js.map +1 -1
- package/utils/system.js.map +1 -1
- package/utils/url.amd.js.map +1 -1
- package/utils/url.js.map +1 -1
- package/web-types.json +89 -89
- package/.chunks/datepicker-DOmAO7Nq.es.js.map +0 -1
- package/.chunks/datepicker-DX0qKxI_.amd.js.map +0 -1
- package/.chunks/forms-Dg1N8Jv3.amd.js.map +0 -1
- package/.chunks/forms-FHMqYVvM.es.js.map +0 -1
- package/.chunks/listItem.vue_vue_type_script_setup_true_lang-CuWOLCGe.es.js.map +0 -1
- package/.chunks/listItem.vue_vue_type_script_setup_true_lang-tzOQcPs_.amd.js.map +0 -1
- package/.chunks/menu.vue_vue_type_style_index_0_lang-BGdS1bYl.es.js.map +0 -1
- package/.chunks/menu.vue_vue_type_style_index_0_lang-C_ND48ou.amd.js.map +0 -1
- package/.chunks/notice-BixWe-8g.amd.js +0 -4
- package/.chunks/notice-BixWe-8g.amd.js.map +0 -1
- package/.chunks/notice-D07Kq3fU.es.js +0 -172
- package/.chunks/notice-D07Kq3fU.es.js.map +0 -1
- package/.chunks/popup-CBNL-Ixi.es.js.map +0 -1
- package/.chunks/popup-CSNWKE4F.amd.js.map +0 -1
- package/.chunks/utils-B6497Bik.es.js.map +0 -1
- package/.chunks/utils-BgirCapu.es.js.map +0 -1
- package/.chunks/utils-Bxmh9YxC.amd.js +0 -2
- package/.chunks/utils-Bxmh9YxC.amd.js.map +0 -1
- package/.chunks/utils-DINqzHO_.amd.js.map +0 -1
- /package/components/dialog/dialog/composables/{dialogWorker.d.ts → dialogHandle.d.ts} +0 -0
package/assets/forms.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
.top-avatar{width:var(--62448408);height:var(--62448408);display:flex;flex-grow:0;flex-shrink:0;position:relative;top:0;left:0}.top-avatar_image{border-radius:50%;width:100%;height:100%}.top-avatar_status{border-radius:50%;border:2px solid var(--color-layout-front-1);background-color:var(--color-bg-positive-1);width:25%;height:25%;position:absolute;right:0;bottom:0}.top-button{cursor:pointer;box-sizing:border-box;box-shadow:var(--top-button-box-shadow);border-radius:var(--top-forms-radius);border:var(--top-forms-border-width) solid var(--top-forms-border-color);background-color:var(--top-button-background-color);height:var(--top-forms-base-height);padding:0 var(--top-forms-padding);color:var(--top-button-color);line-height:1;white-space:nowrap;display:inline-flex;align-items:center;justify-content:center;transition:background-color .15s,border-color .15s,box-shadow .15s}.top-button:hover{box-shadow:var(--top-button-box-shadow-hover);background-color:var(--top-button-background-color-hover)}.top-button:active{box-shadow:var(--top-button-box-shadow-active);background-color:var(--top-button-background-color-active)}.top-button.top-active{box-shadow:var(--top-button-box-shadow-selected);background-color:var(--top-button-background-color-selected)}.top-button.top-button-progress{cursor:help;box-shadow:inset #00000080 0 0 64px;background-image:linear-gradient(-45deg,rgba(255,255,255,.2) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.2) 50%,rgba(255,255,255,.2) 75%,transparent 75%,transparent);background-size:32px 32px;animation:progress 1s linear infinite}@keyframes progress{0%{background-position-x:0px}to{background-position-x:32px}}a.top-button,button.top-button{min-width:100px;text-decoration:none}a.top-button,a.top-button:hover{min-width:var(--top-forms-base-height);text-decoration:none}.top-button[data-top-icon]:not(:empty):not(.top-button-withoutText),.top-button[data-top-icon2]:not(:empty):not(.top-button-withoutText){justify-content:flex-start;text-align:left}.top-button[data-top-icon]{padding-left:0}.top-button[data-top-icon2]{padding-right:var(--top-select_arrow-width)}.top-button[data-top-icon2]:after{margin-left:auto}.top-button:empty,.top-button.top-button-withoutText{min-width:var(--top-forms-base-height)}.top-button[data-top-icon]:empty,.top-button[data-top-icon2]:empty,.top-button[data-top-icon].top-button-withoutText,.top-button[data-top-icon2].top-button-withoutText{padding:0}.top-button.top-color_blue{--top-button-background-color: var(--color-bg-primary-1)}.top-button.top-color_green{--top-button-background-color: var(--color-bg-positive-1)}.top-button.top-color_orange{--top-button-background-color: var(--color-bg-warning-1)}.top-button.top-color_red{--top-button-background-color: var(--color-bg-negative-1)}.top-button.top-color_pink{--top-button-background-color: var(--color-bg-info-1)}.top-button.top-color_theme{--top-button-box-shadow-hover: none;--top-button-box-shadow-active: none;--top-button-box-shadow-selected: none;--top-icon-color: var(--color-text-2);--top-icon2-color: var(--color-text-2);--top-button-color: var(--color-text-1);--top-button-background-color: transparent;--top-button-background-color-hover: var(--color-layer-1);--top-button-background-color-active: var(--color-layer-3);--top-button-background-color-selected: var(--color-layer-2)}.top-button.top-color_theme:hover{--top-icon-color: var(--color-text-1);--top-icon2-color: var(--color-text-1)}.top-button.top-color_theme.top-active{--top-icon-color: var(--color-text-2)}.top-button.top-style_outline{--top-button-box-shadow: none;--top-button-box-shadow-hover: none;--top-button-box-shadow-active: none;--top-button-box-shadow-selected: none;--top-button-background-color: var(--color-layout-front-1);--top-forms-border-width: 1px}.top-button.top-style_outline.top-color_theme{--top-button-color: var(--color-text-2);--top-icon-color: var(--color-text-2);--top-icon2-color: var(--color-text-2);--top-button-background-color-hover: var(--color-layer-1);--top-button-background-color-active: var(--color-layer-2);--top-button-background-color-selected: var(--color-layer-3);--top-forms-border-color: var(--color-line-3)}.top-button.top-style_outline.top-color_theme:hover{--top-forms-border-color: var(--color-line-4)}.top-button.top-style_outline.top-color_blue{--top-button-color: var(--color-text-primary);--top-icon-color: var(--color-text-primary);--top-icon2-color: var(--color-text-primary);--top-button-background-color-hover: var(--color-layer-primary-1);--top-button-background-color-active: var(--color-layer-primary-2);--top-button-background-color-selected: var(--color-layer-primary-3);--top-forms-border-color: var(--color-line-primary-1)}.top-button.top-style_outline.top-color_blue:hover{--top-forms-border-color: var(--color-line-primary-2)}.top-button.top-style_outline.top-color_green{--top-button-color: var(--color-text-positive);--top-icon-color: var(--color-text-positive);--top-icon2-color: var(--color-text-positive);--top-button-background-color-hover: var(--color-layer-positive-1);--top-button-background-color-active: var(--color-layer-positive-2);--top-button-background-color-selected: var(--color-layer-positive-3);--top-forms-border-color: var(--color-line-positive-1)}.top-button.top-style_outline.top-color_green:hover{--top-forms-border-color: var(--color-line-positive-2)}.top-button.top-style_outline.top-color_orange{--top-button-color: var(--color-text-warning);--top-icon-color: var(--color-text-warning);--top-icon2-color: var(--color-text-warning);--top-button-background-color-hover: var(--color-layer-warning-1);--top-button-background-color-active: var(--color-layer-warning-2);--top-button-background-color-selected: var(--color-layer-warning-3);--top-forms-border-color: var(--color-line-warning-1)}.top-button.top-style_outline.top-color_orange:hover{--top-forms-border-color: var(--color-line-warning-2)}.top-button.top-style_outline.top-color_red{--top-button-color: var(--color-text-negative);--top-icon-color: var(--color-text-negative);--top-icon2-color: var(--color-text-negative);--top-button-background-color-hover: var(--color-layer-negative-1);--top-button-background-color-active: var(--color-layer-negative-2);--top-button-background-color-selected: var(--color-layer-negative-3);--top-forms-border-color: var(--color-line-negative-1)}.top-button.top-style_outline.top-color_red:hover{--top-forms-border-color: var(--color-line-negative-2)}.top-button.top-style_outline.top-color_pink{--top-button-color: var(--color-text-info);--top-icon-color: var(--color-text-info);--top-icon2-color: var(--color-text-info);--top-button-background-color-hover: var(--color-layer-info-1);--top-button-background-color-active: var(--color-layer-info-2);--top-button-background-color-selected: var(--color-layer-info-3);--top-forms-border-color: var(--color-line-info-1)}.top-button.top-style_outline.top-color_pink:hover{--top-forms-border-color: var(--color-line-info-2)}.top-button.top-style_soft{--top-shadow-darken-1: none;--top-shadow-darken-2: none;--top-shadow-darken-3: none}.top-button.top-style_soft.top-color_theme{--top-button-color: var(--color-text-1);--top-icon-color: var(--color-text-1);--top-icon2-color: var(--color-text-1);--top-button-background-color: var(--color-layer-1);--top-button-background-color-hover: var(--color-layer-2);--top-button-background-color-active: var(--color-layer-3);--top-button-background-color-selected: var(--color-layer-3)}.top-button.top-style_soft.top-color_blue{--top-button-color: var(--color-text-primary);--top-icon-color: var(--color-text-primary);--top-icon2-color: var(--color-text-primary);--top-button-background-color: var(--color-layer-primary-1);--top-button-background-color-hover: var(--color-layer-primary-2);--top-button-background-color-active: var(--color-layer-primary-3);--top-button-background-color-selected: var(--color-layer-primary-3)}.top-button.top-style_soft.top-color_green{--top-button-color: var(--color-text-positive);--top-icon-color: var(--color-text-positive);--top-icon2-color: var(--color-text-positive);--top-button-background-color: var(--color-layer-positive-1);--top-button-background-color-hover: var(--color-layer-positive-2);--top-button-background-color-active: var(--color-layer-positive-3);--top-button-background-color-selected: var(--color-layer-positive-3)}.top-button.top-style_soft.top-color_orange{--top-button-color: var(--color-text-warning);--top-icon-color: var(--color-text-warning);--top-icon2-color: var(--color-text-warning);--top-button-background-color: var(--color-layer-warning-1);--top-button-background-color-hover: var(--color-layer-warning-2);--top-button-background-color-active: var(--color-layer-warning-3);--top-button-background-color-selected: var(--color-layer-warning-3)}.top-button.top-style_soft.top-color_red{--top-button-color: var(--color-text-negative);--top-icon-color: var(--color-text-negative);--top-icon2-color: var(--color-text-negative);--top-button-background-color: var(--color-layer-negative-1);--top-button-background-color-hover: var(--color-layer-negative-2);--top-button-background-color-active: var(--color-layer-negative-3);--top-button-background-color-selected: var(--color-layer-negative-3)}.top-button.top-style_soft.top-color_pink{--top-button-color: var(--color-text-info);--top-icon-color: var(--color-text-info);--top-icon2-color: var(--color-text-info);--top-button-background-color: var(--color-layer-info-1);--top-button-background-color-hover: var(--color-layer-info-2);--top-button-background-color-active: var(--color-layer-info-3);--top-button-background-color-selected: var(--color-layer-info-3)}.top-button.top-style_transparent{--top-shadow-darken-1: none;--top-shadow-darken-2: none;--top-shadow-darken-3: none;--top-button-color: var(--color-text);--top-button-background-color: transparent;--top-button-background-color-hover: transparent;--top-button-background-color-active: transparent;--top-button-background-color-selected: var(--color-steel-200)}.top-button.top-style_transparent:hover{opacity:.8}.top-button.top-style_transparent.top-color_blue{--top-button-color: var(--color-text-primary)}.top-button.top-style_transparent.top-color_green{--top-button-color: var(--color-text-positive)}.top-button.top-style_transparent.top-color_orange{--top-button-color: var(--color-text-warning)}.top-button.top-style_transparent.top-color_red{--top-button-color: var(--color-text-negative)}.top-button.top-style_transparent.top-color_pink{--top-button-color: var(--color-text-info)}.top-button{--top-button-color: var(--color-white);--top-button-background-color: transparent;--top-button-background-color-hover: var(--top-button-background-color);--top-button-background-color-active: var(--top-button-background-color-hover);--top-button-background-color-selected: var(--top-button-background-color-hover);--top-button-box-shadow: none;--top-button-box-shadow-hover: var(--top-shadow-darken-2);--top-button-box-shadow-active: var(--top-shadow-darken-3);--top-button-box-shadow-selected: var(--top-shadow-darken-3);--top-forms-border-width: 0px;--top-icon-width: calc(var(--top-icon-size) + var(--top-forms-padding));--top-icon2-width: calc(var(--top-icon2-size) + var(--top-forms-padding))}.top-button>span{pointer-events:none}.top-button>.top-ellipsis{flex-grow:0}.top-button.top-size_xs{--top-forms-padding: var(--top-forms-padding_xs);--top-forms-base-height: var(--top-forms-base-height_xs)}.top-button.top-size_m{--top-forms-padding: var(--top-forms-padding_m);--top-forms-base-height: var(--top-forms-base-height_m)}.top-button.top-size_l{--top-forms-padding: var(--top-forms-padding_l);--top-forms-base-height: var(--top-forms-base-height_l)}.top-button_badge-afterText{order:100}.top-button:not([data-top-icon2])>.top-button_badge-afterText{margin-left:0}.top-forms-optionLabel{flex-grow:1}.top-forms-optionLabel_title{color:var(--color-text-1);min-height:var(--top-forms-option-height);display:flex;align-items:center}.top-forms-optionLabel_title-disabled{color:var(--color-text-3)}.top-forms-optionLabel_description{color:var(--color-text-2);font-size:.85em;line-height:var(--top-forms-option-height)}.top-forms-optionLabel_description-disabled{color:var(--color-text-3)}.top-checkbox{cursor:pointer;display:inline-flex}.top-checkbox_input{cursor:inherit;border-radius:4px;background:var(--color-layout-front-1);border:1px solid var(--top-forms-border-color);width:calc(var(--top-forms-option-height) - 3px * 2);height:calc(var(--top-forms-option-height) - 3px * 2)}.top-checkbox_input:before{content:" ";color:#fff;font-family:Topvisor-2;font-size:16px}.top-checkbox_input:hover{border-color:var(--top-forms-border-color-hover);background:var(--color-layer-primary-1)}.top-checkbox_input:checked,.top-checkbox_input:indeterminate{border-color:var(--top-forms-option-color);background:var(--top-forms-option-color)}.top-checkbox_input:checked:before{content:""}.top-checkbox_input:indeterminate:before{content:""}.top-checkbox_input:checked:hover,.top-checkbox_input:indeterminate:hover{border-color:var(--top-forms-option-color-hover);background:var(--top-forms-option-color-hover)}.top-checkbox_input.top-error{border-color:var(--color-bg-negative-1)}.top-checkbox_input.top-error:hover{border-color:var(--color-bg-negative-2)}.top-checkbox_input:checked.top-error,.top-checkbox_input:indeterminate.top-error{background:var(--color-bg-negative-1)}.top-checkbox_input:checked.top-error:hover,.top-checkbox_input:indeterminate.top-error:hover{background:var(--color-bg-negative-2)}.top-hint{--top-icon-size: 16px;--top-icon-width: var(--top-icon-size);border-radius:50%;background:var(--color-layout-front-1);padding:1px;color:var(--color-text-3);line-height:1;z-index:1;pointer-events:all}.top-hint:hover{color:var(--color-text-2)}:root{--top-loadbar-duration: 10s;--top-loadbar-color: var(--color-line-primary-1)}.top-loadbar{background:var(--top-loadbar-color);width:0;height:4px;position:absolute;top:0;left:0;animation:top-loadbar var(--top-loadbar-duration) forwards}@keyframes top-loadbar{0%{width:4px}4%{width:4%}5%{width:5%}to{width:95%}}.top-input{--top-forms_clear-width: 0px;border-radius:var(--top-forms-radius);width:180px;position:relative;display:inline-flex;align-items:center;gap:var(--top-gap-1)}.top-input_input{color:var(--color-text-2);background:var(--top-forms-background-color);height:var(--top-forms-base-height);padding:0;padding-right:max(var(--top-forms-padding),calc(var(--top-icon2-width) + var(--top-forms_clear-width)));padding-left:max(var(--top-forms-padding),var(--top-icon-width))}.top-input_input:hover{background:var(--top-forms-background-color-hover)}.top-input_input:focus{color:var(--color-text-1);border-color:var(--color-line-primary-1);outline:none}.top-input[data-top-icon]:before,.top-input[data-top-icon2]:after{--top-icon-color: var(--color-text-4);--top-icon2-color: var(--color-text-4);position:absolute;z-index:3;font-size:20px}.top-input[data-top-icon]:before{left:0}.top-input[data-top-icon2]:after{right:0}.top-input-withCleaner{--top-forms_clear-width: 24px}.top-input_cleaner[data-top-icon]{--top-icon-size: 16px;--top-icon-width: 20px;--top-icon-color: var(--color-text-3);cursor:pointer;border-radius:50%;width:20px;height:16px;position:absolute;right:calc(var(--top-forms-border-width) + max(var(--top-icon2-width),var(--top-forms-padding) / 2));z-index:1;display:flex;align-items:center;justify-content:center}.top-input_cleaner[data-top-icon]:hover{--top-icon-color: var(--color-text-2)}.top-input_input{width:50%;flex-grow:1}.top-input .top-loadbar{border-radius:var(--top-forms-radius) 0 0 0}.top-input-datepicker{width:calc(105px + var(--top-icon-width) + var(--top-icon2-width))}.top-input_input-date{opacity:0;position:absolute;inset:0;z-index:-1}.top-input_input-date::-webkit-inner-spin-button{display:none}.top-input_input-date::-webkit-calendar-picker-indicator{opacity:0}.top-inputRange{max-width:320px;vertical-align:baseline;display:inline-flex;gap:8px}.top-inputRange_dash{height:var(--top-forms-base-height);color:var(--color-text-4);align-self:flex-end;display:inline-flex;align-items:center}.top-inputRange>.top-input{flex-grow:1}:root{--top-radio-background-color: var(--color-layout-front-1);--top-radio-background-color-hover: var(--top-radio-background-color);--top-radio-background-color-active: var(--top-radio-background-color)}.top-radio{cursor:pointer}.top-radio_input{border-radius:50%;background:var(--color-layout-front-1);border:1px solid var(--top-forms-border-color);width:calc(var(--top-forms-option-height) - 3px * 2);height:calc(var(--top-forms-option-height) - 3px * 2)}.top-radio_input:hover{border-color:var(--top-forms-border-color-hover);background:var(--color-layer-primary-1)}.top-radio_input:checked{border-color:var(--top-forms-option-color);border-width:5px}.top-radio_input:checked:hover{border-color:var(--color-bg-primary-2)}.top-radio_input.top-error,.top-radio_input.top-error:hover{border-color:var(--color-bg-negative-1)}.top-checkboxSwitcher{cursor:pointer;display:inline-flex;gap:4px}.top-checkboxSwitcher_input{border-radius:9px;border:none;background:var(--color-layer-3);width:36px;height:18px;position:relative}.top-checkboxSwitcher_input:before{content:"";border-radius:50%;background:var(--color-white);width:12px;height:12px;margin:3px;position:absolute;top:0;left:0;transition:left .1s}.top-checkboxSwitcher_input:hover{background:var(--color-layer-4)}.top-checkboxSwitcher_input:checked{background:var(--top-forms-option-color)}.top-checkboxSwitcher_input:checked:hover{background:var(--top-forms-option-color-hover)}.top-checkboxSwitcher_input:checked:before{left:50%}.top-checkboxSwitcher_input.top-error{background:var(--color-layer-negative-3)}.top-checkboxSwitcher_input.top-error:hover{background:var(--color-layer-negative-4)}.top-checkboxSwitcher_input.top-error:checked{background:var(--color-bg-negative-2)}.top-checkboxSwitcher_input.top-error:checked:hover{background:var(--color-bg-negative-1)}.top-textarea{width:180px;display:inline-flex;align-items:center;position:relative}.top-textarea_textarea{color:var(--color-text-1);background:var(--top-forms-background-color);width:100%;padding:var(--top-forms-padding);resize:none}.top-textarea_textarea:hover{background:var(--top-forms-background-color-hover)}.top-textarea_textarea:focus{border-color:var(--color-line-primary-1);outline:none}html .top-textarea_textarea.top-textarea_textarea-expandable{width:100%;height:100%;overflow:hidden;position:absolute;top:0;left:0}.top-textarea_pseudoContent{box-sizing:border-box;min-height:var(--445cd2c3);padding:var(--top-forms-padding);font-size:14px;white-space:pre-wrap;overflow-wrap:anywhere;pointer-events:none;opacity:0;z-index:-1}.top-textarea_hint{position:absolute;top:2px;right:2px}.top-select{color:var(--color-text-1);--top-icon-color: var(--color-text-2);--top-icon2-color: var(--color-text-2);align-items:center;width:180px;max-width:100%;display:inline-flex}.top-select-error{--top-icon-color: var(--color-text-negative);--top-icon2-color: var(--color-text-negative)}.top-select_select{background-color:var(--top-forms-background-color);padding-left:var(--top-forms-padding);text-indent:clamp(0px,calc(var(--top-icon-both-width) - var(--top-forms-padding)),calc(var(--top-icon-both-width) - var(--top-forms-padding)));width:100%;height:var(--top-forms-base-height);text-overflow:ellipsis;white-space:nowrap;flex-grow:1;overflow:hidden}.top-select optgroup{color:var(--color-text-1);font-style:normal}.top-select option:not(:disabled){background:var(--color-layout-front-1);color:var(--color-text-1)}.top-select option:disabled{background:unset;color:unset}@-moz-document url-prefix(){.top-select_select{text-indent:calc(clamp(0px,calc(var(--top-icon-both-width) - var(--top-forms-padding)),calc(var(--top-icon-both-width) - var(--top-forms-padding)))/2)}}@media only screen and (min-width: 900px){.top-changer{cursor:pointer;border-radius:100%;width:0;transform:translate(-44px);color:var(--color-text-2);font-size:16px;line-height:1;display:none;z-index:2;order:4}.top-changer:hover{color:var(--color-text-primary)}.top-changer:after{content:"";background-color:var(--top-forms-background-color);font-family:Topvisor-2}*:hover>.top-changer{display:block}}
|
|
1
|
+
.top-avatar{width:var(--3ce69dc2);height:var(--3ce69dc2);display:flex;flex-grow:0;flex-shrink:0;position:relative;top:0;left:0}.top-avatar_image{border-radius:50%;width:100%;height:100%}.top-avatar_status{border-radius:50%;border:2px solid var(--color-layout-front-1);background-color:var(--color-bg-positive-1);width:25%;height:25%;position:absolute;right:0;bottom:0}.top-button{cursor:pointer;box-sizing:border-box;box-shadow:var(--top-button-box-shadow);border-radius:var(--top-forms-radius);border:var(--top-forms-border-width) solid var(--top-forms-border-color);background-color:var(--top-button-background-color);height:var(--top-forms-base-height);padding:0 var(--top-forms-padding);color:var(--top-button-color);line-height:1;white-space:nowrap;display:inline-flex;align-items:center;justify-content:center;transition:background-color .15s,border-color .15s,box-shadow .15s}.top-button:hover{box-shadow:var(--top-button-box-shadow-hover);background-color:var(--top-button-background-color-hover)}.top-button:active{box-shadow:var(--top-button-box-shadow-active);background-color:var(--top-button-background-color-active)}.top-button.top-active{box-shadow:var(--top-button-box-shadow-selected);background-color:var(--top-button-background-color-selected)}.top-button.top-button-progress{cursor:help;box-shadow:inset #00000080 0 0 64px;background-image:linear-gradient(-45deg,rgba(255,255,255,.2) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.2) 50%,rgba(255,255,255,.2) 75%,transparent 75%,transparent);background-size:32px 32px;animation:progress 1s linear infinite}@keyframes progress{0%{background-position-x:0px}to{background-position-x:32px}}a.top-button,button.top-button{min-width:100px;text-decoration:none}a.top-button,a.top-button:hover{min-width:var(--top-forms-base-height);text-decoration:none}.top-button[data-top-icon]:not(:empty):not(.top-button-withoutText),.top-button[data-top-icon2]:not(:empty):not(.top-button-withoutText){justify-content:flex-start;text-align:left}.top-button[data-top-icon]{padding-left:0}.top-button[data-top-icon2]{padding-right:var(--top-select_arrow-width)}.top-button[data-top-icon2]:after{margin-left:auto}.top-button:empty,.top-button.top-button-withoutText{min-width:var(--top-forms-base-height)}.top-button[data-top-icon]:empty,.top-button[data-top-icon2]:empty,.top-button[data-top-icon].top-button-withoutText,.top-button[data-top-icon2].top-button-withoutText{padding:0}.top-button.top-color_blue{--top-button-background-color: var(--color-bg-primary-1)}.top-button.top-color_green{--top-button-background-color: var(--color-bg-positive-1)}.top-button.top-color_orange{--top-button-background-color: var(--color-bg-warning-1)}.top-button.top-color_red{--top-button-background-color: var(--color-bg-negative-1)}.top-button.top-color_pink{--top-button-background-color: var(--color-bg-info-1)}.top-button.top-color_theme{--top-button-box-shadow-hover: none;--top-button-box-shadow-active: none;--top-button-box-shadow-selected: none;--top-icon-color: var(--color-text-2);--top-icon2-color: var(--color-text-2);--top-button-color: var(--color-text-1);--top-button-background-color: transparent;--top-button-background-color-hover: var(--color-layer-1);--top-button-background-color-active: var(--color-layer-3);--top-button-background-color-selected: var(--color-layer-2)}.top-button.top-color_theme:hover{--top-icon-color: var(--color-text-1);--top-icon2-color: var(--color-text-1)}.top-button.top-color_theme.top-active{--top-icon-color: var(--color-text-2)}.top-button.top-style_outline{--top-button-box-shadow: none;--top-button-box-shadow-hover: none;--top-button-box-shadow-active: none;--top-button-box-shadow-selected: none;--top-button-background-color: var(--color-layout-front-1);--top-forms-border-width: 1px}.top-button.top-style_outline.top-color_theme{--top-button-color: var(--color-text-2);--top-icon-color: var(--color-text-2);--top-icon2-color: var(--color-text-2);--top-button-background-color-hover: var(--color-layer-1);--top-button-background-color-active: var(--color-layer-2);--top-button-background-color-selected: var(--color-layer-3);--top-forms-border-color: var(--color-line-3)}.top-button.top-style_outline.top-color_theme:hover{--top-forms-border-color: var(--color-line-4)}.top-button.top-style_outline.top-color_blue{--top-button-color: var(--color-text-primary);--top-icon-color: var(--color-text-primary);--top-icon2-color: var(--color-text-primary);--top-button-background-color-hover: var(--color-layer-primary-1);--top-button-background-color-active: var(--color-layer-primary-2);--top-button-background-color-selected: var(--color-layer-primary-3);--top-forms-border-color: var(--color-line-primary-1)}.top-button.top-style_outline.top-color_blue:hover{--top-forms-border-color: var(--color-line-primary-2)}.top-button.top-style_outline.top-color_green{--top-button-color: var(--color-text-positive);--top-icon-color: var(--color-text-positive);--top-icon2-color: var(--color-text-positive);--top-button-background-color-hover: var(--color-layer-positive-1);--top-button-background-color-active: var(--color-layer-positive-2);--top-button-background-color-selected: var(--color-layer-positive-3);--top-forms-border-color: var(--color-line-positive-1)}.top-button.top-style_outline.top-color_green:hover{--top-forms-border-color: var(--color-line-positive-2)}.top-button.top-style_outline.top-color_orange{--top-button-color: var(--color-text-warning);--top-icon-color: var(--color-text-warning);--top-icon2-color: var(--color-text-warning);--top-button-background-color-hover: var(--color-layer-warning-1);--top-button-background-color-active: var(--color-layer-warning-2);--top-button-background-color-selected: var(--color-layer-warning-3);--top-forms-border-color: var(--color-line-warning-1)}.top-button.top-style_outline.top-color_orange:hover{--top-forms-border-color: var(--color-line-warning-2)}.top-button.top-style_outline.top-color_red{--top-button-color: var(--color-text-negative);--top-icon-color: var(--color-text-negative);--top-icon2-color: var(--color-text-negative);--top-button-background-color-hover: var(--color-layer-negative-1);--top-button-background-color-active: var(--color-layer-negative-2);--top-button-background-color-selected: var(--color-layer-negative-3);--top-forms-border-color: var(--color-line-negative-1)}.top-button.top-style_outline.top-color_red:hover{--top-forms-border-color: var(--color-line-negative-2)}.top-button.top-style_outline.top-color_pink{--top-button-color: var(--color-text-info);--top-icon-color: var(--color-text-info);--top-icon2-color: var(--color-text-info);--top-button-background-color-hover: var(--color-layer-info-1);--top-button-background-color-active: var(--color-layer-info-2);--top-button-background-color-selected: var(--color-layer-info-3);--top-forms-border-color: var(--color-line-info-1)}.top-button.top-style_outline.top-color_pink:hover{--top-forms-border-color: var(--color-line-info-2)}.top-button.top-style_soft{--top-shadow-darken-1: none;--top-shadow-darken-2: none;--top-shadow-darken-3: none}.top-button.top-style_soft.top-color_theme{--top-button-color: var(--color-text-1);--top-icon-color: var(--color-text-1);--top-icon2-color: var(--color-text-1);--top-button-background-color: var(--color-layer-1);--top-button-background-color-hover: var(--color-layer-2);--top-button-background-color-active: var(--color-layer-3);--top-button-background-color-selected: var(--color-layer-3)}.top-button.top-style_soft.top-color_blue{--top-button-color: var(--color-text-primary);--top-icon-color: var(--color-text-primary);--top-icon2-color: var(--color-text-primary);--top-button-background-color: var(--color-layer-primary-1);--top-button-background-color-hover: var(--color-layer-primary-2);--top-button-background-color-active: var(--color-layer-primary-3);--top-button-background-color-selected: var(--color-layer-primary-3)}.top-button.top-style_soft.top-color_green{--top-button-color: var(--color-text-positive);--top-icon-color: var(--color-text-positive);--top-icon2-color: var(--color-text-positive);--top-button-background-color: var(--color-layer-positive-1);--top-button-background-color-hover: var(--color-layer-positive-2);--top-button-background-color-active: var(--color-layer-positive-3);--top-button-background-color-selected: var(--color-layer-positive-3)}.top-button.top-style_soft.top-color_orange{--top-button-color: var(--color-text-warning);--top-icon-color: var(--color-text-warning);--top-icon2-color: var(--color-text-warning);--top-button-background-color: var(--color-layer-warning-1);--top-button-background-color-hover: var(--color-layer-warning-2);--top-button-background-color-active: var(--color-layer-warning-3);--top-button-background-color-selected: var(--color-layer-warning-3)}.top-button.top-style_soft.top-color_red{--top-button-color: var(--color-text-negative);--top-icon-color: var(--color-text-negative);--top-icon2-color: var(--color-text-negative);--top-button-background-color: var(--color-layer-negative-1);--top-button-background-color-hover: var(--color-layer-negative-2);--top-button-background-color-active: var(--color-layer-negative-3);--top-button-background-color-selected: var(--color-layer-negative-3)}.top-button.top-style_soft.top-color_pink{--top-button-color: var(--color-text-info);--top-icon-color: var(--color-text-info);--top-icon2-color: var(--color-text-info);--top-button-background-color: var(--color-layer-info-1);--top-button-background-color-hover: var(--color-layer-info-2);--top-button-background-color-active: var(--color-layer-info-3);--top-button-background-color-selected: var(--color-layer-info-3)}.top-button.top-style_transparent{--top-shadow-darken-1: none;--top-shadow-darken-2: none;--top-shadow-darken-3: none;--top-button-color: var(--color-text);--top-button-background-color: transparent;--top-button-background-color-hover: transparent;--top-button-background-color-active: transparent;--top-button-background-color-selected: var(--color-steel-200)}.top-button.top-style_transparent:hover{opacity:.8}.top-button.top-style_transparent.top-color_blue{--top-button-color: var(--color-text-primary)}.top-button.top-style_transparent.top-color_green{--top-button-color: var(--color-text-positive)}.top-button.top-style_transparent.top-color_orange{--top-button-color: var(--color-text-warning)}.top-button.top-style_transparent.top-color_red{--top-button-color: var(--color-text-negative)}.top-button.top-style_transparent.top-color_pink{--top-button-color: var(--color-text-info)}.top-button{--top-button-color: var(--color-white);--top-button-background-color: transparent;--top-button-background-color-hover: var(--top-button-background-color);--top-button-background-color-active: var(--top-button-background-color-hover);--top-button-background-color-selected: var(--top-button-background-color-hover);--top-button-box-shadow: none;--top-button-box-shadow-hover: var(--top-shadow-darken-2);--top-button-box-shadow-active: var(--top-shadow-darken-3);--top-button-box-shadow-selected: var(--top-shadow-darken-3);--top-forms-border-width: 0px;--top-icon-width: calc(var(--top-icon-size) + var(--top-forms-padding));--top-icon2-width: calc(var(--top-icon2-size) + var(--top-forms-padding))}.top-button>span{pointer-events:none}.top-button>.top-ellipsis{flex-grow:0}.top-button.top-size_xs{--top-forms-padding: var(--top-forms-padding_xs);--top-forms-base-height: var(--top-forms-base-height_xs)}.top-button.top-size_m{--top-forms-padding: var(--top-forms-padding_m);--top-forms-base-height: var(--top-forms-base-height_m)}.top-button.top-size_l{--top-forms-padding: var(--top-forms-padding_l);--top-forms-base-height: var(--top-forms-base-height_l)}.top-button_badge-afterText{order:100}.top-button:not([data-top-icon2])>.top-button_badge-afterText{margin-left:0}.top-forms-optionLabel{flex-grow:1}.top-forms-optionLabel_title{color:var(--color-text-1);min-height:var(--top-forms-option-height);display:flex;align-items:center}.top-forms-optionLabel_title-disabled{color:var(--color-text-3)}.top-forms-optionLabel_description{color:var(--color-text-2);font-size:.85em;line-height:var(--top-forms-option-height)}.top-forms-optionLabel_description-disabled{color:var(--color-text-3)}.top-checkbox{cursor:pointer;display:inline-flex}.top-checkbox_input{cursor:inherit;border-radius:4px;background:var(--color-layout-front-1);border:1px solid var(--top-forms-border-color);width:calc(var(--top-forms-option-height) - 3px * 2);height:calc(var(--top-forms-option-height) - 3px * 2)}.top-checkbox_input:before{content:" ";color:#fff;font-family:Topvisor-2;font-size:16px}.top-checkbox_input:hover{border-color:var(--top-forms-border-color-hover);background:var(--color-layer-primary-1)}.top-checkbox_input:checked,.top-checkbox_input:indeterminate{border-color:var(--top-forms-option-color);background:var(--top-forms-option-color)}.top-checkbox_input:checked:before{content:""}.top-checkbox_input:indeterminate:before{content:""}.top-checkbox_input:checked:hover,.top-checkbox_input:indeterminate:hover{border-color:var(--top-forms-option-color-hover);background:var(--top-forms-option-color-hover)}.top-checkbox_input.top-error{border-color:var(--color-bg-negative-1)}.top-checkbox_input.top-error:hover{border-color:var(--color-bg-negative-2)}.top-checkbox_input:checked.top-error,.top-checkbox_input:indeterminate.top-error{background:var(--color-bg-negative-1)}.top-checkbox_input:checked.top-error:hover,.top-checkbox_input:indeterminate.top-error:hover{background:var(--color-bg-negative-2)}.top-hint{--top-icon-size: 16px;--top-icon-width: var(--top-icon-size);border-radius:50%;background:var(--color-layout-front-1);padding:1px;color:var(--color-text-3);line-height:1;z-index:1;pointer-events:all}.top-hint:hover{color:var(--color-text-2)}:root{--top-loadbar-duration: 10s;--top-loadbar-color: var(--color-line-primary-1)}.top-loadbar{background:var(--top-loadbar-color);width:0;height:4px;position:absolute;top:0;left:0;animation:top-loadbar var(--top-loadbar-duration) forwards}@keyframes top-loadbar{0%{width:4px}4%{width:4%}5%{width:5%}to{width:95%}}.top-input{--top-forms_clear-width: 0px;border-radius:var(--top-forms-radius);width:180px;position:relative;display:inline-flex;align-items:center;gap:var(--top-gap-1)}.top-input_input{color:var(--color-text-2);background:var(--top-forms-background-color);height:var(--top-forms-base-height);padding:0;padding-right:max(var(--top-forms-padding),calc(var(--top-icon2-width) + var(--top-forms_clear-width)));padding-left:max(var(--top-forms-padding),var(--top-icon-width))}.top-input_input:hover{background:var(--top-forms-background-color-hover)}.top-input_input:focus{color:var(--color-text-1);border-color:var(--color-line-primary-1);outline:none}.top-input[data-top-icon]:before,.top-input[data-top-icon2]:after{--top-icon-color: var(--color-text-4);--top-icon2-color: var(--color-text-4);position:absolute;z-index:3;font-size:20px}.top-input[data-top-icon]:before{left:0}.top-input[data-top-icon2]:after{right:0}.top-input-withCleaner{--top-forms_clear-width: 24px}.top-input_cleaner[data-top-icon]{--top-icon-size: 16px;--top-icon-width: 20px;--top-icon-color: var(--color-text-3);cursor:pointer;border-radius:50%;width:20px;height:16px;position:absolute;right:calc(var(--top-forms-border-width) + max(var(--top-icon2-width),var(--top-forms-padding) / 2));z-index:1;display:flex;align-items:center;justify-content:center}.top-input_cleaner[data-top-icon]:hover{--top-icon-color: var(--color-text-2)}.top-input_input{width:50%;flex-grow:1}.top-input .top-loadbar{border-radius:var(--top-forms-radius) 0 0 0}.top-input-datepicker{width:calc(105px + var(--top-icon-width) + var(--top-icon2-width))}.top-input_input-date{opacity:0;position:absolute;inset:0;z-index:-1}.top-input_input-date::-webkit-inner-spin-button{display:none}.top-input_input-date::-webkit-calendar-picker-indicator{opacity:0}.top-inputRange{max-width:320px;vertical-align:baseline;display:inline-flex;gap:8px}.top-inputRange_dash{height:var(--top-forms-base-height);color:var(--color-text-4);align-self:flex-end;display:inline-flex;align-items:center}.top-inputRange>.top-input{flex-grow:1}:root{--top-radio-background-color: var(--color-layout-front-1);--top-radio-background-color-hover: var(--top-radio-background-color);--top-radio-background-color-active: var(--top-radio-background-color)}.top-radio{cursor:pointer}.top-radio_input{border-radius:50%;background:var(--color-layout-front-1);border:1px solid var(--top-forms-border-color);width:calc(var(--top-forms-option-height) - 3px * 2);height:calc(var(--top-forms-option-height) - 3px * 2)}.top-radio_input:hover{border-color:var(--top-forms-border-color-hover);background:var(--color-layer-primary-1)}.top-radio_input:checked{border-color:var(--top-forms-option-color);border-width:5px}.top-radio_input:checked:hover{border-color:var(--color-bg-primary-2)}.top-radio_input.top-error,.top-radio_input.top-error:hover{border-color:var(--color-bg-negative-1)}.top-checkboxSwitcher{cursor:pointer;display:inline-flex;gap:4px}.top-checkboxSwitcher_input{border-radius:9px;border:none;background:var(--color-layer-3);width:36px;height:18px;position:relative}.top-checkboxSwitcher_input:before{content:"";border-radius:50%;background:var(--color-white);width:12px;height:12px;margin:3px;position:absolute;top:0;left:0;transition:left .1s}.top-checkboxSwitcher_input:hover{background:var(--color-layer-4)}.top-checkboxSwitcher_input:checked{background:var(--top-forms-option-color)}.top-checkboxSwitcher_input:checked:hover{background:var(--top-forms-option-color-hover)}.top-checkboxSwitcher_input:checked:before{left:50%}.top-checkboxSwitcher_input.top-error{background:var(--color-layer-negative-3)}.top-checkboxSwitcher_input.top-error:hover{background:var(--color-layer-negative-4)}.top-checkboxSwitcher_input.top-error:checked{background:var(--color-bg-negative-2)}.top-checkboxSwitcher_input.top-error:checked:hover{background:var(--color-bg-negative-1)}.top-textarea{width:180px;display:inline-flex;align-items:center;position:relative}.top-textarea_textarea{color:var(--color-text-1);background:var(--top-forms-background-color);width:100%;padding:var(--top-forms-padding);resize:none}.top-textarea_textarea:hover{background:var(--top-forms-background-color-hover)}.top-textarea_textarea:focus{border-color:var(--color-line-primary-1);outline:none}html .top-textarea_textarea.top-textarea_textarea-expandable{width:100%;height:100%;overflow:hidden;position:absolute;top:0;left:0}.top-textarea_pseudoContent{box-sizing:border-box;min-height:var(--13a3474e);padding:var(--top-forms-padding);font-size:14px;white-space:pre-wrap;overflow-wrap:anywhere;pointer-events:none;opacity:0;z-index:-1}.top-textarea_hint{position:absolute;top:2px;right:2px}.top-select{color:var(--color-text-1);--top-icon-color: var(--color-text-2);--top-icon2-color: var(--color-text-2);align-items:center;width:180px;max-width:100%;display:inline-flex}.top-select-error{--top-icon-color: var(--color-text-negative);--top-icon2-color: var(--color-text-negative)}.top-select_select{background-color:var(--top-forms-background-color);padding-left:var(--top-forms-padding);text-indent:clamp(0px,calc(var(--top-icon-both-width) - var(--top-forms-padding)),calc(var(--top-icon-both-width) - var(--top-forms-padding)));width:100%;height:var(--top-forms-base-height);text-overflow:ellipsis;white-space:nowrap;flex-grow:1;overflow:hidden}.top-select optgroup{color:var(--color-text-1);font-style:normal}.top-select option:not(:disabled){background:var(--color-layout-front-1);color:var(--color-text-1)}.top-select option:disabled{background:unset;color:unset}@-moz-document url-prefix(){.top-select_select{text-indent:calc(clamp(0px,calc(var(--top-icon-both-width) - var(--top-forms-padding)),calc(var(--top-icon-both-width) - var(--top-forms-padding)))/2)}}@media only screen and (min-width: 900px){.top-changer{cursor:pointer;border-radius:100%;width:0;transform:translate(-44px);color:var(--color-text-2);font-size:16px;line-height:1;display:none;z-index:2;order:4}.top-changer:hover{color:var(--color-text-primary)}.top-changer:after{content:"";background-color:var(--top-forms-background-color);font-family:Topvisor-2}*:hover>.top-changer{display:block}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.top-rows{width:100%;display:flex;flex-direction:column}.top-rows-gap_none{gap:0x}.top-rows-gap_xs{gap:var(--top-gap-1)}.top-rows-gap_s{gap:var(--top-gap-2)}.top-rows-gap_m{gap:var(--top-gap-3)}.top-rows-gap_l{gap:var(--top-gap-4)}.top-islandRows_title{padding:6px 0;font-size:20px;font-weight:700}.top-islandRows_rows{border-radius:var(--top-radius-3);background:var(--color-bg-shading-2);padding:var(--top-padding-3)}.top-islandRows_rows .top-rows>.top-input .top-input_input,.top-islandRows_rows .top-rows>.top-textarea .top-textarea_textarea,.top-islandRows_rows .top-rows>.top-select .top-select_select{border:none}.top-islandRows_rows .top-button,.top-islandRows_rows .top-input,.top-islandRows_rows .top-textarea,.top-islandRows_rows .top-select{width:auto;flex-grow:1;display:flex}.top-islandRows_rows .top-forms-optionWrapper{padding:0;flex-grow:1}.top-islandRows_row{border-radius:8px;background:var(--color-layout-front-1);padding:var(--top-padding-3);display:flex;gap:var(--top-gap-2)}.top-islandRows_row:has(>.top-forms-optionWrapper .top-forms-focusable:focus-visible){outline:2px solid var(--color-line-primary-1);outline-offset:2px}.top-islandRows_row>.top-forms-optionWrapper .top-forms-focusable{outline:none}
|
package/charts/charts.amd.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
define(["require","exports","vue","../.chunks/forms-
|
|
1
|
+
define(["require","exports","vue","../.chunks/forms-CORLOoYZ.amd","../utils/number.amd","../require/css.amd!../assets/charts.css"],function(L,C,e,M,g){"use strict";if(typeof e>"u")var e=window.Vue;const k=90,y=10,V=["data-top-icon"],B={class:"top-miniChart_chart"},b=["onMouseenter"],E={class:"top-miniChart_data"},_={class:"top-miniChart_dataValue"},w=["innerHTML"],D=e.defineComponent({__name:"miniChart",props:e.mergeModels({title:{},gIcon:{},color:{default:"blue"},dates:{},values:{},activeDates:{},keysForDyn:{},dynamic:{},isInvert:{type:Boolean},numberCols:{default:k},additionalHTML:{},modelValue:{},valueSuffix:{},hideChartInMobile:{type:Boolean}},{modelValue:{},modelModifiers:{}}),emits:["update:modelValue"],setup(m){const o=m,s=e.useModel(m,"modelValue"),i=t=>{let l=u.value;o.isInvert&&(t-=1,l-=1);let a=l>0?Math.round(t/l*(100-y)):0;return o.isInvert?100-a:a+y},p=t=>o.activeDates.includes(t),u=e.computed(()=>Math.max(...o.values)),c=e.computed(()=>o.dates.slice().reverse()),v=e.computed(()=>o.dates.length?o.numberCols-o.dates.length:0),h=()=>{s.value=null},r=(t,l,a)=>{t.target instanceof HTMLElement&&(s.value={elCol:t.target,date:M.dateFormat(l),value:a===null?"--":a+(o.valueSuffix??"")})},n=e.computed(()=>{let t=o.dynamic;if(typeof t>"u"){const a=o.values[o.keysForDyn.start];t=o.values[o.keysForDyn.end]-a}return(t<0?-1:1)*g.percentOfNumber(Math.abs(t))}),d=e.computed(()=>{let t="stay";return o.isInvert?(n.value>0&&(t="down"),n.value<0&&(t="up")):(n.value>0&&(t="up"),n.value<0&&(t="down")),t});return(t,l)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass({"top-miniChart":!0,"top-miniChart_hideChartInMobile":t.hideChartInMobile,[`top-color_${t.color}`]:!0})},[e.createElementVNode("div",{class:"top-miniChart_title top-ellipsis","data-top-icon":t.gIcon},e.toDisplayString(t.title),9,V),e.createElementVNode("div",B,[e.createElementVNode("div",{class:"top-miniChart_chartGrid",onMouseleave:l[1]||(l[1]=a=>h())},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(c.value,(a,f)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass({"top-miniChart_chartGridCol":!0,"top-active":p(a)}),onMouseenter:z=>r(z,a,t.values[t.values.length-f-1])},[e.createElementVNode("div",{style:e.normalizeStyle("height:"+i(t.values[t.values.length-f-1])+"%")},null,4)],42,b))),256)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(v.value,()=>(e.openBlock(),e.createElementBlock("div",{class:"top-miniChart_chartGridCol top-miniChart_chartGridCol-none",onMouseenter:l[0]||(l[0]=a=>h())},l[2]||(l[2]=[e.createElementVNode("div",null,null,-1)]),32))),256))],32)]),e.createElementVNode("div",E,[e.createElementVNode("span",{class:e.normalizeClass({"top-miniChart_dataDynamic":!0,[`top-miniChart_dataDynamic-direction_${d.value}`]:!0})},e.toDisplayString(Math.abs(n.value)||""),3),e.createElementVNode("span",_,e.toDisplayString(e.unref(g.percentOfNumber)(t.values[t.values.length-1])||0),1)]),t.additionalHTML?(e.openBlock(),e.createElementBlock("div",{key:0,innerHTML:t.additionalHTML},null,8,w)):e.createCommentVNode("",!0)],2))}}),N={key:0,class:"top-miniCharts_pages"},S=["onClick"],T=e.defineComponent({__name:"miniCharts",props:e.mergeModels({modelValue:{},countCharts:{},hideChartInMobile:{type:Boolean}},{modelValue:{},modelModifiers:{}}),emits:["update:modelValue"],setup(m){const o=m,s=e.useModel(m,"modelValue"),i=e.ref(null);let p;const u=e.ref(1),c=e.ref(1),v=()=>{u.value=Math.round(i.value.scrollHeight/i.value.clientHeight)};e.watch(u,()=>{u.value<c.value&&(c.value=1)}),e.watch(()=>o.countCharts,()=>v(),{flush:"post"});const h=e.computed(()=>{if(!s.value)return{};const r=s.value.elCol.getBoundingClientRect(),n={top:r.bottom+window.scrollY+"px"};return document.documentElement.clientWidth/2>r.right?n.left=r.right+window.scrollX+10+"px":(n.left=r.left+window.scrollX-10+"px",n.transform="translate(-100%, 0)"),n});return e.onMounted(()=>{p=new ResizeObserver(()=>v()),p.observe(i.value),e.watch(c,()=>{const d=(i.value.children[0].clientHeight+parseInt(window.getComputedStyle(i.value).getPropertyValue("row-gap")))*(c.value-1);i.value.scrollTo({top:d,behavior:"smooth"})})}),e.onUnmounted(()=>{p.disconnect()}),(r,n)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["top-miniCharts",{"top-miniCharts":!0,scrollable:u.value>1,"top-miniCharts_hideChartInMobile":r.hideChartInMobile}]),ref_key:"elRef",ref:i},[e.renderSlot(r.$slots,"default"),u.value>1?(e.openBlock(),e.createElementBlock("div",N,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(u.value,d=>(e.openBlock(),e.createElementBlock("span",{class:e.normalizeClass({"top-active":d===c.value}),onClick:t=>c.value=d},null,10,S))),256))])):e.createCommentVNode("",!0),(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[s.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"top-miniCharts_tooltip",style:e.normalizeStyle(h.value)},[e.createElementVNode("span",null,e.toDisplayString(s.value.date),1),e.createElementVNode("span",null,e.toDisplayString(s.value.value),1)],4)):e.createCommentVNode("",!0)]))],2))}}),H=D,I=T;C.TopMiniChart=H,C.TopMiniCharts=I,Object.defineProperty(C,Symbol.toStringTag,{value:"Module"})});
|
|
2
2
|
//# sourceMappingURL=charts.amd.js.map
|
package/charts/charts.amd.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"charts.amd.js","sources":["../../src/components/charts/miniChart/miniChart.vue","../../src/components/charts/miniCharts/miniCharts.vue","../../src/components/charts/charts.ts"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { Props } from './miniChart';\nimport { computed } from 'vue';\nimport { dateFormat } from '@/core/utils/date';\nimport { percentOfNumber } from '@/core/utils/number';\nimport { defaultNumberCols, minHeight } from './utils/consts';\n\nconst props = withDefaults(defineProps<Props>(), {\n\tcolor: 'blue',\n\tnumberCols: defaultNumberCols,\n});\nconst model = defineModel<Props['modelValue']>();\n\n/**\n * Расчет высоты колонки (в процентах)\n */\nconst genColHeight = (value: number): number => {\n\tlet maximumValue = maxValue.value;\n\n\t// для графиков средней и медианной делаем максимум 1\n\tif (props.isInvert) {\n\t\tvalue -= 1;\n\t\tmaximumValue -= 1;\n\t}\n\n\tlet height = maximumValue > 0 ? Math.round((value / maximumValue) * (100 - minHeight)) : 0;\n\tif (props.isInvert) return 100 - height;\n\n\treturn height + minHeight;\n};\n\nconst isActiveDate = (date: string) => props.activeDates.includes(date);\n\nconst maxValue = computed(() => Math.max(...props.values));\n\n/**\n * Из-за стиля .top-miniChart_chartGrid - direction: rtl\n */\nconst reversedDates = computed(() => props.dates.slice().reverse());\n\n/**\n * Кол-во пустых колонок\n */\nconst numOfEmptyCols = computed(() => {\n\tif (!props.dates.length) return 0;\n\n\treturn props.numberCols - props.dates.length;\n});\n\nconst resetModel = () => {\n\tmodel.value = null;\n};\n\nconst setModel = (e: Event, date: string, value: number | null) => {\n\tif (!(e.target instanceof HTMLElement)) return;\n\n\tmodel.value = {\n\t\telCol: e.target,\n\t\tdate: dateFormat(date),\n\t\tvalue: value === null ? '--' : value + (props.valueSuffix ?? ''),\n\t};\n};\n\n/**\n * Возвращает численный показатель динамики графика\n */\nconst
|
|
1
|
+
{"version":3,"file":"charts.amd.js","sources":["../../src/components/charts/miniChart/miniChart.vue","../../src/components/charts/miniCharts/miniCharts.vue","../../src/components/charts/charts.ts"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport type { Props } from './miniChart';\r\nimport { computed } from 'vue';\r\nimport { dateFormat } from '@/core/utils/date';\r\nimport { percentOfNumber } from '@/core/utils/number';\r\nimport { defaultNumberCols, minHeight } from './utils/consts';\r\n\r\nconst props = withDefaults(defineProps<Props>(), {\r\n\tcolor: 'blue',\r\n\tnumberCols: defaultNumberCols,\r\n});\r\nconst model = defineModel<Props['modelValue']>();\r\n\r\n/**\r\n * Расчет высоты колонки (в процентах)\r\n */\r\nconst genColHeight = (value: number): number => {\r\n\tlet maximumValue = maxValue.value;\r\n\r\n\t// для графиков средней и медианной делаем максимум 1\r\n\tif (props.isInvert) {\r\n\t\tvalue -= 1;\r\n\t\tmaximumValue -= 1;\r\n\t}\r\n\r\n\tlet height = maximumValue > 0 ? Math.round((value / maximumValue) * (100 - minHeight)) : 0;\r\n\tif (props.isInvert) return 100 - height;\r\n\r\n\treturn height + minHeight;\r\n};\r\n\r\nconst isActiveDate = (date: string) => props.activeDates.includes(date);\r\n\r\nconst maxValue = computed(() => Math.max(...props.values));\r\n\r\n/**\r\n * Из-за стиля .top-miniChart_chartGrid - direction: rtl\r\n */\r\nconst reversedDates = computed(() => props.dates.slice().reverse());\r\n\r\n/**\r\n * Кол-во пустых колонок\r\n */\r\nconst numOfEmptyCols = computed(() => {\r\n\tif (!props.dates.length) return 0;\r\n\r\n\treturn props.numberCols - props.dates.length;\r\n});\r\n\r\nconst resetModel = () => {\r\n\tmodel.value = null;\r\n};\r\n\r\nconst setModel = (e: Event, date: string, value: number | null) => {\r\n\tif (!(e.target instanceof HTMLElement)) return;\r\n\r\n\tmodel.value = {\r\n\t\telCol: e.target,\r\n\t\tdate: dateFormat(date),\r\n\t\tvalue: value === null ? '--' : value + (props.valueSuffix ?? ''),\r\n\t};\r\n};\r\n\r\n/**\r\n * Возвращает численный показатель динамики графика\r\n */\r\nconst localDynamic = computed(() => {\r\n\tlet dynamic = props.dynamic;\r\n\r\n\tif (typeof dynamic === 'undefined') {\r\n\t\tconst prevPeriodValue = props.values[props.keysForDyn.start];\r\n\t\tconst currentValue = props.values[props.keysForDyn.end];\r\n\t\tdynamic = currentValue - prevPeriodValue;\r\n\t}\r\n\r\n\tconst sign = dynamic < 0 ? -1 : 1;\r\n\r\n\treturn sign * (percentOfNumber(Math.abs(dynamic)) as number);\r\n});\r\n\r\nconst dynamicDirection = computed(() => {\r\n\tlet direction: 'up' | 'stay' | 'down' = 'stay';\r\n\r\n\tif (!props.isInvert) {\r\n\t\tif (localDynamic.value > 0) direction = 'up';\r\n\t\tif (localDynamic.value < 0) direction = 'down';\r\n\t} else {\r\n\t\tif (localDynamic.value > 0) direction = 'down';\r\n\t\tif (localDynamic.value < 0) direction = 'up';\r\n\t}\r\n\r\n\treturn direction;\r\n});\r\n\r\n</script>\r\n\r\n<template>\r\n\t<div\r\n\t\t:class=\"{\r\n\t\t\t['top-miniChart']: true,\r\n\t\t\t['top-miniChart_hideChartInMobile']: hideChartInMobile,\r\n\t\t\t[`top-color_${color}`]: true\r\n\t\t}\"\r\n\t>\r\n\t\t<div\r\n\t\t\tclass=\"top-miniChart_title top-ellipsis\"\r\n\t\t\t:data-top-icon=\"gIcon\"\r\n\t\t>\r\n\t\t\t{{ title }}\r\n\t\t</div>\r\n\r\n\t\t<div class=\"top-miniChart_chart\">\r\n\t\t\t<div\r\n\t\t\t\tclass=\"top-miniChart_chartGrid\"\r\n\t\t\t\t@mouseleave=\"resetModel()\"\r\n\t\t\t>\r\n\t\t\t\t<div\r\n\t\t\t\t\tv-for=\"(date, i) in reversedDates\"\r\n\t\t\t\t\t:class=\"{\r\n\t\t\t\t\t\t['top-miniChart_chartGridCol']: true,\r\n\t\t\t\t\t\t['top-active']: isActiveDate(date)\r\n\t\t\t\t\t}\"\r\n\t\t\t\t\t@mouseenter=\"setModel($event, date, values[values.length - i - 1])\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<div :style=\"'height:' + genColHeight(values[values.length - i - 1]) + '%'\"/>\r\n\t\t\t\t</div>\r\n\t\t\t\t<div\r\n\t\t\t\t\tv-for=\"() in numOfEmptyCols\"\r\n\t\t\t\t\tclass=\"top-miniChart_chartGridCol top-miniChart_chartGridCol-none\"\r\n\t\t\t\t\t@mouseenter=\"resetModel()\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<div></div>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\r\n\t\t<div class=\"top-miniChart_data\">\r\n\t\t\t<span :class=\"{\r\n\t\t\t\t['top-miniChart_dataDynamic']: true,\r\n\t\t\t\t[`top-miniChart_dataDynamic-direction_${dynamicDirection}`]: true,\r\n\t\t\t}\">\r\n\t\t\t\t{{ Math.abs(localDynamic) || '' }}\r\n\t\t\t</span>\r\n\t\t\t<span class=\"top-miniChart_dataValue\">\r\n\t\t\t\t{{ percentOfNumber(values[values.length - 1]) || 0 }}\r\n\t\t\t</span>\r\n\t\t</div>\r\n\r\n\t\t<div\r\n\t\t\tv-if=\"additionalHTML\"\r\n\t\t\tv-html=\"additionalHTML\"\r\n\t\t/>\r\n\t</div>\r\n\r\n</template>\r\n<style>\r\n@import \"./styles/miniChart.css\";\r\n</style>\r\n","<script setup lang=\"ts\">\r\nimport { ref, computed, watch, onMounted, onUnmounted } from 'vue';\r\nimport type { Style, Props } from './miniCharts';\r\n\r\nconst props = defineProps<Props>();\r\nconst model = defineModel<Props['modelValue']>();\r\n\r\nconst elRef = ref<HTMLElement | null>(null);\r\n\r\nlet pagesResizeObserver: ResizeObserver;\r\n\r\n/**\r\n * Количество страниц\r\n */\r\nconst countPages = ref(1);\r\n\r\n/**\r\n * Активная страница\r\n */\r\nconst activePage = ref(1);\r\n\r\n/**\r\n * Установка количества страниц в блоке\r\n */\r\nconst setCountPages = () => {\r\n\tcountPages.value = Math.round(elRef.value!.scrollHeight / elRef.value!.clientHeight);\r\n};\r\n\r\nwatch(countPages, () => {\r\n\tif (countPages.value < activePage.value) {\r\n\t\tactivePage.value = 1;\r\n\t}\r\n});\r\n\r\nwatch(\r\n\t() => props.countCharts,\r\n\t() => setCountPages(),\r\n\t{ flush: 'post' }\r\n);\r\n\r\n/**\r\n * Расчет положения для подсказки\r\n */\r\nconst tooltipStyle = computed(() => {\r\n\tif (!model.value) return {};\r\n\r\n\tconst box = model.value.elCol.getBoundingClientRect();\r\n\r\n\tconst style: Style = {\r\n\t\ttop: box.bottom + window.scrollY + 'px',\r\n\t};\r\n\r\n\tif (document.documentElement.clientWidth / 2 > box.right) {\r\n\t\tstyle.left = box.right + window.scrollX + 10 + 'px';\r\n\t} else {\r\n\t\tstyle.left = box.left + window.scrollX - 10 + 'px';\r\n\t\tstyle.transform = 'translate(-100%, 0)';\r\n\t}\r\n\r\n\treturn style;\r\n});\r\n\r\nonMounted(() => {\r\n\t/**\r\n\t * Функционал переключения экранов графиков\r\n\t */\r\n\tpagesResizeObserver = new ResizeObserver(() => setCountPages());\r\n\tpagesResizeObserver.observe(elRef.value!);\r\n\r\n\twatch(activePage, () => {\r\n\t\tconst elMiniChart = elRef.value!.children[0];\r\n\t\tconst pageHeight = elMiniChart.clientHeight + parseInt(window.getComputedStyle(elRef.value!).getPropertyValue('row-gap'));\r\n\t\tconst scrollTop = pageHeight * (activePage.value - 1);\r\n\r\n\t\telRef.value!.scrollTo({ top: scrollTop, behavior: 'smooth' });\r\n\t});\r\n});\r\n\r\nonUnmounted(() => {\r\n\tpagesResizeObserver.disconnect();\r\n});\r\n</script>\r\n\r\n<template>\r\n\t<div\r\n\t\tclass=\"top-miniCharts\"\r\n\t\t:class=\"{\r\n\t\t\t['top-miniCharts']: true,\r\n\t\t\t['scrollable']: countPages > 1,\r\n\t\t\t['top-miniCharts_hideChartInMobile']: hideChartInMobile,\r\n\t\t}\"\r\n\t\tref=\"elRef\"\r\n\t>\r\n\r\n\t\t<slot></slot>\r\n\r\n\t\t<div\r\n\t\t\tv-if=\"countPages > 1\"\r\n\t\t\tclass=\"top-miniCharts_pages\"\r\n\t\t>\r\n\t\t\t<span\r\n\t\t\t\tv-for=\"n in countPages\"\r\n\t\t\t\t:class=\"{['top-active']: n === activePage}\"\r\n\t\t\t\t@click=\"activePage = n\"\r\n\t\t\t></span>\r\n\t\t</div>\r\n\r\n\t\t<Teleport to=\"body\">\r\n\t\t\t<div\r\n\t\t\t\tv-if=\"model\"\r\n\t\t\t\tclass=\"top-miniCharts_tooltip\"\r\n\t\t\t\t:style=\"tooltipStyle\"\r\n\t\t\t>\r\n\t\t\t\t<span>{{ model.date }}</span>\r\n\t\t\t\t<span>{{ model.value }}</span>\r\n\t\t\t</div>\r\n\t\t</Teleport>\r\n\t</div>\r\n\r\n</template>\r\n\r\n<style>\r\n@import \"./styles/miniCharts.css\";\r\n</style>\r\n\r\n\r\n\r\n\r\n","import type { ComponentCustomProps } from 'vue';\r\n\r\nimport MiniChart from './miniChart/miniChart.vue';\r\nimport MiniCharts from './miniCharts/miniCharts.vue';\r\n\r\nexport const TopMiniChart = MiniChart as typeof MiniChart & ComponentCustomProps;\r\n\r\nexport const TopMiniCharts = MiniCharts as typeof MiniCharts & ComponentCustomProps;\r\n"],"names":["props","__props","genColHeight","value","maximumValue","maxValue","height","minHeight","isActiveDate","date","vue","reversedDates","numOfEmptyCols","model","e","forms","localDynamic","dynamic","prevPeriodValue","utils_number","dynamicDirection","direction","elRef","countPages","activePage","tooltipStyle","box","style","scrollTop","pagesResizeObserver","TopMiniChart","_sfc_main$1","TopMiniCharts","_sfc_main"],"mappings":"wtBAOA,MAAAA,EAAAC,+BASAC,EAAAC,GAAA,CACC,IAAAC,EAAAC,EAAA,MAGAL,EAAA,kFAQAM,EAAAC,CAAgB,EAGjBC,EAAAC,GAAAT,EAAA,YAAA,SAAAS,CAAA,EAEAJ,EAAAK,EAAA,SAAA,IAAA,KAAA,IAAA,GAAAV,EAAA,MAAA,CAAA,EAKAW,EAAAD,EAAA,SAAA,IAAAV,EAAA,MAAA,MAAA,EAAA,QAAA,CAAA,EAKAY,EAAAF,EAAA,SAAA,gDAGuC,SAItCG,EAAA,MAAA,IAAc,yDAMA,MAAAC,EAAA,OACJ,KAAAC,EAAA,WAAAN,CAAA,EACY,MAAAN,IAAA,KAAA,KAAAA,GAAAH,EAAA,aAAA,GACwC,EAC9D,EAMDgB,EAAAN,EAAA,SAAA,IAAA,CACC,IAAAO,EAAAjB,EAAA,QAEA,GAAA,OAAAiB,EAAA,IAAA,CACC,MAAAC,EAAAlB,EAAA,OAAAA,EAAA,WAAA,KAAA,EAEAiB,EADAjB,EAAA,OAAAA,EAAA,WAAA,GAAA,EACAkB,EAKD,iBAAAC,EAAA,gBAAA,KAAA,IAAAF,CAAA,CAAA,CAAgD,CAAA,EAGjDG,EAAAV,EAAA,SAAA,IAAA,CACC,IAAAW,EAAA,OAEA,OAAArB,EAAA,kGAQO,CAAA,0yDCvFR,MAAAA,EAAAC,+BAGAqB,EAAAZ,EAAA,IAAA,IAAA,QAOA,MAAAa,EAAAb,EAAA,IAAA,CAAA,EAKAc,EAAAd,EAAA,IAAA,CAAA,sEAMoF,EAGpFA,EAAA,MAAAa,EAAA,IAAA,mBAEEC,EAAA,MAAA,EACD,CAAA,EAGDd,EAAA,gCAEqB,CAAA,MAAA,MAAA,CACJ,EAMjB,MAAAe,EAAAf,EAAA,SAAA,IAAA,uGAMqC,EAGpC,OAAA,SAAA,gBAAA,YAAA,EAAAgB,EAAA,MACCC,EAAA,KAAAD,EAAA,MAAA,OAAA,QAAA,GAAA,MAEAC,EAAA,KAAAD,EAAA,KAAA,OAAA,QAAA,GAAA,KACAC,EAAA,UAAA,wBAGM,CAAA,2EAUPjB,EAAA,MAAAc,EAAA,IAAA,+HAKCF,EAAA,MAAA,SAAA,CAAA,IAAAM,EAAA,SAAA,QAAA,CAAA,CAA4D,CAAA,CAC5D,CAAA,qBAIDC,EAAA,WAAA,CAA+B,CAAA,04BC1EzBC,EAAAC,EAEAC,EAAAC"}
|
package/charts/charts.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { Core as P } from "../core/app.js";
|
|
2
|
-
import { defineComponent as
|
|
3
|
-
import { d as X } from "../.chunks/forms-
|
|
2
|
+
import { defineComponent as T, mergeModels as S, useModel as $, computed as h, openBlock as a, createElementBlock as i, normalizeClass as f, createElementVNode as r, toDisplayString as g, Fragment as k, renderList as w, normalizeStyle as L, unref as F, createCommentVNode as H, ref as b, watch as V, onMounted as N, onUnmounted as R, renderSlot as z, createBlock as G, Teleport as O } from "vue";
|
|
3
|
+
import { d as X } from "../.chunks/forms-CHyoeELv.es.js";
|
|
4
4
|
import { percentOfNumber as I } from "../utils/number.js";
|
|
5
5
|
const E = ["../assets/charts.css"].map((v) => import.meta.resolve(v));
|
|
6
6
|
P.insertCSSLinkToPage(E, !0);
|
|
7
|
-
const A = 90,
|
|
7
|
+
const A = 90, D = 10, U = ["data-top-icon"], W = { class: "top-miniChart_chart" }, Y = ["onMouseenter"], j = { class: "top-miniChart_data" }, q = { class: "top-miniChart_dataValue" }, J = ["innerHTML"], K = /* @__PURE__ */ T({
|
|
8
8
|
__name: "miniChart",
|
|
9
9
|
props: /* @__PURE__ */ S({
|
|
10
10
|
title: {},
|
|
@@ -14,6 +14,7 @@ const A = 90, T = 10, U = ["data-top-icon"], W = { class: "top-miniChart_chart"
|
|
|
14
14
|
values: {},
|
|
15
15
|
activeDates: {},
|
|
16
16
|
keysForDyn: {},
|
|
17
|
+
dynamic: {},
|
|
17
18
|
isInvert: { type: Boolean },
|
|
18
19
|
numberCols: { default: A },
|
|
19
20
|
additionalHTML: {},
|
|
@@ -29,24 +30,28 @@ const A = 90, T = 10, U = ["data-top-icon"], W = { class: "top-miniChart_chart"
|
|
|
29
30
|
const t = v, d = $(v, "modelValue"), u = (e) => {
|
|
30
31
|
let o = c.value;
|
|
31
32
|
t.isInvert && (e -= 1, o -= 1);
|
|
32
|
-
let
|
|
33
|
-
return t.isInvert ? 100 -
|
|
34
|
-
}, C = (e) => t.activeDates.includes(e), c =
|
|
33
|
+
let n = o > 0 ? Math.round(e / o * (100 - D)) : 0;
|
|
34
|
+
return t.isInvert ? 100 - n : n + D;
|
|
35
|
+
}, C = (e) => t.activeDates.includes(e), c = h(() => Math.max(...t.values)), m = h(() => t.dates.slice().reverse()), y = h(() => t.dates.length ? t.numberCols - t.dates.length : 0), M = () => {
|
|
35
36
|
d.value = null;
|
|
36
|
-
},
|
|
37
|
+
}, s = (e, o, n) => {
|
|
37
38
|
e.target instanceof HTMLElement && (d.value = {
|
|
38
39
|
elCol: e.target,
|
|
39
40
|
date: X(o),
|
|
40
|
-
value:
|
|
41
|
+
value: n === null ? "--" : n + (t.valueSuffix ?? "")
|
|
41
42
|
});
|
|
42
|
-
},
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
43
|
+
}, l = h(() => {
|
|
44
|
+
let e = t.dynamic;
|
|
45
|
+
if (typeof e > "u") {
|
|
46
|
+
const n = t.values[t.keysForDyn.start];
|
|
47
|
+
e = t.values[t.keysForDyn.end] - n;
|
|
48
|
+
}
|
|
49
|
+
return (e < 0 ? -1 : 1) * I(Math.abs(e));
|
|
50
|
+
}), p = h(() => {
|
|
46
51
|
let e = "stay";
|
|
47
|
-
return t.isInvert ? (
|
|
52
|
+
return t.isInvert ? (l.value > 0 && (e = "down"), l.value < 0 && (e = "up")) : (l.value > 0 && (e = "up"), l.value < 0 && (e = "down")), e;
|
|
48
53
|
});
|
|
49
|
-
return (e, o) => (a(),
|
|
54
|
+
return (e, o) => (a(), i("div", {
|
|
50
55
|
class: f({
|
|
51
56
|
"top-miniChart": !0,
|
|
52
57
|
"top-miniChart_hideChartInMobile": e.hideChartInMobile,
|
|
@@ -60,22 +65,22 @@ const A = 90, T = 10, U = ["data-top-icon"], W = { class: "top-miniChart_chart"
|
|
|
60
65
|
r("div", W, [
|
|
61
66
|
r("div", {
|
|
62
67
|
class: "top-miniChart_chartGrid",
|
|
63
|
-
onMouseleave: o[1] || (o[1] = (
|
|
68
|
+
onMouseleave: o[1] || (o[1] = (n) => M())
|
|
64
69
|
}, [
|
|
65
|
-
(a(!0),
|
|
70
|
+
(a(!0), i(k, null, w(m.value, (n, _) => (a(), i("div", {
|
|
66
71
|
class: f({
|
|
67
72
|
"top-miniChart_chartGridCol": !0,
|
|
68
|
-
"top-active": C(
|
|
73
|
+
"top-active": C(n)
|
|
69
74
|
}),
|
|
70
|
-
onMouseenter: (B) =>
|
|
75
|
+
onMouseenter: (B) => s(B, n, e.values[e.values.length - _ - 1])
|
|
71
76
|
}, [
|
|
72
77
|
r("div", {
|
|
73
78
|
style: L("height:" + u(e.values[e.values.length - _ - 1]) + "%")
|
|
74
79
|
}, null, 4)
|
|
75
80
|
], 42, Y))), 256)),
|
|
76
|
-
(a(!0),
|
|
81
|
+
(a(!0), i(k, null, w(y.value, () => (a(), i("div", {
|
|
77
82
|
class: "top-miniChart_chartGridCol top-miniChart_chartGridCol-none",
|
|
78
|
-
onMouseenter: o[0] || (o[0] = (
|
|
83
|
+
onMouseenter: o[0] || (o[0] = (n) => M())
|
|
79
84
|
}, o[2] || (o[2] = [
|
|
80
85
|
r("div", null, null, -1)
|
|
81
86
|
]), 32))), 256))
|
|
@@ -85,12 +90,12 @@ const A = 90, T = 10, U = ["data-top-icon"], W = { class: "top-miniChart_chart"
|
|
|
85
90
|
r("span", {
|
|
86
91
|
class: f({
|
|
87
92
|
"top-miniChart_dataDynamic": !0,
|
|
88
|
-
[`top-miniChart_dataDynamic-direction_${
|
|
93
|
+
[`top-miniChart_dataDynamic-direction_${p.value}`]: !0
|
|
89
94
|
})
|
|
90
|
-
}, g(Math.abs(
|
|
95
|
+
}, g(Math.abs(l.value) || ""), 3),
|
|
91
96
|
r("span", q, g(F(I)(e.values[e.values.length - 1]) || 0), 1)
|
|
92
97
|
]),
|
|
93
|
-
e.additionalHTML ? (a(),
|
|
98
|
+
e.additionalHTML ? (a(), i("div", {
|
|
94
99
|
key: 0,
|
|
95
100
|
innerHTML: e.additionalHTML
|
|
96
101
|
}, null, 8, J)) : H("", !0)
|
|
@@ -99,7 +104,7 @@ const A = 90, T = 10, U = ["data-top-icon"], W = { class: "top-miniChart_chart"
|
|
|
99
104
|
}), Q = {
|
|
100
105
|
key: 0,
|
|
101
106
|
class: "top-miniCharts_pages"
|
|
102
|
-
}, Z = ["onClick"], x = /* @__PURE__ */
|
|
107
|
+
}, Z = ["onClick"], x = /* @__PURE__ */ T({
|
|
103
108
|
__name: "miniCharts",
|
|
104
109
|
props: /* @__PURE__ */ S({
|
|
105
110
|
modelValue: {},
|
|
@@ -113,51 +118,51 @@ const A = 90, T = 10, U = ["data-top-icon"], W = { class: "top-miniChart_chart"
|
|
|
113
118
|
setup(v) {
|
|
114
119
|
const t = v, d = $(v, "modelValue"), u = b(null);
|
|
115
120
|
let C;
|
|
116
|
-
const c = b(1), m = b(1),
|
|
121
|
+
const c = b(1), m = b(1), y = () => {
|
|
117
122
|
c.value = Math.round(u.value.scrollHeight / u.value.clientHeight);
|
|
118
123
|
};
|
|
119
124
|
V(c, () => {
|
|
120
125
|
c.value < m.value && (m.value = 1);
|
|
121
126
|
}), V(
|
|
122
127
|
() => t.countCharts,
|
|
123
|
-
() =>
|
|
128
|
+
() => y(),
|
|
124
129
|
{ flush: "post" }
|
|
125
130
|
);
|
|
126
|
-
const
|
|
131
|
+
const M = h(() => {
|
|
127
132
|
if (!d.value) return {};
|
|
128
|
-
const
|
|
129
|
-
top:
|
|
133
|
+
const s = d.value.elCol.getBoundingClientRect(), l = {
|
|
134
|
+
top: s.bottom + window.scrollY + "px"
|
|
130
135
|
};
|
|
131
|
-
return document.documentElement.clientWidth / 2 >
|
|
136
|
+
return document.documentElement.clientWidth / 2 > s.right ? l.left = s.right + window.scrollX + 10 + "px" : (l.left = s.left + window.scrollX - 10 + "px", l.transform = "translate(-100%, 0)"), l;
|
|
132
137
|
});
|
|
133
138
|
return N(() => {
|
|
134
|
-
C = new ResizeObserver(() =>
|
|
135
|
-
const
|
|
136
|
-
u.value.scrollTo({ top:
|
|
139
|
+
C = new ResizeObserver(() => y()), C.observe(u.value), V(m, () => {
|
|
140
|
+
const p = (u.value.children[0].clientHeight + parseInt(window.getComputedStyle(u.value).getPropertyValue("row-gap"))) * (m.value - 1);
|
|
141
|
+
u.value.scrollTo({ top: p, behavior: "smooth" });
|
|
137
142
|
});
|
|
138
143
|
}), R(() => {
|
|
139
144
|
C.disconnect();
|
|
140
|
-
}), (
|
|
145
|
+
}), (s, l) => (a(), i("div", {
|
|
141
146
|
class: f(["top-miniCharts", {
|
|
142
147
|
"top-miniCharts": !0,
|
|
143
148
|
scrollable: c.value > 1,
|
|
144
|
-
"top-miniCharts_hideChartInMobile":
|
|
149
|
+
"top-miniCharts_hideChartInMobile": s.hideChartInMobile
|
|
145
150
|
}]),
|
|
146
151
|
ref_key: "elRef",
|
|
147
152
|
ref: u
|
|
148
153
|
}, [
|
|
149
|
-
z(
|
|
150
|
-
c.value > 1 ? (a(),
|
|
151
|
-
(a(!0),
|
|
152
|
-
class: f({ "top-active":
|
|
153
|
-
onClick: (e) => m.value =
|
|
154
|
+
z(s.$slots, "default"),
|
|
155
|
+
c.value > 1 ? (a(), i("div", Q, [
|
|
156
|
+
(a(!0), i(k, null, w(c.value, (p) => (a(), i("span", {
|
|
157
|
+
class: f({ "top-active": p === m.value }),
|
|
158
|
+
onClick: (e) => m.value = p
|
|
154
159
|
}, null, 10, Z))), 256))
|
|
155
160
|
])) : H("", !0),
|
|
156
161
|
(a(), G(O, { to: "body" }, [
|
|
157
|
-
d.value ? (a(),
|
|
162
|
+
d.value ? (a(), i("div", {
|
|
158
163
|
key: 0,
|
|
159
164
|
class: "top-miniCharts_tooltip",
|
|
160
|
-
style: L(
|
|
165
|
+
style: L(M.value)
|
|
161
166
|
}, [
|
|
162
167
|
r("span", null, g(d.value.date), 1),
|
|
163
168
|
r("span", null, g(d.value.value), 1)
|
package/charts/charts.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"charts.js","sources":["../../src/components/charts/miniChart/utils/consts.ts","../../src/components/charts/miniChart/miniChart.vue","../../src/components/charts/miniCharts/miniCharts.vue","../../src/components/charts/charts.ts"],"sourcesContent":["/**\n * Кол-во столбцов по умолчанию\n */\nexport const defaultNumberCols = 90;\n\n/**\n * Минимальная высота колонки (в процентах)\n */\nexport const minHeight = 10; // %","<script setup lang=\"ts\">\nimport type { Props } from './miniChart';\nimport { computed } from 'vue';\nimport { dateFormat } from '@/core/utils/date';\nimport { percentOfNumber } from '@/core/utils/number';\nimport { defaultNumberCols, minHeight } from './utils/consts';\n\nconst props = withDefaults(defineProps<Props>(), {\n\tcolor: 'blue',\n\tnumberCols: defaultNumberCols,\n});\nconst model = defineModel<Props['modelValue']>();\n\n/**\n * Расчет высоты колонки (в процентах)\n */\nconst genColHeight = (value: number): number => {\n\tlet maximumValue = maxValue.value;\n\n\t// для графиков средней и медианной делаем максимум 1\n\tif (props.isInvert) {\n\t\tvalue -= 1;\n\t\tmaximumValue -= 1;\n\t}\n\n\tlet height = maximumValue > 0 ? Math.round((value / maximumValue) * (100 - minHeight)) : 0;\n\tif (props.isInvert) return 100 - height;\n\n\treturn height + minHeight;\n};\n\nconst isActiveDate = (date: string) => props.activeDates.includes(date);\n\nconst maxValue = computed(() => Math.max(...props.values));\n\n/**\n * Из-за стиля .top-miniChart_chartGrid - direction: rtl\n */\nconst reversedDates = computed(() => props.dates.slice().reverse());\n\n/**\n * Кол-во пустых колонок\n */\nconst numOfEmptyCols = computed(() => {\n\tif (!props.dates.length) return 0;\n\n\treturn props.numberCols - props.dates.length;\n});\n\nconst resetModel = () => {\n\tmodel.value = null;\n};\n\nconst setModel = (e: Event, date: string, value: number | null) => {\n\tif (!(e.target instanceof HTMLElement)) return;\n\n\tmodel.value = {\n\t\telCol: e.target,\n\t\tdate: dateFormat(date),\n\t\tvalue: value === null ? '--' : value + (props.valueSuffix ?? ''),\n\t};\n};\n\n/**\n * Возвращает численный показатель динамики графика\n */\nconst dynamic = computed(() => {\n\tconst prevPeriodValue = props.values[props.keysForDyn.start];\n\tconst currentValue = props.values[props.keysForDyn.end];\n\tconst dynValue = currentValue - prevPeriodValue;\n\tconst sign = dynValue < 0 ? -1 : 1;\n\n\treturn sign * (percentOfNumber(Math.abs(dynValue)) as number);\n});\n\nconst dynamicDirection = computed(() => {\n\tlet direction: 'up' | 'stay' | 'down' = 'stay';\n\n\tif (!props.isInvert) {\n\t\tif (dynamic.value > 0) direction = 'up';\n\t\tif (dynamic.value < 0) direction = 'down';\n\t} else {\n\t\tif (dynamic.value > 0) direction = 'down';\n\t\tif (dynamic.value < 0) direction = 'up';\n\t}\n\n\treturn direction;\n});\n\n</script>\n\n<template>\n\t<div\n\t\t:class=\"{\n\t\t\t['top-miniChart']: true,\n\t\t\t['top-miniChart_hideChartInMobile']: hideChartInMobile,\n\t\t\t[`top-color_${color}`]: true,\n\t\t}\"\n\t>\n\t\t<div\n\t\t\tclass=\"top-miniChart_title top-ellipsis\"\n\t\t\t:data-top-icon=\"gIcon\"\n\t\t>\n\t\t\t{{ title }}\n\t\t</div>\n\n\t\t<div class=\"top-miniChart_chart\">\n\t\t\t<div\n\t\t\t\tclass=\"top-miniChart_chartGrid\"\n\t\t\t\t@mouseleave=\"resetModel()\"\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tv-for=\"(date, i) in reversedDates\"\n\t\t\t\t\t:class=\"{\n\t\t\t\t\t\t['top-miniChart_chartGridCol']: true,\n\t\t\t\t\t\t['top-active']: isActiveDate(date)\n\t\t\t\t\t}\"\n\t\t\t\t\t@mouseenter=\"setModel($event, date, values[values.length - i - 1])\"\n\t\t\t\t>\n\t\t\t\t\t<div :style=\"'height:' + genColHeight(values[values.length - i - 1]) + '%'\"/>\n\t\t\t\t</div>\n\t\t\t\t<div\n\t\t\t\t\tv-for=\"() in numOfEmptyCols\"\n\t\t\t\t\tclass=\"top-miniChart_chartGridCol top-miniChart_chartGridCol-none\"\n\t\t\t\t\t@mouseenter=\"resetModel()\"\n\t\t\t\t>\n\t\t\t\t\t<div></div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<div class=\"top-miniChart_data\">\n\t\t\t<span :class=\"{\n\t\t\t\t['top-miniChart_dataDynamic']: true,\n\t\t\t\t[`top-miniChart_dataDynamic-direction_${dynamicDirection}`]: true,\n\t\t\t}\">\n\t\t\t\t{{ Math.abs(dynamic) || '' }}\n\t\t\t</span>\n\t\t\t<span class=\"top-miniChart_dataValue\">\n\t\t\t\t{{ percentOfNumber(values[values.length - 1]) || 0 }}\n\t\t\t</span>\n\t\t</div>\n\n\t\t<div\n\t\t\tv-if=\"additionalHTML\"\n\t\t\tv-html=\"additionalHTML\"\n\t\t/>\n\t</div>\n\n</template>\n<style>\n@import \"./styles/miniChart.css\";\n</style>\n","<script setup lang=\"ts\">\nimport { ref, computed, watch, onMounted, onUnmounted } from 'vue';\nimport type { Style, Props } from './miniCharts';\n\nconst props = defineProps<Props>();\nconst model = defineModel<Props['modelValue']>();\n\nconst elRef = ref<HTMLElement | null>(null);\n\nlet pagesResizeObserver: ResizeObserver;\n\n/**\n * Количество страниц\n */\nconst countPages = ref(1);\n\n/**\n * Активная страница\n */\nconst activePage = ref(1);\n\n/**\n * Установка количества страниц в блоке\n */\nconst setCountPages = () => {\n\tcountPages.value = Math.round(elRef.value!.scrollHeight / elRef.value!.clientHeight);\n};\n\nwatch(countPages, () => {\n\tif (countPages.value < activePage.value) {\n\t\tactivePage.value = 1;\n\t}\n});\n\nwatch(\n\t() => props.countCharts,\n\t() => setCountPages(),\n\t{ flush: 'post' }\n);\n\n/**\n * Расчет положения для подсказки\n */\nconst tooltipStyle = computed(() => {\n\tif (!model.value) return {};\n\n\tconst box = model.value.elCol.getBoundingClientRect();\n\n\tconst style: Style = {\n\t\ttop: box.bottom + window.scrollY + 'px',\n\t};\n\n\tif (document.documentElement.clientWidth / 2 > box.right) {\n\t\tstyle.left = box.right + window.scrollX + 10 + 'px';\n\t} else {\n\t\tstyle.left = box.left + window.scrollX - 10 + 'px';\n\t\tstyle.transform = 'translate(-100%, 0)';\n\t}\n\n\treturn style;\n});\n\nonMounted(() => {\n\t/**\n\t * Функционал переключения экранов графиков\n\t */\n\tpagesResizeObserver = new ResizeObserver(() => setCountPages());\n\tpagesResizeObserver.observe(elRef.value!);\n\n\twatch(activePage, () => {\n\t\tconst elMiniChart = elRef.value!.children[0];\n\t\tconst pageHeight = elMiniChart.clientHeight + parseInt(window.getComputedStyle(elRef.value!).getPropertyValue('row-gap'));\n\t\tconst scrollTop = pageHeight * (activePage.value - 1);\n\n\t\telRef.value!.scrollTo({ top: scrollTop, behavior: 'smooth' });\n\t});\n});\n\nonUnmounted(() => {\n\tpagesResizeObserver.disconnect();\n});\n</script>\n\n<template>\n\t<div\n\t\tclass=\"top-miniCharts\"\n\t\t:class=\"{\n\t\t\t['top-miniCharts']: true,\n\t\t\t['scrollable']: countPages > 1,\n\t\t\t['top-miniCharts_hideChartInMobile']: hideChartInMobile,\n\t\t}\"\n\t\tref=\"elRef\"\n\t>\n\n\t\t<slot></slot>\n\n\t\t<div\n\t\t\tv-if=\"countPages > 1\"\n\t\t\tclass=\"top-miniCharts_pages\"\n\t\t>\n\t\t\t<span\n\t\t\t\tv-for=\"n in countPages\"\n\t\t\t\t:class=\"{['top-active']: n === activePage}\"\n\t\t\t\t@click=\"activePage = n\"\n\t\t\t></span>\n\t\t</div>\n\n\t\t<Teleport to=\"body\">\n\t\t\t<div\n\t\t\t\tv-if=\"model\"\n\t\t\t\tclass=\"top-miniCharts_tooltip\"\n\t\t\t\t:style=\"tooltipStyle\"\n\t\t\t>\n\t\t\t\t<span>{{ model.date }}</span>\n\t\t\t\t<span>{{ model.value }}</span>\n\t\t\t</div>\n\t\t</Teleport>\n\t</div>\n\n</template>\n\n<style>\n@import \"./styles/miniCharts.css\";\n</style>\n\n\n\n\n","import type { ComponentCustomProps } from 'vue';\n\nimport MiniChart from './miniChart/miniChart.vue';\nimport MiniCharts from './miniCharts/miniCharts.vue';\n\nexport const TopMiniChart = MiniChart as typeof MiniChart & ComponentCustomProps;\n\nexport const TopMiniCharts = MiniCharts as typeof MiniCharts & ComponentCustomProps;\n"],"names":["defaultNumberCols","minHeight","props","__props","model","useModel","genColHeight","value","maximumValue","maxValue","height","isActiveDate","date","computed","reversedDates","numOfEmptyCols","resetModel","setModel","dateFormat","dynamic","prevPeriodValue","dynValue","percentOfNumber","dynamicDirection","direction","elRef","ref","pagesResizeObserver","countPages","activePage","setCountPages","watch","tooltipStyle","box","style","onMounted","scrollTop","onUnmounted","TopMiniChart","_sfc_main$1","TopMiniCharts","_sfc_main"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"charts.js","sources":["../../src/components/charts/miniChart/utils/consts.ts","../../src/components/charts/miniChart/miniChart.vue","../../src/components/charts/miniCharts/miniCharts.vue","../../src/components/charts/charts.ts"],"sourcesContent":["/**\r\n * Кол-во столбцов по умолчанию\r\n */\r\nexport const defaultNumberCols = 90;\r\n\r\n/**\r\n * Минимальная высота колонки (в процентах)\r\n */\r\nexport const minHeight = 10; // %","<script setup lang=\"ts\">\r\nimport type { Props } from './miniChart';\r\nimport { computed } from 'vue';\r\nimport { dateFormat } from '@/core/utils/date';\r\nimport { percentOfNumber } from '@/core/utils/number';\r\nimport { defaultNumberCols, minHeight } from './utils/consts';\r\n\r\nconst props = withDefaults(defineProps<Props>(), {\r\n\tcolor: 'blue',\r\n\tnumberCols: defaultNumberCols,\r\n});\r\nconst model = defineModel<Props['modelValue']>();\r\n\r\n/**\r\n * Расчет высоты колонки (в процентах)\r\n */\r\nconst genColHeight = (value: number): number => {\r\n\tlet maximumValue = maxValue.value;\r\n\r\n\t// для графиков средней и медианной делаем максимум 1\r\n\tif (props.isInvert) {\r\n\t\tvalue -= 1;\r\n\t\tmaximumValue -= 1;\r\n\t}\r\n\r\n\tlet height = maximumValue > 0 ? Math.round((value / maximumValue) * (100 - minHeight)) : 0;\r\n\tif (props.isInvert) return 100 - height;\r\n\r\n\treturn height + minHeight;\r\n};\r\n\r\nconst isActiveDate = (date: string) => props.activeDates.includes(date);\r\n\r\nconst maxValue = computed(() => Math.max(...props.values));\r\n\r\n/**\r\n * Из-за стиля .top-miniChart_chartGrid - direction: rtl\r\n */\r\nconst reversedDates = computed(() => props.dates.slice().reverse());\r\n\r\n/**\r\n * Кол-во пустых колонок\r\n */\r\nconst numOfEmptyCols = computed(() => {\r\n\tif (!props.dates.length) return 0;\r\n\r\n\treturn props.numberCols - props.dates.length;\r\n});\r\n\r\nconst resetModel = () => {\r\n\tmodel.value = null;\r\n};\r\n\r\nconst setModel = (e: Event, date: string, value: number | null) => {\r\n\tif (!(e.target instanceof HTMLElement)) return;\r\n\r\n\tmodel.value = {\r\n\t\telCol: e.target,\r\n\t\tdate: dateFormat(date),\r\n\t\tvalue: value === null ? '--' : value + (props.valueSuffix ?? ''),\r\n\t};\r\n};\r\n\r\n/**\r\n * Возвращает численный показатель динамики графика\r\n */\r\nconst localDynamic = computed(() => {\r\n\tlet dynamic = props.dynamic;\r\n\r\n\tif (typeof dynamic === 'undefined') {\r\n\t\tconst prevPeriodValue = props.values[props.keysForDyn.start];\r\n\t\tconst currentValue = props.values[props.keysForDyn.end];\r\n\t\tdynamic = currentValue - prevPeriodValue;\r\n\t}\r\n\r\n\tconst sign = dynamic < 0 ? -1 : 1;\r\n\r\n\treturn sign * (percentOfNumber(Math.abs(dynamic)) as number);\r\n});\r\n\r\nconst dynamicDirection = computed(() => {\r\n\tlet direction: 'up' | 'stay' | 'down' = 'stay';\r\n\r\n\tif (!props.isInvert) {\r\n\t\tif (localDynamic.value > 0) direction = 'up';\r\n\t\tif (localDynamic.value < 0) direction = 'down';\r\n\t} else {\r\n\t\tif (localDynamic.value > 0) direction = 'down';\r\n\t\tif (localDynamic.value < 0) direction = 'up';\r\n\t}\r\n\r\n\treturn direction;\r\n});\r\n\r\n</script>\r\n\r\n<template>\r\n\t<div\r\n\t\t:class=\"{\r\n\t\t\t['top-miniChart']: true,\r\n\t\t\t['top-miniChart_hideChartInMobile']: hideChartInMobile,\r\n\t\t\t[`top-color_${color}`]: true\r\n\t\t}\"\r\n\t>\r\n\t\t<div\r\n\t\t\tclass=\"top-miniChart_title top-ellipsis\"\r\n\t\t\t:data-top-icon=\"gIcon\"\r\n\t\t>\r\n\t\t\t{{ title }}\r\n\t\t</div>\r\n\r\n\t\t<div class=\"top-miniChart_chart\">\r\n\t\t\t<div\r\n\t\t\t\tclass=\"top-miniChart_chartGrid\"\r\n\t\t\t\t@mouseleave=\"resetModel()\"\r\n\t\t\t>\r\n\t\t\t\t<div\r\n\t\t\t\t\tv-for=\"(date, i) in reversedDates\"\r\n\t\t\t\t\t:class=\"{\r\n\t\t\t\t\t\t['top-miniChart_chartGridCol']: true,\r\n\t\t\t\t\t\t['top-active']: isActiveDate(date)\r\n\t\t\t\t\t}\"\r\n\t\t\t\t\t@mouseenter=\"setModel($event, date, values[values.length - i - 1])\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<div :style=\"'height:' + genColHeight(values[values.length - i - 1]) + '%'\"/>\r\n\t\t\t\t</div>\r\n\t\t\t\t<div\r\n\t\t\t\t\tv-for=\"() in numOfEmptyCols\"\r\n\t\t\t\t\tclass=\"top-miniChart_chartGridCol top-miniChart_chartGridCol-none\"\r\n\t\t\t\t\t@mouseenter=\"resetModel()\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<div></div>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\r\n\t\t<div class=\"top-miniChart_data\">\r\n\t\t\t<span :class=\"{\r\n\t\t\t\t['top-miniChart_dataDynamic']: true,\r\n\t\t\t\t[`top-miniChart_dataDynamic-direction_${dynamicDirection}`]: true,\r\n\t\t\t}\">\r\n\t\t\t\t{{ Math.abs(localDynamic) || '' }}\r\n\t\t\t</span>\r\n\t\t\t<span class=\"top-miniChart_dataValue\">\r\n\t\t\t\t{{ percentOfNumber(values[values.length - 1]) || 0 }}\r\n\t\t\t</span>\r\n\t\t</div>\r\n\r\n\t\t<div\r\n\t\t\tv-if=\"additionalHTML\"\r\n\t\t\tv-html=\"additionalHTML\"\r\n\t\t/>\r\n\t</div>\r\n\r\n</template>\r\n<style>\r\n@import \"./styles/miniChart.css\";\r\n</style>\r\n","<script setup lang=\"ts\">\r\nimport { ref, computed, watch, onMounted, onUnmounted } from 'vue';\r\nimport type { Style, Props } from './miniCharts';\r\n\r\nconst props = defineProps<Props>();\r\nconst model = defineModel<Props['modelValue']>();\r\n\r\nconst elRef = ref<HTMLElement | null>(null);\r\n\r\nlet pagesResizeObserver: ResizeObserver;\r\n\r\n/**\r\n * Количество страниц\r\n */\r\nconst countPages = ref(1);\r\n\r\n/**\r\n * Активная страница\r\n */\r\nconst activePage = ref(1);\r\n\r\n/**\r\n * Установка количества страниц в блоке\r\n */\r\nconst setCountPages = () => {\r\n\tcountPages.value = Math.round(elRef.value!.scrollHeight / elRef.value!.clientHeight);\r\n};\r\n\r\nwatch(countPages, () => {\r\n\tif (countPages.value < activePage.value) {\r\n\t\tactivePage.value = 1;\r\n\t}\r\n});\r\n\r\nwatch(\r\n\t() => props.countCharts,\r\n\t() => setCountPages(),\r\n\t{ flush: 'post' }\r\n);\r\n\r\n/**\r\n * Расчет положения для подсказки\r\n */\r\nconst tooltipStyle = computed(() => {\r\n\tif (!model.value) return {};\r\n\r\n\tconst box = model.value.elCol.getBoundingClientRect();\r\n\r\n\tconst style: Style = {\r\n\t\ttop: box.bottom + window.scrollY + 'px',\r\n\t};\r\n\r\n\tif (document.documentElement.clientWidth / 2 > box.right) {\r\n\t\tstyle.left = box.right + window.scrollX + 10 + 'px';\r\n\t} else {\r\n\t\tstyle.left = box.left + window.scrollX - 10 + 'px';\r\n\t\tstyle.transform = 'translate(-100%, 0)';\r\n\t}\r\n\r\n\treturn style;\r\n});\r\n\r\nonMounted(() => {\r\n\t/**\r\n\t * Функционал переключения экранов графиков\r\n\t */\r\n\tpagesResizeObserver = new ResizeObserver(() => setCountPages());\r\n\tpagesResizeObserver.observe(elRef.value!);\r\n\r\n\twatch(activePage, () => {\r\n\t\tconst elMiniChart = elRef.value!.children[0];\r\n\t\tconst pageHeight = elMiniChart.clientHeight + parseInt(window.getComputedStyle(elRef.value!).getPropertyValue('row-gap'));\r\n\t\tconst scrollTop = pageHeight * (activePage.value - 1);\r\n\r\n\t\telRef.value!.scrollTo({ top: scrollTop, behavior: 'smooth' });\r\n\t});\r\n});\r\n\r\nonUnmounted(() => {\r\n\tpagesResizeObserver.disconnect();\r\n});\r\n</script>\r\n\r\n<template>\r\n\t<div\r\n\t\tclass=\"top-miniCharts\"\r\n\t\t:class=\"{\r\n\t\t\t['top-miniCharts']: true,\r\n\t\t\t['scrollable']: countPages > 1,\r\n\t\t\t['top-miniCharts_hideChartInMobile']: hideChartInMobile,\r\n\t\t}\"\r\n\t\tref=\"elRef\"\r\n\t>\r\n\r\n\t\t<slot></slot>\r\n\r\n\t\t<div\r\n\t\t\tv-if=\"countPages > 1\"\r\n\t\t\tclass=\"top-miniCharts_pages\"\r\n\t\t>\r\n\t\t\t<span\r\n\t\t\t\tv-for=\"n in countPages\"\r\n\t\t\t\t:class=\"{['top-active']: n === activePage}\"\r\n\t\t\t\t@click=\"activePage = n\"\r\n\t\t\t></span>\r\n\t\t</div>\r\n\r\n\t\t<Teleport to=\"body\">\r\n\t\t\t<div\r\n\t\t\t\tv-if=\"model\"\r\n\t\t\t\tclass=\"top-miniCharts_tooltip\"\r\n\t\t\t\t:style=\"tooltipStyle\"\r\n\t\t\t>\r\n\t\t\t\t<span>{{ model.date }}</span>\r\n\t\t\t\t<span>{{ model.value }}</span>\r\n\t\t\t</div>\r\n\t\t</Teleport>\r\n\t</div>\r\n\r\n</template>\r\n\r\n<style>\r\n@import \"./styles/miniCharts.css\";\r\n</style>\r\n\r\n\r\n\r\n\r\n","import type { ComponentCustomProps } from 'vue';\r\n\r\nimport MiniChart from './miniChart/miniChart.vue';\r\nimport MiniCharts from './miniCharts/miniCharts.vue';\r\n\r\nexport const TopMiniChart = MiniChart as typeof MiniChart & ComponentCustomProps;\r\n\r\nexport const TopMiniCharts = MiniCharts as typeof MiniCharts & ComponentCustomProps;\r\n"],"names":["defaultNumberCols","minHeight","props","__props","model","useModel","genColHeight","value","maximumValue","maxValue","height","isActiveDate","date","computed","reversedDates","numOfEmptyCols","resetModel","setModel","dateFormat","localDynamic","dynamic","prevPeriodValue","percentOfNumber","dynamicDirection","direction","elRef","ref","pagesResizeObserver","countPages","activePage","setCountPages","watch","tooltipStyle","box","style","onMounted","scrollTop","onUnmounted","TopMiniChart","_sfc_main$1","TopMiniCharts","_sfc_main"],"mappings":"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"}
|
|
@@ -26,6 +26,7 @@ export interface Props {
|
|
|
26
26
|
/**
|
|
27
27
|
* Индексы для получения значений из props.values.
|
|
28
28
|
* Полученные значения используются для рассчета динамики изменения.
|
|
29
|
+
* При укзазание props.dynamic не учитывается.
|
|
29
30
|
*
|
|
30
31
|
* - start - индекс для получения значения в начале периода
|
|
31
32
|
* - end - индекс для полученя значения в конце периода
|
|
@@ -34,6 +35,10 @@ export interface Props {
|
|
|
34
35
|
start: number;
|
|
35
36
|
end: number;
|
|
36
37
|
};
|
|
38
|
+
/**
|
|
39
|
+
* Динамика
|
|
40
|
+
*/
|
|
41
|
+
dynamic?: number;
|
|
37
42
|
/**
|
|
38
43
|
* Необходимо ли инвертировать значения ячеек графика
|
|
39
44
|
*/
|
|
@@ -4,5 +4,7 @@ declare const _default: DefineComponent<Props, {}, {}, {}, {}, ComponentOptionsM
|
|
|
4
4
|
close: () => any;
|
|
5
5
|
}, string, PublicProps, Readonly<Props> & Readonly<{
|
|
6
6
|
onClose?: (() => any) | undefined;
|
|
7
|
-
}>, {
|
|
7
|
+
}>, {
|
|
8
|
+
selectToClose: boolean;
|
|
9
|
+
}, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;
|
|
8
10
|
export default _default;
|
package/components/dialog/dialog/composables/{asyncDialogWorker.d.ts → asyncDialogHandle.d.ts}
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Ref } from 'vue';
|
|
2
2
|
import { AsyncTopDialogComponentLoader, TopDialogComponent } from './types';
|
|
3
|
-
import { TopDialogHandle } from './
|
|
3
|
+
import { TopDialogHandle } from './dialogHandle';
|
|
4
4
|
/**
|
|
5
5
|
* Объект для работы с асинхронным диалоговым окном
|
|
6
6
|
*
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { TopDialogHandle } from './
|
|
2
|
-
import { AsyncTopDialogHandle } from './
|
|
1
|
+
import { TopDialogHandle } from './dialogHandle';
|
|
2
|
+
import { AsyncTopDialogHandle } from './asyncDialogHandle';
|
|
3
3
|
import { AsyncTopDialogComponentLoader, TopDialogComponent } from './types';
|
|
4
4
|
/**
|
|
5
5
|
* Получить объект управленя текущим диалоговым окном
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { TopDialogHandle } from '../composables/
|
|
1
|
+
import { TopDialogHandle } from '../composables/dialogHandle';
|
|
2
2
|
import { TopDialogComponent } from '../composables/types';
|
|
3
3
|
import { DefineComponent, ComponentOptionsMixin, PublicProps, ComponentProvideOptions } from 'vue';
|
|
4
4
|
export declare const getDialogWorker: (id: string) => TopDialogHandle<TopDialogComponent> | undefined;
|
|
@@ -3,6 +3,10 @@ export type TopDialogOptions = {
|
|
|
3
3
|
* Загрузчик для компонентов диалоговых окон по их id
|
|
4
4
|
*/
|
|
5
5
|
load?: TopDialogLoad;
|
|
6
|
+
/**
|
|
7
|
+
* Глобальный декоратор на событие инициализации диалогового окна
|
|
8
|
+
*/
|
|
9
|
+
decoratorOnCreate?: DecoratorOnCreate;
|
|
6
10
|
/**
|
|
7
11
|
* Пауза перед загрузкой утилиты диалоговых окон в ms
|
|
8
12
|
*
|
|
@@ -12,5 +16,6 @@ export type TopDialogOptions = {
|
|
|
12
16
|
*/
|
|
13
17
|
autoInitDelay?: number;
|
|
14
18
|
};
|
|
15
|
-
export type TopDialogLoad = (dialogId: string
|
|
19
|
+
export type TopDialogLoad = (dialogId: string) => Promise<void>;
|
|
20
|
+
export type DecoratorOnCreate = (elDialog: HTMLElement) => Promise<void>;
|
|
16
21
|
export type MoveDirection = 'next' | 'prev' | 'none';
|
|
@@ -3,6 +3,7 @@ import { $el } from '../../types';
|
|
|
3
3
|
export declare abstract class TopDialogWorker {
|
|
4
4
|
static state: {
|
|
5
5
|
load: TopDialogOptions["load"] | undefined;
|
|
6
|
+
decoratorOnCreate: TopDialogOptions["decoratorOnCreate"] | undefined;
|
|
6
7
|
/**
|
|
7
8
|
* Порядковай номер перехода в диалоговых окнах
|
|
8
9
|
*
|
|
@@ -32,6 +33,10 @@ export declare abstract class TopDialogWorker {
|
|
|
32
33
|
}>;
|
|
33
34
|
static get$dialog($el: $el): JQuery<HTMLElement>;
|
|
34
35
|
static get$page($el: $el): JQuery<HTMLElement>;
|
|
36
|
+
/**
|
|
37
|
+
* Получить элементы страницы в шапке и в контенте
|
|
38
|
+
*/
|
|
39
|
+
static get$pairPage($el: $el): JQuery<HTMLElement>;
|
|
35
40
|
/**
|
|
36
41
|
* Закрыть диалоговое окно
|
|
37
42
|
*/
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Slots } from './types';
|
|
2
|
+
import { DefineComponent, ComponentOptionsMixin, PublicProps, ComponentProvideOptions } from 'vue';
|
|
3
|
+
declare function __VLS_template(): {
|
|
4
|
+
slots: Readonly<Slots> & Slots;
|
|
5
|
+
refs: {};
|
|
6
|
+
attrs: Partial<{}>;
|
|
7
|
+
};
|
|
8
|
+
type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
|
|
9
|
+
declare const __VLS_component: DefineComponent<{}, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>;
|
|
10
|
+
declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
|
|
11
|
+
export default _default;
|
|
12
|
+
type __VLS_WithTemplateSlots<T, S> = T & {
|
|
13
|
+
new (): {
|
|
14
|
+
$slots: S;
|
|
15
|
+
};
|
|
16
|
+
};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { DefineComponent, ComponentOptionsMixin, PublicProps, ComponentProvideOptions } from 'vue';
|
|
2
|
+
declare function __VLS_template(): {
|
|
3
|
+
slots: {
|
|
4
|
+
default?(_: {}): any;
|
|
5
|
+
};
|
|
6
|
+
refs: {};
|
|
7
|
+
attrs: Partial<{}>;
|
|
8
|
+
};
|
|
9
|
+
type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
|
|
10
|
+
declare const __VLS_component: DefineComponent<{}, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>;
|
|
11
|
+
declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
|
|
12
|
+
export default _default;
|
|
13
|
+
type __VLS_WithTemplateSlots<T, S> = T & {
|
|
14
|
+
new (): {
|
|
15
|
+
$slots: S;
|
|
16
|
+
};
|
|
17
|
+
};
|