@ethlete/components 1.0.0-next.73 → 1.0.0-next.74
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 +70 -0
- package/design/form-field.ts +1 -0
- package/design/select.ts +1 -1
- package/fesm2022/ethlete-components.mjs +1281 -709
- package/fesm2022/ethlete-components.mjs.map +1 -1
- package/package.json +1 -1
- package/src/lib/accordion/accordion.component.css +40 -24
- package/src/lib/carousel/carousel-transition-styles.component.css +1 -1
- package/src/lib/carousel/carousel.component.css +16 -0
- package/src/lib/command-palette/command-palette-item.component.css +4 -0
- package/src/lib/command-palette/command-palette.component.css +48 -0
- package/src/lib/divider/divider.component.css +7 -3
- package/src/lib/forms/cascader/cascader-panel.component.css +4 -6
- package/src/lib/forms/color-input/color-picker-panel.component.css +1 -1
- package/src/lib/forms/date-time/date-picker-panel.component.css +3 -41
- package/src/lib/forms/form-field/form-field-control-suffix-styles.component.css +49 -0
- package/src/lib/forms/form-field/form-field-suffix-overlap-styles.component.css +27 -0
- package/src/lib/forms/form-field/form-field-text-shell-styles.component.css +9 -12
- package/src/lib/forms/rich-text-editor/rich-text-editor-token-popup.component.css +4 -0
- package/src/lib/forms/select/select-option-group.component.css +4 -3
- package/src/lib/forms/select/select-option-styles.component.css +5 -0
- package/src/lib/forms/select/select-panel.component.css +14 -6
- package/src/lib/forms/select/select.component.css +77 -10
- package/src/lib/loader/progress-bar/progress-bar.component.css +1 -0
- package/src/lib/menu/menu-search-styles.component.css +27 -0
- package/src/lib/menu/menu.component.css +3 -7
- package/src/lib/notification/notification.component.css +4 -0
- package/src/lib/overlay/floating-panel-styles.component.css +2 -57
- package/src/lib/overlay/floating-tip-styles.component.css +0 -3
- package/src/lib/overlay/routing/overlay-router-outlet.component.css +8 -0
- package/src/lib/overlay/sidebar/overlay-sidebar.component.css +8 -1
- package/src/lib/overlay/strategies/anchored-dialog-styles.component.css +27 -0
- package/src/lib/overlay/strategies/dialog-styles.component.css +27 -0
- package/src/lib/overlay/strategies/full-screen-dialog-styles.component.css +58 -0
- package/src/lib/overlay/strategies/overlay-origin-clone.component.css +29 -0
- package/src/lib/pagination/page-size-select.component.css +0 -96
- package/src/lib/pagination/pagination.component.css +1 -22
- package/src/lib/progress-steps/progress-step.component.css +6 -0
- package/src/lib/scheduler/scheduler-agenda-view.component.css +9 -0
- package/src/lib/scheduler/scheduler-time-grid-view.component.css +5 -0
- package/src/lib/scrollable/headless/scrollable-buttons.component.css +8 -1
- package/src/lib/scrollable/headless/scrollable-footer.css +12 -0
- package/src/lib/scrollable/headless/scrollable-masks.component.css +37 -0
- package/src/lib/scrollbar/scrollbar.component.css +8 -2
- package/types/ethlete-components.d.ts +92 -28
- /package/src/lib/loader/spinner/{spinner.component.css → spinner-styles.component.css} +0 -0
package/package.json
CHANGED
|
@@ -47,7 +47,6 @@
|
|
|
47
47
|
display: block;
|
|
48
48
|
color: var(--et-surface-color-solid, CanvasText);
|
|
49
49
|
border-block-end: 1px solid var(--_et-accordion-border-color);
|
|
50
|
-
transition: border-color var(--et-accordion-color-duration) ease;
|
|
51
50
|
|
|
52
51
|
/* The hover lives on the trigger and the border on the host, so this has to reach back up with
|
|
53
52
|
`:has()` - moving the rule onto `.et-accordion-trigger` would silently stop it applying. */
|
|
@@ -63,7 +62,10 @@
|
|
|
63
62
|
}
|
|
64
63
|
|
|
65
64
|
.et-accordion-heading {
|
|
65
|
+
--_et-accordion-tint-inset: min(4px, var(--et-accordion-padding-block));
|
|
66
|
+
|
|
66
67
|
display: block;
|
|
68
|
+
padding-block: var(--_et-accordion-tint-inset);
|
|
67
69
|
}
|
|
68
70
|
|
|
69
71
|
.et-accordion-trigger {
|
|
@@ -73,7 +75,8 @@
|
|
|
73
75
|
align-items: center;
|
|
74
76
|
gap: var(--et-accordion-gap);
|
|
75
77
|
inline-size: 100%;
|
|
76
|
-
padding: var(--et-accordion-padding-block) var(--
|
|
78
|
+
padding: calc(var(--et-accordion-padding-block) - var(--_et-accordion-tint-inset))
|
|
79
|
+
var(--et-accordion-padding-inline);
|
|
77
80
|
border: 0;
|
|
78
81
|
border-radius: var(--et-accordion-radius);
|
|
79
82
|
background: transparent;
|
|
@@ -82,7 +85,6 @@
|
|
|
82
85
|
font-weight: 500;
|
|
83
86
|
text-align: start;
|
|
84
87
|
cursor: pointer;
|
|
85
|
-
transition: background-color var(--et-accordion-color-duration) ease;
|
|
86
88
|
|
|
87
89
|
@media (hover: hover) {
|
|
88
90
|
&:hover {
|
|
@@ -122,7 +124,6 @@
|
|
|
122
124
|
flex: none;
|
|
123
125
|
color: var(--_et-accordion-secondary-color);
|
|
124
126
|
font-weight: 400;
|
|
125
|
-
transition: color var(--et-accordion-color-duration) ease;
|
|
126
127
|
}
|
|
127
128
|
|
|
128
129
|
.et-accordion-chevron {
|
|
@@ -131,9 +132,6 @@
|
|
|
131
132
|
block-size: var(--et-accordion-chevron-size);
|
|
132
133
|
color: var(--_et-accordion-secondary-color);
|
|
133
134
|
rotate: 180deg;
|
|
134
|
-
transition:
|
|
135
|
-
rotate var(--et-accordion-duration) cubic-bezier(0.25, 0, 0.1, 1),
|
|
136
|
-
color var(--et-accordion-color-duration) ease;
|
|
137
135
|
}
|
|
138
136
|
|
|
139
137
|
&[aria-expanded='true'] .et-accordion-chevron {
|
|
@@ -145,16 +143,45 @@
|
|
|
145
143
|
display: grid;
|
|
146
144
|
grid-template-rows: 0fr;
|
|
147
145
|
visibility: hidden;
|
|
148
|
-
transition:
|
|
149
|
-
grid-template-rows var(--et-accordion-duration) cubic-bezier(0.25, 0, 0.1, 1),
|
|
150
|
-
visibility 0s linear var(--et-accordion-duration);
|
|
151
146
|
|
|
152
147
|
&:where([data-open]) {
|
|
153
148
|
grid-template-rows: 1fr;
|
|
154
149
|
visibility: visible;
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
.et-accordion:where([data-can-animate]) {
|
|
154
|
+
transition: border-color var(--et-accordion-color-duration) ease;
|
|
155
|
+
|
|
156
|
+
> .et-accordion-heading > .et-accordion-trigger {
|
|
157
|
+
transition: background-color var(--et-accordion-color-duration) ease;
|
|
158
|
+
|
|
159
|
+
.et-accordion-hint,
|
|
160
|
+
.et-accordion-chevron {
|
|
161
|
+
transition: color var(--et-accordion-color-duration) ease;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
@media (prefers-reduced-motion: no-preference) {
|
|
167
|
+
.et-accordion:where([data-can-animate]) {
|
|
168
|
+
> .et-accordion-panel {
|
|
169
|
+
transition:
|
|
170
|
+
grid-template-rows var(--et-accordion-duration) cubic-bezier(0.25, 0, 0.1, 1),
|
|
171
|
+
visibility 0s linear var(--et-accordion-duration);
|
|
172
|
+
|
|
173
|
+
&:where([data-open]) {
|
|
174
|
+
transition:
|
|
175
|
+
grid-template-rows var(--et-accordion-duration) cubic-bezier(0.25, 0, 0.1, 1),
|
|
176
|
+
visibility 0s linear 0s;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
> .et-accordion-heading > .et-accordion-trigger > .et-accordion-chevron {
|
|
181
|
+
transition:
|
|
182
|
+
rotate var(--et-accordion-duration) cubic-bezier(0.25, 0, 0.1, 1),
|
|
183
|
+
color var(--et-accordion-color-duration) ease;
|
|
184
|
+
}
|
|
158
185
|
}
|
|
159
186
|
}
|
|
160
187
|
|
|
@@ -171,15 +198,4 @@
|
|
|
171
198
|
padding-block-end: var(--et-accordion-padding-block);
|
|
172
199
|
padding-inline: var(--et-accordion-padding-inline);
|
|
173
200
|
}
|
|
174
|
-
|
|
175
|
-
@media (prefers-reduced-motion: reduce) {
|
|
176
|
-
.et-accordion-panel,
|
|
177
|
-
.et-accordion-panel:where([data-open]) {
|
|
178
|
-
transition: none;
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
.et-accordion-trigger .et-accordion-chevron {
|
|
182
|
-
transition: color var(--et-accordion-color-duration) ease;
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
201
|
}
|
|
@@ -37,11 +37,27 @@
|
|
|
37
37
|
gap: var(--et-carousel-gap);
|
|
38
38
|
}
|
|
39
39
|
|
|
40
|
+
/* `overflow-x: auto` forces a clip on the cross axis too; without the bleed it sits on the slide's own
|
|
41
|
+
border, which fractional device pixel ratios then eat. */
|
|
40
42
|
.et-carousel-track {
|
|
43
|
+
--_et-carousel-track-bleed: 4px;
|
|
44
|
+
|
|
41
45
|
display: block;
|
|
46
|
+
margin-block: calc(var(--_et-carousel-track-bleed) * -1);
|
|
42
47
|
|
|
43
48
|
& .et-scrollable-container {
|
|
44
49
|
gap: var(--et-carousel-slide-gap);
|
|
50
|
+
padding-block: var(--_et-carousel-track-bleed);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
&:where([direction='vertical']) {
|
|
54
|
+
margin-block: 0;
|
|
55
|
+
margin-inline: calc(var(--_et-carousel-track-bleed) * -1);
|
|
56
|
+
|
|
57
|
+
& .et-scrollable-container {
|
|
58
|
+
padding-block: 0;
|
|
59
|
+
padding-inline: var(--_et-carousel-track-bleed);
|
|
60
|
+
}
|
|
45
61
|
}
|
|
46
62
|
}
|
|
47
63
|
|
|
@@ -37,6 +37,10 @@
|
|
|
37
37
|
padding-inline: var(--et-command-palette-item-padding-inline);
|
|
38
38
|
border-radius: var(--et-command-palette-item-border-radius);
|
|
39
39
|
cursor: pointer;
|
|
40
|
+
transition:
|
|
41
|
+
background 120ms ease,
|
|
42
|
+
color 120ms ease,
|
|
43
|
+
opacity 120ms ease;
|
|
40
44
|
|
|
41
45
|
/* Marks the row the arrow keys reached. Not `:hover`: the pointer and the keyboard drive one
|
|
42
46
|
highlight, and the component decides which row that is. */
|
|
@@ -33,6 +33,7 @@
|
|
|
33
33
|
--_et-command-palette-color: var(--et-surface-color-solid, rgb(244 244 245));
|
|
34
34
|
--_et-command-palette-muted-color: var(--et-surface-color-muted-solid, rgb(255 255 255 / 0.55));
|
|
35
35
|
--_et-command-palette-border: var(--et-surface-border-solid, rgb(255 255 255 / 0.1));
|
|
36
|
+
position: relative;
|
|
36
37
|
display: grid;
|
|
37
38
|
grid-template-rows: auto minmax(0, 1fr);
|
|
38
39
|
max-block-size: var(--et-command-palette-max-height);
|
|
@@ -67,12 +68,32 @@
|
|
|
67
68
|
}
|
|
68
69
|
}
|
|
69
70
|
|
|
71
|
+
.et-command-palette-list-wrapper {
|
|
72
|
+
position: relative;
|
|
73
|
+
display: grid;
|
|
74
|
+
min-block-size: 0;
|
|
75
|
+
}
|
|
76
|
+
|
|
70
77
|
.et-command-palette-list {
|
|
78
|
+
min-block-size: 0;
|
|
71
79
|
overflow-y: auto;
|
|
72
80
|
overscroll-behavior: contain;
|
|
73
81
|
padding: var(--et-command-palette-padding);
|
|
74
82
|
}
|
|
75
83
|
|
|
84
|
+
.et-command-palette-list-content {
|
|
85
|
+
position: relative;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/* Outweighs the overlay's own `.et-overlay > :not(…):not(…)` scroll rule on its content root. */
|
|
89
|
+
.et-overlay.et-command-palette-panel > .et-command-palette.et-command-palette--resizing {
|
|
90
|
+
overflow: clip;
|
|
91
|
+
|
|
92
|
+
.et-command-palette-list {
|
|
93
|
+
overflow: clip;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
|
|
76
97
|
.et-command-palette-group-label {
|
|
77
98
|
margin: 0;
|
|
78
99
|
padding-block: 8px 4px;
|
|
@@ -84,12 +105,39 @@
|
|
|
84
105
|
}
|
|
85
106
|
|
|
86
107
|
.et-command-palette-empty {
|
|
108
|
+
align-self: start;
|
|
87
109
|
margin: 0;
|
|
88
110
|
padding-block: 24px;
|
|
89
111
|
color: var(--_et-command-palette-muted-color);
|
|
90
112
|
text-align: center;
|
|
91
113
|
}
|
|
92
114
|
|
|
115
|
+
.et-command-palette-swap--enter {
|
|
116
|
+
animation: et-command-palette-fade-in 150ms ease-out;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
/* Out of flow in the same grid area, so the outgoing content never adds to the height that animates. */
|
|
120
|
+
.et-command-palette-swap--leave {
|
|
121
|
+
position: absolute;
|
|
122
|
+
grid-row: 2;
|
|
123
|
+
grid-column: 1;
|
|
124
|
+
inset: 0;
|
|
125
|
+
pointer-events: none;
|
|
126
|
+
animation: et-command-palette-fade-out 100ms ease-out forwards;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
@keyframes et-command-palette-fade-in {
|
|
130
|
+
from {
|
|
131
|
+
opacity: 0;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
@keyframes et-command-palette-fade-out {
|
|
136
|
+
to {
|
|
137
|
+
opacity: 0;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
|
|
93
141
|
/* Held near the top of the viewport rather than centered: the list grows downwards as the reader
|
|
94
142
|
types, and a centered panel would shift the row under the pointer on every keystroke. */
|
|
95
143
|
.et-overlay.et-command-palette-panel {
|
|
@@ -20,15 +20,19 @@
|
|
|
20
20
|
.et-divider {
|
|
21
21
|
display: block;
|
|
22
22
|
flex: none;
|
|
23
|
-
|
|
24
|
-
block-
|
|
23
|
+
block-size: 0;
|
|
24
|
+
border-block-start: var(--et-divider-thickness) solid
|
|
25
|
+
var(--et-divider-color, var(--et-surface-border-solid, rgb(255 255 255 / 0.1)));
|
|
25
26
|
margin-block: var(--et-divider-spacing);
|
|
26
27
|
margin-inline: var(--et-divider-inset);
|
|
27
28
|
|
|
28
29
|
&:where([data-orientation='vertical']) {
|
|
29
30
|
align-self: stretch;
|
|
30
31
|
block-size: auto;
|
|
31
|
-
inline-size:
|
|
32
|
+
inline-size: 0;
|
|
33
|
+
border-block-start: 0;
|
|
34
|
+
border-inline-start: var(--et-divider-thickness) solid
|
|
35
|
+
var(--et-divider-color, var(--et-surface-border-solid, rgb(255 255 255 / 0.1)));
|
|
32
36
|
margin-block: var(--et-divider-inset);
|
|
33
37
|
margin-inline: var(--et-divider-spacing);
|
|
34
38
|
}
|
|
@@ -21,9 +21,6 @@
|
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
.et-overlay--cascader {
|
|
24
|
-
--et-floating-panel-enter-duration: 140ms;
|
|
25
|
-
--et-floating-panel-leave-duration: 100ms;
|
|
26
|
-
--et-floating-panel-distance: 0.3rem;
|
|
27
24
|
}
|
|
28
25
|
|
|
29
26
|
.et-cascader-panel {
|
|
@@ -35,7 +32,8 @@
|
|
|
35
32
|
var(--et-cascader-panel-max-block-size),
|
|
36
33
|
var(--et-overlay-max-height, 100vh)
|
|
37
34
|
);
|
|
38
|
-
|
|
35
|
+
--_et-cascader-row-radius: max(2px, var(--_et-overlay-surface-radius, 10px) - 6px);
|
|
36
|
+
border-radius: var(--_et-overlay-surface-radius, 10px);
|
|
39
37
|
border: 1px solid var(--et-surface-border-solid, rgb(255 255 255 / 0.1));
|
|
40
38
|
background: var(--et-surface-background-solid, rgb(32 32 32));
|
|
41
39
|
color: var(--et-surface-color-solid, rgb(244 244 245));
|
|
@@ -126,7 +124,7 @@
|
|
|
126
124
|
block-size: 36px;
|
|
127
125
|
box-sizing: border-box;
|
|
128
126
|
padding-inline: 10px;
|
|
129
|
-
border-radius:
|
|
127
|
+
border-radius: var(--_et-cascader-row-radius);
|
|
130
128
|
border: 1px solid var(--et-surface-border-solid, rgb(255 255 255 / 0.1));
|
|
131
129
|
background: color-mix(in srgb, var(--et-surface-interaction-solid, rgb(255 255 255)) 6%, transparent);
|
|
132
130
|
color: inherit;
|
|
@@ -212,7 +210,7 @@
|
|
|
212
210
|
min-block-size: var(--et-cascader-node-height);
|
|
213
211
|
padding-inline: 10px;
|
|
214
212
|
border: none;
|
|
215
|
-
border-radius:
|
|
213
|
+
border-radius: var(--_et-cascader-row-radius);
|
|
216
214
|
background: transparent;
|
|
217
215
|
font: inherit;
|
|
218
216
|
text-align: start;
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
max-inline-size: calc(100vw - 24px);
|
|
45
45
|
overflow: hidden;
|
|
46
46
|
padding: 12px;
|
|
47
|
-
border-radius: 10px;
|
|
47
|
+
border-radius: var(--_et-overlay-surface-radius, 10px);
|
|
48
48
|
border: 1px solid var(--et-surface-border-solid, rgb(255 255 255 / 0.1));
|
|
49
49
|
background: var(--et-surface-background-solid, rgb(32 32 32));
|
|
50
50
|
color: var(--et-surface-color-solid, rgb(244 244 245));
|
|
@@ -6,49 +6,11 @@
|
|
|
6
6
|
}
|
|
7
7
|
|
|
8
8
|
&.et-animation-enter-active {
|
|
9
|
-
transition:
|
|
10
|
-
transform 140ms ease,
|
|
11
|
-
opacity 140ms ease;
|
|
9
|
+
transition: opacity 140ms ease;
|
|
12
10
|
}
|
|
13
11
|
|
|
14
12
|
&.et-animation-leave-active {
|
|
15
|
-
transition:
|
|
16
|
-
transform 100ms ease,
|
|
17
|
-
opacity 100ms ease;
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
.et-overlay--date-picker[data-overlay-placement^='top'] {
|
|
22
|
-
&.et-animation-enter-from,
|
|
23
|
-
&.et-animation-leave-to {
|
|
24
|
-
transform: translate3d(var(--et-overlay-anchored-x, 0px), var(--et-overlay-anchored-y, 0px), 0) translateY(0.3rem) !important;
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
.et-overlay--date-picker[data-overlay-placement^='bottom'] {
|
|
29
|
-
&.et-animation-enter-from,
|
|
30
|
-
&.et-animation-leave-to {
|
|
31
|
-
transform: translate3d(var(--et-overlay-anchored-x, 0px), var(--et-overlay-anchored-y, 0px), 0)
|
|
32
|
-
translateY(-0.3rem) !important;
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
@media (prefers-reduced-motion: reduce) {
|
|
37
|
-
.et-overlay.et-with-default-animation.et-overlay--date-picker {
|
|
38
|
-
&.et-animation-enter-active {
|
|
39
|
-
transition: opacity 140ms ease;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
&.et-animation-leave-active {
|
|
43
|
-
transition: opacity 100ms ease;
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
.et-overlay--date-picker[data-overlay-placement] {
|
|
48
|
-
&.et-animation-enter-from,
|
|
49
|
-
&.et-animation-leave-to {
|
|
50
|
-
transform: translate3d(var(--et-overlay-anchored-x, 0px), var(--et-overlay-anchored-y, 0px), 0) !important;
|
|
51
|
-
}
|
|
13
|
+
transition: opacity 100ms ease;
|
|
52
14
|
}
|
|
53
15
|
}
|
|
54
16
|
|
|
@@ -58,7 +20,7 @@
|
|
|
58
20
|
max-inline-size: calc(100vw - 24px);
|
|
59
21
|
overflow: hidden;
|
|
60
22
|
padding: 12px;
|
|
61
|
-
border-radius: 10px;
|
|
23
|
+
border-radius: var(--_et-overlay-surface-radius, 10px);
|
|
62
24
|
border: 1px solid var(--et-surface-border-solid, rgb(255 255 255 / 0.1));
|
|
63
25
|
background: var(--et-surface-background-solid, rgb(32 32 32));
|
|
64
26
|
color: var(--et-surface-color-solid, rgb(244 244 245));
|
|
@@ -1,16 +1,48 @@
|
|
|
1
1
|
@layer components {
|
|
2
2
|
.et-input-clear {
|
|
3
|
+
--_et-input-clear-target: 24px;
|
|
4
|
+
--_et-input-clear-gap: var(--et-form-field-control-affix-gap, 8px);
|
|
5
|
+
|
|
6
|
+
position: relative;
|
|
7
|
+
z-index: 1;
|
|
3
8
|
display: inline-flex;
|
|
4
9
|
align-items: center;
|
|
5
10
|
justify-content: center;
|
|
6
11
|
flex: none;
|
|
7
12
|
border: none;
|
|
13
|
+
outline: none;
|
|
8
14
|
background: transparent;
|
|
9
15
|
color: var(--et-surface-color-muted-solid, currentColor);
|
|
10
16
|
padding: 0;
|
|
11
17
|
margin: 0;
|
|
12
18
|
cursor: pointer;
|
|
13
19
|
appearance: none;
|
|
20
|
+
touch-action: manipulation;
|
|
21
|
+
transition: color 150ms ease;
|
|
22
|
+
|
|
23
|
+
&::before {
|
|
24
|
+
content: '';
|
|
25
|
+
position: absolute;
|
|
26
|
+
z-index: -1;
|
|
27
|
+
inset: -4px;
|
|
28
|
+
border-radius: 50%;
|
|
29
|
+
background: transparent;
|
|
30
|
+
transition: background-color 150ms ease;
|
|
31
|
+
pointer-events: none;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/* Ends halfway into the gap, so a neighbouring picker trigger's own hit area keeps the other half. */
|
|
35
|
+
&::after {
|
|
36
|
+
content: '';
|
|
37
|
+
position: absolute;
|
|
38
|
+
inset-block: calc((var(--_et-input-clear-target) - 100%) / -2);
|
|
39
|
+
inset-inline-end: calc(var(--_et-input-clear-gap) / -2);
|
|
40
|
+
inset-inline-start: calc(100% + var(--_et-input-clear-gap) / 2 - var(--_et-input-clear-target));
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
@media (pointer: coarse) {
|
|
44
|
+
--_et-input-clear-target: 44px;
|
|
45
|
+
}
|
|
14
46
|
|
|
15
47
|
.et-icon {
|
|
16
48
|
inline-size: var(--et-form-field-affix-icon-size, 16px);
|
|
@@ -20,9 +52,22 @@
|
|
|
20
52
|
@media (hover: hover) {
|
|
21
53
|
&:hover {
|
|
22
54
|
color: var(--et-surface-color-solid, currentColor);
|
|
55
|
+
|
|
56
|
+
&::before {
|
|
57
|
+
background: color-mix(in srgb, var(--et-surface-interaction-solid, currentColor) 20%, transparent);
|
|
58
|
+
}
|
|
23
59
|
}
|
|
24
60
|
}
|
|
25
61
|
|
|
62
|
+
&:active::before {
|
|
63
|
+
background: color-mix(in srgb, var(--et-surface-interaction-solid, currentColor) 28%, transparent);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
&:focus-visible::before {
|
|
67
|
+
outline: 2px solid var(--et-theme-color-primary-solid, currentColor);
|
|
68
|
+
outline-offset: 1px;
|
|
69
|
+
}
|
|
70
|
+
|
|
26
71
|
&.et-input-clear--enter {
|
|
27
72
|
animation: et-input-clear-in 150ms ease;
|
|
28
73
|
}
|
|
@@ -100,6 +145,10 @@
|
|
|
100
145
|
color: var(--et-surface-color-muted-solid, currentColor);
|
|
101
146
|
}
|
|
102
147
|
}
|
|
148
|
+
|
|
149
|
+
&::before {
|
|
150
|
+
background: transparent;
|
|
151
|
+
}
|
|
103
152
|
}
|
|
104
153
|
|
|
105
154
|
@keyframes et-input-clear-in {
|
|
@@ -5,6 +5,21 @@
|
|
|
5
5
|
.et-form-field-busy-spinner {
|
|
6
6
|
flex: none;
|
|
7
7
|
color: var(--et-surface-color-muted-solid, currentColor);
|
|
8
|
+
|
|
9
|
+
&.et-form-field-busy-spinner--enter {
|
|
10
|
+
animation: et-form-field-busy-spinner-in 120ms ease;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
&.et-form-field-busy-spinner--leave {
|
|
14
|
+
animation: et-form-field-busy-spinner-out 120ms ease forwards;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
@media (prefers-reduced-motion: reduce) {
|
|
18
|
+
&.et-form-field-busy-spinner--enter,
|
|
19
|
+
&.et-form-field-busy-spinner--leave {
|
|
20
|
+
animation: none;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
8
23
|
}
|
|
9
24
|
|
|
10
25
|
/* The overlap amount lives on the frame, not on the suffix that consumes it: a focused text
|
|
@@ -63,4 +78,16 @@
|
|
|
63
78
|
margin-inline-start: calc(-1 * (var(--_et-form-field-suffix-fade) + var(--_et-form-field-suffix-overlap)));
|
|
64
79
|
}
|
|
65
80
|
}
|
|
81
|
+
|
|
82
|
+
@keyframes et-form-field-busy-spinner-in {
|
|
83
|
+
from {
|
|
84
|
+
opacity: 0;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
@keyframes et-form-field-busy-spinner-out {
|
|
89
|
+
to {
|
|
90
|
+
opacity: 0;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
66
93
|
}
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
--et-form-field-control-font-size: 12px;
|
|
10
10
|
--et-form-field-control-min-height: 32px;
|
|
11
11
|
--et-form-field-label-font-size: 12px;
|
|
12
|
+
--_et-form-field-float-inside-label-inset: 1px;
|
|
12
13
|
}
|
|
13
14
|
|
|
14
15
|
/* `data-size` is a host binding, so a field the router just created paints one frame without it.
|
|
@@ -110,20 +111,16 @@
|
|
|
110
111
|
|
|
111
112
|
&[data-label-mode='floating-inside'],
|
|
112
113
|
&[data-label-mode='floating-outside'] {
|
|
113
|
-
|
|
114
|
+
.et-form-field-control-slot :is(input, textarea)::placeholder,
|
|
115
|
+
:is(.et-select-value, .et-cascader-value)[data-placeholder] {
|
|
114
116
|
transition: color 150ms ease;
|
|
115
117
|
}
|
|
116
118
|
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
color: transparent;
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
&:not([data-label-floated]) .et-select-value[data-placeholder] {
|
|
126
|
-
color: transparent;
|
|
119
|
+
&:not([data-label-floated]) {
|
|
120
|
+
.et-form-field-control-slot :is(input, textarea)::placeholder,
|
|
121
|
+
:is(.et-select-value, .et-cascader-value)[data-placeholder] {
|
|
122
|
+
color: transparent;
|
|
123
|
+
}
|
|
127
124
|
}
|
|
128
125
|
}
|
|
129
126
|
|
|
@@ -171,7 +168,7 @@
|
|
|
171
168
|
}
|
|
172
169
|
|
|
173
170
|
&[data-label-floated] .et-form-field-label-area--floating {
|
|
174
|
-
inset-block-start: 4px;
|
|
171
|
+
inset-block-start: var(--_et-form-field-float-inside-label-inset, 4px);
|
|
175
172
|
transform: scale(var(--_et-form-field-floating-label-scale));
|
|
176
173
|
}
|
|
177
174
|
|
|
@@ -13,9 +13,10 @@
|
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
/* separate groups with a hairline above all but the first *visible* one — search
|
|
16
|
-
filtering hides groups via [data-hidden], and a hidden group must
|
|
17
|
-
|
|
18
|
-
|
|
16
|
+
filtering hides groups via [data-hidden], and a hidden group must not count as the
|
|
17
|
+
preceding sibling (hence ~ instead of +). A hidden group itself still matches, so the
|
|
18
|
+
fade-out copy of its label keeps the divider. */
|
|
19
|
+
&:where(:not([data-hidden])) ~ & .et-select-option-group-label {
|
|
19
20
|
margin-block-start: 4px;
|
|
20
21
|
padding-block-start: 8px;
|
|
21
22
|
border-block-start: 1px solid var(--et-surface-border-solid, rgb(255 255 255 / 0.1));
|
|
@@ -95,6 +95,7 @@
|
|
|
95
95
|
through the pane's positioning phase (`visibility: hidden`) and paint the check
|
|
96
96
|
before the panel itself becomes visible */
|
|
97
97
|
opacity: 0;
|
|
98
|
+
transition: opacity 120ms ease;
|
|
98
99
|
|
|
99
100
|
.et-icon {
|
|
100
101
|
inline-size: 100%;
|
|
@@ -106,6 +107,10 @@
|
|
|
106
107
|
opacity: 1;
|
|
107
108
|
}
|
|
108
109
|
|
|
110
|
+
:where(.et-animation-leave-from, .et-animation-leave-active) & .et-select-option-check {
|
|
111
|
+
transition-delay: 100ms;
|
|
112
|
+
}
|
|
113
|
+
|
|
109
114
|
.et-select-option-label {
|
|
110
115
|
flex: 1;
|
|
111
116
|
overflow: hidden;
|
|
@@ -12,9 +12,10 @@
|
|
|
12
12
|
}
|
|
13
13
|
|
|
14
14
|
.et-overlay--select {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.et-overlay--select.et-floating-panel[data-overlay-placement].et-animation-leave-to {
|
|
18
|
+
transform: translate3d(var(--et-overlay-anchored-x, 0px), var(--et-overlay-anchored-y, 0px), 0) !important;
|
|
18
19
|
}
|
|
19
20
|
|
|
20
21
|
.et-select-panel {
|
|
@@ -38,6 +39,10 @@
|
|
|
38
39
|
/* re-published as an inheriting alias: the registered token is `inherits: false`, so the
|
|
39
40
|
scroller below could not read a value a consumer sets on the panel element */
|
|
40
41
|
--_et-select-panel-padding: var(--et-select-panel-padding);
|
|
42
|
+
--et-select-option-border-radius: max(
|
|
43
|
+
2px,
|
|
44
|
+
var(--_et-overlay-surface-radius, 10px) - var(--_et-select-panel-padding)
|
|
45
|
+
);
|
|
41
46
|
|
|
42
47
|
.et-select-panel-scroller {
|
|
43
48
|
box-sizing: border-box;
|
|
@@ -46,10 +51,13 @@
|
|
|
46
51
|
padding: var(--_et-select-panel-padding);
|
|
47
52
|
}
|
|
48
53
|
|
|
49
|
-
|
|
54
|
+
/* A moving option's transform counts as scrollable overflow and would flash a scrollbar. Clip the
|
|
55
|
+
scroller, never the body: the body already has its final height and would cut off the moving options. */
|
|
56
|
+
&.et-select-panel--resizing .et-select-panel-scroller,
|
|
57
|
+
.et-select-panel-scroller:has(> .et-select-panel-body--moving) {
|
|
50
58
|
overflow: clip;
|
|
51
59
|
}
|
|
52
|
-
border-radius: 10px;
|
|
60
|
+
border-radius: var(--_et-overlay-surface-radius, 10px);
|
|
53
61
|
border: 1px solid var(--et-surface-border-solid, rgb(255 255 255 / 0.1));
|
|
54
62
|
background: var(--et-surface-background-solid, rgb(32 32 32));
|
|
55
63
|
color: var(--et-surface-color-solid, rgb(244 244 245));
|
|
@@ -89,7 +97,7 @@
|
|
|
89
97
|
block-size: 36px;
|
|
90
98
|
box-sizing: border-box;
|
|
91
99
|
padding-inline: 10px;
|
|
92
|
-
border-radius:
|
|
100
|
+
border-radius: var(--et-select-option-border-radius);
|
|
93
101
|
border: 1px solid var(--et-surface-border-solid, rgb(255 255 255 / 0.1));
|
|
94
102
|
background: color-mix(in srgb, var(--et-surface-interaction-solid, rgb(255 255 255)) 6%, transparent);
|
|
95
103
|
color: inherit;
|