ngwr 10.2.1 → 11.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 +39 -19
- package/anchor/styles/_index.scss +4 -4
- package/back-top/styles/_index.scss +6 -1
- package/blur-text/styles/_index.scss +13 -0
- package/button/styles/_index.scss +11 -6
- package/carousel/styles/_index.scss +13 -2
- package/cascader/styles/_index.scss +2 -2
- package/circular-text/styles/_index.scss +2 -0
- package/collapse/styles/_index.scss +1 -1
- package/color-picker/styles/_index.scss +6 -1
- package/compare/styles/_index.scss +1 -2
- package/context-menu/styles/_index.scss +6 -1
- package/descriptions/styles/_index.scss +2 -2
- package/dialog/styles/_index.scss +7 -0
- package/drawer/styles/_index.scss +20 -1
- package/dropdown/styles/_index.scss +19 -5
- package/empty/styles/_index.scss +10 -0
- package/fesm2022/ngwr-action-sheet.mjs +13 -3
- package/fesm2022/ngwr-action-sheet.mjs.map +1 -1
- package/fesm2022/ngwr-affix.mjs +40 -13
- package/fesm2022/ngwr-affix.mjs.map +1 -1
- package/fesm2022/ngwr-anchor.mjs +18 -6
- package/fesm2022/ngwr-anchor.mjs.map +1 -1
- package/fesm2022/ngwr-aurora.mjs +2 -2
- package/fesm2022/ngwr-aurora.mjs.map +1 -1
- package/fesm2022/ngwr-avatar.mjs +31 -7
- package/fesm2022/ngwr-avatar.mjs.map +1 -1
- package/fesm2022/ngwr-back-top.mjs +6 -2
- package/fesm2022/ngwr-back-top.mjs.map +1 -1
- package/fesm2022/ngwr-badge.mjs +1 -1
- package/fesm2022/ngwr-badge.mjs.map +1 -1
- package/fesm2022/ngwr-bar-chart.mjs +30 -9
- package/fesm2022/ngwr-bar-chart.mjs.map +1 -1
- package/fesm2022/ngwr-blur-text.mjs +2 -2
- package/fesm2022/ngwr-blur-text.mjs.map +1 -1
- package/fesm2022/ngwr-border-glow.mjs +2 -2
- package/fesm2022/ngwr-border-glow.mjs.map +1 -1
- package/fesm2022/ngwr-breadcrumbs.mjs +2 -2
- package/fesm2022/ngwr-breadcrumbs.mjs.map +1 -1
- package/fesm2022/ngwr-burger.mjs +9 -4
- package/fesm2022/ngwr-burger.mjs.map +1 -1
- package/fesm2022/ngwr-button-testing.mjs +96 -0
- package/fesm2022/ngwr-button-testing.mjs.map +1 -0
- package/fesm2022/ngwr-button.mjs +31 -14
- package/fesm2022/ngwr-button.mjs.map +1 -1
- package/fesm2022/ngwr-calendar-heatmap.mjs +40 -8
- package/fesm2022/ngwr-calendar-heatmap.mjs.map +1 -1
- package/fesm2022/ngwr-calendar.mjs +20 -1
- package/fesm2022/ngwr-calendar.mjs.map +1 -1
- package/fesm2022/ngwr-card.mjs +2 -2
- package/fesm2022/ngwr-card.mjs.map +1 -1
- package/fesm2022/ngwr-carousel-testing.mjs +377 -0
- package/fesm2022/ngwr-carousel-testing.mjs.map +1 -0
- package/fesm2022/ngwr-carousel.mjs +67 -13
- package/fesm2022/ngwr-carousel.mjs.map +1 -1
- package/fesm2022/ngwr-cascader-testing.mjs +534 -0
- package/fesm2022/ngwr-cascader-testing.mjs.map +1 -0
- package/fesm2022/ngwr-cascader.mjs +2 -2
- package/fesm2022/ngwr-cascader.mjs.map +1 -1
- package/fesm2022/ngwr-checkbox-testing.mjs +90 -0
- package/fesm2022/ngwr-checkbox-testing.mjs.map +1 -0
- package/fesm2022/ngwr-checkbox.mjs +9 -3
- package/fesm2022/ngwr-checkbox.mjs.map +1 -1
- package/fesm2022/ngwr-circular-text.mjs +2 -2
- package/fesm2022/ngwr-circular-text.mjs.map +1 -1
- package/fesm2022/ngwr-click-spark.mjs +2 -2
- package/fesm2022/ngwr-click-spark.mjs.map +1 -1
- package/fesm2022/ngwr-collapse-testing.mjs +368 -0
- package/fesm2022/ngwr-collapse-testing.mjs.map +1 -0
- package/fesm2022/ngwr-color-picker.mjs +134 -14
- package/fesm2022/ngwr-color-picker.mjs.map +1 -1
- package/fesm2022/ngwr-command-palette-testing.mjs +589 -0
- package/fesm2022/ngwr-command-palette-testing.mjs.map +1 -0
- package/fesm2022/ngwr-command-palette.mjs +58 -8
- package/fesm2022/ngwr-command-palette.mjs.map +1 -1
- package/fesm2022/ngwr-compare.mjs +103 -13
- package/fesm2022/ngwr-compare.mjs.map +1 -1
- package/fesm2022/ngwr-config.mjs +106 -0
- package/fesm2022/ngwr-config.mjs.map +1 -0
- package/fesm2022/ngwr-context-menu-testing.mjs +631 -0
- package/fesm2022/ngwr-context-menu-testing.mjs.map +1 -0
- package/fesm2022/ngwr-context-menu.mjs +94 -8
- package/fesm2022/ngwr-context-menu.mjs.map +1 -1
- package/fesm2022/ngwr-cookie.mjs +5 -1
- package/fesm2022/ngwr-cookie.mjs.map +1 -1
- package/fesm2022/ngwr-counter.mjs +11 -3
- package/fesm2022/ngwr-counter.mjs.map +1 -1
- package/fesm2022/ngwr-date-adapter-luxon.mjs +52 -4
- package/fesm2022/ngwr-date-adapter-luxon.mjs.map +1 -1
- package/fesm2022/ngwr-date-adapter.mjs +54 -8
- package/fesm2022/ngwr-date-adapter.mjs.map +1 -1
- package/fesm2022/ngwr-date-picker-testing.mjs +766 -0
- package/fesm2022/ngwr-date-picker-testing.mjs.map +1 -0
- package/fesm2022/ngwr-date-picker.mjs +73 -3
- package/fesm2022/ngwr-date-picker.mjs.map +1 -1
- package/fesm2022/ngwr-decrypt-text.mjs +27 -9
- package/fesm2022/ngwr-decrypt-text.mjs.map +1 -1
- package/fesm2022/ngwr-dialog-testing.mjs +89 -0
- package/fesm2022/ngwr-dialog-testing.mjs.map +1 -0
- package/fesm2022/ngwr-directives.mjs +36 -12
- package/fesm2022/ngwr-directives.mjs.map +1 -1
- package/fesm2022/ngwr-donut-chart.mjs +22 -5
- package/fesm2022/ngwr-donut-chart.mjs.map +1 -1
- package/fesm2022/ngwr-drag-drop.mjs +2 -2
- package/fesm2022/ngwr-drag-drop.mjs.map +1 -1
- package/fesm2022/ngwr-drawer-testing.mjs +250 -0
- package/fesm2022/ngwr-drawer-testing.mjs.map +1 -0
- package/fesm2022/ngwr-dropdown-testing.mjs +291 -0
- package/fesm2022/ngwr-dropdown-testing.mjs.map +1 -0
- package/fesm2022/ngwr-dropdown.mjs +10 -2
- package/fesm2022/ngwr-dropdown.mjs.map +1 -1
- package/fesm2022/ngwr-empty.mjs +24 -7
- package/fesm2022/ngwr-empty.mjs.map +1 -1
- package/fesm2022/ngwr-event-calendar.mjs +57 -10
- package/fesm2022/ngwr-event-calendar.mjs.map +1 -1
- package/fesm2022/ngwr-falling-text.mjs +2 -2
- package/fesm2022/ngwr-falling-text.mjs.map +1 -1
- package/fesm2022/ngwr-file-upload-testing.mjs +332 -0
- package/fesm2022/ngwr-file-upload-testing.mjs.map +1 -0
- package/fesm2022/ngwr-form-testing.mjs +451 -0
- package/fesm2022/ngwr-form-testing.mjs.map +1 -0
- package/fesm2022/ngwr-form.mjs +19 -3
- package/fesm2022/ngwr-form.mjs.map +1 -1
- package/fesm2022/ngwr-fuzzy-text.mjs +9 -2
- package/fesm2022/ngwr-fuzzy-text.mjs.map +1 -1
- package/fesm2022/ngwr-gauge.mjs +19 -5
- package/fesm2022/ngwr-gauge.mjs.map +1 -1
- package/fesm2022/ngwr-glitch-text.mjs +2 -2
- package/fesm2022/ngwr-glitch-text.mjs.map +1 -1
- package/fesm2022/ngwr-gradient-text.mjs +2 -2
- package/fesm2022/ngwr-gradient-text.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-en.mjs +50 -0
- package/fesm2022/ngwr-i18n-en.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-ru.mjs +48 -0
- package/fesm2022/ngwr-i18n-ru.mjs.map +1 -1
- package/fesm2022/ngwr-image-cropper.mjs +23 -0
- package/fesm2022/ngwr-image-cropper.mjs.map +1 -1
- package/fesm2022/ngwr-input-number-testing.mjs +306 -0
- package/fesm2022/ngwr-input-number-testing.mjs.map +1 -0
- package/fesm2022/ngwr-input-number.mjs +35 -3
- package/fesm2022/ngwr-input-number.mjs.map +1 -1
- package/fesm2022/ngwr-input-otp-testing.mjs +419 -0
- package/fesm2022/ngwr-input-otp-testing.mjs.map +1 -0
- package/fesm2022/ngwr-input-otp.mjs +36 -5
- package/fesm2022/ngwr-input-otp.mjs.map +1 -1
- package/fesm2022/ngwr-input-testing.mjs +102 -0
- package/fesm2022/ngwr-input-testing.mjs.map +1 -0
- package/fesm2022/ngwr-input.mjs +47 -10
- package/fesm2022/ngwr-input.mjs.map +1 -1
- package/fesm2022/ngwr-knob.mjs +44 -8
- package/fesm2022/ngwr-knob.mjs.map +1 -1
- package/fesm2022/ngwr-layout.mjs +21 -5
- package/fesm2022/ngwr-layout.mjs.map +1 -1
- package/fesm2022/ngwr-lightbox.mjs +33 -6
- package/fesm2022/ngwr-lightbox.mjs.map +1 -1
- package/fesm2022/ngwr-line-chart.mjs +17 -4
- package/fesm2022/ngwr-line-chart.mjs.map +1 -1
- package/fesm2022/ngwr-list.mjs +2 -2
- package/fesm2022/ngwr-list.mjs.map +1 -1
- package/fesm2022/ngwr-loading-bar.mjs +2 -2
- package/fesm2022/ngwr-loading-bar.mjs.map +1 -1
- package/fesm2022/ngwr-markdown-testing.mjs +516 -0
- package/fesm2022/ngwr-markdown-testing.mjs.map +1 -0
- package/fesm2022/ngwr-markdown.mjs +1492 -0
- package/fesm2022/ngwr-markdown.mjs.map +1 -0
- package/fesm2022/ngwr-marquee.mjs +17 -6
- package/fesm2022/ngwr-marquee.mjs.map +1 -1
- package/fesm2022/ngwr-mention-testing.mjs +513 -0
- package/fesm2022/ngwr-mention-testing.mjs.map +1 -0
- package/fesm2022/ngwr-mention.mjs +10 -1
- package/fesm2022/ngwr-mention.mjs.map +1 -1
- package/fesm2022/ngwr-meta.mjs +22 -7
- package/fesm2022/ngwr-meta.mjs.map +1 -1
- package/fesm2022/ngwr-meter-group.mjs +19 -5
- package/fesm2022/ngwr-meter-group.mjs.map +1 -1
- package/fesm2022/ngwr-overlay.mjs +41 -1
- package/fesm2022/ngwr-overlay.mjs.map +1 -1
- package/fesm2022/ngwr-pagination-testing.mjs +389 -0
- package/fesm2022/ngwr-pagination-testing.mjs.map +1 -0
- package/fesm2022/ngwr-pagination.mjs +14 -2
- package/fesm2022/ngwr-pagination.mjs.map +1 -1
- package/fesm2022/ngwr-popconfirm-testing.mjs +309 -0
- package/fesm2022/ngwr-popconfirm-testing.mjs.map +1 -0
- package/fesm2022/ngwr-popconfirm.mjs +95 -17
- package/fesm2022/ngwr-popconfirm.mjs.map +1 -1
- package/fesm2022/ngwr-popover-testing.mjs +316 -0
- package/fesm2022/ngwr-popover-testing.mjs.map +1 -0
- package/fesm2022/ngwr-popover.mjs +21 -3
- package/fesm2022/ngwr-popover.mjs.map +1 -1
- package/fesm2022/ngwr-pull-to-refresh.mjs +17 -2
- package/fesm2022/ngwr-pull-to-refresh.mjs.map +1 -1
- package/fesm2022/ngwr-qr.mjs +13 -3
- package/fesm2022/ngwr-qr.mjs.map +1 -1
- package/fesm2022/ngwr-radio-testing.mjs +392 -0
- package/fesm2022/ngwr-radio-testing.mjs.map +1 -0
- package/fesm2022/ngwr-radio.mjs +10 -3
- package/fesm2022/ngwr-radio.mjs.map +1 -1
- package/fesm2022/ngwr-rating-testing.mjs +384 -0
- package/fesm2022/ngwr-rating-testing.mjs.map +1 -0
- package/fesm2022/ngwr-rating.mjs +37 -2
- package/fesm2022/ngwr-rating.mjs.map +1 -1
- package/fesm2022/ngwr-segmented-testing.mjs +512 -0
- package/fesm2022/ngwr-segmented-testing.mjs.map +1 -0
- package/fesm2022/ngwr-select-testing.mjs +268 -0
- package/fesm2022/ngwr-select-testing.mjs.map +1 -0
- package/fesm2022/ngwr-select.mjs +87 -16
- package/fesm2022/ngwr-select.mjs.map +1 -1
- package/fesm2022/ngwr-shiny-text.mjs +2 -2
- package/fesm2022/ngwr-shiny-text.mjs.map +1 -1
- package/fesm2022/ngwr-sidebar.mjs +65 -12
- package/fesm2022/ngwr-sidebar.mjs.map +1 -1
- package/fesm2022/ngwr-slider-testing.mjs +478 -0
- package/fesm2022/ngwr-slider-testing.mjs.map +1 -0
- package/fesm2022/ngwr-slider.mjs +57 -13
- package/fesm2022/ngwr-slider.mjs.map +1 -1
- package/fesm2022/ngwr-sparkline.mjs +26 -6
- package/fesm2022/ngwr-sparkline.mjs.map +1 -1
- package/fesm2022/ngwr-speed-dial.mjs +37 -4
- package/fesm2022/ngwr-speed-dial.mjs.map +1 -1
- package/fesm2022/ngwr-spinner.mjs +12 -3
- package/fesm2022/ngwr-spinner.mjs.map +1 -1
- package/fesm2022/ngwr-splash-cursor.mjs +2 -2
- package/fesm2022/ngwr-splash-cursor.mjs.map +1 -1
- package/fesm2022/ngwr-split-text.mjs +2 -2
- package/fesm2022/ngwr-split-text.mjs.map +1 -1
- package/fesm2022/ngwr-splitter.mjs +70 -9
- package/fesm2022/ngwr-splitter.mjs.map +1 -1
- package/fesm2022/ngwr-spotlight-card.mjs +2 -2
- package/fesm2022/ngwr-spotlight-card.mjs.map +1 -1
- package/fesm2022/ngwr-star-border.mjs +2 -2
- package/fesm2022/ngwr-star-border.mjs.map +1 -1
- package/fesm2022/ngwr-statistic.mjs +24 -7
- package/fesm2022/ngwr-statistic.mjs.map +1 -1
- package/fesm2022/ngwr-stepper-testing.mjs +477 -0
- package/fesm2022/ngwr-stepper-testing.mjs.map +1 -0
- package/fesm2022/ngwr-switch-testing.mjs +77 -0
- package/fesm2022/ngwr-switch-testing.mjs.map +1 -0
- package/fesm2022/ngwr-switch.mjs +9 -3
- package/fesm2022/ngwr-switch.mjs.map +1 -1
- package/fesm2022/ngwr-table-testing.mjs +580 -0
- package/fesm2022/ngwr-table-testing.mjs.map +1 -0
- package/fesm2022/ngwr-table.mjs +87 -14
- package/fesm2022/ngwr-table.mjs.map +1 -1
- package/fesm2022/ngwr-tabs-testing.mjs +617 -0
- package/fesm2022/ngwr-tabs-testing.mjs.map +1 -0
- package/fesm2022/ngwr-tabs.mjs +38 -6
- package/fesm2022/ngwr-tabs.mjs.map +1 -1
- package/fesm2022/ngwr-textarea-testing.mjs +238 -0
- package/fesm2022/ngwr-textarea-testing.mjs.map +1 -0
- package/fesm2022/ngwr-textarea.mjs +32 -4
- package/fesm2022/ngwr-textarea.mjs.map +1 -1
- package/fesm2022/ngwr-tilt-card.mjs +2 -2
- package/fesm2022/ngwr-tilt-card.mjs.map +1 -1
- package/fesm2022/ngwr-toast-testing.mjs +101 -0
- package/fesm2022/ngwr-toast-testing.mjs.map +1 -0
- package/fesm2022/ngwr-toast.mjs +2 -2
- package/fesm2022/ngwr-toast.mjs.map +1 -1
- package/fesm2022/ngwr-tour.mjs +61 -9
- package/fesm2022/ngwr-tour.mjs.map +1 -1
- package/fesm2022/ngwr-transfer-testing.mjs +538 -0
- package/fesm2022/ngwr-transfer-testing.mjs.map +1 -0
- package/fesm2022/ngwr-transfer.mjs +45 -14
- package/fesm2022/ngwr-transfer.mjs.map +1 -1
- package/fesm2022/ngwr-tree-testing.mjs +734 -0
- package/fesm2022/ngwr-tree-testing.mjs.map +1 -0
- package/fesm2022/ngwr-tree.mjs +73 -7
- package/fesm2022/ngwr-tree.mjs.map +1 -1
- package/fesm2022/ngwr-typewriter.mjs +5 -3
- package/fesm2022/ngwr-typewriter.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 +31 -5
- package/fesm2022/ngwr-virtual-scroll.mjs.map +1 -1
- package/fesm2022/ngwr-waves.mjs +3 -3
- package/fesm2022/ngwr-waves.mjs.map +1 -1
- package/fesm2022/ngwr-window.mjs +8 -0
- package/fesm2022/ngwr-window.mjs.map +1 -1
- package/gauge/styles/_index.scss +1 -1
- package/glitch-text/styles/_index.scss +4 -0
- package/i18n/en.json +48 -0
- package/i18n/ru.json +48 -0
- package/image-cropper/styles/_index.scss +13 -1
- package/input/styles/_index.scss +2 -2
- package/input-number/styles/_index.scss +7 -2
- package/knob/styles/_index.scss +8 -1
- package/layout/styles/_index.scss +3 -3
- package/lightbox/styles/_index.scss +10 -2
- package/line-chart/styles/_index.scss +6 -0
- package/llms-full.txt +151 -4
- package/llms.txt +57 -8
- package/loading-bar/styles/_index.scss +1 -2
- package/markdown/styles/_index.scss +296 -0
- package/marquee/styles/_index.scss +12 -0
- package/mcp/api.js +512 -0
- package/mcp/catalog.js +157 -0
- package/mcp/server.js +273 -0
- package/mcp/tools.js +366 -0
- package/meter-group/styles/_index.scss +1 -1
- package/package.json +186 -35
- package/pagination/styles/_index.scss +6 -6
- package/popover/styles/_index.scss +37 -5
- package/rating/styles/_index.scss +10 -0
- package/schematics/use/symbol-map.json +2 -0
- package/segmented/styles/_index.scss +7 -0
- package/select/styles/_index.scss +29 -9
- package/sidebar/styles/_index.scss +30 -5
- package/slider/styles/_index.scss +15 -0
- package/speed-dial/styles/_index.scss +20 -0
- package/split-text/styles/_index.scss +13 -0
- package/star-border/styles/_index.scss +2 -0
- package/stepper/styles/_index.scss +1 -1
- package/styles/_grid.scss +4 -4
- package/styles.scss +1 -0
- package/switch/styles/_index.scss +5 -3
- package/table/styles/_index.scss +22 -11
- package/tabs/styles/_index.scss +11 -1
- package/textarea/styles/_index.scss +5 -0
- package/theme/styles/_colors.scss +29 -13
- package/theme/styles/_dark.scss +11 -3
- package/theme/styles/_mixins.scss +3 -0
- package/timeline/styles/_index.scss +2 -2
- package/toast/styles/_index.scss +17 -8
- package/toolbar/styles/_index.scss +3 -3
- package/tour/styles/_index.scss +7 -1
- package/tree/styles/_index.scss +5 -3
- package/types/ngwr-action-sheet.d.ts +9 -1
- package/types/ngwr-affix.d.ts +7 -1
- package/types/ngwr-anchor.d.ts +8 -1
- package/types/ngwr-avatar.d.ts +13 -3
- package/types/ngwr-bar-chart.d.ts +16 -0
- package/types/ngwr-burger.d.ts +6 -2
- package/types/ngwr-button-testing.d.ts +85 -0
- package/types/ngwr-button.d.ts +26 -10
- package/types/ngwr-calendar-heatmap.d.ts +16 -2
- package/types/ngwr-calendar.d.ts +10 -0
- package/types/ngwr-carousel-testing.d.ts +257 -0
- package/types/ngwr-carousel.d.ts +20 -4
- package/types/ngwr-cascader-testing.d.ts +392 -0
- package/types/ngwr-checkbox-testing.d.ts +77 -0
- package/types/ngwr-checkbox.d.ts +7 -2
- package/types/ngwr-collapse-testing.d.ts +290 -0
- package/types/ngwr-color-picker.d.ts +20 -11
- package/types/ngwr-command-palette-testing.d.ts +437 -0
- package/types/ngwr-command-palette.d.ts +25 -2
- package/types/ngwr-compare.d.ts +50 -2
- package/types/ngwr-config.d.ts +176 -0
- package/types/ngwr-context-menu-testing.d.ts +401 -0
- package/types/ngwr-context-menu.d.ts +65 -17
- package/types/ngwr-counter.d.ts +6 -1
- package/types/ngwr-date-adapter-luxon.d.ts +26 -0
- package/types/ngwr-date-picker-testing.d.ts +518 -0
- package/types/ngwr-date-picker.d.ts +4 -0
- package/types/ngwr-dialog-testing.d.ts +79 -0
- package/types/ngwr-directives.d.ts +10 -1
- package/types/ngwr-donut-chart.d.ts +8 -1
- package/types/ngwr-drawer-testing.d.ts +196 -0
- package/types/ngwr-dropdown-testing.d.ts +202 -0
- package/types/ngwr-dropdown.d.ts +7 -1
- package/types/ngwr-empty.d.ts +19 -4
- package/types/ngwr-event-calendar.d.ts +26 -1
- package/types/ngwr-file-upload-testing.d.ts +194 -0
- package/types/ngwr-form-testing.d.ts +379 -0
- package/types/ngwr-form.d.ts +17 -0
- package/types/ngwr-gauge.d.ts +13 -1
- package/types/ngwr-image-cropper.d.ts +10 -0
- package/types/ngwr-input-number-testing.d.ts +226 -0
- package/types/ngwr-input-number.d.ts +29 -1
- package/types/ngwr-input-otp-testing.d.ts +299 -0
- package/types/ngwr-input-otp.d.ts +23 -2
- package/types/ngwr-input-testing.d.ts +84 -0
- package/types/ngwr-input.d.ts +20 -6
- package/types/ngwr-knob.d.ts +18 -0
- package/types/ngwr-layout.d.ts +1 -0
- package/types/ngwr-lightbox.d.ts +17 -3
- package/types/ngwr-line-chart.d.ts +9 -2
- package/types/ngwr-markdown-testing.d.ts +462 -0
- package/types/ngwr-markdown.d.ts +534 -0
- package/types/ngwr-marquee.d.ts +12 -2
- package/types/ngwr-mention-testing.d.ts +359 -0
- package/types/ngwr-meta.d.ts +4 -2
- package/types/ngwr-meter-group.d.ts +11 -1
- package/types/ngwr-overlay.d.ts +33 -2
- package/types/ngwr-pagination-testing.d.ts +291 -0
- package/types/ngwr-pagination.d.ts +1 -0
- package/types/ngwr-popconfirm-testing.d.ts +235 -0
- package/types/ngwr-popconfirm.d.ts +31 -21
- package/types/ngwr-popover-testing.d.ts +221 -0
- package/types/ngwr-popover.d.ts +9 -0
- package/types/ngwr-pull-to-refresh.d.ts +7 -0
- package/types/ngwr-qr.d.ts +9 -1
- package/types/ngwr-radio-testing.d.ts +296 -0
- package/types/ngwr-radio.d.ts +8 -2
- package/types/ngwr-rating-testing.d.ts +291 -0
- package/types/ngwr-rating.d.ts +23 -0
- package/types/ngwr-segmented-testing.d.ts +401 -0
- package/types/ngwr-select-testing.d.ts +175 -0
- package/types/ngwr-select.d.ts +45 -4
- package/types/ngwr-sidebar.d.ts +17 -2
- package/types/ngwr-slider-testing.d.ts +329 -0
- package/types/ngwr-slider.d.ts +35 -1
- package/types/ngwr-sparkline.d.ts +12 -2
- package/types/ngwr-speed-dial.d.ts +17 -18
- package/types/ngwr-spinner.d.ts +8 -1
- package/types/ngwr-splitter.d.ts +24 -1
- package/types/ngwr-statistic.d.ts +12 -2
- package/types/ngwr-stepper-testing.d.ts +346 -0
- package/types/ngwr-switch-testing.d.ts +66 -0
- package/types/ngwr-switch.d.ts +7 -2
- package/types/ngwr-table-testing.d.ts +423 -0
- package/types/ngwr-table.d.ts +42 -0
- package/types/ngwr-tabs-testing.d.ts +470 -0
- package/types/ngwr-tabs.d.ts +9 -0
- package/types/ngwr-textarea-testing.d.ts +184 -0
- package/types/ngwr-textarea.d.ts +7 -2
- package/types/ngwr-toast-testing.d.ts +80 -0
- package/types/ngwr-tour.d.ts +27 -0
- package/types/ngwr-transfer-testing.d.ts +444 -0
- package/types/ngwr-transfer.d.ts +16 -1
- package/types/ngwr-tree-testing.d.ts +501 -0
- package/types/ngwr-tree.d.ts +33 -0
- package/types/ngwr-version.d.ts +1 -1
- package/types/ngwr-virtual-scroll.d.ts +13 -1
- package/typewriter/styles/_index.scss +1 -1
- package/typography/styles/_index.scss +1 -1
- package/window/styles/_index.scss +32 -9
package/README.md
CHANGED
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
# <img src="https://ngwr.dev/images/logo.svg" alt="ngwr logo" height="32px">
|
|
2
2
|
|
|
3
3
|
[](https://ngwr.dev)
|
|
4
|
-
[](https://www.npmjs.com/package/ngwr)
|
|
5
5
|
[](https://www.npmjs.com/package/ngwr)
|
|
6
6
|
[](https://github.com/thekhegay/ngwr/actions/workflows/ci.yml)
|
|
7
|
+
[](https://codecov.io/gh/thekhegay/ngwr)
|
|
7
8
|
[](https://github.com/thekhegay/ngwr/blob/main/LICENSE)
|
|
8
9
|
|
|
9
10
|
**NGWR** is a modern Angular UI library — standalone components, signals-first,
|
|
10
11
|
zoneless-ready, responsive, modular SCSS, fully tree-shakable. Built on top of
|
|
11
12
|
`@angular/cdk` for overlay, portal, and a11y primitives.
|
|
12
13
|
|
|
13
|
-
> **Status:** active development.
|
|
14
|
+
> **Status:** active development. v11 is the current major line (Angular 22 peer).
|
|
14
15
|
> Public API is stable across patch releases and still evolving between majors.
|
|
15
16
|
> [Open an issue](https://github.com/thekhegay/ngwr/issues/new)
|
|
16
17
|
> if something breaks or feels wrong.
|
|
@@ -28,9 +29,10 @@ zoneless-ready, responsive, modular SCSS, fully tree-shakable. Built on top of
|
|
|
28
29
|
| `luxon` _(optional)_ | `^3.0.0` |
|
|
29
30
|
| `lucide` _(optional)_ | `>= 1.0.0` |
|
|
30
31
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
32
|
+
TypeScript `~6.0.x` (Angular 22's compiler declares `typescript >=6.0 <6.1`) and
|
|
33
|
+
a Node version Angular 22 accepts — `^22.22.3 || ^24.15.0 || >=26`. Contributing
|
|
34
|
+
to this repo needs the narrower `^24.16.0 || >=26` it pins (`.nvmrc` says 24),
|
|
35
|
+
plus pnpm ≥ 11.10.
|
|
34
36
|
|
|
35
37
|
## Install
|
|
36
38
|
|
|
@@ -54,9 +56,10 @@ yarn add ngwr @angular/cdk
|
|
|
54
56
|
```
|
|
55
57
|
|
|
56
58
|
`@angular/cdk` is the only required peer. Add an icon set and a date library
|
|
57
|
-
only if you use them — `lucide` (or `feather`) for the icon adapters, and
|
|
58
|
-
`date-fns` or `luxon` for the calendar / date-picker
|
|
59
|
-
below registers a lucide icon, so
|
|
59
|
+
only if you use them — `lucide` (or `feather-icons`) for the icon adapters, and
|
|
60
|
+
`date-fns` or `luxon` for the calendar / date-picker, which otherwise runs on a
|
|
61
|
+
built-in native `Date` adapter. The Quick start below registers a lucide icon, so
|
|
62
|
+
it needs `lucide`:
|
|
60
63
|
|
|
61
64
|
```shell
|
|
62
65
|
pnpm add lucide
|
|
@@ -71,10 +74,11 @@ The fastest way — pull in everything (theme tokens + all component styles):
|
|
|
71
74
|
@use 'ngwr';
|
|
72
75
|
```
|
|
73
76
|
|
|
74
|
-
Good for a spike, but it is every entry point at once — about **
|
|
75
|
-
(~
|
|
76
|
-
|
|
77
|
-
below and the sheet stays proportional to what you actually
|
|
77
|
+
Good for a spike, but it is every entry point at once — about **265 kB** of CSS
|
|
78
|
+
(~40 kB over the wire), which is over half the 500 kB initial budget a fresh
|
|
79
|
+
`ng new` warns at before any of your own code. For anything you intend to keep,
|
|
80
|
+
opt in per component below and the sheet stays proportional to what you actually
|
|
81
|
+
render.
|
|
78
82
|
|
|
79
83
|
Prefer to opt in per-component? Each component has its own SCSS entry that pulls
|
|
80
84
|
in the theme automatically:
|
|
@@ -183,7 +187,7 @@ export class ProfileForm {
|
|
|
183
187
|
|
|
184
188
|
**Feedback** — [alert](https://ngwr.dev/reference/components/alert), [empty](https://ngwr.dev/reference/components/empty), [progress](https://ngwr.dev/reference/components/progress), [result](https://ngwr.dev/reference/components/result), [skeleton](https://ngwr.dev/reference/components/skeleton), [spinner](https://ngwr.dev/reference/components/spinner).
|
|
185
189
|
|
|
186
|
-
**Display** — [avatar](https://ngwr.dev/reference/components/avatar), [badge](https://ngwr.dev/reference/components/badge) (incl. `wr-tag`), [compare](https://ngwr.dev/reference/components/compare), [counter](https://ngwr.dev/reference/components/counter), [descriptions](https://ngwr.dev/reference/components/descriptions), [divider](https://ngwr.dev/reference/components/divider), [image-cropper](https://ngwr.dev/reference/components/image-cropper), [keyboard](https://ngwr.dev/reference/components/keyboard), [lightbox](https://ngwr.dev/reference/components/lightbox), [qr](https://ngwr.dev/reference/components/qrcode), [statistic](https://ngwr.dev/reference/components/statistic), [timeline](https://ngwr.dev/reference/components/timeline).
|
|
190
|
+
**Display** — [avatar](https://ngwr.dev/reference/components/avatar), [badge](https://ngwr.dev/reference/components/badge) (incl. `wr-tag`), [compare](https://ngwr.dev/reference/components/compare), [counter](https://ngwr.dev/reference/components/counter), [descriptions](https://ngwr.dev/reference/components/descriptions), [divider](https://ngwr.dev/reference/components/divider), [image-cropper](https://ngwr.dev/reference/components/image-cropper), [keyboard](https://ngwr.dev/reference/components/keyboard), [lightbox](https://ngwr.dev/reference/components/lightbox), [markdown](https://ngwr.dev/reference/components/markdown), [qr](https://ngwr.dev/reference/components/qrcode), [statistic](https://ngwr.dev/reference/components/statistic), [timeline](https://ngwr.dev/reference/components/timeline).
|
|
187
191
|
|
|
188
192
|
**Layout** — [card](https://ngwr.dev/reference/components/card), [carousel](https://ngwr.dev/reference/components/carousel), [collapse](https://ngwr.dev/reference/components/collapse), [layout](https://ngwr.dev/reference/components/layout), [list](https://ngwr.dev/reference/components/list), [page-header](https://ngwr.dev/reference/components/page-header), [splitter](https://ngwr.dev/reference/components/splitter), [toolbar](https://ngwr.dev/reference/components/toolbar).
|
|
189
193
|
|
|
@@ -209,7 +213,7 @@ Card packages bundle their related directives: `ngwr/spotlight-card` exports `Wr
|
|
|
209
213
|
|
|
210
214
|
### Pipes — `ngwr/pipes`
|
|
211
215
|
|
|
212
|
-
[wrBytes](https://ngwr.dev/reference/pipes/wr-bytes), [wrDate](https://ngwr.dev/reference/pipes/wr-date), [wrMark](https://ngwr.dev/reference/pipes/wr-mark), [wrNumber](https://ngwr.dev/reference/pipes/wr-number), [wrPlural](https://ngwr.dev/reference/pipes/wr-plural), [wrRange](https://ngwr.dev/reference/pipes/range), [wrTruncate](https://ngwr.dev/reference/pipes/wr-truncate).
|
|
216
|
+
[wrBytes](https://ngwr.dev/reference/pipes/wr-bytes), [wrDate](https://ngwr.dev/reference/pipes/wr-date), [wrMark](https://ngwr.dev/reference/pipes/wr-mark), [wrNumber](https://ngwr.dev/reference/pipes/wr-number), [wrPlural](https://ngwr.dev/reference/pipes/wr-plural), [wrRange](https://ngwr.dev/reference/pipes/wr-range), [wrTruncate](https://ngwr.dev/reference/pipes/wr-truncate).
|
|
213
217
|
|
|
214
218
|
### Services
|
|
215
219
|
|
|
@@ -231,7 +235,8 @@ Math (`clamp`, `round`), coercion (`numAttr`), css helpers (`resolveCssSize`, `g
|
|
|
231
235
|
- [Mobile & responsive](https://ngwr.dev/guides/mobile) — responsive overlays, touch targets & density, swipe gestures, safe-area insets, container-query layouts.
|
|
232
236
|
- [Typography](https://ngwr.dev/guides/typography) — `wrTypography` directive: headings, paragraphs, lists, links, code.
|
|
233
237
|
- [Icons](https://ngwr.dev/icons) — `ngwr/icon` registry. Use `svgIcon()` for any set that ships raw SVG files (Tabler, Phosphor, Heroicons, Iconoir, Radix, Bootstrap, or your designer's own), plus thin adapters for Lucide (`ngwr/icon/adapters/lucide`) and Feather (`ngwr/icon/adapters/feather`), whose packages don't ship SVGs.
|
|
234
|
-
- **Date adapters** — `ngwr/date-adapter-fns`, `ngwr/date-adapter-luxon`. Wire one with `provideWrDateAdapter(
|
|
238
|
+
- **Date adapters** — `ngwr/date-adapter` (native `Date`, no extra package), `ngwr/date-adapter-fns`, `ngwr/date-adapter-luxon`. Wire one with `provideWrDateAdapter()` — plus `{ adapter: WrDateFnsAdapter }` / `{ adapter: WrLuxonAdapter }` for the library-backed ones — to power calendar + every mode of date-picker.
|
|
239
|
+
- **Component defaults** — `ngwr/config`. `provideWrConfig({ button: { size: 'sm' } })` sets what a component falls back to when a template says nothing; a bound value always wins, and a bound `false` beats a configured `true`, so a config never has to be escaped. [Reference](https://ngwr.dev/start/configuration).
|
|
235
240
|
|
|
236
241
|
## Highlights
|
|
237
242
|
|
|
@@ -240,13 +245,27 @@ Math (`clamp`, `round`), coercion (`numAttr`), css helpers (`resolveCssSize`, `g
|
|
|
240
245
|
- **CDK-powered.** Overlays, portals, and a11y come from `@angular/cdk`. We add `provideWrOverlay()` so NGWR overlays never collide with other CDK consumers (Material, NG-ZORRO, etc.).
|
|
241
246
|
- **Mobile & responsive.** Overlays collapse to bottom-sheets on small screens (`provideWrResponsiveOverlays()`), touch targets grow to ≥44px on coarse pointers, a `touch` density preset enlarges every control, and drawer / lightbox / toast / carousel respond to swipe gestures. Fixed surfaces respect `env(safe-area-inset-*)`, and layout components (`descriptions`, `stepper`, `page-header`, `toolbar`, `pagination`, `table`) reflow to their container via container queries. [Guide](https://ngwr.dev/guides/mobile).
|
|
242
247
|
- **Table, batteries included.** `wr-table` covers column pinning / resizing / drag-reorder, row selection, expandable rows, grouping, tree rows (`childrenKey` — the forest flattens into the same `<tbody>`, so pinning and cell templates keep working at every depth, and the table announces a `treegrid`), summary rows, CSV export (`exportCsv()`, dependency-free RFC 4180) and a virtualized body — all opt-in inputs on the one component. Excel (`.xlsx`) export is deliberately not shipped: it would mean a third-party dependency.
|
|
243
|
-
- **Tree-shakable.**
|
|
248
|
+
- **Tree-shakable.** 166 separate ng-packagr entry points — import only what you use. Per-component FESM bundles are small: a median of ~4 KB gzipped, the heaviest (`ngwr/markdown`) ~23 KB. Every runtime bundle together gzips to ~690 KB — the 34 `ngwr/<name>/testing` harnesses aside, since they never reach an app bundle — but real apps pull a handful of entries. The only runtime dependency is `tslib`.
|
|
244
249
|
- **Modular SCSS.** Component styles are scoped through CSS custom properties. Theme tokens live in `ngwr/theme`; utilities (`grid`, `reset`) and the breakpoints SCSS API are opt-in.
|
|
245
250
|
- **Tree-shaken icons.** `provideWrIcons(lucideIcons({ plus: Plus }))` registers only the icons you actually import. Dev-mode validation warns about unregistered icons.
|
|
246
251
|
- **Reactbits ports, dependency-free.** All animation ports are reimplemented with vanilla DOM + Web Animations API / `IntersectionObserver` / `requestAnimationFrame` / raw WebGL — no GSAP, no `motion/react`, no `matter-js`, no `ogl`.
|
|
247
252
|
- **Motion respects the OS.** Every animation component short-circuits to its final state under `prefers-reduced-motion`.
|
|
248
253
|
- **Legible to agents.** Every docs page also serves as markdown at the same URL plus `.md` — [reference/components/select.md](https://ngwr.dev/reference/components/select.md) is that page's prose, code samples and API tables without the site chrome. The whole catalog is at [llms-full.txt](https://ngwr.dev/llms-full.txt), a quick-ref at [llms.txt](https://ngwr.dev/llms.txt).
|
|
249
254
|
|
|
255
|
+
### MCP server
|
|
256
|
+
|
|
257
|
+
The package ships `ngwr-mcp`, a zero-dependency MCP server that makes those files askable: `search_ngwr` (find an entry point by what you need), `get_ngwr_component`, `get_ngwr_api` (a class's inputs / models / outputs / methods, read out of the shipped `.d.ts`) and `get_ngwr_setup` (the install, `ng g ngwr:use` and provider commands — returned as text; it never runs them). It adds no second copy of the catalog: it reads only files inside its own installed package, makes no network requests, and runs no commands.
|
|
258
|
+
|
|
259
|
+
```json
|
|
260
|
+
{
|
|
261
|
+
"mcpServers": {
|
|
262
|
+
"ngwr": { "command": "npx", "args": ["-y", "ngwr-mcp"] }
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
Works in Claude Code (`claude mcp add ngwr -- npx -y ngwr-mcp`), Claude Desktop and Cursor. To pin it to the version in your lockfile, use `"command": "node", "args": ["./node_modules/ngwr/mcp/server.js"]`. [Guide](https://ngwr.dev/guides/mcp).
|
|
268
|
+
|
|
250
269
|
## Contributing
|
|
251
270
|
|
|
252
271
|
Conventional commits are enforced on PR titles. Common types: `feat`, `fix`, `perf`, `refactor`, `docs`, `style`, `test`, `build`, `ci`, `chore`, `revert`. Optional scope is the component or area (`feat(checkbox): icon mode`).
|
|
@@ -254,9 +273,10 @@ Conventional commits are enforced on PR titles. Common types: `feat`, `fix`, `pe
|
|
|
254
273
|
```shell
|
|
255
274
|
pnpm install
|
|
256
275
|
pnpm dev # ng serve --o (showcase)
|
|
257
|
-
pnpm
|
|
258
|
-
pnpm build:
|
|
259
|
-
pnpm
|
|
276
|
+
pnpm test # ng test lib (vitest)
|
|
277
|
+
pnpm build:lib # ng build lib + ai assets + dist assets + i18n json + schematics + mcp server
|
|
278
|
+
pnpm build:showcase # ai assets + showcase build + sitemap + markdown twins
|
|
279
|
+
pnpm lint # ng lint + eslint scripts + stylelint + colour parity + rtl
|
|
260
280
|
```
|
|
261
281
|
|
|
262
282
|
## Authors
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
.wr-anchor {
|
|
4
4
|
display: block;
|
|
5
5
|
font-family: var(--wr-font-family-base);
|
|
6
|
-
border-
|
|
7
|
-
padding-
|
|
6
|
+
border-inline-start: 1.5px solid var(--wr-color-outline);
|
|
7
|
+
padding-inline-start: 0.875rem;
|
|
8
8
|
|
|
9
9
|
&__list {
|
|
10
10
|
list-style: none;
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
|
|
17
17
|
&--nested {
|
|
18
18
|
margin-top: 0.125rem;
|
|
19
|
-
padding-
|
|
19
|
+
padding-inline-start: 0.875rem;
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
22
|
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
position: absolute;
|
|
38
38
|
top: 0.25rem;
|
|
39
39
|
bottom: 0.25rem;
|
|
40
|
-
|
|
40
|
+
inset-inline-start: -1rem;
|
|
41
41
|
width: 1.5px;
|
|
42
42
|
background: transparent;
|
|
43
43
|
transition: background var(--wr-transition-base);
|
|
@@ -5,7 +5,12 @@
|
|
|
5
5
|
// Safe-area: lift the floating button clear of the home indicator / rounded
|
|
6
6
|
// corner on mobile. env() is 0 without insets, so desktop stays 1.5rem.
|
|
7
7
|
bottom: calc(1.5rem + env(safe-area-inset-bottom));
|
|
8
|
-
|
|
8
|
+
// The button parks at the reader's trailing corner, so the inset is logical.
|
|
9
|
+
// Its safe-area term cannot be: `env()` names the device's physical right
|
|
10
|
+
// edge and does not flip, so under RTL it pads the corner the button no
|
|
11
|
+
// longer sits in (a landscape-only 0-vs-inset difference; the 1.5rem base
|
|
12
|
+
// still holds it off the edge).
|
|
13
|
+
inset-inline-end: calc(1.5rem + env(safe-area-inset-right));
|
|
9
14
|
z-index: 50;
|
|
10
15
|
opacity: 0;
|
|
11
16
|
pointer-events: none;
|
|
@@ -2,6 +2,19 @@
|
|
|
2
2
|
display: inline-flex;
|
|
3
3
|
flex-wrap: wrap;
|
|
4
4
|
|
|
5
|
+
// Same shape as `wr-rotating-text`: the animated pieces are per-character
|
|
6
|
+
// spans, which a screen reader may read out one letter at a time, so the real
|
|
7
|
+
// string is carried once here and the pieces are taken out of the tree.
|
|
8
|
+
&__sr-only {
|
|
9
|
+
position: absolute;
|
|
10
|
+
width: 1px;
|
|
11
|
+
height: 1px;
|
|
12
|
+
overflow: hidden;
|
|
13
|
+
clip: rect(0 0 0 0);
|
|
14
|
+
clip-path: inset(50%);
|
|
15
|
+
white-space: nowrap;
|
|
16
|
+
}
|
|
17
|
+
|
|
5
18
|
&__piece {
|
|
6
19
|
display: inline-block;
|
|
7
20
|
will-change: transform, filter, opacity;
|
|
@@ -72,6 +72,7 @@
|
|
|
72
72
|
|
|
73
73
|
&__spin {
|
|
74
74
|
position: absolute;
|
|
75
|
+
// rtl-ok: centred with a physical translate(-50%, -50%), so the pair must stay physical
|
|
75
76
|
left: 50%;
|
|
76
77
|
top: 50%;
|
|
77
78
|
transform: translate(-50%, -50%);
|
|
@@ -228,17 +229,17 @@
|
|
|
228
229
|
|
|
229
230
|
> .wr-btn {
|
|
230
231
|
border-radius: 0;
|
|
231
|
-
margin-
|
|
232
|
+
margin-inline-start: -1px;
|
|
232
233
|
|
|
233
234
|
&:first-child {
|
|
234
|
-
margin-
|
|
235
|
-
border-
|
|
236
|
-
border-
|
|
235
|
+
margin-inline-start: 0;
|
|
236
|
+
border-start-start-radius: var(--wr-btn-radius);
|
|
237
|
+
border-end-start-radius: var(--wr-btn-radius);
|
|
237
238
|
}
|
|
238
239
|
|
|
239
240
|
&:last-child {
|
|
240
|
-
border-
|
|
241
|
-
border-
|
|
241
|
+
border-start-end-radius: var(--wr-btn-radius);
|
|
242
|
+
border-end-end-radius: var(--wr-btn-radius);
|
|
242
243
|
}
|
|
243
244
|
|
|
244
245
|
&:hover,
|
|
@@ -256,6 +257,10 @@
|
|
|
256
257
|
// seam there and let the raised border own it cleanly.
|
|
257
258
|
@each $name in theme.$colors {
|
|
258
259
|
> .wr-btn--#{$name}:not(.wr-btn--outlined):not(:last-child) {
|
|
260
|
+
// `box-shadow` offsets are physical by spec — there is no logical form to
|
|
261
|
+
// convert to. The seam lands on the wrong edge under RTL; fixing it needs a
|
|
262
|
+
// `[dir]` rule or a real border, which is beyond a property-level rewrite.
|
|
263
|
+
// rtl-ok: box-shadow has no logical equivalent — see above
|
|
259
264
|
box-shadow: inset -1px 0 0 rgba(var(--wr-color-black-rgb), 0.2);
|
|
260
265
|
|
|
261
266
|
&:hover,
|
|
@@ -64,18 +64,29 @@
|
|
|
64
64
|
transform: translateY(-50%) scale(1.05);
|
|
65
65
|
}
|
|
66
66
|
|
|
67
|
+
// The track's motion is direction-aware now — `carousel.ts` signs its
|
|
68
|
+
// `translateX` and its swipe threshold from `Directionality` — so the arrows
|
|
69
|
+
// follow the reading direction too. "Previous" is where the earlier slides
|
|
70
|
+
// are, which is the inline start in both directions.
|
|
67
71
|
&--prev {
|
|
68
|
-
|
|
72
|
+
inset-inline-start: 0.75rem;
|
|
69
73
|
}
|
|
70
74
|
|
|
71
75
|
&--next {
|
|
72
|
-
|
|
76
|
+
inset-inline-end: 0.75rem;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
// The chevrons are drawn pointing physically left and right, so they turn
|
|
80
|
+
// around with the strip: going BACK is going right for an RTL reader.
|
|
81
|
+
[dir='rtl'] & svg {
|
|
82
|
+
transform: scaleX(-1);
|
|
73
83
|
}
|
|
74
84
|
}
|
|
75
85
|
|
|
76
86
|
&__dots {
|
|
77
87
|
position: absolute;
|
|
78
88
|
bottom: 0.75rem;
|
|
89
|
+
// rtl-ok: centred with a physical translateX, so the pair must stay physical.
|
|
79
90
|
left: 50%;
|
|
80
91
|
transform: translateX(-50%);
|
|
81
92
|
display: flex;
|
|
@@ -57,7 +57,7 @@
|
|
|
57
57
|
font-size: var(--wr-cascader-font-size);
|
|
58
58
|
line-height: var(--wr-cascader-line-height);
|
|
59
59
|
cursor: pointer;
|
|
60
|
-
text-align:
|
|
60
|
+
text-align: start;
|
|
61
61
|
transition:
|
|
62
62
|
border-color var(--wr-transition-base),
|
|
63
63
|
box-shadow var(--wr-transition-base);
|
|
@@ -163,7 +163,7 @@
|
|
|
163
163
|
gap: 0.125rem;
|
|
164
164
|
|
|
165
165
|
+ .wr-cascader__col {
|
|
166
|
-
border-
|
|
166
|
+
border-inline-start: 1px solid var(--wr-color-outline);
|
|
167
167
|
}
|
|
168
168
|
}
|
|
169
169
|
|
|
@@ -33,10 +33,12 @@
|
|
|
33
33
|
&__char {
|
|
34
34
|
position: absolute;
|
|
35
35
|
top: 50%;
|
|
36
|
+
// rtl-ok: centred on the spinner's midpoint by a physical margin-left/-top pair plus a per-char translateY()
|
|
36
37
|
left: 50%;
|
|
37
38
|
display: inline-block;
|
|
38
39
|
// Pre-shift by -50% so the char's centre sits at the spinner centre
|
|
39
40
|
// before the per-char `rotate translateY(-radius)` runs.
|
|
41
|
+
// rtl-ok: the negative half of the `left: 50%` centring pair, symmetric with `margin-top`
|
|
40
42
|
margin-left: -0.5em;
|
|
41
43
|
margin-top: -0.5em;
|
|
42
44
|
line-height: 1;
|
|
@@ -94,6 +94,11 @@
|
|
|
94
94
|
height: var(--wr-color-picker-thumb-size);
|
|
95
95
|
transform: translate(-50%, -50%);
|
|
96
96
|
top: 0;
|
|
97
|
+
// The template overrides this with `[style.left.%]`, computed in color-picker.ts
|
|
98
|
+
// from `(event.clientX - rect.left) / rect.width` — a physical-pixel measurement
|
|
99
|
+
// against the SV panel and the two gradient tracks, which are painted `to right`
|
|
100
|
+
// and do not flip.
|
|
101
|
+
// rtl-ok: canvas geometry in physical pixels, centred by the physical translate
|
|
97
102
|
left: 0;
|
|
98
103
|
border-radius: 50%;
|
|
99
104
|
border: 2px solid #fff;
|
|
@@ -194,7 +199,7 @@
|
|
|
194
199
|
}
|
|
195
200
|
|
|
196
201
|
&__field--wide input {
|
|
197
|
-
text-align:
|
|
202
|
+
text-align: start;
|
|
198
203
|
text-transform: lowercase;
|
|
199
204
|
padding: 0.3125rem 0.5rem;
|
|
200
205
|
font-size: var(--wr-text-sm);
|
|
@@ -19,6 +19,11 @@
|
|
|
19
19
|
// open feel is consistent across all overlay families.
|
|
20
20
|
opacity: 0;
|
|
21
21
|
transform: scale(0.96);
|
|
22
|
+
// `transform-origin` has no logical keyword form, and this corner is the one
|
|
23
|
+
// the directive pins to the pointer — it writes `top` / `left` inline from
|
|
24
|
+
// `pageX`/`pageY`, physical pixels. Origin and those coordinates are one pair;
|
|
25
|
+
// mirroring the menu around the cursor is a TS change, not a rename.
|
|
26
|
+
// rtl-ok: animation origin tied to the pointer coords the directive writes
|
|
22
27
|
transform-origin: top left;
|
|
23
28
|
transition:
|
|
24
29
|
opacity var(--wr-overlay-duration) var(--wr-overlay-ease),
|
|
@@ -94,7 +99,7 @@
|
|
|
94
99
|
width: 0.8125rem;
|
|
95
100
|
height: 0.8125rem;
|
|
96
101
|
color: var(--wr-color-on-surface-muted);
|
|
97
|
-
margin-
|
|
102
|
+
margin-inline-start: 0.25rem;
|
|
98
103
|
}
|
|
99
104
|
|
|
100
105
|
&--has-submenu:hover &__chevron,
|
|
@@ -109,7 +109,7 @@
|
|
|
109
109
|
|
|
110
110
|
&--bordered#{&}--inline &__label {
|
|
111
111
|
background: rgba(var(--wr-color-outline-rgb), 0.35);
|
|
112
|
-
border-
|
|
112
|
+
border-inline-end: 1px solid var(--wr-color-outline);
|
|
113
113
|
}
|
|
114
114
|
}
|
|
115
115
|
|
|
@@ -158,6 +158,6 @@
|
|
|
158
158
|
|
|
159
159
|
.wr-descriptions--bordered.wr-descriptions--inline .wr-descriptions__label {
|
|
160
160
|
background: transparent;
|
|
161
|
-
border-
|
|
161
|
+
border-inline-end: 0;
|
|
162
162
|
}
|
|
163
163
|
}
|
|
@@ -10,6 +10,13 @@
|
|
|
10
10
|
z-index: 1000;
|
|
11
11
|
pointer-events: none;
|
|
12
12
|
top: 0;
|
|
13
|
+
// Kept verbatim from CDK's prebuilt sheet on purpose. The box is a fixed,
|
|
14
|
+
// full-viewport rect (`width`/`height: 100%`), so start/end is a no-op in both
|
|
15
|
+
// directions — and an app that also loads CDK's own prebuilt CSS would then
|
|
16
|
+
// hold `left: 0` from CDK next to `inset-inline-start: 0` from here, which in
|
|
17
|
+
// RTL over-constrains the same rect for no gain. Fidelity to the source we
|
|
18
|
+
// mirror is worth more than a rename that changes nothing.
|
|
19
|
+
// rtl-ok: re-emitted CDK rule; full-viewport box, identical under RTL
|
|
13
20
|
left: 0;
|
|
14
21
|
width: 100%;
|
|
15
22
|
height: 100%;
|
|
@@ -85,24 +85,41 @@
|
|
|
85
85
|
|
|
86
86
|
// Rounded leading corners
|
|
87
87
|
// The edge facing the viewport interior. Common bottom-sheet styling.
|
|
88
|
+
//
|
|
89
|
+
// Every radius below is keyed off `position`, a PHYSICAL input
|
|
90
|
+
// (`left | right | top | bottom`) naming a viewport edge — a `--left` drawer
|
|
91
|
+
// is on the physical left in either direction, and the CDK
|
|
92
|
+
// `GlobalPositionStrategy` that places it calls `.left()` / `.right()`. So the
|
|
93
|
+
// corners it softens are physical: made logical, a `--left` panel in RTL would
|
|
94
|
+
// round the edge against the viewport instead of the one facing the content.
|
|
88
95
|
&--rounded.wr-drawer__panel--bottom {
|
|
96
|
+
// rtl-ok: symmetric pair on the block-start edge — identical under RTL
|
|
89
97
|
border-top-left-radius: var(--wr-border-radius-lg);
|
|
98
|
+
// rtl-ok: symmetric pair on the block-start edge — identical under RTL
|
|
90
99
|
border-top-right-radius: var(--wr-border-radius-lg);
|
|
91
100
|
}
|
|
92
101
|
&--rounded.wr-drawer__panel--top {
|
|
102
|
+
// rtl-ok: symmetric pair on the block-end edge — identical under RTL
|
|
93
103
|
border-bottom-left-radius: var(--wr-border-radius-lg);
|
|
104
|
+
// rtl-ok: symmetric pair on the block-end edge — identical under RTL
|
|
94
105
|
border-bottom-right-radius: var(--wr-border-radius-lg);
|
|
95
106
|
}
|
|
96
107
|
&--rounded.wr-drawer__panel--left {
|
|
108
|
+
// rtl-ok: physical `position` — inner edge of a physically left-anchored panel
|
|
97
109
|
border-top-right-radius: var(--wr-border-radius-lg);
|
|
110
|
+
// rtl-ok: physical `position` — inner edge of a physically left-anchored panel
|
|
98
111
|
border-bottom-right-radius: var(--wr-border-radius-lg);
|
|
99
112
|
}
|
|
100
113
|
&--rounded.wr-drawer__panel--right {
|
|
114
|
+
// rtl-ok: physical `position` — inner edge of a physically right-anchored panel
|
|
101
115
|
border-top-left-radius: var(--wr-border-radius-lg);
|
|
116
|
+
// rtl-ok: physical `position` — inner edge of a physically right-anchored panel
|
|
102
117
|
border-bottom-left-radius: var(--wr-border-radius-lg);
|
|
103
118
|
}
|
|
104
119
|
|
|
105
|
-
// Safe-area padding on the trailing edge
|
|
120
|
+
// Safe-area padding on the trailing edge. `env(safe-area-inset-*)` is defined
|
|
121
|
+
// per physical screen edge — the notch does not move when the text does — so
|
|
122
|
+
// the padding that clears it stays physical as well.
|
|
106
123
|
&--safe-area.wr-drawer__panel--bottom {
|
|
107
124
|
padding-bottom: env(safe-area-inset-bottom);
|
|
108
125
|
}
|
|
@@ -110,9 +127,11 @@
|
|
|
110
127
|
padding-top: env(safe-area-inset-top);
|
|
111
128
|
}
|
|
112
129
|
&--safe-area.wr-drawer__panel--left {
|
|
130
|
+
// rtl-ok: pairs with the physical `env(safe-area-inset-left)` screen inset
|
|
113
131
|
padding-left: env(safe-area-inset-left);
|
|
114
132
|
}
|
|
115
133
|
&--safe-area.wr-drawer__panel--right {
|
|
134
|
+
// rtl-ok: pairs with the physical `env(safe-area-inset-right)` screen inset
|
|
116
135
|
padding-right: env(safe-area-inset-right);
|
|
117
136
|
}
|
|
118
137
|
}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
@use '../../theme/styles' as theme;
|
|
2
2
|
@use '../../overlay/styles'; // shared .wr-overlay-sheet / .wr-overlay-backdrop for responsive mode
|
|
3
3
|
|
|
4
|
-
// `.wr-dropdown`
|
|
5
|
-
//
|
|
4
|
+
// The directive marks its host `.wr-dropdown-trigger` — `.wr-dropdown` below is
|
|
5
|
+
// reachable only if a consumer applies it by hand, which is why it stays: the
|
|
6
|
+
// `.wr-*` names are public API. The menu and overlay live in the CDK overlay
|
|
7
|
+
// portal and so are separate blocks, not elements.
|
|
6
8
|
|
|
7
9
|
.wr-dropdown {
|
|
8
10
|
cursor: pointer;
|
|
@@ -31,6 +33,10 @@
|
|
|
31
33
|
font-family: var(--wr-font-family-base);
|
|
32
34
|
// Match popover / popconfirm / context-menu open feel.
|
|
33
35
|
animation: wr-overlay-in var(--wr-overlay-duration) var(--wr-overlay-ease);
|
|
36
|
+
// `transform-origin` has no logical keyword form, and the corner it names is
|
|
37
|
+
// the scale-in choreography of `wr-overlay-in`, shared with popover /
|
|
38
|
+
// popconfirm / context-menu. Mirroring it needs a direction-aware rule.
|
|
39
|
+
// rtl-ok: animation origin, no logical keyword form exists
|
|
34
40
|
transform-origin: top left;
|
|
35
41
|
}
|
|
36
42
|
|
|
@@ -48,12 +54,16 @@
|
|
|
48
54
|
padding-top: 0.25rem;
|
|
49
55
|
}
|
|
50
56
|
|
|
57
|
+
// The gap sits on the pane edge that faces the trigger. `left` / `right` map
|
|
58
|
+
// to CDK `originX: 'start' | 'end'` (see `WR_DROPDOWN_POSITIONS`), which
|
|
59
|
+
// `FlexibleConnectedPositionStrategy` already resolves against the ambient
|
|
60
|
+
// `Directionality` — so the padding has to follow the same axis, logically.
|
|
51
61
|
&--left {
|
|
52
|
-
padding-
|
|
62
|
+
padding-inline-end: 0.25rem;
|
|
53
63
|
}
|
|
54
64
|
|
|
55
65
|
&--right {
|
|
56
|
-
padding-
|
|
66
|
+
padding-inline-start: 0.25rem;
|
|
57
67
|
}
|
|
58
68
|
}
|
|
59
69
|
|
|
@@ -76,7 +86,7 @@
|
|
|
76
86
|
font: inherit;
|
|
77
87
|
font-size: var(--wr-text-sm);
|
|
78
88
|
line-height: 1.25rem;
|
|
79
|
-
text-align:
|
|
89
|
+
text-align: start;
|
|
80
90
|
white-space: nowrap;
|
|
81
91
|
cursor: pointer;
|
|
82
92
|
user-select: none;
|
|
@@ -104,6 +114,10 @@
|
|
|
104
114
|
color: var(--wr-color-on-surface-muted);
|
|
105
115
|
cursor: not-allowed;
|
|
106
116
|
opacity: 0.6;
|
|
117
|
+
// The item's own `disabled` guards only the KEYBOARD path; the host element is
|
|
118
|
+
// where a consumer binds `(click)`, and nothing stopped a real click reaching
|
|
119
|
+
// it. `wr-btn` and `wr-checkbox` disable their pointer the same way.
|
|
120
|
+
pointer-events: none;
|
|
107
121
|
|
|
108
122
|
&:hover {
|
|
109
123
|
background: transparent;
|
package/empty/styles/_index.scss
CHANGED
|
@@ -19,6 +19,16 @@
|
|
|
19
19
|
color: var(--wr-color-on-surface-muted);
|
|
20
20
|
opacity: 0.6;
|
|
21
21
|
margin-bottom: 0.25rem;
|
|
22
|
+
// The built-in glyph is sized by `.wr-icon__svg` at 1em; a custom
|
|
23
|
+
// `<wr-icon>` sizes through this var instead, so without it the two
|
|
24
|
+
// branches of the same slot rendered at different sizes (15px vs 18px).
|
|
25
|
+
--wr-icon-size: 1em;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
// `<wr-icon>` sets `color: inherit` on its own host at equal specificity; the
|
|
29
|
+
// type selector wins it back so a custom icon stays as muted as the default.
|
|
30
|
+
wr-icon.wr-empty__icon {
|
|
31
|
+
color: var(--wr-color-on-surface-muted);
|
|
22
32
|
}
|
|
23
33
|
|
|
24
34
|
&__title {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { inject, model, input, output, computed, ViewEncapsulation, Component } from '@angular/core';
|
|
3
3
|
import { WrDrawer, WrDrawerTitle } from 'ngwr/drawer';
|
|
4
|
+
import { useI18nText } from 'ngwr/i18n';
|
|
4
5
|
import { WrIcon } from 'ngwr/icon';
|
|
5
6
|
import { WrHaptics } from 'ngwr/platform';
|
|
6
7
|
|
|
@@ -49,6 +50,15 @@ class WrActionSheet {
|
|
|
49
50
|
/** Optional bold heading above the rows. */
|
|
50
51
|
title = input('', /* @ts-ignore */
|
|
51
52
|
...(ngDevMode ? [{ debugName: "title" }] : /* istanbul ignore next */ []));
|
|
53
|
+
/**
|
|
54
|
+
* Name announced for the dialog when there is no visible `title`. Falls back to
|
|
55
|
+
* `actionSheet.label`, then `'Actions'` — it used to be that English string,
|
|
56
|
+
* written into the template of a component whose every other string comes from
|
|
57
|
+
* the caller.
|
|
58
|
+
*/
|
|
59
|
+
titleFallback = input(null, /* @ts-ignore */
|
|
60
|
+
...(ngDevMode ? [{ debugName: "titleFallback" }] : /* istanbul ignore next */ []));
|
|
61
|
+
resolvedTitleFallback = useI18nText(this.titleFallback, 'actionSheet.label', 'Actions');
|
|
52
62
|
/** Optional muted sub-heading under the title. */
|
|
53
63
|
message = input('', /* @ts-ignore */
|
|
54
64
|
...(ngDevMode ? [{ debugName: "message" }] : /* istanbul ignore next */ []));
|
|
@@ -66,12 +76,12 @@ class WrActionSheet {
|
|
|
66
76
|
this.open.set(false);
|
|
67
77
|
}
|
|
68
78
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: WrActionSheet, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
69
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.1", type: WrActionSheet, isStandalone: true, selector: "wr-action-sheet", inputs: { open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null }, actions: { classPropertyName: "actions", publicName: "actions", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, message: { classPropertyName: "message", publicName: "message", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { open: "openChange", action: "action" }, ngImport: i0, template: "<wr-drawer [(open)]=\"open\" position=\"bottom\" height=\"auto\" rounded showHandle safeArea maxHeight=\"90dvh\">\n <div class=\"wr-action-sheet\">\n @if (title() || message()) {\n <div class=\"wr-action-sheet__header\">\n @if (title()) {\n <div class=\"wr-action-sheet__title\" wrDrawerTitle>{{ title() }}</div>\n }\n @if (message()) {\n <div class=\"wr-action-sheet__message\">{{ message() }}</div>\n }\n </div>\n }\n <!-- The drawer opens as an aria-modal dialog; name it via wrDrawerTitle.\n When there is no visible title, a screen-reader-only fallback keeps the\n dialog from being announced as unnamed. -->\n @if (!title()) {\n <span class=\"wr-action-sheet__sr-only\" wrDrawerTitle>
|
|
79
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.1", type: WrActionSheet, isStandalone: true, selector: "wr-action-sheet", inputs: { open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null }, actions: { classPropertyName: "actions", publicName: "actions", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, titleFallback: { classPropertyName: "titleFallback", publicName: "titleFallback", isSignal: true, isRequired: false, transformFunction: null }, message: { classPropertyName: "message", publicName: "message", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { open: "openChange", action: "action" }, ngImport: i0, template: "<wr-drawer [(open)]=\"open\" position=\"bottom\" height=\"auto\" rounded showHandle safeArea maxHeight=\"90dvh\">\n <div class=\"wr-action-sheet\">\n @if (title() || message()) {\n <div class=\"wr-action-sheet__header\">\n @if (title()) {\n <div class=\"wr-action-sheet__title\" wrDrawerTitle>{{ title() }}</div>\n }\n @if (message()) {\n <div class=\"wr-action-sheet__message\">{{ message() }}</div>\n }\n </div>\n }\n <!-- The drawer opens as an aria-modal dialog; name it via wrDrawerTitle.\n When there is no visible title, a screen-reader-only fallback keeps the\n dialog from being announced as unnamed. -->\n @if (!title()) {\n <span class=\"wr-action-sheet__sr-only\" wrDrawerTitle>{{ resolvedTitleFallback() }}</span>\n }\n\n <div class=\"wr-action-sheet__group\">\n @for (item of mainActions(); track $index) {\n <button\n type=\"button\"\n class=\"wr-action-sheet__action\"\n [class.wr-action-sheet__action--destructive]=\"item.role === 'destructive'\"\n [disabled]=\"item.disabled\"\n (click)=\"select(item)\"\n >\n @if (item.icon) {\n <wr-icon class=\"wr-action-sheet__icon\" [name]=\"item.icon\" />\n }\n <span class=\"wr-action-sheet__label\">{{ item.label }}</span>\n </button>\n }\n </div>\n\n @if (cancelActions().length) {\n <div class=\"wr-action-sheet__group wr-action-sheet__group--cancel\">\n @for (item of cancelActions(); track $index) {\n <button\n type=\"button\"\n class=\"wr-action-sheet__action wr-action-sheet__action--cancel\"\n [disabled]=\"item.disabled\"\n (click)=\"select(item)\"\n >\n <span class=\"wr-action-sheet__label\">{{ item.label }}</span>\n </button>\n }\n </div>\n }\n </div>\n</wr-drawer>\n", dependencies: [{ kind: "component", type: WrDrawer, selector: "wr-drawer", inputs: ["open", "position", "width", "height", "maxHeight", "rounded", "showHandle", "safeArea", "hasBackdrop", "closeOnBackdropClick", "closeOnEscape", "closable", "closeLabel"], outputs: ["openChange"] }, { kind: "directive", type: WrDrawerTitle, selector: "[wrDrawerTitle]" }, { kind: "component", type: WrIcon, selector: "wr-icon", inputs: ["name"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
70
80
|
}
|
|
71
81
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: WrActionSheet, decorators: [{
|
|
72
82
|
type: Component,
|
|
73
|
-
args: [{ selector: 'wr-action-sheet', encapsulation: ViewEncapsulation.None, imports: [WrDrawer, WrDrawerTitle, WrIcon], template: "<wr-drawer [(open)]=\"open\" position=\"bottom\" height=\"auto\" rounded showHandle safeArea maxHeight=\"90dvh\">\n <div class=\"wr-action-sheet\">\n @if (title() || message()) {\n <div class=\"wr-action-sheet__header\">\n @if (title()) {\n <div class=\"wr-action-sheet__title\" wrDrawerTitle>{{ title() }}</div>\n }\n @if (message()) {\n <div class=\"wr-action-sheet__message\">{{ message() }}</div>\n }\n </div>\n }\n <!-- The drawer opens as an aria-modal dialog; name it via wrDrawerTitle.\n When there is no visible title, a screen-reader-only fallback keeps the\n dialog from being announced as unnamed. -->\n @if (!title()) {\n <span class=\"wr-action-sheet__sr-only\" wrDrawerTitle>
|
|
74
|
-
}], propDecorators: { open: [{ type: i0.Input, args: [{ isSignal: true, alias: "open", required: false }] }, { type: i0.Output, args: ["openChange"] }], actions: [{ type: i0.Input, args: [{ isSignal: true, alias: "actions", required: false }] }], title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], message: [{ type: i0.Input, args: [{ isSignal: true, alias: "message", required: false }] }], action: [{ type: i0.Output, args: ["action"] }] } });
|
|
83
|
+
args: [{ selector: 'wr-action-sheet', encapsulation: ViewEncapsulation.None, imports: [WrDrawer, WrDrawerTitle, WrIcon], template: "<wr-drawer [(open)]=\"open\" position=\"bottom\" height=\"auto\" rounded showHandle safeArea maxHeight=\"90dvh\">\n <div class=\"wr-action-sheet\">\n @if (title() || message()) {\n <div class=\"wr-action-sheet__header\">\n @if (title()) {\n <div class=\"wr-action-sheet__title\" wrDrawerTitle>{{ title() }}</div>\n }\n @if (message()) {\n <div class=\"wr-action-sheet__message\">{{ message() }}</div>\n }\n </div>\n }\n <!-- The drawer opens as an aria-modal dialog; name it via wrDrawerTitle.\n When there is no visible title, a screen-reader-only fallback keeps the\n dialog from being announced as unnamed. -->\n @if (!title()) {\n <span class=\"wr-action-sheet__sr-only\" wrDrawerTitle>{{ resolvedTitleFallback() }}</span>\n }\n\n <div class=\"wr-action-sheet__group\">\n @for (item of mainActions(); track $index) {\n <button\n type=\"button\"\n class=\"wr-action-sheet__action\"\n [class.wr-action-sheet__action--destructive]=\"item.role === 'destructive'\"\n [disabled]=\"item.disabled\"\n (click)=\"select(item)\"\n >\n @if (item.icon) {\n <wr-icon class=\"wr-action-sheet__icon\" [name]=\"item.icon\" />\n }\n <span class=\"wr-action-sheet__label\">{{ item.label }}</span>\n </button>\n }\n </div>\n\n @if (cancelActions().length) {\n <div class=\"wr-action-sheet__group wr-action-sheet__group--cancel\">\n @for (item of cancelActions(); track $index) {\n <button\n type=\"button\"\n class=\"wr-action-sheet__action wr-action-sheet__action--cancel\"\n [disabled]=\"item.disabled\"\n (click)=\"select(item)\"\n >\n <span class=\"wr-action-sheet__label\">{{ item.label }}</span>\n </button>\n }\n </div>\n }\n </div>\n</wr-drawer>\n" }]
|
|
84
|
+
}], propDecorators: { open: [{ type: i0.Input, args: [{ isSignal: true, alias: "open", required: false }] }, { type: i0.Output, args: ["openChange"] }], actions: [{ type: i0.Input, args: [{ isSignal: true, alias: "actions", required: false }] }], title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], titleFallback: [{ type: i0.Input, args: [{ isSignal: true, alias: "titleFallback", required: false }] }], message: [{ type: i0.Input, args: [{ isSignal: true, alias: "message", required: false }] }], action: [{ type: i0.Output, args: ["action"] }] } });
|
|
75
85
|
|
|
76
86
|
/**
|
|
77
87
|
* Generated bundle index. Do not edit.
|