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,391 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
import { Signal } from "@angular/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 figures behind a chart, as {@link WrChartTable} renders them for assistive
|
|
11
|
+
* technology: a caption, a row of column headings, and the rows in groups.
|
|
12
|
+
*
|
|
13
|
+
* Every string arrives written: a value as the chart prints it, a heading as the
|
|
14
|
+
* chart names it. The table formats nothing and translates nothing.
|
|
15
|
+
*
|
|
16
|
+
* @internal
|
|
17
|
+
*/
|
|
18
|
+
interface WrChartTableData {
|
|
19
|
+
/** What the table is: the chart's accessible name, rendered as the `<caption>`. */
|
|
20
|
+
readonly caption: string;
|
|
21
|
+
/**
|
|
22
|
+
* The heading of the row headers' column: what one row is — a day, a point, an
|
|
23
|
+
* axis. Omitted or empty, that cell is an empty `<td>` rather than a `<th>` with
|
|
24
|
+
* no name. The group headers' column, when there is one, is never headed.
|
|
25
|
+
*/
|
|
26
|
+
readonly corner?: string;
|
|
27
|
+
/** One heading per value column, in the order of every row's `cells`. */
|
|
28
|
+
readonly columns: readonly string[];
|
|
29
|
+
/**
|
|
30
|
+
* The rows, one `<tbody>` per group. A chart with one set of rows — x labels down,
|
|
31
|
+
* series across — passes a single group with no `header`; a scatter passes a group
|
|
32
|
+
* per series, headed by the series' name.
|
|
33
|
+
*/
|
|
34
|
+
readonly groups: readonly WrChartTableGroup[];
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* One `<tbody>` of a {@link WrChartTableData}.
|
|
38
|
+
*
|
|
39
|
+
* @internal
|
|
40
|
+
*/
|
|
41
|
+
interface WrChartTableGroup {
|
|
42
|
+
/**
|
|
43
|
+
* Names the group, as a `<th scope="rowgroup">` in a leading column that spans the
|
|
44
|
+
* group's rows, so it heads every cell of the group. Once any group has a header the
|
|
45
|
+
* table carries that column, and a group without one leaves its cell there empty.
|
|
46
|
+
*/
|
|
47
|
+
readonly header?: string;
|
|
48
|
+
/** The group's rows, in order. A group with none renders nothing. */
|
|
49
|
+
readonly rows: readonly WrChartTableRow[];
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* One row of a {@link WrChartTableGroup}.
|
|
53
|
+
*
|
|
54
|
+
* @internal
|
|
55
|
+
*/
|
|
56
|
+
interface WrChartTableRow {
|
|
57
|
+
/** What the row is, rendered as its `<th scope="row">`. */
|
|
58
|
+
readonly header: string;
|
|
59
|
+
/**
|
|
60
|
+
* One value per column, written the way the chart prints it. A value the series
|
|
61
|
+
* does not have — a gap in a line — is the chart's to write, as an empty string for
|
|
62
|
+
* an empty cell or as its own word.
|
|
63
|
+
*/
|
|
64
|
+
readonly cells: readonly string[];
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* @license
|
|
68
|
+
*
|
|
69
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
70
|
+
* found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
|
|
71
|
+
*/
|
|
72
|
+
/**
|
|
73
|
+
* A marker shape, in the order the charts hand them out. Every shape has the
|
|
74
|
+
* same AREA as the circle at the same size, so no series looks heavier than
|
|
75
|
+
* another for its shape alone.
|
|
76
|
+
*
|
|
77
|
+
* @internal
|
|
78
|
+
*/
|
|
79
|
+
type WrChartMarkerShape = 'circle' | 'square' | 'triangle' | 'diamond' | 'cross' | 'triangle-down';
|
|
80
|
+
/**
|
|
81
|
+
* How far a marker reaches from its centre, in px, before any stroke.
|
|
82
|
+
*
|
|
83
|
+
* @internal
|
|
84
|
+
*/
|
|
85
|
+
interface WrChartMarkerExtent {
|
|
86
|
+
/** From the centre up to the marker's top. */
|
|
87
|
+
readonly top: number;
|
|
88
|
+
/** From the centre down to the marker's bottom. */
|
|
89
|
+
readonly bottom: number;
|
|
90
|
+
/** From the centre to either side: every shape is symmetric about its vertical. */
|
|
91
|
+
readonly side: number;
|
|
92
|
+
/** From the centre to the marker's farthest point: the circle that holds it. */
|
|
93
|
+
readonly radius: number;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* A value axis snapped to a readable step.
|
|
97
|
+
*
|
|
98
|
+
* @internal
|
|
99
|
+
*/
|
|
100
|
+
interface WrChartAxis {
|
|
101
|
+
/** The bottom of the axis, a whole multiple of `step`. */
|
|
102
|
+
readonly min: number;
|
|
103
|
+
/** The top of the axis, a whole multiple of `step`, above the data. */
|
|
104
|
+
readonly max: number;
|
|
105
|
+
/** The gap between two ticks: 1, 2, 2.5 or 5 times a power of ten. */
|
|
106
|
+
readonly step: number;
|
|
107
|
+
/**
|
|
108
|
+
* Every tick from the top down, the order a y axis reads, rounded to two digits past
|
|
109
|
+
* the step's leading one (at least six fraction digits), so a decimal step does not
|
|
110
|
+
* drift and a fine one is written exactly.
|
|
111
|
+
*/
|
|
112
|
+
readonly ticks: readonly number[];
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* How {@link WrChartAxis} is fitted to the data.
|
|
116
|
+
*
|
|
117
|
+
* @internal
|
|
118
|
+
*/
|
|
119
|
+
interface WrChartAxisOptions {
|
|
120
|
+
/**
|
|
121
|
+
* Stretch the range to zero, on whichever side of it the data lies: the
|
|
122
|
+
* baseline an area fills to, or a radar's centre. @default false
|
|
123
|
+
*/
|
|
124
|
+
readonly includeZero?: boolean;
|
|
125
|
+
/**
|
|
126
|
+
* Keep data off BOTH frames. By default only the top is lifted a step when the
|
|
127
|
+
* peak lands on it, which is what a chart with a baseline wants; a scale with no
|
|
128
|
+
* baseline (a scatter's x and y) lifts the bottom too. A flat range is centred:
|
|
129
|
+
* its value becomes the middle of three ticks, a round step on either side.
|
|
130
|
+
* @default false
|
|
131
|
+
*/
|
|
132
|
+
readonly symmetric?: boolean;
|
|
133
|
+
/** How many gaps the axis aims for. @default 4 */
|
|
134
|
+
readonly tickCount?: number;
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* The number writers one chart shares between its axis, its labels and its
|
|
138
|
+
* tooltip, all in `LOCALE_ID` unless the chart's `valueFormat` is given.
|
|
139
|
+
*
|
|
140
|
+
* Every method reads the format signal when it is called, so a `computed` that
|
|
141
|
+
* calls one follows `valueFormat`.
|
|
142
|
+
*
|
|
143
|
+
* @internal
|
|
144
|
+
*/
|
|
145
|
+
interface WrChartNumbers<A extends readonly unknown[] = []> {
|
|
146
|
+
/**
|
|
147
|
+
* A value written in full, never compact: the tooltip, a legend value, an
|
|
148
|
+
* accessible name. Up to three fraction digits, and below one three significant
|
|
149
|
+
* digits rather than three fraction digits, which would write 0.0004 as `0`. Not
|
|
150
|
+
* the exact figure — 1.08345 is `1.083` — so a chart that has to write one to a
|
|
151
|
+
* known precision asks {@link exact}.
|
|
152
|
+
*/
|
|
153
|
+
value(value: number, ...args: A): string;
|
|
154
|
+
/**
|
|
155
|
+
* A value printed in a tight space, such as above a bar: compact from a
|
|
156
|
+
* thousand up (`1.2K`), and below a thousand exactly as {@link value} writes it,
|
|
157
|
+
* since compact rounding would print 12.5 as `13`.
|
|
158
|
+
*/
|
|
159
|
+
label(value: number, ...args: A): string;
|
|
160
|
+
/**
|
|
161
|
+
* An axis' tick labels, decided for the AXIS rather than one tick at a time:
|
|
162
|
+
* each tick compact to exactly the significant digits `step` needs, unless that
|
|
163
|
+
* makes the longest label longer than writing every tick in full.
|
|
164
|
+
*/
|
|
165
|
+
ticks(values: readonly number[], step: number, ...args: A): string[];
|
|
166
|
+
/**
|
|
167
|
+
* A value written in full to at most `fractionDigits` fraction digits (0 to 20),
|
|
168
|
+
* trailing zeros dropped: a figure whose precision the chart knows — its axis step,
|
|
169
|
+
* a price's tick size — where {@link value} would round it to three. Through
|
|
170
|
+
* `valueFormat` when one is set, which is given `args` as every method gives them.
|
|
171
|
+
*/
|
|
172
|
+
exact(value: number, fractionDigits: number, ...args: A): string;
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* A value axis for data running from `min` to `max`, SNAPPED to a readable step —
|
|
176
|
+
* and the snapping is the point.
|
|
177
|
+
*
|
|
178
|
+
* The line chart's axis used to be "the data's max plus 10%, divided into four",
|
|
179
|
+
* which lands on a round number almost never: seven integers between 3 and 35 gave
|
|
180
|
+
* an axis reading 38.2 / 28.7 / 19.1 / 9.6 / 0. A chart's axis is the one part of it
|
|
181
|
+
* a reader is supposed to do arithmetic against.
|
|
182
|
+
*
|
|
183
|
+
* So the step is rounded UP to the nearest 1, 2, 2.5 or 5 times a power of ten —
|
|
184
|
+
* the conventional nice-number ladder — and the bounds are then snapped outward to
|
|
185
|
+
* whole multiples of it. The same 3..35 reads 0 / 10 / 20 / 30 / 40. Snapping
|
|
186
|
+
* outward replaces the old 10% padding, and where the peak still lands exactly on
|
|
187
|
+
* the top it is lifted a step, since a line that ends on the frame reads as clipped.
|
|
188
|
+
* `symmetric` does the same at the bottom.
|
|
189
|
+
*
|
|
190
|
+
* A flat range has no span to divide, so it is given its own magnitude as one (or 1,
|
|
191
|
+
* at zero). With `symmetric` it is centred instead: the value is the middle of three
|
|
192
|
+
* ticks, a round step on either side, whatever `tickCount` asks for. Non-finite
|
|
193
|
+
* bounds, the `Math.min()` / `Math.max()` of no data, give the empty frame from 0 to
|
|
194
|
+
* 1. Bounds handed in the wrong order are swapped.
|
|
195
|
+
*
|
|
196
|
+
* The line chart's own rule, which floors its axis at zero and never lifts it to
|
|
197
|
+
* zero from below, is `chartAxis(Math.min(0, min), max)`: an all-negative series
|
|
198
|
+
* keeps an axis that ends just above its peak. `includeZero` is the other reading,
|
|
199
|
+
* zero inside the range on either side, which an area needs for its baseline.
|
|
200
|
+
*
|
|
201
|
+
* @internal
|
|
202
|
+
*/
|
|
203
|
+
export declare function chartAxis(min: number, max: number, options?: WrChartAxisOptions): WrChartAxis;
|
|
204
|
+
/**
|
|
205
|
+
* The figures a chart draws, as a table that only assistive technology reaches.
|
|
206
|
+
*
|
|
207
|
+
* A chart's drawing is one named `role="img"`, and `img` makes everything inside it
|
|
208
|
+
* presentational: the name is announced and the numbers are nowhere a screen reader
|
|
209
|
+
* can walk. This renders them as a real `<table>` — a caption, column headers, row
|
|
210
|
+
* headers, and a `<tbody>` per group headed by a `<th scope="rowgroup">` down its rows
|
|
211
|
+
* — so a reader can move cell by cell and hear each value with its row and column.
|
|
212
|
+
*
|
|
213
|
+
* **Beside the image, never inside it.** Inside, `img` would hide it with the rest of
|
|
214
|
+
* the drawing. A chart renders `<wr-chart-table>` as a sibling of the element that
|
|
215
|
+
* carries `role="img"`, and only while its `dataTable` input asks for it. **The chart's
|
|
216
|
+
* host has to be positioned** (`position: relative`): the table is out of flow, and
|
|
217
|
+
* against a static host it resolves to an ancestor outside the chart and keeps its place
|
|
218
|
+
* in an unpositioned scroller's content, which grew one page by 1600px of blank scroll.
|
|
219
|
+
*
|
|
220
|
+
* **Hidden by clipping, not by `display` or `hidden`**, which would take it out of the
|
|
221
|
+
* accessibility tree as well: the host is clipped to nothing and taken out of flow, so
|
|
222
|
+
* it costs the chart no layout and still reads in full. The table inside keeps its own
|
|
223
|
+
* layout, because a `<table>` will not shrink to a clip box of its own — it grows to
|
|
224
|
+
* fit its cells whatever its width says. Nothing in it is focusable, so no tab stop
|
|
225
|
+
* lands on something that cannot be seen.
|
|
226
|
+
*
|
|
227
|
+
* No ids: the headers are tied to their cells by `scope`, which needs none, and an id
|
|
228
|
+
* minted on the server would not match the client's.
|
|
229
|
+
*
|
|
230
|
+
* @example
|
|
231
|
+
* ```html
|
|
232
|
+
* <div class="wr-line-chart__plot" role="img" [attr.aria-label]="label()">…</div>
|
|
233
|
+
* @if (dataTable()) {
|
|
234
|
+
* <wr-chart-table [data]="table()" />
|
|
235
|
+
* }
|
|
236
|
+
* ```
|
|
237
|
+
*
|
|
238
|
+
* @internal
|
|
239
|
+
*/
|
|
240
|
+
export declare class WrChartTable {
|
|
241
|
+
/** The caption, the column headings and the rows, every string already written. */
|
|
242
|
+
readonly data: import("@angular/core").InputSignal<WrChartTableData>;
|
|
243
|
+
/** Whether any group is headed, which gives every row a leading group column. */
|
|
244
|
+
protected readonly hasGroupHeaders: import("@angular/core").Signal<boolean>;
|
|
245
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<WrChartTable, never>;
|
|
246
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<WrChartTable, "wr-chart-table", never, {
|
|
247
|
+
"data": {
|
|
248
|
+
"alias": "data";
|
|
249
|
+
"required": true;
|
|
250
|
+
"isSignal": true;
|
|
251
|
+
};
|
|
252
|
+
}, {}, never, never, true, never>;
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* A marker shape per series, so points are told apart by SHAPE and not only by
|
|
256
|
+
* hue — the dash list's job, for a chart that draws points rather than lines.
|
|
257
|
+
*
|
|
258
|
+
* The circle comes first for the reason the solid dash does: a single-series chart
|
|
259
|
+
* has nothing to tell apart. The order then alternates corners and points, so two
|
|
260
|
+
* neighbouring series never differ by a rotation alone (a square beside a diamond
|
|
261
|
+
* is the pair a small marker blurs into one).
|
|
262
|
+
*
|
|
263
|
+
* @internal
|
|
264
|
+
*/
|
|
265
|
+
export declare const CHART_MARKERS: readonly WrChartMarkerShape[];
|
|
266
|
+
/**
|
|
267
|
+
* The marker shape for the series at `index`, wrapping past the end.
|
|
268
|
+
*
|
|
269
|
+
* @internal
|
|
270
|
+
*/
|
|
271
|
+
export declare function chartMarker(index: number): WrChartMarkerShape;
|
|
272
|
+
/**
|
|
273
|
+
* The SVG path `d` of a marker centred on the origin, as large as a circle of
|
|
274
|
+
* radius `r` — every shape has that circle's area, so a triangle reaches past it
|
|
275
|
+
* and a square stays inside it, and the eye weighs them the same.
|
|
276
|
+
*
|
|
277
|
+
* Drawn about the origin so a chart can place it with a `transform`, or inside a
|
|
278
|
+
* nested `<svg x y overflow="visible">`, and size it in pixels whatever the plot's
|
|
279
|
+
* own scale. A non-finite or negative `r` draws nothing rather than a path of
|
|
280
|
+
* `NaN`.
|
|
281
|
+
*
|
|
282
|
+
* @internal
|
|
283
|
+
*/
|
|
284
|
+
export declare function chartMarkerPath(shape: WrChartMarkerShape, r: number): string;
|
|
285
|
+
/**
|
|
286
|
+
* How far the marker {@link chartMarkerPath} draws at `r` reaches from its centre,
|
|
287
|
+
* in px, before any stroke: up, down, to either side, and to its farthest corner.
|
|
288
|
+
*
|
|
289
|
+
* Every shape has the circle's AREA, so `r` is not how far a marker reaches: a
|
|
290
|
+
* triangle's point stands 1.56 r above its centroid, a diamond's tips 1.25 r out
|
|
291
|
+
* and a cross's corners 1.24 r, while a square's sides sit 0.89 r in. A box, a hit
|
|
292
|
+
* area or a margin sized by `r` alone cuts the tips off. A non-finite or negative
|
|
293
|
+
* `r` reaches nowhere, as it draws nothing.
|
|
294
|
+
*
|
|
295
|
+
* @internal
|
|
296
|
+
*/
|
|
297
|
+
export declare function chartMarkerExtent(shape: WrChartMarkerShape, r: number): WrChartMarkerExtent;
|
|
298
|
+
/**
|
|
299
|
+
* The number writers of one chart: its axis ticks, the labels it prints in tight
|
|
300
|
+
* spaces, and the figures of its tooltip and its accessible names — every one
|
|
301
|
+
* through the chart's `valueFormat` when it has one, else through `Intl` in
|
|
302
|
+
* `locale`.
|
|
303
|
+
*
|
|
304
|
+
* Seven charts kept their own copy of the `Intl` half until 15.1, each with the
|
|
305
|
+
* same two formatters and the same `formatValue`, and the line chart a second,
|
|
306
|
+
* axis-wide copy for its ticks. The rules are theirs, unchanged:
|
|
307
|
+
*
|
|
308
|
+
* - `value` is never compact, and is `Intl`'s default otherwise: up to three
|
|
309
|
+
* fraction digits, and below one three SIGNIFICANT digits, since three fraction
|
|
310
|
+
* digits write a reading of 0.0004 as `0`. It is not the exact figure: 1.08345
|
|
311
|
+
* is `1.083`, and an axis stepping by 0.00025 is finer than it. A chart that has
|
|
312
|
+
* to write a figure to a known precision asks `exact`.
|
|
313
|
+
* - `label` is compact from a thousand up, where a bar is too narrow for
|
|
314
|
+
* `1,234,567`, and below a thousand it is `value`: compact rounding would print
|
|
315
|
+
* 12.5 as `13`, and there is nothing to abbreviate.
|
|
316
|
+
* - `ticks` is decided for the AXIS. Compact, through `Intl` (`1.2K`, `3.4M`,
|
|
317
|
+
* `4 Mio.`, `5 тыс.`), with each tick to exactly the significant digits the step
|
|
318
|
+
* needs — a fixed count printed 1250 beside 1000 as `1.3k` and `1k` on an axis
|
|
319
|
+
* stepping by 250. And when abbreviating would make the labels LONGER (a fine
|
|
320
|
+
* step on large numbers, where `-1.025K` is wider than `-1,025`) the whole axis
|
|
321
|
+
* is written in full instead, so no axis mixes `-1K` with `-1,025`. Written in
|
|
322
|
+
* full, a tick has as many fraction digits as the step's last digit needs, however
|
|
323
|
+
* fine: they stopped at six, so an axis stepping by 2.5e-7 printed `0.000013` twice.
|
|
324
|
+
* - `exact` writes a figure to a precision the chart decides — the step of its axis,
|
|
325
|
+
* a price's tick size — never compact, through `valueFormat` when there is one.
|
|
326
|
+
*
|
|
327
|
+
* `valueFormat` takes whatever extra arguments the chart passes it, so a chart can
|
|
328
|
+
* tell its formatter which axis a number is for while a `(value) => string`
|
|
329
|
+
* written for another chart still fits. Call in an injection context: `locale`
|
|
330
|
+
* defaults to `LOCALE_ID`.
|
|
331
|
+
*
|
|
332
|
+
* @internal
|
|
333
|
+
*/
|
|
334
|
+
export declare function useChartNumbers<A extends readonly unknown[] = []>(valueFormat: Signal<((value: number, ...args: A) => string) | null | undefined>, locale?: string): WrChartNumbers<A>;
|
|
335
|
+
/**
|
|
336
|
+
* @license
|
|
337
|
+
*
|
|
338
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
339
|
+
* found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
|
|
340
|
+
*/
|
|
341
|
+
/**
|
|
342
|
+
* Default series colours, in order: what a series, a slice or a segment with no
|
|
343
|
+
* `color` of its own takes.
|
|
344
|
+
*
|
|
345
|
+
* Four intents and the neutral role, and `info` is deliberately absent: it is the
|
|
346
|
+
* same blue as `primary` to every reader (1.061:1 apart in light, 1.004:1 in
|
|
347
|
+
* dark, and the same hue), so two adjacent series would be one series with a
|
|
348
|
+
* seam. The neutral closes the list because it is the one tone here that no
|
|
349
|
+
* intent is near — it used to be the `medium` intent, which v15 removed, and the
|
|
350
|
+
* role resolves to the same step of the gray ramp.
|
|
351
|
+
*
|
|
352
|
+
* The four that sit within 1.061:1 of each other are told apart by hue alone,
|
|
353
|
+
* which is why a chart that draws lines pairs each with a dash
|
|
354
|
+
* (`CHART_DASHES`) and one that draws points with a shape (`CHART_MARKERS`).
|
|
355
|
+
*
|
|
356
|
+
* The line chart, the donut chart and the meter group each kept an identical
|
|
357
|
+
* copy of this list until 15.1.
|
|
358
|
+
*
|
|
359
|
+
* @internal
|
|
360
|
+
*/
|
|
361
|
+
export declare const CHART_PALETTE: readonly string[];
|
|
362
|
+
/**
|
|
363
|
+
* The palette colour for the series at `index`, wrapping past the end.
|
|
364
|
+
*
|
|
365
|
+
* @internal
|
|
366
|
+
*/
|
|
367
|
+
export declare function chartColor(index: number): string;
|
|
368
|
+
/**
|
|
369
|
+
* A dash pattern per series, so lines are told apart by SHAPE and not only by hue.
|
|
370
|
+
*
|
|
371
|
+
* The default palette's colours sit within about 1.06:1 of each other in relative
|
|
372
|
+
* luminance, which means a reader with red-green colour blindness sees several of
|
|
373
|
+
* these strokes as one grey. A legend that pairs a coloured square with a name
|
|
374
|
+
* does not rescue it: matching the square to the line is exactly the step that
|
|
375
|
+
* needs hue. Distinguishing series by dash is the standard remedy and the only one
|
|
376
|
+
* that survives greyscale, printing and a monochrome display.
|
|
377
|
+
*
|
|
378
|
+
* The FIRST entry is solid on purpose. A single-series chart is the common case
|
|
379
|
+
* and there is nothing to tell apart in it; the patterns only appear once a second
|
|
380
|
+
* series does. Each value is an SVG `stroke-dasharray`, `''` meaning none.
|
|
381
|
+
*
|
|
382
|
+
* @internal
|
|
383
|
+
*/
|
|
384
|
+
export declare const CHART_DASHES: readonly string[];
|
|
385
|
+
/**
|
|
386
|
+
* The dash pattern for the series at `index`, wrapping past the end.
|
|
387
|
+
*
|
|
388
|
+
* @internal
|
|
389
|
+
*/
|
|
390
|
+
export declare function chartDash(index: number): string;
|
|
391
|
+
export type { WrChartAxis, WrChartAxisOptions, WrChartMarkerExtent, WrChartMarkerShape, WrChartNumbers, WrChartTableData, WrChartTableGroup, WrChartTableRow };
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { BaseHarnessFilters, ComponentHarness, HarnessPredicate } from "@angular/cdk/testing";
|
|
2
|
+
import { WrChartLegendHarness } from "ngwr/charts/chart-legend/testing";
|
|
2
3
|
/** Narrows which `<wr-donut-chart>` a harness query matches. */
|
|
3
4
|
interface WrDonutChartHarnessFilters extends BaseHarnessFilters {
|
|
4
5
|
/** Match the chart's accessible name. */
|
|
@@ -27,7 +28,9 @@ interface WrDonutChartLegendEntry {
|
|
|
27
28
|
*
|
|
28
29
|
* {@link getSliceCount} is therefore the one thing the ring answers: how many
|
|
29
30
|
* wedges were drawn. Compare it with the legend's length to catch a slice that was
|
|
30
|
-
* filtered out of one and not the other
|
|
31
|
+
* filtered out of one and not the other — apart from a slice hidden through
|
|
32
|
+
* `hiddenSegments`, which keeps its legend row and draws no wedge by design;
|
|
33
|
+
* {@link getLegendHarness} says which rows those are.
|
|
31
34
|
*
|
|
32
35
|
* @example
|
|
33
36
|
* ```ts
|
|
@@ -49,15 +52,35 @@ export declare class WrDonutChartHarness extends ComponentHarness {
|
|
|
49
52
|
static with(options?: WrDonutChartHarnessFilters): HarnessPredicate<WrDonutChartHarness>;
|
|
50
53
|
/** The name the ring announces — the whole chart's, since the slices announce nothing. */
|
|
51
54
|
getAccessibleName(): Promise<string | null>;
|
|
52
|
-
/**
|
|
55
|
+
/**
|
|
56
|
+
* How many wedges were drawn. A hidden slice draws none. The invisible hover target a
|
|
57
|
+
* sliver gets over the ring (`.wr-donut-chart__hit`) is not a wedge and is not counted.
|
|
58
|
+
*/
|
|
53
59
|
getSliceCount(): Promise<number>;
|
|
60
|
+
/**
|
|
61
|
+
* Whether the chart is a pie (`pie`), read off its `wr-donut-chart--pie` modifier.
|
|
62
|
+
* Not whether the slices reach the centre — a `thickness` of 0 does that too, and keeps
|
|
63
|
+
* the centre text — since a path's `d` is not read, for the reason given in the class
|
|
64
|
+
* note. A pie renders no centre text: {@link getCenterValue} and {@link getCenterLabel}
|
|
65
|
+
* answer `null` for it whatever was bound.
|
|
66
|
+
*/
|
|
67
|
+
isPie(): Promise<boolean>;
|
|
54
68
|
/** Whether the legend is rendered (`showLegend`, and at least one slice). */
|
|
55
69
|
hasLegend(): Promise<boolean>;
|
|
56
|
-
/**
|
|
70
|
+
/**
|
|
71
|
+
* The legend as a {@link WrChartLegendHarness}: each row's key and its hidden state
|
|
72
|
+
* and, with `toggleableLegend`, the toggles that show and hide a slice. Not the same
|
|
73
|
+
* thing as {@link getLegend}, which reads the rows' text and stays as it was.
|
|
74
|
+
*
|
|
75
|
+
* Throws when the chart draws no legend (`showLegend` off, or no segments) rather
|
|
76
|
+
* than answering with an empty one: {@link hasLegend} is the question for that.
|
|
77
|
+
*/
|
|
78
|
+
getLegendHarness(): Promise<WrChartLegendHarness>;
|
|
79
|
+
/** The legend rows in order — the only textual form the data has. Hidden slices included. */
|
|
57
80
|
getLegend(): Promise<WrDonutChartLegendEntry[]>;
|
|
58
|
-
/** The big number in the middle, or `null` when the chart has none. */
|
|
81
|
+
/** The big number in the middle, or `null` when the chart has none — a pie never has. */
|
|
59
82
|
getCenterValue(): Promise<string | null>;
|
|
60
|
-
/** The caption under the centre value, or `null
|
|
83
|
+
/** The caption under the centre value, or `null` — a pie never has one. */
|
|
61
84
|
getCenterLabel(): Promise<string | null>;
|
|
62
85
|
/**
|
|
63
86
|
* The chart's outer size in pixels, read off the `style` ATTRIBUTE.
|
|
@@ -1,12 +1,20 @@
|
|
|
1
1
|
import * as i0 from "@angular/core";
|
|
2
|
+
import { WrChartLegendItem } from "ngwr/charts/chart-legend";
|
|
3
|
+
/** One slice of a `<wr-donut-chart>`: a name, a value, and optionally its own colour. */
|
|
2
4
|
interface WrDonutSegment {
|
|
5
|
+
/** The slice's name, in the legend and the tooltip. */
|
|
3
6
|
readonly label: string;
|
|
7
|
+
/**
|
|
8
|
+
* The slice's size, as its share of the segments shown. A negative value, or one that is
|
|
9
|
+
* not a finite number, draws no slice and takes no share; the legend keeps its row with
|
|
10
|
+
* the segment's own figure — none for a value that is not a number.
|
|
11
|
+
*/
|
|
4
12
|
readonly value: number;
|
|
13
|
+
/** Any CSS colour, `var(--wr-…)` included. Left out, the slice takes the next palette colour. */
|
|
5
14
|
readonly color?: string;
|
|
6
15
|
}
|
|
7
16
|
/**
|
|
8
|
-
* Donut chart
|
|
9
|
-
* text via inputs.
|
|
17
|
+
* Donut chart, and with `pie` a pie chart. Optional center text via inputs.
|
|
10
18
|
*
|
|
11
19
|
* @example
|
|
12
20
|
* ```html
|
|
@@ -14,8 +22,13 @@ interface WrDonutSegment {
|
|
|
14
22
|
* { label: 'Used', value: 60 },
|
|
15
23
|
* { label: 'Free', value: 40 }
|
|
16
24
|
* ]" centerLabel="Disk" centerValue="60%" />
|
|
25
|
+
*
|
|
26
|
+
* <wr-donut-chart [segments]="segments" pie />
|
|
17
27
|
* ```
|
|
18
28
|
*
|
|
29
|
+
* The legend is a `ul[wr-chart-legend]` (`ngwr/charts/chart-legend`), and with
|
|
30
|
+
* `toggleableLegend` its rows show and hide their slices through `hiddenSegments`.
|
|
31
|
+
*
|
|
19
32
|
* @see https://ngwr.dev/charts/donut-chart
|
|
20
33
|
*/
|
|
21
34
|
export declare class WrDonutChart {
|
|
@@ -27,24 +40,70 @@ export declare class WrDonutChart {
|
|
|
27
40
|
/**
|
|
28
41
|
* Accessible name of the drawing. The arcs carry no text and the legend is optional, so
|
|
29
42
|
* with `showLegend: false` this and the centre text are the whole of what a screen reader
|
|
30
|
-
* gets. Falls back to `donutChart.label`.
|
|
43
|
+
* gets. Falls back to `donutChart.label`, or to `donutChart.pieLabel` with `pie`.
|
|
31
44
|
*/
|
|
32
45
|
readonly ariaLabel: import("@angular/core").InputSignal<string | null>;
|
|
46
|
+
private readonly donutLabel;
|
|
47
|
+
private readonly pieLabel;
|
|
33
48
|
protected readonly resolvedAriaLabel: import("@angular/core").Signal<string>;
|
|
34
49
|
/** Diameter in CSS pixels. @default 200 */
|
|
35
50
|
readonly size: import("@angular/core").InputSignalWithTransform<number, unknown>;
|
|
36
|
-
/**
|
|
51
|
+
/**
|
|
52
|
+
* Inner-ring thickness as a percent of radius (0–100). `0` fills to the centre, and
|
|
53
|
+
* keeps the centre text; `pie` ignores it. @default 30
|
|
54
|
+
*/
|
|
37
55
|
readonly thickness: import("@angular/core").InputSignalWithTransform<number, unknown>;
|
|
56
|
+
/**
|
|
57
|
+
* Draw a pie chart: every slice fills to the centre, whatever `thickness` says, and
|
|
58
|
+
* the host takes the `wr-donut-chart--pie` modifier. A pie has no hole to print in, so
|
|
59
|
+
* `centerValue` and `centerLabel` are not rendered. Everything else is the donut's: the
|
|
60
|
+
* slices run clockwise from twelve o'clock, with the same gap between them, the legend
|
|
61
|
+
* and its toggle, and the tooltip — which in a pie also opens from a wider, invisible
|
|
62
|
+
* target over a slice too thin to point at (see `tooltip`). The drawing's name falls
|
|
63
|
+
* back to `donutChart.pieLabel`. @default false
|
|
64
|
+
*/
|
|
65
|
+
readonly pie: import("@angular/core").InputSignalWithTransform<boolean, any>;
|
|
38
66
|
/** Show the legend under the chart. @default true */
|
|
39
67
|
readonly showLegend: import("@angular/core").InputSignalWithTransform<boolean, any>;
|
|
40
|
-
/**
|
|
68
|
+
/**
|
|
69
|
+
* Make each legend row a toggle button that shows and hides its slice, through
|
|
70
|
+
* `hiddenSegments`. A row is a `<button aria-pressed>`, pressed while its slice is
|
|
71
|
+
* shown, so the legend becomes one tab stop per slice. @default false
|
|
72
|
+
*/
|
|
73
|
+
readonly toggleableLegend: import("@angular/core").InputSignalWithTransform<boolean, any>;
|
|
74
|
+
/**
|
|
75
|
+
* The positions in `segments` of the slices that are hidden. Positions rather than
|
|
76
|
+
* labels, since two slices may share a label. A toggleable legend writes it, and a
|
|
77
|
+
* host may bind it with or without one: `[(hiddenSegments)]`.
|
|
78
|
+
*
|
|
79
|
+
* A hidden slice is left out of the ring, and the slices still shown RE-NORMALISE:
|
|
80
|
+
* they share the whole ring between them, each at its share of their own total. A
|
|
81
|
+
* donut reads as the parts of the whole it draws, so leaving the hidden slice's arc
|
|
82
|
+
* as a gap would show a whole that no longer adds up, and turning a slice off is how
|
|
83
|
+
* a reader asks "of the rest, how much is each?". The tooltip cannot open on a slice
|
|
84
|
+
* that is not drawn. The legend keeps the hidden slice's row, struck through and with
|
|
85
|
+
* its own value, so it can be shown again; the row says "hidden" to a screen reader as
|
|
86
|
+
* well, through `aria-pressed` on a toggle and a visually hidden word otherwise. The
|
|
87
|
+
* centre text is printed as given, so a host that writes a total there works it out
|
|
88
|
+
* from this list. A position past the end of `segments` is kept and ignored.
|
|
89
|
+
*/
|
|
90
|
+
readonly hiddenSegments: import("@angular/core").ModelSignal<readonly number[]>;
|
|
91
|
+
/** Bold value text in the center. Not rendered with `pie`, which has no hole to hold it. */
|
|
41
92
|
readonly centerValue: import("@angular/core").InputSignal<string>;
|
|
42
|
-
/** Smaller label under the value. */
|
|
93
|
+
/** Smaller label under the value. Not rendered with `pie`, which has no hole to hold it. */
|
|
43
94
|
readonly centerLabel: import("@angular/core").InputSignal<string>;
|
|
95
|
+
/** Whether the centre text renders: some is given, and there is a hole to print it in. */
|
|
96
|
+
protected readonly showCenter: import("@angular/core").Signal<boolean>;
|
|
44
97
|
/**
|
|
45
98
|
* Show a tooltip with the slice's label and value on hover. Pointer only — the
|
|
46
99
|
* legend prints the same numbers, and with `showLegend` off `ariaLabel` is where
|
|
47
|
-
* to say them.
|
|
100
|
+
* to say them. With `pie`, a slice too thin to land a pointer on, a sliver of a few
|
|
101
|
+
* degrees, is hovered over a wider strip than it draws, through an invisible
|
|
102
|
+
* `.wr-donut-chart__hit` over the pie: widened toward 12px of outer arc (15° on a chart
|
|
103
|
+
* under about 92px) out of what the wider slices beside it can spare, each of which keeps
|
|
104
|
+
* that much of its own. A sliver whose neighbours are slivers too, or have little to
|
|
105
|
+
* spare, gets a narrower target or none, and is read in the legend. The ring draws no
|
|
106
|
+
* such target. @default true
|
|
48
107
|
*/
|
|
49
108
|
readonly tooltip: import("@angular/core").InputSignalWithTransform<boolean, any>;
|
|
50
109
|
/**
|
|
@@ -52,14 +111,13 @@ export declare class WrDonutChart {
|
|
|
52
111
|
* in `LOCALE_ID`. The centre text is printed as given.
|
|
53
112
|
*/
|
|
54
113
|
readonly valueFormat: import("@angular/core").InputSignal<((value: number) => string) | null>;
|
|
55
|
-
|
|
114
|
+
/** Each value as the legend and the tooltip print it: exact, in `LOCALE_ID` unless `valueFormat` is given. */
|
|
56
115
|
private readonly numbers;
|
|
57
|
-
|
|
58
|
-
private readonly smallNumbers;
|
|
59
|
-
private formatValue;
|
|
116
|
+
private readonly hidden;
|
|
60
117
|
private readonly svg;
|
|
61
118
|
private readonly outerR;
|
|
62
119
|
protected readonly innerR: import("@angular/core").Signal<number>;
|
|
120
|
+
/** The sum the ring is divided by: the slices still shown (see `hiddenSegments`). */
|
|
63
121
|
protected readonly total: import("@angular/core").Signal<number>;
|
|
64
122
|
/**
|
|
65
123
|
* Resolved slices ready for the template — each carries its arc path.
|
|
@@ -74,10 +132,47 @@ export declare class WrDonutChart {
|
|
|
74
132
|
value: number;
|
|
75
133
|
text: string;
|
|
76
134
|
color: string;
|
|
135
|
+
hidden: boolean;
|
|
77
136
|
path: string;
|
|
78
137
|
percent: number;
|
|
138
|
+
startAngle: number;
|
|
139
|
+
endAngle: number;
|
|
79
140
|
midAngle: number;
|
|
80
141
|
}[]>;
|
|
142
|
+
/**
|
|
143
|
+
* In a pie, a wider hover target for every slice too thin to land a pointer on: an
|
|
144
|
+
* invisible wedge over the slice, drawn above the pie, widened toward `HIT_PX` of outer
|
|
145
|
+
* arc (`MAX_HIT_ANGLE` at most, which binds below about 92px) out of the wider slices
|
|
146
|
+
* beside it.
|
|
147
|
+
*
|
|
148
|
+
* A wider slice gives away only what it can spare: it keeps `HIT_PX` of outer arc of its
|
|
149
|
+
* own (the same `MAX_HIT_ANGLE` cap), however many slivers reach into it, so a slice
|
|
150
|
+
* that was easy to point at stays easy, and its middle, where its own chip points, is
|
|
151
|
+
* never covered. Two slivers reaching into one slice from either side split what it
|
|
152
|
+
* spares. A sliver asks half its shortfall of each wider neighbour, or all of it of the
|
|
153
|
+
* only one; what one side cannot give, the other gives if it can. Between two slivers
|
|
154
|
+
* side by side the boundary stays their shared edge, so of a run of slivers only the two
|
|
155
|
+
* at its ends grow, and the legend is where the rest are read — as it is for a sliver
|
|
156
|
+
* whose neighbours have little to spare, which gets the narrower target they leave it.
|
|
157
|
+
* A slice that draws nothing — a zero, or a hidden slice — has nothing to point at and
|
|
158
|
+
* gets no target, and nor does one with no wider neighbour.
|
|
159
|
+
*
|
|
160
|
+
* Pie only, and only while the tooltip is on, which is all it is for: the ring draws
|
|
161
|
+
* exactly what it drew before `pie` existed. The wedge is filled with nothing and
|
|
162
|
+
* hit-tested through `pointer-events="fill"`, which reads its interior whatever its
|
|
163
|
+
* paint and never its unpainted stroke, so its edges are the ones computed here; it
|
|
164
|
+
* paints in no theme and in no forced-colors palette.
|
|
165
|
+
*/
|
|
166
|
+
protected readonly hits: import("@angular/core").Signal<{
|
|
167
|
+
index: number;
|
|
168
|
+
path: string;
|
|
169
|
+
}[]>;
|
|
170
|
+
/**
|
|
171
|
+
* The legend's rows: every slice, hidden ones included, each with its own figure — a
|
|
172
|
+
* negative one included, which draws no slice — and no value at all for a segment whose
|
|
173
|
+
* value is not a number.
|
|
174
|
+
*/
|
|
175
|
+
protected readonly legendItems: import("@angular/core").Signal<readonly WrChartLegendItem[]>;
|
|
81
176
|
/**
|
|
82
177
|
* One tooltip for the whole chart, pointing at the hovered slice: at the middle of
|
|
83
178
|
* its OUTER arc, on the side that part of the ring faces — above for a slice whose
|
|
@@ -116,11 +211,26 @@ export declare class WrDonutChart {
|
|
|
116
211
|
"required": false;
|
|
117
212
|
"isSignal": true;
|
|
118
213
|
};
|
|
214
|
+
"pie": {
|
|
215
|
+
"alias": "pie";
|
|
216
|
+
"required": false;
|
|
217
|
+
"isSignal": true;
|
|
218
|
+
};
|
|
119
219
|
"showLegend": {
|
|
120
220
|
"alias": "showLegend";
|
|
121
221
|
"required": false;
|
|
122
222
|
"isSignal": true;
|
|
123
223
|
};
|
|
224
|
+
"toggleableLegend": {
|
|
225
|
+
"alias": "toggleableLegend";
|
|
226
|
+
"required": false;
|
|
227
|
+
"isSignal": true;
|
|
228
|
+
};
|
|
229
|
+
"hiddenSegments": {
|
|
230
|
+
"alias": "hiddenSegments";
|
|
231
|
+
"required": false;
|
|
232
|
+
"isSignal": true;
|
|
233
|
+
};
|
|
124
234
|
"centerValue": {
|
|
125
235
|
"alias": "centerValue";
|
|
126
236
|
"required": false;
|
|
@@ -141,6 +251,8 @@ export declare class WrDonutChart {
|
|
|
141
251
|
"required": false;
|
|
142
252
|
"isSignal": true;
|
|
143
253
|
};
|
|
144
|
-
}, {
|
|
254
|
+
}, {
|
|
255
|
+
"hiddenSegments": "hiddenSegmentsChange";
|
|
256
|
+
}, never, never, true, never>;
|
|
145
257
|
}
|
|
146
258
|
export type { WrDonutSegment };
|