@antadesign/anta 0.3.33 → 0.3.35
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/LICENSE.md +14 -1
- package/README.md +9 -0
- package/dist/anta_helpers.d.ts +46 -30
- package/dist/anta_helpers.js +66 -25
- package/dist/bundle.css +1 -1
- package/dist/bundle.js +2 -1353
- package/dist/components/Banner.d.ts +25 -40
- package/dist/components/Banner.js +15 -17
- package/dist/components/Breadcrumbs.d.ts +0 -1
- package/dist/components/Breadcrumbs.js +0 -1
- package/dist/components/Button.d.ts +2 -3
- package/dist/components/Button.js +1 -0
- package/dist/components/ButtonCopy.js +3 -2
- package/dist/components/Calendar.js +13 -13
- package/dist/components/Card.d.ts +9 -17
- package/dist/components/Card.js +50 -46
- package/dist/components/Dialog.d.ts +1 -0
- package/dist/components/Dialog.js +16 -10
- package/dist/components/Expander.d.ts +6 -21
- package/dist/components/Expander.js +24 -23
- package/dist/components/Icon.d.ts +8 -14
- package/dist/components/Input.d.ts +77 -96
- package/dist/components/Input.js +23 -27
- package/dist/components/InputAutocomplete.d.ts +29 -10
- package/dist/components/InputAutocomplete.js +25 -8
- package/dist/components/InputDate.d.ts +0 -1
- package/dist/components/InputDate.js +2 -3
- package/dist/components/InputTime.d.ts +10 -4
- package/dist/components/InputTime.js +20 -16
- package/dist/components/Loader.d.ts +2 -2
- package/dist/components/Menu.d.ts +5 -4
- package/dist/components/Menu.js +13 -8
- package/dist/components/MenuItem.js +1 -14
- package/dist/components/MenuItemCopy.js +2 -2
- package/dist/components/Panel.d.ts +3 -1
- package/dist/components/Panel.js +17 -11
- package/dist/components/Progress.d.ts +21 -23
- package/dist/components/Progress.js +13 -9
- package/dist/components/RadioGroup.js +6 -8
- package/dist/components/{select-parts.css → Select.css} +1 -1
- package/dist/components/Select.d.ts +53 -36
- package/dist/components/Select.js +53 -98
- package/dist/components/SelectFaceted.d.ts +7 -4
- package/dist/components/SelectFaceted.js +21 -10
- package/dist/components/Slider.d.ts +28 -11
- package/dist/components/Slider.js +20 -20
- package/dist/components/Steps.css +1 -1
- package/dist/components/Steps.d.ts +0 -1
- package/dist/components/Steps.js +1 -12
- package/dist/components/Tabs.d.ts +17 -20
- package/dist/components/Tabs.js +7 -9
- package/dist/components/Text.d.ts +55 -36
- package/dist/components/Text.js +35 -22
- package/dist/components/Title.d.ts +19 -27
- package/dist/components/Title.js +2 -1
- package/dist/components/Toaster.js +9 -2
- package/dist/components/Tooltip.d.ts +10 -15
- package/dist/components/copy-props.d.ts +14 -3
- package/dist/components/copy-props.js +14 -3
- package/dist/components/select-tree.d.ts +24 -0
- package/dist/components/select-tree.js +35 -0
- package/dist/element-base.d.ts +10 -0
- package/dist/element-base.js +15 -0
- package/dist/elements/a-avatar.css +1 -1
- package/dist/elements/a-avatar.js +2 -28
- package/dist/elements/a-banner.css +1 -1
- package/dist/elements/a-banner.d.ts +4 -1
- package/dist/elements/a-banner.js +22 -112
- package/dist/elements/a-breadcrumbs.d.ts +1 -0
- package/dist/elements/a-breadcrumbs.js +1 -0
- package/dist/elements/a-button.css +1 -1
- package/dist/elements/a-button.d.ts +10 -7
- package/dist/elements/a-button.js +18 -1
- package/dist/elements/a-calendar.d.ts +14 -13
- package/dist/elements/a-calendar.js +29 -24
- package/dist/elements/a-card.css +1 -1
- package/dist/elements/a-card.d.ts +0 -9
- package/dist/elements/a-card.js +0 -184
- package/dist/elements/a-checkbox.css +1 -1
- package/dist/elements/a-copy.css +1 -1
- package/dist/elements/a-copy.d.ts +1 -5
- package/dist/elements/a-copy.js +129 -108
- package/dist/elements/a-dialog.css +1 -1
- package/dist/elements/a-dialog.d.ts +1 -1
- package/dist/elements/a-dialog.js +68 -194
- package/dist/elements/a-expander.css +1 -1
- package/dist/elements/a-expander.d.ts +4 -30
- package/dist/elements/a-expander.js +85 -344
- package/dist/elements/a-icon.d.ts +5 -23
- package/dist/elements/a-icon.js +1 -2
- package/dist/elements/a-input-date.d.ts +1 -0
- package/dist/elements/a-input-date.js +1 -0
- package/dist/elements/a-input-time.css +1 -1
- package/dist/elements/a-input-time.d.ts +2 -1
- package/dist/elements/a-input-time.js +101 -168
- package/dist/elements/a-input.css +1 -1
- package/dist/elements/a-input.d.ts +10 -8
- package/dist/elements/a-input.js +155 -230
- package/dist/elements/a-loader.d.ts +5 -8
- package/dist/elements/a-loader.js +1 -2
- package/dist/elements/a-menu-item.css +1 -1
- package/dist/elements/a-menu-item.d.ts +5 -3
- package/dist/elements/a-menu-item.js +5 -1
- package/dist/elements/a-menu.css +1 -1
- package/dist/elements/a-menu.d.ts +5 -7
- package/dist/elements/a-menu.js +383 -299
- package/dist/elements/a-panel.css +1 -1
- package/dist/elements/a-panel.js +19 -37
- package/dist/elements/a-progress.css +1 -1
- package/dist/elements/a-progress.d.ts +0 -22
- package/dist/elements/a-progress.js +0 -100
- package/dist/elements/a-radio-group.d.ts +1 -1
- package/dist/elements/a-radio-group.js +6 -4
- package/dist/elements/a-select-faceted.d.ts +1 -0
- package/dist/elements/a-select-faceted.js +1 -0
- package/dist/elements/a-select.d.ts +1 -0
- package/dist/elements/a-select.js +1 -0
- package/dist/elements/a-slider.css +1 -1
- package/dist/elements/a-slider.d.ts +11 -3
- package/dist/elements/a-slider.js +244 -242
- package/dist/elements/a-steps.d.ts +1 -0
- package/dist/elements/a-steps.js +1 -0
- package/dist/elements/a-switch.css +1 -1
- package/dist/elements/a-tab.css +1 -1
- package/dist/elements/a-tabpanel.d.ts +2 -2
- package/dist/elements/a-tabpanel.js +13 -3
- package/dist/elements/a-tabs.css +1 -1
- package/dist/elements/a-tabs.d.ts +1 -1
- package/dist/elements/a-tabs.js +6 -4
- package/dist/elements/a-tag.css +1 -1
- package/dist/elements/a-tag.d.ts +1 -0
- package/dist/elements/a-tag.js +1 -0
- package/dist/elements/a-text.css +1 -1
- package/dist/elements/a-text.d.ts +6 -43
- package/dist/elements/a-text.js +110 -193
- package/dist/elements/a-title.css +1 -1
- package/dist/elements/a-title.d.ts +1 -0
- package/dist/elements/a-title.js +1 -0
- package/dist/elements/a-toast.css +1 -1
- package/dist/elements/a-toast.d.ts +10 -45
- package/dist/elements/a-toast.js +80 -66
- package/dist/elements/a-toaster.css +1 -1
- package/dist/elements/a-toaster.js +9 -44
- package/dist/elements/a-tooltip.css +1 -1
- package/dist/elements/a-tooltip.d.ts +1 -1
- package/dist/elements/a-tooltip.js +142 -136
- package/dist/elements/copy-behavior.d.ts +1 -1
- package/dist/elements/copy-behavior.js +21 -21
- package/dist/elements/index.d.ts +9 -3
- package/dist/elements/index.js +6 -6
- package/dist/elements/input-focus-modality.d.ts +15 -0
- package/dist/elements/input-focus-modality.js +44 -0
- package/dist/elements/input-trailing-actions.d.ts +5 -0
- package/dist/elements/input-trailing-actions.js +38 -0
- package/dist/elements/shadow-aria.d.ts +2 -0
- package/dist/elements/shadow-aria.js +2 -1
- package/dist/elements/value-input.d.ts +3 -0
- package/dist/elements/value-input.js +12 -0
- package/dist/general_types.d.ts +103 -96
- package/dist/index.d.ts +1 -1
- package/dist/input-events.d.ts +4 -0
- package/dist/input-events.js +15 -0
- package/dist/jsx-runtime.d.ts +70 -23
- package/dist/jsx-runtime.js +26 -19
- package/dist/native-event-props.d.ts +2 -0
- package/dist/native-event-props.js +10 -0
- package/dist/reset.css +1 -1
- package/dist/theme-antithesis.css +10 -1
- package/dist/theme-antune.css +1 -1
- package/docs/accessibility.md +17 -3
- package/docs/changelog.md +384 -2
- package/docs/comparison.md +2 -2
- package/docs/components/avatar.md +5 -0
- package/docs/components/banner.md +117 -187
- package/docs/components/breadcrumbs.md +9 -6
- package/docs/components/button.md +22 -0
- package/docs/components/card.md +74 -28
- package/docs/components/checkbox.md +9 -10
- package/docs/components/dialog.md +83 -32
- package/docs/components/expander.md +198 -435
- package/docs/components/icon.md +11 -17
- package/docs/components/input-autocomplete.md +152 -52
- package/docs/components/input-date.md +175 -148
- package/docs/components/input-time.md +81 -38
- package/docs/components/input.md +343 -349
- package/docs/components/loader.md +2 -1
- package/docs/components/menu.md +35 -6
- package/docs/components/panel.md +18 -0
- package/docs/components/progress.md +83 -49
- package/docs/components/radio.md +39 -43
- package/docs/components/select-faceted.md +54 -7
- package/docs/components/select.md +390 -386
- package/docs/components/slider.md +136 -19
- package/docs/components/steps.md +6 -3
- package/docs/components/switch.md +8 -9
- package/docs/components/tabs.md +110 -104
- package/docs/components/text.md +110 -86
- package/docs/components/title.md +47 -33
- package/docs/components/toaster.md +242 -84
- package/docs/components/tooltip.md +204 -113
- package/docs/install-config.md +461 -96
- package/docs/packages/plot.md +228 -143
- package/docs/theming.md +29 -13
- package/package.json +43 -4
- package/theme-antithesis-license.md +66 -0
|
@@ -1,5 +1,8 @@
|
|
|
1
|
+
import { CLEAR_TRIGGER, CLEAR_CLICK_EVENT, CLEAR_INPUT_EVENT, ownsInputClearRequest } from "../input-events";
|
|
2
|
+
import { inputTrailingActions } from "./input-trailing-actions";
|
|
1
3
|
import { HTMLElementBase, isModifiedNavigationKey } from "../anta_helpers";
|
|
2
4
|
import { applyShadowAria, ariaAttributeProperty } from "./shadow-aria";
|
|
5
|
+
import { MODALITY, trackFocusModality } from "./input-focus-modality";
|
|
3
6
|
import "./a-input-time.css";
|
|
4
7
|
const INPUT_TIME_ARIA = [
|
|
5
8
|
"aria-label",
|
|
@@ -12,8 +15,6 @@ const INPUT_TIME_ARIA = [
|
|
|
12
15
|
const INPUT_TIME_ARIA_SET = new Set(INPUT_TIME_ARIA);
|
|
13
16
|
const READ_DELEGATED_ARIA = /* @__PURE__ */ Symbol("readDelegatedAria");
|
|
14
17
|
const WRITE_DELEGATED_ARIA = /* @__PURE__ */ Symbol("writeDelegatedAria");
|
|
15
|
-
const CLEAR_TRIGGER = "clearrequest";
|
|
16
|
-
const CLEAR_INPUT_EVENT = "clearinput";
|
|
17
18
|
const pad2 = (n) => String(n).padStart(2, "0");
|
|
18
19
|
const inputColumns = (value) => Array.from(value).reduce((columns, char) => columns + (/[ᄀ-ᅟ⺀-가-힣豈-︐-!-⦆¢-₩]/u.test(char) ? 2 : 1), 0);
|
|
19
20
|
const to24 = (h12, period) => period === "pm" ? h12 % 12 + 12 : h12 % 12;
|
|
@@ -21,148 +22,8 @@ const parseTime = (value) => {
|
|
|
21
22
|
const match = /^(\d{1,2}):(\d{2})$/.exec((value ?? "").trim());
|
|
22
23
|
return match ? { h: Math.min(23, Number(match[1])), min: Math.min(59, Number(match[2])) } : null;
|
|
23
24
|
};
|
|
24
|
-
const SHADOW_STYLE = `
|
|
25
|
-
:host {
|
|
26
|
-
display: grid;
|
|
27
|
-
grid-template-columns: minmax(0, 1fr);
|
|
28
|
-
row-gap: 4px;
|
|
29
|
-
outline: none;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
.label {
|
|
33
|
-
display: none;
|
|
34
|
-
color: var(--input-time-label);
|
|
35
|
-
font-family: var(--sans-serif);
|
|
36
|
-
font-size: var(--input-time-font-size);
|
|
37
|
-
line-height: var(--input-time-line-height);
|
|
38
|
-
font-weight: 500;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
.field {
|
|
42
|
-
--_bc: var(--input-time-border);
|
|
43
|
-
--_bw: 0.5px;
|
|
44
|
-
|
|
45
|
-
display: flex;
|
|
46
|
-
align-items: center;
|
|
47
|
-
box-sizing: border-box;
|
|
48
|
-
min-height: var(--input-time-field-height);
|
|
49
|
-
background: var(--input-time-bg);
|
|
50
|
-
border-radius: var(--input-time-field-radius);
|
|
51
|
-
box-shadow: inset 0 0 0 var(--_bw) var(--_bc);
|
|
52
|
-
transition: box-shadow 120ms ease;
|
|
53
|
-
}
|
|
54
|
-
:host([status]:not([status="neutral"])) .field { --_bw: 1px; }
|
|
55
|
-
|
|
56
|
-
@media (hover: hover) and (pointer: fine) {
|
|
57
|
-
:host(:not(:disabled)) .field:hover {
|
|
58
|
-
--_bc: var(--input-time-border-hover);
|
|
59
|
-
--_bw: 1px;
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
.field:focus-within {
|
|
63
|
-
--_bc: var(--input-time-border-hover);
|
|
64
|
-
--_bw: 1px;
|
|
65
|
-
outline: 1px solid var(--focus-ring);
|
|
66
|
-
outline-offset: 1px;
|
|
67
|
-
}
|
|
68
|
-
@media (forced-colors: active) { .field { border: 1px solid ButtonBorder; } }
|
|
69
|
-
|
|
70
|
-
slot[name="leading"] {
|
|
71
|
-
display: none;
|
|
72
|
-
color: var(--input-time-adornment);
|
|
73
|
-
font-size: var(--input-time-font-size);
|
|
74
|
-
line-height: var(--input-time-line-height);
|
|
75
|
-
}
|
|
76
|
-
:host([dim-actions]) slot[name="leading"] { opacity: 0.6; transition: opacity 120ms ease; }
|
|
77
|
-
:host([dim-actions]:not(:disabled)) .field:hover slot[name="leading"],
|
|
78
|
-
:host([dim-actions]:not(:disabled)) .field:focus-within slot[name="leading"] { opacity: 1; }
|
|
79
|
-
:host(:disabled) slot[name="leading"] { opacity: 0.5; pointer-events: none; }
|
|
80
|
-
|
|
81
|
-
.segments {
|
|
82
|
-
display: flex;
|
|
83
|
-
align-items: center;
|
|
84
|
-
flex: 1 1 auto;
|
|
85
|
-
min-width: 0;
|
|
86
|
-
padding-inline: 7px;
|
|
87
|
-
color: var(--input-time-text);
|
|
88
|
-
font-family: var(--sans-serif);
|
|
89
|
-
font-stretch: normal;
|
|
90
|
-
font-style: normal;
|
|
91
|
-
font-size: var(--input-time-font-size);
|
|
92
|
-
line-height: var(--input-time-line-height);
|
|
93
|
-
font-weight: 400;
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
.seg {
|
|
97
|
-
appearance: none;
|
|
98
|
-
display: inline-block;
|
|
99
|
-
box-sizing: border-box;
|
|
100
|
-
min-width: 0;
|
|
101
|
-
padding-inline: 1px;
|
|
102
|
-
border: 0;
|
|
103
|
-
border-radius: 2px;
|
|
104
|
-
background: transparent;
|
|
105
|
-
color: inherit;
|
|
106
|
-
font: inherit;
|
|
107
|
-
font-variation-settings: inherit;
|
|
108
|
-
font-stretch: inherit;
|
|
109
|
-
font-style: inherit;
|
|
110
|
-
line-height: inherit;
|
|
111
|
-
text-align: center;
|
|
112
|
-
white-space: nowrap;
|
|
113
|
-
outline: none;
|
|
114
|
-
cursor: text;
|
|
115
|
-
font-variant-numeric: tabular-nums;
|
|
116
|
-
}
|
|
117
|
-
.seg--period {
|
|
118
|
-
field-sizing: content;
|
|
119
|
-
width: auto;
|
|
120
|
-
color: var(--input-time-period-color);
|
|
121
|
-
}
|
|
122
|
-
.seg::placeholder {
|
|
123
|
-
color: var(--input-time-placeholder);
|
|
124
|
-
opacity: 1;
|
|
125
|
-
}
|
|
126
|
-
.lit {
|
|
127
|
-
margin-inline: -1px;
|
|
128
|
-
white-space: pre;
|
|
129
|
-
color: var(--input-time-text);
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
:host(:disabled) .segments { cursor: not-allowed; }
|
|
133
|
-
:host(:disabled) .seg { cursor: not-allowed; }
|
|
134
|
-
|
|
135
|
-
slot[name="trailing"] { display: none; }
|
|
136
|
-
:host([dim-actions]) slot[name="trailing"],
|
|
137
|
-
:host([dim-actions]) slot[name="clear"] { opacity: 0.6; transition: opacity 120ms ease; }
|
|
138
|
-
:host([dim-actions]:not(:disabled)) .field:hover slot[name="trailing"],
|
|
139
|
-
:host([dim-actions]:not(:disabled)) .field:hover slot[name="clear"],
|
|
140
|
-
:host([dim-actions]:not(:disabled)) .field:focus-within slot[name="trailing"],
|
|
141
|
-
:host([dim-actions]:not(:disabled)) .field:focus-within slot[name="clear"] { opacity: 1; }
|
|
142
|
-
|
|
143
|
-
slot[name="clear"] {
|
|
144
|
-
display: flex;
|
|
145
|
-
align-items: center;
|
|
146
|
-
flex-shrink: 0;
|
|
147
|
-
visibility: hidden;
|
|
148
|
-
}
|
|
149
|
-
:host(:state(filled):not(:disabled)) slot[name="clear"] { visibility: visible; }
|
|
150
|
-
|
|
151
|
-
.hint {
|
|
152
|
-
display: none;
|
|
153
|
-
gap: 4px;
|
|
154
|
-
align-items: flex-start;
|
|
155
|
-
padding-inline-start: 1px;
|
|
156
|
-
color: var(--input-time-hint);
|
|
157
|
-
font-family: var(--sans-serif);
|
|
158
|
-
font-size: calc(var(--input-time-font-size) - 1px);
|
|
159
|
-
line-height: calc(var(--input-time-line-height) - 2px);
|
|
160
|
-
}
|
|
161
|
-
`;
|
|
162
25
|
const INPUT_TIME_TEMPLATE = typeof document === "undefined" ? void 0 : (() => {
|
|
163
26
|
const template = document.createElement("template");
|
|
164
|
-
const style = document.createElement("style");
|
|
165
|
-
style.textContent = SHADOW_STYLE;
|
|
166
27
|
const label = document.createElement("slot");
|
|
167
28
|
label.className = "label";
|
|
168
29
|
label.part.add("label");
|
|
@@ -188,7 +49,7 @@ const INPUT_TIME_TEMPLATE = typeof document === "undefined" ? void 0 : (() => {
|
|
|
188
49
|
hint.className = "hint";
|
|
189
50
|
hint.part.add("hint");
|
|
190
51
|
hint.name = "hint";
|
|
191
|
-
template.content.append(
|
|
52
|
+
template.content.append(label, field, document.createElement("slot"), hint);
|
|
192
53
|
return template;
|
|
193
54
|
})();
|
|
194
55
|
class AInputTimeElement extends HTMLElementBase {
|
|
@@ -200,6 +61,7 @@ class AInputTimeElement extends HTMLElementBase {
|
|
|
200
61
|
"hour12",
|
|
201
62
|
"status",
|
|
202
63
|
"disabled",
|
|
64
|
+
"readonly",
|
|
203
65
|
"min",
|
|
204
66
|
"max",
|
|
205
67
|
"required",
|
|
@@ -210,6 +72,9 @@ class AInputTimeElement extends HTMLElementBase {
|
|
|
210
72
|
#labelSlot;
|
|
211
73
|
#hintSlot;
|
|
212
74
|
#segRow;
|
|
75
|
+
#trailingSlot;
|
|
76
|
+
#trailingActions;
|
|
77
|
+
#releaseModality;
|
|
213
78
|
#ready = false;
|
|
214
79
|
#formDisabled = false;
|
|
215
80
|
// True once a value arrived via the `value` property setter — so connect
|
|
@@ -232,6 +97,7 @@ class AInputTimeElement extends HTMLElementBase {
|
|
|
232
97
|
// Pointer-focused inputs keep the browser's caret placement. Keyboard focus
|
|
233
98
|
// selects the segment so a new value can be typed immediately.
|
|
234
99
|
#pointerSegment;
|
|
100
|
+
#editedSinceChange = false;
|
|
235
101
|
constructor() {
|
|
236
102
|
super();
|
|
237
103
|
try {
|
|
@@ -249,27 +115,56 @@ class AInputTimeElement extends HTMLElementBase {
|
|
|
249
115
|
this.#hintSlot.addEventListener("slotchange", this.#onHintSlotChange);
|
|
250
116
|
this.#field = shadow.querySelector(".field");
|
|
251
117
|
this.#segRow = shadow.querySelector(".segments");
|
|
118
|
+
this.#trailingSlot = shadow.querySelector("slot[name=trailing]");
|
|
119
|
+
this.#trailingActions = inputTrailingActions(this, this.#trailingSlot, "a-input-time-trailing", (actions) => {
|
|
120
|
+
this.#internals?.states?.[actions ? "add" : "delete"]("trailing-actions");
|
|
121
|
+
});
|
|
122
|
+
this.#trailingSlot.addEventListener("slotchange", this.#trailingActions.sync);
|
|
252
123
|
this.#field.addEventListener("mousedown", this.#onFieldMouseDown);
|
|
124
|
+
this.#field.addEventListener("mouseup", this.#resetPointerSegment);
|
|
253
125
|
this.#segRow.addEventListener("input", this.#onInput);
|
|
254
126
|
this.#segRow.addEventListener("keydown", this.#onKeyDown);
|
|
255
127
|
this.#segRow.addEventListener("focusin", this.#onFocusIn);
|
|
256
128
|
this.#segRow.addEventListener("focusout", this.#onFocusOut);
|
|
257
129
|
this.#segRow.addEventListener("paste", this.#onPaste);
|
|
258
|
-
this.addEventListener(CLEAR_TRIGGER, () =>
|
|
130
|
+
this.addEventListener(CLEAR_TRIGGER, (event) => {
|
|
131
|
+
if (!ownsInputClearRequest(this, event) || this.#disabled || this.hasAttribute("readonly")) return;
|
|
132
|
+
if (this.dispatchEvent(new CustomEvent(CLEAR_CLICK_EVENT, { bubbles: true, cancelable: true }))) this.clear();
|
|
133
|
+
});
|
|
259
134
|
}
|
|
260
135
|
getAnchorRect() {
|
|
261
136
|
return this.#field.getBoundingClientRect();
|
|
262
137
|
}
|
|
263
138
|
connectedCallback() {
|
|
139
|
+
this.#releaseModality?.();
|
|
140
|
+
this.#releaseModality = trackFocusModality(this.doc, this.#syncFocus);
|
|
141
|
+
if (Object.prototype.hasOwnProperty.call(this, "name")) {
|
|
142
|
+
const name = this.name;
|
|
143
|
+
delete this.name;
|
|
144
|
+
this.name = name;
|
|
145
|
+
}
|
|
264
146
|
if (Object.prototype.hasOwnProperty.call(this, "value")) {
|
|
265
147
|
const v = this.value;
|
|
266
148
|
delete this.value;
|
|
267
149
|
this.#seed(v);
|
|
268
|
-
} else if (!this.#seeded) {
|
|
150
|
+
} else if (!this.#ready && !this.#seeded) {
|
|
269
151
|
this.#seed(this.getAttribute("value") ?? this.getAttribute("defaultvalue") ?? "");
|
|
270
152
|
}
|
|
271
|
-
this.#
|
|
272
|
-
|
|
153
|
+
if (this.#ready) {
|
|
154
|
+
this.#applyGroupLabel();
|
|
155
|
+
this.#applyGroupDescription();
|
|
156
|
+
} else {
|
|
157
|
+
this.#buildSegments();
|
|
158
|
+
this.#ready = true;
|
|
159
|
+
}
|
|
160
|
+
this.#trailingActions.sync();
|
|
161
|
+
}
|
|
162
|
+
disconnectedCallback() {
|
|
163
|
+
this.#trailingActions.disconnect();
|
|
164
|
+
this.#releaseModality?.();
|
|
165
|
+
this.#releaseModality = void 0;
|
|
166
|
+
this.#pointerSegment = void 0;
|
|
167
|
+
this.#internals?.states?.delete("kb-focus");
|
|
273
168
|
}
|
|
274
169
|
/** Seed the value state + canonical cache before the segments exist. */
|
|
275
170
|
#seed(v) {
|
|
@@ -294,10 +189,12 @@ class AInputTimeElement extends HTMLElementBase {
|
|
|
294
189
|
}
|
|
295
190
|
if (name === "status") {
|
|
296
191
|
this.#syncStatus();
|
|
192
|
+
this.#updateValidity();
|
|
297
193
|
return;
|
|
298
194
|
}
|
|
299
|
-
if (name === "disabled") {
|
|
195
|
+
if (name === "disabled" || name === "readonly") {
|
|
300
196
|
this.#syncDisabled();
|
|
197
|
+
this.#syncFocus();
|
|
301
198
|
return;
|
|
302
199
|
}
|
|
303
200
|
if (name === "min" || name === "max") {
|
|
@@ -412,7 +309,7 @@ class AInputTimeElement extends HTMLElementBase {
|
|
|
412
309
|
this.#literals = [];
|
|
413
310
|
for (const part of parts) {
|
|
414
311
|
if (part.type === "hour" || part.type === "minute" || part.type === "dayPeriod") {
|
|
415
|
-
const el =
|
|
312
|
+
const el = this.doc.createElement("input");
|
|
416
313
|
const kind = part.type === "dayPeriod" ? "period" : part.type;
|
|
417
314
|
el.className = `seg seg--${kind}`;
|
|
418
315
|
el.type = "text";
|
|
@@ -436,7 +333,7 @@ class AInputTimeElement extends HTMLElementBase {
|
|
|
436
333
|
this.#segs.push(seg);
|
|
437
334
|
} else {
|
|
438
335
|
if (!part.value.trim()) continue;
|
|
439
|
-
const lit =
|
|
336
|
+
const lit = this.doc.createElement("span");
|
|
440
337
|
lit.className = "lit";
|
|
441
338
|
lit.part.add("literal");
|
|
442
339
|
lit.setAttribute("aria-hidden", "true");
|
|
@@ -459,15 +356,16 @@ class AInputTimeElement extends HTMLElementBase {
|
|
|
459
356
|
#pmText = "PM";
|
|
460
357
|
// --- Native segment editing + navigation ---
|
|
461
358
|
#segFromTarget(target) {
|
|
462
|
-
if (!(target instanceof HTMLInputElement)) return void 0;
|
|
463
359
|
return this.#segs.find((seg) => seg.el === target);
|
|
464
360
|
}
|
|
465
361
|
// Clicking the field's padding (rather than a native input) moves focus into
|
|
466
|
-
// the editor.
|
|
362
|
+
// the editor. Compatibility mousedown waits until a touch tap completes;
|
|
363
|
+
// native input targets keep the browser's caret placement.
|
|
467
364
|
#onFieldMouseDown = (e) => {
|
|
365
|
+
if (e.button !== 0) return;
|
|
468
366
|
const seg = this.#segFromTarget(e.target);
|
|
469
367
|
if (seg) {
|
|
470
|
-
this.#pointerSegment = seg.el;
|
|
368
|
+
this.#pointerSegment = this.shadowRoot?.activeElement === seg.el ? void 0 : seg.el;
|
|
471
369
|
return;
|
|
472
370
|
}
|
|
473
371
|
if (e.target === this.#field || e.target === this.#segRow) {
|
|
@@ -475,9 +373,13 @@ class AInputTimeElement extends HTMLElementBase {
|
|
|
475
373
|
this.#focusSegment(this.#segs[0]);
|
|
476
374
|
}
|
|
477
375
|
};
|
|
376
|
+
#resetPointerSegment = () => {
|
|
377
|
+
this.#pointerSegment = void 0;
|
|
378
|
+
};
|
|
478
379
|
#onFocusIn = (e) => {
|
|
479
380
|
const seg = this.#segFromTarget(e.target);
|
|
480
381
|
if (!seg) return;
|
|
382
|
+
this.#syncFocus();
|
|
481
383
|
const pointerFocused = this.#pointerSegment === seg.el;
|
|
482
384
|
this.#pointerSegment = void 0;
|
|
483
385
|
if (!pointerFocused) {
|
|
@@ -486,20 +388,26 @@ class AInputTimeElement extends HTMLElementBase {
|
|
|
486
388
|
});
|
|
487
389
|
}
|
|
488
390
|
};
|
|
489
|
-
#onFocusOut = (
|
|
391
|
+
#onFocusOut = (e) => {
|
|
392
|
+
if (this.#pointerSegment === e.target) this.#resetPointerSegment();
|
|
490
393
|
queueMicrotask(() => {
|
|
394
|
+
this.#syncFocus();
|
|
491
395
|
const active = this.shadowRoot?.activeElement;
|
|
492
|
-
if (this.#segs.some((seg) => seg.el === active)) return;
|
|
493
|
-
|
|
396
|
+
if (this.isConnected && this.#segs.some((seg) => seg.el === active)) return;
|
|
397
|
+
const readonly = this.hasAttribute("readonly");
|
|
398
|
+
if (readonly && !this.#editedSinceChange) return;
|
|
399
|
+
if (!readonly && this.#clampIfComplete()) this.#commitEdit();
|
|
494
400
|
this.#dispatch("change");
|
|
495
401
|
});
|
|
496
402
|
};
|
|
497
403
|
#onKeyDown = (e) => {
|
|
404
|
+
this.#resetPointerSegment();
|
|
498
405
|
if (isModifiedNavigationKey(e)) return;
|
|
499
406
|
const seg = this.#segFromTarget(e.target);
|
|
500
407
|
if (!seg) return;
|
|
501
408
|
const { el } = seg;
|
|
502
409
|
const key = e.key;
|
|
410
|
+
if ((this.#disabled || this.hasAttribute("readonly")) && ["ArrowUp", "ArrowDown", "PageUp", "PageDown"].includes(key)) return;
|
|
503
411
|
if (key === "ArrowUp" || key === "ArrowDown") {
|
|
504
412
|
e.preventDefault();
|
|
505
413
|
this.#step(seg, key === "ArrowUp" ? 1 : -1);
|
|
@@ -533,6 +441,7 @@ class AInputTimeElement extends HTMLElementBase {
|
|
|
533
441
|
}
|
|
534
442
|
};
|
|
535
443
|
#onPaste = (e) => {
|
|
444
|
+
if (this.#disabled || this.hasAttribute("readonly")) return;
|
|
536
445
|
const text = e.clipboardData?.getData("text/plain").trim() ?? "";
|
|
537
446
|
if (!/^(?:[01]?\d|2[0-3]):[0-5]\d$/.test(text)) return;
|
|
538
447
|
e.preventDefault();
|
|
@@ -542,7 +451,8 @@ class AInputTimeElement extends HTMLElementBase {
|
|
|
542
451
|
};
|
|
543
452
|
#onInput = (e) => {
|
|
544
453
|
const seg = this.#segFromTarget(e.target);
|
|
545
|
-
if (!seg || e.isComposing) return;
|
|
454
|
+
if (!seg || this.#disabled || this.hasAttribute("readonly") || e.isComposing) return;
|
|
455
|
+
this.#editedSinceChange = true;
|
|
546
456
|
if (seg.kind === "period") this.#onPeriodInput(e, seg);
|
|
547
457
|
else this.#onNumericInput(seg);
|
|
548
458
|
};
|
|
@@ -615,6 +525,7 @@ class AInputTimeElement extends HTMLElementBase {
|
|
|
615
525
|
* from empty, ↑ lands on min and ↓ on max. Clamps the resulting complete value
|
|
616
526
|
* into the field's `min`/`max` range (so ↑ can't step past `max`). */
|
|
617
527
|
#step(seg, delta) {
|
|
528
|
+
this.#editedSinceChange = true;
|
|
618
529
|
if (seg.kind === "period") {
|
|
619
530
|
this.#period = this.#period == null ? "am" : this.#period === "am" ? "pm" : "am";
|
|
620
531
|
this.#clampIfComplete();
|
|
@@ -735,29 +646,49 @@ class AInputTimeElement extends HTMLElementBase {
|
|
|
735
646
|
}
|
|
736
647
|
}
|
|
737
648
|
#dispatch(type) {
|
|
649
|
+
if (type === "change") this.#editedSinceChange = false;
|
|
738
650
|
this.dispatchEvent(new Event(type, { bubbles: true, composed: type === "input" }));
|
|
739
651
|
}
|
|
740
652
|
#applyGroupLabel() {
|
|
741
|
-
if (this.#delegatedAria.has("aria-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
653
|
+
if (this.#delegatedAria.has("aria-labelledby")) return;
|
|
654
|
+
if (this.#delegatedAria.has("aria-label")) {
|
|
655
|
+
this.#segRow.ariaLabelledByElements = [];
|
|
656
|
+
return;
|
|
657
|
+
}
|
|
658
|
+
this.#segRow.ariaLabelledByElements = this.#labelSlot.assignedElements();
|
|
745
659
|
}
|
|
746
660
|
#onLabelSlotChange = () => {
|
|
747
661
|
this.#applyGroupLabel();
|
|
748
662
|
};
|
|
749
663
|
#applyGroupDescription() {
|
|
750
|
-
if (this.#delegatedAria.has("aria-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
664
|
+
if (this.#delegatedAria.has("aria-describedby")) return;
|
|
665
|
+
if (this.#delegatedAria.has("aria-description")) {
|
|
666
|
+
this.#segRow.ariaDescribedByElements = [];
|
|
667
|
+
return;
|
|
668
|
+
}
|
|
669
|
+
this.#segRow.ariaDescribedByElements = this.#hintSlot.assignedElements();
|
|
754
670
|
}
|
|
755
671
|
#onHintSlotChange = () => {
|
|
756
672
|
this.#applyGroupDescription();
|
|
757
673
|
};
|
|
674
|
+
get #disabled() {
|
|
675
|
+
return this.hasAttribute("disabled") || this.#formDisabled;
|
|
676
|
+
}
|
|
677
|
+
#syncFocus = () => {
|
|
678
|
+
const modality = this.doc[MODALITY];
|
|
679
|
+
const focused = this.isConnected && !this.#disabled && this.#segs.some((seg) => seg.el === this.shadowRoot?.activeElement);
|
|
680
|
+
if (modality) {
|
|
681
|
+
if (focused && this.hasAttribute("readonly")) modality.active = this.#syncFocus;
|
|
682
|
+
else if (modality.active === this.#syncFocus) modality.active = void 0;
|
|
683
|
+
}
|
|
684
|
+
const keyboard = modality?.keyboard;
|
|
685
|
+
this.#internals?.states?.[keyboard && focused ? "add" : "delete"]("kb-focus");
|
|
686
|
+
};
|
|
758
687
|
#syncDisabled() {
|
|
759
|
-
const
|
|
760
|
-
|
|
688
|
+
for (const seg of this.#segs) {
|
|
689
|
+
seg.el.disabled = this.#disabled;
|
|
690
|
+
seg.el.readOnly = this.hasAttribute("readonly");
|
|
691
|
+
}
|
|
761
692
|
}
|
|
762
693
|
#syncStatus() {
|
|
763
694
|
const critical = this.getAttribute("status") === "critical";
|
|
@@ -831,7 +762,8 @@ class AInputTimeElement extends HTMLElementBase {
|
|
|
831
762
|
return this.getAttribute("name") ?? "";
|
|
832
763
|
}
|
|
833
764
|
set name(v) {
|
|
834
|
-
this.
|
|
765
|
+
if (v == null) this.removeAttribute("name");
|
|
766
|
+
else if (this.getAttribute("name") !== String(v)) this.setAttribute("name", String(v));
|
|
835
767
|
}
|
|
836
768
|
// Constraint-validation API, proxied from ElementInternals (mirrors a-input) so
|
|
837
769
|
// the host behaves like a native control and the `InputTime` wrapper can read
|
|
@@ -860,6 +792,7 @@ class AInputTimeElement extends HTMLElementBase {
|
|
|
860
792
|
formDisabledCallback(disabled) {
|
|
861
793
|
this.#formDisabled = disabled;
|
|
862
794
|
this.#syncDisabled();
|
|
795
|
+
this.#syncFocus();
|
|
863
796
|
}
|
|
864
797
|
formStateRestoreCallback(state) {
|
|
865
798
|
this.value = state ?? "";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
@layer base,anta,components,utilities;@layer anta.reset,anta.components,anta.theme;@layer anta.components{a-input:not(:defined){display:grid;grid-template-columns:minmax(0,1fr);row-gap:4px}a-input:not(:defined)>[slot=leading],a-input:not(:defined)>[slot=trailing],a-input:not(:defined)>[slot=clear],a-input:not(:defined)>[slot=hint]{display:none!important}a-input:not(:defined)>[slot=label]{display:block;color:var(--input-label);font-family:var(--sans-serif);font-size:15px;line-height:20px;font-weight:500}a-input[size=small]:not(:defined)>[slot=label]{font-size:13px;line-height:16px}a-input[size=large]:not(:defined)>[slot=label]{font-size:17px;line-height:22px}a-input:not(:defined):after{content:attr(placeholder);display:block;min-height:28px;line-height:28px;padding-inline:7px;border-radius:4px;background:var(--input-bg);box-shadow:inset 0 0 0 var(--input-border-width) var(--input-rest-border);color:var(--input-placeholder);font-family:var(--sans-serif);font-size:15px;font-weight:400;font-stretch:normal;font-style:normal;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}a-input[value]:not([value=""]):not([type=password]):not(:defined):after{content:attr(value);color:var(--input-text)}a-input[size=small]:not(:defined):after{min-height:24px;line-height:24px;font-size:13px}a-input[size=large]:not(:defined):after{min-height:32px;line-height:32px;font-size:17px}@media(forced-colors:active){a-input:not(:defined):after{border:1px solid ButtonBorder}}a-input[round]:not(:defined):after{border-radius:var(--input-round, 999px)}a-input{transition:opacity .28s ease-out 40ms}a-input:not(:defined){opacity:.5}@media(prefers-reduced-motion:reduce){a-input{transition:none}}a-input{--input-bg: var(--bg-1);--input-border: var(--border-2);--input-rest-border: var(--input-border);--input-border-width: .5px;--input-text: var(--text-1);--input-label: var(--text-3);--input-placeholder: var(--text-4);--input-adornment: var(--text-3);--input-hint: var(--text-3);--input-trailing-inset: 7px;width:100%}a-input[priority=secondary],a-input[priority=tertiary]{--input-bg: transparent}a-input[priority=tertiary]{--input-rest-border: transparent}@media(hover:hover)and (pointer:fine){a-input:not(:defined):not(:disabled):hover:after{box-shadow:inset 0 0 0 1px var(--input-border)}}a-input:has(>[slot=label])::part(label){display:block}a-input:has(>[slot=leading])::part(leading),a-input:has(>[slot=trailing])::part(trailing){display:flex;align-items:center;flex-shrink:0}a-input:has(>[slot=leading])::part(leading){margin-inline-start:7px}a-input:has(>[slot=trailing])::part(trailing){gap:2px;margin-inline-end:var(--input-trailing-inset, 7px)}a-input:has(>[slot=leading])::part(input){padding-inline-start:5px}a-input[truncate]:not([multiline])::part(input){text-overflow:ellipsis}a-input:has(>[slot=hint])::part(hint){display:flex}a-input[multiline]:has(>[slot=leading])::part(leading),a-input[multiline]:has(>[slot=trailing])::part(trailing){align-self:flex-start;height:calc(var(--_lh) + var(--_pad-block) * 2)}a-input:has([slot=trailing] :is(a-button,button)),a-input:has([slot=trailing]:is(a-button,button)){--input-trailing-inset: 0}a-input[round]{--input-round: 999px;@supports (border-radius: attr(probe type(<length>),1px)){--input-round: attr(round type(<length>), 999px)}}a-input[tone]:not([tone=""]):not([status]){--input-tone-source: var(--border-2);--input-border: light-dark( oklch(from var(--input-tone-source) .7 calc(c*.8) h), oklch(from var(--input-tone-source) .5 calc(c*.8) h) );@supports (color: attr(probe type(<color>),red)){--input-tone-source: attr(tone type(<color>), var(--border-2))}}a-input[status=critical]{--input-status-source: var(--anta-seed-critical);--input-bg: var(--bg-2-critical);--input-hint: var(--text-2-critical)}a-input[status=warning]{--input-status-source: var(--anta-seed-warning);--input-bg: var(--bg-2-warning);--input-hint: var(--text-2-warning)}a-input[status=success]{--input-status-source: var(--anta-seed-success);--input-bg: var(--bg-2-success);--input-hint: var(--text-2-success)}a-input[status=info]{--input-status-source: var(--anta-seed-info);--input-bg: var(--bg-2-info);--input-hint: var(--text-2-info)}a-input[status=brand]{--input-status-source: var(--anta-seed-brand);--input-bg: var(--bg-2-brand);--input-hint: var(--text-2-brand)}a-input[status]:not([status=neutral]){--input-border-width: 1px;--input-rest-border: var(--input-border);--input-border: light-dark( oklch(from var(--input-status-source) .58 c h), oklch(from var(--input-status-source) .52 c h) )}a-input:disabled{--input-bg: light-dark(#44374b12, #e4d1ef0d);--input-border: light-dark(#44374b26, #e4d1ef1f);--input-text: var(--text-4);--input-label: var(--text-4);--input-hint: var(--text-5);cursor:not-allowed}a-input[status]:disabled{--input-bg: light-dark(#44374b12, #e4d1ef0d);--input-border: light-dark(#44374b26, #e4d1ef1f);--input-hint: var(--text-5)}a-input[priority=secondary]:disabled,a-input[priority=tertiary]:disabled{--input-bg: transparent}a-input[size=small] a-icon{--icon-size: 14px}a-input[size=large] a-icon{--icon-size: 18px}a-input [slot=hint]>a-icon{margin-block-start:1px}a-input[size=small] [slot=hint]>a-icon{margin-block-start:.5px}a-input[size=large] [slot=hint]>a-icon{margin-block-start:1.5px}input[data-anta]:is(:not([type]),[type=text],[type=search],[type=email],[type=number],[type=password],[type=tel],[type=url],[type=date],[type=datetime-local],[type=month],[type=time],[type=week]),textarea[data-anta]{--native-field-block-size: 28px;--native-field-padding-block: 4px;--native-field-font-size: 15px;--native-field-line-height: 20px;--native-field-round: 4px;--native-field-border: var(--border-2);box-sizing:border-box;block-size:var(--native-field-block-size);margin:0;padding-block:var(--native-field-padding-block);padding-inline:7px;border:0;border-radius:var(--native-field-round);outline:0;background:var(--bg-1);box-shadow:inset 0 0 0 .5px var(--native-field-border);color:var(--text-1);caret-color:currentColor;color-scheme:inherit;font-family:var(--sans-serif);font-size:var(--native-field-font-size);font-weight:400;font-stretch:normal;font-style:normal;line-height:var(--native-field-line-height);transition:box-shadow .12s ease}textarea[data-anta]{block-size:auto;min-block-size:var(--native-field-block-size);resize:vertical;overflow-y:auto}input[data-anta][list]::-webkit-calendar-picker-indicator{opacity:0!important;pointer-events:none!important}@media(hover:hover)and (pointer:fine){input[data-anta]:is(:not([type]),[type=text],[type=search],[type=email],[type=number],[type=password],[type=tel],[type=url],[type=date],[type=datetime-local],[type=month],[type=time],[type=week]):not(:disabled):hover,textarea[data-anta]:not(:disabled):hover{box-shadow:inset 0 0 0 1px var(--native-field-border)}}input[data-anta]:is(:not([type]),[type=text],[type=search],[type=email],[type=number],[type=password],[type=tel],[type=url],[type=date],[type=datetime-local],[type=month],[type=time],[type=week]):focus,textarea[data-anta]:focus{box-shadow:inset 0 0 0 1px var(--native-field-border);outline:1px solid var(--focus-ring);outline-offset:1px}input[data-anta]:is(:not([type]),[type=text],[type=search],[type=email],[type=number],[type=password],[type=tel],[type=url],[type=date],[type=datetime-local],[type=month],[type=time],[type=week]):disabled,textarea[data-anta]:disabled{background:color-mix(in oklch,var(--text-1) 4%,var(--bg-1));box-shadow:inset 0 0 0 .5px color-mix(in oklch,var(--text-1) 15%,transparent);color:var(--text-4);cursor:not-allowed}input[data-anta][type=number]{appearance:textfield;-moz-appearance:textfield}input[data-anta][type=number]::-webkit-inner-spin-button,input[data-anta][type=number]::-webkit-outer-spin-button{appearance:none;margin:0}input[data-anta][type=file]{--native-file-block-size: 28px;--native-file-padding-block: 4px;--native-file-font-size: 15px;--native-file-line-height: 20px;box-sizing:border-box;min-block-size:var(--native-file-block-size);margin:0;padding:0;border:0;color:var(--text-2);color-scheme:inherit;font-family:var(--sans-serif);font-size:var(--native-file-font-size);font-weight:400;font-stretch:normal;font-style:normal;line-height:var(--native-file-line-height)}input[data-anta][type=file]::file-selector-button{box-sizing:border-box;min-block-size:var(--native-file-block-size);margin:0 8px 0 0;padding:var(--native-file-padding-block) 9px;border:0;border-radius:4px;color:var(--text-2);background:color-mix(in oklch,var(--text-1) 10%,transparent);box-shadow:inset 0 0 1px color-mix(in oklch,currentColor,transparent 90%);font:inherit;font-variation-settings:inherit;font-weight:450;letter-spacing:.05ch;line-height:var(--native-file-line-height);cursor:pointer;transition:color .15s ease-out,background-color .15s ease-out}@media(hover:hover)and (pointer:fine){input[data-anta][type=file]:not(:disabled):hover::file-selector-button{color:var(--text-1);background:color-mix(in oklch,var(--text-1) 15%,transparent)}}input[data-anta][type=file]:not(:disabled):active::file-selector-button{color:var(--text-1);background:color-mix(in oklch,var(--text-1) 20%,transparent)}input[data-anta][type=file]:focus-visible{outline:1px solid var(--focus-ring);outline-offset:1px}input[data-anta][type=file]:disabled{color:var(--text-4);cursor:not-allowed}input[data-anta][type=file]:disabled::file-selector-button{color:var(--text-4);background:color-mix(in oklch,var(--text-1) 4%,var(--bg-1));cursor:not-allowed}select[data-anta]{--native-field-block-size: 28px;--native-field-padding-block: 4px;--native-field-font-size: 15px;--native-field-line-height: 20px;--native-field-round: 4px;--native-field-border: var(--border-2);--native-select-picker-bg: light-dark( color-mix(in oklch, var(--bg-1) 90%, transparent), color-mix(in oklch, var(--bg-1) 78%, transparent) );--native-select-picker-radius: var(--radius-md, 8px);--native-select-picker-border: 1px solid var(--border-3);--native-select-picker-shadow: 0 2px 6px color-mix(in oklch, var(--text-1) 8%, transparent), 0 8px 24px color-mix(in oklch, var(--text-1) 10%, transparent);--native-select-option-color: var(--text-2);--native-select-option-hover: 5%;--native-select-option-active: 8%;--native-select-option-selected: 8%;--native-select-option-padding-x: 8px;--native-select-option-padding-y: 6px;box-sizing:border-box;block-size:var(--native-field-block-size);margin:0;padding-block:var(--native-field-padding-block);padding-inline:7px;border:0;border-radius:var(--native-field-round);outline:0;background:var(--bg-1);box-shadow:inset 0 0 0 .5px var(--native-field-border);color:var(--text-1);color-scheme:inherit;font-family:var(--sans-serif);font-size:var(--native-field-font-size);font-weight:400;font-stretch:normal;font-style:normal;line-height:var(--native-field-line-height);transition:box-shadow .12s ease}.dark select[data-anta]{--native-select-picker-shadow: 0 2px 8px color-mix(in oklch, black 50%, transparent), 0 12px 32px color-mix(in oklch, black 40%, transparent), inset 0 0 0 1px color-mix(in oklch, white 8%, transparent)}@media(hover:hover)and (pointer:fine){select[data-anta]:not(:disabled):hover{box-shadow:inset 0 0 0 1px var(--native-field-border)}}select[data-anta]:focus{box-shadow:inset 0 0 0 1px var(--native-field-border);outline:1px solid var(--focus-ring);outline-offset:1px}select[data-anta]:disabled{background:color-mix(in oklch,var(--text-1) 4%,var(--bg-1));box-shadow:inset 0 0 0 .5px color-mix(in oklch,var(--text-1) 15%,transparent);color:var(--text-4);cursor:not-allowed}@media(forced-colors:active){input[data-anta]:is(:not([type]),[type=text],[type=search],[type=email],[type=number],[type=password],[type=tel],[type=url],[type=date],[type=datetime-local],[type=month],[type=time],[type=week]),select[data-anta],textarea[data-anta]{border:1px solid ButtonBorder}}input[data-anta]:is(:not([type]),[type=text],[type=search],[type=email],[type=number],[type=password],[type=tel],[type=url],[type=date],[type=datetime-local],[type=month],[type=time],[type=week])[data-anta-size=small],select[data-anta][data-anta-size=small],textarea[data-anta][data-anta-size=small]{--native-field-block-size: 24px;--native-field-padding-block: 2px;--native-field-font-size: 13px;--native-field-line-height: 16px}input[data-anta]:is(:not([type]),[type=text],[type=search],[type=email],[type=number],[type=password],[type=tel],[type=url],[type=date],[type=datetime-local],[type=month],[type=time],[type=week])[data-anta-size=large],select[data-anta][data-anta-size=large],textarea[data-anta][data-anta-size=large]{--native-field-block-size: 32px;--native-field-padding-block: 5px;--native-field-font-size: 17px;--native-field-line-height: 22px}input[data-anta]:is(:not([type]),[type=text],[type=search],[type=email],[type=number],[type=password],[type=tel],[type=url],[type=date],[type=datetime-local],[type=month],[type=time],[type=week])[round],select[data-anta][round],textarea[data-anta][round]{--native-field-round: 999px;@supports (border-radius: attr(probe type(<length>),1px)){--native-field-round: attr(round type(<length>), 999px)}}input[data-anta]:is(:not([type]),[type=text],[type=search],[type=email],[type=number],[type=password],[type=tel],[type=url],[type=date],[type=datetime-local],[type=month],[type=time],[type=week])[tone]:not([tone=""]),textarea[data-anta][tone]:not([tone=""]){--native-field-tone: var(--border-2);--native-field-border: light-dark( oklch(from var(--native-field-tone) .7 calc(c*.8) h), oklch(from var(--native-field-tone) .5 calc(c*.8) h) );@supports (color: attr(probe type(<color>),red)){--native-field-tone: attr(tone type(<color>), var(--border-2))}}@supports (appearance: base-select){select[data-anta],select[data-anta]::picker(select){appearance:base-select;-webkit-appearance:base-select}select[data-anta]{padding:0}select[data-anta]>button{box-sizing:border-box;display:flex;align-items:center;gap:4px;inline-size:100%;min-block-size:var(--native-field-block-size);padding-block:var(--native-field-padding-block);padding-inline:7px;border:0;background:transparent;color:inherit;cursor:pointer;font:inherit;font-variation-settings:inherit;text-align:start}select[data-anta]>button>selectedcontent{flex:1;min-inline-size:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}select[data-anta]::picker-icon{display:none}select[data-anta]>button>a-icon{margin-inline-start:auto;color:var(--text-3);transition:transform .12s ease}select[data-anta]:open>button>a-icon{transform:rotate(180deg)}select[data-anta]::picker(select){box-sizing:border-box;display:flex;flex-direction:column;gap:1px;margin-block-start:4px;padding:4px;border:var(--native-select-picker-border);border-radius:var(--native-select-picker-radius);background:var(--native-select-picker-bg);box-shadow:var(--native-select-picker-shadow);color:var(--native-select-option-color);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}select[data-anta] option{box-sizing:border-box;min-block-size:28px;padding-block:var(--native-select-option-padding-y);padding-inline:var(--native-select-option-padding-x);border-radius:var(--radius-sm, 4px);background:transparent;color:var(--native-select-option-color);cursor:pointer;font-family:var(--sans-serif);font-size:14px;font-weight:400;font-stretch:normal;font-style:normal;letter-spacing:normal;line-height:16px;text-transform:none;transition:background-color .28s ease-out}select[data-anta] option:is(:hover,:focus-visible){background:color-mix(in oklch,currentColor var(--native-select-option-hover),transparent);transition:background-color 60ms ease-in-out}select[data-anta] option:focus-visible{outline:1px solid var(--focus-ring);outline-offset:1px}select[data-anta] option:active{background:color-mix(in oklch,currentColor var(--native-select-option-active),transparent);transition:none}select[data-anta] option:checked{background:color-mix(in oklch,currentColor var(--native-select-option-selected),transparent);transition:background-color .28s ease-out}select[data-anta] option:disabled{color:var(--text-5);cursor:default}select[data-anta] optgroup{display:flex;flex-direction:column;gap:1px;color:var(--text-5);font-family:var(--sans-serif);font-size:.75em;font-weight:600;letter-spacing:.06em;text-transform:uppercase}}}
|
|
1
|
+
@layer base,anta,components,utilities;@layer anta.reset,anta.components,anta.theme;@layer anta.components{a-input{--_fs: 15px;--_pad-block: 4px;--_lh: 20px;--_input-action-size: 24px;display:grid;grid-template-columns:minmax(0,1fr);row-gap:4px;outline:none}a-input::part(label){display:none;color:var(--input-label);font-family:var(--sans-serif);font-size:var(--_fs);line-height:var(--_lh);font-weight:500}a-input::part(field){--_bc: var(--input-rest-border);--_bw: var(--input-border-width);display:flex;align-items:center;box-sizing:border-box;min-height:var(--_input-measured-min-height, 28px);background:var(--input-bg);border-radius:4px;box-shadow:inset 0 0 0 var(--_bw) var(--_bc);transition:box-shadow .12s ease}a-input:state(multiline)::part(field){align-items:stretch}a-input[size=small]{--_fs: 13px;--_lh: 16px;--_input-action-size: 20px}a-input[size=large]{--_fs: 17px;--_lh: 22px;--_input-action-size: 28px}a-input:state(multiline){--_input-action-size: calc(var(--_lh) + var(--_pad-block) * 2 - 4px)}a-input[size=small]::part(field){min-height:var(--_input-measured-min-height, 24px)}a-input[size=large]::part(field){min-height:var(--_input-measured-min-height, 32px)}a-input[round]::part(field){border-radius:var(--input-round, 999px)}@media(hover:hover)and (pointer:fine){a-input:not(:disabled)::part(field):hover{--_bw: 1px;--_bc: var(--input-border)}}a-input:not(:disabled):not([readonly]):not(:state(button)):focus::part(field),a-input:not(:disabled):not([readonly]):state(button):focus:state(button-focus)::part(field),a-input:not(:disabled)[readonly]:focus:state(kb-focus)::part(field){--_bw: 1px;--_bc: var(--input-border);outline:var(--_input-focus-width, 1px) solid var(--focus-ring);outline-offset:var(--_input-focus-offset, 1px)}@media(forced-colors:active){a-input::part(field){border:1px solid ButtonBorder}}a-input::part(input){flex:1 1 auto;min-width:0;width:100%;box-sizing:border-box;border:0;margin:0;padding-block:0;padding-inline:7px;background:transparent;outline:none;color:var(--input-text);font-family:var(--sans-serif);font-stretch:normal;font-style:normal;font-variation-settings:inherit;font-size:var(--_fs);line-height:var(--_lh);font-weight:400;-webkit-appearance:none;appearance:none}a-input:state(multiline)::part(input){resize:none;padding-block:var(--_pad-block);overflow-y:auto}a-input:state(button)::part(input){align-self:stretch;text-align:start;white-space:nowrap;overflow:hidden;cursor:pointer}a-input:state(button):not(:state(filled))::part(input){color:var(--input-placeholder)}a-input[maxrows]:not([rows]):state(multiline)::part(input){max-height:calc(var(--_lh) * var(--_maxrows) + var(--_pad-block) * 2)}a-input:not(:state(button))::part(input)::placeholder{color:var(--input-placeholder);opacity:1}a-input::part(input):disabled{cursor:not-allowed}a-input[readonly]:not([disabled])::part(field),a-input[readonly]:not([disabled]):not(:state(multiline)):not(:state(button))::part(input),a-input[readonly]:not([disabled]):state(multiline)::part(input){cursor:pointer}a-input[readonly]:not([disabled]):not(:state(multiline)):not(:state(button))::part(input){text-overflow:ellipsis}a-input:not(:state(multiline)):not(:state(button))::part(input)::-webkit-search-cancel-button,a-input:not(:state(multiline)):not(:state(button))::part(input)::-webkit-search-decoration,a-input:not(:state(multiline)):not(:state(button))::part(input)::-webkit-search-results-button,a-input:not(:state(multiline)):not(:state(button))::part(input)::-webkit-search-results-decoration,a-input:not(:state(multiline)):not(:state(button))::part(input)::-webkit-inner-spin-button,a-input:not(:state(multiline)):not(:state(button))::part(input)::-webkit-outer-spin-button{-webkit-appearance:none;appearance:none;display:none}a-input:not(:state(multiline)):not(:state(button))::part(input)::-ms-clear,a-input:not(:state(multiline)):not(:state(button))::part(input)::-ms-reveal{display:none}a-input::part(leading),a-input::part(trailing){display:none;color:var(--input-adornment);font-size:var(--_fs);line-height:var(--_lh);font-stretch:var(--_input-adornment-font-stretch, normal)}a-input[dim-actions]::part(leading),a-input[dim-actions]::part(trailing),a-input[dim-actions]::part(clear){opacity:var(--_input-actions-opacity, .6);transition:opacity .12s ease}a-input[dim-actions]:not(:disabled)::part(field):hover,a-input[dim-actions]:not(:disabled)::part(field):focus-within{--_input-actions-opacity: 1}a-input:disabled::part(leading),a-input:disabled::part(trailing){opacity:.5;pointer-events:none}a-input::part(clear){display:flex;align-items:center;flex-shrink:0;visibility:hidden;box-sizing:border-box}a-input:has(>[slot=clear])::part(clear){padding:2px}a-input:state(filled):not(:disabled):not([readonly])::part(clear){visibility:visible}a-input:state(multiline):state(filled)::part(clear){align-self:flex-start;height:calc(var(--_lh) + var(--_pad-block) * 2)}a-input::part(hint){display:none;gap:4px;align-items:flex-start;padding-inline-start:1px;color:var(--input-hint);font-family:var(--sans-serif);font-size:calc(var(--_fs) - 1px);line-height:calc(var(--_lh) - 2px)}a-input:not(:defined){display:grid;grid-template-columns:minmax(0,1fr);row-gap:4px}a-input:not(:defined)>[slot=leading],a-input:not(:defined)>[slot=trailing],a-input:not(:defined)>[slot=clear],a-input:not(:defined)>[slot=hint]{display:none!important}a-input:not(:defined)>[slot=label]{display:block;color:var(--input-label);font-family:var(--sans-serif);font-size:15px;line-height:20px;font-weight:500}a-input[size=small]:not(:defined)>[slot=label]{font-size:13px;line-height:16px}a-input[size=large]:not(:defined)>[slot=label]{font-size:17px;line-height:22px}a-input:not(:defined):after{content:attr(placeholder);display:block;min-height:28px;line-height:28px;padding-inline:7px;border-radius:4px;background:var(--input-bg);box-shadow:inset 0 0 0 var(--input-border-width) var(--input-rest-border);color:var(--input-placeholder);font-family:var(--sans-serif);font-size:15px;font-weight:400;font-stretch:normal;font-style:normal;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}a-input[value]:not([value=""]):not([type=password]):not(:defined):after{content:attr(value);color:var(--input-text)}a-input[size=small]:not(:defined):after{min-height:24px;line-height:24px;font-size:13px}a-input[size=large]:not(:defined):after{min-height:32px;line-height:32px;font-size:17px}@media(forced-colors:active){a-input:not(:defined):after{border:1px solid ButtonBorder}}a-input[round]:not(:defined):after{border-radius:var(--input-round, 999px)}a-input{transition:opacity .28s ease-out 40ms}a-input:not(:defined){opacity:.5}@media(prefers-reduced-motion:reduce){a-input{transition:none}}a-input{--input-bg: var(--bg-1);--input-border: var(--border-2);--input-rest-border: var(--input-border);--input-border-width: .5px;--input-text: var(--text-1);--input-label: var(--text-3);--input-placeholder: var(--text-4);--input-adornment: var(--text-3);--input-status-text: var(--text-3);--input-hint: var(--text-3);width:100%}a-input[priority=secondary],a-input[priority=tertiary]{--input-bg: transparent}a-input[priority=tertiary]{--input-rest-border: transparent}@media(hover:hover)and (pointer:fine){a-input:not(:defined):not(:disabled):hover:after{box-shadow:inset 0 0 0 1px var(--input-border)}}a-input:defined>:is(a-input-label,a-input-leading,a-input-clear,a-input-trailing,a-input-hint){display:contents}a-input>a-input-leading>a-select-leading{display:contents;color:inherit}a-input>a-input-trailing>a-select-chevron{color:var(--input-status-text)}a-input:has(>[slot=label])::part(label){display:block}a-input:has(>[slot=leading])::part(leading),a-input:has(>[slot=trailing])::part(trailing){display:flex;align-items:center;flex-shrink:0}a-input:has(>[slot=leading])::part(leading){margin-inline-start:7px}a-input:has(>[slot=trailing])::part(trailing){gap:2px;margin-inline-end:var(--input-trailing-inset, 7px)}a-input:has(>[slot=leading])::part(input){padding-inline-start:5px}a-input[truncate]:not(:state(multiline))::part(input){text-overflow:ellipsis}a-input:has(>[slot=hint])::part(hint){display:flex}a-input:state(multiline):has(>[slot=leading])::part(leading),a-input:state(multiline):has(>[slot=trailing])::part(trailing){align-self:flex-start;height:calc(var(--_lh) + var(--_pad-block) * 2)}a-input>:is([slot=clear],[slot=trailing]) :is(a-button,button[data-anta],a[role=button][data-anta]),a-input>:is(a-button,button[data-anta],a[role=button][data-anta]):is([slot=clear],[slot=trailing]){--_fs: inherit;--_lh: inherit;--_pb: 0px;box-sizing:border-box;width:auto;min-width:var(--_input-action-size);height:var(--_input-action-size);min-height:0;justify-content:center;&[data-anta-icon-only]{width:var(--_input-action-size)}}a-input:state(trailing-actions)::part(trailing){margin-inline-end:0;padding-inline-end:var(--input-trailing-inset, 2px)}a-input[round]{--input-round: 999px;@supports (border-radius: attr(probe type(<length>),1px)){--input-round: attr(round type(<length>), 999px)}}a-input[tone]:not([tone=""]):not([status]){--input-tone-source: var(--border-2);--input-border: light-dark( oklch(from var(--input-tone-source) .7 calc(c*.8) h), oklch(from var(--input-tone-source) .5 calc(c*.8) h) );@supports (color: attr(probe type(<color>),red)){--input-tone-source: attr(tone type(<color>), var(--border-2))}}a-input[status=critical]{--input-status-source: var(--anta-seed-critical);--input-bg: var(--bg-2-critical);--input-status-text: var(--text-2-critical)}a-input[status=warning]{--input-status-source: var(--anta-seed-warning);--input-bg: var(--bg-2-warning);--input-status-text: var(--text-2-warning)}a-input[status=success]{--input-status-source: var(--anta-seed-success);--input-bg: var(--bg-2-success);--input-status-text: var(--text-2-success)}a-input[status=info]{--input-status-source: var(--anta-seed-info);--input-bg: var(--bg-2-info);--input-status-text: var(--text-2-info)}a-input[status=brand]{--input-status-source: var(--anta-seed-brand);--input-bg: var(--bg-2-brand);--input-status-text: var(--text-2-brand)}a-input[status]:not([status=neutral]){--input-hint: var(--input-status-text);--input-border-width: 1px;--input-rest-border: var(--input-border);--input-border: light-dark( oklch(from var(--input-status-source) .58 c h), oklch(from var(--input-status-source) .52 c h) )}a-input:disabled{--input-bg: light-dark(#44374b12, #e4d1ef0d);--input-border: light-dark(#44374b26, #e4d1ef1f);--input-text: var(--text-4);--input-label: var(--text-4);--input-hint: var(--text-5);cursor:not-allowed}a-input[status]:disabled{--input-bg: light-dark(#44374b12, #e4d1ef0d);--input-border: light-dark(#44374b26, #e4d1ef1f);--input-hint: var(--text-5)}a-input[priority=secondary]:disabled,a-input[priority=tertiary]:disabled{--input-bg: transparent}a-input[size=small] a-icon{--icon-size: 14px}a-input[size=large] a-icon{--icon-size: 18px}a-input [slot=hint]>a-icon{margin-block-start:1px}a-input[size=small] [slot=hint]>a-icon{margin-block-start:.5px}a-input[size=large] [slot=hint]>a-icon{margin-block-start:1.5px}input[data-anta]:is(:not([type]),[type=text],[type=search],[type=email],[type=number],[type=password],[type=tel],[type=url],[type=date],[type=datetime-local],[type=month],[type=time],[type=week]),textarea[data-anta]{--native-field-block-size: 28px;--native-field-padding-block: 4px;--native-field-font-size: 15px;--native-field-line-height: 20px;--native-field-round: 4px;--native-field-border: var(--border-2);box-sizing:border-box;block-size:var(--native-field-block-size);margin:0;padding-block:var(--native-field-padding-block);padding-inline:7px;border:0;border-radius:var(--native-field-round);outline:0;background:var(--bg-1);box-shadow:inset 0 0 0 .5px var(--native-field-border);color:var(--text-1);caret-color:currentColor;color-scheme:inherit;font-family:var(--sans-serif);font-size:var(--native-field-font-size);font-weight:400;font-stretch:normal;font-style:normal;line-height:var(--native-field-line-height);transition:box-shadow .12s ease}textarea[data-anta]{block-size:auto;min-block-size:var(--native-field-block-size);resize:vertical;overflow-y:auto}input[data-anta][list]::-webkit-calendar-picker-indicator{opacity:0!important;pointer-events:none!important}@media(hover:hover)and (pointer:fine){input[data-anta]:is(:not([type]),[type=text],[type=search],[type=email],[type=number],[type=password],[type=tel],[type=url],[type=date],[type=datetime-local],[type=month],[type=time],[type=week]):not(:disabled):hover,textarea[data-anta]:not(:disabled):hover{box-shadow:inset 0 0 0 1px var(--native-field-border)}}input[data-anta]:is(:not([type]),[type=text],[type=search],[type=email],[type=number],[type=password],[type=tel],[type=url],[type=date],[type=datetime-local],[type=month],[type=time],[type=week]):focus,textarea[data-anta]:focus{box-shadow:inset 0 0 0 1px var(--native-field-border);outline:1px solid var(--focus-ring);outline-offset:1px}input[data-anta]:is(:not([type]),[type=text],[type=search],[type=email],[type=number],[type=password],[type=tel],[type=url],[type=date],[type=datetime-local],[type=month],[type=time],[type=week]):disabled,textarea[data-anta]:disabled{background:color-mix(in oklch,var(--text-1) 4%,var(--bg-1));box-shadow:inset 0 0 0 .5px color-mix(in oklch,var(--text-1) 15%,transparent);color:var(--text-4);cursor:not-allowed}input[data-anta][type=number]{appearance:textfield;-moz-appearance:textfield}input[data-anta][type=number]::-webkit-inner-spin-button,input[data-anta][type=number]::-webkit-outer-spin-button{appearance:none;margin:0}input[data-anta][type=file]{--native-file-block-size: 28px;--native-file-padding-block: 4px;--native-file-font-size: 15px;--native-file-line-height: 20px;box-sizing:border-box;min-block-size:var(--native-file-block-size);margin:0;padding:0;border:0;color:var(--text-2);color-scheme:inherit;font-family:var(--sans-serif);font-size:var(--native-file-font-size);font-weight:400;font-stretch:normal;font-style:normal;line-height:var(--native-file-line-height)}input[data-anta][type=file]::file-selector-button{box-sizing:border-box;min-block-size:var(--native-file-block-size);margin:0 8px 0 0;padding:var(--native-file-padding-block) 9px;border:0;border-radius:4px;color:var(--text-2);background:color-mix(in oklch,var(--text-1) 10%,transparent);box-shadow:inset 0 0 1px color-mix(in oklch,currentColor,transparent 90%);font:inherit;font-variation-settings:inherit;font-weight:450;letter-spacing:.05ch;line-height:var(--native-file-line-height);cursor:pointer;transition:color .15s ease-out,background-color .15s ease-out}@media(hover:hover)and (pointer:fine){input[data-anta][type=file]:not(:disabled):hover::file-selector-button{color:var(--text-1);background:color-mix(in oklch,var(--text-1) 15%,transparent)}}input[data-anta][type=file]:not(:disabled):active::file-selector-button{color:var(--text-1);background:color-mix(in oklch,var(--text-1) 20%,transparent)}input[data-anta][type=file]:focus-visible{outline:1px solid var(--focus-ring);outline-offset:1px}input[data-anta][type=file]:disabled{color:var(--text-4);cursor:not-allowed}input[data-anta][type=file]:disabled::file-selector-button{color:var(--text-4);background:color-mix(in oklch,var(--text-1) 4%,var(--bg-1));cursor:not-allowed}select[data-anta]{--native-field-block-size: 28px;--native-field-padding-block: 4px;--native-field-font-size: 15px;--native-field-line-height: 20px;--native-field-round: 4px;--native-field-border: var(--border-2);--native-select-picker-bg: light-dark( color-mix(in oklch, var(--bg-1) 90%, transparent), color-mix(in oklch, var(--bg-1) 78%, transparent) );--native-select-picker-radius: var(--radius-md, 8px);--native-select-picker-border: 1px solid var(--border-3);--native-select-picker-shadow: 0 2px 6px color-mix(in oklch, var(--text-1) 8%, transparent), 0 8px 24px color-mix(in oklch, var(--text-1) 10%, transparent);--native-select-option-color: var(--text-2);--native-select-option-hover: 5%;--native-select-option-active: 8%;--native-select-option-selected: 8%;--native-select-option-padding-x: 8px;--native-select-option-padding-y: 6px;box-sizing:border-box;block-size:var(--native-field-block-size);margin:0;padding-block:var(--native-field-padding-block);padding-inline:7px;border:0;border-radius:var(--native-field-round);outline:0;background:var(--bg-1);box-shadow:inset 0 0 0 .5px var(--native-field-border);color:var(--text-1);color-scheme:inherit;font-family:var(--sans-serif);font-size:var(--native-field-font-size);font-weight:400;font-stretch:normal;font-style:normal;line-height:var(--native-field-line-height);transition:box-shadow .12s ease}.dark select[data-anta]{--native-select-picker-shadow: 0 2px 8px color-mix(in oklch, black 50%, transparent), 0 12px 32px color-mix(in oklch, black 40%, transparent), inset 0 0 0 1px color-mix(in oklch, white 8%, transparent)}@media(hover:hover)and (pointer:fine){select[data-anta]:not(:disabled):hover{box-shadow:inset 0 0 0 1px var(--native-field-border)}}select[data-anta]:focus{box-shadow:inset 0 0 0 1px var(--native-field-border);outline:1px solid var(--focus-ring);outline-offset:1px}select[data-anta]:disabled{background:color-mix(in oklch,var(--text-1) 4%,var(--bg-1));box-shadow:inset 0 0 0 .5px color-mix(in oklch,var(--text-1) 15%,transparent);color:var(--text-4);cursor:not-allowed}@media(forced-colors:active){input[data-anta]:is(:not([type]),[type=text],[type=search],[type=email],[type=number],[type=password],[type=tel],[type=url],[type=date],[type=datetime-local],[type=month],[type=time],[type=week]),select[data-anta],textarea[data-anta]{border:1px solid ButtonBorder}}input[data-anta]:is(:not([type]),[type=text],[type=search],[type=email],[type=number],[type=password],[type=tel],[type=url],[type=date],[type=datetime-local],[type=month],[type=time],[type=week])[data-anta-size=small],select[data-anta][data-anta-size=small],textarea[data-anta][data-anta-size=small]{--native-field-block-size: 24px;--native-field-padding-block: 2px;--native-field-font-size: 13px;--native-field-line-height: 16px}input[data-anta]:is(:not([type]),[type=text],[type=search],[type=email],[type=number],[type=password],[type=tel],[type=url],[type=date],[type=datetime-local],[type=month],[type=time],[type=week])[data-anta-size=large],select[data-anta][data-anta-size=large],textarea[data-anta][data-anta-size=large]{--native-field-block-size: 32px;--native-field-padding-block: 5px;--native-field-font-size: 17px;--native-field-line-height: 22px}input[data-anta]:is(:not([type]),[type=text],[type=search],[type=email],[type=number],[type=password],[type=tel],[type=url],[type=date],[type=datetime-local],[type=month],[type=time],[type=week])[round],select[data-anta][round],textarea[data-anta][round]{--native-field-round: 999px;@supports (border-radius: attr(probe type(<length>),1px)){--native-field-round: attr(round type(<length>), 999px)}}input[data-anta]:is(:not([type]),[type=text],[type=search],[type=email],[type=number],[type=password],[type=tel],[type=url],[type=date],[type=datetime-local],[type=month],[type=time],[type=week])[tone]:not([tone=""]),textarea[data-anta][tone]:not([tone=""]){--native-field-tone: var(--border-2);--native-field-border: light-dark( oklch(from var(--native-field-tone) .7 calc(c*.8) h), oklch(from var(--native-field-tone) .5 calc(c*.8) h) );@supports (color: attr(probe type(<color>),red)){--native-field-tone: attr(tone type(<color>), var(--border-2))}}@supports (appearance: base-select){select[data-anta],select[data-anta]::picker(select){appearance:base-select;-webkit-appearance:base-select}select[data-anta]{padding:0}select[data-anta]>button{box-sizing:border-box;display:flex;align-items:center;gap:4px;inline-size:100%;min-block-size:var(--native-field-block-size);padding-block:var(--native-field-padding-block);padding-inline:7px;border:0;background:transparent;color:inherit;cursor:pointer;font:inherit;font-variation-settings:inherit;text-align:start}select[data-anta]>button>selectedcontent{flex:1;min-inline-size:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}select[data-anta]::picker-icon{display:none}select[data-anta]>button>a-icon{margin-inline-start:auto;color:var(--text-3);transition:transform .12s ease}select[data-anta]:open>button>a-icon{transform:rotate(180deg)}select[data-anta]::picker(select){box-sizing:border-box;display:flex;flex-direction:column;gap:1px;margin-block-start:4px;padding:4px;border:var(--native-select-picker-border);border-radius:var(--native-select-picker-radius);background:var(--native-select-picker-bg);box-shadow:var(--native-select-picker-shadow);color:var(--native-select-option-color);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}select[data-anta] option{box-sizing:border-box;min-block-size:28px;padding-block:var(--native-select-option-padding-y);padding-inline:var(--native-select-option-padding-x);border-radius:var(--radius-sm, 4px);background:transparent;color:var(--native-select-option-color);cursor:pointer;font-family:var(--sans-serif);font-size:14px;font-weight:400;font-stretch:normal;font-style:normal;letter-spacing:normal;line-height:16px;text-transform:none;transition:background-color .28s ease-out}select[data-anta] option:is(:hover,:focus-visible){background:color-mix(in oklch,currentColor var(--native-select-option-hover),transparent);transition:background-color 60ms ease-in-out}select[data-anta] option:focus-visible{outline:1px solid var(--focus-ring);outline-offset:1px}select[data-anta] option:active{background:color-mix(in oklch,currentColor var(--native-select-option-active),transparent);transition:none}select[data-anta] option:checked{background:color-mix(in oklch,currentColor var(--native-select-option-selected),transparent);transition:background-color .28s ease-out}select[data-anta] option:disabled{color:var(--text-5);cursor:default}select[data-anta] optgroup{display:flex;flex-direction:column;gap:1px;color:var(--text-5);font-family:var(--sans-serif);font-size:.75em;font-weight:600;letter-spacing:.06em;text-transform:uppercase}}}
|
|
@@ -4,6 +4,7 @@ import './a-input.css';
|
|
|
4
4
|
declare const READ_DELEGATED_ARIA: unique symbol;
|
|
5
5
|
declare const WRITE_DELEGATED_ARIA: unique symbol;
|
|
6
6
|
export declare class AInputElement extends HTMLElementBase {
|
|
7
|
+
#private;
|
|
7
8
|
static formAssociated: boolean;
|
|
8
9
|
static observedAttributes: string[];
|
|
9
10
|
private internals?;
|
|
@@ -28,6 +29,7 @@ export declare class AInputElement extends HTMLElementBase {
|
|
|
28
29
|
* below the hint or misalign a tooltip. */
|
|
29
30
|
getAnchorRect(): DOMRect;
|
|
30
31
|
connectedCallback(): void;
|
|
32
|
+
disconnectedCallback(): void;
|
|
31
33
|
[SYNC_POPUP_ARIA](relations: PopupAriaRelations): void;
|
|
32
34
|
attributeChangedCallback(name: string, _old: string | null, value: string | null): void;
|
|
33
35
|
/** Standard ARIA is the raw custom-element API, but its semantic target is the
|
|
@@ -44,14 +46,14 @@ export declare class AInputElement extends HTMLElementBase {
|
|
|
44
46
|
private queueDelegatedAria;
|
|
45
47
|
/** (Re)build the shadow control from the current attributes. */
|
|
46
48
|
private buildControl;
|
|
47
|
-
/** Autogrow (no `rows`) via `field-sizing: content`
|
|
48
|
-
*
|
|
49
|
+
/** Autogrow (no `rows`) via `field-sizing: content` or the JS fallback,
|
|
50
|
+
* capped by `maxrows`; a fixed `rows` count switches it
|
|
49
51
|
* off for a constant-height box. */
|
|
50
52
|
private configureTextarea;
|
|
51
|
-
/** Autogrow fallback for browsers without `field-sizing: content
|
|
52
|
-
*
|
|
53
|
+
/** Autogrow fallback for WebKit and browsers without `field-sizing: content`.
|
|
54
|
+
* Grows the shadow textarea to fit its content; the CSS
|
|
53
55
|
* `max-height` cap (when `maxrows` is set) still clamps it and scrolls past.
|
|
54
|
-
* A no-op
|
|
56
|
+
* A no-op on the native sizing path, or when the field isn't
|
|
55
57
|
* autogrowing (fixed `rows`, or not a textarea) — those size via CSS. */
|
|
56
58
|
private syncAutoHeight;
|
|
57
59
|
private forward;
|
|
@@ -66,6 +68,7 @@ export declare class AInputElement extends HTMLElementBase {
|
|
|
66
68
|
private syncStatus;
|
|
67
69
|
private onInput;
|
|
68
70
|
private onChange;
|
|
71
|
+
private syncButtonFocus;
|
|
69
72
|
private onFocus;
|
|
70
73
|
private onBlur;
|
|
71
74
|
private onLabelSlotChange;
|
|
@@ -91,10 +94,9 @@ export declare class AInputElement extends HTMLElementBase {
|
|
|
91
94
|
get willValidate(): boolean;
|
|
92
95
|
checkValidity(): boolean;
|
|
93
96
|
reportValidity(): boolean;
|
|
94
|
-
/** Form field name
|
|
95
|
-
* so `el.name` works (e.g. keying validation messages by field in a form loop). */
|
|
97
|
+
/** Form field name, reflected to the host attribute for native form lookup. */
|
|
96
98
|
get name(): string;
|
|
97
|
-
set name(v: string);
|
|
99
|
+
set name(v: string | null | undefined);
|
|
98
100
|
formResetCallback(): void;
|
|
99
101
|
formDisabledCallback(disabled: boolean): void;
|
|
100
102
|
formStateRestoreCallback(state: string): void;
|