@lmvz-ds/components 0.35.2 → 0.36.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +18 -0
- package/assets/icons/calendar.svg +7 -0
- package/cjs/{aria-validation-controller-BC0Eaiv4.js → aria-validation-controller-Do0uEK4t.js} +1 -1
- package/cjs/aria.constants-DPK5mQEL.js +65 -0
- package/cjs/{directional-focus-controller-DBat-oF7.js → directional-focus-controller-8Xd_7MHT.js} +3 -1
- package/cjs/{element-activation-controller-BHqCUgQv.js → element-activation-controller-DzTUocEO.js} +1 -1
- package/cjs/{element.util-CRS_YJ59.js → element.util-BlhcwmfR.js} +8 -54
- package/cjs/{index-TGsVZNDP.js → index-BgvZ4y-3.js} +12 -0
- package/cjs/lmvz-action-list.cjs.entry.js +5 -4
- package/cjs/lmvz-action.cjs.entry.js +1 -1
- package/cjs/lmvz-button-group.cjs.entry.js +3 -2
- package/cjs/lmvz-button_2.cjs.entry.js +6 -5
- package/cjs/lmvz-card.cjs.entry.js +1 -1
- package/cjs/lmvz-checkbox.cjs.entry.js +40 -6
- package/cjs/lmvz-chip.cjs.entry.js +2 -2
- package/cjs/lmvz-components.cjs.js +2 -2
- package/cjs/lmvz-datepicker.cjs.entry.js +2771 -0
- package/cjs/lmvz-header_2.cjs.entry.js +7 -6
- package/cjs/lmvz-input.cjs.entry.js +71 -15
- package/cjs/lmvz-link.cjs.entry.js +2 -2
- package/cjs/lmvz-menuitem.cjs.entry.js +6 -5
- package/cjs/lmvz-message.cjs.entry.js +2 -2
- package/cjs/lmvz-modal.cjs.entry.js +5 -4
- package/cjs/lmvz-popover.cjs.entry.js +25 -10
- package/cjs/lmvz-radio.cjs.entry.js +63 -5
- package/cjs/lmvz-select.cjs.entry.js +425 -18
- package/cjs/lmvz-snackbar.cjs.entry.js +2 -2
- package/cjs/lmvz-spinner.cjs.entry.js +2 -2
- package/cjs/lmvz-tab.cjs.entry.js +2 -2
- package/cjs/lmvz-tabs.cjs.entry.js +5 -4
- package/cjs/lmvz-toggle.cjs.entry.js +7 -4
- package/cjs/loader.cjs.js +2 -2
- package/collection/assets/icons/calendar.svg +7 -0
- package/collection/collection-manifest.json +1 -0
- package/collection/components/lmvz-checkbox/lmvz-checkbox.css +4 -2
- package/collection/components/lmvz-checkbox/lmvz-checkbox.js +68 -8
- package/collection/components/lmvz-datepicker/lmvz-datepicker.css +161 -0
- package/collection/components/lmvz-datepicker/lmvz-datepicker.js +1002 -0
- package/collection/components/lmvz-datepicker/lmvz-datepicker.utils.js +189 -0
- package/collection/components/lmvz-datepicker/test/lmvz-datepicker.utils.unit.js +300 -0
- package/collection/components/lmvz-header/lmvz-header.js +1 -1
- package/collection/components/lmvz-icon/lmvz-icon.js +1 -1
- package/collection/components/lmvz-input/lmvz-input.css +1 -1
- package/collection/components/lmvz-input/lmvz-input.js +85 -12
- package/collection/components/lmvz-link/lmvz-link.js +1 -1
- package/collection/components/lmvz-menuitem/lmvz-menuitem.js +1 -1
- package/collection/components/lmvz-message/lmvz-message.js +1 -1
- package/collection/components/lmvz-modal/lmvz-modal.js +1 -1
- package/collection/components/lmvz-popover/lmvz-popover.css +1 -1
- package/collection/components/lmvz-popover/lmvz-popover.js +50 -6
- package/collection/components/lmvz-radio/lmvz-radio.js +77 -9
- package/collection/components/lmvz-select/lmvz-select.css +96 -34
- package/collection/components/lmvz-select/lmvz-select.js +412 -21
- package/collection/components/lmvz-snackbar/lmvz-snackbar.js +1 -1
- package/collection/components/lmvz-spinner/lmvz-spinner.js +1 -1
- package/collection/components/lmvz-tab/lmvz-tab.js +1 -1
- package/collection/components/lmvz-tabs/lmvz-tabs.js +1 -1
- package/collection/components/lmvz-toggle/lmvz-toggle.js +21 -1
- package/collection/integration/header-integration/header-integration.js +1 -1
- package/collection/styles/fragments/_focus-within.css +2 -2
- package/collection/utils/aria/aria.constants.js +7 -0
- package/collection/utils/aria/directional-focus-controller.js +3 -1
- package/collection/utils/aria/listbox-controller.js +154 -0
- package/collection/utils/element/element.util.js +5 -0
- package/collection/utils/radio/radio-group-controller.js +17 -0
- package/components/index.d.ts +2 -0
- package/components/index.d.ts.bak +2 -0
- package/components/index.js +1 -1
- package/components/lmvz-action-list.js +1 -1
- package/components/lmvz-action.js +1 -1
- package/components/lmvz-button-group.js +1 -1
- package/components/lmvz-button.js +1 -1
- package/components/lmvz-card.js +1 -1
- package/components/lmvz-checkbox.js +1 -1
- package/components/lmvz-chip.js +1 -1
- package/components/lmvz-datepicker.d.ts +11 -0
- package/components/lmvz-datepicker.d.ts.bak +11 -0
- package/components/lmvz-datepicker.js +1 -0
- package/components/lmvz-header.js +1 -1
- package/components/lmvz-icon.js +1 -1
- package/components/lmvz-input.js +1 -1
- package/components/lmvz-link.js +1 -1
- package/components/lmvz-menuitem.js +1 -1
- package/components/lmvz-message.js +1 -1
- package/components/lmvz-modal.js +1 -1
- package/components/lmvz-popover.js +1 -1
- package/components/lmvz-radio.js +1 -1
- package/components/lmvz-select.js +1 -1
- package/components/lmvz-snackbar.js +1 -1
- package/components/lmvz-spinner.js +1 -1
- package/components/lmvz-tab.js +1 -1
- package/components/lmvz-tabs.js +1 -1
- package/components/lmvz-toggle.js +1 -1
- package/components/{p-Chj7BuUZ.js → p--FDdvoIg.js} +1 -1
- package/components/{p-CFTmV4XZ.js → p-BAj4FkUt.js} +1 -1
- package/components/p-BApwCp0R.js +1 -0
- package/components/{p-CxLd309t.js → p-BLMXiDE0.js} +1 -1
- package/components/{p-DGg7OzDl.js → p-BPYBmylI.js} +1 -1
- package/components/p-BhALzK62.js +1 -0
- package/components/{p-B_rnXUwq.js → p-Bnri3fEI.js} +1 -1
- package/components/p-C-pRMuMh.js +1 -0
- package/components/p-C5gRiLRR.js +1 -0
- package/components/{p-D5FL8n1q.js → p-CrQCHVKL.js} +1 -1
- package/components/p-DqdrUt_G.js +1 -0
- package/components/{p-CgK6-SEe.js → p-diOze8wI.js} +1 -1
- package/esm/{aria-validation-controller-BvOU1BO8.js → aria-validation-controller-Cp6pofER.js} +1 -1
- package/esm/aria.constants-DIyiticz.js +62 -0
- package/esm/{directional-focus-controller-DgAdCZrG.js → directional-focus-controller-QukTTWBE.js} +3 -1
- package/esm/{element-activation-controller-7PNSl6io.js → element-activation-controller-dxJZKMag.js} +1 -1
- package/esm/{element.util-BFcYfHYq.js → element.util-3ydVsxUW.js} +7 -54
- package/esm/{index-BPeerEwm.js → index-BOXP1Vx0.js} +12 -1
- package/esm/lmvz-action-list.entry.js +5 -4
- package/esm/lmvz-action.entry.js +1 -1
- package/esm/lmvz-button-group.entry.js +3 -2
- package/esm/lmvz-button_2.entry.js +6 -5
- package/esm/lmvz-card.entry.js +1 -1
- package/esm/lmvz-checkbox.entry.js +40 -6
- package/esm/lmvz-chip.entry.js +2 -2
- package/esm/lmvz-components.js +3 -3
- package/esm/lmvz-datepicker.entry.js +2769 -0
- package/esm/lmvz-header_2.entry.js +7 -6
- package/esm/lmvz-input.entry.js +71 -15
- package/esm/lmvz-link.entry.js +2 -2
- package/esm/lmvz-menuitem.entry.js +6 -5
- package/esm/lmvz-message.entry.js +2 -2
- package/esm/lmvz-modal.entry.js +5 -4
- package/esm/lmvz-popover.entry.js +25 -10
- package/esm/lmvz-radio.entry.js +63 -5
- package/esm/lmvz-select.entry.js +425 -18
- package/esm/lmvz-snackbar.entry.js +2 -2
- package/esm/lmvz-spinner.entry.js +2 -2
- package/esm/lmvz-tab.entry.js +2 -2
- package/esm/lmvz-tabs.entry.js +5 -4
- package/esm/lmvz-toggle.entry.js +7 -4
- package/esm/loader.js +3 -3
- package/hydrate/index.js +3474 -75
- package/hydrate/index.mjs +3474 -75
- package/lmvz-components/lmvz-components.esm.js +1 -1
- package/lmvz-components/{p-eb62d4af.entry.js → p-0af0211a.entry.js} +1 -1
- package/lmvz-components/{p-5bbbcfc0.entry.js → p-0f65d001.entry.js} +1 -1
- package/lmvz-components/p-137b1fe1.entry.js +1 -0
- package/lmvz-components/p-26dd9684.entry.js +1 -0
- package/lmvz-components/p-36f44108.entry.js +1 -0
- package/lmvz-components/p-398b5cf4.entry.js +1 -0
- package/lmvz-components/p-3a396fc8.entry.js +1 -0
- package/lmvz-components/{p-0c05f24b.entry.js → p-3d5867df.entry.js} +1 -1
- package/lmvz-components/p-40716828.entry.js +1 -0
- package/lmvz-components/{p-a887018d.entry.js → p-492adf21.entry.js} +1 -1
- package/lmvz-components/{p-24d13be6.entry.js → p-4fa6e72f.entry.js} +1 -1
- package/lmvz-components/p-70f1e31a.entry.js +1 -0
- package/lmvz-components/p-71d06d1d.entry.js +1 -0
- package/lmvz-components/{p-d45164a8.entry.js → p-7a7aa922.entry.js} +1 -1
- package/lmvz-components/p-88661c50.entry.js +1 -0
- package/lmvz-components/p-91eb71bb.entry.js +1 -0
- package/lmvz-components/p-BA3wizqg.js +1 -0
- package/lmvz-components/{p-BPeerEwm.js → p-BOXP1Vx0.js} +2 -2
- package/lmvz-components/{p-D9PQIBzA.js → p-BeY96W7m.js} +1 -1
- package/lmvz-components/p-CHxiS3ja.js +1 -0
- package/lmvz-components/{p-wlMjNjuv.js → p-CPSyM_e-.js} +1 -1
- package/lmvz-components/p-DIyiticz.js +1 -0
- package/lmvz-components/p-a680a7b2.entry.js +1 -0
- package/lmvz-components/{p-c2544495.entry.js → p-a6fe9b61.entry.js} +1 -1
- package/lmvz-components/{p-ecbd9e93.entry.js → p-a99acb02.entry.js} +1 -1
- package/lmvz-components/p-f16a19fc.entry.js +1 -0
- package/lmvz-components/p-f3f0ed49.entry.js +1 -0
- package/lmvz-components/p-f516a949.entry.js +1 -0
- package/manifest.json +1305 -188
- package/package.json +5 -1
- package/types/api/ds.constants.d.ts +0 -1
- package/types/api/ds.types.d.ts +9 -0
- package/types/components/lmvz-action/lmvz-action.d.ts +0 -1
- package/types/components/lmvz-action-list/lmvz-action-list.d.ts +0 -1
- package/types/components/lmvz-button/lmvz-button.d.ts +0 -1
- package/types/components/lmvz-button-group/lmvz-button-group.d.ts +0 -1
- package/types/components/lmvz-card/lmvz-card.d.ts +0 -1
- package/types/components/lmvz-checkbox/lmvz-checkbox.d.ts +9 -2
- package/types/components/lmvz-chip/lmvz-chip.d.ts +0 -1
- package/types/components/lmvz-datepicker/lmvz-datepicker.d.ts +77 -0
- package/types/components/lmvz-datepicker/lmvz-datepicker.utils.d.ts +22 -0
- package/types/components/lmvz-datepicker/test/lmvz-datepicker.utils.unit.d.ts +1 -0
- package/types/components/lmvz-header/lmvz-header.d.ts +0 -1
- package/types/components/lmvz-icon/lmvz-icon.d.ts +0 -1
- package/types/components/lmvz-input/lmvz-input.d.ts +8 -1
- package/types/components/lmvz-link/lmvz-link.d.ts +0 -1
- package/types/components/lmvz-menuitem/lmvz-menuitem.d.ts +0 -1
- package/types/components/lmvz-message/lmvz-message.d.ts +0 -1
- package/types/components/lmvz-message/public.d.ts +0 -1
- package/types/components/lmvz-modal/lmvz-modal.d.ts +0 -1
- package/types/components/lmvz-modal/test/testing.d.ts +0 -1
- package/types/components/lmvz-popover/lmvz-popover.d.ts +2 -1
- package/types/components/lmvz-radio/lmvz-radio.d.ts +12 -3
- package/types/components/lmvz-select/lmvz-select.d.ts +53 -5
- package/types/components/lmvz-snackbar/lmvz-snackbar.d.ts +0 -1
- package/types/components/lmvz-snackbar/public.d.ts +0 -1
- package/types/components/lmvz-snackbar/snackbar-controller.d.ts +0 -1
- package/types/components/lmvz-spinner/lmvz-spinner.d.ts +0 -1
- package/types/components/lmvz-tab/lmvz-tab.d.ts +0 -1
- package/types/components/lmvz-tabs/lmvz-tabs.d.ts +0 -1
- package/types/components/lmvz-toggle/lmvz-toggle.d.ts +1 -1
- package/types/components.d.ts +312 -12
- package/types/index.d.ts +0 -1
- package/types/utils/aria/aria-validation-controller.d.ts +0 -1
- package/types/utils/aria/aria.constants.d.ts +1 -1
- package/types/utils/aria/directional-focus-controller.d.ts +0 -1
- package/types/utils/aria/element-activation-controller.d.ts +0 -1
- package/types/utils/aria/listbox-controller.d.ts +42 -0
- package/types/utils/async/async.util.d.ts +1 -2
- package/types/utils/data/event.util.d.ts +0 -1
- package/types/utils/data/number.util.d.ts +0 -1
- package/types/utils/data/object.util.d.ts +0 -1
- package/types/utils/data/time.util.d.ts +0 -1
- package/types/utils/element/element.util.d.ts +1 -1
- package/types/utils/environment.d.ts +0 -1
- package/types/utils/icons/icons-registry.d.ts +0 -1
- package/types/utils/icons/icons.d.ts +0 -1
- package/types/utils/icons/icons.unit.d.ts +0 -1
- package/types/utils/icons/public.d.ts +0 -1
- package/types/utils/public.d.ts +0 -1
- package/types/utils/radio/radio-group-controller.d.ts +3 -1
- package/types/utils/stencil/assets.d.ts +0 -1
- package/types/utils/stencil/reactive-controller-host.d.ts +0 -1
- package/types/utils/stencil/stencil.util.d.ts +0 -1
- package/components/p-DLUsBYJH.js +0 -1
- package/components/p-zMWemcoB.js +0 -1
- package/lmvz-components/p-194a3af5.entry.js +0 -1
- package/lmvz-components/p-46edf36f.entry.js +0 -1
- package/lmvz-components/p-5ff55ba9.entry.js +0 -1
- package/lmvz-components/p-888e04d7.entry.js +0 -1
- package/lmvz-components/p-9dc420e2.entry.js +0 -1
- package/lmvz-components/p-BFcYfHYq.js +0 -1
- package/lmvz-components/p-BuEA0MWd.js +0 -1
- package/lmvz-components/p-aaa7691c.entry.js +0 -1
- package/lmvz-components/p-b6dd045b.entry.js +0 -1
- package/lmvz-components/p-c3e62aba.entry.js +0 -1
- package/lmvz-components/p-d4154a65.entry.js +0 -1
- package/lmvz-components/p-e4ce63b3.entry.js +0 -1
- package/lmvz-components/p-eb4c5a6f.entry.js +0 -1
- package/lmvz-components/p-f42b16e6.entry.js +0 -1
- package/lmvz-components/p-fbf066d9.entry.js +0 -1
|
@@ -43,12 +43,9 @@
|
|
|
43
43
|
/* Extra top space to accommodate the floating label */
|
|
44
44
|
|
|
45
45
|
--lmvz-internal-select-floating-label-top-offset: 0.375rem;
|
|
46
|
-
|
|
47
|
-
padding-top: var(--lmvz-internal-select-floating-label-top-offset);
|
|
48
|
-
|
|
49
46
|
--lmvz-select-radius: var(--lmvz-component-input-radius-default, 999px);
|
|
50
47
|
--lmvz-select-bg: var(--lmvz-semantic-color-surface-input-primary, #ffffff);
|
|
51
|
-
--lmvz-select-border-color: var(--lmvz-semantic-color-border-
|
|
48
|
+
--lmvz-select-border-color: var(--lmvz-semantic-color-border-alternate, #c7c7c7);
|
|
52
49
|
--lmvz-select-border-color-hover: var(--lmvz-semantic-color-border-hover, #a1a1a1);
|
|
53
50
|
--lmvz-select-border-width: var(--lmvz-semantic-border-width-default, 1px);
|
|
54
51
|
--lmvz-select-text-color: var(--lmvz-semantic-color-on-surface-input-primary, #000000);
|
|
@@ -63,6 +60,8 @@
|
|
|
63
60
|
--lmvz-select-helper-color: var(--lmvz-semantic-color-on-surface-input-secondary, #545454);
|
|
64
61
|
--lmvz-select-focus-color: var(--lmvz-semantic-color-status-on-active, #0e7ab4);
|
|
65
62
|
--lmvz-select-error-color: var(--lmvz-semantic-color-status-on-danger, #a31419);
|
|
63
|
+
|
|
64
|
+
padding-top: var(--lmvz-internal-select-floating-label-top-offset);
|
|
66
65
|
}
|
|
67
66
|
.select-wrapper {
|
|
68
67
|
position: relative;
|
|
@@ -101,19 +100,20 @@ label.floating-label {
|
|
|
101
100
|
font-weight: 500;
|
|
102
101
|
}
|
|
103
102
|
label > span[aria-hidden='true'],
|
|
104
|
-
|
|
103
|
+
.select-trigger > span:first-child > span[aria-hidden='true'] {
|
|
105
104
|
color: var(--lmvz-select-error-color);
|
|
106
105
|
margin-left: 2px;
|
|
107
106
|
display: inline-block;
|
|
108
107
|
line-height: 0;
|
|
109
108
|
vertical-align: middle;
|
|
110
109
|
}
|
|
111
|
-
/*
|
|
112
|
-
|
|
110
|
+
/* Combobox trigger — the accessible, interactive control (role="combobox") */
|
|
111
|
+
.select-trigger {
|
|
113
112
|
display: flex;
|
|
114
113
|
align-items: center;
|
|
115
114
|
gap: var(--lmvz-select-gap);
|
|
116
115
|
height: 100%;
|
|
116
|
+
width: 100%;
|
|
117
117
|
padding: 0 var(--lmvz-select-padding-x);
|
|
118
118
|
border-radius: var(--lmvz-select-radius);
|
|
119
119
|
background-color: var(--lmvz-select-bg);
|
|
@@ -124,26 +124,29 @@ div[aria-hidden] {
|
|
|
124
124
|
z-index: 1;
|
|
125
125
|
transition: border-color 0.15s ease;
|
|
126
126
|
}
|
|
127
|
-
:host(:not([disabled], [highlighted])) .select-wrapper:hover
|
|
127
|
+
:host(:not([disabled], [highlighted], [error])) .select-wrapper:hover .select-trigger {
|
|
128
128
|
border-color: var(--lmvz-select-border-color-hover);
|
|
129
129
|
}
|
|
130
|
-
:host([
|
|
130
|
+
:host([error]) .select-trigger {
|
|
131
|
+
border-color: var(--lmvz-select-error-color);
|
|
132
|
+
}
|
|
133
|
+
:host([highlighted]) .select-trigger {
|
|
131
134
|
background-color: var(--lmvz-semantic-color-status-active-alternate, #0f8acc);
|
|
132
135
|
border-color: var(--lmvz-semantic-color-border-active, #0f8acc);
|
|
133
136
|
color: var(--lmvz-semantic-color-status-on-active-alternate, #ffffff);
|
|
134
137
|
}
|
|
135
|
-
:host([highlighted])
|
|
138
|
+
:host([highlighted]) .select-trigger > span:first-child {
|
|
136
139
|
color: var(--lmvz-semantic-color-status-on-active-alternate, #ffffff);
|
|
137
140
|
}
|
|
138
141
|
:host([highlighted]) label.floating-label {
|
|
139
142
|
background-color: var(--lmvz-semantic-color-status-active-alternate, #0f8acc);
|
|
140
143
|
color: var(--lmvz-semantic-color-status-on-active-alternate, #ffffff);
|
|
141
144
|
}
|
|
142
|
-
|
|
145
|
+
:host:has(:focus-visible) .select-trigger {
|
|
143
146
|
outline: var(--lmvz-ds-outline, 1px solid #0e7ab4);
|
|
144
147
|
outline-offset: var(--lmvz-ds-outline-offset, clamp(0.25rem, 0.19rem + 0.26vw, 0.5rem));
|
|
145
148
|
}
|
|
146
|
-
|
|
149
|
+
.select-trigger > span:first-child {
|
|
147
150
|
flex: 1 0 0;
|
|
148
151
|
font: var(--lmvz-typography-body-md-strong, 500 clamp(0.88rem, 0.84rem + 0.13vw, 1rem) / 1.5
|
|
149
152
|
Router);
|
|
@@ -151,36 +154,26 @@ div[aria-hidden] > span:first-child {
|
|
|
151
154
|
overflow: hidden;
|
|
152
155
|
text-overflow: ellipsis;
|
|
153
156
|
white-space: nowrap;
|
|
157
|
+
text-align: left;
|
|
154
158
|
}
|
|
155
159
|
/* Active-selected text color: when a value is selected (not applicable in highlighted state) */
|
|
156
|
-
:host(:not([highlighted])) .select-wrapper.has-value
|
|
160
|
+
:host(:not([highlighted])) .select-wrapper.has-value .select-trigger > span:first-child {
|
|
157
161
|
color: var(--lmvz-semantic-color-int-on-secondary-active, #000000);
|
|
158
162
|
}
|
|
159
|
-
|
|
163
|
+
.select-trigger > span:last-child {
|
|
160
164
|
flex-shrink: 0;
|
|
161
165
|
display: flex;
|
|
162
166
|
align-items: center;
|
|
163
167
|
justify-content: center;
|
|
164
168
|
}
|
|
165
|
-
|
|
169
|
+
.select-trigger svg {
|
|
166
170
|
width: var(--lmvz-component-icon-size-2xs, clamp(0.63rem, 0.59rem + 0.13vw, 0.75rem));
|
|
167
171
|
height: var(--lmvz-component-icon-size-2xs, clamp(0.63rem, 0.59rem + 0.13vw, 0.75rem));
|
|
168
172
|
flex-shrink: 0;
|
|
169
173
|
}
|
|
170
|
-
/* Native
|
|
171
|
-
select {
|
|
172
|
-
|
|
173
|
-
position: absolute;
|
|
174
|
-
inset: 0;
|
|
175
|
-
width: 100%;
|
|
176
|
-
height: 100%;
|
|
177
|
-
opacity: 0;
|
|
178
|
-
cursor: pointer;
|
|
179
|
-
z-index: 2;
|
|
180
|
-
border: none;
|
|
181
|
-
background: transparent;
|
|
182
|
-
margin: 0;
|
|
183
|
-
padding: 0;
|
|
174
|
+
/* Native <option>/<optgroup> markup is only a data source for the internal listbox; never shown. */
|
|
175
|
+
.lmvz-select-native-options {
|
|
176
|
+
display: none;
|
|
184
177
|
}
|
|
185
178
|
:host([disabled]) .select-wrapper {
|
|
186
179
|
opacity: var(--lmvz-select-disabled-opacity);
|
|
@@ -188,22 +181,29 @@ select {
|
|
|
188
181
|
cursor: not-allowed;
|
|
189
182
|
}
|
|
190
183
|
[role='status'] {
|
|
191
|
-
|
|
184
|
+
padding-top: var(--lmvz-dimension-8-6, clamp(0.38rem, 0.34rem + 0.13vw, 0.5rem));
|
|
192
185
|
padding-left: var(--lmvz-select-padding-x);
|
|
193
186
|
font-size: var(--lmvz-select-label-font-size);
|
|
194
187
|
color: var(--lmvz-select-helper-color);
|
|
195
188
|
line-height: normal;
|
|
196
189
|
}
|
|
190
|
+
[role='alert'] {
|
|
191
|
+
padding-top: var(--lmvz-dimension-8-6, clamp(0.38rem, 0.34rem + 0.13vw, 0.5rem));
|
|
192
|
+
padding-left: var(--lmvz-select-padding-x);
|
|
193
|
+
font-size: var(--lmvz-component-body-sm-font-size, clamp(0.75rem, 0.72rem + 0.13vw, 0.88rem));
|
|
194
|
+
color: var(--lmvz-select-error-color);
|
|
195
|
+
line-height: normal;
|
|
196
|
+
}
|
|
197
197
|
:host([size='small']) {
|
|
198
198
|
--lmvz-select-height: var(--lmvz-component-input-size-sm, clamp(2rem, 1.94rem + 0.26vw, 2.25rem));
|
|
199
199
|
--lmvz-select-padding-x: var(--lmvz-component-input-padding-sm, clamp(0.75rem, 0.72rem + 0.13vw, 0.88rem));
|
|
200
200
|
--lmvz-select-gap: var(--lmvz-component-input-gap-sm, clamp(0.38rem, 0.31rem + 0.26vw, 0.63rem));
|
|
201
201
|
--lmvz-select-label-font-size: var(--lmvz-component-body-2xs-font-size, clamp(0.5rem, 0.47rem + 0.13vw, 0.63rem));
|
|
202
202
|
}
|
|
203
|
-
:host([size='small'])
|
|
203
|
+
:host([size='small']) .select-trigger > span:first-child {
|
|
204
204
|
font-size: var(--lmvz-component-body-sm-font-size, clamp(0.75rem, 0.72rem + 0.13vw, 0.88rem));
|
|
205
205
|
}
|
|
206
|
-
:host([size='small'])
|
|
206
|
+
:host([size='small']) .select-trigger svg {
|
|
207
207
|
width: var(--lmvz-component-icon-size-4xs, clamp(0.5rem, 0.47rem + 0.13vw, 0.63rem));
|
|
208
208
|
height: var(--lmvz-component-icon-size-4xs, clamp(0.5rem, 0.47rem + 0.13vw, 0.63rem));
|
|
209
209
|
}
|
|
@@ -213,10 +213,72 @@ select {
|
|
|
213
213
|
--lmvz-select-gap: var(--lmvz-component-input-gap-lg, clamp(0.75rem, 0.69rem + 0.26vw, 1rem));
|
|
214
214
|
--lmvz-select-label-font-size: var(--lmvz-component-body-sm-font-size, clamp(0.75rem, 0.72rem + 0.13vw, 0.88rem));
|
|
215
215
|
}
|
|
216
|
-
:host([size='large'])
|
|
216
|
+
:host([size='large']) .select-trigger > span:first-child {
|
|
217
217
|
font-size: var(--lmvz-component-body-lg-font-size, clamp(1rem, 0.97rem + 0.13vw, 1.13rem));
|
|
218
218
|
}
|
|
219
|
-
:host([size='large'])
|
|
219
|
+
:host([size='large']) .select-trigger svg {
|
|
220
220
|
width: var(--lmvz-component-icon-size-xs, clamp(0.75rem, 0.72rem + 0.13vw, 0.88rem));
|
|
221
221
|
height: var(--lmvz-component-icon-size-xs, clamp(0.75rem, 0.72rem + 0.13vw, 0.88rem));
|
|
222
222
|
}
|
|
223
|
+
/*
|
|
224
|
+
* Option-list item styling for the `role="option"` elements rendered inside the
|
|
225
|
+
* `lmvz-popover` (containerRole="listbox") popup. The token set mirrors the states
|
|
226
|
+
* `lmvz-action-list` applies to its `<lmvz-button>`/`<button>` items (tertiary variant),
|
|
227
|
+
* so the listbox looks visually identical to an action-list item:
|
|
228
|
+
* - default: --lmvz-semantic-color-int-tertiary / --lmvz-semantic-color-int-on-tertiary
|
|
229
|
+
* - hover: --lmvz-semantic-color-int-tertiary-hover / --lmvz-semantic-color-int-on-tertiary-hover
|
|
230
|
+
* - active: --lmvz-semantic-color-int-tertiary-active / --lmvz-semantic-color-int-on-tertiary-active
|
|
231
|
+
* - disabled: --lmvz-component-input-disabled-opacity (opacity, same token as lib-styles buttons fragment)
|
|
232
|
+
* - focus: --lmvz-ds-outline / --lmvz-ds-outline-offset (same as lib-styles buttons fragment focus-visible)
|
|
233
|
+
* "selected" has no action-list equivalent (action-list is a menu, not a listbox), so it
|
|
234
|
+
* reuses this component's own highlighted-state tokens for consistency with the trigger.
|
|
235
|
+
* "active" (`data-active="true"`) is this component's own addition: since the combobox uses
|
|
236
|
+
* the activedescendant model, the highlighted option never receives real DOM focus, so
|
|
237
|
+
* `:hover`/`:focus-visible` cannot indicate it to sighted keyboard users — `data-active` is
|
|
238
|
+
* set by the host from `ListboxController`'s active id and styled the same as hover/focus.
|
|
239
|
+
*/
|
|
240
|
+
.lmvz-select-option {
|
|
241
|
+
--lmvz-select-option-background: var(--lmvz-semantic-color-int-tertiary, #ffffff);
|
|
242
|
+
--lmvz-select-option-color: var(--lmvz-semantic-color-int-on-tertiary, #000000);
|
|
243
|
+
|
|
244
|
+
display: flex;
|
|
245
|
+
align-items: center;
|
|
246
|
+
gap: var(--lmvz-select-gap);
|
|
247
|
+
padding: var(--lmvz-component-input-padding-sm, clamp(0.75rem, 0.72rem + 0.13vw, 0.88rem));
|
|
248
|
+
border-radius: var(--lmvz-semantic-border-radius-md, 6px);
|
|
249
|
+
background-color: var(--lmvz-select-option-background);
|
|
250
|
+
color: var(--lmvz-select-option-color);
|
|
251
|
+
cursor: pointer;
|
|
252
|
+
font: var(--lmvz-typography-body-md-strong, 500 clamp(0.88rem, 0.84rem + 0.13vw, 1rem) / 1.5
|
|
253
|
+
Router);
|
|
254
|
+
transition:
|
|
255
|
+
background-color 0.15s ease,
|
|
256
|
+
color 0.15s ease;
|
|
257
|
+
}
|
|
258
|
+
.lmvz-select-option:not([aria-disabled='true']):hover {
|
|
259
|
+
--lmvz-select-option-background: var(--lmvz-semantic-color-int-tertiary-hover, #f0f0f0);
|
|
260
|
+
--lmvz-select-option-color: var(--lmvz-semantic-color-int-on-tertiary-hover, #000000);
|
|
261
|
+
}
|
|
262
|
+
.lmvz-select-option:not([aria-disabled='true']):active {
|
|
263
|
+
--lmvz-select-option-background: var(--lmvz-semantic-color-int-tertiary-active, #e0e0e0);
|
|
264
|
+
--lmvz-select-option-color: var(--lmvz-semantic-color-int-on-tertiary-active, #000000);
|
|
265
|
+
}
|
|
266
|
+
.lmvz-select-option:focus-visible {
|
|
267
|
+
outline: var(--lmvz-ds-outline, 1px solid #0e7ab4);
|
|
268
|
+
outline-offset: var(--lmvz-ds-outline-offset, clamp(0.25rem, 0.19rem + 0.26vw, 0.5rem));
|
|
269
|
+
position: relative;
|
|
270
|
+
z-index: 1;
|
|
271
|
+
}
|
|
272
|
+
.lmvz-select-option[data-active='true']:not([aria-disabled='true']) {
|
|
273
|
+
--lmvz-select-option-background: var(--lmvz-semantic-color-int-tertiary-hover, #f0f0f0);
|
|
274
|
+
--lmvz-select-option-color: var(--lmvz-semantic-color-int-on-tertiary-hover, #000000);
|
|
275
|
+
}
|
|
276
|
+
.lmvz-select-option[aria-selected='true'] {
|
|
277
|
+
--lmvz-select-option-background: var(--lmvz-semantic-color-status-active-alternate, #0f8acc);
|
|
278
|
+
--lmvz-select-option-color: var(--lmvz-semantic-color-status-on-active-alternate, #ffffff);
|
|
279
|
+
}
|
|
280
|
+
.lmvz-select-option[aria-disabled='true'] {
|
|
281
|
+
cursor: not-allowed;
|
|
282
|
+
pointer-events: none;
|
|
283
|
+
opacity: var(--lmvz-component-input-disabled-opacity, 40%);
|
|
284
|
+
}
|