@topvisor/ui 1.0.12-jquery → 1.0.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (112) hide show
  1. package/.chunks/datepicker-DOmAO7Nq.es.js +44 -0
  2. package/.chunks/datepicker-DOmAO7Nq.es.js.map +1 -0
  3. package/.chunks/datepicker-DX0qKxI_.amd.js +2 -0
  4. package/.chunks/datepicker-DX0qKxI_.amd.js.map +1 -0
  5. package/.chunks/{forms-DHMogHmw.amd.js → forms-Dg1N8Jv3.amd.js} +3 -3
  6. package/.chunks/{forms-DHMogHmw.amd.js.map → forms-Dg1N8Jv3.amd.js.map} +1 -1
  7. package/.chunks/{forms-CIeG_5LP.es.js → forms-FHMqYVvM.es.js} +25 -25
  8. package/.chunks/{forms-CIeG_5LP.es.js.map → forms-FHMqYVvM.es.js.map} +1 -1
  9. package/.chunks/{listItem.vue_vue_type_script_setup_true_lang-Gofkt4lj.es.js → listItem.vue_vue_type_script_setup_true_lang-CuWOLCGe.es.js} +2 -2
  10. package/.chunks/{listItem.vue_vue_type_script_setup_true_lang-Gofkt4lj.es.js.map → listItem.vue_vue_type_script_setup_true_lang-CuWOLCGe.es.js.map} +1 -1
  11. package/.chunks/{listItem.vue_vue_type_script_setup_true_lang-DQXATE8-.amd.js → listItem.vue_vue_type_script_setup_true_lang-tzOQcPs_.amd.js} +2 -2
  12. package/.chunks/{listItem.vue_vue_type_script_setup_true_lang-DQXATE8-.amd.js.map → listItem.vue_vue_type_script_setup_true_lang-tzOQcPs_.amd.js.map} +1 -1
  13. package/.chunks/{menu.vue_vue_type_style_index_0_lang-uGV-A-kW.es.js → menu.vue_vue_type_style_index_0_lang-BGdS1bYl.es.js} +2 -2
  14. package/.chunks/{menu.vue_vue_type_style_index_0_lang-uGV-A-kW.es.js.map → menu.vue_vue_type_style_index_0_lang-BGdS1bYl.es.js.map} +1 -1
  15. package/.chunks/{menu.vue_vue_type_style_index_0_lang-CeoVr4RC.amd.js → menu.vue_vue_type_style_index_0_lang-C_ND48ou.amd.js} +2 -2
  16. package/.chunks/{menu.vue_vue_type_style_index_0_lang-CeoVr4RC.amd.js.map → menu.vue_vue_type_style_index_0_lang-C_ND48ou.amd.js.map} +1 -1
  17. package/.chunks/{notice-BPG1753z.amd.js → notice-BixWe-8g.amd.js} +2 -2
  18. package/.chunks/notice-BixWe-8g.amd.js.map +1 -0
  19. package/.chunks/{notice-BA5zBdx2.es.js → notice-D07Kq3fU.es.js} +2 -2
  20. package/.chunks/notice-D07Kq3fU.es.js.map +1 -0
  21. package/.chunks/{popup-BnUijzts.es.js → popup-CBNL-Ixi.es.js} +46 -492
  22. package/.chunks/popup-CBNL-Ixi.es.js.map +1 -0
  23. package/.chunks/popup-CSNWKE4F.amd.js +2 -0
  24. package/.chunks/popup-CSNWKE4F.amd.js.map +1 -0
  25. package/.chunks/utils-B6497Bik.es.js +330 -0
  26. package/.chunks/utils-B6497Bik.es.js.map +1 -0
  27. package/.chunks/utils-BgirCapu.es.js +220 -0
  28. package/.chunks/utils-BgirCapu.es.js.map +1 -0
  29. package/.chunks/utils-Bxmh9YxC.amd.js +2 -0
  30. package/.chunks/utils-Bxmh9YxC.amd.js.map +1 -0
  31. package/.chunks/utils-DINqzHO_.amd.js +2 -0
  32. package/.chunks/utils-DINqzHO_.amd.js.map +1 -0
  33. package/assets/charts.css +1 -1
  34. package/assets/core.css +1 -1
  35. package/charts/charts.amd.js +1 -1
  36. package/charts/charts.amd.js.map +1 -1
  37. package/charts/charts.js +134 -81
  38. package/charts/charts.js.map +1 -1
  39. package/components/charts/charts.d.ts +2 -0
  40. package/components/charts/miniChart/miniChart.d.ts +8 -1
  41. package/components/charts/miniCharts/miniCharts.d.ts +20 -0
  42. package/components/charts/miniCharts/miniCharts.vue.d.ts +29 -0
  43. package/components/charts/miniCharts/stories/dummy.d.ts +6 -0
  44. package/components/dialog/dialog/composables/asyncDialogWorker.d.ts +51 -0
  45. package/components/dialog/dialog/composables/dialogWorker.d.ts +108 -0
  46. package/components/dialog/dialog/composables/types.d.ts +11 -0
  47. package/components/dialog/dialog/composables/utils.d.ts +21 -0
  48. package/components/dialog/dialog/dialog.vue.d.ts +27 -0
  49. package/components/dialog/dialog/dialogs/dialogs.vue.d.ts +10 -0
  50. package/components/dialog/dialog/page/page.vue.d.ts +18 -0
  51. package/components/dialog/dialog/page/types.d.ts +65 -0
  52. package/components/dialog/dialog/pageComponent/pageComponent.vue.d.ts +6 -0
  53. package/components/dialog/dialog/pageComponent/types.d.ts +18 -0
  54. package/components/dialog/dialog/stories/autoload.d.ts +2 -0
  55. package/components/dialog/dialog/stories/dialog_example/pages/utils.d.ts +7 -0
  56. package/components/dialog/dialog/types.d.ts +58 -0
  57. package/components/dialog/dialog.d.ts +6 -0
  58. package/components/dialog/lib/types.d.ts +16 -0
  59. package/components/dialog/lib/utils.d.ts +14 -0
  60. package/components/dialog/lib/utils.globalEvents.d.ts +8 -0
  61. package/components/dialog/lib/worker.d.ts +55 -0
  62. package/components/forms/select/select.d.ts +1 -1
  63. package/components/project/tagSelector/tagSelector.vue.d.ts +2 -2
  64. package/components/project/tagSelector/types.d.ts +2 -2
  65. package/components/tabsView/tabsView/tabsView.d.ts +1 -1
  66. package/core/app.amd.js +1 -1
  67. package/core/app.amd.js.map +1 -1
  68. package/core/app.d.ts +2 -0
  69. package/core/app.js +57 -50
  70. package/core/app.js.map +1 -1
  71. package/core/core/core.d.ts +1 -1
  72. package/core/core/options.d.ts +1 -1
  73. package/core/plugins/core.d.ts +12 -3
  74. package/dialog/dialog.amd.js +2 -0
  75. package/dialog/dialog.amd.js.map +1 -0
  76. package/dialog/dialog.d.ts +2 -0
  77. package/dialog/dialog.js +183 -0
  78. package/dialog/dialog.js.map +1 -0
  79. package/forms/forms.amd.js +1 -1
  80. package/forms/forms.js +1 -1
  81. package/formsExt/formsExt.amd.js +1 -1
  82. package/formsExt/formsExt.js +54 -54
  83. package/jquery-ui.min.css +6 -0
  84. package/package.json +1 -1
  85. package/popup/popup.amd.js +1 -1
  86. package/popup/popup.js +2 -2
  87. package/popup/worker.amd.js +1 -1
  88. package/popup/worker.js +2 -2
  89. package/project/project.amd.js +1 -1
  90. package/project/project.js +3 -3
  91. package/tabsView/tabsView.amd.js +1 -1
  92. package/tabsView/tabsView.js +16 -16
  93. package/utils/date.amd.js +1 -1
  94. package/utils/date.js +1 -1
  95. package/utils/device.amd.js +1 -1
  96. package/utils/device.js +1 -1
  97. package/utils/lodash.amd.js +1 -1
  98. package/utils/lodash.js +5 -5
  99. package/utils/price.amd.js +1 -1
  100. package/utils/price.js +1 -1
  101. package/utils/string.amd.js +1 -1
  102. package/utils/string.js +1 -1
  103. package/.chunks/datepicker-DWXjh2hB.es.js +0 -290
  104. package/.chunks/datepicker-DWXjh2hB.es.js.map +0 -1
  105. package/.chunks/datepicker-NJ8JOvZG.amd.js +0 -248
  106. package/.chunks/datepicker-NJ8JOvZG.amd.js.map +0 -1
  107. package/.chunks/notice-BA5zBdx2.es.js.map +0 -1
  108. package/.chunks/notice-BPG1753z.amd.js.map +0 -1
  109. package/.chunks/popup-B-A8QzhE.amd.js +0 -448
  110. package/.chunks/popup-B-A8QzhE.amd.js.map +0 -1
  111. package/.chunks/popup-BnUijzts.es.js.map +0 -1
  112. package/components/core/dialog/types.d.ts +0 -2
package/charts/charts.js CHANGED
@@ -1,12 +1,12 @@
1
- import { Core as S } from "../core/app.js";
2
- import { defineComponent as L, mergeModels as T, useModel as I, computed as l, openBlock as n, createElementBlock as r, normalizeClass as m, createElementVNode as i, toDisplayString as c, Fragment as C, renderList as v, normalizeStyle as F, unref as N, createCommentVNode as $ } from "vue";
3
- import { d as w, b as B } from "../.chunks/forms-CIeG_5LP.es.js";
4
- import { percentOfNumber as _ } from "../utils/number.js";
5
- const H = ["../assets/charts.css"].map((d) => import.meta.resolve(d));
6
- S.insertCSSLinkToPage(H, !0);
7
- const E = 90, y = 10, z = ["data-top-icon"], O = { class: "top-miniChart_chart" }, P = ["onMouseenter"], A = { class: "top-miniChart_data" }, j = { class: "top-miniChart_dataValue" }, q = ["innerHTML"], J = /* @__PURE__ */ L({
1
+ import { Core as P } from "../core/app.js";
2
+ import { defineComponent as D, mergeModels as S, useModel as $, computed as p, openBlock as a, createElementBlock as s, 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-FHMqYVvM.es.js";
4
+ import { percentOfNumber as I } from "../utils/number.js";
5
+ const E = ["../assets/charts.css"].map((v) => import.meta.resolve(v));
6
+ P.insertCSSLinkToPage(E, !0);
7
+ const A = 90, T = 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__ */ D({
8
8
  __name: "miniChart",
9
- props: /* @__PURE__ */ T({
9
+ props: /* @__PURE__ */ S({
10
10
  title: {},
11
11
  gIcon: {},
12
12
  color: { default: "blue" },
@@ -15,106 +15,159 @@ const E = 90, y = 10, z = ["data-top-icon"], O = { class: "top-miniChart_chart"
15
15
  activeDates: {},
16
16
  keysForDyn: {},
17
17
  isInvert: { type: Boolean },
18
- numberCols: { default: E },
18
+ numberCols: { default: A },
19
19
  additionalHTML: {},
20
20
  modelValue: {},
21
- valueSuffix: {}
21
+ valueSuffix: {},
22
+ hideChartInMobile: { type: Boolean }
22
23
  }, {
23
24
  modelValue: {},
24
25
  modelModifiers: {}
25
26
  }),
26
27
  emits: ["update:modelValue"],
27
- setup(d) {
28
- const e = d, p = I(d, "modelValue"), f = (t) => {
29
- let a = g.value;
30
- e.isInvert && (t -= 1, a -= 1);
31
- let o = a > 0 ? Math.round(t / a * (100 - y)) : 0;
32
- return e.isInvert ? 100 - o : o + y;
33
- }, M = (t) => e.activeDates.includes(t), g = l(() => Math.max(...e.values)), D = l(() => e.dates.slice().reverse()), V = l(() => e.dates.length ? e.numberCols - e.dates.length : 0), h = () => {
34
- p.value = null;
35
- }, b = (t, a, o) => {
36
- p.value = {
37
- elCol: t.target,
38
- date: w(a),
39
- value: o === null ? "--" : o + (e.valueSuffix ?? "")
40
- };
41
- }, s = l(() => {
42
- const t = e.values[e.keysForDyn.start], o = e.values[e.keysForDyn.end] - t;
43
- return (o < 0 ? -1 : 1) * _(Math.abs(o));
44
- }), k = l(() => {
45
- let t = "stay";
46
- return e.isInvert ? (s.value > 0 && (t = "down"), s.value < 0 && (t = "up")) : (s.value > 0 && (t = "up"), s.value < 0 && (t = "down")), t;
28
+ setup(v) {
29
+ const t = v, d = $(v, "modelValue"), u = (e) => {
30
+ let o = c.value;
31
+ t.isInvert && (e -= 1, o -= 1);
32
+ let l = o > 0 ? Math.round(e / o * (100 - T)) : 0;
33
+ return t.isInvert ? 100 - l : l + T;
34
+ }, C = (e) => t.activeDates.includes(e), c = p(() => Math.max(...t.values)), m = p(() => t.dates.slice().reverse()), M = p(() => t.dates.length ? t.numberCols - t.dates.length : 0), y = () => {
35
+ d.value = null;
36
+ }, i = (e, o, l) => {
37
+ e.target instanceof HTMLElement && (d.value = {
38
+ elCol: e.target,
39
+ date: X(o),
40
+ value: l === null ? "--" : l + (t.valueSuffix ?? "")
41
+ });
42
+ }, n = p(() => {
43
+ const e = t.values[t.keysForDyn.start], l = t.values[t.keysForDyn.end] - e;
44
+ return (l < 0 ? -1 : 1) * I(Math.abs(l));
45
+ }), h = p(() => {
46
+ let e = "stay";
47
+ return t.isInvert ? (n.value > 0 && (e = "down"), n.value < 0 && (e = "up")) : (n.value > 0 && (e = "up"), n.value < 0 && (e = "down")), e;
47
48
  });
48
- return (t, a) => (n(), r("div", {
49
- class: m({
49
+ return (e, o) => (a(), s("div", {
50
+ class: f({
50
51
  "top-miniChart": !0,
51
- [`top-color_${t.color}`]: !0
52
+ "top-miniChart_hideChartInMobile": e.hideChartInMobile,
53
+ [`top-color_${e.color}`]: !0
52
54
  })
53
55
  }, [
54
- i("div", {
55
- class: "top-miniChart_title",
56
- "data-top-icon": t.gIcon
57
- }, c(t.title), 9, z),
58
- i("div", O, [
59
- i("div", {
56
+ r("div", {
57
+ class: "top-miniChart_title top-ellipsis",
58
+ "data-top-icon": e.gIcon
59
+ }, g(e.title), 9, U),
60
+ r("div", W, [
61
+ r("div", {
60
62
  class: "top-miniChart_chartGrid",
61
- onMouseleave: a[1] || (a[1] = (o) => h())
63
+ onMouseleave: o[1] || (o[1] = (l) => y())
62
64
  }, [
63
- (n(!0), r(C, null, v(D.value, (o, u) => (n(), r("div", {
64
- key: u,
65
- class: m({
65
+ (a(!0), s(k, null, w(m.value, (l, _) => (a(), s("div", {
66
+ class: f({
66
67
  "top-miniChart_chartGridCol": !0,
67
- "top-active": M(o)
68
+ "top-active": C(l)
68
69
  }),
69
- onMouseenter: (G) => b(G, o, t.values[t.values.length - u - 1])
70
+ onMouseenter: (B) => i(B, l, e.values[e.values.length - _ - 1])
70
71
  }, [
71
- i("div", {
72
- style: F("height:" + f(t.values[t.values.length - u - 1]) + "%")
72
+ r("div", {
73
+ style: L("height:" + u(e.values[e.values.length - _ - 1]) + "%")
73
74
  }, null, 4)
74
- ], 42, P))), 128)),
75
- (n(!0), r(C, null, v(V.value, () => (n(), r("div", {
75
+ ], 42, Y))), 256)),
76
+ (a(!0), s(k, null, w(M.value, () => (a(), s("div", {
76
77
  class: "top-miniChart_chartGridCol top-miniChart_chartGridCol-none",
77
- onMouseenter: a[0] || (a[0] = (o) => h())
78
- }, a[2] || (a[2] = [
79
- i("div", null, null, -1)
78
+ onMouseenter: o[0] || (o[0] = (l) => y())
79
+ }, o[2] || (o[2] = [
80
+ r("div", null, null, -1)
80
81
  ]), 32))), 256))
81
82
  ], 32)
82
83
  ]),
83
- i("div", A, [
84
- i("span", {
85
- class: m({
84
+ r("div", j, [
85
+ r("span", {
86
+ class: f({
86
87
  "top-miniChart_dataDynamic": !0,
87
- [`top-miniChart_dataDynamic-direction_${k.value}`]: !0
88
+ [`top-miniChart_dataDynamic-direction_${h.value}`]: !0
88
89
  })
89
- }, c(Math.abs(s.value) || ""), 3),
90
- i("span", j, c(N(_)(t.values[t.values.length - 1]) || 0), 1)
90
+ }, g(Math.abs(n.value) || ""), 3),
91
+ r("span", q, g(F(I)(e.values[e.values.length - 1]) || 0), 1)
91
92
  ]),
92
- t.additionalHTML ? (n(), r("div", {
93
+ e.additionalHTML ? (a(), s("div", {
93
94
  key: 0,
94
- innerHTML: t.additionalHTML
95
- }, null, 8, q)) : $("", !0)
95
+ innerHTML: e.additionalHTML
96
+ }, null, 8, J)) : H("", !0)
97
+ ], 2));
98
+ }
99
+ }), Q = {
100
+ key: 0,
101
+ class: "top-miniCharts_pages"
102
+ }, Z = ["onClick"], x = /* @__PURE__ */ D({
103
+ __name: "miniCharts",
104
+ props: /* @__PURE__ */ S({
105
+ modelValue: {},
106
+ countCharts: {},
107
+ hideChartInMobile: { type: Boolean }
108
+ }, {
109
+ modelValue: {},
110
+ modelModifiers: {}
111
+ }),
112
+ emits: ["update:modelValue"],
113
+ setup(v) {
114
+ const t = v, d = $(v, "modelValue"), u = b(null);
115
+ let C;
116
+ const c = b(1), m = b(1), M = () => {
117
+ c.value = Math.round(u.value.scrollHeight / u.value.clientHeight);
118
+ };
119
+ V(c, () => {
120
+ c.value < m.value && (m.value = 1);
121
+ }), V(
122
+ () => t.countCharts,
123
+ () => M(),
124
+ { flush: "post" }
125
+ );
126
+ const y = p(() => {
127
+ if (!d.value) return {};
128
+ const i = d.value.elCol.getBoundingClientRect(), n = {
129
+ top: i.bottom + window.scrollY + "px"
130
+ };
131
+ return document.documentElement.clientWidth / 2 > i.right ? n.left = i.right + window.scrollX + 10 + "px" : (n.left = i.left + window.scrollX - 10 + "px", n.transform = "translate(-100%, 0)"), n;
132
+ });
133
+ return N(() => {
134
+ C = new ResizeObserver(() => M()), C.observe(u.value), V(m, () => {
135
+ const h = (u.value.children[0].clientHeight + parseInt(window.getComputedStyle(u.value).getPropertyValue("row-gap"))) * (m.value - 1);
136
+ u.value.scrollTo({ top: h, behavior: "smooth" });
137
+ });
138
+ }), R(() => {
139
+ C.disconnect();
140
+ }), (i, n) => (a(), s("div", {
141
+ class: f(["top-miniCharts", {
142
+ "top-miniCharts": !0,
143
+ scrollable: c.value > 1,
144
+ "top-miniCharts_hideChartInMobile": i.hideChartInMobile
145
+ }]),
146
+ ref_key: "elRef",
147
+ ref: u
148
+ }, [
149
+ z(i.$slots, "default"),
150
+ c.value > 1 ? (a(), s("div", Q, [
151
+ (a(!0), s(k, null, w(c.value, (h) => (a(), s("span", {
152
+ class: f({ "top-active": h === m.value }),
153
+ onClick: (e) => m.value = h
154
+ }, null, 10, Z))), 256))
155
+ ])) : H("", !0),
156
+ (a(), G(O, { to: "body" }, [
157
+ d.value ? (a(), s("div", {
158
+ key: 0,
159
+ class: "top-miniCharts_tooltip",
160
+ style: L(y.value)
161
+ }, [
162
+ r("span", null, g(d.value.date), 1),
163
+ r("span", null, g(d.value.value), 1)
164
+ ], 4)) : H("", !0)
165
+ ]))
96
166
  ], 2));
97
167
  }
98
- }), K = {
99
- "top-miniChart": "top-miniChart",
100
- "top-miniChart_title": "top-miniChart_title",
101
- "top-color_orange": "top-color_orange",
102
- "top-color_pink": "top-color_pink",
103
- "top-color_blue": "top-color_blue",
104
- "top-miniChart_data": "top-miniChart_data",
105
- "top-miniChart_dataDynamic": "top-miniChart_dataDynamic",
106
- "top-miniChart_dataDynamic-direction_up": "top-miniChart_dataDynamic-direction_up",
107
- "top-miniChart_dataDynamic-direction_stay": "top-miniChart_dataDynamic-direction_stay",
108
- "top-miniChart_dataDynamic-direction_down": "top-miniChart_dataDynamic-direction_down",
109
- "top-miniChart_chartGrid": "top-miniChart_chartGrid",
110
- "top-miniChart_chartGridCol": "top-miniChart_chartGridCol",
111
- "top-active": "top-active",
112
- "top-miniChart_chartGridCol-none": "top-miniChart_chartGridCol-none",
113
- "top-miniChart_chart": "top-miniChart_chart"
114
- }, Q = {
115
- $style: K
116
- }, R = /* @__PURE__ */ B(J, [["__cssModules", Q]]), Z = R;
168
+ }), ne = K, ae = x;
117
169
  export {
118
- Z as TopMiniChart
170
+ ne as TopMiniChart,
171
+ ae as TopMiniCharts
119
172
  };
120
173
  //# sourceMappingURL=charts.js.map
@@ -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/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\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-color_${color}`]: true,\n\t\t}\"\n\t>\n\t\t<div\n\t\t\tclass=\"top-miniChart_title\"\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:key=\"i\"\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 module src=\"./styles/miniChart.css\"></style>\n","import type { ComponentCustomProps } from 'vue';\n\nimport MiniChart from './miniChart/miniChart.vue';\n\nexport const TopMiniChart = MiniChart as typeof MiniChart & ComponentCustomProps"],"names":["defaultNumberCols","minHeight","props","__props","model","useModel","genColHeight","value","maximumValue","maxValue","height","isActiveDate","date","computed","reversedDates","numOfEmptyCols","resetModel","setModel","e","dateFormat","dynamic","prevPeriodValue","dynValue","percentOfNumber","dynamicDirection","direction","TopMiniChart","MiniChart"],"mappings":";;;;;;AAGO,MAAAA,IAAA,IAKAC,IAAA;;;;;;;;;;;;;;;;;;;;;ACDP,UAAAC,IAAAC,GAIAC,IAAAC,EAAAF,GAAA,YAAA,GAKAG,IAAA,CAAAC,MAAA;AACC,UAAAC,IAAAC,EAAA;AAGA,MAAAP,EAAA,aACCK,KAAA,GACAC,KAAA;AAGD,UAAAE,IAAAF,IAAA,IAAA,KAAA,MAAAD,IAAAC,KAAA,MAAAP,EAAA,IAAA;AACA,aAAAC,EAAA,WAAA,MAAAQ,IAEAA,IAAAT;AAAA,IAAgB,GAGjBU,IAAA,CAAAC,MAAAV,EAAA,YAAA,SAAAU,CAAA,GAEAH,IAAAI,EAAA,MAAA,KAAA,IAAA,GAAAX,EAAA,MAAA,CAAA,GAKAY,IAAAD,EAAA,MAAAX,EAAA,MAAA,MAAA,EAAA,QAAA,CAAA,GAKAa,IAAAF,EAAA,MACCX,EAAA,MAAA,SAEAA,EAAA,aAAAA,EAAA,MAAA,SAFA,CAEsC,GAGvCc,IAAA,MAAA;AACC,MAAAZ,EAAA,QAAA;AAAA,IAAc,GAGfa,IAAA,CAAAC,GAAAN,GAAAL,MAAA;AACC,MAAAH,EAAA,QAAA;AAAA,QAAc,OAAAc,EAAA;AAAA,QACJ,MAAAC,EAAAP,CAAA;AAAA,QACY,OAAAL,MAAA,OAAA,OAAAA,KAAAL,EAAA,eAAA;AAAA,MACwC;AAAA,IAC9D,GAMDkB,IAAAP,EAAA,MAAA;AACC,YAAAQ,IAAAnB,EAAA,OAAAA,EAAA,WAAA,KAAA,GAEAoB,IADApB,EAAA,OAAAA,EAAA,WAAA,GAAA,IACAmB;AAGA,cAFAC,IAAA,IAAA,KAAA,KAEAC,EAAA,KAAA,IAAAD,CAAA,CAAA;AAAA,IAAiD,CAAA,GAGlDE,IAAAX,EAAA,MAAA;AACC,UAAAY,IAAA;AAEA,aAAAvB,EAAA,YAICkB,EAAA,QAAA,MAAAK,IAAA,SACAL,EAAA,QAAA,MAAAK,IAAA,UAJAL,EAAA,QAAA,MAAAK,IAAA,OACAL,EAAA,QAAA,MAAAK,IAAA,UAMDA;AAAA,IAAO,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oDChFDC,IAAAC;"}
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,3 +1,5 @@
1
1
  import { ComponentCustomProps } from 'vue';
2
2
  import { default as MiniChart } from './miniChart/miniChart.vue';
3
+ import { default as MiniCharts } from './miniCharts/miniCharts.vue';
3
4
  export declare const TopMiniChart: typeof MiniChart & ComponentCustomProps;
5
+ export declare const TopMiniCharts: typeof MiniCharts & ComponentCustomProps;
@@ -54,6 +54,13 @@ export interface Props {
54
54
  * Суффикс для значения
55
55
  */
56
56
  valueSuffix?: string;
57
+ /**
58
+ * Скрыть график на адаптиве
59
+ *
60
+ * - true - скрыть
61
+ * - false - показать
62
+ */
63
+ hideChartInMobile?: boolean;
57
64
  }
58
65
  /**
59
66
  * Интерфейс проверки (используется для передачи данных о выбранной проверке через v-model)
@@ -62,7 +69,7 @@ export interface Item {
62
69
  /**
63
70
  * Эл-т колонки выбранной проверки
64
71
  */
65
- elCol: EventTarget | null;
72
+ elCol: HTMLElement;
66
73
  /**
67
74
  * Дата/время проверки
68
75
  */
@@ -0,0 +1,20 @@
1
+ import { Item } from '../miniChart/miniChart';
2
+ export interface Props {
3
+ modelValue?: Item | null;
4
+ /**
5
+ * Кол-во миниграфиков (TopMiniChart)
6
+ */
7
+ countCharts: number;
8
+ /**
9
+ * Скрывать графики на адаптиве
10
+ *
11
+ * - true - скрыть
12
+ * - false - показать
13
+ */
14
+ hideChartInMobile?: boolean;
15
+ }
16
+ export interface Style {
17
+ top: string;
18
+ left?: string;
19
+ transform?: string;
20
+ }
@@ -0,0 +1,29 @@
1
+ import { Props } from './miniCharts';
2
+ import { DefineComponent, ComponentOptionsMixin, PublicProps, ComponentProvideOptions } from 'vue';
3
+ import { Item } from '../miniChart/miniChart';
4
+ declare let __VLS_typeProps: Props;
5
+ type __VLS_PublicProps = {
6
+ modelValue?: Props['modelValue'];
7
+ } & typeof __VLS_typeProps;
8
+ declare function __VLS_template(): {
9
+ slots: {
10
+ default?(_: {}): any;
11
+ };
12
+ refs: {
13
+ elRef: HTMLDivElement;
14
+ };
15
+ attrs: Partial<{}>;
16
+ };
17
+ type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
18
+ declare const __VLS_component: DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
19
+ "update:modelValue": (modelValue: Item | null | undefined) => any;
20
+ }, string, PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
21
+ "onUpdate:modelValue"?: ((modelValue: Item | null | undefined) => any) | undefined;
22
+ }>, {}, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;
23
+ declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
24
+ export default _default;
25
+ type __VLS_WithTemplateSlots<T, S> = T & {
26
+ new (): {
27
+ $slots: S;
28
+ };
29
+ };
@@ -0,0 +1,6 @@
1
+ import { Props as MiniChartProps } from '../../miniChart/miniChart';
2
+ /**
3
+ * Список объектов props для мини графиков
4
+ */
5
+ declare const propsForMiniCharts: MiniChartProps[];
6
+ export { propsForMiniCharts };
@@ -0,0 +1,51 @@
1
+ import { Ref } from 'vue';
2
+ import { AsyncTopDialogComponentLoader, TopDialogComponent } from './types';
3
+ import { TopDialogHandle } from './dialogWorker';
4
+ /**
5
+ * Объект для работы с асинхронным диалоговым окном
6
+ *
7
+ * Является прослойкой для доступа к TopDialogHandle
8
+ */
9
+ export declare class AsyncTopDialogHandle<T extends TopDialogComponent> {
10
+ /**
11
+ * Функция, определяющая компонент TopDialogComponent
12
+ */
13
+ readonly resolve: AsyncTopDialogComponentLoader<T>;
14
+ /**
15
+ * Реактивная Сссылка на объект worker,
16
+ *
17
+ * Ссылка не будет указывать на объект, если диалоговое окно еще не загружено
18
+ */
19
+ readonly worker: Ref<TopDialogHandle<T> | null>;
20
+ constructor(resolve: AsyncTopDialogComponentLoader<T>);
21
+ /**
22
+ * Получить доступ к TopDialogHandle
23
+ */
24
+ get(): Promise<TopDialogHandle<T>>;
25
+ /**
26
+ * Открыть диалоговое окно
27
+ */
28
+ open(...args: Parameters<TopDialogHandle<T>['open']>): Promise<void>;
29
+ /**
30
+ * Открыть диалоговое окно как ссылку, для хеш-навигации
31
+ *
32
+ * Только общедоступные диалоговые окна, расположенные в @/dialogs
33
+ */
34
+ openAsLink(...args: Parameters<TopDialogHandle<T>['open']>): Promise<void>;
35
+ /**
36
+ * Закрыть диалоговое окно
37
+ *
38
+ * Не меняет состояние компонента диалогового окна
39
+ */
40
+ close(...args: Parameters<TopDialogHandle<T>['close']>): Promise<void>;
41
+ /**
42
+ * Размонтировать виджет диалогового окна
43
+ */
44
+ destroy(...args: Parameters<TopDialogHandle<T>['close']>): Promise<void>;
45
+ /**
46
+ * Устанвоить props
47
+ *
48
+ * Полностью сбрасывается состояние props
49
+ */
50
+ setProps(...args: Parameters<TopDialogHandle<T>['setProps']>): Promise<void>;
51
+ }
@@ -0,0 +1,108 @@
1
+ import { ComponentInstance, ComponentInternalInstance, Ref } from 'vue';
2
+ import { default as TopDialog } from '../dialog.vue';
3
+ import { MoveDirection } from '../../lib/types';
4
+ import { TopDialogComponent } from './types';
5
+ /**
6
+ * Объект для работы с диалоговым окном
7
+ *
8
+ * Каждое окно уникально и может быть открыто одновременно только один раз
9
+ *
10
+ * Можно определить много окон, после чего с ними можно вести работу в любой части приложения
11
+ */
12
+ export declare class TopDialogHandle<T extends TopDialogComponent> {
13
+ /**
14
+ * Индентификатор, определяется на уровне компонента TopDialogComponent
15
+ *
16
+ * Может использоваться в навигации для открытия нужных окон с нужными настройками
17
+ */
18
+ id: string;
19
+ /**
20
+ * ID, используемый в верстке диалогового окна
21
+ */
22
+ idAttr: string;
23
+ /**
24
+ * Пользовательский компонент диалогового окна
25
+ */
26
+ Component: T;
27
+ /**
28
+ * Компонент инициирован
29
+ *
30
+ * Устанавливается после первого вызова useTopDialog()
31
+ */
32
+ isMounted: Ref<boolean, boolean>;
33
+ /**
34
+ * Компонент готов к использованию
35
+ *
36
+ * Используется для внутренних преобразований после отрисовки
37
+ */
38
+ isReady: Ref<boolean, boolean>;
39
+ /**
40
+ * Диалоговое окно открыто
41
+ */
42
+ isOpened: Ref<boolean, boolean>;
43
+ /**
44
+ * Имя активной страницы дилогового окна
45
+ */
46
+ pageActive: Ref<string, string>;
47
+ /**
48
+ * Диалоговое окно находится в состоянии загрузки своей страницы
49
+ */
50
+ isLoadingPage: Ref<boolean, boolean>;
51
+ /**
52
+ * Следующая активная страница
53
+ *
54
+ * В один момент времени может потребоваться отобразить две страницы, чтобы воспроизвести анимацию
55
+ */
56
+ pageActiveNext: Ref<string, string>;
57
+ /**
58
+ * props компонента, доступны после инициализации
59
+ */
60
+ props?: ComponentInstance<T>['$props'];
61
+ /**
62
+ * emit базового компонента `TopDialog`
63
+ */
64
+ emit?: ComponentInstance<typeof TopDialog>['$emit'];
65
+ /**
66
+ * Одноразовое событие на закрытие диалогового окна
67
+ *
68
+ * Используется для привязки окна к сценариям использования
69
+ */
70
+ onCloseOnce?: (props: typeof this.props, pageName: string) => void;
71
+ constructor(TopDialogComponent: T);
72
+ /**
73
+ * Событие - компонент инициирован
74
+ */
75
+ onMounted(topDialogComponent: ComponentInternalInstance, topDialogBaseComponent: ComponentInternalInstance): void;
76
+ /**
77
+ * Открыть диалоговое окно
78
+ *
79
+ * Учтите, что props в диалоговом окне будут доступны не сразу, а только после инициализации vue компонента
80
+ */
81
+ open(pageName?: string, props?: {}, args?: [], onCloseOnce?: typeof this.onCloseOnce, moveDirection?: MoveDirection): Promise<void>;
82
+ /**
83
+ * Открыть диалоговое окно как ссылку, для хеш-навигации
84
+ *
85
+ * Диалоговые окна загружаются по имени, см. настройку плагина Core topDialogLoader
86
+ */
87
+ openAsLink(pageName?: string, props?: {}, _args?: string[], onCloseOnce?: typeof this.onCloseOnce, moveDirection?: MoveDirection): Promise<void>;
88
+ /**
89
+ * Закрыть диалоговое окно
90
+ *
91
+ * Не меняет состояние компонента диалогового окна
92
+ */
93
+ close(): Promise<void>;
94
+ /**
95
+ * Размонтировать $.dialog
96
+ */
97
+ destroy(): Promise<void>;
98
+ /**
99
+ * Устанвоить props
100
+ *
101
+ * Полностью сбрасывается состояние props
102
+ */
103
+ setProps(props?: ComponentInstance<T>['$props']): Promise<void>;
104
+ /**
105
+ * Проверить, есть ли необходимость отрисовки страницы диалогового окна
106
+ */
107
+ needShowPage(pageName: string): boolean;
108
+ }
@@ -0,0 +1,11 @@
1
+ import { Component } from 'vue';
2
+ /**
3
+ * Компонент с определением конкретного диалогового окна с использованием компонента `TopDialog`
4
+ */
5
+ export type TopDialogComponent = Component & {
6
+ id?: string;
7
+ };
8
+ export type AsyncDialogComponentResolveResult<T extends TopDialogComponent> = {
9
+ default: T;
10
+ };
11
+ export type AsyncTopDialogComponentLoader<T extends TopDialogComponent> = () => Promise<AsyncDialogComponentResolveResult<T>>;
@@ -0,0 +1,21 @@
1
+ import { TopDialogHandle } from './dialogWorker';
2
+ import { AsyncTopDialogHandle } from './asyncDialogWorker';
3
+ import { AsyncTopDialogComponentLoader, TopDialogComponent } from './types';
4
+ /**
5
+ * Получить объект управленя текущим диалоговым окном
6
+ */
7
+ export declare const useTopDialogSelf: () => TopDialogHandle<TopDialogComponent>;
8
+ /**
9
+ * Получить объект управленя диалоговым окном
10
+ *
11
+ * При первом вызове компонент диалогового окна будет внедрен в компонент DialogWrapper
12
+ */
13
+ export declare const useTopDialog: <T extends TopDialogComponent>(DialogComponent: T) => TopDialogHandle<T>;
14
+ /**
15
+ * Получить объект управленя асинхронным диалоговым окном
16
+ *
17
+ * Компонент диалогового окна будет загружен и инициирован при первом взаимодействии с объектом
18
+ *
19
+ * Использует useTopDialog()
20
+ */
21
+ export declare const useAsyncTopDialog: <T extends TopDialogComponent>(resolve: AsyncTopDialogComponentLoader<T>) => AsyncTopDialogHandle<T>;
@@ -0,0 +1,27 @@
1
+ import { Props, 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<Props, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
10
+ close: (pageName: string) => any;
11
+ open: (pageName: string) => any;
12
+ }, string, PublicProps, Readonly<Props> & Readonly<{
13
+ onClose?: ((pageName: string) => any) | undefined;
14
+ onOpen?: ((pageName: string) => any) | undefined;
15
+ }>, {
16
+ width: string;
17
+ height: string;
18
+ modal: boolean;
19
+ historyType: "push" | "replace";
20
+ }, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;
21
+ declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
22
+ export default _default;
23
+ type __VLS_WithTemplateSlots<T, S> = T & {
24
+ new (): {
25
+ $slots: S;
26
+ };
27
+ };
@@ -0,0 +1,10 @@
1
+ import { TopDialogHandle } from '../composables/dialogWorker';
2
+ import { TopDialogComponent } from '../composables/types';
3
+ import { DefineComponent, ComponentOptionsMixin, PublicProps, ComponentProvideOptions } from 'vue';
4
+ export declare const getDialogWorker: (id: string) => TopDialogHandle<TopDialogComponent> | undefined;
5
+ /**
6
+ * Добавить компонент диалогового окна для использования
7
+ */
8
+ export declare const addDialogWorker: <T extends TopDialogComponent>(TopDialogComponent: T) => TopDialogHandle<T>;
9
+ declare const _default: DefineComponent<{}, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>;
10
+ export default _default;