ngwr 15.0.1 → 15.2.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.
- package/anchor/styles/_index.scss +13 -2
- package/bits/aurora/styles/_rules.scss +11 -0
- package/bits/dot-grid/dot-grid.scss +1 -0
- package/bits/dot-grid/styles/_index.scss +8 -0
- package/bits/dot-grid/styles/_rules.scss +54 -0
- package/bits/iridescence/iridescence.scss +1 -0
- package/bits/iridescence/styles/_index.scss +8 -0
- package/bits/iridescence/styles/_rules.scss +72 -0
- package/bits/marquee/styles/_rules.scss +7 -3
- package/bits/ripple-grid/ripple-grid.scss +1 -0
- package/bits/ripple-grid/styles/_index.scss +8 -0
- package/bits/ripple-grid/styles/_rules.scss +63 -0
- package/bits/spotlight-card/styles/_rules.scss +7 -4
- package/bits/star-border/styles/_rules.scss +5 -2
- package/bits/threads/styles/_index.scss +8 -0
- package/bits/threads/styles/_rules.scss +76 -0
- package/bits/threads/threads.scss +1 -0
- package/bits/waves/styles/_rules.scss +8 -1
- package/charts/bar-chart/styles/_index.scss +607 -7
- package/charts/boxplot-chart/styles/_index.scss +297 -0
- package/charts/bullet-chart/styles/_index.scss +268 -0
- package/charts/calendar-heatmap/styles/_index.scss +25 -3
- package/charts/candlestick-chart/styles/_index.scss +307 -0
- package/charts/chart-legend/styles/_index.scss +143 -0
- package/charts/core/styles/_index.scss +30 -0
- package/charts/donut-chart/styles/_index.scss +39 -3
- package/charts/funnel-chart/styles/_index.scss +237 -0
- package/charts/gauge/styles/_index.scss +4 -2
- package/charts/heatmap-chart/styles/_index.scss +329 -0
- package/charts/line-chart/styles/_index.scss +141 -8
- package/charts/meter-group/styles/_index.scss +44 -13
- package/charts/radar-chart/styles/_index.scss +206 -0
- package/charts/scatter-chart/styles/_index.scss +245 -0
- package/charts/sparkline/styles/_index.scss +10 -1
- package/charts/treemap-chart/styles/_index.scss +215 -0
- package/charts/waterfall-chart/styles/_index.scss +321 -0
- package/collapse/styles/_index.scss +6 -1
- package/fesm2022/ngwr-affix.mjs +3 -3
- package/fesm2022/ngwr-alert.mjs +3 -3
- package/fesm2022/ngwr-anchor.mjs +3 -3
- package/fesm2022/ngwr-avatar.mjs +3 -3
- package/fesm2022/ngwr-back-top.mjs +3 -3
- package/fesm2022/ngwr-badge.mjs +6 -6
- package/fesm2022/ngwr-bits-aurora.mjs +30 -38
- package/fesm2022/ngwr-bits-aurora.mjs.map +1 -1
- package/fesm2022/ngwr-bits-blur-text.mjs +3 -3
- package/fesm2022/ngwr-bits-border-glow-testing.mjs.map +1 -1
- package/fesm2022/ngwr-bits-border-glow.mjs +11 -5
- package/fesm2022/ngwr-bits-border-glow.mjs.map +1 -1
- package/fesm2022/ngwr-bits-circular-text.mjs +3 -3
- package/fesm2022/ngwr-bits-click-spark.mjs +3 -3
- package/fesm2022/ngwr-bits-confetti.mjs +3 -3
- package/fesm2022/ngwr-bits-decrypt-text.mjs +3 -3
- package/fesm2022/ngwr-bits-dot-grid-testing.mjs +40 -0
- package/fesm2022/ngwr-bits-dot-grid-testing.mjs.map +1 -0
- package/fesm2022/ngwr-bits-dot-grid.mjs +482 -0
- package/fesm2022/ngwr-bits-dot-grid.mjs.map +1 -0
- package/fesm2022/ngwr-bits-falling-text.mjs +3 -3
- package/fesm2022/ngwr-bits-fuzzy-text.mjs +3 -3
- package/fesm2022/ngwr-bits-glitch-text.mjs +3 -3
- package/fesm2022/ngwr-bits-gradient-text.mjs +3 -3
- package/fesm2022/ngwr-bits-iridescence-testing.mjs +31 -0
- package/fesm2022/ngwr-bits-iridescence-testing.mjs.map +1 -0
- package/fesm2022/ngwr-bits-iridescence.mjs +591 -0
- package/fesm2022/ngwr-bits-iridescence.mjs.map +1 -0
- package/fesm2022/ngwr-bits-marquee-testing.mjs +1 -1
- package/fesm2022/ngwr-bits-marquee-testing.mjs.map +1 -1
- package/fesm2022/ngwr-bits-marquee.mjs +7 -7
- package/fesm2022/ngwr-bits-marquee.mjs.map +1 -1
- package/fesm2022/ngwr-bits-ripple-grid-testing.mjs +40 -0
- package/fesm2022/ngwr-bits-ripple-grid-testing.mjs.map +1 -0
- package/fesm2022/ngwr-bits-ripple-grid.mjs +805 -0
- package/fesm2022/ngwr-bits-ripple-grid.mjs.map +1 -0
- package/fesm2022/ngwr-bits-rotating-text.mjs +3 -3
- package/fesm2022/ngwr-bits-shiny-text.mjs +6 -6
- package/fesm2022/ngwr-bits-splash-cursor.mjs +3 -3
- package/fesm2022/ngwr-bits-split-text.mjs +3 -3
- package/fesm2022/ngwr-bits-spotlight-card-testing.mjs +1 -1
- package/fesm2022/ngwr-bits-spotlight-card-testing.mjs.map +1 -1
- package/fesm2022/ngwr-bits-spotlight-card.mjs +10 -10
- package/fesm2022/ngwr-bits-spotlight-card.mjs.map +1 -1
- package/fesm2022/ngwr-bits-star-border-testing.mjs +1 -1
- package/fesm2022/ngwr-bits-star-border-testing.mjs.map +1 -1
- package/fesm2022/ngwr-bits-star-border.mjs +7 -7
- package/fesm2022/ngwr-bits-star-border.mjs.map +1 -1
- package/fesm2022/ngwr-bits-threads-testing.mjs +41 -0
- package/fesm2022/ngwr-bits-threads-testing.mjs.map +1 -0
- package/fesm2022/ngwr-bits-threads.mjs +482 -0
- package/fesm2022/ngwr-bits-threads.mjs.map +1 -0
- package/fesm2022/ngwr-bits-tilt-card.mjs +6 -6
- package/fesm2022/ngwr-bits-typewriter.mjs +3 -3
- package/fesm2022/ngwr-bits-waves-testing.mjs.map +1 -1
- package/fesm2022/ngwr-bits-waves.mjs +60 -41
- package/fesm2022/ngwr-bits-waves.mjs.map +1 -1
- package/fesm2022/ngwr-breadcrumbs.mjs +8 -8
- package/fesm2022/ngwr-breadcrumbs.mjs.map +1 -1
- package/fesm2022/ngwr-burger.mjs +3 -3
- package/fesm2022/ngwr-button.mjs +6 -6
- package/fesm2022/ngwr-calendar.mjs +3 -3
- package/fesm2022/ngwr-card.mjs +9 -9
- package/fesm2022/ngwr-carousel.mjs +6 -6
- package/fesm2022/ngwr-cascader.mjs +5 -5
- package/fesm2022/ngwr-cascader.mjs.map +1 -1
- package/fesm2022/ngwr-charts-bar-chart-testing.mjs +127 -3
- package/fesm2022/ngwr-charts-bar-chart-testing.mjs.map +1 -1
- package/fesm2022/ngwr-charts-bar-chart.mjs +683 -49
- package/fesm2022/ngwr-charts-bar-chart.mjs.map +1 -1
- package/fesm2022/ngwr-charts-boxplot-chart-testing.mjs +161 -0
- package/fesm2022/ngwr-charts-boxplot-chart-testing.mjs.map +1 -0
- package/fesm2022/ngwr-charts-boxplot-chart.mjs +517 -0
- package/fesm2022/ngwr-charts-boxplot-chart.mjs.map +1 -0
- package/fesm2022/ngwr-charts-bullet-chart-testing.mjs +68 -0
- package/fesm2022/ngwr-charts-bullet-chart-testing.mjs.map +1 -0
- package/fesm2022/ngwr-charts-bullet-chart.mjs +459 -0
- package/fesm2022/ngwr-charts-bullet-chart.mjs.map +1 -0
- package/fesm2022/ngwr-charts-calendar-heatmap-testing.mjs +27 -0
- package/fesm2022/ngwr-charts-calendar-heatmap-testing.mjs.map +1 -1
- package/fesm2022/ngwr-charts-calendar-heatmap.mjs +96 -17
- package/fesm2022/ngwr-charts-calendar-heatmap.mjs.map +1 -1
- package/fesm2022/ngwr-charts-candlestick-chart-testing.mjs +107 -0
- package/fesm2022/ngwr-charts-candlestick-chart-testing.mjs.map +1 -0
- package/fesm2022/ngwr-charts-candlestick-chart.mjs +508 -0
- package/fesm2022/ngwr-charts-candlestick-chart.mjs.map +1 -0
- package/fesm2022/ngwr-charts-chart-legend-testing.mjs +126 -0
- package/fesm2022/ngwr-charts-chart-legend-testing.mjs.map +1 -0
- package/fesm2022/ngwr-charts-chart-legend.mjs +251 -0
- package/fesm2022/ngwr-charts-chart-legend.mjs.map +1 -0
- package/fesm2022/ngwr-charts-core.mjs +383 -0
- package/fesm2022/ngwr-charts-core.mjs.map +1 -0
- package/fesm2022/ngwr-charts-donut-chart-testing.mjs +10 -1
- package/fesm2022/ngwr-charts-donut-chart-testing.mjs.map +1 -1
- package/fesm2022/ngwr-charts-donut-chart.mjs +187 -31
- package/fesm2022/ngwr-charts-donut-chart.mjs.map +1 -1
- package/fesm2022/ngwr-charts-funnel-chart-testing.mjs +100 -0
- package/fesm2022/ngwr-charts-funnel-chart-testing.mjs.map +1 -0
- package/fesm2022/ngwr-charts-funnel-chart.mjs +415 -0
- package/fesm2022/ngwr-charts-funnel-chart.mjs.map +1 -0
- package/fesm2022/ngwr-charts-gauge-testing.mjs +9 -3
- package/fesm2022/ngwr-charts-gauge-testing.mjs.map +1 -1
- package/fesm2022/ngwr-charts-gauge.mjs +9 -15
- package/fesm2022/ngwr-charts-gauge.mjs.map +1 -1
- package/fesm2022/ngwr-charts-heatmap-chart-testing.mjs +120 -0
- package/fesm2022/ngwr-charts-heatmap-chart-testing.mjs.map +1 -0
- package/fesm2022/ngwr-charts-heatmap-chart.mjs +519 -0
- package/fesm2022/ngwr-charts-heatmap-chart.mjs.map +1 -0
- package/fesm2022/ngwr-charts-line-chart-testing.mjs +43 -1
- package/fesm2022/ngwr-charts-line-chart-testing.mjs.map +1 -1
- package/fesm2022/ngwr-charts-line-chart.mjs +436 -122
- package/fesm2022/ngwr-charts-line-chart.mjs.map +1 -1
- package/fesm2022/ngwr-charts-meter-group-testing.mjs +14 -2
- package/fesm2022/ngwr-charts-meter-group-testing.mjs.map +1 -1
- package/fesm2022/ngwr-charts-meter-group.mjs +101 -32
- package/fesm2022/ngwr-charts-meter-group.mjs.map +1 -1
- package/fesm2022/ngwr-charts-radar-chart-testing.mjs +98 -0
- package/fesm2022/ngwr-charts-radar-chart-testing.mjs.map +1 -0
- package/fesm2022/ngwr-charts-radar-chart.mjs +720 -0
- package/fesm2022/ngwr-charts-radar-chart.mjs.map +1 -0
- package/fesm2022/ngwr-charts-scatter-chart-testing.mjs +132 -0
- package/fesm2022/ngwr-charts-scatter-chart-testing.mjs.map +1 -0
- package/fesm2022/ngwr-charts-scatter-chart.mjs +545 -0
- package/fesm2022/ngwr-charts-scatter-chart.mjs.map +1 -0
- package/fesm2022/ngwr-charts-sparkline-testing.mjs.map +1 -1
- package/fesm2022/ngwr-charts-sparkline.mjs +14 -16
- package/fesm2022/ngwr-charts-sparkline.mjs.map +1 -1
- package/fesm2022/ngwr-charts-treemap-chart-testing.mjs +103 -0
- package/fesm2022/ngwr-charts-treemap-chart-testing.mjs.map +1 -0
- package/fesm2022/ngwr-charts-treemap-chart.mjs +535 -0
- package/fesm2022/ngwr-charts-treemap-chart.mjs.map +1 -0
- package/fesm2022/ngwr-charts-waterfall-chart-testing.mjs +131 -0
- package/fesm2022/ngwr-charts-waterfall-chart-testing.mjs.map +1 -0
- package/fesm2022/ngwr-charts-waterfall-chart.mjs +462 -0
- package/fesm2022/ngwr-charts-waterfall-chart.mjs.map +1 -0
- package/fesm2022/ngwr-checkbox.mjs +6 -6
- package/fesm2022/ngwr-clipboard.mjs +3 -3
- package/fesm2022/ngwr-collapse.mjs +9 -9
- package/fesm2022/ngwr-color-picker.mjs +6 -6
- package/fesm2022/ngwr-command-palette.mjs +3 -3
- package/fesm2022/ngwr-compare.mjs +3 -3
- package/fesm2022/ngwr-context-menu.mjs +12 -12
- package/fesm2022/ngwr-cookie.mjs +3 -3
- package/fesm2022/ngwr-counter.mjs +6 -6
- package/fesm2022/ngwr-date-picker.mjs +21 -21
- package/fesm2022/ngwr-date.mjs +6 -6
- package/fesm2022/ngwr-density.mjs +6 -6
- package/fesm2022/ngwr-descriptions.mjs +6 -6
- package/fesm2022/ngwr-dialog.mjs +15 -15
- package/fesm2022/ngwr-directives.mjs +12 -12
- package/fesm2022/ngwr-divider.mjs +3 -3
- package/fesm2022/ngwr-drawer.mjs +18 -18
- package/fesm2022/ngwr-dropdown.mjs +9 -9
- package/fesm2022/ngwr-editor.mjs +3 -3
- package/fesm2022/ngwr-empty.mjs +3 -3
- package/fesm2022/ngwr-event-calendar.mjs +6 -6
- package/fesm2022/ngwr-file-upload.mjs +3 -3
- package/fesm2022/ngwr-form.mjs +9 -9
- package/fesm2022/ngwr-graph.mjs +6 -6
- package/fesm2022/ngwr-hotkey.mjs +6 -6
- package/fesm2022/ngwr-i18n-ar.mjs +90 -4
- package/fesm2022/ngwr-i18n-ar.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-cs.mjs +90 -4
- package/fesm2022/ngwr-i18n-cs.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-de.mjs +90 -4
- package/fesm2022/ngwr-i18n-de.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-en.mjs +90 -4
- package/fesm2022/ngwr-i18n-en.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-es.mjs +90 -4
- package/fesm2022/ngwr-i18n-es.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-fr.mjs +90 -4
- package/fesm2022/ngwr-i18n-fr.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-he.mjs +90 -4
- package/fesm2022/ngwr-i18n-he.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-hi.mjs +90 -4
- package/fesm2022/ngwr-i18n-hi.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-id.mjs +90 -4
- package/fesm2022/ngwr-i18n-id.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-it.mjs +90 -4
- package/fesm2022/ngwr-i18n-it.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-ja.mjs +90 -4
- package/fesm2022/ngwr-i18n-ja.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-ko.mjs +90 -4
- package/fesm2022/ngwr-i18n-ko.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-nl.mjs +90 -4
- package/fesm2022/ngwr-i18n-nl.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-pl.mjs +90 -4
- package/fesm2022/ngwr-i18n-pl.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-pt.mjs +90 -4
- package/fesm2022/ngwr-i18n-pt.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-ru.mjs +90 -4
- package/fesm2022/ngwr-i18n-ru.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-sv.mjs +90 -4
- package/fesm2022/ngwr-i18n-sv.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-tr.mjs +90 -4
- package/fesm2022/ngwr-i18n-tr.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-uk.mjs +90 -4
- package/fesm2022/ngwr-i18n-uk.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-vi.mjs +90 -4
- package/fesm2022/ngwr-i18n-vi.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-zh-tw.mjs +90 -4
- package/fesm2022/ngwr-i18n-zh-tw.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-zh.mjs +90 -4
- package/fesm2022/ngwr-i18n-zh.mjs.map +1 -1
- package/fesm2022/ngwr-i18n.mjs +9 -9
- package/fesm2022/ngwr-icon.mjs +6 -6
- package/fesm2022/ngwr-image-cropper.mjs +3 -3
- package/fesm2022/ngwr-input-number.mjs +3 -3
- package/fesm2022/ngwr-input-otp.mjs +3 -3
- package/fesm2022/ngwr-input.mjs +15 -15
- package/fesm2022/ngwr-keyboard.mjs +3 -3
- package/fesm2022/ngwr-knob.mjs +3 -3
- package/fesm2022/ngwr-layout.mjs +15 -15
- package/fesm2022/ngwr-lightbox.mjs +5 -5
- package/fesm2022/ngwr-lightbox.mjs.map +1 -1
- package/fesm2022/ngwr-list.mjs +8 -8
- package/fesm2022/ngwr-list.mjs.map +1 -1
- package/fesm2022/ngwr-loading-bar.mjs +6 -6
- package/fesm2022/ngwr-mention.mjs +6 -6
- package/fesm2022/ngwr-meta.mjs +6 -6
- package/fesm2022/ngwr-overlay.mjs +6 -6
- package/fesm2022/ngwr-page-header.mjs +3 -3
- package/fesm2022/ngwr-pagination.mjs +3 -3
- package/fesm2022/ngwr-pipes.mjs +21 -21
- package/fesm2022/ngwr-platform.mjs +6 -6
- package/fesm2022/ngwr-popconfirm.mjs +6 -6
- package/fesm2022/ngwr-popover.mjs +43 -20
- package/fesm2022/ngwr-popover.mjs.map +1 -1
- package/fesm2022/ngwr-progress.mjs +3 -3
- package/fesm2022/ngwr-pull-to-refresh.mjs +3 -3
- package/fesm2022/ngwr-qr.mjs +4 -3
- package/fesm2022/ngwr-qr.mjs.map +1 -1
- package/fesm2022/ngwr-radio.mjs +6 -6
- package/fesm2022/ngwr-rating.mjs +3 -3
- package/fesm2022/ngwr-result.mjs +12 -12
- package/fesm2022/ngwr-schema-form.mjs +3 -3
- package/fesm2022/ngwr-scroll.mjs +3 -3
- package/fesm2022/ngwr-segmented.mjs +3 -3
- package/fesm2022/ngwr-select.mjs +12 -12
- package/fesm2022/ngwr-sidebar.mjs +3 -3
- package/fesm2022/ngwr-skeleton.mjs +3 -3
- package/fesm2022/ngwr-slider.mjs +3 -3
- package/fesm2022/ngwr-sortable-list.mjs +11 -11
- package/fesm2022/ngwr-sortable-list.mjs.map +1 -1
- package/fesm2022/ngwr-speed-dial.mjs +3 -3
- package/fesm2022/ngwr-spinner.mjs +3 -3
- package/fesm2022/ngwr-splitter.mjs +3 -3
- package/fesm2022/ngwr-statistic.mjs +9 -9
- package/fesm2022/ngwr-stepper.mjs +6 -6
- package/fesm2022/ngwr-storage.mjs +3 -3
- package/fesm2022/ngwr-switch.mjs +3 -3
- package/fesm2022/ngwr-table.mjs +18 -18
- package/fesm2022/ngwr-tabs-router.mjs +3 -3
- package/fesm2022/ngwr-tabs.mjs +6 -6
- package/fesm2022/ngwr-textarea.mjs +3 -3
- package/fesm2022/ngwr-theme.mjs +3 -3
- package/fesm2022/ngwr-timeline.mjs +6 -6
- package/fesm2022/ngwr-toast-testing.mjs +2 -1
- package/fesm2022/ngwr-toast-testing.mjs.map +1 -1
- package/fesm2022/ngwr-toast.mjs +34 -15
- package/fesm2022/ngwr-toast.mjs.map +1 -1
- package/fesm2022/ngwr-toolbar.mjs +3 -3
- package/fesm2022/ngwr-tour.mjs +6 -6
- package/fesm2022/ngwr-transfer.mjs +3 -3
- package/fesm2022/ngwr-tree.mjs +3 -3
- package/fesm2022/ngwr-typography.mjs +3 -3
- package/fesm2022/ngwr-utils.mjs +31 -1
- package/fesm2022/ngwr-utils.mjs.map +1 -1
- package/fesm2022/ngwr-version.mjs +1 -1
- package/fesm2022/ngwr-version.mjs.map +1 -1
- package/fesm2022/ngwr-virtual-scroll.mjs +3 -3
- package/fesm2022/ngwr-window-testing.mjs +61 -5
- package/fesm2022/ngwr-window-testing.mjs.map +1 -1
- package/fesm2022/ngwr-window.mjs +1538 -895
- package/fesm2022/ngwr-window.mjs.map +1 -1
- package/fesm2022/ngwr.mjs.map +1 -1
- package/i18n/ar.json +84 -4
- package/i18n/cs.json +84 -4
- package/i18n/de.json +84 -4
- package/i18n/en.json +84 -4
- package/i18n/es.json +84 -4
- package/i18n/fr.json +84 -4
- package/i18n/he.json +84 -4
- package/i18n/hi.json +84 -4
- package/i18n/id.json +84 -4
- package/i18n/it.json +84 -4
- package/i18n/ja.json +84 -4
- package/i18n/ko.json +84 -4
- package/i18n/nl.json +84 -4
- package/i18n/pl.json +84 -4
- package/i18n/pt.json +84 -4
- package/i18n/ru.json +84 -4
- package/i18n/sv.json +84 -4
- package/i18n/tr.json +84 -4
- package/i18n/uk.json +84 -4
- package/i18n/vi.json +84 -4
- package/i18n/zh-TW.json +84 -4
- package/i18n/zh.json +84 -4
- package/llms-full.txt +266 -9
- package/llms.txt +30 -7
- package/mcp/api.js +69 -1
- package/mcp/catalog.js +10 -1
- package/mcp/server.js +15 -1
- package/mcp/tools.js +122 -26
- package/package.json +132 -1
- package/popover/styles/_index.scss +75 -7
- package/schematics/component-style/index.js +3 -0
- package/schematics/migrations/v15/index.js +3 -26
- package/schematics/ng-add/index.js +2 -2
- package/schematics/use/symbol-map.json +14 -0
- package/schematics/utility/global-styles.js +19 -4
- package/schematics/utility/v15-moves.js +55 -0
- package/skills/ngwr/SKILL.md +8 -2
- package/skills/ngwr/references/catalog.md +28 -0
- package/skills/ngwr/references/setup.md +5 -4
- package/theme/styles/_focus.scss +8 -0
- package/toast/styles/_index.scss +103 -12
- package/types/ngwr-bits-aurora.d.ts +11 -0
- package/types/ngwr-bits-border-glow-testing.d.ts +5 -6
- package/types/ngwr-bits-border-glow.d.ts +5 -1
- package/types/ngwr-bits-dot-grid-testing.d.ts +92 -0
- package/types/ngwr-bits-dot-grid.d.ts +158 -0
- package/types/ngwr-bits-iridescence-testing.d.ts +85 -0
- package/types/ngwr-bits-iridescence.d.ts +244 -0
- package/types/ngwr-bits-ripple-grid-testing.d.ts +96 -0
- package/types/ngwr-bits-ripple-grid.d.ts +294 -0
- package/types/ngwr-bits-splash-cursor.d.ts +0 -1
- package/types/ngwr-bits-spotlight-card-testing.d.ts +3 -1
- package/types/ngwr-bits-star-border-testing.d.ts +7 -7
- package/types/ngwr-bits-threads-testing.d.ts +97 -0
- package/types/ngwr-bits-threads.d.ts +216 -0
- package/types/ngwr-bits-waves-testing.d.ts +1 -1
- package/types/ngwr-bits-waves.d.ts +20 -3
- package/types/ngwr-charts-bar-chart-testing.d.ts +193 -14
- package/types/ngwr-charts-bar-chart.d.ts +546 -38
- package/types/ngwr-charts-boxplot-chart-testing.d.ts +165 -0
- package/types/ngwr-charts-boxplot-chart.d.ts +308 -0
- package/types/ngwr-charts-bullet-chart-testing.d.ts +99 -0
- package/types/ngwr-charts-bullet-chart.d.ts +262 -0
- package/types/ngwr-charts-calendar-heatmap-testing.d.ts +32 -1
- package/types/ngwr-charts-calendar-heatmap.d.ts +55 -6
- package/types/ngwr-charts-candlestick-chart-testing.d.ts +135 -0
- package/types/ngwr-charts-candlestick-chart.d.ts +361 -0
- package/types/ngwr-charts-chart-legend-testing.d.ts +84 -0
- package/types/ngwr-charts-chart-legend.d.ts +178 -0
- package/types/ngwr-charts-core.d.ts +391 -0
- package/types/ngwr-charts-donut-chart-testing.d.ts +28 -5
- package/types/ngwr-charts-donut-chart.d.ts +124 -12
- package/types/ngwr-charts-funnel-chart-testing.d.ts +130 -0
- package/types/ngwr-charts-funnel-chart.d.ts +296 -0
- package/types/ngwr-charts-gauge-testing.d.ts +5 -0
- package/types/ngwr-charts-gauge.d.ts +6 -4
- package/types/ngwr-charts-heatmap-chart-testing.d.ts +148 -0
- package/types/ngwr-charts-heatmap-chart.d.ts +359 -0
- package/types/ngwr-charts-line-chart-testing.d.ts +72 -11
- package/types/ngwr-charts-line-chart.d.ts +291 -67
- package/types/ngwr-charts-meter-group-testing.d.ts +16 -2
- package/types/ngwr-charts-meter-group.d.ts +71 -11
- package/types/ngwr-charts-radar-chart-testing.d.ts +162 -0
- package/types/ngwr-charts-radar-chart.d.ts +461 -0
- package/types/ngwr-charts-scatter-chart-testing.d.ts +147 -0
- package/types/ngwr-charts-scatter-chart.d.ts +396 -0
- package/types/ngwr-charts-sparkline-testing.d.ts +4 -1
- package/types/ngwr-charts-sparkline.d.ts +8 -6
- package/types/ngwr-charts-treemap-chart-testing.d.ts +131 -0
- package/types/ngwr-charts-treemap-chart.d.ts +295 -0
- package/types/ngwr-charts-waterfall-chart-testing.d.ts +149 -0
- package/types/ngwr-charts-waterfall-chart.d.ts +338 -0
- package/types/ngwr-color-picker.d.ts +0 -21
- package/types/ngwr-dropdown.d.ts +0 -52
- package/types/ngwr-editor.d.ts +2 -84
- package/types/ngwr-i18n.d.ts +0 -15
- package/types/ngwr-mention.d.ts +0 -13
- package/types/ngwr-popconfirm.d.ts +0 -33
- package/types/ngwr-popover.d.ts +29 -53
- package/types/ngwr-toast-testing.d.ts +6 -1
- package/types/ngwr-tour.d.ts +0 -2
- package/types/ngwr-utils.d.ts +49 -7
- package/types/ngwr-version.d.ts +1 -1
- package/types/ngwr-window-testing.d.ts +65 -7
- package/types/ngwr-window.d.ts +831 -207
- package/types/ngwr.d.ts +1 -0
- package/window/styles/_index.scss +528 -82
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import { BaseHarnessFilters, ComponentHarness, HarnessPredicate } from "@angular/cdk/testing";
|
|
2
|
+
/** Narrows which `<wr-boxplot-chart>` a harness query matches. */
|
|
3
|
+
interface WrBoxplotChartHarnessFilters extends BaseHarnessFilters {
|
|
4
|
+
/** Match the plot's accessible name. */
|
|
5
|
+
readonly ariaLabel?: string | RegExp;
|
|
6
|
+
/** Match a chart with a group of this name. */
|
|
7
|
+
readonly groupLabel?: string | RegExp;
|
|
8
|
+
}
|
|
9
|
+
/** A group's summary, as the component wrote it beside the marks it drew. */
|
|
10
|
+
interface WrBoxplotChartHarnessStats {
|
|
11
|
+
/** Where the lower whisker ends. */
|
|
12
|
+
readonly min: number;
|
|
13
|
+
readonly q1: number;
|
|
14
|
+
readonly median: number;
|
|
15
|
+
readonly q3: number;
|
|
16
|
+
/** Where the upper whisker ends. */
|
|
17
|
+
readonly max: number;
|
|
18
|
+
/** The outliers drawn, ascending. */
|
|
19
|
+
readonly outliers: readonly number[];
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Where a group's marks sit, each as a percentage of the drawing's height from its top —
|
|
23
|
+
* read off the custom properties the component wrote, never off a layout.
|
|
24
|
+
*/
|
|
25
|
+
interface WrBoxplotChartHarnessPosition {
|
|
26
|
+
/** The upper whisker, from its end at `max` down to the box's upper edge. */
|
|
27
|
+
readonly upperWhisker: {
|
|
28
|
+
readonly top: number;
|
|
29
|
+
readonly bottom: number;
|
|
30
|
+
};
|
|
31
|
+
/** The lower whisker, from the box's lower edge down to its end at `min`. */
|
|
32
|
+
readonly lowerWhisker: {
|
|
33
|
+
readonly top: number;
|
|
34
|
+
readonly bottom: number;
|
|
35
|
+
};
|
|
36
|
+
/** The upper whisker's cap: where `max` sits. */
|
|
37
|
+
readonly max: number;
|
|
38
|
+
/** The box's upper edge: where `q3` sits, for a summary in order. */
|
|
39
|
+
readonly boxTop: number;
|
|
40
|
+
/** The median line. */
|
|
41
|
+
readonly median: number;
|
|
42
|
+
/** The box's lower edge: where `q1` sits, for a summary in order. */
|
|
43
|
+
readonly boxBottom: number;
|
|
44
|
+
/** The lower whisker's cap: where `min` sits. */
|
|
45
|
+
readonly min: number;
|
|
46
|
+
/** Each outlier's dot, in the order of `stats.outliers`. */
|
|
47
|
+
readonly outliers: readonly number[];
|
|
48
|
+
}
|
|
49
|
+
/** One group, as {@link WrBoxplotChartHarness.getGroups} reads it. */
|
|
50
|
+
interface WrBoxplotChartHarnessGroup {
|
|
51
|
+
/** The name under the group's slot. */
|
|
52
|
+
readonly label: string;
|
|
53
|
+
/**
|
|
54
|
+
* Where the group's slot starts, as a percentage of the drawing's width from its inline
|
|
55
|
+
* start: the left edge, or the right one under RTL.
|
|
56
|
+
*/
|
|
57
|
+
readonly slotStart: number;
|
|
58
|
+
/** How wide the group's slot is, as a percentage of the drawing's width. */
|
|
59
|
+
readonly slotWidth: number;
|
|
60
|
+
/** The colour the group is drawn in, as the component wrote it. */
|
|
61
|
+
readonly color: string | null;
|
|
62
|
+
/** The group's summary, or `null` when it has nothing to draw and its slot is empty. */
|
|
63
|
+
readonly stats: WrBoxplotChartHarnessStats | null;
|
|
64
|
+
/** Where its marks sit, or `null` when it draws none. */
|
|
65
|
+
readonly position: WrBoxplotChartHarnessPosition | null;
|
|
66
|
+
}
|
|
67
|
+
/** The axes' names as drawn, each `null` when the chart draws none (`xLabel` / `yLabel` not given). */
|
|
68
|
+
interface WrBoxplotChartAxisTitles {
|
|
69
|
+
readonly x: string | null;
|
|
70
|
+
readonly y: string | null;
|
|
71
|
+
}
|
|
72
|
+
/** One row of the chart's data table (`dataTable`): a group, with one cell per column. */
|
|
73
|
+
interface WrBoxplotChartTableRow {
|
|
74
|
+
/** The row header: the group's name. */
|
|
75
|
+
readonly header: string;
|
|
76
|
+
/**
|
|
77
|
+
* The lower whisker, Q1, the median, Q3 and the upper whisker, written as the tooltip
|
|
78
|
+
* writes them, then — when the table has the column — the outliers in one list. A
|
|
79
|
+
* group with nothing to draw has empty cells.
|
|
80
|
+
*/
|
|
81
|
+
readonly cells: readonly string[];
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Test harness for `<wr-boxplot-chart>`.
|
|
85
|
+
*
|
|
86
|
+
* **Groups are read off what the component WROTE, never off a layout.** jsdom lays
|
|
87
|
+
* nothing out, so a measured box would read 0 for a working chart and a broken one alike.
|
|
88
|
+
* Every group's slot carries its summary in `data-*` attributes, and every mark the
|
|
89
|
+
* percentages it was placed at in its own `style` — so {@link getGroups} answers both
|
|
90
|
+
* questions a spec has: what did the chart work out, and where did it draw it. A median
|
|
91
|
+
* computed right and placed wrong is exactly the defect worth catching.
|
|
92
|
+
*
|
|
93
|
+
* **There is deliberately no hover method.** The tooltip renders into an overlay outside
|
|
94
|
+
* the chart's host and is pointer only; a spec that needs it dispatches `mouseenter` on a
|
|
95
|
+
* `.wr-boxplot-chart__group` and reads `.wr-chart-tooltip` off `document`, as the
|
|
96
|
+
* component's own spec does. Its position is measured against boxes jsdom reports as
|
|
97
|
+
* 0×0, which only a stubbed `getBoundingClientRect` can make mean anything.
|
|
98
|
+
*
|
|
99
|
+
* @example
|
|
100
|
+
* ```ts
|
|
101
|
+
* const chart = await loader.getHarness(WrBoxplotChartHarness);
|
|
102
|
+
*
|
|
103
|
+
* expect(await chart.getGroupLabels()).toEqual(['EU', 'US']);
|
|
104
|
+
* expect((await chart.getGroups())[0].stats).toMatchObject({ q1: 101, median: 118, q3: 134 });
|
|
105
|
+
* ```
|
|
106
|
+
*
|
|
107
|
+
* @see https://ngwr.dev/guides/testing
|
|
108
|
+
*/
|
|
109
|
+
export declare class WrBoxplotChartHarness extends ComponentHarness {
|
|
110
|
+
static hostSelector: string;
|
|
111
|
+
/** Build a predicate that narrows the query — pass to `getHarness` / `getAllHarnesses`. */
|
|
112
|
+
static with(options?: WrBoxplotChartHarnessFilters): HarnessPredicate<WrBoxplotChartHarness>;
|
|
113
|
+
/** The plot's accessible name — the only name the drawing has. */
|
|
114
|
+
getAccessibleName(): Promise<string | null>;
|
|
115
|
+
/** The group names under the drawing, in the order of `groups` — groups with nothing to draw included. */
|
|
116
|
+
getGroupLabels(): Promise<string[]>;
|
|
117
|
+
/** How many slots the drawing has: one per group, drawn or empty. */
|
|
118
|
+
getGroupCount(): Promise<number>;
|
|
119
|
+
/**
|
|
120
|
+
* Every group, in the order of `groups`: its name, its slot, its colour, the summary the
|
|
121
|
+
* component worked out or was given, and the percentages it drew each mark at — both
|
|
122
|
+
* whiskers' spans, both caps, the box's edges, the median and every outlier. A group
|
|
123
|
+
* with nothing to draw answers `null` for both of the last two.
|
|
124
|
+
*
|
|
125
|
+
* Throws on a mark missing what the component writes on every one, rather than
|
|
126
|
+
* answering with a `NaN` a spec could compare against.
|
|
127
|
+
*/
|
|
128
|
+
getGroups(): Promise<WrBoxplotChartHarnessGroup[]>;
|
|
129
|
+
/** Whether the gridlines are drawn (`showGrid`). */
|
|
130
|
+
hasGrid(): Promise<boolean>;
|
|
131
|
+
/** The value axis' tick labels, top to bottom; `[]` with `showGrid` off. */
|
|
132
|
+
getYTicks(): Promise<string[]>;
|
|
133
|
+
/**
|
|
134
|
+
* The axes' names as drawn. The chart draws a name only when `xLabel` or `yLabel` is
|
|
135
|
+
* given, so the catalog's fallback, which heads the data table's group column, never
|
|
136
|
+
* appears here.
|
|
137
|
+
*/
|
|
138
|
+
getAxisTitles(): Promise<WrBoxplotChartAxisTitles>;
|
|
139
|
+
/** Whether the hidden data table is rendered (`dataTable`). */
|
|
140
|
+
hasDataTable(): Promise<boolean>;
|
|
141
|
+
/**
|
|
142
|
+
* The data table's column headings: the five numbers from the lower whisker up, and the
|
|
143
|
+
* outliers once a group has one — one per cell of {@link getTableRows}, as the other
|
|
144
|
+
* charts' harnesses read them.
|
|
145
|
+
*
|
|
146
|
+
* Throws when the chart renders no table (`dataTable` off), rather than answering with
|
|
147
|
+
* no columns.
|
|
148
|
+
*/
|
|
149
|
+
getTableColumns(): Promise<string[]>;
|
|
150
|
+
/**
|
|
151
|
+
* The data table's rows, one per group, as a screen reader walks them.
|
|
152
|
+
*
|
|
153
|
+
* Throws when the chart renders no table (`dataTable` off), for the reason
|
|
154
|
+
* {@link getTableColumns} gives.
|
|
155
|
+
*/
|
|
156
|
+
getTableRows(): Promise<WrBoxplotChartTableRow[]>;
|
|
157
|
+
/**
|
|
158
|
+
* The plot's height in pixels, read off the `style` ATTRIBUTE the component wrote,
|
|
159
|
+
* not through `getCssValue()`, which answers from the laid-out box and so differs
|
|
160
|
+
* between jsdom and a browser.
|
|
161
|
+
*/
|
|
162
|
+
getPlotHeight(): Promise<number>;
|
|
163
|
+
private assertDataTable;
|
|
164
|
+
}
|
|
165
|
+
export type { WrBoxplotChartAxisTitles, WrBoxplotChartHarnessFilters, WrBoxplotChartHarnessGroup, WrBoxplotChartHarnessPosition, WrBoxplotChartHarnessStats, WrBoxplotChartTableRow };
|
|
@@ -0,0 +1,308 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
import { WrChartTableData } from "ngwr/charts/core";
|
|
3
|
+
/**
|
|
4
|
+
* @license
|
|
5
|
+
*
|
|
6
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
7
|
+
* found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* The five numbers a `<wr-boxplot-chart>` draws for one group, plus the values it draws
|
|
11
|
+
* as dots beyond them.
|
|
12
|
+
*
|
|
13
|
+
* `min` and `max` are the WHISKERS' ends, not the extremes of the data: with outliers,
|
|
14
|
+
* the whisker stops at the farthest value that is not one, and the outliers lie past it.
|
|
15
|
+
*/
|
|
16
|
+
interface WrBoxplotStats {
|
|
17
|
+
/** Where the lower whisker ends: the smallest value that is not an outlier. */
|
|
18
|
+
readonly min: number;
|
|
19
|
+
/** The first quartile: the box's lower edge. */
|
|
20
|
+
readonly q1: number;
|
|
21
|
+
/** The median: the line across the box. */
|
|
22
|
+
readonly median: number;
|
|
23
|
+
/** The third quartile: the box's upper edge. */
|
|
24
|
+
readonly q3: number;
|
|
25
|
+
/** Where the upper whisker ends: the largest value that is not an outlier. */
|
|
26
|
+
readonly max: number;
|
|
27
|
+
/** The values drawn as dots past the whiskers, in any order. One that is not a finite number is left out. */
|
|
28
|
+
readonly outliers?: readonly number[];
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* One box of a `<wr-boxplot-chart>`: a name, and either the raw values to summarise or
|
|
32
|
+
* the summary itself.
|
|
33
|
+
*/
|
|
34
|
+
interface WrBoxplotGroup {
|
|
35
|
+
/** The group's name: under its box, in the tooltip and as its data table row. */
|
|
36
|
+
readonly label: string;
|
|
37
|
+
/**
|
|
38
|
+
* The raw values, in any order. The chart works out the quartiles by linear
|
|
39
|
+
* interpolation (type 7: R's default, NumPy's and Excel's `QUARTILE.INC`) and draws
|
|
40
|
+
* the whiskers to the farthest value within 1.5 IQR of the box; anything farther is an
|
|
41
|
+
* outlier. A value that is not a finite number is left out. Ignored when `stats` is
|
|
42
|
+
* given.
|
|
43
|
+
*/
|
|
44
|
+
readonly values?: readonly number[];
|
|
45
|
+
/**
|
|
46
|
+
* A summary worked out elsewhere, drawn as given: nothing is recomputed, reordered or
|
|
47
|
+
* checked against `values`. A summary with a number that is not finite draws nothing.
|
|
48
|
+
*/
|
|
49
|
+
readonly stats?: WrBoxplotStats;
|
|
50
|
+
/** Any CSS colour, `var(--wr-…)` included. Without one, the group takes the chart's `color`. */
|
|
51
|
+
readonly color?: string;
|
|
52
|
+
}
|
|
53
|
+
/** A group's summary as the chart reads it: every number finite, the outliers ascending. */
|
|
54
|
+
type Summary = Required<WrBoxplotStats>;
|
|
55
|
+
/** Where one group's marks sit, each as a percentage of the drawing's height from its top. */
|
|
56
|
+
interface DrawnBox {
|
|
57
|
+
/** The upper whisker, from its end down to the box. */
|
|
58
|
+
readonly upper: {
|
|
59
|
+
readonly top: number;
|
|
60
|
+
readonly bottom: number;
|
|
61
|
+
};
|
|
62
|
+
/** The lower whisker, from the box down to its end. */
|
|
63
|
+
readonly lower: {
|
|
64
|
+
readonly top: number;
|
|
65
|
+
readonly bottom: number;
|
|
66
|
+
};
|
|
67
|
+
/** The box, from the third quartile down to the first. */
|
|
68
|
+
readonly box: {
|
|
69
|
+
readonly top: number;
|
|
70
|
+
readonly bottom: number;
|
|
71
|
+
};
|
|
72
|
+
readonly max: number;
|
|
73
|
+
readonly median: number;
|
|
74
|
+
readonly min: number;
|
|
75
|
+
readonly outliers: readonly {
|
|
76
|
+
readonly value: number;
|
|
77
|
+
readonly top: number;
|
|
78
|
+
}[];
|
|
79
|
+
/** Everything the group draws, outliers included: what the tooltip points at. */
|
|
80
|
+
readonly extent: {
|
|
81
|
+
readonly top: number;
|
|
82
|
+
readonly bottom: number;
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
/** One group as the chart draws it: its data, its slot across the drawing and its marks. */
|
|
86
|
+
interface DrawnGroup {
|
|
87
|
+
/** Its position in `groups`. */
|
|
88
|
+
readonly index: number;
|
|
89
|
+
readonly label: string;
|
|
90
|
+
readonly color: string;
|
|
91
|
+
/** Its summary, or `null` when it has nothing to draw. */
|
|
92
|
+
readonly stats: Summary | null;
|
|
93
|
+
/**
|
|
94
|
+
* Where its slot starts, as a percentage of the drawing's width from its inline start:
|
|
95
|
+
* the left, or the right under RTL.
|
|
96
|
+
*/
|
|
97
|
+
readonly start: number;
|
|
98
|
+
/** How wide its slot is, as a percentage of the drawing's width. */
|
|
99
|
+
readonly slot: number;
|
|
100
|
+
readonly marks: DrawnBox | null;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Box-and-whisker plots of several groups side by side, on one value axis: a box from the
|
|
104
|
+
* first quartile to the third with a line at the median, a whisker either side, and a dot
|
|
105
|
+
* per outlier. No SVG and no dependency: every mark is an HTML element placed by
|
|
106
|
+
* percentage, so a box keeps its width however tall the plot is.
|
|
107
|
+
*
|
|
108
|
+
* @example
|
|
109
|
+
* ```html
|
|
110
|
+
* <wr-boxplot-chart
|
|
111
|
+
* ariaLabel="Response time by region"
|
|
112
|
+
* [groups]="[
|
|
113
|
+
* { label: 'EU', values: [112, 98, 130, 141, 104, 99, 260] },
|
|
114
|
+
* { label: 'US', stats: { min: 80, q1: 101, median: 118, q3: 134, max: 170, outliers: [240] } }
|
|
115
|
+
* ]"
|
|
116
|
+
* />
|
|
117
|
+
* ```
|
|
118
|
+
*
|
|
119
|
+
* From `values`, the chart works out the quartiles by LINEAR INTERPOLATION — type 7 of
|
|
120
|
+
* Hyndman and Fan, the default of R's and NumPy's `quantile()` and what Excel's
|
|
121
|
+
* `QUARTILE.INC` computes — and Tukey's whiskers: each reaches the farthest value within
|
|
122
|
+
* 1.5 interquartile ranges of the box, and every value beyond is an outlier. A summary
|
|
123
|
+
* worked out elsewhere goes in `stats` and is drawn exactly as given.
|
|
124
|
+
*
|
|
125
|
+
* The value axis is fitted to every number drawn, outliers included, with no zero forced
|
|
126
|
+
* in — a box plot has no baseline — and snapped outward to a readable step. The groups
|
|
127
|
+
* share the drawing's width in equal slots under their names, in reading order: left to
|
|
128
|
+
* right, and right to left under RTL, as the bar chart's columns are, so the first group
|
|
129
|
+
* stands beside the value axis either way.
|
|
130
|
+
*
|
|
131
|
+
* The drawing is one named `role="img"` and takes no tab stop; the tooltip, with the five
|
|
132
|
+
* numbers and the outliers past them, is pointer only. `dataTable` renders every group's
|
|
133
|
+
* numbers as a table only assistive technology reaches.
|
|
134
|
+
*
|
|
135
|
+
* @see https://ngwr.dev/charts/boxplot-chart
|
|
136
|
+
*/
|
|
137
|
+
export declare class WrBoxplotChart {
|
|
138
|
+
/**
|
|
139
|
+
* One entry per box, in reading order: each with its raw `values` or a `stats` summary
|
|
140
|
+
* worked out elsewhere. A group with neither, or with nothing finite to summarise,
|
|
141
|
+
* keeps its slot and its name and draws no box.
|
|
142
|
+
*/
|
|
143
|
+
readonly groups: import("@angular/core").InputSignal<readonly WrBoxplotGroup[]>;
|
|
144
|
+
/**
|
|
145
|
+
* Accessible name of the chart. The numbers are nowhere in text unless `dataTable`
|
|
146
|
+
* puts them there, so say what the chart shows. Falls back to `boxplotChart.label`
|
|
147
|
+
* ("Box plot").
|
|
148
|
+
*/
|
|
149
|
+
readonly ariaLabel: import("@angular/core").InputSignal<string | null>;
|
|
150
|
+
protected readonly resolvedAriaLabel: import("@angular/core").Signal<string>;
|
|
151
|
+
/**
|
|
152
|
+
* What the groups are — a region, a release. Drawn under the group names only when
|
|
153
|
+
* given; either way it heads the group column of the data table, which falls back to
|
|
154
|
+
* `boxplotChart.group` ("Group").
|
|
155
|
+
*/
|
|
156
|
+
readonly xLabel: import("@angular/core").InputSignal<string | null>;
|
|
157
|
+
/** What the values measure, with their unit. Drawn above the value axis only when given. */
|
|
158
|
+
readonly yLabel: import("@angular/core").InputSignal<string | null>;
|
|
159
|
+
protected readonly xName: import("@angular/core").Signal<string>;
|
|
160
|
+
private readonly upperName;
|
|
161
|
+
private readonly q3Name;
|
|
162
|
+
private readonly medianName;
|
|
163
|
+
private readonly q1Name;
|
|
164
|
+
private readonly lowerName;
|
|
165
|
+
private readonly outliersName;
|
|
166
|
+
/**
|
|
167
|
+
* Writes every number the chart shows: the axis ticks, the tooltip and the data table.
|
|
168
|
+
* `null` uses `Intl.NumberFormat` in `LOCALE_ID`, with compact ticks (`1.2K`, `3.4M`)
|
|
169
|
+
* unless the full numbers are shorter.
|
|
170
|
+
*/
|
|
171
|
+
readonly valueFormat: import("@angular/core").InputSignal<((value: number) => string) | null>;
|
|
172
|
+
/** The figures in full and the axis' compact ticks, in `LOCALE_ID` unless `valueFormat` is given. */
|
|
173
|
+
private readonly numbers;
|
|
174
|
+
private readonly locale;
|
|
175
|
+
/** How many outliers the tooltip leaves unwritten, in the reader's own digits: a count, never a value to format. */
|
|
176
|
+
private readonly counts;
|
|
177
|
+
/** The tooltip's tail for the outliers past the first few it writes out. */
|
|
178
|
+
private readonly moreOutliers;
|
|
179
|
+
/**
|
|
180
|
+
* A group's outliers in one data table cell, as the locale lists them. A narrow
|
|
181
|
+
* CONJUNCTION list, because a unit list separates them with bare spaces in several
|
|
182
|
+
* locales, and a space is the digit grouping of Russian and French: `9 000 12 000`.
|
|
183
|
+
*/
|
|
184
|
+
private readonly list;
|
|
185
|
+
/** The colour of every group with no `color` of its own. Any CSS colour. @default 'var(--wr-color-primary)' */
|
|
186
|
+
readonly color: import("@angular/core").InputSignal<string>;
|
|
187
|
+
/**
|
|
188
|
+
* The plot's height in px, at least 80. Under 160 the value axis aims for fewer ticks,
|
|
189
|
+
* so their labels keep clear of one another. @default 240
|
|
190
|
+
*/
|
|
191
|
+
readonly height: import("@angular/core").InputSignalWithTransform<number, unknown>;
|
|
192
|
+
/** Show the gridlines and the value axis' tick labels. @default true */
|
|
193
|
+
readonly showGrid: import("@angular/core").InputSignalWithTransform<boolean, any>;
|
|
194
|
+
/**
|
|
195
|
+
* Show a tooltip with the hovered group's five numbers — the whiskers' ends, the
|
|
196
|
+
* quartiles and the median — and its outliers' values, the lowest three, then how many
|
|
197
|
+
* more there are. Pointer only. @default true
|
|
198
|
+
*/
|
|
199
|
+
readonly tooltip: import("@angular/core").InputSignalWithTransform<boolean, any>;
|
|
200
|
+
/**
|
|
201
|
+
* Render every group's numbers as a table only assistive technology reaches, beside the
|
|
202
|
+
* drawing: a row per group, a column for each of the five numbers from the lower
|
|
203
|
+
* whisker up and, when a group has any, one listing its outliers. The drawing is one
|
|
204
|
+
* named image, so without it the numbers are nowhere a screen reader can walk.
|
|
205
|
+
* @default false
|
|
206
|
+
*/
|
|
207
|
+
readonly dataTable: import("@angular/core").InputSignalWithTransform<boolean, any>;
|
|
208
|
+
private readonly groupEls;
|
|
209
|
+
/** Every group with its colour and its summary, in order. */
|
|
210
|
+
private readonly resolvedGroups;
|
|
211
|
+
/**
|
|
212
|
+
* The value axis, from `chartAxis` over every number drawn — whisker ends, quartiles,
|
|
213
|
+
* medians and outliers alike, so a summary given out of order still lands inside it —
|
|
214
|
+
* with no zero forced in and both ends kept off the data (`symmetric`). A single value
|
|
215
|
+
* is centred with a step either side; with nothing to draw, the 0 to 1 frame.
|
|
216
|
+
*
|
|
217
|
+
* It aims for four gaps, and for fewer on a short plot: a gap per 40px of `height`, so
|
|
218
|
+
* the tick labels, a line of text each, never stand on one another — at the 80px
|
|
219
|
+
* floor, four gaps put five labels in 64px of drawing.
|
|
220
|
+
*/
|
|
221
|
+
protected readonly axis: import("@angular/core").Signal<import("ngwr/charts/core").WrChartAxis>;
|
|
222
|
+
/** The groups as drawn: an equal slot each across the drawing, and their marks placed on the axis. */
|
|
223
|
+
protected readonly drawnGroups: import("@angular/core").Signal<readonly DrawnGroup[]>;
|
|
224
|
+
/** The value axis' ticks, top to bottom: each value's label and its gridline's distance from the top, in percent. */
|
|
225
|
+
protected readonly yTicks: import("@angular/core").Signal<{
|
|
226
|
+
label: string;
|
|
227
|
+
top: number;
|
|
228
|
+
}[]>;
|
|
229
|
+
/**
|
|
230
|
+
* One tooltip for the group under the pointer: its name and colour as the heading, then
|
|
231
|
+
* the five numbers top to bottom, the way the box is drawn, and its outliers when it has
|
|
232
|
+
* any — their VALUES, as the data table's column of the same name lists them: the lowest
|
|
233
|
+
* three a row each under the one label, so a long figure never shares a line with
|
|
234
|
+
* another and pushes past the chip, then a row counting the rest. It points at the top
|
|
235
|
+
* of everything the group draws, so the chip covers none of its marks.
|
|
236
|
+
*/
|
|
237
|
+
protected readonly tip: import("ngwr/popover").WrChartTooltip;
|
|
238
|
+
/** The group the tooltip is reading, washed in the drawing. Never one with nothing drawn. */
|
|
239
|
+
protected readonly activeGroup: import("@angular/core").Signal<number | null>;
|
|
240
|
+
/**
|
|
241
|
+
* The figures for `dataTable`: the chart's name as the caption, a row per group headed
|
|
242
|
+
* by its name, and its five numbers ascending, as a five-number summary reads, written
|
|
243
|
+
* as the tooltip writes them. The outliers column appears once any group has an
|
|
244
|
+
* outlier, and lists that group's ascending. A group with nothing to draw has a row of
|
|
245
|
+
* empty cells.
|
|
246
|
+
*/
|
|
247
|
+
protected readonly tableData: import("@angular/core").Signal<WrChartTableData>;
|
|
248
|
+
constructor();
|
|
249
|
+
/**
|
|
250
|
+
* The pointer entered a group's slot. A group with nothing drawn reads as leaving, so a
|
|
251
|
+
* chip open on its neighbour closes after the usual grace rather than at once.
|
|
252
|
+
*/
|
|
253
|
+
protected onEnter(index: number, event: MouseEvent): void;
|
|
254
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<WrBoxplotChart, never>;
|
|
255
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<WrBoxplotChart, "wr-boxplot-chart", never, {
|
|
256
|
+
"groups": {
|
|
257
|
+
"alias": "groups";
|
|
258
|
+
"required": false;
|
|
259
|
+
"isSignal": true;
|
|
260
|
+
};
|
|
261
|
+
"ariaLabel": {
|
|
262
|
+
"alias": "ariaLabel";
|
|
263
|
+
"required": false;
|
|
264
|
+
"isSignal": true;
|
|
265
|
+
};
|
|
266
|
+
"xLabel": {
|
|
267
|
+
"alias": "xLabel";
|
|
268
|
+
"required": false;
|
|
269
|
+
"isSignal": true;
|
|
270
|
+
};
|
|
271
|
+
"yLabel": {
|
|
272
|
+
"alias": "yLabel";
|
|
273
|
+
"required": false;
|
|
274
|
+
"isSignal": true;
|
|
275
|
+
};
|
|
276
|
+
"valueFormat": {
|
|
277
|
+
"alias": "valueFormat";
|
|
278
|
+
"required": false;
|
|
279
|
+
"isSignal": true;
|
|
280
|
+
};
|
|
281
|
+
"color": {
|
|
282
|
+
"alias": "color";
|
|
283
|
+
"required": false;
|
|
284
|
+
"isSignal": true;
|
|
285
|
+
};
|
|
286
|
+
"height": {
|
|
287
|
+
"alias": "height";
|
|
288
|
+
"required": false;
|
|
289
|
+
"isSignal": true;
|
|
290
|
+
};
|
|
291
|
+
"showGrid": {
|
|
292
|
+
"alias": "showGrid";
|
|
293
|
+
"required": false;
|
|
294
|
+
"isSignal": true;
|
|
295
|
+
};
|
|
296
|
+
"tooltip": {
|
|
297
|
+
"alias": "tooltip";
|
|
298
|
+
"required": false;
|
|
299
|
+
"isSignal": true;
|
|
300
|
+
};
|
|
301
|
+
"dataTable": {
|
|
302
|
+
"alias": "dataTable";
|
|
303
|
+
"required": false;
|
|
304
|
+
"isSignal": true;
|
|
305
|
+
};
|
|
306
|
+
}, {}, never, never, true, never>;
|
|
307
|
+
}
|
|
308
|
+
export type { WrBoxplotGroup, WrBoxplotStats };
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { BaseHarnessFilters, ComponentHarness, HarnessPredicate } from "@angular/cdk/testing";
|
|
2
|
+
/** Narrows which `<wr-bullet-chart>` a harness query matches. */
|
|
3
|
+
interface WrBulletChartHarnessFilters extends BaseHarnessFilters {
|
|
4
|
+
/** Match the drawing's accessible name — the sentence, or `ariaLabel`. */
|
|
5
|
+
readonly ariaLabel?: string | RegExp;
|
|
6
|
+
/** Match the label shown beside the drawing. */
|
|
7
|
+
readonly label?: string | RegExp;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Where a part of the drawing lies along the scale, as {@link WrBulletChartHarness} reads
|
|
11
|
+
* it: shares of the scale from 0 at its start to 1 at its end, as the component wrote them.
|
|
12
|
+
*/
|
|
13
|
+
interface WrBulletChartExtent {
|
|
14
|
+
/** Where it starts. The value's bar starts at zero, or at the value for a negative one. */
|
|
15
|
+
readonly start: number;
|
|
16
|
+
/** Where it ends. */
|
|
17
|
+
readonly end: number;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Test harness for `<wr-bullet-chart>`.
|
|
21
|
+
*
|
|
22
|
+
* **Two questions, two methods.** What a screen reader hears is the drawing's name — the
|
|
23
|
+
* sentence "Revenue: 270 of target 250", or `ariaLabel` — and its description, the
|
|
24
|
+
* sub-label it names through `aria-describedby` ({@link getAccessibleName},
|
|
25
|
+
* {@link getDescription}). What a reader sees is the label column beside it, which is
|
|
26
|
+
* `aria-hidden` ({@link getLabel}, {@link getSubLabel}). A chart whose description points
|
|
27
|
+
* at nothing still SHOWS its sub-label, so the two are asked separately.
|
|
28
|
+
*
|
|
29
|
+
* **Where the marks lie is read as the component WROTE it**: shares of the scale from 0
|
|
30
|
+
* at its start to 1 at its end, off each mark's `style` attribute, never measured. jsdom
|
|
31
|
+
* lays nothing out, so a measured box would be 0×0 for a working chart and a broken one
|
|
32
|
+
* alike — but the share written is exactly what decides where the browser draws it, and
|
|
33
|
+
* it is what breaks when the scale does: a `max` read wrongly moves every share.
|
|
34
|
+
*
|
|
35
|
+
* **No colour is read.** The bands, the bar and the marker are painted by the stylesheet
|
|
36
|
+
* through the chart's `--wr-bullet-chart-*` hooks, and jsdom resolves no stylesheet, so a
|
|
37
|
+
* colour method would answer the same nothing whatever the theme said. Nor is there a
|
|
38
|
+
* method for the tooltip: it is pointer only, and it says what the accessible name says.
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* ```ts
|
|
42
|
+
* const chart = await loader.getHarness(WrBulletChartHarness.with({ label: 'Revenue' }));
|
|
43
|
+
*
|
|
44
|
+
* expect(await chart.getAccessibleName()).toBe('Revenue: 270 of target 250');
|
|
45
|
+
* expect(await chart.getValueExtent()).toEqual({ start: 0, end: 0.9 });
|
|
46
|
+
* expect(await chart.getRanges()).toHaveLength(3);
|
|
47
|
+
* ```
|
|
48
|
+
*
|
|
49
|
+
* @see https://ngwr.dev/guides/testing
|
|
50
|
+
*/
|
|
51
|
+
export declare class WrBulletChartHarness extends ComponentHarness {
|
|
52
|
+
static hostSelector: string;
|
|
53
|
+
/** Build a predicate that narrows the query — pass to `getHarness` / `getAllHarnesses`. */
|
|
54
|
+
static with(options?: WrBulletChartHarnessFilters): HarnessPredicate<WrBulletChartHarness>;
|
|
55
|
+
private readonly drawing;
|
|
56
|
+
/** The drawing's accessible name: the sentence the chart writes, or `ariaLabel`. */
|
|
57
|
+
getAccessibleName(): Promise<string | null>;
|
|
58
|
+
/**
|
|
59
|
+
* The text a screen reader hears after the name — the sub-label, which the drawing names
|
|
60
|
+
* through `aria-describedby` — or `null` when it names nothing.
|
|
61
|
+
*
|
|
62
|
+
* Throws when it names an id nothing in the chart carries, rather than answering `null`:
|
|
63
|
+
* a description pointing at nothing is exactly the defect that leaves the sub-label on
|
|
64
|
+
* screen and silent.
|
|
65
|
+
*/
|
|
66
|
+
getDescription(): Promise<string | null>;
|
|
67
|
+
/** The label shown beside the drawing, whole even where it is ellipsised, or `null` when there is none. */
|
|
68
|
+
getLabel(): Promise<string | null>;
|
|
69
|
+
/** The sub-label shown under the label, or `null` when there is none. */
|
|
70
|
+
getSubLabel(): Promise<string | null>;
|
|
71
|
+
/**
|
|
72
|
+
* Where the value's bar lies along the scale, or `null` when no bar is drawn — the value
|
|
73
|
+
* is not a finite number. It starts at zero, or at the value for a negative one; a value
|
|
74
|
+
* past a fixed `max` ends at 1, and a value of zero is a bar from zero to zero.
|
|
75
|
+
*/
|
|
76
|
+
getValueExtent(): Promise<WrBulletChartExtent | null>;
|
|
77
|
+
/** Where the target marker sits along the scale, from 0 to 1, or `null` when there is no target. */
|
|
78
|
+
getTargetPosition(): Promise<number | null>;
|
|
79
|
+
/**
|
|
80
|
+
* Every qualitative band drawn, from the scale's start: where each lies along the scale.
|
|
81
|
+
* A band the scale leaves no room for is not drawn, so this can be shorter than `ranges`:
|
|
82
|
+
* one past a fixed `max`, and the first band when its limit is where the scale starts — a
|
|
83
|
+
* negative first limit lower than both the value and the target.
|
|
84
|
+
*/
|
|
85
|
+
getRanges(): Promise<WrBulletChartExtent[]>;
|
|
86
|
+
/** Whether the scale's ticks are drawn under the drawing (`showScale`). */
|
|
87
|
+
hasScale(): Promise<boolean>;
|
|
88
|
+
/** The scale's tick labels from its start, as printed. `[]` with `showScale` off. */
|
|
89
|
+
getScaleLabels(): Promise<string[]>;
|
|
90
|
+
private extentOf;
|
|
91
|
+
/**
|
|
92
|
+
* A share the component wrote on a mark, off its `style` ATTRIBUTE — not `getCssValue()`,
|
|
93
|
+
* which would answer from the cascade, and a computed read of a custom property the
|
|
94
|
+
* stylesheet reads with a fallback answers plausibly at exactly the moment the binding
|
|
95
|
+
* that writes it is what broke.
|
|
96
|
+
*/
|
|
97
|
+
private read;
|
|
98
|
+
}
|
|
99
|
+
export type { WrBulletChartExtent, WrBulletChartHarnessFilters };
|