minerva-design 1.17.1 → 1.18.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 (113) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/dist/angular/fesm2022/minerva-angular.mjs +27 -25
  3. package/dist/angular/fesm2022/minerva-angular.mjs.map +1 -1
  4. package/dist/angular/types/minerva-angular.d.ts +1 -1
  5. package/dist/charts/engine/backing-store.cjs +2 -0
  6. package/dist/charts/engine/backing-store.cjs.map +1 -0
  7. package/dist/charts/engine/backing-store.d.cts +11 -0
  8. package/dist/charts/engine/backing-store.d.ts +11 -0
  9. package/dist/charts/engine/backing-store.js +27 -0
  10. package/dist/charts/engine/backing-store.js.map +1 -0
  11. package/dist/charts/engine/canvas.cjs +1 -1
  12. package/dist/charts/engine/canvas.cjs.map +1 -1
  13. package/dist/charts/engine/canvas.js +89 -86
  14. package/dist/charts/engine/canvas.js.map +1 -1
  15. package/dist/charts/engine/chart.cjs +1 -1
  16. package/dist/charts/engine/chart.cjs.map +1 -1
  17. package/dist/charts/engine/chart.js +309 -301
  18. package/dist/charts/engine/chart.js.map +1 -1
  19. package/dist/charts/engine/model.cjs +1 -1
  20. package/dist/charts/engine/model.cjs.map +1 -1
  21. package/dist/charts/engine/model.d.cts +5 -0
  22. package/dist/charts/engine/model.d.ts +5 -0
  23. package/dist/charts/engine/model.js +1 -0
  24. package/dist/charts/engine/model.js.map +1 -1
  25. package/dist/charts/engine/overlay.cjs +1 -1
  26. package/dist/charts/engine/overlay.cjs.map +1 -1
  27. package/dist/charts/engine/overlay.d.cts +11 -0
  28. package/dist/charts/engine/overlay.d.ts +11 -0
  29. package/dist/charts/engine/overlay.js +112 -32
  30. package/dist/charts/engine/overlay.js.map +1 -1
  31. package/dist/charts/engine/presets.cjs +1 -1
  32. package/dist/charts/engine/presets.cjs.map +1 -1
  33. package/dist/charts/engine/presets.js +4 -0
  34. package/dist/charts/engine/presets.js.map +1 -1
  35. package/dist/charts/engine/scene.cjs +1 -1
  36. package/dist/charts/engine/scene.cjs.map +1 -1
  37. package/dist/charts/engine/scene.d.cts +16 -0
  38. package/dist/charts/engine/scene.d.ts +16 -0
  39. package/dist/charts/engine/scene.js +133 -116
  40. package/dist/charts/engine/scene.js.map +1 -1
  41. package/dist/charts/engine/shapes/canvas.cjs +1 -1
  42. package/dist/charts/engine/shapes/canvas.cjs.map +1 -1
  43. package/dist/charts/engine/shapes/canvas.js +97 -94
  44. package/dist/charts/engine/shapes/canvas.js.map +1 -1
  45. package/dist/charts/engine/types.d.cts +24 -0
  46. package/dist/charts/engine/types.d.ts +24 -0
  47. package/dist/charts/react/Chart.cjs +1 -1
  48. package/dist/charts/react/Chart.cjs.map +1 -1
  49. package/dist/charts/react/Chart.d.cts +4 -2
  50. package/dist/charts/react/Chart.d.ts +4 -2
  51. package/dist/charts/react/Chart.js +42 -42
  52. package/dist/charts/react/Chart.js.map +1 -1
  53. package/dist/charts/react/charts.cjs +1 -1
  54. package/dist/charts/react/charts.cjs.map +1 -1
  55. package/dist/charts/react/charts.js +320 -231
  56. package/dist/charts/react/charts.js.map +1 -1
  57. package/dist/charts/react/types.d.cts +8 -2
  58. package/dist/charts/react/types.d.ts +8 -2
  59. package/dist/core/contracts.cjs +1 -1
  60. package/dist/core/contracts.cjs.map +1 -1
  61. package/dist/core/contracts.js +1 -1
  62. package/dist/core/contracts.js.map +1 -1
  63. package/dist/native/charts/src/engine/backing-store.cjs +2 -0
  64. package/dist/native/charts/src/engine/backing-store.cjs.map +1 -0
  65. package/dist/native/charts/src/engine/backing-store.js +27 -0
  66. package/dist/native/charts/src/engine/backing-store.js.map +1 -0
  67. package/dist/native/charts/src/engine/model.cjs +1 -1
  68. package/dist/native/charts/src/engine/model.cjs.map +1 -1
  69. package/dist/native/charts/src/engine/model.js +1 -0
  70. package/dist/native/charts/src/engine/model.js.map +1 -1
  71. package/dist/native/charts/src/engine/overlay.cjs +1 -1
  72. package/dist/native/charts/src/engine/overlay.cjs.map +1 -1
  73. package/dist/native/charts/src/engine/overlay.js +107 -28
  74. package/dist/native/charts/src/engine/overlay.js.map +1 -1
  75. package/dist/native/charts/src/engine/presets.cjs +1 -1
  76. package/dist/native/charts/src/engine/presets.cjs.map +1 -1
  77. package/dist/native/charts/src/engine/presets.js +4 -0
  78. package/dist/native/charts/src/engine/presets.js.map +1 -1
  79. package/dist/native/charts/src/engine/scene.cjs +1 -1
  80. package/dist/native/charts/src/engine/scene.cjs.map +1 -1
  81. package/dist/native/charts/src/engine/scene.js +133 -116
  82. package/dist/native/charts/src/engine/scene.js.map +1 -1
  83. package/dist/native/charts/src/engine/shapes/canvas.cjs +1 -1
  84. package/dist/native/charts/src/engine/shapes/canvas.cjs.map +1 -1
  85. package/dist/native/charts/src/engine/shapes/canvas.js +107 -104
  86. package/dist/native/charts/src/engine/shapes/canvas.js.map +1 -1
  87. package/dist/react/components/QuadrantTaskBoard/QuadrantTaskBoard.cjs +1 -1
  88. package/dist/react/components/QuadrantTaskBoard/QuadrantTaskBoard.cjs.map +1 -1
  89. package/dist/react/components/QuadrantTaskBoard/QuadrantTaskBoard.js +14 -8
  90. package/dist/react/components/QuadrantTaskBoard/QuadrantTaskBoard.js.map +1 -1
  91. package/dist/react/components/QuadrantTaskBoard/quadrantTaskBoard.module.scss.cjs +1 -1
  92. package/dist/react/components/QuadrantTaskBoard/quadrantTaskBoard.module.scss.cjs.map +1 -1
  93. package/dist/react/components/QuadrantTaskBoard/quadrantTaskBoard.module.scss.js +16 -15
  94. package/dist/react/components/QuadrantTaskBoard/quadrantTaskBoard.module.scss.js.map +1 -1
  95. package/dist/react/style.css +1 -1
  96. package/dist/react/styles/quadrant-task-board.css +1 -1
  97. package/dist/taro/chart-pixel-ratio.d.ts +10 -0
  98. package/dist/taro/index.js +1820 -1708
  99. package/dist/taro/style.css +123 -1
  100. package/dist/uni/QuadrantTaskBoard.vue +4 -14
  101. package/dist/uni/style.css +112 -0
  102. package/dist/vue/components/QuadrantTaskBoard/QuadrantTaskBoard.vue.js.map +1 -1
  103. package/dist/vue/components/QuadrantTaskBoard/QuadrantTaskBoard.vue_vue_type_script_setup_true_lang.js +14 -8
  104. package/dist/vue/components/QuadrantTaskBoard/QuadrantTaskBoard.vue_vue_type_script_setup_true_lang.js.map +1 -1
  105. package/dist/weapp/charts/canvas.js +231 -20
  106. package/dist/weapp/controls.js +1 -1
  107. package/dist/weapp/controls.wxss +112 -0
  108. package/dist/weapp/quadrant-task-board/index.wxml +1 -1
  109. package/dist/web-components/components/quadrant-task-board/quadrant-task-board.js +7 -7
  110. package/dist/web-components/components/quadrant-task-board/quadrant-task-board.js.map +1 -1
  111. package/dist/web-components/styles/QuadrantTaskBoard/quadrantTaskBoard.css.js +1 -1
  112. package/dist/web-components/styles/QuadrantTaskBoard/quadrantTaskBoard.css.js.map +1 -1
  113. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,26 @@
1
1
  # minerva-design
2
2
 
3
+ ## 1.18.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 39a6cf4: QuadrantChart (React): one point card for hover, focus, selection and drag. The card carries the point's dot (placed exactly on the point), its name and its quadrant (with the badge), and the point's actions (`renderPointActions`) beside the name. The engine tooltip and hover label chip are gone, and the drawn label of the active point gives way to the card while the other labels keep their places. `renderTooltip` now fills the card. The card stays while the pointer moves from the dot to its actions, mirrors near the right edge (without flipping back and forth during a drag), and stays inside the plot near the top and bottom edges. Clicking its name selects the point.
8
+
9
+ QuadrantTaskBoard: compact edit and delete buttons (xsmall, 14px icons). On React they sit in the task card; on Vue, Angular and Web Components the toolbar above the task is smaller. On narrow phones (≤ 360px) the mini program headers give the title the room: the badge is hidden and the chips are tighter.
10
+
11
+ Chart engine: new `interaction.hoverLabel` option (`false` keeps a hovered dot's label as drawn) and `ChartInstance.setLabelHidden()` (hides a point's drawn label but keeps its place). Labels kept in quadrant cells now keep a gap between each other and never sit nearer to another dot than to their own, so crowded quadrants no longer pair a name with the wrong dot.
12
+
13
+ ## 1.17.2
14
+
15
+ ### Patch Changes
16
+
17
+ - a411866: Sharper and tidier quadrant boards and charts on mini programs, and quadrant point labels that stay in their quadrant.
18
+
19
+ - **QuadrantTaskBoard** (Taro, uni-app, WeChat): the quadrant headers are compact single-line pills in a 2 x 2 grid, like the web board: the badge and the task count are small chips, a long quadrant title is cut with an ellipsis instead of wrapping, and the + button sits at the end. The headers are styled by the shared stylesheet (no inline layout) and can be themed with `--quadrant-task-board-header-background`, `--quadrant-task-board-header-color`, `--quadrant-task-board-count-background` and `--quadrant-task-board-count-color`.
20
+ - **Charts on Taro H5** were blurry on high-density screens: the canvas was drawn at 1x because Taro's H5 runtime has no pixel ratio API on its default export. Charts now use the page's `devicePixelRatio` there. Canvas charts (Taro and uni-app H5 included) also draw again right away when the host component resets the size of the canvas behind them, instead of staying blank or blurry until the next update.
21
+ - **Taro Input**: small and large inputs no longer pad their text twice, so their text lines up like in medium inputs. This also fixes the name field of the QuadrantTaskBoard panel.
22
+ - **Quadrant charts** (every renderer): a point label stays inside the quadrant of its dot. It goes on the side of the dot with more room in the quadrant, and is cut with "…" when it still does not fit (a label that would keep only a few letters is left out; the tooltip still names the point), so it no longer crosses the center dividers or runs into the dots of the next quadrant. Overlapping labels are still skipped. The behavior comes from a new scatter series option, `labelCells: { x, y }`, which keeps labels inside the cells of a plot cut at those values.
23
+
3
24
  ## 1.17.1
4
25
 
5
26
  ### Patch Changes
@@ -1513,26 +1513,27 @@ const progressIndicatorStyles = {
1513
1513
  };
1514
1514
  const proseStyles = { prose: "_prose_3xiks_1" };
1515
1515
  const quadrantTaskBoardStyles = {
1516
- actions: "_actions_15tn3_58",
1517
- "actions-in": "_actions-in_15tn3_1",
1518
- add: "_add_15tn3_54",
1519
- badge: "_badge_15tn3_35",
1520
- board: "_board_15tn3_1",
1521
- count: "_count_15tn3_40",
1522
- field: "_field_15tn3_89",
1523
- footer: "_footer_15tn3_213",
1524
- form: "_form_15tn3_83",
1525
- header: "_header_15tn3_11",
1526
- panel: "_panel_15tn3_97",
1527
- "panel-in": "_panel-in_15tn3_1",
1528
- panelText: "_panelText_15tn3_134",
1529
- panelTitle: "_panelTitle_15tn3_127",
1530
- quadrant: "_quadrant_15tn3_142",
1531
- quadrantGrid: "_quadrantGrid_15tn3_156",
1532
- quadrantName: "_quadrantName_15tn3_206",
1533
- quadrants: "_quadrants_15tn3_142",
1534
- swatch: "_swatch_15tn3_199",
1535
- title: "_title_15tn3_29"
1516
+ actions: "_actions_1m92c_58",
1517
+ "actions-in": "_actions-in_1m92c_1",
1518
+ add: "_add_1m92c_54",
1519
+ badge: "_badge_1m92c_35",
1520
+ board: "_board_1m92c_1",
1521
+ cardActions: "_cardActions_1m92c_83",
1522
+ count: "_count_1m92c_40",
1523
+ field: "_field_1m92c_95",
1524
+ footer: "_footer_1m92c_219",
1525
+ form: "_form_1m92c_89",
1526
+ header: "_header_1m92c_11",
1527
+ panel: "_panel_1m92c_103",
1528
+ "panel-in": "_panel-in_1m92c_1",
1529
+ panelText: "_panelText_1m92c_140",
1530
+ panelTitle: "_panelTitle_1m92c_133",
1531
+ quadrant: "_quadrant_1m92c_148",
1532
+ quadrantGrid: "_quadrantGrid_1m92c_162",
1533
+ quadrantName: "_quadrantName_1m92c_212",
1534
+ quadrants: "_quadrants_1m92c_148",
1535
+ swatch: "_swatch_1m92c_205",
1536
+ title: "_title_1m92c_29"
1536
1537
  };
1537
1538
  const radioStyles = {
1538
1539
  circle: "_circle_ffxaw_87",
@@ -46606,6 +46607,7 @@ const emptyBox = () => ({
46606
46607
  height: 0
46607
46608
  });
46608
46609
  const ICON_ATTRS = `width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"`;
46610
+ const ACTION_ICON_ATTRS = `width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"`;
46609
46611
  var MnQuadrantTaskBoard = class MnQuadrantTaskBoard {
46610
46612
  constructor() {
46611
46613
  this.points = input.required(...ngDevMode ? [{ debugName: "points" }] : /* istanbul ignore next */ []);
@@ -47204,7 +47206,7 @@ var MnQuadrantTaskBoard = class MnQuadrantTaskBoard {
47204
47206
  ],
47205
47207
  exportAs: ["mnQuadrantTaskBoard"],
47206
47208
  ngImport: i0,
47207
- template: "\n <mn-quadrant-chart\n [points]=\"points()\"\n [locale]=\"language()\"\n [selectedIndex]=\"selected()\"\n [draggable]=\"draggable() ?? true\"\n [height]=\"height()\"\n [width]=\"width()\"\n [renderer]=\"renderer()\"\n [legend]=\"legend()\"\n [tooltip]=\"tooltip()\"\n [crosshair]=\"crosshair()\"\n [annotations]=\"annotations()\"\n [interaction]=\"interaction()\"\n [padding]=\"padding()\"\n [palette]=\"palette()\"\n [ariaLabel]=\"ariaLabel()\"\n [xDomain]=\"xDomain()\"\n [yDomain]=\"yDomain()\"\n [xSplit]=\"xSplit()\"\n [ySplit]=\"ySplit()\"\n [quadrants]=\"quadrants()\"\n [xLabel]=\"xLabel()\"\n [yLabel]=\"yLabel()\"\n [axisLabels]=\"axisLabels()\"\n [showTicks]=\"showTicks()\"\n [reverseX]=\"reverseX()\"\n [showLabels]=\"showLabels()\"\n [pointSize]=\"pointSize()\"\n [name]=\"name()\"\n [selectedIndices]=\"selectedIndices()\"\n [accessiblePoints]=\"accessiblePoints()\"\n [quadrantHeader]=\"header\"\n [pointActions]=\"actions\"\n (hover)=\"hover.emit($event)\"\n (zoom)=\"zoom.emit($event)\"\n (rendererChange)=\"rendererChange.emit($event)\"\n (pointClick)=\"onPointClick($event)\"\n (pointDoubleClick)=\"edit($event.index)\"\n (pointDrag)=\"pointDrag.emit($event)\"\n (pointDrop)=\"onPointDrop($event)\"\n (quadrantClick)=\"add($event.quadrant, pointerBox(), $event)\"\n />\n <ng-template #header let-corner let-info=\"info\">\n <div [class]=\"s.header\" [attr.data-corner]=\"corner\">\n @if (info.region?.badge) {\n <span [class]=\"s.badge\">{{ info.region.badge }}</span>\n }\n <span [class]=\"s.title\">{{ title(corner) }}</span>\n @if (showCounts() !== false) {\n <span [class]=\"s.count\">{{ countText(info.points) }}</span>\n }\n <button\n mnIconButton\n size=\"xsmall\"\n variant=\"ghost\"\n [class]=\"s.add\"\n [label]=\"texts().add + ' · ' + title(corner)\"\n [attr.aria-expanded]=\"adding() === corner\"\n (click)=\"add(corner, boxOf($event.currentTarget))\"\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path [attr.d]=\"icons.add\" /></svg>\n </button>\n </div>\n </ng-template>\n <ng-template #actions let-index=\"index\">\n <div\n role=\"toolbar\"\n [attr.aria-label]=\"texts().actions\"\n [class]=\"s.actions\"\n (pointerdown)=\"$event.stopPropagation()\"\n >\n <button\n mnIconButton\n size=\"small\"\n variant=\"ghost\"\n [label]=\"texts().edit\"\n (click)=\"edit(index)\"\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path [attr.d]=\"icons.edit\" /></svg>\n </button>\n <button\n mnIconButton\n size=\"small\"\n variant=\"ghost\"\n color=\"danger\"\n [label]=\"texts().delete\"\n (click)=\"confirmRemove(index)\"\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path [attr.d]=\"icons.delete\" /></svg>\n </button>\n </div>\n </ng-template>\n @if (draft(); as current) {\n <div\n #panel\n role=\"dialog\"\n [attr.aria-labelledby]=\"ids.title\"\n [class]=\"s.panel\"\n [attr.data-quadrant-task-panel]=\"\n current.index === null ? 'add' : 'edit'\n \"\n (keydown)=\"onPanelKeydown($event)\"\n >\n <form [class]=\"s.form\" (submit)=\"save($event)\">\n <h3 [id]=\"ids.title\" [class]=\"s.panelTitle\">\n {{ current.index === null ? texts().add : texts().edit }}\n </h3>\n <label [class]=\"s.field\">\n <span>{{ texts().name }}</span>\n <mn-input\n required\n size=\"small\"\n [value]=\"current.label\"\n [aria-label]=\"texts().name\"\n (valueChange)=\"setLabel($event ?? '')\"\n />\n </label>\n <fieldset [class]=\"s.quadrants\">\n <legend>{{ texts().quadrant }}</legend>\n <div [class]=\"s.quadrantGrid\">\n @for (corner of corners; track corner) {\n <label [class]=\"s.quadrant\" [attr.data-corner]=\"corner\">\n <input\n type=\"radio\"\n [name]=\"ids.quadrant\"\n [value]=\"corner\"\n [checked]=\"current.quadrant === corner\"\n (change)=\"setQuadrant(corner)\"\n />\n <span\n [class]=\"s.swatch\"\n [style.background]=\"color(corner)\"\n aria-hidden=\"true\"\n ></span>\n <span [class]=\"s.quadrantName\">{{ title(corner) }}</span>\n </label>\n }\n </div>\n </fieldset>\n <div [class]=\"s.footer\">\n <button\n mnButton\n size=\"small\"\n color=\"neutral\"\n variant=\"ghost\"\n (click)=\"close()\"\n >\n {{ texts().cancel }}\n </button>\n <button mnButton size=\"small\" type=\"submit\" [disabled]=\"!canSave()\">\n {{ texts().save }}\n </button>\n </div>\n </form>\n </div>\n }\n @if (deletingPoint()) {\n <div\n #panel\n role=\"alertdialog\"\n [attr.aria-labelledby]=\"ids.title\"\n [attr.aria-describedby]=\"ids.text\"\n [class]=\"s.panel\"\n data-quadrant-task-panel=\"delete\"\n (keydown)=\"onPanelKeydown($event)\"\n >\n <h3 [id]=\"ids.title\" [class]=\"s.panelTitle\">{{ texts().delete }}</h3>\n <p [id]=\"ids.text\" [class]=\"s.panelText\">{{ deleteText() }}</p>\n <div [class]=\"s.footer\">\n <button\n #deleteCancel\n mnButton\n size=\"small\"\n color=\"neutral\"\n variant=\"ghost\"\n (click)=\"close()\"\n >\n {{ texts().cancel }}\n </button>\n <button mnButton size=\"small\" color=\"danger\" (click)=\"remove()\">\n {{ texts().confirmDelete }}\n </button>\n </div>\n </div>\n }\n ",
47209
+ template: "\n <mn-quadrant-chart\n [points]=\"points()\"\n [locale]=\"language()\"\n [selectedIndex]=\"selected()\"\n [draggable]=\"draggable() ?? true\"\n [height]=\"height()\"\n [width]=\"width()\"\n [renderer]=\"renderer()\"\n [legend]=\"legend()\"\n [tooltip]=\"tooltip()\"\n [crosshair]=\"crosshair()\"\n [annotations]=\"annotations()\"\n [interaction]=\"interaction()\"\n [padding]=\"padding()\"\n [palette]=\"palette()\"\n [ariaLabel]=\"ariaLabel()\"\n [xDomain]=\"xDomain()\"\n [yDomain]=\"yDomain()\"\n [xSplit]=\"xSplit()\"\n [ySplit]=\"ySplit()\"\n [quadrants]=\"quadrants()\"\n [xLabel]=\"xLabel()\"\n [yLabel]=\"yLabel()\"\n [axisLabels]=\"axisLabels()\"\n [showTicks]=\"showTicks()\"\n [reverseX]=\"reverseX()\"\n [showLabels]=\"showLabels()\"\n [pointSize]=\"pointSize()\"\n [name]=\"name()\"\n [selectedIndices]=\"selectedIndices()\"\n [accessiblePoints]=\"accessiblePoints()\"\n [quadrantHeader]=\"header\"\n [pointActions]=\"actions\"\n (hover)=\"hover.emit($event)\"\n (zoom)=\"zoom.emit($event)\"\n (rendererChange)=\"rendererChange.emit($event)\"\n (pointClick)=\"onPointClick($event)\"\n (pointDoubleClick)=\"edit($event.index)\"\n (pointDrag)=\"pointDrag.emit($event)\"\n (pointDrop)=\"onPointDrop($event)\"\n (quadrantClick)=\"add($event.quadrant, pointerBox(), $event)\"\n />\n <ng-template #header let-corner let-info=\"info\">\n <div [class]=\"s.header\" [attr.data-corner]=\"corner\">\n @if (info.region?.badge) {\n <span [class]=\"s.badge\">{{ info.region.badge }}</span>\n }\n <span [class]=\"s.title\">{{ title(corner) }}</span>\n @if (showCounts() !== false) {\n <span [class]=\"s.count\">{{ countText(info.points) }}</span>\n }\n <button\n mnIconButton\n size=\"xsmall\"\n variant=\"ghost\"\n [class]=\"s.add\"\n [label]=\"texts().add + ' · ' + title(corner)\"\n [attr.aria-expanded]=\"adding() === corner\"\n (click)=\"add(corner, boxOf($event.currentTarget))\"\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path [attr.d]=\"icons.add\" /></svg>\n </button>\n </div>\n </ng-template>\n <ng-template #actions let-index=\"index\">\n <div\n role=\"toolbar\"\n [attr.aria-label]=\"texts().actions\"\n [class]=\"s.actions\"\n (pointerdown)=\"$event.stopPropagation()\"\n >\n <button\n mnIconButton\n size=\"xsmall\"\n variant=\"ghost\"\n [label]=\"texts().edit\"\n (click)=\"edit(index)\"\n >\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path [attr.d]=\"icons.edit\" /></svg>\n </button>\n <button\n mnIconButton\n size=\"xsmall\"\n variant=\"ghost\"\n color=\"danger\"\n [label]=\"texts().delete\"\n (click)=\"confirmRemove(index)\"\n >\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path [attr.d]=\"icons.delete\" /></svg>\n </button>\n </div>\n </ng-template>\n @if (draft(); as current) {\n <div\n #panel\n role=\"dialog\"\n [attr.aria-labelledby]=\"ids.title\"\n [class]=\"s.panel\"\n [attr.data-quadrant-task-panel]=\"\n current.index === null ? 'add' : 'edit'\n \"\n (keydown)=\"onPanelKeydown($event)\"\n >\n <form [class]=\"s.form\" (submit)=\"save($event)\">\n <h3 [id]=\"ids.title\" [class]=\"s.panelTitle\">\n {{ current.index === null ? texts().add : texts().edit }}\n </h3>\n <label [class]=\"s.field\">\n <span>{{ texts().name }}</span>\n <mn-input\n required\n size=\"small\"\n [value]=\"current.label\"\n [aria-label]=\"texts().name\"\n (valueChange)=\"setLabel($event ?? '')\"\n />\n </label>\n <fieldset [class]=\"s.quadrants\">\n <legend>{{ texts().quadrant }}</legend>\n <div [class]=\"s.quadrantGrid\">\n @for (corner of corners; track corner) {\n <label [class]=\"s.quadrant\" [attr.data-corner]=\"corner\">\n <input\n type=\"radio\"\n [name]=\"ids.quadrant\"\n [value]=\"corner\"\n [checked]=\"current.quadrant === corner\"\n (change)=\"setQuadrant(corner)\"\n />\n <span\n [class]=\"s.swatch\"\n [style.background]=\"color(corner)\"\n aria-hidden=\"true\"\n ></span>\n <span [class]=\"s.quadrantName\">{{ title(corner) }}</span>\n </label>\n }\n </div>\n </fieldset>\n <div [class]=\"s.footer\">\n <button\n mnButton\n size=\"small\"\n color=\"neutral\"\n variant=\"ghost\"\n (click)=\"close()\"\n >\n {{ texts().cancel }}\n </button>\n <button mnButton size=\"small\" type=\"submit\" [disabled]=\"!canSave()\">\n {{ texts().save }}\n </button>\n </div>\n </form>\n </div>\n }\n @if (deletingPoint()) {\n <div\n #panel\n role=\"alertdialog\"\n [attr.aria-labelledby]=\"ids.title\"\n [attr.aria-describedby]=\"ids.text\"\n [class]=\"s.panel\"\n data-quadrant-task-panel=\"delete\"\n (keydown)=\"onPanelKeydown($event)\"\n >\n <h3 [id]=\"ids.title\" [class]=\"s.panelTitle\">{{ texts().delete }}</h3>\n <p [id]=\"ids.text\" [class]=\"s.panelText\">{{ deleteText() }}</p>\n <div [class]=\"s.footer\">\n <button\n #deleteCancel\n mnButton\n size=\"small\"\n color=\"neutral\"\n variant=\"ghost\"\n (click)=\"close()\"\n >\n {{ texts().cancel }}\n </button>\n <button mnButton size=\"small\" color=\"danger\" (click)=\"remove()\">\n {{ texts().confirmDelete }}\n </button>\n </div>\n </div>\n }\n ",
47208
47210
  isInline: true,
47209
47211
  dependencies: [
47210
47212
  {
@@ -47420,22 +47422,22 @@ i0.ɵɵngDeclareClassMetadata({
47420
47422
  >
47421
47423
  <button
47422
47424
  mnIconButton
47423
- size="small"
47425
+ size="xsmall"
47424
47426
  variant="ghost"
47425
47427
  [label]="texts().edit"
47426
47428
  (click)="edit(index)"
47427
47429
  >
47428
- <svg ${ICON_ATTRS}><path [attr.d]="icons.edit" /></svg>
47430
+ <svg ${ACTION_ICON_ATTRS}><path [attr.d]="icons.edit" /></svg>
47429
47431
  </button>
47430
47432
  <button
47431
47433
  mnIconButton
47432
- size="small"
47434
+ size="xsmall"
47433
47435
  variant="ghost"
47434
47436
  color="danger"
47435
47437
  [label]="texts().delete"
47436
47438
  (click)="confirmRemove(index)"
47437
47439
  >
47438
- <svg ${ICON_ATTRS}><path [attr.d]="icons.delete" /></svg>
47440
+ <svg ${ACTION_ICON_ATTRS}><path [attr.d]="icons.delete" /></svg>
47439
47441
  </button>
47440
47442
  </div>
47441
47443
  </ng-template>