ngwr 10.2.1 → 11.0.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/README.md +39 -19
- package/anchor/styles/_index.scss +4 -4
- package/back-top/styles/_index.scss +6 -1
- package/blur-text/styles/_index.scss +13 -0
- package/button/styles/_index.scss +11 -6
- package/carousel/styles/_index.scss +13 -2
- package/cascader/styles/_index.scss +2 -2
- package/circular-text/styles/_index.scss +2 -0
- package/collapse/styles/_index.scss +1 -1
- package/color-picker/styles/_index.scss +6 -1
- package/compare/styles/_index.scss +1 -2
- package/context-menu/styles/_index.scss +6 -1
- package/descriptions/styles/_index.scss +2 -2
- package/dialog/styles/_index.scss +7 -0
- package/drawer/styles/_index.scss +20 -1
- package/dropdown/styles/_index.scss +19 -5
- package/empty/styles/_index.scss +10 -0
- package/fesm2022/ngwr-action-sheet.mjs +13 -3
- package/fesm2022/ngwr-action-sheet.mjs.map +1 -1
- package/fesm2022/ngwr-affix.mjs +40 -13
- package/fesm2022/ngwr-affix.mjs.map +1 -1
- package/fesm2022/ngwr-anchor.mjs +18 -6
- package/fesm2022/ngwr-anchor.mjs.map +1 -1
- package/fesm2022/ngwr-aurora.mjs +2 -2
- package/fesm2022/ngwr-aurora.mjs.map +1 -1
- package/fesm2022/ngwr-avatar.mjs +31 -7
- package/fesm2022/ngwr-avatar.mjs.map +1 -1
- package/fesm2022/ngwr-back-top.mjs +6 -2
- package/fesm2022/ngwr-back-top.mjs.map +1 -1
- package/fesm2022/ngwr-badge.mjs +1 -1
- package/fesm2022/ngwr-badge.mjs.map +1 -1
- package/fesm2022/ngwr-bar-chart.mjs +30 -9
- package/fesm2022/ngwr-bar-chart.mjs.map +1 -1
- package/fesm2022/ngwr-blur-text.mjs +2 -2
- package/fesm2022/ngwr-blur-text.mjs.map +1 -1
- package/fesm2022/ngwr-border-glow.mjs +2 -2
- package/fesm2022/ngwr-border-glow.mjs.map +1 -1
- package/fesm2022/ngwr-breadcrumbs.mjs +2 -2
- package/fesm2022/ngwr-breadcrumbs.mjs.map +1 -1
- package/fesm2022/ngwr-burger.mjs +9 -4
- package/fesm2022/ngwr-burger.mjs.map +1 -1
- package/fesm2022/ngwr-button-testing.mjs +96 -0
- package/fesm2022/ngwr-button-testing.mjs.map +1 -0
- package/fesm2022/ngwr-button.mjs +31 -14
- package/fesm2022/ngwr-button.mjs.map +1 -1
- package/fesm2022/ngwr-calendar-heatmap.mjs +40 -8
- package/fesm2022/ngwr-calendar-heatmap.mjs.map +1 -1
- package/fesm2022/ngwr-calendar.mjs +20 -1
- package/fesm2022/ngwr-calendar.mjs.map +1 -1
- package/fesm2022/ngwr-card.mjs +2 -2
- package/fesm2022/ngwr-card.mjs.map +1 -1
- package/fesm2022/ngwr-carousel-testing.mjs +377 -0
- package/fesm2022/ngwr-carousel-testing.mjs.map +1 -0
- package/fesm2022/ngwr-carousel.mjs +67 -13
- package/fesm2022/ngwr-carousel.mjs.map +1 -1
- package/fesm2022/ngwr-cascader-testing.mjs +534 -0
- package/fesm2022/ngwr-cascader-testing.mjs.map +1 -0
- package/fesm2022/ngwr-cascader.mjs +2 -2
- package/fesm2022/ngwr-cascader.mjs.map +1 -1
- package/fesm2022/ngwr-checkbox-testing.mjs +90 -0
- package/fesm2022/ngwr-checkbox-testing.mjs.map +1 -0
- package/fesm2022/ngwr-checkbox.mjs +9 -3
- package/fesm2022/ngwr-checkbox.mjs.map +1 -1
- package/fesm2022/ngwr-circular-text.mjs +2 -2
- package/fesm2022/ngwr-circular-text.mjs.map +1 -1
- package/fesm2022/ngwr-click-spark.mjs +2 -2
- package/fesm2022/ngwr-click-spark.mjs.map +1 -1
- package/fesm2022/ngwr-collapse-testing.mjs +368 -0
- package/fesm2022/ngwr-collapse-testing.mjs.map +1 -0
- package/fesm2022/ngwr-color-picker.mjs +134 -14
- package/fesm2022/ngwr-color-picker.mjs.map +1 -1
- package/fesm2022/ngwr-command-palette-testing.mjs +589 -0
- package/fesm2022/ngwr-command-palette-testing.mjs.map +1 -0
- package/fesm2022/ngwr-command-palette.mjs +58 -8
- package/fesm2022/ngwr-command-palette.mjs.map +1 -1
- package/fesm2022/ngwr-compare.mjs +103 -13
- package/fesm2022/ngwr-compare.mjs.map +1 -1
- package/fesm2022/ngwr-config.mjs +106 -0
- package/fesm2022/ngwr-config.mjs.map +1 -0
- package/fesm2022/ngwr-context-menu-testing.mjs +631 -0
- package/fesm2022/ngwr-context-menu-testing.mjs.map +1 -0
- package/fesm2022/ngwr-context-menu.mjs +94 -8
- package/fesm2022/ngwr-context-menu.mjs.map +1 -1
- package/fesm2022/ngwr-cookie.mjs +5 -1
- package/fesm2022/ngwr-cookie.mjs.map +1 -1
- package/fesm2022/ngwr-counter.mjs +11 -3
- package/fesm2022/ngwr-counter.mjs.map +1 -1
- package/fesm2022/ngwr-date-adapter-luxon.mjs +52 -4
- package/fesm2022/ngwr-date-adapter-luxon.mjs.map +1 -1
- package/fesm2022/ngwr-date-adapter.mjs +54 -8
- package/fesm2022/ngwr-date-adapter.mjs.map +1 -1
- package/fesm2022/ngwr-date-picker-testing.mjs +766 -0
- package/fesm2022/ngwr-date-picker-testing.mjs.map +1 -0
- package/fesm2022/ngwr-date-picker.mjs +73 -3
- package/fesm2022/ngwr-date-picker.mjs.map +1 -1
- package/fesm2022/ngwr-decrypt-text.mjs +27 -9
- package/fesm2022/ngwr-decrypt-text.mjs.map +1 -1
- package/fesm2022/ngwr-dialog-testing.mjs +89 -0
- package/fesm2022/ngwr-dialog-testing.mjs.map +1 -0
- package/fesm2022/ngwr-directives.mjs +36 -12
- package/fesm2022/ngwr-directives.mjs.map +1 -1
- package/fesm2022/ngwr-donut-chart.mjs +22 -5
- package/fesm2022/ngwr-donut-chart.mjs.map +1 -1
- package/fesm2022/ngwr-drag-drop.mjs +2 -2
- package/fesm2022/ngwr-drag-drop.mjs.map +1 -1
- package/fesm2022/ngwr-drawer-testing.mjs +250 -0
- package/fesm2022/ngwr-drawer-testing.mjs.map +1 -0
- package/fesm2022/ngwr-dropdown-testing.mjs +291 -0
- package/fesm2022/ngwr-dropdown-testing.mjs.map +1 -0
- package/fesm2022/ngwr-dropdown.mjs +10 -2
- package/fesm2022/ngwr-dropdown.mjs.map +1 -1
- package/fesm2022/ngwr-empty.mjs +24 -7
- package/fesm2022/ngwr-empty.mjs.map +1 -1
- package/fesm2022/ngwr-event-calendar.mjs +57 -10
- package/fesm2022/ngwr-event-calendar.mjs.map +1 -1
- package/fesm2022/ngwr-falling-text.mjs +2 -2
- package/fesm2022/ngwr-falling-text.mjs.map +1 -1
- package/fesm2022/ngwr-file-upload-testing.mjs +332 -0
- package/fesm2022/ngwr-file-upload-testing.mjs.map +1 -0
- package/fesm2022/ngwr-form-testing.mjs +451 -0
- package/fesm2022/ngwr-form-testing.mjs.map +1 -0
- package/fesm2022/ngwr-form.mjs +19 -3
- package/fesm2022/ngwr-form.mjs.map +1 -1
- package/fesm2022/ngwr-fuzzy-text.mjs +9 -2
- package/fesm2022/ngwr-fuzzy-text.mjs.map +1 -1
- package/fesm2022/ngwr-gauge.mjs +19 -5
- package/fesm2022/ngwr-gauge.mjs.map +1 -1
- package/fesm2022/ngwr-glitch-text.mjs +2 -2
- package/fesm2022/ngwr-glitch-text.mjs.map +1 -1
- package/fesm2022/ngwr-gradient-text.mjs +2 -2
- package/fesm2022/ngwr-gradient-text.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-en.mjs +50 -0
- package/fesm2022/ngwr-i18n-en.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-ru.mjs +48 -0
- package/fesm2022/ngwr-i18n-ru.mjs.map +1 -1
- package/fesm2022/ngwr-image-cropper.mjs +23 -0
- package/fesm2022/ngwr-image-cropper.mjs.map +1 -1
- package/fesm2022/ngwr-input-number-testing.mjs +306 -0
- package/fesm2022/ngwr-input-number-testing.mjs.map +1 -0
- package/fesm2022/ngwr-input-number.mjs +35 -3
- package/fesm2022/ngwr-input-number.mjs.map +1 -1
- package/fesm2022/ngwr-input-otp-testing.mjs +419 -0
- package/fesm2022/ngwr-input-otp-testing.mjs.map +1 -0
- package/fesm2022/ngwr-input-otp.mjs +36 -5
- package/fesm2022/ngwr-input-otp.mjs.map +1 -1
- package/fesm2022/ngwr-input-testing.mjs +102 -0
- package/fesm2022/ngwr-input-testing.mjs.map +1 -0
- package/fesm2022/ngwr-input.mjs +47 -10
- package/fesm2022/ngwr-input.mjs.map +1 -1
- package/fesm2022/ngwr-knob.mjs +44 -8
- package/fesm2022/ngwr-knob.mjs.map +1 -1
- package/fesm2022/ngwr-layout.mjs +21 -5
- package/fesm2022/ngwr-layout.mjs.map +1 -1
- package/fesm2022/ngwr-lightbox.mjs +33 -6
- package/fesm2022/ngwr-lightbox.mjs.map +1 -1
- package/fesm2022/ngwr-line-chart.mjs +17 -4
- package/fesm2022/ngwr-line-chart.mjs.map +1 -1
- package/fesm2022/ngwr-list.mjs +2 -2
- package/fesm2022/ngwr-list.mjs.map +1 -1
- package/fesm2022/ngwr-loading-bar.mjs +2 -2
- package/fesm2022/ngwr-loading-bar.mjs.map +1 -1
- package/fesm2022/ngwr-markdown-testing.mjs +516 -0
- package/fesm2022/ngwr-markdown-testing.mjs.map +1 -0
- package/fesm2022/ngwr-markdown.mjs +1492 -0
- package/fesm2022/ngwr-markdown.mjs.map +1 -0
- package/fesm2022/ngwr-marquee.mjs +17 -6
- package/fesm2022/ngwr-marquee.mjs.map +1 -1
- package/fesm2022/ngwr-mention-testing.mjs +513 -0
- package/fesm2022/ngwr-mention-testing.mjs.map +1 -0
- package/fesm2022/ngwr-mention.mjs +10 -1
- package/fesm2022/ngwr-mention.mjs.map +1 -1
- package/fesm2022/ngwr-meta.mjs +22 -7
- package/fesm2022/ngwr-meta.mjs.map +1 -1
- package/fesm2022/ngwr-meter-group.mjs +19 -5
- package/fesm2022/ngwr-meter-group.mjs.map +1 -1
- package/fesm2022/ngwr-overlay.mjs +41 -1
- package/fesm2022/ngwr-overlay.mjs.map +1 -1
- package/fesm2022/ngwr-pagination-testing.mjs +389 -0
- package/fesm2022/ngwr-pagination-testing.mjs.map +1 -0
- package/fesm2022/ngwr-pagination.mjs +14 -2
- package/fesm2022/ngwr-pagination.mjs.map +1 -1
- package/fesm2022/ngwr-popconfirm-testing.mjs +309 -0
- package/fesm2022/ngwr-popconfirm-testing.mjs.map +1 -0
- package/fesm2022/ngwr-popconfirm.mjs +95 -17
- package/fesm2022/ngwr-popconfirm.mjs.map +1 -1
- package/fesm2022/ngwr-popover-testing.mjs +316 -0
- package/fesm2022/ngwr-popover-testing.mjs.map +1 -0
- package/fesm2022/ngwr-popover.mjs +21 -3
- package/fesm2022/ngwr-popover.mjs.map +1 -1
- package/fesm2022/ngwr-pull-to-refresh.mjs +17 -2
- package/fesm2022/ngwr-pull-to-refresh.mjs.map +1 -1
- package/fesm2022/ngwr-qr.mjs +13 -3
- package/fesm2022/ngwr-qr.mjs.map +1 -1
- package/fesm2022/ngwr-radio-testing.mjs +392 -0
- package/fesm2022/ngwr-radio-testing.mjs.map +1 -0
- package/fesm2022/ngwr-radio.mjs +10 -3
- package/fesm2022/ngwr-radio.mjs.map +1 -1
- package/fesm2022/ngwr-rating-testing.mjs +384 -0
- package/fesm2022/ngwr-rating-testing.mjs.map +1 -0
- package/fesm2022/ngwr-rating.mjs +37 -2
- package/fesm2022/ngwr-rating.mjs.map +1 -1
- package/fesm2022/ngwr-segmented-testing.mjs +512 -0
- package/fesm2022/ngwr-segmented-testing.mjs.map +1 -0
- package/fesm2022/ngwr-select-testing.mjs +268 -0
- package/fesm2022/ngwr-select-testing.mjs.map +1 -0
- package/fesm2022/ngwr-select.mjs +87 -16
- package/fesm2022/ngwr-select.mjs.map +1 -1
- package/fesm2022/ngwr-shiny-text.mjs +2 -2
- package/fesm2022/ngwr-shiny-text.mjs.map +1 -1
- package/fesm2022/ngwr-sidebar.mjs +65 -12
- package/fesm2022/ngwr-sidebar.mjs.map +1 -1
- package/fesm2022/ngwr-slider-testing.mjs +478 -0
- package/fesm2022/ngwr-slider-testing.mjs.map +1 -0
- package/fesm2022/ngwr-slider.mjs +57 -13
- package/fesm2022/ngwr-slider.mjs.map +1 -1
- package/fesm2022/ngwr-sparkline.mjs +26 -6
- package/fesm2022/ngwr-sparkline.mjs.map +1 -1
- package/fesm2022/ngwr-speed-dial.mjs +37 -4
- package/fesm2022/ngwr-speed-dial.mjs.map +1 -1
- package/fesm2022/ngwr-spinner.mjs +12 -3
- package/fesm2022/ngwr-spinner.mjs.map +1 -1
- package/fesm2022/ngwr-splash-cursor.mjs +2 -2
- package/fesm2022/ngwr-splash-cursor.mjs.map +1 -1
- package/fesm2022/ngwr-split-text.mjs +2 -2
- package/fesm2022/ngwr-split-text.mjs.map +1 -1
- package/fesm2022/ngwr-splitter.mjs +70 -9
- package/fesm2022/ngwr-splitter.mjs.map +1 -1
- package/fesm2022/ngwr-spotlight-card.mjs +2 -2
- package/fesm2022/ngwr-spotlight-card.mjs.map +1 -1
- package/fesm2022/ngwr-star-border.mjs +2 -2
- package/fesm2022/ngwr-star-border.mjs.map +1 -1
- package/fesm2022/ngwr-statistic.mjs +24 -7
- package/fesm2022/ngwr-statistic.mjs.map +1 -1
- package/fesm2022/ngwr-stepper-testing.mjs +477 -0
- package/fesm2022/ngwr-stepper-testing.mjs.map +1 -0
- package/fesm2022/ngwr-switch-testing.mjs +77 -0
- package/fesm2022/ngwr-switch-testing.mjs.map +1 -0
- package/fesm2022/ngwr-switch.mjs +9 -3
- package/fesm2022/ngwr-switch.mjs.map +1 -1
- package/fesm2022/ngwr-table-testing.mjs +580 -0
- package/fesm2022/ngwr-table-testing.mjs.map +1 -0
- package/fesm2022/ngwr-table.mjs +87 -14
- package/fesm2022/ngwr-table.mjs.map +1 -1
- package/fesm2022/ngwr-tabs-testing.mjs +617 -0
- package/fesm2022/ngwr-tabs-testing.mjs.map +1 -0
- package/fesm2022/ngwr-tabs.mjs +38 -6
- package/fesm2022/ngwr-tabs.mjs.map +1 -1
- package/fesm2022/ngwr-textarea-testing.mjs +238 -0
- package/fesm2022/ngwr-textarea-testing.mjs.map +1 -0
- package/fesm2022/ngwr-textarea.mjs +32 -4
- package/fesm2022/ngwr-textarea.mjs.map +1 -1
- package/fesm2022/ngwr-tilt-card.mjs +2 -2
- package/fesm2022/ngwr-tilt-card.mjs.map +1 -1
- package/fesm2022/ngwr-toast-testing.mjs +101 -0
- package/fesm2022/ngwr-toast-testing.mjs.map +1 -0
- package/fesm2022/ngwr-toast.mjs +2 -2
- package/fesm2022/ngwr-toast.mjs.map +1 -1
- package/fesm2022/ngwr-tour.mjs +61 -9
- package/fesm2022/ngwr-tour.mjs.map +1 -1
- package/fesm2022/ngwr-transfer-testing.mjs +538 -0
- package/fesm2022/ngwr-transfer-testing.mjs.map +1 -0
- package/fesm2022/ngwr-transfer.mjs +45 -14
- package/fesm2022/ngwr-transfer.mjs.map +1 -1
- package/fesm2022/ngwr-tree-testing.mjs +734 -0
- package/fesm2022/ngwr-tree-testing.mjs.map +1 -0
- package/fesm2022/ngwr-tree.mjs +73 -7
- package/fesm2022/ngwr-tree.mjs.map +1 -1
- package/fesm2022/ngwr-typewriter.mjs +5 -3
- package/fesm2022/ngwr-typewriter.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 +31 -5
- package/fesm2022/ngwr-virtual-scroll.mjs.map +1 -1
- package/fesm2022/ngwr-waves.mjs +3 -3
- package/fesm2022/ngwr-waves.mjs.map +1 -1
- package/fesm2022/ngwr-window.mjs +8 -0
- package/fesm2022/ngwr-window.mjs.map +1 -1
- package/gauge/styles/_index.scss +1 -1
- package/glitch-text/styles/_index.scss +4 -0
- package/i18n/en.json +48 -0
- package/i18n/ru.json +48 -0
- package/image-cropper/styles/_index.scss +13 -1
- package/input/styles/_index.scss +2 -2
- package/input-number/styles/_index.scss +7 -2
- package/knob/styles/_index.scss +8 -1
- package/layout/styles/_index.scss +3 -3
- package/lightbox/styles/_index.scss +10 -2
- package/line-chart/styles/_index.scss +6 -0
- package/llms-full.txt +151 -4
- package/llms.txt +57 -8
- package/loading-bar/styles/_index.scss +1 -2
- package/markdown/styles/_index.scss +296 -0
- package/marquee/styles/_index.scss +12 -0
- package/mcp/api.js +512 -0
- package/mcp/catalog.js +157 -0
- package/mcp/server.js +273 -0
- package/mcp/tools.js +366 -0
- package/meter-group/styles/_index.scss +1 -1
- package/package.json +186 -35
- package/pagination/styles/_index.scss +6 -6
- package/popover/styles/_index.scss +37 -5
- package/rating/styles/_index.scss +10 -0
- package/schematics/use/symbol-map.json +2 -0
- package/segmented/styles/_index.scss +7 -0
- package/select/styles/_index.scss +29 -9
- package/sidebar/styles/_index.scss +30 -5
- package/slider/styles/_index.scss +15 -0
- package/speed-dial/styles/_index.scss +20 -0
- package/split-text/styles/_index.scss +13 -0
- package/star-border/styles/_index.scss +2 -0
- package/stepper/styles/_index.scss +1 -1
- package/styles/_grid.scss +4 -4
- package/styles.scss +1 -0
- package/switch/styles/_index.scss +5 -3
- package/table/styles/_index.scss +22 -11
- package/tabs/styles/_index.scss +11 -1
- package/textarea/styles/_index.scss +5 -0
- package/theme/styles/_colors.scss +29 -13
- package/theme/styles/_dark.scss +11 -3
- package/theme/styles/_mixins.scss +3 -0
- package/timeline/styles/_index.scss +2 -2
- package/toast/styles/_index.scss +17 -8
- package/toolbar/styles/_index.scss +3 -3
- package/tour/styles/_index.scss +7 -1
- package/tree/styles/_index.scss +5 -3
- package/types/ngwr-action-sheet.d.ts +9 -1
- package/types/ngwr-affix.d.ts +7 -1
- package/types/ngwr-anchor.d.ts +8 -1
- package/types/ngwr-avatar.d.ts +13 -3
- package/types/ngwr-bar-chart.d.ts +16 -0
- package/types/ngwr-burger.d.ts +6 -2
- package/types/ngwr-button-testing.d.ts +85 -0
- package/types/ngwr-button.d.ts +26 -10
- package/types/ngwr-calendar-heatmap.d.ts +16 -2
- package/types/ngwr-calendar.d.ts +10 -0
- package/types/ngwr-carousel-testing.d.ts +257 -0
- package/types/ngwr-carousel.d.ts +20 -4
- package/types/ngwr-cascader-testing.d.ts +392 -0
- package/types/ngwr-checkbox-testing.d.ts +77 -0
- package/types/ngwr-checkbox.d.ts +7 -2
- package/types/ngwr-collapse-testing.d.ts +290 -0
- package/types/ngwr-color-picker.d.ts +20 -11
- package/types/ngwr-command-palette-testing.d.ts +437 -0
- package/types/ngwr-command-palette.d.ts +25 -2
- package/types/ngwr-compare.d.ts +50 -2
- package/types/ngwr-config.d.ts +176 -0
- package/types/ngwr-context-menu-testing.d.ts +401 -0
- package/types/ngwr-context-menu.d.ts +65 -17
- package/types/ngwr-counter.d.ts +6 -1
- package/types/ngwr-date-adapter-luxon.d.ts +26 -0
- package/types/ngwr-date-picker-testing.d.ts +518 -0
- package/types/ngwr-date-picker.d.ts +4 -0
- package/types/ngwr-dialog-testing.d.ts +79 -0
- package/types/ngwr-directives.d.ts +10 -1
- package/types/ngwr-donut-chart.d.ts +8 -1
- package/types/ngwr-drawer-testing.d.ts +196 -0
- package/types/ngwr-dropdown-testing.d.ts +202 -0
- package/types/ngwr-dropdown.d.ts +7 -1
- package/types/ngwr-empty.d.ts +19 -4
- package/types/ngwr-event-calendar.d.ts +26 -1
- package/types/ngwr-file-upload-testing.d.ts +194 -0
- package/types/ngwr-form-testing.d.ts +379 -0
- package/types/ngwr-form.d.ts +17 -0
- package/types/ngwr-gauge.d.ts +13 -1
- package/types/ngwr-image-cropper.d.ts +10 -0
- package/types/ngwr-input-number-testing.d.ts +226 -0
- package/types/ngwr-input-number.d.ts +29 -1
- package/types/ngwr-input-otp-testing.d.ts +299 -0
- package/types/ngwr-input-otp.d.ts +23 -2
- package/types/ngwr-input-testing.d.ts +84 -0
- package/types/ngwr-input.d.ts +20 -6
- package/types/ngwr-knob.d.ts +18 -0
- package/types/ngwr-layout.d.ts +1 -0
- package/types/ngwr-lightbox.d.ts +17 -3
- package/types/ngwr-line-chart.d.ts +9 -2
- package/types/ngwr-markdown-testing.d.ts +462 -0
- package/types/ngwr-markdown.d.ts +534 -0
- package/types/ngwr-marquee.d.ts +12 -2
- package/types/ngwr-mention-testing.d.ts +359 -0
- package/types/ngwr-meta.d.ts +4 -2
- package/types/ngwr-meter-group.d.ts +11 -1
- package/types/ngwr-overlay.d.ts +33 -2
- package/types/ngwr-pagination-testing.d.ts +291 -0
- package/types/ngwr-pagination.d.ts +1 -0
- package/types/ngwr-popconfirm-testing.d.ts +235 -0
- package/types/ngwr-popconfirm.d.ts +31 -21
- package/types/ngwr-popover-testing.d.ts +221 -0
- package/types/ngwr-popover.d.ts +9 -0
- package/types/ngwr-pull-to-refresh.d.ts +7 -0
- package/types/ngwr-qr.d.ts +9 -1
- package/types/ngwr-radio-testing.d.ts +296 -0
- package/types/ngwr-radio.d.ts +8 -2
- package/types/ngwr-rating-testing.d.ts +291 -0
- package/types/ngwr-rating.d.ts +23 -0
- package/types/ngwr-segmented-testing.d.ts +401 -0
- package/types/ngwr-select-testing.d.ts +175 -0
- package/types/ngwr-select.d.ts +45 -4
- package/types/ngwr-sidebar.d.ts +17 -2
- package/types/ngwr-slider-testing.d.ts +329 -0
- package/types/ngwr-slider.d.ts +35 -1
- package/types/ngwr-sparkline.d.ts +12 -2
- package/types/ngwr-speed-dial.d.ts +17 -18
- package/types/ngwr-spinner.d.ts +8 -1
- package/types/ngwr-splitter.d.ts +24 -1
- package/types/ngwr-statistic.d.ts +12 -2
- package/types/ngwr-stepper-testing.d.ts +346 -0
- package/types/ngwr-switch-testing.d.ts +66 -0
- package/types/ngwr-switch.d.ts +7 -2
- package/types/ngwr-table-testing.d.ts +423 -0
- package/types/ngwr-table.d.ts +42 -0
- package/types/ngwr-tabs-testing.d.ts +470 -0
- package/types/ngwr-tabs.d.ts +9 -0
- package/types/ngwr-textarea-testing.d.ts +184 -0
- package/types/ngwr-textarea.d.ts +7 -2
- package/types/ngwr-toast-testing.d.ts +80 -0
- package/types/ngwr-tour.d.ts +27 -0
- package/types/ngwr-transfer-testing.d.ts +444 -0
- package/types/ngwr-transfer.d.ts +16 -1
- package/types/ngwr-tree-testing.d.ts +501 -0
- package/types/ngwr-tree.d.ts +33 -0
- package/types/ngwr-version.d.ts +1 -1
- package/types/ngwr-virtual-scroll.d.ts +13 -1
- package/typewriter/styles/_index.scss +1 -1
- package/typography/styles/_index.scss +1 -1
- package/window/styles/_index.scss +32 -9
package/types/ngwr-sidebar.d.ts
CHANGED
|
@@ -55,6 +55,13 @@ declare function isGroup(entry: WrSidebarEntry): entry is WrSidebarGroup;
|
|
|
55
55
|
*/
|
|
56
56
|
declare class WrSidebar {
|
|
57
57
|
readonly entries: _angular_core.InputSignal<readonly WrSidebarEntry[]>;
|
|
58
|
+
/**
|
|
59
|
+
* Accessible name for the navigation landmark. Falls back to `sidebar.label`,
|
|
60
|
+
* then `'Sidebar'` — a page with a sidebar AND a table of contents has two
|
|
61
|
+
* navigation landmarks, and an unnamed one is announced as just "navigation".
|
|
62
|
+
*/
|
|
63
|
+
readonly ariaLabel: _angular_core.InputSignal<string | null>;
|
|
64
|
+
protected readonly resolvedAriaLabel: _angular_core.Signal<string>;
|
|
58
65
|
/** Default icon for entries without one. @default 'folder' */
|
|
59
66
|
readonly defaultGroupIcon: _angular_core.InputSignal<string>;
|
|
60
67
|
/** Default icon for items without one. @default 'caret-forward' */
|
|
@@ -63,20 +70,28 @@ declare class WrSidebar {
|
|
|
63
70
|
readonly autoExpand: _angular_core.InputSignalWithTransform<boolean, any>;
|
|
64
71
|
protected readonly isGroup: typeof isGroup;
|
|
65
72
|
private readonly opened;
|
|
73
|
+
/** Group titles already seeded from `defaultOpen`, so it seeds once and not again. */
|
|
74
|
+
private readonly seeded;
|
|
75
|
+
private readonly uid;
|
|
66
76
|
private readonly router;
|
|
67
77
|
private readonly currentUrl;
|
|
68
78
|
/** Last URL we auto-expanded — prevents re-opening a group the user collapsed. */
|
|
69
79
|
private lastAutoUrl;
|
|
70
80
|
constructor();
|
|
71
81
|
protected isOpen(title: string): boolean;
|
|
72
|
-
/**
|
|
82
|
+
/**
|
|
83
|
+
* Stable id for the group body, referenced by the toggle's `aria-controls`.
|
|
84
|
+
* Scoped to this sidebar and stripped of anything that is not id-safe: a title
|
|
85
|
+
* like `Data & charts` used to produce `wr-sidebar-group-data-&-charts`, which
|
|
86
|
+
* no selector can address.
|
|
87
|
+
*/
|
|
73
88
|
protected groupBodyId(title: string): string;
|
|
74
89
|
protected toggleGroup(title: string): void;
|
|
75
90
|
protected asItem(entry: WrSidebarEntry): WrSidebarItem;
|
|
76
91
|
protected asGroup(entry: WrSidebarEntry): WrSidebarGroup;
|
|
77
92
|
private findGroupForUrl;
|
|
78
93
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<WrSidebar, never>;
|
|
79
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<WrSidebar, "wr-sidebar", never, { "entries": { "alias": "entries"; "required": false; "isSignal": true; }; "defaultGroupIcon": { "alias": "defaultGroupIcon"; "required": false; "isSignal": true; }; "defaultItemIcon": { "alias": "defaultItemIcon"; "required": false; "isSignal": true; }; "autoExpand": { "alias": "autoExpand"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
94
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<WrSidebar, "wr-sidebar", never, { "entries": { "alias": "entries"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "defaultGroupIcon": { "alias": "defaultGroupIcon"; "required": false; "isSignal": true; }; "defaultItemIcon": { "alias": "defaultItemIcon"; "required": false; "isSignal": true; }; "autoExpand": { "alias": "autoExpand"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
80
95
|
}
|
|
81
96
|
|
|
82
97
|
export { WrSidebar };
|
|
@@ -0,0 +1,329 @@
|
|
|
1
|
+
import { BaseHarnessFilters, ComponentHarness, HarnessPredicate } from '@angular/cdk/testing';
|
|
2
|
+
import { WrSliderValue } from 'ngwr/slider';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* @license
|
|
6
|
+
*
|
|
7
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
8
|
+
* found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
/** Which end of a range slider a thumb is — the `--low` / `--high` modifier it carries. */
|
|
12
|
+
type WrSliderThumbPosition = 'low' | 'high';
|
|
13
|
+
/** Narrows which `<wr-slider>` a harness query matches. */
|
|
14
|
+
interface WrSliderHarnessFilters extends BaseHarnessFilters {
|
|
15
|
+
/**
|
|
16
|
+
* Match the current value, in the shape the model uses: a plain number for a
|
|
17
|
+
* single-thumb slider, `[low, high]` for a range one. Compared element-wise,
|
|
18
|
+
* so a tuple never matches a single-thumb slider and a number never matches a
|
|
19
|
+
* range one.
|
|
20
|
+
*/
|
|
21
|
+
readonly value?: WrSliderValue;
|
|
22
|
+
/** Match only dual-thumb (`true`) or only single-thumb (`false`) sliders. */
|
|
23
|
+
readonly range?: boolean;
|
|
24
|
+
/** Match only disabled (`true`) or only enabled (`false`) sliders. */
|
|
25
|
+
readonly disabled?: boolean;
|
|
26
|
+
/**
|
|
27
|
+
* Match the text the slider prints under its track — a string is an exact
|
|
28
|
+
* match, a RegExp is tested. A slider with `showLabel="false"` prints none and
|
|
29
|
+
* never matches.
|
|
30
|
+
*/
|
|
31
|
+
readonly labelText?: string | RegExp;
|
|
32
|
+
}
|
|
33
|
+
/** Narrows which thumb of a `<wr-slider>` a harness query matches. */
|
|
34
|
+
interface WrSliderThumbHarnessFilters extends BaseHarnessFilters {
|
|
35
|
+
/** Match one end of a range slider. A single-thumb slider only has a `'low'`. */
|
|
36
|
+
readonly position?: WrSliderThumbPosition;
|
|
37
|
+
/** Match a thumb standing on exactly this value (`aria-valuenow`). */
|
|
38
|
+
readonly value?: number;
|
|
39
|
+
/**
|
|
40
|
+
* Match the thumb's accessible name — `'Value'` on a single-thumb slider,
|
|
41
|
+
* `'Lower value'` / `'Upper value'` on a range one. A string is an exact
|
|
42
|
+
* match, a RegExp is tested.
|
|
43
|
+
*/
|
|
44
|
+
readonly label?: string | RegExp;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* @license
|
|
49
|
+
*
|
|
50
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
51
|
+
* found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
|
|
52
|
+
*/
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Test harness for one thumb of a `<wr-slider>`.
|
|
56
|
+
*
|
|
57
|
+
* A single-thumb slider has exactly one; a `range` one has two, and each thumb
|
|
58
|
+
* is the other's limit — the lower thumb's `aria-valuemax` is wherever the upper
|
|
59
|
+
* thumb is standing, and vice versa. So {@link getMin} / {@link getMax} answer
|
|
60
|
+
* the room THIS thumb has, not the slider's bounds, which is exactly what a
|
|
61
|
+
* screen reader announces and exactly the window {@link setValue} can reach.
|
|
62
|
+
*
|
|
63
|
+
* Every write here is a KEY PRESS, because a drag is not something a unit test
|
|
64
|
+
* can perform — see {@link setValue}.
|
|
65
|
+
*
|
|
66
|
+
* Every press is on the BLOCK axis — `ArrowUp` / `ArrowDown`, `PageUp` /
|
|
67
|
+
* `PageDown`, `Home` / `End` — so the harness means the same thing in both
|
|
68
|
+
* reading directions. That is not a detail: the component's ← / → follow the
|
|
69
|
+
* VISUAL track, so under `dir="rtl"` a right-arrow LOWERS the value, and a
|
|
70
|
+
* harness that pressed it would have `stepUp()` stepping down while every LTR
|
|
71
|
+
* spec stayed green. It cannot detect the direction to compensate either —
|
|
72
|
+
* `Directionality` is injected, not published to the DOM — so it stays on the
|
|
73
|
+
* axis `dir` does not govern.
|
|
74
|
+
*
|
|
75
|
+
* @example
|
|
76
|
+
* ```ts
|
|
77
|
+
* const upper = await slider.getHighThumb();
|
|
78
|
+
*
|
|
79
|
+
* await upper.setValue(90);
|
|
80
|
+
* expect(await upper.getValue()).toBe(90);
|
|
81
|
+
* ```
|
|
82
|
+
*
|
|
83
|
+
* @see https://ngwr.dev/guides/testing
|
|
84
|
+
*/
|
|
85
|
+
declare class WrSliderThumbHarness extends ComponentHarness {
|
|
86
|
+
/**
|
|
87
|
+
* The thumb is a real `<button role="slider">`, so it is focusable without a
|
|
88
|
+
* `tabindex` and leaves the tab order by itself when disabled. Anchored on the
|
|
89
|
+
* BEM class rather than on `[role="slider"]`: the class also carries the
|
|
90
|
+
* `--low` / `--high` modifier this harness reads.
|
|
91
|
+
*/
|
|
92
|
+
static hostSelector: string;
|
|
93
|
+
/** Build a predicate that narrows the query — pass to `getHarness` / `getAllHarnesses`. */
|
|
94
|
+
static with(options?: WrSliderThumbHarnessFilters): HarnessPredicate<WrSliderThumbHarness>;
|
|
95
|
+
/** Which end this thumb is. A single-thumb slider's thumb is the `'low'` one. */
|
|
96
|
+
getPosition(): Promise<WrSliderThumbPosition>;
|
|
97
|
+
/** Where the thumb is standing, from `aria-valuenow` — the number a screen reader reads out. */
|
|
98
|
+
getValue(): Promise<number>;
|
|
99
|
+
/**
|
|
100
|
+
* The lowest value THIS thumb can reach (`aria-valuemin`).
|
|
101
|
+
*
|
|
102
|
+
* On a range slider's upper thumb that is the lower thumb, not the slider's
|
|
103
|
+
* `min` — the two cannot cross, so the neighbour is the real floor.
|
|
104
|
+
*/
|
|
105
|
+
getMin(): Promise<number>;
|
|
106
|
+
/**
|
|
107
|
+
* The highest value THIS thumb can reach (`aria-valuemax`).
|
|
108
|
+
*
|
|
109
|
+
* On a range slider's lower thumb that is the upper thumb, not the slider's
|
|
110
|
+
* `max`.
|
|
111
|
+
*/
|
|
112
|
+
getMax(): Promise<number>;
|
|
113
|
+
/** The thumb's accessible name — `'Value'`, or `'Lower value'` / `'Upper value'` in range mode. */
|
|
114
|
+
getLabel(): Promise<string | null>;
|
|
115
|
+
/** What a screen reader is told this control is. The role is why the arrows mean anything here. */
|
|
116
|
+
getRole(): Promise<string | null>;
|
|
117
|
+
/** Whether the thumb refuses the keyboard. Read from the button's native `disabled`. */
|
|
118
|
+
isDisabled(): Promise<boolean>;
|
|
119
|
+
focus(): Promise<void>;
|
|
120
|
+
isFocused(): Promise<boolean>;
|
|
121
|
+
/**
|
|
122
|
+
* One step up (`ArrowUp`). A disabled thumb does not move.
|
|
123
|
+
*
|
|
124
|
+
* `ArrowRight` is the same key press in an LTR slider and the OPPOSITE one in
|
|
125
|
+
* an RTL slider, so the vertical arrow is the one that means "up" everywhere.
|
|
126
|
+
*/
|
|
127
|
+
stepUp(): Promise<void>;
|
|
128
|
+
/** One step down (`ArrowDown`; `ArrowLeft` only agrees in LTR — see {@link stepUp}). */
|
|
129
|
+
stepDown(): Promise<void>;
|
|
130
|
+
/** Ten steps up (`PageUp`; `Shift`+arrow is the same stride). */
|
|
131
|
+
largeStepUp(): Promise<void>;
|
|
132
|
+
/** Ten steps down (`PageDown`; `Shift`+arrow is the same stride). */
|
|
133
|
+
largeStepDown(): Promise<void>;
|
|
134
|
+
/**
|
|
135
|
+
* `Home` — jump to the lowest value this thumb can reach.
|
|
136
|
+
*
|
|
137
|
+
* On a range slider's UPPER thumb that lands on the lower thumb, not on the
|
|
138
|
+
* slider's `min`: the component asks for `min` and then refuses to let the
|
|
139
|
+
* ends cross, so the range collapses instead of inverting.
|
|
140
|
+
*/
|
|
141
|
+
toMin(): Promise<void>;
|
|
142
|
+
/**
|
|
143
|
+
* `End` — jump to the highest value this thumb can reach.
|
|
144
|
+
*
|
|
145
|
+
* On a range slider's LOWER thumb that lands on the upper thumb, not on the
|
|
146
|
+
* slider's `max`, for the same reason as {@link toMin}.
|
|
147
|
+
*/
|
|
148
|
+
toMax(): Promise<void>;
|
|
149
|
+
/**
|
|
150
|
+
* Walk the thumb to `value` FROM THE KEYBOARD — `PageUp` / `PageDown` for the
|
|
151
|
+
* distance, arrows for the last stretch, `Home` / `End` for the bounds. That
|
|
152
|
+
* is the accessible path, and the only one a unit test can trust.
|
|
153
|
+
*
|
|
154
|
+
* There is deliberately no drag. jsdom has no layout: the track measures 0×0
|
|
155
|
+
* and `getBoundingClientRect()` answers all zeros, while the component turns a
|
|
156
|
+
* pointer into a value by dividing the offset by the track width. Every
|
|
157
|
+
* positive offset therefore divides by zero, clamps to a ratio of 1 and writes
|
|
158
|
+
* the slider's MAX — quietly, with no error to notice. A coordinate cannot
|
|
159
|
+
* mean anything here.
|
|
160
|
+
*
|
|
161
|
+
* It costs one press per stride, so the walk is not free: crossing most of a
|
|
162
|
+
* 0–100 range costs ~19 presses at `step="1"` and ~109 at `step="0.1"`.
|
|
163
|
+
* Landing exactly on a bound is one press, whatever the step. The walk gives
|
|
164
|
+
* up after 1000 presses — a 0–100 range reaches that at `step="0.01"` or finer
|
|
165
|
+
* — and throws rather than spin.
|
|
166
|
+
*
|
|
167
|
+
* A bound the step grid misses is announced but not reachable: `aria-valuemax`
|
|
168
|
+
* is the `max` input, while the component snaps every key press onto whole
|
|
169
|
+
* steps from `min`, so `max="100" step="3"` stops at 99. That is the off-grid
|
|
170
|
+
* throw, arriving for `setValue(100)`.
|
|
171
|
+
*
|
|
172
|
+
* Either the thumb ends up exactly on `value` or this throws: when `value` is
|
|
173
|
+
* outside the thumb's window (the other thumb is one end of it in range mode),
|
|
174
|
+
* when the thumb is disabled, and when `value` is not on the step grid — on
|
|
175
|
+
* the last one the thumb is left at the nearest value it could reach.
|
|
176
|
+
*/
|
|
177
|
+
setValue(value: number): Promise<void>;
|
|
178
|
+
/**
|
|
179
|
+
* The landing check every path through {@link setValue} ends on: exactly the
|
|
180
|
+
* value asked for, or an error naming where the thumb stopped instead.
|
|
181
|
+
*/
|
|
182
|
+
private assertSettled;
|
|
183
|
+
/** The key that moves the thumb one stride in `direction`. */
|
|
184
|
+
private strideKey;
|
|
185
|
+
/**
|
|
186
|
+
* Press a key on the thumb.
|
|
187
|
+
*
|
|
188
|
+
* `sendKeys` focuses the element first, so this is the whole gesture a user
|
|
189
|
+
* makes — the component listens for `keydown` on the thumb itself.
|
|
190
|
+
*/
|
|
191
|
+
private press;
|
|
192
|
+
/**
|
|
193
|
+
* One of the ARIA range attributes as a number.
|
|
194
|
+
*
|
|
195
|
+
* Throws instead of handing back `NaN`: a slider whose `aria-valuenow` is not
|
|
196
|
+
* a number is broken in a way every later assertion would describe badly.
|
|
197
|
+
*/
|
|
198
|
+
private numeric;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
/**
|
|
202
|
+
* @license
|
|
203
|
+
*
|
|
204
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
205
|
+
* found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
|
|
206
|
+
*/
|
|
207
|
+
|
|
208
|
+
/**
|
|
209
|
+
* Test harness for `<wr-slider>` — single-thumb and `range`.
|
|
210
|
+
*
|
|
211
|
+
* Every NUMBER it reads comes off the thumbs' ARIA range trio (`aria-valuenow`,
|
|
212
|
+
* `aria-valuemin`, `aria-valuemax`), which is what a screen reader is told and
|
|
213
|
+
* the only place the slider publishes its value. The mode comes off the host's
|
|
214
|
+
* `wr-slider--range` class and {@link getLabelText} off the rendered text.
|
|
215
|
+
*
|
|
216
|
+
* Everything it WRITES is a key press. A slider is a pointer control, but a
|
|
217
|
+
* pointer control cannot be driven by coordinates in jsdom — there is no layout,
|
|
218
|
+
* so the track measures 0×0 and the component divides every offset by that
|
|
219
|
+
* width: a positive one writes the slider's MAX and `clientX: 0` writes `NaN`,
|
|
220
|
+
* neither of them the value asked for. The keyboard is both the accessible path
|
|
221
|
+
* and the only honest one here; {@link WrSliderThumbHarness.setValue} spells out
|
|
222
|
+
* what the walk costs, and {@link WrSliderThumbHarness} why every one of those
|
|
223
|
+
* presses is on the block axis, which `dir` does not turn around.
|
|
224
|
+
*
|
|
225
|
+
* The `step` is deliberately not readable: the component publishes it nowhere in
|
|
226
|
+
* the DOM (ARIA has no attribute for it), so a spec that needs the number should
|
|
227
|
+
* measure it — `stepUp()` moves by exactly one step.
|
|
228
|
+
*
|
|
229
|
+
* @example
|
|
230
|
+
* ```ts
|
|
231
|
+
* const volume = await loader.getHarness(WrSliderHarness);
|
|
232
|
+
*
|
|
233
|
+
* await volume.setValue(70);
|
|
234
|
+
* expect(await volume.getValue()).toBe(70);
|
|
235
|
+
*
|
|
236
|
+
* const span = await loader.getHarness(WrSliderHarness.with({ range: true }));
|
|
237
|
+
* await span.setRange(30, 60);
|
|
238
|
+
* ```
|
|
239
|
+
*
|
|
240
|
+
* @see https://ngwr.dev/guides/testing
|
|
241
|
+
*/
|
|
242
|
+
declare class WrSliderHarness extends ComponentHarness {
|
|
243
|
+
static hostSelector: string;
|
|
244
|
+
/** Build a predicate that narrows the query — pass to `getHarness` / `getAllHarnesses`. */
|
|
245
|
+
static with(options?: WrSliderHarnessFilters): HarnessPredicate<WrSliderHarness>;
|
|
246
|
+
/** Whether the slider has two thumbs and answers with a `[low, high]` tuple. */
|
|
247
|
+
isRange(): Promise<boolean>;
|
|
248
|
+
/**
|
|
249
|
+
* Whether the slider refuses interaction.
|
|
250
|
+
*
|
|
251
|
+
* Read from the thumb's native `disabled` rather than from the
|
|
252
|
+
* `wr-slider--disabled` class: the class is paint, while `disabled` on the
|
|
253
|
+
* button is what takes the thumb out of the tab order and what assistive tech
|
|
254
|
+
* reports.
|
|
255
|
+
*/
|
|
256
|
+
isDisabled(): Promise<boolean>;
|
|
257
|
+
/**
|
|
258
|
+
* The current value, in the shape the model uses: a plain number for one
|
|
259
|
+
* thumb, `[low, high]` for two.
|
|
260
|
+
*/
|
|
261
|
+
getValue(): Promise<WrSliderValue>;
|
|
262
|
+
/** The slider's lower bound. */
|
|
263
|
+
getMin(): Promise<number>;
|
|
264
|
+
/**
|
|
265
|
+
* The slider's upper bound.
|
|
266
|
+
*
|
|
267
|
+
* Taken from the LAST thumb, because in range mode the thumbs bound each
|
|
268
|
+
* other: the lower one's `aria-valuemax` is wherever the upper one is
|
|
269
|
+
* standing, so only the upper thumb knows the real ceiling.
|
|
270
|
+
*/
|
|
271
|
+
getMax(): Promise<number>;
|
|
272
|
+
/**
|
|
273
|
+
* The text the slider prints under the track, or `null` when `showLabel` is
|
|
274
|
+
* off.
|
|
275
|
+
*
|
|
276
|
+
* A range slider joins its ends with an EN DASH — `'20 – 80'`, U+2013 — so an
|
|
277
|
+
* assertion typed with a hyphen will not match.
|
|
278
|
+
*/
|
|
279
|
+
getLabelText(): Promise<string | null>;
|
|
280
|
+
/** The slider's thumbs in DOM order: the lower one first. */
|
|
281
|
+
getThumbs(filters?: WrSliderThumbHarnessFilters): Promise<WrSliderThumbHarness[]>;
|
|
282
|
+
/** The only thumb of a single-thumb slider, or the lower one of a range slider. */
|
|
283
|
+
getLowThumb(): Promise<WrSliderThumbHarness>;
|
|
284
|
+
/** The upper thumb. Throws on a single-thumb slider, which has no such part. */
|
|
285
|
+
getHighThumb(): Promise<WrSliderThumbHarness>;
|
|
286
|
+
/**
|
|
287
|
+
* Walk the slider to `value` from the keyboard.
|
|
288
|
+
*
|
|
289
|
+
* Single-thumb only — {@link setRange} moves both ends. See
|
|
290
|
+
* {@link WrSliderThumbHarness.setValue} for what the walk costs and when it
|
|
291
|
+
* throws.
|
|
292
|
+
*/
|
|
293
|
+
setValue(value: number): Promise<void>;
|
|
294
|
+
/**
|
|
295
|
+
* Walk both ends of a range slider to `[low, high]`.
|
|
296
|
+
*
|
|
297
|
+
* The far end moves FIRST. The thumbs bound each other, so writing `[90, 95]`
|
|
298
|
+
* over `[20, 80]` lower-end-first would be refused outright — 90 is outside
|
|
299
|
+
* the `[0, 80]` window the upper thumb leaves the lower one.
|
|
300
|
+
*/
|
|
301
|
+
setRange(low: number, high: number): Promise<void>;
|
|
302
|
+
/** One step up (`ArrowUp`). Single-thumb only. A disabled slider does not move. */
|
|
303
|
+
stepUp(): Promise<void>;
|
|
304
|
+
/** One step down (`ArrowDown`). Single-thumb only. A disabled slider does not move. */
|
|
305
|
+
stepDown(): Promise<void>;
|
|
306
|
+
/** `Home` — jump to the slider's `min`. Single-thumb only. */
|
|
307
|
+
toMin(): Promise<void>;
|
|
308
|
+
/** `End` — jump to the slider's `max`. Single-thumb only. */
|
|
309
|
+
toMax(): Promise<void>;
|
|
310
|
+
/**
|
|
311
|
+
* Move keyboard focus to the slider's first thumb. A range slider's thumbs are
|
|
312
|
+
* two separate tab stops (both are plain buttons — there is no roving
|
|
313
|
+
* `tabindex`), so reach the other one through {@link getHighThumb}.
|
|
314
|
+
*/
|
|
315
|
+
focus(): Promise<void>;
|
|
316
|
+
/** Whether any of the slider's thumbs holds focus. */
|
|
317
|
+
isFocused(): Promise<boolean>;
|
|
318
|
+
/**
|
|
319
|
+
* The one thumb a single-thumb convenience call means.
|
|
320
|
+
*
|
|
321
|
+
* Range mode gets an error rather than a guess: "step this slider up" has two
|
|
322
|
+
* possible answers there, and picking one silently is how a spec ends up
|
|
323
|
+
* asserting against the end it did not move.
|
|
324
|
+
*/
|
|
325
|
+
private single;
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
export { WrSliderHarness, WrSliderThumbHarness };
|
|
329
|
+
export type { WrSliderHarnessFilters, WrSliderThumbHarnessFilters, WrSliderThumbPosition };
|
package/types/ngwr-slider.d.ts
CHANGED
|
@@ -31,6 +31,11 @@ type WrSliderValue = number | readonly [number, number];
|
|
|
31
31
|
* Keyboard: ← / → adjust by `step`; ↑ / ↓ same; Shift+arrow by `step × 10`;
|
|
32
32
|
* Home / End jump to min / max; PageUp / PageDown by `step × 10`.
|
|
33
33
|
*
|
|
34
|
+
* Reading direction: the arrows follow the VISUAL track, so under `dir="rtl"`
|
|
35
|
+
* → moves toward the lower end and ← toward the higher one, and a drag reads
|
|
36
|
+
* its ratio from the right edge. ↑ / ↓, PageUp / PageDown and Home / End are
|
|
37
|
+
* unchanged — they name a value, not a side of the screen.
|
|
38
|
+
*
|
|
34
39
|
* @example
|
|
35
40
|
* ```html
|
|
36
41
|
* <!-- signal forms -->
|
|
@@ -74,17 +79,46 @@ declare class WrSlider implements FormValueControl<WrSliderValue> {
|
|
|
74
79
|
protected readonly low: _angular_core.WritableSignal<number>;
|
|
75
80
|
protected readonly high: _angular_core.WritableSignal<number>;
|
|
76
81
|
protected readonly track: _angular_core.Signal<ElementRef<HTMLElement>>;
|
|
82
|
+
/**
|
|
83
|
+
* Ambient reading direction. Optional so a bare `TestBed` — or any consumer
|
|
84
|
+
* that never set a direction — needs no provider; `Directionality` is
|
|
85
|
+
* root-provided, so `null` only ever means "nobody asked", which is LTR.
|
|
86
|
+
*
|
|
87
|
+
* Nothing caches a direction-derived value: the thumbs are painted with
|
|
88
|
+
* `inset-inline-start`, so the track mirrors from CSS alone, and `isRtl()` is
|
|
89
|
+
* read inside the event handlers. A runtime flip therefore needs no
|
|
90
|
+
* subscription to `Directionality.change`.
|
|
91
|
+
*/
|
|
92
|
+
private readonly dir;
|
|
77
93
|
protected readonly classes: _angular_core.Signal<string>;
|
|
78
94
|
protected readonly lowPercent: _angular_core.Signal<number>;
|
|
79
95
|
protected readonly highPercent: _angular_core.Signal<number>;
|
|
80
|
-
|
|
96
|
+
/** Offset of the fill from the track's START edge — the left one in LTR, the right one in RTL. */
|
|
97
|
+
protected readonly fillStart: _angular_core.Signal<number>;
|
|
81
98
|
protected readonly fillWidth: _angular_core.Signal<number>;
|
|
82
99
|
protected readonly label: _angular_core.Signal<string>;
|
|
83
100
|
constructor();
|
|
84
101
|
protected onPointerDown(event: PointerEvent, thumb: 'low' | 'high'): void;
|
|
85
102
|
protected onTrackPointerDown(event: PointerEvent): void;
|
|
86
103
|
protected onKey(event: KeyboardEvent, thumb: 'low' | 'high'): void;
|
|
104
|
+
private isRtl;
|
|
105
|
+
/**
|
|
106
|
+
* The value under a pointer, measured along the track's INLINE axis.
|
|
107
|
+
*
|
|
108
|
+
* The offset is taken from whichever edge the track starts at — the left one
|
|
109
|
+
* in LTR, the right one in RTL — so the whole component needs the direction
|
|
110
|
+
* in exactly one place. Measuring from `rect.left` regardless would read 0 at
|
|
111
|
+
* the visual maximum of a mirrored track.
|
|
112
|
+
*/
|
|
113
|
+
private valueAt;
|
|
87
114
|
private updateFromEvent;
|
|
115
|
+
/**
|
|
116
|
+
* Which thumb a track click grabs: the one nearest the pointer ON SCREEN.
|
|
117
|
+
*
|
|
118
|
+
* Value distance is the same thing as visual distance once {@link valueAt}
|
|
119
|
+
* has mirrored the ratio — in RTL the low thumb is the RIGHT one, and a click
|
|
120
|
+
* near the right edge lands close to `low` in value space too.
|
|
121
|
+
*/
|
|
88
122
|
private nearestThumb;
|
|
89
123
|
private focusThumb;
|
|
90
124
|
private setThumb;
|
|
@@ -14,9 +14,19 @@ import * as _angular_core from '@angular/core';
|
|
|
14
14
|
*/
|
|
15
15
|
declare class WrSparkline {
|
|
16
16
|
readonly data: _angular_core.InputSignal<readonly number[]>;
|
|
17
|
+
/**
|
|
18
|
+
* Accessible name. A sparkline usually sits beside the number it summarises, where
|
|
19
|
+
* announcing it again is noise — so it is `aria-hidden` by default and becomes a
|
|
20
|
+
* named `role="img"` only when a consumer says what it shows.
|
|
21
|
+
*/
|
|
22
|
+
readonly ariaLabel: _angular_core.InputSignal<string | null>;
|
|
17
23
|
/** Stroke colour. @default `var(--wr-color-primary)` */
|
|
18
24
|
readonly color: _angular_core.InputSignal<string>;
|
|
19
|
-
/**
|
|
25
|
+
/**
|
|
26
|
+
* Line thickness in CSS pixels — `vector-effect="non-scaling-stroke"` keeps it at
|
|
27
|
+
* that width whatever the box is stretched to, so it is NOT in viewBox units.
|
|
28
|
+
* @default 1.5
|
|
29
|
+
*/
|
|
20
30
|
readonly strokeWidth: _angular_core.InputSignalWithTransform<number, unknown>;
|
|
21
31
|
/** Fill the area below the line. @default false */
|
|
22
32
|
readonly showArea: _angular_core.InputSignalWithTransform<boolean, any>;
|
|
@@ -42,7 +52,7 @@ declare class WrSparkline {
|
|
|
42
52
|
} | null>;
|
|
43
53
|
protected readonly viewBox: string;
|
|
44
54
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<WrSparkline, never>;
|
|
45
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<WrSparkline, "wr-sparkline", never, { "data": { "alias": "data"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "strokeWidth": { "alias": "strokeWidth"; "required": false; "isSignal": true; }; "showArea": { "alias": "showArea"; "required": false; "isSignal": true; }; "showTip": { "alias": "showTip"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
55
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<WrSparkline, "wr-sparkline", never, { "data": { "alias": "data"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "strokeWidth": { "alias": "strokeWidth"; "required": false; "isSignal": true; }; "showArea": { "alias": "showArea"; "required": false; "isSignal": true; }; "showTip": { "alias": "showTip"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
46
56
|
}
|
|
47
57
|
|
|
48
58
|
export { WrSparkline };
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
|
+
import { ElementRef } from '@angular/core';
|
|
2
3
|
import { WrIconName } from 'ngwr/icon';
|
|
3
4
|
|
|
4
5
|
/** Per-button action shown when the dial expands. */
|
|
@@ -10,24 +11,6 @@ interface WrSpeedDialAction {
|
|
|
10
11
|
/** Direction the action buttons fan out. */
|
|
11
12
|
type WrSpeedDialDirection = 'up' | 'down' | 'left' | 'right';
|
|
12
13
|
|
|
13
|
-
/**
|
|
14
|
-
* Floating action button that expands into a fan of secondary actions on
|
|
15
|
-
* click / hover. Place inside a positioned container or near `position: fixed`
|
|
16
|
-
* — the component itself doesn't pin to the viewport.
|
|
17
|
-
*
|
|
18
|
-
* @example
|
|
19
|
-
* ```html
|
|
20
|
-
* <wr-speed-dial
|
|
21
|
-
* [actions]="[
|
|
22
|
-
* { id: 'new', label: 'New', icon: 'add' },
|
|
23
|
-
* { id: 'edit', label: 'Edit', icon: 'cog' }
|
|
24
|
-
* ]"
|
|
25
|
-
* (pick)="onPick($event)"
|
|
26
|
-
* />
|
|
27
|
-
* ```
|
|
28
|
-
*
|
|
29
|
-
* @see https://ngwr.dev/reference/components/speed-dial
|
|
30
|
-
*/
|
|
31
14
|
declare class WrSpeedDial {
|
|
32
15
|
readonly actions: _angular_core.InputSignal<readonly WrSpeedDialAction[]>;
|
|
33
16
|
/**
|
|
@@ -52,9 +35,25 @@ declare class WrSpeedDial {
|
|
|
52
35
|
readonly safeArea: _angular_core.InputSignalWithTransform<boolean, any>;
|
|
53
36
|
/** Fires when the user picks one of the actions. */
|
|
54
37
|
readonly pick: _angular_core.OutputEmitterRef<WrSpeedDialAction>;
|
|
38
|
+
/** Id the trigger's `aria-controls` points at. */
|
|
39
|
+
protected readonly menuId: string;
|
|
40
|
+
protected readonly triggerEl: _angular_core.Signal<ElementRef<HTMLButtonElement> | undefined>;
|
|
41
|
+
constructor();
|
|
55
42
|
protected readonly classes: _angular_core.Signal<string>;
|
|
56
43
|
protected onTrigger(): void;
|
|
57
44
|
protected onPick(action: WrSpeedDialAction): void;
|
|
45
|
+
/**
|
|
46
|
+
* `role="menu"` promises a way out, and the actions are ordinary buttons in the tab
|
|
47
|
+
* order — without this a keyboard user who opened the dial had to tab through every
|
|
48
|
+
* action to leave it.
|
|
49
|
+
*/
|
|
50
|
+
protected onKeydown(event: KeyboardEvent): void;
|
|
51
|
+
/**
|
|
52
|
+
* First GLYPH of the label, for an action with no icon. `charAt(0)` returns one
|
|
53
|
+
* UTF-16 code unit, which cuts an astral character (an emoji) in half and renders a
|
|
54
|
+
* replacement character.
|
|
55
|
+
*/
|
|
56
|
+
protected initial(label: string): string;
|
|
58
57
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<WrSpeedDial, never>;
|
|
59
58
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<WrSpeedDial, "wr-speed-dial", never, { "actions": { "alias": "actions"; "required": false; "isSignal": true; }; "triggerLabel": { "alias": "triggerLabel"; "required": false; "isSignal": true; }; "direction": { "alias": "direction"; "required": false; "isSignal": true; }; "open": { "alias": "open"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "safeArea": { "alias": "safeArea"; "required": false; "isSignal": true; }; }, { "open": "openChange"; "pick": "pick"; }, never, never, true, never>;
|
|
60
59
|
}
|
package/types/ngwr-spinner.d.ts
CHANGED
|
@@ -32,9 +32,16 @@ declare class WrSpinner {
|
|
|
32
32
|
* @default 'md'
|
|
33
33
|
*/
|
|
34
34
|
readonly size: _angular_core.InputSignal<WrSpinnerSize>;
|
|
35
|
+
/**
|
|
36
|
+
* Accessible name for the live region. Falls back to `spinner.label`, then
|
|
37
|
+
* `'Loading'` — which the host used to carry as a hard-coded attribute, while
|
|
38
|
+
* the catalog had the translated key for it all along.
|
|
39
|
+
*/
|
|
40
|
+
readonly ariaLabel: _angular_core.InputSignal<string | null>;
|
|
41
|
+
protected readonly resolvedAriaLabel: _angular_core.Signal<string>;
|
|
35
42
|
protected readonly classes: _angular_core.Signal<string>;
|
|
36
43
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<WrSpinner, never>;
|
|
37
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<WrSpinner, "wr-spinner", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
44
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<WrSpinner, "wr-spinner", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
38
45
|
}
|
|
39
46
|
|
|
40
47
|
export { WrSpinner };
|
package/types/ngwr-splitter.d.ts
CHANGED
|
@@ -36,8 +36,18 @@ declare class WrSplitter {
|
|
|
36
36
|
readonly maxPosition: _angular_core.InputSignalWithTransform<number, unknown>;
|
|
37
37
|
/** Disable dragging. @default false */
|
|
38
38
|
readonly disabled: _angular_core.InputSignalWithTransform<boolean, any>;
|
|
39
|
+
/**
|
|
40
|
+
* Accessible name of the divider. A focusable `role="separator"` is an
|
|
41
|
+
* interactive widget, so it needs one — without it a screen reader reaching the
|
|
42
|
+
* divider announces nothing but "separator" and its number. Falls back to
|
|
43
|
+
* `splitter.divider`.
|
|
44
|
+
*/
|
|
45
|
+
readonly dividerLabel: _angular_core.InputSignal<string | null>;
|
|
46
|
+
protected readonly resolvedDividerLabel: _angular_core.Signal<string>;
|
|
39
47
|
private readonly host;
|
|
48
|
+
private readonly dir;
|
|
40
49
|
private dragging;
|
|
50
|
+
constructor();
|
|
41
51
|
protected readonly classes: _angular_core.Signal<string>;
|
|
42
52
|
protected readonly startStyle: _angular_core.Signal<string>;
|
|
43
53
|
protected readonly endStyle: _angular_core.Signal<string>;
|
|
@@ -45,8 +55,21 @@ declare class WrSplitter {
|
|
|
45
55
|
protected onPointerMove(event: PointerEvent): void;
|
|
46
56
|
protected onPointerUp(event: PointerEvent): void;
|
|
47
57
|
protected onKeydown(event: KeyboardEvent): void;
|
|
58
|
+
/**
|
|
59
|
+
* Fraction of the host's width measured from the INLINE-START edge — the left edge in
|
|
60
|
+
* LTR, the right edge in RTL, which is where `flex-direction: row` puts the start pane
|
|
61
|
+
* whose size `position` is. Counted from `rect.left` in both, a drag under `dir="rtl"`
|
|
62
|
+
* read 0 where the start pane was widest and inverted the whole gesture.
|
|
63
|
+
*/
|
|
64
|
+
private inlineFraction;
|
|
65
|
+
/**
|
|
66
|
+
* Read per event rather than cached: nothing this component renders is derived from the
|
|
67
|
+
* direction — `flex-direction: row` mirrors the panes on its own — so there is no stale
|
|
68
|
+
* value for `Directionality.change` to invalidate.
|
|
69
|
+
*/
|
|
70
|
+
private isRtl;
|
|
48
71
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<WrSplitter, never>;
|
|
49
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<WrSplitter, "wr-splitter", never, { "position": { "alias": "position"; "required": false; "isSignal": true; }; "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; "minPosition": { "alias": "minPosition"; "required": false; "isSignal": true; }; "maxPosition": { "alias": "maxPosition"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "position": "positionChange"; }, never, ["[wrSplitterStart]", "[wrSplitterEnd]"], true, never>;
|
|
72
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<WrSplitter, "wr-splitter", never, { "position": { "alias": "position"; "required": false; "isSignal": true; }; "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; "minPosition": { "alias": "minPosition"; "required": false; "isSignal": true; }; "maxPosition": { "alias": "maxPosition"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "dividerLabel": { "alias": "dividerLabel"; "required": false; "isSignal": true; }; }, { "position": "positionChange"; }, never, ["[wrSplitterStart]", "[wrSplitterEnd]"], true, never>;
|
|
50
73
|
}
|
|
51
74
|
|
|
52
75
|
export { WrSplitter };
|
|
@@ -100,15 +100,25 @@ declare class WrStatisticCountdown {
|
|
|
100
100
|
/** Optional text shown once the countdown reaches zero. */
|
|
101
101
|
readonly endText: _angular_core.InputSignal<string | null>;
|
|
102
102
|
/**
|
|
103
|
-
* Tick interval in ms. Drop to ~16 for `SSS` (millisecond display).
|
|
103
|
+
* Tick interval in ms. Drop to ~16 for `SSS` (millisecond display). Floored
|
|
104
|
+
* at one frame — `0` (or an unparseable value) asked `setInterval` to run as
|
|
105
|
+
* fast as the browser would allow, which is a busy loop, not a countdown.
|
|
104
106
|
* @default 1000
|
|
105
107
|
*/
|
|
106
|
-
readonly tickMs: _angular_core.
|
|
108
|
+
readonly tickMs: _angular_core.InputSignalWithTransform<number, unknown>;
|
|
107
109
|
/** Fires once when the countdown crosses zero. */
|
|
108
110
|
readonly countdownEnd: _angular_core.OutputEmitterRef<void>;
|
|
109
111
|
private readonly destroyRef;
|
|
110
112
|
private readonly isBrowser;
|
|
111
113
|
private readonly targetMs;
|
|
114
|
+
/**
|
|
115
|
+
* Milliseconds left, or `null` when `target` does not parse to a date at all.
|
|
116
|
+
* `new Date('nope').getTime()` is `NaN`, and `NaN` propagated all the way to
|
|
117
|
+
* the screen as `NaN:NaN:NaN` — and, worse, `tick` compared it to `0` and so
|
|
118
|
+
* never fired `countdownEnd`, while a guard that only clamped the text would
|
|
119
|
+
* have fired it immediately for a target that was never reached.
|
|
120
|
+
*/
|
|
121
|
+
private remainingMs;
|
|
112
122
|
/** Remaining milliseconds (live signal). */
|
|
113
123
|
protected readonly remaining: _angular_core.WritableSignal<number>;
|
|
114
124
|
protected readonly finished: _angular_core.WritableSignal<boolean>;
|