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/types/ngwr-table.d.ts
CHANGED
|
@@ -2,6 +2,57 @@ import * as _angular_core from '@angular/core';
|
|
|
2
2
|
import { TemplateRef } from '@angular/core';
|
|
3
3
|
import { CdkDragDrop } from '@angular/cdk/drag-drop';
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
* @license
|
|
7
|
+
*
|
|
8
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
9
|
+
* found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* One row handed to `wr-table` through `[items]`.
|
|
13
|
+
*
|
|
14
|
+
* **`object`, not `Record<string, unknown>`, and the difference is the whole
|
|
15
|
+
* reason this type exists.** TypeScript withholds the implicit index signature
|
|
16
|
+
* from an `interface`, because declaration merging can widen one later, so an
|
|
17
|
+
* interface is NOT assignable to `Record<string, unknown>` while a `type` alias
|
|
18
|
+
* describing the same shape IS:
|
|
19
|
+
*
|
|
20
|
+
* ```ts
|
|
21
|
+
* interface UserI { id: number }
|
|
22
|
+
* type UserT = { id: number };
|
|
23
|
+
*
|
|
24
|
+
* declare function take(rows: readonly Record<string, unknown>[]): void;
|
|
25
|
+
* take([] as UserI[]); // Index signature for type 'string' is missing in type 'UserI'
|
|
26
|
+
* take([] as UserT[]); // fine
|
|
27
|
+
* ```
|
|
28
|
+
*
|
|
29
|
+
* The table used to declare `[items]` as the record form, so `[items]="users"`
|
|
30
|
+
* compiled for one declaration of `User` and failed for the other — reported as
|
|
31
|
+
* "the table refuses my data", which is what it looks like from outside. Nothing
|
|
32
|
+
* about the row is read at bind time; the table reads cells by string key and
|
|
33
|
+
* hands back `unknown`, so the wider type costs nothing and accepts both.
|
|
34
|
+
*
|
|
35
|
+
* The row callbacks (`rowKey`, `groupBy`, `childrenKey`) do NOT take this type:
|
|
36
|
+
* their parameter is `Record<string, unknown>`, and it stays that way. A
|
|
37
|
+
* parameter is contravariant, so no signature short of a generic component can
|
|
38
|
+
* accept `(row: User) => row.id` — and widening it to `object` would reject the
|
|
39
|
+
* callbacks that do compile today (an explicit
|
|
40
|
+
* `(row: Record<string, unknown>) => …`) while making the row unindexable.
|
|
41
|
+
*
|
|
42
|
+
* Index the row instead — `(row) => row['id']` needs no cast at all — or, to
|
|
43
|
+
* reach your own type, `(row) => (row as unknown as User).id`. A single
|
|
44
|
+
* `as User` is not enough for an `interface`: TypeScript refuses that
|
|
45
|
+
* conversion outright (TS2352, "neither type sufficiently overlaps"), over the
|
|
46
|
+
* same missing index signature. `rowKey="id"` sidesteps all of it.
|
|
47
|
+
*
|
|
48
|
+
* `childrenKey` is the one callback that also RETURNS rows, and there the type
|
|
49
|
+
* IS this wide one — a return is covariant, so
|
|
50
|
+
* `(row) => (row as unknown as User).reports` needs no second assertion on the
|
|
51
|
+
* array. Declared narrow, it accepted a forest through `[items]` and refused to
|
|
52
|
+
* let the children back out.
|
|
53
|
+
*/
|
|
54
|
+
type WrTableRow = object;
|
|
55
|
+
|
|
5
56
|
/**
|
|
6
57
|
* @license
|
|
7
58
|
*
|
|
@@ -248,8 +299,22 @@ type RenderRow = {
|
|
|
248
299
|
declare class WrTable {
|
|
249
300
|
/** Column definitions, keyed by row property name. */
|
|
250
301
|
readonly columns: _angular_core.InputSignal<WrTableColumns>;
|
|
251
|
-
/**
|
|
252
|
-
|
|
302
|
+
/**
|
|
303
|
+
* Row items. `null`/`undefined` renders the empty state; use `[loading]` for
|
|
304
|
+
* the spinner.
|
|
305
|
+
*
|
|
306
|
+
* Typed `WrTableRow` (= `object`) rather than `Record<string, unknown>`, so an
|
|
307
|
+
* array of an `interface` binds as readily as an array of a `type` — see
|
|
308
|
+
* {@link WrTableRow} for why those two are not the same to TypeScript.
|
|
309
|
+
*/
|
|
310
|
+
readonly items: _angular_core.InputSignal<readonly object[] | null | undefined>;
|
|
311
|
+
/**
|
|
312
|
+
* The rows as records, for everything downstream that reads a cell by key.
|
|
313
|
+
*
|
|
314
|
+
* One cast at the boundary: the INPUT is wide so any object shape binds, while
|
|
315
|
+
* the body keeps indexing rows the way it always has.
|
|
316
|
+
*/
|
|
317
|
+
private readonly rows;
|
|
253
318
|
/** Show the loading spinner overlay. @default false */
|
|
254
319
|
readonly loading: _angular_core.InputSignalWithTransform<boolean, any>;
|
|
255
320
|
/**
|
|
@@ -314,6 +379,14 @@ declare class WrTable {
|
|
|
314
379
|
*
|
|
315
380
|
* `pageSize` pages the ROOTS; a root brings its open descendants with it.
|
|
316
381
|
*
|
|
382
|
+
* The function form RETURNS `WrTableRow`s, matching `[items]`: a return is
|
|
383
|
+
* covariant, so an array of `interface`-typed children satisfies it. Declared
|
|
384
|
+
* as records it did not, and a forest that bound to `[items]` could not hand
|
|
385
|
+
* its children back out. The PARAMETER stays `Record<string, unknown>` — that
|
|
386
|
+
* side is contravariant, and widening it would reject the callbacks that
|
|
387
|
+
* compile today while leaving `row['reports']` unindexable. See
|
|
388
|
+
* {@link WrTableRow}.
|
|
389
|
+
*
|
|
317
390
|
* @example
|
|
318
391
|
* ```html
|
|
319
392
|
* <wr-table
|
|
@@ -326,7 +399,7 @@ declare class WrTable {
|
|
|
326
399
|
* />
|
|
327
400
|
* ```
|
|
328
401
|
*/
|
|
329
|
-
readonly childrenKey: _angular_core.InputSignal<string | ((row: Record<string, unknown>) => readonly
|
|
402
|
+
readonly childrenKey: _angular_core.InputSignal<string | ((row: Record<string, unknown>) => readonly WrTableRow[] | null | undefined) | null>;
|
|
330
403
|
/**
|
|
331
404
|
* Which column carries the indent and the expand toggle. Keyed, not
|
|
332
405
|
* positional, so it survives a `columnOrder` drag. Defaults to whichever
|
|
@@ -476,9 +549,17 @@ declare class WrTable {
|
|
|
476
549
|
private readonly pins;
|
|
477
550
|
constructor();
|
|
478
551
|
private measurePins;
|
|
479
|
-
/**
|
|
552
|
+
/**
|
|
553
|
+
* Sticky `inset-inline-start` offset (px) for a `pin: 'left'` column, else `null`.
|
|
554
|
+
*
|
|
555
|
+
* The input keeps its physical name — it is public API — but the offset it
|
|
556
|
+
* produces is LOGICAL. `measurePins()` accumulates in DOM order, which is
|
|
557
|
+
* start-to-end semantics, and under `dir="rtl"` the column order mirrors: a
|
|
558
|
+
* `pin: 'left'` column then sits at the physical right, where a `left: 0`
|
|
559
|
+
* sticky inset can never catch it and the column just scrolls away.
|
|
560
|
+
*/
|
|
480
561
|
protected leftPin(key: string): number | null;
|
|
481
|
-
/** Sticky `
|
|
562
|
+
/** Sticky `inset-inline-end` offset (px) for a `pin: 'right'` column, else `null`. See {@link leftPin}. */
|
|
482
563
|
protected rightPin(key: string): number | null;
|
|
483
564
|
/** Whether `key` is the inner-edge pinned column on `side` (carries the shadow). */
|
|
484
565
|
protected isPinEdge(key: string, side: 'left' | 'right'): boolean;
|
|
@@ -569,7 +650,7 @@ declare class WrTable {
|
|
|
569
650
|
* that is every VISIBLE node — a collapsed subtree is not on screen and is not
|
|
570
651
|
* swept in, which keeps the checkbox honest about what it just did.
|
|
571
652
|
*/
|
|
572
|
-
|
|
653
|
+
protected readonly pageRowKeys: _angular_core.Signal<readonly unknown[]>;
|
|
573
654
|
protected isRowSelected(row: Record<string, unknown>): boolean;
|
|
574
655
|
/** Every current-page row selected (drives the header checkbox). */
|
|
575
656
|
protected readonly allSelected: _angular_core.Signal<boolean>;
|
|
@@ -633,9 +714,9 @@ declare class WrTable {
|
|
|
633
714
|
/**
|
|
634
715
|
* The flat `<tbody>` render list. Ungrouped it is exactly today's rows in
|
|
635
716
|
* order (the rendered elements are unchanged; only the `@for` track identity
|
|
636
|
-
* moves to a stable id). Returns `[]` for
|
|
637
|
-
*
|
|
638
|
-
*
|
|
717
|
+
* moves to a stable id). Returns `[]` for nullish rows, and reads nothing about
|
|
718
|
+
* `loading()` — suppressing the "no data" row under the spinner is the
|
|
719
|
+
* template's job, not this one's.
|
|
639
720
|
*/
|
|
640
721
|
protected readonly renderRows: _angular_core.Signal<readonly RenderRow[]>;
|
|
641
722
|
/** Default band label — the primitive as text, `'—'` for empty, JSON for objects. */
|
|
@@ -793,8 +874,20 @@ declare class WrTableFilter {
|
|
|
793
874
|
readonly filterLabel: _angular_core.InputSignal<string | null>;
|
|
794
875
|
/** Text shown when the search finds nothing. Falls back to `table.noMatches`. */
|
|
795
876
|
readonly noMatchesLabel: _angular_core.InputSignal<string | null>;
|
|
877
|
+
/**
|
|
878
|
+
* Placeholder AND accessible name of the search box. Falls back to `table.search`.
|
|
879
|
+
*
|
|
880
|
+
* One string for both because the box has no visible label: the placeholder was
|
|
881
|
+
* its only name, so a hard-coded literal left the control unnamed in every other
|
|
882
|
+
* language rather than merely untranslated.
|
|
883
|
+
*/
|
|
884
|
+
readonly searchLabel: _angular_core.InputSignal<string | null>;
|
|
885
|
+
/** Label of the clear-selection button. Falls back to `table.reset`. */
|
|
886
|
+
readonly resetLabel: _angular_core.InputSignal<string | null>;
|
|
796
887
|
protected readonly resolvedFilterLabel: _angular_core.Signal<string>;
|
|
797
888
|
protected readonly resolvedNoMatchesLabel: _angular_core.Signal<string>;
|
|
889
|
+
protected readonly resolvedSearchLabel: _angular_core.Signal<string>;
|
|
890
|
+
protected readonly resolvedResetLabel: _angular_core.Signal<string>;
|
|
798
891
|
readonly items: _angular_core.InputSignal<readonly WrTableFilterItem<unknown>[]>;
|
|
799
892
|
/** Fires whenever the selection changes. */
|
|
800
893
|
readonly selectionChange: _angular_core.OutputEmitterRef<readonly WrTableFilterItem<unknown>[]>;
|
|
@@ -818,8 +911,8 @@ declare class WrTableFilter {
|
|
|
818
911
|
protected onReset(): void;
|
|
819
912
|
private emitSelected;
|
|
820
913
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<WrTableFilter, never>;
|
|
821
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<WrTableFilter, "wr-table-filter", never, { "filterLabel": { "alias": "filterLabel"; "required": false; "isSignal": true; }; "noMatchesLabel": { "alias": "noMatchesLabel"; "required": false; "isSignal": true; }; "items": { "alias": "items"; "required": true; "isSignal": true; }; }, { "selectionChange": "selectionChange"; }, never, never, true, never>;
|
|
914
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<WrTableFilter, "wr-table-filter", never, { "filterLabel": { "alias": "filterLabel"; "required": false; "isSignal": true; }; "noMatchesLabel": { "alias": "noMatchesLabel"; "required": false; "isSignal": true; }; "searchLabel": { "alias": "searchLabel"; "required": false; "isSignal": true; }; "resetLabel": { "alias": "resetLabel"; "required": false; "isSignal": true; }; "items": { "alias": "items"; "required": true; "isSignal": true; }; }, { "selectionChange": "selectionChange"; }, never, never, true, never>;
|
|
822
915
|
}
|
|
823
916
|
|
|
824
917
|
export { WrTable, WrTableCell, WrTableExpand, WrTableFilter, WrTableGroupHeader, WrTableSort };
|
|
825
|
-
export type { WrTableCellContext, WrTableColumn, WrTableColumns, WrTableCsvOptions, WrTableExpandContext, WrTableFilterChange, WrTableFilterItem, WrTableGroupContext, WrTableSortDirection, WrTableSortState, WrTableSummary };
|
|
918
|
+
export type { WrTableCellContext, WrTableColumn, WrTableColumns, WrTableCsvOptions, WrTableExpandContext, WrTableFilterChange, WrTableFilterItem, WrTableGroupContext, WrTableRow, WrTableSortDirection, WrTableSortState, WrTableSummary };
|
|
@@ -111,12 +111,12 @@ declare class WrTabHarness extends ContentContainerComponentHarness {
|
|
|
111
111
|
* Whether this is the strip's selected tab.
|
|
112
112
|
*
|
|
113
113
|
* `aria-selected` first, because that is the state a screen reader acts on and
|
|
114
|
-
* the `--active` class is only what it looks like.
|
|
115
|
-
*
|
|
116
|
-
*
|
|
117
|
-
*
|
|
118
|
-
*
|
|
119
|
-
*
|
|
114
|
+
* the `--active` class is only what it looks like. Both shapes carry it now — a
|
|
115
|
+
* router tab publishes it off the same `routerLinkActive` that paints the class —
|
|
116
|
+
* so the class is a fallback for a tab that has neither yet, not a second reading
|
|
117
|
+
* of the same thing. The order is not interchangeable: reading the class first
|
|
118
|
+
* would report a tab as selected while `aria-selected="false"` told assistive tech
|
|
119
|
+
* otherwise.
|
|
120
120
|
*/
|
|
121
121
|
isSelected(): Promise<boolean>;
|
|
122
122
|
/**
|
|
@@ -243,10 +243,11 @@ declare class WrTabHarness extends ContentContainerComponentHarness {
|
|
|
243
243
|
* the tab they move to, the APG's automatic-activation pattern. `<wr-tabs>`
|
|
244
244
|
* renders exactly one panel: the selected tab's.
|
|
245
245
|
* - **Router** — one `routerLink` on any child switches the whole strip over. The
|
|
246
|
-
* tabs become `<a role="tab">`s
|
|
247
|
-
*
|
|
248
|
-
* stops being one tab stop — every enabled tab is a Tab stop of its
|
|
249
|
-
* arrow keys still move focus, but they select nothing: the route does
|
|
246
|
+
* tabs become `<a role="tab">`s whose `aria-selected` follows the resolved route
|
|
247
|
+
* (the same `routerLinkActive` that paints `--active`), the strip renders NO
|
|
248
|
+
* panel, and it stops being one tab stop — every enabled tab is a Tab stop of its
|
|
249
|
+
* own. The arrow keys still move focus, but they select nothing: the route does
|
|
250
|
+
* that.
|
|
250
251
|
*
|
|
251
252
|
* So {@link getSelectedLabel} and {@link getFocusedLabel} are two different
|
|
252
253
|
* questions, and {@link getTabStopLabels} is a third. They coincide in content mode
|
package/types/ngwr-tabs.d.ts
CHANGED
|
@@ -123,6 +123,8 @@ declare class WrTabs implements WrTabsContext {
|
|
|
123
123
|
/** Recompute which edges can scroll, from the strip's scroll metrics. @internal */
|
|
124
124
|
protected updateFades(): void;
|
|
125
125
|
protected onTabClick(tab: WrTab): void;
|
|
126
|
+
/** Per-instance prefix, so keys only have to be unique within one group. */
|
|
127
|
+
private readonly uid;
|
|
126
128
|
/** Header id for `aria-labelledby` on the panel. @internal */
|
|
127
129
|
headerId(key: string): string;
|
|
128
130
|
/** Panel id for `aria-controls` on the tab header. @internal */
|
package/types/ngwr-theme.d.ts
CHANGED
|
@@ -45,6 +45,87 @@ declare const WR_COLORS: readonly ["primary", "secondary", "success", "warning",
|
|
|
45
45
|
*/
|
|
46
46
|
type WrColor = (typeof WR_COLORS)[number];
|
|
47
47
|
|
|
48
|
+
/**
|
|
49
|
+
* @license
|
|
50
|
+
*
|
|
51
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
52
|
+
* found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
|
|
53
|
+
*/
|
|
54
|
+
/**
|
|
55
|
+
* The palette recipe, in TypeScript.
|
|
56
|
+
*
|
|
57
|
+
* `theme/styles/_colors.scss` derives seven tokens per intent from one hex, and
|
|
58
|
+
* until now that arithmetic existed only in Sass — so a theme picked at RUNTIME
|
|
59
|
+
* (a builder, a tenant colour from an API, a preset fetched from a registry)
|
|
60
|
+
* could not reproduce it. The showcase had half of it copied by hand for its
|
|
61
|
+
* own primary-colour switcher, which is the copy that drifts.
|
|
62
|
+
*
|
|
63
|
+
* **Seven tokens, not twelve, and that is not an omission.** The tint and ink
|
|
64
|
+
* layer is written in terms of `var()`:
|
|
65
|
+
*
|
|
66
|
+
* ```css
|
|
67
|
+
* --wr-color-primary-soft: rgba(var(--wr-color-primary-rgb), 0.12);
|
|
68
|
+
* --wr-color-primary-ink: color-mix(in srgb, var(--wr-color-primary) 78%, var(--wr-color-dark));
|
|
69
|
+
* ```
|
|
70
|
+
*
|
|
71
|
+
* so redefining the base and its channels re-resolves `-soft`, `-soft-border`,
|
|
72
|
+
* `-soft-contrast`, `-active` and `-ink` for free. A preset that also emitted
|
|
73
|
+
* those would be freezing values the stylesheet is meant to keep deriving.
|
|
74
|
+
*
|
|
75
|
+
* **`-contrast` IS re-derived, and must be.** It picks whichever of black and
|
|
76
|
+
* white scores higher against the fill, so a re-tuned intent keeps the label of
|
|
77
|
+
* the colour it replaced unless something recomputes it — that is how the dark
|
|
78
|
+
* theme once put white text on its lightened primary at 3.36:1.
|
|
79
|
+
*
|
|
80
|
+
* The LIGHT recipe only. `_dark.scss` is hand-tuned rather than derived — its
|
|
81
|
+
* `dark-light` uses `color.scale(…, 70%)` where the light block uses
|
|
82
|
+
* `color.adjust(…, 5%)`, and `light-light` goes -2.5% — so a generator claiming
|
|
83
|
+
* to reproduce it would be lying. Feed dark seeds through the same recipe if you
|
|
84
|
+
* want a derived dark theme; you will get a consistent one, not the shipped one.
|
|
85
|
+
*
|
|
86
|
+
* `pnpm check:theme` compiles nothing and trusts nothing: it reads the BUILT
|
|
87
|
+
* stylesheet and asserts this module reproduces every one of those tokens for
|
|
88
|
+
* the nine shipped intents.
|
|
89
|
+
*
|
|
90
|
+
* @example
|
|
91
|
+
* ```ts
|
|
92
|
+
* import { wrThemeTokens } from 'ngwr/theme';
|
|
93
|
+
*
|
|
94
|
+
* const tokens = wrThemeTokens({ primary: '#41598f' });
|
|
95
|
+
* for (const [name, value] of Object.entries(tokens)) {
|
|
96
|
+
* document.documentElement.style.setProperty(name, value);
|
|
97
|
+
* }
|
|
98
|
+
* ```
|
|
99
|
+
*/
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* The readable label ON a filled intent — whichever of black and white scores
|
|
103
|
+
* higher, the SCSS `_contrast()`.
|
|
104
|
+
*
|
|
105
|
+
* It PICKS, it does not blend, so those two values are the ceiling for every
|
|
106
|
+
* intent. The comparison is `>=`, so a colour exactly at the flip point
|
|
107
|
+
* (√21 ≈ 4.58 against both) takes the dark label, matching the SCSS.
|
|
108
|
+
*/
|
|
109
|
+
declare function wrContrastFor(hex: string): string;
|
|
110
|
+
/**
|
|
111
|
+
* The seven `--wr-color-<name>*` tokens one seed produces.
|
|
112
|
+
*
|
|
113
|
+
* Returns an empty record for a hex it cannot parse rather than a palette built
|
|
114
|
+
* on black — a silently black theme is harder to notice than a missing one.
|
|
115
|
+
*
|
|
116
|
+
* `name` is a shipped intent rather than any string: a token layer the
|
|
117
|
+
* stylesheet never declares has nothing reading it, and a typo would otherwise
|
|
118
|
+
* emit `--wr-color-primry-*` and paint nothing.
|
|
119
|
+
*/
|
|
120
|
+
declare function wrIntentTokens(name: WrColor, seed: string): Record<string, string>;
|
|
121
|
+
/**
|
|
122
|
+
* Every token a theme preset needs, for as many intents as it re-tunes.
|
|
123
|
+
*
|
|
124
|
+
* Intents left out keep the values the stylesheet compiled, so a preset that
|
|
125
|
+
* only moves `primary` writes seven declarations and nothing else.
|
|
126
|
+
*/
|
|
127
|
+
declare function wrThemeTokens(seeds: Partial<Record<WrColor, string>>): Record<string, string>;
|
|
128
|
+
|
|
48
129
|
/**
|
|
49
130
|
* @license
|
|
50
131
|
*
|
|
@@ -132,5 +213,5 @@ declare class WrTheme {
|
|
|
132
213
|
*/
|
|
133
214
|
declare function provideWrTheme(config?: Partial<WrThemeConfig>): EnvironmentProviders;
|
|
134
215
|
|
|
135
|
-
export { DEFAULT_WR_THEME_CONFIG, WR_COLORS, WR_THEME_CONFIG, WrTheme, provideWrTheme };
|
|
216
|
+
export { DEFAULT_WR_THEME_CONFIG, WR_COLORS, WR_THEME_CONFIG, WrTheme, provideWrTheme, wrContrastFor, wrIntentTokens, wrThemeTokens };
|
|
136
217
|
export type { WrColor, WrResolvedTheme, WrThemeConfig, WrThemeMode };
|
package/types/ngwr-tour.d.ts
CHANGED
|
@@ -74,6 +74,7 @@ declare class WrTour {
|
|
|
74
74
|
/** The step being shown, or `null` when idle. */
|
|
75
75
|
readonly step: _angular_core.Signal<WrTourStep | null>;
|
|
76
76
|
private readonly noStepAfter;
|
|
77
|
+
private readonly noStepBefore;
|
|
77
78
|
/**
|
|
78
79
|
* Whether this is the last step the user will see. Not `index() === total() - 1`:
|
|
79
80
|
* a trailing step whose target is missing is skipped, so comparing against the
|
|
@@ -81,6 +82,14 @@ declare class WrTour {
|
|
|
81
82
|
* ending the tour when it was pressed.
|
|
82
83
|
*/
|
|
83
84
|
readonly isLast: _angular_core.Signal<boolean>;
|
|
85
|
+
/**
|
|
86
|
+
* Whether this is the first step the user will see. Not `index() === 0`, for the
|
|
87
|
+
* mirror of the reason above: a LEADING step whose target is missing is skipped,
|
|
88
|
+
* so the tour opens on a later index and the raw one put a Back button on the
|
|
89
|
+
* first card — one that did nothing at all, because `prev()` walks off the start
|
|
90
|
+
* and returns without moving.
|
|
91
|
+
*/
|
|
92
|
+
readonly isFirst: _angular_core.Signal<boolean>;
|
|
84
93
|
constructor();
|
|
85
94
|
/**
|
|
86
95
|
* Begin a tour. Restarts if one is already running. A no-op under SSR — a
|
|
@@ -102,6 +111,8 @@ declare class WrTour {
|
|
|
102
111
|
private goTo;
|
|
103
112
|
/** Whether the tour has a step past `index` that can actually be shown. */
|
|
104
113
|
private anyResolvableAfter;
|
|
114
|
+
/** Whether the tour has a step before `index` that can actually be shown. */
|
|
115
|
+
private anyResolvableBefore;
|
|
105
116
|
private resolve;
|
|
106
117
|
private openStep;
|
|
107
118
|
private placeSpotlight;
|
|
@@ -129,6 +140,13 @@ interface WrTourController {
|
|
|
129
140
|
* skipped and the raw count would call the final card "Next".
|
|
130
141
|
*/
|
|
131
142
|
readonly isLast: () => boolean;
|
|
143
|
+
/**
|
|
144
|
+
* Whether this is the first step the user will actually see — the service looks
|
|
145
|
+
* BEHIND for a reachable one, for the mirror reason: a leading step whose target
|
|
146
|
+
* is missing gets skipped, so the tour opens on a later index and the raw one
|
|
147
|
+
* would put a Back button on the very first card.
|
|
148
|
+
*/
|
|
149
|
+
readonly isFirst: () => boolean;
|
|
132
150
|
next(): void;
|
|
133
151
|
prev(): void;
|
|
134
152
|
stop(): void;
|
|
@@ -141,10 +159,10 @@ interface WrTourController {
|
|
|
141
159
|
*/
|
|
142
160
|
declare class WrTourPopup {
|
|
143
161
|
protected readonly tour: WrTourController;
|
|
144
|
-
protected readonly nextLabel: string
|
|
145
|
-
protected readonly backLabel: string
|
|
146
|
-
protected readonly doneLabel: string
|
|
147
|
-
protected readonly skipLabel: string
|
|
162
|
+
protected readonly nextLabel: _angular_core.Signal<string>;
|
|
163
|
+
protected readonly backLabel: _angular_core.Signal<string>;
|
|
164
|
+
protected readonly doneLabel: _angular_core.Signal<string>;
|
|
165
|
+
protected readonly skipLabel: _angular_core.Signal<string>;
|
|
148
166
|
/** `Step {{current}} of {{total}}` — also the dialog's accessible name. */
|
|
149
167
|
protected readonly progress: (params?: ngwr_i18n.WrI18nParams) => string;
|
|
150
168
|
protected readonly isLast: _angular_core.Signal<boolean>;
|
package/types/ngwr-tree.d.ts
CHANGED
|
@@ -158,6 +158,7 @@ declare class WrTree<TId = string> implements FormValueControl<unknown> {
|
|
|
158
158
|
private readonly scrollStrategies;
|
|
159
159
|
private readonly destroyRef;
|
|
160
160
|
private readonly platformId;
|
|
161
|
+
private readonly injector;
|
|
161
162
|
/**
|
|
162
163
|
* Ambient reading direction. Optional so a bare `TestBed` — or a consumer who
|
|
163
164
|
* never set a direction — needs no provider; `Directionality` is root-provided
|
|
@@ -179,10 +180,10 @@ declare class WrTree<TId = string> implements FormValueControl<unknown> {
|
|
|
179
180
|
* `flat[i]` is undefined.
|
|
180
181
|
*/
|
|
181
182
|
protected readonly cursorIndex: _angular_core.Signal<number>;
|
|
182
|
-
/** Resolved ARIA labels —
|
|
183
|
-
protected readonly clearLabel: string
|
|
184
|
-
protected readonly expandLabel: string
|
|
185
|
-
protected readonly collapseLabel: string
|
|
183
|
+
/** Resolved ARIA labels — signals, so they follow both a late catalog and a locale switch. */
|
|
184
|
+
protected readonly clearLabel: _angular_core.Signal<string>;
|
|
185
|
+
protected readonly expandLabel: _angular_core.Signal<string>;
|
|
186
|
+
protected readonly collapseLabel: _angular_core.Signal<string>;
|
|
186
187
|
protected readonly chipRemoveLabel: (params?: ngwr_i18n.WrI18nParams) => string;
|
|
187
188
|
/** Flattened list of currently visible nodes — what the template renders. */
|
|
188
189
|
protected readonly flat: _angular_core.Signal<readonly FlatNode<TId>[]>;
|
|
@@ -108,6 +108,16 @@ declare class WrTypewriterHarness extends ComponentHarness {
|
|
|
108
108
|
static with(options?: WrTypewriterHarnessFilters): HarnessPredicate<WrTypewriterHarness>;
|
|
109
109
|
private readonly content;
|
|
110
110
|
private readonly cursor;
|
|
111
|
+
/**
|
|
112
|
+
* One custom property off the host's `style` ATTRIBUTE.
|
|
113
|
+
*
|
|
114
|
+
* Not `getCssValue()`, which is `getComputedStyle`: with the entry point's own
|
|
115
|
+
* stylesheet loaded that resolves the sheet's declaration, so the method
|
|
116
|
+
* answers plausibly at exactly the moment the host binding — the thing under
|
|
117
|
+
* test — is what broke. The sibling reader below already says this; the
|
|
118
|
+
* blink duration was reading the computed value anyway.
|
|
119
|
+
*/
|
|
120
|
+
private inlineVar;
|
|
111
121
|
/**
|
|
112
122
|
* What has been typed so far — a FRAGMENT while the machine is running.
|
|
113
123
|
*
|
package/types/ngwr-utils.d.ts
CHANGED
|
@@ -381,8 +381,11 @@ declare function throttle<TArgs extends readonly unknown[]>(fn: (...args: TArgs)
|
|
|
381
381
|
* found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
|
|
382
382
|
*/
|
|
383
383
|
/**
|
|
384
|
-
* Canonical `KeyboardEvent.key` values
|
|
385
|
-
*
|
|
384
|
+
* Canonical `KeyboardEvent.key` values for your own `keydown` handlers.
|
|
385
|
+
*
|
|
386
|
+
* The spec spellings are easy to get wrong — arrows are `ArrowUp`, space is a
|
|
387
|
+
* literal `' '` — and a typo like `'Esacpe'` never matches and never errors.
|
|
388
|
+
* These give you autocomplete and the {@link WrKey} union to match against.
|
|
386
389
|
*/
|
|
387
390
|
declare const KEYS: {
|
|
388
391
|
readonly ENTER: "Enter";
|
package/types/ngwr-version.d.ts
CHANGED
|
@@ -16,7 +16,7 @@ import { InjectionToken } from '@angular/core';
|
|
|
16
16
|
* Distinct from `Version` exported by `@angular/core`, which reports the
|
|
17
17
|
* loaded Angular runtime version (e.g. `'22.0.0'`), not ngwr's.
|
|
18
18
|
*/
|
|
19
|
-
declare const NGWR_VERSION = "
|
|
19
|
+
declare const NGWR_VERSION = "12.0.0";
|
|
20
20
|
|
|
21
21
|
/**
|
|
22
22
|
* @license
|
package/types/ngwr-window.d.ts
CHANGED
|
@@ -166,6 +166,31 @@ interface WrWindowConfig<D = unknown> {
|
|
|
166
166
|
*/
|
|
167
167
|
type WrWindowState = 'normal' | 'minimized' | 'maximized';
|
|
168
168
|
|
|
169
|
+
/**
|
|
170
|
+
* @license
|
|
171
|
+
*
|
|
172
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
173
|
+
* found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
|
|
174
|
+
*/
|
|
175
|
+
|
|
176
|
+
/**
|
|
177
|
+
* One window as `WrWindowManager.saveLayout()` recorded it — the geometry the
|
|
178
|
+
* window really had, not the geometry it happens to be showing while maximized
|
|
179
|
+
* or minimized.
|
|
180
|
+
*
|
|
181
|
+
* Public because `readLayout()` returns an array of these; a consumer that
|
|
182
|
+
* stores or forwards that result has to be able to name the element type.
|
|
183
|
+
*/
|
|
184
|
+
interface WrWindowLayoutSnapshot {
|
|
185
|
+
readonly id: string;
|
|
186
|
+
readonly state: WrWindowState;
|
|
187
|
+
readonly x: number;
|
|
188
|
+
readonly y: number;
|
|
189
|
+
readonly width: number;
|
|
190
|
+
readonly height: number;
|
|
191
|
+
readonly title: string;
|
|
192
|
+
}
|
|
193
|
+
|
|
169
194
|
/** Hook signature for `WrWindowRef.beforeClose()`. Return falsy to veto. */
|
|
170
195
|
type WrWindowBeforeCloseHook<R> = (result: R | undefined) => boolean | Promise<boolean>;
|
|
171
196
|
|
|
@@ -272,6 +297,7 @@ declare class WrWindowRef<C, R = unknown> {
|
|
|
272
297
|
constructor(id: string, _overlayRef: OverlayRef);
|
|
273
298
|
/** Resolved instance of the projected component. */
|
|
274
299
|
get componentInstance(): C;
|
|
300
|
+
private isClosed;
|
|
275
301
|
/**
|
|
276
302
|
* Close the window, optionally returning a result. If a `beforeClose`
|
|
277
303
|
* hook is registered it is consulted first — a falsy resolution
|
|
@@ -315,15 +341,6 @@ declare const WR_WINDOW_REF: InjectionToken<WrWindowRef<unknown, unknown>>;
|
|
|
315
341
|
/** Resolves to the `data` passed in `WrWindowConfig.data`. */
|
|
316
342
|
declare const WR_WINDOW_DATA: InjectionToken<unknown>;
|
|
317
343
|
|
|
318
|
-
interface RestoreSnapshot {
|
|
319
|
-
readonly id: string;
|
|
320
|
-
readonly state: WrWindowState;
|
|
321
|
-
readonly x: number;
|
|
322
|
-
readonly y: number;
|
|
323
|
-
readonly width: number;
|
|
324
|
-
readonly height: number;
|
|
325
|
-
readonly title: string;
|
|
326
|
-
}
|
|
327
344
|
/**
|
|
328
345
|
* Owns the open `<wr-window>` stack, hands out z-indexes, cascades the
|
|
329
346
|
* default spawn position, and opens programmatic windows that wrap a
|
|
@@ -388,6 +405,17 @@ declare class WrWindowManager {
|
|
|
388
405
|
* "Settings" menu item that should always re-focus the same window).
|
|
389
406
|
*/
|
|
390
407
|
open<C, R = unknown, D = unknown>(component: ComponentType<C>, config?: WrWindowConfig<D>): WrWindowRef<C, R>;
|
|
408
|
+
/**
|
|
409
|
+
* Whether a keyboard event routed to `ref`'s overlay is actually meant for it.
|
|
410
|
+
*
|
|
411
|
+
* The window holding real DOM focus owns the key. When focus is outside every
|
|
412
|
+
* window — the common case, since a window is not modal and traps nothing —
|
|
413
|
+
* the FRONT-most one does, by the manager's own z stack rather than by attach
|
|
414
|
+
* order. A tie (nothing has ever been focused, so no z has been handed out
|
|
415
|
+
* yet) leaves every window willing, and the dispatcher's newest-first walk
|
|
416
|
+
* settles it as before.
|
|
417
|
+
*/
|
|
418
|
+
private ownsKeyboard;
|
|
391
419
|
/** Close every programmatically-opened window. */
|
|
392
420
|
closeAll(): void;
|
|
393
421
|
/** Look up an open window by its `config.id`. Returns `null` when no match. */
|
|
@@ -406,7 +434,7 @@ declare class WrWindowManager {
|
|
|
406
434
|
*/
|
|
407
435
|
saveLayout(name: string): void;
|
|
408
436
|
/** Read a saved workspace. Returns `null` when no snapshot is found. */
|
|
409
|
-
readLayout(name: string): readonly
|
|
437
|
+
readLayout(name: string): readonly WrWindowLayoutSnapshot[] | null;
|
|
410
438
|
/**
|
|
411
439
|
* Apply a saved workspace.
|
|
412
440
|
*
|
|
@@ -472,4 +500,4 @@ declare class WrWindowTaskbar {
|
|
|
472
500
|
}
|
|
473
501
|
|
|
474
502
|
export { WR_WINDOW_DATA, WR_WINDOW_REF, WrWindowManager, WrWindowRef, WrWindowTaskbar };
|
|
475
|
-
export type { WrWindowBeforeCloseHook, WrWindowChromeSize, WrWindowConfig, WrWindowOs, WrWindowPersistMode, WrWindowSize, WrWindowSnap, WrWindowState, WrWindowStorageConfig };
|
|
503
|
+
export type { WrWindowBeforeCloseHook, WrWindowChromeSize, WrWindowConfig, WrWindowLayoutSnapshot, WrWindowOs, WrWindowPersistMode, WrWindowSize, WrWindowSnap, WrWindowState, WrWindowStorageConfig };
|