ngwr 11.1.0 → 12.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -7
- package/burger/styles/_index.scss +1 -1
- package/button/styles/_index.scss +2 -2
- package/calendar/styles/_index.scss +32 -12
- package/calendar-heatmap/styles/_index.scss +20 -0
- package/carousel/styles/_index.scss +23 -1
- package/cascader/styles/_index.scss +15 -3
- package/checkbox/styles/_index.scss +2 -2
- package/circular-text/styles/_index.scss +11 -0
- package/collapse/styles/_index.scss +2 -2
- package/color-picker/styles/_index.scss +3 -3
- package/command-palette/styles/_index.scss +12 -0
- package/compare/styles/_index.scss +18 -2
- package/context-menu/styles/_index.scss +21 -2
- package/date-picker/styles/_index.scss +5 -5
- package/descriptions/styles/_index.scss +1 -1
- package/drag-drop/styles/_index.scss +28 -1
- package/drawer/styles/_index.scss +37 -0
- package/dropdown/styles/_index.scss +2 -2
- package/event-calendar/styles/_index.scss +67 -10
- package/fesm2022/ngwr-action-sheet-testing.mjs +313 -0
- package/fesm2022/ngwr-action-sheet-testing.mjs.map +1 -0
- package/fesm2022/ngwr-action-sheet.mjs +3 -3
- package/fesm2022/ngwr-affix.mjs +3 -3
- package/fesm2022/ngwr-alert.mjs +3 -3
- package/fesm2022/ngwr-anchor.mjs +3 -3
- package/fesm2022/ngwr-aurora.mjs +3 -3
- package/fesm2022/ngwr-avatar.mjs +3 -3
- package/fesm2022/ngwr-back-top.mjs +3 -3
- package/fesm2022/ngwr-badge.mjs +6 -6
- package/fesm2022/ngwr-bar-chart-testing.mjs +107 -0
- package/fesm2022/ngwr-bar-chart-testing.mjs.map +1 -0
- package/fesm2022/ngwr-bar-chart.mjs +3 -3
- package/fesm2022/ngwr-blur-text-testing.mjs +203 -0
- package/fesm2022/ngwr-blur-text-testing.mjs.map +1 -0
- package/fesm2022/ngwr-blur-text.mjs +18 -4
- package/fesm2022/ngwr-blur-text.mjs.map +1 -1
- package/fesm2022/ngwr-border-glow-testing.mjs +325 -0
- package/fesm2022/ngwr-border-glow-testing.mjs.map +1 -0
- package/fesm2022/ngwr-border-glow.mjs +4 -4
- package/fesm2022/ngwr-border-glow.mjs.map +1 -1
- package/fesm2022/ngwr-breadcrumbs.mjs +29 -17
- package/fesm2022/ngwr-breadcrumbs.mjs.map +1 -1
- package/fesm2022/ngwr-burger.mjs +3 -3
- package/fesm2022/ngwr-button.mjs +6 -6
- package/fesm2022/ngwr-calendar-heatmap-testing.mjs +95 -0
- package/fesm2022/ngwr-calendar-heatmap-testing.mjs.map +1 -0
- package/fesm2022/ngwr-calendar-heatmap.mjs +17 -5
- package/fesm2022/ngwr-calendar-heatmap.mjs.map +1 -1
- package/fesm2022/ngwr-calendar-testing.mjs +368 -0
- package/fesm2022/ngwr-calendar-testing.mjs.map +1 -0
- package/fesm2022/ngwr-calendar.mjs +228 -10
- package/fesm2022/ngwr-calendar.mjs.map +1 -1
- package/fesm2022/ngwr-card.mjs +10 -10
- package/fesm2022/ngwr-card.mjs.map +1 -1
- package/fesm2022/ngwr-carousel.mjs +124 -24
- package/fesm2022/ngwr-carousel.mjs.map +1 -1
- package/fesm2022/ngwr-cascader.mjs +60 -5
- package/fesm2022/ngwr-cascader.mjs.map +1 -1
- package/fesm2022/ngwr-checkbox.mjs +14 -6
- package/fesm2022/ngwr-checkbox.mjs.map +1 -1
- package/fesm2022/ngwr-circular-text-testing.mjs +230 -0
- package/fesm2022/ngwr-circular-text-testing.mjs.map +1 -0
- package/fesm2022/ngwr-circular-text.mjs +4 -4
- package/fesm2022/ngwr-circular-text.mjs.map +1 -1
- package/fesm2022/ngwr-click-spark.mjs +27 -7
- package/fesm2022/ngwr-click-spark.mjs.map +1 -1
- package/fesm2022/ngwr-clipboard.mjs +3 -3
- package/fesm2022/ngwr-collapse.mjs +9 -9
- package/fesm2022/ngwr-color-picker-testing.mjs +452 -0
- package/fesm2022/ngwr-color-picker-testing.mjs.map +1 -0
- package/fesm2022/ngwr-color-picker.mjs +126 -10
- package/fesm2022/ngwr-color-picker.mjs.map +1 -1
- package/fesm2022/ngwr-command-palette.mjs +14 -5
- package/fesm2022/ngwr-command-palette.mjs.map +1 -1
- package/fesm2022/ngwr-compare.mjs +3 -3
- package/fesm2022/ngwr-confetti.mjs +31 -6
- package/fesm2022/ngwr-confetti.mjs.map +1 -1
- package/fesm2022/ngwr-config.mjs +9 -0
- package/fesm2022/ngwr-config.mjs.map +1 -1
- package/fesm2022/ngwr-context-menu-testing.mjs +30 -11
- package/fesm2022/ngwr-context-menu-testing.mjs.map +1 -1
- package/fesm2022/ngwr-context-menu.mjs +358 -48
- package/fesm2022/ngwr-context-menu.mjs.map +1 -1
- package/fesm2022/ngwr-cookie.mjs +3 -3
- package/fesm2022/ngwr-counter.mjs +25 -9
- package/fesm2022/ngwr-counter.mjs.map +1 -1
- package/fesm2022/{ngwr-date-adapter-fns.mjs → ngwr-date-adapters-fns.mjs} +37 -10
- package/fesm2022/ngwr-date-adapters-fns.mjs.map +1 -0
- package/fesm2022/{ngwr-date-adapter-luxon.mjs → ngwr-date-adapters-luxon.mjs} +5 -5
- package/fesm2022/ngwr-date-adapters-luxon.mjs.map +1 -0
- package/fesm2022/ngwr-date-picker-testing.mjs +21 -85
- package/fesm2022/ngwr-date-picker-testing.mjs.map +1 -1
- package/fesm2022/ngwr-date-picker.mjs +119 -37
- package/fesm2022/ngwr-date-picker.mjs.map +1 -1
- package/fesm2022/{ngwr-date-adapter.mjs → ngwr-date.mjs} +36 -10
- package/fesm2022/ngwr-date.mjs.map +1 -0
- package/fesm2022/ngwr-decrypt-text-testing.mjs +261 -0
- package/fesm2022/ngwr-decrypt-text-testing.mjs.map +1 -0
- package/fesm2022/ngwr-decrypt-text.mjs +9 -4
- package/fesm2022/ngwr-decrypt-text.mjs.map +1 -1
- package/fesm2022/ngwr-density.mjs +6 -6
- package/fesm2022/ngwr-descriptions.mjs +6 -6
- package/fesm2022/ngwr-dialog.mjs +73 -18
- package/fesm2022/ngwr-dialog.mjs.map +1 -1
- package/fesm2022/ngwr-directives.mjs +12 -12
- package/fesm2022/ngwr-divider.mjs +52 -5
- package/fesm2022/ngwr-divider.mjs.map +1 -1
- package/fesm2022/ngwr-donut-chart-testing.mjs +97 -0
- package/fesm2022/ngwr-donut-chart-testing.mjs.map +1 -0
- package/fesm2022/ngwr-donut-chart.mjs +7 -7
- package/fesm2022/ngwr-donut-chart.mjs.map +1 -1
- package/fesm2022/ngwr-drag-drop.mjs +160 -11
- package/fesm2022/ngwr-drag-drop.mjs.map +1 -1
- package/fesm2022/ngwr-drawer.mjs +156 -64
- package/fesm2022/ngwr-drawer.mjs.map +1 -1
- package/fesm2022/ngwr-dropdown.mjs +58 -12
- package/fesm2022/ngwr-dropdown.mjs.map +1 -1
- package/fesm2022/ngwr-empty.mjs +3 -3
- package/fesm2022/ngwr-event-calendar-testing.mjs +446 -0
- package/fesm2022/ngwr-event-calendar-testing.mjs.map +1 -0
- package/fesm2022/ngwr-event-calendar.mjs +66 -28
- package/fesm2022/ngwr-event-calendar.mjs.map +1 -1
- package/fesm2022/ngwr-falling-text-testing.mjs +220 -0
- package/fesm2022/ngwr-falling-text-testing.mjs.map +1 -0
- package/fesm2022/ngwr-falling-text.mjs +75 -46
- package/fesm2022/ngwr-falling-text.mjs.map +1 -1
- package/fesm2022/ngwr-file-upload.mjs +3 -3
- package/fesm2022/ngwr-form.mjs +32 -15
- package/fesm2022/ngwr-form.mjs.map +1 -1
- package/fesm2022/ngwr-fuzzy-text-testing.mjs +134 -0
- package/fesm2022/ngwr-fuzzy-text-testing.mjs.map +1 -0
- package/fesm2022/ngwr-fuzzy-text.mjs +21 -11
- package/fesm2022/ngwr-fuzzy-text.mjs.map +1 -1
- package/fesm2022/ngwr-gauge-testing.mjs +86 -0
- package/fesm2022/ngwr-gauge-testing.mjs.map +1 -0
- package/fesm2022/ngwr-gauge.mjs +3 -3
- package/fesm2022/ngwr-glitch-text-testing.mjs +215 -0
- package/fesm2022/ngwr-glitch-text-testing.mjs.map +1 -0
- package/fesm2022/ngwr-glitch-text.mjs +7 -7
- package/fesm2022/ngwr-glitch-text.mjs.map +1 -1
- package/fesm2022/ngwr-gradient-text-testing.mjs +258 -0
- package/fesm2022/ngwr-gradient-text-testing.mjs.map +1 -0
- package/fesm2022/ngwr-gradient-text.mjs +4 -4
- package/fesm2022/ngwr-gradient-text.mjs.map +1 -1
- package/fesm2022/ngwr-hotkey.mjs +24 -9
- package/fesm2022/ngwr-hotkey.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-en.mjs +87 -1
- package/fesm2022/ngwr-i18n-en.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-ru.mjs +69 -1
- package/fesm2022/ngwr-i18n-ru.mjs.map +1 -1
- package/fesm2022/ngwr-i18n.mjs +26 -15
- package/fesm2022/ngwr-i18n.mjs.map +1 -1
- package/fesm2022/ngwr-icon.mjs +6 -6
- package/fesm2022/ngwr-image-cropper-testing.mjs +200 -0
- package/fesm2022/ngwr-image-cropper-testing.mjs.map +1 -0
- package/fesm2022/ngwr-image-cropper.mjs +156 -11
- package/fesm2022/ngwr-image-cropper.mjs.map +1 -1
- package/fesm2022/ngwr-input-number-testing.mjs +15 -10
- package/fesm2022/ngwr-input-number-testing.mjs.map +1 -1
- package/fesm2022/ngwr-input-number.mjs +89 -15
- package/fesm2022/ngwr-input-number.mjs.map +1 -1
- package/fesm2022/ngwr-input-otp-testing.mjs +12 -6
- package/fesm2022/ngwr-input-otp-testing.mjs.map +1 -1
- package/fesm2022/ngwr-input-otp.mjs +24 -5
- package/fesm2022/ngwr-input-otp.mjs.map +1 -1
- package/fesm2022/ngwr-input.mjs +15 -15
- package/fesm2022/ngwr-keyboard.mjs +3 -3
- package/fesm2022/ngwr-knob-testing.mjs +220 -0
- package/fesm2022/ngwr-knob-testing.mjs.map +1 -0
- package/fesm2022/ngwr-knob.mjs +3 -3
- package/fesm2022/ngwr-layout.mjs +15 -15
- package/fesm2022/ngwr-lightbox-testing.mjs +223 -0
- package/fesm2022/ngwr-lightbox-testing.mjs.map +1 -0
- package/fesm2022/ngwr-lightbox.mjs +11 -4
- package/fesm2022/ngwr-lightbox.mjs.map +1 -1
- package/fesm2022/ngwr-line-chart-testing.mjs +119 -0
- package/fesm2022/ngwr-line-chart-testing.mjs.map +1 -0
- package/fesm2022/ngwr-line-chart.mjs +73 -26
- package/fesm2022/ngwr-line-chart.mjs.map +1 -1
- package/fesm2022/ngwr-list.mjs +7 -7
- package/fesm2022/ngwr-list.mjs.map +1 -1
- package/fesm2022/ngwr-loading-bar.mjs +7 -7
- package/fesm2022/ngwr-loading-bar.mjs.map +1 -1
- package/fesm2022/ngwr-markdown.mjs +66 -8
- package/fesm2022/ngwr-markdown.mjs.map +1 -1
- package/fesm2022/ngwr-marquee-testing.mjs +336 -0
- package/fesm2022/ngwr-marquee-testing.mjs.map +1 -0
- package/fesm2022/ngwr-marquee.mjs +4 -4
- package/fesm2022/ngwr-marquee.mjs.map +1 -1
- package/fesm2022/ngwr-media.mjs +3 -3
- package/fesm2022/ngwr-mention.mjs +108 -13
- package/fesm2022/ngwr-mention.mjs.map +1 -1
- package/fesm2022/ngwr-meta.mjs +6 -6
- package/fesm2022/ngwr-meter-group-testing.mjs +100 -0
- package/fesm2022/ngwr-meter-group-testing.mjs.map +1 -0
- package/fesm2022/ngwr-meter-group.mjs +3 -3
- package/fesm2022/ngwr-overlay.mjs +34 -7
- package/fesm2022/ngwr-overlay.mjs.map +1 -1
- package/fesm2022/ngwr-page-header.mjs +3 -3
- package/fesm2022/ngwr-pagination-testing.mjs +6 -6
- package/fesm2022/ngwr-pagination-testing.mjs.map +1 -1
- package/fesm2022/ngwr-pagination.mjs +17 -13
- package/fesm2022/ngwr-pagination.mjs.map +1 -1
- package/fesm2022/ngwr-pipes.mjs +39 -26
- package/fesm2022/ngwr-pipes.mjs.map +1 -1
- package/fesm2022/ngwr-platform.mjs +9 -9
- package/fesm2022/ngwr-popconfirm.mjs +6 -6
- package/fesm2022/ngwr-popover-testing.mjs +7 -2
- package/fesm2022/ngwr-popover-testing.mjs.map +1 -1
- package/fesm2022/ngwr-popover.mjs +169 -33
- package/fesm2022/ngwr-popover.mjs.map +1 -1
- package/fesm2022/ngwr-progress.mjs +3 -3
- package/fesm2022/ngwr-pull-to-refresh.mjs +3 -3
- package/fesm2022/ngwr-qr.mjs +42 -5
- package/fesm2022/ngwr-qr.mjs.map +1 -1
- package/fesm2022/ngwr-radio.mjs +6 -6
- package/fesm2022/ngwr-rating.mjs +3 -3
- package/fesm2022/ngwr-result.mjs +21 -30
- package/fesm2022/ngwr-result.mjs.map +1 -1
- package/fesm2022/ngwr-rotating-text-testing.mjs +220 -0
- package/fesm2022/ngwr-rotating-text-testing.mjs.map +1 -0
- package/fesm2022/ngwr-rotating-text.mjs +4 -4
- package/fesm2022/ngwr-rotating-text.mjs.map +1 -1
- package/fesm2022/ngwr-scroll.mjs +3 -3
- package/fesm2022/ngwr-segmented-testing.mjs +14 -1
- package/fesm2022/ngwr-segmented-testing.mjs.map +1 -1
- package/fesm2022/ngwr-segmented.mjs +29 -6
- package/fesm2022/ngwr-segmented.mjs.map +1 -1
- package/fesm2022/ngwr-select.mjs +227 -43
- package/fesm2022/ngwr-select.mjs.map +1 -1
- package/fesm2022/ngwr-shiny-text-testing.mjs +237 -0
- package/fesm2022/ngwr-shiny-text-testing.mjs.map +1 -0
- package/fesm2022/ngwr-shiny-text.mjs +11 -9
- package/fesm2022/ngwr-shiny-text.mjs.map +1 -1
- package/fesm2022/ngwr-sidebar.mjs +31 -16
- package/fesm2022/ngwr-sidebar.mjs.map +1 -1
- package/fesm2022/ngwr-skeleton.mjs +3 -3
- package/fesm2022/ngwr-slider.mjs +143 -14
- package/fesm2022/ngwr-slider.mjs.map +1 -1
- package/fesm2022/ngwr-sparkline-testing.mjs +76 -0
- package/fesm2022/ngwr-sparkline-testing.mjs.map +1 -0
- package/fesm2022/ngwr-sparkline.mjs +3 -3
- package/fesm2022/ngwr-speed-dial-testing.mjs +281 -0
- package/fesm2022/ngwr-speed-dial-testing.mjs.map +1 -0
- package/fesm2022/ngwr-speed-dial.mjs +27 -12
- package/fesm2022/ngwr-speed-dial.mjs.map +1 -1
- package/fesm2022/ngwr-spinner.mjs +3 -3
- package/fesm2022/ngwr-splash-cursor-testing.mjs +89 -0
- package/fesm2022/ngwr-splash-cursor-testing.mjs.map +1 -0
- package/fesm2022/ngwr-splash-cursor.mjs +3 -3
- package/fesm2022/ngwr-split-text-testing.mjs +224 -0
- package/fesm2022/ngwr-split-text-testing.mjs.map +1 -0
- package/fesm2022/ngwr-split-text.mjs +31 -5
- package/fesm2022/ngwr-split-text.mjs.map +1 -1
- package/fesm2022/ngwr-splitter-testing.mjs +245 -0
- package/fesm2022/ngwr-splitter-testing.mjs.map +1 -0
- package/fesm2022/ngwr-splitter.mjs +3 -3
- package/fesm2022/ngwr-spotlight-card-testing.mjs +368 -0
- package/fesm2022/ngwr-spotlight-card-testing.mjs.map +1 -0
- package/fesm2022/ngwr-spotlight-card.mjs +7 -7
- package/fesm2022/ngwr-spotlight-card.mjs.map +1 -1
- package/fesm2022/ngwr-squircle.mjs +6 -6
- package/fesm2022/ngwr-star-border-testing.mjs +172 -0
- package/fesm2022/ngwr-star-border-testing.mjs.map +1 -0
- package/fesm2022/ngwr-star-border.mjs +4 -4
- package/fesm2022/ngwr-star-border.mjs.map +1 -1
- package/fesm2022/ngwr-statistic.mjs +9 -9
- package/fesm2022/ngwr-stepper-testing.mjs +8 -8
- package/fesm2022/ngwr-stepper-testing.mjs.map +1 -1
- package/fesm2022/ngwr-stepper.mjs +33 -8
- package/fesm2022/ngwr-stepper.mjs.map +1 -1
- package/fesm2022/ngwr-storage.mjs +17 -5
- package/fesm2022/ngwr-storage.mjs.map +1 -1
- package/fesm2022/ngwr-switch.mjs +3 -3
- package/fesm2022/ngwr-table.mjs +110 -40
- package/fesm2022/ngwr-table.mjs.map +1 -1
- package/fesm2022/ngwr-tabs-testing.mjs +11 -10
- package/fesm2022/ngwr-tabs-testing.mjs.map +1 -1
- package/fesm2022/ngwr-tabs.mjs +51 -11
- package/fesm2022/ngwr-tabs.mjs.map +1 -1
- package/fesm2022/ngwr-textarea.mjs +3 -3
- package/fesm2022/ngwr-theme.mjs +181 -4
- package/fesm2022/ngwr-theme.mjs.map +1 -1
- package/fesm2022/ngwr-tilt-card-testing.mjs +190 -0
- package/fesm2022/ngwr-tilt-card-testing.mjs.map +1 -0
- package/fesm2022/ngwr-tilt-card.mjs +26 -8
- package/fesm2022/ngwr-tilt-card.mjs.map +1 -1
- package/fesm2022/ngwr-timeline.mjs +6 -6
- package/fesm2022/ngwr-toast.mjs +44 -15
- package/fesm2022/ngwr-toast.mjs.map +1 -1
- package/fesm2022/ngwr-toolbar.mjs +3 -3
- package/fesm2022/ngwr-tour-testing.mjs +173 -0
- package/fesm2022/ngwr-tour-testing.mjs.map +1 -0
- package/fesm2022/ngwr-tour.mjs +34 -10
- package/fesm2022/ngwr-tour.mjs.map +1 -1
- package/fesm2022/ngwr-transfer.mjs +3 -3
- package/fesm2022/ngwr-tree.mjs +36 -11
- package/fesm2022/ngwr-tree.mjs.map +1 -1
- package/fesm2022/ngwr-typewriter-testing.mjs +242 -0
- package/fesm2022/ngwr-typewriter-testing.mjs.map +1 -0
- package/fesm2022/ngwr-typewriter.mjs +13 -5
- package/fesm2022/ngwr-typewriter.mjs.map +1 -1
- package/fesm2022/ngwr-typography.mjs +3 -3
- package/fesm2022/ngwr-utils.mjs +5 -2
- package/fesm2022/ngwr-utils.mjs.map +1 -1
- package/fesm2022/ngwr-version.mjs +1 -1
- package/fesm2022/ngwr-version.mjs.map +1 -1
- package/fesm2022/ngwr-virtual-scroll.mjs +4 -4
- package/fesm2022/ngwr-virtual-scroll.mjs.map +1 -1
- package/fesm2022/ngwr-waves-testing.mjs +128 -0
- package/fesm2022/ngwr-waves-testing.mjs.map +1 -0
- package/fesm2022/ngwr-waves.mjs +4 -4
- package/fesm2022/ngwr-waves.mjs.map +1 -1
- package/fesm2022/ngwr-window-testing.mjs +361 -0
- package/fesm2022/ngwr-window-testing.mjs.map +1 -0
- package/fesm2022/ngwr-window.mjs +175 -31
- package/fesm2022/ngwr-window.mjs.map +1 -1
- package/file-upload/styles/_index.scss +2 -2
- package/glitch-text/styles/_index.scss +27 -12
- package/i18n/en.json +71 -7
- package/i18n/ru.json +71 -7
- package/image-cropper/styles/_index.scss +19 -0
- package/input/styles/_index.scss +2 -2
- package/input-number/styles/_index.scss +2 -2
- package/input-otp/styles/_index.scss +9 -2
- package/knob/styles/_index.scss +1 -1
- package/lightbox/styles/_index.scss +16 -2
- package/line-chart/styles/_index.scss +28 -14
- package/list/styles/_index.scss +1 -1
- package/llms-full.txt +161 -19
- package/llms.txt +45 -10
- package/markdown/styles/_index.scss +3 -3
- package/mcp/api.js +6 -4
- package/mcp/catalog.js +40 -3
- package/mcp/providers.js +42 -0
- package/mcp/tools.js +22 -30
- package/meter-group/styles/_index.scss +1 -1
- package/overlay/styles/_index.scss +33 -1
- package/package.json +161 -12
- package/pagination/styles/_index.scss +23 -1
- package/popover/styles/_index.scss +16 -7
- package/progress/styles/_index.scss +1 -1
- package/radio/styles/_index.scss +2 -2
- package/rating/styles/_index.scss +1 -1
- package/schematics/collection.json +1 -1
- package/schematics/migrations/v12/index.js +65 -0
- package/schematics/migrations/v7/index.js +12 -1
- package/schematics/migrations/v8/index.js +10 -1
- package/schematics/migrations.json +5 -0
- package/schematics/ng-add/index.js +8 -3
- package/schematics/provider/index.js +80 -13
- package/schematics/use/index.js +9 -129
- package/schematics/use/rule.js +206 -0
- package/schematics/use/symbol-map.json +4 -4
- package/segmented/styles/_index.scss +14 -3
- package/select/styles/_index.scss +14 -2
- package/sidebar/styles/_index.scss +12 -10
- package/skills/ngwr/SKILL.md +117 -0
- package/skills/ngwr/references/catalog.md +212 -0
- package/skills/ngwr/references/setup.md +78 -0
- package/slider/styles/_index.scss +1 -1
- package/speed-dial/styles/_index.scss +1 -1
- package/stepper/styles/_index.scss +12 -3
- package/switch/styles/_index.scss +2 -2
- package/table/styles/_index.scss +61 -12
- package/tabs/styles/_index.scss +1 -1
- package/textarea/styles/_index.scss +1 -1
- package/theme/styles/_colors.scss +142 -56
- package/theme/styles/_dark.scss +46 -3
- package/theme/styles/_focus.scss +28 -5
- package/theme/styles/_mixins.scss +1 -1
- package/theme/styles/_variables.scss +67 -0
- package/transfer/styles/_index.scss +26 -3
- package/tree/styles/_index.scss +29 -6
- package/types/ngwr-action-sheet-testing.d.ts +260 -0
- package/types/ngwr-bar-chart-testing.d.ts +85 -0
- package/types/ngwr-blur-text-testing.d.ts +180 -0
- package/types/ngwr-blur-text.d.ts +20 -4
- package/types/ngwr-border-glow-testing.d.ts +219 -0
- package/types/ngwr-breadcrumbs.d.ts +17 -10
- package/types/ngwr-calendar-heatmap-testing.d.ts +79 -0
- package/types/ngwr-calendar-testing.d.ts +277 -0
- package/types/ngwr-calendar.d.ts +76 -0
- package/types/ngwr-carousel.d.ts +85 -6
- package/types/ngwr-cascader.d.ts +17 -0
- package/types/ngwr-checkbox.d.ts +13 -0
- package/types/ngwr-circular-text-testing.d.ts +196 -0
- package/types/ngwr-click-spark.d.ts +4 -0
- package/types/ngwr-color-picker-testing.d.ts +299 -0
- package/types/ngwr-color-picker.d.ts +34 -2
- package/types/ngwr-confetti.d.ts +8 -0
- package/types/ngwr-config.d.ts +10 -1
- package/types/ngwr-context-menu-testing.d.ts +24 -11
- package/types/ngwr-context-menu.d.ts +71 -1
- package/types/ngwr-counter.d.ts +1 -0
- package/types/{ngwr-date-adapter-fns.d.ts → ngwr-date-adapters-fns.d.ts} +33 -6
- package/types/{ngwr-date-adapter-luxon.d.ts → ngwr-date-adapters-luxon.d.ts} +1 -1
- package/types/ngwr-date-picker-testing.d.ts +17 -72
- package/types/ngwr-date-picker.d.ts +8 -4
- package/types/{ngwr-date-adapter.d.ts → ngwr-date.d.ts} +24 -5
- package/types/ngwr-decrypt-text-testing.d.ts +222 -0
- package/types/ngwr-dialog.d.ts +38 -1
- package/types/ngwr-divider.d.ts +25 -0
- package/types/ngwr-donut-chart-testing.d.ts +83 -0
- package/types/ngwr-donut-chart.d.ts +3 -3
- package/types/ngwr-drag-drop.d.ts +56 -2
- package/types/ngwr-drawer.d.ts +68 -5
- package/types/ngwr-dropdown.d.ts +9 -0
- package/types/ngwr-event-calendar-testing.d.ts +301 -0
- package/types/ngwr-event-calendar.d.ts +17 -8
- package/types/ngwr-falling-text-testing.d.ts +188 -0
- package/types/ngwr-falling-text.d.ts +1 -1
- package/types/ngwr-form.d.ts +12 -2
- package/types/ngwr-fuzzy-text-testing.d.ts +130 -0
- package/types/ngwr-gauge-testing.d.ts +71 -0
- package/types/ngwr-glitch-text-testing.d.ts +201 -0
- package/types/ngwr-gradient-text-testing.d.ts +186 -0
- package/types/ngwr-i18n.d.ts +13 -4
- package/types/ngwr-image-cropper-testing.d.ts +173 -0
- package/types/ngwr-image-cropper.d.ts +71 -5
- package/types/ngwr-input-number-testing.d.ts +15 -10
- package/types/ngwr-input-number.d.ts +44 -5
- package/types/ngwr-input-otp-testing.d.ts +12 -6
- package/types/ngwr-input-otp.d.ts +15 -1
- package/types/ngwr-knob-testing.d.ts +150 -0
- package/types/ngwr-lightbox-testing.d.ts +154 -0
- package/types/ngwr-lightbox.d.ts +6 -0
- package/types/ngwr-line-chart-testing.d.ts +93 -0
- package/types/ngwr-line-chart.d.ts +20 -3
- package/types/ngwr-markdown.d.ts +11 -0
- package/types/ngwr-marquee-testing.d.ts +280 -0
- package/types/ngwr-mention.d.ts +32 -0
- package/types/ngwr-meter-group-testing.d.ts +77 -0
- package/types/ngwr-overlay.d.ts +20 -1
- package/types/ngwr-pagination-testing.d.ts +4 -4
- package/types/ngwr-pipes.d.ts +1 -1
- package/types/ngwr-popover-testing.d.ts +7 -2
- package/types/ngwr-popover.d.ts +1 -0
- package/types/ngwr-result.d.ts +6 -0
- package/types/ngwr-rotating-text-testing.d.ts +191 -0
- package/types/ngwr-segmented-testing.d.ts +9 -0
- package/types/ngwr-segmented.d.ts +21 -1
- package/types/ngwr-select.d.ts +100 -6
- package/types/ngwr-shiny-text-testing.d.ts +165 -0
- package/types/ngwr-shiny-text.d.ts +4 -2
- package/types/ngwr-sidebar.d.ts +14 -5
- package/types/ngwr-slider.d.ts +84 -1
- package/types/ngwr-sparkline-testing.d.ts +69 -0
- package/types/ngwr-speed-dial-testing.d.ts +199 -0
- package/types/ngwr-speed-dial.d.ts +22 -3
- package/types/ngwr-splash-cursor-testing.d.ts +95 -0
- package/types/ngwr-split-text-testing.d.ts +209 -0
- package/types/ngwr-split-text.d.ts +21 -0
- package/types/ngwr-splitter-testing.d.ts +174 -0
- package/types/ngwr-spotlight-card-testing.d.ts +303 -0
- package/types/ngwr-star-border-testing.d.ts +135 -0
- package/types/ngwr-stepper-testing.d.ts +5 -5
- package/types/ngwr-stepper.d.ts +8 -0
- package/types/ngwr-storage.d.ts +1 -0
- package/types/ngwr-table.d.ts +114 -12
- package/types/ngwr-tabs-testing.d.ts +11 -10
- package/types/ngwr-tabs.d.ts +2 -0
- package/types/ngwr-theme.d.ts +82 -1
- package/types/ngwr-tilt-card-testing.d.ts +158 -0
- package/types/ngwr-tilt-card.d.ts +2 -0
- package/types/ngwr-toast.d.ts +14 -5
- package/types/ngwr-tour-testing.d.ts +143 -0
- package/types/ngwr-tour.d.ts +22 -4
- package/types/ngwr-tree.d.ts +12 -4
- package/types/ngwr-typewriter-testing.d.ts +211 -0
- package/types/ngwr-utils.d.ts +5 -2
- package/types/ngwr-version.d.ts +1 -1
- package/types/ngwr-waves-testing.d.ts +121 -0
- package/types/ngwr-window-testing.d.ts +263 -0
- package/types/ngwr-window.d.ts +66 -21
- package/typography/styles/_index.scss +1 -1
- package/window/styles/_index.scss +116 -42
- package/fesm2022/ngwr-date-adapter-fns.mjs.map +0 -1
- package/fesm2022/ngwr-date-adapter-luxon.mjs.map +0 -1
- package/fesm2022/ngwr-date-adapter.mjs.map +0 -1
|
@@ -0,0 +1,263 @@
|
|
|
1
|
+
import { BaseHarnessFilters, ContentContainerComponentHarness, HarnessPredicate, ComponentHarness } from '@angular/cdk/testing';
|
|
2
|
+
import { WrWindowState } from 'ngwr/window';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* @license
|
|
6
|
+
*
|
|
7
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
8
|
+
* found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
/** Narrows which `<wr-window>` a harness query matches. */
|
|
12
|
+
interface WrWindowHarnessFilters extends BaseHarnessFilters {
|
|
13
|
+
/** Match the title-bar text — a string is an exact match, a RegExp is tested. */
|
|
14
|
+
readonly title?: string | RegExp;
|
|
15
|
+
/** Match windows in one visual state. */
|
|
16
|
+
readonly state?: WrWindowState;
|
|
17
|
+
}
|
|
18
|
+
/** Narrows which `<wr-window-taskbar>` a harness query matches. */
|
|
19
|
+
interface WrWindowTaskbarHarnessFilters extends BaseHarnessFilters {
|
|
20
|
+
/** Match the edge the taskbar is pinned to. */
|
|
21
|
+
readonly position?: 'top' | 'bottom';
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Where a window is and how big, in CSS pixels — the numbers the component writes
|
|
25
|
+
* inline, not a measured box.
|
|
26
|
+
*/
|
|
27
|
+
interface WrWindowBox {
|
|
28
|
+
readonly x: number;
|
|
29
|
+
readonly y: number;
|
|
30
|
+
readonly width: number;
|
|
31
|
+
readonly height: number;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* @license
|
|
36
|
+
*
|
|
37
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
38
|
+
* found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
|
|
39
|
+
*/
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Test harness for a window opened through `WrWindowManager.open()`.
|
|
43
|
+
*
|
|
44
|
+
* `WrWindow` is deliberately not exported — a window is always a service call — so
|
|
45
|
+
* there is nothing in your fixture to load: each window is a portal in its own
|
|
46
|
+
* overlay pane, and this comes from
|
|
47
|
+
* `TestbedHarnessEnvironment.documentRootLoader()`.
|
|
48
|
+
*
|
|
49
|
+
* It is a CONTENT CONTAINER, like `WrDialogHarness`: the component you opened is
|
|
50
|
+
* projected into the window's body, so `window.getHarness(WrButtonHarness…)` reads
|
|
51
|
+
* ITS buttons and cannot reach another window's. That matters more here than
|
|
52
|
+
* anywhere else, because windows are explicitly non-modal and several are normally
|
|
53
|
+
* open at once.
|
|
54
|
+
*
|
|
55
|
+
* **Geometry is read from the inline styles the component writes**, never measured:
|
|
56
|
+
* a window is positioned with `left` / `top` / `width` / `height` in pixels, and a
|
|
57
|
+
* unit test has no layout to measure. That also makes {@link getBox} the way to
|
|
58
|
+
* assert a move or a resize — including the ones a drag would produce, which no
|
|
59
|
+
* synthetic pointer event can, since the drag divides by a rect that is 0×0 here.
|
|
60
|
+
*
|
|
61
|
+
* @example
|
|
62
|
+
* ```ts
|
|
63
|
+
* const rootLoader = TestbedHarnessEnvironment.documentRootLoader(fixture);
|
|
64
|
+
* windows.open(EditorComponent, { title: 'Untitled.md' });
|
|
65
|
+
* await fixture.whenStable();
|
|
66
|
+
*
|
|
67
|
+
* const win = await rootLoader.getHarness(WrWindowHarness.with({ title: 'Untitled.md' }));
|
|
68
|
+
* await win.maximize();
|
|
69
|
+
* expect(await win.getState()).toBe('maximized');
|
|
70
|
+
* ```
|
|
71
|
+
*
|
|
72
|
+
* @see https://ngwr.dev/guides/testing
|
|
73
|
+
*/
|
|
74
|
+
declare class WrWindowHarness extends ContentContainerComponentHarness {
|
|
75
|
+
static hostSelector: string;
|
|
76
|
+
/** Build a predicate that narrows the query — windows come in stacks. */
|
|
77
|
+
static with(options?: WrWindowHarnessFilters): HarnessPredicate<WrWindowHarness>;
|
|
78
|
+
private readonly titleEl;
|
|
79
|
+
/**
|
|
80
|
+
* Whether this window is still on the page.
|
|
81
|
+
*
|
|
82
|
+
* For a harness you are already HOLDING: closing disposes the overlay, so this
|
|
83
|
+
* flips to `false` where a fresh `getHarnessOrNull()` comes back `null`. A
|
|
84
|
+
* MINIMIZED window is still open — it is a state, not a dismissal — and this
|
|
85
|
+
* stays `true` for one.
|
|
86
|
+
*/
|
|
87
|
+
isOpen(): Promise<boolean>;
|
|
88
|
+
/** The title-bar text. */
|
|
89
|
+
getTitle(): Promise<string>;
|
|
90
|
+
/** The projected `[wrWindowTitleExtra]` content, trimmed — empty when there is none. */
|
|
91
|
+
getTitleExtraText(): Promise<string>;
|
|
92
|
+
/** The window's visual state, from the host modifier. */
|
|
93
|
+
getState(): Promise<WrWindowState>;
|
|
94
|
+
/**
|
|
95
|
+
* The OS the chrome is dressed as — `macos`, `windows` or `linux`.
|
|
96
|
+
*
|
|
97
|
+
* Worth asserting because it is not cosmetic: on macOS the buttons are a
|
|
98
|
+
* traffic-light cluster in close → minimize → maximize order, and the Linux
|
|
99
|
+
* chrome renders neither minimize nor maximize UNLESS `showMinimize` /
|
|
100
|
+
* `showMaximize` asks for them. "No minimize on Linux" is a default, not an
|
|
101
|
+
* invariant — see {@link hasMinimizeButton}.
|
|
102
|
+
*/
|
|
103
|
+
getOs(): Promise<string>;
|
|
104
|
+
/** The title-bar density — `normal` or `compact`. */
|
|
105
|
+
getChromeSize(): Promise<string>;
|
|
106
|
+
/**
|
|
107
|
+
* Where the window is and how big, in CSS pixels.
|
|
108
|
+
*
|
|
109
|
+
* From the inline styles the component writes, which is the only readable answer
|
|
110
|
+
* without layout — and the same numbers a drag or a snap would change.
|
|
111
|
+
*/
|
|
112
|
+
getBox(): Promise<WrWindowBox>;
|
|
113
|
+
/**
|
|
114
|
+
* The window's stacking order.
|
|
115
|
+
*
|
|
116
|
+
* The manager hands out a z-index per focus, so this is how a spec asserts that
|
|
117
|
+
* clicking a window brought it to the front — the one thing a window manager
|
|
118
|
+
* exists to do, and the reason these panes are deliberately kept OUT of the
|
|
119
|
+
* browser's top layer, which orders strictly by entry.
|
|
120
|
+
*/
|
|
121
|
+
getZIndex(): Promise<number>;
|
|
122
|
+
/** Whether the resize handles are rendered — `resizable`, and only in the normal state. */
|
|
123
|
+
isResizable(): Promise<boolean>;
|
|
124
|
+
/** The resize handles currently rendered, by their edge / corner suffix. */
|
|
125
|
+
getResizeHandles(): Promise<string[]>;
|
|
126
|
+
/** The body text of the window — the component you opened, as rendered. */
|
|
127
|
+
getBodyText(): Promise<string>;
|
|
128
|
+
/** The projected `[wrWindowStatusBar]` content, trimmed. */
|
|
129
|
+
getStatusBarText(): Promise<string>;
|
|
130
|
+
/** Whether the chrome offers a close button (`showClose`). */
|
|
131
|
+
hasCloseButton(): Promise<boolean>;
|
|
132
|
+
/**
|
|
133
|
+
* Whether the chrome offers a minimize button.
|
|
134
|
+
*
|
|
135
|
+
* `false` on Linux BY DEFAULT — that chrome is close-only by convention, which
|
|
136
|
+
* is a real behavioural difference and not a style. `showMinimize: true`
|
|
137
|
+
* overrides it, and a spec that asserts "no minimize on Linux" without saying
|
|
138
|
+
* which of the two it means will pass for the wrong reason.
|
|
139
|
+
*/
|
|
140
|
+
hasMinimizeButton(): Promise<boolean>;
|
|
141
|
+
/** Whether the chrome offers a maximize button. Also `false` on Linux by default. */
|
|
142
|
+
hasMaximizeButton(): Promise<boolean>;
|
|
143
|
+
/** The close button's accessible name — the buttons are icon-only, so it is their only name. */
|
|
144
|
+
getCloseLabel(): Promise<string | null>;
|
|
145
|
+
/**
|
|
146
|
+
* The minimize button's accessible name, which flips to the restore wording while
|
|
147
|
+
* the window is minimized — the same button does both.
|
|
148
|
+
*/
|
|
149
|
+
getMinimizeLabel(): Promise<string | null>;
|
|
150
|
+
/** The maximize button's accessible name, which flips while the window is maximized. */
|
|
151
|
+
getMaximizeLabel(): Promise<string | null>;
|
|
152
|
+
/** Click the close button. Throws on a window opened `showClose: false`. */
|
|
153
|
+
close(): Promise<void>;
|
|
154
|
+
/**
|
|
155
|
+
* Click the minimize button — which RESTORES a minimized window, since it is the
|
|
156
|
+
* same control.
|
|
157
|
+
*/
|
|
158
|
+
minimize(): Promise<void>;
|
|
159
|
+
/** Click the maximize button — which restores a maximized window down. */
|
|
160
|
+
maximize(): Promise<void>;
|
|
161
|
+
/**
|
|
162
|
+
* Double-click the title bar, the other way to maximize.
|
|
163
|
+
*
|
|
164
|
+
* A separate gesture worth its own assertion, and it does NOT follow the
|
|
165
|
+
* button: only an explicit `showMaximize: false` turns it off. The Linux
|
|
166
|
+
* chrome hides the button by convention and keeps the gesture — which is also
|
|
167
|
+
* the only way out of a window that reached `maximized` without one.
|
|
168
|
+
*/
|
|
169
|
+
doubleClickChrome(): Promise<void>;
|
|
170
|
+
/** Click the window body — which pulls it to the front of the stack. */
|
|
171
|
+
focusWindow(): Promise<void>;
|
|
172
|
+
/** Press Escape. A window opened `closeOnEscape: false` ignores it — assert, do not assume. */
|
|
173
|
+
sendEscape(): Promise<void>;
|
|
174
|
+
/** The role the window announces — `dialog`, on a non-modal window. */
|
|
175
|
+
getRole(): Promise<string | null>;
|
|
176
|
+
/**
|
|
177
|
+
* Whether the window takes its accessible name from its own title element.
|
|
178
|
+
*
|
|
179
|
+
* Resolved rather than trusted: `aria-labelledby` naming an element that is not
|
|
180
|
+
* this window's title is not a name, and with several windows open the ids are
|
|
181
|
+
* the only thing keeping them apart.
|
|
182
|
+
*/
|
|
183
|
+
isLabelledByTitle(): Promise<boolean>;
|
|
184
|
+
/** Whether the window is hidden from assistive tech (`aria-hidden`, set while closed). */
|
|
185
|
+
isHiddenFromAssistiveTech(): Promise<boolean>;
|
|
186
|
+
private chromeAction;
|
|
187
|
+
private requireAction;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
/**
|
|
191
|
+
* @license
|
|
192
|
+
*
|
|
193
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
194
|
+
* found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
|
|
195
|
+
*/
|
|
196
|
+
|
|
197
|
+
/**
|
|
198
|
+
* Test harness for `<wr-window-taskbar>` — the rail of minimized windows.
|
|
199
|
+
*
|
|
200
|
+
* The taskbar IS an element in your template, so it comes from the normal fixture
|
|
201
|
+
* loader, unlike the windows it lists. It renders nothing but its own host until a
|
|
202
|
+
* window is minimized; {@link isEmpty} is the question, and {@link getTabTitles}
|
|
203
|
+
* answers `[]` rather than throwing, because "no minimized windows" is the ordinary
|
|
204
|
+
* state rather than a mistake.
|
|
205
|
+
*
|
|
206
|
+
* @example
|
|
207
|
+
* ```ts
|
|
208
|
+
* const taskbar = await loader.getHarness(WrWindowTaskbarHarness);
|
|
209
|
+
*
|
|
210
|
+
* await (await rootLoader.getHarness(WrWindowHarness)).minimize();
|
|
211
|
+
* expect(await taskbar.getTabTitles()).toEqual(['Untitled.md']);
|
|
212
|
+
* await taskbar.restore('Untitled.md');
|
|
213
|
+
* ```
|
|
214
|
+
*
|
|
215
|
+
* @see https://ngwr.dev/guides/testing
|
|
216
|
+
*/
|
|
217
|
+
declare class WrWindowTaskbarHarness extends ComponentHarness {
|
|
218
|
+
static hostSelector: string;
|
|
219
|
+
/** Build a predicate that narrows the query. */
|
|
220
|
+
static with(options?: WrWindowTaskbarHarnessFilters): HarnessPredicate<WrWindowTaskbarHarness>;
|
|
221
|
+
/** The edge the rail is pinned to. */
|
|
222
|
+
getPosition(): Promise<'top' | 'bottom'>;
|
|
223
|
+
/**
|
|
224
|
+
* The rail's accessible name — it is a `role="toolbar"`, and an unnamed one is
|
|
225
|
+
* announced as nothing.
|
|
226
|
+
*/
|
|
227
|
+
getRailLabel(): Promise<string | null>;
|
|
228
|
+
/** Whether nothing is minimized — the rail draws no markup at all then. */
|
|
229
|
+
isEmpty(): Promise<boolean>;
|
|
230
|
+
/**
|
|
231
|
+
* The titles in the rail, in order.
|
|
232
|
+
*
|
|
233
|
+
* A window opened without a title still gets a tab, named by the catalog's
|
|
234
|
+
* fallback rather than left blank — a nameless tab is unreachable by voice and
|
|
235
|
+
* indistinguishable from its neighbours.
|
|
236
|
+
*/
|
|
237
|
+
getTabTitles(): Promise<string[]>;
|
|
238
|
+
/** A tab's accessible name — the restore wording with the window's title in it. */
|
|
239
|
+
getRestoreLabel(title: string): Promise<string | null>;
|
|
240
|
+
/** Click a tab — restoring that window and focusing it. */
|
|
241
|
+
restore(title: string): Promise<void>;
|
|
242
|
+
/**
|
|
243
|
+
* Click a tab's ✕ — closing the window WITHOUT restoring it.
|
|
244
|
+
*
|
|
245
|
+
* Still worth asserting separately now that the two are siblings rather than
|
|
246
|
+
* nested: they sit inside one pill and look like one control, so a close that
|
|
247
|
+
* also restored would flash a closing window's content and look plausible.
|
|
248
|
+
*/
|
|
249
|
+
closeTab(title: string): Promise<void>;
|
|
250
|
+
/**
|
|
251
|
+
* The tab's BUTTON, not the pill around it.
|
|
252
|
+
*
|
|
253
|
+
* `.wr-window-taskbar__tab` is a plain container — it carries the pill's look
|
|
254
|
+
* and nothing else, because the close beside it cannot be a control nested in
|
|
255
|
+
* a control. The name and the click both belong to `__tab-restore`.
|
|
256
|
+
*/
|
|
257
|
+
private requireTab;
|
|
258
|
+
/** Which tab carries this title — one lookup for both the tab and its close button. */
|
|
259
|
+
private indexOf;
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
export { WrWindowHarness, WrWindowTaskbarHarness };
|
|
263
|
+
export type { WrWindowBox, WrWindowHarnessFilters, WrWindowTaskbarHarnessFilters };
|
package/types/ngwr-window.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as _angular_core from '@angular/core';
|
|
2
2
|
import { ComponentRef, WritableSignal, Signal, InjectionToken } from '@angular/core';
|
|
3
3
|
import { OverlayRef } from '@angular/cdk/overlay';
|
|
4
4
|
import { ReplaySubject, Subject } from 'rxjs';
|
|
5
5
|
import { ComponentType } from '@angular/cdk/portal';
|
|
6
|
+
import * as ngwr_i18n from 'ngwr/i18n';
|
|
6
7
|
|
|
7
8
|
/**
|
|
8
9
|
* @license
|
|
@@ -35,8 +36,10 @@ type WrWindowChromeSize = 'compact' | 'normal';
|
|
|
35
36
|
* - `macos` — traffic-light dots on the LEFT (red close, yellow minimize,
|
|
36
37
|
* green maximize). Glyphs (×, −, +) appear when the cluster is hovered.
|
|
37
38
|
* - `windows` — monochrome glyph buttons on the RIGHT.
|
|
38
|
-
* - `linux` — close-only on the right
|
|
39
|
-
*
|
|
39
|
+
* - `linux` — close-only on the right, the GNOME convention. That is a DEFAULT
|
|
40
|
+
* and not a rule: `showMinimize` / `showMaximize` set to `true` put the
|
|
41
|
+
* buttons back, which is what a Linux user needs before a window can be
|
|
42
|
+
* minimized into `<wr-window-taskbar>`.
|
|
40
43
|
*/
|
|
41
44
|
type WrWindowOs = 'auto' | 'macos' | 'windows' | 'linux';
|
|
42
45
|
|
|
@@ -129,8 +132,16 @@ interface WrWindowConfig<D = unknown> {
|
|
|
129
132
|
readonly closeOnEscape?: boolean;
|
|
130
133
|
/** Snap-on-drag mode. @default 'none' */
|
|
131
134
|
readonly snap?: WrWindowSnap;
|
|
135
|
+
/**
|
|
136
|
+
* Show the minimize control. Omit to follow the chrome — every OS but Linux
|
|
137
|
+
* shows it, and the Linux preset is close-only by convention. Pass `true` to
|
|
138
|
+
* override that, which is what a Linux user needs before a window can reach
|
|
139
|
+
* `<wr-window-taskbar>`.
|
|
140
|
+
*/
|
|
132
141
|
readonly showMinimize?: boolean;
|
|
142
|
+
/** Show the maximize control. Omit to follow the chrome, as with {@link showMinimize}. */
|
|
133
143
|
readonly showMaximize?: boolean;
|
|
144
|
+
/** Show the close control. Every chrome closes, so this is not per-OS. */
|
|
134
145
|
readonly showClose?: boolean;
|
|
135
146
|
/** Show in `<wr-window-taskbar>` when minimized. @default true */
|
|
136
147
|
readonly taskbar?: boolean;
|
|
@@ -155,6 +166,31 @@ interface WrWindowConfig<D = unknown> {
|
|
|
155
166
|
*/
|
|
156
167
|
type WrWindowState = 'normal' | 'minimized' | 'maximized';
|
|
157
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
|
+
|
|
158
194
|
/** Hook signature for `WrWindowRef.beforeClose()`. Return falsy to veto. */
|
|
159
195
|
type WrWindowBeforeCloseHook<R> = (result: R | undefined) => boolean | Promise<boolean>;
|
|
160
196
|
|
|
@@ -261,6 +297,7 @@ declare class WrWindowRef<C, R = unknown> {
|
|
|
261
297
|
constructor(id: string, _overlayRef: OverlayRef);
|
|
262
298
|
/** Resolved instance of the projected component. */
|
|
263
299
|
get componentInstance(): C;
|
|
300
|
+
private isClosed;
|
|
264
301
|
/**
|
|
265
302
|
* Close the window, optionally returning a result. If a `beforeClose`
|
|
266
303
|
* hook is registered it is consulted first — a falsy resolution
|
|
@@ -304,15 +341,6 @@ declare const WR_WINDOW_REF: InjectionToken<WrWindowRef<unknown, unknown>>;
|
|
|
304
341
|
/** Resolves to the `data` passed in `WrWindowConfig.data`. */
|
|
305
342
|
declare const WR_WINDOW_DATA: InjectionToken<unknown>;
|
|
306
343
|
|
|
307
|
-
interface RestoreSnapshot {
|
|
308
|
-
readonly id: string;
|
|
309
|
-
readonly state: WrWindowState;
|
|
310
|
-
readonly x: number;
|
|
311
|
-
readonly y: number;
|
|
312
|
-
readonly width: number;
|
|
313
|
-
readonly height: number;
|
|
314
|
-
readonly title: string;
|
|
315
|
-
}
|
|
316
344
|
/**
|
|
317
345
|
* Owns the open `<wr-window>` stack, hands out z-indexes, cascades the
|
|
318
346
|
* default spawn position, and opens programmatic windows that wrap a
|
|
@@ -377,6 +405,17 @@ declare class WrWindowManager {
|
|
|
377
405
|
* "Settings" menu item that should always re-focus the same window).
|
|
378
406
|
*/
|
|
379
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;
|
|
380
419
|
/** Close every programmatically-opened window. */
|
|
381
420
|
closeAll(): void;
|
|
382
421
|
/** Look up an open window by its `config.id`. Returns `null` when no match. */
|
|
@@ -395,7 +434,7 @@ declare class WrWindowManager {
|
|
|
395
434
|
*/
|
|
396
435
|
saveLayout(name: string): void;
|
|
397
436
|
/** Read a saved workspace. Returns `null` when no snapshot is found. */
|
|
398
|
-
readLayout(name: string): readonly
|
|
437
|
+
readLayout(name: string): readonly WrWindowLayoutSnapshot[] | null;
|
|
399
438
|
/**
|
|
400
439
|
* Apply a saved workspace.
|
|
401
440
|
*
|
|
@@ -420,8 +459,8 @@ declare class WrWindowManager {
|
|
|
420
459
|
private applyRestore;
|
|
421
460
|
/** Drop a saved workspace. */
|
|
422
461
|
clearLayout(name: string): void;
|
|
423
|
-
static ɵfac:
|
|
424
|
-
static ɵprov:
|
|
462
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<WrWindowManager, never>;
|
|
463
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<WrWindowManager>;
|
|
425
464
|
}
|
|
426
465
|
|
|
427
466
|
/**
|
|
@@ -442,17 +481,23 @@ declare class WrWindowManager {
|
|
|
442
481
|
* @see https://ngwr.dev/reference/components/window
|
|
443
482
|
*/
|
|
444
483
|
declare class WrWindowTaskbar {
|
|
484
|
+
/** @internal */ protected readonly railLabel: _angular_core.Signal<string>;
|
|
485
|
+
/** @internal */ protected readonly closeLabel: _angular_core.Signal<string>;
|
|
486
|
+
/** @internal */ protected readonly untitled: _angular_core.Signal<string>;
|
|
487
|
+
/** @internal */ protected readonly restoreLabel: (params?: ngwr_i18n.WrI18nParams) => string;
|
|
445
488
|
/** Edge the taskbar pins itself to. @default 'bottom' */
|
|
446
|
-
readonly position:
|
|
489
|
+
readonly position: _angular_core.InputSignal<"top" | "bottom">;
|
|
447
490
|
private readonly manager;
|
|
448
491
|
/** @internal — minimized windows that haven't opted out via `taskbar: false`. */
|
|
449
|
-
protected readonly items:
|
|
450
|
-
protected readonly classes:
|
|
492
|
+
protected readonly items: _angular_core.Signal<WrWindowRef<unknown, unknown>[]>;
|
|
493
|
+
protected readonly classes: _angular_core.Signal<string>;
|
|
494
|
+
/** A window with no title still needs a name in the rail. */
|
|
495
|
+
protected tabTitle(ref: WrWindowRef<unknown, unknown>): string;
|
|
451
496
|
protected restore(ref: WrWindowRef<unknown, unknown>): void;
|
|
452
497
|
protected close(ref: WrWindowRef<unknown, unknown>, event: Event): void;
|
|
453
|
-
static ɵfac:
|
|
454
|
-
static ɵcmp:
|
|
498
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<WrWindowTaskbar, never>;
|
|
499
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<WrWindowTaskbar, "wr-window-taskbar", never, { "position": { "alias": "position"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
455
500
|
}
|
|
456
501
|
|
|
457
502
|
export { WR_WINDOW_DATA, WR_WINDOW_REF, WrWindowManager, WrWindowRef, WrWindowTaskbar };
|
|
458
|
-
export type { WrWindowBeforeCloseHook, WrWindowChromeSize, WrWindowConfig, WrWindowOs, WrWindowPersistMode, WrWindowSize, WrWindowSnap, WrWindowState, WrWindowStorageConfig };
|
|
503
|
+
export type { WrWindowBeforeCloseHook, WrWindowChromeSize, WrWindowConfig, WrWindowLayoutSnapshot, WrWindowOs, WrWindowPersistMode, WrWindowSize, WrWindowSnap, WrWindowState, WrWindowStorageConfig };
|