ngwr 10.2.0 → 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 +38 -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 +15 -5
- package/fesm2022/ngwr-action-sheet.mjs.map +1 -1
- package/fesm2022/ngwr-affix.mjs +43 -16
- package/fesm2022/ngwr-affix.mjs.map +1 -1
- package/fesm2022/ngwr-alert.mjs +3 -3
- package/fesm2022/ngwr-anchor.mjs +20 -8
- package/fesm2022/ngwr-anchor.mjs.map +1 -1
- package/fesm2022/ngwr-aurora.mjs +4 -4
- package/fesm2022/ngwr-aurora.mjs.map +1 -1
- package/fesm2022/ngwr-avatar.mjs +33 -9
- package/fesm2022/ngwr-avatar.mjs.map +1 -1
- package/fesm2022/ngwr-back-top.mjs +8 -4
- package/fesm2022/ngwr-back-top.mjs.map +1 -1
- package/fesm2022/ngwr-badge.mjs +6 -6
- package/fesm2022/ngwr-badge.mjs.map +1 -1
- package/fesm2022/ngwr-bar-chart.mjs +32 -11
- package/fesm2022/ngwr-bar-chart.mjs.map +1 -1
- package/fesm2022/ngwr-blur-text.mjs +4 -4
- package/fesm2022/ngwr-blur-text.mjs.map +1 -1
- package/fesm2022/ngwr-border-glow.mjs +4 -4
- package/fesm2022/ngwr-border-glow.mjs.map +1 -1
- package/fesm2022/ngwr-breadcrumbs.mjs +9 -8
- package/fesm2022/ngwr-breadcrumbs.mjs.map +1 -1
- package/fesm2022/ngwr-burger.mjs +11 -6
- 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 +89 -24
- package/fesm2022/ngwr-button.mjs.map +1 -1
- package/fesm2022/ngwr-calendar-heatmap.mjs +42 -10
- package/fesm2022/ngwr-calendar-heatmap.mjs.map +1 -1
- package/fesm2022/ngwr-calendar.mjs +108 -9
- package/fesm2022/ngwr-calendar.mjs.map +1 -1
- package/fesm2022/ngwr-card.mjs +10 -10
- 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 +72 -18
- 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 +4 -4
- 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 +15 -9
- package/fesm2022/ngwr-checkbox.mjs.map +1 -1
- package/fesm2022/ngwr-circular-text.mjs +4 -4
- package/fesm2022/ngwr-circular-text.mjs.map +1 -1
- package/fesm2022/ngwr-click-spark.mjs +4 -4
- package/fesm2022/ngwr-click-spark.mjs.map +1 -1
- package/fesm2022/ngwr-clipboard.mjs +18 -4
- package/fesm2022/ngwr-clipboard.mjs.map +1 -1
- package/fesm2022/ngwr-collapse-testing.mjs +368 -0
- package/fesm2022/ngwr-collapse-testing.mjs.map +1 -0
- package/fesm2022/ngwr-collapse.mjs +9 -9
- package/fesm2022/ngwr-color-picker.mjs +139 -19
- 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 +60 -10
- package/fesm2022/ngwr-command-palette.mjs.map +1 -1
- package/fesm2022/ngwr-compare.mjs +105 -15
- package/fesm2022/ngwr-compare.mjs.map +1 -1
- package/fesm2022/ngwr-confetti.mjs +3 -3
- 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 +104 -18
- package/fesm2022/ngwr-context-menu.mjs.map +1 -1
- package/fesm2022/ngwr-cookie.mjs +8 -4
- package/fesm2022/ngwr-cookie.mjs.map +1 -1
- package/fesm2022/ngwr-counter.mjs +17 -9
- package/fesm2022/ngwr-counter.mjs.map +1 -1
- package/fesm2022/ngwr-date-adapter-fns.mjs +3 -3
- package/fesm2022/ngwr-date-adapter-luxon.mjs +55 -7
- package/fesm2022/ngwr-date-adapter-luxon.mjs.map +1 -1
- package/fesm2022/ngwr-date-adapter.mjs +57 -11
- 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 +409 -57
- package/fesm2022/ngwr-date-picker.mjs.map +1 -1
- package/fesm2022/ngwr-decrypt-text.mjs +30 -12
- package/fesm2022/ngwr-decrypt-text.mjs.map +1 -1
- package/fesm2022/ngwr-density.mjs +6 -6
- package/fesm2022/ngwr-descriptions.mjs +6 -6
- package/fesm2022/ngwr-dialog-testing.mjs +89 -0
- package/fesm2022/ngwr-dialog-testing.mjs.map +1 -0
- package/fesm2022/ngwr-dialog.mjs +33 -17
- package/fesm2022/ngwr-dialog.mjs.map +1 -1
- package/fesm2022/ngwr-directives.mjs +48 -24
- package/fesm2022/ngwr-directives.mjs.map +1 -1
- package/fesm2022/ngwr-divider.mjs +3 -3
- package/fesm2022/ngwr-donut-chart.mjs +24 -7
- package/fesm2022/ngwr-donut-chart.mjs.map +1 -1
- package/fesm2022/ngwr-drag-drop.mjs +7 -7
- 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-drawer.mjs +37 -19
- package/fesm2022/ngwr-drawer.mjs.map +1 -1
- package/fesm2022/ngwr-dropdown-testing.mjs +291 -0
- package/fesm2022/ngwr-dropdown-testing.mjs.map +1 -0
- package/fesm2022/ngwr-dropdown.mjs +19 -11
- package/fesm2022/ngwr-dropdown.mjs.map +1 -1
- package/fesm2022/ngwr-empty.mjs +26 -9
- package/fesm2022/ngwr-empty.mjs.map +1 -1
- package/fesm2022/ngwr-event-calendar.mjs +62 -15
- package/fesm2022/ngwr-event-calendar.mjs.map +1 -1
- package/fesm2022/ngwr-falling-text.mjs +4 -4
- 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-file-upload.mjs +3 -3
- package/fesm2022/ngwr-form-testing.mjs +451 -0
- package/fesm2022/ngwr-form-testing.mjs.map +1 -0
- package/fesm2022/ngwr-form.mjs +28 -12
- package/fesm2022/ngwr-form.mjs.map +1 -1
- package/fesm2022/ngwr-fuzzy-text.mjs +11 -4
- package/fesm2022/ngwr-fuzzy-text.mjs.map +1 -1
- package/fesm2022/ngwr-gauge.mjs +21 -7
- package/fesm2022/ngwr-gauge.mjs.map +1 -1
- package/fesm2022/ngwr-glitch-text.mjs +4 -4
- package/fesm2022/ngwr-glitch-text.mjs.map +1 -1
- package/fesm2022/ngwr-gradient-text.mjs +4 -4
- package/fesm2022/ngwr-gradient-text.mjs.map +1 -1
- package/fesm2022/ngwr-hotkey.mjs +31 -10
- package/fesm2022/ngwr-hotkey.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-en.mjs +61 -0
- package/fesm2022/ngwr-i18n-en.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-ru.mjs +59 -0
- package/fesm2022/ngwr-i18n-ru.mjs.map +1 -1
- package/fesm2022/ngwr-i18n.mjs +9 -9
- package/fesm2022/ngwr-icon.mjs +6 -6
- package/fesm2022/ngwr-image-cropper.mjs +26 -3
- 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 +37 -5
- 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 +39 -8
- 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 +62 -25
- package/fesm2022/ngwr-input.mjs.map +1 -1
- package/fesm2022/ngwr-keyboard.mjs +3 -3
- package/fesm2022/ngwr-knob.mjs +46 -10
- package/fesm2022/ngwr-knob.mjs.map +1 -1
- package/fesm2022/ngwr-layout.mjs +36 -20
- package/fesm2022/ngwr-layout.mjs.map +1 -1
- package/fesm2022/ngwr-lightbox.mjs +35 -8
- package/fesm2022/ngwr-lightbox.mjs.map +1 -1
- package/fesm2022/ngwr-line-chart.mjs +19 -6
- package/fesm2022/ngwr-line-chart.mjs.map +1 -1
- package/fesm2022/ngwr-list.mjs +14 -9
- package/fesm2022/ngwr-list.mjs.map +1 -1
- package/fesm2022/ngwr-loading-bar.mjs +71 -31
- 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 +19 -8
- package/fesm2022/ngwr-marquee.mjs.map +1 -1
- package/fesm2022/ngwr-media.mjs +3 -3
- package/fesm2022/ngwr-mention-testing.mjs +513 -0
- package/fesm2022/ngwr-mention-testing.mjs.map +1 -0
- package/fesm2022/ngwr-mention.mjs +16 -7
- package/fesm2022/ngwr-mention.mjs.map +1 -1
- package/fesm2022/ngwr-meta.mjs +28 -13
- package/fesm2022/ngwr-meta.mjs.map +1 -1
- package/fesm2022/ngwr-meter-group.mjs +22 -8
- package/fesm2022/ngwr-meter-group.mjs.map +1 -1
- package/fesm2022/ngwr-overlay.mjs +57 -8
- package/fesm2022/ngwr-overlay.mjs.map +1 -1
- package/fesm2022/ngwr-page-header.mjs +3 -3
- package/fesm2022/ngwr-pagination-testing.mjs +389 -0
- package/fesm2022/ngwr-pagination-testing.mjs.map +1 -0
- package/fesm2022/ngwr-pagination.mjs +27 -11
- package/fesm2022/ngwr-pagination.mjs.map +1 -1
- package/fesm2022/ngwr-pipes.mjs +21 -21
- package/fesm2022/ngwr-platform.mjs +9 -9
- package/fesm2022/ngwr-popconfirm-testing.mjs +309 -0
- package/fesm2022/ngwr-popconfirm-testing.mjs.map +1 -0
- package/fesm2022/ngwr-popconfirm.mjs +99 -21
- 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 +48 -10
- package/fesm2022/ngwr-popover.mjs.map +1 -1
- package/fesm2022/ngwr-progress.mjs +3 -3
- package/fesm2022/ngwr-pull-to-refresh.mjs +19 -4
- package/fesm2022/ngwr-pull-to-refresh.mjs.map +1 -1
- package/fesm2022/ngwr-qr.mjs +15 -5
- 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 +16 -9
- 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 +40 -5
- package/fesm2022/ngwr-rating.mjs.map +1 -1
- package/fesm2022/ngwr-result.mjs +12 -12
- package/fesm2022/ngwr-rotating-text.mjs +3 -3
- package/fesm2022/ngwr-scroll.mjs +3 -3
- package/fesm2022/ngwr-segmented-testing.mjs +512 -0
- package/fesm2022/ngwr-segmented-testing.mjs.map +1 -0
- package/fesm2022/ngwr-segmented.mjs +3 -3
- package/fesm2022/ngwr-select-testing.mjs +268 -0
- package/fesm2022/ngwr-select-testing.mjs.map +1 -0
- package/fesm2022/ngwr-select.mjs +96 -25
- package/fesm2022/ngwr-select.mjs.map +1 -1
- package/fesm2022/ngwr-shiny-text.mjs +7 -7
- package/fesm2022/ngwr-shiny-text.mjs.map +1 -1
- package/fesm2022/ngwr-sidebar.mjs +67 -14
- package/fesm2022/ngwr-sidebar.mjs.map +1 -1
- package/fesm2022/ngwr-skeleton.mjs +3 -3
- package/fesm2022/ngwr-slider-testing.mjs +478 -0
- package/fesm2022/ngwr-slider-testing.mjs.map +1 -0
- package/fesm2022/ngwr-slider.mjs +59 -15
- package/fesm2022/ngwr-slider.mjs.map +1 -1
- package/fesm2022/ngwr-sparkline.mjs +28 -8
- package/fesm2022/ngwr-sparkline.mjs.map +1 -1
- package/fesm2022/ngwr-speed-dial.mjs +39 -6
- package/fesm2022/ngwr-speed-dial.mjs.map +1 -1
- package/fesm2022/ngwr-spinner.mjs +14 -5
- package/fesm2022/ngwr-spinner.mjs.map +1 -1
- package/fesm2022/ngwr-splash-cursor.mjs +4 -4
- package/fesm2022/ngwr-splash-cursor.mjs.map +1 -1
- package/fesm2022/ngwr-split-text.mjs +4 -4
- package/fesm2022/ngwr-split-text.mjs.map +1 -1
- package/fesm2022/ngwr-splitter.mjs +72 -11
- package/fesm2022/ngwr-splitter.mjs.map +1 -1
- package/fesm2022/ngwr-spotlight-card.mjs +7 -7
- package/fesm2022/ngwr-spotlight-card.mjs.map +1 -1
- package/fesm2022/ngwr-squircle.mjs +6 -6
- package/fesm2022/ngwr-star-border.mjs +4 -4
- package/fesm2022/ngwr-star-border.mjs.map +1 -1
- package/fesm2022/ngwr-statistic.mjs +33 -16
- 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-stepper.mjs +6 -6
- package/fesm2022/ngwr-storage.mjs +27 -17
- package/fesm2022/ngwr-storage.mjs.map +1 -1
- package/fesm2022/ngwr-switch-testing.mjs +77 -0
- package/fesm2022/ngwr-switch-testing.mjs.map +1 -0
- package/fesm2022/ngwr-switch.mjs +12 -6
- 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 +105 -44
- 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 +44 -12
- 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 +35 -7
- package/fesm2022/ngwr-textarea.mjs.map +1 -1
- package/fesm2022/ngwr-theme.mjs +3 -3
- package/fesm2022/ngwr-tilt-card.mjs +7 -7
- package/fesm2022/ngwr-tilt-card.mjs.map +1 -1
- package/fesm2022/ngwr-timeline.mjs +6 -6
- package/fesm2022/ngwr-toast-testing.mjs +101 -0
- package/fesm2022/ngwr-toast-testing.mjs.map +1 -0
- package/fesm2022/ngwr-toast.mjs +55 -21
- package/fesm2022/ngwr-toast.mjs.map +1 -1
- package/fesm2022/ngwr-toolbar.mjs +3 -3
- package/fesm2022/ngwr-tour.mjs +67 -15
- 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 +47 -16
- 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 +75 -9
- package/fesm2022/ngwr-tree.mjs.map +1 -1
- package/fesm2022/ngwr-typewriter.mjs +7 -5
- package/fesm2022/ngwr-typewriter.mjs.map +1 -1
- package/fesm2022/ngwr-typography.mjs +3 -3
- package/fesm2022/ngwr-version.mjs +1 -1
- package/fesm2022/ngwr-version.mjs.map +1 -1
- package/fesm2022/ngwr-virtual-scroll.mjs +33 -7
- package/fesm2022/ngwr-virtual-scroll.mjs.map +1 -1
- package/fesm2022/ngwr-waves.mjs +5 -5
- package/fesm2022/ngwr-waves.mjs.map +1 -1
- package/fesm2022/ngwr-window.mjs +88 -18
- 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 +56 -0
- package/i18n/ru.json +56 -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 +58 -10
- package/types/ngwr-calendar-heatmap.d.ts +16 -2
- package/types/ngwr-calendar.d.ts +37 -1
- 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-clipboard.d.ts +8 -1
- 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 +128 -8
- package/types/ngwr-dialog-testing.d.ts +79 -0
- package/types/ngwr-dialog.d.ts +13 -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-drawer.d.ts +15 -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-hotkey.d.ts +2 -0
- 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-list.d.ts +7 -2
- package/types/ngwr-loading-bar.d.ts +4 -7
- 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 +7 -1
- 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 +19 -2
- 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-storage.d.ts +10 -1
- 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-toast.d.ts +19 -4
- 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/types/ngwr-window.d.ts +23 -2
- package/typewriter/styles/_index.scss +1 -1
- package/typography/styles/_index.scss +1 -1
- package/window/styles/_index.scss +32 -9
package/types/ngwr-transfer.d.ts
CHANGED
|
@@ -21,7 +21,15 @@ interface WrTransferItem<TValue = unknown> {
|
|
|
21
21
|
/** A pane's rows plus the header state derived from them. */
|
|
22
22
|
interface PaneState {
|
|
23
23
|
readonly rows: readonly WrTransferItem[];
|
|
24
|
+
/**
|
|
25
|
+
* The staged values this pane is actually SHOWING — visible and enabled. The
|
|
26
|
+
* staging signals can hold more than that (a filter change hides rows without
|
|
27
|
+
* unstaging them), and every consumer of the staged set has to agree on which
|
|
28
|
+
* one it means: the count, the header checkbox and the move all read this.
|
|
29
|
+
*/
|
|
30
|
+
readonly checked: readonly unknown[];
|
|
24
31
|
readonly checkedCount: number;
|
|
32
|
+
readonly enabledCount: number;
|
|
25
33
|
readonly allChecked: boolean;
|
|
26
34
|
readonly someChecked: boolean;
|
|
27
35
|
}
|
|
@@ -76,6 +84,11 @@ declare class WrTransfer implements FormValueControl<readonly unknown[]> {
|
|
|
76
84
|
readonly searchPlaceholder: _angular_core.InputSignal<string | null>;
|
|
77
85
|
/** Shown in a pane with no rows. Falls back to `transfer.empty`. */
|
|
78
86
|
readonly emptyText: _angular_core.InputSignal<string | null>;
|
|
87
|
+
/**
|
|
88
|
+
* Accessible name of each pane's select-all checkbox, composed with the pane
|
|
89
|
+
* heading. Falls back to `transfer.selectAll`.
|
|
90
|
+
*/
|
|
91
|
+
readonly selectAllLabel: _angular_core.InputSignal<string | null>;
|
|
79
92
|
/** Accessible name of the move-right button. Falls back to `transfer.toTarget`. */
|
|
80
93
|
readonly toTargetLabel: _angular_core.InputSignal<string | null>;
|
|
81
94
|
/** Accessible name of the move-left button. Falls back to `transfer.toSource`. */
|
|
@@ -84,6 +97,7 @@ declare class WrTransfer implements FormValueControl<readonly unknown[]> {
|
|
|
84
97
|
protected readonly resolvedTargetTitle: _angular_core.Signal<string>;
|
|
85
98
|
protected readonly resolvedSearch: _angular_core.Signal<string>;
|
|
86
99
|
protected readonly resolvedEmpty: _angular_core.Signal<string>;
|
|
100
|
+
protected readonly resolvedSelectAll: _angular_core.Signal<string>;
|
|
87
101
|
protected readonly resolvedToTarget: _angular_core.Signal<string>;
|
|
88
102
|
protected readonly resolvedToSource: _angular_core.Signal<string>;
|
|
89
103
|
/** `{{checked}} / {{total}}` under each heading. @internal */
|
|
@@ -95,6 +109,7 @@ declare class WrTransfer implements FormValueControl<readonly unknown[]> {
|
|
|
95
109
|
/** Staged rows, per pane. Cleared as soon as a move commits them. */
|
|
96
110
|
private readonly sourceChecked;
|
|
97
111
|
private readonly targetChecked;
|
|
112
|
+
private readonly selected;
|
|
98
113
|
private readonly valueSet;
|
|
99
114
|
protected readonly source: _angular_core.Signal<PaneState>;
|
|
100
115
|
protected readonly target: _angular_core.Signal<PaneState>;
|
|
@@ -111,7 +126,7 @@ declare class WrTransfer implements FormValueControl<readonly unknown[]> {
|
|
|
111
126
|
/** Filter, then derive the header state from what survived. */
|
|
112
127
|
private pane;
|
|
113
128
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<WrTransfer, never>;
|
|
114
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<WrTransfer, "wr-transfer", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "searchable": { "alias": "searchable"; "required": false; "isSignal": true; }; "sourceTitle": { "alias": "sourceTitle"; "required": false; "isSignal": true; }; "targetTitle": { "alias": "targetTitle"; "required": false; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; "isSignal": true; }; "emptyText": { "alias": "emptyText"; "required": false; "isSignal": true; }; "toTargetLabel": { "alias": "toTargetLabel"; "required": false; "isSignal": true; }; "toSourceLabel": { "alias": "toSourceLabel"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "touch": "touch"; }, never, never, true, never>;
|
|
129
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<WrTransfer, "wr-transfer", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "searchable": { "alias": "searchable"; "required": false; "isSignal": true; }; "sourceTitle": { "alias": "sourceTitle"; "required": false; "isSignal": true; }; "targetTitle": { "alias": "targetTitle"; "required": false; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; "isSignal": true; }; "emptyText": { "alias": "emptyText"; "required": false; "isSignal": true; }; "selectAllLabel": { "alias": "selectAllLabel"; "required": false; "isSignal": true; }; "toTargetLabel": { "alias": "toTargetLabel"; "required": false; "isSignal": true; }; "toSourceLabel": { "alias": "toSourceLabel"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "touch": "touch"; }, never, never, true, never>;
|
|
115
130
|
}
|
|
116
131
|
|
|
117
132
|
export { WrTransfer };
|
|
@@ -0,0 +1,501 @@
|
|
|
1
|
+
import { BaseHarnessFilters, ComponentHarness, HarnessPredicate, ContentContainerComponentHarness, HarnessLoader } 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-tree>` a harness query matches. */
|
|
11
|
+
interface WrTreeHarnessFilters extends BaseHarnessFilters {
|
|
12
|
+
/**
|
|
13
|
+
* Match the trigger's selection text — the selected label, or the chip labels joined
|
|
14
|
+
* by `', '` (without the `+N more` count a `maxTagCount` adds); `''` while the
|
|
15
|
+
* placeholder is showing. A string is an exact match, a RegExp is tested. Only an
|
|
16
|
+
* `openOn="overlay"` tree has a trigger; an inline one never matches.
|
|
17
|
+
*/
|
|
18
|
+
readonly text?: string | RegExp;
|
|
19
|
+
/**
|
|
20
|
+
* Match a tree that is SHOWING a node with this label — the readable way to tell
|
|
21
|
+
* two trees apart when neither has a trigger. A node inside a collapsed branch is
|
|
22
|
+
* not rendered and does not count, and neither does anything in an overlay tree
|
|
23
|
+
* whose panel is closed.
|
|
24
|
+
*/
|
|
25
|
+
readonly nodeLabel?: string | RegExp;
|
|
26
|
+
/** Match only enabled (`false`) or only disabled (`true`) trees. */
|
|
27
|
+
readonly disabled?: boolean;
|
|
28
|
+
/**
|
|
29
|
+
* Match only open (`true`) or only closed (`false`) trees. An inline tree is
|
|
30
|
+
* always open — its rows are part of the host — so it only matches `true`.
|
|
31
|
+
*/
|
|
32
|
+
readonly open?: boolean;
|
|
33
|
+
}
|
|
34
|
+
/** Narrows which node inside a tree a harness query matches. */
|
|
35
|
+
interface WrTreeNodeHarnessFilters extends BaseHarnessFilters {
|
|
36
|
+
/** Match the node's label — a string is an exact match, a RegExp is tested. */
|
|
37
|
+
readonly label?: string | RegExp;
|
|
38
|
+
/** Match only selected (`true`) or only unselected (`false`) nodes. */
|
|
39
|
+
readonly selected?: boolean;
|
|
40
|
+
/**
|
|
41
|
+
* Match only enabled (`false`) or only disabled (`true`) nodes. Every node of a
|
|
42
|
+
* disabled TREE is disabled, so `false` matches nothing there.
|
|
43
|
+
*/
|
|
44
|
+
readonly disabled?: boolean;
|
|
45
|
+
/**
|
|
46
|
+
* Match only open (`true`) or only closed (`false`) BRANCHES. A leaf announces no
|
|
47
|
+
* expanded state at all and matches neither — which is what makes
|
|
48
|
+
* `{ expanded: false }` mean "a branch waiting to be opened" rather than "every
|
|
49
|
+
* row that is not open".
|
|
50
|
+
*/
|
|
51
|
+
readonly expanded?: boolean;
|
|
52
|
+
/** Match the node's 1-based `aria-level`, i.e. its depth in the tree. */
|
|
53
|
+
readonly level?: number;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* @license
|
|
58
|
+
*
|
|
59
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
60
|
+
* found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
|
|
61
|
+
*/
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Test harness for one node of a `<wr-tree>` — a `role="treeitem"` row.
|
|
65
|
+
*
|
|
66
|
+
* Everything about a tree's shape that a screen reader gets lives on these rows:
|
|
67
|
+
* the list itself is FLAT, with no `role="group"` and no nesting, so `aria-level`,
|
|
68
|
+
* `aria-posinset` and `aria-setsize` are the only place the hierarchy exists. The
|
|
69
|
+
* indent is decoration.
|
|
70
|
+
*
|
|
71
|
+
* @example
|
|
72
|
+
* ```ts
|
|
73
|
+
* const src = await tree.getNode({ label: 'src' });
|
|
74
|
+
*
|
|
75
|
+
* await src.expand();
|
|
76
|
+
* expect(await src.getLevel()).toBe(1);
|
|
77
|
+
* ```
|
|
78
|
+
*
|
|
79
|
+
* @see https://ngwr.dev/guides/testing
|
|
80
|
+
*/
|
|
81
|
+
declare class WrTreeNodeHarness extends ComponentHarness {
|
|
82
|
+
/**
|
|
83
|
+
* The row, and nothing else the list can hold.
|
|
84
|
+
*
|
|
85
|
+
* A windowed tree pads its list with `<li class="wr-tree__spacer" role="presentation">`
|
|
86
|
+
* at each end, so `li` would hand back up to two "nodes" with no label and no
|
|
87
|
+
* state. `[role="treeitem"]` selects exactly the same set as this class.
|
|
88
|
+
*/
|
|
89
|
+
static hostSelector: string;
|
|
90
|
+
/** Build a predicate that narrows the query. */
|
|
91
|
+
static with(options?: WrTreeNodeHarnessFilters): HarnessPredicate<WrTreeNodeHarness>;
|
|
92
|
+
/**
|
|
93
|
+
* The node's label.
|
|
94
|
+
*
|
|
95
|
+
* Read from `.wr-tree__label` rather than from the row's text, so the answer stays
|
|
96
|
+
* the label alone however the row is decorated around it.
|
|
97
|
+
*/
|
|
98
|
+
getLabel(): Promise<string>;
|
|
99
|
+
/** The node's 1-based depth, as the row announces it (`aria-level`). */
|
|
100
|
+
getLevel(): Promise<number>;
|
|
101
|
+
/**
|
|
102
|
+
* The node's 1-based position within its SIBLING GROUP (`aria-posinset`) — not its
|
|
103
|
+
* position in the flat list of visible rows.
|
|
104
|
+
*
|
|
105
|
+
* `src`'s first child is `posinset` 1 even though it is the second row on screen.
|
|
106
|
+
* That is what ARIA asks for, and the whole reason the attribute is needed here:
|
|
107
|
+
* the rendered list cannot express the nesting on its own.
|
|
108
|
+
*/
|
|
109
|
+
getPosInSet(): Promise<number>;
|
|
110
|
+
/** How many nodes are in this node's sibling group, itself included (`aria-setsize`). */
|
|
111
|
+
getSetSize(): Promise<number>;
|
|
112
|
+
/**
|
|
113
|
+
* The node's index in the full list of VISIBLE nodes — every rendered row plus the
|
|
114
|
+
* ones a window left out, in the order the tree would show them.
|
|
115
|
+
*
|
|
116
|
+
* It is the index the tree's own keyboard code addresses rows by, and while the
|
|
117
|
+
* tree is windowed it is the only way to place a row: DOM order then says nothing,
|
|
118
|
+
* because the rows in the DOM are a slice.
|
|
119
|
+
*/
|
|
120
|
+
getIndex(): Promise<number>;
|
|
121
|
+
/**
|
|
122
|
+
* The row's DOM id, or `null`.
|
|
123
|
+
*
|
|
124
|
+
* Only a windowed tree gives its rows ids, because that is the shape where the
|
|
125
|
+
* list keeps focus and names the cursor row with `aria-activedescendant` — the id
|
|
126
|
+
* exists to be pointed at.
|
|
127
|
+
*/
|
|
128
|
+
getId(): Promise<string | null>;
|
|
129
|
+
/**
|
|
130
|
+
* Whether the node is a branch — it has children, whether or not they are showing.
|
|
131
|
+
*
|
|
132
|
+
* From `aria-expanded`: only a branch carries it, and a branch that does not is
|
|
133
|
+
* announced as a leaf, so the user never learns there is anything underneath. The
|
|
134
|
+
* toggle element cannot answer this — a leaf renders a `<span>` with the same
|
|
135
|
+
* `.wr-tree__toggle` class purely to hold the indent.
|
|
136
|
+
*/
|
|
137
|
+
isExpandable(): Promise<boolean>;
|
|
138
|
+
/** Whether the branch is open. A leaf is never expanded. */
|
|
139
|
+
isExpanded(): Promise<boolean>;
|
|
140
|
+
/** Open the branch. Already-open branches are left alone; a leaf throws. */
|
|
141
|
+
expand(): Promise<void>;
|
|
142
|
+
/** Close the branch. Already-closed branches are left alone; a leaf throws. */
|
|
143
|
+
collapse(): Promise<void>;
|
|
144
|
+
/**
|
|
145
|
+
* Click the branch's expand toggle.
|
|
146
|
+
*
|
|
147
|
+
* Expanding is the TOGGLE's job and not the row's: a click anywhere else in the row
|
|
148
|
+
* selects instead, which is the one thing a spec driving this by hand tends to get
|
|
149
|
+
* wrong.
|
|
150
|
+
*/
|
|
151
|
+
toggleExpand(): Promise<void>;
|
|
152
|
+
/**
|
|
153
|
+
* Whether the node is selected.
|
|
154
|
+
*
|
|
155
|
+
* From `aria-selected` rather than the `--selected` modifier: both are public, but
|
|
156
|
+
* the attribute is what a screen reader acts on, and a row that looks selected
|
|
157
|
+
* without saying so is the bug worth catching.
|
|
158
|
+
*/
|
|
159
|
+
isSelected(): Promise<boolean>;
|
|
160
|
+
/**
|
|
161
|
+
* Whether the tree offers selection at all.
|
|
162
|
+
*
|
|
163
|
+
* A `selectionMode="none"` tree announces NO `aria-selected` on its rows, which is
|
|
164
|
+
* how an unselectable node differs from one that is merely unselected — the two
|
|
165
|
+
* look identical otherwise.
|
|
166
|
+
*/
|
|
167
|
+
isSelectable(): Promise<boolean>;
|
|
168
|
+
/**
|
|
169
|
+
* Whether the node refuses interaction (`aria-disabled`).
|
|
170
|
+
*
|
|
171
|
+
* True for EVERY node while the whole tree is disabled, not just for the ones the
|
|
172
|
+
* data marks — the row announces the effective state, which is the one a user runs
|
|
173
|
+
* into.
|
|
174
|
+
*/
|
|
175
|
+
isDisabled(): Promise<boolean>;
|
|
176
|
+
/**
|
|
177
|
+
* Whether the node is where the keyboard cursor sits.
|
|
178
|
+
*
|
|
179
|
+
* The two patterns publish the cursor differently, and this covers both: a tree
|
|
180
|
+
* that renders every row hands the single tab stop to the cursor row (roving
|
|
181
|
+
* tabindex), while a windowed one keeps focus on the list and marks the row with
|
|
182
|
+
* the `--active` modifier plus the list's `aria-activedescendant`.
|
|
183
|
+
* `WrTreeHarness.getActiveNodeLabel()` reads that reference itself.
|
|
184
|
+
*/
|
|
185
|
+
isActive(): Promise<boolean>;
|
|
186
|
+
/**
|
|
187
|
+
* Whether the row holds real DOM focus.
|
|
188
|
+
*
|
|
189
|
+
* Deliberately separate from {@link isActive}: in a windowed tree the two DIVERGE
|
|
190
|
+
* by design — focus stays on the `role="tree"` list and only the announced cursor
|
|
191
|
+
* moves — so a spec asserting that a key press moved focus needs to know which of
|
|
192
|
+
* the two it is asking about.
|
|
193
|
+
*/
|
|
194
|
+
isFocused(): Promise<boolean>;
|
|
195
|
+
/**
|
|
196
|
+
* Click the node — which SELECTS it. A disabled node, and any node of a
|
|
197
|
+
* `selectionMode="none"` tree, ignores the click.
|
|
198
|
+
*
|
|
199
|
+
* In multi mode a plain click REPLACES the selection rather than adding to it (the
|
|
200
|
+
* component's deliberate choice: one selected node clicked again clears it, and any
|
|
201
|
+
* other click starts over from that node). {@link ctrlClick} is how a selection is
|
|
202
|
+
* accumulated.
|
|
203
|
+
*/
|
|
204
|
+
click(): Promise<void>;
|
|
205
|
+
/**
|
|
206
|
+
* Ctrl-click the node — ADDS it to the selection, or removes it, in multi mode.
|
|
207
|
+
*
|
|
208
|
+
* The component takes Cmd as well as Ctrl; the harness sends Ctrl because a unit
|
|
209
|
+
* test has no platform. In single mode it behaves exactly like {@link click}.
|
|
210
|
+
*/
|
|
211
|
+
ctrlClick(): Promise<void>;
|
|
212
|
+
/** The branch's toggle button, or a failure that says this row is a leaf. */
|
|
213
|
+
private toggleElement;
|
|
214
|
+
/** A numeric attribute every row carries, or a failure that says the row is broken. */
|
|
215
|
+
private announcedNumber;
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
/**
|
|
219
|
+
* @license
|
|
220
|
+
*
|
|
221
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
222
|
+
* found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
|
|
223
|
+
*/
|
|
224
|
+
|
|
225
|
+
/**
|
|
226
|
+
* Test harness for `<wr-tree>`, with {@link WrTreeNodeHarness} for one row.
|
|
227
|
+
*
|
|
228
|
+
* The component has two render shapes and this harness covers both:
|
|
229
|
+
* - `openOn="inline"` (default) — the rows live in the host, and the tree is always
|
|
230
|
+
* showing them.
|
|
231
|
+
* - `openOn="overlay"` — a `role="combobox"` trigger opens a panel that is a template
|
|
232
|
+
* portal in the shared overlay container, a sibling of the whole app. Nothing in it
|
|
233
|
+
* is a descendant of the host, so every row is read through the document root,
|
|
234
|
+
* SCOPED by the `aria-controls` id the trigger publishes — which is what keeps two
|
|
235
|
+
* trees on one page from answering with each other's nodes.
|
|
236
|
+
*
|
|
237
|
+
* A tree is data-driven and projects nothing, so the scoped loader exists to point the
|
|
238
|
+
* node queries at the right shape rather than to reach a consumer's own components: the
|
|
239
|
+
* inherited `getHarness(…)` resolves wherever THIS tree's rows are, and there is nothing
|
|
240
|
+
* else in there.
|
|
241
|
+
*
|
|
242
|
+
* Two things the harness cannot do, both jsdom rather than the component:
|
|
243
|
+
* - it never clicks a row by coordinate, and it drives the cursor with the KEYBOARD,
|
|
244
|
+
* which is the accessible path anyway. There is no layout in a unit test, so a
|
|
245
|
+
* hit test would answer with nothing.
|
|
246
|
+
* - it offers no SCROLL for a windowed tree. jsdom does remember a `scrollTop` write,
|
|
247
|
+
* but it fires no `scroll` event for it, so the tree — which learns its offset from
|
|
248
|
+
* that event — would not move until the caller also dispatched one and waited a
|
|
249
|
+
* frame: a scroll gesture that only works because the test faked the notification.
|
|
250
|
+
* The keyboard moves the window honestly instead — see {@link focusLast}. (jsdom has
|
|
251
|
+
* no `Element.scrollTo` at all, which the tree calls while windowed, so a spec for
|
|
252
|
+
* that shape has to stub it.)
|
|
253
|
+
*
|
|
254
|
+
* @example
|
|
255
|
+
* ```ts
|
|
256
|
+
* const tree = await loader.getHarness(WrTreeHarness);
|
|
257
|
+
*
|
|
258
|
+
* await (await tree.getNode({ label: 'src' })).expand();
|
|
259
|
+
* await tree.selectNode({ label: 'main.ts' });
|
|
260
|
+
*
|
|
261
|
+
* expect(await tree.getSelectedLabels()).toEqual(['main.ts']);
|
|
262
|
+
* ```
|
|
263
|
+
*
|
|
264
|
+
* @see https://ngwr.dev/guides/testing
|
|
265
|
+
*/
|
|
266
|
+
declare class WrTreeHarness extends ContentContainerComponentHarness {
|
|
267
|
+
static hostSelector: string;
|
|
268
|
+
/** Build a predicate that narrows the query — pass to `getHarness` / `getAllHarnesses`. */
|
|
269
|
+
static with(options?: WrTreeHarnessFilters): HarnessPredicate<WrTreeHarness>;
|
|
270
|
+
/** Whether this tree is the combobox shape (`openOn="overlay"`) rather than inline. */
|
|
271
|
+
isOverlay(): Promise<boolean>;
|
|
272
|
+
/**
|
|
273
|
+
* Whether the rows are showing.
|
|
274
|
+
*
|
|
275
|
+
* From the trigger's `aria-expanded` rather than the `--open` modifier: both are
|
|
276
|
+
* public, but that attribute is the promise the combobox makes to a screen reader.
|
|
277
|
+
* An inline tree is always open — its rows are part of the host and there is
|
|
278
|
+
* nothing to open or close.
|
|
279
|
+
*/
|
|
280
|
+
isOpen(): Promise<boolean>;
|
|
281
|
+
/**
|
|
282
|
+
* Open the panel. An already-open tree — and every inline one — is left alone.
|
|
283
|
+
*
|
|
284
|
+
* Note for a spec with two overlay trees: this clicks, and a click is an outside
|
|
285
|
+
* pointer event for every other open overlay, so it closes any panel already up.
|
|
286
|
+
* There is no second gesture to swap in: the trigger is opened by its `click`
|
|
287
|
+
* handler, and while a real keyboard user reaches that through a `<button>`'s native
|
|
288
|
+
* activation, a SYNTHETIC Enter / Space never produces a click — so a harness cannot
|
|
289
|
+
* open a panel any other way.
|
|
290
|
+
*/
|
|
291
|
+
open(): Promise<void>;
|
|
292
|
+
/** Close the panel with Escape. An already-closed tree is left alone. */
|
|
293
|
+
close(): Promise<void>;
|
|
294
|
+
/**
|
|
295
|
+
* Whether the tree refuses interaction.
|
|
296
|
+
*
|
|
297
|
+
* The host modifier is the only answer both shapes carry: an inline tree has no
|
|
298
|
+
* control of its own to mark `disabled`, and a closed overlay tree has no rows to
|
|
299
|
+
* read `aria-disabled` from. The rows do announce it — see
|
|
300
|
+
* {@link WrTreeNodeHarness.isDisabled}.
|
|
301
|
+
*/
|
|
302
|
+
isDisabled(): Promise<boolean>;
|
|
303
|
+
/**
|
|
304
|
+
* Whether the tree takes more than one selected node.
|
|
305
|
+
*
|
|
306
|
+
* From the list's `aria-multiselectable`, which is what a screen reader acts on. The
|
|
307
|
+
* list does not exist while an overlay panel is closed, so the host modifier answers
|
|
308
|
+
* then — it is only painted in the combobox shape, which is exactly the shape that
|
|
309
|
+
* can be asked while closed.
|
|
310
|
+
*/
|
|
311
|
+
isMultiple(): Promise<boolean>;
|
|
312
|
+
/**
|
|
313
|
+
* How much the tree lets you select.
|
|
314
|
+
*
|
|
315
|
+
* `'none'` is not "nothing selected": it is a tree whose rows announce no
|
|
316
|
+
* `aria-selected` at all, and telling that from `'single'` needs a row — so an empty
|
|
317
|
+
* tree throws rather than guessing.
|
|
318
|
+
*/
|
|
319
|
+
getSelectionMode(): Promise<'none' | 'single' | 'multi'>;
|
|
320
|
+
/**
|
|
321
|
+
* Whether the list is WINDOWED right now.
|
|
322
|
+
*
|
|
323
|
+
* Read from the list's modifier rather than from the input, and that is the point:
|
|
324
|
+
* `virtualScroll` only takes effect when there is something to window, so an empty
|
|
325
|
+
* tree renders the plain shape however the input is set.
|
|
326
|
+
*/
|
|
327
|
+
isVirtual(): Promise<boolean>;
|
|
328
|
+
/**
|
|
329
|
+
* The role the list announces — `tree`.
|
|
330
|
+
*
|
|
331
|
+
* Worth asking: rendered without it, the rows are a bag of names, identical on
|
|
332
|
+
* screen and structureless to anyone not looking at it.
|
|
333
|
+
*/
|
|
334
|
+
getRole(): Promise<string | null>;
|
|
335
|
+
/**
|
|
336
|
+
* What the trigger shows as the selection: the chip labels joined by `', '` in multi
|
|
337
|
+
* mode, the label in single mode, and `''` when nothing is selected (the placeholder
|
|
338
|
+
* is showing). The `+N more` chip a `maxTagCount` produces is NOT part of it — it is
|
|
339
|
+
* a count rather than a selection, and {@link getOverflowText} reads it. Inline trees
|
|
340
|
+
* have no trigger and throw.
|
|
341
|
+
*/
|
|
342
|
+
getValueText(): Promise<string>;
|
|
343
|
+
/** The placeholder, or `null` when a selection is hiding it. */
|
|
344
|
+
getPlaceholder(): Promise<string | null>;
|
|
345
|
+
/**
|
|
346
|
+
* The chip labels on the trigger, in order (multi mode).
|
|
347
|
+
*
|
|
348
|
+
* The `+N more` overflow chip is not one of them — it is a count, not a selection.
|
|
349
|
+
* {@link getOverflowText} reads it.
|
|
350
|
+
*/
|
|
351
|
+
getChipLabels(): Promise<string[]>;
|
|
352
|
+
/**
|
|
353
|
+
* The `+N more` chip's text, or `null` when every selected node has a chip of its
|
|
354
|
+
* own. Only a `maxTagCount` below the number selected produces one.
|
|
355
|
+
*/
|
|
356
|
+
getOverflowText(): Promise<string | null>;
|
|
357
|
+
/** Remove one chip by its label. */
|
|
358
|
+
removeChip(label: string): Promise<void>;
|
|
359
|
+
/** Click the clear (×) control on the trigger. */
|
|
360
|
+
clear(): Promise<void>;
|
|
361
|
+
/**
|
|
362
|
+
* The nodes currently rendered, in the order they are shown.
|
|
363
|
+
*
|
|
364
|
+
* A collapsed branch's children are not rendered at all, so this is the VISIBLE
|
|
365
|
+
* tree — expand first to reach deeper.
|
|
366
|
+
*
|
|
367
|
+
* While {@link isVirtual} is true it is narrower still: the list holds only the
|
|
368
|
+
* window around the scroll offset — padded by a spacer at whichever end has rows
|
|
369
|
+
* outside it, so a window resting at the top has one and a window in the middle has
|
|
370
|
+
* two — and this returns the WINDOW, not the dataset. Nothing in the DOM carries a
|
|
371
|
+
* total —
|
|
372
|
+
* `aria-setsize` counts a SIBLING GROUP, not the flat list — so the harness cannot
|
|
373
|
+
* offer one; {@link WrTreeNodeHarness.getIndex} places each row in the full visible
|
|
374
|
+
* list, and the `[nodes]` data is where the total actually lives.
|
|
375
|
+
*
|
|
376
|
+
* Throws while an overlay panel is closed: the rows do not exist anywhere until it
|
|
377
|
+
* opens, and an empty array reads like a tree that rendered nothing.
|
|
378
|
+
*/
|
|
379
|
+
getNodes(filters?: WrTreeNodeHarnessFilters): Promise<WrTreeNodeHarness[]>;
|
|
380
|
+
/** The labels of the nodes currently rendered, in order. */
|
|
381
|
+
getNodeLabels(): Promise<string[]>;
|
|
382
|
+
/** The first node matching the filters, or a failure that says what is showing. */
|
|
383
|
+
getNode(filters: WrTreeNodeHarnessFilters): Promise<WrTreeNodeHarness>;
|
|
384
|
+
/**
|
|
385
|
+
* Open the panel if needed, then select the first node matching the filters.
|
|
386
|
+
*
|
|
387
|
+
* `additive` ctrl-clicks instead, which is how a multi-mode selection is built up: a
|
|
388
|
+
* plain click there REPLACES the selection, by the component's own choice.
|
|
389
|
+
*
|
|
390
|
+
* Throws rather than clicking into the void on a disabled node or a
|
|
391
|
+
* `selectionMode="none"` tree — both ignore the click, and the silence turns into a
|
|
392
|
+
* confusing failure at the next assertion. Reach for `getNode().click()` when
|
|
393
|
+
* proving exactly that.
|
|
394
|
+
*/
|
|
395
|
+
selectNode(filters: WrTreeNodeHarnessFilters, options?: {
|
|
396
|
+
additive?: boolean;
|
|
397
|
+
}): Promise<void>;
|
|
398
|
+
/**
|
|
399
|
+
* The labels of the selected nodes, in row order.
|
|
400
|
+
*
|
|
401
|
+
* Only among the rows that are RENDERED: a selected node inside a collapsed branch,
|
|
402
|
+
* or outside a window, is not here. The `[(selected)]` model is the whole set.
|
|
403
|
+
*/
|
|
404
|
+
getSelectedLabels(): Promise<string[]>;
|
|
405
|
+
/**
|
|
406
|
+
* Open every branch, level by level — each pass reveals the next one down.
|
|
407
|
+
*
|
|
408
|
+
* Refuses on a windowed tree instead of half-doing it: only the window is rendered,
|
|
409
|
+
* so the branches outside it cannot be reached from the DOM at all. Write the
|
|
410
|
+
* `[(expanded)]` model there.
|
|
411
|
+
*/
|
|
412
|
+
expandAll(): Promise<void>;
|
|
413
|
+
/**
|
|
414
|
+
* The label of the node the keyboard cursor is on, or `null`.
|
|
415
|
+
*
|
|
416
|
+
* Read the way the shape publishes it: a windowed tree keeps focus on the list and
|
|
417
|
+
* names the row with `aria-activedescendant` (which goes `null` while the cursor has
|
|
418
|
+
* been scrolled out of the window, so the reference never dangles at a row that was
|
|
419
|
+
* removed), while a plain one hands the single tab stop to the cursor row.
|
|
420
|
+
*/
|
|
421
|
+
getActiveNodeLabel(): Promise<string | null>;
|
|
422
|
+
/** Move the cursor down one row — ArrowDown. Stops at the last row. */
|
|
423
|
+
focusNext(): Promise<void>;
|
|
424
|
+
/** Move the cursor up one row — ArrowUp. Stops at the first row. */
|
|
425
|
+
focusPrevious(): Promise<void>;
|
|
426
|
+
/** Move the cursor to the first row — Home. */
|
|
427
|
+
focusFirst(): Promise<void>;
|
|
428
|
+
/**
|
|
429
|
+
* Move the cursor to the last row — End.
|
|
430
|
+
*
|
|
431
|
+
* On a windowed tree this also moves the WINDOW: the tree writes its scroll offset
|
|
432
|
+
* synchronously so the row it is about to point at exists in the same change
|
|
433
|
+
* detection pass. It is the honest way to reach the far end of a window in a unit
|
|
434
|
+
* test — jsdom keeps a `scrollTop` write but never fires the `scroll` event the tree
|
|
435
|
+
* listens for, so a scroll gesture would move the window only for a test that also
|
|
436
|
+
* dispatched the notification itself.
|
|
437
|
+
*/
|
|
438
|
+
focusLast(): Promise<void>;
|
|
439
|
+
/**
|
|
440
|
+
* ArrowRight on the cursor row — the APG's one key with two jobs: it OPENS a closed
|
|
441
|
+
* branch, and on an already-open one it steps into the first child. A leaf ignores
|
|
442
|
+
* it.
|
|
443
|
+
*
|
|
444
|
+
* These two send the PHYSICAL key, because that is what a keyboard has. Under
|
|
445
|
+
* `dir="rtl"` the tree follows the indent and swaps the pair, so a spec exercising
|
|
446
|
+
* an RTL tree opens with {@link collapseActive} and closes with this one. The
|
|
447
|
+
* names describe the LTR job, which is the one worth naming.
|
|
448
|
+
*/
|
|
449
|
+
expandActive(): Promise<void>;
|
|
450
|
+
/**
|
|
451
|
+
* ArrowLeft on the cursor row — CLOSES an open branch, and on anything else steps
|
|
452
|
+
* out to the parent row. A root-level leaf ignores it.
|
|
453
|
+
*
|
|
454
|
+
* Physical, and mirrored by the component under `dir="rtl"` — see
|
|
455
|
+
* {@link expandActive}.
|
|
456
|
+
*/
|
|
457
|
+
collapseActive(): Promise<void>;
|
|
458
|
+
/**
|
|
459
|
+
* Select the cursor row from the keyboard — Enter.
|
|
460
|
+
*
|
|
461
|
+
* `additive` holds Ctrl, the keyboard twin of {@link WrTreeNodeHarness.ctrlClick}:
|
|
462
|
+
* in multi mode a plain Enter replaces the selection, Ctrl-Enter adds to it. A
|
|
463
|
+
* disabled row is skipped by the component, silently — assert the model.
|
|
464
|
+
*/
|
|
465
|
+
selectActive(options?: {
|
|
466
|
+
additive?: boolean;
|
|
467
|
+
}): Promise<void>;
|
|
468
|
+
/**
|
|
469
|
+
* The loader every node query runs through — the host inline, THIS tree's overlay
|
|
470
|
+
* panel otherwise.
|
|
471
|
+
*
|
|
472
|
+
* Scoped by the published panel id rather than by `.wr-tree-panel`: the overlay
|
|
473
|
+
* container is shared, so a bare class query would answer with whichever tree
|
|
474
|
+
* happened to open first.
|
|
475
|
+
*/
|
|
476
|
+
protected getRootHarnessLoader(): Promise<HarnessLoader>;
|
|
477
|
+
/**
|
|
478
|
+
* Send a key to the `role="tree"` list.
|
|
479
|
+
*
|
|
480
|
+
* The list owns the keydown handler in both patterns — the roving-tabindex one
|
|
481
|
+
* focuses a row, whose event bubbles to exactly here — so this is the honest target
|
|
482
|
+
* either way, and the one that works when jsdom has left real focus on `<body>`.
|
|
483
|
+
*/
|
|
484
|
+
private press;
|
|
485
|
+
/**
|
|
486
|
+
* The `<ul role="tree">` of THIS tree — in the host inline, in this tree's own
|
|
487
|
+
* overlay panel otherwise.
|
|
488
|
+
*/
|
|
489
|
+
private list;
|
|
490
|
+
/** The combobox trigger, or a failure that says this tree renders inline. */
|
|
491
|
+
private trigger;
|
|
492
|
+
/** The id the trigger publishes as `aria-controls`, which its panel carries. */
|
|
493
|
+
private panelId;
|
|
494
|
+
/** The trigger's text for the `text` filter, or `null` for an inline tree (which never matches). */
|
|
495
|
+
private triggerTextIfAny;
|
|
496
|
+
/** The rendered labels for the `nodeLabel` filter — a closed tree matches nothing rather than failing. */
|
|
497
|
+
private nodeLabelsIfShowing;
|
|
498
|
+
}
|
|
499
|
+
|
|
500
|
+
export { WrTreeHarness, WrTreeNodeHarness };
|
|
501
|
+
export type { WrTreeHarnessFilters, WrTreeNodeHarnessFilters };
|
package/types/ngwr-tree.d.ts
CHANGED
|
@@ -151,8 +151,27 @@ declare class WrTree<TId = string> implements FormValueControl<unknown> {
|
|
|
151
151
|
private readonly scrollStrategies;
|
|
152
152
|
private readonly destroyRef;
|
|
153
153
|
private readonly platformId;
|
|
154
|
+
/**
|
|
155
|
+
* Ambient reading direction. Optional so a bare `TestBed` — or a consumer who
|
|
156
|
+
* never set a direction — needs no provider; `Directionality` is root-provided
|
|
157
|
+
* anyway, and a missing one simply reads as `ltr`.
|
|
158
|
+
*
|
|
159
|
+
* Read at keystroke time rather than cached, so a runtime `dir` flip needs no
|
|
160
|
+
* subscription to `change`.
|
|
161
|
+
*/
|
|
162
|
+
private readonly dir;
|
|
154
163
|
/** Currently focused row's index in the flattened visible list. */
|
|
155
164
|
protected readonly focusedIndex: _angular_core.WritableSignal<number>;
|
|
165
|
+
/**
|
|
166
|
+
* The cursor as the DOM sees it, clamped to the list that exists RIGHT NOW.
|
|
167
|
+
*
|
|
168
|
+
* The raw index is only ever written when a row is focused, and nothing shrank
|
|
169
|
+
* it when the list did: collapsing a branch above the cursor left the index
|
|
170
|
+
* past the end, which gave the tree zero rows with `tabindex="0"` (no way back
|
|
171
|
+
* in with Tab) and made every arrow key a no-op, because `onKeydown` bails when
|
|
172
|
+
* `flat[i]` is undefined.
|
|
173
|
+
*/
|
|
174
|
+
protected readonly cursorIndex: _angular_core.Signal<number>;
|
|
156
175
|
/** Resolved ARIA labels — resolved once at construction, so a runtime locale switch needs a re-create. */
|
|
157
176
|
protected readonly clearLabel: string;
|
|
158
177
|
protected readonly expandLabel: string;
|
|
@@ -216,9 +235,23 @@ declare class WrTree<TId = string> implements FormValueControl<unknown> {
|
|
|
216
235
|
private get listElement();
|
|
217
236
|
/** Scroll flat index `i` just into view (sets the `scrollTop` signal synchronously). */
|
|
218
237
|
private ensureVisible;
|
|
238
|
+
/** Whether this OPEN has already auto-expanded; reset when the panel closes. */
|
|
239
|
+
private didExpandAll;
|
|
219
240
|
constructor();
|
|
220
241
|
protected onRowClick(flat: FlatNode<TId>, event: MouseEvent): void;
|
|
221
242
|
protected onToggleClick(node: WrTreeNode<TId>, event: MouseEvent): void;
|
|
243
|
+
/**
|
|
244
|
+
* Map a physical arrow onto the expand / collapse axis.
|
|
245
|
+
*
|
|
246
|
+
* The APG gives ArrowRight the job of opening a branch and ArrowLeft the job
|
|
247
|
+
* of closing it because the arrows follow the INDENT, and the indent grows
|
|
248
|
+
* rightward. Under `dir="rtl"` it grows leftward, so the two swap — without
|
|
249
|
+
* this an RTL user cannot open a node at all.
|
|
250
|
+
*
|
|
251
|
+
* Up / Down travel the block axis and Home / End name a semantic position
|
|
252
|
+
* (first / last), so all four are returned untouched in both directions.
|
|
253
|
+
*/
|
|
254
|
+
private inlineKey;
|
|
222
255
|
protected onKeydown(event: KeyboardEvent): void;
|
|
223
256
|
protected onTriggerClick(): void;
|
|
224
257
|
/** Trigger blur — mark the bound field touched. */
|
package/types/ngwr-version.d.ts
CHANGED
|
@@ -16,7 +16,7 @@ import { InjectionToken } from '@angular/core';
|
|
|
16
16
|
* Distinct from `Version` exported by `@angular/core`, which reports the
|
|
17
17
|
* loaded Angular runtime version (e.g. `'22.0.0'`), not ngwr's.
|
|
18
18
|
*/
|
|
19
|
-
declare const NGWR_VERSION = "
|
|
19
|
+
declare const NGWR_VERSION = "11.0.0";
|
|
20
20
|
|
|
21
21
|
/**
|
|
22
22
|
* @license
|
|
@@ -49,13 +49,25 @@ declare class WrVirtualScroll<T = unknown> {
|
|
|
49
49
|
protected readonly rowTemplate: _angular_core.Signal<TemplateRef<any>>;
|
|
50
50
|
protected readonly viewport: _angular_core.Signal<CdkVirtualScrollViewport>;
|
|
51
51
|
protected readonly resolvedHeight: _angular_core.Signal<string>;
|
|
52
|
+
/**
|
|
53
|
+
* The two buffers, resolved as a PAIR. CDK requires `maxBufferPx >= minBufferPx` and
|
|
54
|
+
* throws `CDK virtual scroll: maxBufferPx must be greater than or equal to minBufferPx`
|
|
55
|
+
* outright otherwise — so resolving them independently meant that setting just one of
|
|
56
|
+
* them, the obvious thing to do, crashed the viewport on construction. Whichever a
|
|
57
|
+
* consumer gave is honoured and the other follows it.
|
|
58
|
+
*/
|
|
59
|
+
private readonly buffers;
|
|
52
60
|
protected readonly resolvedMinBuffer: _angular_core.Signal<number>;
|
|
53
61
|
protected readonly resolvedMaxBuffer: _angular_core.Signal<number>;
|
|
54
62
|
/** Scroll a specific index into view. Mirrors the CDK API. */
|
|
55
63
|
scrollToIndex(index: number, behavior?: ScrollBehavior): void;
|
|
56
64
|
/** Scroll to a pixel offset. */
|
|
57
65
|
scrollToOffset(offset: number, behavior?: ScrollBehavior): void;
|
|
58
|
-
/**
|
|
66
|
+
/**
|
|
67
|
+
* Re-measure the viewport. CDK already watches the window with its `ViewportRuler`, so
|
|
68
|
+
* this is for a size change it cannot see — the host being resized by a layout the
|
|
69
|
+
* window never noticed, or a parent that was display:none until now.
|
|
70
|
+
*/
|
|
59
71
|
checkViewportSize(): void;
|
|
60
72
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<WrVirtualScroll<any>, never>;
|
|
61
73
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<WrVirtualScroll<any>, "wr-virtual-scroll", never, { "items": { "alias": "items"; "required": true; "isSignal": true; }; "itemSize": { "alias": "itemSize"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "minBufferPx": { "alias": "minBufferPx"; "required": false; "isSignal": true; }; "maxBufferPx": { "alias": "maxBufferPx"; "required": false; "isSignal": true; }; "trackBy": { "alias": "trackBy"; "required": false; "isSignal": true; }; }, {}, ["rowTemplate"], never, true, never>;
|