@eunomia/elements 1.0.0-beta.5 → 1.0.0-beta.7
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 +2 -2
- package/dist/breakpoints.d.ts +37 -10
- package/dist/breakpoints.js +38 -10
- package/dist/cdn/components/chunks/{chunk-MMLIPCOY.js → chunk-22D3SRFR.js} +1 -1
- package/dist/cdn/components/chunks/chunk-36KLGY6U.js +209 -0
- package/dist/cdn/components/chunks/chunk-3BMACIDO.js +1 -0
- package/dist/cdn/components/chunks/{chunk-IDKZKLJR.js → chunk-3PNGQEG4.js} +24 -11
- package/dist/cdn/components/chunks/{chunk-NBIENHLV.js → chunk-5XPOGBPL.js} +18 -18
- package/dist/cdn/components/chunks/chunk-624VJYNA.js +1 -0
- package/dist/cdn/components/chunks/chunk-62RLISRD.js +1 -0
- package/dist/cdn/components/chunks/{chunk-6ETDXUH2.js → chunk-6FYW5TQU.js} +7 -7
- 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-BKZGTCMF.js +1 -0
- package/dist/cdn/components/chunks/{chunk-GW3VP2L7.js → chunk-BO3JOEWM.js} +1 -1
- package/dist/cdn/components/chunks/chunk-BVASCT2V.js +109 -0
- package/dist/cdn/components/chunks/{chunk-DKOPI7QA.js → chunk-DGI7TKCU.js} +83 -68
- package/dist/cdn/components/chunks/chunk-EUWUDCBZ.js +1 -0
- package/dist/cdn/components/chunks/{chunk-P32B7BFD.js → chunk-FF3I7C3C.js} +15 -15
- package/dist/cdn/components/chunks/{chunk-74AOAB4X.js → chunk-FOILAXLL.js} +6 -5
- package/dist/cdn/components/chunks/{chunk-LGLQ36QB.js → chunk-GDBPWZN6.js} +1 -1
- 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-JRGM3W7I.js → chunk-I4ERDXSM.js} +9 -4
- package/dist/cdn/components/chunks/{chunk-AIS3UICU.js → chunk-J3SZBXM6.js} +11 -7
- package/dist/cdn/components/chunks/{chunk-5XJGYXW7.js → chunk-LVKMAHMU.js} +11 -1
- package/dist/cdn/components/chunks/{chunk-SD2WHGPF.js → chunk-MQQJ6DID.js} +1 -1
- package/dist/cdn/components/chunks/{chunk-A4EQSU36.js → chunk-O7PHBLH2.js} +1 -1
- package/dist/cdn/components/chunks/chunk-PD62MBOJ.js +1 -0
- package/dist/cdn/components/chunks/{chunk-5EVP7YNE.js → chunk-PPCHQG7P.js} +1 -1
- package/dist/cdn/components/chunks/{chunk-MPQP4R54.js → chunk-PXF554MD.js} +10 -9
- package/dist/cdn/components/chunks/chunk-QL5GSW2A.js +1 -0
- package/dist/cdn/components/chunks/{chunk-5XJLIHAU.js → chunk-QXQ25SQS.js} +24 -20
- package/dist/cdn/components/chunks/chunk-SMTIDNGW.js +1 -0
- package/dist/cdn/components/chunks/{chunk-PED5ATYN.js → chunk-SVGWCKWT.js} +2 -2
- package/dist/cdn/components/chunks/{chunk-2XASWWKR.js → chunk-TFTRCIIK.js} +9 -8
- 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-L65WUTXM.js → chunk-UYZR4JXZ.js} +12 -7
- package/dist/cdn/components/chunks/chunk-VG6NAAIV.js +1 -0
- package/dist/cdn/components/chunks/chunk-VJCNHMQZ.js +10 -0
- package/dist/cdn/components/chunks/chunk-WW4BTWMH.js +1 -0
- package/dist/cdn/components/chunks/{chunk-XH6NREVZ.js → chunk-YITWLCD3.js} +1 -1
- package/dist/cdn/components/chunks/{chunk-OW7XKDCH.js → chunk-Z3OFIE7S.js} +16 -16
- package/dist/cdn/components/chunks/{chunk-BQHYZB2W.js → chunk-ZBN4HTWP.js} +1 -1
- package/dist/cdn/components/eun-alert.js +33 -18
- package/dist/cdn/components/eun-animate.js +14 -10
- package/dist/cdn/components/eun-badge.js +2 -2
- package/dist/cdn/components/eun-breadcrumb.js +25 -41
- package/dist/cdn/components/eun-button.js +1 -1
- package/dist/cdn/components/eun-calendar.js +67 -65
- package/dist/cdn/components/eun-card.js +34 -19
- package/dist/cdn/components/eun-carousel.js +76 -42
- package/dist/cdn/components/eun-check-card.js +13 -6
- 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 +3 -3
- package/dist/cdn/components/eun-collapse.js +56 -27
- package/dist/cdn/components/eun-color-picker.js +79 -86
- package/dist/cdn/components/eun-counter.js +16 -15
- package/dist/cdn/components/eun-date-picker.js +71 -67
- package/dist/cdn/components/eun-description-list.js +152 -0
- package/dist/cdn/components/eun-divider.js +3 -3
- package/dist/cdn/components/eun-drawer.js +34 -20
- package/dist/cdn/components/eun-dropdown-button.js +1 -1
- package/dist/cdn/components/eun-dropdown-item.js +6 -5
- package/dist/cdn/components/eun-fab.js +17 -16
- package/dist/cdn/components/eun-icon.js +1 -1
- package/dist/cdn/components/eun-image-card.js +79 -22
- package/dist/cdn/components/eun-image-carousel.js +92 -47
- package/dist/cdn/components/eun-infinite-list.js +23 -11
- package/dist/cdn/components/eun-input-file.js +20 -19
- package/dist/cdn/components/eun-input-phone.js +17 -16
- package/dist/cdn/components/eun-input.js +1 -1
- package/dist/cdn/components/eun-label.js +4 -4
- package/dist/cdn/components/eun-link.js +78 -29
- package/dist/cdn/components/eun-loader.js +1 -1
- package/dist/cdn/components/eun-modal.js +27 -20
- package/dist/cdn/components/eun-pagination.js +24 -19
- package/dist/cdn/components/eun-password-strength.js +19 -11
- package/dist/cdn/components/eun-progress-bar.js +13 -5
- package/dist/cdn/components/eun-radio-card.js +16 -9
- package/dist/cdn/components/eun-radio-list.js +12 -9
- 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 +10 -10
- package/dist/cdn/components/eun-scheduler-event.js +1 -1
- package/dist/cdn/components/eun-scheduler.js +27 -27
- package/dist/cdn/components/eun-search.js +24 -25
- package/dist/cdn/components/eun-select.js +32 -31
- package/dist/cdn/components/eun-sidebar.js +40 -24
- package/dist/cdn/components/eun-skeleton.js +1 -1
- package/dist/cdn/components/eun-slider.js +15 -14
- package/dist/cdn/components/eun-sliding-card.js +8 -4
- package/dist/cdn/components/eun-step.js +22 -10
- package/dist/cdn/components/eun-stepper.js +41 -30
- package/dist/cdn/components/eun-switch.js +10 -8
- package/dist/cdn/components/eun-tab-group.js +24 -19
- package/dist/cdn/components/eun-tab-panel.js +11 -3
- 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 +572 -31
- package/dist/cdn/components/eun-tag.js +13 -7
- package/dist/cdn/components/eun-textarea.js +34 -29
- package/dist/cdn/components/eun-time-picker.js +24 -21
- package/dist/cdn/components/eun-toast.js +51 -22
- package/dist/cdn/components/eun-toggle-group.js +57 -36
- package/dist/cdn/components/eun-toggle-item.js +16 -15
- package/dist/cdn/components/eun-toggle.js +12 -10
- package/dist/cdn/components/eun-toolbar.js +64 -54
- package/dist/cdn/components/eun-tooltip.js +30 -14
- package/dist/cdn/styles/breakpoints.scss +8 -0
- package/dist/cdn/styles/eunomia-grid.scss +6 -0
- package/dist/cdn/styles/eunomia-themes.css +1 -1
- package/dist/cdn/styles/themes/eunomia-theme.css +1 -1
- package/dist/cdn/styles/themes/eunomia-theme.scss +4 -3
- package/dist/cdn/styles/themes/mixins/eunomia-a11y-color.mixin.scss +34 -1
- package/dist/cdn/styles/themes/mixins/eunomia-neutrals.mixin.scss +4 -0
- package/dist/cdn/styles/themes/mixins/eunomia-states.mixin.scss +36 -12
- package/dist/cdn/styles/themes/prebuilt-themes/eunomia/eunomia-dark.mixin.scss +10 -10
- package/dist/cdn/styles/themes/prebuilt-themes/eunomia/eunomia.mixin.scss +10 -10
- package/dist/cdn/styles/themes/prebuilt-themes/eunomia/eunomia.theme.css +1 -1
- package/dist/cdn/styles/themes/prebuilt-themes/eunomia/eunomia.theme.scss +3 -2
- package/dist/cdn/styles/themes/prebuilt-themes/fire/eunomia-fire-dark.mixin.scss +10 -10
- package/dist/cdn/styles/themes/prebuilt-themes/fire/eunomia-fire.mixin.scss +10 -10
- package/dist/cdn/styles/themes/prebuilt-themes/fire/eunomia-fire.theme.css +1 -1
- package/dist/cdn/styles/themes/prebuilt-themes/fire/eunomia-fire.theme.scss +3 -2
- package/dist/cdn/styles/themes/prebuilt-themes/forest/eunomia-forest-dark.mixin.scss +10 -10
- package/dist/cdn/styles/themes/prebuilt-themes/forest/eunomia-forest.mixin.scss +10 -10
- package/dist/cdn/styles/themes/prebuilt-themes/forest/eunomia-forest.theme.css +1 -1
- package/dist/cdn/styles/themes/prebuilt-themes/forest/eunomia-forest.theme.scss +3 -2
- package/dist/cdn/styles/themes/prebuilt-themes/gold/eunomia-gold-dark.mixin.scss +10 -10
- package/dist/cdn/styles/themes/prebuilt-themes/gold/eunomia-gold.mixin.scss +10 -10
- package/dist/cdn/styles/themes/prebuilt-themes/gold/eunomia-gold.theme.css +1 -1
- package/dist/cdn/styles/themes/prebuilt-themes/gold/eunomia-gold.theme.scss +3 -2
- package/dist/cdn/styles/themes/prebuilt-themes/ocean/eunomia-ocean-dark.mixin.scss +10 -10
- package/dist/cdn/styles/themes/prebuilt-themes/ocean/eunomia-ocean.mixin.scss +10 -10
- package/dist/cdn/styles/themes/prebuilt-themes/ocean/eunomia-ocean.theme.css +1 -1
- package/dist/cdn/styles/themes/prebuilt-themes/ocean/eunomia-ocean.theme.scss +3 -2
- package/dist/cdn/styles/themes/prebuilt-themes/salmon/eunomia-salmon-dark.mixin.scss +10 -10
- package/dist/cdn/styles/themes/prebuilt-themes/salmon/eunomia-salmon.mixin.scss +10 -10
- package/dist/cdn/styles/themes/prebuilt-themes/salmon/eunomia-salmon.theme.css +1 -1
- package/dist/cdn/styles/themes/prebuilt-themes/salmon/eunomia-salmon.theme.scss +3 -2
- package/dist/cdn/styles/themes/prebuilt-themes/violet/eunomia-violet-dark.mixin.scss +10 -10
- package/dist/cdn/styles/themes/prebuilt-themes/violet/eunomia-violet.mixin.scss +10 -10
- package/dist/cdn/styles/themes/prebuilt-themes/violet/eunomia-violet.theme.css +1 -1
- package/dist/cdn/styles/themes/prebuilt-themes/violet/eunomia-violet.theme.scss +3 -2
- package/dist/cdn/styles/tools/indexes/eunomia-media-queries.index.scss +1 -3
- package/dist/cdn/styles/tools/indexes/eunomia-tools.index.scss +1 -0
- package/dist/cdn/styles/tools/mixins/layout/eunomia-grid.mixin.scss +117 -53
- package/dist/cdn/styles/tools/mixins/media-queries/eunomia-media-queries.mixin.scss +69 -0
- package/dist/cdn/styles/tools/mixins/settings/eunomia-alpha.mixin.scss +28 -4
- package/dist/cdn/styles/tools/mixins/settings/eunomia-motion.mixin.scss +9 -0
- package/dist/cdn/styles/tools/variables/eunomia.breakpoints.scss +4 -0
- package/dist/components/action/button/button.d.ts +9 -3
- package/dist/components/action/button/button.js +10 -4
- package/dist/components/action/button/button.styles.js +61 -41
- package/dist/components/action/dropdown-button/dropdown-button.d.ts +2 -2
- package/dist/components/action/dropdown-button/dropdown-button.js +21 -15
- package/dist/components/action/dropdown-button/dropdown-button.styles.js +3 -2
- package/dist/components/action/dropdown-button/dropdown-item.js +5 -6
- package/dist/components/action/dropdown-button/dropdown-item.styles.js +3 -2
- package/dist/components/action/fab/fab.styles.js +14 -13
- package/dist/components/action/link/link.d.ts +7 -3
- package/dist/components/action/link/link.js +11 -7
- package/dist/components/action/link/link.styles.js +66 -15
- package/dist/components/action/shared-styles/button-palette.styles.js +15 -15
- package/dist/components/action/toggle/toggle-group.d.ts +2 -0
- package/dist/components/action/toggle/toggle-group.js +6 -4
- package/dist/components/action/toggle/toggle-group.styles.d.ts +2 -0
- package/dist/components/action/toggle/toggle-group.styles.js +46 -23
- package/dist/components/action/toggle/toggle-item.styles.js +13 -12
- package/dist/components/action/toggle/toggle.d.ts +2 -0
- package/dist/components/action/toggle/toggle.js +3 -1
- package/dist/components/action/toggle/toggle.styles.d.ts +2 -0
- package/dist/components/action/toggle/toggle.styles.js +12 -8
- package/dist/components/alert/alert/alert.d.ts +11 -7
- package/dist/components/alert/alert/alert.js +13 -14
- package/dist/components/alert/alert/alert.styles.js +32 -15
- package/dist/components/alert/drawer/drawer.d.ts +8 -6
- package/dist/components/alert/drawer/drawer.js +12 -14
- package/dist/components/alert/drawer/drawer.styles.js +26 -10
- package/dist/components/alert/modal/modal.d.ts +13 -11
- package/dist/components/alert/modal/modal.js +17 -27
- package/dist/components/alert/modal/modal.styles.js +16 -7
- package/dist/components/alert/toast/toast.d.ts +9 -5
- package/dist/components/alert/toast/toast.js +11 -13
- package/dist/components/alert/toast/toast.styles.js +49 -18
- package/dist/components/content/badge/badge.js +2 -2
- package/dist/components/content/card/card.d.ts +7 -3
- package/dist/components/content/card/card.js +8 -4
- package/dist/components/content/card/card.styles.js +28 -13
- package/dist/components/content/card/image-card.d.ts +60 -6
- package/dist/components/content/card/image-card.js +120 -11
- package/dist/components/content/card/image-card.styles.js +66 -15
- package/dist/components/content/card/sliding-card.d.ts +2 -0
- package/dist/components/content/card/sliding-card.js +2 -0
- package/dist/components/content/card/sliding-card.styles.js +5 -1
- package/dist/components/content/chip/chip.d.ts +4 -4
- package/dist/components/content/chip/chip.js +8 -8
- package/dist/components/content/collapse/collapse.d.ts +10 -1
- package/dist/components/content/collapse/collapse.js +12 -2
- package/dist/components/content/collapse/collapse.styles.d.ts +10 -1
- package/dist/components/content/collapse/collapse.styles.js +56 -18
- package/dist/components/content/description-list/description-list.d.ts +87 -0
- package/dist/components/content/description-list/description-list.js +107 -0
- package/dist/components/content/description-list/description-list.styles.d.ts +1 -0
- package/dist/components/content/description-list/description-list.styles.js +185 -0
- package/dist/components/content/icon/icon.d.ts +5 -0
- package/dist/components/content/icon/icon.js +5 -0
- package/dist/components/content/icon/icon.style.d.ts +2 -0
- package/dist/components/content/icon/icon.style.js +8 -1
- package/dist/components/content/image-carousel/image-carousel.d.ts +30 -19
- package/dist/components/content/image-carousel/image-carousel.js +58 -55
- package/dist/components/content/image-carousel/image-carousel.styles.js +69 -30
- 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 +9 -1
- package/dist/components/content/progress-bar/progress-bar.styles.js +12 -4
- package/dist/components/content/shared-styles/card-link.styles.js +4 -3
- package/dist/components/content/shared-styles/tone-surface.styles.d.ts +5 -0
- package/dist/components/content/shared-styles/tone-surface.styles.js +19 -14
- package/dist/components/content/tag/tag.d.ts +4 -0
- package/dist/components/content/tag/tag.js +6 -2
- package/dist/components/content/tag/tag.styles.js +14 -4
- package/dist/components/content/tooltip/tooltip.d.ts +3 -2
- package/dist/components/content/tooltip/tooltip.js +12 -19
- package/dist/components/content/tooltip/tooltip.styles.js +25 -7
- package/dist/components/form/checkbox/check-card.d.ts +5 -1
- package/dist/components/form/checkbox/check-card.js +5 -1
- package/dist/components/form/checkbox/check-card.styles.js +13 -4
- package/dist/components/form/checkbox/checkbox-list.d.ts +21 -1
- package/dist/components/form/checkbox/checkbox-list.js +50 -17
- package/dist/components/form/checkbox/checkbox.d.ts +5 -1
- package/dist/components/form/checkbox/checkbox.js +7 -2
- package/dist/components/form/checkbox/checkbox.styles.js +5 -4
- package/dist/components/form/color-picker/color-picker.d.ts +48 -29
- package/dist/components/form/color-picker/color-picker.js +85 -71
- package/dist/components/form/color-picker/color-picker.styles.js +7 -6
- package/dist/components/form/counter/counter.d.ts +26 -19
- package/dist/components/form/counter/counter.js +64 -63
- package/dist/components/form/counter/counter.styles.js +5 -4
- package/dist/components/form/date-picker/date-picker.d.ts +64 -39
- package/dist/components/form/date-picker/date-picker.js +107 -96
- package/dist/components/form/date-picker/date-picker.styles.js +8 -5
- package/dist/components/form/input/input.d.ts +45 -40
- package/dist/components/form/input/input.js +93 -111
- package/dist/components/form/input-file/input-file.d.ts +30 -14
- package/dist/components/form/input-file/input-file.js +43 -40
- package/dist/components/form/input-file/input-file.styles.js +7 -6
- package/dist/components/form/input-phone/input-phone.d.ts +30 -7
- package/dist/components/form/input-phone/input-phone.js +54 -30
- package/dist/components/form/input-phone/input-phone.styles.js +4 -4
- package/dist/components/form/label/label.styles.js +3 -3
- package/dist/components/form/radio/radio-card.d.ts +6 -2
- package/dist/components/form/radio/radio-card.js +6 -2
- package/dist/components/form/radio/radio-card.styles.js +14 -5
- package/dist/components/form/radio/radio-list.d.ts +28 -9
- package/dist/components/form/radio/radio-list.js +61 -32
- package/dist/components/form/radio/radio.d.ts +6 -2
- package/dist/components/form/radio/radio.js +6 -2
- package/dist/components/form/radio/radio.styles.js +4 -4
- 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 +10 -9
- package/dist/components/form/search/search.js +29 -56
- package/dist/components/form/search/search.styles.js +5 -4
- package/dist/components/form/select/select.d.ts +32 -12
- package/dist/components/form/select/select.js +74 -59
- package/dist/components/form/select/select.styles.js +3 -2
- package/dist/components/form/shared-styles/card.styles.js +5 -4
- package/dist/components/form/shared-styles/field.styles.js +16 -6
- package/dist/components/form/shared-styles/form-labels.styles.js +1 -1
- package/dist/components/form/shared-styles/listbox.styles.js +10 -0
- package/dist/components/form/slider/slider.d.ts +11 -9
- package/dist/components/form/slider/slider.js +14 -14
- package/dist/components/form/slider/slider.styles.js +8 -7
- package/dist/components/form/switch/switch.d.ts +5 -1
- package/dist/components/form/switch/switch.js +5 -1
- package/dist/components/form/switch/switch.styles.js +7 -5
- package/dist/components/form/textarea/textarea.d.ts +96 -24
- package/dist/components/form/textarea/textarea.js +206 -51
- 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-columns.styles.js +4 -2
- package/dist/components/form/time-picker/time-picker-list.styles.js +2 -1
- package/dist/components/form/time-picker/time-picker.d.ts +30 -10
- package/dist/components/form/time-picker/time-picker.js +81 -64
- package/dist/components/form/time-picker/time-picker.styles.js +4 -3
- package/dist/components/layout/animate/animate.d.ts +37 -15
- package/dist/components/layout/animate/animate.js +36 -16
- package/dist/components/layout/animate/animate.styles.js +11 -18
- package/dist/components/layout/divider/divider.js +1 -1
- package/dist/components/layout/divider/divider.styles.js +1 -1
- package/dist/components/layout/infinite-list/infinite-list.d.ts +33 -10
- package/dist/components/layout/infinite-list/infinite-list.js +115 -18
- package/dist/components/layout/infinite-list/infinite-list.styles.d.ts +3 -0
- package/dist/components/layout/infinite-list/infinite-list.styles.js +17 -5
- package/dist/components/loader/loader/loader.js +2 -2
- package/dist/components/loader/loader/loader.styles.js +17 -13
- package/dist/components/loader/skeleton/skeleton.js +1 -1
- package/dist/components/navigation/breadcrumb/breadcrumb.d.ts +31 -45
- package/dist/components/navigation/breadcrumb/breadcrumb.js +111 -77
- package/dist/components/navigation/breadcrumb/breadcrumb.styles.d.ts +3 -0
- package/dist/components/navigation/breadcrumb/breadcrumb.styles.js +22 -26
- package/dist/components/navigation/carousel/carousel.d.ts +55 -11
- package/dist/components/navigation/carousel/carousel.js +101 -43
- package/dist/components/navigation/carousel/carousel.styles.js +65 -22
- package/dist/components/navigation/pagination/pagination.d.ts +23 -21
- package/dist/components/navigation/pagination/pagination.js +30 -53
- package/dist/components/navigation/pagination/pagination.styles.js +8 -3
- package/dist/components/navigation/sidebar/sidebar.d.ts +17 -13
- package/dist/components/navigation/sidebar/sidebar.js +23 -33
- package/dist/components/navigation/sidebar/sidebar.styles.js +32 -14
- package/dist/components/navigation/stepper/step.js +9 -8
- package/dist/components/navigation/stepper/step.styles.js +16 -5
- package/dist/components/navigation/stepper/stepper.js +12 -5
- package/dist/components/navigation/stepper/stepper.styles.js +16 -5
- package/dist/components/navigation/tabs/tab/tab.d.ts +11 -0
- package/dist/components/navigation/tabs/tab/tab.js +11 -0
- package/dist/components/navigation/tabs/tab/tab.styles.js +22 -16
- package/dist/components/navigation/tabs/tab-group/tab-group.js +9 -10
- package/dist/components/navigation/tabs/tab-group/tab-group.styles.js +21 -16
- package/dist/components/navigation/tabs/tab-panel/tab-panel.d.ts +4 -0
- package/dist/components/navigation/tabs/tab-panel/tab-panel.js +4 -0
- package/dist/components/navigation/tabs/tab-panel/tab-panel.styles.js +18 -1
- package/dist/components/navigation/toolbar/toolbar.d.ts +30 -62
- package/dist/components/navigation/toolbar/toolbar.js +43 -105
- package/dist/components/navigation/toolbar/toolbar.styles.js +59 -36
- package/dist/events/table-row-click.event.d.ts +5 -4
- package/dist/events/table-row-click.event.js +10 -5
- package/dist/features/scheduler/calendar/calendar.d.ts +6 -6
- package/dist/features/scheduler/calendar/calendar.js +7 -6
- package/dist/features/scheduler/calendar/calendar.styles.js +8 -6
- package/dist/features/scheduler/scheduler/scheduler.d.ts +8 -8
- package/dist/features/scheduler/scheduler/scheduler.js +24 -47
- package/dist/features/scheduler/scheduler/scheduler.styles.js +6 -4
- package/dist/features/scheduler/scheduler-event/scheduler-event.d.ts +2 -0
- package/dist/features/scheduler/scheduler-event/scheduler-event.js +5 -3
- package/dist/features/scheduler/scheduler-event/scheduler-event.styles.js +11 -5
- 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 +6 -7
- package/dist/features/scheduler/shared/scheduler-hour-grid.styles.js +3 -3
- package/dist/features/scheduler/shared/scheduler-month-view.styles.js +2 -2
- package/dist/features/scheduler/shared/scheduler-year-view.styles.js +2 -2
- package/dist/features/table/table/table-native.styles.d.ts +28 -0
- package/dist/features/table/table/table-native.styles.js +502 -0
- package/dist/features/table/table/table.d.ts +342 -294
- package/dist/features/table/table/table.js +820 -546
- package/dist/features/table/table/table.styles.js +31 -17
- package/dist/features/table/table/table.types.d.ts +11 -20
- package/dist/features/table/table/table.utils.d.ts +6 -36
- package/dist/features/table/table/table.utils.js +16 -65
- package/dist/features/table/table-action-bar/table-action-bar.d.ts +33 -16
- package/dist/features/table/table-action-bar/table-action-bar.js +15 -22
- package/dist/features/table/table-action-bar/table-action-bar.styles.js +15 -3
- package/dist/i18n/en.d.ts +99 -0
- package/dist/i18n/en.js +99 -0
- package/dist/i18n/fr.js +103 -2
- package/dist/index.d.ts +6 -10
- package/dist/index.js +7 -10
- package/dist/mixins/button.mixin.js +3 -2
- package/dist/mixins/check.mixin.js +15 -15
- 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/form.mixin.d.ts +21 -1
- package/dist/mixins/form.mixin.js +156 -27
- package/dist/mixins/localizable.mixin.d.ts +1 -1
- package/dist/mixins/localizable.mixin.js +1 -1
- package/dist/mixins/radio.mixin.js +15 -15
- package/dist/mixins/readonly.mixin.d.ts +2 -1
- package/dist/mixins/readonly.mixin.js +10 -3
- package/dist/mixins/validators.mixin.d.ts +7 -1
- package/dist/mixins/validators.mixin.js +36 -17
- package/dist/ssr/alert-ssr.css +187 -0
- package/dist/ssr/animate-ssr.css +3 -2
- package/dist/ssr/badge-ssr.css +67 -0
- package/dist/ssr/breadcrumb-ssr.css +41 -0
- package/dist/ssr/button-ssr.css +319 -0
- package/dist/ssr/card-ssr.css +196 -0
- package/dist/ssr/carousel-ssr.css +238 -0
- package/dist/ssr/checkbox-ssr.css +67 -0
- package/dist/ssr/chip-ssr.css +242 -0
- package/dist/ssr/collapse-ssr.css +151 -0
- package/dist/ssr/description-list-ssr.css +150 -0
- package/dist/ssr/field-ssr.css +163 -0
- package/dist/ssr/icon-ssr.css +266 -0
- package/dist/ssr/image-carousel-ssr.css +24 -0
- package/dist/ssr/links-ssr.css +8 -2
- package/dist/ssr/pagination-ssr.css +4 -0
- package/dist/ssr/rating-ssr.css +254 -0
- package/dist/ssr/sidebar-ssr.css +9 -1
- package/dist/ssr/skeleton-ssr.css +63 -0
- package/dist/ssr/table-ssr.css +472 -0
- package/dist/ssr/tabs-ssr.css +129 -0
- package/dist/ssr/tag-ssr.css +197 -0
- package/dist/ssr/toggle-group-ssr.css +182 -0
- package/dist/ssr/toolbar-ssr.css +34 -1
- package/dist/utils/drag-drop.utils.js +18 -2
- package/dist/utils/dropdown-menu.utils.d.ts +2 -2
- package/dist/utils/dropdown-menu.utils.js +4 -14
- package/dist/utils/implicit-submission.utils.d.ts +18 -0
- package/dist/utils/implicit-submission.utils.js +79 -0
- package/dist/utils/light-dom-styles.utils.d.ts +14 -0
- package/dist/utils/light-dom-styles.utils.js +37 -0
- package/dist/utils/listbox-options.utils.d.ts +11 -0
- package/dist/utils/listbox-options.utils.js +41 -3
- package/dist/utils/media.styles.d.ts +19 -0
- package/dist/utils/media.styles.js +23 -0
- package/dist/utils/motion.utils.d.ts +40 -0
- package/dist/utils/motion.utils.js +51 -0
- package/dist/utils/theme-generator.utils.d.ts +6 -1
- package/dist/utils/theme-generator.utils.js +59 -20
- package/package.json +39 -31
- package/styles/breakpoints.scss +8 -0
- package/styles/eunomia-grid.scss +6 -0
- package/styles/themes/eunomia-theme.scss +4 -3
- package/styles/themes/mixins/eunomia-a11y-color.mixin.scss +34 -1
- package/styles/themes/mixins/eunomia-neutrals.mixin.scss +4 -0
- package/styles/themes/mixins/eunomia-states.mixin.scss +36 -12
- package/styles/themes/prebuilt-themes/eunomia/eunomia-dark.mixin.scss +10 -10
- package/styles/themes/prebuilt-themes/eunomia/eunomia.mixin.scss +10 -10
- package/styles/themes/prebuilt-themes/eunomia/eunomia.theme.scss +3 -2
- package/styles/themes/prebuilt-themes/fire/eunomia-fire-dark.mixin.scss +10 -10
- package/styles/themes/prebuilt-themes/fire/eunomia-fire.mixin.scss +10 -10
- package/styles/themes/prebuilt-themes/fire/eunomia-fire.theme.scss +3 -2
- package/styles/themes/prebuilt-themes/forest/eunomia-forest-dark.mixin.scss +10 -10
- package/styles/themes/prebuilt-themes/forest/eunomia-forest.mixin.scss +10 -10
- package/styles/themes/prebuilt-themes/forest/eunomia-forest.theme.scss +3 -2
- package/styles/themes/prebuilt-themes/gold/eunomia-gold-dark.mixin.scss +10 -10
- package/styles/themes/prebuilt-themes/gold/eunomia-gold.mixin.scss +10 -10
- package/styles/themes/prebuilt-themes/gold/eunomia-gold.theme.scss +3 -2
- package/styles/themes/prebuilt-themes/ocean/eunomia-ocean-dark.mixin.scss +10 -10
- package/styles/themes/prebuilt-themes/ocean/eunomia-ocean.mixin.scss +10 -10
- package/styles/themes/prebuilt-themes/ocean/eunomia-ocean.theme.scss +3 -2
- package/styles/themes/prebuilt-themes/salmon/eunomia-salmon-dark.mixin.scss +10 -10
- package/styles/themes/prebuilt-themes/salmon/eunomia-salmon.mixin.scss +10 -10
- package/styles/themes/prebuilt-themes/salmon/eunomia-salmon.theme.scss +3 -2
- package/styles/themes/prebuilt-themes/violet/eunomia-violet-dark.mixin.scss +10 -10
- package/styles/themes/prebuilt-themes/violet/eunomia-violet.mixin.scss +10 -10
- package/styles/themes/prebuilt-themes/violet/eunomia-violet.theme.scss +3 -2
- package/styles/tools/indexes/eunomia-media-queries.index.scss +1 -3
- package/styles/tools/indexes/eunomia-tools.index.scss +1 -0
- package/styles/tools/mixins/layout/eunomia-grid.mixin.scss +117 -53
- package/styles/tools/mixins/media-queries/eunomia-media-queries.mixin.scss +69 -0
- package/styles/tools/mixins/settings/eunomia-alpha.mixin.scss +28 -4
- package/styles/tools/mixins/settings/eunomia-motion.mixin.scss +9 -0
- package/styles/tools/variables/eunomia.breakpoints.scss +4 -0
- package/dist/cdn/components/chunks/chunk-32DTNR52.js +0 -1
- package/dist/cdn/components/chunks/chunk-A6KGFALA.js +0 -132
- package/dist/cdn/components/chunks/chunk-CEDHJUUH.js +0 -1
- package/dist/cdn/components/chunks/chunk-D2M4BV5Y.js +0 -328
- package/dist/cdn/components/chunks/chunk-E4IS25H7.js +0 -1
- package/dist/cdn/components/chunks/chunk-E74CM7UG.js +0 -66
- package/dist/cdn/components/chunks/chunk-EAKYD33D.js +0 -110
- package/dist/cdn/components/chunks/chunk-EST3M4AO.js +0 -1
- package/dist/cdn/components/chunks/chunk-GU6BVMFJ.js +0 -1
- package/dist/cdn/components/chunks/chunk-KBH5PCUO.js +0 -3
- package/dist/cdn/components/chunks/chunk-KVYUNKUO.js +0 -27
- package/dist/cdn/components/chunks/chunk-LFCXUVDO.js +0 -1
- package/dist/cdn/components/chunks/chunk-OAULRKHQ.js +0 -38
- package/dist/cdn/components/chunks/chunk-PCM7D3YF.js +0 -84
- package/dist/cdn/components/chunks/chunk-S2UCEWNG.js +0 -207
- package/dist/cdn/components/chunks/chunk-SJWRE6PW.js +0 -1
- package/dist/cdn/components/chunks/chunk-T4PTHUYF.js +0 -10
- package/dist/cdn/components/chunks/chunk-VRGRCYIO.js +0 -1
- package/dist/cdn/components/chunks/chunk-X2AUBZD2.js +0 -30
- package/dist/cdn/components/eun-breadcrumb-item.js +0 -93
- package/dist/cdn/components/eun-table-cell.js +0 -1
- package/dist/cdn/components/eun-table-column.js +0 -1
- package/dist/cdn/components/eun-table-header.js +0 -1
- package/dist/cdn/components/eun-table-item.js +0 -1
- package/dist/cdn/components/eun-table-skeleton-row.js +0 -1
- package/dist/cdn/styles/tools/mixins/media-queries/eunomia-device.mixin.scss +0 -14
- package/dist/cdn/styles/tools/mixins/media-queries/eunomia-gte.mixin.scss +0 -26
- package/dist/cdn/styles/tools/mixins/media-queries/eunomia-lte.mixin.scss +0 -26
- package/dist/components/navigation/breadcrumb/breadcrumb-item.d.ts +0 -77
- package/dist/components/navigation/breadcrumb/breadcrumb-item.js +0 -130
- package/dist/components/navigation/breadcrumb/breadcrumb-item.styles.d.ts +0 -6
- package/dist/components/navigation/breadcrumb/breadcrumb-item.styles.js +0 -78
- package/dist/features/table/native-table.css +0 -276
- package/dist/features/table/shared-styles/table-row.styles.d.ts +0 -7
- package/dist/features/table/shared-styles/table-row.styles.js +0 -47
- package/dist/features/table/shared-styles/table-shared.styles.d.ts +0 -23
- package/dist/features/table/shared-styles/table-shared.styles.js +0 -33
- package/dist/features/table/table-cell/table-cell.d.ts +0 -59
- package/dist/features/table/table-cell/table-cell.js +0 -73
- package/dist/features/table/table-cell/table-cell.styles.d.ts +0 -1
- package/dist/features/table/table-cell/table-cell.styles.js +0 -46
- package/dist/features/table/table-column/table-column.d.ts +0 -73
- package/dist/features/table/table-column/table-column.js +0 -89
- package/dist/features/table/table-column/table-column.styles.d.ts +0 -1
- package/dist/features/table/table-column/table-column.styles.js +0 -51
- package/dist/features/table/table-header/table-header.d.ts +0 -102
- package/dist/features/table/table-header/table-header.js +0 -165
- package/dist/features/table/table-header/table-header.styles.d.ts +0 -1
- package/dist/features/table/table-header/table-header.styles.js +0 -147
- package/dist/features/table/table-item/table-item.d.ts +0 -179
- package/dist/features/table/table-item/table-item.js +0 -291
- package/dist/features/table/table-item/table-item.styles.d.ts +0 -1
- package/dist/features/table/table-item/table-item.styles.js +0 -404
- package/dist/features/table/table-managed/table-managed.d.ts +0 -19
- package/dist/features/table/table-managed/table-managed.js +0 -128
- package/dist/features/table/table-skeleton-row/table-skeleton-row.d.ts +0 -46
- package/dist/features/table/table-skeleton-row/table-skeleton-row.js +0 -110
- package/dist/features/table/table-skeleton-row/table-skeleton-row.styles.d.ts +0 -12
- package/dist/features/table/table-skeleton-row/table-skeleton-row.styles.js +0 -65
- package/dist/mixins/table-row.mixin.d.ts +0 -37
- package/dist/mixins/table-row.mixin.js +0 -103
- package/styles/tools/mixins/media-queries/eunomia-device.mixin.scss +0 -14
- package/styles/tools/mixins/media-queries/eunomia-gte.mixin.scss +0 -26
- package/styles/tools/mixins/media-queries/eunomia-lte.mixin.scss +0 -26
|
@@ -7,6 +7,7 @@ import { FormLabelMixinInterface } from "../../../mixins/form-label.mixin.js";
|
|
|
7
7
|
import { EditableMixinInterface } from "../../../mixins/editable.mixin.js";
|
|
8
8
|
import { FieldAppearanceMixinInterface } from "../../../mixins/field-appearance.mixin.js";
|
|
9
9
|
import { Constructor } from "../../../utils/constructor.type.js";
|
|
10
|
+
import { LocalizableMixinInterface } from "../../../mixins/localizable.mixin.js";
|
|
10
11
|
/**
|
|
11
12
|
* Tag name of the textarea component.
|
|
12
13
|
*/
|
|
@@ -15,7 +16,7 @@ export declare const EunomiaTextareaTagName = "eun-textarea";
|
|
|
15
16
|
* Type of the textarea base used to declare every necessary Mixin interface elements.
|
|
16
17
|
* @internal
|
|
17
18
|
*/
|
|
18
|
-
type EunomiaTextareaBase = LitElement & DisabledMixinInterface & ReadonlyMixinInterface & ValidatorsMixinInterface<string> & FormMixinInterface<string> & EditableMixinInterface & FormLabelMixinInterface & FieldAppearanceMixinInterface;
|
|
19
|
+
type EunomiaTextareaBase = LitElement & DisabledMixinInterface & ReadonlyMixinInterface & ValidatorsMixinInterface<string> & FormMixinInterface<string> & EditableMixinInterface & FormLabelMixinInterface & FieldAppearanceMixinInterface & LocalizableMixinInterface;
|
|
19
20
|
declare const EunomiaTextareaMixinBase: Constructor<EunomiaTextareaBase>;
|
|
20
21
|
/**
|
|
21
22
|
* A multi-line text field, sharing its label, hint, and error chrome and
|
|
@@ -44,13 +45,15 @@ declare const EunomiaTextareaMixinBase: Constructor<EunomiaTextareaBase>;
|
|
|
44
45
|
* @prop {boolean} [disabled=false] - Whether the field is disabled
|
|
45
46
|
* @prop {boolean} [readonly=false] - Whether the field is read only
|
|
46
47
|
* @prop {boolean} [required=false] - Whether the field is required
|
|
47
|
-
* @prop {boolean} [hideError=false] - Whether the errors are hidden
|
|
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
|
|
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
|
|
48
51
|
* @prop {Array<import('../../../types/form-validators.type.js').Validators<string>>} validators - The list of validation rules applied to the field value
|
|
49
52
|
* @prop {number} rows - The fixed number of visible rows. When omitted, the field automatically grows and shrinks its height to fit its content
|
|
50
53
|
* @prop {boolean} [readonlyAvailable=false] - Whether the field can switch between a static display and an editable one
|
|
51
54
|
* @attr {boolean} [readonly-available=false] - Whether the field can switch between a static display and an editable one
|
|
52
55
|
* @prop {boolean} [formatting=false] - Switches the field to a rich text surface with a formatting toolbar above it, and, combined with readonlyAvailable, renders the static display as formatted rich text instead of raw source
|
|
53
|
-
* @prop {string} [formatToolbarLabel='Text formatting'] - The accessible label of the
|
|
56
|
+
* @prop {string} [formatToolbarLabel='Text formatting'] - The accessible label of the formatting toolbar
|
|
54
57
|
* @prop {string} [formatBoldLabel='Bold'] - The accessible label of the bold toggle
|
|
55
58
|
* @prop {string} [formatItalicLabel='Italic'] - The accessible label of the italic toggle
|
|
56
59
|
* @prop {string} [formatUnderlineLabel='Underline'] - The accessible label of the underline toggle
|
|
@@ -65,9 +68,9 @@ declare const EunomiaTextareaMixinBase: Constructor<EunomiaTextareaBase>;
|
|
|
65
68
|
* @prop {string} [autocomplete='off'] - The native autocomplete attribute forwarded to the field
|
|
66
69
|
* @prop {number} minlength - The native minimum length constraint forwarded to the field
|
|
67
70
|
* @prop {number} maxlength - The field's maximum length. Forwarded natively when not formatting, and enforced manually otherwise. Either way, a live character counter is shown under the field
|
|
68
|
-
* @prop {string} [emptyValueLabel
|
|
69
|
-
* @prop {string} [confirmLabel
|
|
70
|
-
* @prop {string} [cancelLabel
|
|
71
|
+
* @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")
|
|
72
|
+
* @prop {string} [confirmLabel] - The label of the confirm button in edit mode. Defaults to the localized string for the current locale (English: "Save")
|
|
73
|
+
* @prop {string} [cancelLabel] - The label of the cancel button in edit mode. Defaults to the localized string for the current locale (English: "Cancel")
|
|
71
74
|
* @fires {ChangeEvent} eunchange - Fired on every value change, including one applied through the formatting toolbar
|
|
72
75
|
* @fires {CommitEvent} euncommit - Fired when an edit is confirmed in readonlyAvailable mode
|
|
73
76
|
* @cssprop [--field-background] - Sets the background color of the field
|
|
@@ -76,6 +79,8 @@ declare const EunomiaTextareaMixinBase: Constructor<EunomiaTextareaBase>;
|
|
|
76
79
|
* @cssprop [--field-border-color-focus] - Sets the border color on focus
|
|
77
80
|
* @cssprop [--field-border-radius] - Sets the corner radius of the field
|
|
78
81
|
* @cssprop [--field-padding] - Sets the padding of the field
|
|
82
|
+
* @cssprop [--field-padding-block] - Sets the vertical padding, as one length applied to both sides. Ignored when --field-padding is set
|
|
83
|
+
* @cssprop [--field-padding-inline] - Sets the horizontal padding, as one length applied to both sides. Ignored when --field-padding is set
|
|
79
84
|
* @cssprop [--field-text-color] - Sets the text color of the field
|
|
80
85
|
* @cssprop [--field-placeholder-color] - Sets the color of the placeholder
|
|
81
86
|
* @cssprop [--field-error-color] - Sets the color of the error message
|
|
@@ -84,6 +89,9 @@ declare const EunomiaTextareaMixinBase: Constructor<EunomiaTextareaBase>;
|
|
|
84
89
|
* @cssprop [--field-edit-confirm-color] - Sets the color of the confirm button in readonly-available edit mode
|
|
85
90
|
* @cssprop [--field-edit-cancel-color] - Sets the color of the cancel button in readonly-available edit mode
|
|
86
91
|
* @cssprop [--field-shadow] - Sets a box shadow on the field, none by default
|
|
92
|
+
* @cssprop [--field-font-size] - Sets the font size of the field's value and placeholder
|
|
93
|
+
* @cssprop [--field-label-font-size] - Sets the font size of the label
|
|
94
|
+
* @cssprop [--field-message-font-size] - Sets the font size of the hint, error messages and instructions
|
|
87
95
|
* @element eun-textarea
|
|
88
96
|
*/
|
|
89
97
|
export declare class EunomiaTextarea extends EunomiaTextareaMixinBase {
|
|
@@ -124,7 +132,7 @@ export declare class EunomiaTextarea extends EunomiaTextareaMixinBase {
|
|
|
124
132
|
*/
|
|
125
133
|
formatting: boolean;
|
|
126
134
|
/**
|
|
127
|
-
* Accessible label of the
|
|
135
|
+
* Accessible label of the formatting toolbar.
|
|
128
136
|
* @default Text formatting
|
|
129
137
|
*/
|
|
130
138
|
formatToolbarLabel: string;
|
|
@@ -207,19 +215,19 @@ export declare class EunomiaTextarea extends EunomiaTextareaMixinBase {
|
|
|
207
215
|
maxlength?: number;
|
|
208
216
|
/**
|
|
209
217
|
* Text displayed in place of the value when readonly and empty.
|
|
210
|
-
*
|
|
218
|
+
* Falls back to the localized string for the current locale when unset.
|
|
211
219
|
*/
|
|
212
|
-
emptyValueLabel
|
|
220
|
+
emptyValueLabel?: string;
|
|
213
221
|
/**
|
|
214
222
|
* Label of the confirm button in edit mode.
|
|
215
|
-
*
|
|
223
|
+
* Falls back to the localized string for the current locale when unset.
|
|
216
224
|
*/
|
|
217
|
-
confirmLabel
|
|
225
|
+
confirmLabel?: string;
|
|
218
226
|
/**
|
|
219
227
|
* Label of the cancel button in edit mode.
|
|
220
|
-
*
|
|
228
|
+
* Falls back to the localized string for the current locale when unset.
|
|
221
229
|
*/
|
|
222
|
-
cancelLabel
|
|
230
|
+
cancelLabel?: string;
|
|
223
231
|
/**
|
|
224
232
|
* Which color picker (text-color or highlight) is currently open, if any.
|
|
225
233
|
* @private
|
|
@@ -290,19 +298,18 @@ export declare class EunomiaTextarea extends EunomiaTextareaMixinBase {
|
|
|
290
298
|
* @readonly
|
|
291
299
|
*/
|
|
292
300
|
private readonly toolbarEl?;
|
|
293
|
-
connectedCallback(): void;
|
|
294
|
-
disconnectedCallback(): void;
|
|
295
301
|
/**
|
|
296
|
-
*
|
|
297
|
-
*
|
|
298
|
-
*
|
|
299
|
-
* component, that turned out to break Tab from reaching the field
|
|
300
|
-
* entirely, instead of just skipping the host. Redirecting keeps a
|
|
301
|
-
* single, real tab stop from the user's perspective without touching
|
|
302
|
-
* that tab order.
|
|
303
|
-
* @private
|
|
302
|
+
* Index, among {@link toolbarControls}, of the control holding the
|
|
303
|
+
* toolbar's single Tab stop.
|
|
304
|
+
* @internal
|
|
304
305
|
*/
|
|
305
|
-
private
|
|
306
|
+
private toolbarFocusIndex;
|
|
307
|
+
/**
|
|
308
|
+
* Pending {@link applyToolbarRoving} call.
|
|
309
|
+
* @internal
|
|
310
|
+
*/
|
|
311
|
+
private toolbarRovingTimer?;
|
|
312
|
+
disconnectedCallback(): void;
|
|
306
313
|
/**
|
|
307
314
|
* Lifecycle hook called after the first render : populates the
|
|
308
315
|
* contenteditable surface (when `formatting`) and fits the field height
|
|
@@ -337,6 +344,12 @@ export declare class EunomiaTextarea extends EunomiaTextareaMixinBase {
|
|
|
337
344
|
* @private
|
|
338
345
|
*/
|
|
339
346
|
private checkEditableValidators;
|
|
347
|
+
/**
|
|
348
|
+
* The host is never a tab stop of its own : sequential navigation goes
|
|
349
|
+
* straight to the controls inside, in both directions, and
|
|
350
|
+
* {@link focus} covers a direct call on the host.
|
|
351
|
+
*/
|
|
352
|
+
protected get hostTabStop(): boolean;
|
|
340
353
|
/**
|
|
341
354
|
* Returns the field element to focus/anchor on validation errors.
|
|
342
355
|
*
|
|
@@ -503,6 +516,23 @@ export declare class EunomiaTextarea extends EunomiaTextareaMixinBase {
|
|
|
503
516
|
* @private
|
|
504
517
|
*/
|
|
505
518
|
private toggleColorPicker;
|
|
519
|
+
/**
|
|
520
|
+
* The swatches of the open color picker, in display order.
|
|
521
|
+
*
|
|
522
|
+
* @returns the swatch buttons, empty while no picker is open.
|
|
523
|
+
* @private
|
|
524
|
+
*/
|
|
525
|
+
private colorSwatches;
|
|
526
|
+
/**
|
|
527
|
+
* Keyboard support of the open color picker, following the menu pattern
|
|
528
|
+
* : arrows move between swatches (wrapping), Home/End jump to the first
|
|
529
|
+
* and last, Escape closes it, and Tab closes it before leaving it. Both
|
|
530
|
+
* return the focus to the picker's trigger.
|
|
531
|
+
*
|
|
532
|
+
* @param event the keyboard event.
|
|
533
|
+
* @private
|
|
534
|
+
*/
|
|
535
|
+
private handleColorPickerKeydown;
|
|
506
536
|
/**
|
|
507
537
|
* Closes whichever color picker is open, if any.
|
|
508
538
|
* @private
|
|
@@ -526,6 +556,48 @@ export declare class EunomiaTextarea extends EunomiaTextareaMixinBase {
|
|
|
526
556
|
* @private
|
|
527
557
|
*/
|
|
528
558
|
private selectColor;
|
|
559
|
+
/**
|
|
560
|
+
* The toolbar's controls, in visual order : every format and alignment
|
|
561
|
+
* toggle, then both color picker triggers.
|
|
562
|
+
*
|
|
563
|
+
* @returns the controls, empty while the toolbar isn't rendered.
|
|
564
|
+
* @private
|
|
565
|
+
*/
|
|
566
|
+
private toolbarControls;
|
|
567
|
+
/**
|
|
568
|
+
* Applies the toolbar's roving `tabindex` once the toggle groups have
|
|
569
|
+
* applied their own (which they do after their items' updates), so the
|
|
570
|
+
* whole toolbar stays a single Tab stop.
|
|
571
|
+
* @private
|
|
572
|
+
*/
|
|
573
|
+
private scheduleToolbarRoving;
|
|
574
|
+
/**
|
|
575
|
+
* Makes the control at {@link toolbarFocusIndex} the toolbar's only Tab
|
|
576
|
+
* stop. Left alone while the toolbar is disabled, every control then
|
|
577
|
+
* being out of the Tab order already.
|
|
578
|
+
* @private
|
|
579
|
+
*/
|
|
580
|
+
private applyToolbarRoving;
|
|
581
|
+
/**
|
|
582
|
+
* Remembers the toolbar control receiving the focus, so Tab comes back
|
|
583
|
+
* to it.
|
|
584
|
+
*
|
|
585
|
+
* @param event the focus event.
|
|
586
|
+
* @private
|
|
587
|
+
*/
|
|
588
|
+
private handleToolbarFocusIn;
|
|
589
|
+
/**
|
|
590
|
+
* Keyboard support of the toolbar, following the toolbar pattern :
|
|
591
|
+
* Left/Right move between its controls (wrapping), Home/End jump to the
|
|
592
|
+
* first and last, and Enter/Space pick an alignment. Listened to in the
|
|
593
|
+
* capture phase, ahead of the alignment group's own arrow handling.
|
|
594
|
+
* Up/Down are left to the alignment group, which selects the next
|
|
595
|
+
* alignment.
|
|
596
|
+
*
|
|
597
|
+
* @param event the keyboard event.
|
|
598
|
+
* @private
|
|
599
|
+
*/
|
|
600
|
+
private readonly handleToolbarKeydown;
|
|
529
601
|
/**
|
|
530
602
|
* Renders the formatting toolbar, shown above the field itself (never
|
|
531
603
|
* above the readonly display) when `formatting` is set.
|
|
@@ -21,6 +21,7 @@ import { findRichTextColor, formatRichText, getPlainTextLength, populateEditable
|
|
|
21
21
|
import { formLabelsStyles } from "../shared-styles/form-labels.styles.js";
|
|
22
22
|
import { textareaStyles } from "./textarea.styles.js";
|
|
23
23
|
import { pickValidity } from "../../../utils/validity.utils.js";
|
|
24
|
+
import { LocalizableMixin, } from "../../../mixins/localizable.mixin.js";
|
|
24
25
|
/**
|
|
25
26
|
* Tag name of the textarea component.
|
|
26
27
|
*/
|
|
@@ -467,7 +468,7 @@ function getActiveColorName(root, kind) {
|
|
|
467
468
|
* @internal
|
|
468
469
|
*/
|
|
469
470
|
const Base = DisabledMixin(ValidatorsMixin(LitElement));
|
|
470
|
-
const EunomiaTextareaMixinBase = FieldAppearanceMixin(FormLabelMixin(ReadonlyMixin(EditableMixin(FormMixin(Base)))));
|
|
471
|
+
const EunomiaTextareaMixinBase = LocalizableMixin(FieldAppearanceMixin(FormLabelMixin(ReadonlyMixin(EditableMixin(FormMixin(Base))))));
|
|
471
472
|
/**
|
|
472
473
|
* A multi-line text field, sharing its label, hint, and error chrome and
|
|
473
474
|
* theming with the input component. It grows and shrinks to fit its
|
|
@@ -495,13 +496,15 @@ const EunomiaTextareaMixinBase = FieldAppearanceMixin(FormLabelMixin(ReadonlyMix
|
|
|
495
496
|
* @prop {boolean} [disabled=false] - Whether the field is disabled
|
|
496
497
|
* @prop {boolean} [readonly=false] - Whether the field is read only
|
|
497
498
|
* @prop {boolean} [required=false] - Whether the field is required
|
|
498
|
-
* @prop {boolean} [hideError=false] - Whether the errors are hidden
|
|
499
|
+
* @prop {boolean} [hideError=false] - Whether the errors are hidden. The hint stays visible
|
|
500
|
+
* @prop {boolean} [invalid=false] - Shows the field as invalid without any message, for an error displayed elsewhere
|
|
501
|
+
* @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
|
|
499
502
|
* @prop {Array<import('../../../types/form-validators.type.js').Validators<string>>} validators - The list of validation rules applied to the field value
|
|
500
503
|
* @prop {number} rows - The fixed number of visible rows. When omitted, the field automatically grows and shrinks its height to fit its content
|
|
501
504
|
* @prop {boolean} [readonlyAvailable=false] - Whether the field can switch between a static display and an editable one
|
|
502
505
|
* @attr {boolean} [readonly-available=false] - Whether the field can switch between a static display and an editable one
|
|
503
506
|
* @prop {boolean} [formatting=false] - Switches the field to a rich text surface with a formatting toolbar above it, and, combined with readonlyAvailable, renders the static display as formatted rich text instead of raw source
|
|
504
|
-
* @prop {string} [formatToolbarLabel='Text formatting'] - The accessible label of the
|
|
507
|
+
* @prop {string} [formatToolbarLabel='Text formatting'] - The accessible label of the formatting toolbar
|
|
505
508
|
* @prop {string} [formatBoldLabel='Bold'] - The accessible label of the bold toggle
|
|
506
509
|
* @prop {string} [formatItalicLabel='Italic'] - The accessible label of the italic toggle
|
|
507
510
|
* @prop {string} [formatUnderlineLabel='Underline'] - The accessible label of the underline toggle
|
|
@@ -516,9 +519,9 @@ const EunomiaTextareaMixinBase = FieldAppearanceMixin(FormLabelMixin(ReadonlyMix
|
|
|
516
519
|
* @prop {string} [autocomplete='off'] - The native autocomplete attribute forwarded to the field
|
|
517
520
|
* @prop {number} minlength - The native minimum length constraint forwarded to the field
|
|
518
521
|
* @prop {number} maxlength - The field's maximum length. Forwarded natively when not formatting, and enforced manually otherwise. Either way, a live character counter is shown under the field
|
|
519
|
-
* @prop {string} [emptyValueLabel
|
|
520
|
-
* @prop {string} [confirmLabel
|
|
521
|
-
* @prop {string} [cancelLabel
|
|
522
|
+
* @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")
|
|
523
|
+
* @prop {string} [confirmLabel] - The label of the confirm button in edit mode. Defaults to the localized string for the current locale (English: "Save")
|
|
524
|
+
* @prop {string} [cancelLabel] - The label of the cancel button in edit mode. Defaults to the localized string for the current locale (English: "Cancel")
|
|
522
525
|
* @fires {ChangeEvent} eunchange - Fired on every value change, including one applied through the formatting toolbar
|
|
523
526
|
* @fires {CommitEvent} euncommit - Fired when an edit is confirmed in readonlyAvailable mode
|
|
524
527
|
* @cssprop [--field-background] - Sets the background color of the field
|
|
@@ -527,6 +530,8 @@ const EunomiaTextareaMixinBase = FieldAppearanceMixin(FormLabelMixin(ReadonlyMix
|
|
|
527
530
|
* @cssprop [--field-border-color-focus] - Sets the border color on focus
|
|
528
531
|
* @cssprop [--field-border-radius] - Sets the corner radius of the field
|
|
529
532
|
* @cssprop [--field-padding] - Sets the padding of the field
|
|
533
|
+
* @cssprop [--field-padding-block] - Sets the vertical padding, as one length applied to both sides. Ignored when --field-padding is set
|
|
534
|
+
* @cssprop [--field-padding-inline] - Sets the horizontal padding, as one length applied to both sides. Ignored when --field-padding is set
|
|
530
535
|
* @cssprop [--field-text-color] - Sets the text color of the field
|
|
531
536
|
* @cssprop [--field-placeholder-color] - Sets the color of the placeholder
|
|
532
537
|
* @cssprop [--field-error-color] - Sets the color of the error message
|
|
@@ -535,6 +540,9 @@ const EunomiaTextareaMixinBase = FieldAppearanceMixin(FormLabelMixin(ReadonlyMix
|
|
|
535
540
|
* @cssprop [--field-edit-confirm-color] - Sets the color of the confirm button in readonly-available edit mode
|
|
536
541
|
* @cssprop [--field-edit-cancel-color] - Sets the color of the cancel button in readonly-available edit mode
|
|
537
542
|
* @cssprop [--field-shadow] - Sets a box shadow on the field, none by default
|
|
543
|
+
* @cssprop [--field-font-size] - Sets the font size of the field's value and placeholder
|
|
544
|
+
* @cssprop [--field-label-font-size] - Sets the font size of the label
|
|
545
|
+
* @cssprop [--field-message-font-size] - Sets the font size of the hint, error messages and instructions
|
|
538
546
|
* @element eun-textarea
|
|
539
547
|
*/
|
|
540
548
|
let EunomiaTextarea = class EunomiaTextarea extends EunomiaTextareaMixinBase {
|
|
@@ -549,7 +557,7 @@ let EunomiaTextarea = class EunomiaTextarea extends EunomiaTextareaMixinBase {
|
|
|
549
557
|
*/
|
|
550
558
|
this.formatting = false;
|
|
551
559
|
/**
|
|
552
|
-
* Accessible label of the
|
|
560
|
+
* Accessible label of the formatting toolbar.
|
|
553
561
|
* @default Text formatting
|
|
554
562
|
*/
|
|
555
563
|
this.formatToolbarLabel = "Text formatting";
|
|
@@ -619,21 +627,6 @@ let EunomiaTextarea = class EunomiaTextarea extends EunomiaTextareaMixinBase {
|
|
|
619
627
|
* @default off
|
|
620
628
|
*/
|
|
621
629
|
this.autocomplete = "off";
|
|
622
|
-
/**
|
|
623
|
-
* Text displayed in place of the value when readonly and empty.
|
|
624
|
-
* @default No value set
|
|
625
|
-
*/
|
|
626
|
-
this.emptyValueLabel = "No value set";
|
|
627
|
-
/**
|
|
628
|
-
* Label of the confirm button in edit mode.
|
|
629
|
-
* @default Save
|
|
630
|
-
*/
|
|
631
|
-
this.confirmLabel = "Save";
|
|
632
|
-
/**
|
|
633
|
-
* Label of the cancel button in edit mode.
|
|
634
|
-
* @default Cancel
|
|
635
|
-
*/
|
|
636
|
-
this.cancelLabel = "Cancel";
|
|
637
630
|
/**
|
|
638
631
|
* Which color picker (text-color or highlight) is currently open, if any.
|
|
639
632
|
* @private
|
|
@@ -686,18 +679,11 @@ let EunomiaTextarea = class EunomiaTextarea extends EunomiaTextareaMixinBase {
|
|
|
686
679
|
*/
|
|
687
680
|
this.pendingCaretNode = null;
|
|
688
681
|
/**
|
|
689
|
-
*
|
|
690
|
-
*
|
|
691
|
-
*
|
|
692
|
-
* component, that turned out to break Tab from reaching the field
|
|
693
|
-
* entirely, instead of just skipping the host. Redirecting keeps a
|
|
694
|
-
* single, real tab stop from the user's perspective without touching
|
|
695
|
-
* that tab order.
|
|
696
|
-
* @private
|
|
682
|
+
* Index, among {@link toolbarControls}, of the control holding the
|
|
683
|
+
* toolbar's single Tab stop.
|
|
684
|
+
* @internal
|
|
697
685
|
*/
|
|
698
|
-
this.
|
|
699
|
-
this.fieldEl?.focus();
|
|
700
|
-
};
|
|
686
|
+
this.toolbarFocusIndex = 0;
|
|
701
687
|
/**
|
|
702
688
|
* Reads native HTML constraint validation from the underlying field
|
|
703
689
|
* element (`required`, `minlength`, `maxlength`) when not `formatting` ;
|
|
@@ -908,6 +894,55 @@ let EunomiaTextarea = class EunomiaTextarea extends EunomiaTextareaMixinBase {
|
|
|
908
894
|
this.closeColorPicker();
|
|
909
895
|
}
|
|
910
896
|
};
|
|
897
|
+
/**
|
|
898
|
+
* Keyboard support of the toolbar, following the toolbar pattern :
|
|
899
|
+
* Left/Right move between its controls (wrapping), Home/End jump to the
|
|
900
|
+
* first and last, and Enter/Space pick an alignment. Listened to in the
|
|
901
|
+
* capture phase, ahead of the alignment group's own arrow handling.
|
|
902
|
+
* Up/Down are left to the alignment group, which selects the next
|
|
903
|
+
* alignment.
|
|
904
|
+
*
|
|
905
|
+
* @param event the keyboard event.
|
|
906
|
+
* @private
|
|
907
|
+
*/
|
|
908
|
+
this.handleToolbarKeydown = {
|
|
909
|
+
handleEvent: (event) => {
|
|
910
|
+
const controls = this.toolbarControls().filter((control) => !control.hasAttribute("disabled"));
|
|
911
|
+
const current = controls.indexOf(event.target);
|
|
912
|
+
if (current === -1) {
|
|
913
|
+
return;
|
|
914
|
+
}
|
|
915
|
+
const control = controls[current];
|
|
916
|
+
if ((event.key === "Enter" || event.key === " ") &&
|
|
917
|
+
control.closest("#align-toolbar")) {
|
|
918
|
+
event.preventDefault();
|
|
919
|
+
event.stopPropagation();
|
|
920
|
+
control.click();
|
|
921
|
+
return;
|
|
922
|
+
}
|
|
923
|
+
let next;
|
|
924
|
+
switch (event.key) {
|
|
925
|
+
case "ArrowRight":
|
|
926
|
+
next = (current + 1) % controls.length;
|
|
927
|
+
break;
|
|
928
|
+
case "ArrowLeft":
|
|
929
|
+
next = (current - 1 + controls.length) % controls.length;
|
|
930
|
+
break;
|
|
931
|
+
case "Home":
|
|
932
|
+
next = 0;
|
|
933
|
+
break;
|
|
934
|
+
case "End":
|
|
935
|
+
next = controls.length - 1;
|
|
936
|
+
break;
|
|
937
|
+
default:
|
|
938
|
+
return;
|
|
939
|
+
}
|
|
940
|
+
event.preventDefault();
|
|
941
|
+
event.stopPropagation();
|
|
942
|
+
controls[next].focus();
|
|
943
|
+
},
|
|
944
|
+
capture: true,
|
|
945
|
+
};
|
|
911
946
|
}
|
|
912
947
|
/**
|
|
913
948
|
* The default value applied on connection and form reset. Overrides the
|
|
@@ -926,15 +961,11 @@ let EunomiaTextarea = class EunomiaTextarea extends EunomiaTextareaMixinBase {
|
|
|
926
961
|
// @ts-expect-error — see comment above ; FormMixin's real setter exists.
|
|
927
962
|
super.defaultValue = value;
|
|
928
963
|
}
|
|
929
|
-
connectedCallback() {
|
|
930
|
-
super.connectedCallback?.();
|
|
931
|
-
this.addEventListener("focus", this.handleHostFocus);
|
|
932
|
-
}
|
|
933
964
|
disconnectedCallback() {
|
|
934
|
-
this.removeEventListener("focus", this.handleHostFocus);
|
|
935
965
|
document.removeEventListener("click", this.handleOutsideClick, {
|
|
936
966
|
capture: true,
|
|
937
967
|
});
|
|
968
|
+
clearTimeout(this.toolbarRovingTimer);
|
|
938
969
|
super.disconnectedCallback?.();
|
|
939
970
|
}
|
|
940
971
|
/**
|
|
@@ -974,6 +1005,7 @@ let EunomiaTextarea = class EunomiaTextarea extends EunomiaTextareaMixinBase {
|
|
|
974
1005
|
}
|
|
975
1006
|
return;
|
|
976
1007
|
}
|
|
1008
|
+
this.scheduleToolbarRoving();
|
|
977
1009
|
const shouldSync = ((changedProperties.has("editing") && this.editing) ||
|
|
978
1010
|
(changedProperties.has("formatting") && this.formatting) ||
|
|
979
1011
|
(changedProperties.has("value") &&
|
|
@@ -996,17 +1028,25 @@ let EunomiaTextarea = class EunomiaTextarea extends EunomiaTextareaMixinBase {
|
|
|
996
1028
|
if (this.minlength !== undefined && length > 0 && length < this.minlength) {
|
|
997
1029
|
return {
|
|
998
1030
|
validity: { tooShort: true },
|
|
999
|
-
message:
|
|
1031
|
+
message: this.validationDictionary.validation.tooShort(this.minlength, length),
|
|
1000
1032
|
};
|
|
1001
1033
|
}
|
|
1002
1034
|
if (this.maxlength !== undefined && length > this.maxlength) {
|
|
1003
1035
|
return {
|
|
1004
1036
|
validity: { tooLong: true },
|
|
1005
|
-
message:
|
|
1037
|
+
message: this.validationDictionary.validation.tooLong(this.maxlength, length),
|
|
1006
1038
|
};
|
|
1007
1039
|
}
|
|
1008
1040
|
return { validity: {} };
|
|
1009
1041
|
}
|
|
1042
|
+
/**
|
|
1043
|
+
* The host is never a tab stop of its own : sequential navigation goes
|
|
1044
|
+
* straight to the controls inside, in both directions, and
|
|
1045
|
+
* {@link focus} covers a direct call on the host.
|
|
1046
|
+
*/
|
|
1047
|
+
get hostTabStop() {
|
|
1048
|
+
return false;
|
|
1049
|
+
}
|
|
1010
1050
|
/**
|
|
1011
1051
|
* Returns the field element to focus/anchor on validation errors.
|
|
1012
1052
|
*
|
|
@@ -1204,7 +1244,7 @@ let EunomiaTextarea = class EunomiaTextarea extends EunomiaTextareaMixinBase {
|
|
|
1204
1244
|
return;
|
|
1205
1245
|
}
|
|
1206
1246
|
this.handleEditableInput();
|
|
1207
|
-
this.updateComplete.then(() => {
|
|
1247
|
+
void this.updateComplete.then(() => {
|
|
1208
1248
|
root.focus();
|
|
1209
1249
|
this.syncToolbarToSelection();
|
|
1210
1250
|
});
|
|
@@ -1260,7 +1300,7 @@ let EunomiaTextarea = class EunomiaTextarea extends EunomiaTextareaMixinBase {
|
|
|
1260
1300
|
const [align] = event.target.value;
|
|
1261
1301
|
root.style.textAlign = align === "start" ? "" : align;
|
|
1262
1302
|
this.handleEditableInput();
|
|
1263
|
-
this.updateComplete.then(() => root.focus());
|
|
1303
|
+
void this.updateComplete.then(() => root.focus());
|
|
1264
1304
|
}
|
|
1265
1305
|
/**
|
|
1266
1306
|
* Opens or closes a color picker popover, wiring up (or tearing down) the
|
|
@@ -1278,6 +1318,63 @@ let EunomiaTextarea = class EunomiaTextarea extends EunomiaTextareaMixinBase {
|
|
|
1278
1318
|
document.addEventListener("click", this.handleOutsideClick, {
|
|
1279
1319
|
capture: true,
|
|
1280
1320
|
});
|
|
1321
|
+
void this.updateComplete.then(() => {
|
|
1322
|
+
const swatches = this.colorSwatches();
|
|
1323
|
+
(swatches.find((swatch) => swatch.ariaChecked === "true") ?? swatches[0])?.focus();
|
|
1324
|
+
});
|
|
1325
|
+
}
|
|
1326
|
+
/**
|
|
1327
|
+
* The swatches of the open color picker, in display order.
|
|
1328
|
+
*
|
|
1329
|
+
* @returns the swatch buttons, empty while no picker is open.
|
|
1330
|
+
* @private
|
|
1331
|
+
*/
|
|
1332
|
+
colorSwatches() {
|
|
1333
|
+
return Array.from(this.shadowRoot?.querySelectorAll(".color-picker-panel .color-swatch") ?? []);
|
|
1334
|
+
}
|
|
1335
|
+
/**
|
|
1336
|
+
* Keyboard support of the open color picker, following the menu pattern
|
|
1337
|
+
* : arrows move between swatches (wrapping), Home/End jump to the first
|
|
1338
|
+
* and last, Escape closes it, and Tab closes it before leaving it. Both
|
|
1339
|
+
* return the focus to the picker's trigger.
|
|
1340
|
+
*
|
|
1341
|
+
* @param event the keyboard event.
|
|
1342
|
+
* @private
|
|
1343
|
+
*/
|
|
1344
|
+
handleColorPickerKeydown(event) {
|
|
1345
|
+
const panel = event.currentTarget;
|
|
1346
|
+
const trigger = panel.previousElementSibling;
|
|
1347
|
+
if (event.key === "Escape" || event.key === "Tab") {
|
|
1348
|
+
if (event.key === "Escape") {
|
|
1349
|
+
event.preventDefault();
|
|
1350
|
+
}
|
|
1351
|
+
this.closeColorPicker();
|
|
1352
|
+
trigger?.focus();
|
|
1353
|
+
return;
|
|
1354
|
+
}
|
|
1355
|
+
const swatches = this.colorSwatches();
|
|
1356
|
+
const current = swatches.indexOf(this.shadowRoot?.activeElement);
|
|
1357
|
+
let next;
|
|
1358
|
+
switch (event.key) {
|
|
1359
|
+
case "ArrowRight":
|
|
1360
|
+
case "ArrowDown":
|
|
1361
|
+
next = (current + 1) % swatches.length;
|
|
1362
|
+
break;
|
|
1363
|
+
case "ArrowLeft":
|
|
1364
|
+
case "ArrowUp":
|
|
1365
|
+
next = (current - 1 + swatches.length) % swatches.length;
|
|
1366
|
+
break;
|
|
1367
|
+
case "Home":
|
|
1368
|
+
next = 0;
|
|
1369
|
+
break;
|
|
1370
|
+
case "End":
|
|
1371
|
+
next = swatches.length - 1;
|
|
1372
|
+
break;
|
|
1373
|
+
default:
|
|
1374
|
+
return;
|
|
1375
|
+
}
|
|
1376
|
+
event.preventDefault();
|
|
1377
|
+
swatches[next]?.focus();
|
|
1281
1378
|
}
|
|
1282
1379
|
/**
|
|
1283
1380
|
* Closes whichever color picker is open, if any.
|
|
@@ -1321,7 +1418,57 @@ let EunomiaTextarea = class EunomiaTextarea extends EunomiaTextareaMixinBase {
|
|
|
1321
1418
|
}
|
|
1322
1419
|
}
|
|
1323
1420
|
this.closeColorPicker();
|
|
1324
|
-
this.updateComplete.then(() => this.fieldEl?.focus());
|
|
1421
|
+
void this.updateComplete.then(() => this.fieldEl?.focus());
|
|
1422
|
+
}
|
|
1423
|
+
/**
|
|
1424
|
+
* The toolbar's controls, in visual order : every format and alignment
|
|
1425
|
+
* toggle, then both color picker triggers.
|
|
1426
|
+
*
|
|
1427
|
+
* @returns the controls, empty while the toolbar isn't rendered.
|
|
1428
|
+
* @private
|
|
1429
|
+
*/
|
|
1430
|
+
toolbarControls() {
|
|
1431
|
+
return Array.from(this.shadowRoot?.querySelectorAll("#toolbar-groups eun-toggle-item, #toolbar-groups .color-picker-trigger") ?? []);
|
|
1432
|
+
}
|
|
1433
|
+
/**
|
|
1434
|
+
* Applies the toolbar's roving `tabindex` once the toggle groups have
|
|
1435
|
+
* applied their own (which they do after their items' updates), so the
|
|
1436
|
+
* whole toolbar stays a single Tab stop.
|
|
1437
|
+
* @private
|
|
1438
|
+
*/
|
|
1439
|
+
scheduleToolbarRoving() {
|
|
1440
|
+
clearTimeout(this.toolbarRovingTimer);
|
|
1441
|
+
this.toolbarRovingTimer = setTimeout(() => this.applyToolbarRoving());
|
|
1442
|
+
}
|
|
1443
|
+
/**
|
|
1444
|
+
* Makes the control at {@link toolbarFocusIndex} the toolbar's only Tab
|
|
1445
|
+
* stop. Left alone while the toolbar is disabled, every control then
|
|
1446
|
+
* being out of the Tab order already.
|
|
1447
|
+
* @private
|
|
1448
|
+
*/
|
|
1449
|
+
applyToolbarRoving() {
|
|
1450
|
+
if (this.disabled || this.readonly) {
|
|
1451
|
+
return;
|
|
1452
|
+
}
|
|
1453
|
+
const controls = this.toolbarControls();
|
|
1454
|
+
const active = Math.min(this.toolbarFocusIndex, controls.length - 1);
|
|
1455
|
+
controls.forEach((control, index) => {
|
|
1456
|
+
control.setAttribute("tabindex", index === active ? "0" : "-1");
|
|
1457
|
+
});
|
|
1458
|
+
}
|
|
1459
|
+
/**
|
|
1460
|
+
* Remembers the toolbar control receiving the focus, so Tab comes back
|
|
1461
|
+
* to it.
|
|
1462
|
+
*
|
|
1463
|
+
* @param event the focus event.
|
|
1464
|
+
* @private
|
|
1465
|
+
*/
|
|
1466
|
+
handleToolbarFocusIn(event) {
|
|
1467
|
+
const index = this.toolbarControls().indexOf(event.target);
|
|
1468
|
+
if (index !== -1 && index !== this.toolbarFocusIndex) {
|
|
1469
|
+
this.toolbarFocusIndex = index;
|
|
1470
|
+
this.applyToolbarRoving();
|
|
1471
|
+
}
|
|
1325
1472
|
}
|
|
1326
1473
|
/**
|
|
1327
1474
|
* Renders the formatting toolbar, shown above the field itself (never
|
|
@@ -1336,11 +1483,14 @@ let EunomiaTextarea = class EunomiaTextarea extends EunomiaTextareaMixinBase {
|
|
|
1336
1483
|
return html `
|
|
1337
1484
|
<div
|
|
1338
1485
|
id="toolbar-groups"
|
|
1486
|
+
role="toolbar"
|
|
1487
|
+
aria-label=${this.formatToolbarLabel}
|
|
1339
1488
|
@mousedown=${(event) => event.preventDefault()}
|
|
1489
|
+
@focusin=${this.handleToolbarFocusIn}
|
|
1490
|
+
@keydown=${this.handleToolbarKeydown}
|
|
1340
1491
|
>
|
|
1341
1492
|
<eun-toggle-group
|
|
1342
1493
|
id="toolbar"
|
|
1343
|
-
aria-label=${this.formatToolbarLabel}
|
|
1344
1494
|
?disabled=${toolbarDisabled}
|
|
1345
1495
|
@eunchange=${this.handleToolbarChange}
|
|
1346
1496
|
>
|
|
@@ -1416,7 +1566,7 @@ let EunomiaTextarea = class EunomiaTextarea extends EunomiaTextareaMixinBase {
|
|
|
1416
1566
|
<button
|
|
1417
1567
|
type="button"
|
|
1418
1568
|
class="color-picker-trigger"
|
|
1419
|
-
aria-haspopup="
|
|
1569
|
+
aria-haspopup="menu"
|
|
1420
1570
|
aria-expanded=${isOpen ? "true" : "false"}
|
|
1421
1571
|
aria-label=${label}
|
|
1422
1572
|
?disabled=${toolbarDisabled}
|
|
@@ -1433,12 +1583,13 @@ let EunomiaTextarea = class EunomiaTextarea extends EunomiaTextareaMixinBase {
|
|
|
1433
1583
|
class="color-picker-panel"
|
|
1434
1584
|
role="menu"
|
|
1435
1585
|
aria-label=${label}
|
|
1436
|
-
@keydown=${
|
|
1586
|
+
@keydown=${this.handleColorPickerKeydown}
|
|
1437
1587
|
>
|
|
1438
1588
|
<button
|
|
1439
1589
|
type="button"
|
|
1440
1590
|
class="color-swatch clear"
|
|
1441
1591
|
role="menuitemradio"
|
|
1592
|
+
tabindex="-1"
|
|
1442
1593
|
aria-checked=${activeName === null ? "true" : "false"}
|
|
1443
1594
|
aria-label=${this.formatColorClearLabel}
|
|
1444
1595
|
@click=${() => this.selectColor(kind, null)}
|
|
@@ -1448,6 +1599,7 @@ let EunomiaTextarea = class EunomiaTextarea extends EunomiaTextareaMixinBase {
|
|
|
1448
1599
|
type="button"
|
|
1449
1600
|
class="color-swatch"
|
|
1450
1601
|
role="menuitemradio"
|
|
1602
|
+
tabindex="-1"
|
|
1451
1603
|
aria-checked=${activeName === color.name
|
|
1452
1604
|
? "true"
|
|
1453
1605
|
: "false"}
|
|
@@ -1514,7 +1666,10 @@ let EunomiaTextarea = class EunomiaTextarea extends EunomiaTextareaMixinBase {
|
|
|
1514
1666
|
? formatRichText(this.value)
|
|
1515
1667
|
: html `<span
|
|
1516
1668
|
class=${classMap({ "plain-value": true, empty: !hasValue })}
|
|
1517
|
-
>${hasValue
|
|
1669
|
+
>${hasValue
|
|
1670
|
+
? this.value
|
|
1671
|
+
: (this.emptyValueLabel ??
|
|
1672
|
+
this.dictionary.common.noValue)}</span
|
|
1518
1673
|
>`}
|
|
1519
1674
|
</div>
|
|
1520
1675
|
`;
|
|
@@ -1539,7 +1694,7 @@ let EunomiaTextarea = class EunomiaTextarea extends EunomiaTextareaMixinBase {
|
|
|
1539
1694
|
?required=${this.required}
|
|
1540
1695
|
minlength=${ifDefined(this.minlength)}
|
|
1541
1696
|
maxlength=${ifDefined(this.maxlength)}
|
|
1542
|
-
aria-invalid=${
|
|
1697
|
+
aria-invalid=${this.showError}
|
|
1543
1698
|
aria-label=${ifDefined(this.label)}
|
|
1544
1699
|
aria-describedby=${describedBy || nothing}
|
|
1545
1700
|
@input=${this.handleInput}
|
|
@@ -1570,7 +1725,7 @@ let EunomiaTextarea = class EunomiaTextarea extends EunomiaTextareaMixinBase {
|
|
|
1570
1725
|
role="textbox"
|
|
1571
1726
|
aria-multiline="true"
|
|
1572
1727
|
aria-required=${this.required ? "true" : nothing}
|
|
1573
|
-
aria-invalid=${
|
|
1728
|
+
aria-invalid=${this.showError}
|
|
1574
1729
|
aria-label=${ifDefined(this.label)}
|
|
1575
1730
|
aria-describedby=${describedBy || nothing}
|
|
1576
1731
|
@beforeinput=${this.handleEditableBeforeInput}
|
|
@@ -1620,7 +1775,7 @@ let EunomiaTextarea = class EunomiaTextarea extends EunomiaTextareaMixinBase {
|
|
|
1620
1775
|
rounded
|
|
1621
1776
|
type="button"
|
|
1622
1777
|
@click=${this.confirmEdit}
|
|
1623
|
-
>${this.confirmLabel}</eun-button
|
|
1778
|
+
>${this.confirmLabel ?? this.dictionary.common.save}</eun-button
|
|
1624
1779
|
>
|
|
1625
1780
|
<eun-button
|
|
1626
1781
|
class="cancel"
|
|
@@ -1630,7 +1785,7 @@ let EunomiaTextarea = class EunomiaTextarea extends EunomiaTextareaMixinBase {
|
|
|
1630
1785
|
rounded
|
|
1631
1786
|
type="button"
|
|
1632
1787
|
@click=${this.cancelEdit}
|
|
1633
|
-
>${this.cancelLabel}</eun-button
|
|
1788
|
+
>${this.cancelLabel ?? this.dictionary.common.cancel}</eun-button
|
|
1634
1789
|
>
|
|
1635
1790
|
</div>
|
|
1636
1791
|
`)}
|