@shtabapp/ui-kit 1.62.0 → 1.64.0

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 (199) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/dist/SChartBar-BVgwPlYi.js +215 -0
  3. package/dist/SChartBar-CBU1uCuL.cjs +1 -0
  4. package/dist/SChartBurnup-Ch3UMa9w.cjs +1 -0
  5. package/dist/{SChartBurnup-Dxi0MBwo.js → SChartBurnup-DyJHdRlf.js} +75 -75
  6. package/dist/SChartHorizontalBar-Bv90SV6E.cjs +1 -0
  7. package/dist/{SChartHorizontalBar-XNasKzaO.js → SChartHorizontalBar-DDo6TfE8.js} +28 -28
  8. package/dist/{SChartLine-DSQaezYq.js → SChartLine-Cs1JzPEK.js} +29 -29
  9. package/dist/SChartLine-nIGaef_o.cjs +1 -0
  10. package/dist/SChartMultiLine-BzoW4ETf.cjs +1 -0
  11. package/dist/SChartMultiLine-DqCQ7FCv.js +204 -0
  12. package/dist/{SChartPie-bN8rY-y5.js → SChartPie-Bt3o7LZI.js} +55 -55
  13. package/dist/SChartPie-Bv5Obcwb.cjs +1 -0
  14. package/dist/{SChartProgress-BtwqE4xL.js → SChartProgress-uMg4DBpS.js} +30 -30
  15. package/dist/SChartProgress-xxqrj03o.cjs +1 -0
  16. package/dist/SChartStackedArea-BNe6FAg8.cjs +1 -0
  17. package/dist/{SChartStackedArea-BxUex_Di.js → SChartStackedArea-BQGnKp1i.js} +58 -58
  18. package/dist/SChartStackedBar-D1G-VloG.cjs +1 -0
  19. package/dist/SChartStackedBar-fiUU9lNp.js +245 -0
  20. package/dist/SColorPicker-BRSi0Xhm.cjs +1 -0
  21. package/dist/{SColorPicker-BL-zrskU.js → SColorPicker-Djr-R81h.js} +2 -1
  22. package/dist/SDropdownMenu-2koPU6IG.js +38 -0
  23. package/dist/SDropdownMenu-k9SxaFVH.cjs +1 -0
  24. package/dist/SList-D0PDc8VN.cjs +1 -0
  25. package/dist/SList-D2K9dNsj.js +465 -0
  26. package/dist/{SSegmentControl-CAoM03V6.js → SSegmentControl-B9KkAQiG.js} +11 -9
  27. package/dist/SSegmentControl-OXTka86u.cjs +1 -0
  28. package/dist/SSelect-CRlkCLik.cjs +1 -0
  29. package/dist/SSelect-D6taevzT.js +650 -0
  30. package/dist/STable-NbCfen0n.cjs +1 -0
  31. package/dist/STable-aS1eGuVB.js +3445 -0
  32. package/dist/areChartSeriesAligned-DiBX3TTk.cjs +1 -0
  33. package/dist/{buildChartSeriesPoints-D8Xpfwp7.js → areChartSeriesAligned-DjonrIMm.js} +2 -8
  34. package/dist/buildChartSeriesPoints-BTyOpkin.js +10 -0
  35. package/dist/buildChartSeriesPoints-Cqo2ed-n.cjs +1 -0
  36. package/dist/components/SChartBar/SChartBar.types.d.ts +47 -0
  37. package/dist/components/SChartBar/SChartBar.types.d.ts.map +1 -0
  38. package/dist/components/SChartBar/SChartBar.vue.d.ts +11 -0
  39. package/dist/components/SChartBar/SChartBar.vue.d.ts.map +1 -0
  40. package/dist/components/SChartBar/index.d.ts +3 -0
  41. package/dist/components/SChartBar/index.d.ts.map +1 -0
  42. package/dist/components/SChartBar/utils/buildBarChartConfig.d.ts +16 -0
  43. package/dist/components/SChartBar/utils/buildBarChartConfig.d.ts.map +1 -0
  44. package/dist/components/SChartBar/utils/createBarTargetLinePlugin.d.ts +9 -0
  45. package/dist/components/SChartBar/utils/createBarTargetLinePlugin.d.ts.map +1 -0
  46. package/dist/components/SChartBar/utils/demoBarSeries.d.ts +9 -0
  47. package/dist/components/SChartBar/utils/demoBarSeries.d.ts.map +1 -0
  48. package/dist/components/SChartBar/utils/skeletonBarSeries.d.ts +5 -0
  49. package/dist/components/SChartBar/utils/skeletonBarSeries.d.ts.map +1 -0
  50. package/dist/components/SChartMultiLine/SChartMultiLine.types.d.ts +2 -0
  51. package/dist/components/SChartMultiLine/SChartMultiLine.types.d.ts.map +1 -1
  52. package/dist/components/SChartMultiLine/SChartMultiLine.vue.d.ts.map +1 -1
  53. package/dist/components/SChartMultiLine/utils/buildMultiLineChartConfig.d.ts +2 -1
  54. package/dist/components/SChartMultiLine/utils/buildMultiLineChartConfig.d.ts.map +1 -1
  55. package/dist/components/SList/SList.vue.d.ts.map +1 -1
  56. package/dist/components/SList/utils/resolveListItemFields.d.ts +1 -1
  57. package/dist/components/SList/utils/resolveListItemFields.d.ts.map +1 -1
  58. package/dist/components/SSegmentControl/SSegmentControl.types.d.ts +2 -0
  59. package/dist/components/SSegmentControl/SSegmentControl.types.d.ts.map +1 -1
  60. package/dist/components/SSegmentControl/SSegmentControlItem.vue.d.ts.map +1 -1
  61. package/dist/components/STable/STable.types.d.ts +317 -0
  62. package/dist/components/STable/STable.types.d.ts.map +1 -0
  63. package/dist/components/STable/STable.vue.d.ts +154 -0
  64. package/dist/components/STable/STable.vue.d.ts.map +1 -0
  65. package/dist/components/STable/constants/tableSizes.d.ts +76 -0
  66. package/dist/components/STable/constants/tableSizes.d.ts.map +1 -0
  67. package/dist/components/STable/index.d.ts +4 -0
  68. package/dist/components/STable/index.d.ts.map +1 -0
  69. package/dist/components/STable/parts/STableCellText.vue.d.ts +23 -0
  70. package/dist/components/STable/parts/STableCellText.vue.d.ts.map +1 -0
  71. package/dist/components/STable/parts/STableCheckbox.vue.d.ts +17 -0
  72. package/dist/components/STable/parts/STableCheckbox.vue.d.ts.map +1 -0
  73. package/dist/components/STable/parts/STableContentRow.vue.d.ts +41 -0
  74. package/dist/components/STable/parts/STableContentRow.vue.d.ts.map +1 -0
  75. package/dist/components/STable/parts/STableGroupRow.vue.d.ts +55 -0
  76. package/dist/components/STable/parts/STableGroupRow.vue.d.ts.map +1 -0
  77. package/dist/components/STable/parts/STableHeaderCell.vue.d.ts +36 -0
  78. package/dist/components/STable/parts/STableHeaderCell.vue.d.ts.map +1 -0
  79. package/dist/components/STable/parts/STableHint.vue.d.ts +7 -0
  80. package/dist/components/STable/parts/STableHint.vue.d.ts.map +1 -0
  81. package/dist/components/STable/parts/STablePlaceholderRow.vue.d.ts +25 -0
  82. package/dist/components/STable/parts/STablePlaceholderRow.vue.d.ts.map +1 -0
  83. package/dist/components/STable/parts/STableRow.vue.d.ts +67 -0
  84. package/dist/components/STable/parts/STableRow.vue.d.ts.map +1 -0
  85. package/dist/components/STable/parts/STableSkeletonRow.vue.d.ts +27 -0
  86. package/dist/components/STable/parts/STableSkeletonRow.vue.d.ts.map +1 -0
  87. package/dist/components/STable/utils/tableDndShared.d.ts +17 -0
  88. package/dist/components/STable/utils/tableDndShared.d.ts.map +1 -0
  89. package/dist/components/STable/utils/useFlatTableRows.d.ts +62 -0
  90. package/dist/components/STable/utils/useFlatTableRows.d.ts.map +1 -0
  91. package/dist/components/STable/utils/useTableCellPlans.d.ts +48 -0
  92. package/dist/components/STable/utils/useTableCellPlans.d.ts.map +1 -0
  93. package/dist/components/STable/utils/useTableColumnDnd.d.ts +28 -0
  94. package/dist/components/STable/utils/useTableColumnDnd.d.ts.map +1 -0
  95. package/dist/components/STable/utils/useTableColumnResize.d.ts +24 -0
  96. package/dist/components/STable/utils/useTableColumnResize.d.ts.map +1 -0
  97. package/dist/components/STable/utils/useTableColumns.d.ts +86 -0
  98. package/dist/components/STable/utils/useTableColumns.d.ts.map +1 -0
  99. package/dist/components/STable/utils/useTableGridFocus.d.ts +79 -0
  100. package/dist/components/STable/utils/useTableGridFocus.d.ts.map +1 -0
  101. package/dist/components/STable/utils/useTableGridKeyboard.d.ts +36 -0
  102. package/dist/components/STable/utils/useTableGridKeyboard.d.ts.map +1 -0
  103. package/dist/components/STable/utils/useTableRenderEntries.d.ts +56 -0
  104. package/dist/components/STable/utils/useTableRenderEntries.d.ts.map +1 -0
  105. package/dist/components/STable/utils/useTableRowDnd.d.ts +37 -0
  106. package/dist/components/STable/utils/useTableRowDnd.d.ts.map +1 -0
  107. package/dist/components/STable/utils/useTableRowHydration.d.ts +29 -0
  108. package/dist/components/STable/utils/useTableRowHydration.d.ts.map +1 -0
  109. package/dist/components/STable/utils/useTableScrollScale.d.ts +34 -0
  110. package/dist/components/STable/utils/useTableScrollScale.d.ts.map +1 -0
  111. package/dist/components/STable/utils/useTableSelection.d.ts +27 -0
  112. package/dist/components/STable/utils/useTableSelection.d.ts.map +1 -0
  113. package/dist/components/STable/utils/useTableServiceRows.d.ts +57 -0
  114. package/dist/components/STable/utils/useTableServiceRows.d.ts.map +1 -0
  115. package/dist/components/STable/utils/useTableSorting.d.ts +21 -0
  116. package/dist/components/STable/utils/useTableSorting.d.ts.map +1 -0
  117. package/dist/components/STable/utils/useTableStickyRows.d.ts +38 -0
  118. package/dist/components/STable/utils/useTableStickyRows.d.ts.map +1 -0
  119. package/dist/components/STable/utils/useTableStyleVars.d.ts +22 -0
  120. package/dist/components/STable/utils/useTableStyleVars.d.ts.map +1 -0
  121. package/dist/components/STable/utils/useTableVirtualRows.d.ts +56 -0
  122. package/dist/components/STable/utils/useTableVirtualRows.d.ts.map +1 -0
  123. package/dist/composables/treeKeyboardNavigation.d.ts +26 -0
  124. package/dist/composables/treeKeyboardNavigation.d.ts.map +1 -0
  125. package/dist/composables/useFlatTreeList.d.ts +1 -0
  126. package/dist/composables/useFlatTreeList.d.ts.map +1 -1
  127. package/dist/{createChartCrosshairPlugin-DwFOncWI.js → createChartCrosshairPlugin-DU5grSok.js} +2 -2
  128. package/dist/createChartCrosshairPlugin-DfYzBie2.cjs +1 -0
  129. package/dist/entries/chart-bar.cjs +1 -0
  130. package/dist/entries/chart-bar.d.ts +3 -0
  131. package/dist/entries/chart-bar.d.ts.map +1 -0
  132. package/dist/entries/chart-bar.js +2 -0
  133. package/dist/entries/chart-burnup.cjs +1 -1
  134. package/dist/entries/chart-burnup.js +1 -1
  135. package/dist/entries/chart-horizontal-bar.cjs +1 -1
  136. package/dist/entries/chart-horizontal-bar.js +1 -1
  137. package/dist/entries/chart-line.cjs +1 -1
  138. package/dist/entries/chart-line.js +1 -1
  139. package/dist/entries/chart-multi-line.cjs +1 -1
  140. package/dist/entries/chart-multi-line.js +1 -1
  141. package/dist/entries/chart-pie.cjs +1 -1
  142. package/dist/entries/chart-pie.js +1 -1
  143. package/dist/entries/chart-progress.cjs +1 -1
  144. package/dist/entries/chart-progress.js +1 -1
  145. package/dist/entries/chart-stacked-area.cjs +1 -1
  146. package/dist/entries/chart-stacked-area.js +1 -1
  147. package/dist/entries/chart-stacked-bar.cjs +1 -1
  148. package/dist/entries/chart-stacked-bar.js +1 -1
  149. package/dist/entries/color-picker.cjs +1 -1
  150. package/dist/entries/color-picker.js +1 -1
  151. package/dist/entries/list.cjs +1 -1
  152. package/dist/entries/list.js +1 -1
  153. package/dist/entries/segment-control.cjs +1 -1
  154. package/dist/entries/segment-control.js +1 -1
  155. package/dist/entries/select.cjs +1 -1
  156. package/dist/entries/select.js +1 -1
  157. package/dist/entries/table.cjs +1 -0
  158. package/dist/entries/table.d.ts +3 -0
  159. package/dist/entries/table.d.ts.map +1 -0
  160. package/dist/entries/table.js +2 -0
  161. package/dist/index.cjs +1 -1
  162. package/dist/index.d.ts +4 -0
  163. package/dist/index.d.ts.map +1 -1
  164. package/dist/index.js +133 -129
  165. package/dist/resolveBarStackedSeriesColor-HDSkh6Mw.cjs +1 -0
  166. package/dist/resolveBarStackedSeriesColor-LpVh1SvQ.js +11 -0
  167. package/dist/resolveSeriesPaletteColor-B5qoBbXN.cjs +1 -0
  168. package/dist/{resolveSeriesPaletteColor-BdvGT-PI.js → resolveSeriesPaletteColor-DcLSyk-D.js} +1 -1
  169. package/dist/{resolveStackedChartContext-DFre3tt0.js → resolveStackedChartContext-CIKVXkDn.js} +6 -6
  170. package/dist/resolveStackedChartContext-CQbgdV55.cjs +1 -0
  171. package/dist/treeKeyboardNavigation-BOz2SVus.cjs +1 -0
  172. package/dist/treeKeyboardNavigation-SmxTdnDz.js +131 -0
  173. package/dist/uikit-components.css +1 -1
  174. package/dist/{SChartSkeletonHost-BT96eWSF.js → useChartInteractivity-BATdT86l.js} +126 -126
  175. package/dist/useChartInteractivity-CXSdHPOw.cjs +1 -0
  176. package/package.json +19 -3
  177. package/dist/SChartBurnup-C4x5kik6.cjs +0 -1
  178. package/dist/SChartHorizontalBar-4H-lgfO4.cjs +0 -1
  179. package/dist/SChartLine-BF6Klm4j.cjs +0 -1
  180. package/dist/SChartMultiLine-CrMmphFe.js +0 -198
  181. package/dist/SChartMultiLine-Ddvfmf__.cjs +0 -1
  182. package/dist/SChartPie-namQTFla.cjs +0 -1
  183. package/dist/SChartProgress-DsFHotRv.cjs +0 -1
  184. package/dist/SChartSkeletonHost-Dt5EjQr5.cjs +0 -1
  185. package/dist/SChartStackedArea-BLHs3sSH.cjs +0 -1
  186. package/dist/SChartStackedBar-BJ9LOgSP.js +0 -250
  187. package/dist/SChartStackedBar-CWNyvUj9.cjs +0 -1
  188. package/dist/SColorPicker-CvhpJEj1.cjs +0 -1
  189. package/dist/SList-C39LrsoS.js +0 -590
  190. package/dist/SList-Du0gqyFs.cjs +0 -1
  191. package/dist/SSegmentControl-B9jT8Axu.cjs +0 -1
  192. package/dist/SSelect-BkX3VuCr.js +0 -682
  193. package/dist/SSelect-CHWKMbB_.cjs +0 -1
  194. package/dist/buildChartSeriesPoints-Bv3nXvSu.cjs +0 -1
  195. package/dist/components/SList/utils/treeKeyboardNavigation.d.ts +0 -16
  196. package/dist/components/SList/utils/treeKeyboardNavigation.d.ts.map +0 -1
  197. package/dist/createChartCrosshairPlugin-ZZwKUQm8.cjs +0 -1
  198. package/dist/resolveSeriesPaletteColor-hI4YDdUg.cjs +0 -1
  199. package/dist/resolveStackedChartContext-Dsxhhhel.cjs +0 -1
package/CHANGELOG.md CHANGED
@@ -1,3 +1,22 @@
1
+ ## [@shtabapp/ui-kit-v1.64.0](https://gitlab.com/mstikharev/shtab-ui-kit/compare/@shtabapp/ui-kit@1.63.0...@shtabapp/ui-kit@1.64.0) (2026-08-28)
2
+
3
+ ### Features
4
+
5
+ - **s-table:** сжатие прокрутки, прогрессивная гидрация, гибкие колонки, sticky-футеры без моргания ([1905a03](https://gitlab.com/mstikharev/shtab-ui-kit/commit/1905a037ecaa9014e2b1b2d11e09a7e1e43a4999))
6
+ - **s-table:** таблица с виртуализацией, деревьями и sticky-слоями ([732687a](https://gitlab.com/mstikharev/shtab-ui-kit/commit/732687ae3b31201b8b426f21661e47eb1c66f824))
7
+ - stable rework wip ([4a0fc41](https://gitlab.com/mstikharev/shtab-ui-kit/commit/4a0fc41338a5d8d3ac985e92d077cc1b2e118bf2))
8
+
9
+ ### Bug Fixes
10
+
11
+ - **s-table:** пустая строка в ячейке показывает плейсхолдер, ноль остаётся видимым ([e01d1dd](https://gitlab.com/mstikharev/shtab-ui-kit/commit/e01d1dde0d0fec083fcf1109711669f0be9972de))
12
+
13
+ ## [@shtabapp/ui-kit-v1.63.0](https://gitlab.com/mstikharev/shtab-ui-kit/compare/@shtabapp/ui-kit@1.62.0...@shtabapp/ui-kit@1.63.0) (2026-08-14)
14
+
15
+ ### Features
16
+
17
+ - schart chart fixes, fixes ([0e9bc5c](https://gitlab.com/mstikharev/shtab-ui-kit/commit/0e9bc5c27067b310891812bdf96c36771a0da170))
18
+ - schartbar ([5a128f5](https://gitlab.com/mstikharev/shtab-ui-kit/commit/5a128f557e88e2b6a6aecea2570a4e44ff684315))
19
+
1
20
  ## [@shtabapp/ui-kit-v1.62.0](https://gitlab.com/mstikharev/shtab-ui-kit/compare/@shtabapp/ui-kit@1.61.0...@shtabapp/ui-kit@1.62.0) (2026-08-08)
2
21
 
3
22
  ### Features
@@ -0,0 +1,215 @@
1
+ import { t as e } from "./SChartLegend-oZoF8XK7.js";
2
+ import { C as t, S as n, a as r, g as i, i as a, n as o, o as s, r as c, t as l } from "./useChartInteractivity-BATdT86l.js";
3
+ import { t as u } from "./buildCartesianChartScales-EofFq3ry.js";
4
+ import { t as d } from "./resolveBarStackedSeriesColor-LpVh1SvQ.js";
5
+ import { n as f, t as p } from "./buildChartSeriesPoints-BTyOpkin.js";
6
+ import { t as m } from "./useHasListener-RSjlUyqH.js";
7
+ import { computed as h, createBlock as g, createCommentVNode as _, createElementBlock as v, createElementVNode as y, createVNode as b, defineComponent as x, normalizeClass as S, openBlock as C, unref as w, useTemplateRef as T, withCtx as E } from "vue";
8
+ //#region src/components/SChartBar/utils/createBarTargetLinePlugin.ts
9
+ var D = 1, O = [4, 4], k = "500 10px var(--s-ui-font-family-label)", A = 4, j = (e) => e.length > 0 && new Set(e).size === 1, M = ({ target: e, colorHostElement: t, rightAxisId: r }) => ({
10
+ id: "barTargetLine",
11
+ afterDatasetsDraw(a) {
12
+ if (!e || e.values.length === 0) return;
13
+ let o = e.axis === "right" ? r : "y", s = a.scales[o], c = a.scales.x;
14
+ if (!s || !c) return;
15
+ let { ctx: l, chartArea: u } = a, d = e.color ? n(e.color, t) || e.color : n(i.grid, t);
16
+ l.save(), l.strokeStyle = d, l.lineWidth = D, l.setLineDash(O);
17
+ let [f] = e.values;
18
+ if (f !== void 0 && j(e.values)) {
19
+ let t = s.getPixelForValue(f);
20
+ l.beginPath(), l.moveTo(u.left, t), l.lineTo(u.right, t), l.stroke(), e.label && (l.setLineDash([]), l.fillStyle = d, l.font = k, l.textAlign = "left", l.fillText(e.label, u.left, t - A));
21
+ } else {
22
+ let t = (u.right - u.left) / e.values.length;
23
+ e.values.forEach((e, n) => {
24
+ if (e <= 0) return;
25
+ let r = s.getPixelForValue(e);
26
+ l.beginPath(), l.moveTo(u.left + t * n, r), l.lineTo(u.left + t * (n + 1), r), l.stroke();
27
+ });
28
+ }
29
+ l.restore();
30
+ }
31
+ }), N = 5, P = 4, F = 12, I = "yRight", L = "yMirror", R = 1.05, z = (e, t, n) => {
32
+ if (t !== void 0) return t;
33
+ let r = e.flatMap((e) => e.points.map((e) => e.value)), i = r.length > 0 ? Math.max(...r) : 0;
34
+ return i > 0 ? Math.ceil(i * R / n) * n : n;
35
+ }, B = ({ seriesList: e, colorHostElement: t, yMax: o, yStep: l = N, rightYMax: f, rightYStep: p = N, mirrorYAxis: m = !1, target: h, skeleton: g = !1, onPointClick: _ }) => {
36
+ if (e.length === 0) return null;
37
+ let v = e.filter((e) => e.axis !== "right"), y = e.filter((e) => e.axis === "right"), b = n(i.axisLabel, t), x = n(i.grid, t), S = n(i.tooltipBackground, t), C = n(i.tooltipText, t), w = z(v, o, l), T = z(y, f, p), E = u({
38
+ axisLabelColor: b,
39
+ gridColor: x,
40
+ yMin: 0,
41
+ yMax: w,
42
+ yStep: l,
43
+ xTickFontSize: F
44
+ }), D = (e) => ({
45
+ type: "linear",
46
+ position: "right",
47
+ min: 0,
48
+ max: e,
49
+ border: { display: !1 },
50
+ grid: { drawOnChartArea: !1 },
51
+ ticks: E.y.ticks
52
+ }), O = y.length > 0 ? { [I]: D(T) } : m ? { [L]: D(w) } : {}, k = {
53
+ ...E,
54
+ ...O
55
+ }, A = c({
56
+ kind: "segment",
57
+ skeleton: g,
58
+ colorHostElement: t,
59
+ onElementIndexClick: _
60
+ });
61
+ return {
62
+ type: "bar",
63
+ data: {
64
+ labels: e[0]?.points.map((e) => e.label) ?? [],
65
+ datasets: e.map((e, r) => {
66
+ let i = d(r, t, e.fillColor, g), a = e.points.map((e) => e.fillColor ? n(e.fillColor, t) || e.fillColor : i);
67
+ return {
68
+ label: e.label,
69
+ data: e.points.map((e) => e.value),
70
+ backgroundColor: a,
71
+ hoverBackgroundColor: a,
72
+ borderWidth: 0,
73
+ hoverBorderWidth: 0,
74
+ borderRadius: {
75
+ topLeft: P,
76
+ topRight: P
77
+ },
78
+ yAxisID: e.axis === "right" ? I : "y",
79
+ captions: e.points.map((e) => e.caption)
80
+ };
81
+ })
82
+ },
83
+ options: {
84
+ responsive: !0,
85
+ maintainAspectRatio: !1,
86
+ onHover: A.onHover,
87
+ onClick: A.onClick,
88
+ hover: g ? void 0 : {
89
+ mode: "nearest",
90
+ intersect: !0
91
+ },
92
+ interaction: a(g, {
93
+ mode: "nearest",
94
+ intersect: !0
95
+ }),
96
+ plugins: {
97
+ legend: { display: !1 },
98
+ tooltip: {
99
+ enabled: r(g),
100
+ backgroundColor: S,
101
+ titleColor: C,
102
+ bodyColor: C,
103
+ displayColors: !1
104
+ }
105
+ },
106
+ scales: k
107
+ },
108
+ plugins: s(g, [M({
109
+ target: h,
110
+ colorHostElement: t,
111
+ rightAxisId: I
112
+ }), ...A.plugins])
113
+ };
114
+ }, V = [
115
+ "5 неделя",
116
+ "6 неделя",
117
+ "7 неделя",
118
+ "8 неделя",
119
+ "9 неделя",
120
+ "10 неделя"
121
+ ], H = [{
122
+ label: "Series 1",
123
+ points: p(V, [
124
+ 28,
125
+ 34,
126
+ 24,
127
+ 42,
128
+ 30,
129
+ 36
130
+ ])
131
+ }, {
132
+ label: "Series 2",
133
+ points: p(V, [
134
+ 18,
135
+ 22,
136
+ 16,
137
+ 28,
138
+ 20,
139
+ 24
140
+ ])
141
+ }], U = { class: "s-ui-chart-bar__canvas-wrap" }, W = /* @__PURE__ */ x({
142
+ __name: "SChartBar",
143
+ props: {
144
+ series: { default: () => [] },
145
+ mode: { default: "grouped" },
146
+ loading: {
147
+ type: Boolean,
148
+ default: !1
149
+ },
150
+ yMax: {},
151
+ yStep: {},
152
+ rightYMax: {},
153
+ rightYStep: {},
154
+ mirrorYAxis: {
155
+ type: Boolean,
156
+ default: !1
157
+ },
158
+ target: {},
159
+ showLegend: {
160
+ type: Boolean,
161
+ default: !0
162
+ }
163
+ },
164
+ emits: ["pointClick"],
165
+ setup(n, { expose: r, emit: i }) {
166
+ let a = i, s = T("chartRootRef"), c = T("chartCanvasRef"), u = h(() => n.loading ? H : n.mode === "single" ? n.series.slice(0, 1) : n.series), p = (e, t) => {
167
+ let n = u.value[t], r = n?.points[e];
168
+ n && r && a("pointClick", e, t, r, n);
169
+ }, x = m("onPointClick"), D = h(() => !n.loading && n.series.length === 0 ? null : B({
170
+ seriesList: u.value,
171
+ colorHostElement: s.value,
172
+ yMax: n.loading ? 50 : n.yMax,
173
+ yStep: n.loading ? 10 : n.yStep,
174
+ rightYMax: n.rightYMax,
175
+ rightYStep: n.rightYStep,
176
+ mirrorYAxis: n.mirrorYAxis,
177
+ target: n.loading ? void 0 : n.target,
178
+ skeleton: n.loading,
179
+ onPointClick: x() ? p : void 0
180
+ })), O = h(() => f(u.value, (e, t) => d(e, s.value, t, n.loading))), { chartInstance: k } = o({
181
+ canvasRef: c,
182
+ config: D,
183
+ enabled: h(() => n.loading || n.series.length > 0)
184
+ }), { exportImage: A, handleLegendItemHover: j } = l({
185
+ chartInstance: k,
186
+ canvasRef: c,
187
+ colorHostElement: s
188
+ });
189
+ return r({ exportImage: A }), (r, i) => (C(), v("div", {
190
+ ref_key: "chartRootRef",
191
+ ref: s,
192
+ class: S(["s-ui-chart-bar", { "s-ui-chart-bar--skeleton": n.loading }])
193
+ }, [y("div", U, [b(w(t), { loading: n.loading }, {
194
+ default: E(() => [y("canvas", {
195
+ ref_key: "chartCanvasRef",
196
+ ref: c,
197
+ class: "s-ui-chart-bar__canvas"
198
+ }, null, 512)]),
199
+ _: 1
200
+ }, 8, ["loading"])]), n.showLegend && O.value.length ? (C(), g(w(e), {
201
+ key: 0,
202
+ items: O.value,
203
+ disabled: n.loading,
204
+ interactive: !n.loading,
205
+ onItemHover: w(j)
206
+ }, null, 8, [
207
+ "items",
208
+ "disabled",
209
+ "interactive",
210
+ "onItemHover"
211
+ ])) : _("", !0)], 2));
212
+ }
213
+ });
214
+ //#endregion
215
+ export { W as t };
@@ -0,0 +1 @@
1
+ const e=require("./SChartLegend-DGtjd6zV.cjs"),t=require("./useChartInteractivity-CXSdHPOw.cjs"),n=require("./buildCartesianChartScales-Dck5yBMo.cjs"),r=require("./resolveBarStackedSeriesColor-HDSkh6Mw.cjs"),i=require("./buildChartSeriesPoints-Cqo2ed-n.cjs"),a=require("./useHasListener-BPgtbbo6.cjs");let o=require("vue");var s=1,c=[4,4],l=`500 10px var(--s-ui-font-family-label)`,u=4,d=e=>e.length>0&&new Set(e).size===1,f=({target:e,colorHostElement:n,rightAxisId:r})=>({id:`barTargetLine`,afterDatasetsDraw(i){if(!e||e.values.length===0)return;let a=e.axis===`right`?r:`y`,o=i.scales[a],f=i.scales.x;if(!o||!f)return;let{ctx:p,chartArea:m}=i,h=e.color?t.S(e.color,n)||e.color:t.S(t.g.grid,n);p.save(),p.strokeStyle=h,p.lineWidth=s,p.setLineDash(c);let[g]=e.values;if(g!==void 0&&d(e.values)){let t=o.getPixelForValue(g);p.beginPath(),p.moveTo(m.left,t),p.lineTo(m.right,t),p.stroke(),e.label&&(p.setLineDash([]),p.fillStyle=h,p.font=l,p.textAlign=`left`,p.fillText(e.label,m.left,t-u))}else{let t=(m.right-m.left)/e.values.length;e.values.forEach((e,n)=>{if(e<=0)return;let r=o.getPixelForValue(e);p.beginPath(),p.moveTo(m.left+t*n,r),p.lineTo(m.left+t*(n+1),r),p.stroke()})}p.restore()}}),p=5,m=4,h=12,g=`yRight`,_=`yMirror`,v=1.05,y=(e,t,n)=>{if(t!==void 0)return t;let r=e.flatMap(e=>e.points.map(e=>e.value)),i=r.length>0?Math.max(...r):0;return i>0?Math.ceil(i*v/n)*n:n},b=({seriesList:e,colorHostElement:i,yMax:a,yStep:o=p,rightYMax:s,rightYStep:c=p,mirrorYAxis:l=!1,target:u,skeleton:d=!1,onPointClick:v})=>{if(e.length===0)return null;let b=e.filter(e=>e.axis!==`right`),x=e.filter(e=>e.axis===`right`),S=t.S(t.g.axisLabel,i),C=t.S(t.g.grid,i),w=t.S(t.g.tooltipBackground,i),T=t.S(t.g.tooltipText,i),E=y(b,a,o),D=y(x,s,c),O=n.t({axisLabelColor:S,gridColor:C,yMin:0,yMax:E,yStep:o,xTickFontSize:h}),k=e=>({type:`linear`,position:`right`,min:0,max:e,border:{display:!1},grid:{drawOnChartArea:!1},ticks:O.y.ticks}),A=x.length>0?{[g]:k(D)}:l?{[_]:k(E)}:{},j={...O,...A},M=t.r({kind:`segment`,skeleton:d,colorHostElement:i,onElementIndexClick:v});return{type:`bar`,data:{labels:e[0]?.points.map(e=>e.label)??[],datasets:e.map((e,n)=>{let a=r.t(n,i,e.fillColor,d),o=e.points.map(e=>e.fillColor?t.S(e.fillColor,i)||e.fillColor:a);return{label:e.label,data:e.points.map(e=>e.value),backgroundColor:o,hoverBackgroundColor:o,borderWidth:0,hoverBorderWidth:0,borderRadius:{topLeft:m,topRight:m},yAxisID:e.axis===`right`?g:`y`,captions:e.points.map(e=>e.caption)}})},options:{responsive:!0,maintainAspectRatio:!1,onHover:M.onHover,onClick:M.onClick,hover:d?void 0:{mode:`nearest`,intersect:!0},interaction:t.i(d,{mode:`nearest`,intersect:!0}),plugins:{legend:{display:!1},tooltip:{enabled:t.a(d),backgroundColor:w,titleColor:T,bodyColor:T,displayColors:!1}},scales:j},plugins:t.o(d,[f({target:u,colorHostElement:i,rightAxisId:g}),...M.plugins])}},x=[`5 неделя`,`6 неделя`,`7 неделя`,`8 неделя`,`9 неделя`,`10 неделя`],S=[{label:`Series 1`,points:i.t(x,[28,34,24,42,30,36])},{label:`Series 2`,points:i.t(x,[18,22,16,28,20,24])}],C={class:`s-ui-chart-bar__canvas-wrap`},w=(0,o.defineComponent)({__name:`SChartBar`,props:{series:{default:()=>[]},mode:{default:`grouped`},loading:{type:Boolean,default:!1},yMax:{},yStep:{},rightYMax:{},rightYStep:{},mirrorYAxis:{type:Boolean,default:!1},target:{},showLegend:{type:Boolean,default:!0}},emits:[`pointClick`],setup(n,{expose:s,emit:c}){let l=c,u=(0,o.useTemplateRef)(`chartRootRef`),d=(0,o.useTemplateRef)(`chartCanvasRef`),f=(0,o.computed)(()=>n.loading?S:n.mode===`single`?n.series.slice(0,1):n.series),p=(e,t)=>{let n=f.value[t],r=n?.points[e];n&&r&&l(`pointClick`,e,t,r,n)},m=a.t(`onPointClick`),h=(0,o.computed)(()=>!n.loading&&n.series.length===0?null:b({seriesList:f.value,colorHostElement:u.value,yMax:n.loading?50:n.yMax,yStep:n.loading?10:n.yStep,rightYMax:n.rightYMax,rightYStep:n.rightYStep,mirrorYAxis:n.mirrorYAxis,target:n.loading?void 0:n.target,skeleton:n.loading,onPointClick:m()?p:void 0})),g=(0,o.computed)(()=>i.n(f.value,(e,t)=>r.t(e,u.value,t,n.loading))),{chartInstance:_}=t.n({canvasRef:d,config:h,enabled:(0,o.computed)(()=>n.loading||n.series.length>0)}),{exportImage:v,handleLegendItemHover:y}=t.t({chartInstance:_,canvasRef:d,colorHostElement:u});return s({exportImage:v}),(r,i)=>((0,o.openBlock)(),(0,o.createElementBlock)(`div`,{ref_key:`chartRootRef`,ref:u,class:(0,o.normalizeClass)([`s-ui-chart-bar`,{"s-ui-chart-bar--skeleton":n.loading}])},[(0,o.createElementVNode)(`div`,C,[(0,o.createVNode)((0,o.unref)(t.C),{loading:n.loading},{default:(0,o.withCtx)(()=>[(0,o.createElementVNode)(`canvas`,{ref_key:`chartCanvasRef`,ref:d,class:`s-ui-chart-bar__canvas`},null,512)]),_:1},8,[`loading`])]),n.showLegend&&g.value.length?((0,o.openBlock)(),(0,o.createBlock)((0,o.unref)(e.t),{key:0,items:g.value,disabled:n.loading,interactive:!n.loading,onItemHover:(0,o.unref)(y)},null,8,[`items`,`disabled`,`interactive`,`onItemHover`])):(0,o.createCommentVNode)(``,!0)],2))}});Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return w}});
@@ -0,0 +1 @@
1
+ const e=require("./SChartLegend-DGtjd6zV.cjs"),t=require("./useChartInteractivity-CXSdHPOw.cjs"),n=require("./createChartAreaFillGradient-BwsojVzU.cjs"),r=require("./createChartCrosshairPlugin-DfYzBie2.cjs"),i=require("./buildMultiLineChartScales-7mcIfRVG.cjs");let a=require("vue");var o=(e,n)=>({id:`sUiChartBurnupTodayLine`,beforeDatasetsDraw(r){if(e<0)return;let{ctx:i,chartArea:a}=r,o=r.scales.x;if(!a||!o)return;let s=t.S(t.g.burnupToday,n),c=o.getPixelForValue(e);i.save(),i.beginPath(),i.moveTo(c,a.top),i.lineTo(c,a.bottom),i.lineWidth=1,i.strokeStyle=s,i.stroke(),i.restore()}}),s=8,c=4,l=5,u=12,d=12,f=60,p=12,m=e=>{if(typeof window>`u`)return`500 10px sans-serif`;let t=e??document.documentElement;return`500 10px ${getComputedStyle(t).getPropertyValue(`--s-ui-font-family-label`).trim()||`sans-serif`}`},h=(e,t,n,r,i,a)=>{let o=Math.min(a,r/2,i/2);e.beginPath(),e.moveTo(t+o,n),e.lineTo(t+r-o,n),e.arcTo(t+r,n,t+r,n+o,o),e.lineTo(t+r,n+i-o),e.arcTo(t+r,n+i,t+r-o,n+i,o),e.lineTo(t+o,n+i),e.arcTo(t,n+i,t,n+i-o,o),e.lineTo(t,n+o),e.arcTo(t,n,t+o,n,o),e.closePath()},g=({tagLines:e,factDatasetIndex:n,todayIndex:r},i)=>({id:`sUiChartBurnupTag`,afterDatasetsDraw(a){if(r<0||e.length===0)return;let o=a.getDatasetMeta(n)?.data[r],{chartArea:g}=a;if(!o||!g)return;let _=t.S(t.g.burnupToday,i),v=t.S(t.g.burnupTagBackground,i),{ctx:y}=a;y.save(),y.font=m(i),y.textAlign=`center`,y.textBaseline=`middle`;let b=e.reduce((e,t)=>Math.max(e,y.measureText(t).width),0),x=Math.max(f,b+s*2),S=e.length*d+c+l,C=Math.min(Math.max(o.x-x/2,g.left),g.right-x),w=Math.max(o.y-p-S,g.top);h(y,C,w,x,S,u),y.fillStyle=v,y.fill(),y.lineWidth=1,y.strokeStyle=_,y.stroke(),y.fillStyle=_,e.forEach((e,t)=>{y.fillText(e,C+x/2,w+c+d*(t+.5))}),y.restore()}}),_=(e,t)=>t>=0&&e>t,v=({todayIndex:e,futureLabel:t})=>({title:t=>{let n=t[0];return!n||_(n.dataIndex,e)?``:`${n.label}`},label:n=>_(n.dataIndex,e)?t:`${n.dataset.label??``}: ${n.parsed.y??0}%`}),y=e=>t=>!_(t.dataIndex,e)||t.datasetIndex===0,b=1,x=1,S=2,C=[8,8],w=[9,9],T=2,E=25,D=e=>e.reduce((e,t,n)=>t.fact===null?e:n,-1),O=(e,t,n)=>{let r=e.reduce((e,t)=>Math.max(e,t.plan,t.fact??0),t);return Math.ceil(r/n)*n},k=({points:e,colorHostElement:a,goalValue:s=100,goalLabel:c=`Цель`,planLabel:l=`План`,factLabel:u=`Факт`,futureLabel:d=`Этот день ещё не наступил`,yStep:f=E,mirrorYAxis:p=!0,showTag:m=!0,skeleton:h=!1})=>{if(e.length===0)return null;let _=t.S(t.g.axisLabel,a),k=t.S(t.g.grid,a),A=t.S(t.g.tooltipBackground,a),j=t.S(t.g.tooltipText,a),M=t.S(t.g.skeletonSeries,a),N=h?M:t.S(t.g.burnupGoal,a),P=h?M:t.S(t.g.burnupPlan,a),F=h?M:t.S(t.g.burnupFact,a),I=t.S(t.g.burnupFactFillStart,a),L=t.S(t.g.burnupFactFillEnd,a),R=D(e),z=R>=0?e[R]:void 0,B=z?[`${u.toLowerCase()} ${z.fact}%`,`${l.toLowerCase()} ${z.plan}%`]:[];return{type:`line`,data:{labels:e.map(e=>e.label),datasets:[{label:c,data:e.map(()=>s),borderColor:N,backgroundColor:N,borderWidth:b,borderDash:C,fill:!1,pointRadius:0,pointHoverRadius:0,tension:0},{label:l,data:e.map(e=>e.plan),borderColor:P,backgroundColor:P,borderWidth:x,borderDash:w,fill:!1,pointRadius:0,pointHoverRadius:0,tension:.4},{label:u,data:e.map(e=>e.fact??null),borderColor:F,backgroundColor:h?F:e=>n.t(e,I,L),borderWidth:S,fill:!h,spanGaps:!1,pointRadius:0,pointHoverRadius:4,tension:.4}]},options:{responsive:!0,maintainAspectRatio:!1,interaction:t.i(h,{mode:`index`,intersect:!1}),plugins:{legend:{display:!1},tooltip:{enabled:t.a(h),backgroundColor:A,titleColor:j,bodyColor:j,displayColors:!1,position:t.u,yAlign:`bottom`,xAlign:`center`,caretPadding:8,filter:y(R),callbacks:v({todayIndex:R,futureLabel:d})}},scales:i.t({axisLabelColor:_,gridColor:k,yMin:0,yMax:O(e,s,f),yStep:f,mirrorYAxis:p,formatYAxisTick:e=>`${e}%`})},plugins:t.o(h,[r.t(a),o(R,a),...m?[g({tagLines:B,factDatasetIndex:T,todayIndex:R},a)]:[]])}},A=[8,15,23,31,38,46,54,62,69,77,85,92,96,100],j=[5,10,16,22,28,34,40,45,50,54,57,60,null,null],M=A.map((e,t)=>({label:`Д${t+1}`,plan:e,fact:j[t]})),N={class:`s-ui-chart-burnup__canvas-wrap`},P=(0,a.defineComponent)({__name:`SChartBurnup`,props:{points:{default:()=>[]},loading:{type:Boolean,default:!1},goalValue:{default:100},goalLabel:{default:`Цель`},planLabel:{default:`План`},factLabel:{default:`Факт`},futureLabel:{default:`Этот день ещё не наступил`},yStep:{default:25},mirrorYAxis:{type:Boolean,default:!0},showTag:{type:Boolean,default:!0}},setup(n,{expose:r}){let i=(0,a.useTemplateRef)(`chartRootRef`),o=(0,a.useTemplateRef)(`chartCanvasRef`),s=(0,a.computed)(()=>n.loading?M:n.points),c=(0,a.computed)(()=>!n.loading&&n.points.length===0?null:k({points:s.value,colorHostElement:i.value,goalValue:n.goalValue,goalLabel:n.goalLabel,planLabel:n.planLabel,factLabel:n.factLabel,futureLabel:n.futureLabel,yStep:n.yStep,mirrorYAxis:n.mirrorYAxis,showTag:n.showTag,skeleton:n.loading})),l=(0,a.computed)(()=>[{label:n.goalLabel,cssVariable:t.g.burnupGoal},{label:n.planLabel,cssVariable:t.g.burnupPlan},{label:n.factLabel,cssVariable:t.g.burnupFact}].map(e=>({label:e.label.toLowerCase(),color:t.S(n.loading?t.g.skeletonSeries:e.cssVariable,i.value)}))),{chartInstance:u}=t.n({canvasRef:o,config:c,enabled:(0,a.computed)(()=>n.loading||n.points.length>0)}),{exportImage:d}=t.t({chartInstance:u,canvasRef:o,colorHostElement:i});return r({exportImage:d}),(r,s)=>((0,a.openBlock)(),(0,a.createElementBlock)(`div`,{ref_key:`chartRootRef`,ref:i,class:(0,a.normalizeClass)([`s-ui-chart-burnup`,{"s-ui-chart-burnup--skeleton":n.loading}])},[(0,a.createElementVNode)(`div`,N,[(0,a.createVNode)((0,a.unref)(t.C),{loading:n.loading},{default:(0,a.withCtx)(()=>[(0,a.createElementVNode)(`canvas`,{ref_key:`chartCanvasRef`,ref:o,class:`s-ui-chart-burnup__canvas`},null,512)]),_:1},8,[`loading`])]),(0,a.createVNode)((0,a.unref)(e.t),{items:l.value,disabled:n.loading},null,8,[`items`,`disabled`])],2))}});Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return P}});
@@ -1,18 +1,18 @@
1
- import { t as e } from "./createChartAreaFillGradient-BDmME9Gy.js";
2
- import { c as t, f as n, i as r, o as i, r as a, s as o, t as s, v as c, w as l } from "./SChartSkeletonHost-BT96eWSF.js";
3
- import { t as u } from "./createChartCrosshairPlugin-DwFOncWI.js";
4
- import { t as d } from "./buildMultiLineChartScales-CFZ8YVeJ.js";
5
- import { t as f } from "./SChartLegend-oZoF8XK7.js";
1
+ import { t as e } from "./SChartLegend-oZoF8XK7.js";
2
+ import { C as t, S as n, a as r, g as i, i as a, n as o, o as s, t as c, u as l } from "./useChartInteractivity-BATdT86l.js";
3
+ import { t as u } from "./createChartAreaFillGradient-BDmME9Gy.js";
4
+ import { t as d } from "./createChartCrosshairPlugin-DU5grSok.js";
5
+ import { t as f } from "./buildMultiLineChartScales-CFZ8YVeJ.js";
6
6
  import { computed as p, createElementBlock as m, createElementVNode as h, createVNode as g, defineComponent as _, normalizeClass as v, openBlock as y, unref as b, useTemplateRef as x, withCtx as S } from "vue";
7
7
  //#region src/utils/chart/burnup/createBurnupTodayLinePlugin.ts
8
8
  var C = (e, t) => ({
9
9
  id: "sUiChartBurnupTodayLine",
10
- beforeDatasetsDraw(n) {
10
+ beforeDatasetsDraw(r) {
11
11
  if (e < 0) return;
12
- let { ctx: r, chartArea: i } = n, a = n.scales.x;
13
- if (!i || !a) return;
14
- let o = l(c.burnupToday, t), s = a.getPixelForValue(e);
15
- r.save(), r.beginPath(), r.moveTo(s, i.top), r.lineTo(s, i.bottom), r.lineWidth = 1, r.strokeStyle = o, r.stroke(), r.restore();
12
+ let { ctx: a, chartArea: o } = r, s = r.scales.x;
13
+ if (!o || !s) return;
14
+ let c = n(i.burnupToday, t), l = s.getPixelForValue(e);
15
+ a.save(), a.beginPath(), a.moveTo(l, o.top), a.lineTo(l, o.bottom), a.lineWidth = 1, a.strokeStyle = c, a.stroke(), a.restore();
16
16
  }
17
17
  }), w = 8, T = 4, E = 5, D = 12, O = 12, k = 60, A = 12, j = (e) => {
18
18
  if (typeof window > "u") return "500 10px sans-serif";
@@ -21,16 +21,16 @@ var C = (e, t) => ({
21
21
  }, M = (e, t, n, r, i, a) => {
22
22
  let o = Math.min(a, r / 2, i / 2);
23
23
  e.beginPath(), e.moveTo(t + o, n), e.lineTo(t + r - o, n), e.arcTo(t + r, n, t + r, n + o, o), e.lineTo(t + r, n + i - o), e.arcTo(t + r, n + i, t + r - o, n + i, o), e.lineTo(t + o, n + i), e.arcTo(t, n + i, t, n + i - o, o), e.lineTo(t, n + o), e.arcTo(t, n, t + o, n, o), e.closePath();
24
- }, N = ({ tagLines: e, factDatasetIndex: t, todayIndex: n }, r) => ({
24
+ }, N = ({ tagLines: e, factDatasetIndex: t, todayIndex: r }, a) => ({
25
25
  id: "sUiChartBurnupTag",
26
- afterDatasetsDraw(i) {
27
- if (n < 0 || e.length === 0) return;
28
- let a = i.getDatasetMeta(t)?.data[n], { chartArea: o } = i;
29
- if (!a || !o) return;
30
- let s = l(c.burnupToday, r), u = l(c.burnupTagBackground, r), { ctx: d } = i;
31
- d.save(), d.font = j(r), d.textAlign = "center", d.textBaseline = "middle";
32
- let f = e.reduce((e, t) => Math.max(e, d.measureText(t).width), 0), p = Math.max(k, f + w * 2), m = e.length * O + T + E, h = Math.min(Math.max(a.x - p / 2, o.left), o.right - p), g = Math.max(a.y - A - m, o.top);
33
- M(d, h, g, p, m, D), d.fillStyle = u, d.fill(), d.lineWidth = 1, d.strokeStyle = s, d.stroke(), d.fillStyle = s, e.forEach((e, t) => {
26
+ afterDatasetsDraw(o) {
27
+ if (r < 0 || e.length === 0) return;
28
+ let s = o.getDatasetMeta(t)?.data[r], { chartArea: c } = o;
29
+ if (!s || !c) return;
30
+ let l = n(i.burnupToday, a), u = n(i.burnupTagBackground, a), { ctx: d } = o;
31
+ d.save(), d.font = j(a), d.textAlign = "center", d.textBaseline = "middle";
32
+ let f = e.reduce((e, t) => Math.max(e, d.measureText(t).width), 0), p = Math.max(k, f + w * 2), m = e.length * O + T + E, h = Math.min(Math.max(s.x - p / 2, c.left), c.right - p), g = Math.max(s.y - A - m, c.top);
33
+ M(d, h, g, p, m, D), d.fillStyle = u, d.fill(), d.lineWidth = 1, d.strokeStyle = l, d.stroke(), d.fillStyle = l, e.forEach((e, t) => {
34
34
  d.fillText(e, h + p / 2, g + T + O * (t + .5));
35
35
  }), d.restore();
36
36
  }
@@ -43,17 +43,17 @@ var C = (e, t) => ({
43
43
  }), I = (e) => (t) => !P(t.dataIndex, e) || t.datasetIndex === 0, L = 1, R = 1, z = 2, B = [8, 8], V = [9, 9], H = 2, U = 25, W = (e) => e.reduce((e, t, n) => t.fact === null ? e : n, -1), G = (e, t, n) => {
44
44
  let r = e.reduce((e, t) => Math.max(e, t.plan, t.fact ?? 0), t);
45
45
  return Math.ceil(r / n) * n;
46
- }, K = ({ points: r, colorHostElement: a, goalValue: s = 100, goalLabel: f = "Цель", planLabel: p = "План", factLabel: m = "Факт", futureLabel: h = "Этот день ещё не наступил", yStep: g = U, mirrorYAxis: _ = !0, showTag: v = !0, skeleton: y = !1 }) => {
47
- if (r.length === 0) return null;
48
- let b = l(c.axisLabel, a), x = l(c.grid, a), S = l(c.tooltipBackground, a), w = l(c.tooltipText, a), T = l(c.skeletonSeries, a), E = y ? T : l(c.burnupGoal, a), D = y ? T : l(c.burnupPlan, a), O = y ? T : l(c.burnupFact, a), k = l(c.burnupFactFillStart, a), A = l(c.burnupFactFillEnd, a), j = W(r), M = j >= 0 ? r[j] : void 0, P = M ? [`${m.toLowerCase()} ${M.fact}%`, `${p.toLowerCase()} ${M.plan}%`] : [];
46
+ }, K = ({ points: e, colorHostElement: t, goalValue: o = 100, goalLabel: c = "Цель", planLabel: p = "План", factLabel: m = "Факт", futureLabel: h = "Этот день ещё не наступил", yStep: g = U, mirrorYAxis: _ = !0, showTag: v = !0, skeleton: y = !1 }) => {
47
+ if (e.length === 0) return null;
48
+ let b = n(i.axisLabel, t), x = n(i.grid, t), S = n(i.tooltipBackground, t), w = n(i.tooltipText, t), T = n(i.skeletonSeries, t), E = y ? T : n(i.burnupGoal, t), D = y ? T : n(i.burnupPlan, t), O = y ? T : n(i.burnupFact, t), k = n(i.burnupFactFillStart, t), A = n(i.burnupFactFillEnd, t), j = W(e), M = j >= 0 ? e[j] : void 0, P = M ? [`${m.toLowerCase()} ${M.fact}%`, `${p.toLowerCase()} ${M.plan}%`] : [];
49
49
  return {
50
50
  type: "line",
51
51
  data: {
52
- labels: r.map((e) => e.label),
52
+ labels: e.map((e) => e.label),
53
53
  datasets: [
54
54
  {
55
- label: f,
56
- data: r.map(() => s),
55
+ label: c,
56
+ data: e.map(() => o),
57
57
  borderColor: E,
58
58
  backgroundColor: E,
59
59
  borderWidth: L,
@@ -65,7 +65,7 @@ var C = (e, t) => ({
65
65
  },
66
66
  {
67
67
  label: p,
68
- data: r.map((e) => e.plan),
68
+ data: e.map((e) => e.plan),
69
69
  borderColor: D,
70
70
  backgroundColor: D,
71
71
  borderWidth: R,
@@ -77,9 +77,9 @@ var C = (e, t) => ({
77
77
  },
78
78
  {
79
79
  label: m,
80
- data: r.map((e) => e.fact ?? null),
80
+ data: e.map((e) => e.fact ?? null),
81
81
  borderColor: O,
82
- backgroundColor: y ? O : (t) => e(t, k, A),
82
+ backgroundColor: y ? O : (e) => u(e, k, A),
83
83
  borderWidth: z,
84
84
  fill: !y,
85
85
  spanGaps: !1,
@@ -92,19 +92,19 @@ var C = (e, t) => ({
92
92
  options: {
93
93
  responsive: !0,
94
94
  maintainAspectRatio: !1,
95
- interaction: i(y, {
95
+ interaction: a(y, {
96
96
  mode: "index",
97
97
  intersect: !1
98
98
  }),
99
99
  plugins: {
100
100
  legend: { display: !1 },
101
101
  tooltip: {
102
- enabled: o(y),
102
+ enabled: r(y),
103
103
  backgroundColor: S,
104
104
  titleColor: w,
105
105
  bodyColor: w,
106
106
  displayColors: !1,
107
- position: n,
107
+ position: l,
108
108
  yAlign: "bottom",
109
109
  xAlign: "center",
110
110
  caretPadding: 8,
@@ -115,24 +115,24 @@ var C = (e, t) => ({
115
115
  })
116
116
  }
117
117
  },
118
- scales: d({
118
+ scales: f({
119
119
  axisLabelColor: b,
120
120
  gridColor: x,
121
121
  yMin: 0,
122
- yMax: G(r, s, g),
122
+ yMax: G(e, o, g),
123
123
  yStep: g,
124
124
  mirrorYAxis: _,
125
125
  formatYAxisTick: (e) => `${e}%`
126
126
  })
127
127
  },
128
- plugins: t(y, [
129
- u(a),
130
- C(j, a),
128
+ plugins: s(y, [
129
+ d(t),
130
+ C(j, t),
131
131
  ...v ? [N({
132
132
  tagLines: P,
133
133
  factDatasetIndex: H,
134
134
  todayIndex: j
135
- }, a)] : []
135
+ }, t)] : []
136
136
  ])
137
137
  };
138
138
  }, q = [
@@ -192,58 +192,58 @@ var C = (e, t) => ({
192
192
  default: !0
193
193
  }
194
194
  },
195
- setup(e, { expose: t }) {
196
- let n = x("chartRootRef"), i = x("chartCanvasRef"), o = p(() => e.loading ? Y : e.points), u = p(() => !e.loading && e.points.length === 0 ? null : K({
197
- points: o.value,
198
- colorHostElement: n.value,
199
- goalValue: e.goalValue,
200
- goalLabel: e.goalLabel,
201
- planLabel: e.planLabel,
202
- factLabel: e.factLabel,
203
- futureLabel: e.futureLabel,
204
- yStep: e.yStep,
205
- mirrorYAxis: e.mirrorYAxis,
206
- showTag: e.showTag,
207
- skeleton: e.loading
208
- })), d = p(() => [
195
+ setup(r, { expose: a }) {
196
+ let s = x("chartRootRef"), l = x("chartCanvasRef"), u = p(() => r.loading ? Y : r.points), d = p(() => !r.loading && r.points.length === 0 ? null : K({
197
+ points: u.value,
198
+ colorHostElement: s.value,
199
+ goalValue: r.goalValue,
200
+ goalLabel: r.goalLabel,
201
+ planLabel: r.planLabel,
202
+ factLabel: r.factLabel,
203
+ futureLabel: r.futureLabel,
204
+ yStep: r.yStep,
205
+ mirrorYAxis: r.mirrorYAxis,
206
+ showTag: r.showTag,
207
+ skeleton: r.loading
208
+ })), f = p(() => [
209
209
  {
210
- label: e.goalLabel,
211
- cssVariable: c.burnupGoal
210
+ label: r.goalLabel,
211
+ cssVariable: i.burnupGoal
212
212
  },
213
213
  {
214
- label: e.planLabel,
215
- cssVariable: c.burnupPlan
214
+ label: r.planLabel,
215
+ cssVariable: i.burnupPlan
216
216
  },
217
217
  {
218
- label: e.factLabel,
219
- cssVariable: c.burnupFact
218
+ label: r.factLabel,
219
+ cssVariable: i.burnupFact
220
220
  }
221
- ].map((t) => ({
222
- label: t.label.toLowerCase(),
223
- color: l(e.loading ? c.skeletonSeries : t.cssVariable, n.value)
224
- }))), { chartInstance: _ } = r({
225
- canvasRef: i,
226
- config: u,
227
- enabled: p(() => e.loading || e.points.length > 0)
228
- }), { exportImage: C } = a({
221
+ ].map((e) => ({
222
+ label: e.label.toLowerCase(),
223
+ color: n(r.loading ? i.skeletonSeries : e.cssVariable, s.value)
224
+ }))), { chartInstance: _ } = o({
225
+ canvasRef: l,
226
+ config: d,
227
+ enabled: p(() => r.loading || r.points.length > 0)
228
+ }), { exportImage: C } = c({
229
229
  chartInstance: _,
230
- canvasRef: i,
231
- colorHostElement: n
230
+ canvasRef: l,
231
+ colorHostElement: s
232
232
  });
233
- return t({ exportImage: C }), (t, r) => (y(), m("div", {
233
+ return a({ exportImage: C }), (n, i) => (y(), m("div", {
234
234
  ref_key: "chartRootRef",
235
- ref: n,
236
- class: v(["s-ui-chart-burnup", { "s-ui-chart-burnup--skeleton": e.loading }])
237
- }, [h("div", X, [g(b(s), { loading: e.loading }, {
235
+ ref: s,
236
+ class: v(["s-ui-chart-burnup", { "s-ui-chart-burnup--skeleton": r.loading }])
237
+ }, [h("div", X, [g(b(t), { loading: r.loading }, {
238
238
  default: S(() => [h("canvas", {
239
239
  ref_key: "chartCanvasRef",
240
- ref: i,
240
+ ref: l,
241
241
  class: "s-ui-chart-burnup__canvas"
242
242
  }, null, 512)]),
243
243
  _: 1
244
- }, 8, ["loading"])]), g(b(f), {
245
- items: d.value,
246
- disabled: e.loading
244
+ }, 8, ["loading"])]), g(b(e), {
245
+ items: f.value,
246
+ disabled: r.loading
247
247
  }, null, 8, ["items", "disabled"])], 2));
248
248
  }
249
249
  });
@@ -0,0 +1 @@
1
+ const e=require("./useChartInteractivity-CXSdHPOw.cjs"),t=require("./useHasListener-BPgtbbo6.cjs");let n=require("vue");var r=10,i=14,a=({axisLabelColor:e,categoryLabelColor:t,gridColor:n,xMin:a,xMax:o,xStep:s})=>({x:{type:`linear`,min:a,max:o,border:{display:!1},grid:{color:n,drawTicks:!1},ticks:{color:e,stepSize:s,font:{size:r,weight:500},padding:8}},y:{border:{display:!1},grid:{display:!1},ticks:{color:t,font:{size:i,weight:400},padding:8,crossAlign:`far`,autoSkip:!1}}}),o=(t,n,r)=>r?e.S(e.g.barHorizontalSkeletonFill,n):t?e.S(t,n):e.S(e.g.barHorizontalFillDefault,n),s=(e,t,n)=>{if(t)return t;let r=0;for(let t of e)r=Math.max(r,t.value);let i=Math.ceil(r/n)*n;return i>0?i:n*6},c=10,l=0,u=36,d=4,f=({items:t,colorHostElement:n,xMax:r,xMin:i=l,xStep:f=c,skeleton:p=!1,onBarClick:m})=>{if(t.length===0)return null;let h=e.S(e.g.axisLabel,n),g=e.S(e.g.grid,n),_=e.S(e.g.tooltipBackground,n),v=e.S(e.g.tooltipText,n),y=e.S(p?e.g.barHorizontalCategoryLabelSkeleton:e.g.barHorizontalCategoryLabel,n),b=s(t,r,f),x=t.map(e=>o(e.color,n,p)),S=e.r({kind:`element`,skeleton:p,colorHostElement:n,onIndexClick:m});return{type:`bar`,data:{labels:t.map(e=>e.label),datasets:[{data:t.map(e=>e.value),backgroundColor:x,hoverBackgroundColor:x,borderWidth:0,hoverBorderWidth:0,barThickness:u,borderRadius:{topRight:d,bottomRight:d}}]},options:{indexAxis:`y`,responsive:!0,maintainAspectRatio:!1,onHover:S.onHover,onClick:S.onClick,interaction:e.i(p,{mode:`index`,axis:`y`,intersect:!1}),plugins:{legend:{display:!1},tooltip:{enabled:e.a(p),backgroundColor:_,titleColor:v,bodyColor:v}},scales:a({axisLabelColor:h,categoryLabelColor:y,gridColor:g,xMin:i,xMax:b,xStep:f})},plugins:S.plugins}},p=e=>f(e),m=[{label:`Открыта`,value:48},{label:`В процессе`,value:32},{label:`Ревью`,value:53},{label:`Готова для QA`,value:18},{label:`QA`,value:25},{label:`Готова`,value:0}],h={class:`s-ui-chart-horizontal-bar__canvas-wrap`},g=(0,n.defineComponent)({__name:`SChartHorizontalBar`,props:{items:{default:()=>[]},loading:{type:Boolean,default:!1},xMin:{},xMax:{},xStep:{}},emits:[`barClick`],setup(r,{expose:i,emit:a}){let o=a,s=(0,n.useTemplateRef)(`chartRootRef`),c=(0,n.useTemplateRef)(`chartCanvasRef`),l=(0,n.computed)(()=>r.loading?m:r.items),u=e=>{let t=r.items[e];t&&o(`barClick`,e,t)},d=t.t(`onBarClick`),{chartInstance:f}=e.n({canvasRef:c,config:(0,n.computed)(()=>!r.loading&&r.items.length===0?null:p({items:l.value,colorHostElement:s.value,xMax:r.loading?60:r.xMax,xMin:r.loading?0:r.xMin,xStep:r.loading?10:r.xStep,skeleton:r.loading,onBarClick:d()?u:void 0})),enabled:(0,n.computed)(()=>r.loading||r.items.length>0)}),{exportImage:g}=e.t({chartInstance:f,canvasRef:c,colorHostElement:s});return i({exportImage:g}),(t,i)=>((0,n.openBlock)(),(0,n.createElementBlock)(`div`,{ref_key:`chartRootRef`,ref:s,class:(0,n.normalizeClass)([`s-ui-chart-horizontal-bar`,{"s-ui-chart-horizontal-bar--skeleton":r.loading}])},[(0,n.createElementVNode)(`div`,h,[(0,n.createVNode)((0,n.unref)(e.C),{loading:r.loading},{default:(0,n.withCtx)(()=>[(0,n.createElementVNode)(`canvas`,{ref_key:`chartCanvasRef`,ref:c,class:`s-ui-chart-horizontal-bar__canvas`},null,512)]),_:1},8,[`loading`])])],2))}});Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return g}});
@@ -1,4 +1,4 @@
1
- import { a as e, i as t, o as n, r, s as i, t as a, v as o, w as s } from "./SChartSkeletonHost-BT96eWSF.js";
1
+ import { C as e, S as t, a as n, g as r, i, n as a, r as o, t as s } from "./useChartInteractivity-BATdT86l.js";
2
2
  import { t as c } from "./useHasListener-RSjlUyqH.js";
3
3
  import { computed as l, createElementBlock as u, createElementVNode as d, createVNode as f, defineComponent as p, normalizeClass as m, openBlock as h, unref as g, useTemplateRef as _, withCtx as v } from "vue";
4
4
  //#region src/utils/chart/horizontalBar/buildHorizontalBarChartScales.ts
@@ -36,26 +36,26 @@ var y = 10, b = 14, x = ({ axisLabelColor: e, categoryLabelColor: t, gridColor:
36
36
  autoSkip: !1
37
37
  }
38
38
  }
39
- }), S = (e, t, n) => s(n ? o.barHorizontalSkeletonFill : e || o.barHorizontalFillDefault, t), C = (e, t, n) => {
39
+ }), S = (e, n, i) => t(i ? r.barHorizontalSkeletonFill : e || r.barHorizontalFillDefault, n), C = (e, t, n) => {
40
40
  if (t) return t;
41
41
  let r = 0;
42
42
  for (let t of e) r = Math.max(r, t.value);
43
43
  let i = Math.ceil(r / n) * n;
44
44
  return i > 0 ? i : n * 6;
45
- }, w = 10, T = 0, E = 36, D = 4, O = ({ items: t, colorHostElement: r, xMax: a, xMin: c = T, xStep: l = w, skeleton: u = !1, onBarClick: d }) => {
46
- if (t.length === 0) return null;
47
- let f = s(o.axisLabel, r), p = s(o.grid, r), m = s(o.tooltipBackground, r), h = s(o.tooltipText, r), g = s(u ? o.barHorizontalCategoryLabelSkeleton : o.barHorizontalCategoryLabel, r), _ = C(t, a, l), v = t.map((e) => S(e.color, r, u)), y = e({
45
+ }, w = 10, T = 0, E = 36, D = 4, O = ({ items: e, colorHostElement: a, xMax: s, xMin: c = T, xStep: l = w, skeleton: u = !1, onBarClick: d }) => {
46
+ if (e.length === 0) return null;
47
+ let f = t(r.axisLabel, a), p = t(r.grid, a), m = t(r.tooltipBackground, a), h = t(r.tooltipText, a), g = t(u ? r.barHorizontalCategoryLabelSkeleton : r.barHorizontalCategoryLabel, a), _ = C(e, s, l), v = e.map((e) => S(e.color, a, u)), y = o({
48
48
  kind: "element",
49
49
  skeleton: u,
50
- colorHostElement: r,
50
+ colorHostElement: a,
51
51
  onIndexClick: d
52
52
  });
53
53
  return {
54
54
  type: "bar",
55
55
  data: {
56
- labels: t.map((e) => e.label),
56
+ labels: e.map((e) => e.label),
57
57
  datasets: [{
58
- data: t.map((e) => e.value),
58
+ data: e.map((e) => e.value),
59
59
  backgroundColor: v,
60
60
  hoverBackgroundColor: v,
61
61
  borderWidth: 0,
@@ -73,7 +73,7 @@ var y = 10, b = 14, x = ({ axisLabelColor: e, categoryLabelColor: t, gridColor:
73
73
  maintainAspectRatio: !1,
74
74
  onHover: y.onHover,
75
75
  onClick: y.onClick,
76
- interaction: n(u, {
76
+ interaction: i(u, {
77
77
  mode: "index",
78
78
  axis: "y",
79
79
  intersect: !1
@@ -81,7 +81,7 @@ var y = 10, b = 14, x = ({ axisLabelColor: e, categoryLabelColor: t, gridColor:
81
81
  plugins: {
82
82
  legend: { display: !1 },
83
83
  tooltip: {
84
- enabled: i(u),
84
+ enabled: n(u),
85
85
  backgroundColor: m,
86
86
  titleColor: h,
87
87
  bodyColor: h
@@ -136,32 +136,32 @@ var y = 10, b = 14, x = ({ axisLabelColor: e, categoryLabelColor: t, gridColor:
136
136
  xStep: {}
137
137
  },
138
138
  emits: ["barClick"],
139
- setup(e, { expose: n, emit: i }) {
140
- let o = i, s = _("chartRootRef"), p = _("chartCanvasRef"), y = l(() => e.loading ? A : e.items), b = (t) => {
141
- let n = e.items[t];
142
- n && o("barClick", t, n);
143
- }, x = c("onBarClick"), { chartInstance: S } = t({
139
+ setup(t, { expose: n, emit: r }) {
140
+ let i = r, o = _("chartRootRef"), p = _("chartCanvasRef"), y = l(() => t.loading ? A : t.items), b = (e) => {
141
+ let n = t.items[e];
142
+ n && i("barClick", e, n);
143
+ }, x = c("onBarClick"), { chartInstance: S } = a({
144
144
  canvasRef: p,
145
- config: l(() => !e.loading && e.items.length === 0 ? null : k({
145
+ config: l(() => !t.loading && t.items.length === 0 ? null : k({
146
146
  items: y.value,
147
- colorHostElement: s.value,
148
- xMax: e.loading ? 60 : e.xMax,
149
- xMin: e.loading ? 0 : e.xMin,
150
- xStep: e.loading ? 10 : e.xStep,
151
- skeleton: e.loading,
147
+ colorHostElement: o.value,
148
+ xMax: t.loading ? 60 : t.xMax,
149
+ xMin: t.loading ? 0 : t.xMin,
150
+ xStep: t.loading ? 10 : t.xStep,
151
+ skeleton: t.loading,
152
152
  onBarClick: x() ? b : void 0
153
153
  })),
154
- enabled: l(() => e.loading || e.items.length > 0)
155
- }), { exportImage: C } = r({
154
+ enabled: l(() => t.loading || t.items.length > 0)
155
+ }), { exportImage: C } = s({
156
156
  chartInstance: S,
157
157
  canvasRef: p,
158
- colorHostElement: s
158
+ colorHostElement: o
159
159
  });
160
- return n({ exportImage: C }), (t, n) => (h(), u("div", {
160
+ return n({ exportImage: C }), (n, r) => (h(), u("div", {
161
161
  ref_key: "chartRootRef",
162
- ref: s,
163
- class: m(["s-ui-chart-horizontal-bar", { "s-ui-chart-horizontal-bar--skeleton": e.loading }])
164
- }, [d("div", j, [f(g(a), { loading: e.loading }, {
162
+ ref: o,
163
+ class: m(["s-ui-chart-horizontal-bar", { "s-ui-chart-horizontal-bar--skeleton": t.loading }])
164
+ }, [d("div", j, [f(g(e), { loading: t.loading }, {
165
165
  default: v(() => [d("canvas", {
166
166
  ref_key: "chartCanvasRef",
167
167
  ref: p,