@slotted/angular 0.0.0-stage → 0.1.0-beta.1
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/LICENSE +21 -0
- package/README.md +51 -2
- package/docs/AGENTS.snippet.md +10 -0
- package/docs/accordion.json +345 -0
- package/docs/accordion.md +207 -0
- package/docs/action-bar.json +421 -0
- package/docs/action-bar.md +364 -0
- package/docs/action-sheet.json +210 -0
- package/docs/action-sheet.md +19 -0
- package/docs/alert.json +407 -0
- package/docs/alert.md +239 -0
- package/docs/app-shell.examples.md +349 -0
- package/docs/app-shell.json +835 -0
- package/docs/app-shell.md +214 -0
- package/docs/aspect-ratio.json +159 -0
- package/docs/aspect-ratio.md +134 -0
- package/docs/attachment.json +486 -0
- package/docs/attachment.md +253 -0
- package/docs/avatar-group.json +208 -0
- package/docs/avatar-group.md +130 -0
- package/docs/avatar.json +342 -0
- package/docs/avatar.md +142 -0
- package/docs/badge.json +334 -0
- package/docs/badge.md +138 -0
- package/docs/breadcrumb.json +368 -0
- package/docs/breadcrumb.md +237 -0
- package/docs/button-group.json +158 -0
- package/docs/button-group.md +72 -0
- package/docs/button.examples.md +621 -0
- package/docs/button.json +977 -0
- package/docs/button.md +200 -0
- package/docs/calendar.json +592 -0
- package/docs/calendar.md +242 -0
- package/docs/card.json +283 -0
- package/docs/card.md +130 -0
- package/docs/carousel.json +560 -0
- package/docs/carousel.md +357 -0
- package/docs/cascader.json +933 -0
- package/docs/cascader.md +379 -0
- package/docs/chart.examples.md +582 -0
- package/docs/chart.json +1359 -0
- package/docs/chart.md +187 -0
- package/docs/checkbox-group.examples.md +612 -0
- package/docs/checkbox-group.json +395 -0
- package/docs/checkbox-group.md +106 -0
- package/docs/checkbox.examples.md +546 -0
- package/docs/checkbox.json +506 -0
- package/docs/checkbox.md +104 -0
- package/docs/code-block.json +616 -0
- package/docs/code-block.md +303 -0
- package/docs/collapsible.json +456 -0
- package/docs/collapsible.md +261 -0
- package/docs/color-picker.json +523 -0
- package/docs/color-picker.md +201 -0
- package/docs/column-manager.json +486 -0
- package/docs/column-manager.md +277 -0
- package/docs/combobox.examples.md +1732 -0
- package/docs/combobox.json +1250 -0
- package/docs/combobox.md +209 -0
- package/docs/command-palette.json +800 -0
- package/docs/command-palette.md +419 -0
- package/docs/container.json +156 -0
- package/docs/container.md +92 -0
- package/docs/context-menu.json +231 -0
- package/docs/context-menu.md +176 -0
- package/docs/currency-field.examples.md +321 -0
- package/docs/currency-field.json +649 -0
- package/docs/currency-field.md +128 -0
- package/docs/dashboard-grid.json +680 -0
- package/docs/dashboard-grid.md +265 -0
- package/docs/data-grid.examples.md +3064 -0
- package/docs/data-grid.json +1577 -0
- package/docs/data-grid.md +237 -0
- package/docs/data-grid.props.md +81 -0
- package/docs/data-list.json +685 -0
- package/docs/data-list.md +327 -0
- package/docs/date-field.json +490 -0
- package/docs/date-field.md +235 -0
- package/docs/date-picker.examples.md +1226 -0
- package/docs/date-picker.json +696 -0
- package/docs/date-picker.md +121 -0
- package/docs/date-range-picker.examples.md +1300 -0
- package/docs/date-range-picker.json +903 -0
- package/docs/date-range-picker.md +142 -0
- package/docs/datetime-field.json +665 -0
- package/docs/datetime-field.md +337 -0
- package/docs/datetime-picker.examples.md +1269 -0
- package/docs/datetime-picker.json +928 -0
- package/docs/datetime-picker.md +150 -0
- package/docs/datetime-range-picker.examples.md +225 -0
- package/docs/datetime-range-picker.json +1015 -0
- package/docs/datetime-range-picker.md +162 -0
- package/docs/description-list.json +471 -0
- package/docs/description-list.md +268 -0
- package/docs/detail-panel.json +530 -0
- package/docs/detail-panel.md +361 -0
- package/docs/dialog.examples.md +2467 -0
- package/docs/dialog.json +1141 -0
- package/docs/dialog.md +217 -0
- package/docs/dialog.props.md +63 -0
- package/docs/divider.json +148 -0
- package/docs/divider.md +83 -0
- package/docs/drawer.examples.md +1929 -0
- package/docs/drawer.json +753 -0
- package/docs/drawer.md +199 -0
- package/docs/entity-picker.json +946 -0
- package/docs/entity-picker.md +365 -0
- package/docs/event-calendar.examples.md +308 -0
- package/docs/event-calendar.json +1202 -0
- package/docs/event-calendar.md +201 -0
- package/docs/field-group.json +333 -0
- package/docs/field-group.md +181 -0
- package/docs/field.examples.md +676 -0
- package/docs/field.json +528 -0
- package/docs/field.md +127 -0
- package/docs/filter-bar.json +817 -0
- package/docs/filter-bar.md +380 -0
- package/docs/form.json +378 -0
- package/docs/form.md +235 -0
- package/docs/fullscreen.json +395 -0
- package/docs/fullscreen.md +225 -0
- package/docs/grid.json +176 -0
- package/docs/grid.md +74 -0
- package/docs/highlight.json +279 -0
- package/docs/highlight.md +210 -0
- package/docs/hover-card.json +254 -0
- package/docs/hover-card.md +213 -0
- package/docs/icon.json +173 -0
- package/docs/icon.md +101 -0
- package/docs/image.json +476 -0
- package/docs/image.md +254 -0
- package/docs/import-export-center.json +836 -0
- package/docs/import-export-center.md +345 -0
- package/docs/index.md +141 -0
- package/docs/inline-message.json +312 -0
- package/docs/inline-message.md +191 -0
- package/docs/inline.json +149 -0
- package/docs/inline.md +72 -0
- package/docs/kbd.json +350 -0
- package/docs/kbd.md +210 -0
- package/docs/link.json +264 -0
- package/docs/link.md +167 -0
- package/docs/list-item.json +463 -0
- package/docs/list-item.md +236 -0
- package/docs/list.json +321 -0
- package/docs/list.md +185 -0
- package/docs/listbox.json +807 -0
- package/docs/listbox.md +413 -0
- package/docs/loading-overlay.json +440 -0
- package/docs/loading-overlay.md +248 -0
- package/docs/markdown.json +461 -0
- package/docs/markdown.md +266 -0
- package/docs/menu.examples.md +1651 -0
- package/docs/menu.json +922 -0
- package/docs/menu.md +155 -0
- package/docs/menubar.json +292 -0
- package/docs/menubar.md +173 -0
- package/docs/message-scroller.json +401 -0
- package/docs/message-scroller.md +212 -0
- package/docs/message.json +862 -0
- package/docs/message.md +473 -0
- package/docs/multi-select.examples.md +1922 -0
- package/docs/multi-select.json +1314 -0
- package/docs/multi-select.md +213 -0
- package/docs/navigation-menu.json +529 -0
- package/docs/navigation-menu.md +329 -0
- package/docs/notification-center.json +664 -0
- package/docs/notification-center.md +372 -0
- package/docs/number-field.examples.md +1078 -0
- package/docs/number-field.json +668 -0
- package/docs/number-field.md +137 -0
- package/docs/otp-input.json +479 -0
- package/docs/otp-input.md +291 -0
- package/docs/page-header.json +574 -0
- package/docs/page-header.md +338 -0
- package/docs/page.json +332 -0
- package/docs/page.md +184 -0
- package/docs/pagination.json +434 -0
- package/docs/pagination.md +238 -0
- package/docs/popover.examples.md +1235 -0
- package/docs/popover.json +656 -0
- package/docs/popover.md +199 -0
- package/docs/progress-indicator.json +501 -0
- package/docs/progress-indicator.md +329 -0
- package/docs/prompt-composer.json +498 -0
- package/docs/prompt-composer.md +278 -0
- package/docs/prose.json +357 -0
- package/docs/prose.md +226 -0
- package/docs/radio-group.examples.md +626 -0
- package/docs/radio-group.json +541 -0
- package/docs/radio-group.md +112 -0
- package/docs/rating.json +1053 -0
- package/docs/rating.md +435 -0
- package/docs/result-state.json +376 -0
- package/docs/result-state.md +286 -0
- package/docs/saved-views.json +384 -0
- package/docs/saved-views.md +242 -0
- package/docs/scroll-area.json +120 -0
- package/docs/scroll-area.md +8 -0
- package/docs/section.json +344 -0
- package/docs/section.md +208 -0
- package/docs/segmented-control.json +429 -0
- package/docs/segmented-control.md +240 -0
- package/docs/select.examples.md +1214 -0
- package/docs/select.json +1147 -0
- package/docs/select.md +199 -0
- package/docs/side-navigation.json +632 -0
- package/docs/side-navigation.md +430 -0
- package/docs/skeleton.json +358 -0
- package/docs/skeleton.md +223 -0
- package/docs/slider.json +522 -0
- package/docs/slider.md +261 -0
- package/docs/sparkline.json +426 -0
- package/docs/sparkline.md +206 -0
- package/docs/split-button.json +361 -0
- package/docs/split-button.md +275 -0
- package/docs/splitter.json +142 -0
- package/docs/splitter.md +14 -0
- package/docs/stack.json +135 -0
- package/docs/stack.md +74 -0
- package/docs/stat-card.json +529 -0
- package/docs/stat-card.md +270 -0
- package/docs/status-indicator.json +314 -0
- package/docs/status-indicator.md +197 -0
- package/docs/stepper.json +451 -0
- package/docs/stepper.md +250 -0
- package/docs/switch.json +451 -0
- package/docs/switch.md +508 -0
- package/docs/table-of-contents.json +553 -0
- package/docs/table-of-contents.md +289 -0
- package/docs/table.examples.md +1981 -0
- package/docs/table.json +1059 -0
- package/docs/table.md +290 -0
- package/docs/tabs.examples.md +1370 -0
- package/docs/tabs.json +661 -0
- package/docs/tabs.md +211 -0
- package/docs/tag.json +813 -0
- package/docs/tag.md +241 -0
- package/docs/tags-input.json +771 -0
- package/docs/tags-input.md +361 -0
- package/docs/text-field.examples.md +821 -0
- package/docs/text-field.json +604 -0
- package/docs/text-field.md +125 -0
- package/docs/textarea.examples.md +612 -0
- package/docs/textarea.json +440 -0
- package/docs/textarea.md +98 -0
- package/docs/time-field.json +584 -0
- package/docs/time-field.md +291 -0
- package/docs/time-picker.json +679 -0
- package/docs/time-picker.md +315 -0
- package/docs/time-range-picker.examples.md +191 -0
- package/docs/time-range-picker.json +924 -0
- package/docs/time-range-picker.md +152 -0
- package/docs/timeline.json +839 -0
- package/docs/timeline.md +401 -0
- package/docs/toast.json +642 -0
- package/docs/toast.md +311 -0
- package/docs/toggle-group.json +417 -0
- package/docs/toggle-group.md +255 -0
- package/docs/toggle.json +326 -0
- package/docs/toggle.md +222 -0
- package/docs/toolbar.json +380 -0
- package/docs/toolbar.md +240 -0
- package/docs/tooltip.examples.md +664 -0
- package/docs/tooltip.json +604 -0
- package/docs/tooltip.md +146 -0
- package/docs/top-navigation.examples.md +287 -0
- package/docs/top-navigation.json +648 -0
- package/docs/top-navigation.md +138 -0
- package/docs/tour.json +759 -0
- package/docs/tour.md +337 -0
- package/docs/transfer.json +746 -0
- package/docs/transfer.md +273 -0
- package/docs/tree.json +918 -0
- package/docs/tree.md +397 -0
- package/docs/typography.json +317 -0
- package/docs/typography.md +107 -0
- package/docs/upload.examples.md +358 -0
- package/docs/upload.json +1103 -0
- package/docs/upload.md +166 -0
- package/docs/visually-hidden.json +71 -0
- package/docs/visually-hidden.md +42 -0
- package/docs/wizard.json +724 -0
- package/docs/wizard.md +295 -0
- package/fesm2022/slotted-angular-accordion.mjs +247 -0
- package/fesm2022/slotted-angular-accordion.mjs.map +1 -0
- package/fesm2022/slotted-angular-action-bar.mjs +639 -0
- package/fesm2022/slotted-angular-action-bar.mjs.map +1 -0
- package/fesm2022/slotted-angular-action-sheet.mjs +749 -0
- package/fesm2022/slotted-angular-action-sheet.mjs.map +1 -0
- package/fesm2022/slotted-angular-alert.mjs +427 -0
- package/fesm2022/slotted-angular-alert.mjs.map +1 -0
- package/fesm2022/slotted-angular-app-shell.mjs +1334 -0
- package/fesm2022/slotted-angular-app-shell.mjs.map +1 -0
- package/fesm2022/slotted-angular-aspect-ratio.mjs +63 -0
- package/fesm2022/slotted-angular-aspect-ratio.mjs.map +1 -0
- package/fesm2022/slotted-angular-attachment.mjs +595 -0
- package/fesm2022/slotted-angular-attachment.mjs.map +1 -0
- package/fesm2022/slotted-angular-avatar-group.mjs +230 -0
- package/fesm2022/slotted-angular-avatar-group.mjs.map +1 -0
- package/fesm2022/slotted-angular-avatar.mjs +330 -0
- package/fesm2022/slotted-angular-avatar.mjs.map +1 -0
- package/fesm2022/slotted-angular-badge.mjs +255 -0
- package/fesm2022/slotted-angular-badge.mjs.map +1 -0
- package/fesm2022/slotted-angular-breadcrumb.mjs +544 -0
- package/fesm2022/slotted-angular-breadcrumb.mjs.map +1 -0
- package/fesm2022/slotted-angular-button-group.mjs +146 -0
- package/fesm2022/slotted-angular-button-group.mjs.map +1 -0
- package/fesm2022/slotted-angular-button.mjs +692 -0
- package/fesm2022/slotted-angular-button.mjs.map +1 -0
- package/fesm2022/slotted-angular-calendar.mjs +916 -0
- package/fesm2022/slotted-angular-calendar.mjs.map +1 -0
- package/fesm2022/slotted-angular-card.mjs +225 -0
- package/fesm2022/slotted-angular-card.mjs.map +1 -0
- package/fesm2022/slotted-angular-carousel.mjs +840 -0
- package/fesm2022/slotted-angular-carousel.mjs.map +1 -0
- package/fesm2022/slotted-angular-cascader.mjs +1839 -0
- package/fesm2022/slotted-angular-cascader.mjs.map +1 -0
- package/fesm2022/slotted-angular-chart.mjs +974 -0
- package/fesm2022/slotted-angular-chart.mjs.map +1 -0
- package/fesm2022/slotted-angular-checkbox-group.mjs +283 -0
- package/fesm2022/slotted-angular-checkbox-group.mjs.map +1 -0
- package/fesm2022/slotted-angular-checkbox.mjs +468 -0
- package/fesm2022/slotted-angular-checkbox.mjs.map +1 -0
- package/fesm2022/slotted-angular-code-block.mjs +476 -0
- package/fesm2022/slotted-angular-code-block.mjs.map +1 -0
- package/fesm2022/slotted-angular-collapsible.mjs +479 -0
- package/fesm2022/slotted-angular-collapsible.mjs.map +1 -0
- package/fesm2022/slotted-angular-color-picker.mjs +910 -0
- package/fesm2022/slotted-angular-color-picker.mjs.map +1 -0
- package/fesm2022/slotted-angular-column-manager.mjs +1037 -0
- package/fesm2022/slotted-angular-column-manager.mjs.map +1 -0
- package/fesm2022/slotted-angular-combobox.mjs +1480 -0
- package/fesm2022/slotted-angular-combobox.mjs.map +1 -0
- package/fesm2022/slotted-angular-command-palette.mjs +1283 -0
- package/fesm2022/slotted-angular-command-palette.mjs.map +1 -0
- package/fesm2022/slotted-angular-container.mjs +105 -0
- package/fesm2022/slotted-angular-container.mjs.map +1 -0
- package/fesm2022/slotted-angular-context-menu.mjs +221 -0
- package/fesm2022/slotted-angular-context-menu.mjs.map +1 -0
- package/fesm2022/slotted-angular-currency-field.mjs +1131 -0
- package/fesm2022/slotted-angular-currency-field.mjs.map +1 -0
- package/fesm2022/slotted-angular-dashboard-grid.mjs +1928 -0
- package/fesm2022/slotted-angular-dashboard-grid.mjs.map +1 -0
- package/fesm2022/slotted-angular-data-grid.mjs +6697 -0
- package/fesm2022/slotted-angular-data-grid.mjs.map +1 -0
- package/fesm2022/slotted-angular-data-list.mjs +1418 -0
- package/fesm2022/slotted-angular-data-list.mjs.map +1 -0
- package/fesm2022/slotted-angular-date-field.mjs +772 -0
- package/fesm2022/slotted-angular-date-field.mjs.map +1 -0
- package/fesm2022/slotted-angular-date-picker.mjs +690 -0
- package/fesm2022/slotted-angular-date-picker.mjs.map +1 -0
- package/fesm2022/slotted-angular-date-range-picker.mjs +1150 -0
- package/fesm2022/slotted-angular-date-range-picker.mjs.map +1 -0
- package/fesm2022/slotted-angular-datetime-field.mjs +1058 -0
- package/fesm2022/slotted-angular-datetime-field.mjs.map +1 -0
- package/fesm2022/slotted-angular-datetime-picker.mjs +1362 -0
- package/fesm2022/slotted-angular-datetime-picker.mjs.map +1 -0
- package/fesm2022/slotted-angular-datetime-range-picker.mjs +1872 -0
- package/fesm2022/slotted-angular-datetime-range-picker.mjs.map +1 -0
- package/fesm2022/slotted-angular-description-list.mjs +545 -0
- package/fesm2022/slotted-angular-description-list.mjs.map +1 -0
- package/fesm2022/slotted-angular-detail-panel.mjs +754 -0
- package/fesm2022/slotted-angular-detail-panel.mjs.map +1 -0
- package/fesm2022/slotted-angular-dialog.mjs +980 -0
- package/fesm2022/slotted-angular-dialog.mjs.map +1 -0
- package/fesm2022/slotted-angular-divider.mjs +76 -0
- package/fesm2022/slotted-angular-divider.mjs.map +1 -0
- package/fesm2022/slotted-angular-drawer.mjs +1397 -0
- package/fesm2022/slotted-angular-drawer.mjs.map +1 -0
- package/fesm2022/slotted-angular-entity-picker.mjs +1987 -0
- package/fesm2022/slotted-angular-entity-picker.mjs.map +1 -0
- package/fesm2022/slotted-angular-event-calendar.mjs +2934 -0
- package/fesm2022/slotted-angular-event-calendar.mjs.map +1 -0
- package/fesm2022/slotted-angular-field-group.mjs +301 -0
- package/fesm2022/slotted-angular-field-group.mjs.map +1 -0
- package/fesm2022/slotted-angular-field.mjs +928 -0
- package/fesm2022/slotted-angular-field.mjs.map +1 -0
- package/fesm2022/slotted-angular-filter-bar.mjs +3107 -0
- package/fesm2022/slotted-angular-filter-bar.mjs.map +1 -0
- package/fesm2022/slotted-angular-form.mjs +592 -0
- package/fesm2022/slotted-angular-form.mjs.map +1 -0
- package/fesm2022/slotted-angular-fullscreen.mjs +314 -0
- package/fesm2022/slotted-angular-fullscreen.mjs.map +1 -0
- package/fesm2022/slotted-angular-grid.mjs +58 -0
- package/fesm2022/slotted-angular-grid.mjs.map +1 -0
- package/fesm2022/slotted-angular-highlight.mjs +123 -0
- package/fesm2022/slotted-angular-highlight.mjs.map +1 -0
- package/fesm2022/slotted-angular-hover-card.mjs +326 -0
- package/fesm2022/slotted-angular-hover-card.mjs.map +1 -0
- package/fesm2022/slotted-angular-i18n.mjs +75 -0
- package/fesm2022/slotted-angular-i18n.mjs.map +1 -0
- package/fesm2022/slotted-angular-icon.mjs +232 -0
- package/fesm2022/slotted-angular-icon.mjs.map +1 -0
- package/fesm2022/slotted-angular-image.mjs +442 -0
- package/fesm2022/slotted-angular-image.mjs.map +1 -0
- package/fesm2022/slotted-angular-import-export-center.mjs +1792 -0
- package/fesm2022/slotted-angular-import-export-center.mjs.map +1 -0
- package/fesm2022/slotted-angular-inline-message.mjs +280 -0
- package/fesm2022/slotted-angular-inline-message.mjs.map +1 -0
- package/fesm2022/slotted-angular-inline.mjs +52 -0
- package/fesm2022/slotted-angular-inline.mjs.map +1 -0
- package/fesm2022/slotted-angular-kbd.mjs +284 -0
- package/fesm2022/slotted-angular-kbd.mjs.map +1 -0
- package/fesm2022/slotted-angular-link.mjs +182 -0
- package/fesm2022/slotted-angular-link.mjs.map +1 -0
- package/fesm2022/slotted-angular-list-item.mjs +367 -0
- package/fesm2022/slotted-angular-list-item.mjs.map +1 -0
- package/fesm2022/slotted-angular-list.mjs +256 -0
- package/fesm2022/slotted-angular-list.mjs.map +1 -0
- package/fesm2022/slotted-angular-listbox.mjs +1274 -0
- package/fesm2022/slotted-angular-listbox.mjs.map +1 -0
- package/fesm2022/slotted-angular-loading-overlay.mjs +451 -0
- package/fesm2022/slotted-angular-loading-overlay.mjs.map +1 -0
- package/fesm2022/slotted-angular-markdown.mjs +914 -0
- package/fesm2022/slotted-angular-markdown.mjs.map +1 -0
- package/fesm2022/slotted-angular-menu.mjs +1211 -0
- package/fesm2022/slotted-angular-menu.mjs.map +1 -0
- package/fesm2022/slotted-angular-menubar.mjs +230 -0
- package/fesm2022/slotted-angular-menubar.mjs.map +1 -0
- package/fesm2022/slotted-angular-message-scroller.mjs +378 -0
- package/fesm2022/slotted-angular-message-scroller.mjs.map +1 -0
- package/fesm2022/slotted-angular-message.mjs +866 -0
- package/fesm2022/slotted-angular-message.mjs.map +1 -0
- package/fesm2022/slotted-angular-multi-select.mjs +1939 -0
- package/fesm2022/slotted-angular-multi-select.mjs.map +1 -0
- package/fesm2022/slotted-angular-navigation-menu.mjs +770 -0
- package/fesm2022/slotted-angular-navigation-menu.mjs.map +1 -0
- package/fesm2022/slotted-angular-notification-center.mjs +1172 -0
- package/fesm2022/slotted-angular-notification-center.mjs.map +1 -0
- package/fesm2022/slotted-angular-number-field.mjs +966 -0
- package/fesm2022/slotted-angular-number-field.mjs.map +1 -0
- package/fesm2022/slotted-angular-otp-input.mjs +629 -0
- package/fesm2022/slotted-angular-otp-input.mjs.map +1 -0
- package/fesm2022/slotted-angular-page-header.mjs +788 -0
- package/fesm2022/slotted-angular-page-header.mjs.map +1 -0
- package/fesm2022/slotted-angular-page.mjs +255 -0
- package/fesm2022/slotted-angular-page.mjs.map +1 -0
- package/fesm2022/slotted-angular-pagination.mjs +562 -0
- package/fesm2022/slotted-angular-pagination.mjs.map +1 -0
- package/fesm2022/slotted-angular-popover.mjs +799 -0
- package/fesm2022/slotted-angular-popover.mjs.map +1 -0
- package/fesm2022/slotted-angular-progress-indicator.mjs +572 -0
- package/fesm2022/slotted-angular-progress-indicator.mjs.map +1 -0
- package/fesm2022/slotted-angular-prompt-composer.mjs +596 -0
- package/fesm2022/slotted-angular-prompt-composer.mjs.map +1 -0
- package/fesm2022/slotted-angular-prose.mjs +314 -0
- package/fesm2022/slotted-angular-prose.mjs.map +1 -0
- package/fesm2022/slotted-angular-radio-group.mjs +469 -0
- package/fesm2022/slotted-angular-radio-group.mjs.map +1 -0
- package/fesm2022/slotted-angular-rating.mjs +1174 -0
- package/fesm2022/slotted-angular-rating.mjs.map +1 -0
- package/fesm2022/slotted-angular-result-state.mjs +330 -0
- package/fesm2022/slotted-angular-result-state.mjs.map +1 -0
- package/fesm2022/slotted-angular-saved-views.mjs +877 -0
- package/fesm2022/slotted-angular-saved-views.mjs.map +1 -0
- package/fesm2022/slotted-angular-scroll-area.mjs +294 -0
- package/fesm2022/slotted-angular-scroll-area.mjs.map +1 -0
- package/fesm2022/slotted-angular-section.mjs +266 -0
- package/fesm2022/slotted-angular-section.mjs.map +1 -0
- package/fesm2022/slotted-angular-segmented-control.mjs +454 -0
- package/fesm2022/slotted-angular-segmented-control.mjs.map +1 -0
- package/fesm2022/slotted-angular-select.mjs +1899 -0
- package/fesm2022/slotted-angular-select.mjs.map +1 -0
- package/fesm2022/slotted-angular-side-navigation.mjs +1042 -0
- package/fesm2022/slotted-angular-side-navigation.mjs.map +1 -0
- package/fesm2022/slotted-angular-skeleton.mjs +316 -0
- package/fesm2022/slotted-angular-skeleton.mjs.map +1 -0
- package/fesm2022/slotted-angular-slider.mjs +586 -0
- package/fesm2022/slotted-angular-slider.mjs.map +1 -0
- package/fesm2022/slotted-angular-sparkline.mjs +235 -0
- package/fesm2022/slotted-angular-sparkline.mjs.map +1 -0
- package/fesm2022/slotted-angular-split-button.mjs +331 -0
- package/fesm2022/slotted-angular-split-button.mjs.map +1 -0
- package/fesm2022/slotted-angular-splitter.mjs +516 -0
- package/fesm2022/slotted-angular-splitter.mjs.map +1 -0
- package/fesm2022/slotted-angular-stack.mjs +48 -0
- package/fesm2022/slotted-angular-stack.mjs.map +1 -0
- package/fesm2022/slotted-angular-stat-card.mjs +478 -0
- package/fesm2022/slotted-angular-stat-card.mjs.map +1 -0
- package/fesm2022/slotted-angular-status-indicator.mjs +155 -0
- package/fesm2022/slotted-angular-status-indicator.mjs.map +1 -0
- package/fesm2022/slotted-angular-stepper.mjs +536 -0
- package/fesm2022/slotted-angular-stepper.mjs.map +1 -0
- package/fesm2022/slotted-angular-switch.mjs +447 -0
- package/fesm2022/slotted-angular-switch.mjs.map +1 -0
- package/fesm2022/slotted-angular-table-of-contents.mjs +750 -0
- package/fesm2022/slotted-angular-table-of-contents.mjs.map +1 -0
- package/fesm2022/slotted-angular-table.mjs +2518 -0
- package/fesm2022/slotted-angular-table.mjs.map +1 -0
- package/fesm2022/slotted-angular-tabs.mjs +829 -0
- package/fesm2022/slotted-angular-tabs.mjs.map +1 -0
- package/fesm2022/slotted-angular-tag.mjs +595 -0
- package/fesm2022/slotted-angular-tag.mjs.map +1 -0
- package/fesm2022/slotted-angular-tags-input.mjs +1211 -0
- package/fesm2022/slotted-angular-tags-input.mjs.map +1 -0
- package/fesm2022/slotted-angular-text-field.mjs +674 -0
- package/fesm2022/slotted-angular-text-field.mjs.map +1 -0
- package/fesm2022/slotted-angular-textarea.mjs +275 -0
- package/fesm2022/slotted-angular-textarea.mjs.map +1 -0
- package/fesm2022/slotted-angular-theme.mjs +45 -0
- package/fesm2022/slotted-angular-theme.mjs.map +1 -0
- package/fesm2022/slotted-angular-time-field.mjs +895 -0
- package/fesm2022/slotted-angular-time-field.mjs.map +1 -0
- package/fesm2022/slotted-angular-time-picker.mjs +856 -0
- package/fesm2022/slotted-angular-time-picker.mjs.map +1 -0
- package/fesm2022/slotted-angular-time-range-picker.mjs +1534 -0
- package/fesm2022/slotted-angular-time-range-picker.mjs.map +1 -0
- package/fesm2022/slotted-angular-timeline.mjs +928 -0
- package/fesm2022/slotted-angular-timeline.mjs.map +1 -0
- package/fesm2022/slotted-angular-toast.mjs +917 -0
- package/fesm2022/slotted-angular-toast.mjs.map +1 -0
- package/fesm2022/slotted-angular-toggle-group.mjs +311 -0
- package/fesm2022/slotted-angular-toggle-group.mjs.map +1 -0
- package/fesm2022/slotted-angular-toggle.mjs +162 -0
- package/fesm2022/slotted-angular-toggle.mjs.map +1 -0
- package/fesm2022/slotted-angular-toolbar.mjs +536 -0
- package/fesm2022/slotted-angular-toolbar.mjs.map +1 -0
- package/fesm2022/slotted-angular-tooltip.mjs +798 -0
- package/fesm2022/slotted-angular-tooltip.mjs.map +1 -0
- package/fesm2022/slotted-angular-top-navigation.mjs +1308 -0
- package/fesm2022/slotted-angular-top-navigation.mjs.map +1 -0
- package/fesm2022/slotted-angular-tour.mjs +1330 -0
- package/fesm2022/slotted-angular-tour.mjs.map +1 -0
- package/fesm2022/slotted-angular-transfer.mjs +1406 -0
- package/fesm2022/slotted-angular-transfer.mjs.map +1 -0
- package/fesm2022/slotted-angular-tree.mjs +1448 -0
- package/fesm2022/slotted-angular-tree.mjs.map +1 -0
- package/fesm2022/slotted-angular-typography.mjs +184 -0
- package/fesm2022/slotted-angular-typography.mjs.map +1 -0
- package/fesm2022/slotted-angular-upload.mjs +1523 -0
- package/fesm2022/slotted-angular-upload.mjs.map +1 -0
- package/fesm2022/slotted-angular-visually-hidden.mjs +32 -0
- package/fesm2022/slotted-angular-visually-hidden.mjs.map +1 -0
- package/fesm2022/slotted-angular-wizard.mjs +1715 -0
- package/fesm2022/slotted-angular-wizard.mjs.map +1 -0
- package/fesm2022/slotted-angular.mjs +4 -0
- package/fesm2022/slotted-angular.mjs.map +1 -0
- package/package.json +537 -3
- package/types/slotted-angular-accordion.d.ts +156 -0
- package/types/slotted-angular-accordion.d.ts.map +1 -0
- package/types/slotted-angular-action-bar.d.ts +291 -0
- package/types/slotted-angular-action-bar.d.ts.map +1 -0
- package/types/slotted-angular-action-sheet.d.ts +294 -0
- package/types/slotted-angular-action-sheet.d.ts.map +1 -0
- package/types/slotted-angular-alert.d.ts +214 -0
- package/types/slotted-angular-alert.d.ts.map +1 -0
- package/types/slotted-angular-app-shell.d.ts +549 -0
- package/types/slotted-angular-app-shell.d.ts.map +1 -0
- package/types/slotted-angular-aspect-ratio.d.ts +57 -0
- package/types/slotted-angular-aspect-ratio.d.ts.map +1 -0
- package/types/slotted-angular-attachment.d.ts +294 -0
- package/types/slotted-angular-attachment.d.ts.map +1 -0
- package/types/slotted-angular-avatar-group.d.ts +119 -0
- package/types/slotted-angular-avatar-group.d.ts.map +1 -0
- package/types/slotted-angular-avatar.d.ts +202 -0
- package/types/slotted-angular-avatar.d.ts.map +1 -0
- package/types/slotted-angular-badge.d.ts +166 -0
- package/types/slotted-angular-badge.d.ts.map +1 -0
- package/types/slotted-angular-breadcrumb.d.ts +251 -0
- package/types/slotted-angular-breadcrumb.d.ts.map +1 -0
- package/types/slotted-angular-button-group.d.ts +89 -0
- package/types/slotted-angular-button-group.d.ts.map +1 -0
- package/types/slotted-angular-button.d.ts +390 -0
- package/types/slotted-angular-button.d.ts.map +1 -0
- package/types/slotted-angular-calendar.d.ts +280 -0
- package/types/slotted-angular-calendar.d.ts.map +1 -0
- package/types/slotted-angular-card.d.ts +140 -0
- package/types/slotted-angular-card.d.ts.map +1 -0
- package/types/slotted-angular-carousel.d.ts +288 -0
- package/types/slotted-angular-carousel.d.ts.map +1 -0
- package/types/slotted-angular-cascader.d.ts +351 -0
- package/types/slotted-angular-cascader.d.ts.map +1 -0
- package/types/slotted-angular-chart.d.ts +319 -0
- package/types/slotted-angular-chart.d.ts.map +1 -0
- package/types/slotted-angular-checkbox-group.d.ts +156 -0
- package/types/slotted-angular-checkbox-group.d.ts.map +1 -0
- package/types/slotted-angular-checkbox.d.ts +197 -0
- package/types/slotted-angular-checkbox.d.ts.map +1 -0
- package/types/slotted-angular-code-block.d.ts +158 -0
- package/types/slotted-angular-code-block.d.ts.map +1 -0
- package/types/slotted-angular-collapsible.d.ts +272 -0
- package/types/slotted-angular-collapsible.d.ts.map +1 -0
- package/types/slotted-angular-color-picker.d.ts +181 -0
- package/types/slotted-angular-color-picker.d.ts.map +1 -0
- package/types/slotted-angular-column-manager.d.ts +200 -0
- package/types/slotted-angular-column-manager.d.ts.map +1 -0
- package/types/slotted-angular-combobox.d.ts +449 -0
- package/types/slotted-angular-combobox.d.ts.map +1 -0
- package/types/slotted-angular-command-palette.d.ts +256 -0
- package/types/slotted-angular-command-palette.d.ts.map +1 -0
- package/types/slotted-angular-container.d.ts +84 -0
- package/types/slotted-angular-container.d.ts.map +1 -0
- package/types/slotted-angular-context-menu.d.ts +84 -0
- package/types/slotted-angular-context-menu.d.ts.map +1 -0
- package/types/slotted-angular-currency-field.d.ts +480 -0
- package/types/slotted-angular-currency-field.d.ts.map +1 -0
- package/types/slotted-angular-dashboard-grid.d.ts +341 -0
- package/types/slotted-angular-dashboard-grid.d.ts.map +1 -0
- package/types/slotted-angular-data-grid.d.ts +1077 -0
- package/types/slotted-angular-data-grid.d.ts.map +1 -0
- package/types/slotted-angular-data-list.d.ts +272 -0
- package/types/slotted-angular-data-list.d.ts.map +1 -0
- package/types/slotted-angular-date-field.d.ts +320 -0
- package/types/slotted-angular-date-field.d.ts.map +1 -0
- package/types/slotted-angular-date-picker.d.ts +224 -0
- package/types/slotted-angular-date-picker.d.ts.map +1 -0
- package/types/slotted-angular-date-range-picker.d.ts +310 -0
- package/types/slotted-angular-date-range-picker.d.ts.map +1 -0
- package/types/slotted-angular-datetime-field.d.ts +362 -0
- package/types/slotted-angular-datetime-field.d.ts.map +1 -0
- package/types/slotted-angular-datetime-picker.d.ts +370 -0
- package/types/slotted-angular-datetime-picker.d.ts.map +1 -0
- package/types/slotted-angular-datetime-range-picker.d.ts +459 -0
- package/types/slotted-angular-datetime-range-picker.d.ts.map +1 -0
- package/types/slotted-angular-description-list.d.ts +281 -0
- package/types/slotted-angular-description-list.d.ts.map +1 -0
- package/types/slotted-angular-detail-panel.d.ts +240 -0
- package/types/slotted-angular-detail-panel.d.ts.map +1 -0
- package/types/slotted-angular-dialog.d.ts +497 -0
- package/types/slotted-angular-dialog.d.ts.map +1 -0
- package/types/slotted-angular-divider.d.ts +40 -0
- package/types/slotted-angular-divider.d.ts.map +1 -0
- package/types/slotted-angular-drawer.d.ts +532 -0
- package/types/slotted-angular-drawer.d.ts.map +1 -0
- package/types/slotted-angular-entity-picker.d.ts +338 -0
- package/types/slotted-angular-entity-picker.d.ts.map +1 -0
- package/types/slotted-angular-event-calendar.d.ts +574 -0
- package/types/slotted-angular-event-calendar.d.ts.map +1 -0
- package/types/slotted-angular-field-group.d.ts +152 -0
- package/types/slotted-angular-field-group.d.ts.map +1 -0
- package/types/slotted-angular-field.d.ts +535 -0
- package/types/slotted-angular-field.d.ts.map +1 -0
- package/types/slotted-angular-filter-bar.d.ts +573 -0
- package/types/slotted-angular-filter-bar.d.ts.map +1 -0
- package/types/slotted-angular-form.d.ts +298 -0
- package/types/slotted-angular-form.d.ts.map +1 -0
- package/types/slotted-angular-fullscreen.d.ts +145 -0
- package/types/slotted-angular-fullscreen.d.ts.map +1 -0
- package/types/slotted-angular-grid.d.ts +50 -0
- package/types/slotted-angular-grid.d.ts.map +1 -0
- package/types/slotted-angular-highlight.d.ts +93 -0
- package/types/slotted-angular-highlight.d.ts.map +1 -0
- package/types/slotted-angular-hover-card.d.ts +140 -0
- package/types/slotted-angular-hover-card.d.ts.map +1 -0
- package/types/slotted-angular-i18n.d.ts +46 -0
- package/types/slotted-angular-i18n.d.ts.map +1 -0
- package/types/slotted-angular-icon.d.ts +94 -0
- package/types/slotted-angular-icon.d.ts.map +1 -0
- package/types/slotted-angular-image.d.ts +251 -0
- package/types/slotted-angular-image.d.ts.map +1 -0
- package/types/slotted-angular-import-export-center.d.ts +351 -0
- package/types/slotted-angular-import-export-center.d.ts.map +1 -0
- package/types/slotted-angular-inline-message.d.ts +195 -0
- package/types/slotted-angular-inline-message.d.ts.map +1 -0
- package/types/slotted-angular-inline.d.ts +41 -0
- package/types/slotted-angular-inline.d.ts.map +1 -0
- package/types/slotted-angular-kbd.d.ts +174 -0
- package/types/slotted-angular-kbd.d.ts.map +1 -0
- package/types/slotted-angular-link.d.ts +94 -0
- package/types/slotted-angular-link.d.ts.map +1 -0
- package/types/slotted-angular-list-item.d.ts +210 -0
- package/types/slotted-angular-list-item.d.ts.map +1 -0
- package/types/slotted-angular-list.d.ts +176 -0
- package/types/slotted-angular-list.d.ts.map +1 -0
- package/types/slotted-angular-listbox.d.ts +470 -0
- package/types/slotted-angular-listbox.d.ts.map +1 -0
- package/types/slotted-angular-loading-overlay.d.ts +219 -0
- package/types/slotted-angular-loading-overlay.d.ts.map +1 -0
- package/types/slotted-angular-markdown.d.ts +172 -0
- package/types/slotted-angular-markdown.d.ts.map +1 -0
- package/types/slotted-angular-menu.d.ts +448 -0
- package/types/slotted-angular-menu.d.ts.map +1 -0
- package/types/slotted-angular-menubar.d.ts +90 -0
- package/types/slotted-angular-menubar.d.ts.map +1 -0
- package/types/slotted-angular-message-scroller.d.ts +151 -0
- package/types/slotted-angular-message-scroller.d.ts.map +1 -0
- package/types/slotted-angular-message.d.ts +348 -0
- package/types/slotted-angular-message.d.ts.map +1 -0
- package/types/slotted-angular-multi-select.d.ts +462 -0
- package/types/slotted-angular-multi-select.d.ts.map +1 -0
- package/types/slotted-angular-navigation-menu.d.ts +309 -0
- package/types/slotted-angular-navigation-menu.d.ts.map +1 -0
- package/types/slotted-angular-notification-center.d.ts +318 -0
- package/types/slotted-angular-notification-center.d.ts.map +1 -0
- package/types/slotted-angular-number-field.d.ts +402 -0
- package/types/slotted-angular-number-field.d.ts.map +1 -0
- package/types/slotted-angular-otp-input.d.ts +286 -0
- package/types/slotted-angular-otp-input.d.ts.map +1 -0
- package/types/slotted-angular-page-header.d.ts +334 -0
- package/types/slotted-angular-page-header.d.ts.map +1 -0
- package/types/slotted-angular-page.d.ts +141 -0
- package/types/slotted-angular-page.d.ts.map +1 -0
- package/types/slotted-angular-pagination.d.ts +213 -0
- package/types/slotted-angular-pagination.d.ts.map +1 -0
- package/types/slotted-angular-popover.d.ts +366 -0
- package/types/slotted-angular-popover.d.ts.map +1 -0
- package/types/slotted-angular-progress-indicator.d.ts +312 -0
- package/types/slotted-angular-progress-indicator.d.ts.map +1 -0
- package/types/slotted-angular-prompt-composer.d.ts +242 -0
- package/types/slotted-angular-prompt-composer.d.ts.map +1 -0
- package/types/slotted-angular-prose.d.ts +171 -0
- package/types/slotted-angular-prose.d.ts.map +1 -0
- package/types/slotted-angular-radio-group.d.ts +268 -0
- package/types/slotted-angular-radio-group.d.ts.map +1 -0
- package/types/slotted-angular-rating.d.ts +374 -0
- package/types/slotted-angular-rating.d.ts.map +1 -0
- package/types/slotted-angular-result-state.d.ts +217 -0
- package/types/slotted-angular-result-state.d.ts.map +1 -0
- package/types/slotted-angular-saved-views.d.ts +198 -0
- package/types/slotted-angular-saved-views.d.ts.map +1 -0
- package/types/slotted-angular-scroll-area.d.ts +186 -0
- package/types/slotted-angular-scroll-area.d.ts.map +1 -0
- package/types/slotted-angular-section.d.ts +143 -0
- package/types/slotted-angular-section.d.ts.map +1 -0
- package/types/slotted-angular-segmented-control.d.ts +251 -0
- package/types/slotted-angular-segmented-control.d.ts.map +1 -0
- package/types/slotted-angular-select.d.ts +507 -0
- package/types/slotted-angular-select.d.ts.map +1 -0
- package/types/slotted-angular-side-navigation.d.ts +373 -0
- package/types/slotted-angular-side-navigation.d.ts.map +1 -0
- package/types/slotted-angular-skeleton.d.ts +198 -0
- package/types/slotted-angular-skeleton.d.ts.map +1 -0
- package/types/slotted-angular-slider.d.ts +216 -0
- package/types/slotted-angular-slider.d.ts.map +1 -0
- package/types/slotted-angular-sparkline.d.ts +106 -0
- package/types/slotted-angular-sparkline.d.ts.map +1 -0
- package/types/slotted-angular-split-button.d.ts +180 -0
- package/types/slotted-angular-split-button.d.ts.map +1 -0
- package/types/slotted-angular-splitter.d.ts +206 -0
- package/types/slotted-angular-splitter.d.ts.map +1 -0
- package/types/slotted-angular-stack.d.ts +38 -0
- package/types/slotted-angular-stack.d.ts.map +1 -0
- package/types/slotted-angular-stat-card.d.ts +232 -0
- package/types/slotted-angular-stat-card.d.ts.map +1 -0
- package/types/slotted-angular-status-indicator.d.ts +106 -0
- package/types/slotted-angular-status-indicator.d.ts.map +1 -0
- package/types/slotted-angular-stepper.d.ts +198 -0
- package/types/slotted-angular-stepper.d.ts.map +1 -0
- package/types/slotted-angular-switch.d.ts +243 -0
- package/types/slotted-angular-switch.d.ts.map +1 -0
- package/types/slotted-angular-table-of-contents.d.ts +210 -0
- package/types/slotted-angular-table-of-contents.d.ts.map +1 -0
- package/types/slotted-angular-table.d.ts +888 -0
- package/types/slotted-angular-table.d.ts.map +1 -0
- package/types/slotted-angular-tabs.d.ts +340 -0
- package/types/slotted-angular-tabs.d.ts.map +1 -0
- package/types/slotted-angular-tag.d.ts +279 -0
- package/types/slotted-angular-tag.d.ts.map +1 -0
- package/types/slotted-angular-tags-input.d.ts +302 -0
- package/types/slotted-angular-tags-input.d.ts.map +1 -0
- package/types/slotted-angular-text-field.d.ts +334 -0
- package/types/slotted-angular-text-field.d.ts.map +1 -0
- package/types/slotted-angular-textarea.d.ts +150 -0
- package/types/slotted-angular-textarea.d.ts.map +1 -0
- package/types/slotted-angular-theme.d.ts +26 -0
- package/types/slotted-angular-theme.d.ts.map +1 -0
- package/types/slotted-angular-time-field.d.ts +300 -0
- package/types/slotted-angular-time-field.d.ts.map +1 -0
- package/types/slotted-angular-time-picker.d.ts +260 -0
- package/types/slotted-angular-time-picker.d.ts.map +1 -0
- package/types/slotted-angular-time-range-picker.d.ts +401 -0
- package/types/slotted-angular-time-range-picker.d.ts.map +1 -0
- package/types/slotted-angular-timeline.d.ts +329 -0
- package/types/slotted-angular-timeline.d.ts.map +1 -0
- package/types/slotted-angular-toast.d.ts +340 -0
- package/types/slotted-angular-toast.d.ts.map +1 -0
- package/types/slotted-angular-toggle-group.d.ts +167 -0
- package/types/slotted-angular-toggle-group.d.ts.map +1 -0
- package/types/slotted-angular-toggle.d.ts +106 -0
- package/types/slotted-angular-toggle.d.ts.map +1 -0
- package/types/slotted-angular-toolbar.d.ts +252 -0
- package/types/slotted-angular-toolbar.d.ts.map +1 -0
- package/types/slotted-angular-tooltip.d.ts +388 -0
- package/types/slotted-angular-tooltip.d.ts.map +1 -0
- package/types/slotted-angular-top-navigation.d.ts +442 -0
- package/types/slotted-angular-top-navigation.d.ts.map +1 -0
- package/types/slotted-angular-tour.d.ts +440 -0
- package/types/slotted-angular-tour.d.ts.map +1 -0
- package/types/slotted-angular-transfer.d.ts +296 -0
- package/types/slotted-angular-transfer.d.ts.map +1 -0
- package/types/slotted-angular-tree.d.ts +499 -0
- package/types/slotted-angular-tree.d.ts.map +1 -0
- package/types/slotted-angular-typography.d.ts +89 -0
- package/types/slotted-angular-typography.d.ts.map +1 -0
- package/types/slotted-angular-upload.d.ts +365 -0
- package/types/slotted-angular-upload.d.ts.map +1 -0
- package/types/slotted-angular-visually-hidden.d.ts +19 -0
- package/types/slotted-angular-visually-hidden.d.ts.map +1 -0
- package/types/slotted-angular-wizard.d.ts +441 -0
- package/types/slotted-angular-wizard.d.ts.map +1 -0
- package/types/slotted-angular.d.ts +3 -0
- package/types/slotted-angular.d.ts.map +1 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slotted-angular-calendar.mjs","sources":["../../calendar/src/calendar-defaults.ts","../../calendar/src/calendar-selection.ts","../../calendar/src/calendar.ts","../../calendar/src/slotted-angular-calendar.ts"],"sourcesContent":["import { inject, InjectionToken } from '@angular/core';\nimport type { PlainDate } from '@slotted/core/date';\n\n/** A run of days, either end of which may still be open while it is drawn. */\nexport interface DateRange {\n readonly start: PlainDate | null;\n readonly end: PlainDate | null;\n}\n\n/**\n * What the calendar holds, which depends on what it was asked to collect: one\n * date, a run of them, or a set.\n */\nexport type CalendarValue = PlainDate | DateRange | PlainDate[] | null;\n\n/** How many dates the reader may choose. */\nexport type CalendarSelectionMode = 'single' | 'range' | 'multiple';\n\n/** Which grid the calendar is showing. The heading walks up; Escape walks down. */\nexport type CalendarView = 'day' | 'month' | 'year';\n\n/** What happens to a day belonging to the month either side. */\nexport type CalendarOutsideDays = 'shown' | 'selectable' | 'hidden';\n\n/**\n * The calendar system the value is written in. One value today, and an axis\n * rather than a silence: a second calendar system is a second arithmetic, and\n * declaring the axis now is what keeps its arrival from being a contract break.\n */\nexport type CalendarCalendar = 'gregory';\n\nexport interface CalendarDefaults {\n calendar: CalendarCalendar;\n firstDayOfWeek: number | undefined;\n fixedWeeks: boolean;\n months: number;\n /**\n * Unset is not `shown`: a calendar showing one month draws the days either\n * side of it, and a calendar showing two would draw the same six days in\n * both grids. See the resolution in `calendar.ts`.\n */\n outsideDays: CalendarOutsideDays | undefined;\n timeZone: string | undefined;\n weekNumbers: boolean;\n}\n\nconst FALLBACK: CalendarDefaults = {\n calendar: 'gregory',\n firstDayOfWeek: undefined,\n fixedWeeks: false,\n months: 1,\n outsideDays: undefined,\n timeZone: undefined,\n weekNumbers: false,\n};\n\nexport const CALENDAR_DEFAULTS = new InjectionToken<CalendarDefaults>('slotted calendar defaults', {\n providedIn: 'root',\n factory: () => FALLBACK,\n});\n\n/**\n * An application decides once which day its weeks start on, which zone answers\n * \"today\" and whether its calendars keep a fixed six-row grid — rather than\n * repeating the same inputs on every instance. Its words and the locale that\n * writes its months come from the language in force (`provideSlotted`).\n *\n * `fixedWeeks` is the one worth setting where calendars live in popovers: a\n * surface that grows a row between one press of \"next\" and the next moves the\n * target the reader was aiming at.\n */\nexport function provideCalendarDefaults(defaults: Partial<CalendarDefaults>) {\n return {\n provide: CALENDAR_DEFAULTS,\n useFactory: (): CalendarDefaults => ({ ...FALLBACK, ...defaults }),\n };\n}\n\n/** What a calendar renders as here, before it states anything of its own. */\nexport function injectCalendarDefaults(): CalendarDefaults {\n return inject(CALENDAR_DEFAULTS);\n}\n","/**\n * What choosing a date does to a value, in the three modes the family ships.\n *\n * It is separate from the component because none of it touches the DOM: a\n * range that is completed, a range that is restarted, and a set that a second\n * press takes a date back out of are all arithmetic over `PlainDate`, and the\n * two bindings must not each decide them.\n */\n\nimport { compareDate, isSameDate } from '@slotted/core/date';\nimport type { PlainDate } from '@slotted/core/date';\n\nimport type { CalendarSelectionMode, CalendarValue, DateRange } from './calendar-defaults';\n\nexport function isRange(value: CalendarValue): value is DateRange {\n return value !== null && !Array.isArray(value) && 'start' in value;\n}\n\nexport function asDates(value: CalendarValue): PlainDate[] {\n if (value === null) return [];\n if (Array.isArray(value)) return value;\n if (isRange(value)) return [value.start, value.end].filter((date) => date !== null);\n return [value];\n}\n\n/**\n * Whether a date is one of the two ends of a run, inside it, or none of the\n * three. A range with one end open has a start and no run, which is what the\n * calendar draws while the reader is choosing the second date.\n */\nexport function rangeStateOf(\n date: PlainDate,\n value: CalendarValue,\n): 'start' | 'end' | 'inside' | null {\n if (!isRange(value)) return null;\n const { start, end } = value;\n if (start !== null && isSameDate(date, start)) return 'start';\n if (end !== null && isSameDate(date, end)) return 'end';\n if (start === null || end === null) return null;\n return compareDate(date, start) > 0 && compareDate(date, end) < 0 ? 'inside' : null;\n}\n\nexport function isSelected(date: PlainDate, value: CalendarValue): boolean {\n if (isRange(value)) {\n const state = rangeStateOf(date, value);\n return state === 'start' || state === 'end';\n }\n return asDates(value).some((candidate) => isSameDate(candidate, date));\n}\n\n/**\n * The value a press produces.\n *\n * A range takes two presses and the second one may come first: a reader who\n * chooses the 11th and then the 7th means the 7th to the 11th, not a range\n * that runs backwards. A third press starts again, because a range that grew\n * on every press could never be narrowed.\n *\n * A set removes a date a second press lands on, which is the only way to take\n * one back out without a second control.\n */\nexport function nextValue(\n date: PlainDate,\n value: CalendarValue,\n mode: CalendarSelectionMode,\n): CalendarValue {\n if (mode === 'single') {\n return isSelected(date, value) ? null : date;\n }\n\n if (mode === 'multiple') {\n const held = asDates(value);\n const without = held.filter((candidate) => !isSameDate(candidate, date));\n if (without.length !== held.length) return without;\n return [...held, date].sort(compareDate);\n }\n\n const run = isRange(value) ? value : { start: null, end: null };\n if (run.start === null || run.end !== null) return { start: date, end: null };\n return compareDate(date, run.start) < 0\n ? { start: date, end: run.start }\n : { start: run.start, end: date };\n}\n\n/**\n * The run the grid draws while the reader is choosing the second end: from\n * the chosen start to the pending end — the day under the pointer, or the\n * focused day — ordered the way the second press will order it. `null` while\n * there is no open run, so a whole range and a single date preview nothing.\n */\nexport function previewRun(value: CalendarValue, pending: PlainDate | null): DateRange | null {\n if (pending === null || !isRange(value) || value.start === null || value.end !== null)\n return null;\n return compareDate(pending, value.start) < 0\n ? { start: pending, end: value.start }\n : { start: value.start, end: pending };\n}\n\n/** Value equality, which `Object.is` cannot give for a run or a set. */\nexport function isSameValue(a: CalendarValue, b: CalendarValue): boolean {\n if (isRange(a) || isRange(b)) {\n if (!isRange(a) || !isRange(b)) return false;\n return isSameDate(a.start, b.start) && isSameDate(a.end, b.end);\n }\n const left = asDates(a);\n const right = asDates(b);\n if (left.length !== right.length) return false;\n return left.every((date, index) => isSameDate(date, right[index] ?? null));\n}\n","import {\n addDays,\n clampDate,\n createDateFormat,\n endOfWeek,\n isDateInRange,\n isSameDate,\n monthGrid,\n plainDate,\n startOfWeek,\n stepMonth,\n stepYear,\n todayIn,\n visibleMonths,\n yearPage,\n} from '@slotted/core/date';\nimport type { CalendarDay, CalendarWeek, PlainDate } from '@slotted/core/date';\nimport { createControllable } from '@slotted/core/state';\nimport type { ChangeReason, ChangeRequest } from '@slotted/core/state';\nimport {\n afterNextRender,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n inject,\n Injector,\n input,\n numberAttribute,\n output,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport type { OnInit } from '@angular/core';\nimport { injectLocale, injectMessages } from '@slotted/angular/i18n';\nimport { SlGlyph, SlIcon } from '@slotted/angular/icon';\nimport { calendarMessages, type CalendarMessages, type PartialMessages } from '@slotted/core/i18n';\n\nimport { injectCalendarDefaults } from './calendar-defaults';\nimport type {\n CalendarCalendar,\n CalendarOutsideDays,\n CalendarSelectionMode,\n CalendarValue,\n CalendarView,\n} from './calendar-defaults';\nimport {\n isRange,\n isSameValue,\n isSelected,\n nextValue,\n previewRun,\n rangeStateOf,\n} from './calendar-selection';\n\n/** How many years one page of the year view holds. */\nconst YEAR_PAGE = 12;\n/** The heading needs an identifier every grid can point `aria-labelledby` at. */\nlet sequence = 0;\n\n/**\n * A month grid, and the two pages above it.\n *\n * **It is a real `table` with the `grid` role on it.** The APG's own note is\n * why nothing here writes `row`, `columnheader` or `gridcell`: those are\n * implied by `tr`, `th` and `td`, and writing them again would duplicate\n * semantics the platform already gives.\n *\n * **The date the reader is on and the date the reader has chosen are two\n * values**, and each has a model of its own — a product that pages a calendar\n * from outside it has nowhere else to say so.\n *\n * **A date the predicate refuses stays reachable.** It carries `aria-disabled`\n * rather than being taken out of the grid, so a reader can arrow onto it, hear\n * why it is out, and arrow past it.\n */\n@Component({\n selector: '[slCalendar]',\n standalone: true,\n exportAs: 'slCalendar',\n imports: [SlGlyph, SlIcon],\n template: `<div data-part=\"header\">\n <button\n data-part=\"previous\"\n type=\"button\"\n [attr.aria-label]=\"t('previous')\"\n [disabled]=\"!editable()\"\n (click)=\"turnPage(-1, $event)\"\n >\n <span slIcon directional><svg slGlyph name=\"chevron-right\"></svg></span>\n </button>\n <!--\n The heading is a live region: paging with a key changes nothing that\n focus lands on, so without this nothing announces the new month.\n -->\n <button\n data-part=\"heading\"\n type=\"button\"\n aria-live=\"polite\"\n [attr.id]=\"headingId\"\n [disabled]=\"!editable() || currentView() === 'year'\"\n (click)=\"walkUp()\"\n >\n {{ heading() }}\n @if (currentView() !== 'year') {\n <span slIcon><svg slGlyph name=\"chevron-down\"></svg></span>\n }\n </button>\n <button\n data-part=\"next\"\n type=\"button\"\n [attr.aria-label]=\"t('next')\"\n [disabled]=\"!editable()\"\n (click)=\"turnPage(1, $event)\"\n >\n <span slIcon directional><svg slGlyph name=\"chevron-right\"></svg></span>\n </button>\n </div>\n\n @switch (currentView()) {\n @case ('day') {\n <div data-part=\"grids\">\n @for (month of shownMonths(); track month.year * 12 + month.month) {\n <table data-part=\"grid\" role=\"grid\" [attr.aria-labelledby]=\"headingId\">\n <caption data-part=\"grid-caption\">\n {{\n captionOf(month)\n }}\n </caption>\n <thead>\n <tr data-part=\"week-headers\">\n @if (resolvedWeekNumbers()) {\n <th data-part=\"week-number\" aria-hidden=\"true\"></th>\n }\n @for (name of weekdayNarrow(); track $index) {\n <th data-part=\"week-header\" scope=\"col\" [attr.abbr]=\"weekdayLong()[$index]\">\n {{ name }}\n </th>\n }\n </tr>\n </thead>\n <tbody>\n @for (week of weeksOf(month); track week.weekNumber) {\n <tr data-part=\"week\">\n @if (resolvedWeekNumbers()) {\n <th data-part=\"week-number\" scope=\"row\">{{ week.weekNumber }}</th>\n }\n @for (\n day of week.days;\n track day.date.year * 400 + day.date.month * 32 + day.date.day\n ) {\n <!-- A hidden day is an empty cell and nothing else. It\n carried the marks of the date it stood for, so a\n range across a month boundary painted a band with no\n digits under it. -->\n <td\n data-part=\"cell\"\n [attr.data-outside-month]=\"day.outsideMonth ? '' : null\"\n [attr.data-unavailable]=\"\n !drawn(day) ? null : unavailable(day.date) ? '' : null\n \"\n [attr.data-selected]=\"!drawn(day) ? null : chosen(day.date) ? '' : null\"\n [attr.data-range-start]=\"\n drawn(day) && rangeState(day.date) === 'start' ? '' : null\n \"\n [attr.data-range-end]=\"\n drawn(day) && rangeState(day.date) === 'end' ? '' : null\n \"\n [attr.data-in-range]=\"\n drawn(day) && rangeState(day.date) === 'inside' ? '' : null\n \"\n [attr.data-preview]=\"drawn(day) && proposed(day.date) ? '' : null\"\n >\n @if (drawn(day)) {\n <span\n data-part=\"day\"\n role=\"button\"\n [attr.data-today]=\"isToday(day.date) ? '' : null\"\n [attr.aria-selected]=\"chosen(day.date) ? 'true' : null\"\n [attr.aria-disabled]=\"refused(day) ? 'true' : null\"\n [tabindex]=\"tabIndexOf(day.date)\"\n (click)=\"!refused(day) && select(day.date, 'pointer', $event)\"\n (pointerenter)=\"hovered.set(day.date)\"\n (pointerleave)=\"hovered.set(null)\"\n >\n {{ day.date.day }}\n </span>\n }\n </td>\n }\n </tr>\n }\n </tbody>\n </table>\n }\n </div>\n }\n @case ('month') {\n <div data-part=\"months\">\n @for (name of monthNames(); track $index) {\n <button\n data-part=\"period\"\n type=\"button\"\n [attr.data-selected]=\"focused().month === $index + 1 ? '' : null\"\n [attr.aria-selected]=\"focused().month === $index + 1 ? 'true' : null\"\n (click)=\"pickMonth($index + 1, $event)\"\n >\n {{ name }}\n </button>\n }\n </div>\n }\n @default {\n <div data-part=\"years\">\n @for (year of years(); track year) {\n <button\n data-part=\"period\"\n type=\"button\"\n [attr.data-selected]=\"focused().year === year ? '' : null\"\n [attr.aria-selected]=\"focused().year === year ? 'true' : null\"\n (click)=\"pickYear(year, $event)\"\n >\n {{ year }}\n </button>\n }\n </div>\n }\n }`,\n styleUrl: '../../../styles/src/calendar/calendar.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-ui': 'calendar',\n 'data-part': 'root',\n '[attr.data-view]': 'currentView()',\n '[attr.data-calendar]': 'resolvedCalendar()',\n '[attr.data-months]': 'resolvedMonths() > 1 ? resolvedMonths() : null',\n '[attr.data-week-numbers]': \"resolvedWeekNumbers() ? '' : null\",\n '[attr.data-disabled]': \"disabled() === true ? '' : null\",\n '[attr.data-readonly]': \"readOnly() === true ? '' : null\",\n '[attr.data-invalid]': \"invalid() === true ? '' : null\",\n '(keydown)': 'onKeyDown($event)',\n },\n})\nexport class SlCalendar implements OnInit {\n /** Present means the consumer owns the value. */\n readonly value = input<CalendarValue | undefined>(undefined);\n readonly defaultValue = input<CalendarValue | undefined>(undefined);\n /** The date the reader is on. Present means the consumer owns it. */\n readonly focusedDate = input<PlainDate | undefined>(undefined);\n readonly defaultFocusedDate = input<PlainDate | undefined>(undefined);\n\n readonly min = input<PlainDate | undefined>(undefined);\n readonly max = input<PlainDate | undefined>(undefined);\n readonly isDateUnavailable = input<((date: PlainDate) => boolean) | undefined>(undefined);\n\n readonly selectionMode = input<CalendarSelectionMode>('single');\n readonly months = input<number | undefined, unknown>(undefined, {\n transform: (value) =>\n value === undefined || value === null ? undefined : numberAttribute(value),\n });\n /** Present means the consumer owns which grid is showing. */\n readonly view = input<CalendarView | undefined>(undefined);\n readonly defaultView = input<CalendarView | undefined>(undefined);\n\n readonly weekNumbers = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n readonly fixedWeeks = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n readonly outsideDays = input<CalendarOutsideDays | undefined>(undefined);\n\n /** The locale that writes months and days. Unset, the language in force decides. */\n readonly locale = input<string | undefined>(undefined);\n readonly timeZone = input<string | undefined>(undefined);\n readonly firstDayOfWeek = input<number | undefined, unknown>(undefined, {\n transform: (value) =>\n value === undefined || value === null ? undefined : numberAttribute(value),\n });\n readonly calendar = input<CalendarCalendar | undefined>(undefined);\n\n readonly disabled = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n readonly readOnly = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n readonly invalid = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n\n /**\n * Words laid over the catalog of the language in force, key by key: the\n * names of the previous and next triggers.\n */\n readonly messages = input<PartialMessages<CalendarMessages> | undefined>(undefined);\n\n readonly valueChange = output<ChangeRequest<CalendarValue>>();\n readonly focusedDateChange = output<ChangeRequest<PlainDate>>();\n readonly viewChange = output<CalendarView>();\n /**\n * The pending end of an open run: the day under the pointer, or the focused\n * day when no pointer is over the grid, and `null` while no run is open. A\n * fact the grid states rather than a value the consumer owns, which is why\n * it is an output and not a model — `date-range-picker` reads it to say how\n * long the run would be.\n */\n readonly previewChange = output<PlainDate | null>();\n\n private readonly element = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n private readonly injector = inject(Injector);\n private readonly defaults = injectCalendarDefaults();\n private readonly appLocale = injectLocale();\n /** The family's words in the language in force, with this calendar's `messages` laid over them. */\n readonly t = injectMessages(calendarMessages, this.messages);\n\n protected readonly headingId = `sl-calendar-${String((sequence += 1))}`;\n\n private readonly ownValue = signal<CalendarValue>(null);\n private readonly ownFocused = signal<PlainDate>(plainDate(2026, 1, 1));\n private readonly ownView = signal<CalendarView>('day');\n /**\n * The first month on screen, which is **not** the month the reader is on.\n *\n * Drawing two months from the focused date meant that choosing a day in the\n * second one scrolled the pair: a reader looking at June and July who chose\n * 9 June was shown July and August, with half of what they had just chosen\n * off screen. The page moves only when the reader leaves it.\n */\n private readonly page = signal<{ year: number; month: number }>({ year: 2026, month: 1 });\n private readonly today = signal<PlainDate | null>(null);\n /** Focus is only moved into the DOM after a key, never on a render. */\n private restoreFocus = false;\n\n protected readonly held = computed(() => this.value() ?? this.ownValue());\n protected readonly focused = computed(() => this.focusedDate() ?? this.ownFocused());\n /** Which grid is showing. Public, so a template reaches it through `exportAs`. */\n readonly currentView = computed(() => this.view() ?? this.ownView());\n\n protected readonly resolvedMonths = computed(() =>\n Math.max(1, this.months() ?? this.defaults.months),\n );\n protected readonly resolvedWeekNumbers = computed(\n () => this.weekNumbers() ?? this.defaults.weekNumbers,\n );\n protected readonly resolvedFixedWeeks = computed(\n () => this.fixedWeeks() ?? this.defaults.fixedWeeks,\n );\n /**\n * One month draws the days either side of it, because a week that starts on\n * the 30th of the month before has to say what that cell is. Two months\n * cannot: September's grid ends with the first three days of October and\n * October's begins with the last four of September, so a range across the\n * boundary is painted twice and a reader sees an interval twice as long as\n * the one chosen. Every surveyed multi-month calendar hides them, and so\n * does this one — until the consumer says otherwise, on the instance or on\n * the provider.\n */\n protected readonly resolvedOutsideDays = computed(\n () =>\n this.outsideDays() ??\n this.defaults.outsideDays ??\n (this.resolvedMonths() > 1 ? 'hidden' : 'shown'),\n );\n protected readonly resolvedCalendar = computed(() => this.calendar() ?? this.defaults.calendar);\n protected readonly editable = computed(\n () => this.disabled() !== true && this.readOnly() !== true,\n );\n\n protected readonly format = computed(() =>\n createDateFormat({\n locale: this.locale() ?? this.appLocale(),\n firstDayOfWeek: this.firstDayOfWeek() ?? this.defaults.firstDayOfWeek,\n }),\n );\n\n protected readonly weekdayLong = computed(() => this.format().weekdayNames('long'));\n protected readonly weekdayNarrow = computed(() => this.format().weekdayNames('narrow'));\n protected readonly monthNames = computed(() => this.format().monthNames('short'));\n protected readonly years = computed(() => yearPage(this.focused().year, YEAR_PAGE));\n protected readonly shownMonths = computed(() =>\n visibleMonths(this.page(), this.resolvedMonths()),\n );\n\n protected readonly heading = computed(() => {\n const focused = this.focused();\n const format = this.format();\n if (this.currentView() === 'year') {\n const years = this.years();\n return `${String(years[0] ?? focused.year)} – ${String(years.at(-1) ?? focused.year)}`;\n }\n if (this.currentView() === 'month') return String(focused.year);\n\n const page = this.page();\n const start = plainDate(page.year, page.month, 1);\n if (this.resolvedMonths() === 1) return format.monthYear(start);\n const last = stepMonth(start, this.resolvedMonths() - 1).date;\n return `${format.monthYear(start, 'short')} – ${format.monthYear(last, 'short')}`;\n });\n\n constructor() {\n /**\n * The page follows the reader, and only when the reader has left it.\n * Written as an effect rather than inside the request, so a consumer who\n * owns `focusedDate` and moves it from outside is followed too.\n */\n /* The pending end, reported once per change and never while it is the\n same day: a pointer crossing a cell twice is one fact, not two. */\n let reported: PlainDate | null = null;\n effect(() => {\n const end = this.previewEnd();\n if (isSameDate(reported, end)) return;\n reported = end;\n this.previewChange.emit(end);\n });\n\n effect(() => {\n const focused = this.focused();\n const held = this.page();\n const span = this.resolvedMonths();\n const start = held.year * 12 + (held.month - 1);\n const wanted = focused.year * 12 + (focused.month - 1);\n if (wanted >= start && wanted < start + span) return;\n /* Outside the span: the page moves by whole pages, so a reader stepping\n past the edge lands where the arrows would have taken them. */\n const moved = start + Math.floor((wanted - start) / span) * span;\n this.page.set({ year: Math.floor(moved / 12), month: (moved % 12) + 1 });\n });\n }\n\n ngOnInit() {\n this.ownValue.set(this.defaultValue() ?? null);\n this.ownView.set(this.defaultView() ?? 'day');\n this.today.set(todayIn(this.timeZone() ?? this.defaults.timeZone));\n const start = this.startingDate();\n this.ownFocused.set(start);\n this.page.set({ year: start.year, month: start.month });\n }\n\n /** Puts focus on the cell holding the roving tab stop. */\n focus() {\n this.element.querySelector<HTMLElement>('[data-part=\"day\"][tabindex=\"0\"]')?.focus();\n }\n\n /** Moves the reader to a date, paging the grid to reach it. */\n focusDate(date: PlainDate) {\n this.requestFocused(date, 'programmatic', undefined);\n }\n\n /** The date, the run or the set the calendar holds. */\n readonly selection = computed(() => this.held());\n\n protected captionOf(month: { year: number; month: number }) {\n return this.format().monthYear(plainDate(month.year, month.month, 1));\n }\n\n protected weeksOf(month: { year: number; month: number }): CalendarWeek[] {\n return monthGrid({\n ...month,\n firstDayOfWeek: this.format().firstDayOfWeek,\n fixedWeeks: this.resolvedFixedWeeks(),\n });\n }\n\n protected unavailable(date: PlainDate): boolean {\n if (!isDateInRange(date, this.min(), this.max())) return true;\n return this.isDateUnavailable()?.(date) === true;\n }\n\n /** Unavailable, or an outside day the axis says may not be chosen. */\n /** Whether the cell carries a day at all, or stands empty to fill the row. */\n protected drawn(day: CalendarDay): boolean {\n return !(day.outsideMonth && this.resolvedOutsideDays() === 'hidden');\n }\n\n /**\n * The grid already knows which month a day belongs to, and asking the first\n * shown month instead refused every day of the second one in a pair.\n */\n protected refused(day: CalendarDay): boolean {\n if (this.unavailable(day.date)) return true;\n return day.outsideMonth && this.resolvedOutsideDays() === 'shown';\n }\n\n protected chosen(date: PlainDate): boolean {\n return isSelected(date, this.held());\n }\n\n /**\n * The day under the pointer, held only to name the pending end of an open\n * run. It never moves the roving focus: a pointer crossing the grid is not\n * the reader choosing where they are.\n */\n protected readonly hovered = signal<PlainDate | null>(null);\n\n /** The run as it would close on the pending end; `null` while no run is open. */\n private readonly pending = computed(() =>\n this.selectionMode() === 'range' && this.editable()\n ? previewRun(this.held(), this.hovered() ?? this.focused())\n : null,\n );\n\n private readonly previewEnd = computed(() => {\n const pending = this.pending();\n const held = this.held();\n if (pending === null) return null;\n return isRange(held) && held.start !== null && isSameDate(pending.start, held.start)\n ? pending.end\n : pending.start;\n });\n\n protected rangeState(date: PlainDate) {\n return rangeStateOf(date, this.pending() ?? this.held());\n }\n\n /** Every cell of the pending band is a proposal except the start the reader chose. */\n protected proposed(date: PlainDate): boolean {\n return this.pending() !== null && this.rangeState(date) !== null && !this.chosen(date);\n }\n\n protected isToday(date: PlainDate): boolean {\n const today = this.today();\n return today !== null && isSameDate(date, today);\n }\n\n protected tabIndexOf(date: PlainDate): number {\n return isSameDate(date, this.focused()) && this.editable() ? 0 : -1;\n }\n\n protected select(date: PlainDate, reason: ChangeReason, source: Event | undefined) {\n if (!this.editable() || this.unavailable(date)) return;\n this.requestValue(nextValue(date, this.held(), this.selectionMode()), reason, source);\n this.requestFocused(date, reason, source);\n }\n\n /** The reader moves with the page rather than staying behind it. */\n protected turnPage(direction: 1 | -1, source: Event) {\n const focused = this.focused();\n if (this.currentView() === 'day') {\n this.requestFocused(\n stepMonth(focused, direction * this.resolvedMonths()).date,\n 'pointer',\n source,\n );\n return;\n }\n const step = this.currentView() === 'month' ? direction : direction * YEAR_PAGE;\n this.requestFocused(stepYear(focused, step).date, 'pointer', source);\n }\n\n protected walkUp() {\n this.setView(this.currentView() === 'day' ? 'month' : 'year');\n }\n\n protected pickMonth(month: number, source: Event) {\n this.requestFocused({ ...this.focused(), month, day: 1 }, 'pointer', source);\n this.setView('day');\n }\n\n protected pickYear(year: number, source: Event) {\n this.requestFocused({ ...this.focused(), year, day: 1 }, 'pointer', source);\n this.setView('month');\n }\n\n protected onKeyDown(event: KeyboardEvent) {\n const rtl = getComputedStyle(this.element).direction === 'rtl';\n const forward = rtl ? 'ArrowLeft' : 'ArrowRight';\n const backward = rtl ? 'ArrowRight' : 'ArrowLeft';\n const focused = this.focused();\n const first = this.format().firstDayOfWeek;\n\n /**\n * A key the grid acted on is the grid's, and nothing above it sees it.\n * An application that binds a bare key guards it with \"is the target an\n * editable element\", and a `td` is not one — so the arrows a reader walks\n * a month with would fire every shortcut on the page.\n */\n const consume = () => {\n event.preventDefault();\n event.stopPropagation();\n };\n\n const move = (next: PlainDate) => {\n consume();\n this.requestFocused(next, 'keyboard', event);\n };\n\n switch (event.key) {\n case forward:\n return move(addDays(focused, 1));\n case backward:\n return move(addDays(focused, -1));\n case 'ArrowUp':\n return move(addDays(focused, -7));\n case 'ArrowDown':\n return move(addDays(focused, 7));\n case 'Home':\n return move(startOfWeek(focused, first));\n case 'End':\n return move(endOfWeek(focused, first));\n case 'PageUp':\n return move(event.shiftKey ? stepYear(focused, -1).date : stepMonth(focused, -1).date);\n case 'PageDown':\n return move(event.shiftKey ? stepYear(focused, 1).date : stepMonth(focused, 1).date);\n case 'Enter':\n case ' ':\n consume();\n this.select(focused, 'keyboard', event);\n return;\n case 'Escape':\n /* The view closes before the surface does, which is the staging\n `dismissable-layer` asks a family to do: the key is simply not\n passed on, and no layer is asked to close. */\n /* In the day view the key is left alone, so a surface above the\n calendar may still close on it. */\n if (this.currentView() === 'day') return;\n consume();\n this.setView(this.currentView() === 'year' ? 'month' : 'day');\n return;\n default:\n return;\n }\n }\n\n /**\n * The first date the reader is put on: what a consumer said, then the value\n * it holds, then today. A calendar that opened on an arbitrary month would\n * make the reader page to now before doing anything at all.\n */\n private startingDate(): PlainDate {\n const stated = this.defaultFocusedDate() ?? this.focusedDate();\n if (stated !== undefined) return stated;\n const held = this.defaultValue() ?? this.value() ?? null;\n if (held !== null) {\n if (Array.isArray(held)) {\n const first = held[0];\n if (first !== undefined) return first;\n } else if ('start' in held) {\n if (held.start !== null) return held.start;\n } else {\n return held;\n }\n }\n return clampDate(this.today() ?? plainDate(2026, 1, 1), this.min(), this.max());\n }\n\n private setView(next: CalendarView) {\n if (this.view() === undefined) this.ownView.set(next);\n this.viewChange.emit(next);\n }\n\n private requestValue(next: CalendarValue, reason: ChangeReason, source: Event | undefined) {\n const state = createControllable<CalendarValue>({\n controlled: this.value(),\n initial: this.held(),\n equals: isSameValue,\n onRequest: (request) => this.valueChange.emit(request),\n });\n if (state.request(next, reason, source)) this.ownValue.set(next);\n }\n\n private requestFocused(next: PlainDate, reason: ChangeReason, source: Event | undefined) {\n const bounded = clampDate(next, this.min(), this.max());\n const state = createControllable<PlainDate>({\n controlled: this.focusedDate(),\n initial: this.focused(),\n equals: (a, b) => isSameDate(a, b),\n onRequest: (request) => this.focusedDateChange.emit(request),\n });\n this.restoreFocus = reason === 'keyboard';\n if (state.request(bounded, reason, source)) this.ownFocused.set(bounded);\n if (this.restoreFocus) this.followFocus();\n }\n\n /**\n * Focus follows a key onto the cell that holds the roving tab stop, once the\n * page holding it is rendered.\n *\n * A key that crosses the month edge lands on the old page's trailing day\n * first, and the page follows one render later. Focused before that, the\n * cell was replaced under the reader and focus fell to the document — which\n * a consumer owning `focusedDate` met on every crossing. Focus is moved only\n * while it is still in the calendar or was lost to the document, so a\n * consumer that refused the move never has focus taken from elsewhere.\n */\n private followFocus() {\n afterNextRender(\n () => {\n if (!this.restoreFocus) return;\n const active = this.element.ownerDocument.activeElement;\n const lost = active === null || active === this.element.ownerDocument.body;\n if (!lost && !this.element.contains(active)) {\n this.restoreFocus = false;\n return;\n }\n const stop = this.element.querySelector<HTMLElement>(\n '[data-part=\"cell\"]:not([data-outside-month]) [data-part=\"day\"][tabindex=\"0\"]',\n );\n if (stop !== null) {\n this.restoreFocus = false;\n stop.focus();\n return;\n }\n if (this.element.querySelector('[data-part=\"day\"][tabindex=\"0\"]') === null) {\n this.restoreFocus = false;\n return;\n }\n this.followFocus();\n },\n { injector: this.injector },\n );\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { InjectionToken, inject, input, booleanAttribute, computed, ViewEncapsulation, ChangeDetectionStrategy, Component, Directive } from '@angular/core';
|
|
3
|
+
|
|
4
|
+
const CARD_DEFAULTS = new InjectionToken('slotted card defaults', {
|
|
5
|
+
providedIn: 'root',
|
|
6
|
+
factory: () => ({ fill: 'outline', orientation: 'vertical', size: 'md' }),
|
|
7
|
+
});
|
|
8
|
+
/**
|
|
9
|
+
* An application decides once how its cards are bounded and how far they are
|
|
10
|
+
* inset, rather than repeating two inputs on every card. A card that states
|
|
11
|
+
* either itself still wins: an explicit input is never overridden by the token.
|
|
12
|
+
*/
|
|
13
|
+
function provideCardDefaults(defaults) {
|
|
14
|
+
return {
|
|
15
|
+
provide: CARD_DEFAULTS,
|
|
16
|
+
useFactory: () => ({
|
|
17
|
+
fill: defaults.fill ?? 'outline',
|
|
18
|
+
orientation: defaults.orientation ?? 'vertical',
|
|
19
|
+
size: defaults.size ?? 'md',
|
|
20
|
+
}),
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
/** What a card renders as here, before it states anything of its own. */
|
|
24
|
+
function injectCardDefaults() {
|
|
25
|
+
return inject(CARD_DEFAULTS);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* A bounded surface that groups one subject. It claims nothing about what that
|
|
30
|
+
* subject is: the directive is written on the element the page chose, so an
|
|
31
|
+
* `article` with its own heading, the `li` of a list of results and the
|
|
32
|
+
* `label` of a chooser are all the same card.
|
|
33
|
+
*
|
|
34
|
+
* The card holds no state. `selected` and `disabled` mirror state that belongs
|
|
35
|
+
* to the control inside it, which is also what announces them.
|
|
36
|
+
*/
|
|
37
|
+
class SlCard {
|
|
38
|
+
/**
|
|
39
|
+
* `horizontal` puts the media beside the regions and answers the card's own
|
|
40
|
+
* inline size, returning the media to the top in a narrow container.
|
|
41
|
+
*/
|
|
42
|
+
orientation = input(/* @ts-ignore */
|
|
43
|
+
...(ngDevMode ? [undefined, { debugName: "orientation" }] : /* istanbul ignore next */ []));
|
|
44
|
+
/** How the surface is bounded. Falls back to the injected default. */
|
|
45
|
+
fill = input(/* @ts-ignore */
|
|
46
|
+
...(ngDevMode ? [undefined, { debugName: "fill" }] : /* istanbul ignore next */ []));
|
|
47
|
+
/** The card's own inset. Falls back to the injected default. */
|
|
48
|
+
size = input(/* @ts-ignore */
|
|
49
|
+
...(ngDevMode ? [undefined, { debugName: "size" }] : /* istanbul ignore next */ []));
|
|
50
|
+
/**
|
|
51
|
+
* Mirrors a selection the page owns. The card paints it; the control inside
|
|
52
|
+
* announces it.
|
|
53
|
+
*/
|
|
54
|
+
selected = input(false, { ...(ngDevMode ? { debugName: "selected" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
55
|
+
/**
|
|
56
|
+
* Mirrors a control the page has disabled: the card dims, stops answering
|
|
57
|
+
* hover and withdraws the hit area it added. It disables nothing, because
|
|
58
|
+
* only the control inside can refuse an interaction.
|
|
59
|
+
*/
|
|
60
|
+
disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
61
|
+
defaults = injectCardDefaults();
|
|
62
|
+
resolvedOrientation = computed(() => this.orientation() ?? this.defaults.orientation, /* @ts-ignore */
|
|
63
|
+
...(ngDevMode ? [{ debugName: "resolvedOrientation" }] : /* istanbul ignore next */ []));
|
|
64
|
+
resolvedFill = computed(() => this.fill() ?? this.defaults.fill, /* @ts-ignore */
|
|
65
|
+
...(ngDevMode ? [{ debugName: "resolvedFill" }] : /* istanbul ignore next */ []));
|
|
66
|
+
resolvedSize = computed(() => this.size() ?? this.defaults.size, /* @ts-ignore */
|
|
67
|
+
...(ngDevMode ? [{ debugName: "resolvedSize" }] : /* istanbul ignore next */ []));
|
|
68
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlCard, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
69
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.7", type: SlCard, isStandalone: true, selector: "[slCard]", inputs: { orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: true, isRequired: false, transformFunction: null }, fill: { classPropertyName: "fill", publicName: "fill", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, selected: { classPropertyName: "selected", publicName: "selected", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-ui": "card", "data-part": "root" }, properties: { "attr.data-orientation": "resolvedOrientation()", "attr.data-fill": "resolvedFill()", "attr.data-size": "resolvedSize()", "attr.data-selected": "selected() ? '' : null", "attr.data-disabled": "disabled() ? '' : null" } }, exportAs: ["slCard"], ngImport: i0, template: '<ng-content></ng-content>', isInline: true, styles: ["@layer slotted.components{[data-ui=card]{--_card-edge-width: var(--slotted-card-border-width, var(--slotted-border-width-thin, 1px));--_card-radius: var(--slotted-card-radius, var(--slotted-radius-lg, 8px));--_card-inset-block: var(--slotted-card-padding-block, var(--slotted-space-6, 1rem));--_card-inset-inline: var(--slotted-card-padding-inline, var(--slotted-space-6, 1rem));--_card-region-gap: var(--slotted-card-region-gap, var(--slotted-space-3, .375rem));--_card-surface-rest: var(--slotted-card-background, var(--slotted-surface-raised, Canvas));--_card-edge-rest: var(--slotted-card-border-color, var(--slotted-border-subtle, ButtonBorder));--_card-shadow-rest: var(--slotted-card-shadow, none);--_card-surface-hover: var(--_card-surface-rest);--_card-edge-hover: var( --slotted-card-border-color-hover, var(--slotted-border-strong, ButtonBorder) );--_card-shadow-hover: var(--slotted-card-shadow-hover, var(--slotted-shadow-xs));--_card-surface-active: var(--slotted-tone-secondary-subtle-active);--_card-edge-active: var(--_card-edge-hover);--_card-shadow-active: none;--_card-surface: var(--_card-surface-rest);--_card-edge: var(--_card-edge-rest);--_card-shadow: var(--_card-shadow-rest);--_card-surface-disabled: var( --slotted-card-background-disabled, var(--slotted-surface-sunken, Canvas) );background-color:var(--_card-surface);--slotted-ground: var(--_card-surface);border:none;border-radius:var(--_card-radius);box-shadow:var(--_card-shadow);box-sizing:border-box;color:var(--slotted-card-color, var(--slotted-text, CanvasText));display:flex;flex-direction:column;min-inline-size:0;position:relative;transition:background-color var(--slotted-duration-short) var(--slotted-easing-standard),box-shadow var(--slotted-duration-short) var(--slotted-easing-standard)}[data-ui=card]:before{border:var(--_card-edge-width) solid var(--_card-edge);border-radius:inherit;content:\"\";inset:0;pointer-events:none;position:absolute;transition:border-color var(--slotted-duration-short) var(--slotted-easing-standard)}[data-ui=card][data-size=sm]{--_card-inset-block: var(--slotted-card-padding-block-sm, var(--slotted-space-5, .75rem));--_card-inset-inline: var(--slotted-card-padding-inline-sm, var(--slotted-space-5, .75rem));--_card-region-gap: var(--slotted-card-region-gap-sm, var(--slotted-space-2, .25rem))}[data-ui=card][data-size=lg]{--_card-inset-block: var(--slotted-card-padding-block-lg, var(--slotted-space-8, 1.5rem));--_card-inset-inline: var(--slotted-card-padding-inline-lg, var(--slotted-space-8, 1.5rem));--_card-region-gap: var(--slotted-card-region-gap-lg, var(--slotted-space-4, .5rem))}[data-ui=card][data-fill=elevated]{--_card-shadow-rest: var(--slotted-card-shadow, var(--slotted-shadow-md));--_card-edge-hover: var(--_card-edge-rest);--_card-shadow-hover: var(--slotted-card-shadow-hover, var(--slotted-shadow-lg));--_card-edge-active: var(--_card-edge-rest);--_card-shadow-active: var(--slotted-shadow-sm)}[data-ui=card][data-fill=subtle]{--_card-surface-rest: var( --slotted-card-background-subtle, var(--slotted-surface-sunken, Canvas) );--_card-surface-hover: var(--slotted-surface-raised, Canvas);--_card-edge-hover: var(--_card-edge-rest);--_card-shadow-hover: none;--_card-surface-active: var(--slotted-tone-secondary-subtle-active);--_card-edge-active: var(--_card-edge-rest);--_card-surface-disabled: var( --slotted-card-background-disabled, var(--slotted-disabled-background, Canvas) )}[data-ui=card]:not([data-disabled]):has(:is([data-part=link],[data-part=selection] :is(input,button)):not(:disabled)):hover{--_card-surface: var(--_card-surface-hover);--_card-edge: var(--_card-edge-hover);--_card-shadow: var(--_card-shadow-hover)}[data-ui=card]:not([data-disabled]):has(:is([data-part=link],[data-part=selection] :is(input,button)):not(:disabled)){cursor:pointer}[data-ui=card]:not([data-disabled]):has([data-part=selection] :is(input,button):not(:disabled)) :where(*){cursor:inherit}[data-ui=card]:not([data-disabled]):has(:is([data-part=link],[data-part=selection] :is(input,button)):not(:disabled)):active{--_card-surface: var(--_card-surface-active);--_card-edge: var(--_card-edge-active);--_card-shadow: var(--_card-shadow-active)}[data-ui=card]>:is([data-part=header],[data-part=body],[data-part=footer]){min-inline-size:0;padding-block:var(--_card-region-gap);padding-inline:var(--_card-inset-inline)}[data-ui=card]>:is([data-part=header],[data-part=body],[data-part=footer]):first-child,[data-ui=card]>[data-part=media]+:is([data-part=header],[data-part=body],[data-part=footer]){padding-block-start:var(--_card-inset-block)}[data-ui=card]>:is([data-part=header],[data-part=body],[data-part=footer]):last-child,[data-ui=card]>:is([data-part=header],[data-part=body],[data-part=footer]):has(+[data-part=media]){padding-block-end:var(--_card-inset-block)}[data-ui=card]>[data-part=header]{align-items:start;column-gap:var(--slotted-card-header-column-gap, var(--slotted-space-5, .75rem));display:grid;grid-template-columns:minmax(0,1fr) auto;row-gap:var(--slotted-card-header-gap, var(--slotted-space-2, .25rem))}[data-ui=card]>[data-part=header]>*{grid-column:1;min-inline-size:0}[data-ui=card]>[data-part=header]>[data-part=actions]{align-items:center;display:flex;flex-wrap:wrap;align-self:center;gap:var(--slotted-card-actions-gap, var(--slotted-space-3, .375rem));grid-column:-2 / -1;grid-row:1;position:relative}[data-ui=card]>[data-part=header]:has([data-part=selection]){grid-template-columns:auto minmax(0,1fr) auto}[data-ui=card]>[data-part=header]:has([data-part=selection])>*{grid-column:2}[data-ui=card]>[data-part=header]>[data-part=selection]{--_selection-line: var( --slotted-card-selection-line, calc(var(--slotted-font-size-lg, 1rem) * var(--slotted-line-height-lg, 1.5)) );align-items:center;align-self:start;block-size:var(--_selection-line);display:flex;grid-column:1;grid-row:1;position:relative}[data-ui=card]>[data-part=header]>[data-part=selection]>:is(input,button){block-size:var(--slotted-card-selection-size, var(--slotted-selection-size-md, 16px));inline-size:var(--slotted-card-selection-size, var(--slotted-selection-size-md, 16px));margin:0}[data-ui=card]>[data-part=body]{flex:1 1 auto;min-block-size:0}[data-ui=card]>[data-part=footer]{align-items:center;display:flex;flex-wrap:wrap;gap:var(--slotted-card-footer-gap, var(--slotted-space-4, .5rem));position:relative}[data-ui=card]>[data-ui=divider]{flex-shrink:0}[data-ui=card][data-orientation=horizontal]>[data-ui=divider]{grid-column:2}[data-ui=card]>[data-part=media]{display:block;min-inline-size:0;overflow:hidden}[data-ui=card]>[data-part=media]>:is(img,video,canvas,picture,svg){block-size:100%;display:block;inline-size:100%;object-fit:cover}[data-ui=card]>[data-part=media]:first-child{border-start-end-radius:var(--_card-radius);border-start-start-radius:var(--_card-radius)}[data-ui=card]>[data-part=media]:last-child{border-end-end-radius:var(--_card-radius);border-end-start-radius:var(--_card-radius)}[data-ui=card][data-orientation=horizontal]{container-name:slotted-card;container-type:inline-size;display:grid;inline-size:100%;grid-template-columns:var(--slotted-card-media-size, minmax(0, 1fr)) minmax(0,2fr);grid-template-rows:repeat(4,auto)}[data-ui=card][data-orientation=horizontal]>[data-part=media]{border-end-end-radius:0;border-end-start-radius:var(--_card-radius);border-start-end-radius:0;border-start-start-radius:var(--_card-radius);grid-area:1 / 1 / -1 / 2}[data-ui=card][data-orientation=horizontal]>[data-part=header]{grid-area:1 / 2}[data-ui=card][data-orientation=horizontal]>[data-part=body]{grid-area:2 / 2}[data-ui=card][data-orientation=horizontal]>[data-part=footer]{grid-area:3 / 2}@container slotted-card (max-inline-size: 24rem){[data-ui=card][data-orientation=horizontal]>[data-part=media]{border-end-start-radius:0;border-start-end-radius:var(--_card-radius);grid-area:1 / 1 / 2 / -1}[data-ui=card][data-orientation=horizontal]>[data-part=header]{grid-area:2 / 1 / 3 / -1}[data-ui=card][data-orientation=horizontal]>[data-part=body]{grid-area:3 / 1 / 4 / -1}[data-ui=card][data-orientation=horizontal]>[data-part=footer]{grid-area:4 / 1 / 5 / -1}}[data-ui=card] [data-part=link]:after{content:\"\";inset:0;position:absolute}[data-ui=card]:has(:is([data-part=link],[data-part=selection] :is(input,button)):focus-visible){outline:var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);outline-offset:var(--slotted-focus-ring-offset, 2px)}[data-ui=card]:has([data-part=link]) [data-part=link]:focus-visible,[data-ui=card]:has([data-part=selection]) [data-part=selection] :is(input,button):focus-visible{outline:none}[data-ui=card][data-selected]{--_card-surface-rest: var( --slotted-card-background-selected, var(--slotted-tone-accent-surface, Canvas) );--_card-surface-hover: var( --slotted-card-background-selected-hover, var(--slotted-tone-accent-subtle-hover, Canvas) );--_card-surface-active: var( --slotted-card-background-selected-active, var(--slotted-tone-accent-subtle-active, Canvas) );--_card-edge-rest: var( --slotted-card-edge-color-selected, var(--slotted-tone-accent-border, CanvasText) );--_card-edge: var(--_card-edge-rest);--_card-edge-hover: var(--_card-edge-rest);--_card-edge-active: var(--_card-edge-rest);--_card-edge-width: var( --slotted-card-edge-width-selected, var(--slotted-border-width-thin, 1px) )}[data-ui=card][data-disabled]{--_card-surface: var(--_card-surface-disabled);--_card-edge: var( --slotted-card-border-color-disabled, var(--slotted-disabled-border, GrayText) );--_card-shadow: none;color:var(--slotted-card-color-disabled, var(--slotted-disabled-foreground, GrayText))}[data-ui=card][data-disabled] [data-part=link]:after{display:none}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
70
|
+
}
|
|
71
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlCard, decorators: [{
|
|
72
|
+
type: Component,
|
|
73
|
+
args: [{ selector: '[slCard]', standalone: true, exportAs: 'slCard', template: '<ng-content></ng-content>', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
|
|
74
|
+
'data-ui': 'card',
|
|
75
|
+
'data-part': 'root',
|
|
76
|
+
'[attr.data-orientation]': 'resolvedOrientation()',
|
|
77
|
+
'[attr.data-fill]': 'resolvedFill()',
|
|
78
|
+
'[attr.data-size]': 'resolvedSize()',
|
|
79
|
+
'[attr.data-selected]': "selected() ? '' : null",
|
|
80
|
+
'[attr.data-disabled]': "disabled() ? '' : null",
|
|
81
|
+
}, styles: ["@layer slotted.components{[data-ui=card]{--_card-edge-width: var(--slotted-card-border-width, var(--slotted-border-width-thin, 1px));--_card-radius: var(--slotted-card-radius, var(--slotted-radius-lg, 8px));--_card-inset-block: var(--slotted-card-padding-block, var(--slotted-space-6, 1rem));--_card-inset-inline: var(--slotted-card-padding-inline, var(--slotted-space-6, 1rem));--_card-region-gap: var(--slotted-card-region-gap, var(--slotted-space-3, .375rem));--_card-surface-rest: var(--slotted-card-background, var(--slotted-surface-raised, Canvas));--_card-edge-rest: var(--slotted-card-border-color, var(--slotted-border-subtle, ButtonBorder));--_card-shadow-rest: var(--slotted-card-shadow, none);--_card-surface-hover: var(--_card-surface-rest);--_card-edge-hover: var( --slotted-card-border-color-hover, var(--slotted-border-strong, ButtonBorder) );--_card-shadow-hover: var(--slotted-card-shadow-hover, var(--slotted-shadow-xs));--_card-surface-active: var(--slotted-tone-secondary-subtle-active);--_card-edge-active: var(--_card-edge-hover);--_card-shadow-active: none;--_card-surface: var(--_card-surface-rest);--_card-edge: var(--_card-edge-rest);--_card-shadow: var(--_card-shadow-rest);--_card-surface-disabled: var( --slotted-card-background-disabled, var(--slotted-surface-sunken, Canvas) );background-color:var(--_card-surface);--slotted-ground: var(--_card-surface);border:none;border-radius:var(--_card-radius);box-shadow:var(--_card-shadow);box-sizing:border-box;color:var(--slotted-card-color, var(--slotted-text, CanvasText));display:flex;flex-direction:column;min-inline-size:0;position:relative;transition:background-color var(--slotted-duration-short) var(--slotted-easing-standard),box-shadow var(--slotted-duration-short) var(--slotted-easing-standard)}[data-ui=card]:before{border:var(--_card-edge-width) solid var(--_card-edge);border-radius:inherit;content:\"\";inset:0;pointer-events:none;position:absolute;transition:border-color var(--slotted-duration-short) var(--slotted-easing-standard)}[data-ui=card][data-size=sm]{--_card-inset-block: var(--slotted-card-padding-block-sm, var(--slotted-space-5, .75rem));--_card-inset-inline: var(--slotted-card-padding-inline-sm, var(--slotted-space-5, .75rem));--_card-region-gap: var(--slotted-card-region-gap-sm, var(--slotted-space-2, .25rem))}[data-ui=card][data-size=lg]{--_card-inset-block: var(--slotted-card-padding-block-lg, var(--slotted-space-8, 1.5rem));--_card-inset-inline: var(--slotted-card-padding-inline-lg, var(--slotted-space-8, 1.5rem));--_card-region-gap: var(--slotted-card-region-gap-lg, var(--slotted-space-4, .5rem))}[data-ui=card][data-fill=elevated]{--_card-shadow-rest: var(--slotted-card-shadow, var(--slotted-shadow-md));--_card-edge-hover: var(--_card-edge-rest);--_card-shadow-hover: var(--slotted-card-shadow-hover, var(--slotted-shadow-lg));--_card-edge-active: var(--_card-edge-rest);--_card-shadow-active: var(--slotted-shadow-sm)}[data-ui=card][data-fill=subtle]{--_card-surface-rest: var( --slotted-card-background-subtle, var(--slotted-surface-sunken, Canvas) );--_card-surface-hover: var(--slotted-surface-raised, Canvas);--_card-edge-hover: var(--_card-edge-rest);--_card-shadow-hover: none;--_card-surface-active: var(--slotted-tone-secondary-subtle-active);--_card-edge-active: var(--_card-edge-rest);--_card-surface-disabled: var( --slotted-card-background-disabled, var(--slotted-disabled-background, Canvas) )}[data-ui=card]:not([data-disabled]):has(:is([data-part=link],[data-part=selection] :is(input,button)):not(:disabled)):hover{--_card-surface: var(--_card-surface-hover);--_card-edge: var(--_card-edge-hover);--_card-shadow: var(--_card-shadow-hover)}[data-ui=card]:not([data-disabled]):has(:is([data-part=link],[data-part=selection] :is(input,button)):not(:disabled)){cursor:pointer}[data-ui=card]:not([data-disabled]):has([data-part=selection] :is(input,button):not(:disabled)) :where(*){cursor:inherit}[data-ui=card]:not([data-disabled]):has(:is([data-part=link],[data-part=selection] :is(input,button)):not(:disabled)):active{--_card-surface: var(--_card-surface-active);--_card-edge: var(--_card-edge-active);--_card-shadow: var(--_card-shadow-active)}[data-ui=card]>:is([data-part=header],[data-part=body],[data-part=footer]){min-inline-size:0;padding-block:var(--_card-region-gap);padding-inline:var(--_card-inset-inline)}[data-ui=card]>:is([data-part=header],[data-part=body],[data-part=footer]):first-child,[data-ui=card]>[data-part=media]+:is([data-part=header],[data-part=body],[data-part=footer]){padding-block-start:var(--_card-inset-block)}[data-ui=card]>:is([data-part=header],[data-part=body],[data-part=footer]):last-child,[data-ui=card]>:is([data-part=header],[data-part=body],[data-part=footer]):has(+[data-part=media]){padding-block-end:var(--_card-inset-block)}[data-ui=card]>[data-part=header]{align-items:start;column-gap:var(--slotted-card-header-column-gap, var(--slotted-space-5, .75rem));display:grid;grid-template-columns:minmax(0,1fr) auto;row-gap:var(--slotted-card-header-gap, var(--slotted-space-2, .25rem))}[data-ui=card]>[data-part=header]>*{grid-column:1;min-inline-size:0}[data-ui=card]>[data-part=header]>[data-part=actions]{align-items:center;display:flex;flex-wrap:wrap;align-self:center;gap:var(--slotted-card-actions-gap, var(--slotted-space-3, .375rem));grid-column:-2 / -1;grid-row:1;position:relative}[data-ui=card]>[data-part=header]:has([data-part=selection]){grid-template-columns:auto minmax(0,1fr) auto}[data-ui=card]>[data-part=header]:has([data-part=selection])>*{grid-column:2}[data-ui=card]>[data-part=header]>[data-part=selection]{--_selection-line: var( --slotted-card-selection-line, calc(var(--slotted-font-size-lg, 1rem) * var(--slotted-line-height-lg, 1.5)) );align-items:center;align-self:start;block-size:var(--_selection-line);display:flex;grid-column:1;grid-row:1;position:relative}[data-ui=card]>[data-part=header]>[data-part=selection]>:is(input,button){block-size:var(--slotted-card-selection-size, var(--slotted-selection-size-md, 16px));inline-size:var(--slotted-card-selection-size, var(--slotted-selection-size-md, 16px));margin:0}[data-ui=card]>[data-part=body]{flex:1 1 auto;min-block-size:0}[data-ui=card]>[data-part=footer]{align-items:center;display:flex;flex-wrap:wrap;gap:var(--slotted-card-footer-gap, var(--slotted-space-4, .5rem));position:relative}[data-ui=card]>[data-ui=divider]{flex-shrink:0}[data-ui=card][data-orientation=horizontal]>[data-ui=divider]{grid-column:2}[data-ui=card]>[data-part=media]{display:block;min-inline-size:0;overflow:hidden}[data-ui=card]>[data-part=media]>:is(img,video,canvas,picture,svg){block-size:100%;display:block;inline-size:100%;object-fit:cover}[data-ui=card]>[data-part=media]:first-child{border-start-end-radius:var(--_card-radius);border-start-start-radius:var(--_card-radius)}[data-ui=card]>[data-part=media]:last-child{border-end-end-radius:var(--_card-radius);border-end-start-radius:var(--_card-radius)}[data-ui=card][data-orientation=horizontal]{container-name:slotted-card;container-type:inline-size;display:grid;inline-size:100%;grid-template-columns:var(--slotted-card-media-size, minmax(0, 1fr)) minmax(0,2fr);grid-template-rows:repeat(4,auto)}[data-ui=card][data-orientation=horizontal]>[data-part=media]{border-end-end-radius:0;border-end-start-radius:var(--_card-radius);border-start-end-radius:0;border-start-start-radius:var(--_card-radius);grid-area:1 / 1 / -1 / 2}[data-ui=card][data-orientation=horizontal]>[data-part=header]{grid-area:1 / 2}[data-ui=card][data-orientation=horizontal]>[data-part=body]{grid-area:2 / 2}[data-ui=card][data-orientation=horizontal]>[data-part=footer]{grid-area:3 / 2}@container slotted-card (max-inline-size: 24rem){[data-ui=card][data-orientation=horizontal]>[data-part=media]{border-end-start-radius:0;border-start-end-radius:var(--_card-radius);grid-area:1 / 1 / 2 / -1}[data-ui=card][data-orientation=horizontal]>[data-part=header]{grid-area:2 / 1 / 3 / -1}[data-ui=card][data-orientation=horizontal]>[data-part=body]{grid-area:3 / 1 / 4 / -1}[data-ui=card][data-orientation=horizontal]>[data-part=footer]{grid-area:4 / 1 / 5 / -1}}[data-ui=card] [data-part=link]:after{content:\"\";inset:0;position:absolute}[data-ui=card]:has(:is([data-part=link],[data-part=selection] :is(input,button)):focus-visible){outline:var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);outline-offset:var(--slotted-focus-ring-offset, 2px)}[data-ui=card]:has([data-part=link]) [data-part=link]:focus-visible,[data-ui=card]:has([data-part=selection]) [data-part=selection] :is(input,button):focus-visible{outline:none}[data-ui=card][data-selected]{--_card-surface-rest: var( --slotted-card-background-selected, var(--slotted-tone-accent-surface, Canvas) );--_card-surface-hover: var( --slotted-card-background-selected-hover, var(--slotted-tone-accent-subtle-hover, Canvas) );--_card-surface-active: var( --slotted-card-background-selected-active, var(--slotted-tone-accent-subtle-active, Canvas) );--_card-edge-rest: var( --slotted-card-edge-color-selected, var(--slotted-tone-accent-border, CanvasText) );--_card-edge: var(--_card-edge-rest);--_card-edge-hover: var(--_card-edge-rest);--_card-edge-active: var(--_card-edge-rest);--_card-edge-width: var( --slotted-card-edge-width-selected, var(--slotted-border-width-thin, 1px) )}[data-ui=card][data-disabled]{--_card-surface: var(--_card-surface-disabled);--_card-edge: var( --slotted-card-border-color-disabled, var(--slotted-disabled-border, GrayText) );--_card-shadow: none;color:var(--slotted-card-color-disabled, var(--slotted-disabled-foreground, GrayText))}[data-ui=card][data-disabled] [data-part=link]:after{display:none}}\n"] }]
|
|
82
|
+
}], propDecorators: { orientation: [{ type: i0.Input, args: [{ isSignal: true, alias: "orientation", required: false }] }], fill: [{ type: i0.Input, args: [{ isSignal: true, alias: "fill", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], selected: [{ type: i0.Input, args: [{ isSignal: true, alias: "selected", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }] } });
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* The corner of the header: a badge, a status, a menu button. It stays on the
|
|
86
|
+
* first row, so a title that wraps to two lines does not drag it down, and it
|
|
87
|
+
* sits above the hit area a card link stretches, so it stays operable.
|
|
88
|
+
*/
|
|
89
|
+
class SlCardActions {
|
|
90
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlCardActions, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
91
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.7", type: SlCardActions, isStandalone: true, selector: "[slCardActions]", host: { attributes: { "data-part": "actions" } }, exportAs: ["slCardActions"], ngImport: i0 });
|
|
92
|
+
}
|
|
93
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlCardActions, decorators: [{
|
|
94
|
+
type: Directive,
|
|
95
|
+
args: [{
|
|
96
|
+
selector: '[slCardActions]',
|
|
97
|
+
standalone: true,
|
|
98
|
+
exportAs: 'slCardActions',
|
|
99
|
+
host: { 'data-part': 'actions' },
|
|
100
|
+
}]
|
|
101
|
+
}] });
|
|
102
|
+
|
|
103
|
+
/** The content. It takes whatever a card stretched to a row height has left. */
|
|
104
|
+
class SlCardBody {
|
|
105
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlCardBody, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
106
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.7", type: SlCardBody, isStandalone: true, selector: "[slCardBody]", host: { attributes: { "data-part": "body" } }, exportAs: ["slCardBody"], ngImport: i0 });
|
|
107
|
+
}
|
|
108
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlCardBody, decorators: [{
|
|
109
|
+
type: Directive,
|
|
110
|
+
args: [{
|
|
111
|
+
selector: '[slCardBody]',
|
|
112
|
+
standalone: true,
|
|
113
|
+
exportAs: 'slCardBody',
|
|
114
|
+
host: { 'data-part': 'body' },
|
|
115
|
+
}]
|
|
116
|
+
}] });
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* Actions and metadata. The footer sits above the hit area a card action
|
|
120
|
+
* stretches, so a secondary action inside it stays operable.
|
|
121
|
+
*/
|
|
122
|
+
class SlCardFooter {
|
|
123
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlCardFooter, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
124
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.7", type: SlCardFooter, isStandalone: true, selector: "[slCardFooter]", host: { attributes: { "data-part": "footer" } }, exportAs: ["slCardFooter"], ngImport: i0 });
|
|
125
|
+
}
|
|
126
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlCardFooter, decorators: [{
|
|
127
|
+
type: Directive,
|
|
128
|
+
args: [{
|
|
129
|
+
selector: '[slCardFooter]',
|
|
130
|
+
standalone: true,
|
|
131
|
+
exportAs: 'slCardFooter',
|
|
132
|
+
host: { 'data-part': 'footer' },
|
|
133
|
+
}]
|
|
134
|
+
}] });
|
|
135
|
+
|
|
136
|
+
/** A title and the line that supports it. Both of them are Typography. */
|
|
137
|
+
class SlCardHeader {
|
|
138
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlCardHeader, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
139
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.7", type: SlCardHeader, isStandalone: true, selector: "[slCardHeader]", host: { attributes: { "data-part": "header" } }, exportAs: ["slCardHeader"], ngImport: i0 });
|
|
140
|
+
}
|
|
141
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlCardHeader, decorators: [{
|
|
142
|
+
type: Directive,
|
|
143
|
+
args: [{
|
|
144
|
+
selector: '[slCardHeader]',
|
|
145
|
+
standalone: true,
|
|
146
|
+
exportAs: 'slCardHeader',
|
|
147
|
+
host: { 'data-part': 'header' },
|
|
148
|
+
}]
|
|
149
|
+
}] });
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* The one destination a card resolves to, written on the anchor the page
|
|
153
|
+
* already has. Its hit area covers the whole surface, so the card is clickable
|
|
154
|
+
* without the root becoming a link: the accessible name stays the title rather
|
|
155
|
+
* than every string in the card, and Enter, the context menu and middle-click
|
|
156
|
+
* stay the platform's.
|
|
157
|
+
*
|
|
158
|
+
* A card carries at most one. Two would be two destinations for one surface.
|
|
159
|
+
*/
|
|
160
|
+
class SlCardLink {
|
|
161
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlCardLink, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
162
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.7", type: SlCardLink, isStandalone: true, selector: "a[slCardLink]", host: { attributes: { "data-part": "link" } }, exportAs: ["slCardLink"], ngImport: i0 });
|
|
163
|
+
}
|
|
164
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlCardLink, decorators: [{
|
|
165
|
+
type: Directive,
|
|
166
|
+
args: [{
|
|
167
|
+
selector: 'a[slCardLink]',
|
|
168
|
+
standalone: true,
|
|
169
|
+
exportAs: 'slCardLink',
|
|
170
|
+
host: { 'data-part': 'link' },
|
|
171
|
+
}]
|
|
172
|
+
}] });
|
|
173
|
+
|
|
174
|
+
/**
|
|
175
|
+
* Media that bleeds to the card's edge and rounds the corners it touches. It
|
|
176
|
+
* clips itself, because a card that clipped its own content would cut off an
|
|
177
|
+
* overlay opened inside it.
|
|
178
|
+
*/
|
|
179
|
+
class SlCardMedia {
|
|
180
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlCardMedia, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
181
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.7", type: SlCardMedia, isStandalone: true, selector: "[slCardMedia]", host: { attributes: { "data-part": "media" } }, exportAs: ["slCardMedia"], ngImport: i0 });
|
|
182
|
+
}
|
|
183
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlCardMedia, decorators: [{
|
|
184
|
+
type: Directive,
|
|
185
|
+
args: [{
|
|
186
|
+
selector: '[slCardMedia]',
|
|
187
|
+
standalone: true,
|
|
188
|
+
exportAs: 'slCardMedia',
|
|
189
|
+
host: { 'data-part': 'media' },
|
|
190
|
+
}]
|
|
191
|
+
}] });
|
|
192
|
+
|
|
193
|
+
/**
|
|
194
|
+
* The place a choice card keeps for its control: a native checkbox or radio,
|
|
195
|
+
* and `slCheckbox` when the family that owns the check ships it.
|
|
196
|
+
*
|
|
197
|
+
* It is the slot and not the glyph. The card sizes the control from the icon
|
|
198
|
+
* scale density moves, tints the platform's own check with the accent, and
|
|
199
|
+
* centres it on the title's first row; what a check and a dot look like is one
|
|
200
|
+
* decision, and it belongs to `checkbox`.
|
|
201
|
+
*
|
|
202
|
+
* The control inside keeps its own `ControlValueAccessor`, so `[(ngModel)]` and
|
|
203
|
+
* a Reactive Form control both reach it untouched. The card is the `<label>`
|
|
204
|
+
* around it and holds no value of its own.
|
|
205
|
+
*/
|
|
206
|
+
class SlCardSelection {
|
|
207
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlCardSelection, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
208
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.7", type: SlCardSelection, isStandalone: true, selector: "[slCardSelection]", host: { attributes: { "data-part": "selection" } }, exportAs: ["slCardSelection"], ngImport: i0 });
|
|
209
|
+
}
|
|
210
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlCardSelection, decorators: [{
|
|
211
|
+
type: Directive,
|
|
212
|
+
args: [{
|
|
213
|
+
selector: '[slCardSelection]',
|
|
214
|
+
standalone: true,
|
|
215
|
+
exportAs: 'slCardSelection',
|
|
216
|
+
host: { 'data-part': 'selection' },
|
|
217
|
+
}]
|
|
218
|
+
}] });
|
|
219
|
+
|
|
220
|
+
/**
|
|
221
|
+
* Generated bundle index. Do not edit.
|
|
222
|
+
*/
|
|
223
|
+
|
|
224
|
+
export { CARD_DEFAULTS, SlCard, SlCardActions, SlCardBody, SlCardFooter, SlCardHeader, SlCardLink, SlCardMedia, SlCardSelection, injectCardDefaults, provideCardDefaults };
|
|
225
|
+
//# sourceMappingURL=slotted-angular-card.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slotted-angular-card.mjs","sources":["../../card/src/card-defaults.ts","../../card/src/card.ts","../../card/src/card-actions.ts","../../card/src/card-body.ts","../../card/src/card-footer.ts","../../card/src/card-header.ts","../../card/src/card-link.ts","../../card/src/card-media.ts","../../card/src/card-selection.ts","../../card/src/slotted-angular-card.ts"],"sourcesContent":["import { inject, InjectionToken } from '@angular/core';\n\nexport type CardOrientation = 'vertical' | 'horizontal';\n\n/** How the surface is bounded: by an edge, by elevation, or by a fill. */\nexport type CardFill = 'outline' | 'elevated' | 'subtle';\n\n/** The card's own inset. Density is the application's choice; this is not. */\nexport type CardSize = 'sm' | 'md' | 'lg';\n\nexport interface CardDefaults {\n fill: CardFill;\n orientation: CardOrientation;\n size: CardSize;\n}\n\nexport const CARD_DEFAULTS = new InjectionToken<CardDefaults>('slotted card defaults', {\n providedIn: 'root',\n factory: () => ({ fill: 'outline', orientation: 'vertical', size: 'md' }),\n});\n\n/**\n * An application decides once how its cards are bounded and how far they are\n * inset, rather than repeating two inputs on every card. A card that states\n * either itself still wins: an explicit input is never overridden by the token.\n */\nexport function provideCardDefaults(defaults: Partial<CardDefaults>) {\n return {\n provide: CARD_DEFAULTS,\n useFactory: (): CardDefaults => ({\n fill: defaults.fill ?? 'outline',\n orientation: defaults.orientation ?? 'vertical',\n size: defaults.size ?? 'md',\n }),\n };\n}\n\n/** What a card renders as here, before it states anything of its own. */\nexport function injectCardDefaults(): CardDefaults {\n return inject(CARD_DEFAULTS);\n}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { injectCardDefaults } from './card-defaults';\nimport type { CardFill, CardOrientation, CardSize } from './card-defaults';\n\nexport type { CardFill, CardOrientation, CardSize } from './card-defaults';\n\n/**\n * A bounded surface that groups one subject. It claims nothing about what that\n * subject is: the directive is written on the element the page chose, so an\n * `article` with its own heading, the `li` of a list of results and the\n * `label` of a chooser are all the same card.\n *\n * The card holds no state. `selected` and `disabled` mirror state that belongs\n * to the control inside it, which is also what announces them.\n */\n@Component({\n selector: '[slCard]',\n standalone: true,\n exportAs: 'slCard',\n template: '<ng-content></ng-content>',\n styleUrl: '../../../styles/src/card/card.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-ui': 'card',\n 'data-part': 'root',\n '[attr.data-orientation]': 'resolvedOrientation()',\n '[attr.data-fill]': 'resolvedFill()',\n '[attr.data-size]': 'resolvedSize()',\n '[attr.data-selected]': \"selected() ? '' : null\",\n '[attr.data-disabled]': \"disabled() ? '' : null\",\n },\n})\nexport class SlCard {\n /**\n * `horizontal` puts the media beside the regions and answers the card's own\n * inline size, returning the media to the top in a narrow container.\n */\n readonly orientation = input<CardOrientation>();\n /** How the surface is bounded. Falls back to the injected default. */\n readonly fill = input<CardFill>();\n /** The card's own inset. Falls back to the injected default. */\n readonly size = input<CardSize>();\n /**\n * Mirrors a selection the page owns. The card paints it; the control inside\n * announces it.\n */\n readonly selected = input(false, { transform: booleanAttribute });\n /**\n * Mirrors a control the page has disabled: the card dims, stops answering\n * hover and withdraws the hit area it added. It disables nothing, because\n * only the control inside can refuse an interaction.\n */\n readonly disabled = input(false, { transform: booleanAttribute });\n\n private readonly defaults = injectCardDefaults();\n\n protected readonly resolvedOrientation = computed(\n () => this.orientation() ?? this.defaults.orientation,\n );\n protected readonly resolvedFill = computed(() => this.fill() ?? this.defaults.fill);\n protected readonly resolvedSize = computed(() => this.size() ?? this.defaults.size);\n}\n","import { Directive } from '@angular/core';\n\n/**\n * The corner of the header: a badge, a status, a menu button. It stays on the\n * first row, so a title that wraps to two lines does not drag it down, and it\n * sits above the hit area a card link stretches, so it stays operable.\n */\n@Directive({\n selector: '[slCardActions]',\n standalone: true,\n exportAs: 'slCardActions',\n host: { 'data-part': 'actions' },\n})\nexport class SlCardActions {}\n","import { Directive } from '@angular/core';\n\n/** The content. It takes whatever a card stretched to a row height has left. */\n@Directive({\n selector: '[slCardBody]',\n standalone: true,\n exportAs: 'slCardBody',\n host: { 'data-part': 'body' },\n})\nexport class SlCardBody {}\n","import { Directive } from '@angular/core';\n\n/**\n * Actions and metadata. The footer sits above the hit area a card action\n * stretches, so a secondary action inside it stays operable.\n */\n@Directive({\n selector: '[slCardFooter]',\n standalone: true,\n exportAs: 'slCardFooter',\n host: { 'data-part': 'footer' },\n})\nexport class SlCardFooter {}\n","import { Directive } from '@angular/core';\n\n/** A title and the line that supports it. Both of them are Typography. */\n@Directive({\n selector: '[slCardHeader]',\n standalone: true,\n exportAs: 'slCardHeader',\n host: { 'data-part': 'header' },\n})\nexport class SlCardHeader {}\n","import { Directive } from '@angular/core';\n\n/**\n * The one destination a card resolves to, written on the anchor the page\n * already has. Its hit area covers the whole surface, so the card is clickable\n * without the root becoming a link: the accessible name stays the title rather\n * than every string in the card, and Enter, the context menu and middle-click\n * stay the platform's.\n *\n * A card carries at most one. Two would be two destinations for one surface.\n */\n@Directive({\n selector: 'a[slCardLink]',\n standalone: true,\n exportAs: 'slCardLink',\n host: { 'data-part': 'link' },\n})\nexport class SlCardLink {}\n","import { Directive } from '@angular/core';\n\n/**\n * Media that bleeds to the card's edge and rounds the corners it touches. It\n * clips itself, because a card that clipped its own content would cut off an\n * overlay opened inside it.\n */\n@Directive({\n selector: '[slCardMedia]',\n standalone: true,\n exportAs: 'slCardMedia',\n host: { 'data-part': 'media' },\n})\nexport class SlCardMedia {}\n","import { Directive } from '@angular/core';\n\n/**\n * The place a choice card keeps for its control: a native checkbox or radio,\n * and `slCheckbox` when the family that owns the check ships it.\n *\n * It is the slot and not the glyph. The card sizes the control from the icon\n * scale density moves, tints the platform's own check with the accent, and\n * centres it on the title's first row; what a check and a dot look like is one\n * decision, and it belongs to `checkbox`.\n *\n * The control inside keeps its own `ControlValueAccessor`, so `[(ngModel)]` and\n * a Reactive Form control both reach it untouched. The card is the `<label>`\n * around it and holds no value of its own.\n */\n@Directive({\n selector: '[slCardSelection]',\n standalone: true,\n exportAs: 'slCardSelection',\n host: { 'data-part': 'selection' },\n})\nexport class SlCardSelection {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|