ngwr 11.1.0 → 12.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 +7 -7
- package/burger/styles/_index.scss +1 -1
- package/button/styles/_index.scss +2 -2
- package/calendar/styles/_index.scss +32 -12
- package/calendar-heatmap/styles/_index.scss +20 -0
- package/carousel/styles/_index.scss +23 -1
- package/cascader/styles/_index.scss +15 -3
- package/checkbox/styles/_index.scss +2 -2
- package/circular-text/styles/_index.scss +11 -0
- package/collapse/styles/_index.scss +2 -2
- package/color-picker/styles/_index.scss +3 -3
- package/command-palette/styles/_index.scss +12 -0
- package/compare/styles/_index.scss +18 -2
- package/context-menu/styles/_index.scss +21 -2
- package/date-picker/styles/_index.scss +5 -5
- package/descriptions/styles/_index.scss +1 -1
- package/drag-drop/styles/_index.scss +28 -1
- package/drawer/styles/_index.scss +37 -0
- package/dropdown/styles/_index.scss +2 -2
- package/event-calendar/styles/_index.scss +67 -10
- package/fesm2022/ngwr-action-sheet-testing.mjs +313 -0
- package/fesm2022/ngwr-action-sheet-testing.mjs.map +1 -0
- package/fesm2022/ngwr-action-sheet.mjs +3 -3
- package/fesm2022/ngwr-affix.mjs +3 -3
- package/fesm2022/ngwr-alert.mjs +3 -3
- package/fesm2022/ngwr-anchor.mjs +3 -3
- package/fesm2022/ngwr-aurora.mjs +3 -3
- package/fesm2022/ngwr-avatar.mjs +3 -3
- package/fesm2022/ngwr-back-top.mjs +3 -3
- package/fesm2022/ngwr-badge.mjs +6 -6
- package/fesm2022/ngwr-bar-chart-testing.mjs +107 -0
- package/fesm2022/ngwr-bar-chart-testing.mjs.map +1 -0
- package/fesm2022/ngwr-bar-chart.mjs +3 -3
- package/fesm2022/ngwr-blur-text-testing.mjs +203 -0
- package/fesm2022/ngwr-blur-text-testing.mjs.map +1 -0
- package/fesm2022/ngwr-blur-text.mjs +18 -4
- package/fesm2022/ngwr-blur-text.mjs.map +1 -1
- package/fesm2022/ngwr-border-glow-testing.mjs +325 -0
- package/fesm2022/ngwr-border-glow-testing.mjs.map +1 -0
- package/fesm2022/ngwr-border-glow.mjs +4 -4
- package/fesm2022/ngwr-border-glow.mjs.map +1 -1
- package/fesm2022/ngwr-breadcrumbs.mjs +29 -17
- package/fesm2022/ngwr-breadcrumbs.mjs.map +1 -1
- package/fesm2022/ngwr-burger.mjs +3 -3
- package/fesm2022/ngwr-button.mjs +6 -6
- package/fesm2022/ngwr-calendar-heatmap-testing.mjs +95 -0
- package/fesm2022/ngwr-calendar-heatmap-testing.mjs.map +1 -0
- package/fesm2022/ngwr-calendar-heatmap.mjs +17 -5
- package/fesm2022/ngwr-calendar-heatmap.mjs.map +1 -1
- package/fesm2022/ngwr-calendar-testing.mjs +368 -0
- package/fesm2022/ngwr-calendar-testing.mjs.map +1 -0
- package/fesm2022/ngwr-calendar.mjs +228 -10
- 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.mjs +124 -24
- package/fesm2022/ngwr-carousel.mjs.map +1 -1
- package/fesm2022/ngwr-cascader.mjs +60 -5
- package/fesm2022/ngwr-cascader.mjs.map +1 -1
- package/fesm2022/ngwr-checkbox.mjs +14 -6
- package/fesm2022/ngwr-checkbox.mjs.map +1 -1
- package/fesm2022/ngwr-circular-text-testing.mjs +230 -0
- package/fesm2022/ngwr-circular-text-testing.mjs.map +1 -0
- package/fesm2022/ngwr-circular-text.mjs +4 -4
- package/fesm2022/ngwr-circular-text.mjs.map +1 -1
- package/fesm2022/ngwr-click-spark.mjs +27 -7
- package/fesm2022/ngwr-click-spark.mjs.map +1 -1
- package/fesm2022/ngwr-clipboard.mjs +3 -3
- package/fesm2022/ngwr-collapse.mjs +9 -9
- package/fesm2022/ngwr-color-picker-testing.mjs +452 -0
- package/fesm2022/ngwr-color-picker-testing.mjs.map +1 -0
- package/fesm2022/ngwr-color-picker.mjs +126 -10
- package/fesm2022/ngwr-color-picker.mjs.map +1 -1
- package/fesm2022/ngwr-command-palette.mjs +14 -5
- package/fesm2022/ngwr-command-palette.mjs.map +1 -1
- package/fesm2022/ngwr-compare.mjs +3 -3
- package/fesm2022/ngwr-confetti.mjs +31 -6
- package/fesm2022/ngwr-confetti.mjs.map +1 -1
- package/fesm2022/ngwr-config.mjs +9 -0
- package/fesm2022/ngwr-config.mjs.map +1 -1
- package/fesm2022/ngwr-context-menu-testing.mjs +30 -11
- package/fesm2022/ngwr-context-menu-testing.mjs.map +1 -1
- package/fesm2022/ngwr-context-menu.mjs +358 -48
- package/fesm2022/ngwr-context-menu.mjs.map +1 -1
- package/fesm2022/ngwr-cookie.mjs +3 -3
- package/fesm2022/ngwr-counter.mjs +25 -9
- package/fesm2022/ngwr-counter.mjs.map +1 -1
- package/fesm2022/{ngwr-date-adapter-fns.mjs → ngwr-date-adapters-fns.mjs} +37 -10
- package/fesm2022/ngwr-date-adapters-fns.mjs.map +1 -0
- package/fesm2022/{ngwr-date-adapter-luxon.mjs → ngwr-date-adapters-luxon.mjs} +5 -5
- package/fesm2022/ngwr-date-adapters-luxon.mjs.map +1 -0
- package/fesm2022/ngwr-date-picker-testing.mjs +21 -85
- package/fesm2022/ngwr-date-picker-testing.mjs.map +1 -1
- package/fesm2022/ngwr-date-picker.mjs +119 -37
- package/fesm2022/ngwr-date-picker.mjs.map +1 -1
- package/fesm2022/{ngwr-date-adapter.mjs → ngwr-date.mjs} +36 -10
- package/fesm2022/ngwr-date.mjs.map +1 -0
- package/fesm2022/ngwr-decrypt-text-testing.mjs +261 -0
- package/fesm2022/ngwr-decrypt-text-testing.mjs.map +1 -0
- package/fesm2022/ngwr-decrypt-text.mjs +9 -4
- 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.mjs +73 -18
- package/fesm2022/ngwr-dialog.mjs.map +1 -1
- package/fesm2022/ngwr-directives.mjs +12 -12
- package/fesm2022/ngwr-divider.mjs +52 -5
- package/fesm2022/ngwr-divider.mjs.map +1 -1
- package/fesm2022/ngwr-donut-chart-testing.mjs +97 -0
- package/fesm2022/ngwr-donut-chart-testing.mjs.map +1 -0
- package/fesm2022/ngwr-donut-chart.mjs +7 -7
- package/fesm2022/ngwr-donut-chart.mjs.map +1 -1
- package/fesm2022/ngwr-drag-drop.mjs +160 -11
- package/fesm2022/ngwr-drag-drop.mjs.map +1 -1
- package/fesm2022/ngwr-drawer.mjs +156 -64
- package/fesm2022/ngwr-drawer.mjs.map +1 -1
- package/fesm2022/ngwr-dropdown.mjs +58 -12
- package/fesm2022/ngwr-dropdown.mjs.map +1 -1
- package/fesm2022/ngwr-empty.mjs +3 -3
- package/fesm2022/ngwr-event-calendar-testing.mjs +446 -0
- package/fesm2022/ngwr-event-calendar-testing.mjs.map +1 -0
- package/fesm2022/ngwr-event-calendar.mjs +66 -28
- package/fesm2022/ngwr-event-calendar.mjs.map +1 -1
- package/fesm2022/ngwr-falling-text-testing.mjs +220 -0
- package/fesm2022/ngwr-falling-text-testing.mjs.map +1 -0
- package/fesm2022/ngwr-falling-text.mjs +75 -46
- package/fesm2022/ngwr-falling-text.mjs.map +1 -1
- package/fesm2022/ngwr-file-upload.mjs +3 -3
- package/fesm2022/ngwr-form.mjs +32 -15
- package/fesm2022/ngwr-form.mjs.map +1 -1
- package/fesm2022/ngwr-fuzzy-text-testing.mjs +134 -0
- package/fesm2022/ngwr-fuzzy-text-testing.mjs.map +1 -0
- package/fesm2022/ngwr-fuzzy-text.mjs +21 -11
- package/fesm2022/ngwr-fuzzy-text.mjs.map +1 -1
- package/fesm2022/ngwr-gauge-testing.mjs +86 -0
- package/fesm2022/ngwr-gauge-testing.mjs.map +1 -0
- package/fesm2022/ngwr-gauge.mjs +3 -3
- package/fesm2022/ngwr-glitch-text-testing.mjs +215 -0
- package/fesm2022/ngwr-glitch-text-testing.mjs.map +1 -0
- package/fesm2022/ngwr-glitch-text.mjs +7 -7
- package/fesm2022/ngwr-glitch-text.mjs.map +1 -1
- package/fesm2022/ngwr-gradient-text-testing.mjs +258 -0
- package/fesm2022/ngwr-gradient-text-testing.mjs.map +1 -0
- package/fesm2022/ngwr-gradient-text.mjs +4 -4
- package/fesm2022/ngwr-gradient-text.mjs.map +1 -1
- package/fesm2022/ngwr-hotkey.mjs +24 -9
- package/fesm2022/ngwr-hotkey.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-en.mjs +87 -1
- package/fesm2022/ngwr-i18n-en.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-ru.mjs +69 -1
- package/fesm2022/ngwr-i18n-ru.mjs.map +1 -1
- package/fesm2022/ngwr-i18n.mjs +26 -15
- package/fesm2022/ngwr-i18n.mjs.map +1 -1
- package/fesm2022/ngwr-icon.mjs +6 -6
- package/fesm2022/ngwr-image-cropper-testing.mjs +200 -0
- package/fesm2022/ngwr-image-cropper-testing.mjs.map +1 -0
- package/fesm2022/ngwr-image-cropper.mjs +156 -11
- package/fesm2022/ngwr-image-cropper.mjs.map +1 -1
- package/fesm2022/ngwr-input-number-testing.mjs +15 -10
- package/fesm2022/ngwr-input-number-testing.mjs.map +1 -1
- package/fesm2022/ngwr-input-number.mjs +89 -15
- package/fesm2022/ngwr-input-number.mjs.map +1 -1
- package/fesm2022/ngwr-input-otp-testing.mjs +12 -6
- package/fesm2022/ngwr-input-otp-testing.mjs.map +1 -1
- package/fesm2022/ngwr-input-otp.mjs +24 -5
- package/fesm2022/ngwr-input-otp.mjs.map +1 -1
- package/fesm2022/ngwr-input.mjs +15 -15
- package/fesm2022/ngwr-keyboard.mjs +3 -3
- package/fesm2022/ngwr-knob-testing.mjs +220 -0
- package/fesm2022/ngwr-knob-testing.mjs.map +1 -0
- package/fesm2022/ngwr-knob.mjs +3 -3
- package/fesm2022/ngwr-layout.mjs +15 -15
- package/fesm2022/ngwr-lightbox-testing.mjs +223 -0
- package/fesm2022/ngwr-lightbox-testing.mjs.map +1 -0
- package/fesm2022/ngwr-lightbox.mjs +11 -4
- package/fesm2022/ngwr-lightbox.mjs.map +1 -1
- package/fesm2022/ngwr-line-chart-testing.mjs +119 -0
- package/fesm2022/ngwr-line-chart-testing.mjs.map +1 -0
- package/fesm2022/ngwr-line-chart.mjs +73 -26
- package/fesm2022/ngwr-line-chart.mjs.map +1 -1
- package/fesm2022/ngwr-list.mjs +7 -7
- package/fesm2022/ngwr-list.mjs.map +1 -1
- package/fesm2022/ngwr-loading-bar.mjs +7 -7
- package/fesm2022/ngwr-loading-bar.mjs.map +1 -1
- package/fesm2022/ngwr-markdown.mjs +66 -8
- package/fesm2022/ngwr-markdown.mjs.map +1 -1
- package/fesm2022/ngwr-marquee-testing.mjs +336 -0
- package/fesm2022/ngwr-marquee-testing.mjs.map +1 -0
- package/fesm2022/ngwr-marquee.mjs +4 -4
- package/fesm2022/ngwr-marquee.mjs.map +1 -1
- package/fesm2022/ngwr-media.mjs +3 -3
- package/fesm2022/ngwr-mention.mjs +108 -13
- package/fesm2022/ngwr-mention.mjs.map +1 -1
- package/fesm2022/ngwr-meta.mjs +6 -6
- package/fesm2022/ngwr-meter-group-testing.mjs +100 -0
- package/fesm2022/ngwr-meter-group-testing.mjs.map +1 -0
- package/fesm2022/ngwr-meter-group.mjs +3 -3
- package/fesm2022/ngwr-overlay.mjs +34 -7
- package/fesm2022/ngwr-overlay.mjs.map +1 -1
- package/fesm2022/ngwr-page-header.mjs +3 -3
- package/fesm2022/ngwr-pagination-testing.mjs +6 -6
- package/fesm2022/ngwr-pagination-testing.mjs.map +1 -1
- package/fesm2022/ngwr-pagination.mjs +17 -13
- package/fesm2022/ngwr-pagination.mjs.map +1 -1
- package/fesm2022/ngwr-pipes.mjs +39 -26
- package/fesm2022/ngwr-pipes.mjs.map +1 -1
- package/fesm2022/ngwr-platform.mjs +9 -9
- package/fesm2022/ngwr-popconfirm.mjs +6 -6
- package/fesm2022/ngwr-popover-testing.mjs +7 -2
- package/fesm2022/ngwr-popover-testing.mjs.map +1 -1
- package/fesm2022/ngwr-popover.mjs +169 -33
- package/fesm2022/ngwr-popover.mjs.map +1 -1
- package/fesm2022/ngwr-progress.mjs +3 -3
- package/fesm2022/ngwr-pull-to-refresh.mjs +3 -3
- package/fesm2022/ngwr-qr.mjs +42 -5
- package/fesm2022/ngwr-qr.mjs.map +1 -1
- package/fesm2022/ngwr-radio.mjs +6 -6
- package/fesm2022/ngwr-rating.mjs +3 -3
- package/fesm2022/ngwr-result.mjs +21 -30
- package/fesm2022/ngwr-result.mjs.map +1 -1
- package/fesm2022/ngwr-rotating-text-testing.mjs +220 -0
- package/fesm2022/ngwr-rotating-text-testing.mjs.map +1 -0
- package/fesm2022/ngwr-rotating-text.mjs +4 -4
- package/fesm2022/ngwr-rotating-text.mjs.map +1 -1
- package/fesm2022/ngwr-scroll.mjs +3 -3
- package/fesm2022/ngwr-segmented-testing.mjs +14 -1
- package/fesm2022/ngwr-segmented-testing.mjs.map +1 -1
- package/fesm2022/ngwr-segmented.mjs +29 -6
- package/fesm2022/ngwr-segmented.mjs.map +1 -1
- package/fesm2022/ngwr-select.mjs +227 -43
- package/fesm2022/ngwr-select.mjs.map +1 -1
- package/fesm2022/ngwr-shiny-text-testing.mjs +237 -0
- package/fesm2022/ngwr-shiny-text-testing.mjs.map +1 -0
- package/fesm2022/ngwr-shiny-text.mjs +11 -9
- package/fesm2022/ngwr-shiny-text.mjs.map +1 -1
- package/fesm2022/ngwr-sidebar.mjs +31 -16
- package/fesm2022/ngwr-sidebar.mjs.map +1 -1
- package/fesm2022/ngwr-skeleton.mjs +3 -3
- package/fesm2022/ngwr-slider.mjs +143 -14
- package/fesm2022/ngwr-slider.mjs.map +1 -1
- package/fesm2022/ngwr-sparkline-testing.mjs +76 -0
- package/fesm2022/ngwr-sparkline-testing.mjs.map +1 -0
- package/fesm2022/ngwr-sparkline.mjs +3 -3
- package/fesm2022/ngwr-speed-dial-testing.mjs +281 -0
- package/fesm2022/ngwr-speed-dial-testing.mjs.map +1 -0
- package/fesm2022/ngwr-speed-dial.mjs +27 -12
- package/fesm2022/ngwr-speed-dial.mjs.map +1 -1
- package/fesm2022/ngwr-spinner.mjs +3 -3
- package/fesm2022/ngwr-splash-cursor-testing.mjs +89 -0
- package/fesm2022/ngwr-splash-cursor-testing.mjs.map +1 -0
- package/fesm2022/ngwr-splash-cursor.mjs +3 -3
- package/fesm2022/ngwr-split-text-testing.mjs +224 -0
- package/fesm2022/ngwr-split-text-testing.mjs.map +1 -0
- package/fesm2022/ngwr-split-text.mjs +31 -5
- package/fesm2022/ngwr-split-text.mjs.map +1 -1
- package/fesm2022/ngwr-splitter-testing.mjs +245 -0
- package/fesm2022/ngwr-splitter-testing.mjs.map +1 -0
- package/fesm2022/ngwr-splitter.mjs +3 -3
- package/fesm2022/ngwr-spotlight-card-testing.mjs +368 -0
- package/fesm2022/ngwr-spotlight-card-testing.mjs.map +1 -0
- 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-testing.mjs +172 -0
- package/fesm2022/ngwr-star-border-testing.mjs.map +1 -0
- package/fesm2022/ngwr-star-border.mjs +4 -4
- package/fesm2022/ngwr-star-border.mjs.map +1 -1
- package/fesm2022/ngwr-statistic.mjs +9 -9
- package/fesm2022/ngwr-stepper-testing.mjs +8 -8
- package/fesm2022/ngwr-stepper-testing.mjs.map +1 -1
- package/fesm2022/ngwr-stepper.mjs +33 -8
- package/fesm2022/ngwr-stepper.mjs.map +1 -1
- package/fesm2022/ngwr-storage.mjs +17 -5
- package/fesm2022/ngwr-storage.mjs.map +1 -1
- package/fesm2022/ngwr-switch.mjs +3 -3
- package/fesm2022/ngwr-table.mjs +110 -40
- package/fesm2022/ngwr-table.mjs.map +1 -1
- package/fesm2022/ngwr-tabs-testing.mjs +11 -10
- package/fesm2022/ngwr-tabs-testing.mjs.map +1 -1
- package/fesm2022/ngwr-tabs.mjs +51 -11
- package/fesm2022/ngwr-tabs.mjs.map +1 -1
- package/fesm2022/ngwr-textarea.mjs +3 -3
- package/fesm2022/ngwr-theme.mjs +181 -4
- package/fesm2022/ngwr-theme.mjs.map +1 -1
- package/fesm2022/ngwr-tilt-card-testing.mjs +190 -0
- package/fesm2022/ngwr-tilt-card-testing.mjs.map +1 -0
- package/fesm2022/ngwr-tilt-card.mjs +26 -8
- package/fesm2022/ngwr-tilt-card.mjs.map +1 -1
- package/fesm2022/ngwr-timeline.mjs +6 -6
- package/fesm2022/ngwr-toast.mjs +44 -15
- package/fesm2022/ngwr-toast.mjs.map +1 -1
- package/fesm2022/ngwr-toolbar.mjs +3 -3
- package/fesm2022/ngwr-tour-testing.mjs +173 -0
- package/fesm2022/ngwr-tour-testing.mjs.map +1 -0
- package/fesm2022/ngwr-tour.mjs +34 -10
- package/fesm2022/ngwr-tour.mjs.map +1 -1
- package/fesm2022/ngwr-transfer.mjs +3 -3
- package/fesm2022/ngwr-tree.mjs +36 -11
- package/fesm2022/ngwr-tree.mjs.map +1 -1
- package/fesm2022/ngwr-typewriter-testing.mjs +242 -0
- package/fesm2022/ngwr-typewriter-testing.mjs.map +1 -0
- package/fesm2022/ngwr-typewriter.mjs +13 -5
- package/fesm2022/ngwr-typewriter.mjs.map +1 -1
- package/fesm2022/ngwr-typography.mjs +3 -3
- package/fesm2022/ngwr-utils.mjs +5 -2
- package/fesm2022/ngwr-utils.mjs.map +1 -1
- package/fesm2022/ngwr-version.mjs +1 -1
- package/fesm2022/ngwr-version.mjs.map +1 -1
- package/fesm2022/ngwr-virtual-scroll.mjs +4 -4
- package/fesm2022/ngwr-virtual-scroll.mjs.map +1 -1
- package/fesm2022/ngwr-waves-testing.mjs +128 -0
- package/fesm2022/ngwr-waves-testing.mjs.map +1 -0
- package/fesm2022/ngwr-waves.mjs +4 -4
- package/fesm2022/ngwr-waves.mjs.map +1 -1
- package/fesm2022/ngwr-window-testing.mjs +361 -0
- package/fesm2022/ngwr-window-testing.mjs.map +1 -0
- package/fesm2022/ngwr-window.mjs +175 -31
- package/fesm2022/ngwr-window.mjs.map +1 -1
- package/file-upload/styles/_index.scss +2 -2
- package/glitch-text/styles/_index.scss +27 -12
- package/i18n/en.json +71 -7
- package/i18n/ru.json +71 -7
- package/image-cropper/styles/_index.scss +19 -0
- package/input/styles/_index.scss +2 -2
- package/input-number/styles/_index.scss +2 -2
- package/input-otp/styles/_index.scss +9 -2
- package/knob/styles/_index.scss +1 -1
- package/lightbox/styles/_index.scss +16 -2
- package/line-chart/styles/_index.scss +28 -14
- package/list/styles/_index.scss +1 -1
- package/llms-full.txt +161 -19
- package/llms.txt +45 -10
- package/markdown/styles/_index.scss +3 -3
- package/mcp/api.js +6 -4
- package/mcp/catalog.js +40 -3
- package/mcp/providers.js +42 -0
- package/mcp/tools.js +22 -30
- package/meter-group/styles/_index.scss +1 -1
- package/overlay/styles/_index.scss +33 -1
- package/package.json +161 -12
- package/pagination/styles/_index.scss +23 -1
- package/popover/styles/_index.scss +16 -7
- package/progress/styles/_index.scss +1 -1
- package/radio/styles/_index.scss +2 -2
- package/rating/styles/_index.scss +1 -1
- package/schematics/collection.json +1 -1
- package/schematics/migrations/v12/index.js +65 -0
- package/schematics/migrations/v7/index.js +12 -1
- package/schematics/migrations/v8/index.js +10 -1
- package/schematics/migrations.json +5 -0
- package/schematics/ng-add/index.js +8 -3
- package/schematics/provider/index.js +80 -13
- package/schematics/use/index.js +9 -129
- package/schematics/use/rule.js +206 -0
- package/schematics/use/symbol-map.json +4 -4
- package/segmented/styles/_index.scss +14 -3
- package/select/styles/_index.scss +14 -2
- package/sidebar/styles/_index.scss +12 -10
- package/skills/ngwr/SKILL.md +117 -0
- package/skills/ngwr/references/catalog.md +212 -0
- package/skills/ngwr/references/setup.md +78 -0
- package/slider/styles/_index.scss +1 -1
- package/speed-dial/styles/_index.scss +1 -1
- package/stepper/styles/_index.scss +12 -3
- package/switch/styles/_index.scss +2 -2
- package/table/styles/_index.scss +61 -12
- package/tabs/styles/_index.scss +1 -1
- package/textarea/styles/_index.scss +1 -1
- package/theme/styles/_colors.scss +142 -56
- package/theme/styles/_dark.scss +46 -3
- package/theme/styles/_focus.scss +28 -5
- package/theme/styles/_mixins.scss +1 -1
- package/theme/styles/_variables.scss +67 -0
- package/transfer/styles/_index.scss +26 -3
- package/tree/styles/_index.scss +29 -6
- package/types/ngwr-action-sheet-testing.d.ts +260 -0
- package/types/ngwr-bar-chart-testing.d.ts +85 -0
- package/types/ngwr-blur-text-testing.d.ts +180 -0
- package/types/ngwr-blur-text.d.ts +20 -4
- package/types/ngwr-border-glow-testing.d.ts +219 -0
- package/types/ngwr-breadcrumbs.d.ts +17 -10
- package/types/ngwr-calendar-heatmap-testing.d.ts +79 -0
- package/types/ngwr-calendar-testing.d.ts +277 -0
- package/types/ngwr-calendar.d.ts +76 -0
- package/types/ngwr-carousel.d.ts +85 -6
- package/types/ngwr-cascader.d.ts +17 -0
- package/types/ngwr-checkbox.d.ts +13 -0
- package/types/ngwr-circular-text-testing.d.ts +196 -0
- package/types/ngwr-click-spark.d.ts +4 -0
- package/types/ngwr-color-picker-testing.d.ts +299 -0
- package/types/ngwr-color-picker.d.ts +34 -2
- package/types/ngwr-confetti.d.ts +8 -0
- package/types/ngwr-config.d.ts +10 -1
- package/types/ngwr-context-menu-testing.d.ts +24 -11
- package/types/ngwr-context-menu.d.ts +71 -1
- package/types/ngwr-counter.d.ts +1 -0
- package/types/{ngwr-date-adapter-fns.d.ts → ngwr-date-adapters-fns.d.ts} +33 -6
- package/types/{ngwr-date-adapter-luxon.d.ts → ngwr-date-adapters-luxon.d.ts} +1 -1
- package/types/ngwr-date-picker-testing.d.ts +17 -72
- package/types/ngwr-date-picker.d.ts +8 -4
- package/types/{ngwr-date-adapter.d.ts → ngwr-date.d.ts} +24 -5
- package/types/ngwr-decrypt-text-testing.d.ts +222 -0
- package/types/ngwr-dialog.d.ts +38 -1
- package/types/ngwr-divider.d.ts +25 -0
- package/types/ngwr-donut-chart-testing.d.ts +83 -0
- package/types/ngwr-donut-chart.d.ts +3 -3
- package/types/ngwr-drag-drop.d.ts +56 -2
- package/types/ngwr-drawer.d.ts +68 -5
- package/types/ngwr-dropdown.d.ts +9 -0
- package/types/ngwr-event-calendar-testing.d.ts +301 -0
- package/types/ngwr-event-calendar.d.ts +17 -8
- package/types/ngwr-falling-text-testing.d.ts +188 -0
- package/types/ngwr-falling-text.d.ts +1 -1
- package/types/ngwr-form.d.ts +12 -2
- package/types/ngwr-fuzzy-text-testing.d.ts +130 -0
- package/types/ngwr-gauge-testing.d.ts +71 -0
- package/types/ngwr-glitch-text-testing.d.ts +201 -0
- package/types/ngwr-gradient-text-testing.d.ts +186 -0
- package/types/ngwr-i18n.d.ts +13 -4
- package/types/ngwr-image-cropper-testing.d.ts +173 -0
- package/types/ngwr-image-cropper.d.ts +71 -5
- package/types/ngwr-input-number-testing.d.ts +15 -10
- package/types/ngwr-input-number.d.ts +44 -5
- package/types/ngwr-input-otp-testing.d.ts +12 -6
- package/types/ngwr-input-otp.d.ts +15 -1
- package/types/ngwr-knob-testing.d.ts +150 -0
- package/types/ngwr-lightbox-testing.d.ts +154 -0
- package/types/ngwr-lightbox.d.ts +6 -0
- package/types/ngwr-line-chart-testing.d.ts +93 -0
- package/types/ngwr-line-chart.d.ts +20 -3
- package/types/ngwr-markdown.d.ts +11 -0
- package/types/ngwr-marquee-testing.d.ts +280 -0
- package/types/ngwr-mention.d.ts +32 -0
- package/types/ngwr-meter-group-testing.d.ts +77 -0
- package/types/ngwr-overlay.d.ts +20 -1
- package/types/ngwr-pagination-testing.d.ts +4 -4
- package/types/ngwr-pipes.d.ts +1 -1
- package/types/ngwr-popover-testing.d.ts +7 -2
- package/types/ngwr-popover.d.ts +1 -0
- package/types/ngwr-result.d.ts +6 -0
- package/types/ngwr-rotating-text-testing.d.ts +191 -0
- package/types/ngwr-segmented-testing.d.ts +9 -0
- package/types/ngwr-segmented.d.ts +21 -1
- package/types/ngwr-select.d.ts +100 -6
- package/types/ngwr-shiny-text-testing.d.ts +165 -0
- package/types/ngwr-shiny-text.d.ts +4 -2
- package/types/ngwr-sidebar.d.ts +14 -5
- package/types/ngwr-slider.d.ts +84 -1
- package/types/ngwr-sparkline-testing.d.ts +69 -0
- package/types/ngwr-speed-dial-testing.d.ts +199 -0
- package/types/ngwr-speed-dial.d.ts +22 -3
- package/types/ngwr-splash-cursor-testing.d.ts +95 -0
- package/types/ngwr-split-text-testing.d.ts +209 -0
- package/types/ngwr-split-text.d.ts +21 -0
- package/types/ngwr-splitter-testing.d.ts +174 -0
- package/types/ngwr-spotlight-card-testing.d.ts +303 -0
- package/types/ngwr-star-border-testing.d.ts +135 -0
- package/types/ngwr-stepper-testing.d.ts +5 -5
- package/types/ngwr-stepper.d.ts +8 -0
- package/types/ngwr-storage.d.ts +1 -0
- package/types/ngwr-table.d.ts +114 -12
- package/types/ngwr-tabs-testing.d.ts +11 -10
- package/types/ngwr-tabs.d.ts +2 -0
- package/types/ngwr-theme.d.ts +82 -1
- package/types/ngwr-tilt-card-testing.d.ts +158 -0
- package/types/ngwr-tilt-card.d.ts +2 -0
- package/types/ngwr-toast.d.ts +14 -5
- package/types/ngwr-tour-testing.d.ts +143 -0
- package/types/ngwr-tour.d.ts +22 -4
- package/types/ngwr-tree.d.ts +12 -4
- package/types/ngwr-typewriter-testing.d.ts +211 -0
- package/types/ngwr-utils.d.ts +5 -2
- package/types/ngwr-version.d.ts +1 -1
- package/types/ngwr-waves-testing.d.ts +121 -0
- package/types/ngwr-window-testing.d.ts +263 -0
- package/types/ngwr-window.d.ts +66 -21
- package/typography/styles/_index.scss +1 -1
- package/window/styles/_index.scss +116 -42
- package/fesm2022/ngwr-date-adapter-fns.mjs.map +0 -1
- package/fesm2022/ngwr-date-adapter-luxon.mjs.map +0 -1
- package/fesm2022/ngwr-date-adapter.mjs.map +0 -1
package/types/ngwr-dialog.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ import { OverlayRef } from '@angular/cdk/overlay';
|
|
|
4
4
|
import * as i0 from '@angular/core';
|
|
5
5
|
import { ComponentRef, InjectionToken, ElementRef } from '@angular/core';
|
|
6
6
|
import { ReplaySubject } from 'rxjs';
|
|
7
|
+
import * as i1 from '@angular/cdk/scrolling';
|
|
7
8
|
|
|
8
9
|
/**
|
|
9
10
|
* @license
|
|
@@ -87,6 +88,15 @@ interface WrDialogOptions<D = unknown> {
|
|
|
87
88
|
readonly closeOnBackdropClick?: boolean;
|
|
88
89
|
/** When `true`, the Escape key closes the dialog. @default true */
|
|
89
90
|
readonly closeOnEscape?: boolean;
|
|
91
|
+
/**
|
|
92
|
+
* When `true`, the dialog closes as soon as the URL changes — the Back button
|
|
93
|
+
* and any `router.navigate()` alike. Nothing else ties a dialog to the route
|
|
94
|
+
* it was opened on, so turning this off leaves the pane, its backdrop and its
|
|
95
|
+
* focus trap over whatever page the app navigates to. Turn it off only for a
|
|
96
|
+
* dialog that OWNS the navigation (a wizard that keeps its step in the URL).
|
|
97
|
+
* @default true
|
|
98
|
+
*/
|
|
99
|
+
readonly closeOnNavigation?: boolean;
|
|
90
100
|
/**
|
|
91
101
|
* Render a dismiss (×) button in the panel's top-right corner. Set `false`
|
|
92
102
|
* when the content supplies its own close affordance, or when the dialog must
|
|
@@ -139,7 +149,24 @@ declare class WrDialog {
|
|
|
139
149
|
private readonly isBrowser;
|
|
140
150
|
private readonly responsiveConfig;
|
|
141
151
|
private readonly i18n;
|
|
152
|
+
private readonly location;
|
|
142
153
|
open<C, R = unknown, D = unknown>(component: ComponentType<C>, options?: WrDialogOptions<D>): WrDialogRef<C, R>;
|
|
154
|
+
/**
|
|
155
|
+
* Tie the dialog's lifetime to the URL it was opened on.
|
|
156
|
+
*
|
|
157
|
+
* Nothing else does. The overlay belongs to a root service and is dismissed
|
|
158
|
+
* only by the backdrop, Escape or an explicit `close()`, so pressing Back
|
|
159
|
+
* swapped the routed view underneath and left the modal pane, its backdrop and
|
|
160
|
+
* its focus trap sitting over a page the user never opened them on.
|
|
161
|
+
*
|
|
162
|
+
* `onUrlChange`, not `Location.subscribe()` — which is what CDK's own
|
|
163
|
+
* `disposeOnNavigation` uses: `subscribe` fires on popstate alone, so an
|
|
164
|
+
* in-app `router.navigate()` left the dialog standing. And `dialogRef.close()`
|
|
165
|
+
* rather than disposing the overlay behind the ref's back, which would never
|
|
166
|
+
* emit `closed`, never destroy the focus trap, and leave `awaitClose()`
|
|
167
|
+
* pending forever.
|
|
168
|
+
*/
|
|
169
|
+
private watchNavigation;
|
|
143
170
|
/**
|
|
144
171
|
* The dismiss button's accessible name.
|
|
145
172
|
*
|
|
@@ -242,6 +269,16 @@ declare class WrDialogTitle {
|
|
|
242
269
|
/**
|
|
243
270
|
* Styles the scrollable body section of a dialog.
|
|
244
271
|
*
|
|
272
|
+
* `CdkScrollable` is a host directive because this element is a real scroll
|
|
273
|
+
* container (`overflow: auto`) and an anchored overlay opened from inside it has
|
|
274
|
+
* to follow its trigger. CDK's `reposition()` strategy listens to
|
|
275
|
+
* `ScrollDispatcher`, which is fed by registered scrollables plus ONE
|
|
276
|
+
* non-capturing `document` listener — and element `scroll` does not bubble, so
|
|
277
|
+
* without the registration a `<wr-select>` halfway down a long dialog form kept
|
|
278
|
+
* its panel pinned to the viewport while the trigger scrolled away. Angular
|
|
279
|
+
* Material carries the same host directive on `MatDialogContent` for the same
|
|
280
|
+
* reason.
|
|
281
|
+
*
|
|
245
282
|
* @example
|
|
246
283
|
* ```html
|
|
247
284
|
* <div wrDialogContent>…body…</div>
|
|
@@ -249,7 +286,7 @@ declare class WrDialogTitle {
|
|
|
249
286
|
*/
|
|
250
287
|
declare class WrDialogContent {
|
|
251
288
|
static ɵfac: i0.ɵɵFactoryDeclaration<WrDialogContent, never>;
|
|
252
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<WrDialogContent, "[wrDialogContent]", never, {}, {}, never, never, true,
|
|
289
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<WrDialogContent, "[wrDialogContent]", never, {}, {}, never, never, true, [{ directive: typeof i1.CdkScrollable; inputs: {}; outputs: {}; }]>;
|
|
253
290
|
}
|
|
254
291
|
|
|
255
292
|
/**
|
package/types/ngwr-divider.d.ts
CHANGED
|
@@ -65,6 +65,31 @@ declare class WrDivider {
|
|
|
65
65
|
*/
|
|
66
66
|
readonly align: _angular_core.InputSignal<WrDividerAlign>;
|
|
67
67
|
protected readonly classes: _angular_core.Signal<string>;
|
|
68
|
+
private readonly host;
|
|
69
|
+
/**
|
|
70
|
+
* The consumer's own `aria-label`, resolved on the first sync — `undefined`
|
|
71
|
+
* until then, which is how "not looked at yet" stays distinct from "they wrote
|
|
72
|
+
* none".
|
|
73
|
+
*/
|
|
74
|
+
private authored;
|
|
75
|
+
constructor();
|
|
76
|
+
/**
|
|
77
|
+
* Name the separator with the label it projects.
|
|
78
|
+
*
|
|
79
|
+
* `role="separator"` makes the host's children presentational and a separator
|
|
80
|
+
* takes its accessible name from the author alone — so `<wr-divider>OR</wr-divider>`
|
|
81
|
+
* reaches assistive tech as an unnamed rule while everyone else reads "OR".
|
|
82
|
+
* Copying the label into `aria-label` is the only way to expose it without giving
|
|
83
|
+
* up the role, and the two can never disagree because one is the source of the
|
|
84
|
+
* other.
|
|
85
|
+
*
|
|
86
|
+
* Written straight to the DOM rather than through a host binding, for two
|
|
87
|
+
* reasons a binding cannot cover: the label is projected content, so an
|
|
88
|
+
* interpolation or an `@if` can change it while the divider stays put; and a
|
|
89
|
+
* binding resolving to `null` would strip an `aria-label` the consumer wrote
|
|
90
|
+
* themselves — theirs is the author name already and is never touched.
|
|
91
|
+
*/
|
|
92
|
+
private syncLabel;
|
|
68
93
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<WrDivider, never>;
|
|
69
94
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<WrDivider, "wr-divider", never, { "color": { "alias": "color"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "align": { "alias": "align"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
70
95
|
}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { BaseHarnessFilters, ComponentHarness, HarnessPredicate } 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-donut-chart>` a harness query matches. */
|
|
11
|
+
interface WrDonutChartHarnessFilters extends BaseHarnessFilters {
|
|
12
|
+
/** Match the chart's accessible name. */
|
|
13
|
+
readonly ariaLabel?: string | RegExp;
|
|
14
|
+
/** Match a chart whose legend holds this label. */
|
|
15
|
+
readonly sliceLabel?: string | RegExp;
|
|
16
|
+
}
|
|
17
|
+
/** One legend row — the only place a slice's label and value are readable. */
|
|
18
|
+
interface WrDonutChartLegendEntry {
|
|
19
|
+
readonly label: string;
|
|
20
|
+
readonly value: string;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* @license
|
|
25
|
+
*
|
|
26
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
27
|
+
* found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
|
|
28
|
+
*/
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Test harness for `<wr-donut-chart>`.
|
|
32
|
+
*
|
|
33
|
+
* **The ring itself is unreadable, and that is by design.** The slices are SVG
|
|
34
|
+
* paths inside a `role="img"` drawing: a screen reader is given that drawing's
|
|
35
|
+
* `aria-label` and nothing else, and a spec cannot get a label or a value off a
|
|
36
|
+
* path's `d`. {@link getLegend} is where the numbers are — which is also the
|
|
37
|
+
* argument for keeping `showLegend` on, since with it off the only other text is
|
|
38
|
+
* whatever {@link getCenterValue} and {@link getCenterLabel} were given.
|
|
39
|
+
*
|
|
40
|
+
* The name is read off the `<svg>` rather than off the surface that wraps it, and
|
|
41
|
+
* the two are not interchangeable: `img` makes its whole subtree presentational, so
|
|
42
|
+
* a name on the wrapper would take the centre text down with it.
|
|
43
|
+
*
|
|
44
|
+
* {@link getSliceCount} is therefore the one thing the ring answers: how many
|
|
45
|
+
* wedges were drawn. Compare it with the legend's length to catch a slice that was
|
|
46
|
+
* filtered out of one and not the other.
|
|
47
|
+
*
|
|
48
|
+
* @example
|
|
49
|
+
* ```ts
|
|
50
|
+
* const chart = await loader.getHarness(WrDonutChartHarness);
|
|
51
|
+
*
|
|
52
|
+
* expect(await chart.getSliceCount()).toBe(3);
|
|
53
|
+
* expect(await chart.getLegend()).toEqual([
|
|
54
|
+
* { label: 'Direct', value: '48' },
|
|
55
|
+
* { label: 'Search', value: '32' },
|
|
56
|
+
* { label: 'Social', value: '20' },
|
|
57
|
+
* ]);
|
|
58
|
+
* ```
|
|
59
|
+
*
|
|
60
|
+
* @see https://ngwr.dev/guides/testing
|
|
61
|
+
*/
|
|
62
|
+
declare class WrDonutChartHarness extends ComponentHarness {
|
|
63
|
+
static hostSelector: string;
|
|
64
|
+
/** Build a predicate that narrows the query — pass to `getHarness` / `getAllHarnesses`. */
|
|
65
|
+
static with(options?: WrDonutChartHarnessFilters): HarnessPredicate<WrDonutChartHarness>;
|
|
66
|
+
/** The name the ring announces — the whole chart's, since the slices announce nothing. */
|
|
67
|
+
getAccessibleName(): Promise<string | null>;
|
|
68
|
+
/** How many wedges were drawn. */
|
|
69
|
+
getSliceCount(): Promise<number>;
|
|
70
|
+
/** Whether the legend is rendered (`showLegend`, and at least one slice). */
|
|
71
|
+
hasLegend(): Promise<boolean>;
|
|
72
|
+
/** The legend rows in order — the only textual form the data has. */
|
|
73
|
+
getLegend(): Promise<WrDonutChartLegendEntry[]>;
|
|
74
|
+
/** The big number in the middle, or `null` when the chart has none. */
|
|
75
|
+
getCenterValue(): Promise<string | null>;
|
|
76
|
+
/** The caption under the centre value, or `null`. */
|
|
77
|
+
getCenterLabel(): Promise<string | null>;
|
|
78
|
+
/** The ring's diameter in pixels, as the component writes it inline. */
|
|
79
|
+
getSize(): Promise<number>;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
export { WrDonutChartHarness };
|
|
83
|
+
export type { WrDonutChartHarnessFilters, WrDonutChartLegendEntry };
|
|
@@ -23,9 +23,9 @@ interface WrDonutSegment {
|
|
|
23
23
|
declare class WrDonutChart {
|
|
24
24
|
readonly segments: _angular_core.InputSignal<readonly WrDonutSegment[]>;
|
|
25
25
|
/**
|
|
26
|
-
* Accessible name of the
|
|
27
|
-
*
|
|
28
|
-
* to `donutChart.label`.
|
|
26
|
+
* Accessible name of the drawing. The arcs carry no text and the legend is optional, so
|
|
27
|
+
* with `showLegend: false` this and the centre text are the whole of what a screen reader
|
|
28
|
+
* gets. Falls back to `donutChart.label`.
|
|
29
29
|
*/
|
|
30
30
|
readonly ariaLabel: _angular_core.InputSignal<string | null>;
|
|
31
31
|
protected readonly resolvedAriaLabel: _angular_core.Signal<string>;
|
|
@@ -21,8 +21,21 @@ interface WrSortableReorderEvent<T> {
|
|
|
21
21
|
* emitted via 2-way `[(items)]`.
|
|
22
22
|
*
|
|
23
23
|
* Drop a single template — it's rendered per item with `let-item
|
|
24
|
-
* let-index="index"`.
|
|
25
|
-
*
|
|
24
|
+
* let-index="index"`. Put `wrDragHandle` on an element inside that
|
|
25
|
+
* template to restrict drag start to a handle; there is no input for
|
|
26
|
+
* it, the directive's presence is the switch.
|
|
27
|
+
*
|
|
28
|
+
* Every row is a tab stop: Space or Enter picks it up, the arrow keys move it,
|
|
29
|
+
* Space or Enter drops it and Escape puts it back. CDK's `cdkDrag` ships no key
|
|
30
|
+
* handling of its own, so without this the component's only function was
|
|
31
|
+
* unreachable from a keyboard.
|
|
32
|
+
*
|
|
33
|
+
* What that does NOT answer is WCAG 2.5.7, which asks for a POINTER alternative
|
|
34
|
+
* to the drag. Click-to-pick-up is the obvious candidate and is not safe here:
|
|
35
|
+
* the CDK's drag-drop bundle installs no click suppressor of any kind, so the
|
|
36
|
+
* mouseup ending a drag still produces a click, and a row that grabbed itself on
|
|
37
|
+
* click would be picking itself straight back up. A visible move-up /
|
|
38
|
+
* move-down affordance is the remaining answer, and that is a design change.
|
|
26
39
|
*
|
|
27
40
|
* @example
|
|
28
41
|
* ```html
|
|
@@ -64,7 +77,48 @@ declare class WrSortableList<T = unknown> {
|
|
|
64
77
|
/** Fired after a successful reorder with the new array + indices. */
|
|
65
78
|
readonly reorder: _angular_core.OutputEmitterRef<WrSortableReorderEvent<T>>;
|
|
66
79
|
protected readonly rowTemplate: _angular_core.Signal<TemplateRef<any>>;
|
|
80
|
+
private readonly injector;
|
|
81
|
+
private readonly rowEls;
|
|
82
|
+
/** Index of the row the keyboard is holding, or `null` when nothing is held. */
|
|
83
|
+
protected readonly grabbedIndex: _angular_core.WritableSignal<number | null>;
|
|
84
|
+
/** Live-region text. Written by the keyboard path only. */
|
|
85
|
+
protected readonly announcement: _angular_core.WritableSignal<string>;
|
|
86
|
+
/** Links every row to the key model via `aria-describedby`. */
|
|
87
|
+
protected readonly keyHelpId: string;
|
|
88
|
+
protected readonly resolvedKeyHelp: _angular_core.Signal<string>;
|
|
89
|
+
private readonly grabbedText;
|
|
90
|
+
private readonly movedText;
|
|
91
|
+
private readonly droppedText;
|
|
92
|
+
private readonly cancelledText;
|
|
93
|
+
/** Where the held row started. Escape puts it back there. */
|
|
94
|
+
private grabOrigin;
|
|
95
|
+
/** True while a keyboard move is handing focus back — see `onRowFocusout`. */
|
|
96
|
+
private restoringFocus;
|
|
67
97
|
protected onDrop(event: CdkDragDrop<T[]>): void;
|
|
98
|
+
/**
|
|
99
|
+
* The keyboard reorder path: pick up, move, drop — deliberately a two-step
|
|
100
|
+
* grab rather than "an arrow moves the focused row", so that arrowing through
|
|
101
|
+
* a list a user is only reading can never rearrange it.
|
|
102
|
+
*
|
|
103
|
+
* Keys are handled only when the ROW itself is the event target; a button or
|
|
104
|
+
* an input projected into the row template keeps every key it would normally
|
|
105
|
+
* get.
|
|
106
|
+
*/
|
|
107
|
+
protected onRowKeydown(event: KeyboardEvent, index: number): void;
|
|
108
|
+
/**
|
|
109
|
+
* Focus leaving a held row ends the gesture as a drop rather than dropping the
|
|
110
|
+
* change on the floor — `[(items)]` has already been written by then, so a
|
|
111
|
+
* silent release would leave `reorder` never reporting a move that happened.
|
|
112
|
+
* The guard is what makes it safe: moving a focused node in the DOM blurs it,
|
|
113
|
+
* so every keyboard move fires this too.
|
|
114
|
+
*/
|
|
115
|
+
protected onRowFocusout(): void;
|
|
116
|
+
private grab;
|
|
117
|
+
private moveGrabbed;
|
|
118
|
+
private drop;
|
|
119
|
+
private cancelGrab;
|
|
120
|
+
private relocate;
|
|
121
|
+
private position;
|
|
68
122
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<WrSortableList<any>, never>;
|
|
69
123
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<WrSortableList<any>, "wr-sortable-list", never, { "items": { "alias": "items"; "required": true; "isSignal": true; }; "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "lockAxis": { "alias": "lockAxis"; "required": false; "isSignal": true; }; "dragStartDelay": { "alias": "dragStartDelay"; "required": false; "isSignal": true; }; "trackBy": { "alias": "trackBy"; "required": false; "isSignal": true; }; }, { "items": "itemsChange"; "reorder": "reorder"; }, ["rowTemplate"], never, true, never>;
|
|
70
124
|
}
|
package/types/ngwr-drawer.d.ts
CHANGED
|
@@ -48,6 +48,16 @@ interface WrDrawerOptions<D = unknown> {
|
|
|
48
48
|
readonly closeOnBackdropClick?: boolean;
|
|
49
49
|
/** When `true`, the Escape key closes the drawer. @default true */
|
|
50
50
|
readonly closeOnEscape?: boolean;
|
|
51
|
+
/**
|
|
52
|
+
* When `true`, the drawer closes as soon as the URL changes — the Back button
|
|
53
|
+
* and any `router.navigate()` alike. Nothing else ties a drawer to the route
|
|
54
|
+
* it was opened on, so turning this off leaves the panel, its backdrop, its
|
|
55
|
+
* focus trap and the page-wide scroll block over whatever page the app
|
|
56
|
+
* navigates to. Turn it off only for a drawer that OWNS the navigation (a
|
|
57
|
+
* filter panel that keeps its state in the query string).
|
|
58
|
+
* @default true
|
|
59
|
+
*/
|
|
60
|
+
readonly closeOnNavigation?: boolean;
|
|
51
61
|
/**
|
|
52
62
|
* Render a dismiss (×) button in the panel's top-right corner. Set `false`
|
|
53
63
|
* when the content supplies its own close affordance. @default true
|
|
@@ -125,12 +135,33 @@ declare class WrDrawer {
|
|
|
125
135
|
readonly closeLabel: _angular_core.InputSignal<string | null>;
|
|
126
136
|
protected readonly resolvedCloseLabel: _angular_core.Signal<string>;
|
|
127
137
|
protected readonly panelTpl: _angular_core.Signal<TemplateRef<any>>;
|
|
138
|
+
/**
|
|
139
|
+
* A projected `[wrDrawerTitle]`, if the consumer gave one.
|
|
140
|
+
*
|
|
141
|
+
* The dismiss button is corner chrome positioned at a fixed
|
|
142
|
+
* `inset-block-start` chosen to centre it on the TITLE's first line. With no
|
|
143
|
+
* title the content starts at the top of the panel and runs underneath it: on
|
|
144
|
+
* a bare `<wr-drawer><nav /></wr-drawer>` the button covered the first menu
|
|
145
|
+
* row by 24×16 px, and `elementFromPoint` at the button's centre returned the
|
|
146
|
+
* button, so that corner of the first item was unclickable. The panel has to
|
|
147
|
+
* know, because only the panel can reserve the space.
|
|
148
|
+
*/
|
|
149
|
+
private readonly projectedTitle;
|
|
128
150
|
protected panelClass(): string;
|
|
129
151
|
private swipeStartX;
|
|
130
152
|
private swipeStartY;
|
|
131
153
|
private swiping;
|
|
132
154
|
protected onSwipeStart(event: PointerEvent): void;
|
|
133
155
|
protected onSwipeMove(event: PointerEvent, panel: HTMLElement): void;
|
|
156
|
+
/**
|
|
157
|
+
* A cancelled pointer is an ABANDONED swipe, not a completed one — the system
|
|
158
|
+
* took the gesture away (a call, a system gesture, an orientation change) and
|
|
159
|
+
* no `pointerup` ever arrives. Routing it through `onSwipeEnd` dismissed the
|
|
160
|
+
* drawer on an interruption the user did not ask for and, because the overlay
|
|
161
|
+
* is disposed with the dragged offset applied, could not take back. Same rule
|
|
162
|
+
* `wr-pull-to-refresh` states for `touchcancel`.
|
|
163
|
+
*/
|
|
164
|
+
protected onSwipeCancel(panel: HTMLElement): void;
|
|
134
165
|
protected onSwipeEnd(event: PointerEvent, panel: HTMLElement): void;
|
|
135
166
|
/** Axis + sign of the closing direction for the current position. */
|
|
136
167
|
private closeAxis;
|
|
@@ -143,10 +174,22 @@ declare class WrDrawer {
|
|
|
143
174
|
private focusTrap;
|
|
144
175
|
private previouslyFocused;
|
|
145
176
|
constructor();
|
|
177
|
+
/**
|
|
178
|
+
* Point the panel's `aria-labelledby` at the CURRENT `[wrDrawerTitle]`.
|
|
179
|
+
*
|
|
180
|
+
* Re-resolved after every render rather than once when the drawer opens,
|
|
181
|
+
* because the title element is projected content and can come and go while
|
|
182
|
+
* the drawer stays open — an `@if` around it, or a heading that only exists
|
|
183
|
+
* once the data arrives. A one-shot lookup leaves the attribute naming an
|
|
184
|
+
* element that has been removed or replaced, and a dangling reference is not
|
|
185
|
+
* a name: the dialog is announced as unnamed, with nothing on screen to say
|
|
186
|
+
* so. A missing title clears the attribute for the same reason.
|
|
187
|
+
*/
|
|
188
|
+
private syncLabel;
|
|
146
189
|
private openOverlay;
|
|
147
190
|
private closeOverlay;
|
|
148
191
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<WrDrawer, never>;
|
|
149
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<WrDrawer, "wr-drawer", never, { "open": { "alias": "open"; "required": false; "isSignal": true; }; "position": { "alias": "position"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "maxHeight": { "alias": "maxHeight"; "required": false; "isSignal": true; }; "rounded": { "alias": "rounded"; "required": false; "isSignal": true; }; "showHandle": { "alias": "showHandle"; "required": false; "isSignal": true; }; "safeArea": { "alias": "safeArea"; "required": false; "isSignal": true; }; "hasBackdrop": { "alias": "hasBackdrop"; "required": false; "isSignal": true; }; "closeOnBackdropClick": { "alias": "closeOnBackdropClick"; "required": false; "isSignal": true; }; "closeOnEscape": { "alias": "closeOnEscape"; "required": false; "isSignal": true; }; "closable": { "alias": "closable"; "required": false; "isSignal": true; }; "closeLabel": { "alias": "closeLabel"; "required": false; "isSignal": true; }; }, { "open": "openChange"; },
|
|
192
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<WrDrawer, "wr-drawer", never, { "open": { "alias": "open"; "required": false; "isSignal": true; }; "position": { "alias": "position"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "maxHeight": { "alias": "maxHeight"; "required": false; "isSignal": true; }; "rounded": { "alias": "rounded"; "required": false; "isSignal": true; }; "showHandle": { "alias": "showHandle"; "required": false; "isSignal": true; }; "safeArea": { "alias": "safeArea"; "required": false; "isSignal": true; }; "hasBackdrop": { "alias": "hasBackdrop"; "required": false; "isSignal": true; }; "closeOnBackdropClick": { "alias": "closeOnBackdropClick"; "required": false; "isSignal": true; }; "closeOnEscape": { "alias": "closeOnEscape"; "required": false; "isSignal": true; }; "closable": { "alias": "closable"; "required": false; "isSignal": true; }; "closeLabel": { "alias": "closeLabel"; "required": false; "isSignal": true; }; }, { "open": "openChange"; }, ["projectedTitle"], ["*"], true, never>;
|
|
150
193
|
}
|
|
151
194
|
|
|
152
195
|
/**
|
|
@@ -253,14 +296,34 @@ declare class WrDrawerManager {
|
|
|
253
296
|
private readonly focusTrapFactory;
|
|
254
297
|
private readonly isBrowser;
|
|
255
298
|
private readonly i18n;
|
|
299
|
+
private readonly location;
|
|
256
300
|
open<C, R = unknown, D = unknown>(component: ComponentType<C>, options?: WrDrawerOptions<D>): WrDrawerRef<C, R>;
|
|
301
|
+
/**
|
|
302
|
+
* Tie the drawer's lifetime to the URL it was opened on — the same treatment
|
|
303
|
+
* `WrDialog` gets, and for the same reason.
|
|
304
|
+
*
|
|
305
|
+
* Nothing else does. The overlay belongs to a root service and is dismissed
|
|
306
|
+
* only by the backdrop, Escape, the appended × or an explicit `close()`, so
|
|
307
|
+
* navigating away left the panel, its backdrop, its focus trap and the
|
|
308
|
+
* page-wide scroll block sitting over a page the user never opened them on.
|
|
309
|
+
*
|
|
310
|
+
* `onUrlChange`, not `Location.subscribe()` — which is what CDK's own
|
|
311
|
+
* `disposeOnNavigation` uses: `subscribe` fires on popstate alone, so an in-app
|
|
312
|
+
* `router.navigate()` left the drawer standing. And `drawerRef.close()` rather
|
|
313
|
+
* than disposing the overlay behind the ref's back, which would never emit
|
|
314
|
+
* `closed`, never destroy the focus trap, and leave `awaitClose()` pending.
|
|
315
|
+
*/
|
|
316
|
+
private watchNavigation;
|
|
257
317
|
/**
|
|
258
318
|
* The dismiss button's accessible name.
|
|
259
319
|
*
|
|
260
|
-
* Resolved per open, not
|
|
261
|
-
*
|
|
262
|
-
* before an async catalog had loaded and then
|
|
263
|
-
* of the app.
|
|
320
|
+
* Resolved per open, not stored as a plain string at injection: this is a root
|
|
321
|
+
* service, so a one-shot read — which is what `WrDialog` used to have, and moved
|
|
322
|
+
* off for this reason — would run before an async catalog had loaded and then
|
|
323
|
+
* freeze that answer for the life of the app. (`readI18nText` hands back a signal
|
|
324
|
+
* now, so it would no longer freeze; the name still has to be pushed onto the
|
|
325
|
+
* button per open either way.) `WrDialog.closeLabel()` is the matching precedent,
|
|
326
|
+
* not the counter-example.
|
|
264
327
|
*
|
|
265
328
|
* The miss check is the point. `t()` hands back the KEY when the catalog has
|
|
266
329
|
* no entry, and `WrI18n` is root-provided with an empty catalog by default —
|
package/types/ngwr-dropdown.d.ts
CHANGED
|
@@ -97,6 +97,15 @@ declare class WrDropdown {
|
|
|
97
97
|
/** Toggle the menu. */
|
|
98
98
|
toggle(): void;
|
|
99
99
|
/** @internal */
|
|
100
|
+
/**
|
|
101
|
+
* Whether the pointer, rather than the keyboard, opened the current menu.
|
|
102
|
+
*
|
|
103
|
+
* A hover-opened menu must not take focus — the APG shows a menu on hover and
|
|
104
|
+
* leaves the caret where it was — while a keyboard-opened one must. The
|
|
105
|
+
* trigger MODE cannot answer that on its own: a `trigger="hover"` menu is
|
|
106
|
+
* still openable with Enter, and that open should focus the first item.
|
|
107
|
+
*/
|
|
108
|
+
private openedByPointer;
|
|
100
109
|
protected onClick(event: MouseEvent): void;
|
|
101
110
|
/** @internal */
|
|
102
111
|
protected onMouseEnter(): void;
|