minerva-design 1.18.0 → 1.19.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +25 -0
- package/custom-elements.json +10 -6
- package/dist/angular/fesm2022/minerva-angular.mjs +157 -60
- package/dist/angular/fesm2022/minerva-angular.mjs.map +1 -1
- package/dist/angular/types/minerva-angular.d.ts +40 -22
- package/dist/charts/core.cjs +1 -1
- package/dist/charts/core.d.cts +1 -0
- package/dist/charts/core.d.ts +1 -0
- package/dist/charts/core.js +22 -21
- package/dist/charts/engine/chart.cjs +1 -1
- package/dist/charts/engine/chart.cjs.map +1 -1
- package/dist/charts/engine/chart.js +270 -240
- package/dist/charts/engine/chart.js.map +1 -1
- package/dist/charts/engine/overlay.cjs +1 -1
- package/dist/charts/engine/overlay.cjs.map +1 -1
- package/dist/charts/engine/overlay.js +23 -16
- package/dist/charts/engine/overlay.js.map +1 -1
- package/dist/charts/engine/quadrant-card.cjs +2 -0
- package/dist/charts/engine/quadrant-card.cjs.map +1 -0
- package/dist/charts/engine/quadrant-card.d.cts +83 -0
- package/dist/charts/engine/quadrant-card.d.ts +83 -0
- package/dist/charts/engine/quadrant-card.js +154 -0
- package/dist/charts/engine/quadrant-card.js.map +1 -0
- package/dist/charts/index.cjs +1 -1
- package/dist/charts/index.js +28 -27
- package/dist/charts/react/charts.cjs +1 -1
- package/dist/charts/react/charts.cjs.map +1 -1
- package/dist/charts/react/charts.js +378 -463
- package/dist/charts/react/charts.js.map +1 -1
- package/dist/core/contracts.cjs +1 -1
- package/dist/core/contracts.cjs.map +1 -1
- package/dist/core/contracts.js +1 -1
- package/dist/core/contracts.js.map +1 -1
- package/dist/core/decimal-places.d.cts +6 -0
- package/dist/core/decimal-places.d.ts +6 -0
- package/dist/core/index.cjs +21 -21
- package/dist/core/index.cjs.map +1 -1
- package/dist/core/index.js +590 -580
- package/dist/core/index.js.map +1 -1
- package/dist/core/keyboard-navigation.d.cts +14 -0
- package/dist/core/keyboard-navigation.d.ts +14 -0
- package/dist/core/number-input.d.cts +4 -1
- package/dist/core/number-input.d.ts +4 -1
- package/dist/core/slider.d.cts +1 -1
- package/dist/core/slider.d.ts +1 -1
- package/dist/native/charts/src/engine/overlay.cjs +1 -1
- package/dist/native/charts/src/engine/overlay.cjs.map +1 -1
- package/dist/native/charts/src/engine/overlay.js +23 -16
- package/dist/native/charts/src/engine/overlay.js.map +1 -1
- package/dist/react/components/AutoComplete/AutoComplete.cjs +1 -1
- package/dist/react/components/AutoComplete/AutoComplete.cjs.map +1 -1
- package/dist/react/components/AutoComplete/AutoComplete.js +91 -90
- package/dist/react/components/AutoComplete/AutoComplete.js.map +1 -1
- package/dist/react/components/DatePicker/DatePicker.cjs +1 -1
- package/dist/react/components/DatePicker/DatePicker.cjs.map +1 -1
- package/dist/react/components/DatePicker/DatePicker.js +3 -2
- package/dist/react/components/DatePicker/DatePicker.js.map +1 -1
- package/dist/taro/index.js +23 -16
- package/dist/uni/manifest.d.ts +34 -34
- package/dist/uni/manifest.js +34 -39
- package/dist/vue/components/AutoComplete/AutoComplete.vue.js.map +1 -1
- package/dist/vue/components/AutoComplete/AutoComplete.vue_vue_type_script_setup_true_lang.js +58 -57
- package/dist/vue/components/AutoComplete/AutoComplete.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/vue/components/Chart/QuadrantChart.vue.d.ts +4 -3
- package/dist/vue/components/Chart/QuadrantChart.vue.js.map +1 -1
- package/dist/vue/components/Chart/QuadrantChart.vue_vue_type_script_setup_true_lang.js +186 -142
- package/dist/vue/components/Chart/QuadrantChart.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/vue/components/Chart/cartesian.d.ts +5 -1
- package/dist/vue/components/Chart/cartesian.js +2 -0
- package/dist/vue/components/Chart/cartesian.js.map +1 -1
- package/dist/vue/components/QuadrantTaskBoard/QuadrantTaskBoard.vue.js.map +1 -1
- package/dist/vue/components/QuadrantTaskBoard/QuadrantTaskBoard.vue_vue_type_script_setup_true_lang.js +4 -4
- package/dist/vue/components/QuadrantTaskBoard/QuadrantTaskBoard.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/weapp/charts/canvas.js +13 -4
- package/dist/weapp/controls.js +24 -12
- package/dist/web-components/cdn/minerva.js +532 -532
- package/dist/web-components/cdn/minerva.js.map +1 -1
- package/dist/web-components/components/autocomplete/autocomplete.d.ts +7 -1
- package/dist/web-components/components/autocomplete/autocomplete.js +29 -24
- package/dist/web-components/components/autocomplete/autocomplete.js.map +1 -1
- package/dist/web-components/components/chart/chart.d.ts +4 -1
- package/dist/web-components/components/chart/chart.js +3 -1
- package/dist/web-components/components/chart/chart.js.map +1 -1
- package/dist/web-components/components/chart/charts.d.ts +34 -14
- package/dist/web-components/components/chart/charts.js +145 -98
- package/dist/web-components/components/chart/charts.js.map +1 -1
- package/dist/web-components/components/date-picker/date-picker.js +11 -5
- package/dist/web-components/components/date-picker/date-picker.js.map +1 -1
- package/dist/web-components/components/quadrant-task-board/quadrant-task-board.d.ts +8 -8
- package/dist/web-components/components/quadrant-task-board/quadrant-task-board.js +9 -5
- package/dist/web-components/components/quadrant-task-board/quadrant-task-board.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,30 @@
|
|
|
1
1
|
# minerva-design
|
|
2
2
|
|
|
3
|
+
## 1.19.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 220d212: Fix five input bugs, on every renderer that has the component.
|
|
8
|
+
|
|
9
|
+
- NumberInput (#5): when `precision` is not set, it now keeps every decimal of `step`. `step={1.25}` steps to 1.25 instead of 1, and `step={0.0000001}` now steps instead of staying at 0.
|
|
10
|
+
- Slider (#9): a step written in scientific notation keeps the decimals of its coefficient. With `step={1.5e-7}`, one key press moves by 1.5e-7 instead of 1e-7, and snapping keeps valid ticks unchanged.
|
|
11
|
+
- AutoComplete (#6): while `loading` hides the options, the arrow keys and Enter no longer pick a hidden old option, and `aria-activedescendant` no longer points to an option that is not shown.
|
|
12
|
+
- AutoComplete (#7): the keyboard highlight now follows the option, not its position. When the options change, the highlight stays on the same option. If that option is gone or disabled, `autoHighlight` moves to the first enabled option, and otherwise nothing is highlighted, so Enter always picks a shown option.
|
|
13
|
+
- DatePicker (#8): in a month partly cut by `minDate` / `maxDate`, the day grid always keeps one enabled day that Tab can reach.
|
|
14
|
+
|
|
15
|
+
## 1.19.0
|
|
16
|
+
|
|
17
|
+
### Minor Changes
|
|
18
|
+
|
|
19
|
+
- 734afb1: Quadrant charts: one shared point card on every renderer, and no Playwright.
|
|
20
|
+
|
|
21
|
+
- Fix: after a click, the card of the clicked point no longer stays on the chart and hides the others. A plain chart rings its selected point; only boards (with point actions) keep the card of the selected point. Escape closes the card, and a click beside the points drops a selection the chart made itself.
|
|
22
|
+
- The hovered point is kept while the parent passes new arrays of the same points, and through new data under a still pointer (e.g. the selection ring added by a click).
|
|
23
|
+
- Faster hover: the card is DOM of its own, so hovering renders no React, Vue or Angular component, and showing or hiding a drawn label redraws only the foreground canvas.
|
|
24
|
+
- New in `minerva-design/charts/core`: `createQuadrantPointCard`, `withQuadrantCard` and `QUADRANT_CARD_LINGER_MS`. Vue, Web Components and Angular quadrant charts now show the same card as React (no engine tooltip), with the point actions inside it; `<minerva-quadrant-chart>` adds the `point-card` part.
|
|
25
|
+
- Crowded cells: a label also tries beside its dot half a line up or down before it is skipped.
|
|
26
|
+
- Tests: the browser suites are replaced by Vitest tests with happy-dom.
|
|
27
|
+
|
|
3
28
|
## 1.18.0
|
|
4
29
|
|
|
5
30
|
### Minor Changes
|
package/custom-elements.json
CHANGED
|
@@ -7635,7 +7635,7 @@
|
|
|
7635
7635
|
},
|
|
7636
7636
|
{
|
|
7637
7637
|
"kind": "class",
|
|
7638
|
-
"description": "Four-quadrant matrix (priority matrix, Eisenhower, BCG...) of\n`minerva-design/charts/core` (the `<QuadrantChart>` of React): tinted\nquadrants with titles, dividers and labelled dots placed without\noverlapping labels. With `drag-points`, dots can be dragged to another\nquadrant (`minerva-point-drop`; update `points` to move them).\n\nA visually hidden list of the dots per quadrant lets screen readers and\nkeyboards reach every dot: arrows move between them, Enter clicks\n(`minerva-point-click`) and, with `drag-points`, Shift + arrows move the\nfocused dot to the neighbouring quadrant (`minerva-point-drop`, announced\nin a live region). The focused dot is drawn with a focus ring and\nreported by `minerva-hover`.\n\nSlotted content is placed over the plot: a header per quadrant (in its\nouter corner, replacing the drawn title, badge, description and count)\nand actions
|
|
7638
|
+
"description": "Four-quadrant matrix (priority matrix, Eisenhower, BCG...) of\n`minerva-design/charts/core` (the `<QuadrantChart>` of React): tinted\nquadrants with titles, dividers and labelled dots placed without\noverlapping labels. With `drag-points`, dots can be dragged to another\nquadrant (`minerva-point-drop`; update `points` to move them).\n\nA visually hidden list of the dots per quadrant lets screen readers and\nkeyboards reach every dot: arrows move between them, Enter clicks\n(`minerva-point-click`) and, with `drag-points`, Shift + arrows move the\nfocused dot to the neighbouring quadrant (`minerva-point-drop`, announced\nin a live region). The focused dot is drawn with a focus ring and\nreported by `minerva-hover`.\n\nOne glass point card names the hovered, keyboard-focused or dragged dot\n(its name and quadrant) in place of the engine tooltip; with slotted\n`point-actions`, the card also shows them and stays on the\n`selected-index` dot (read the dot they act on from `activeIndex`).\n\nSlotted content is placed over the plot: a header per quadrant (in its\nouter corner, replacing the drawn title, badge, description and count)\nand the actions in the point card. Both receive pointer events; the rest\nof the plot stays interactive.\n\nPublished as the optional entry `minerva-design/web-components/chart`.",
|
|
7639
7639
|
"name": "MinervaQuadrantChart",
|
|
7640
7640
|
"cssParts": [
|
|
7641
7641
|
{
|
|
@@ -7647,7 +7647,7 @@
|
|
|
7647
7647
|
"name": "surface"
|
|
7648
7648
|
},
|
|
7649
7649
|
{
|
|
7650
|
-
"description": "The box over the plot holding the slotted headers and
|
|
7650
|
+
"description": "The box over the plot holding the slotted headers and the point card",
|
|
7651
7651
|
"name": "overlay"
|
|
7652
7652
|
},
|
|
7653
7653
|
{
|
|
@@ -7655,7 +7655,11 @@
|
|
|
7655
7655
|
"name": "quadrant-header"
|
|
7656
7656
|
},
|
|
7657
7657
|
{
|
|
7658
|
-
"description": "The
|
|
7658
|
+
"description": "The glass card of the hovered, focused, dragged (or, with actions, selected) dot",
|
|
7659
|
+
"name": "point-card"
|
|
7660
|
+
},
|
|
7661
|
+
{
|
|
7662
|
+
"description": "The actions box in the point card, holding the `point-actions` slot",
|
|
7659
7663
|
"name": "point-actions"
|
|
7660
7664
|
}
|
|
7661
7665
|
],
|
|
@@ -7677,7 +7681,7 @@
|
|
|
7677
7681
|
"name": "quadrant-header-bottom-right"
|
|
7678
7682
|
},
|
|
7679
7683
|
{
|
|
7680
|
-
"description": "
|
|
7684
|
+
"description": "Actions shown in the point card of the active dot, beside its name (e.g. compact edit / delete buttons); the card then also stays on the selected dot",
|
|
7681
7685
|
"name": "point-actions"
|
|
7682
7686
|
}
|
|
7683
7687
|
],
|
|
@@ -7859,7 +7863,7 @@
|
|
|
7859
7863
|
"type": {
|
|
7860
7864
|
"text": "number | null"
|
|
7861
7865
|
},
|
|
7862
|
-
"description": "Index of the active dot, the one
|
|
7866
|
+
"description": "Index of the active dot, the one whose point card shows the\n`point-actions` slot (hovered, keyboard-focused, else `selectedIndex`\nwhen actions are slotted); `null` while no card is shown or during a\ndrag",
|
|
7863
7867
|
"readonly": true
|
|
7864
7868
|
},
|
|
7865
7869
|
{
|
|
@@ -31186,7 +31190,7 @@
|
|
|
31186
31190
|
"declarations": [
|
|
31187
31191
|
{
|
|
31188
31192
|
"kind": "class",
|
|
31189
|
-
"description": "Task board on a four-quadrant matrix (`<QuadrantTaskBoard>` of React),\nbuilt on `<minerva-quadrant-chart>`: each quadrant header shows its\ntitle, the number of tasks and an add button; the
|
|
31193
|
+
"description": "Task board on a four-quadrant matrix (`<QuadrantTaskBoard>` of React),\nbuilt on `<minerva-quadrant-chart>`: each quadrant header shows its\ntitle, the number of tasks and an add button; the point card of the\nactive task (hovered, keyboard-focused or selected) shows edit and delete\nbuttons beside its name; an inline panel, anchored inside the board at\nthe button or the task, names a task and picks its quadrant, or confirms\na delete (Escape or a press outside closes it). Tasks can be dragged to\nanother quadrant, or moved with Shift + arrows once focused; a double\nclick edits a task, a click on an empty area adds one there.\n\nControlled, like `<minerva-dashboard-columns>`: the board never changes its\nown `points`. It fires `minerva-points-change` with the next list after\nan add, an edit, a delete, a drag and drop or a keyboard move; set it\nback as `points` to apply it (or keep the old list to refuse it).\n\nTexts are localized (the `locale` attribute, else the library language)\nand can be overridden with `labels`. The host's `aria-label` names the\nchart.\n\nPublished as the optional entry\n`minerva-design/web-components/quadrant-task-board` (it loads the chart\nengine, minerva-design/charts/core).",
|
|
31190
31194
|
"name": "MinervaQuadrantTaskBoard",
|
|
31191
31195
|
"cssParts": [
|
|
31192
31196
|
{
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { DOCUMENT, NgTemplateOutlet, isPlatformBrowser } from "@angular/common";
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
3
|
import { ChangeDetectionStrategy, Component, DestroyRef, Directive, ElementRef, Injectable, InjectionToken, Injector, PLATFORM_ID, SecurityContext, TemplateRef, ViewContainerRef, ViewEncapsulation, afterEveryRender, afterNextRender, afterRenderEffect, booleanAttribute, computed, contentChild, effect, forwardRef, inject, input, isDevMode, linkedSignal, makeEnvironmentProviders, model, numberAttribute, output, provideEnvironmentInitializer, signal, untracked, viewChild, viewChildren } from "@angular/core";
|
|
4
|
-
import { CODE_MARK_COLORS, DEFAULT_LANGUAGE, DEFAULT_PLAYBACK_RATES, DEFAULT_SKIP_SECONDS, DEFAULT_TAG_SEPARATORS, MEDIA_ICON_PATHS, PALETTES, RATING_STAR_COUNT, addDays, answerSheetLegend, answerSheetMoveIndex, answerSheetSections, answerSheetSummary, applyCodeMarks, bufferedEnd, captionsPreference, clampMediaTime, clampNumber, clampVolume, closestSliderThumb, cn, codeLanguageLabel, codeMarkBackground, createCheckboxMachine, createRatingMachine, createSwitchMachine, createTypeahead, dashboardAccent, dashboardCount, dashboardLength, dayKey, designAttributes, detectCodeLanguage, findCascaderPath, flattenCascaderOptions, formatDevMessage, formatHasSeconds, formatMediaTime, formatNumberValue, formatPlaybackRate, formatTime, getNextIndex, getPageRange, getRatingKeyValue, getRatingStarFills, getSliderKeyValue, getSliderMarks, getVirtualRange, highlightCode, inferMediaType, inferStepPrecision, invalidPrimaryColorMessage, isPalette, isSliderMarkActive, isSupportedLanguage, localDate, matchesAccept, mediaKeyAction, mediaProgress, messages, monthStart, nextPlaybackRate, normalizeSliderValue, palettes, parseDayKey, parseNumberDraft, parseTimeInput, pickCaptionsTrack, presetPalette, readCaptionsPreference, resolveDesign, resolvePrimaryColor, resolveSize, resolveSpace, resolveTimeFormat, sameMonth, setSliderThumb, sliderPercent, sliderValueFromRatio, sliderValues, sliderValuesEqual, splitBySeparators, splitCodeMarkLines, startOfToday, toggledCaptionsTrack, translate, weekStart, writeCaptionsPreference } from "../../core/index.js";
|
|
4
|
+
import { CODE_MARK_COLORS, DEFAULT_LANGUAGE, DEFAULT_PLAYBACK_RATES, DEFAULT_SKIP_SECONDS, DEFAULT_TAG_SEPARATORS, MEDIA_ICON_PATHS, PALETTES, RATING_STAR_COUNT, addDays, answerSheetLegend, answerSheetMoveIndex, answerSheetSections, answerSheetSummary, applyCodeMarks, bufferedEnd, captionsPreference, clampMediaTime, clampNumber, clampVolume, closestSliderThumb, cn, codeLanguageLabel, codeMarkBackground, createCheckboxMachine, createRatingMachine, createSwitchMachine, createTypeahead, dashboardAccent, dashboardCount, dashboardLength, dayKey, designAttributes, detectCodeLanguage, findCascaderPath, flattenCascaderOptions, formatDevMessage, formatHasSeconds, formatMediaTime, formatNumberValue, formatPlaybackRate, formatTime, getNextIndex, getPageRange, getRatingKeyValue, getRatingStarFills, getSliderKeyValue, getSliderMarks, getVirtualRange, highlightCode, inferMediaType, inferStepPrecision, invalidPrimaryColorMessage, isPalette, isSliderMarkActive, isSupportedLanguage, localDate, matchesAccept, mediaKeyAction, mediaProgress, messages, monthStart, nextPlaybackRate, normalizeSliderValue, palettes, parseDayKey, parseNumberDraft, parseTimeInput, pickCaptionsTrack, presetPalette, readCaptionsPreference, resolveActiveOptionIndex, resolveDesign, resolvePrimaryColor, resolveSize, resolveSpace, resolveTimeFormat, sameMonth, setSliderThumb, sliderPercent, sliderValueFromRatio, sliderValues, sliderValuesEqual, splitBySeparators, splitCodeMarkLines, startOfToday, toggledCaptionsTrack, translate, weekStart, writeCaptionsPreference } from "../../core/index.js";
|
|
5
5
|
import { FOCUS_SCOPE_UNMOUNT_EVENT, PALETTE_COOKIE_NAME, THEME_COOKIE_NAME, applyDesignAttributes, applyPosition, autoPosition, bindMediaCaptions, centerInScroller, clickedCodeMark, createDashboardDrag, createDismissableLayer, createFocusScope, dashboardDataAdapter, focusElement, generateCSSVariables, getCodeSelectionRange, getDirection, getSystemTheme, getTabbables, hideOthers, isBilingualTheme, isInteractiveEventTarget, lockScroll, logicalArrowKey, nearestInRow, parsePaletteCookie, parsePlacement, parseThemeCookie, primaryColorCss, primaryColorTheme, readCookieValue, resolveTheme, serializeThemeCookie, waitForExitAnimation } from "../../dom/index.js";
|
|
6
6
|
import { FormGroupDirective, NG_VALUE_ACCESSOR, NgControl, NgForm } from "@angular/forms";
|
|
7
7
|
import { DomSanitizer } from "@angular/platform-browser";
|
|
8
|
-
import { QUADRANT_CORNERS, QUADRANT_TASK_ICONS, applyQuadrantTaskDraft, boxplotData, bubbleSeries, canSaveQuadrantTask, createChart, createChart3D, createDepthChart, createGraphChart, createOrderBook, createOrderBookHeatmap, createQuadrantPointLayer, createShapeChart, createTimeAndSales, createTradingChart, editQuadrantTaskDraft, ganttSeries, heatmapChartOptions, histogramSeries, moveQuadrantTask, newQuadrantTaskDraft, placeQuadrantTaskPanel, quadrantChartOptions, quadrantCountText, quadrantGroups, quadrantLabels, quadrantOf, quadrantTaskColor, quadrantTaskDeleteText, quadrantTaskLabels, removeQuadrantTask, selectionAfterRemove, sparklineOptions, waterfallSeries } from "../../charts/core.js";
|
|
8
|
+
import { QUADRANT_CORNERS, QUADRANT_TASK_ICONS, applyQuadrantTaskDraft, boxplotData, bubbleSeries, canSaveQuadrantTask, createChart, createChart3D, createDepthChart, createGraphChart, createOrderBook, createOrderBookHeatmap, createQuadrantPointCard, createQuadrantPointLayer, createShapeChart, createTimeAndSales, createTradingChart, editQuadrantTaskDraft, ganttSeries, heatmapChartOptions, histogramSeries, moveQuadrantTask, newQuadrantTaskDraft, placeQuadrantTaskPanel, quadrantChartOptions, quadrantCountText, quadrantGroups, quadrantLabels, quadrantOf, quadrantTaskColor, quadrantTaskDeleteText, quadrantTaskLabels, removeQuadrantTask, selectionAfterRemove, sparklineOptions, waterfallSeries, withQuadrantCard } from "../../charts/core.js";
|
|
9
9
|
import { createIconCanvas, getIcon } from "../../icons/core.js";
|
|
10
10
|
const injectIsBrowser = () => isPlatformBrowser(inject(PLATFORM_ID));
|
|
11
11
|
const staticInputs = (config = {}) => ({
|
|
@@ -5985,7 +5985,7 @@ var MnAutoComplete = class MnAutoComplete extends MnFormValueControl {
|
|
|
5985
5985
|
this.blocked = computed(() => this.isDisabled() || this.field.readOnly(), ...ngDevMode ? [{ debugName: "blocked" }] : /* istanbul ignore next */ []);
|
|
5986
5986
|
this.shown = computed(() => this.open() && !this.blocked(), ...ngDevMode ? [{ debugName: "shown" }] : /* istanbul ignore next */ []);
|
|
5987
5987
|
this.text = computed(() => this.value() ?? this.defaultValue() ?? "", ...ngDevMode ? [{ debugName: "text" }] : /* istanbul ignore next */ []);
|
|
5988
|
-
this.
|
|
5988
|
+
this.focusedValue = signal(null, ...ngDevMode ? [{ debugName: "focusedValue" }] : /* istanbul ignore next */ []);
|
|
5989
5989
|
this.hoveredIndex = signal(-1, ...ngDevMode ? [{ debugName: "hoveredIndex" }] : /* istanbul ignore next */ []);
|
|
5990
5990
|
this.composing = false;
|
|
5991
5991
|
this.layerEscape = null;
|
|
@@ -6039,12 +6039,8 @@ var MnAutoComplete = class MnAutoComplete extends MnFormValueControl {
|
|
|
6039
6039
|
}));
|
|
6040
6040
|
}, ...ngDevMode ? [{ debugName: "sections" }] : /* istanbul ignore next */ []);
|
|
6041
6041
|
this.navigable = computed(() => this.sections().flatMap((section) => section.entries.map((entry) => entry.option)), ...ngDevMode ? [{ debugName: "navigable" }] : /* istanbul ignore next */ []);
|
|
6042
|
-
this.
|
|
6043
|
-
|
|
6044
|
-
if (focused >= 0) return focused;
|
|
6045
|
-
if (this.autoHighlight() && this.shown()) return this.navigable().findIndex((option) => !option.disabled);
|
|
6046
|
-
return -1;
|
|
6047
|
-
}, ...ngDevMode ? [{ debugName: "activeIndex" }] : /* istanbul ignore next */ []);
|
|
6042
|
+
this.interactive = computed(() => this.loading() ? [] : this.navigable(), ...ngDevMode ? [{ debugName: "interactive" }] : /* istanbul ignore next */ []);
|
|
6043
|
+
this.activeIndex = computed(() => resolveActiveOptionIndex(this.interactive(), this.focusedValue(), this.autoHighlight() && this.shown()), ...ngDevMode ? [{ debugName: "activeIndex" }] : /* istanbul ignore next */ []);
|
|
6048
6044
|
this.activeOptionId = computed(() => this.shown() && this.activeIndex() >= 0 ? this.optionId(this.activeIndex()) : null, ...ngDevMode ? [{ debugName: "activeOptionId" }] : /* istanbul ignore next */ []);
|
|
6049
6045
|
this.escapeConsumer = computed(() => !this.shown() && this.text() !== "", ...ngDevMode ? [{ debugName: "escapeConsumer" }] : /* istanbul ignore next */ []);
|
|
6050
6046
|
this.showClear = computed(() => this.clearable() && this.text() !== "" && !this.isDisabled() && !this.field.readOnly(), ...ngDevMode ? [{ debugName: "showClear" }] : /* istanbul ignore next */ []);
|
|
@@ -6140,10 +6136,10 @@ var MnAutoComplete = class MnAutoComplete extends MnFormValueControl {
|
|
|
6140
6136
|
}
|
|
6141
6137
|
closeDropdown() {
|
|
6142
6138
|
this.setOpen(false);
|
|
6143
|
-
this.
|
|
6139
|
+
this.focusedValue.set(null);
|
|
6144
6140
|
}
|
|
6145
6141
|
moveFocus(step) {
|
|
6146
|
-
const options = this.
|
|
6142
|
+
const options = this.interactive();
|
|
6147
6143
|
const count = options.length;
|
|
6148
6144
|
if (count === 0) return;
|
|
6149
6145
|
const active = this.activeIndex();
|
|
@@ -6151,7 +6147,7 @@ var MnAutoComplete = class MnAutoComplete extends MnFormValueControl {
|
|
|
6151
6147
|
for (let i = 0; i < count; i += 1) {
|
|
6152
6148
|
index = (index + step + count) % count;
|
|
6153
6149
|
if (!options[index].disabled) {
|
|
6154
|
-
this.
|
|
6150
|
+
this.focusedValue.set(options[index].value);
|
|
6155
6151
|
return;
|
|
6156
6152
|
}
|
|
6157
6153
|
}
|
|
@@ -6164,7 +6160,7 @@ var MnAutoComplete = class MnAutoComplete extends MnFormValueControl {
|
|
|
6164
6160
|
}
|
|
6165
6161
|
onInput(next) {
|
|
6166
6162
|
this.setText(next);
|
|
6167
|
-
this.
|
|
6163
|
+
this.focusedValue.set(null);
|
|
6168
6164
|
this.openDropdown();
|
|
6169
6165
|
}
|
|
6170
6166
|
onBlur(event) {
|
|
@@ -6186,7 +6182,7 @@ var MnAutoComplete = class MnAutoComplete extends MnFormValueControl {
|
|
|
6186
6182
|
this.moveFocus(event.key === "ArrowDown" ? 1 : -1);
|
|
6187
6183
|
break;
|
|
6188
6184
|
case "Enter": {
|
|
6189
|
-
const option = this.shown() ? this.
|
|
6185
|
+
const option = this.shown() ? this.interactive()[this.activeIndex()] : void 0;
|
|
6190
6186
|
const text = this.text().trim();
|
|
6191
6187
|
if (option) {
|
|
6192
6188
|
event.preventDefault();
|
|
@@ -6201,7 +6197,7 @@ var MnAutoComplete = class MnAutoComplete extends MnFormValueControl {
|
|
|
6201
6197
|
case "Escape": if (event !== this.layerEscape && !this.shown() && this.text() !== "") {
|
|
6202
6198
|
event.preventDefault();
|
|
6203
6199
|
this.setText("");
|
|
6204
|
-
this.
|
|
6200
|
+
this.focusedValue.set(null);
|
|
6205
6201
|
}
|
|
6206
6202
|
}
|
|
6207
6203
|
}
|
|
@@ -39634,15 +39630,22 @@ var MnQuadrantChart = class MnQuadrantChart extends MnCartesianChartBase {
|
|
|
39634
39630
|
this.pointDrop = output();
|
|
39635
39631
|
this.lastClick = null;
|
|
39636
39632
|
this.focusedIndex = signal(null, ...ngDevMode ? [{ debugName: "focusedIndex" }] : /* istanbul ignore next */ []);
|
|
39637
|
-
this.hoveredIndex = signal(null, ...ngDevMode ? [{ debugName: "hoveredIndex" }] : /* istanbul ignore next */ []);
|
|
39638
39633
|
this.plot = signal(null, ...ngDevMode ? [{ debugName: "plot" }] : /* istanbul ignore next */ []);
|
|
39639
39634
|
this.pointsHost = viewChild.required("points", ...ngDevMode ? [{ debugName: "pointsHost" }] : /* istanbul ignore next */ []);
|
|
39635
|
+
this.cardHost = viewChild("cardHost", ...ngDevMode ? [{ debugName: "cardHost" }] : /* istanbul ignore next */ []);
|
|
39636
|
+
this.viewContainer = inject(ViewContainerRef);
|
|
39637
|
+
this.card = null;
|
|
39638
|
+
this.actionsView = null;
|
|
39640
39639
|
this.destroyed = false;
|
|
39641
39640
|
this.overlayStyle = computed(() => {
|
|
39642
39641
|
const rect = this.plot();
|
|
39643
|
-
if (!rect
|
|
39642
|
+
if (!rect) return null;
|
|
39644
39643
|
return `position:absolute;left:${rect.x}px;top:${rect.y}px;width:${rect.width}px;height:${rect.height}px;pointer-events:none`;
|
|
39645
39644
|
}, ...ngDevMode ? [{ debugName: "overlayStyle" }] : /* istanbul ignore next */ []);
|
|
39645
|
+
this.cardHostStyle = computed(() => {
|
|
39646
|
+
const rect = this.plot();
|
|
39647
|
+
return `position:absolute;left:0;top:0;width:${rect?.width ?? 0}px;height:${rect?.height ?? 0}px;pointer-events:none`;
|
|
39648
|
+
}, ...ngDevMode ? [{ debugName: "cardHostStyle" }] : /* istanbul ignore next */ []);
|
|
39646
39649
|
this.headers = computed(() => {
|
|
39647
39650
|
const rect = this.plot() ?? {
|
|
39648
39651
|
width: 0,
|
|
@@ -39679,20 +39682,6 @@ var MnQuadrantChart = class MnQuadrantChart extends MnCartesianChartBase {
|
|
|
39679
39682
|
};
|
|
39680
39683
|
});
|
|
39681
39684
|
}, ...ngDevMode ? [{ debugName: "headers" }] : /* istanbul ignore next */ []);
|
|
39682
|
-
this.activePoint = computed(() => {
|
|
39683
|
-
const index = this.hoveredIndex() ?? this.focusedIndex() ?? this.selectedIndex() ?? null;
|
|
39684
|
-
const point = index === null ? void 0 : this.points()[index];
|
|
39685
|
-
if (index === null || !point || !Number.isFinite(point.x) || !Number.isFinite(point.y)) return [];
|
|
39686
|
-
const at = this.visual(point.x, point.y);
|
|
39687
|
-
return [{
|
|
39688
|
-
context: {
|
|
39689
|
-
$implicit: point,
|
|
39690
|
-
point,
|
|
39691
|
-
index
|
|
39692
|
-
},
|
|
39693
|
-
style: `position:absolute;left:${100 * at.x}%;top:${100 * at.y}%;width:0;height:0;pointer-events:none`
|
|
39694
|
-
}];
|
|
39695
|
-
}, ...ngDevMode ? [{ debugName: "activePoint" }] : /* istanbul ignore next */ []);
|
|
39696
39685
|
const injector = inject(Injector);
|
|
39697
39686
|
let layer = null;
|
|
39698
39687
|
afterNextRender(() => {
|
|
@@ -39709,12 +39698,91 @@ var MnQuadrantChart = class MnQuadrantChart extends MnCartesianChartBase {
|
|
|
39709
39698
|
});
|
|
39710
39699
|
}, { injector });
|
|
39711
39700
|
});
|
|
39701
|
+
let cardHost = null;
|
|
39702
|
+
afterRenderEffect(() => {
|
|
39703
|
+
const host = this.cardHost()?.nativeElement ?? null;
|
|
39704
|
+
const options = this.cardOptions(this.instance());
|
|
39705
|
+
const focused = this.accessiblePoints() ? this.focusedIndex() : null;
|
|
39706
|
+
this.plot();
|
|
39707
|
+
untracked(() => {
|
|
39708
|
+
if (this.card && cardHost !== host) this.destroyCard();
|
|
39709
|
+
if (!host || !options.chart) return;
|
|
39710
|
+
if (this.card) this.card.update(options);
|
|
39711
|
+
else {
|
|
39712
|
+
cardHost = host;
|
|
39713
|
+
this.card = createQuadrantPointCard(host, options);
|
|
39714
|
+
}
|
|
39715
|
+
this.card.focus(focused);
|
|
39716
|
+
this.renderActions(this.card.index);
|
|
39717
|
+
});
|
|
39718
|
+
});
|
|
39712
39719
|
inject(DestroyRef).onDestroy(() => {
|
|
39713
39720
|
this.destroyed = true;
|
|
39714
39721
|
layer?.destroy();
|
|
39715
39722
|
layer = null;
|
|
39723
|
+
this.destroyCard();
|
|
39716
39724
|
});
|
|
39717
39725
|
}
|
|
39726
|
+
cardOptions(chart) {
|
|
39727
|
+
const actions = !!this.pointActions();
|
|
39728
|
+
return {
|
|
39729
|
+
config: {
|
|
39730
|
+
...this.geometry(),
|
|
39731
|
+
points: this.points(),
|
|
39732
|
+
quadrants: this.quadrants(),
|
|
39733
|
+
xLabel: this.xLabel(),
|
|
39734
|
+
yLabel: this.yLabel(),
|
|
39735
|
+
name: this.name()
|
|
39736
|
+
},
|
|
39737
|
+
locale: this.locale(),
|
|
39738
|
+
pointSize: this.pointSize(),
|
|
39739
|
+
hover: this.tooltip() !== false,
|
|
39740
|
+
selectedIndex: this.selectedIndex(),
|
|
39741
|
+
showSelected: actions,
|
|
39742
|
+
hasActions: () => actions,
|
|
39743
|
+
chart,
|
|
39744
|
+
onClick: (index) => this.clickPoint(index),
|
|
39745
|
+
onChange: (index) => this.renderActions(index)
|
|
39746
|
+
};
|
|
39747
|
+
}
|
|
39748
|
+
renderActions(index) {
|
|
39749
|
+
const card = this.card;
|
|
39750
|
+
if (!card) return;
|
|
39751
|
+
const tpl = untracked(this.pointActions);
|
|
39752
|
+
const point = index === null ? void 0 : untracked(this.points)[index];
|
|
39753
|
+
const current = this.actionsView;
|
|
39754
|
+
if (current && (!point || current.tpl !== tpl || current.ref.context.index !== index)) {
|
|
39755
|
+
if (!current.ref.destroyed) current.ref.destroy();
|
|
39756
|
+
this.actionsView = null;
|
|
39757
|
+
}
|
|
39758
|
+
if (!tpl || !point || index === null) return;
|
|
39759
|
+
let ref = this.actionsView?.ref;
|
|
39760
|
+
if (ref) {
|
|
39761
|
+
if (ref.context.point === point) return;
|
|
39762
|
+
ref.context.$implicit = point;
|
|
39763
|
+
ref.context.point = point;
|
|
39764
|
+
} else {
|
|
39765
|
+
ref = this.viewContainer.createEmbeddedView(tpl, {
|
|
39766
|
+
$implicit: point,
|
|
39767
|
+
point,
|
|
39768
|
+
index
|
|
39769
|
+
});
|
|
39770
|
+
card.actions.append(...ref.rootNodes);
|
|
39771
|
+
this.actionsView = {
|
|
39772
|
+
tpl,
|
|
39773
|
+
ref
|
|
39774
|
+
};
|
|
39775
|
+
}
|
|
39776
|
+
ref.detectChanges();
|
|
39777
|
+
card.place();
|
|
39778
|
+
}
|
|
39779
|
+
destroyCard() {
|
|
39780
|
+
const view = this.actionsView?.ref;
|
|
39781
|
+
if (view && !view.destroyed) view.destroy();
|
|
39782
|
+
this.actionsView = null;
|
|
39783
|
+
this.card?.destroy();
|
|
39784
|
+
this.card = null;
|
|
39785
|
+
}
|
|
39718
39786
|
layerOptions() {
|
|
39719
39787
|
const selectedIndex = this.selectedIndex();
|
|
39720
39788
|
return {
|
|
@@ -39732,6 +39800,7 @@ var MnQuadrantChart = class MnQuadrantChart extends MnCartesianChartBase {
|
|
|
39732
39800
|
onFocusChange: (index, hover) => {
|
|
39733
39801
|
if (this.destroyed) return;
|
|
39734
39802
|
this.focusedIndex.set(index);
|
|
39803
|
+
this.card?.focus(index);
|
|
39735
39804
|
this.hover.emit(hover);
|
|
39736
39805
|
},
|
|
39737
39806
|
onClick: (index) => {
|
|
@@ -39762,7 +39831,7 @@ var MnQuadrantChart = class MnQuadrantChart extends MnCartesianChartBase {
|
|
|
39762
39831
|
}
|
|
39763
39832
|
engineOptions() {
|
|
39764
39833
|
const headers = !!this.quadrantHeader();
|
|
39765
|
-
const options = quadrantChartOptions({
|
|
39834
|
+
const options = withQuadrantCard(quadrantChartOptions({
|
|
39766
39835
|
...this.geometry(),
|
|
39767
39836
|
points: this.points(),
|
|
39768
39837
|
quadrants: this.quadrants(),
|
|
@@ -39777,7 +39846,7 @@ var MnQuadrantChart = class MnQuadrantChart extends MnCartesianChartBase {
|
|
|
39777
39846
|
showCounts: headers ? void 0 : this.showCounts(),
|
|
39778
39847
|
selectedIndex: this.selectedIndex(),
|
|
39779
39848
|
selectedIndices: this.selectedIndices()
|
|
39780
|
-
}, this.commonOptions(), { focusedIndex: this.accessiblePoints() ? this.focusedIndex() : null });
|
|
39849
|
+
}, this.commonOptions(), { focusedIndex: this.accessiblePoints() ? this.focusedIndex() : null }));
|
|
39781
39850
|
if (headers) options.annotations = options.annotations?.map((a, i) => i < 4 && a.type === "rect" ? {
|
|
39782
39851
|
...a,
|
|
39783
39852
|
label: void 0,
|
|
@@ -39790,14 +39859,22 @@ var MnQuadrantChart = class MnQuadrantChart extends MnCartesianChartBase {
|
|
|
39790
39859
|
bindEngine(chart) {
|
|
39791
39860
|
return [
|
|
39792
39861
|
...super.bindEngine(chart),
|
|
39793
|
-
chart.on("hover", (event) => this.
|
|
39794
|
-
chart.on("layout", (rect) => this.plot.set({ ...rect }))
|
|
39862
|
+
chart.on("hover", (event) => this.card?.hover(event?.items?.[0]?.index ?? null)),
|
|
39863
|
+
chart.on("layout", (rect) => this.plot.set({ ...rect })),
|
|
39864
|
+
chart.on("dragStart", (event) => this.card?.drag(event.item.index, {
|
|
39865
|
+
x: event.x,
|
|
39866
|
+
y: event.y
|
|
39867
|
+
})),
|
|
39868
|
+
chart.on("dragEnd", () => this.card?.drag(null))
|
|
39795
39869
|
];
|
|
39796
39870
|
}
|
|
39797
39871
|
clicked(event) {
|
|
39798
39872
|
const index = event.items[0]?.index;
|
|
39799
|
-
|
|
39800
|
-
|
|
39873
|
+
if (index !== void 0) this.clickPoint(index);
|
|
39874
|
+
}
|
|
39875
|
+
clickPoint(index) {
|
|
39876
|
+
const point = this.points()[index];
|
|
39877
|
+
if (!point) return;
|
|
39801
39878
|
const now = Date.now();
|
|
39802
39879
|
const last = this.lastClick;
|
|
39803
39880
|
const double = last?.index === index && now - last.time < DOUBLE_CLICK_MS;
|
|
@@ -39834,6 +39911,10 @@ var MnQuadrantChart = class MnQuadrantChart extends MnCartesianChartBase {
|
|
|
39834
39911
|
};
|
|
39835
39912
|
}
|
|
39836
39913
|
dragged(event) {
|
|
39914
|
+
this.card?.move({
|
|
39915
|
+
x: event.x,
|
|
39916
|
+
y: event.y
|
|
39917
|
+
});
|
|
39837
39918
|
const target = this.dropAt(event);
|
|
39838
39919
|
if (target) this.pointDrag.emit(target);
|
|
39839
39920
|
}
|
|
@@ -40020,10 +40101,16 @@ var MnQuadrantChart = class MnQuadrantChart extends MnCartesianChartBase {
|
|
|
40020
40101
|
predicate: ["points"],
|
|
40021
40102
|
descendants: true,
|
|
40022
40103
|
isSignal: true
|
|
40104
|
+
}, {
|
|
40105
|
+
propertyName: "cardHost",
|
|
40106
|
+
first: true,
|
|
40107
|
+
predicate: ["cardHost"],
|
|
40108
|
+
descendants: true,
|
|
40109
|
+
isSignal: true
|
|
40023
40110
|
}],
|
|
40024
40111
|
usesInheritance: true,
|
|
40025
40112
|
ngImport: i0,
|
|
40026
|
-
template: "<div #surface style=\"position:absolute;inset:0\"></div>\n @if (overlayStyle(); as style) {\n <div class=\"minerva-chart-overlay\" [style]=\"style\">\n @if (quadrantHeader(); as tpl) {\n @for (header of headers(); track header.corner) {\n <div [style]=\"header.box\">\n <div\n [class]=\"\n 'minerva-chart-quadrant-header minerva-chart-quadrant-header-' +\n header.corner\n \"\n [style]=\"header.style\"\n >\n <ng-container\n [ngTemplateOutlet]=\"tpl\"\n [ngTemplateOutletContext]=\"header.context\"\n />\n </div>\n </div>\n }\n }\n
|
|
40113
|
+
template: "<div #surface style=\"position:absolute;inset:0\"></div>\n @if (overlayStyle(); as style) {\n <div class=\"minerva-chart-overlay\" [style]=\"style\">\n @if (quadrantHeader(); as tpl) {\n @for (header of headers(); track header.corner) {\n <div [style]=\"header.box\">\n <div\n [class]=\"\n 'minerva-chart-quadrant-header minerva-chart-quadrant-header-' +\n header.corner\n \"\n [style]=\"header.style\"\n >\n <ng-container\n [ngTemplateOutlet]=\"tpl\"\n [ngTemplateOutletContext]=\"header.context\"\n />\n </div>\n </div>\n }\n }\n <div #cardHost [style]=\"cardHostStyle()\"></div>\n </div>\n }\n <div #points style=\"display:contents\"></div>",
|
|
40027
40114
|
isInline: true,
|
|
40028
40115
|
dependencies: [{
|
|
40029
40116
|
kind: "directive",
|
|
@@ -40071,21 +40158,7 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
40071
40158
|
</div>
|
|
40072
40159
|
}
|
|
40073
40160
|
}
|
|
40074
|
-
|
|
40075
|
-
@for (active of activePoint(); track active.context.index) {
|
|
40076
|
-
<div
|
|
40077
|
-
class="minerva-chart-quadrant-point"
|
|
40078
|
-
[attr.data-point-index]="active.context.index"
|
|
40079
|
-
[attr.data-label]="active.context.point.label ?? null"
|
|
40080
|
-
[style]="active.style"
|
|
40081
|
-
>
|
|
40082
|
-
<ng-container
|
|
40083
|
-
[ngTemplateOutlet]="tpl"
|
|
40084
|
-
[ngTemplateOutletContext]="active.context"
|
|
40085
|
-
/>
|
|
40086
|
-
</div>
|
|
40087
|
-
}
|
|
40088
|
-
}
|
|
40161
|
+
<div #cardHost [style]="cardHostStyle()"></div>
|
|
40089
40162
|
</div>
|
|
40090
40163
|
}
|
|
40091
40164
|
<div #points style="display:contents"></div>`
|
|
@@ -40284,6 +40357,10 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
40284
40357
|
pointsHost: [{
|
|
40285
40358
|
type: i0.ViewChild,
|
|
40286
40359
|
args: ["points", { isSignal: true }]
|
|
40360
|
+
}],
|
|
40361
|
+
cardHost: [{
|
|
40362
|
+
type: i0.ViewChild,
|
|
40363
|
+
args: ["cardHost", { isSignal: true }]
|
|
40287
40364
|
}]
|
|
40288
40365
|
}
|
|
40289
40366
|
});
|
|
@@ -46674,6 +46751,10 @@ var MnQuadrantTaskBoard = class MnQuadrantTaskBoard {
|
|
|
46674
46751
|
this.corners = QUADRANT_CORNERS;
|
|
46675
46752
|
this.scope = injectScope();
|
|
46676
46753
|
this.chart = viewChild.required(MnQuadrantChart, ...ngDevMode ? [{ debugName: "chart" }] : /* istanbul ignore next */ []);
|
|
46754
|
+
this.chartElement = viewChild.required(MnQuadrantChart, {
|
|
46755
|
+
...ngDevMode ? { debugName: "chartElement" } : /* istanbul ignore next */ {},
|
|
46756
|
+
read: ElementRef
|
|
46757
|
+
});
|
|
46677
46758
|
this.host = inject(ElementRef).nativeElement;
|
|
46678
46759
|
this.document = inject(DOCUMENT);
|
|
46679
46760
|
this.panelRef = viewChild("panel", ...ngDevMode ? [{ debugName: "panelRef" }] : /* istanbul ignore next */ []);
|
|
@@ -46811,12 +46892,13 @@ var MnQuadrantTaskBoard = class MnQuadrantTaskBoard {
|
|
|
46811
46892
|
return this.lastPointer ? { ...this.lastPointer } : emptyBox();
|
|
46812
46893
|
}
|
|
46813
46894
|
pointBox(index) {
|
|
46814
|
-
const
|
|
46815
|
-
|
|
46816
|
-
|
|
46895
|
+
const point = this.points()[index];
|
|
46896
|
+
const at = point ? this.chart().instance()?.toPixel(point.x, point.y) : null;
|
|
46897
|
+
if (!at) return this.pointerBox();
|
|
46898
|
+
const box = this.boxOf(this.chartElement().nativeElement);
|
|
46817
46899
|
return {
|
|
46818
|
-
x: box.x - DOT,
|
|
46819
|
-
y: box.y - DOT,
|
|
46900
|
+
x: box.x + at.x - DOT,
|
|
46901
|
+
y: box.y + at.y - DOT,
|
|
46820
46902
|
width: 20,
|
|
46821
46903
|
height: 20
|
|
46822
46904
|
};
|
|
@@ -47181,6 +47263,14 @@ var MnQuadrantTaskBoard = class MnQuadrantTaskBoard {
|
|
|
47181
47263
|
descendants: true,
|
|
47182
47264
|
isSignal: true
|
|
47183
47265
|
},
|
|
47266
|
+
{
|
|
47267
|
+
propertyName: "chartElement",
|
|
47268
|
+
first: true,
|
|
47269
|
+
predicate: MnQuadrantChart,
|
|
47270
|
+
descendants: true,
|
|
47271
|
+
read: ElementRef,
|
|
47272
|
+
isSignal: true
|
|
47273
|
+
},
|
|
47184
47274
|
{
|
|
47185
47275
|
propertyName: "panelRef",
|
|
47186
47276
|
first: true,
|
|
@@ -47206,7 +47296,7 @@ var MnQuadrantTaskBoard = class MnQuadrantTaskBoard {
|
|
|
47206
47296
|
],
|
|
47207
47297
|
exportAs: ["mnQuadrantTaskBoard"],
|
|
47208
47298
|
ngImport: i0,
|
|
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.
|
|
47299
|
+
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.cardActions\"\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 ",
|
|
47210
47300
|
isInline: true,
|
|
47211
47301
|
dependencies: [
|
|
47212
47302
|
{
|
|
@@ -47417,7 +47507,7 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
47417
47507
|
<div
|
|
47418
47508
|
role="toolbar"
|
|
47419
47509
|
[attr.aria-label]="texts().actions"
|
|
47420
|
-
[class]="s.
|
|
47510
|
+
[class]="s.cardActions"
|
|
47421
47511
|
(pointerdown)="$event.stopPropagation()"
|
|
47422
47512
|
>
|
|
47423
47513
|
<button
|
|
@@ -47823,6 +47913,13 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
47823
47913
|
type: i0.ViewChild,
|
|
47824
47914
|
args: [i0.forwardRef(() => MnQuadrantChart), { isSignal: true }]
|
|
47825
47915
|
}],
|
|
47916
|
+
chartElement: [{
|
|
47917
|
+
type: i0.ViewChild,
|
|
47918
|
+
args: [i0.forwardRef(() => MnQuadrantChart), {
|
|
47919
|
+
read: ElementRef,
|
|
47920
|
+
isSignal: true
|
|
47921
|
+
}]
|
|
47922
|
+
}],
|
|
47826
47923
|
panelRef: [{
|
|
47827
47924
|
type: i0.ViewChild,
|
|
47828
47925
|
args: ["panel", { isSignal: true }]
|