ngwr 11.2.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/collapse/styles/_index.scss +2 -2
- package/color-picker/styles/_index.scss +3 -3
- 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.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 +20 -2
- package/fesm2022/ngwr-bar-chart-testing.mjs.map +1 -1
- package/fesm2022/ngwr-bar-chart.mjs +3 -3
- package/fesm2022/ngwr-blur-text.mjs +3 -3
- package/fesm2022/ngwr-blur-text.mjs.map +1 -1
- package/fesm2022/ngwr-border-glow.mjs +4 -4
- package/fesm2022/ngwr-border-glow.mjs.map +1 -1
- package/fesm2022/ngwr-breadcrumbs.mjs +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.mjs +17 -5
- package/fesm2022/ngwr-calendar-heatmap.mjs.map +1 -1
- package/fesm2022/ngwr-calendar-testing.mjs +1 -1
- package/fesm2022/ngwr-calendar-testing.mjs.map +1 -1
- package/fesm2022/ngwr-calendar.mjs +187 -9
- package/fesm2022/ngwr-calendar.mjs.map +1 -1
- package/fesm2022/ngwr-card.mjs +10 -10
- package/fesm2022/ngwr-card.mjs.map +1 -1
- package/fesm2022/ngwr-carousel.mjs +124 -24
- package/fesm2022/ngwr-carousel.mjs.map +1 -1
- package/fesm2022/ngwr-cascader.mjs +48 -5
- package/fesm2022/ngwr-cascader.mjs.map +1 -1
- package/fesm2022/ngwr-checkbox.mjs +6 -6
- 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 +26 -6
- package/fesm2022/ngwr-color-picker-testing.mjs.map +1 -1
- package/fesm2022/ngwr-color-picker.mjs +98 -8
- 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 +333 -43
- 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 +11 -6
- 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.mjs +3 -3
- 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 +8 -4
- package/fesm2022/ngwr-donut-chart-testing.mjs.map +1 -1
- 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 +121 -58
- package/fesm2022/ngwr-drawer.mjs.map +1 -1
- package/fesm2022/ngwr-dropdown.mjs +26 -10
- package/fesm2022/ngwr-dropdown.mjs.map +1 -1
- package/fesm2022/ngwr-empty.mjs +3 -3
- package/fesm2022/ngwr-event-calendar.mjs +28 -15
- package/fesm2022/ngwr-event-calendar.mjs.map +1 -1
- package/fesm2022/ngwr-falling-text-testing.mjs +5 -3
- package/fesm2022/ngwr-falling-text-testing.mjs.map +1 -1
- 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.mjs +21 -11
- package/fesm2022/ngwr-fuzzy-text.mjs.map +1 -1
- package/fesm2022/ngwr-gauge.mjs +3 -3
- package/fesm2022/ngwr-glitch-text-testing.mjs +51 -17
- package/fesm2022/ngwr-glitch-text-testing.mjs.map +1 -1
- package/fesm2022/ngwr-glitch-text.mjs +7 -7
- package/fesm2022/ngwr-glitch-text.mjs.map +1 -1
- package/fesm2022/ngwr-gradient-text-testing.mjs +46 -11
- package/fesm2022/ngwr-gradient-text-testing.mjs.map +1 -1
- package/fesm2022/ngwr-gradient-text.mjs +4 -4
- package/fesm2022/ngwr-gradient-text.mjs.map +1 -1
- package/fesm2022/ngwr-hotkey.mjs +24 -9
- package/fesm2022/ngwr-hotkey.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-en.mjs +73 -1
- package/fesm2022/ngwr-i18n-en.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-ru.mjs +55 -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 +53 -9
- package/fesm2022/ngwr-image-cropper-testing.mjs.map +1 -1
- package/fesm2022/ngwr-image-cropper.mjs +150 -12
- 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 +17 -10
- 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.mjs +3 -3
- package/fesm2022/ngwr-layout.mjs +15 -15
- package/fesm2022/ngwr-lightbox.mjs +4 -4
- package/fesm2022/ngwr-lightbox.mjs.map +1 -1
- 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.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 +26 -6
- package/fesm2022/ngwr-meter-group-testing.mjs.map +1 -1
- package/fesm2022/ngwr-meter-group.mjs +3 -3
- package/fesm2022/ngwr-overlay.mjs +6 -6
- 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 +155 -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.mjs +3 -3
- 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 +159 -34
- package/fesm2022/ngwr-select.mjs.map +1 -1
- 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 +100 -9
- package/fesm2022/ngwr-slider.mjs.map +1 -1
- package/fesm2022/ngwr-sparkline.mjs +3 -3
- package/fesm2022/ngwr-speed-dial-testing.mjs +15 -13
- package/fesm2022/ngwr-speed-dial-testing.mjs.map +1 -1
- 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.mjs +3 -3
- package/fesm2022/ngwr-split-text.mjs +17 -5
- package/fesm2022/ngwr-split-text.mjs.map +1 -1
- package/fesm2022/ngwr-splitter.mjs +3 -3
- package/fesm2022/ngwr-spotlight-card.mjs +7 -7
- package/fesm2022/ngwr-spotlight-card.mjs.map +1 -1
- package/fesm2022/ngwr-squircle.mjs +6 -6
- package/fesm2022/ngwr-star-border.mjs +4 -4
- package/fesm2022/ngwr-star-border.mjs.map +1 -1
- package/fesm2022/ngwr-statistic.mjs +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 +99 -39
- 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 +36 -10
- 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.mjs +7 -7
- package/fesm2022/ngwr-tilt-card.mjs.map +1 -1
- package/fesm2022/ngwr-timeline.mjs +6 -6
- package/fesm2022/ngwr-toast.mjs +9 -9
- package/fesm2022/ngwr-toolbar.mjs +3 -3
- 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 +28 -10
- package/fesm2022/ngwr-tree.mjs.map +1 -1
- package/fesm2022/ngwr-typewriter-testing.mjs +15 -1
- package/fesm2022/ngwr-typewriter-testing.mjs.map +1 -1
- 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.mjs +4 -4
- package/fesm2022/ngwr-waves.mjs.map +1 -1
- package/fesm2022/ngwr-window.mjs +94 -24
- 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 +56 -6
- package/i18n/ru.json +56 -6
- 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 +18 -23
- package/llms.txt +22 -6
- package/markdown/styles/_index.scss +3 -3
- package/mcp/api.js +6 -4
- package/mcp/catalog.js +40 -3
- package/mcp/providers.js +16 -3
- package/mcp/tools.js +21 -1
- package/meter-group/styles/_index.scss +1 -1
- package/overlay/styles/_index.scss +33 -1
- package/package.json +17 -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 +7 -5
- package/skills/ngwr/references/catalog.md +9 -9
- package/skills/ngwr/references/setup.md +10 -5
- 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-bar-chart-testing.d.ts +9 -1
- package/types/ngwr-blur-text.d.ts +8 -4
- package/types/ngwr-breadcrumbs.d.ts +17 -10
- package/types/ngwr-calendar-testing.d.ts +1 -1
- package/types/ngwr-calendar.d.ts +66 -0
- package/types/ngwr-carousel.d.ts +85 -6
- package/types/ngwr-cascader.d.ts +17 -0
- package/types/ngwr-click-spark.d.ts +4 -0
- package/types/ngwr-color-picker-testing.d.ts +8 -0
- package/types/ngwr-color-picker.d.ts +21 -1
- 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 +56 -0
- 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 +11 -6
- 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-dialog.d.ts +38 -1
- package/types/ngwr-divider.d.ts +25 -0
- package/types/ngwr-donut-chart-testing.d.ts +7 -3
- package/types/ngwr-donut-chart.d.ts +3 -3
- package/types/ngwr-drag-drop.d.ts +56 -2
- package/types/ngwr-drawer.d.ts +56 -5
- package/types/ngwr-event-calendar.d.ts +8 -2
- package/types/ngwr-falling-text-testing.d.ts +5 -3
- package/types/ngwr-falling-text.d.ts +1 -1
- package/types/ngwr-form.d.ts +12 -2
- package/types/ngwr-glitch-text-testing.d.ts +37 -8
- package/types/ngwr-gradient-text-testing.d.ts +16 -3
- package/types/ngwr-i18n.d.ts +13 -4
- package/types/ngwr-image-cropper-testing.d.ts +49 -10
- package/types/ngwr-image-cropper.d.ts +70 -5
- package/types/ngwr-input-number-testing.d.ts +15 -10
- package/types/ngwr-input-number.d.ts +11 -4
- package/types/ngwr-input-otp-testing.d.ts +12 -6
- package/types/ngwr-input-otp.d.ts +15 -1
- package/types/ngwr-line-chart.d.ts +20 -3
- package/types/ngwr-markdown.d.ts +11 -0
- package/types/ngwr-mention.d.ts +32 -0
- package/types/ngwr-meter-group-testing.d.ts +12 -2
- package/types/ngwr-overlay.d.ts +1 -0
- 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-segmented-testing.d.ts +9 -0
- package/types/ngwr-segmented.d.ts +21 -1
- package/types/ngwr-select.d.ts +68 -6
- package/types/ngwr-shiny-text.d.ts +4 -2
- package/types/ngwr-sidebar.d.ts +14 -5
- package/types/ngwr-slider.d.ts +69 -1
- package/types/ngwr-speed-dial-testing.d.ts +15 -11
- package/types/ngwr-speed-dial.d.ts +22 -3
- package/types/ngwr-split-text.d.ts +9 -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 +104 -11
- 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-tour.d.ts +22 -4
- package/types/ngwr-tree.d.ts +5 -4
- package/types/ngwr-typewriter-testing.d.ts +10 -0
- package/types/ngwr-utils.d.ts +5 -2
- package/types/ngwr-version.d.ts +1 -1
- package/types/ngwr-window.d.ts +39 -11
- package/typography/styles/_index.scss +1 -1
- package/window/styles/_index.scss +72 -26
- 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/tree/styles/_index.scss
CHANGED
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
|
|
47
47
|
&--disabled {
|
|
48
48
|
cursor: not-allowed;
|
|
49
|
-
opacity:
|
|
49
|
+
opacity: var(--wr-disabled-opacity);
|
|
50
50
|
}
|
|
51
51
|
|
|
52
52
|
// Active-descendant cursor when virtualized — focus lives on the list
|
|
@@ -101,6 +101,20 @@
|
|
|
101
101
|
transform: rotate(90deg);
|
|
102
102
|
}
|
|
103
103
|
|
|
104
|
+
// The indent is logical and mirrors on its own, but the triangle is drawn
|
|
105
|
+
// pointing physically right — so under `dir="rtl"` a collapsed node aims back
|
|
106
|
+
// at its parent instead of at the children it would reveal. `tree.ts` already
|
|
107
|
+
// swaps ArrowLeft / ArrowRight for the same reason; this is the picture of that
|
|
108
|
+
// axis. Turn it around the way the cascader's branch arrow does.
|
|
109
|
+
//
|
|
110
|
+
// Scoped to the COLLAPSED state deliberately, and both halves matter: an
|
|
111
|
+
// unscoped rule sets the same property as the `aria-expanded='true'` rule
|
|
112
|
+
// above, and mirroring the inner `<svg>` instead would compose `rotate(90deg)`
|
|
113
|
+
// over `scaleX(-1)` and point an expanded node UP rather than down.
|
|
114
|
+
[dir='rtl'] &__row[aria-expanded='false'] &__toggle {
|
|
115
|
+
transform: scaleX(-1);
|
|
116
|
+
}
|
|
117
|
+
|
|
104
118
|
&__label {
|
|
105
119
|
flex: 1 1 auto;
|
|
106
120
|
overflow: hidden;
|
|
@@ -109,7 +123,7 @@
|
|
|
109
123
|
}
|
|
110
124
|
|
|
111
125
|
&--disabled {
|
|
112
|
-
opacity:
|
|
126
|
+
opacity: var(--wr-disabled-opacity);
|
|
113
127
|
pointer-events: none;
|
|
114
128
|
}
|
|
115
129
|
|
|
@@ -137,7 +151,7 @@
|
|
|
137
151
|
|
|
138
152
|
&.wr-tree--disabled {
|
|
139
153
|
--wr-tree-trigger-color: var(--wr-color-on-surface-muted);
|
|
140
|
-
--wr-tree-trigger-bg:
|
|
154
|
+
--wr-tree-trigger-bg: var(--wr-color-fill);
|
|
141
155
|
}
|
|
142
156
|
}
|
|
143
157
|
|
|
@@ -152,7 +166,12 @@
|
|
|
152
166
|
color: var(--wr-tree-trigger-color);
|
|
153
167
|
border: 1px solid var(--wr-tree-trigger-border);
|
|
154
168
|
border-radius: var(--wr-tree-trigger-radius);
|
|
155
|
-
|
|
169
|
+
// Density-multiplied like select / input / textarea / button. The comment
|
|
170
|
+
// above promises this trigger "lines up with select / input / button", and
|
|
171
|
+
// that only holds at `md` without the multiplier: at `touch` the others
|
|
172
|
+
// measured 35.59px and this one stayed at 30.
|
|
173
|
+
padding: calc(var(--wr-tree-trigger-padding-y) * var(--wr-density-y, 1))
|
|
174
|
+
calc(var(--wr-tree-trigger-padding-x) * var(--wr-density-x, 1));
|
|
156
175
|
font-family: var(--wr-font-family-base);
|
|
157
176
|
font-size: var(--wr-tree-trigger-font-size);
|
|
158
177
|
line-height: var(--wr-tree-trigger-line-height);
|
|
@@ -226,8 +245,12 @@
|
|
|
226
245
|
flex-wrap: wrap;
|
|
227
246
|
align-items: center;
|
|
228
247
|
padding: 0.25rem 0.5rem;
|
|
229
|
-
// Empty / one-row floor = single-mode height (+2px for the border)
|
|
230
|
-
|
|
248
|
+
// Empty / one-row floor = single-mode height (+2px for the border), so it
|
|
249
|
+
// has to carry the same density multiplier the single-mode padding does —
|
|
250
|
+
// otherwise the two modes stop agreeing the moment density leaves `md`.
|
|
251
|
+
min-height: calc(
|
|
252
|
+
var(--wr-tree-trigger-line-height) + var(--wr-tree-trigger-padding-y) * var(--wr-density-y, 1) * 2 + 2px
|
|
253
|
+
);
|
|
231
254
|
}
|
|
232
255
|
|
|
233
256
|
&__chips {
|
|
@@ -37,7 +37,13 @@ interface WrBarChartBar {
|
|
|
37
37
|
* **The bars are read as PERCENTAGES, not as pixels.** Each column's height is
|
|
38
38
|
* written inline as a share of the chart's maximum, which is the one number that
|
|
39
39
|
* survives a test with no layout — and it is also the component's whole job, since
|
|
40
|
-
* the maximum is either given or derived from the data.
|
|
40
|
+
* the maximum is either given or derived from the data. That share is read off the
|
|
41
|
+
* `style` ATTRIBUTE rather than through `getCssValue()`, and the difference is not
|
|
42
|
+
* cosmetic: `getCssValue()` is `getComputedStyle()`, which hands the declared `60%`
|
|
43
|
+
* straight back in jsdom and resolves it to used pixels in a real browser — so the
|
|
44
|
+
* same harness answered `100` here and `200` under Selenium or a browser runner,
|
|
45
|
+
* with no error to say which one you got. The stylesheet's own `min-height: 1px`
|
|
46
|
+
* is a second way that read lies, turning an empty bar into `1`.
|
|
41
47
|
*
|
|
42
48
|
* **The visible label row is decoration.** Every column carries `role="img"` with
|
|
43
49
|
* the label AND the value in its name, and the printed labels underneath are
|
|
@@ -61,6 +67,8 @@ declare class WrBarChartHarness extends ComponentHarness {
|
|
|
61
67
|
static with(options?: WrBarChartHarnessFilters): HarnessPredicate<WrBarChartHarness>;
|
|
62
68
|
/** Every column, in data order. */
|
|
63
69
|
getBars(): Promise<WrBarChartBar[]>;
|
|
70
|
+
/** Parse one bar's declared share. See the class note on why this is not `getCssValue()`. */
|
|
71
|
+
private static heightPercentOf;
|
|
64
72
|
/** The labels printed under the columns, in order. */
|
|
65
73
|
getLabels(): Promise<string[]>;
|
|
66
74
|
/** What each column announces — the label and the value together. */
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
type
|
|
3
|
+
/** Granularity of the split. */
|
|
4
|
+
type WrBlurTextUnit = 'chars' | 'words';
|
|
5
|
+
/** Entry direction. `'top'` slides down into place; `'bottom'` slides up. */
|
|
6
|
+
type WrBlurTextDirection = 'top' | 'bottom';
|
|
7
|
+
|
|
5
8
|
type Piece = {
|
|
6
9
|
readonly kind: 'piece';
|
|
7
10
|
readonly text: string;
|
|
@@ -31,9 +34,9 @@ declare class WrBlurText {
|
|
|
31
34
|
/** Text to animate. Required. */
|
|
32
35
|
readonly text: _angular_core.InputSignal<string>;
|
|
33
36
|
/** Split granularity. @default 'words' */
|
|
34
|
-
readonly animateBy: _angular_core.InputSignal<
|
|
37
|
+
readonly animateBy: _angular_core.InputSignal<WrBlurTextUnit>;
|
|
35
38
|
/** Entry direction. `'top'` slides down into place; `'bottom'` slides up. @default 'top' */
|
|
36
|
-
readonly direction: _angular_core.InputSignal<
|
|
39
|
+
readonly direction: _angular_core.InputSignal<WrBlurTextDirection>;
|
|
37
40
|
/** Per-piece stagger in ms. @default 200 */
|
|
38
41
|
readonly delay: _angular_core.InputSignalWithTransform<number, unknown>;
|
|
39
42
|
/** Duration of each keyframe step in seconds (total = 2 × stepDuration). @default 0.35 */
|
|
@@ -72,3 +75,4 @@ declare class WrBlurText {
|
|
|
72
75
|
}
|
|
73
76
|
|
|
74
77
|
export { WrBlurText };
|
|
78
|
+
export type { WrBlurTextDirection, WrBlurTextUnit };
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
* Breadcrumb navigation. Project `<wr-breadcrumbs-item>` children —
|
|
5
|
-
*
|
|
6
|
-
* glyph (default `/`). The
|
|
7
|
-
* landmark required by WCAG.
|
|
4
|
+
* Breadcrumb navigation. Project `<wr-breadcrumbs-item>` children — each keeps
|
|
5
|
+
* its own element and takes `role="listitem"` inside the `<ol>` rather than
|
|
6
|
+
* rendering an `<li>`, separated by the configured glyph (default `/`). The
|
|
7
|
+
* container exposes the `nav[aria-label]` landmark required by WCAG.
|
|
8
8
|
*
|
|
9
9
|
* @example
|
|
10
10
|
* ```html
|
|
@@ -23,17 +23,24 @@ import * as _angular_core from '@angular/core';
|
|
|
23
23
|
declare class WrBreadcrumbs {
|
|
24
24
|
/** Separator glyph between items. Any short string. @default '/' */
|
|
25
25
|
readonly separator: _angular_core.InputSignal<string>;
|
|
26
|
-
/**
|
|
27
|
-
|
|
26
|
+
/**
|
|
27
|
+
* Accessible label for the `nav` landmark. Falls back to `breadcrumbs.label`,
|
|
28
|
+
* then `'Breadcrumbs'`.
|
|
29
|
+
*/
|
|
30
|
+
readonly ariaLabel: _angular_core.InputSignal<string | null>;
|
|
31
|
+
protected readonly resolvedAriaLabel: _angular_core.Signal<string>;
|
|
28
32
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<WrBreadcrumbs, never>;
|
|
29
33
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<WrBreadcrumbs, "wr-breadcrumbs", never, { "separator": { "alias": "separator"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
30
34
|
}
|
|
31
35
|
|
|
32
36
|
/**
|
|
33
|
-
* One row inside `<wr-breadcrumbs>`.
|
|
34
|
-
*
|
|
35
|
-
* `<
|
|
36
|
-
*
|
|
37
|
+
* One row inside `<wr-breadcrumbs>`. The host itself is the row — a
|
|
38
|
+
* `<wr-breadcrumbs-item role="listitem" class="wr-breadcrumbs__item">`
|
|
39
|
+
* inside the parent's `<ol>` — and it contains either a real
|
|
40
|
+
* `<a class="wr-breadcrumbs__link">` (when `[href]` or `[routerLink]` is
|
|
41
|
+
* set) or, for the current crumb, a non-interactive
|
|
42
|
+
* `<a class="wr-breadcrumbs__current" role="text" tabindex="-1"
|
|
43
|
+
* aria-current="page">` (when neither is set — typically the last crumb).
|
|
37
44
|
*
|
|
38
45
|
* @example
|
|
39
46
|
* ```html
|
|
@@ -139,7 +139,7 @@ type Arrow = 'left' | 'right' | 'up' | 'down';
|
|
|
139
139
|
* picked. And it does NOT follow {@link next} / {@link previous} — a grid paged
|
|
140
140
|
* away from the roving month has no active cell at all, and so no tab stop, until
|
|
141
141
|
* a key or a click puts one back. That is the component's behaviour, and
|
|
142
|
-
* {@link
|
|
142
|
+
* {@link getActiveDayNumber} is how a spec sees it.
|
|
143
143
|
*
|
|
144
144
|
* **Keys go to the host, not to a cell.** The component listens on its own element,
|
|
145
145
|
* so {@link pressArrow} works whether or not jsdom managed to put real focus
|
package/types/ngwr-calendar.d.ts
CHANGED
|
@@ -79,6 +79,16 @@ 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;
|
|
82
92
|
private readonly prevMonthLabel;
|
|
83
93
|
private readonly nextMonthLabel;
|
|
84
94
|
private readonly prevYearLabel;
|
|
@@ -97,6 +107,22 @@ declare class WrCalendar {
|
|
|
97
107
|
protected readonly headerLabel: _angular_core.Signal<string>;
|
|
98
108
|
/** 6×7 day grid covering the current month plus spillover. */
|
|
99
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>;
|
|
100
126
|
protected readonly classes: _angular_core.Signal<string>;
|
|
101
127
|
constructor();
|
|
102
128
|
/** Header `‹` button — steps by month / year / decade based on the active view. */
|
|
@@ -107,6 +133,14 @@ declare class WrCalendar {
|
|
|
107
133
|
protected onLabelClick(): void;
|
|
108
134
|
protected onMonthSelect(monthIdx: number): void;
|
|
109
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;
|
|
110
144
|
private stepViewDate;
|
|
111
145
|
protected isToday(date: Date): boolean;
|
|
112
146
|
protected isOutOfMonth(date: Date): boolean;
|
|
@@ -126,6 +160,38 @@ declare class WrCalendar {
|
|
|
126
160
|
protected onCellLeave(): void;
|
|
127
161
|
private applyRangeClick;
|
|
128
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;
|
|
129
195
|
/**
|
|
130
196
|
* The first selectable day at or after `candidate`, else the first before it,
|
|
131
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>;
|
|
@@ -44,6 +44,10 @@ declare class WrClickSpark {
|
|
|
44
44
|
private readonly isBrowser;
|
|
45
45
|
private readonly platform;
|
|
46
46
|
private sparks;
|
|
47
|
+
/** Pending frame id, or `0` while the loop is parked. `cancelAnimationFrame(0)` is a no-op. */
|
|
48
|
+
private raf;
|
|
49
|
+
/** The frame callback, once a context was obtained. `null` means there is no loop to wake. */
|
|
50
|
+
private drawFrame;
|
|
47
51
|
constructor();
|
|
48
52
|
protected onClick(event: MouseEvent): void;
|
|
49
53
|
/**
|
|
@@ -197,6 +197,14 @@ declare class WrColorPickerHarness extends ComponentHarness {
|
|
|
197
197
|
* readable with no layout at all — which makes them the only evidence a spec has
|
|
198
198
|
* that the surfaces followed a colour set through the fields. A measured position
|
|
199
199
|
* would be zero for all three.
|
|
200
|
+
*
|
|
201
|
+
* Read off the `style` ATTRIBUTE rather than through `getCssValue()`, and the
|
|
202
|
+
* difference is not cosmetic: `getCssValue()` is `getComputedStyle()`, and `left` /
|
|
203
|
+
* `top` on a positioned element resolve to the USED value — so the declared `40%`
|
|
204
|
+
* comes straight back in jsdom and arrives as pixels in a real browser, and the same
|
|
205
|
+
* harness answered 40 here and 96 under a browser runner with nothing to say which
|
|
206
|
+
* one you got. The stylesheet's own `top: 0; left: 0` is a second way that read lies,
|
|
207
|
+
* turning a thumb whose binding is gone into one parked at the origin.
|
|
200
208
|
*/
|
|
201
209
|
getThumbs(): Promise<WrColorPickerThumbs>;
|
|
202
210
|
/** The HEX field's value without the tab check — for filters, which must not throw. */
|
|
@@ -232,8 +232,15 @@ declare class WrColorPicker implements FormValueControl<string> {
|
|
|
232
232
|
protected readonly activeTab: _angular_core.WritableSignal<Tab>;
|
|
233
233
|
/** HSL view of the current colour, computed lazily. */
|
|
234
234
|
protected readonly hslView: _angular_core.Signal<WrHsl>;
|
|
235
|
-
/** Alpha as integer percent
|
|
235
|
+
/** Alpha as integer percent — the numeric tabs and the alpha slider's `aria-valuenow`. */
|
|
236
236
|
protected readonly alphaPercent: _angular_core.Signal<number>;
|
|
237
|
+
/** Hue in whole degrees, for the hue slider's `aria-valuenow`. */
|
|
238
|
+
protected readonly hueValue: _angular_core.Signal<number>;
|
|
239
|
+
private readonly areaLabel;
|
|
240
|
+
/** Name of the SV surface, carrying the two values a `role="group"` cannot. */
|
|
241
|
+
protected readonly resolvedAreaLabel: _angular_core.Signal<string>;
|
|
242
|
+
protected readonly resolvedHueLabel: _angular_core.Signal<string>;
|
|
243
|
+
protected readonly resolvedAlphaLabel: _angular_core.Signal<string>;
|
|
237
244
|
protected readonly tabOptions: readonly WrSegmentedOption<Tab>[];
|
|
238
245
|
protected readonly classes: _angular_core.Signal<string>;
|
|
239
246
|
/**
|
|
@@ -250,6 +257,19 @@ declare class WrColorPicker implements FormValueControl<string> {
|
|
|
250
257
|
private lastEmitted;
|
|
251
258
|
constructor();
|
|
252
259
|
protected onPointerDown(event: PointerEvent, surface: Edges): void;
|
|
260
|
+
/**
|
|
261
|
+
* Hue and alpha are real one-value sliders, so they take the APG slider keys —
|
|
262
|
+
* the same set `wr-knob` and `wr-slider` implement, including Home / End.
|
|
263
|
+
*/
|
|
264
|
+
protected onSliderKeydown(event: KeyboardEvent, surface: 'hue' | 'alpha'): void;
|
|
265
|
+
/**
|
|
266
|
+
* The SV canvas is two axes at once, so the keys follow the picture: left and
|
|
267
|
+
* right run along saturation, up and down along brightness — the directions
|
|
268
|
+
* the thumb visibly moves. Shift takes ten percent at a time.
|
|
269
|
+
*/
|
|
270
|
+
protected onAreaKeydown(event: KeyboardEvent): void;
|
|
271
|
+
/** Leaving a surface is what "touched" means, the same as leaving the hex field. */
|
|
272
|
+
protected onSurfaceBlur(): void;
|
|
253
273
|
private updateFromEvent;
|
|
254
274
|
protected onHexInput(event: Event): void;
|
|
255
275
|
protected onHexBlur(): void;
|
package/types/ngwr-confetti.d.ts
CHANGED
|
@@ -56,9 +56,17 @@ declare class WrConfetti {
|
|
|
56
56
|
private ctx;
|
|
57
57
|
private particles;
|
|
58
58
|
private rafId;
|
|
59
|
+
private readonly onResize;
|
|
60
|
+
constructor();
|
|
59
61
|
/** Spawn a confetti burst with the given (or default) options. */
|
|
60
62
|
fire(options?: WrConfettiOptions): void;
|
|
61
63
|
private ensureCanvas;
|
|
64
|
+
/**
|
|
65
|
+
* Give back the canvas and the listener `ensureCanvas()` took from the page,
|
|
66
|
+
* stop the frame loop, and reset the state both of them guard on so a `fire()`
|
|
67
|
+
* from a fresh injector rebuilds cleanly.
|
|
68
|
+
*/
|
|
69
|
+
private teardown;
|
|
62
70
|
private resize;
|
|
63
71
|
private spawn;
|
|
64
72
|
private tick;
|
package/types/ngwr-config.d.ts
CHANGED
|
@@ -151,8 +151,17 @@ declare function provideWrConfig(config: WrConfig): EnvironmentProviders;
|
|
|
151
151
|
* size scale is narrower than {@link WrControlSize} stops compiling here rather
|
|
152
152
|
* than accepting a value it cannot render — the type checker doing the work a
|
|
153
153
|
* parity script would otherwise have to.
|
|
154
|
+
*
|
|
155
|
+
* `NoInfer` is what makes that true. Drop it and the guard is a comment again on
|
|
156
|
+
* every call site that does not pin the generic by hand, which was all but two —
|
|
157
|
+
* `wr-btn` the only size one among them. Without it `T` has three inference sites;
|
|
158
|
+
* TypeScript collects all three candidates and keeps the SUPERTYPE, so `pick`'s
|
|
159
|
+
* `WrControlSize` won and `T` widened to the config's type. `Signal<T>` is
|
|
160
|
+
* covariant, so the narrower binding stayed assignable and the call compiled clean.
|
|
161
|
+
* Widening `WrControlSize` by one member used to raise exactly one error, in
|
|
162
|
+
* `wr-btn`; it now raises nine.
|
|
154
163
|
*/
|
|
155
|
-
declare function useConfigValue<T>(binding: Signal<T | null | undefined>, pick: (config: WrConfig) => T | undefined, fallback: T): Signal<T>;
|
|
164
|
+
declare function useConfigValue<T>(binding: Signal<T | null | undefined>, pick: (config: WrConfig) => NoInfer<T> | undefined, fallback: NoInfer<T>): Signal<T>;
|
|
156
165
|
|
|
157
166
|
/**
|
|
158
167
|
* @license
|
|
@@ -101,13 +101,12 @@ declare class WrContextMenuItemHarness extends ComponentHarness {
|
|
|
101
101
|
/** The leading icon's registered name, or `null` when the item has no icon. */
|
|
102
102
|
getIconName(): Promise<string | null>;
|
|
103
103
|
/**
|
|
104
|
-
* Whether the item holds focus.
|
|
104
|
+
* Whether the item holds the menu's roving focus.
|
|
105
105
|
*
|
|
106
|
-
*
|
|
107
|
-
*
|
|
108
|
-
*
|
|
109
|
-
*
|
|
110
|
-
* CDK focuses an element before typing into it.
|
|
106
|
+
* The menu moves focus onto its first enabled row as the pane renders and the
|
|
107
|
+
* arrows walk it from there, so this is where the keyboard is. Opening a
|
|
108
|
+
* submenu hands the cursor to the submenu's own first row, which leaves the
|
|
109
|
+
* item that owns it unfocused while its pane is up.
|
|
111
110
|
*/
|
|
112
111
|
isFocused(): Promise<boolean>;
|
|
113
112
|
/**
|
|
@@ -143,8 +142,10 @@ declare class WrContextMenuItemHarness extends ComponentHarness {
|
|
|
143
142
|
*
|
|
144
143
|
* The keyboard, not the pointer: it opens with no delay (hover waits out
|
|
145
144
|
* 120ms — `openSubmenuByHover()` covers that path) and needs no coordinates,
|
|
146
|
-
* which jsdom could not supply anyway.
|
|
147
|
-
*
|
|
145
|
+
* which jsdom could not supply anyway. A keyboard open walks INTO the submenu,
|
|
146
|
+
* so afterwards the cursor is on the submenu's first row and `isFocused()` on
|
|
147
|
+
* this item is `false` — `openSubmenuByHover()` only shows the pane and leaves
|
|
148
|
+
* the cursor where it was.
|
|
148
149
|
*/
|
|
149
150
|
openSubmenu(timeout?: number): Promise<void>;
|
|
150
151
|
/**
|
|
@@ -223,9 +224,10 @@ declare class WrContextMenuItemHarness extends ComponentHarness {
|
|
|
223
224
|
* `clickItem()` leaves it closed.
|
|
224
225
|
* - Submenus are a first-class input here rather than a nested trigger, so they
|
|
225
226
|
* are driven from {@link WrContextMenuItemHarness}.
|
|
226
|
-
* -
|
|
227
|
-
*
|
|
228
|
-
* —
|
|
227
|
+
* - Focus moves in on EVERY open, where a dropdown's does so only when a
|
|
228
|
+
* keyboard opened it. There is no hover trigger here — a right-click, Shift+F10
|
|
229
|
+
* or a long-press is always a deliberate request for the menu — so
|
|
230
|
+
* `getFocusedItemText()` answers straight after `open()`.
|
|
229
231
|
*
|
|
230
232
|
* **Timing.** The waits are real: a 500ms `setTimeout` for the long-press hold and
|
|
231
233
|
* another 220ms one for the exit animation the pane is held alive through, plus the
|
|
@@ -359,6 +361,17 @@ declare class WrContextMenuHarness extends ContentContainerComponentHarness {
|
|
|
359
361
|
getItems(filters?: WrContextMenuItemHarnessFilters): Promise<WrContextMenuItemHarness[]>;
|
|
360
362
|
/** The labels of this menu's items, in DOM order. */
|
|
361
363
|
getItemTexts(): Promise<string[]>;
|
|
364
|
+
/**
|
|
365
|
+
* The label of the item that currently holds focus, or `null` when the
|
|
366
|
+
* keyboard is elsewhere.
|
|
367
|
+
*
|
|
368
|
+
* The menu roves focus rather than drawing a cursor — it lands on the first
|
|
369
|
+
* ENABLED item as the pane renders, and the arrows walk it over the enabled
|
|
370
|
+
* items only — so this is the only way to ask where the keyboard is. It answers
|
|
371
|
+
* `null` once a submenu has taken the cursor: that pane is a separate overlay,
|
|
372
|
+
* and its own rows are reached through `WrContextMenuItemHarness`.
|
|
373
|
+
*/
|
|
374
|
+
getFocusedItemText(): Promise<string | null>;
|
|
362
375
|
/**
|
|
363
376
|
* How many separators this menu shows.
|
|
364
377
|
*
|