dap-design-system 0.62.4 → 0.63.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -1
- package/dist/common/utils.js +46 -46
- package/dist/common/utils.js.map +1 -1
- package/dist/components/accordion/accordion-base-element.js +15 -19
- package/dist/components/accordion/accordion-base-element.js.map +1 -1
- package/dist/components/accordion/accordion.component.d.ts +1 -0
- package/dist/components/accordion/accordion.component.js.map +1 -1
- package/dist/components/accordion-group/accordion-group.component.js +20 -24
- package/dist/components/accordion-group/accordion-group.component.js.map +1 -1
- package/dist/components/anchor-heading/anchor-heading.component.d.ts +1 -0
- package/dist/components/anchor-heading/anchor-heading.component.js +20 -23
- package/dist/components/anchor-heading/anchor-heading.component.js.map +1 -1
- package/dist/components/avatar/avatar.component.js +51 -55
- package/dist/components/avatar/avatar.component.js.map +1 -1
- package/dist/components/avatar-group/avatar-group.component.js +18 -22
- package/dist/components/avatar-group/avatar-group.component.js.map +1 -1
- package/dist/components/badge/badge.component.js +17 -20
- package/dist/components/badge/badge.component.js.map +1 -1
- package/dist/components/banner/banner.component.d.ts +1 -1
- package/dist/components/banner/banner.component.js +18 -24
- package/dist/components/banner/banner.component.js.map +1 -1
- package/dist/components/breadcrumb/breadcrumb.component.d.ts +2 -1
- package/dist/components/breadcrumb/breadcrumb.component.js +32 -32
- package/dist/components/breadcrumb/breadcrumb.component.js.map +1 -1
- package/dist/components/breadcrumb-item/breadcrumb-item.component.d.ts +8 -0
- package/dist/components/breadcrumb-item/breadcrumb-item.component.js +33 -28
- package/dist/components/breadcrumb-item/breadcrumb-item.component.js.map +1 -1
- package/dist/components/button/_styles/button.scss.js +1 -1
- package/dist/components/button/button.component.js +18 -22
- package/dist/components/button/button.component.js.map +1 -1
- package/dist/components/button-group/_styles/button-group-separator.scss.js +5 -0
- package/dist/components/button-group/_styles/button-group-separator.scss.js.map +1 -0
- package/dist/components/button-group/_styles/button-group-text.scss.js +5 -0
- package/dist/components/button-group/_styles/button-group-text.scss.js.map +1 -0
- package/dist/components/button-group/_styles/button-group.scss.js +5 -0
- package/dist/components/button-group/_styles/button-group.scss.js.map +1 -0
- package/dist/components/button-group/button-group-separator.component.d.ts +28 -0
- package/dist/components/button-group/button-group-separator.component.js +18 -0
- package/dist/components/button-group/button-group-separator.component.js.map +1 -0
- package/dist/components/button-group/button-group-separator.d.ts +8 -0
- package/dist/components/button-group/button-group-separator.js +6 -0
- package/dist/components/button-group/button-group-separator.js.map +1 -0
- package/dist/components/button-group/button-group-text.component.d.ts +33 -0
- package/dist/components/button-group/button-group-text.component.js +17 -0
- package/dist/components/button-group/button-group-text.component.js.map +1 -0
- package/dist/components/button-group/button-group-text.d.ts +8 -0
- package/dist/components/button-group/button-group-text.js +6 -0
- package/dist/components/button-group/button-group-text.js.map +1 -0
- package/dist/components/button-group/button-group.component.d.ts +52 -0
- package/dist/components/button-group/button-group.component.js +30 -0
- package/dist/components/button-group/button-group.component.js.map +1 -0
- package/dist/components/button-group/button-group.d.ts +8 -0
- package/dist/components/button-group/button-group.js +6 -0
- package/dist/components/button-group/button-group.js.map +1 -0
- package/dist/components/calendar/calendar-cell.component.js +26 -29
- package/dist/components/calendar/calendar-cell.component.js.map +1 -1
- package/dist/components/calendar/calendar.component.d.ts +10 -1
- package/dist/components/calendar/calendar.component.js +37 -46
- package/dist/components/calendar/calendar.component.js.map +1 -1
- package/dist/components/callout/callout.component.d.ts +4 -0
- package/dist/components/callout/callout.component.js +71 -69
- package/dist/components/callout/callout.component.js.map +1 -1
- package/dist/components/card/card-actions.component.js +8 -11
- package/dist/components/card/card-actions.component.js.map +1 -1
- package/dist/components/card/card-content.component.js +20 -23
- package/dist/components/card/card-content.component.js.map +1 -1
- package/dist/components/card/card-image.component.js +18 -21
- package/dist/components/card/card-image.component.js.map +1 -1
- package/dist/components/card/card-subtitle.component.js +18 -21
- package/dist/components/card/card-subtitle.component.js.map +1 -1
- package/dist/components/card/card-title.component.js +18 -21
- package/dist/components/card/card-title.component.js.map +1 -1
- package/dist/components/card/card.component.d.ts +1 -0
- package/dist/components/card/card.component.js +25 -28
- package/dist/components/card/card.component.js.map +1 -1
- package/dist/components/checkbox/_styles/checkbox.scss.js +1 -1
- package/dist/components/checkbox/checkbox.component.d.ts +7 -1
- package/dist/components/checkbox/checkbox.component.js +71 -74
- package/dist/components/checkbox/checkbox.component.js.map +1 -1
- package/dist/components/chip/chip.component.d.ts +1 -0
- package/dist/components/chip/chip.component.js +21 -26
- package/dist/components/chip/chip.component.js.map +1 -1
- package/dist/components/code-puncher/code-puncher-slot.component.js +34 -38
- package/dist/components/code-puncher/code-puncher-slot.component.js.map +1 -1
- package/dist/components/code-puncher/code-puncher.component.d.ts +4 -0
- package/dist/components/code-puncher/code-puncher.component.js +97 -102
- package/dist/components/code-puncher/code-puncher.component.js.map +1 -1
- package/dist/components/code-puncher/code-puncher.context.js +1 -1
- package/dist/components/code-puncher/code-puncher.context.js.map +1 -1
- package/dist/components/code-puncher/code-puncher.scss.js +1 -1
- package/dist/components/combobox/combobox.component.d.ts +9 -1
- package/dist/components/combobox/combobox.component.js.map +1 -1
- package/dist/components/combobox/combobox.scss.js +1 -1
- package/dist/components/combobox/comboboxBase.d.ts +21 -0
- package/dist/components/combobox/comboboxBase.js +176 -139
- package/dist/components/combobox/comboboxBase.js.map +1 -1
- package/dist/components/command/command-group.component.js +19 -23
- package/dist/components/command/command-group.component.js.map +1 -1
- package/dist/components/command/command-item.component.js +17 -22
- package/dist/components/command/command-item.component.js.map +1 -1
- package/dist/components/command/command.component.d.ts +3 -0
- package/dist/components/command/command.component.js +28 -33
- package/dist/components/command/command.component.js.map +1 -1
- package/dist/components/content-switcher/content-switcher-item.component.js +16 -19
- package/dist/components/content-switcher/content-switcher-item.component.js.map +1 -1
- package/dist/components/content-switcher/content-switcher.component.js +19 -22
- package/dist/components/content-switcher/content-switcher.component.js.map +1 -1
- package/dist/components/copybox-input/copybox-input.component.d.ts +11 -0
- package/dist/components/copybox-input/copybox-input.component.js +12 -16
- package/dist/components/copybox-input/copybox-input.component.js.map +1 -1
- package/dist/components/dap-badge/dap-badge.component.js +13 -18
- package/dist/components/dap-badge/dap-badge.component.js.map +1 -1
- package/dist/components/datatable/datatable.component.d.ts +17 -0
- package/dist/components/datatable/datatable.component.js +38 -42
- package/dist/components/datatable/datatable.component.js.map +1 -1
- package/dist/components/datatable/utils/cell-renderer.js +6 -8
- package/dist/components/datatable/utils/cell-renderer.js.map +1 -1
- package/dist/components/datepicker/datepicker.component.d.ts +8 -0
- package/dist/components/datepicker/datepicker.component.js +76 -81
- package/dist/components/datepicker/datepicker.component.js.map +1 -1
- package/dist/components/datepicker/datepicker.scss.js +1 -1
- package/dist/components/divider/divider.component.js +18 -21
- package/dist/components/divider/divider.component.js.map +1 -1
- package/dist/components/feedback/feedback.component.js +8 -11
- package/dist/components/feedback/feedback.component.js.map +1 -1
- package/dist/components/file-input/file-input-list-item.component.d.ts +1 -0
- package/dist/components/file-input/file-input-list-item.component.js +36 -40
- package/dist/components/file-input/file-input-list-item.component.js.map +1 -1
- package/dist/components/file-input/file-input-list.component.js +15 -20
- package/dist/components/file-input/file-input-list.component.js.map +1 -1
- package/dist/components/file-input/file-input-list.scss.js +1 -1
- package/dist/components/file-input/file-input.component.d.ts +3 -0
- package/dist/components/file-input/file-input.component.js +135 -142
- package/dist/components/file-input/file-input.component.js.map +1 -1
- package/dist/components/file-input/file-input.scss.js +1 -1
- package/dist/components/form/form-label/form-label.component.d.ts +1 -1
- package/dist/components/form/form-label/form-label.component.js +20 -23
- package/dist/components/form/form-label/form-label.component.js.map +1 -1
- package/dist/components/form/input-group/input-group.component.d.ts +4 -0
- package/dist/components/form/input-group/input-group.component.js +42 -42
- package/dist/components/form/input-group/input-group.component.js.map +1 -1
- package/dist/components/form/input-group/input-group.scss.js +2 -2
- package/dist/components/form/radio-group/radio-group.component.d.ts +5 -0
- package/dist/components/form/radio-group/radio-group.component.js +54 -55
- package/dist/components/form/radio-group/radio-group.component.js.map +1 -1
- package/dist/components/icon/icon.component.js +25 -28
- package/dist/components/icon/icon.component.js.map +1 -1
- package/dist/components/icon-button/icon-button.component.d.ts +1 -0
- package/dist/components/icon-button/icon-button.component.js +11 -14
- package/dist/components/icon-button/icon-button.component.js.map +1 -1
- package/dist/components/icon-button/icon-button.scss.js +1 -1
- package/dist/components/icons/arrows/arrows-arrow-down-line/arrows-arrow-down-line.component.js +9 -12
- package/dist/components/icons/arrows/arrows-arrow-down-line/arrows-arrow-down-line.component.js.map +1 -1
- package/dist/components/icons/arrows/arrows-arrow-down-s-fill/arrows-arrow-down-s-fill.component.js +7 -10
- package/dist/components/icons/arrows/arrows-arrow-down-s-fill/arrows-arrow-down-s-fill.component.js.map +1 -1
- package/dist/components/icons/arrows/arrows-arrow-down-s-line/arrows-arrow-down-s-line.component.js +12 -15
- package/dist/components/icons/arrows/arrows-arrow-down-s-line/arrows-arrow-down-s-line.component.js.map +1 -1
- package/dist/components/icons/arrows/arrows-arrow-left-down-line/arrows-arrow-left-down-line.component.js +8 -11
- package/dist/components/icons/arrows/arrows-arrow-left-down-line/arrows-arrow-left-down-line.component.js.map +1 -1
- package/dist/components/icons/arrows/arrows-arrow-left-l-line/arrows-arrow-left-l-line.component.js +15 -18
- package/dist/components/icons/arrows/arrows-arrow-left-l-line/arrows-arrow-left-l-line.component.js.map +1 -1
- package/dist/components/icons/arrows/arrows-arrow-left-line/arrows-arrow-left-line.component.js +7 -10
- package/dist/components/icons/arrows/arrows-arrow-left-line/arrows-arrow-left-line.component.js.map +1 -1
- package/dist/components/icons/arrows/arrows-arrow-left-s-fill/arrows-arrow-left-s-fill.component.js +10 -13
- package/dist/components/icons/arrows/arrows-arrow-left-s-fill/arrows-arrow-left-s-fill.component.js.map +1 -1
- package/dist/components/icons/arrows/arrows-arrow-left-s-line/arrows-arrow-left-s-line.component.js +7 -10
- package/dist/components/icons/arrows/arrows-arrow-left-s-line/arrows-arrow-left-s-line.component.js.map +1 -1
- package/dist/components/icons/arrows/arrows-arrow-left-up-line/arrows-arrow-left-up-line.component.js +6 -9
- package/dist/components/icons/arrows/arrows-arrow-left-up-line/arrows-arrow-left-up-line.component.js.map +1 -1
- package/dist/components/icons/arrows/arrows-arrow-right-down-line/arrows-arrow-right-down-line.component.js +18 -21
- package/dist/components/icons/arrows/arrows-arrow-right-down-line/arrows-arrow-right-down-line.component.js.map +1 -1
- package/dist/components/icons/arrows/arrows-arrow-right-l-line/arrows-arrow-right-l-line.component.js +15 -18
- package/dist/components/icons/arrows/arrows-arrow-right-l-line/arrows-arrow-right-l-line.component.js.map +1 -1
- package/dist/components/icons/arrows/arrows-arrow-right-line/arrows-arrow-right-line.component.js +17 -20
- package/dist/components/icons/arrows/arrows-arrow-right-line/arrows-arrow-right-line.component.js.map +1 -1
- package/dist/components/icons/arrows/arrows-arrow-right-s-fill/arrows-arrow-right-s-fill.component.js +17 -20
- package/dist/components/icons/arrows/arrows-arrow-right-s-fill/arrows-arrow-right-s-fill.component.js.map +1 -1
- package/dist/components/icons/arrows/arrows-arrow-right-s-line/arrows-arrow-right-s-line.component.js +17 -20
- package/dist/components/icons/arrows/arrows-arrow-right-s-line/arrows-arrow-right-s-line.component.js.map +1 -1
- package/dist/components/icons/arrows/arrows-arrow-right-up-line/arrows-arrow-right-up-line.component.js +18 -21
- package/dist/components/icons/arrows/arrows-arrow-right-up-line/arrows-arrow-right-up-line.component.js.map +1 -1
- package/dist/components/icons/arrows/arrows-arrow-up-line/arrows-arrow-up-line.component.js +9 -12
- package/dist/components/icons/arrows/arrows-arrow-up-line/arrows-arrow-up-line.component.js.map +1 -1
- package/dist/components/icons/arrows/arrows-arrow-up-s-fill/arrows-arrow-up-s-fill.component.js +8 -11
- package/dist/components/icons/arrows/arrows-arrow-up-s-fill/arrows-arrow-up-s-fill.component.js.map +1 -1
- package/dist/components/icons/arrows/arrows-arrow-up-s-line/arrows-arrow-up-s-line.component.js +9 -12
- package/dist/components/icons/arrows/arrows-arrow-up-s-line/arrows-arrow-up-s-line.component.js.map +1 -1
- package/dist/components/icons/arrows/arrows-expand-up-down-fill/arrows-expand-up-down-fill.component.js +11 -14
- package/dist/components/icons/arrows/arrows-expand-up-down-fill/arrows-expand-up-down-fill.component.js.map +1 -1
- package/dist/components/icons/buildings/buildings-home-6-line/buildings-home-6-line.component.js +10 -13
- package/dist/components/icons/buildings/buildings-home-6-line/buildings-home-6-line.component.js.map +1 -1
- package/dist/components/icons/business/business-calendar-line/business-calendar-line.component.js +11 -14
- package/dist/components/icons/business/business-calendar-line/business-calendar-line.component.js.map +1 -1
- package/dist/components/icons/design/design-edit-line/design-edit-line.component.js +6 -9
- package/dist/components/icons/design/design-edit-line/design-edit-line.component.js.map +1 -1
- package/dist/components/icons/design/design-tools-line/design-tools-line.component.js +12 -15
- package/dist/components/icons/design/design-tools-line/design-tools-line.component.js.map +1 -1
- package/dist/components/icons/device/device-computer-line/device-computer-line.component.js +16 -19
- package/dist/components/icons/device/device-computer-line/device-computer-line.component.js.map +1 -1
- package/dist/components/icons/document/document-clipboard-line/document-clipboard-line.component.js +11 -14
- package/dist/components/icons/document/document-clipboard-line/document-clipboard-line.component.js.map +1 -1
- package/dist/components/icons/document/document-file-copy-line/document-file-copy-line.component.js +10 -13
- package/dist/components/icons/document/document-file-copy-line/document-file-copy-line.component.js.map +1 -1
- package/dist/components/icons/document/document-file-image-line/document-file-image-line.component.js +11 -14
- package/dist/components/icons/document/document-file-image-line/document-file-image-line.component.js.map +1 -1
- package/dist/components/icons/document/document-file-music-line/document-file-music-line.component.js +11 -14
- package/dist/components/icons/document/document-file-music-line/document-file-music-line.component.js.map +1 -1
- package/dist/components/icons/document/document-file-text-line/document-file-text-line.component.js +10 -13
- package/dist/components/icons/document/document-file-text-line/document-file-text-line.component.js.map +1 -1
- package/dist/components/icons/document/document-file-video-line/document-file-video-line.component.js +11 -14
- package/dist/components/icons/document/document-file-video-line/document-file-video-line.component.js.map +1 -1
- package/dist/components/icons/document/document-folder-line/document-folder-line.component.js +11 -14
- package/dist/components/icons/document/document-folder-line/document-folder-line.component.js.map +1 -1
- package/dist/components/icons/document/document-folder-open-line/document-folder-open-line.component.js +10 -13
- package/dist/components/icons/document/document-folder-open-line/document-folder-open-line.component.js.map +1 -1
- package/dist/components/icons/editor/editor-separator/editor-separator.component.js +10 -13
- package/dist/components/icons/editor/editor-separator/editor-separator.component.js.map +1 -1
- package/dist/components/icons/health/health-heart-fill/health-heart-fill.component.js +8 -11
- package/dist/components/icons/health/health-heart-fill/health-heart-fill.component.js.map +1 -1
- package/dist/components/icons/health/health-heart-line/health-heart-line.component.js +10 -13
- package/dist/components/icons/health/health-heart-line/health-heart-line.component.js.map +1 -1
- package/dist/components/icons/others/others-cookie-line/others-cookie-line.component.js +6 -9
- package/dist/components/icons/others/others-cookie-line/others-cookie-line.component.js.map +1 -1
- package/dist/components/icons/system/system-add-line/system-add-line.component.js +11 -14
- package/dist/components/icons/system/system-add-line/system-add-line.component.js.map +1 -1
- package/dist/components/icons/system/system-alert-fill/system-alert-fill.component.js +9 -12
- package/dist/components/icons/system/system-alert-fill/system-alert-fill.component.js.map +1 -1
- package/dist/components/icons/system/system-alert-line/system-alert-line.component.js +11 -14
- package/dist/components/icons/system/system-alert-line/system-alert-line.component.js.map +1 -1
- package/dist/components/icons/system/system-check-line/system-check-line.component.js +9 -12
- package/dist/components/icons/system/system-check-line/system-check-line.component.js.map +1 -1
- package/dist/components/icons/system/system-check-line2/system-check-line2.component.js +11 -14
- package/dist/components/icons/system/system-check-line2/system-check-line2.component.js.map +1 -1
- package/dist/components/icons/system/system-checkbox-blank-circle-fill/system-checkbox-blank-circle-fill.component.js +9 -12
- package/dist/components/icons/system/system-checkbox-blank-circle-fill/system-checkbox-blank-circle-fill.component.js.map +1 -1
- package/dist/components/icons/system/system-checkbox-blank-circle-fill-check/system-checkbox-blank-circle-fill-check.component.js +12 -15
- package/dist/components/icons/system/system-checkbox-blank-circle-fill-check/system-checkbox-blank-circle-fill-check.component.js.map +1 -1
- package/dist/components/icons/system/system-checkbox-blank-circle-line/system-checkbox-blank-circle-line.component.js +13 -16
- package/dist/components/icons/system/system-checkbox-blank-circle-line/system-checkbox-blank-circle-line.component.js.map +1 -1
- package/dist/components/icons/system/system-checkbox-circle-fill/system-checkbox-circle-fill.component.js +11 -14
- package/dist/components/icons/system/system-checkbox-circle-fill/system-checkbox-circle-fill.component.js.map +1 -1
- package/dist/components/icons/system/system-checkbox-circle-line/system-checkbox-circle-line.component.js +11 -14
- package/dist/components/icons/system/system-checkbox-circle-line/system-checkbox-circle-line.component.js.map +1 -1
- package/dist/components/icons/system/system-close-circle-fill/system-close-circle-fill.component.js +11 -14
- package/dist/components/icons/system/system-close-circle-fill/system-close-circle-fill.component.js.map +1 -1
- package/dist/components/icons/system/system-close-circle-line/system-close-circle-line.component.js +7 -10
- package/dist/components/icons/system/system-close-circle-line/system-close-circle-line.component.js.map +1 -1
- package/dist/components/icons/system/system-close-fill/system-close-fill.component.js +11 -14
- package/dist/components/icons/system/system-close-fill/system-close-fill.component.js.map +1 -1
- package/dist/components/icons/system/system-close-line/system-close-line.component.js +11 -14
- package/dist/components/icons/system/system-close-line/system-close-line.component.js.map +1 -1
- package/dist/components/icons/system/system-delete-bin-fill/system-delete-bin-fill.component.js +7 -10
- package/dist/components/icons/system/system-delete-bin-fill/system-delete-bin-fill.component.js.map +1 -1
- package/dist/components/icons/system/system-delete-bin-line/system-delete-bin-line.component.js +9 -12
- package/dist/components/icons/system/system-delete-bin-line/system-delete-bin-line.component.js.map +1 -1
- package/dist/components/icons/system/system-download-line/system-download-line.component.js +9 -12
- package/dist/components/icons/system/system-download-line/system-download-line.component.js.map +1 -1
- package/dist/components/icons/system/system-error-warning-fill/system-error-warning-fill.component.js +7 -10
- package/dist/components/icons/system/system-error-warning-fill/system-error-warning-fill.component.js.map +1 -1
- package/dist/components/icons/system/system-error-warning-line/system-error-warning-line.component.js +11 -14
- package/dist/components/icons/system/system-error-warning-line/system-error-warning-line.component.js.map +1 -1
- package/dist/components/icons/system/system-external-link-line/system-external-link-line.component.js +9 -12
- package/dist/components/icons/system/system-external-link-line/system-external-link-line.component.js.map +1 -1
- package/dist/components/icons/system/system-eye-line/system-eye-line.component.js +11 -14
- package/dist/components/icons/system/system-eye-line/system-eye-line.component.js.map +1 -1
- package/dist/components/icons/system/system-eye-off-line/system-eye-off-line.component.js +6 -9
- package/dist/components/icons/system/system-eye-off-line/system-eye-off-line.component.js.map +1 -1
- package/dist/components/icons/system/system-forbid-fill/system-forbid-fill.component.js +9 -12
- package/dist/components/icons/system/system-forbid-fill/system-forbid-fill.component.js.map +1 -1
- package/dist/components/icons/system/system-information-2-fill/system-information-2-fill.component.js +9 -12
- package/dist/components/icons/system/system-information-2-fill/system-information-2-fill.component.js.map +1 -1
- package/dist/components/icons/system/system-information-fill/system-information-fill.component.js +9 -12
- package/dist/components/icons/system/system-information-fill/system-information-fill.component.js.map +1 -1
- package/dist/components/icons/system/system-information-line/system-information-line.component.js +9 -12
- package/dist/components/icons/system/system-information-line/system-information-line.component.js.map +1 -1
- package/dist/components/icons/system/system-lightbulb-fill/system-lightbulb-fill.component.js +9 -12
- package/dist/components/icons/system/system-lightbulb-fill/system-lightbulb-fill.component.js.map +1 -1
- package/dist/components/icons/system/system-loading-spinner/system-loading-spinner.component.js +9 -12
- package/dist/components/icons/system/system-loading-spinner/system-loading-spinner.component.js.map +1 -1
- package/dist/components/icons/system/system-lock-fill/system-lock-fill.component.js +13 -16
- package/dist/components/icons/system/system-lock-fill/system-lock-fill.component.js.map +1 -1
- package/dist/components/icons/system/system-lock-line/system-lock-line.component.js +10 -13
- package/dist/components/icons/system/system-lock-line/system-lock-line.component.js.map +1 -1
- package/dist/components/icons/system/system-menu-line/system-menu-line.component.js +9 -12
- package/dist/components/icons/system/system-menu-line/system-menu-line.component.js.map +1 -1
- package/dist/components/icons/system/system-menu-line-s/system-menu-line-s.component.js +9 -12
- package/dist/components/icons/system/system-menu-line-s/system-menu-line-s.component.js.map +1 -1
- package/dist/components/icons/system/system-more-2-line/system-more-2-line.component.js +10 -13
- package/dist/components/icons/system/system-more-2-line/system-more-2-line.component.js.map +1 -1
- package/dist/components/icons/system/system-more-line/system-more-line.component.js +16 -19
- package/dist/components/icons/system/system-more-line/system-more-line.component.js.map +1 -1
- package/dist/components/icons/system/system-search-line/system-search-line.component.js +11 -14
- package/dist/components/icons/system/system-search-line/system-search-line.component.js.map +1 -1
- package/dist/components/icons/system/system-share-line/system-share-line.component.js +9 -12
- package/dist/components/icons/system/system-share-line/system-share-line.component.js.map +1 -1
- package/dist/components/icons/system/system-shield-check-fill/system-shield-check-fill.component.js +8 -11
- package/dist/components/icons/system/system-shield-check-fill/system-shield-check-fill.component.js.map +1 -1
- package/dist/components/icons/system/system-shield-check-line/system-shield-check-line.component.js +6 -9
- package/dist/components/icons/system/system-shield-check-line/system-shield-check-line.component.js.map +1 -1
- package/dist/components/icons/system/system-star-fill/system-star-fill.component.js +13 -16
- package/dist/components/icons/system/system-star-fill/system-star-fill.component.js.map +1 -1
- package/dist/components/icons/system/system-subtract-line/system-subtract-line.component.js +11 -14
- package/dist/components/icons/system/system-subtract-line/system-subtract-line.component.js.map +1 -1
- package/dist/components/icons/system/system-subtract-line2/system-subtract-line2.component.js +7 -10
- package/dist/components/icons/system/system-subtract-line2/system-subtract-line2.component.js.map +1 -1
- package/dist/components/icons/system/system-time-fill/system-time-fill.component.js +11 -14
- package/dist/components/icons/system/system-time-fill/system-time-fill.component.js.map +1 -1
- package/dist/components/icons/system/system-time-line/system-time-line.component.js +11 -14
- package/dist/components/icons/system/system-time-line/system-time-line.component.js.map +1 -1
- package/dist/components/icons/system/system-upload-2-fill/system-upload-2-fill.component.js +5 -8
- package/dist/components/icons/system/system-upload-2-fill/system-upload-2-fill.component.js.map +1 -1
- package/dist/components/icons/system/system-upload-2-line/system-upload-2-line.component.js +7 -10
- package/dist/components/icons/system/system-upload-2-line/system-upload-2-line.component.js.map +1 -1
- package/dist/components/icons/system/system-upload-line/system-upload-line.component.js +9 -12
- package/dist/components/icons/system/system-upload-line/system-upload-line.component.js.map +1 -1
- package/dist/components/icons/system/system-zoom-in-line/system-zoom-in-line.component.js +9 -12
- package/dist/components/icons/system/system-zoom-in-line/system-zoom-in-line.component.js.map +1 -1
- package/dist/components/icons/system/system-zoom-out-line/system-zoom-out-line.component.js +11 -14
- package/dist/components/icons/system/system-zoom-out-line/system-zoom-out-line.component.js.map +1 -1
- package/dist/components/icons/user/user-account-circle-fill/user-account-circle-fill.component.js +16 -19
- package/dist/components/icons/user/user-account-circle-fill/user-account-circle-fill.component.js.map +1 -1
- package/dist/components/icons/user/user-account-circle-line/user-account-circle-line.component.js +13 -16
- package/dist/components/icons/user/user-account-circle-line/user-account-circle-line.component.js.map +1 -1
- package/dist/components/icons/user/user-user-fill/user-user-fill.component.js +8 -11
- package/dist/components/icons/user/user-user-fill/user-user-fill.component.js.map +1 -1
- package/dist/components/icons/user/user-user-line/user-user-line.component.js +11 -14
- package/dist/components/icons/user/user-user-line/user-user-line.component.js.map +1 -1
- package/dist/components/image-zoom/image-zoom.component.js +12 -17
- package/dist/components/image-zoom/image-zoom.component.js.map +1 -1
- package/dist/components/input/_styles/input.scss.js +1 -1
- package/dist/components/input/input-base-element.js +41 -47
- package/dist/components/input/input-base-element.js.map +1 -1
- package/dist/components/label/_styles/label.scss.js +1 -1
- package/dist/components/label/label.component.js +8 -11
- package/dist/components/label/label.component.js.map +1 -1
- package/dist/components/link/link.component.js +23 -27
- package/dist/components/link/link.component.js.map +1 -1
- package/dist/components/list-item/list-item.component.d.ts +2 -0
- package/dist/components/list-item/list-item.component.js +24 -29
- package/dist/components/list-item/list-item.component.js.map +1 -1
- package/dist/components/modal/modal-base-element.js +36 -42
- package/dist/components/modal/modal-base-element.js.map +1 -1
- package/dist/components/navigation-menu/navigation-menu-item.component.d.ts +9 -1
- package/dist/components/navigation-menu/navigation-menu-item.component.js +36 -31
- package/dist/components/navigation-menu/navigation-menu-item.component.js.map +1 -1
- package/dist/components/navigation-menu/navigation-menu.component.js +20 -24
- package/dist/components/navigation-menu/navigation-menu.component.js.map +1 -1
- package/dist/components/notification-badge/notification-badge.component.js +28 -32
- package/dist/components/notification-badge/notification-badge.component.js.map +1 -1
- package/dist/components/number-input/number-input.component.d.ts +7 -0
- package/dist/components/number-input/number-input.component.js +23 -29
- package/dist/components/number-input/number-input.component.js.map +1 -1
- package/dist/components/official-website-banner/official-website-banner.component.d.ts +1 -0
- package/dist/components/official-website-banner/official-website-banner.component.js +19 -24
- package/dist/components/official-website-banner/official-website-banner.component.js.map +1 -1
- package/dist/components/option-group/option-group.component.js +17 -20
- package/dist/components/option-group/option-group.component.js.map +1 -1
- package/dist/components/option-item/option-item.component.d.ts +10 -0
- package/dist/components/option-item/option-item.component.js +66 -60
- package/dist/components/option-item/option-item.component.js.map +1 -1
- package/dist/components/option-item/option-item.scss.js +1 -1
- package/dist/components/option-list/__test__/listbox-harness.d.ts +129 -0
- package/dist/components/option-list/listbox-state.d.ts +230 -0
- package/dist/components/option-list/listbox-state.js +312 -0
- package/dist/components/option-list/listbox-state.js.map +1 -0
- package/dist/components/option-list/option-data.d.ts +35 -0
- package/dist/components/option-list/option-data.js +34 -0
- package/dist/components/option-list/option-data.js.map +1 -0
- package/dist/components/option-list/option-list.component.d.ts +66 -14
- package/dist/components/option-list/option-list.component.js +381 -294
- package/dist/components/option-list/option-list.component.js.map +1 -1
- package/dist/components/overlay/overlay.component.js +10 -13
- package/dist/components/overlay/overlay.component.js.map +1 -1
- package/dist/components/pager/pager.component.js +31 -37
- package/dist/components/pager/pager.component.js.map +1 -1
- package/dist/components/password-input/password-input.component.d.ts +12 -5
- package/dist/components/password-input/password-input.component.js +24 -30
- package/dist/components/password-input/password-input.component.js.map +1 -1
- package/dist/components/popup/popup-base-element.js +21 -25
- package/dist/components/popup/popup-base-element.js.map +1 -1
- package/dist/components/progress/progress.component.js +17 -21
- package/dist/components/progress/progress.component.js.map +1 -1
- package/dist/components/radio-button/_styles/radio-button.scss.js +1 -1
- package/dist/components/radio-button/radio-button.component.d.ts +5 -0
- package/dist/components/radio-button/radio-button.component.js +58 -62
- package/dist/components/radio-button/radio-button.component.js.map +1 -1
- package/dist/components/rating/_styles/rating.scss.js +2 -2
- package/dist/components/rating/rating.component.js +37 -41
- package/dist/components/rating/rating.component.js.map +1 -1
- package/dist/components/scroll-area/scroll-area.component.d.ts +2 -1
- package/dist/components/scroll-area/scroll-area.component.js +25 -28
- package/dist/components/scroll-area/scroll-area.component.js.map +1 -1
- package/dist/components/scroll-progress/scroll-progress.component.js +13 -17
- package/dist/components/scroll-progress/scroll-progress.component.js.map +1 -1
- package/dist/components/search/search.component.d.ts +6 -1
- package/dist/components/search/search.component.js.map +1 -1
- package/dist/components/select/select.component.d.ts +47 -0
- package/dist/components/select/select.component.js +268 -157
- package/dist/components/select/select.component.js.map +1 -1
- package/dist/components/select/select.scss.js +1 -1
- package/dist/components/sidenav/sidenav-group.component.d.ts +1 -0
- package/dist/components/sidenav/sidenav-group.component.js +11 -14
- package/dist/components/sidenav/sidenav-group.component.js.map +1 -1
- package/dist/components/sidenav/sidenav-item.component.js +20 -23
- package/dist/components/sidenav/sidenav-item.component.js.map +1 -1
- package/dist/components/sidenav/sidenav.component.js +17 -20
- package/dist/components/sidenav/sidenav.component.js.map +1 -1
- package/dist/components/skeleton/skeleton.component.js +9 -12
- package/dist/components/skeleton/skeleton.component.js.map +1 -1
- package/dist/components/skip-link/skip-link.component.js +13 -16
- package/dist/components/skip-link/skip-link.component.js.map +1 -1
- package/dist/components/snackbar/snackbar-message.component.d.ts +3 -1
- package/dist/components/snackbar/snackbar-message.component.js +39 -44
- package/dist/components/snackbar/snackbar-message.component.js.map +1 -1
- package/dist/components/snackbar/snackbar.component.d.ts +0 -1
- package/dist/components/snackbar/snackbar.component.js +36 -42
- package/dist/components/snackbar/snackbar.component.js.map +1 -1
- package/dist/components/spinner/spinner.component.js +33 -38
- package/dist/components/spinner/spinner.component.js.map +1 -1
- package/dist/components/stack/stack.component.d.ts +2 -1
- package/dist/components/stack/stack.component.js +16 -19
- package/dist/components/stack/stack.component.js.map +1 -1
- package/dist/components/switch/switch.component.d.ts +6 -0
- package/dist/components/switch/switch.component.js +48 -51
- package/dist/components/switch/switch.component.js.map +1 -1
- package/dist/components/switch/switch.scss.js +1 -1
- package/dist/components/tab/tab-group.component.d.ts +8 -3
- package/dist/components/tab/tab-group.component.js +43 -33
- package/dist/components/tab/tab-group.component.js.map +1 -1
- package/dist/components/tab/tab.component.js +22 -25
- package/dist/components/tab/tab.component.js.map +1 -1
- package/dist/components/table/table-cell.component.d.ts +1 -1
- package/dist/components/table/table-cell.component.js +16 -19
- package/dist/components/table/table-cell.component.js.map +1 -1
- package/dist/components/table/table-header.component.js +21 -24
- package/dist/components/table/table-header.component.js.map +1 -1
- package/dist/components/table/table-row.component.js +15 -18
- package/dist/components/table/table-row.component.js.map +1 -1
- package/dist/components/table/table.component.d.ts +2 -0
- package/dist/components/table/table.component.js +18 -22
- package/dist/components/table/table.component.js.map +1 -1
- package/dist/components/textarea/textarea.component.d.ts +2 -0
- package/dist/components/textarea/textarea.component.js +42 -46
- package/dist/components/textarea/textarea.component.js.map +1 -1
- package/dist/components/textarea/textarea.scss.js +1 -1
- package/dist/components/timeline/timeline-item.component.js +7 -10
- package/dist/components/timeline/timeline-item.component.js.map +1 -1
- package/dist/components/timeline/timeline.component.js +5 -8
- package/dist/components/timeline/timeline.component.js.map +1 -1
- package/dist/components/timepicker/time-grid.component.d.ts +3 -0
- package/dist/components/timepicker/time-grid.component.js +12 -15
- package/dist/components/timepicker/time-grid.component.js.map +1 -1
- package/dist/components/timepicker/timepicker.component.d.ts +5 -0
- package/dist/components/timepicker/timepicker.component.js +90 -95
- package/dist/components/timepicker/timepicker.component.js.map +1 -1
- package/dist/components/timepicker/timepicker.scss.js +1 -1
- package/dist/components/toc/toc.component.d.ts +2 -0
- package/dist/components/toc/toc.component.js +58 -61
- package/dist/components/toc/toc.component.js.map +1 -1
- package/dist/components/toggle-button/toggle-button.component.js +9 -12
- package/dist/components/toggle-button/toggle-button.component.js.map +1 -1
- package/dist/components/tooltip/tooltip.component.d.ts +2 -0
- package/dist/components/tooltip/tooltip.component.js +16 -18
- package/dist/components/tooltip/tooltip.component.js.map +1 -1
- package/dist/components/tray/tray.component.d.ts +4 -1
- package/dist/components/tray/tray.component.js +13 -16
- package/dist/components/tray/tray.component.js.map +1 -1
- package/dist/components/typography/typography.component.js +38 -41
- package/dist/components/typography/typography.component.js.map +1 -1
- package/dist/components.d.ts +3 -0
- package/dist/components.js +204 -195
- package/dist/components.js.map +1 -1
- package/dist/components.native.css +5 -2
- package/dist/components.native.css.map +1 -1
- package/dist/dap-design-system.d.ts +3 -0
- package/dist/dds-preupgrade.css +57 -0
- package/dist/dds.js +383 -374
- package/dist/dds.js.map +1 -1
- package/dist/internal/dds-hu-element.d.ts +8 -0
- package/dist/internal/dds-hu-element.js +40 -41
- package/dist/internal/dds-hu-element.js.map +1 -1
- package/dist/internal/mixin/choiceElementMixin.js +7 -7
- package/dist/internal/mixin/feedbackMixin.js +13 -15
- package/dist/internal/mixin/feedbackMixin.js.map +1 -1
- package/dist/internal/mixin/focusableMixin.js +6 -6
- package/dist/internal/mixin/formElementMixin.js +1 -1
- package/dist/internal/mixin/labelPositionedMixin.js +1 -1
- package/dist/internal/mixin/labelableMixin.d.ts +1 -1
- package/dist/internal/mixin/labelableMixin.js +61 -63
- package/dist/internal/mixin/labelableMixin.js.map +1 -1
- package/dist/internal/mixin/sizedMixin.js +29 -27
- package/dist/internal/mixin/sizedMixin.js.map +1 -1
- package/dist/internal/templates/formLabel.d.ts +41 -0
- package/dist/internal/templates/formLabel.js +47 -0
- package/dist/internal/templates/formLabel.js.map +1 -0
- package/dist/localization/localization.d.ts +1 -2
- package/dist/localization/localization.js +77 -76
- package/dist/localization/localization.js.map +1 -1
- package/dist/localization/localize-controller.d.ts +12 -0
- package/dist/localization/localize-controller.js +51 -0
- package/dist/localization/localize-controller.js.map +1 -0
- package/dist/manifest/types/vue/index.d.ts +527 -312
- package/dist/manifest/vscode.html-custom-data.json +333 -279
- package/dist/manifest/web-types.json +723 -619
- package/dist/react/dap-ds-accordion/index.d.ts +1 -0
- package/dist/react/dap-ds-accordion/index.js.map +1 -1
- package/dist/react/dap-ds-anchor-heading/index.d.ts +1 -0
- package/dist/react/dap-ds-anchor-heading/index.js.map +1 -1
- package/dist/react/dap-ds-banner/index.d.ts +1 -1
- package/dist/react/dap-ds-banner/index.js.map +1 -1
- package/dist/react/dap-ds-breadcrumb/index.d.ts +1 -1
- package/dist/react/dap-ds-breadcrumb/index.js.map +1 -1
- package/dist/react/dap-ds-button-group/index.d.ts +45 -0
- package/dist/react/dap-ds-button-group/index.js +15 -0
- package/dist/react/dap-ds-button-group/index.js.map +1 -0
- package/dist/react/dap-ds-button-group-separator/index.d.ts +24 -0
- package/dist/react/dap-ds-button-group-separator/index.js +15 -0
- package/dist/react/dap-ds-button-group-separator/index.js.map +1 -0
- package/dist/react/dap-ds-button-group-text/index.d.ts +30 -0
- package/dist/react/dap-ds-button-group-text/index.js +15 -0
- package/dist/react/dap-ds-button-group-text/index.js.map +1 -0
- package/dist/react/dap-ds-calendar/index.d.ts +3 -0
- package/dist/react/dap-ds-calendar/index.js.map +1 -1
- package/dist/react/dap-ds-callout/index.d.ts +1 -0
- package/dist/react/dap-ds-callout/index.js.map +1 -1
- package/dist/react/dap-ds-card/index.d.ts +1 -0
- package/dist/react/dap-ds-card/index.js.map +1 -1
- package/dist/react/dap-ds-checkbox/index.d.ts +7 -1
- package/dist/react/dap-ds-checkbox/index.js.map +1 -1
- package/dist/react/dap-ds-chip/index.d.ts +1 -0
- package/dist/react/dap-ds-chip/index.js.map +1 -1
- package/dist/react/dap-ds-code-puncher/index.d.ts +4 -0
- package/dist/react/dap-ds-code-puncher/index.js.map +1 -1
- package/dist/react/dap-ds-combobox/index.d.ts +9 -1
- package/dist/react/dap-ds-combobox/index.js.map +1 -1
- package/dist/react/dap-ds-command/index.d.ts +3 -0
- package/dist/react/dap-ds-command/index.js.map +1 -1
- package/dist/react/dap-ds-copybox-input/index.d.ts +11 -0
- package/dist/react/dap-ds-copybox-input/index.js.map +1 -1
- package/dist/react/dap-ds-datatable/index.d.ts +17 -0
- package/dist/react/dap-ds-datatable/index.js.map +1 -1
- package/dist/react/dap-ds-datepicker/index.d.ts +8 -0
- package/dist/react/dap-ds-datepicker/index.js.map +1 -1
- package/dist/react/dap-ds-file-input/index.d.ts +3 -0
- package/dist/react/dap-ds-file-input/index.js.map +1 -1
- package/dist/react/dap-ds-file-input-list-item/index.d.ts +1 -0
- package/dist/react/dap-ds-file-input-list-item/index.js.map +1 -1
- package/dist/react/dap-ds-form-label/index.d.ts +1 -1
- package/dist/react/dap-ds-form-label/index.js.map +1 -1
- package/dist/react/dap-ds-icon-button/index.d.ts +1 -0
- package/dist/react/dap-ds-icon-button/index.js.map +1 -1
- package/dist/react/dap-ds-input-group/index.d.ts +4 -0
- package/dist/react/dap-ds-input-group/index.js.map +1 -1
- package/dist/react/dap-ds-list-item/index.d.ts +2 -0
- package/dist/react/dap-ds-list-item/index.js.map +1 -1
- package/dist/react/dap-ds-number-input/index.d.ts +7 -0
- package/dist/react/dap-ds-number-input/index.js.map +1 -1
- package/dist/react/dap-ds-official-website-banner/index.d.ts +1 -0
- package/dist/react/dap-ds-official-website-banner/index.js.map +1 -1
- package/dist/react/dap-ds-option-item/index.d.ts +1 -0
- package/dist/react/dap-ds-option-item/index.js.map +1 -1
- package/dist/react/dap-ds-option-list/index.d.ts +1 -1
- package/dist/react/dap-ds-option-list/index.js.map +1 -1
- package/dist/react/dap-ds-password-input/index.d.ts +12 -5
- package/dist/react/dap-ds-password-input/index.js.map +1 -1
- package/dist/react/dap-ds-radio-button/index.d.ts +5 -0
- package/dist/react/dap-ds-radio-button/index.js.map +1 -1
- package/dist/react/dap-ds-radio-group/index.d.ts +5 -0
- package/dist/react/dap-ds-radio-group/index.js.map +1 -1
- package/dist/react/dap-ds-scroll-area/index.d.ts +2 -1
- package/dist/react/dap-ds-scroll-area/index.js.map +1 -1
- package/dist/react/dap-ds-search/index.d.ts +6 -1
- package/dist/react/dap-ds-search/index.js.map +1 -1
- package/dist/react/dap-ds-select/index.d.ts +6 -0
- package/dist/react/dap-ds-select/index.js.map +1 -1
- package/dist/react/dap-ds-sidenav-group/index.d.ts +1 -0
- package/dist/react/dap-ds-sidenav-group/index.js.map +1 -1
- package/dist/react/dap-ds-snackbar/index.d.ts +0 -1
- package/dist/react/dap-ds-snackbar/index.js.map +1 -1
- package/dist/react/dap-ds-snackbar-message/index.d.ts +3 -1
- package/dist/react/dap-ds-snackbar-message/index.js.map +1 -1
- package/dist/react/dap-ds-stack/index.d.ts +2 -1
- package/dist/react/dap-ds-stack/index.js.map +1 -1
- package/dist/react/dap-ds-switch/index.d.ts +6 -0
- package/dist/react/dap-ds-switch/index.js.map +1 -1
- package/dist/react/dap-ds-tab-group/index.d.ts +4 -2
- package/dist/react/dap-ds-tab-group/index.js.map +1 -1
- package/dist/react/dap-ds-table/index.d.ts +2 -0
- package/dist/react/dap-ds-table/index.js.map +1 -1
- package/dist/react/dap-ds-table-cell/index.d.ts +1 -1
- package/dist/react/dap-ds-table-cell/index.js.map +1 -1
- package/dist/react/dap-ds-textarea/index.d.ts +2 -0
- package/dist/react/dap-ds-textarea/index.js.map +1 -1
- package/dist/react/dap-ds-time-grid/index.d.ts +3 -0
- package/dist/react/dap-ds-time-grid/index.js.map +1 -1
- package/dist/react/dap-ds-timepicker/index.d.ts +5 -0
- package/dist/react/dap-ds-timepicker/index.js.map +1 -1
- package/dist/react/dap-ds-toc/index.d.ts +2 -0
- package/dist/react/dap-ds-toc/index.js.map +1 -1
- package/dist/react/dap-ds-tooltip/index.d.ts +2 -0
- package/dist/react/dap-ds-tooltip/index.js.map +1 -1
- package/dist/react/dap-ds-tray/index.d.ts +4 -1
- package/dist/react/dap-ds-tray/index.js.map +1 -1
- package/dist/react/index.d.ts +11 -8
- package/dist/react-types.ts +11 -8
- package/dist/react.js +366 -360
- package/dist/react.js.map +1 -1
- package/package.json +14 -3
- package/dist/node_modules/@lit/context/lib/context-request-event.js +0 -14
- package/dist/node_modules/@lit/context/lib/context-request-event.js.map +0 -1
- package/dist/node_modules/@lit/context/lib/controllers/context-consumer.js +0 -31
- package/dist/node_modules/@lit/context/lib/controllers/context-consumer.js.map +0 -1
- package/dist/node_modules/@lit/context/lib/controllers/context-provider.js +0 -40
- package/dist/node_modules/@lit/context/lib/controllers/context-provider.js.map +0 -1
- package/dist/node_modules/@lit/context/lib/create-context.js +0 -12
- package/dist/node_modules/@lit/context/lib/create-context.js.map +0 -1
- package/dist/node_modules/@lit/context/lib/value-notifier.js +0 -37
- package/dist/node_modules/@lit/context/lib/value-notifier.js.map +0 -1
- package/dist/node_modules/@lit/reactive-element/css-tag.js +0 -51
- package/dist/node_modules/@lit/reactive-element/css-tag.js.map +0 -1
- package/dist/node_modules/@lit/reactive-element/decorators/base.js +0 -10
- package/dist/node_modules/@lit/reactive-element/decorators/base.js.map +0 -1
- package/dist/node_modules/@lit/reactive-element/decorators/property.js +0 -38
- package/dist/node_modules/@lit/reactive-element/decorators/property.js.map +0 -1
- package/dist/node_modules/@lit/reactive-element/decorators/query-all.js +0 -17
- package/dist/node_modules/@lit/reactive-element/decorators/query-all.js.map +0 -1
- package/dist/node_modules/@lit/reactive-element/decorators/query-assigned-elements.js +0 -20
- package/dist/node_modules/@lit/reactive-element/decorators/query-assigned-elements.js.map +0 -1
- package/dist/node_modules/@lit/reactive-element/decorators/query-assigned-nodes.js +0 -20
- package/dist/node_modules/@lit/reactive-element/decorators/query-assigned-nodes.js.map +0 -1
- package/dist/node_modules/@lit/reactive-element/decorators/query.js +0 -21
- package/dist/node_modules/@lit/reactive-element/decorators/query.js.map +0 -1
- package/dist/node_modules/@lit/reactive-element/decorators/state.js +0 -25
- package/dist/node_modules/@lit/reactive-element/decorators/state.js.map +0 -1
- package/dist/node_modules/@lit/reactive-element/reactive-element.js +0 -276
- package/dist/node_modules/@lit/reactive-element/reactive-element.js.map +0 -1
- package/dist/node_modules/lit-element/lit-element.js +0 -53
- package/dist/node_modules/lit-element/lit-element.js.map +0 -1
- package/dist/node_modules/lit-html/async-directive.js +0 -71
- package/dist/node_modules/lit-html/async-directive.js.map +0 -1
- package/dist/node_modules/lit-html/directive-helpers.js +0 -46
- package/dist/node_modules/lit-html/directive-helpers.js.map +0 -1
- package/dist/node_modules/lit-html/directive.js +0 -28
- package/dist/node_modules/lit-html/directive.js.map +0 -1
- package/dist/node_modules/lit-html/directives/if-defined.js +0 -11
- package/dist/node_modules/lit-html/directives/if-defined.js.map +0 -1
- package/dist/node_modules/lit-html/directives/map.js +0 -15
- package/dist/node_modules/lit-html/directives/map.js.map +0 -1
- package/dist/node_modules/lit-html/directives/repeat.js +0 -63
- package/dist/node_modules/lit-html/directives/repeat.js.map +0 -1
- package/dist/node_modules/lit-html/directives/style-map.js +0 -37
- package/dist/node_modules/lit-html/directives/style-map.js.map +0 -1
- package/dist/node_modules/lit-html/lit-html.js +0 -249
- package/dist/node_modules/lit-html/lit-html.js.map +0 -1
- package/dist/node_modules/lit-html/static.js +0 -34
- package/dist/node_modules/lit-html/static.js.map +0 -1
- package/dist/node_modules/lit-i18n/src/lit-i18n.js +0 -95
- package/dist/node_modules/lit-i18n/src/lit-i18n.js.map +0 -1
|
@@ -46,6 +46,11 @@ import { default as DapDSTypography } from '../typography/typography.component';
|
|
|
46
46
|
* @csspart control - The control of the radio button.
|
|
47
47
|
* @csspart label-container - The label container of the radio button.
|
|
48
48
|
* @csspart description - The description of the radio button.
|
|
49
|
+
* @csspart feedback - The feedback of the radio button.
|
|
50
|
+
* @csspart high-contrast - The high contrast indicator of the radio button.
|
|
51
|
+
* @csspart label-base - The base of the label.
|
|
52
|
+
* @csspart label-required - The required indicator of the label.
|
|
53
|
+
* @csspart label-optional - The optional indicator of the label.
|
|
49
54
|
*
|
|
50
55
|
* @cssproperty --dds-radio-size - Sets the size of the radio button. (default: var(--dds-spacing-600))
|
|
51
56
|
* @cssproperty --dds-radio-border-width - Sets the border width of the radio button. (default: var(--dds-border-width-large))
|
|
@@ -1,25 +1,22 @@
|
|
|
1
|
-
import { clsx as
|
|
2
|
-
import "
|
|
3
|
-
import "
|
|
4
|
-
import "
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import
|
|
9
|
-
import
|
|
10
|
-
import
|
|
11
|
-
import
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
for (var s = void 0, c = p.length - 1, u; c >= 0; c--)
|
|
17
|
-
(u = p[c]) && (s = u(e, t, s) || s);
|
|
18
|
-
return s && _(e, t, s), s;
|
|
1
|
+
import { clsx as l } from "../../node_modules/clsx/dist/clsx.js";
|
|
2
|
+
import { unsafeCSS as b } from "lit";
|
|
3
|
+
import { query as y, property as o } from "lit/decorators.js";
|
|
4
|
+
import { ifDefined as d } from "lit/directives/if-defined.js";
|
|
5
|
+
import { html as c } from "lit/static-html.js";
|
|
6
|
+
import { LabeledChoiceElement as f } from "../../internal/mixin/labeledChoiceElement.js";
|
|
7
|
+
import { formLabelTemplate as m } from "../../internal/templates/formLabel.js";
|
|
8
|
+
import k from "../feedback/feedback.component.js";
|
|
9
|
+
import v from "../form/form-label/form-label.component.js";
|
|
10
|
+
import _ from "../typography/typography.component.js";
|
|
11
|
+
import I from "./_styles/radio-button.scss.js";
|
|
12
|
+
var $ = Object.defineProperty, n = (p, e, t, a) => {
|
|
13
|
+
for (var s = void 0, h = p.length - 1, u; h >= 0; h--)
|
|
14
|
+
(u = p[h]) && (s = u(e, t, s) || s);
|
|
15
|
+
return s && $(e, t, s), s;
|
|
19
16
|
};
|
|
20
|
-
const
|
|
17
|
+
const S = typeof ElementInternals != "undefined" && "ariaDescription" in ElementInternals.prototype;
|
|
21
18
|
var i;
|
|
22
|
-
const r = (i = class extends
|
|
19
|
+
const r = (i = class extends f {
|
|
23
20
|
constructor() {
|
|
24
21
|
super(), this.focusable = !1, this.preventDefault = !1, this.readonly = !1, this.border = !1, this.type = "normal", this._onHostKeydown = (t) => {
|
|
25
22
|
t.key === "Enter" && (t.preventDefault(), HTMLElement.prototype.click.apply(this));
|
|
@@ -37,7 +34,7 @@ const r = (i = class extends y {
|
|
|
37
34
|
const e = this.checked ? "true" : "false";
|
|
38
35
|
this.internals.ariaChecked = e, this.setAttribute("aria-checked", e), this.posInSet != null ? this.setAttribute("aria-posinset", String(this.posInSet)) : this.removeAttribute("aria-posinset"), this.setSize != null ? this.setAttribute("aria-setsize", String(this.setSize)) : this.removeAttribute("aria-setsize"), this.internals.ariaPosInSet = this.posInSet != null ? String(this.posInSet) : null, this.internals.ariaSetSize = this.setSize != null ? String(this.setSize) : null, this.internals.ariaDisabled = this.disabled ? "true" : null, this.internals.ariaRequired = this.required ? "true" : null;
|
|
39
36
|
let t;
|
|
40
|
-
|
|
37
|
+
S ? (this.internals.ariaLabel = this.label || null, this.internals.ariaDescription = this.description || null, t = this.label || "") : (t = [this.label, this.description].filter(Boolean).join(". "), this.internals.ariaLabel = t || null), t ? this.setAttribute("aria-label", t) : this.removeAttribute("aria-label");
|
|
41
38
|
const a = (this.focusable || this.checked) && !this.disabled;
|
|
42
39
|
this.setAttribute("tabindex", a ? "0" : "-1");
|
|
43
40
|
}
|
|
@@ -115,11 +112,11 @@ const r = (i = class extends y {
|
|
|
115
112
|
}
|
|
116
113
|
}
|
|
117
114
|
render() {
|
|
118
|
-
return
|
|
115
|
+
return c`
|
|
119
116
|
<div part="base">
|
|
120
117
|
<label
|
|
121
118
|
part="base-label"
|
|
122
|
-
class=${
|
|
119
|
+
class=${l("radio choice", `radio--${this.size}`, {
|
|
123
120
|
"radio--checked": this.checked,
|
|
124
121
|
"radio--disabled": this.disabled,
|
|
125
122
|
"radio--readonly": this.readonly,
|
|
@@ -131,14 +128,14 @@ const r = (i = class extends y {
|
|
|
131
128
|
})}>
|
|
132
129
|
<div
|
|
133
130
|
part="wrapper"
|
|
134
|
-
class=${
|
|
131
|
+
class=${l("input__wrapper", {
|
|
135
132
|
"input__wrapper--background": this.type === "background",
|
|
136
133
|
"input__wrapper--border": this.border
|
|
137
134
|
})}>
|
|
138
135
|
<input
|
|
139
136
|
part="input"
|
|
140
137
|
type="radio"
|
|
141
|
-
class=${
|
|
138
|
+
class=${l("radio__input", {
|
|
142
139
|
"radio__input--background": this.type === "background"
|
|
143
140
|
})}
|
|
144
141
|
id=${this.inputId}
|
|
@@ -155,7 +152,7 @@ const r = (i = class extends y {
|
|
|
155
152
|
@input=${this.handleInput} />
|
|
156
153
|
<span
|
|
157
154
|
part="control"
|
|
158
|
-
class=${
|
|
155
|
+
class=${l("input__control", {
|
|
159
156
|
"input__control--disabled": this.disabled,
|
|
160
157
|
"input__control--readonly": this.readonly,
|
|
161
158
|
"input__control--invalid": this.invalid,
|
|
@@ -166,7 +163,7 @@ const r = (i = class extends y {
|
|
|
166
163
|
</slot>
|
|
167
164
|
<span
|
|
168
165
|
part="high-contrast"
|
|
169
|
-
class=${
|
|
166
|
+
class=${l(
|
|
170
167
|
"input__control-high-contrast",
|
|
171
168
|
`input__control-high-contrast--${this.size}`,
|
|
172
169
|
{
|
|
@@ -178,31 +175,30 @@ const r = (i = class extends y {
|
|
|
178
175
|
|
|
179
176
|
<div
|
|
180
177
|
part="label-container"
|
|
181
|
-
class=${
|
|
178
|
+
class=${l("choice__label-container", {
|
|
182
179
|
"choice__label-container--disabled": this.disabled,
|
|
183
180
|
"choice__label-container--readonly": this.readonly,
|
|
184
181
|
"choice__label--bottom": this.descriptionPlacement === "top",
|
|
185
182
|
"choice__label--top": this.descriptionPlacement === "bottom"
|
|
186
183
|
})}>
|
|
187
|
-
${
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
${this.description && h`
|
|
184
|
+
${m({
|
|
185
|
+
label: this.label,
|
|
186
|
+
id: this.labelId,
|
|
187
|
+
size: this.size,
|
|
188
|
+
required: this.required,
|
|
189
|
+
requiredLabel: this.requiredLabel,
|
|
190
|
+
optional: this.optional,
|
|
191
|
+
optionalLabel: this.optionalLabel,
|
|
192
|
+
disabled: this.disabled || this.readonly,
|
|
193
|
+
hideLabel: this.hideLabel,
|
|
194
|
+
subtle: !0,
|
|
195
|
+
noMargin: !0,
|
|
196
|
+
// Decorative <span> (not a <label>): radio-button wraps its input in
|
|
197
|
+
// an outer <label>; the name comes from aria-labelledby=${labelId}.
|
|
198
|
+
as: "span",
|
|
199
|
+
ariaHidden: !0
|
|
200
|
+
})}
|
|
201
|
+
${this.description && c`
|
|
206
202
|
<dap-ds-typography
|
|
207
203
|
class="description"
|
|
208
204
|
variant="description"
|
|
@@ -215,7 +211,7 @@ const r = (i = class extends y {
|
|
|
215
211
|
`}
|
|
216
212
|
</div>
|
|
217
213
|
</div>
|
|
218
|
-
${this.feedback &&
|
|
214
|
+
${this.feedback && c`
|
|
219
215
|
<dap-ds-feedback
|
|
220
216
|
part="feedback"
|
|
221
217
|
feedbackType=${d(this.feedbackType)}
|
|
@@ -230,36 +226,36 @@ const r = (i = class extends y {
|
|
|
230
226
|
`;
|
|
231
227
|
}
|
|
232
228
|
}, i.tagName = "dap-ds-radio-button", i.dependencies = {
|
|
233
|
-
"dap-ds-form-label":
|
|
234
|
-
"dap-ds-typography":
|
|
235
|
-
"dap-ds-feedback":
|
|
236
|
-
}, i.nextId = 0, i.styles =
|
|
229
|
+
"dap-ds-form-label": v,
|
|
230
|
+
"dap-ds-typography": _,
|
|
231
|
+
"dap-ds-feedback": k
|
|
232
|
+
}, i.nextId = 0, i.styles = b(I), i);
|
|
237
233
|
n([
|
|
238
|
-
|
|
234
|
+
y(".radio__input")
|
|
239
235
|
], r.prototype, "input");
|
|
240
236
|
n([
|
|
241
|
-
|
|
237
|
+
o({ type: Boolean })
|
|
242
238
|
], r.prototype, "focusable");
|
|
243
239
|
n([
|
|
244
|
-
|
|
240
|
+
o({ type: Number })
|
|
245
241
|
], r.prototype, "posInSet");
|
|
246
242
|
n([
|
|
247
|
-
|
|
243
|
+
o({ type: Number })
|
|
248
244
|
], r.prototype, "setSize");
|
|
249
245
|
n([
|
|
250
|
-
|
|
246
|
+
o({ type: Boolean, reflect: !0 })
|
|
251
247
|
], r.prototype, "preventDefault");
|
|
252
248
|
n([
|
|
253
|
-
|
|
249
|
+
o({ type: Boolean, reflect: !0 })
|
|
254
250
|
], r.prototype, "readonly");
|
|
255
251
|
n([
|
|
256
|
-
|
|
252
|
+
o({ type: Boolean })
|
|
257
253
|
], r.prototype, "border");
|
|
258
254
|
n([
|
|
259
|
-
|
|
255
|
+
o({ type: String })
|
|
260
256
|
], r.prototype, "type");
|
|
261
|
-
let
|
|
257
|
+
let T = r;
|
|
262
258
|
export {
|
|
263
|
-
|
|
259
|
+
T as default
|
|
264
260
|
};
|
|
265
261
|
//# sourceMappingURL=radio-button.component.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"radio-button.component.js","sources":["../../../src/components/radio-button/radio-button.component.ts"],"sourcesContent":["import clsx from 'clsx'\nimport { PropertyValueMap, unsafeCSS } from 'lit'\nimport { property, query } from 'lit/decorators.js'\nimport { ifDefined } from 'lit/directives/if-defined.js'\nimport { html } from 'lit/static-html.js'\n\nimport { CommonFormElementSize, CommonSize } from '@/common/types'\nimport { LabeledChoiceElement } from '@/internal/mixin/labeledChoiceElement'\n\nimport DapDSFeedback from '../feedback/feedback.component'\nimport DapDSFormLabel from '../form/form-label/form-label.component'\nimport DapDSTypography from '../typography/typography.component'\nimport styles from './_styles/radio-button.scss?inline'\n\n// Detected once at module load — avoids per-update property lookup.\nconst SUPPORTS_ARIA_DESCRIPTION =\n typeof ElementInternals !== 'undefined' &&\n 'ariaDescription' in ElementInternals.prototype\n\n/**\n * `dap-ds-radio-button`\n * @summary A radio button is a graphical control element that allows the user to choose only one of a predefined set of mutually exclusive options.\n * @element dap-ds-radio-button\n * @title - Radio button\n *\n * @event {{ checked: boolean, value: string, disabled: boolean, readonly: boolean, type: 'radio' }} dds-change - Fired when the radio button is checked.\n * @event {{ void }} dds-blur - Emitted when the radio button loses focus.\n * @event {{ void }} dds-focus - Emitted when the radio button gains focus.\n * @event {{ checked: boolean, value: string, disabled: boolean, readonly: boolean }} dds-input - Emitted when the radio button receives input.\n *\n * @property {string} name - The name of the radio button.\n * @property {string} value - The value of the radio button.\n * @property {boolean} checked - Whether the radio button is checked.\n * @property {string} label - The label of the radio button.\n * @property {boolean} hideLabel - Visually hides the label while keeping it available to assistive technology. (default: false)\n * @property {string} description - The description of the radio button.\n * @property {boolean} disabled - Whether the radio button is disabled.\n * @property {boolean} readonly - Whether the radio button is readonly (cannot be changed but value is submitted with form).\n * @property {boolean} required - Whether the radio button is required.\n * @property {'xs' | 'sm' | 'lg'} size - The size of the radio button. Default is 'sm'.\n * @property {'left' | 'right'} labelPlacement - The placement of the label.\n * @property {'top' | 'bottom'} descriptionPlacement - The placement of the description.\n * @property {boolean} subtle - The weight of the label.\n * @property {string} feedback - The feedback of the radio button.\n * @property {'negative' | 'positive' | 'warning'} feedbackType - The feedback type of the radio button.\n * @property {boolean} invalid - The invalid state of the radio button.\n * @property {boolean} optional - The optional state of the radio button.\n * @property {string} optionalLabel - The optional label of the radio button.\n * @property {string} requiredLabel - The required indicator of the radio button. (default: '*')\n * @property {boolean} preventDefault - Whether the radio button should prevent the default action.\n * @property {boolean} focusable - Whether the radio button is focusable.\n * @property {'normal' | 'background'} type - The type of the radio button.\n * @property {boolean} border - This sets up a border around the radio button, when true.\n *\n * @csspart base - The main radio button container.\n * @csspart wrapper - The wrapper of the radio button.\n * @csspart base-label - The main label container.\n * @csspart label - The label of the radio button.\n * @csspart input - The native input of the radio button.\n * @csspart control - The control of the radio button.\n * @csspart label-container - The label container of the radio button.\n * @csspart description - The description of the radio button.\n *\n * @cssproperty --dds-radio-size - Sets the size of the radio button. (default: var(--dds-spacing-600))\n * @cssproperty --dds-radio-border-width - Sets the border width of the radio button. (default: var(--dds-border-width-large))\n * @cssproperty --dds-radio-border-radius - Sets the border radius of the radio button. (default: var(--dds-radius-rounded))\n * @cssproperty --dds-radio-border-color - Sets the border color of the radio button. (default: var(--dds-border-neutral-base))\n * @cssproperty --dds-radio-background-color - Sets the background color of the radio button. (default: var(--dds-background-neutral-base))\n * @cssproperty --dds-radio-hover-border-color - Sets the border color of the radio button on hover. (default: var(--dds-border-neutral-medium))\n * @cssproperty --dds-radio-hover-background-color - Sets the background color of the radio button on hover. (default: var(--dds-background-neutral-medium))\n * @cssproperty --dds-radio-active-border-color - Sets the border color of the radio button when active. (default: var(--dds-border-neutral-strong))\n * @cssproperty --dds-radio-active-background-color - Sets the background color of the radio button when active. (default: var(--dds-background-neutral-strong))\n * @cssproperty --dds-radio-checked-background-color - Sets the background color of the checked radio button. (default: var(--dds-background-brand-base-inverted))\n * @cssproperty --dds-radio-checked-hover-background-color - Sets the background color of the checked radio button on hover. (default: var(--dds-background-brand-medium-inverted))\n * @cssproperty --dds-radio-checked-active-background-color - Sets the background color of the checked radio button when active. (default: var(--dds-background-brand-strong-inverted))\n * @cssproperty --dds-radio-disabled-background-color - Sets the background color of the disabled radio button. (default: var(--dds-background-neutral-disabled))\n * @cssproperty --dds-radio-icon-background-color - Sets the background color of the radio button icon. (default: var(--dds-transparent-white-strong-static))\n * @cssproperty --dds-radio-disabled-icon-background-color - Sets the background color of the disabled radio button icon. (default: var(--dds-background-neutral-stronger))\n * @cssproperty --dds-radio-invalid-border-color - Sets the border color of the invalid radio button. (default: var(--dds-border-negative-base))\n * @cssproperty --dds-radio-invalid-background-color - Sets the background color of the invalid radio button. (default: var(--dds-background-negative-base))\n * @cssproperty --dds-radio-invalid-hover-border-color - Sets the border color of the invalid radio button on hover. (default: var(--dds-border-negative-medium))\n * @cssproperty --dds-radio-invalid-hover-background-color - Sets the background color of the invalid radio button on hover. (default: var(--dds-background-negative-medium))\n * @cssproperty --dds-radio-invalid-active-border-color - Sets the border color of the invalid radio button when active. (default: var(--dds-border-negative-strong))\n * @cssproperty --dds-radio-invalid-active-background-color - Sets the background color of the invalid radio button when active. (default: var(--dds-background-negative-strong))\n * @cssproperty --dds-radio-invalid-checked-background-color - Sets the background color of the invalid checked radio button. (default: var(--dds-background-negative-base-inverted))\n * @cssproperty --dds-radio-invalid-checked-hover-background-color - Sets the background color of the invalid checked radio button on hover. (default: var(--dds-background-negative-medium-inverted))\n * @cssproperty --dds-radio-invalid-checked-active-background-color - Sets the background color of the invalid checked radio button when active. (default: var(--dds-background-negative-strong-inverted))\n * @cssproperty --dds-radio-icon-size - Sets the size of the radio button icon. (default: var(--dds-spacing-300))\n * @cssproperty --dds-radio-readonly-border-color - Sets the border color when the radio button is readonly. (default: var(--dds-border-neutral-subtle))\n * @cssproperty --dds-radio-readonly-background-color - Sets the background color when the radio button is readonly. (default: var(--dds-background-neutral-subtle))\n * @cssproperty --dds-radio-readonly-icon-color - Sets the color of the radio button icon when readonly. (default: var(--dds-text-neutral-base))\n */\nexport default class DapDSRadioButton extends LabeledChoiceElement {\n static tagName = 'dap-ds-radio-button'\n\n static dependencies = {\n 'dap-ds-form-label': DapDSFormLabel,\n 'dap-ds-typography': DapDSTypography,\n 'dap-ds-feedback': DapDSFeedback,\n }\n\n private static nextId = 0\n\n private readonly inputId: string\n private readonly labelId: string\n private readonly descriptionId: string\n\n @query('.radio__input') private readonly input!: HTMLInputElement\n\n /** Whether the radio button is focusable */\n @property({ type: Boolean }) focusable = false\n\n /** Position in set — set by radio-group for correct screen reader counting */\n @property({ type: Number }) posInSet?: number\n\n /** Set size — set by radio-group for correct screen reader counting */\n @property({ type: Number }) setSize?: number\n\n /** Whether the radio button should prevent the default action */\n @property({ type: Boolean, reflect: true }) preventDefault: boolean = false\n\n /** Whether the radio button is readonly */\n @property({ type: Boolean, reflect: true }) readonly: boolean = false\n\n /** This sets up a border around the radio button, when true. */\n @property({ type: Boolean }) border: boolean = false\n\n /** The type of the radio button\n * @type {'normal' | 'background'}\n */\n @property({ type: String }) type: 'normal' | 'background' = 'normal'\n\n static readonly styles = unsafeCSS(styles)\n\n constructor() {\n super()\n DapDSRadioButton.nextId++\n const uniqueSuffix =\n typeof crypto !== 'undefined' && crypto.randomUUID\n ? crypto.randomUUID().slice(0, 8)\n : Date.now().toString(36)\n this.inputId = `input-${DapDSRadioButton.nextId}-${uniqueSuffix}`\n this.labelId = `label-${DapDSRadioButton.nextId}-${uniqueSuffix}`\n this.descriptionId = `description-${DapDSRadioButton.nextId}-${uniqueSuffix}`\n // Initialize the feedbackId from FeedbackMixin\n this.feedbackId = `feedback-${DapDSRadioButton.nextId}-${uniqueSuffix}`\n // Set host as the ARIA radio node so screen readers get correct posinset/setsize.\n // Native <input type=\"radio\"> inside shadow DOM cannot be grouped across shadow\n // boundaries, causing browsers to compute \"1 of 1\" regardless of aria-posinset.\n this.internals.role = 'radio'\n // NOTE: setAttribute('role') cannot be called here — the custom element spec\n // forbids adding attributes in the constructor (React throws NotSupportedError\n // via document.createElement). Moved to connectedCallback instead.\n }\n\n connectedCallback() {\n super.connectedCallback()\n // Explicit role attribute for screen readers that don't honour ElementInternals.\n // Must be set here, not in the constructor (spec forbids constructor attributes).\n this.setAttribute('role', 'radio')\n this.addEventListener('focus', this.onFocus)\n this.addEventListener('blur', this.onBlur)\n this.addEventListener('keydown', this._onHostKeydown)\n }\n\n disconnectedCallback() {\n super.disconnectedCallback()\n this.removeEventListener('focus', this.onFocus)\n this.removeEventListener('blur', this.onBlur)\n this.removeEventListener('keydown', this._onHostKeydown)\n }\n\n private _onHostKeydown = (event: KeyboardEvent): void => {\n if (event.key === 'Enter') {\n event.preventDefault()\n // Dispatch click on host so the radio-group's click handler selects this radio\n HTMLElement.prototype.click.apply(this)\n }\n }\n\n private _syncHostAria(): void {\n // Explicit aria-checked on host — internals alone not read by all SRs.\n const checkedStr = this.checked ? 'true' : 'false'\n this.internals.ariaChecked = checkedStr\n this.setAttribute('aria-checked', checkedStr)\n\n // Chrome overrides internals posInSet/setSize for elements with shadow-DOM\n // same-name radio inputs (computing \"1 of 1\" per shadow scope). Explicit\n // HTML attributes take precedence and work correctly in all browsers.\n if (this.posInSet != null) {\n this.setAttribute('aria-posinset', String(this.posInSet))\n } else {\n this.removeAttribute('aria-posinset')\n }\n if (this.setSize != null) {\n this.setAttribute('aria-setsize', String(this.setSize))\n } else {\n this.removeAttribute('aria-setsize')\n }\n this.internals.ariaPosInSet =\n this.posInSet != null ? String(this.posInSet) : null\n this.internals.ariaSetSize =\n this.setSize != null ? String(this.setSize) : null\n\n this.internals.ariaDisabled = this.disabled ? 'true' : null\n this.internals.ariaRequired = this.required ? 'true' : null\n\n // aria-description is ARIA 1.3 and not yet supported in Safari/WebKit.\n // Fall back to merging description into the accessible name for those browsers.\n // Always set explicit aria-label on the host for SRs that don't read internals.\n let accessibleName: string\n if (SUPPORTS_ARIA_DESCRIPTION) {\n this.internals.ariaLabel = this.label || null\n this.internals.ariaDescription = this.description || null\n accessibleName = this.label || ''\n } else {\n const combined = [this.label, this.description].filter(Boolean)\n accessibleName = combined.join('. ')\n this.internals.ariaLabel = accessibleName || null\n }\n if (accessibleName) {\n this.setAttribute('aria-label', accessibleName)\n } else {\n this.removeAttribute('aria-label')\n }\n\n // Tabindex lives on the host (not the hidden inner input) so the host is\n // the keyboard focus target and screen readers track focus correctly.\n const focusable = (this.focusable || this.checked) && !this.disabled\n this.setAttribute('tabindex', focusable ? '0' : '-1')\n }\n\n /**\n * Handles click events on the radio button.\n * Manages the checked state and emits change events.\n * @private\n */\n private handleClick() {\n // Early return if click should be prevented, component is disabled, or readonly\n if (this.preventDefault || this.disabled || this.readonly) {\n return\n }\n\n this.checked = true\n\n const { checked, value, disabled } = this\n\n // Emit change event with null safety\n try {\n this.emit('dds-change', {\n checked,\n // `?? ''` not `|| ''` — a radio may legitimately carry `false` or `0`\n value: value ?? '',\n disabled,\n readonly: this.readonly,\n type: 'radio',\n })\n } catch (error) {\n console.error('Error emitting radio button change event:', error)\n }\n\n // Update validity state with error handling\n try {\n this.setValidity()\n } catch (error) {\n console.error('Error setting radio button validity:', error)\n }\n }\n\n formResetCallback() {\n this.internals.setValidity({})\n this.internals.setFormValue(this.defaultValue)\n this.value = this.defaultValue\n this.checked = this.defaultValue === this.value\n }\n\n /**\n * Handles input events on the radio button.\n * Emits the dds-input event with current radio button state.\n * @private\n */\n private handleInput() {\n const { checked, value, disabled } = this\n\n const event = new CustomEvent('dds-input', {\n bubbles: true,\n cancelable: false,\n composed: true,\n detail: { checked, value, disabled, readonly: this.readonly },\n })\n\n this.dispatchEvent(event)\n }\n\n public get focusElement(): HTMLInputElement {\n if (!this.input) {\n throw new Error(\n 'Radio button input element not found. Component may not be properly initialized.',\n )\n }\n return this.input\n }\n\n public focus(): void {\n if (!this.disabled && !this.readonly) {\n HTMLElement.prototype.focus.apply(this)\n }\n }\n\n public blur(): void {\n HTMLElement.prototype.blur.apply(this)\n }\n\n /**\n * Handles invalid events on the radio button input.\n * Prevents the default browser validation UI from showing and manages invalid state.\n * @param {Event} event - The invalid event\n * @private\n */\n handleInvalid(event: Event) {\n event.preventDefault()\n // Set invalid state if not already set\n if (!this.invalid) {\n this.invalid = true\n }\n }\n\n protected updated(\n changedProperties: PropertyValueMap<any> | Map<PropertyKey, unknown>,\n ): void {\n super.updated(changedProperties)\n\n this._syncHostAria()\n\n // Update invalid state during the update cycle when required or checked changes\n // This prevents scheduling an update after updateComplete\n // Only do this for standalone radio buttons, not when inside a radio-group\n // (radio-groups manage the invalid state of their children)\n const isInRadioGroup = this.closest('dap-ds-radio-group') !== null\n if (\n !isInRadioGroup &&\n (changedProperties.has('required') ||\n changedProperties.has('checked') ||\n changedProperties.has('disabled')) &&\n this.innerInput &&\n this.innerInput instanceof HTMLInputElement\n ) {\n // Use checkValidity to determine if input is invalid\n // Only update if the value would actually change to avoid unnecessary updates\n const shouldBeInvalid = !this.innerInput.checkValidity()\n if (this.invalid !== shouldBeInvalid) {\n this.invalid = shouldBeInvalid\n }\n }\n }\n\n render() {\n return html`\n <div part=\"base\">\n <label\n part=\"base-label\"\n class=${clsx('radio choice', `radio--${this.size}`, {\n 'radio--checked': this.checked,\n 'radio--disabled': this.disabled,\n 'radio--readonly': this.readonly,\n 'radio--required': this.required,\n 'choice--readonly': this.readonly,\n 'choice--disabled': this.disabled,\n 'choice__label--right': this.labelPlacement === 'right',\n 'choice__label--left': this.labelPlacement === 'left',\n })}>\n <div\n part=\"wrapper\"\n class=${clsx('input__wrapper', {\n 'input__wrapper--background': this.type === 'background',\n 'input__wrapper--border': this.border,\n })}>\n <input\n part=\"input\"\n type=\"radio\"\n class=${clsx('radio__input', {\n 'radio__input--background': this.type === 'background',\n })}\n id=${this.inputId}\n value=${ifDefined(this.value)}\n .checked=${this.checked}\n .disabled=${this.disabled}\n .required=${this.required}\n ?readonly=${this.readonly}\n tabindex=\"-1\"\n aria-hidden=\"true\"\n aria-checked=${this.checked ? 'true' : 'false'}\n @invalid=${this.handleInvalid}\n @click=${this.handleClick}\n @input=${this.handleInput} />\n <span\n part=\"control\"\n class=${clsx('input__control', {\n 'input__control--disabled': this.disabled,\n 'input__control--readonly': this.readonly,\n 'input__control--invalid': this.invalid,\n 'input__control--checked': this.checked,\n })}>\n <slot name=\"iconcontent\">\n <span class=\"radio__icon\"></span>\n </slot>\n <span\n part=\"high-contrast\"\n class=${clsx(\n 'input__control-high-contrast',\n `input__control-high-contrast--${this.size}`,\n {\n 'input__control-high-contrast--disabled': this.disabled,\n 'input__control-high-contrast--readonly': this.readonly,\n },\n )}></span>\n </span>\n\n <div\n part=\"label-container\"\n class=${clsx('choice__label-container', {\n 'choice__label-container--disabled': this.disabled,\n 'choice__label-container--readonly': this.readonly,\n 'choice__label--bottom': this.descriptionPlacement === 'top',\n 'choice__label--top': this.descriptionPlacement === 'bottom',\n })}>\n ${this.label &&\n html`<dap-ds-form-label\n id=${this.labelId}\n class=\"label\"\n part=\"label\"\n .size=${this.size}\n .required=${this.required}\n .requiredLabel=${this.requiredLabel}\n .optional=${this.optional}\n .optionalLabel=${this.optionalLabel}\n aria-hidden=\"true\"\n .disabled=${this.disabled || this.readonly}\n .readonly=${this.readonly}\n .hideLabel=${this.hideLabel}\n label=${ifDefined(this.label)}\n subtle\n .noMargin=${true}\n renderAs=\"span\">\n </dap-ds-form-label>`}\n ${this.description &&\n html`\n <dap-ds-typography\n class=\"description\"\n variant=\"description\"\n part=\"description\"\n aria-hidden=\"true\"\n size=${ifDefined(this.size as CommonFormElementSize)}\n id=${this.descriptionId}>\n ${this.description}\n </dap-ds-typography>\n `}\n </div>\n </div>\n ${this.feedback &&\n html`\n <dap-ds-feedback\n part=\"feedback\"\n feedbackType=${ifDefined(this.feedbackType)}\n feedbackSize=${ifDefined(this.size) as CommonSize}\n id=\"feedback\"\n .subtle=${this.subtle}>\n ${this.feedback}\n </dap-ds-feedback>\n `}\n </label>\n </div>\n `\n }\n}\n"],"names":["SUPPORTS_ARIA_DESCRIPTION","_DapDSRadioButton","_a","LabeledChoiceElement","event","uniqueSuffix","checkedStr","accessibleName","focusable","checked","value","disabled","error","changedProperties","shouldBeInvalid","html","clsx","ifDefined","DapDSFormLabel","DapDSTypography","DapDSFeedback","unsafeCSS","styles","__decorateClass","query","property","DapDSRadioButton"],"mappings":";;;;;;;;;;;;;;;;;;;AAeA,MAAMA,IACJ,OAAO,oBAAqB,eAC5B,qBAAqB,iBAAiB;;AA2ExC,MAAqBC,KAArBC,IAAA,cAA8CC,EAAqB;AAAA,EA0CjE,cAAc;AACN,UAAA,GAzBiC,KAAA,YAAA,IAS6B,KAAA,iBAAA,IAGN,KAAA,WAAA,IAGjB,KAAA,SAAA,IAKa,KAAA,OAAA,UA0CpD,KAAA,iBAAiB,CAACC,MAA+B;AACnD,MAAAA,EAAM,QAAQ,YAChBA,EAAM,eAAe,GAET,YAAA,UAAU,MAAM,MAAM,IAAI;AAAA,IAE1C,GA1CmBF,EAAA;AACjB,UAAMG,IACJ,OAAO,UAAW,eAAe,OAAO,aACpC,OAAO,WAAA,EAAa,MAAM,GAAG,CAAC,IAC9B,KAAK,IAAI,EAAE,SAAS,EAAE;AAC5B,SAAK,UAAU,SAASH,EAAiB,MAAM,IAAIG,CAAY,IAC/D,KAAK,UAAU,SAASH,EAAiB,MAAM,IAAIG,CAAY,IAC/D,KAAK,gBAAgB,eAAeH,EAAiB,MAAM,IAAIG,CAAY,IAE3E,KAAK,aAAa,YAAYH,EAAiB,MAAM,IAAIG,CAAY,IAIrE,KAAK,UAAU,OAAO;AAAA,EAAA;AAAA,EAMxB,oBAAoB;AAClB,UAAM,kBAAkB,GAGnB,KAAA,aAAa,QAAQ,OAAO,GAC5B,KAAA,iBAAiB,SAAS,KAAK,OAAO,GACtC,KAAA,iBAAiB,QAAQ,KAAK,MAAM,GACpC,KAAA,iBAAiB,WAAW,KAAK,cAAc;AAAA,EAAA;AAAA,EAGtD,uBAAuB;AACrB,UAAM,qBAAqB,GACtB,KAAA,oBAAoB,SAAS,KAAK,OAAO,GACzC,KAAA,oBAAoB,QAAQ,KAAK,MAAM,GACvC,KAAA,oBAAoB,WAAW,KAAK,cAAc;AAAA,EAAA;AAAA,EAWjD,gBAAsB;AAEtB,UAAAC,IAAa,KAAK,UAAU,SAAS;AAC3C,SAAK,UAAU,cAAcA,GACxB,KAAA,aAAa,gBAAgBA,CAAU,GAKxC,KAAK,YAAY,OACnB,KAAK,aAAa,iBAAiB,OAAO,KAAK,QAAQ,CAAC,IAExD,KAAK,gBAAgB,eAAe,GAElC,KAAK,WAAW,OAClB,KAAK,aAAa,gBAAgB,OAAO,KAAK,OAAO,CAAC,IAEtD,KAAK,gBAAgB,cAAc,GAEhC,KAAA,UAAU,eACb,KAAK,YAAY,OAAO,OAAO,KAAK,QAAQ,IAAI,MAC7C,KAAA,UAAU,cACb,KAAK,WAAW,OAAO,OAAO,KAAK,OAAO,IAAI,MAEhD,KAAK,UAAU,eAAe,KAAK,WAAW,SAAS,MACvD,KAAK,UAAU,eAAe,KAAK,WAAW,SAAS;AAKnD,QAAAC;AACJ,IAAIP,KACG,KAAA,UAAU,YAAY,KAAK,SAAS,MACpC,KAAA,UAAU,kBAAkB,KAAK,eAAe,MACrDO,IAAiB,KAAK,SAAS,OAGdA,IADA,CAAC,KAAK,OAAO,KAAK,WAAW,EAAE,OAAO,OAAO,EACpC,KAAK,IAAI,GAC9B,KAAA,UAAU,YAAYA,KAAkB,OAE3CA,IACG,KAAA,aAAa,cAAcA,CAAc,IAE9C,KAAK,gBAAgB,YAAY;AAKnC,UAAMC,KAAa,KAAK,aAAa,KAAK,YAAY,CAAC,KAAK;AAC5D,SAAK,aAAa,YAAYA,IAAY,MAAM,IAAI;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQ9C,cAAc;AAEpB,QAAI,KAAK,kBAAkB,KAAK,YAAY,KAAK;AAC/C;AAGF,SAAK,UAAU;AAEf,UAAM,EAAE,SAAAC,GAAS,OAAAC,GAAO,UAAAC,EAAa,IAAA;AAGjC,QAAA;AACF,WAAK,KAAK,cAAc;AAAA,QACtB,SAAAF;AAAA;AAAA,QAEA,OAAOC,KAAA,OAAAA,IAAS;AAAA,QAChB,UAAAC;AAAA,QACA,UAAU,KAAK;AAAA,QACf,MAAM;AAAA,MAAA,CACP;AAAA,aACMC,GAAO;AACN,cAAA,MAAM,6CAA6CA,CAAK;AAAA,IAAA;AAI9D,QAAA;AACF,WAAK,YAAY;AAAA,aACVA,GAAO;AACN,cAAA,MAAM,wCAAwCA,CAAK;AAAA,IAAA;AAAA,EAC7D;AAAA,EAGF,oBAAoB;AACb,SAAA,UAAU,YAAY,EAAE,GACxB,KAAA,UAAU,aAAa,KAAK,YAAY,GAC7C,KAAK,QAAQ,KAAK,cACb,KAAA,UAAU,KAAK,iBAAiB,KAAK;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQpC,cAAc;AACpB,UAAM,EAAE,SAAAH,GAAS,OAAAC,GAAO,UAAAC,EAAa,IAAA,MAE/BP,IAAQ,IAAI,YAAY,aAAa;AAAA,MACzC,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,UAAU;AAAA,MACV,QAAQ,EAAE,SAAAK,GAAS,OAAAC,GAAO,UAAAC,GAAU,UAAU,KAAK,SAAS;AAAA,IAAA,CAC7D;AAED,SAAK,cAAcP,CAAK;AAAA,EAAA;AAAA,EAG1B,IAAW,eAAiC;AACtC,QAAA,CAAC,KAAK;AACR,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAEF,WAAO,KAAK;AAAA,EAAA;AAAA,EAGP,QAAc;AACnB,IAAI,CAAC,KAAK,YAAY,CAAC,KAAK,YACd,YAAA,UAAU,MAAM,MAAM,IAAI;AAAA,EACxC;AAAA,EAGK,OAAa;AACN,gBAAA,UAAU,KAAK,MAAM,IAAI;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASvC,cAAcA,GAAc;AAC1B,IAAAA,EAAM,eAAe,GAEhB,KAAK,YACR,KAAK,UAAU;AAAA,EACjB;AAAA,EAGQ,QACRS,GACM;AAUN,QATA,MAAM,QAAQA,CAAiB,GAE/B,KAAK,cAAc,GAQjB,EAFqB,KAAK,QAAQ,oBAAoB,MAAM,UAG3DA,EAAkB,IAAI,UAAU,KAC/BA,EAAkB,IAAI,SAAS,KAC/BA,EAAkB,IAAI,UAAU,MAClC,KAAK,cACL,KAAK,sBAAsB,kBAC3B;AAGA,YAAMC,IAAkB,CAAC,KAAK,WAAW,cAAc;AACnD,MAAA,KAAK,YAAYA,MACnB,KAAK,UAAUA;AAAA,IACjB;AAAA,EACF;AAAA,EAGF,SAAS;AACA,WAAAC;AAAAA;AAAAA;AAAAA;AAAAA,kBAIOC,EAAK,gBAAgB,UAAU,KAAK,IAAI,IAAI;AAAA,MAClD,kBAAkB,KAAK;AAAA,MACvB,mBAAmB,KAAK;AAAA,MACxB,mBAAmB,KAAK;AAAA,MACxB,mBAAmB,KAAK;AAAA,MACxB,oBAAoB,KAAK;AAAA,MACzB,oBAAoB,KAAK;AAAA,MACzB,wBAAwB,KAAK,mBAAmB;AAAA,MAChD,uBAAuB,KAAK,mBAAmB;AAAA,IAAA,CAChD,CAAC;AAAA;AAAA;AAAA,oBAGQA,EAAK,kBAAkB;AAAA,MAC7B,8BAA8B,KAAK,SAAS;AAAA,MAC5C,0BAA0B,KAAK;AAAA,IAAA,CAChC,CAAC;AAAA;AAAA;AAAA;AAAA,sBAIQA,EAAK,gBAAgB;AAAA,MAC3B,4BAA4B,KAAK,SAAS;AAAA,IAAA,CAC3C,CAAC;AAAA,mBACG,KAAK,OAAO;AAAA,sBACTC,EAAU,KAAK,KAAK,CAAC;AAAA,yBAClB,KAAK,OAAO;AAAA,0BACX,KAAK,QAAQ;AAAA,0BACb,KAAK,QAAQ;AAAA,0BACb,KAAK,QAAQ;AAAA;AAAA;AAAA,6BAGV,KAAK,UAAU,SAAS,OAAO;AAAA,yBACnC,KAAK,aAAa;AAAA,uBACpB,KAAK,WAAW;AAAA,uBAChB,KAAK,WAAW;AAAA;AAAA;AAAA,sBAGjBD,EAAK,kBAAkB;AAAA,MAC7B,4BAA4B,KAAK;AAAA,MACjC,4BAA4B,KAAK;AAAA,MACjC,2BAA2B,KAAK;AAAA,MAChC,2BAA2B,KAAK;AAAA,IAAA,CACjC,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAMQA;AAAA,MACN;AAAA,MACA,iCAAiC,KAAK,IAAI;AAAA,MAC1C;AAAA,QACE,0CAA0C,KAAK;AAAA,QAC/C,0CAA0C,KAAK;AAAA,MAAA;AAAA,IACjD,CACD;AAAA;AAAA;AAAA;AAAA;AAAA,sBAKKA,EAAK,2BAA2B;AAAA,MACtC,qCAAqC,KAAK;AAAA,MAC1C,qCAAqC,KAAK;AAAA,MAC1C,yBAAyB,KAAK,yBAAyB;AAAA,MACvD,sBAAsB,KAAK,yBAAyB;AAAA,IAAA,CACrD,CAAC;AAAA,gBACA,KAAK,SACPD;AAAAA,qBACO,KAAK,OAAO;AAAA;AAAA;AAAA,wBAGT,KAAK,IAAI;AAAA,4BACL,KAAK,QAAQ;AAAA,iCACR,KAAK,aAAa;AAAA,4BACvB,KAAK,QAAQ;AAAA,iCACR,KAAK,aAAa;AAAA;AAAA,4BAEvB,KAAK,YAAY,KAAK,QAAQ;AAAA,4BAC9B,KAAK,QAAQ;AAAA,6BACZ,KAAK,SAAS;AAAA,wBACnBE,EAAU,KAAK,KAAK,CAAC;AAAA;AAAA,4BAEjB,EAAI;AAAA;AAAA,mCAEG;AAAA,gBACnB,KAAK,eACPF;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,yBAMWE,EAAU,KAAK,IAA6B,CAAC;AAAA,uBAC/C,KAAK,aAAa;AAAA,oBACrB,KAAK,WAAW;AAAA;AAAA,eAErB;AAAA;AAAA;AAAA,YAGH,KAAK,YACPF;AAAAA;AAAAA;AAAAA,6BAGmBE,EAAU,KAAK,YAAY,CAAC;AAAA,6BAC5BA,EAAU,KAAK,IAAI,CAAe;AAAA;AAAA,wBAEvC,KAAK,MAAM;AAAA,gBACnB,KAAK,QAAQ;AAAA;AAAA,WAElB;AAAA;AAAA;AAAA;AAAA,EAAA;AAKX,GA7XEf,EAAO,UAAU,uBAEjBA,EAAO,eAAe;AAAA,EACpB,qBAAqBgB;AAAA,EACrB,qBAAqBC;AAAA,EACrB,mBAAmBC;AACrB,GAEAlB,EAAe,SAAS,GA+BRA,EAAA,SAASmB,EAAUC,CAAM,GAxC3CpB;AAe2CqB,EAAA;AAAA,EAAxCC,EAAM,eAAe;AAAA,GAfHvB,EAesB,WAAA,OAAA;AAGZsB,EAAA;AAAA,EAA5BE,EAAS,EAAE,MAAM,QAAS,CAAA;AAAA,GAlBRxB,EAkBU,WAAA,WAAA;AAGDsB,EAAA;AAAA,EAA3BE,EAAS,EAAE,MAAM,OAAQ,CAAA;AAAA,GArBPxB,EAqBS,WAAA,UAAA;AAGAsB,EAAA;AAAA,EAA3BE,EAAS,EAAE,MAAM,OAAQ,CAAA;AAAA,GAxBPxB,EAwBS,WAAA,SAAA;AAGgBsB,EAAA;AAAA,EAA3CE,EAAS,EAAE,MAAM,SAAS,SAAS,GAAM,CAAA;AAAA,GA3BvBxB,EA2ByB,WAAA,gBAAA;AAGAsB,EAAA;AAAA,EAA3CE,EAAS,EAAE,MAAM,SAAS,SAAS,GAAM,CAAA;AAAA,GA9BvBxB,EA8ByB,WAAA,UAAA;AAGfsB,EAAA;AAAA,EAA5BE,EAAS,EAAE,MAAM,QAAS,CAAA;AAAA,GAjCRxB,EAiCU,WAAA,QAAA;AAKDsB,EAAA;AAAA,EAA3BE,EAAS,EAAE,MAAM,OAAQ,CAAA;AAAA,GAtCPxB,EAsCS,WAAA,MAAA;AAtC9B,IAAqByB,IAArBzB;"}
|
|
1
|
+
{"version":3,"file":"radio-button.component.js","sources":["../../../src/components/radio-button/radio-button.component.ts"],"sourcesContent":["import clsx from 'clsx'\nimport { PropertyValueMap, unsafeCSS } from 'lit'\nimport { property, query } from 'lit/decorators.js'\nimport { ifDefined } from 'lit/directives/if-defined.js'\nimport { html } from 'lit/static-html.js'\n\nimport { CommonFormElementSize, CommonSize } from '@/common/types'\nimport { LabeledChoiceElement } from '@/internal/mixin/labeledChoiceElement'\nimport { formLabelTemplate } from '@/internal/templates/formLabel'\n\nimport DapDSFeedback from '../feedback/feedback.component'\nimport DapDSFormLabel from '../form/form-label/form-label.component'\nimport DapDSTypography from '../typography/typography.component'\nimport styles from './_styles/radio-button.scss?inline'\n\n// Detected once at module load — avoids per-update property lookup.\nconst SUPPORTS_ARIA_DESCRIPTION =\n typeof ElementInternals !== 'undefined' &&\n 'ariaDescription' in ElementInternals.prototype\n\n/**\n * `dap-ds-radio-button`\n * @summary A radio button is a graphical control element that allows the user to choose only one of a predefined set of mutually exclusive options.\n * @element dap-ds-radio-button\n * @title - Radio button\n *\n * @event {{ checked: boolean, value: string, disabled: boolean, readonly: boolean, type: 'radio' }} dds-change - Fired when the radio button is checked.\n * @event {{ void }} dds-blur - Emitted when the radio button loses focus.\n * @event {{ void }} dds-focus - Emitted when the radio button gains focus.\n * @event {{ checked: boolean, value: string, disabled: boolean, readonly: boolean }} dds-input - Emitted when the radio button receives input.\n *\n * @property {string} name - The name of the radio button.\n * @property {string} value - The value of the radio button.\n * @property {boolean} checked - Whether the radio button is checked.\n * @property {string} label - The label of the radio button.\n * @property {boolean} hideLabel - Visually hides the label while keeping it available to assistive technology. (default: false)\n * @property {string} description - The description of the radio button.\n * @property {boolean} disabled - Whether the radio button is disabled.\n * @property {boolean} readonly - Whether the radio button is readonly (cannot be changed but value is submitted with form).\n * @property {boolean} required - Whether the radio button is required.\n * @property {'xs' | 'sm' | 'lg'} size - The size of the radio button. Default is 'sm'.\n * @property {'left' | 'right'} labelPlacement - The placement of the label.\n * @property {'top' | 'bottom'} descriptionPlacement - The placement of the description.\n * @property {boolean} subtle - The weight of the label.\n * @property {string} feedback - The feedback of the radio button.\n * @property {'negative' | 'positive' | 'warning'} feedbackType - The feedback type of the radio button.\n * @property {boolean} invalid - The invalid state of the radio button.\n * @property {boolean} optional - The optional state of the radio button.\n * @property {string} optionalLabel - The optional label of the radio button.\n * @property {string} requiredLabel - The required indicator of the radio button. (default: '*')\n * @property {boolean} preventDefault - Whether the radio button should prevent the default action.\n * @property {boolean} focusable - Whether the radio button is focusable.\n * @property {'normal' | 'background'} type - The type of the radio button.\n * @property {boolean} border - This sets up a border around the radio button, when true.\n *\n * @csspart base - The main radio button container.\n * @csspart wrapper - The wrapper of the radio button.\n * @csspart base-label - The main label container.\n * @csspart label - The label of the radio button.\n * @csspart input - The native input of the radio button.\n * @csspart control - The control of the radio button.\n * @csspart label-container - The label container of the radio button.\n * @csspart description - The description of the radio button.\n * @csspart feedback - The feedback of the radio button.\n * @csspart high-contrast - The high contrast indicator of the radio button.\n * @csspart label-base - The base of the label.\n * @csspart label-required - The required indicator of the label.\n * @csspart label-optional - The optional indicator of the label.\n *\n * @cssproperty --dds-radio-size - Sets the size of the radio button. (default: var(--dds-spacing-600))\n * @cssproperty --dds-radio-border-width - Sets the border width of the radio button. (default: var(--dds-border-width-large))\n * @cssproperty --dds-radio-border-radius - Sets the border radius of the radio button. (default: var(--dds-radius-rounded))\n * @cssproperty --dds-radio-border-color - Sets the border color of the radio button. (default: var(--dds-border-neutral-base))\n * @cssproperty --dds-radio-background-color - Sets the background color of the radio button. (default: var(--dds-background-neutral-base))\n * @cssproperty --dds-radio-hover-border-color - Sets the border color of the radio button on hover. (default: var(--dds-border-neutral-medium))\n * @cssproperty --dds-radio-hover-background-color - Sets the background color of the radio button on hover. (default: var(--dds-background-neutral-medium))\n * @cssproperty --dds-radio-active-border-color - Sets the border color of the radio button when active. (default: var(--dds-border-neutral-strong))\n * @cssproperty --dds-radio-active-background-color - Sets the background color of the radio button when active. (default: var(--dds-background-neutral-strong))\n * @cssproperty --dds-radio-checked-background-color - Sets the background color of the checked radio button. (default: var(--dds-background-brand-base-inverted))\n * @cssproperty --dds-radio-checked-hover-background-color - Sets the background color of the checked radio button on hover. (default: var(--dds-background-brand-medium-inverted))\n * @cssproperty --dds-radio-checked-active-background-color - Sets the background color of the checked radio button when active. (default: var(--dds-background-brand-strong-inverted))\n * @cssproperty --dds-radio-disabled-background-color - Sets the background color of the disabled radio button. (default: var(--dds-background-neutral-disabled))\n * @cssproperty --dds-radio-icon-background-color - Sets the background color of the radio button icon. (default: var(--dds-transparent-white-strong-static))\n * @cssproperty --dds-radio-disabled-icon-background-color - Sets the background color of the disabled radio button icon. (default: var(--dds-background-neutral-stronger))\n * @cssproperty --dds-radio-invalid-border-color - Sets the border color of the invalid radio button. (default: var(--dds-border-negative-base))\n * @cssproperty --dds-radio-invalid-background-color - Sets the background color of the invalid radio button. (default: var(--dds-background-negative-base))\n * @cssproperty --dds-radio-invalid-hover-border-color - Sets the border color of the invalid radio button on hover. (default: var(--dds-border-negative-medium))\n * @cssproperty --dds-radio-invalid-hover-background-color - Sets the background color of the invalid radio button on hover. (default: var(--dds-background-negative-medium))\n * @cssproperty --dds-radio-invalid-active-border-color - Sets the border color of the invalid radio button when active. (default: var(--dds-border-negative-strong))\n * @cssproperty --dds-radio-invalid-active-background-color - Sets the background color of the invalid radio button when active. (default: var(--dds-background-negative-strong))\n * @cssproperty --dds-radio-invalid-checked-background-color - Sets the background color of the invalid checked radio button. (default: var(--dds-background-negative-base-inverted))\n * @cssproperty --dds-radio-invalid-checked-hover-background-color - Sets the background color of the invalid checked radio button on hover. (default: var(--dds-background-negative-medium-inverted))\n * @cssproperty --dds-radio-invalid-checked-active-background-color - Sets the background color of the invalid checked radio button when active. (default: var(--dds-background-negative-strong-inverted))\n * @cssproperty --dds-radio-icon-size - Sets the size of the radio button icon. (default: var(--dds-spacing-300))\n * @cssproperty --dds-radio-readonly-border-color - Sets the border color when the radio button is readonly. (default: var(--dds-border-neutral-subtle))\n * @cssproperty --dds-radio-readonly-background-color - Sets the background color when the radio button is readonly. (default: var(--dds-background-neutral-subtle))\n * @cssproperty --dds-radio-readonly-icon-color - Sets the color of the radio button icon when readonly. (default: var(--dds-text-neutral-base))\n */\nexport default class DapDSRadioButton extends LabeledChoiceElement {\n static tagName = 'dap-ds-radio-button'\n\n static dependencies = {\n 'dap-ds-form-label': DapDSFormLabel,\n 'dap-ds-typography': DapDSTypography,\n 'dap-ds-feedback': DapDSFeedback,\n }\n\n private static nextId = 0\n\n private readonly inputId: string\n private readonly labelId: string\n private readonly descriptionId: string\n\n @query('.radio__input') private readonly input!: HTMLInputElement\n\n /** Whether the radio button is focusable */\n @property({ type: Boolean }) focusable = false\n\n /** Position in set — set by radio-group for correct screen reader counting */\n @property({ type: Number }) posInSet?: number\n\n /** Set size — set by radio-group for correct screen reader counting */\n @property({ type: Number }) setSize?: number\n\n /** Whether the radio button should prevent the default action */\n @property({ type: Boolean, reflect: true }) preventDefault: boolean = false\n\n /** Whether the radio button is readonly */\n @property({ type: Boolean, reflect: true }) readonly: boolean = false\n\n /** This sets up a border around the radio button, when true. */\n @property({ type: Boolean }) border: boolean = false\n\n /** The type of the radio button\n * @type {'normal' | 'background'}\n */\n @property({ type: String }) type: 'normal' | 'background' = 'normal'\n\n static readonly styles = unsafeCSS(styles)\n\n constructor() {\n super()\n DapDSRadioButton.nextId++\n const uniqueSuffix =\n typeof crypto !== 'undefined' && crypto.randomUUID\n ? crypto.randomUUID().slice(0, 8)\n : Date.now().toString(36)\n this.inputId = `input-${DapDSRadioButton.nextId}-${uniqueSuffix}`\n this.labelId = `label-${DapDSRadioButton.nextId}-${uniqueSuffix}`\n this.descriptionId = `description-${DapDSRadioButton.nextId}-${uniqueSuffix}`\n // Initialize the feedbackId from FeedbackMixin\n this.feedbackId = `feedback-${DapDSRadioButton.nextId}-${uniqueSuffix}`\n // Set host as the ARIA radio node so screen readers get correct posinset/setsize.\n // Native <input type=\"radio\"> inside shadow DOM cannot be grouped across shadow\n // boundaries, causing browsers to compute \"1 of 1\" regardless of aria-posinset.\n this.internals.role = 'radio'\n // NOTE: setAttribute('role') cannot be called here — the custom element spec\n // forbids adding attributes in the constructor (React throws NotSupportedError\n // via document.createElement). Moved to connectedCallback instead.\n }\n\n connectedCallback() {\n super.connectedCallback()\n // Explicit role attribute for screen readers that don't honour ElementInternals.\n // Must be set here, not in the constructor (spec forbids constructor attributes).\n this.setAttribute('role', 'radio')\n this.addEventListener('focus', this.onFocus)\n this.addEventListener('blur', this.onBlur)\n this.addEventListener('keydown', this._onHostKeydown)\n }\n\n disconnectedCallback() {\n super.disconnectedCallback()\n this.removeEventListener('focus', this.onFocus)\n this.removeEventListener('blur', this.onBlur)\n this.removeEventListener('keydown', this._onHostKeydown)\n }\n\n private _onHostKeydown = (event: KeyboardEvent): void => {\n if (event.key === 'Enter') {\n event.preventDefault()\n // Dispatch click on host so the radio-group's click handler selects this radio\n HTMLElement.prototype.click.apply(this)\n }\n }\n\n private _syncHostAria(): void {\n // Explicit aria-checked on host — internals alone not read by all SRs.\n const checkedStr = this.checked ? 'true' : 'false'\n this.internals.ariaChecked = checkedStr\n this.setAttribute('aria-checked', checkedStr)\n\n // Chrome overrides internals posInSet/setSize for elements with shadow-DOM\n // same-name radio inputs (computing \"1 of 1\" per shadow scope). Explicit\n // HTML attributes take precedence and work correctly in all browsers.\n if (this.posInSet != null) {\n this.setAttribute('aria-posinset', String(this.posInSet))\n } else {\n this.removeAttribute('aria-posinset')\n }\n if (this.setSize != null) {\n this.setAttribute('aria-setsize', String(this.setSize))\n } else {\n this.removeAttribute('aria-setsize')\n }\n this.internals.ariaPosInSet =\n this.posInSet != null ? String(this.posInSet) : null\n this.internals.ariaSetSize =\n this.setSize != null ? String(this.setSize) : null\n\n this.internals.ariaDisabled = this.disabled ? 'true' : null\n this.internals.ariaRequired = this.required ? 'true' : null\n\n // aria-description is ARIA 1.3 and not yet supported in Safari/WebKit.\n // Fall back to merging description into the accessible name for those browsers.\n // Always set explicit aria-label on the host for SRs that don't read internals.\n let accessibleName: string\n if (SUPPORTS_ARIA_DESCRIPTION) {\n this.internals.ariaLabel = this.label || null\n this.internals.ariaDescription = this.description || null\n accessibleName = this.label || ''\n } else {\n const combined = [this.label, this.description].filter(Boolean)\n accessibleName = combined.join('. ')\n this.internals.ariaLabel = accessibleName || null\n }\n if (accessibleName) {\n this.setAttribute('aria-label', accessibleName)\n } else {\n this.removeAttribute('aria-label')\n }\n\n // Tabindex lives on the host (not the hidden inner input) so the host is\n // the keyboard focus target and screen readers track focus correctly.\n const focusable = (this.focusable || this.checked) && !this.disabled\n this.setAttribute('tabindex', focusable ? '0' : '-1')\n }\n\n /**\n * Handles click events on the radio button.\n * Manages the checked state and emits change events.\n * @private\n */\n private handleClick() {\n // Early return if click should be prevented, component is disabled, or readonly\n if (this.preventDefault || this.disabled || this.readonly) {\n return\n }\n\n this.checked = true\n\n const { checked, value, disabled } = this\n\n // Emit change event with null safety\n try {\n this.emit('dds-change', {\n checked,\n // `?? ''` not `|| ''` — a radio may legitimately carry `false` or `0`\n value: value ?? '',\n disabled,\n readonly: this.readonly,\n type: 'radio',\n })\n } catch (error) {\n console.error('Error emitting radio button change event:', error)\n }\n\n // Update validity state with error handling\n try {\n this.setValidity()\n } catch (error) {\n console.error('Error setting radio button validity:', error)\n }\n }\n\n formResetCallback() {\n this.internals.setValidity({})\n this.internals.setFormValue(this.defaultValue)\n this.value = this.defaultValue\n this.checked = this.defaultValue === this.value\n }\n\n /**\n * Handles input events on the radio button.\n * Emits the dds-input event with current radio button state.\n * @private\n */\n private handleInput() {\n const { checked, value, disabled } = this\n\n const event = new CustomEvent('dds-input', {\n bubbles: true,\n cancelable: false,\n composed: true,\n detail: { checked, value, disabled, readonly: this.readonly },\n })\n\n this.dispatchEvent(event)\n }\n\n public get focusElement(): HTMLInputElement {\n if (!this.input) {\n throw new Error(\n 'Radio button input element not found. Component may not be properly initialized.',\n )\n }\n return this.input\n }\n\n public focus(): void {\n if (!this.disabled && !this.readonly) {\n HTMLElement.prototype.focus.apply(this)\n }\n }\n\n public blur(): void {\n HTMLElement.prototype.blur.apply(this)\n }\n\n /**\n * Handles invalid events on the radio button input.\n * Prevents the default browser validation UI from showing and manages invalid state.\n * @param {Event} event - The invalid event\n * @private\n */\n handleInvalid(event: Event) {\n event.preventDefault()\n // Set invalid state if not already set\n if (!this.invalid) {\n this.invalid = true\n }\n }\n\n protected updated(\n changedProperties: PropertyValueMap<any> | Map<PropertyKey, unknown>,\n ): void {\n super.updated(changedProperties)\n\n this._syncHostAria()\n\n // Update invalid state during the update cycle when required or checked changes\n // This prevents scheduling an update after updateComplete\n // Only do this for standalone radio buttons, not when inside a radio-group\n // (radio-groups manage the invalid state of their children)\n const isInRadioGroup = this.closest('dap-ds-radio-group') !== null\n if (\n !isInRadioGroup &&\n (changedProperties.has('required') ||\n changedProperties.has('checked') ||\n changedProperties.has('disabled')) &&\n this.innerInput &&\n this.innerInput instanceof HTMLInputElement\n ) {\n // Use checkValidity to determine if input is invalid\n // Only update if the value would actually change to avoid unnecessary updates\n const shouldBeInvalid = !this.innerInput.checkValidity()\n if (this.invalid !== shouldBeInvalid) {\n this.invalid = shouldBeInvalid\n }\n }\n }\n\n render() {\n return html`\n <div part=\"base\">\n <label\n part=\"base-label\"\n class=${clsx('radio choice', `radio--${this.size}`, {\n 'radio--checked': this.checked,\n 'radio--disabled': this.disabled,\n 'radio--readonly': this.readonly,\n 'radio--required': this.required,\n 'choice--readonly': this.readonly,\n 'choice--disabled': this.disabled,\n 'choice__label--right': this.labelPlacement === 'right',\n 'choice__label--left': this.labelPlacement === 'left',\n })}>\n <div\n part=\"wrapper\"\n class=${clsx('input__wrapper', {\n 'input__wrapper--background': this.type === 'background',\n 'input__wrapper--border': this.border,\n })}>\n <input\n part=\"input\"\n type=\"radio\"\n class=${clsx('radio__input', {\n 'radio__input--background': this.type === 'background',\n })}\n id=${this.inputId}\n value=${ifDefined(this.value)}\n .checked=${this.checked}\n .disabled=${this.disabled}\n .required=${this.required}\n ?readonly=${this.readonly}\n tabindex=\"-1\"\n aria-hidden=\"true\"\n aria-checked=${this.checked ? 'true' : 'false'}\n @invalid=${this.handleInvalid}\n @click=${this.handleClick}\n @input=${this.handleInput} />\n <span\n part=\"control\"\n class=${clsx('input__control', {\n 'input__control--disabled': this.disabled,\n 'input__control--readonly': this.readonly,\n 'input__control--invalid': this.invalid,\n 'input__control--checked': this.checked,\n })}>\n <slot name=\"iconcontent\">\n <span class=\"radio__icon\"></span>\n </slot>\n <span\n part=\"high-contrast\"\n class=${clsx(\n 'input__control-high-contrast',\n `input__control-high-contrast--${this.size}`,\n {\n 'input__control-high-contrast--disabled': this.disabled,\n 'input__control-high-contrast--readonly': this.readonly,\n },\n )}></span>\n </span>\n\n <div\n part=\"label-container\"\n class=${clsx('choice__label-container', {\n 'choice__label-container--disabled': this.disabled,\n 'choice__label-container--readonly': this.readonly,\n 'choice__label--bottom': this.descriptionPlacement === 'top',\n 'choice__label--top': this.descriptionPlacement === 'bottom',\n })}>\n ${formLabelTemplate({\n label: this.label,\n id: this.labelId,\n size: this.size,\n required: this.required,\n requiredLabel: this.requiredLabel,\n optional: this.optional,\n optionalLabel: this.optionalLabel,\n disabled: this.disabled || this.readonly,\n hideLabel: this.hideLabel,\n subtle: true,\n noMargin: true,\n // Decorative <span> (not a <label>): radio-button wraps its input in\n // an outer <label>; the name comes from aria-labelledby=${labelId}.\n as: 'span',\n ariaHidden: true,\n })}\n ${this.description &&\n html`\n <dap-ds-typography\n class=\"description\"\n variant=\"description\"\n part=\"description\"\n aria-hidden=\"true\"\n size=${ifDefined(this.size as CommonFormElementSize)}\n id=${this.descriptionId}>\n ${this.description}\n </dap-ds-typography>\n `}\n </div>\n </div>\n ${this.feedback &&\n html`\n <dap-ds-feedback\n part=\"feedback\"\n feedbackType=${ifDefined(this.feedbackType)}\n feedbackSize=${ifDefined(this.size) as CommonSize}\n id=\"feedback\"\n .subtle=${this.subtle}>\n ${this.feedback}\n </dap-ds-feedback>\n `}\n </label>\n </div>\n `\n }\n}\n"],"names":["SUPPORTS_ARIA_DESCRIPTION","_DapDSRadioButton","_a","LabeledChoiceElement","event","uniqueSuffix","checkedStr","accessibleName","focusable","checked","value","disabled","error","changedProperties","shouldBeInvalid","html","clsx","ifDefined","formLabelTemplate","DapDSFormLabel","DapDSTypography","DapDSFeedback","unsafeCSS","styles","__decorateClass","query","property","DapDSRadioButton"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
const
|
|
1
|
+
const d = ":host{--dds-form-label-font-weight: var(--dds-font-weight-bold);--dds-form-label-line-height: var(--dds-font-line-height-xlarge);--dds-form-label-color: var(--dds-text-neutral-base);--dds-form-label-disabled-color: var(--dds-text-neutral-disabled);--dds-form-label-required-color: var(--dds-text-negative-subtle);--dds-form-label-optional-color: var(--dds-text-neutral-subtle);--dds-form-label-margin-bottom: var(--dds-spacing-200)}.dds-label{display:block;margin-bottom:var(--dds-form-label-margin-bottom);color:var(--dds-form-label-color);font-weight:var(--dds-form-label-font-weight);line-height:var(--dds-form-label-line-height)}.dds-label--no-margin{margin-bottom:0}.dds-label--hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border-width:0;white-space:nowrap}.dds-label--disabled{color:var(--dds-form-label-disabled-color)}.dds-label--xs{font-size:var(--dds-font-sm)}.dds-label--sm{font-size:var(--dds-font-base)}.dds-label--lg{font-size:var(--dds-font-lg)}.dds-label--subtle{font-weight:var(--dds-font-weight-medium)}.dds-label .dds-label__required-indicator{order:2;color:var(--dds-form-label-required-color);font-weight:var(--dds-font-weight-bold);line-height:var(--dds-form-label-line-height)}.dds-label .dds-label__optional-indicator{order:3;color:var(--dds-form-label-optional-color);font-weight:var(--dds-font-weight-medium);line-height:var(--dds-form-label-line-height)}.dds-label .dds-label__optional-indicator--xs{font-size:var(--dds-font-sm)}.dds-label .dds-label__optional-indicator--lg{font-size:var(--dds-font-lg)}:host{display:inline-block;--star-size: 24px;--star-color: #ccc;--star-active-color: #ffb400;--star-hover-color: #ffdd74}.star{width:var(--star-size);height:var(--star-size);transition:color .2s ease;color:var(--star-color);cursor:pointer}.star--active{color:var(--star-active-color)}.star--hover{color:var(--star-hover-color)}.star--readonly,.star--disabled{cursor:default}.star--readonly{pointer-events:none}.star--disabled{opacity:.5}.rating-container{display:flex;flex-direction:column;align-items:flex-start}.stars-container{display:flex;gap:4px}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border-width:0;white-space:nowrap}";
|
|
2
2
|
export {
|
|
3
|
-
|
|
3
|
+
d as default
|
|
4
4
|
};
|
|
5
5
|
//# sourceMappingURL=rating.scss.js.map
|
|
@@ -1,50 +1,46 @@
|
|
|
1
|
-
import { clsx as
|
|
2
|
-
import "
|
|
3
|
-
import "
|
|
4
|
-
import "
|
|
5
|
-
import {
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
import v from "./_styles/rating.scss.js";
|
|
12
|
-
import { unsafeCSS as b } from "../../node_modules/@lit/reactive-element/css-tag.js";
|
|
13
|
-
var y = Object.defineProperty, i = (d, e, t, n) => {
|
|
14
|
-
for (var a = void 0, o = d.length - 1, h; o >= 0; o--)
|
|
15
|
-
(h = d[o]) && (a = h(e, t, a) || a);
|
|
1
|
+
import { clsx as _ } from "../../node_modules/clsx/dist/clsx.js";
|
|
2
|
+
import { unsafeCSS as p } from "lit";
|
|
3
|
+
import { query as m, property as u, state as l } from "lit/decorators.js";
|
|
4
|
+
import { html as c } from "lit/static-html.js";
|
|
5
|
+
import { GenericFormElement as f } from "../../internal/mixin/genericFormElement.js";
|
|
6
|
+
import v from "../icon/icon.component.js";
|
|
7
|
+
import b from "./_styles/rating.scss.js";
|
|
8
|
+
var y = Object.defineProperty, r = (h, e, t, i) => {
|
|
9
|
+
for (var a = void 0, o = h.length - 1, d; o >= 0; o--)
|
|
10
|
+
(d = h[o]) && (a = d(e, t, a) || a);
|
|
16
11
|
return a && y(e, t, a), a;
|
|
17
12
|
};
|
|
18
|
-
const
|
|
13
|
+
const n = class n extends f {
|
|
19
14
|
constructor() {
|
|
20
|
-
|
|
15
|
+
var e, t, i;
|
|
16
|
+
super(), this.max = 5, this._ratingContainer = null, this._hasFocus = !1, this._hoverValue = 0, this._uniqueId = `star-rating-${(i = (t = (e = globalThis.crypto) == null ? void 0 : e.randomUUID) == null ? void 0 : t.call(e)) != null ? i : Math.random().toString(36).slice(2)}`, this._handleContainerFocus = () => {
|
|
21
17
|
this._hasFocus = !0, this._announceRating();
|
|
22
18
|
}, this._handleContainerBlur = () => {
|
|
23
19
|
this._hasFocus = !1;
|
|
24
|
-
}, this._handleContainerKeyDown = (
|
|
20
|
+
}, this._handleContainerKeyDown = (a) => {
|
|
25
21
|
if (!(this.disabled || this.readonly))
|
|
26
|
-
switch (
|
|
22
|
+
switch (a.key) {
|
|
27
23
|
case "ArrowRight":
|
|
28
24
|
case "ArrowUp":
|
|
29
|
-
|
|
25
|
+
a.preventDefault(), this._incrementRating();
|
|
30
26
|
break;
|
|
31
27
|
case "ArrowLeft":
|
|
32
28
|
case "ArrowDown":
|
|
33
|
-
|
|
29
|
+
a.preventDefault(), this._decrementRating();
|
|
34
30
|
break;
|
|
35
31
|
case "Home":
|
|
36
|
-
|
|
32
|
+
a.preventDefault(), this._setRating(1);
|
|
37
33
|
break;
|
|
38
34
|
case "End":
|
|
39
|
-
|
|
35
|
+
a.preventDefault(), this._setRating(this.max);
|
|
40
36
|
break;
|
|
41
37
|
default:
|
|
42
38
|
return;
|
|
43
39
|
}
|
|
44
|
-
}, this._handleKeyDown = (
|
|
40
|
+
}, this._handleKeyDown = (a) => {
|
|
45
41
|
if (this.disabled || this.readonly) return;
|
|
46
|
-
if (this.contains(
|
|
47
|
-
switch (
|
|
42
|
+
if (this.contains(a.target) && this._hasFocus)
|
|
43
|
+
switch (a.key) {
|
|
48
44
|
case "ArrowRight":
|
|
49
45
|
case "ArrowUp":
|
|
50
46
|
case "ArrowLeft":
|
|
@@ -102,12 +98,12 @@ const r = class r extends _ {
|
|
|
102
98
|
render() {
|
|
103
99
|
const e = [];
|
|
104
100
|
for (let t = 1; t <= this.max; t++) {
|
|
105
|
-
const
|
|
101
|
+
const i = t <= this.value, a = !this.disabled && !this.readonly && t <= this._hoverValue;
|
|
106
102
|
e.push(c`
|
|
107
103
|
<span
|
|
108
104
|
part="star"
|
|
109
|
-
class=${
|
|
110
|
-
"star--active":
|
|
105
|
+
class=${_("star", {
|
|
106
|
+
"star--active": i,
|
|
111
107
|
"star--hover": a,
|
|
112
108
|
"star--readonly": this.readonly,
|
|
113
109
|
"star--disabled": this.disabled
|
|
@@ -117,7 +113,7 @@ const r = class r extends _ {
|
|
|
117
113
|
@mouseleave=${() => this._handleStarLeave()}
|
|
118
114
|
tabindex=${this.disabled ? "-1" : "0"}
|
|
119
115
|
role="radio"
|
|
120
|
-
aria-checked=${
|
|
116
|
+
aria-checked=${i}
|
|
121
117
|
aria-disabled=${this.disabled}
|
|
122
118
|
aria-posinset=${t}
|
|
123
119
|
aria-setsize=${this.max}>
|
|
@@ -151,26 +147,26 @@ const r = class r extends _ {
|
|
|
151
147
|
`;
|
|
152
148
|
}
|
|
153
149
|
};
|
|
154
|
-
|
|
155
|
-
"dap-ds-icon":
|
|
156
|
-
},
|
|
157
|
-
let s =
|
|
158
|
-
|
|
159
|
-
|
|
150
|
+
n.tagName = "dap-ds-rating", n.dependencies = {
|
|
151
|
+
"dap-ds-icon": v
|
|
152
|
+
}, n.styles = p(b);
|
|
153
|
+
let s = n;
|
|
154
|
+
r([
|
|
155
|
+
m(".sr-announcement")
|
|
160
156
|
], s.prototype, "_liveRegion");
|
|
161
|
-
|
|
157
|
+
r([
|
|
162
158
|
u({ reflect: !0 })
|
|
163
159
|
], s.prototype, "label");
|
|
164
|
-
|
|
160
|
+
r([
|
|
165
161
|
u({ type: Number })
|
|
166
162
|
], s.prototype, "max");
|
|
167
|
-
|
|
163
|
+
r([
|
|
168
164
|
l()
|
|
169
165
|
], s.prototype, "_hasFocus");
|
|
170
|
-
|
|
166
|
+
r([
|
|
171
167
|
l()
|
|
172
168
|
], s.prototype, "_hoverValue");
|
|
173
|
-
|
|
169
|
+
r([
|
|
174
170
|
l()
|
|
175
171
|
], s.prototype, "_uniqueId");
|
|
176
172
|
export {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rating.component.js","sources":["../../../src/components/rating/rating.component.ts"],"sourcesContent":["import clsx from 'clsx'\nimport { unsafeCSS } from 'lit'\nimport { property, query, state } from 'lit/decorators.js'\nimport { html } from 'lit/static-html.js'\n\nimport { GenericFormElement } from '@/internal/mixin/genericFormElement'\n\nimport DapDSIcon from '../icon/icon.component'\nimport styles from './_styles/rating.scss?inline'\n\n/**\n * `dap-ds-rating`\n * @summary Rating is a component that allows users to rate a product or service.\n * @element dap-ds-rating\n * @title - Rating\n *\n * @event {{ value: number }} dds-change - Event fired when the rating value changes.\n *\n * @csspart base - The main rating container.\n * @csspart star - The star element.\n * @csspart stars-container - The container of the stars.\n * @csspart icon - The icon of the star.\n */\nexport default class DapDSRating extends GenericFormElement {\n static tagName = 'dap-ds-rating'\n\n static dependencies = {\n 'dap-ds-icon': DapDSIcon,\n }\n\n /** Reference to the live region for screen reader announcements */\n @query('.sr-announcement') private readonly _liveRegion: HTMLElement | null\n\n constructor() {\n super()\n\n this.value = 0\n }\n\n static readonly styles = unsafeCSS(styles)\n\n /** The label of the rating */\n @property({ reflect: true }) label: string\n\n /** The maximum number of stars */\n @property({ type: Number }) max = 5\n\n private _ratingContainer: HTMLElement | null = null\n @state() private _hasFocus = false\n @state() private _hoverValue = 0\n @state() private readonly _uniqueId =\n `star-rating-${window.crypto.randomUUID()}`\n\n connectedCallback() {\n super.connectedCallback()\n\n // Add event listener at document level to ensure we catch all keyboard events\n document.addEventListener('keydown', this._handleKeyDown)\n }\n\n disconnectedCallback() {\n super.disconnectedCallback()\n\n document.removeEventListener('keydown', this._handleKeyDown)\n\n if (this._ratingContainer) {\n this._ratingContainer.removeEventListener('focus', () => {})\n }\n }\n\n firstUpdated() {\n // Set a reference to the container element for easier access\n this._ratingContainer = this.renderRoot.querySelector('.rating-container')\n }\n\n _handleContainerFocus = () => {\n this._hasFocus = true\n\n // Announce current rating for initial focus\n this._announceRating()\n }\n\n _handleContainerBlur = () => {\n this._hasFocus = false\n }\n\n _handleContainerKeyDown = (event: KeyboardEvent) => {\n if (this.disabled || this.readonly) return\n\n switch (event.key) {\n case 'ArrowRight':\n case 'ArrowUp':\n event.preventDefault()\n this._incrementRating()\n break\n case 'ArrowLeft':\n case 'ArrowDown':\n event.preventDefault()\n this._decrementRating()\n break\n case 'Home':\n event.preventDefault()\n this._setRating(1)\n break\n case 'End':\n event.preventDefault()\n this._setRating(this.max)\n break\n default:\n return\n }\n }\n\n /**\n * Handle keyboard events for the entire component\n * This is a backup to catch keyboard events if they bubble up\n */\n _handleKeyDown = (event: KeyboardEvent) => {\n if (this.disabled || this.readonly) return\n\n // Only process keyboard events if:\n // 1. The event target is this component or its children\n // 2. The component currently has focus\n const isTargetWithin = this.contains(event.target as Node)\n\n if (isTargetWithin && this._hasFocus) {\n // The container's direct keydown handler should handle this,\n // but this is a backup in case the event bubbles up\n switch (event.key) {\n case 'ArrowRight':\n case 'ArrowUp':\n case 'ArrowLeft':\n case 'ArrowDown':\n case 'Home':\n case 'End':\n // Let the container's direct keydown handler process these\n break\n default:\n return\n }\n }\n }\n\n _incrementRating() {\n const newValue = Math.min(this.value + 1, this.max)\n this._setRating(newValue)\n }\n\n _decrementRating() {\n const newValue = Math.max(this.value - 1, 0)\n this._setRating(newValue)\n }\n\n _setRating(value: number) {\n const oldValue = this.value\n this.value = value\n\n // Only announce if the value actually changed\n if (oldValue !== value) {\n this._announceRating()\n this.emit('dds-change', { value })\n }\n }\n\n /**\n * Announce the current rating to screen readers\n */\n _announceRating() {\n if (this._liveRegion) {\n const message =\n this.value === 0\n ? `Rating cleared`\n : `${this.value} of ${this.max} stars selected`\n\n // Update the live region with the current rating\n this._liveRegion.textContent = message\n }\n }\n\n _handleStarClick(value: number) {\n if (this.disabled || this.readonly) return\n\n // Toggle the value if the same star is clicked twice\n const newValue = this.value === value ? 0 : value\n this._setRating(newValue)\n }\n\n _handleStarHover(value: number) {\n if (this.disabled || this.readonly) return\n this._hoverValue = value\n }\n\n _handleStarLeave() {\n if (this.disabled || this.readonly) return\n this._hoverValue = 0\n }\n\n render() {\n const stars = []\n\n for (let i = 1; i <= this.max; i++) {\n const isActive = i <= this.value\n const isHovered =\n !this.disabled && !this.readonly && i <= this._hoverValue\n\n stars.push(html`\n <span\n part=\"star\"\n class=${clsx('star', {\n 'star--active': isActive,\n 'star--hover': isHovered,\n 'star--readonly': this.readonly,\n 'star--disabled': this.disabled,\n })}\n @click=${() => this._handleStarClick(i)}\n @mouseenter=${() => this._handleStarHover(i)}\n @mouseleave=${() => this._handleStarLeave()}\n tabindex=${this.disabled ? '-1' : '0'}\n role=\"radio\"\n aria-checked=${isActive}\n aria-disabled=${this.disabled}\n aria-posinset=${i}\n aria-setsize=${this.max}>\n <dap-ds-icon part=\"icon\" name=\"star-fill\"></dap-ds-icon>\n <span class=\"sr-only\">${i} star${i === 1 ? '' : 's'}</span>\n </span>\n `)\n }\n\n return html`\n <div\n class=\"rating-container\"\n part=\"base\"\n tabindex=${this.disabled ? '-1' : '0'}\n @focus=${this._handleContainerFocus}\n @blur=${this._handleContainerBlur}\n @keydown=${this._handleContainerKeyDown}\n aria-labelledby=\"rating-label-${this._uniqueId}\">\n ${(this, this.renderLabel(`rating-label-${this._uniqueId}`))}\n <div\n class=\"stars-container\"\n part=\"stars-container\"\n role=\"radiogroup\"\n aria-labelledby=\"rating-label-${this._uniqueId}\"\n aria-disabled=${this.disabled}\n aria-readonly=${this.readonly}>\n ${stars}\n </div>\n <!-- Live region for screen reader announcements -->\n <div class=\"sr-announcement sr-only\" aria-live=\"assertive\"></div>\n </div>\n `\n }\n}\n"],"names":["_DapDSRating","GenericFormElement","event","newValue","value","oldValue","message","stars","i","isActive","isHovered","html","clsx","DapDSIcon","unsafeCSS","styles","DapDSRating","__decorateClass","query","property","state"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"rating.component.js","sources":["../../../src/components/rating/rating.component.ts"],"sourcesContent":["import clsx from 'clsx'\nimport { unsafeCSS } from 'lit'\nimport { property, query, state } from 'lit/decorators.js'\nimport { html } from 'lit/static-html.js'\n\nimport { GenericFormElement } from '@/internal/mixin/genericFormElement'\n\nimport DapDSIcon from '../icon/icon.component'\nimport styles from './_styles/rating.scss?inline'\n\n/**\n * `dap-ds-rating`\n * @summary Rating is a component that allows users to rate a product or service.\n * @element dap-ds-rating\n * @title - Rating\n *\n * @event {{ value: number }} dds-change - Event fired when the rating value changes.\n *\n * @csspart base - The main rating container.\n * @csspart star - The star element.\n * @csspart stars-container - The container of the stars.\n * @csspart icon - The icon of the star.\n */\nexport default class DapDSRating extends GenericFormElement {\n static tagName = 'dap-ds-rating'\n\n static dependencies = {\n 'dap-ds-icon': DapDSIcon,\n }\n\n /** Reference to the live region for screen reader announcements */\n @query('.sr-announcement') private readonly _liveRegion: HTMLElement | null\n\n constructor() {\n super()\n\n this.value = 0\n }\n\n static readonly styles = unsafeCSS(styles)\n\n /** The label of the rating */\n @property({ reflect: true }) label: string\n\n /** The maximum number of stars */\n @property({ type: Number }) max = 5\n\n private _ratingContainer: HTMLElement | null = null\n @state() private _hasFocus = false\n @state() private _hoverValue = 0\n // `globalThis.crypto` exists in both the browser and Node (SSR); the Lit SSR\n // `window` shim does not carry `crypto`, so referencing it there would throw.\n @state() private readonly _uniqueId = `star-rating-${\n globalThis.crypto?.randomUUID?.() ?? Math.random().toString(36).slice(2)\n }`\n\n connectedCallback() {\n super.connectedCallback()\n\n // Add event listener at document level to ensure we catch all keyboard events\n document.addEventListener('keydown', this._handleKeyDown)\n }\n\n disconnectedCallback() {\n super.disconnectedCallback()\n\n document.removeEventListener('keydown', this._handleKeyDown)\n\n if (this._ratingContainer) {\n this._ratingContainer.removeEventListener('focus', () => {})\n }\n }\n\n firstUpdated() {\n // Set a reference to the container element for easier access\n this._ratingContainer = this.renderRoot.querySelector('.rating-container')\n }\n\n _handleContainerFocus = () => {\n this._hasFocus = true\n\n // Announce current rating for initial focus\n this._announceRating()\n }\n\n _handleContainerBlur = () => {\n this._hasFocus = false\n }\n\n _handleContainerKeyDown = (event: KeyboardEvent) => {\n if (this.disabled || this.readonly) return\n\n switch (event.key) {\n case 'ArrowRight':\n case 'ArrowUp':\n event.preventDefault()\n this._incrementRating()\n break\n case 'ArrowLeft':\n case 'ArrowDown':\n event.preventDefault()\n this._decrementRating()\n break\n case 'Home':\n event.preventDefault()\n this._setRating(1)\n break\n case 'End':\n event.preventDefault()\n this._setRating(this.max)\n break\n default:\n return\n }\n }\n\n /**\n * Handle keyboard events for the entire component\n * This is a backup to catch keyboard events if they bubble up\n */\n _handleKeyDown = (event: KeyboardEvent) => {\n if (this.disabled || this.readonly) return\n\n // Only process keyboard events if:\n // 1. The event target is this component or its children\n // 2. The component currently has focus\n const isTargetWithin = this.contains(event.target as Node)\n\n if (isTargetWithin && this._hasFocus) {\n // The container's direct keydown handler should handle this,\n // but this is a backup in case the event bubbles up\n switch (event.key) {\n case 'ArrowRight':\n case 'ArrowUp':\n case 'ArrowLeft':\n case 'ArrowDown':\n case 'Home':\n case 'End':\n // Let the container's direct keydown handler process these\n break\n default:\n return\n }\n }\n }\n\n _incrementRating() {\n const newValue = Math.min(this.value + 1, this.max)\n this._setRating(newValue)\n }\n\n _decrementRating() {\n const newValue = Math.max(this.value - 1, 0)\n this._setRating(newValue)\n }\n\n _setRating(value: number) {\n const oldValue = this.value\n this.value = value\n\n // Only announce if the value actually changed\n if (oldValue !== value) {\n this._announceRating()\n this.emit('dds-change', { value })\n }\n }\n\n /**\n * Announce the current rating to screen readers\n */\n _announceRating() {\n if (this._liveRegion) {\n const message =\n this.value === 0\n ? `Rating cleared`\n : `${this.value} of ${this.max} stars selected`\n\n // Update the live region with the current rating\n this._liveRegion.textContent = message\n }\n }\n\n _handleStarClick(value: number) {\n if (this.disabled || this.readonly) return\n\n // Toggle the value if the same star is clicked twice\n const newValue = this.value === value ? 0 : value\n this._setRating(newValue)\n }\n\n _handleStarHover(value: number) {\n if (this.disabled || this.readonly) return\n this._hoverValue = value\n }\n\n _handleStarLeave() {\n if (this.disabled || this.readonly) return\n this._hoverValue = 0\n }\n\n render() {\n const stars = []\n\n for (let i = 1; i <= this.max; i++) {\n const isActive = i <= this.value\n const isHovered =\n !this.disabled && !this.readonly && i <= this._hoverValue\n\n stars.push(html`\n <span\n part=\"star\"\n class=${clsx('star', {\n 'star--active': isActive,\n 'star--hover': isHovered,\n 'star--readonly': this.readonly,\n 'star--disabled': this.disabled,\n })}\n @click=${() => this._handleStarClick(i)}\n @mouseenter=${() => this._handleStarHover(i)}\n @mouseleave=${() => this._handleStarLeave()}\n tabindex=${this.disabled ? '-1' : '0'}\n role=\"radio\"\n aria-checked=${isActive}\n aria-disabled=${this.disabled}\n aria-posinset=${i}\n aria-setsize=${this.max}>\n <dap-ds-icon part=\"icon\" name=\"star-fill\"></dap-ds-icon>\n <span class=\"sr-only\">${i} star${i === 1 ? '' : 's'}</span>\n </span>\n `)\n }\n\n return html`\n <div\n class=\"rating-container\"\n part=\"base\"\n tabindex=${this.disabled ? '-1' : '0'}\n @focus=${this._handleContainerFocus}\n @blur=${this._handleContainerBlur}\n @keydown=${this._handleContainerKeyDown}\n aria-labelledby=\"rating-label-${this._uniqueId}\">\n ${(this, this.renderLabel(`rating-label-${this._uniqueId}`))}\n <div\n class=\"stars-container\"\n part=\"stars-container\"\n role=\"radiogroup\"\n aria-labelledby=\"rating-label-${this._uniqueId}\"\n aria-disabled=${this.disabled}\n aria-readonly=${this.readonly}>\n ${stars}\n </div>\n <!-- Live region for screen reader announcements -->\n <div class=\"sr-announcement sr-only\" aria-live=\"assertive\"></div>\n </div>\n `\n }\n}\n"],"names":["_DapDSRating","GenericFormElement","_c","_b","_a","event","newValue","value","oldValue","message","stars","i","isActive","isHovered","html","clsx","DapDSIcon","unsafeCSS","styles","DapDSRating","__decorateClass","query","property","state"],"mappings":";;;;;;;;;;;;AAuBA,MAAqBA,IAArB,MAAqBA,UAAoBC,EAAmB;AAAA,EAU1D,cAAc;;AACN,UAAA,GAW0B,KAAA,MAAA,GAElC,KAAQ,mBAAuC,MACtC,KAAQ,YAAY,IACpB,KAAQ,cAAc,GAGtB,KAAiB,YAAY,gBACpCC,KAAAC,KAAAC,IAAA,WAAW,WAAX,gBAAAA,EAAmB,eAAnB,gBAAAD,EAAA,KAAAC,OAAA,OAAAF,IAAqC,KAAK,OAAO,EAAE,SAAS,EAAE,EAAE,MAAM,CAAC,CACzE,IAwBA,KAAA,wBAAwB,MAAM;AAC5B,WAAK,YAAY,IAGjB,KAAK,gBAAgB;AAAA,IACvB,GAEA,KAAA,uBAAuB,MAAM;AAC3B,WAAK,YAAY;AAAA,IACnB,GAEA,KAAA,0BAA0B,CAACG,MAAyB;AAC9C,UAAA,OAAK,YAAY,KAAK;AAE1B,gBAAQA,EAAM,KAAK;AAAA,UACjB,KAAK;AAAA,UACL,KAAK;AACH,YAAAA,EAAM,eAAe,GACrB,KAAK,iBAAiB;AACtB;AAAA,UACF,KAAK;AAAA,UACL,KAAK;AACH,YAAAA,EAAM,eAAe,GACrB,KAAK,iBAAiB;AACtB;AAAA,UACF,KAAK;AACH,YAAAA,EAAM,eAAe,GACrB,KAAK,WAAW,CAAC;AACjB;AAAA,UACF,KAAK;AACH,YAAAA,EAAM,eAAe,GAChB,KAAA,WAAW,KAAK,GAAG;AACxB;AAAA,UACF;AACE;AAAA,QAAA;AAAA,IAEN,GAMA,KAAA,iBAAiB,CAACA,MAAyB;AACrC,UAAA,KAAK,YAAY,KAAK,SAAU;AAOhC,UAFmB,KAAK,SAASA,EAAM,MAAc,KAEnC,KAAK;AAGzB,gBAAQA,EAAM,KAAK;AAAA,UACjB,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAEH;AAAA,UACF;AACE;AAAA,QAAA;AAAA,IAGR,GA5GE,KAAK,QAAQ;AAAA,EAAA;AAAA,EAoBf,oBAAoB;AAClB,UAAM,kBAAkB,GAGf,SAAA,iBAAiB,WAAW,KAAK,cAAc;AAAA,EAAA;AAAA,EAG1D,uBAAuB;AACrB,UAAM,qBAAqB,GAElB,SAAA,oBAAoB,WAAW,KAAK,cAAc,GAEvD,KAAK,oBACF,KAAA,iBAAiB,oBAAoB,SAAS,MAAM;AAAA,IAAA,CAAE;AAAA,EAC7D;AAAA,EAGF,eAAe;AAEb,SAAK,mBAAmB,KAAK,WAAW,cAAc,mBAAmB;AAAA,EAAA;AAAA,EAuE3E,mBAAmB;AACjB,UAAMC,IAAW,KAAK,IAAI,KAAK,QAAQ,GAAG,KAAK,GAAG;AAClD,SAAK,WAAWA,CAAQ;AAAA,EAAA;AAAA,EAG1B,mBAAmB;AACjB,UAAMA,IAAW,KAAK,IAAI,KAAK,QAAQ,GAAG,CAAC;AAC3C,SAAK,WAAWA,CAAQ;AAAA,EAAA;AAAA,EAG1B,WAAWC,GAAe;AACxB,UAAMC,IAAW,KAAK;AACtB,SAAK,QAAQD,GAGTC,MAAaD,MACf,KAAK,gBAAgB,GACrB,KAAK,KAAK,cAAc,EAAE,OAAAA,EAAA,CAAO;AAAA,EACnC;AAAA;AAAA;AAAA;AAAA,EAMF,kBAAkB;AAChB,QAAI,KAAK,aAAa;AACd,YAAAE,IACJ,KAAK,UAAU,IACX,mBACA,GAAG,KAAK,KAAK,OAAO,KAAK,GAAG;AAGlC,WAAK,YAAY,cAAcA;AAAA,IAAA;AAAA,EACjC;AAAA,EAGF,iBAAiBF,GAAe;AAC1B,QAAA,KAAK,YAAY,KAAK,SAAU;AAGpC,UAAMD,IAAW,KAAK,UAAUC,IAAQ,IAAIA;AAC5C,SAAK,WAAWD,CAAQ;AAAA,EAAA;AAAA,EAG1B,iBAAiBC,GAAe;AAC1B,IAAA,KAAK,YAAY,KAAK,aAC1B,KAAK,cAAcA;AAAA,EAAA;AAAA,EAGrB,mBAAmB;AACb,IAAA,KAAK,YAAY,KAAK,aAC1B,KAAK,cAAc;AAAA,EAAA;AAAA,EAGrB,SAAS;AACP,UAAMG,IAAQ,CAAC;AAEf,aAASC,IAAI,GAAGA,KAAK,KAAK,KAAKA,KAAK;AAC5B,YAAAC,IAAWD,KAAK,KAAK,OACrBE,IACJ,CAAC,KAAK,YAAY,CAAC,KAAK,YAAYF,KAAK,KAAK;AAEhD,MAAAD,EAAM,KAAKI;AAAA;AAAA;AAAA,kBAGCC,EAAK,QAAQ;AAAA,QACnB,gBAAgBH;AAAA,QAChB,eAAeC;AAAA,QACf,kBAAkB,KAAK;AAAA,QACvB,kBAAkB,KAAK;AAAA,MAAA,CACxB,CAAC;AAAA,mBACO,MAAM,KAAK,iBAAiBF,CAAC,CAAC;AAAA,wBACzB,MAAM,KAAK,iBAAiBA,CAAC,CAAC;AAAA,wBAC9B,MAAM,KAAK,iBAAkB,CAAA;AAAA,qBAChC,KAAK,WAAW,OAAO,GAAG;AAAA;AAAA,yBAEtBC,CAAQ;AAAA,0BACP,KAAK,QAAQ;AAAA,0BACbD,CAAC;AAAA,yBACF,KAAK,GAAG;AAAA;AAAA,kCAECA,CAAC,QAAQA,MAAM,IAAI,KAAK,GAAG;AAAA;AAAA,OAEtD;AAAA,IAAA;AAGI,WAAAG;AAAA;AAAA;AAAA;AAAA,mBAIQ,KAAK,WAAW,OAAO,GAAG;AAAA,iBAC5B,KAAK,qBAAqB;AAAA,gBAC3B,KAAK,oBAAoB;AAAA,mBACtB,KAAK,uBAAuB;AAAA,wCACP,KAAK,SAAS;AAAA,UACrC,KAAK,YAAY,gBAAgB,KAAK,SAAS,EAAE,CAAE;AAAA;AAAA;AAAA;AAAA;AAAA,0CAK1B,KAAK,SAAS;AAAA,0BAC9B,KAAK,QAAQ;AAAA,0BACb,KAAK,QAAQ;AAAA,YAC3BJ,CAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAAA;AAOjB;AAxOEV,EAAO,UAAU,iBAEjBA,EAAO,eAAe;AAAA,EACpB,eAAegB;AACjB,GAWgBhB,EAAA,SAASiB,EAAUC,CAAM;AAhB3C,IAAqBC,IAArBnB;AAQ8CoB,EAAA;AAAA,EAA3CC,EAAM,kBAAkB;AAAA,GARNF,EAQyB,WAAA,aAAA;AAWfC,EAAA;AAAA,EAA5BE,EAAS,EAAE,SAAS,GAAM,CAAA;AAAA,GAnBRH,EAmBU,WAAA,OAAA;AAGDC,EAAA;AAAA,EAA3BE,EAAS,EAAE,MAAM,OAAQ,CAAA;AAAA,GAtBPH,EAsBS,WAAA,KAAA;AAGXC,EAAA;AAAA,EAAhBG,EAAM;AAAA,GAzBYJ,EAyBF,WAAA,WAAA;AACAC,EAAA;AAAA,EAAhBG,EAAM;AAAA,GA1BYJ,EA0BF,WAAA,aAAA;AAGSC,EAAA;AAAA,EAAzBG,EAAM;AAAA,GA7BYJ,EA6BO,WAAA,WAAA;"}
|
|
@@ -9,7 +9,8 @@ import { DdsElement } from '../../internal/dds-hu-element';
|
|
|
9
9
|
*
|
|
10
10
|
* @csspart viewport - The viewport element that contains the scrollable content
|
|
11
11
|
* @csspart scrollbar - The scrollbar container
|
|
12
|
-
* @csspart
|
|
12
|
+
* @csspart base - The main scroll area container.
|
|
13
|
+
* @csspart thumb - The thumb of the scrollbar.
|
|
13
14
|
*
|
|
14
15
|
* @cssprop --dds-scroll-area-radius - The border radius of the scroll area and its elements (default: var(--dds-radius-base))
|
|
15
16
|
* @cssprop --dds-scroll-area-background - The background color of the scroll area (default: var(--dds-background-neutral-base))
|