ngwr 10.2.1 → 11.1.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/action-sheet/styles/_index.scss +4 -1
- package/anchor/styles/_index.scss +6 -5
- package/back-top/styles/_index.scss +6 -1
- package/blur-text/styles/_index.scss +13 -0
- package/button/styles/_index.scss +11 -6
- package/calendar/styles/_index.scss +11 -2
- package/carousel/styles/_index.scss +13 -2
- package/cascader/styles/_index.scss +5 -3
- package/circular-text/styles/_index.scss +2 -0
- package/collapse/styles/_index.scss +1 -1
- package/color-picker/styles/_index.scss +6 -1
- package/command-palette/styles/_index.scss +2 -1
- package/compare/styles/_index.scss +1 -2
- package/context-menu/styles/_index.scss +8 -2
- 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/falling-text/styles/_index.scss +2 -1
- 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/file-upload/styles/_index.scss +7 -2
- 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/result/styles/_index.scss +3 -1
- package/schematics/use/symbol-map.json +2 -0
- package/segmented/styles/_index.scss +12 -1
- package/select/styles/_index.scss +32 -10
- 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 +19 -3
- package/styles/_grid.scss +4 -4
- package/styles.scss +1 -0
- package/switch/styles/_index.scss +5 -3
- package/table/styles/_index.scss +25 -12
- package/tabs/styles/_index.scss +11 -1
- package/textarea/styles/_index.scss +5 -0
- package/theme/styles/_colors.scss +44 -15
- package/theme/styles/_dark.scss +35 -15
- 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 +9 -5
- 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
|
@@ -0,0 +1,423 @@
|
|
|
1
|
+
import { BaseHarnessFilters, ContentContainerComponentHarness, HarnessPredicate, ComponentHarness } from '@angular/cdk/testing';
|
|
2
|
+
|
|
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
|
+
/** Narrows which `<wr-table>` a harness query matches. */
|
|
11
|
+
interface WrTableHarnessFilters extends BaseHarnessFilters {
|
|
12
|
+
/**
|
|
13
|
+
* Match a table that renders a column with this header title — the readable way
|
|
14
|
+
* to tell two tables on one page apart. A string is an exact match, a RegExp is
|
|
15
|
+
* tested.
|
|
16
|
+
*/
|
|
17
|
+
readonly columnTitle?: string | RegExp;
|
|
18
|
+
/** Match only hierarchies (`true` — a `treegrid`) or only flat tables (`false`). */
|
|
19
|
+
readonly tree?: boolean;
|
|
20
|
+
}
|
|
21
|
+
/** Narrows which body row a harness query matches. */
|
|
22
|
+
interface WrTableRowHarnessFilters extends BaseHarnessFilters {
|
|
23
|
+
/** Match a row where ANY data cell's text matches. A string is exact, a RegExp is tested. */
|
|
24
|
+
readonly cellText?: string | RegExp;
|
|
25
|
+
/** Match only selected (`true`) or only unselected (`false`) rows. */
|
|
26
|
+
readonly selected?: boolean;
|
|
27
|
+
/** Match only open (`true`) or only closed (`false`) rows — a detail row or a tree branch. */
|
|
28
|
+
readonly expanded?: boolean;
|
|
29
|
+
/**
|
|
30
|
+
* Match the row's 1-based `aria-level`, i.e. its depth in a tree. Rows of a flat
|
|
31
|
+
* table announce no level and never match.
|
|
32
|
+
*/
|
|
33
|
+
readonly level?: number;
|
|
34
|
+
}
|
|
35
|
+
/** Narrows which data cell a harness query matches. */
|
|
36
|
+
interface WrTableCellHarnessFilters extends BaseHarnessFilters {
|
|
37
|
+
/** Match the cell's text — a string is an exact match, a RegExp is tested. */
|
|
38
|
+
readonly text?: string | RegExp;
|
|
39
|
+
/** Match the title of the column the cell sits in. */
|
|
40
|
+
readonly columnTitle?: string | RegExp;
|
|
41
|
+
}
|
|
42
|
+
/** Narrows which column header a harness query matches. */
|
|
43
|
+
interface WrTableHeaderCellHarnessFilters extends BaseHarnessFilters {
|
|
44
|
+
/** Match the column title — a string is an exact match, a RegExp is tested. */
|
|
45
|
+
readonly text?: string | RegExp;
|
|
46
|
+
/** Match only sortable (`true`) or only plain (`false`) columns. */
|
|
47
|
+
readonly sortable?: boolean;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* @license
|
|
52
|
+
*
|
|
53
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
54
|
+
* found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
|
|
55
|
+
*/
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Test harness for one data cell of a `<wr-table>` row.
|
|
59
|
+
*
|
|
60
|
+
* A CONTENT CONTAINER, because a cell is where a consumer's own components end
|
|
61
|
+
* up: a `[wrTableCell]` template can render a `<wr-tag>`, a button, an input, and
|
|
62
|
+
* `cell.getHarness(WrButtonHarness…)` resolves those INSIDE this cell — so the
|
|
63
|
+
* "Delete" button of row 3 cannot be mistaken for the one in row 1.
|
|
64
|
+
*
|
|
65
|
+
* @example
|
|
66
|
+
* ```ts
|
|
67
|
+
* const [row] = await table.getRows({ cellText: 'Ada' });
|
|
68
|
+
* const [status] = await row.getCells({ columnTitle: 'Status' });
|
|
69
|
+
*
|
|
70
|
+
* expect(await status.getText()).toBe('active');
|
|
71
|
+
* ```
|
|
72
|
+
*
|
|
73
|
+
* @see https://ngwr.dev/guides/testing
|
|
74
|
+
*/
|
|
75
|
+
declare class WrTableCellHarness extends ContentContainerComponentHarness {
|
|
76
|
+
/**
|
|
77
|
+
* Data cells only. The lead selection and expand cells carry the same
|
|
78
|
+
* `.wr-table__td` class — they hold the row's controls, not its data — so a cell
|
|
79
|
+
* list that swept them in would no longer line up with the header list.
|
|
80
|
+
*/
|
|
81
|
+
static hostSelector: string;
|
|
82
|
+
/** Build a predicate that narrows the query. */
|
|
83
|
+
static with(options?: WrTableCellHarnessFilters): HarnessPredicate<WrTableCellHarness>;
|
|
84
|
+
/** The cell's text, with the template's indentation collapsed to single spaces. */
|
|
85
|
+
getText(): Promise<string>;
|
|
86
|
+
/**
|
|
87
|
+
* The title of the column this cell belongs to.
|
|
88
|
+
*
|
|
89
|
+
* Read from `data-label` — the attribute responsive card mode prints in front of
|
|
90
|
+
* each value — because it is the only place a cell says which column it is in.
|
|
91
|
+
* The column KEY is never in the DOM at all.
|
|
92
|
+
*/
|
|
93
|
+
getColumnTitle(): Promise<string | null>;
|
|
94
|
+
/** Which edge the cell's column is frozen against, or `null` when it scrolls. */
|
|
95
|
+
getPin(): Promise<'left' | 'right' | null>;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* @license
|
|
100
|
+
*
|
|
101
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
102
|
+
* found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
|
|
103
|
+
*/
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* Test harness for one column header of a `<wr-table>`.
|
|
107
|
+
*
|
|
108
|
+
* The selector deliberately skips the two LEAD headers — selection and expand —
|
|
109
|
+
* which carry the same `.wr-table__th` class but hold a checkbox or nothing at
|
|
110
|
+
* all. What is left lines up index-for-index with the data columns, so a header's
|
|
111
|
+
* position is its column's position.
|
|
112
|
+
*
|
|
113
|
+
* Columns are addressed by their TITLE here and everywhere else in this harness
|
|
114
|
+
* family, never by their `columns` key: the key never reaches the DOM. Only the
|
|
115
|
+
* title does — in this header and in every cell's `data-label` — so it is the one
|
|
116
|
+
* handle a spec and the rendered table share.
|
|
117
|
+
*
|
|
118
|
+
* @see https://ngwr.dev/guides/testing
|
|
119
|
+
*/
|
|
120
|
+
declare class WrTableHeaderCellHarness extends ComponentHarness {
|
|
121
|
+
static hostSelector: string;
|
|
122
|
+
/** Build a predicate that narrows the query. */
|
|
123
|
+
static with(options?: WrTableHeaderCellHarnessFilters): HarnessPredicate<WrTableHeaderCellHarness>;
|
|
124
|
+
/** The column title, trimmed. The sort and filter controls are not part of it. */
|
|
125
|
+
getText(): Promise<string>;
|
|
126
|
+
/**
|
|
127
|
+
* The direction this column announces, exactly as `aria-sort` puts it — or
|
|
128
|
+
* `null` when the column does not sort.
|
|
129
|
+
*
|
|
130
|
+
* `null` is not "unsorted": a sortable column with no direction announces
|
|
131
|
+
* `'none'`, and only a plain column omits the attribute entirely. Claiming
|
|
132
|
+
* sortability a column does not have is the bug that distinction prevents.
|
|
133
|
+
*/
|
|
134
|
+
getSortDirection(): Promise<'ascending' | 'descending' | 'none' | null>;
|
|
135
|
+
/** Whether the column offers sorting at all. */
|
|
136
|
+
isSortable(): Promise<boolean>;
|
|
137
|
+
/**
|
|
138
|
+
* Advance the sort one step — none → ascending → descending → none, the cycle a
|
|
139
|
+
* click on the indicator drives.
|
|
140
|
+
*
|
|
141
|
+
* Throws on a column with no sort control rather than doing nothing: the quiet
|
|
142
|
+
* version of this leaves a spec asserting an unchanged direction and passing.
|
|
143
|
+
*/
|
|
144
|
+
sort(): Promise<void>;
|
|
145
|
+
/** Whether the column offers a filter dropdown (its definition carries a NON-EMPTY `filterItems`). */
|
|
146
|
+
isFilterable(): Promise<boolean>;
|
|
147
|
+
/** Which edge the column is frozen against, or `null` when it scrolls with the rest. */
|
|
148
|
+
getPin(): Promise<'left' | 'right' | null>;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* @license
|
|
153
|
+
*
|
|
154
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
155
|
+
* found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
|
|
156
|
+
*/
|
|
157
|
+
|
|
158
|
+
/**
|
|
159
|
+
* Test harness for one body row of a `<wr-table>` — flat, grouped or tree.
|
|
160
|
+
*
|
|
161
|
+
* Also a CONTENT CONTAINER, so `row.getHarness(WrButtonHarness…)` reaches the
|
|
162
|
+
* consumer's own components anywhere in the row without leaving this row.
|
|
163
|
+
*
|
|
164
|
+
* @example
|
|
165
|
+
* ```ts
|
|
166
|
+
* const [ada] = await table.getRows({ cellText: 'Ada' });
|
|
167
|
+
*
|
|
168
|
+
* await ada.select();
|
|
169
|
+
* await (await ada.getHarness(WrButtonHarness.with({ text: 'Edit' }))).click();
|
|
170
|
+
* ```
|
|
171
|
+
*
|
|
172
|
+
* @see https://ngwr.dev/guides/testing
|
|
173
|
+
*/
|
|
174
|
+
declare class WrTableRowHarness extends ContentContainerComponentHarness {
|
|
175
|
+
/**
|
|
176
|
+
* `.wr-table__tr` is the DATA row and nothing else.
|
|
177
|
+
*
|
|
178
|
+
* Everything else a `<tbody>` can hold is a `<tr>` too: the group band
|
|
179
|
+
* (`.wr-table__group-row`), its subtotal row, the detail row a `[wrTableExpand]`
|
|
180
|
+
* template renders, the two virtual spacers, and the "no data" row. Querying
|
|
181
|
+
* `tbody tr` would hand every one of those back as a row with no cells.
|
|
182
|
+
*/
|
|
183
|
+
static hostSelector: string;
|
|
184
|
+
/** Build a predicate that narrows the query. */
|
|
185
|
+
static with(options?: WrTableRowHarnessFilters): HarnessPredicate<WrTableRowHarness>;
|
|
186
|
+
private readonly selectBox;
|
|
187
|
+
/**
|
|
188
|
+
* The row's disclosure control, whichever of the two the table gave it: the lead
|
|
189
|
+
* button of a `[wrTableExpand]` table, or the tree toggle inside the tree column.
|
|
190
|
+
* The two never coexist — a tree row owns its own disclosure, so the component
|
|
191
|
+
* refuses the pair.
|
|
192
|
+
*
|
|
193
|
+
* `button` in the tree selector is load-bearing. A leaf renders a `<span>` with
|
|
194
|
+
* the same `.wr-table__tree-toggle` class purely to hold the indent, and taking
|
|
195
|
+
* that for a control would report every leaf as expandable.
|
|
196
|
+
*/
|
|
197
|
+
private readonly disclosure;
|
|
198
|
+
/** The row's data cells, in DOM order. The lead control cells are not cells. */
|
|
199
|
+
getCells(filters?: WrTableCellHarnessFilters): Promise<WrTableCellHarness[]>;
|
|
200
|
+
/** The text of every data cell, in DOM order. */
|
|
201
|
+
getCellTexts(): Promise<string[]>;
|
|
202
|
+
/**
|
|
203
|
+
* Whether the row is selected.
|
|
204
|
+
*
|
|
205
|
+
* Read from the `--selected` modifier, which is what the row looks like and what
|
|
206
|
+
* a consumer styles against. It also means a row is not "selected" while
|
|
207
|
+
* `rowSelection` is off, however many keys the `selection` model holds — nothing
|
|
208
|
+
* on screen says otherwise.
|
|
209
|
+
*/
|
|
210
|
+
isSelected(): Promise<boolean>;
|
|
211
|
+
/** Whether the row offers a selection checkbox at all. */
|
|
212
|
+
isSelectable(): Promise<boolean>;
|
|
213
|
+
/** Flip the row's checkbox. Throws when the table has no selection column. */
|
|
214
|
+
toggleSelection(): Promise<void>;
|
|
215
|
+
/** Select the row if it is not already selected. */
|
|
216
|
+
select(): Promise<void>;
|
|
217
|
+
/** Deselect the row if it is selected. */
|
|
218
|
+
deselect(): Promise<void>;
|
|
219
|
+
/**
|
|
220
|
+
* Whether the row has something to open — a detail template's disclosure, or
|
|
221
|
+
* children in a tree. A tree leaf answers `false`.
|
|
222
|
+
*/
|
|
223
|
+
isExpandable(): Promise<boolean>;
|
|
224
|
+
/** Whether the row is open, from the disclosure's `aria-expanded`. */
|
|
225
|
+
isExpanded(): Promise<boolean>;
|
|
226
|
+
/** Open or close the row. Throws when it has nothing to open. */
|
|
227
|
+
toggleExpand(): Promise<void>;
|
|
228
|
+
/**
|
|
229
|
+
* The row's depth as the table announces it — 1-based `aria-level`, `null` in a
|
|
230
|
+
* flat table, where depth is not a thing that exists.
|
|
231
|
+
*/
|
|
232
|
+
getLevel(): Promise<number | null>;
|
|
233
|
+
/** The row's 1-based position among its siblings (`aria-posinset`), or `null` when flat. */
|
|
234
|
+
getPosInSet(): Promise<number | null>;
|
|
235
|
+
/** How many rows are in the row's sibling set, itself included (`aria-setsize`); `null` when flat. */
|
|
236
|
+
getSetSize(): Promise<number | null>;
|
|
237
|
+
/**
|
|
238
|
+
* The row's 1-based index in the FULL dataset (`aria-rowindex`, header included),
|
|
239
|
+
* or `null` when the table is not virtualized.
|
|
240
|
+
*
|
|
241
|
+
* Only a windowed table publishes it, and that is precisely when it matters: the
|
|
242
|
+
* rows in the DOM are a slice, so their DOM order says nothing about where they
|
|
243
|
+
* sit in the data.
|
|
244
|
+
*/
|
|
245
|
+
getRowIndex(): Promise<number | null>;
|
|
246
|
+
private numericAttribute;
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
/**
|
|
250
|
+
* @license
|
|
251
|
+
*
|
|
252
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
253
|
+
* found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
|
|
254
|
+
*/
|
|
255
|
+
|
|
256
|
+
/**
|
|
257
|
+
* Test harness for `<wr-table>` — the root of a small family, since a table is a
|
|
258
|
+
* tree and not one control: {@link WrTableHeaderCellHarness} for a column header,
|
|
259
|
+
* {@link WrTableRowHarness} for a body row, and `WrTableCellHarness` for a cell.
|
|
260
|
+
*
|
|
261
|
+
* Columns are addressed by their header TITLE, never by their `columns` key: the
|
|
262
|
+
* key never reaches the DOM.
|
|
263
|
+
*
|
|
264
|
+
* What this harness deliberately does NOT do:
|
|
265
|
+
* - open a column's filter dropdown. The panel is a `wr-dropdown` in the overlay
|
|
266
|
+
* container, and driving it belongs to a dropdown harness rather than this one;
|
|
267
|
+
* {@link WrTableHeaderCellHarness.isFilterable} reports that a column offers one.
|
|
268
|
+
* - scroll a virtualized body. See {@link getRows}.
|
|
269
|
+
*
|
|
270
|
+
* @example
|
|
271
|
+
* ```ts
|
|
272
|
+
* const table = await loader.getHarness(WrTableHarness);
|
|
273
|
+
*
|
|
274
|
+
* expect(await table.getHeaderTexts()).toEqual(['Name', 'Role']);
|
|
275
|
+
* await table.sortByColumn('Name');
|
|
276
|
+
* expect(await table.getSortDirection('Name')).toBe('ascending');
|
|
277
|
+
* ```
|
|
278
|
+
*
|
|
279
|
+
* @see https://ngwr.dev/guides/testing
|
|
280
|
+
*/
|
|
281
|
+
declare class WrTableHarness extends ComponentHarness {
|
|
282
|
+
static hostSelector: string;
|
|
283
|
+
/** Build a predicate that narrows the query — pass to `getHarness` / `getAllHarnesses`. */
|
|
284
|
+
static with(options?: WrTableHarnessFilters): HarnessPredicate<WrTableHarness>;
|
|
285
|
+
private readonly tableEl;
|
|
286
|
+
private readonly selectAllBox;
|
|
287
|
+
/**
|
|
288
|
+
* The role the table announces.
|
|
289
|
+
*
|
|
290
|
+
* A flat table sets no `role` at all, so it announces the native `table` role —
|
|
291
|
+
* NOT `grid`, which would promise cell-by-cell keyboard navigation it does not
|
|
292
|
+
* implement. `childrenKey` turns it into a `treegrid`, and that role is the only
|
|
293
|
+
* place the hierarchy exists for a screen-reader user: the indent is decoration.
|
|
294
|
+
*/
|
|
295
|
+
getRole(): Promise<'treegrid' | 'table'>;
|
|
296
|
+
/** Whether the rows are a hierarchy rather than a flat list. */
|
|
297
|
+
isTree(): Promise<boolean>;
|
|
298
|
+
/**
|
|
299
|
+
* Whether the body is WINDOWED right now.
|
|
300
|
+
*
|
|
301
|
+
* Read from the host modifier rather than from the input, and that is the point:
|
|
302
|
+
* `virtualScroll` is a request, not a promise. The table falls back to rendering
|
|
303
|
+
* every row whenever the layout stops being uniform — grouping, a detail
|
|
304
|
+
* template, responsive card mode, a visible pager, a tree — so this answers what
|
|
305
|
+
* actually happened.
|
|
306
|
+
*/
|
|
307
|
+
isVirtual(): Promise<boolean>;
|
|
308
|
+
/** Whether the loading spinner is covering the table. */
|
|
309
|
+
isLoading(): Promise<boolean>;
|
|
310
|
+
/** The column headers, in render order — which `columnOrder` and a drag can change. */
|
|
311
|
+
getHeaderCells(filters?: WrTableHeaderCellHarnessFilters): Promise<WrTableHeaderCellHarness[]>;
|
|
312
|
+
/**
|
|
313
|
+
* The column titles, in render order.
|
|
314
|
+
*
|
|
315
|
+
* The selection and expand headers are not columns and are not here, so this
|
|
316
|
+
* list stays as wide as every row from {@link getCellTexts}.
|
|
317
|
+
*/
|
|
318
|
+
getHeaderTexts(): Promise<string[]>;
|
|
319
|
+
/** The direction a column announces via `aria-sort`, or `null` when it does not sort. */
|
|
320
|
+
getSortDirection(columnTitle: string): Promise<'ascending' | 'descending' | 'none' | null>;
|
|
321
|
+
/**
|
|
322
|
+
* Advance a column's sort one step — none → ascending → descending → none.
|
|
323
|
+
*
|
|
324
|
+
* Sorting is the host's job: `<wr-table>` publishes the intent through its `sort`
|
|
325
|
+
* model and never reorders `items` itself, so a spec that expects the rows to
|
|
326
|
+
* move has to sort the data the way the app does.
|
|
327
|
+
*/
|
|
328
|
+
sortByColumn(columnTitle: string): Promise<void>;
|
|
329
|
+
/**
|
|
330
|
+
* The body rows currently rendered, in DOM order.
|
|
331
|
+
*
|
|
332
|
+
* "Currently rendered" is the whole caveat of a virtualized table: while
|
|
333
|
+
* {@link isVirtual} is true the `<tbody>` holds only the window around the scroll
|
|
334
|
+
* offset, padded by a spacer row at each end that still has rows to stand in for
|
|
335
|
+
* (one of them, at the top or the bottom of the list), so this returns the
|
|
336
|
+
* WINDOW — not the dataset.
|
|
337
|
+
* {@link getAriaRowCount} is the total the table announces and
|
|
338
|
+
* {@link WrTableRowHarness.getRowIndex} says where a row sits in it. Nothing here
|
|
339
|
+
* scrolls that window on purpose: the viewport has no layout in a unit test, so a
|
|
340
|
+
* `scrollTo` would silently do nothing. Reach for `WrTable.scrollToRow()` in a
|
|
341
|
+
* real browser, or narrow the data instead.
|
|
342
|
+
*
|
|
343
|
+
* Group bands, per-group subtotals, detail rows and the "no data" row are not
|
|
344
|
+
* rows and never appear here.
|
|
345
|
+
*/
|
|
346
|
+
getRows(filters?: WrTableRowHarnessFilters): Promise<WrTableRowHarness[]>;
|
|
347
|
+
/** The whole body as a matrix of cell text — one array per row, one entry per column. */
|
|
348
|
+
getCellTexts(): Promise<string[][]>;
|
|
349
|
+
/**
|
|
350
|
+
* The `<tfoot>` summary cells, one per column and `''` for a column with no
|
|
351
|
+
* `summary`. Empty when no column defines one.
|
|
352
|
+
*
|
|
353
|
+
* The lead cells are dropped so this lines up with {@link getHeaderTexts}. A
|
|
354
|
+
* per-group subtotal row is NOT here — it lives in the body, under its band.
|
|
355
|
+
*/
|
|
356
|
+
getFooterTexts(): Promise<string[]>;
|
|
357
|
+
/** The "no data" message, or `null` while the table has rows to show. */
|
|
358
|
+
getEmptyText(): Promise<string | null>;
|
|
359
|
+
/**
|
|
360
|
+
* The row count the table announces (`aria-rowcount` — header and summary row
|
|
361
|
+
* included), or `null` when it is not virtualized and every row is in the DOM.
|
|
362
|
+
*/
|
|
363
|
+
getAriaRowCount(): Promise<number | null>;
|
|
364
|
+
/** Whether the header offers a select-all box — only `rowSelection="multiple"` does. */
|
|
365
|
+
hasSelectAll(): Promise<boolean>;
|
|
366
|
+
/** Whether every row in the select-all scope is selected — see {@link toggleSelectAll}. */
|
|
367
|
+
isAllSelected(): Promise<boolean>;
|
|
368
|
+
/**
|
|
369
|
+
* Whether some rows are selected and others are not — the box's third state.
|
|
370
|
+
*
|
|
371
|
+
* `indeterminate` is a DOM PROPERTY, not an attribute: reading the attribute
|
|
372
|
+
* reports `null` for a box that is visibly dashed.
|
|
373
|
+
*/
|
|
374
|
+
isPartiallySelected(): Promise<boolean>;
|
|
375
|
+
/**
|
|
376
|
+
* Click the select-all box, once.
|
|
377
|
+
*
|
|
378
|
+
* Its scope is the rows the table RENDERS — the current page, and a collapsed
|
|
379
|
+
* group's rows are out because collapsing drops them from that list. A
|
|
380
|
+
* virtualized table's off-window rows are IN, though: the window is a slice
|
|
381
|
+
* taken after the list is built, so one click selects the whole dataset and not
|
|
382
|
+
* just what is in the DOM. And the third state is worth knowing about before
|
|
383
|
+
* asserting: while the selection is partial the box reads unchecked, so one
|
|
384
|
+
* click selects everything rather than clearing it.
|
|
385
|
+
*/
|
|
386
|
+
toggleSelectAll(): Promise<void>;
|
|
387
|
+
/**
|
|
388
|
+
* The text of each open detail row, in row order.
|
|
389
|
+
*
|
|
390
|
+
* A detail row is a full-width `<tr>` NEXT TO the row it belongs to, not inside
|
|
391
|
+
* it — which is why it is neither one of {@link getRows} nor one of a row's
|
|
392
|
+
* cells.
|
|
393
|
+
*/
|
|
394
|
+
getDetailTexts(): Promise<string[]>;
|
|
395
|
+
/**
|
|
396
|
+
* The group band labels, in order.
|
|
397
|
+
*
|
|
398
|
+
* Empty when `groupBy` is off — and also when a `[wrTableGroupHeader]` template
|
|
399
|
+
* replaced the built-in band, since the label is then the consumer's own markup.
|
|
400
|
+
* Reach for that through {@link getRows}' siblings or your own component's
|
|
401
|
+
* harness.
|
|
402
|
+
*/
|
|
403
|
+
getGroupLabels(): Promise<string[]>;
|
|
404
|
+
/** Whether the band with this label is collapsed. */
|
|
405
|
+
isGroupCollapsed(label: string): Promise<boolean>;
|
|
406
|
+
/** Collapse or expand the band with this label. */
|
|
407
|
+
toggleGroup(label: string): Promise<void>;
|
|
408
|
+
/** The header for a column title, or a failure that says which titles do exist. */
|
|
409
|
+
private headerCellFor;
|
|
410
|
+
/**
|
|
411
|
+
* The collapse toggle of one band.
|
|
412
|
+
*
|
|
413
|
+
* Paired by index rather than by containment: both lists are emitted once per
|
|
414
|
+
* band by the same loop, in the same order, and a `TestElement` cannot be
|
|
415
|
+
* queried into.
|
|
416
|
+
*/
|
|
417
|
+
private groupToggleFor;
|
|
418
|
+
/** The select-all input, or a failure naming both reasons it is missing. */
|
|
419
|
+
private selectAllHost;
|
|
420
|
+
}
|
|
421
|
+
|
|
422
|
+
export { WrTableCellHarness, WrTableHarness, WrTableHeaderCellHarness, WrTableRowHarness };
|
|
423
|
+
export type { WrTableCellHarnessFilters, WrTableHarnessFilters, WrTableHeaderCellHarnessFilters, WrTableRowHarnessFilters };
|
package/types/ngwr-table.d.ts
CHANGED
|
@@ -438,6 +438,17 @@ declare class WrTable {
|
|
|
438
438
|
protected readonly cellMap: _angular_core.Signal<Map<string, TemplateRef<WrTableCellContext>>>;
|
|
439
439
|
private readonly platformId;
|
|
440
440
|
private readonly headerCells;
|
|
441
|
+
/**
|
|
442
|
+
* Ambient reading direction, for the two header gestures that travel the
|
|
443
|
+
* inline axis: the resize drag and the CDK's drop-slot index.
|
|
444
|
+
*
|
|
445
|
+
* Optional so a bare `TestBed` — or a consumer who never set a direction —
|
|
446
|
+
* needs no provider; `Directionality` is root-provided anyway, and a missing
|
|
447
|
+
* one reads as `ltr`. Read per gesture rather than cached, so a runtime `dir`
|
|
448
|
+
* flip needs no subscription to `change`.
|
|
449
|
+
*/
|
|
450
|
+
private readonly dir;
|
|
451
|
+
private isRtl;
|
|
441
452
|
/**
|
|
442
453
|
* Columns in render order — declaration order, overridden by `columnOrder`
|
|
443
454
|
* once reordered; new keys append, removed keys drop out. Pin and resize
|
|
@@ -477,6 +488,16 @@ declare class WrTable {
|
|
|
477
488
|
/** Freeze every column at its current rendered header width (skips frozen keys). */
|
|
478
489
|
private freezeColumnWidths;
|
|
479
490
|
protected onResizeStart(event: PointerEvent, key: string, th: HTMLElement): void;
|
|
491
|
+
/**
|
|
492
|
+
* Pointer travel along the INLINE axis since the drag started, in px.
|
|
493
|
+
*
|
|
494
|
+
* The grip sits on each column's inline-END edge, so a column grows as the
|
|
495
|
+
* pointer moves away from that column's start: rightward in LTR, leftward in
|
|
496
|
+
* RTL. Signed here once rather than sprinkled through the width maths — and
|
|
497
|
+
* this sign is the pair of `inset-inline-end` on `.wr-table__resize-handle`,
|
|
498
|
+
* so the two must move together.
|
|
499
|
+
*/
|
|
500
|
+
private resizeDelta;
|
|
480
501
|
protected onResizeMove(event: PointerEvent): void;
|
|
481
502
|
protected onResizeEnd(event: PointerEvent): void;
|
|
482
503
|
/** md-density fallback row height (px), used before measuring / on the server. */
|
|
@@ -519,6 +540,17 @@ declare class WrTable {
|
|
|
519
540
|
/**
|
|
520
541
|
* Keep pinned columns anchored — a drop can't land on a pinned column's slot,
|
|
521
542
|
* so a scrollable column can't be dragged into the frozen region at either edge.
|
|
543
|
+
*
|
|
544
|
+
* The index the CDK hands over is a slot in the pointer sweep it does along
|
|
545
|
+
* the header, and that sweep is always left-to-right (`SingleAxisSortStrategy`
|
|
546
|
+
* caches item rects sorted by `clientRect.left`). `displayColumns()` is DOM
|
|
547
|
+
* order, which under `dir="rtl"` runs the other way — so without the mirror
|
|
548
|
+
* the guard is asked about the column at the opposite end of the header, and
|
|
549
|
+
* a drop lands on the pinned one it was meant to protect.
|
|
550
|
+
*
|
|
551
|
+
* The drop event itself needs no such mapping: `previousIndex` /
|
|
552
|
+
* `currentIndex` come from `getItemIndex`, which the CDK already un-mirrors
|
|
553
|
+
* back to DOM order.
|
|
522
554
|
*/
|
|
523
555
|
protected readonly sortPredicate: (index: number) => boolean;
|
|
524
556
|
private rowKeyOf;
|
|
@@ -760,6 +792,16 @@ declare class WrTableFilter {
|
|
|
760
792
|
protected readonly query: _angular_core.WritableSignal<string>;
|
|
761
793
|
/** Filtered + selection-tracked view of items. */
|
|
762
794
|
protected readonly visible: _angular_core.Signal<WrTableFilterItem<unknown>[]>;
|
|
795
|
+
/**
|
|
796
|
+
* Bumped on every selection change.
|
|
797
|
+
*
|
|
798
|
+
* `items` belongs to the CONSUMER — the column definition hands the same array
|
|
799
|
+
* back on every render — and this component flips `selected` on those objects in
|
|
800
|
+
* place. No signal sees a property mutation, so `selectedCount` memoised its
|
|
801
|
+
* first answer: the count badge never appeared and the `--active` class never
|
|
802
|
+
* arrived, however many boxes were ticked.
|
|
803
|
+
*/
|
|
804
|
+
private readonly selectionVersion;
|
|
763
805
|
protected readonly selectedCount: _angular_core.Signal<number>;
|
|
764
806
|
protected readonly classes: _angular_core.Signal<string>;
|
|
765
807
|
protected onSearchInput(event: Event): void;
|