@eunomia/elements 1.0.0-beta.6 → 1.0.0-beta.8
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 +1 -1
- package/dist/cdn/components/chunks/{chunk-KDN4O5W2.js → chunk-32L2QYWQ.js} +5 -5
- package/dist/cdn/components/chunks/{chunk-JYIIWN2P.js → chunk-36KLGY6U.js} +8 -8
- package/dist/cdn/components/chunks/chunk-3BMACIDO.js +1 -0
- package/dist/cdn/components/chunks/{chunk-2Y2EU2CI.js → chunk-3UUZM7X2.js} +1 -1
- package/dist/cdn/components/chunks/chunk-55PUDL7D.js +109 -0
- package/dist/cdn/components/chunks/chunk-5LA5DQMP.js +1 -0
- package/dist/cdn/components/chunks/chunk-5LXGJVJR.js +1 -0
- package/dist/cdn/components/chunks/{chunk-ZKZV2YG5.js → chunk-5XPOGBPL.js} +1 -1
- package/dist/cdn/components/chunks/{chunk-LMVW522V.js → chunk-62RLISRD.js} +1 -1
- package/dist/cdn/components/chunks/{chunk-PMPSJG5V.js → chunk-6FYW5TQU.js} +3 -3
- package/dist/cdn/components/chunks/chunk-6TIEBY34.js +1 -0
- package/dist/cdn/components/chunks/{chunk-MOMYII3P.js → chunk-AH2SKZ7T.js} +14 -1
- package/dist/cdn/components/chunks/chunk-AK2DIJX7.js +1 -0
- package/dist/cdn/components/chunks/chunk-B5XMGWM7.js +10 -0
- package/dist/cdn/components/chunks/chunk-GVS6IUKC.js +1 -0
- package/dist/cdn/components/chunks/chunk-GWLD2I3P.js +8 -0
- package/dist/cdn/components/chunks/{chunk-UDVB4LAE.js → chunk-I4ERDXSM.js} +5 -3
- package/dist/cdn/components/chunks/{chunk-QZ5SHR3I.js → chunk-J3SZBXM6.js} +2 -2
- package/dist/cdn/components/chunks/chunk-JAGZL7JH.js +1 -0
- package/dist/cdn/components/chunks/{chunk-VYFR364B.js → chunk-LD35BFNK.js} +18 -17
- package/dist/cdn/components/chunks/{chunk-XDPRWUKN.js → chunk-MQQJ6DID.js} +1 -1
- package/dist/cdn/components/chunks/chunk-P6LGU3FT.js +1 -0
- package/dist/cdn/components/chunks/chunk-QL5GSW2A.js +1 -0
- package/dist/cdn/components/chunks/{chunk-UYZR4JXZ.js → chunk-QSZO4GIH.js} +45 -9
- package/dist/cdn/components/chunks/{chunk-7KKWYPHY.js → chunk-QXQ25SQS.js} +21 -19
- package/dist/cdn/components/chunks/{chunk-SZYEBMG6.js → chunk-QYB6Z6FG.js} +5 -5
- package/dist/cdn/components/chunks/{chunk-RIFF2D2F.js → chunk-RGC3I6MK.js} +1 -1
- package/dist/cdn/components/chunks/{chunk-L2ADCEN7.js → chunk-SVGWCKWT.js} +1 -1
- package/dist/cdn/components/chunks/{chunk-N6ZW5CDN.js → chunk-TCSB2MLU.js} +1 -1
- package/dist/cdn/components/chunks/{chunk-MQQ4BGVJ.js → chunk-TFTRCIIK.js} +7 -6
- package/dist/cdn/components/chunks/chunk-TLBXTBMM.js +46 -0
- package/dist/cdn/components/chunks/chunk-UVHVQRPT.js +1 -0
- package/dist/cdn/components/chunks/chunk-WIUERJII.js +1 -0
- package/dist/cdn/components/chunks/chunk-WW4BTWMH.js +1 -0
- package/dist/cdn/components/eun-alert.js +13 -6
- package/dist/cdn/components/eun-animate.js +6 -6
- package/dist/cdn/components/eun-badge.js +1 -1
- package/dist/cdn/components/eun-button.js +1 -1
- package/dist/cdn/components/eun-calendar.js +2 -2
- package/dist/cdn/components/eun-card.js +4 -4
- package/dist/cdn/components/eun-carousel.js +26 -22
- package/dist/cdn/components/eun-check-card.js +1 -1
- package/dist/cdn/components/eun-checkbox-list.js +11 -8
- package/dist/cdn/components/eun-checkbox.js +1 -1
- package/dist/cdn/components/eun-chip.js +17 -11
- package/dist/cdn/components/eun-collapse.js +1 -1
- package/dist/cdn/components/eun-color-picker.js +74 -69
- package/dist/cdn/components/eun-counter.js +16 -14
- package/dist/cdn/components/eun-date-picker.js +67 -63
- package/dist/cdn/components/eun-description-list.js +2 -2
- package/dist/cdn/components/eun-divider.js +3 -3
- package/dist/cdn/components/eun-drawer.js +21 -22
- package/dist/cdn/components/eun-dropdown-button.js +1 -1
- package/dist/cdn/components/eun-dropdown-item.js +3 -3
- package/dist/cdn/components/eun-fab.js +2 -2
- package/dist/cdn/components/eun-icon.js +1 -1
- package/dist/cdn/components/eun-image-card.js +1 -1
- package/dist/cdn/components/eun-image-carousel.js +10 -10
- package/dist/cdn/components/eun-infinite-list.js +1 -1
- package/dist/cdn/components/eun-input-file.js +21 -21
- package/dist/cdn/components/eun-input-phone.js +16 -12
- package/dist/cdn/components/eun-input.js +1 -1
- package/dist/cdn/components/eun-link.js +59 -13
- package/dist/cdn/components/eun-loader.js +1 -1
- package/dist/cdn/components/eun-modal.js +33 -23
- package/dist/cdn/components/eun-pagination.js +16 -16
- package/dist/cdn/components/eun-password-strength.js +14 -10
- package/dist/cdn/components/eun-radio-card.js +1 -1
- package/dist/cdn/components/eun-radio-list.js +11 -8
- package/dist/cdn/components/eun-radio.js +1 -1
- package/dist/cdn/components/eun-rating.js +276 -0
- package/dist/cdn/components/eun-scheduler-event-editor.js +11 -11
- package/dist/cdn/components/eun-scheduler-event.js +1 -1
- package/dist/cdn/components/eun-scheduler.js +28 -28
- package/dist/cdn/components/eun-search.js +36 -32
- package/dist/cdn/components/eun-select.js +27 -27
- package/dist/cdn/components/eun-sidebar.js +73 -26
- package/dist/cdn/components/eun-skeleton.js +1 -1
- package/dist/cdn/components/eun-slider.js +3 -3
- package/dist/cdn/components/eun-sliding-card.js +1 -1
- package/dist/cdn/components/eun-step.js +5 -4
- package/dist/cdn/components/eun-stepper.js +30 -30
- package/dist/cdn/components/eun-switch.js +1 -1
- package/dist/cdn/components/eun-tab-group.js +4 -4
- package/dist/cdn/components/eun-tab-panel.js +1 -1
- package/dist/cdn/components/eun-tab.js +1 -1
- package/dist/cdn/components/eun-table-action-bar.js +1 -1
- package/dist/cdn/components/eun-table.js +2 -2
- package/dist/cdn/components/eun-tag.js +3 -3
- package/dist/cdn/components/eun-textarea.js +36 -28
- package/dist/cdn/components/eun-time-picker.js +31 -28
- package/dist/cdn/components/eun-toast.js +24 -15
- package/dist/cdn/components/eun-toggle-group.js +75 -37
- package/dist/cdn/components/eun-toggle-item.js +9 -9
- package/dist/cdn/components/eun-toggle.js +2 -2
- package/dist/cdn/components/eun-toolbar.js +22 -22
- package/dist/cdn/components/eun-tooltip.js +6 -6
- package/dist/cdn/styles/eunomia-themes.css +1 -1
- package/dist/cdn/styles/themes/mixins/eunomia-neutrals.mixin.scss +6 -2
- package/dist/cdn/styles/themes/prebuilt-themes/eunomia/eunomia-dark.mixin.scss +6 -2
- package/dist/cdn/styles/themes/prebuilt-themes/eunomia/eunomia.theme.css +1 -1
- package/dist/cdn/styles/themes/prebuilt-themes/fire/eunomia-fire-dark.mixin.scss +6 -2
- package/dist/cdn/styles/themes/prebuilt-themes/fire/eunomia-fire.theme.css +1 -1
- package/dist/cdn/styles/themes/prebuilt-themes/forest/eunomia-forest-dark.mixin.scss +6 -2
- package/dist/cdn/styles/themes/prebuilt-themes/forest/eunomia-forest.theme.css +1 -1
- package/dist/cdn/styles/themes/prebuilt-themes/gold/eunomia-gold-dark.mixin.scss +6 -2
- package/dist/cdn/styles/themes/prebuilt-themes/gold/eunomia-gold.theme.css +1 -1
- package/dist/cdn/styles/themes/prebuilt-themes/ocean/eunomia-ocean-dark.mixin.scss +6 -2
- package/dist/cdn/styles/themes/prebuilt-themes/ocean/eunomia-ocean.theme.css +1 -1
- package/dist/cdn/styles/themes/prebuilt-themes/salmon/eunomia-salmon-dark.mixin.scss +6 -2
- package/dist/cdn/styles/themes/prebuilt-themes/salmon/eunomia-salmon.theme.css +1 -1
- package/dist/cdn/styles/themes/prebuilt-themes/violet/eunomia-violet-dark.mixin.scss +6 -2
- package/dist/cdn/styles/themes/prebuilt-themes/violet/eunomia-violet.theme.css +1 -1
- package/dist/components/action/button/button.d.ts +4 -3
- package/dist/components/action/button/button.js +6 -9
- package/dist/components/action/button/button.styles.js +13 -8
- package/dist/components/action/dropdown-button/dropdown-button.d.ts +4 -6
- package/dist/components/action/dropdown-button/dropdown-button.js +16 -13
- package/dist/components/action/dropdown-button/dropdown-item.d.ts +10 -2
- package/dist/components/action/dropdown-button/dropdown-item.js +24 -9
- package/dist/components/action/link/link.d.ts +10 -1
- package/dist/components/action/link/link.js +13 -1
- package/dist/components/action/link/link.styles.js +50 -3
- package/dist/components/action/toggle/toggle-group.d.ts +12 -2
- package/dist/components/action/toggle/toggle-group.js +18 -3
- package/dist/components/action/toggle/toggle-group.styles.js +58 -20
- package/dist/components/action/toggle/toggle-item.js +1 -3
- package/dist/components/action/toggle/toggle-item.styles.js +7 -7
- package/dist/components/action/toggle/toggle.js +1 -1
- package/dist/components/alert/alert/alert.d.ts +9 -7
- package/dist/components/alert/alert/alert.js +11 -14
- package/dist/components/alert/alert/alert.styles.js +9 -2
- package/dist/components/alert/drawer/drawer.d.ts +30 -5
- package/dist/components/alert/drawer/drawer.js +48 -13
- package/dist/components/alert/drawer/drawer.styles.js +7 -7
- package/dist/components/alert/modal/modal.d.ts +35 -10
- package/dist/components/alert/modal/modal.js +55 -28
- package/dist/components/alert/modal/modal.styles.js +17 -6
- package/dist/components/alert/toast/toast.d.ts +7 -5
- package/dist/components/alert/toast/toast.js +12 -15
- package/dist/components/alert/toast/toast.styles.js +18 -9
- package/dist/components/content/badge/badge.js +2 -2
- package/dist/components/content/card/card.js +1 -1
- package/dist/components/content/card/card.styles.js +2 -2
- package/dist/components/content/chip/chip.d.ts +4 -4
- package/dist/components/content/chip/chip.js +11 -10
- package/dist/components/content/chip/chip.styles.js +9 -3
- package/dist/components/content/description-list/description-list.js +3 -3
- package/dist/components/content/icon/icon.d.ts +3 -0
- package/dist/components/content/icon/icon.js +3 -0
- package/dist/components/content/icon/icon.style.d.ts +2 -0
- package/dist/components/content/icon/icon.style.js +4 -0
- package/dist/components/content/image-carousel/image-carousel.d.ts +12 -12
- package/dist/components/content/image-carousel/image-carousel.js +29 -28
- package/dist/components/content/password-strength/password-strength.d.ts +21 -6
- package/dist/components/content/password-strength/password-strength.js +37 -16
- package/dist/components/content/password-strength/password-strength.styles.js +4 -0
- package/dist/components/content/tag/tag.js +2 -2
- package/dist/components/content/tooltip/tooltip.d.ts +16 -9
- package/dist/components/content/tooltip/tooltip.js +31 -15
- package/dist/components/content/tooltip/tooltip.styles.js +1 -1
- package/dist/components/form/checkbox/check-card.d.ts +1 -0
- package/dist/components/form/checkbox/check-card.js +1 -0
- package/dist/components/form/checkbox/checkbox-list.d.ts +17 -0
- package/dist/components/form/checkbox/checkbox-list.js +39 -10
- package/dist/components/form/checkbox/checkbox.d.ts +1 -0
- package/dist/components/form/checkbox/checkbox.js +3 -1
- package/dist/components/form/checkbox/checkbox.styles.js +3 -2
- package/dist/components/form/color-picker/color-picker.d.ts +47 -28
- package/dist/components/form/color-picker/color-picker.js +73 -51
- package/dist/components/form/color-picker/color-picker.styles.js +14 -1
- package/dist/components/form/counter/counter.d.ts +24 -18
- package/dist/components/form/counter/counter.js +61 -61
- package/dist/components/form/counter/counter.styles.js +6 -4
- package/dist/components/form/date-picker/date-picker.d.ts +33 -7
- package/dist/components/form/date-picker/date-picker.js +82 -56
- package/dist/components/form/date-picker/date-picker.styles.js +9 -6
- package/dist/components/form/input/input.d.ts +43 -39
- package/dist/components/form/input/input.js +91 -110
- package/dist/components/form/input-file/input-file.d.ts +26 -13
- package/dist/components/form/input-file/input-file.js +35 -35
- package/dist/components/form/input-file/input-file.styles.js +4 -4
- package/dist/components/form/input-phone/input-phone.d.ts +28 -5
- package/dist/components/form/input-phone/input-phone.js +47 -13
- package/dist/components/form/input-phone/input-phone.styles.js +6 -3
- package/dist/components/form/radio/radio-card.d.ts +1 -0
- package/dist/components/form/radio/radio-card.js +1 -0
- package/dist/components/form/radio/radio-list.d.ts +23 -7
- package/dist/components/form/radio/radio-list.js +47 -22
- package/dist/components/form/radio/radio.d.ts +1 -0
- package/dist/components/form/radio/radio.js +1 -0
- package/dist/components/form/rating/rating.d.ts +349 -0
- package/dist/components/form/rating/rating.js +665 -0
- package/dist/components/form/rating/rating.styles.d.ts +1 -0
- package/dist/components/form/rating/rating.styles.js +213 -0
- package/dist/components/form/search/search.d.ts +72 -18
- package/dist/components/form/search/search.js +135 -72
- package/dist/components/form/search/search.styles.js +2 -0
- package/dist/components/form/select/select.d.ts +29 -10
- package/dist/components/form/select/select.js +65 -41
- package/dist/components/form/shared-styles/field.styles.js +45 -8
- package/dist/components/form/shared-styles/listbox.styles.js +15 -1
- package/dist/components/form/slider/slider.d.ts +7 -8
- package/dist/components/form/slider/slider.js +9 -12
- package/dist/components/form/switch/switch.d.ts +1 -0
- package/dist/components/form/switch/switch.js +1 -0
- package/dist/components/form/textarea/textarea.d.ts +90 -23
- package/dist/components/form/textarea/textarea.js +194 -44
- package/dist/components/form/textarea/textarea.styles.js +3 -0
- package/dist/components/form/time-picker/time-picker-columns.d.ts +2 -2
- package/dist/components/form/time-picker/time-picker-columns.js +8 -8
- package/dist/components/form/time-picker/time-picker.d.ts +30 -9
- package/dist/components/form/time-picker/time-picker.js +66 -40
- package/dist/components/form/time-picker/time-picker.styles.js +7 -5
- package/dist/components/layout/animate/animate.js +3 -2
- package/dist/components/layout/animate/animate.styles.js +2 -2
- package/dist/components/layout/divider/divider.js +1 -1
- package/dist/components/layout/divider/divider.styles.js +1 -1
- package/dist/components/loader/loader/loader.js +2 -2
- package/dist/components/loader/loader/loader.styles.js +14 -12
- package/dist/components/loader/skeleton/skeleton.js +1 -1
- package/dist/components/navigation/carousel/carousel.d.ts +32 -9
- package/dist/components/navigation/carousel/carousel.js +88 -41
- package/dist/components/navigation/carousel/carousel.styles.js +10 -6
- package/dist/components/navigation/pagination/pagination.d.ts +23 -21
- package/dist/components/navigation/pagination/pagination.js +30 -53
- package/dist/components/navigation/sidebar/sidebar.d.ts +113 -65
- package/dist/components/navigation/sidebar/sidebar.js +161 -118
- package/dist/components/navigation/sidebar/sidebar.styles.d.ts +1 -1
- package/dist/components/navigation/sidebar/sidebar.styles.js +74 -24
- package/dist/components/navigation/stepper/step.js +9 -8
- package/dist/components/navigation/stepper/stepper.d.ts +1 -3
- package/dist/components/navigation/stepper/stepper.js +15 -26
- package/dist/components/navigation/tabs/tab-group/tab-group.js +2 -2
- package/dist/components/navigation/tabs/tab-group/tab-group.styles.js +2 -2
- package/dist/components/navigation/toolbar/toolbar.d.ts +23 -13
- package/dist/components/navigation/toolbar/toolbar.js +28 -35
- package/dist/components/navigation/toolbar/toolbar.styles.js +18 -17
- package/dist/events/select.event.d.ts +3 -2
- package/dist/events/select.event.js +2 -1
- package/dist/features/scheduler/calendar/calendar.js +1 -1
- package/dist/features/scheduler/scheduler/scheduler.d.ts +7 -7
- package/dist/features/scheduler/scheduler/scheduler.js +15 -24
- package/dist/features/scheduler/scheduler-event/scheduler-event.js +3 -3
- package/dist/features/scheduler/scheduler-event/scheduler-event.styles.js +1 -1
- package/dist/features/scheduler/scheduler-event-editor/scheduler-event-editor.d.ts +6 -4
- package/dist/features/scheduler/scheduler-event-editor/scheduler-event-editor.js +7 -8
- package/dist/features/table/table/table.js +1 -1
- package/dist/features/table/table-action-bar/table-action-bar.js +2 -2
- package/dist/i18n/en.d.ts +68 -0
- package/dist/i18n/en.js +68 -0
- package/dist/i18n/fr.js +68 -2
- package/dist/index.d.ts +3 -0
- package/dist/index.js +1 -0
- package/dist/mixins/button.mixin.d.ts +1 -1
- package/dist/mixins/button.mixin.js +9 -6
- package/dist/mixins/check.mixin.js +11 -10
- package/dist/mixins/dialog-surface.mixin.d.ts +8 -0
- package/dist/mixins/disabled.mixin.d.ts +5 -0
- package/dist/mixins/disabled.mixin.js +21 -1
- package/dist/mixins/editable.mixin.js +28 -5
- package/dist/mixins/field-appearance.mixin.js +3 -2
- package/dist/mixins/field-size.mixin.d.ts +19 -0
- package/dist/mixins/field-size.mixin.js +33 -0
- package/dist/mixins/form.mixin.d.ts +4 -0
- package/dist/mixins/form.mixin.js +87 -13
- package/dist/mixins/localizable.mixin.d.ts +1 -1
- package/dist/mixins/localizable.mixin.js +1 -1
- package/dist/mixins/radio.mixin.js +11 -10
- package/dist/mixins/readonly.mixin.d.ts +2 -1
- package/dist/mixins/readonly.mixin.js +10 -3
- package/dist/mixins/rounded.mixin.d.ts +18 -0
- package/dist/mixins/rounded.mixin.js +32 -0
- package/dist/ssr/alert-ssr.css +187 -0
- package/dist/ssr/badge-ssr.css +67 -0
- package/dist/ssr/breadcrumb-ssr.css +41 -0
- package/dist/ssr/button-ssr.css +5 -5
- package/dist/ssr/card-ssr.css +27 -15
- package/dist/ssr/carousel-ssr.css +247 -0
- package/dist/ssr/checkbox-ssr.css +67 -0
- package/dist/ssr/chip-ssr.css +250 -0
- package/dist/ssr/collapse-ssr.css +180 -0
- package/dist/ssr/field-ssr.css +202 -0
- package/dist/ssr/icon-ssr.css +266 -0
- package/dist/ssr/image-carousel-ssr.css +34 -0
- package/dist/ssr/links-ssr.css +44 -1
- package/dist/ssr/pagination-ssr.css +4 -0
- package/dist/ssr/rating-ssr.css +254 -0
- package/dist/ssr/sidebar-ssr.css +102 -3
- package/dist/ssr/skeleton-ssr.css +63 -0
- package/dist/ssr/tabs-ssr.css +129 -0
- package/dist/ssr/toggle-group-ssr.css +233 -0
- package/dist/ssr/toolbar-ssr.css +81 -2
- package/dist/types/variant.type.d.ts +4 -1
- package/dist/utils/boolean.utils.d.ts +14 -0
- package/dist/utils/boolean.utils.js +20 -0
- package/dist/utils/dropdown-menu.utils.d.ts +1 -1
- package/dist/utils/focusable-elements.utils.d.ts +12 -0
- package/dist/utils/focusable-elements.utils.js +26 -0
- package/dist/utils/implicit-submission.utils.d.ts +18 -0
- package/dist/utils/implicit-submission.utils.js +79 -0
- package/dist/utils/input-modality.utils.d.ts +13 -0
- package/dist/utils/input-modality.utils.js +34 -0
- package/dist/utils/listbox-options.utils.d.ts +11 -0
- package/dist/utils/listbox-options.utils.js +41 -3
- package/dist/utils/theme-generator.utils.d.ts +8 -2
- package/dist/utils/theme-generator.utils.js +30 -9
- package/package.json +26 -7
- package/styles/themes/mixins/eunomia-neutrals.mixin.scss +6 -2
- package/styles/themes/prebuilt-themes/eunomia/eunomia-dark.mixin.scss +6 -2
- package/styles/themes/prebuilt-themes/fire/eunomia-fire-dark.mixin.scss +6 -2
- package/styles/themes/prebuilt-themes/forest/eunomia-forest-dark.mixin.scss +6 -2
- package/styles/themes/prebuilt-themes/gold/eunomia-gold-dark.mixin.scss +6 -2
- package/styles/themes/prebuilt-themes/ocean/eunomia-ocean-dark.mixin.scss +6 -2
- package/styles/themes/prebuilt-themes/salmon/eunomia-salmon-dark.mixin.scss +6 -2
- package/styles/themes/prebuilt-themes/violet/eunomia-violet-dark.mixin.scss +6 -2
- package/dist/cdn/components/chunks/chunk-4PI6RDUS.js +0 -1
- package/dist/cdn/components/chunks/chunk-6VK6SHCG.js +0 -1
- package/dist/cdn/components/chunks/chunk-A3X4KD2X.js +0 -1
- package/dist/cdn/components/chunks/chunk-BQFJR2UP.js +0 -110
- package/dist/cdn/components/chunks/chunk-G5SBDQQ3.js +0 -1
- package/dist/cdn/components/chunks/chunk-KSZRQRN4.js +0 -1
- package/dist/cdn/components/chunks/chunk-PE4DAXHQ.js +0 -3
- package/dist/cdn/components/chunks/chunk-RS7TWEMQ.js +0 -1
- package/dist/cdn/components/chunks/chunk-UDOZRIJZ.js +0 -1
- package/dist/cdn/components/chunks/chunk-VOTRXBDS.js +0 -38
|
@@ -16,13 +16,16 @@ import { FormMixin } from "../../../mixins/form.mixin.js";
|
|
|
16
16
|
import { FormLabelMixin, } from "../../../mixins/form-label.mixin.js";
|
|
17
17
|
import { EditableMixin, } from "../../../mixins/editable.mixin.js";
|
|
18
18
|
import { FieldAppearanceMixin, } from "../../../mixins/field-appearance.mixin.js";
|
|
19
|
+
import { RoundedMixin, } from "../../../mixins/rounded.mixin.js";
|
|
20
|
+
import { FieldSizeMixin, } from "../../../mixins/field-size.mixin.js";
|
|
19
21
|
import { AnchorPositionMixin, } from "../../../mixins/anchor-position.mixin.js";
|
|
20
22
|
import { ChangeEvent } from "../../../events/change.event.js";
|
|
21
23
|
import { formLabelsStyles } from "../shared-styles/form-labels.styles.js";
|
|
22
24
|
import { selectStyles } from "./select.styles.js";
|
|
23
25
|
import { isWebKit } from "../../../utils/browser.utils.js";
|
|
24
|
-
import { parseListboxOptions, renderHighlightedLabel, } from "../../../utils/listbox-options.utils.js";
|
|
26
|
+
import { parseListboxOptions, renderHighlightedLabel, renderListboxRows, } from "../../../utils/listbox-options.utils.js";
|
|
25
27
|
import { resolveDurationMs, resolveEasing, } from "../../../utils/motion.utils.js";
|
|
28
|
+
import { LocalizableMixin, } from "../../../mixins/localizable.mixin.js";
|
|
26
29
|
/**
|
|
27
30
|
* Tag name of the select component.
|
|
28
31
|
*/
|
|
@@ -32,7 +35,7 @@ export const EunomiaSelectTagName = "eun-select";
|
|
|
32
35
|
* @internal
|
|
33
36
|
*/
|
|
34
37
|
const Base = DisabledMixin(ValidatorsMixin(LitElement));
|
|
35
|
-
const EunomiaSelectMixinBase = AnchorPositionMixin(FieldAppearanceMixin(FormLabelMixin(ReadonlyMixin(EditableMixin(FormMixin(Base))))));
|
|
38
|
+
const EunomiaSelectMixinBase = LocalizableMixin(AnchorPositionMixin(RoundedMixin(FieldSizeMixin(FieldAppearanceMixin(FormLabelMixin(ReadonlyMixin(EditableMixin(FormMixin(Base)))))))));
|
|
36
39
|
/**
|
|
37
40
|
* A field that picks one or more values from a list of option and optgroup
|
|
38
41
|
* children. Set searchable to let the field also filter that list as the
|
|
@@ -59,6 +62,8 @@ const EunomiaSelectMixinBase = AnchorPositionMixin(FieldAppearanceMixin(FormLabe
|
|
|
59
62
|
* @prop {boolean} [native=false] - Renders the field as a real select, using the browser's own dropdown instead of the listbox panel. Takes priority over searchable and multiple, neither of which a native dropdown can support
|
|
60
63
|
* @prop {boolean} [multiple=false] - Whether more than one option can be picked at once. Each option then renders a checkbox, and picking one toggles it without closing the dropdown, so value becomes an array of every picked option's value. Ignored while native is set
|
|
61
64
|
* @prop {'outline' | 'flat' | 'underline'} [appearance='outline'] - How the field's surface is drawn: a bordered box, a muted background with no border, or a bottom border only
|
|
65
|
+
* @prop {boolean} [rounded=false] - Whether the field is fully rounded, as a pill. A custom border radius still wins over it
|
|
66
|
+
* @prop {'xs' | 's' | 'm' | 'l' | 'xl'} [size='m'] - The field size. A field and a button of the same size share the same height
|
|
62
67
|
* @prop {string} label - The title label of the field, rendered through the label component
|
|
63
68
|
* @prop {string} instructions - Instructions displayed below the label
|
|
64
69
|
* @prop {string} name - The field name
|
|
@@ -69,6 +74,7 @@ const EunomiaSelectMixinBase = AnchorPositionMixin(FieldAppearanceMixin(FormLabe
|
|
|
69
74
|
* @prop {boolean} [readonly=false] - Whether the field is read only
|
|
70
75
|
* @prop {boolean} [required=false] - Whether a selection is required
|
|
71
76
|
* @prop {boolean} [hideError=false] - Whether the errors are hidden. The hint stays visible
|
|
77
|
+
* @prop {boolean} [invalid=false] - Shows the field as invalid without any message, for an error displayed elsewhere
|
|
72
78
|
* @prop {string} [error] - An error computed outside the field, by the form or by the server. While set, the field is invalid and shows this message right away
|
|
73
79
|
* @prop {Array<Validators<string | string[]>>} validators - The list of validation rules applied to the field value
|
|
74
80
|
* @prop {EunomiaIconName} icon - An optional leading icon
|
|
@@ -79,10 +85,10 @@ const EunomiaSelectMixinBase = AnchorPositionMixin(FieldAppearanceMixin(FormLabe
|
|
|
79
85
|
* @attr {string} [select-placeholder='Select…'] - The fallback for placeholder when searchable isn't set
|
|
80
86
|
* @prop {boolean} [readonlyAvailable=false] - Whether the field can switch between a static display and an editable one
|
|
81
87
|
* @attr {boolean} [readonly-available=false] - Whether the field can switch between a static display and an editable one
|
|
82
|
-
* @prop {string} [emptyValueLabel
|
|
88
|
+
* @prop {string} [emptyValueLabel] - Text displayed in place of the value when readonly and empty. Defaults to the localized string for the current locale (English: "No value set")
|
|
83
89
|
* @prop {string} [noResultsLabel='No results'] - Text displayed in the dropdown when no option matches the search
|
|
84
|
-
* @prop {string} [confirmLabel
|
|
85
|
-
* @attr {string} [confirm-label
|
|
90
|
+
* @prop {string} [confirmLabel] - The label of the confirm button, shown while editing in readonlyAvailable mode or while multiple and the dropdown is open. Set to an empty string to hide the button entirely. Defaults to the localized string for the current locale (English: "Confirm")
|
|
91
|
+
* @attr {string} [confirm-label] - The label of the confirm button, shown while editing in readonlyAvailable mode or while multiple and the dropdown is open. Set to an empty string to hide the button entirely. Defaults to the localized string for the current locale (English: "Confirm")
|
|
86
92
|
* @prop {boolean} [noAnimation=false] - Disables the dropdown panel's open and close height transition, on top of the automatic reduced motion handling
|
|
87
93
|
* @prop {boolean} [loading=false] - Whether options are currently being fetched. Shows a spinning loading indicator in place of the dropdown arrow, and a single disabled loading row instead of the option list. Has no effect while native, beyond the arrow swap
|
|
88
94
|
* @prop {string} [loadingLabel='Loading…'] - The accessible label announced by the loading indicator while loading is set
|
|
@@ -111,10 +117,12 @@ const EunomiaSelectMixinBase = AnchorPositionMixin(FieldAppearanceMixin(FormLabe
|
|
|
111
117
|
* @cssprop [--field-confirm-link-color] - Sets the color of the confirm slot's link, while editing in readonlyAvailable mode
|
|
112
118
|
* @cssprop [--field-confirm-link-color-hover] - Sets the hover color of the confirm slot's link
|
|
113
119
|
* @cssprop [--field-listbox-max-height=260px] - Sets the maximum height of the dropdown panel, past which it scrolls
|
|
120
|
+
* @cssprop [--field-listbox-border-radius] - Sets the corner radius of the dropdown panel, independent of the field's own radius
|
|
114
121
|
* @cssprop [--field-listbox-transition-duration=200ms] - Sets the duration of the dropdown panel's open and close height transition, disabled entirely by the no-animation attribute or reduced motion settings
|
|
115
122
|
* @cssprop [--eun-viewport-inset-top] - Reserves space, such as a page's sticky header height, that the dropdown panel keeps clear of at the top of the viewport. Set on the root or an ancestor rather than on the field itself
|
|
116
123
|
* @cssprop [--eun-viewport-inset-bottom] - The same as eun-viewport-inset-top, reserved at the bottom of the viewport, such as for a sticky footer
|
|
117
124
|
* @cssprop [--field-font-size] - Sets the font size of the field's value and placeholder
|
|
125
|
+
* @cssprop [--field-line-height] - Sets the line height of the field's value and placeholder
|
|
118
126
|
* @cssprop [--field-label-font-size] - Sets the font size of the label
|
|
119
127
|
* @cssprop [--field-message-font-size] - Sets the font size of the hint, error messages and instructions
|
|
120
128
|
* @element eun-select
|
|
@@ -122,6 +130,11 @@ const EunomiaSelectMixinBase = AnchorPositionMixin(FieldAppearanceMixin(FormLabe
|
|
|
122
130
|
let EunomiaSelect = EunomiaSelect_1 = class EunomiaSelect extends EunomiaSelectMixinBase {
|
|
123
131
|
constructor() {
|
|
124
132
|
super(...arguments);
|
|
133
|
+
/**
|
|
134
|
+
* Every change is a complete choice, so its error shows right away.
|
|
135
|
+
* @internal
|
|
136
|
+
*/
|
|
137
|
+
this.errorOnChange = true;
|
|
125
138
|
/**
|
|
126
139
|
* Indicates whether the field filters its options as the user types.
|
|
127
140
|
* When false, the field is read-only and driven by Arrow keys, `Enter`,
|
|
@@ -165,27 +178,11 @@ let EunomiaSelect = EunomiaSelect_1 = class EunomiaSelect extends EunomiaSelectM
|
|
|
165
178
|
* @default Select…
|
|
166
179
|
*/
|
|
167
180
|
this.selectPlaceholder = "Select…";
|
|
168
|
-
/**
|
|
169
|
-
* Text displayed in place of the value when readonly and empty.
|
|
170
|
-
* @default No value set
|
|
171
|
-
*/
|
|
172
|
-
this.emptyValueLabel = "No value set";
|
|
173
181
|
/**
|
|
174
182
|
* Text displayed in the dropdown when no option matches the search.
|
|
175
183
|
* @default No results
|
|
176
184
|
*/
|
|
177
185
|
this.noResultsLabel = "No results";
|
|
178
|
-
/**
|
|
179
|
-
* Label of the confirm button — shown while editing in `readonlyAvailable`
|
|
180
|
-
* mode, or while `multiple` and the dropdown is open (see the class doc).
|
|
181
|
-
* Slot content into `confirm` instead for anything richer than plain text
|
|
182
|
-
* (an icon, for instance) ; slotted content, when present, overrides this.
|
|
183
|
-
* Set to an empty string to hide the button entirely — e.g. for a
|
|
184
|
-
* `readonlyAvailable` field where picking an option is already confirmation
|
|
185
|
-
* enough on its own, and the extra button would just be clutter.
|
|
186
|
-
* @default Confirm
|
|
187
|
-
*/
|
|
188
|
-
this.confirmLabel = "Confirm";
|
|
189
186
|
/**
|
|
190
187
|
* Indicates whether options are currently being fetched (e.g. a
|
|
191
188
|
* server-filtered `searchable` field). Shows a spinning `eun-loader` in
|
|
@@ -515,7 +512,8 @@ let EunomiaSelect = EunomiaSelect_1 = class EunomiaSelect extends EunomiaSelectM
|
|
|
515
512
|
* @internal
|
|
516
513
|
*/
|
|
517
514
|
get hasConfirmContent() {
|
|
518
|
-
return this.hasConfirmSlot ||
|
|
515
|
+
return (this.hasConfirmSlot ||
|
|
516
|
+
!!(this.confirmLabel ?? this.dictionary.common.confirm));
|
|
519
517
|
}
|
|
520
518
|
/**
|
|
521
519
|
* The normalised search query driving both filtering and highlighting.
|
|
@@ -608,9 +606,22 @@ let EunomiaSelect = EunomiaSelect_1 = class EunomiaSelect extends EunomiaSelectM
|
|
|
608
606
|
}
|
|
609
607
|
if (_changedProperties.has("readonly") ||
|
|
610
608
|
_changedProperties.has("disabled")) {
|
|
611
|
-
|
|
609
|
+
if (this.disabled || this.readonly) {
|
|
610
|
+
this.setAttribute("tabindex", "-1");
|
|
611
|
+
}
|
|
612
|
+
else {
|
|
613
|
+
this.removeAttribute("tabindex");
|
|
614
|
+
}
|
|
612
615
|
}
|
|
613
616
|
}
|
|
617
|
+
/**
|
|
618
|
+
* The host is never a tab stop of its own : sequential navigation goes
|
|
619
|
+
* straight to the controls inside, in both directions, and
|
|
620
|
+
* {@link focus} covers a direct call on the host.
|
|
621
|
+
*/
|
|
622
|
+
get hostTabStop() {
|
|
623
|
+
return false;
|
|
624
|
+
}
|
|
614
625
|
/**
|
|
615
626
|
* Returns the field element to focus/anchor on validation errors.
|
|
616
627
|
*
|
|
@@ -929,6 +940,27 @@ let EunomiaSelect = EunomiaSelect_1 = class EunomiaSelect extends EunomiaSelectM
|
|
|
929
940
|
}
|
|
930
941
|
break;
|
|
931
942
|
}
|
|
943
|
+
case " ": {
|
|
944
|
+
// Space opens the list, then picks the highlighted option, as in
|
|
945
|
+
// a select-only combobox, unless it continues a type-ahead search
|
|
946
|
+
// or is typed into the search text.
|
|
947
|
+
if (this.searchable || this.typeaheadBuffer) {
|
|
948
|
+
if (!this.searchable) {
|
|
949
|
+
this.handleTypeahead(event);
|
|
950
|
+
}
|
|
951
|
+
break;
|
|
952
|
+
}
|
|
953
|
+
event.preventDefault();
|
|
954
|
+
if (!this.isOpen) {
|
|
955
|
+
this.openListbox();
|
|
956
|
+
break;
|
|
957
|
+
}
|
|
958
|
+
const option = this.filteredOptions[this.highlightedIndex];
|
|
959
|
+
if (option) {
|
|
960
|
+
this.handleSelect(option);
|
|
961
|
+
}
|
|
962
|
+
break;
|
|
963
|
+
}
|
|
932
964
|
default:
|
|
933
965
|
if (!this.searchable) {
|
|
934
966
|
this.handleTypeahead(event);
|
|
@@ -988,27 +1020,17 @@ let EunomiaSelect = EunomiaSelect_1 = class EunomiaSelect extends EunomiaSelectM
|
|
|
988
1020
|
return renderHighlightedLabel(label, this.effectiveQuery);
|
|
989
1021
|
}
|
|
990
1022
|
/**
|
|
991
|
-
* Renders the dropdown's option rows,
|
|
992
|
-
*
|
|
1023
|
+
* Renders the dropdown's option rows, grouped under their `optgroup`
|
|
1024
|
+
* label (see {@link renderListboxRows}).
|
|
993
1025
|
*
|
|
994
1026
|
* @param options the options to render, already filtered.
|
|
995
1027
|
* @returns the rendered rows.
|
|
996
1028
|
* @private
|
|
997
1029
|
*/
|
|
998
1030
|
renderOptionRows(options) {
|
|
999
|
-
|
|
1000
|
-
let lastGroup;
|
|
1001
|
-
options.forEach((option, index) => {
|
|
1002
|
-
if (option.group !== lastGroup) {
|
|
1003
|
-
lastGroup = option.group;
|
|
1004
|
-
if (option.group) {
|
|
1005
|
-
rows.push(html `<li class="group-label" role="presentation">
|
|
1006
|
-
${option.group}
|
|
1007
|
-
</li>`);
|
|
1008
|
-
}
|
|
1009
|
-
}
|
|
1031
|
+
return renderListboxRows(options, (option, index) => {
|
|
1010
1032
|
const selected = this.isSelected(option);
|
|
1011
|
-
|
|
1033
|
+
return html `
|
|
1012
1034
|
<li
|
|
1013
1035
|
id="listbox-option-${index}"
|
|
1014
1036
|
role="option"
|
|
@@ -1034,9 +1056,8 @@ let EunomiaSelect = EunomiaSelect_1 = class EunomiaSelect extends EunomiaSelectM
|
|
|
1034
1056
|
? this.renderHighlighted(option.label)
|
|
1035
1057
|
: option.label}
|
|
1036
1058
|
</li>
|
|
1037
|
-
|
|
1059
|
+
`;
|
|
1038
1060
|
});
|
|
1039
|
-
return rows;
|
|
1040
1061
|
}
|
|
1041
1062
|
/**
|
|
1042
1063
|
* Whether the confirm trigger should render at all right now — while
|
|
@@ -1089,7 +1110,9 @@ let EunomiaSelect = EunomiaSelect_1 = class EunomiaSelect extends EunomiaSelectM
|
|
|
1089
1110
|
}
|
|
1090
1111
|
return html `
|
|
1091
1112
|
<button type="button" id="confirm-link" @click=${this.handleConfirmClick}>
|
|
1092
|
-
<slot name="confirm"
|
|
1113
|
+
<slot name="confirm"
|
|
1114
|
+
>${this.confirmLabel ?? this.dictionary.common.confirm}</slot
|
|
1115
|
+
>
|
|
1093
1116
|
</button>
|
|
1094
1117
|
`;
|
|
1095
1118
|
}
|
|
@@ -1112,7 +1135,8 @@ let EunomiaSelect = EunomiaSelect_1 = class EunomiaSelect extends EunomiaSelectM
|
|
|
1112
1135
|
>
|
|
1113
1136
|
<slot name="readonly-content">
|
|
1114
1137
|
<span class=${classMap({ empty: !label })}
|
|
1115
|
-
>${label ||
|
|
1138
|
+
>${label ||
|
|
1139
|
+
(this.emptyValueLabel ?? this.dictionary.common.noValue)}</span
|
|
1116
1140
|
>
|
|
1117
1141
|
</slot>
|
|
1118
1142
|
</div>
|
|
@@ -16,7 +16,8 @@ import { css } from "lit";
|
|
|
16
16
|
* [--field-icon-color] - Set a custom color to the leading icon and action buttons
|
|
17
17
|
* [--field-error-color] - Set a custom color to the error state content
|
|
18
18
|
* [--field-hint-color] - Set a custom color to the hint message
|
|
19
|
-
* [--field-font-size] - Set a custom font size for the field's value and placeholder
|
|
19
|
+
* [--field-font-size] - Set a custom font size for the field's value and placeholder, for every size
|
|
20
|
+
* [--field-line-height] - Set a custom line height for the field's value and placeholder, for every size
|
|
20
21
|
* [--field-label-font-size] - Set a custom font size for the label (see label.styles.ts)
|
|
21
22
|
* [--field-message-font-size] - Set a custom font size for the hint, error and instructions (see form-labels.styles.ts)
|
|
22
23
|
* [--field-focus-outline-color] - Set a custom color to the focus outline
|
|
@@ -43,22 +44,50 @@ const base = css `
|
|
|
43
44
|
--field-focus-outline-color,
|
|
44
45
|
var(--eun-color-primary-500, #3d6fff)
|
|
45
46
|
);
|
|
46
|
-
--
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
);
|
|
47
|
+
--_defaultBorderRadius: var(--eun-border-radius-m, 8px);
|
|
48
|
+
--_borderRadius: var(--field-border-radius, var(--_defaultBorderRadius));
|
|
49
|
+
--_defaultPaddingInline: var(--eun-space-s, 8px);
|
|
50
|
+
--_defaultPaddingBlock: var(--eun-space-s, 8px);
|
|
51
|
+
--_defaultFontSize: var(--eun-font-size-s, 14px);
|
|
52
|
+
--_defaultLineHeight: 1rem;
|
|
53
|
+
--_paddingBlock: var(--field-padding-block, var(--_defaultPaddingBlock));
|
|
50
54
|
--_padding: var(
|
|
51
55
|
--field-padding,
|
|
52
|
-
var(--
|
|
53
|
-
var(--field-padding-inline, var(--
|
|
56
|
+
var(--_paddingBlock)
|
|
57
|
+
var(--field-padding-inline, var(--_defaultPaddingInline))
|
|
54
58
|
);
|
|
59
|
+
--_lineHeight: var(--field-line-height, var(--_defaultLineHeight));
|
|
55
60
|
--_shadow: var(--field-shadow, none);
|
|
56
61
|
font-family: var(--eun-font-family, "Mulish", sans-serif);
|
|
57
|
-
font-size: var(--field-font-size, var(--
|
|
62
|
+
font-size: var(--field-font-size, var(--_defaultFontSize));
|
|
58
63
|
display: block;
|
|
59
64
|
width: 100%;
|
|
60
65
|
outline: none;
|
|
61
66
|
}
|
|
67
|
+
:host([rounded]) {
|
|
68
|
+
--_defaultBorderRadius: var(--eun-border-radius-xl, 999px);
|
|
69
|
+
--_defaultPaddingInline: var(--eun-space-m, 16px);
|
|
70
|
+
}
|
|
71
|
+
:host([size="xs"]) {
|
|
72
|
+
--_defaultFontSize: var(--eun-font-size-xs, 10px);
|
|
73
|
+
--_defaultPaddingBlock: var(--eun-space-xxs, 1.6px);
|
|
74
|
+
--_defaultLineHeight: 10px;
|
|
75
|
+
}
|
|
76
|
+
:host([size="s"]) {
|
|
77
|
+
--_defaultFontSize: var(--eun-font-size-xs, 10px);
|
|
78
|
+
--_defaultPaddingBlock: calc(var(--eun-space-s, 8px) / 2);
|
|
79
|
+
--_defaultLineHeight: 10px;
|
|
80
|
+
}
|
|
81
|
+
:host([size="l"]) {
|
|
82
|
+
--_defaultFontSize: var(--eun-font-size-m, 16px);
|
|
83
|
+
--_defaultPaddingBlock: calc(var(--eun-space-s, 8px) * 1.25);
|
|
84
|
+
--_defaultLineHeight: 1.1rem;
|
|
85
|
+
}
|
|
86
|
+
:host([size="xl"]) {
|
|
87
|
+
--_defaultFontSize: var(--eun-font-size-l, 1.3rem);
|
|
88
|
+
--_defaultPaddingBlock: calc(var(--eun-space-s, 8px) * 1.5);
|
|
89
|
+
--_defaultLineHeight: 1.3rem;
|
|
90
|
+
}
|
|
62
91
|
#wrapper {
|
|
63
92
|
display: flex;
|
|
64
93
|
flex-direction: column;
|
|
@@ -77,6 +106,7 @@ const base = css `
|
|
|
77
106
|
border: var(--eun-border-width-m, 1.5px) solid var(--_borderColor);
|
|
78
107
|
border-radius: var(--_borderRadius);
|
|
79
108
|
padding: var(--_padding);
|
|
109
|
+
line-height: var(--_lineHeight);
|
|
80
110
|
outline: 1px solid transparent;
|
|
81
111
|
box-shadow: var(--_shadow);
|
|
82
112
|
box-sizing: border-box;
|
|
@@ -85,6 +115,12 @@ const base = css `
|
|
|
85
115
|
outline-color var(--eun-duration-s, 150ms) var(--eun-easing-default, ease);
|
|
86
116
|
appearance: none;
|
|
87
117
|
}
|
|
118
|
+
input#field,
|
|
119
|
+
button#field {
|
|
120
|
+
box-sizing: content-box;
|
|
121
|
+
min-width: 0;
|
|
122
|
+
height: var(--_lineHeight);
|
|
123
|
+
}
|
|
88
124
|
#field::placeholder {
|
|
89
125
|
color: var(--_placeholderColor);
|
|
90
126
|
}
|
|
@@ -181,6 +217,7 @@ const base = css `
|
|
|
181
217
|
}
|
|
182
218
|
#readonly-display {
|
|
183
219
|
padding: var(--_padding);
|
|
220
|
+
line-height: var(--_lineHeight);
|
|
184
221
|
border: var(--eun-border-width-m, 1.5px) solid transparent;
|
|
185
222
|
border-radius: var(--_borderRadius);
|
|
186
223
|
box-sizing: border-box;
|
|
@@ -18,6 +18,7 @@ import { css } from "lit";
|
|
|
18
18
|
*
|
|
19
19
|
* Custom css variables:
|
|
20
20
|
* [--field-listbox-max-height=260px] - Set a custom maximum height for the dropdown panel, past which it scrolls
|
|
21
|
+
* [--field-listbox-border-radius] - Set a custom corner radius for the dropdown panel, independent of --field-border-radius
|
|
21
22
|
* [--field-listbox-transition-duration=200ms] - Set a custom duration for the dropdown panel's open/close animation (played in JS — see each consumer's own `playListboxOpenAnimation`/`playListboxCloseAnimation`), disabled entirely by the `no-animation` attribute (`eun-select` only) or `prefers-reduced-motion: reduce`
|
|
22
23
|
* [--field-match-color] - Set a custom color for the matched search substring, highlighted with `<mark>`
|
|
23
24
|
* [--field-match-background] - Set a custom background for the matched search substring, none by default
|
|
@@ -43,7 +44,10 @@ const listbox = css `
|
|
|
43
44
|
color: var(--_textColor);
|
|
44
45
|
background: var(--eun-surface-color, #ffffff);
|
|
45
46
|
border: var(--eun-border-width-m, 1.5px) solid var(--_borderColor);
|
|
46
|
-
border-radius: var(
|
|
47
|
+
border-radius: var(
|
|
48
|
+
--field-listbox-border-radius,
|
|
49
|
+
var(--eun-border-radius-m, 8px)
|
|
50
|
+
);
|
|
47
51
|
box-shadow: var(
|
|
48
52
|
--eun-shadow-m,
|
|
49
53
|
0 10px 15px -3px rgba(0, 0, 0, 0.1),
|
|
@@ -89,7 +93,17 @@ const listbox = css `
|
|
|
89
93
|
text-align: center;
|
|
90
94
|
color: var(--_placeholderColor);
|
|
91
95
|
}
|
|
96
|
+
#listbox li.option-group {
|
|
97
|
+
padding: 0;
|
|
98
|
+
cursor: default;
|
|
99
|
+
}
|
|
100
|
+
#listbox .group-options {
|
|
101
|
+
margin: 0;
|
|
102
|
+
padding: 0;
|
|
103
|
+
list-style: none;
|
|
104
|
+
}
|
|
92
105
|
#listbox .group-label {
|
|
106
|
+
padding: var(--eun-space-s, 8px) var(--eun-space-m, 16px);
|
|
93
107
|
cursor: default;
|
|
94
108
|
padding-block-end: var(--eun-space-xxs, 1.6px);
|
|
95
109
|
font-size: var(--eun-font-size-xs, 12px);
|
|
@@ -46,6 +46,7 @@ declare const EunomiaSliderMixinBase: Constructor<EunomiaSliderBase>;
|
|
|
46
46
|
* @prop {boolean} [readonly=false] - Whether the field is read only
|
|
47
47
|
* @prop {boolean} [required=false] - Present for API consistency with every other field, but inert here, since a slider's value can never be empty the way a text field's can
|
|
48
48
|
* @prop {boolean} [hideError=false] - Whether the errors are hidden. The hint stays visible
|
|
49
|
+
* @prop {boolean} [invalid=false] - Shows the field as invalid without any message, for an error displayed elsewhere
|
|
49
50
|
* @prop {string} [error] - An error computed outside the field, by the form or by the server. While set, the field is invalid and shows this message right away
|
|
50
51
|
* @attr {boolean} [hide-error=false] - Whether the errors are hidden
|
|
51
52
|
* @prop {boolean} [hideTooltip=false] - Hides the floating value bubble that otherwise appears above the thumb while dragging or focused
|
|
@@ -178,14 +179,6 @@ export declare class EunomiaSlider extends EunomiaSliderMixinBase {
|
|
|
178
179
|
private hasFocus;
|
|
179
180
|
connectedCallback(): void;
|
|
180
181
|
disconnectedCallback(): void;
|
|
181
|
-
/**
|
|
182
|
-
* Redirects focus to the native field whenever the host itself receives
|
|
183
|
-
* it — the same pattern `eun-counter`/`eun-input` use, so the host stays
|
|
184
|
-
* in the tab order (`DisabledMixin`) rather than excluded via
|
|
185
|
-
* `tabindex="-1"`, which would break Tab from reaching the field at all.
|
|
186
|
-
* @private
|
|
187
|
-
*/
|
|
188
|
-
private readonly handleHostFocus;
|
|
189
182
|
/**
|
|
190
183
|
* The value a native `<input type="range">` with no `value` attribute
|
|
191
184
|
* resolves to on its own.
|
|
@@ -243,6 +236,12 @@ export declare class EunomiaSlider extends EunomiaSliderMixinBase {
|
|
|
243
236
|
* @private
|
|
244
237
|
*/
|
|
245
238
|
private get tickValues();
|
|
239
|
+
/**
|
|
240
|
+
* The host is never a tab stop of its own : sequential navigation goes
|
|
241
|
+
* straight to the controls inside, in both directions, and
|
|
242
|
+
* {@link focus} covers a direct call on the host.
|
|
243
|
+
*/
|
|
244
|
+
protected get hostTabStop(): boolean;
|
|
246
245
|
/**
|
|
247
246
|
* Returns the field element to focus/anchor on validation errors.
|
|
248
247
|
*
|
|
@@ -58,6 +58,7 @@ const EunomiaSliderMixinBase = FormLabelMixin(ReadonlyMixin(FormMixin(Base)));
|
|
|
58
58
|
* @prop {boolean} [readonly=false] - Whether the field is read only
|
|
59
59
|
* @prop {boolean} [required=false] - Present for API consistency with every other field, but inert here, since a slider's value can never be empty the way a text field's can
|
|
60
60
|
* @prop {boolean} [hideError=false] - Whether the errors are hidden. The hint stays visible
|
|
61
|
+
* @prop {boolean} [invalid=false] - Shows the field as invalid without any message, for an error displayed elsewhere
|
|
61
62
|
* @prop {string} [error] - An error computed outside the field, by the form or by the server. While set, the field is invalid and shows this message right away
|
|
62
63
|
* @attr {boolean} [hide-error=false] - Whether the errors are hidden
|
|
63
64
|
* @prop {boolean} [hideTooltip=false] - Hides the floating value bubble that otherwise appears above the thumb while dragging or focused
|
|
@@ -133,16 +134,6 @@ let EunomiaSlider = class EunomiaSlider extends EunomiaSliderMixinBase {
|
|
|
133
134
|
* @internal
|
|
134
135
|
*/
|
|
135
136
|
this.hasFocus = false;
|
|
136
|
-
/**
|
|
137
|
-
* Redirects focus to the native field whenever the host itself receives
|
|
138
|
-
* it — the same pattern `eun-counter`/`eun-input` use, so the host stays
|
|
139
|
-
* in the tab order (`DisabledMixin`) rather than excluded via
|
|
140
|
-
* `tabindex="-1"`, which would break Tab from reaching the field at all.
|
|
141
|
-
* @private
|
|
142
|
-
*/
|
|
143
|
-
this.handleHostFocus = () => {
|
|
144
|
-
this.fieldEl?.focus();
|
|
145
|
-
};
|
|
146
137
|
/**
|
|
147
138
|
* Updates the value from dragging or a keyboard-driven native step, and
|
|
148
139
|
* notifies consumers — fires on every native `input` event, so live and
|
|
@@ -256,10 +247,8 @@ let EunomiaSlider = class EunomiaSlider extends EunomiaSliderMixinBase {
|
|
|
256
247
|
connectedCallback() {
|
|
257
248
|
super.connectedCallback?.();
|
|
258
249
|
this.value ??= this.clamp(this.defaultRangeValue);
|
|
259
|
-
this.addEventListener("focus", this.handleHostFocus);
|
|
260
250
|
}
|
|
261
251
|
disconnectedCallback() {
|
|
262
|
-
this.removeEventListener("focus", this.handleHostFocus);
|
|
263
252
|
window.removeEventListener("pointerup", this.handlePointerUp);
|
|
264
253
|
window.removeEventListener("pointercancel", this.handlePointerUp);
|
|
265
254
|
super.disconnectedCallback?.();
|
|
@@ -361,6 +350,14 @@ let EunomiaSlider = class EunomiaSlider extends EunomiaSliderMixinBase {
|
|
|
361
350
|
values.push(this.max);
|
|
362
351
|
return values;
|
|
363
352
|
}
|
|
353
|
+
/**
|
|
354
|
+
* The host is never a tab stop of its own : sequential navigation goes
|
|
355
|
+
* straight to the controls inside, in both directions, and
|
|
356
|
+
* {@link focus} covers a direct call on the host.
|
|
357
|
+
*/
|
|
358
|
+
get hostTabStop() {
|
|
359
|
+
return false;
|
|
360
|
+
}
|
|
364
361
|
/**
|
|
365
362
|
* Returns the field element to focus/anchor on validation errors.
|
|
366
363
|
*
|
|
@@ -39,6 +39,7 @@ declare const EunomiaSwitchMixinBase: Constructor<EunomiaSwitchBase>;
|
|
|
39
39
|
* @prop {boolean} [hideIcon=false] - Whether the icon inside the thumb is hidden
|
|
40
40
|
* @attr {boolean} [hide-icon=false] - Whether the icon inside the thumb is hidden
|
|
41
41
|
* @prop {boolean} [hideError=false] - Whether the errors are hidden. The hint stays visible
|
|
42
|
+
* @prop {boolean} [invalid=false] - Shows the field as invalid without any message, for an error displayed elsewhere
|
|
42
43
|
* @prop {string} [error] - An error computed outside the field, by the form or by the server. While set, the field is invalid and shows this message right away
|
|
43
44
|
* @attr {boolean} [hide-error=false] - Whether the error message is hidden
|
|
44
45
|
* @prop {boolean} [required=false] - Whether the switch must be turned on to be valid
|
|
@@ -44,6 +44,7 @@ const EunomiaSwitchMixinBase = CheckMixin(ReadonlyMixin(FormMixin(DisabledMixin(
|
|
|
44
44
|
* @prop {boolean} [hideIcon=false] - Whether the icon inside the thumb is hidden
|
|
45
45
|
* @attr {boolean} [hide-icon=false] - Whether the icon inside the thumb is hidden
|
|
46
46
|
* @prop {boolean} [hideError=false] - Whether the errors are hidden. The hint stays visible
|
|
47
|
+
* @prop {boolean} [invalid=false] - Shows the field as invalid without any message, for an error displayed elsewhere
|
|
47
48
|
* @prop {string} [error] - An error computed outside the field, by the form or by the server. While set, the field is invalid and shows this message right away
|
|
48
49
|
* @attr {boolean} [hide-error=false] - Whether the error message is hidden
|
|
49
50
|
* @prop {boolean} [required=false] - Whether the switch must be turned on to be valid
|