@orange-halo/components 2.2.0 → 3.0.0
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/custom-elements.json +551 -314
- package/dist/index.d.ts +1 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -4
- package/dist/index.js.map +1 -1
- package/dist/oh-accordion.d.ts +53 -8
- package/dist/oh-accordion.d.ts.map +1 -1
- package/dist/oh-accordion.js +77 -15
- package/dist/oh-accordion.js.map +1 -1
- package/dist/oh-alert.d.ts +26 -8
- package/dist/oh-alert.d.ts.map +1 -1
- package/dist/oh-alert.js +32 -14
- package/dist/oh-alert.js.map +1 -1
- package/dist/oh-badge.d.ts +32 -13
- package/dist/oh-badge.d.ts.map +1 -1
- package/dist/oh-badge.js +35 -16
- package/dist/oh-badge.js.map +1 -1
- package/dist/oh-breadcrumb.d.ts +39 -12
- package/dist/oh-breadcrumb.d.ts.map +1 -1
- package/dist/oh-breadcrumb.js +39 -17
- package/dist/oh-breadcrumb.js.map +1 -1
- package/dist/oh-button.d.ts +49 -23
- package/dist/oh-button.d.ts.map +1 -1
- package/dist/oh-button.js +63 -44
- package/dist/oh-button.js.map +1 -1
- package/dist/oh-card.d.ts +47 -19
- package/dist/oh-card.d.ts.map +1 -1
- package/dist/oh-card.js +110 -82
- package/dist/oh-card.js.map +1 -1
- package/dist/oh-checkbox-group.d.ts +56 -12
- package/dist/oh-checkbox-group.d.ts.map +1 -1
- package/dist/oh-checkbox-group.figma.js +4 -6
- package/dist/oh-checkbox-group.figma.js.map +1 -1
- package/dist/oh-checkbox-group.js +86 -44
- package/dist/oh-checkbox-group.js.map +1 -1
- package/dist/oh-checkbox.d.ts +54 -17
- package/dist/oh-checkbox.d.ts.map +1 -1
- package/dist/oh-checkbox.js +85 -55
- package/dist/oh-checkbox.js.map +1 -1
- package/dist/oh-cluster.d.ts +19 -14
- package/dist/oh-cluster.d.ts.map +1 -1
- package/dist/oh-cluster.js +19 -19
- package/dist/oh-cluster.js.map +1 -1
- package/dist/oh-container.d.ts +19 -16
- package/dist/oh-container.d.ts.map +1 -1
- package/dist/oh-container.js +21 -23
- package/dist/oh-container.js.map +1 -1
- package/dist/oh-drawer.d.ts +28 -11
- package/dist/oh-drawer.d.ts.map +1 -1
- package/dist/oh-drawer.js +31 -14
- package/dist/oh-drawer.js.map +1 -1
- package/dist/oh-footer.d.ts +37 -18
- package/dist/oh-footer.d.ts.map +1 -1
- package/dist/oh-footer.js +38 -19
- package/dist/oh-footer.js.map +1 -1
- package/dist/oh-grid.d.ts +27 -14
- package/dist/oh-grid.d.ts.map +1 -1
- package/dist/oh-grid.js +27 -19
- package/dist/oh-grid.js.map +1 -1
- package/dist/oh-icon.d.ts +21 -5
- package/dist/oh-icon.d.ts.map +1 -1
- package/dist/oh-icon.js +21 -5
- package/dist/oh-icon.js.map +1 -1
- package/dist/oh-input.d.ts +104 -20
- package/dist/oh-input.d.ts.map +1 -1
- package/dist/oh-input.figma.js +2 -2
- package/dist/oh-input.figma.js.map +1 -1
- package/dist/oh-input.js +205 -66
- package/dist/oh-input.js.map +1 -1
- package/dist/oh-link.d.ts +42 -19
- package/dist/oh-link.d.ts.map +1 -1
- package/dist/oh-link.js +47 -29
- package/dist/oh-link.js.map +1 -1
- package/dist/oh-modal.d.ts +29 -6
- package/dist/oh-modal.d.ts.map +1 -1
- package/dist/oh-modal.js +37 -16
- package/dist/oh-modal.js.map +1 -1
- package/dist/oh-navbar.d.ts +42 -19
- package/dist/oh-navbar.d.ts.map +1 -1
- package/dist/oh-navbar.js +42 -19
- package/dist/oh-navbar.js.map +1 -1
- package/dist/oh-progress.d.ts +26 -7
- package/dist/oh-progress.d.ts.map +1 -1
- package/dist/oh-progress.js +31 -12
- package/dist/oh-progress.js.map +1 -1
- package/dist/oh-radio-group.d.ts +55 -13
- package/dist/oh-radio-group.d.ts.map +1 -1
- package/dist/oh-radio-group.figma.js +2 -2
- package/dist/oh-radio-group.figma.js.map +1 -1
- package/dist/oh-radio-group.js +83 -43
- package/dist/oh-radio-group.js.map +1 -1
- package/dist/oh-radio.d.ts +55 -17
- package/dist/oh-radio.d.ts.map +1 -1
- package/dist/oh-radio.js +87 -56
- package/dist/oh-radio.js.map +1 -1
- package/dist/oh-select.d.ts +58 -16
- package/dist/oh-select.d.ts.map +1 -1
- package/dist/oh-select.js +70 -33
- package/dist/oh-select.js.map +1 -1
- package/dist/oh-skip-link.d.ts +33 -15
- package/dist/oh-skip-link.d.ts.map +1 -1
- package/dist/oh-skip-link.js +38 -25
- package/dist/oh-skip-link.js.map +1 -1
- package/dist/oh-stack.d.ts +17 -14
- package/dist/oh-stack.d.ts.map +1 -1
- package/dist/oh-stack.js +18 -20
- package/dist/oh-stack.js.map +1 -1
- package/dist/oh-tabs.d.ts +55 -30
- package/dist/oh-tabs.d.ts.map +1 -1
- package/dist/oh-tabs.js +80 -65
- package/dist/oh-tabs.js.map +1 -1
- package/dist/oh-textarea.d.ts +37 -6
- package/dist/oh-textarea.d.ts.map +1 -1
- package/dist/oh-textarea.js +40 -9
- package/dist/oh-textarea.js.map +1 -1
- package/dist/oh-toggle.d.ts +45 -12
- package/dist/oh-toggle.d.ts.map +1 -1
- package/dist/oh-toggle.js +64 -29
- package/dist/oh-toggle.js.map +1 -1
- package/package.json +3 -7
- package/dist/oh-hero.d.ts +0 -33
- package/dist/oh-hero.d.ts.map +0 -1
- package/dist/oh-hero.js +0 -248
- package/dist/oh-hero.js.map +0 -1
package/dist/oh-tabs.js
CHANGED
|
@@ -1,28 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* oh-tabs
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
* KEYBOARD INTERACTIONS:
|
|
17
|
-
* ──────────────────────
|
|
18
|
-
* - Left Arrow: Move focus to previous tab (wraps to last)
|
|
19
|
-
* - Right Arrow: Move focus to next tab (wraps to first)
|
|
20
|
-
* - Home: Move focus to first tab
|
|
21
|
-
* - End: Move focus to last tab
|
|
22
|
-
* - Enter/Space: Activate focused tab and move focus to panel
|
|
23
|
-
* - Tab: Move focus out of tablist
|
|
24
|
-
*
|
|
25
|
-
* @element oh-tabs
|
|
4
|
+
* DESIGN DECISIONS:
|
|
5
|
+
* ─────────────────
|
|
6
|
+
* 1. WAI-ARIA tabs pattern: tablist / tab / tabpanel roles, roving tabindex,
|
|
7
|
+
* inactive panels `hidden`.
|
|
8
|
+
* 2. Manual activation: arrow keys and Home/End move focus only;
|
|
9
|
+
* Enter/Space selects and moves focus into the panel. Tab leaves the
|
|
10
|
+
* tablist.
|
|
11
|
+
* 3. The selected tab joins the panel: it shares the panel's surface and
|
|
12
|
+
* border, and covers the panel's top border beneath it.
|
|
13
|
+
* 4. Focus is a solid underline on the tab label (and an outline on the
|
|
14
|
+
* panel), never colour alone.
|
|
26
15
|
*/
|
|
27
16
|
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
28
17
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
@@ -33,17 +22,53 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
33
22
|
import { html, css } from "lit";
|
|
34
23
|
import { customElement, property, state } from "lit/decorators.js";
|
|
35
24
|
import { OhElement, baseStyles } from "./base.js";
|
|
25
|
+
/**
|
|
26
|
+
* A set of tabs that switches between panels of related content in the same place.
|
|
27
|
+
*
|
|
28
|
+
* **Use it for** a few peer sections of content where only one needs to be
|
|
29
|
+
* seen at a time. **Don't use it for** navigating between pages (use links
|
|
30
|
+
* or `oh-navbar`), or for content people need to compare side by side.
|
|
31
|
+
*
|
|
32
|
+
* **Parts:** pass `items`, an array of `{ id, label, content? }`. A panel
|
|
33
|
+
* shows `content` as text, or else the light-DOM element with
|
|
34
|
+
* `slot="<id>"`. `value` is the selected tab's `id` (defaults to the first).
|
|
35
|
+
*
|
|
36
|
+
* **States:** each tab is selected or not; unselected tabs show an underline
|
|
37
|
+
* on hover.
|
|
38
|
+
*
|
|
39
|
+
* **Behaviour:** click selects a tab. Arrow keys move focus between tabs and
|
|
40
|
+
* wrap (Left/Right, or Up/Down when `orientation="vertical"`; orientation
|
|
41
|
+
* changes the keys only, not the layout); Home/End jump to the first/last.
|
|
42
|
+
* Enter or Space selects the focused tab and moves focus to its panel.
|
|
43
|
+
* Selecting a different tab fires `oh-change`. Transitions are cut short
|
|
44
|
+
* under `prefers-reduced-motion`.
|
|
45
|
+
*
|
|
46
|
+
* **Accessibility:** tablist/tab/tabpanel roles with `aria-selected`,
|
|
47
|
+
* `aria-controls` and `aria-labelledby`; one tab is in the tab order at a
|
|
48
|
+
* time; inactive panels are `hidden`; the active panel is focusable. Keyboard
|
|
49
|
+
* focus shows a solid underline on the tab label and an outline on the panel.
|
|
50
|
+
* Keep labels short.
|
|
51
|
+
*
|
|
52
|
+
* **Look:** set by tokens — `color.brand.primary` the unselected tabs and
|
|
53
|
+
* their hover underline (`decoration.underlineThickness`,
|
|
54
|
+
* `decoration.underlineDash`, `decoration.underlinePeriod`);
|
|
55
|
+
* `color.text.primary`, `color.surface.base` and `color.border.emphasis` the
|
|
56
|
+
* selected tab and panel; `stroke.control` the borders; `shape.control` the
|
|
57
|
+
* tab corners and `shape.container` the panel corners;
|
|
58
|
+
* `typography.body.*` and `typography.label.base.fontWeight` the text;
|
|
59
|
+
* `spacing.*` the padding; `motion.snappy` and `motion.relaxed` the
|
|
60
|
+
* transitions.
|
|
61
|
+
*
|
|
62
|
+
* @element oh-tabs
|
|
63
|
+
* @fires oh-change - When a different tab is selected. `detail: { value }`, the tab's `id`.
|
|
64
|
+
*/
|
|
36
65
|
let OhTabs = class OhTabs extends OhElement {
|
|
37
66
|
constructor() {
|
|
38
67
|
super(...arguments);
|
|
39
|
-
/**
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
this.
|
|
43
|
-
/**
|
|
44
|
-
* ID of the currently selected tab
|
|
45
|
-
*/
|
|
46
|
-
this.selected = "";
|
|
68
|
+
/** The tabs: `{ id, label, content? }`. In HTML, a JSON array */
|
|
69
|
+
this.items = [];
|
|
70
|
+
/** The selected tab's `id`. Defaults to the first tab */
|
|
71
|
+
this.value = "";
|
|
47
72
|
/**
|
|
48
73
|
* Orientation of the tabs (affects arrow key behavior)
|
|
49
74
|
*/
|
|
@@ -60,11 +85,6 @@ let OhTabs = class OhTabs extends OhElement {
|
|
|
60
85
|
static { this.styles = [
|
|
61
86
|
baseStyles,
|
|
62
87
|
css `
|
|
63
|
-
/* ═══════════════════════════════════════════════════════════════
|
|
64
|
-
ORANGE HALO TABS
|
|
65
|
-
Chunky • Playful • Accessible
|
|
66
|
-
═══════════════════════════════════════════════════════════════ */
|
|
67
|
-
|
|
68
88
|
:host {
|
|
69
89
|
display: block;
|
|
70
90
|
font-family: var(--oh-typography-body-font-family);
|
|
@@ -83,7 +103,7 @@ let OhTabs = class OhTabs extends OhElement {
|
|
|
83
103
|
|
|
84
104
|
/* ═══════════════════════════════════════════════════════════════
|
|
85
105
|
INDIVIDUAL TAB BUTTONS
|
|
86
|
-
|
|
106
|
+
Transparent unselected state; selected state joins the panel
|
|
87
107
|
═══════════════════════════════════════════════════════════════ */
|
|
88
108
|
|
|
89
109
|
.tab {
|
|
@@ -112,7 +132,7 @@ let OhTabs = class OhTabs extends OhElement {
|
|
|
112
132
|
box-shadow var(--oh-motion-snappy) ease;
|
|
113
133
|
}
|
|
114
134
|
|
|
115
|
-
/*
|
|
135
|
+
/* Hover underline pseudo-element (animatable), shaped by decoration tokens */
|
|
116
136
|
.tab__label {
|
|
117
137
|
position: relative;
|
|
118
138
|
}
|
|
@@ -146,7 +166,7 @@ let OhTabs = class OhTabs extends OhElement {
|
|
|
146
166
|
|
|
147
167
|
/* ═══════════════════════════════════════════════════════════════
|
|
148
168
|
SELECTED TAB STATE
|
|
149
|
-
|
|
169
|
+
color.text.primary on color.surface.base, bordered like the panel
|
|
150
170
|
═══════════════════════════════════════════════════════════════ */
|
|
151
171
|
|
|
152
172
|
.tab[aria-selected="true"] {
|
|
@@ -185,7 +205,8 @@ let OhTabs = class OhTabs extends OhElement {
|
|
|
185
205
|
|
|
186
206
|
/* ═══════════════════════════════════════════════════════════════
|
|
187
207
|
TAB PANEL
|
|
188
|
-
|
|
208
|
+
Shares the selected tab's surface and border; square top-left
|
|
209
|
+
corner while the first tab is selected
|
|
189
210
|
═══════════════════════════════════════════════════════════════ */
|
|
190
211
|
|
|
191
212
|
.tabpanel {
|
|
@@ -230,17 +251,15 @@ let OhTabs = class OhTabs extends OhElement {
|
|
|
230
251
|
connectedCallback() {
|
|
231
252
|
super.connectedCallback();
|
|
232
253
|
// Set initial selected tab if not specified
|
|
233
|
-
if (!this.
|
|
234
|
-
this.
|
|
254
|
+
if (!this.value && this.items.length > 0) {
|
|
255
|
+
this.value = this.items[0].id;
|
|
235
256
|
}
|
|
236
257
|
// Set initial focused index to match selected
|
|
237
|
-
this._focusedIndex = Math.max(0, this.
|
|
258
|
+
this._focusedIndex = Math.max(0, this.items.findIndex((t) => t.id === this.value));
|
|
238
259
|
}
|
|
239
260
|
updated(changedProperties) {
|
|
240
|
-
if (changedProperties.has("tabs") &&
|
|
241
|
-
this.
|
|
242
|
-
!this.selected) {
|
|
243
|
-
this.selected = this.tabs[0].id;
|
|
261
|
+
if (changedProperties.has("tabs") && this.items.length > 0 && !this.value) {
|
|
262
|
+
this.value = this.items[0].id;
|
|
244
263
|
}
|
|
245
264
|
}
|
|
246
265
|
/**
|
|
@@ -249,7 +268,7 @@ let OhTabs = class OhTabs extends OhElement {
|
|
|
249
268
|
*/
|
|
250
269
|
async _handleKeyDown(e) {
|
|
251
270
|
const { key } = e;
|
|
252
|
-
const tabCount = this.
|
|
271
|
+
const tabCount = this.items.length;
|
|
253
272
|
if (tabCount === 0)
|
|
254
273
|
return;
|
|
255
274
|
let newIndex = this._focusedIndex;
|
|
@@ -302,10 +321,10 @@ let OhTabs = class OhTabs extends OhElement {
|
|
|
302
321
|
e.preventDefault();
|
|
303
322
|
if (shouldActivate) {
|
|
304
323
|
// Activate the currently focused tab
|
|
305
|
-
this._selectTab(this.
|
|
324
|
+
this._selectTab(this.items[this._focusedIndex].id);
|
|
306
325
|
// Wait for render to complete, then move focus to panel
|
|
307
326
|
await this.updateComplete;
|
|
308
|
-
this._focusPanel(this.
|
|
327
|
+
this._focusPanel(this.items[this._focusedIndex].id);
|
|
309
328
|
}
|
|
310
329
|
else if (newIndex !== this._focusedIndex) {
|
|
311
330
|
// Just move focus to the new tab (don't activate)
|
|
@@ -333,14 +352,10 @@ let OhTabs = class OhTabs extends OhElement {
|
|
|
333
352
|
* Select a tab and dispatch change event
|
|
334
353
|
*/
|
|
335
354
|
_selectTab(tabId) {
|
|
336
|
-
if (this.
|
|
337
|
-
this.
|
|
338
|
-
this._focusedIndex = this.
|
|
339
|
-
this.
|
|
340
|
-
detail: { tabId },
|
|
341
|
-
bubbles: true,
|
|
342
|
-
composed: true,
|
|
343
|
-
}));
|
|
355
|
+
if (this.value !== tabId) {
|
|
356
|
+
this.value = tabId;
|
|
357
|
+
this._focusedIndex = this.items.findIndex((t) => t.id === tabId);
|
|
358
|
+
this.emit("oh-change", { value: tabId });
|
|
344
359
|
}
|
|
345
360
|
}
|
|
346
361
|
/**
|
|
@@ -360,8 +375,8 @@ let OhTabs = class OhTabs extends OhElement {
|
|
|
360
375
|
aria-orientation=${this.orientation}
|
|
361
376
|
@keydown=${this._handleKeyDown}
|
|
362
377
|
>
|
|
363
|
-
${this.
|
|
364
|
-
const isSelected = tab.id === this.
|
|
378
|
+
${this.items.map((tab, index) => {
|
|
379
|
+
const isSelected = tab.id === this.value;
|
|
365
380
|
const tabId = `${this._idPrefix}-tab-${tab.id}`;
|
|
366
381
|
const panelId = `${this._idPrefix}-panel-${tab.id}`;
|
|
367
382
|
return html `
|
|
@@ -381,11 +396,11 @@ let OhTabs = class OhTabs extends OhElement {
|
|
|
381
396
|
</div>
|
|
382
397
|
|
|
383
398
|
<!-- Tab Panels -->
|
|
384
|
-
${this.
|
|
385
|
-
const isSelected = tab.id === this.
|
|
399
|
+
${this.items.map((tab) => {
|
|
400
|
+
const isSelected = tab.id === this.value;
|
|
386
401
|
const tabId = `${this._idPrefix}-tab-${tab.id}`;
|
|
387
402
|
const panelId = `${this._idPrefix}-panel-${tab.id}`;
|
|
388
|
-
const isFirstTabSelected = this.
|
|
403
|
+
const isFirstTabSelected = this.items.length > 0 && this.value === this.items[0].id;
|
|
389
404
|
return html `
|
|
390
405
|
<div
|
|
391
406
|
class="tabpanel ${!isFirstTabSelected
|
|
@@ -409,10 +424,10 @@ let OhTabs = class OhTabs extends OhElement {
|
|
|
409
424
|
};
|
|
410
425
|
__decorate([
|
|
411
426
|
property({ type: Array })
|
|
412
|
-
], OhTabs.prototype, "
|
|
427
|
+
], OhTabs.prototype, "items", void 0);
|
|
413
428
|
__decorate([
|
|
414
|
-
property({ type: String, reflect: true
|
|
415
|
-
], OhTabs.prototype, "
|
|
429
|
+
property({ type: String, reflect: true })
|
|
430
|
+
], OhTabs.prototype, "value", void 0);
|
|
416
431
|
__decorate([
|
|
417
432
|
property({ type: String })
|
|
418
433
|
], OhTabs.prototype, "orientation", void 0);
|
package/dist/oh-tabs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oh-tabs.js","sourceRoot":"","sources":["../src/oh-tabs.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"oh-tabs.js","sourceRoot":"","sources":["../src/oh-tabs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;;;;;;;AAEH,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAQlD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAEI,IAAM,MAAM,GAAZ,MAAM,MAAO,SAAQ,SAAS;IAA9B;;QAwKL,iEAAiE;QAEjE,UAAK,GAAc,EAAE,CAAC;QAEtB,yDAAyD;QAEzD,UAAK,GAAG,EAAE,CAAC;QAEX;;WAEG;QAEH,gBAAW,GAA8B,YAAY,CAAC;QAEtD;;WAEG;QAEK,kBAAa,GAAG,CAAC,CAAC;QAE1B;;WAEG;QACK,cAAS,GAAG,WAAW,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;IAiM3E,CAAC;aA/XiB,WAAM,GAAG;QACvB,UAAU;QACV,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAkKF;KACF,AArKqB,CAqKpB;IA2BO,iBAAiB;QACxB,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC1B,4CAA4C;QAC5C,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAChC,CAAC;QACD,8CAA8C;QAC9C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,CAC3B,CAAC,EACD,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,KAAK,CAAC,CACjD,CAAC;IACJ,CAAC;IAEQ,OAAO,CAAC,iBAAuC;QACtD,IAAI,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAC1E,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAChC,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,cAAc,CAAC,CAAgB;QAC3C,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QAClB,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;QAEnC,IAAI,QAAQ,KAAK,CAAC;YAAE,OAAO;QAE3B,IAAI,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC;QAClC,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,IAAI,cAAc,GAAG,KAAK,CAAC;QAE3B,QAAQ,GAAG,EAAE,CAAC;YACZ,KAAK,WAAW;gBACd,IAAI,IAAI,CAAC,WAAW,KAAK,YAAY,EAAE,CAAC;oBACtC,QAAQ;wBACN,IAAI,CAAC,aAAa,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;oBACnE,OAAO,GAAG,IAAI,CAAC;gBACjB,CAAC;gBACD,MAAM;YACR,KAAK,YAAY;gBACf,IAAI,IAAI,CAAC,WAAW,KAAK,YAAY,EAAE,CAAC;oBACtC,QAAQ;wBACN,IAAI,CAAC,aAAa,KAAK,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;oBACnE,OAAO,GAAG,IAAI,CAAC;gBACjB,CAAC;gBACD,MAAM;YACR,KAAK,SAAS;gBACZ,IAAI,IAAI,CAAC,WAAW,KAAK,UAAU,EAAE,CAAC;oBACpC,QAAQ;wBACN,IAAI,CAAC,aAAa,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;oBACnE,OAAO,GAAG,IAAI,CAAC;gBACjB,CAAC;gBACD,MAAM;YACR,KAAK,WAAW;gBACd,IAAI,IAAI,CAAC,WAAW,KAAK,UAAU,EAAE,CAAC;oBACpC,QAAQ;wBACN,IAAI,CAAC,aAAa,KAAK,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;oBACnE,OAAO,GAAG,IAAI,CAAC;gBACjB,CAAC;gBACD,MAAM;YACR,KAAK,MAAM;gBACT,QAAQ,GAAG,CAAC,CAAC;gBACb,OAAO,GAAG,IAAI,CAAC;gBACf,MAAM;YACR,KAAK,KAAK;gBACR,QAAQ,GAAG,QAAQ,GAAG,CAAC,CAAC;gBACxB,OAAO,GAAG,IAAI,CAAC;gBACf,MAAM;YACR,KAAK,OAAO,CAAC;YACb,KAAK,GAAG,EAAE,QAAQ;gBAChB,cAAc,GAAG,IAAI,CAAC;gBACtB,OAAO,GAAG,IAAI,CAAC;gBACf,MAAM;QACV,CAAC;QAED,IAAI,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC,cAAc,EAAE,CAAC;YAEnB,IAAI,cAAc,EAAE,CAAC;gBACnB,qCAAqC;gBACrC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC;gBACnD,wDAAwD;gBACxD,MAAM,IAAI,CAAC,cAAc,CAAC;gBAC1B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC;YACtD,CAAC;iBAAM,IAAI,QAAQ,KAAK,IAAI,CAAC,aAAa,EAAE,CAAC;gBAC3C,kDAAkD;gBAClD,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC;gBAC9B,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACK,WAAW,CAAC,KAAa;QAC/B,MAAM,OAAO,GAAG,GAAG,IAAI,CAAC,SAAS,UAAU,KAAK,EAAE,CAAC;QACnD,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;QACvD,KAAK,EAAE,KAAK,EAAE,CAAC;IACjB,CAAC;IAED;;OAEG;IACK,SAAS,CAAC,KAAa;QAC7B,MAAM,UAAU,GACd,IAAI,CAAC,UAAU,EAAE,gBAAgB,CAAoB,MAAM,CAAC,CAAC;QAC/D,UAAU,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC;IAC/B,CAAC;IAED;;OAEG;IACK,UAAU,CAAC,KAAa;QAC9B,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YACnB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC;YAEjE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IAED;;OAEG;IACK,eAAe,CAAC,KAAa,EAAE,KAAa;QAClD,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC3B,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAA;;;;;;6BAMc,IAAI,CAAC,WAAW;qBACxB,IAAI,CAAC,cAAc;;YAE5B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;YAC9B,MAAM,UAAU,GAAG,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,KAAK,CAAC;YACzC,MAAM,KAAK,GAAG,GAAG,IAAI,CAAC,SAAS,QAAQ,GAAG,CAAC,EAAE,EAAE,CAAC;YAChD,MAAM,OAAO,GAAG,GAAG,IAAI,CAAC,SAAS,UAAU,GAAG,CAAC,EAAE,EAAE,CAAC;YAEpD,OAAO,IAAI,CAAA;;;;qBAIF,KAAK;gCACM,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO;gCAC7B,OAAO;2BACZ,KAAK,KAAK,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI;yBAC3C,GAAG,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC;;2CAEvB,GAAG,CAAC,KAAK;;aAEvC,CAAC;QACJ,CAAC,CAAC;;;;UAIF,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YACvB,MAAM,UAAU,GAAG,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,KAAK,CAAC;YACzC,MAAM,KAAK,GAAG,GAAG,IAAI,CAAC,SAAS,QAAQ,GAAG,CAAC,EAAE,EAAE,CAAC;YAChD,MAAM,OAAO,GAAG,GAAG,IAAI,CAAC,SAAS,UAAU,GAAG,CAAC,EAAE,EAAE,CAAC;YACpD,MAAM,kBAAkB,GACtB,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAE3D,OAAO,IAAI,CAAA;;gCAEW,CAAC,kBAAkB;gBACnC,CAAC,CAAC,4BAA4B;gBAC9B,CAAC,CAAC,EAAE;;mBAED,OAAO;gCACM,KAAK;wBACb,CAAC,UAAU;yBACV,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI;;gBAEhC,GAAG,CAAC,OAAO;gBACX,CAAC,CAAC,IAAI,CAAA,GAAG,GAAG,CAAC,OAAO,EAAE;gBACtB,CAAC,CAAC,IAAI,CAAA,cAAc,GAAG,CAAC,EAAE,UAAU;;WAEzC,CAAC;QACJ,CAAC,CAAC;;KAEL,CAAC;IACJ,CAAC;;AArND;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;qCACJ;AAItB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;qCAC/B;AAMX;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;2CAC2B;AAM9C;IADP,KAAK,EAAE;6CACkB;AA1Lf,MAAM;IADlB,aAAa,CAAC,SAAS,CAAC;GACZ,MAAM,CAgYlB"}
|
package/dist/oh-textarea.d.ts
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* oh-textarea
|
|
3
3
|
*
|
|
4
|
-
* A multi-line text field for messages, comments and feedback.
|
|
5
|
-
* chunky, inset field as oh-input, and the first OHDS control that takes
|
|
6
|
-
* part in a native <form>.
|
|
4
|
+
* A multi-line text field for messages, comments and feedback.
|
|
7
5
|
*
|
|
8
6
|
* DESIGN DECISIONS:
|
|
9
7
|
* ─────────────────
|
|
10
8
|
* 1. SAME FAMILY AS oh-input
|
|
11
|
-
* -
|
|
12
|
-
*
|
|
13
|
-
*
|
|
9
|
+
* - Same tokens: stroke.control border in color.border.emphasis,
|
|
10
|
+
* shape.control corners, an inset shadow offset by elevation.offset.md
|
|
11
|
+
* in elevation.color.field
|
|
12
|
+
* - Focus is a solid inset ring in focus.ringColor inside the border;
|
|
13
|
+
* background switches to color.surface.highlight
|
|
14
14
|
*
|
|
15
15
|
* 2. ON THE GRID
|
|
16
16
|
* - Line height is 1.5 times the text size, rounded up to the brand's
|
|
@@ -31,6 +31,37 @@ import { OhElement } from "./base.js";
|
|
|
31
31
|
/**
|
|
32
32
|
* A multi-line text field that submits with a native form.
|
|
33
33
|
*
|
|
34
|
+
* **Use it for** messages, comments, feedback: text that may run to several
|
|
35
|
+
* lines. **Don't use it for** a single line of text (use `oh-input`).
|
|
36
|
+
*
|
|
37
|
+
* **States:** rest, hover, focus, error (set `error-text`), disabled,
|
|
38
|
+
* required. `rows` sets the visible lines (default 4); people can drag it
|
|
39
|
+
* taller. `maxlength` limits the length.
|
|
40
|
+
*
|
|
41
|
+
* **Behaviour:** form-associated. Give it a `name` and it submits with the
|
|
42
|
+
* form. `required` stops the form submitting while it's empty, with the
|
|
43
|
+
* browser's own message. A form reset restores its starting text, and a
|
|
44
|
+
* disabled `<fieldset>` disables it. Fires `oh-input` on every keystroke and
|
|
45
|
+
* `oh-change` when the value is committed. Its line height is 1.5 times the
|
|
46
|
+
* text size, rounded up to `grid.unit`, so long messages stay on the grid.
|
|
47
|
+
*
|
|
48
|
+
* **Accessibility:** always set `label`: it names the field. A placeholder
|
|
49
|
+
* isn't a label. Helper and error text are linked to the field with
|
|
50
|
+
* `aria-describedby`, so screen readers read them. Errors come before the
|
|
51
|
+
* field, with an icon, set `aria-invalid`, and are announced only when they
|
|
52
|
+
* appear after the page has loaded. Focus is a solid inset ring. Use
|
|
53
|
+
* `autocomplete` when the field asks for something a browser can fill in,
|
|
54
|
+
* such as an address (WCAG 1.3.5).
|
|
55
|
+
*
|
|
56
|
+
* **Look:** set by tokens — `stroke.control` in `color.border.emphasis`
|
|
57
|
+
* (border), `shape.control` (corners), `typography.control.*` (type),
|
|
58
|
+
* `elevation.offset.md` and `elevation.color.field` (inset shadow),
|
|
59
|
+
* `color.border.hover` (hover), `focus.ringColor` and
|
|
60
|
+
* `color.surface.highlight` (focus), `color.feedback.error`,
|
|
61
|
+
* `color.feedback.errorSubtle` and `elevation.color.error` (error),
|
|
62
|
+
* `color.surface.disabled`, `color.border.disabled` and
|
|
63
|
+
* `color.text.disabled` (disabled).
|
|
64
|
+
*
|
|
34
65
|
* @element oh-textarea
|
|
35
66
|
* @fires oh-input - On every keystroke. detail: { value, originalEvent }
|
|
36
67
|
* @fires oh-change - When the value is committed (on blur). detail: { value, originalEvent }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oh-textarea.d.ts","sourceRoot":"","sources":["../src/oh-textarea.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,EAAsB,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAE9D,OAAO,EAAE,SAAS,EAAc,MAAM,WAAW,CAAC;AAElD
|
|
1
|
+
{"version":3,"file":"oh-textarea.d.ts","sourceRoot":"","sources":["../src/oh-textarea.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,EAAsB,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAE9D,OAAO,EAAE,SAAS,EAAc,MAAM,WAAW,CAAC;AAElD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,qBACa,UAAW,SAAQ,SAAS;IACvC,MAAM,CAAC,cAAc,UAAQ;IAE7B,OAAgB,MAAM,4BA4HpB;IAEF,6DAA6D;IAE7D,KAAK,SAAM;IAEX,4BAA4B;IAE5B,KAAK,SAAM;IAEX,mFAAmF;IAEnF,WAAW,SAAM;IAEjB,kDAAkD;IAElD,UAAU,SAAM;IAEhB,kGAAkG;IAElG,SAAS,SAAM;IAEf,4CAA4C;IAE5C,IAAI,SAAM;IAEV,gDAAgD;IAEhD,QAAQ,UAAS;IAEjB,oDAAoD;IAEpD,QAAQ,UAAS;IAEjB,iFAAiF;IAEjF,IAAI,SAAK;IAET,0CAA0C;IAE1C,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,8FAA8F;IAE9F,YAAY,CAAC,EAAE,MAAM,CAAC;IAGtB,OAAO,CAAC,SAAS,CAAuB;IAExC,OAAO,CAAC,UAAU,CAA0B;IAE5C,uDAAuD;IACvD,OAAO,CAAC,aAAa,CAAM;IAE3B,2DAA2D;IAE3D,OAAO,CAAC,aAAa,CAAS;IAE9B;;;;OAIG;IAEH,OAAO,CAAC,cAAc,CAAS;IAE/B,iBAAiB;IAKjB,qCAAqC;IACrC,IAAI,IAAI,2BAEP;IAED,KAAK,CAAC,OAAO,CAAC,EAAE,YAAY;IAI5B,IAAI;IAIJ,iBAAiB;IAIjB,oBAAoB,CAAC,QAAQ,EAAE,OAAO;IAItC,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,QAAQ,GAAG,IAAI;IAI/D,UAAU,CAAC,OAAO,EAAE,cAAc;IAMlC,OAAO,CAAC,OAAO,EAAE,cAAc;IAe/B,OAAO,CAAC,YAAY;IAKpB,OAAO,CAAC,aAAa;IAIrB,MAAM;CAsEP;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,aAAa,EAAE,UAAU,CAAC;KAC3B;CACF"}
|
package/dist/oh-textarea.js
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* oh-textarea
|
|
3
3
|
*
|
|
4
|
-
* A multi-line text field for messages, comments and feedback.
|
|
5
|
-
* chunky, inset field as oh-input, and the first OHDS control that takes
|
|
6
|
-
* part in a native <form>.
|
|
4
|
+
* A multi-line text field for messages, comments and feedback.
|
|
7
5
|
*
|
|
8
6
|
* DESIGN DECISIONS:
|
|
9
7
|
* ─────────────────
|
|
10
8
|
* 1. SAME FAMILY AS oh-input
|
|
11
|
-
* -
|
|
12
|
-
*
|
|
13
|
-
*
|
|
9
|
+
* - Same tokens: stroke.control border in color.border.emphasis,
|
|
10
|
+
* shape.control corners, an inset shadow offset by elevation.offset.md
|
|
11
|
+
* in elevation.color.field
|
|
12
|
+
* - Focus is a solid inset ring in focus.ringColor inside the border;
|
|
13
|
+
* background switches to color.surface.highlight
|
|
14
14
|
*
|
|
15
15
|
* 2. ON THE GRID
|
|
16
16
|
* - Line height is 1.5 times the text size, rounded up to the brand's
|
|
@@ -38,6 +38,37 @@ import { OhElement, baseStyles } from "./base.js";
|
|
|
38
38
|
/**
|
|
39
39
|
* A multi-line text field that submits with a native form.
|
|
40
40
|
*
|
|
41
|
+
* **Use it for** messages, comments, feedback: text that may run to several
|
|
42
|
+
* lines. **Don't use it for** a single line of text (use `oh-input`).
|
|
43
|
+
*
|
|
44
|
+
* **States:** rest, hover, focus, error (set `error-text`), disabled,
|
|
45
|
+
* required. `rows` sets the visible lines (default 4); people can drag it
|
|
46
|
+
* taller. `maxlength` limits the length.
|
|
47
|
+
*
|
|
48
|
+
* **Behaviour:** form-associated. Give it a `name` and it submits with the
|
|
49
|
+
* form. `required` stops the form submitting while it's empty, with the
|
|
50
|
+
* browser's own message. A form reset restores its starting text, and a
|
|
51
|
+
* disabled `<fieldset>` disables it. Fires `oh-input` on every keystroke and
|
|
52
|
+
* `oh-change` when the value is committed. Its line height is 1.5 times the
|
|
53
|
+
* text size, rounded up to `grid.unit`, so long messages stay on the grid.
|
|
54
|
+
*
|
|
55
|
+
* **Accessibility:** always set `label`: it names the field. A placeholder
|
|
56
|
+
* isn't a label. Helper and error text are linked to the field with
|
|
57
|
+
* `aria-describedby`, so screen readers read them. Errors come before the
|
|
58
|
+
* field, with an icon, set `aria-invalid`, and are announced only when they
|
|
59
|
+
* appear after the page has loaded. Focus is a solid inset ring. Use
|
|
60
|
+
* `autocomplete` when the field asks for something a browser can fill in,
|
|
61
|
+
* such as an address (WCAG 1.3.5).
|
|
62
|
+
*
|
|
63
|
+
* **Look:** set by tokens — `stroke.control` in `color.border.emphasis`
|
|
64
|
+
* (border), `shape.control` (corners), `typography.control.*` (type),
|
|
65
|
+
* `elevation.offset.md` and `elevation.color.field` (inset shadow),
|
|
66
|
+
* `color.border.hover` (hover), `focus.ringColor` and
|
|
67
|
+
* `color.surface.highlight` (focus), `color.feedback.error`,
|
|
68
|
+
* `color.feedback.errorSubtle` and `elevation.color.error` (error),
|
|
69
|
+
* `color.surface.disabled`, `color.border.disabled` and
|
|
70
|
+
* `color.text.disabled` (disabled).
|
|
71
|
+
*
|
|
41
72
|
* @element oh-textarea
|
|
42
73
|
* @fires oh-input - On every keystroke. detail: { value, originalEvent }
|
|
43
74
|
* @fires oh-change - When the value is committed (on blur). detail: { value, originalEvent }
|
|
@@ -126,7 +157,7 @@ let OhTextarea = class OhTextarea extends OhElement {
|
|
|
126
157
|
border: var(--oh-stroke-control) solid var(--oh-color-border-emphasis);
|
|
127
158
|
border-radius: var(--oh-shape-control);
|
|
128
159
|
box-shadow: inset var(--oh-elevation-offset-md)
|
|
129
|
-
var(--oh-elevation-offset-md) 0 0 var(--oh-
|
|
160
|
+
var(--oh-elevation-offset-md) 0 0 var(--oh-elevation-color-field);
|
|
130
161
|
transition:
|
|
131
162
|
border-color var(--oh-motion-snappy) ease,
|
|
132
163
|
box-shadow var(--oh-motion-snappy) ease,
|
|
@@ -152,7 +183,7 @@ let OhTextarea = class OhTextarea extends OhElement {
|
|
|
152
183
|
border-color: var(--oh-color-feedback-error);
|
|
153
184
|
background-color: var(--oh-color-feedback-error-subtle);
|
|
154
185
|
box-shadow: inset var(--oh-elevation-offset-md)
|
|
155
|
-
var(--oh-elevation-offset-md) 0 0 var(--oh-
|
|
186
|
+
var(--oh-elevation-offset-md) 0 0 var(--oh-elevation-color-error);
|
|
156
187
|
}
|
|
157
188
|
|
|
158
189
|
.textarea--error:focus {
|
|
@@ -160,7 +191,7 @@ let OhTextarea = class OhTextarea extends OhElement {
|
|
|
160
191
|
box-shadow: inset 0 0 0 2px var(--oh-color-feedback-error);
|
|
161
192
|
}
|
|
162
193
|
|
|
163
|
-
/* Disabled:
|
|
194
|
+
/* Disabled: color.*.disabled tokens, no shadow, no resizing */
|
|
164
195
|
.textarea:disabled {
|
|
165
196
|
cursor: not-allowed;
|
|
166
197
|
resize: none;
|
package/dist/oh-textarea.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oh-textarea.js","sourceRoot":"","sources":["../src/oh-textarea.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;;;;;;;AAEH,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAuB,MAAM,KAAK,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAElD
|
|
1
|
+
{"version":3,"file":"oh-textarea.js","sourceRoot":"","sources":["../src/oh-textarea.ts"],"names":[],"mappings":"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"}
|
package/dist/oh-toggle.d.ts
CHANGED
|
@@ -1,30 +1,63 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* oh-toggle
|
|
3
3
|
*
|
|
4
|
-
* A
|
|
4
|
+
* A switch for binary on/off settings.
|
|
5
5
|
*
|
|
6
6
|
* DESIGN DECISIONS:
|
|
7
7
|
* ─────────────────
|
|
8
|
-
* 1.
|
|
9
|
-
* -
|
|
10
|
-
* -
|
|
11
|
-
*
|
|
8
|
+
* 1. LOOK FROM TOKENS
|
|
9
|
+
* - Track: shape.pill, color.surface.raised off, color.brand.primary on
|
|
10
|
+
* - Thumb: color.surface.base with a stroke.control border in
|
|
11
|
+
* color.border.emphasis, and a shadow offset by elevation.offset.*
|
|
12
|
+
* (elevation.color.secondary off, elevation.color.primary on). The shadow's horizontal
|
|
13
|
+
* offset flips when checked; hover and press move the thumb by
|
|
14
|
+
* lift.hoverSm / lift.pressSm
|
|
12
15
|
*
|
|
13
16
|
* 2. VISUAL STATES
|
|
14
|
-
* - Off:
|
|
15
|
-
* - On: Brand primary track, thumb on right, shadow bottom-left (flipped)
|
|
17
|
+
* - Off: thumb at the start of the track; on: thumb at the end
|
|
16
18
|
*
|
|
17
19
|
* 3. ACCESSIBILITY
|
|
18
|
-
* -
|
|
20
|
+
* - role="switch" with aria-checked on a focusable track
|
|
19
21
|
* - Keyboard: Space/Enter to toggle
|
|
20
|
-
* - Focus
|
|
21
|
-
*
|
|
22
|
+
* - Focus: a solid outline in focus.ringColor (focus.glowColor adds a
|
|
23
|
+
* glow around it, as decoration)
|
|
24
|
+
* - Named by its visible label (aria-labelledby) or accessible-label
|
|
25
|
+
*/
|
|
26
|
+
import { OhElement } from "./base.js";
|
|
27
|
+
/**
|
|
28
|
+
* A switch that turns a setting on or off.
|
|
29
|
+
*
|
|
30
|
+
* **Use it for** a setting that takes effect straight away, such as turning
|
|
31
|
+
* notifications on. **Don't use it for** a choice that's only applied when a
|
|
32
|
+
* form is submitted, or one that must be agreed to (use `oh-checkbox`), or
|
|
33
|
+
* a choice between more than two options (use `oh-radio-group`).
|
|
34
|
+
*
|
|
35
|
+
* **States:** off, on, hover, active, focus.
|
|
36
|
+
*
|
|
37
|
+
* **Behaviour:** clicking the switch or its label, or pressing Space or
|
|
38
|
+
* Enter while it's focused, flips `checked` and fires `oh-change` with
|
|
39
|
+
* `{ checked }`. `name` and `value` are stored but it isn't form-associated,
|
|
40
|
+
* so it doesn't submit with a native form: listen for `oh-change`. It has no
|
|
41
|
+
* `disabled` property. Under `prefers-reduced-motion` it doesn't animate.
|
|
42
|
+
*
|
|
43
|
+
* **Accessibility:** `role="switch"` with `aria-checked`, in the tab order.
|
|
44
|
+
* Set `label` (a visible label, linked with `aria-labelledby`), or
|
|
45
|
+
* `accessible-label` when there's no visible label (not `aria-label`, which
|
|
46
|
+
* isn't forwarded into the shadow root). Focus is a solid outline in
|
|
47
|
+
* `focus.ringColor`.
|
|
48
|
+
*
|
|
49
|
+
* **Look:** set by tokens — `shape.pill` (track), `color.surface.raised` /
|
|
50
|
+
* `color.brand.primary` (track off / on), `color.surface.base`,
|
|
51
|
+
* `stroke.control` and `color.border.emphasis` (thumb),
|
|
52
|
+
* `elevation.offset.*` with `elevation.color.secondary` / `elevation.color.primary` (thumb
|
|
53
|
+
* shadow off / on), `lift.hoverSm` / `lift.pressSm` (movement on hover and
|
|
54
|
+
* press), `focus.ringColor` and `focus.glowColor` (focus),
|
|
55
|
+
* `typography.body.*` (label).
|
|
22
56
|
*
|
|
23
57
|
* @element oh-toggle
|
|
24
58
|
*
|
|
25
|
-
* @fires oh-change - Fired when the toggle state changes
|
|
59
|
+
* @fires oh-change - Fired when the toggle state changes. detail: { checked }
|
|
26
60
|
*/
|
|
27
|
-
import { OhElement } from "./base.js";
|
|
28
61
|
export declare class OhToggle extends OhElement {
|
|
29
62
|
static styles: import("lit").CSSResult[];
|
|
30
63
|
/** Whether the toggle is checked/on */
|
package/dist/oh-toggle.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oh-toggle.d.ts","sourceRoot":"","sources":["../src/oh-toggle.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"oh-toggle.d.ts","sourceRoot":"","sources":["../src/oh-toggle.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAIH,OAAO,EAAE,SAAS,EAAc,MAAM,WAAW,CAAC;AAElD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,qBACa,QAAS,SAAQ,SAAS;IACrC,OAAgB,MAAM,4BA4HpB;IAEF,uCAAuC;IAEvC,OAAO,UAAS;IAEhB,8CAA8C;IAE9C,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;OAGG;IAEH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,+BAA+B;IAE/B,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,gCAAgC;IAEhC,KAAK,SAAQ;IAEb,OAAO,CAAC,OAAO;IAWf,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA+D;IAExF,MAAM;CA4BP;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,WAAW,EAAE,QAAQ,CAAC;KACvB;CACF"}
|