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
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
import { BaseHarnessFilters, ComponentHarness, HarnessPredicate } from '@angular/cdk/testing';
|
|
2
|
+
import { WrCalendarMode } from 'ngwr/calendar';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* @license
|
|
6
|
+
*
|
|
7
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
8
|
+
* found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
/** Which of the three sub-views the calendar is showing. */
|
|
12
|
+
type WrCalendarView = 'day' | 'month' | 'year';
|
|
13
|
+
/** One month or year chip, as the picker views render them. */
|
|
14
|
+
interface WrCalendarChip {
|
|
15
|
+
/** The label as printed — a short month name, or the year. */
|
|
16
|
+
readonly label: string;
|
|
17
|
+
/** Whether it is the current selection. */
|
|
18
|
+
readonly selected: boolean;
|
|
19
|
+
/** Whether it is the month / year containing today. */
|
|
20
|
+
readonly current: boolean;
|
|
21
|
+
/** Whether `min` / `max` ruled it out. */
|
|
22
|
+
readonly disabled: boolean;
|
|
23
|
+
}
|
|
24
|
+
/** Narrows which `<wr-calendar>` a harness query matches. */
|
|
25
|
+
interface WrCalendarHarnessFilters extends BaseHarnessFilters {
|
|
26
|
+
/** Match the header label as printed, e.g. `March 2026`. */
|
|
27
|
+
readonly headerLabel?: string | RegExp;
|
|
28
|
+
/** Match single- or range-selection calendars. */
|
|
29
|
+
readonly mode?: WrCalendarMode;
|
|
30
|
+
/** Match only enabled (`false`) or only disabled (`true`) calendars. */
|
|
31
|
+
readonly disabled?: boolean;
|
|
32
|
+
}
|
|
33
|
+
/** Narrows which day cell a harness query matches. */
|
|
34
|
+
interface WrCalendarDayHarnessFilters extends BaseHarnessFilters {
|
|
35
|
+
/**
|
|
36
|
+
* Match the cell's day number as rendered (`'1'` … `'31'`). A string is an exact
|
|
37
|
+
* match, a RegExp is tested — note the grid spills into the neighbouring months,
|
|
38
|
+
* so most numbers appear twice.
|
|
39
|
+
*/
|
|
40
|
+
readonly text?: string | RegExp;
|
|
41
|
+
/** Match only selected (`true`) or only unselected (`false`) cells. */
|
|
42
|
+
readonly selected?: boolean;
|
|
43
|
+
/** Match only enabled (`false`) or only disabled (`true`) cells. */
|
|
44
|
+
readonly disabled?: boolean;
|
|
45
|
+
/**
|
|
46
|
+
* Match cells strictly BETWEEN the two ends of a picked range — the ends
|
|
47
|
+
* themselves are `selected`, not `inRange`.
|
|
48
|
+
*/
|
|
49
|
+
readonly inRange?: boolean;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* @license
|
|
54
|
+
*
|
|
55
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
56
|
+
* found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
|
|
57
|
+
*/
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Test harness for one day cell of a `<wr-calendar>` grid.
|
|
61
|
+
*
|
|
62
|
+
* The cell belongs to the calendar, and a date-picker's popup is a calendar in an
|
|
63
|
+
* overlay — so this is the harness for both, re-exported from
|
|
64
|
+
* `ngwr/date-picker/testing` under the name it shipped as
|
|
65
|
+
* (`WrDatePickerDayHarness`). Reach it through `WrCalendarHarness.getDays()`, or
|
|
66
|
+
* through `WrDatePickerHarness.getDay()` / `getDays()`, which scope it to ONE
|
|
67
|
+
* picker's panel — those cells are in the shared overlay container, so a bare query
|
|
68
|
+
* would answer with whichever picker opened first.
|
|
69
|
+
*
|
|
70
|
+
* State is read the way a screen reader reads it (`role`, `aria-selected`,
|
|
71
|
+
* `aria-disabled`) with the `.wr-calendar__day--*` modifiers filling in what
|
|
72
|
+
* ARIA has no word for: today, the spill days of the neighbouring months, and
|
|
73
|
+
* the interior of a picked range.
|
|
74
|
+
*
|
|
75
|
+
* @see https://ngwr.dev/guides/testing
|
|
76
|
+
*/
|
|
77
|
+
declare class WrCalendarDayHarness extends ComponentHarness {
|
|
78
|
+
static hostSelector: string;
|
|
79
|
+
/** Build a predicate that narrows the query. */
|
|
80
|
+
static with(options?: WrCalendarDayHarnessFilters): HarnessPredicate<WrCalendarDayHarness>;
|
|
81
|
+
/** The day number as rendered. */
|
|
82
|
+
getText(): Promise<string>;
|
|
83
|
+
/** The day number as a number, for mapping a list of cells to dates. */
|
|
84
|
+
getDayOfMonth(): Promise<number>;
|
|
85
|
+
/** `'gridcell'` — the cell is a button, and the grid semantics are what a spec should assert. */
|
|
86
|
+
getRole(): Promise<string | null>;
|
|
87
|
+
/** Whether this day is (one end of) the current selection. */
|
|
88
|
+
isSelected(): Promise<boolean>;
|
|
89
|
+
/**
|
|
90
|
+
* Whether the day refuses selection — `min` / `max` or `dateFilter` ruled it
|
|
91
|
+
* out, or the whole calendar is disabled.
|
|
92
|
+
*/
|
|
93
|
+
isDisabled(): Promise<boolean>;
|
|
94
|
+
/** Whether the cell is today's date. */
|
|
95
|
+
isToday(): Promise<boolean>;
|
|
96
|
+
/**
|
|
97
|
+
* Whether the cell belongs to a neighbouring month. The grid is always 6x7, so
|
|
98
|
+
* every month is padded with days that are selectable but not "in" the month —
|
|
99
|
+
* which is why `WrDatePickerHarness.getDay` and {@link WrCalendarHarness.getDay} skip them.
|
|
100
|
+
*/
|
|
101
|
+
isOutOfMonth(): Promise<boolean>;
|
|
102
|
+
/** Whether the day lies strictly between the two ends of a picked range. */
|
|
103
|
+
isInRange(): Promise<boolean>;
|
|
104
|
+
/**
|
|
105
|
+
* Whether this is the roving cell — the grid's single tab stop, and where the
|
|
106
|
+
* arrow keys move from.
|
|
107
|
+
*
|
|
108
|
+
* At most ONE cell answers `true`, and it is not always one: the calendar's
|
|
109
|
+
* roving date does not follow `next()` / `previous()`, so a grid navigated away
|
|
110
|
+
* from that month has no active cell (and, deliberately or not, no tab stop)
|
|
111
|
+
* until a cell is clicked or the arrows move it.
|
|
112
|
+
*/
|
|
113
|
+
isActive(): Promise<boolean>;
|
|
114
|
+
/** Click the cell. A disabled cell swallows the click — assert, do not assume. */
|
|
115
|
+
click(): Promise<void>;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* @license
|
|
120
|
+
*
|
|
121
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
122
|
+
* found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
|
|
123
|
+
*/
|
|
124
|
+
|
|
125
|
+
/** The arrow keys, by the direction a user would say out loud. */
|
|
126
|
+
type Arrow = 'left' | 'right' | 'up' | 'down';
|
|
127
|
+
/**
|
|
128
|
+
* Test harness for `<wr-calendar>` — the standalone month grid, and the one
|
|
129
|
+
* `<wr-date-picker>` puts in an overlay.
|
|
130
|
+
*
|
|
131
|
+
* **It is three views behind one header.** Clicking the header label walks
|
|
132
|
+
* `day → month → year`, and each view renders something different: a
|
|
133
|
+
* `role="grid"` of day cells, or a `role="listbox"` of chips. Every day method
|
|
134
|
+
* throws off the day view rather than answering `[]`, which would read as "this
|
|
135
|
+
* month has no days".
|
|
136
|
+
*
|
|
137
|
+
* **The roving cell is not the selection.** The grid has one tab stop and the
|
|
138
|
+
* arrows move it; it starts on the selected date, or on today when nothing is
|
|
139
|
+
* picked. And it does NOT follow {@link next} / {@link previous} — a grid paged
|
|
140
|
+
* away from the roving month has no active cell at all, and so no tab stop, until
|
|
141
|
+
* a key or a click puts one back. That is the component's behaviour, and
|
|
142
|
+
* {@link getActiveDayNumber} is how a spec sees it.
|
|
143
|
+
*
|
|
144
|
+
* **Keys go to the host, not to a cell.** The component listens on its own element,
|
|
145
|
+
* so {@link pressArrow} works whether or not jsdom managed to put real focus
|
|
146
|
+
* anywhere — which it often does not, since the calendar moves focus in an
|
|
147
|
+
* `afterNextRender` and a disabled cell cannot take it.
|
|
148
|
+
*
|
|
149
|
+
* @example
|
|
150
|
+
* ```ts
|
|
151
|
+
* const calendar = await loader.getHarness(WrCalendarHarness);
|
|
152
|
+
*
|
|
153
|
+
* expect(await calendar.getHeaderLabel()).toBe('March 2026');
|
|
154
|
+
* await (await calendar.getDay(14)).click();
|
|
155
|
+
* expect(await calendar.getSelectedDayNumbers()).toEqual([14]);
|
|
156
|
+
* ```
|
|
157
|
+
*
|
|
158
|
+
* @see https://ngwr.dev/guides/testing
|
|
159
|
+
*/
|
|
160
|
+
declare class WrCalendarHarness extends ComponentHarness {
|
|
161
|
+
static hostSelector: string;
|
|
162
|
+
/** Build a predicate that narrows the query — pass to `getHarness` / `getAllHarnesses`. */
|
|
163
|
+
static with(options?: WrCalendarHarnessFilters): HarnessPredicate<WrCalendarHarness>;
|
|
164
|
+
private readonly header;
|
|
165
|
+
private readonly prevButton;
|
|
166
|
+
private readonly nextButton;
|
|
167
|
+
/** Which sub-view is showing. */
|
|
168
|
+
getView(): Promise<WrCalendarView>;
|
|
169
|
+
/** Single- or range-selection, from the host modifier. */
|
|
170
|
+
getMode(): Promise<WrCalendarMode>;
|
|
171
|
+
/** Whether the whole calendar refuses interaction. */
|
|
172
|
+
isDisabled(): Promise<boolean>;
|
|
173
|
+
/** The header text — `March 2026`, `2026`, or `2016 – 2027` depending on the view. */
|
|
174
|
+
getHeaderLabel(): Promise<string>;
|
|
175
|
+
/**
|
|
176
|
+
* Click the header — stepping `day → month → year`.
|
|
177
|
+
*
|
|
178
|
+
* The year view is the end of the walk: the header is disabled there, so this
|
|
179
|
+
* throws rather than clicking a button the DOM would ignore.
|
|
180
|
+
*/
|
|
181
|
+
clickHeader(): Promise<void>;
|
|
182
|
+
/**
|
|
183
|
+
* Step back — a month, a year or twelve years, depending on the view.
|
|
184
|
+
*
|
|
185
|
+
* The roving day cell does NOT come along: paging is a view change, not a
|
|
186
|
+
* navigation, and the tab stop stays on the month it was in.
|
|
187
|
+
*/
|
|
188
|
+
previous(): Promise<void>;
|
|
189
|
+
/** Step forward — a month, a year or twelve years, depending on the view. */
|
|
190
|
+
next(): Promise<void>;
|
|
191
|
+
/**
|
|
192
|
+
* The back arrow's accessible name, which changes with the view — the arrows are
|
|
193
|
+
* icon-only, so this is the only name they have.
|
|
194
|
+
*/
|
|
195
|
+
getPreviousLabel(): Promise<string | null>;
|
|
196
|
+
/** The forward arrow's accessible name. */
|
|
197
|
+
getNextLabel(): Promise<string | null>;
|
|
198
|
+
/** The weekday column headers, in the order the adapter's first day of week puts them. */
|
|
199
|
+
getWeekdayNames(): Promise<string[]>;
|
|
200
|
+
/**
|
|
201
|
+
* Every day cell, in DOM order — 42 of them, since the grid is always six weeks.
|
|
202
|
+
*
|
|
203
|
+
* That includes the spill days of the neighbouring months, which are selectable
|
|
204
|
+
* and not "in" the month; {@link getDay} skips them, and
|
|
205
|
+
* `WrCalendarDayHarness.isOutOfMonth()` tells them apart.
|
|
206
|
+
*/
|
|
207
|
+
getDays(filters?: WrCalendarDayHarnessFilters): Promise<WrCalendarDayHarness[]>;
|
|
208
|
+
/**
|
|
209
|
+
* The cell for a day of THIS month.
|
|
210
|
+
*
|
|
211
|
+
* The number alone is ambiguous — a 42-cell grid shows most numbers twice — so
|
|
212
|
+
* the spill days are skipped rather than matched, which is what "the 3rd" means
|
|
213
|
+
* to someone reading the calendar.
|
|
214
|
+
*/
|
|
215
|
+
getDay(dayOfMonth: number): Promise<WrCalendarDayHarness>;
|
|
216
|
+
/** The day numbers currently selected — one in single mode, both ends in range mode. */
|
|
217
|
+
getSelectedDayNumbers(): Promise<number[]>;
|
|
218
|
+
/** The day numbers strictly inside a picked range — never the ends. */
|
|
219
|
+
getInRangeDayNumbers(): Promise<number[]>;
|
|
220
|
+
/**
|
|
221
|
+
* The day number holding the roving tab stop, or `null` when the grid has none.
|
|
222
|
+
*
|
|
223
|
+
* `null` is a real answer, not a failure: paging with {@link next} leaves the
|
|
224
|
+
* roving date behind in another month, and the grid then has no `tabindex="0"`
|
|
225
|
+
* at all until a key or a click puts one back.
|
|
226
|
+
*/
|
|
227
|
+
getActiveDayNumber(): Promise<number | null>;
|
|
228
|
+
/** The month chips, with their state. Throws off the month view. */
|
|
229
|
+
getMonths(): Promise<WrCalendarChip[]>;
|
|
230
|
+
/** The year chips, with their state. Throws off the year view. */
|
|
231
|
+
getYears(): Promise<WrCalendarChip[]>;
|
|
232
|
+
/**
|
|
233
|
+
* Click a month or year chip by its printed label — which drops the calendar back
|
|
234
|
+
* one view, the way clicking the header climbed up.
|
|
235
|
+
*
|
|
236
|
+
* Throws on the day view, where there are no chips, and on a label the view does
|
|
237
|
+
* not offer, naming what it does.
|
|
238
|
+
*/
|
|
239
|
+
selectChip(label: string): Promise<void>;
|
|
240
|
+
/**
|
|
241
|
+
* Press an arrow key — one day left or right, one WEEK up or down.
|
|
242
|
+
*
|
|
243
|
+
* Sent to the host, where the component listens, so this does not depend on jsdom
|
|
244
|
+
* having managed to focus a cell. Under `dir="rtl"` the horizontal pair mirrors:
|
|
245
|
+
* ArrowRight goes back a day, because the grid itself is mirrored.
|
|
246
|
+
*/
|
|
247
|
+
pressArrow(arrow: Arrow): Promise<void>;
|
|
248
|
+
/** Press Home — the first day of the roving cell's week, not of the month. */
|
|
249
|
+
pressHome(): Promise<void>;
|
|
250
|
+
/** Press End — the last day of the roving cell's week. */
|
|
251
|
+
pressEnd(): Promise<void>;
|
|
252
|
+
/** Press PageUp — a month back, or a YEAR back with `shift`. */
|
|
253
|
+
pressPageUp(options?: {
|
|
254
|
+
shift?: boolean;
|
|
255
|
+
}): Promise<void>;
|
|
256
|
+
/** Press PageDown — a month on, or a YEAR on with `shift`. */
|
|
257
|
+
pressPageDown(options?: {
|
|
258
|
+
shift?: boolean;
|
|
259
|
+
}): Promise<void>;
|
|
260
|
+
/** Press Enter — picking the roving day, exactly as clicking it would. */
|
|
261
|
+
pressEnter(): Promise<void>;
|
|
262
|
+
/**
|
|
263
|
+
* The role of the element that owns the day rows.
|
|
264
|
+
*
|
|
265
|
+
* Worth asserting rather than assuming: the grid is NOT the host. The host also
|
|
266
|
+
* holds the nav header, and a `role="grid"` may only own rows — so the role sits
|
|
267
|
+
* on the body, and the weekday strip is a row inside it rather than a sibling.
|
|
268
|
+
*/
|
|
269
|
+
getGridRole(): Promise<string | null>;
|
|
270
|
+
/** How many week rows the grid renders — always six, which is what keeps it from reflowing. */
|
|
271
|
+
getWeekCount(): Promise<number>;
|
|
272
|
+
private readChips;
|
|
273
|
+
private requireView;
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
export { WrCalendarDayHarness, WrCalendarHarness };
|
|
277
|
+
export type { WrCalendarChip, WrCalendarDayHarnessFilters, WrCalendarHarnessFilters, WrCalendarView };
|
package/types/ngwr-calendar.d.ts
CHANGED
|
@@ -79,6 +79,26 @@ declare class WrCalendar {
|
|
|
79
79
|
protected readonly hoverDate: _angular_core.WritableSignal<Date | null>;
|
|
80
80
|
/** Which sub-view is currently shown. Cycles `day → month → year` on header click. */
|
|
81
81
|
protected readonly viewMode: _angular_core.WritableSignal<"day" | "month" | "year">;
|
|
82
|
+
/**
|
|
83
|
+
* Chip the month / year listbox has moved its ring to, as an index into
|
|
84
|
+
* `monthsView()` / `yearsView()`. `null` means "nobody has pressed an arrow
|
|
85
|
+
* yet", which resolves to the month or year on screen — see {@link activeChip}.
|
|
86
|
+
*
|
|
87
|
+
* Reset on every view change rather than remembered: coming back to the month
|
|
88
|
+
* list should ring the month you are looking at, not the one an earlier visit
|
|
89
|
+
* happened to leave the ring on.
|
|
90
|
+
*/
|
|
91
|
+
private readonly rovedChip;
|
|
92
|
+
private readonly prevMonthLabel;
|
|
93
|
+
private readonly nextMonthLabel;
|
|
94
|
+
private readonly prevYearLabel;
|
|
95
|
+
private readonly nextYearLabel;
|
|
96
|
+
private readonly prevYearsLabel;
|
|
97
|
+
private readonly nextYearsLabel;
|
|
98
|
+
/** What the ← button does from here — a month, a year, or a 12-year page. */
|
|
99
|
+
protected readonly prevLabel: _angular_core.Signal<string>;
|
|
100
|
+
/** What the → button does from here. */
|
|
101
|
+
protected readonly nextLabel: _angular_core.Signal<string>;
|
|
82
102
|
protected readonly today: _angular_core.Signal<Date>;
|
|
83
103
|
protected readonly weekdayNames: _angular_core.Signal<readonly string[]>;
|
|
84
104
|
protected readonly monthsView: _angular_core.Signal<readonly string[]>;
|
|
@@ -87,6 +107,22 @@ declare class WrCalendar {
|
|
|
87
107
|
protected readonly headerLabel: _angular_core.Signal<string>;
|
|
88
108
|
/** 6×7 day grid covering the current month plus spillover. */
|
|
89
109
|
protected readonly weeks: _angular_core.Signal<readonly (readonly Date[])[]>;
|
|
110
|
+
/**
|
|
111
|
+
* The chip carrying the listbox's only `tabindex="0"` — where the ring is, and
|
|
112
|
+
* where Tab lands.
|
|
113
|
+
*
|
|
114
|
+
* A listbox owns its arrows, and these two did not: twelve months were twelve
|
|
115
|
+
* tab stops, so the role promised an interaction model the component never
|
|
116
|
+
* implemented. One tab stop plus arrow keys is the roving-tabindex half of the
|
|
117
|
+
* pattern the day grid already uses.
|
|
118
|
+
*
|
|
119
|
+
* Routed through {@link nearestEnabledChip} on BOTH paths — the seed and every
|
|
120
|
+
* arrow — for the reason the grid learned first: `.focus()` on a
|
|
121
|
+
* `<button disabled>` is a no-op, so parking the sole tab stop on a month a
|
|
122
|
+
* `[min]` has closed off leaves the whole view unreachable by keyboard.
|
|
123
|
+
* `-1` on the day view, where there are no chips at all.
|
|
124
|
+
*/
|
|
125
|
+
protected readonly activeChip: _angular_core.Signal<number>;
|
|
90
126
|
protected readonly classes: _angular_core.Signal<string>;
|
|
91
127
|
constructor();
|
|
92
128
|
/** Header `‹` button — steps by month / year / decade based on the active view. */
|
|
@@ -97,6 +133,14 @@ declare class WrCalendar {
|
|
|
97
133
|
protected onLabelClick(): void;
|
|
98
134
|
protected onMonthSelect(monthIdx: number): void;
|
|
99
135
|
protected onYearSelect(year: number): void;
|
|
136
|
+
/**
|
|
137
|
+
* Switch views and drop the chip ring with them.
|
|
138
|
+
*
|
|
139
|
+
* Every view change is the only thing that changes what the chips MEAN, so it
|
|
140
|
+
* is the one place the ring has to forget where it was — otherwise a year
|
|
141
|
+
* picked at index 7 rings the eighth MONTH on the way back down.
|
|
142
|
+
*/
|
|
143
|
+
private setViewMode;
|
|
100
144
|
private stepViewDate;
|
|
101
145
|
protected isToday(date: Date): boolean;
|
|
102
146
|
protected isOutOfMonth(date: Date): boolean;
|
|
@@ -116,6 +160,38 @@ declare class WrCalendar {
|
|
|
116
160
|
protected onCellLeave(): void;
|
|
117
161
|
private applyRangeClick;
|
|
118
162
|
protected onKeyDown(event: KeyboardEvent): void;
|
|
163
|
+
/**
|
|
164
|
+
* Arrow / Home / End inside the month or year listbox — the roving half of the
|
|
165
|
+
* pattern their `role` has always claimed.
|
|
166
|
+
*
|
|
167
|
+
* Steps by one along the row and by a full row vertically, and the inline pair
|
|
168
|
+
* mirrors under `dir="rtl"` for the same reason the grid's does: those two keys
|
|
169
|
+
* name a side of the screen. The page does NOT wrap or spill into the next
|
|
170
|
+
* one — a month list is twelve fixed cells, and the header's `‹` / `›` are what
|
|
171
|
+
* change which twelve. Anything else (Enter, Space, Tab, Escape) is left to the
|
|
172
|
+
* button and to whatever owns the calendar.
|
|
173
|
+
*/
|
|
174
|
+
private onChipKeyDown;
|
|
175
|
+
/** How many chips the current view renders — twelve either way, read rather than assumed. */
|
|
176
|
+
private chipCount;
|
|
177
|
+
/** Whether the chip at `index` refuses selection in the current view. */
|
|
178
|
+
private isChipDisabled;
|
|
179
|
+
/** The chip the view itself points at: the month or year currently on screen. */
|
|
180
|
+
private currentChip;
|
|
181
|
+
/**
|
|
182
|
+
* The first selectable chip at or after `from`, else the first before it, else
|
|
183
|
+
* `from` unchanged when the whole page is closed off — the chip version of
|
|
184
|
+
* {@link nearestEnabled}, and it exists for the same reason: the ring carries
|
|
185
|
+
* the only `tabindex="0"`, and a disabled button cannot hold it.
|
|
186
|
+
*/
|
|
187
|
+
private nearestEnabledChip;
|
|
188
|
+
/**
|
|
189
|
+
* The first selectable chip at `from` or beyond it in `step`'s direction, else
|
|
190
|
+
* null when that whole direction is closed off — which is the answer for an
|
|
191
|
+
* ArrowLeft on the first chip: stay put.
|
|
192
|
+
*/
|
|
193
|
+
private enabledChipToward;
|
|
194
|
+
private focusActiveChip;
|
|
119
195
|
/**
|
|
120
196
|
* The first selectable day at or after `candidate`, else the first before it,
|
|
121
197
|
* else `candidate` unchanged when everything nearby is closed off. Bounded at
|
package/types/ngwr-carousel.d.ts
CHANGED
|
@@ -1,14 +1,74 @@
|
|
|
1
1
|
import * as ngwr_i18n from 'ngwr/i18n';
|
|
2
2
|
import * as _angular_core from '@angular/core';
|
|
3
|
+
import { InjectionToken, Signal } from '@angular/core';
|
|
3
4
|
|
|
4
5
|
/**
|
|
5
6
|
* One slide in a {@link WrCarousel}. Holds whatever content you
|
|
6
7
|
* project — image, card, video, anything.
|
|
8
|
+
*
|
|
9
|
+
* **An off-screen slide is `inert`.** Only one slide is visible, but the track
|
|
10
|
+
* merely translates the others out of view: without this they stay in the tab
|
|
11
|
+
* order and in the accessibility tree, so a keyboard user tabs into a link they
|
|
12
|
+
* cannot see and a screen reader announces every slide as if they were all on
|
|
13
|
+
* screen. `inert` takes the whole subtree out of both at once, which is why it
|
|
14
|
+
* is preferred here over `tabindex="-1"` (which reaches only the host) — the
|
|
15
|
+
* same answer `wr-collapse` and `wr-marquee` use.
|
|
16
|
+
*
|
|
17
|
+
* `aria-hidden` rides along for the same reason it does on the marquee's
|
|
18
|
+
* duplicate copies: it states the intent for anything reading the attribute
|
|
19
|
+
* rather than honouring `inert`.
|
|
7
20
|
*/
|
|
8
21
|
declare class WrCarouselSlide {
|
|
22
|
+
private readonly carousel;
|
|
23
|
+
/**
|
|
24
|
+
* Word a screen reader speaks IN PLACE OF the `group` role. Falls back to
|
|
25
|
+
* `carousel.slideRoledescription`, then `'slide'`.
|
|
26
|
+
*/
|
|
27
|
+
readonly roledescription: _angular_core.InputSignal<string | null>;
|
|
28
|
+
protected readonly resolvedRoledescription: _angular_core.Signal<string>;
|
|
29
|
+
/**
|
|
30
|
+
* Whether this slide is one of the ones translated out of view.
|
|
31
|
+
*
|
|
32
|
+
* `false` while the index is `-1`: content children resolve after the first
|
|
33
|
+
* render, and a slide that hid itself in that window would make the carousel
|
|
34
|
+
* open with everything inert. `false` too when there is no parent — the
|
|
35
|
+
* component is exported, so it can be used on its own.
|
|
36
|
+
*/
|
|
37
|
+
protected readonly offScreen: _angular_core.Signal<boolean>;
|
|
9
38
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<WrCarouselSlide, never>;
|
|
10
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<WrCarouselSlide, "wr-carousel-slide", never, {}, {}, never, ["*"], true, never>;
|
|
39
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<WrCarouselSlide, "wr-carousel-slide", never, { "roledescription": { "alias": "roledescription"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* @license
|
|
44
|
+
*
|
|
45
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
46
|
+
* found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
|
|
47
|
+
*/
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Contract a `<wr-carousel-slide>` uses to ask its parent whether it is the one
|
|
51
|
+
* on screen.
|
|
52
|
+
*
|
|
53
|
+
* A token rather than an input, because slides arrive through `<ng-content />`:
|
|
54
|
+
* nothing in `carousel.html` can bind to them, so the child has to reach up.
|
|
55
|
+
* Same shape as {@link WR_TABS}.
|
|
56
|
+
*
|
|
57
|
+
* @internal
|
|
58
|
+
*/
|
|
59
|
+
interface WrCarouselContext {
|
|
60
|
+
/** Index of the slide currently on screen. */
|
|
61
|
+
readonly active: Signal<number>;
|
|
62
|
+
/**
|
|
63
|
+
* Position of a slide in projection order, or `-1` before it has registered.
|
|
64
|
+
*
|
|
65
|
+
* Reads the content-children signal, so a `computed()` calling this tracks
|
|
66
|
+
* both the active index and slides being added or removed.
|
|
67
|
+
*/
|
|
68
|
+
indexOf(slide: object): number;
|
|
11
69
|
}
|
|
70
|
+
/** Token a `<wr-carousel-slide>` injects to find its parent `<wr-carousel>`. */
|
|
71
|
+
declare const WR_CAROUSEL: InjectionToken<WrCarouselContext>;
|
|
12
72
|
|
|
13
73
|
/**
|
|
14
74
|
* Slide carousel. Project `<wr-carousel-slide>` children — the carousel
|
|
@@ -25,7 +85,7 @@ declare class WrCarouselSlide {
|
|
|
25
85
|
*
|
|
26
86
|
* @see https://ngwr.dev/reference/components/carousel
|
|
27
87
|
*/
|
|
28
|
-
declare class WrCarousel {
|
|
88
|
+
declare class WrCarousel implements WrCarouselContext {
|
|
29
89
|
/** Accessible name of the previous-slide button. Falls back to `carousel.prev`. */
|
|
30
90
|
readonly prevLabel: _angular_core.InputSignal<string | null>;
|
|
31
91
|
/** Accessible name of the next-slide button. Falls back to `carousel.next`. */
|
|
@@ -38,6 +98,12 @@ declare class WrCarousel {
|
|
|
38
98
|
/** Accessible name of the carousel itself. Falls back to `carousel.label`. */
|
|
39
99
|
readonly ariaLabel: _angular_core.InputSignal<string | null>;
|
|
40
100
|
protected readonly resolvedAriaLabel: _angular_core.Signal<string>;
|
|
101
|
+
/**
|
|
102
|
+
* Word a screen reader speaks IN PLACE OF the `group` role. Falls back to
|
|
103
|
+
* `carousel.roledescription`, then `'carousel'`.
|
|
104
|
+
*/
|
|
105
|
+
readonly roledescription: _angular_core.InputSignal<string | null>;
|
|
106
|
+
protected readonly resolvedRoledescription: _angular_core.Signal<string>;
|
|
41
107
|
protected readonly slideLabel: (params?: ngwr_i18n.WrI18nParams) => string;
|
|
42
108
|
/** Active slide index. Two-way bindable. @default 0 */
|
|
43
109
|
readonly active: _angular_core.ModelSignal<number>;
|
|
@@ -53,6 +119,14 @@ declare class WrCarousel {
|
|
|
53
119
|
readonly loop: _angular_core.InputSignalWithTransform<boolean, any>;
|
|
54
120
|
protected readonly slides: _angular_core.Signal<readonly WrCarouselSlide[]>;
|
|
55
121
|
protected readonly count: _angular_core.Signal<number>;
|
|
122
|
+
/**
|
|
123
|
+
* Where a slide sits in projection order — {@link WrCarouselContext}.
|
|
124
|
+
*
|
|
125
|
+
* Public only because the child injects the parent through `WR_CAROUSEL`;
|
|
126
|
+
* reading `slides()` here is what makes the child's `computed()` re-run when a
|
|
127
|
+
* slide is added or removed.
|
|
128
|
+
*/
|
|
129
|
+
indexOf(slide: object): number;
|
|
56
130
|
/** Live horizontal drag offset (px) during a touch swipe. */
|
|
57
131
|
protected readonly dragX: _angular_core.WritableSignal<number>;
|
|
58
132
|
protected readonly dragging: _angular_core.WritableSignal<boolean>;
|
|
@@ -69,12 +143,16 @@ declare class WrCarousel {
|
|
|
69
143
|
/** CSS transform for the track — the per-slide offset plus any live drag. */
|
|
70
144
|
protected readonly trackStyle: _angular_core.Signal<string>;
|
|
71
145
|
private timer;
|
|
146
|
+
private readonly hovered;
|
|
147
|
+
private readonly focusWithin;
|
|
72
148
|
private readonly paused;
|
|
73
149
|
private readonly destroyRef;
|
|
74
150
|
private readonly isBrowser;
|
|
75
151
|
constructor();
|
|
76
|
-
protected
|
|
77
|
-
protected
|
|
152
|
+
protected onHoverIn(): void;
|
|
153
|
+
protected onHoverOut(): void;
|
|
154
|
+
protected onFocusIn(): void;
|
|
155
|
+
protected onFocusOut(): void;
|
|
78
156
|
goTo(index: number): void;
|
|
79
157
|
next(): void;
|
|
80
158
|
prev(): void;
|
|
@@ -83,7 +161,8 @@ declare class WrCarousel {
|
|
|
83
161
|
protected onSwipeMove(event: TouchEvent): void;
|
|
84
162
|
protected onSwipeEnd(event: TouchEvent, viewport: HTMLElement): void;
|
|
85
163
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<WrCarousel, never>;
|
|
86
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<WrCarousel, "wr-carousel", never, { "prevLabel": { "alias": "prevLabel"; "required": false; "isSignal": true; }; "nextLabel": { "alias": "nextLabel"; "required": false; "isSignal": true; }; "paginationLabel": { "alias": "paginationLabel"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "active": { "alias": "active"; "required": false; "isSignal": true; }; "showArrows": { "alias": "showArrows"; "required": false; "isSignal": true; }; "showDots": { "alias": "showDots"; "required": false; "isSignal": true; }; "autoplay": { "alias": "autoplay"; "required": false; "isSignal": true; }; "intervalMs": { "alias": "intervalMs"; "required": false; "isSignal": true; }; "loop": { "alias": "loop"; "required": false; "isSignal": true; }; }, { "active": "activeChange"; }, ["slides"], ["*"], true, never>;
|
|
164
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<WrCarousel, "wr-carousel", never, { "prevLabel": { "alias": "prevLabel"; "required": false; "isSignal": true; }; "nextLabel": { "alias": "nextLabel"; "required": false; "isSignal": true; }; "paginationLabel": { "alias": "paginationLabel"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "roledescription": { "alias": "roledescription"; "required": false; "isSignal": true; }; "active": { "alias": "active"; "required": false; "isSignal": true; }; "showArrows": { "alias": "showArrows"; "required": false; "isSignal": true; }; "showDots": { "alias": "showDots"; "required": false; "isSignal": true; }; "autoplay": { "alias": "autoplay"; "required": false; "isSignal": true; }; "intervalMs": { "alias": "intervalMs"; "required": false; "isSignal": true; }; "loop": { "alias": "loop"; "required": false; "isSignal": true; }; }, { "active": "activeChange"; }, ["slides"], ["*"], true, never>;
|
|
87
165
|
}
|
|
88
166
|
|
|
89
|
-
export { WrCarousel, WrCarouselSlide };
|
|
167
|
+
export { WR_CAROUSEL, WrCarousel, WrCarouselSlide };
|
|
168
|
+
export type { WrCarouselContext };
|
package/types/ngwr-cascader.d.ts
CHANGED
|
@@ -116,14 +116,31 @@ declare class WrCascader<T = string> implements FormValueControl<unknown> {
|
|
|
116
116
|
private readonly vcr;
|
|
117
117
|
private readonly scrollStrategies;
|
|
118
118
|
private readonly destroyRef;
|
|
119
|
+
private readonly injector;
|
|
119
120
|
private overlayRef;
|
|
120
121
|
constructor();
|
|
121
122
|
protected onTriggerClick(): void;
|
|
123
|
+
/**
|
|
124
|
+
* ArrowDown / ArrowUp open the panel, Alt+ArrowDown included — the combobox way in,
|
|
125
|
+
* and the shape `wr-dropdown`'s trigger uses. Enter and Space need no branch: the
|
|
126
|
+
* trigger is a real `<button>`, so the browser turns them into the click above.
|
|
127
|
+
*
|
|
128
|
+
* Only while closed. Once the panel is up the caret is inside it, and its options
|
|
129
|
+
* own their own keys.
|
|
130
|
+
*/
|
|
131
|
+
protected onTriggerKeydown(event: KeyboardEvent): void;
|
|
122
132
|
protected onOptionClick(colIndex: number, opt: WrCascaderOption<T>, event: Event): void;
|
|
123
133
|
protected clearSelection(event: Event): void;
|
|
124
134
|
protected isActiveAt(colIndex: number, value: T): boolean;
|
|
125
135
|
private pathsEqual;
|
|
126
136
|
private openOverlay;
|
|
137
|
+
/**
|
|
138
|
+
* The option the panel opens on: the selected one in the first column when there is
|
|
139
|
+
* a selection, otherwise the first enabled root. A disabled option is skipped — it
|
|
140
|
+
* still carries `tabindex="-1"`, so `focus()` would land on it and answer for a
|
|
141
|
+
* choice nobody can make.
|
|
142
|
+
*/
|
|
143
|
+
private focusPanelOption;
|
|
127
144
|
private closeOverlay;
|
|
128
145
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<WrCascader<any>, never>;
|
|
129
146
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<WrCascader<any>, "wr-cascader", never, { "clearLabel": { "alias": "clearLabel"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": true; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "changeOnSelect": { "alias": "changeOnSelect"; "required": false; "isSignal": true; }; "separator": { "alias": "separator"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "touch": "touch"; }, never, never, true, never>;
|
package/types/ngwr-checkbox.d.ts
CHANGED
|
@@ -120,6 +120,17 @@ interface WrCheckboxGroupContext {
|
|
|
120
120
|
isSelected(value: unknown): boolean;
|
|
121
121
|
/** Toggle the given value in the group. */
|
|
122
122
|
toggle(value: unknown): void;
|
|
123
|
+
/**
|
|
124
|
+
* A child lost focus.
|
|
125
|
+
*
|
|
126
|
+
* The group is the control a form binds to, so it is the group that has to
|
|
127
|
+
* report touched — and a child's own `touch` output goes nowhere, since the
|
|
128
|
+
* group never listens to it. Without this channel the only way to mark a
|
|
129
|
+
* group touched was to CHANGE it: tabbing through every box and picking none
|
|
130
|
+
* left the field pristine, so a `required` group showed no error until the
|
|
131
|
+
* user toggled something, which is the one thing they had decided not to do.
|
|
132
|
+
*/
|
|
133
|
+
blurred(): void;
|
|
123
134
|
/** Whether the entire group is disabled. */
|
|
124
135
|
readonly isDisabled: Signal<boolean>;
|
|
125
136
|
}
|
|
@@ -167,6 +178,8 @@ declare class WrCheckboxGroup implements FormValueControl<unknown[]>, WrCheckbox
|
|
|
167
178
|
readonly isDisabled: _angular_core.Signal<boolean>;
|
|
168
179
|
isSelected(value: unknown): boolean;
|
|
169
180
|
toggle(value: unknown): void;
|
|
181
|
+
/** @internal A child checkbox lost focus — see {@link WrCheckboxGroupContext.blurred}. */
|
|
182
|
+
blurred(): void;
|
|
170
183
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<WrCheckboxGroup, never>;
|
|
171
184
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<WrCheckboxGroup, "wr-checkbox-group", never, { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "touch": "touch"; }, never, ["*"], true, never>;
|
|
172
185
|
}
|