@uni-design-system/uni-mcp 11.6.0 → 11.8.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/CHANGELOG.md +4 -0
- package/dist/{chunk-INTB6KJ7.js → chunk-R4RLYWUY.js} +715 -256
- package/dist/chunk-R4RLYWUY.js.map +1 -0
- package/dist/http.js +1 -1
- package/dist/server.js +1 -1
- package/dist/stdio.js +1 -1
- package/package.json +2 -2
- package/dist/chunk-INTB6KJ7.js.map +0 -1
|
@@ -7,16 +7,16 @@ import { z } from "zod";
|
|
|
7
7
|
// src/data/uni-index.json
|
|
8
8
|
var uni_index_default = {
|
|
9
9
|
meta: {
|
|
10
|
-
version: "11.
|
|
11
|
-
builtAt: "2026-10-
|
|
10
|
+
version: "11.8.0",
|
|
11
|
+
builtAt: "2026-10-22T14:39:12.220Z",
|
|
12
12
|
frameworks: [
|
|
13
13
|
"angular"
|
|
14
14
|
],
|
|
15
15
|
counts: {
|
|
16
|
-
components:
|
|
17
|
-
tokens:
|
|
16
|
+
components: 89,
|
|
17
|
+
tokens: 512,
|
|
18
18
|
themes: 2,
|
|
19
|
-
examples:
|
|
19
|
+
examples: 261,
|
|
20
20
|
utilities: 122
|
|
21
21
|
}
|
|
22
22
|
},
|
|
@@ -28,7 +28,7 @@ var uni_index_default = {
|
|
|
28
28
|
summary: "",
|
|
29
29
|
description: "",
|
|
30
30
|
category: "feedback",
|
|
31
|
-
version: "11.
|
|
31
|
+
version: "11.8.0",
|
|
32
32
|
bindings: {
|
|
33
33
|
angular: {
|
|
34
34
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -118,7 +118,7 @@ var uni_index_default = {
|
|
|
118
118
|
summary: "Horizontal application bar: project leading controls (menu button, logo) with the `leading` attribute, actions with `trailing` (pushed to the far edge), and either pass `title` or project custom center content.",
|
|
119
119
|
description: "Horizontal application bar: project leading controls (menu button, logo) with the `leading` attribute, actions with `trailing` (pushed to the far edge), and either pass `title` or project custom center content. Surface, divider, height, typography and spacing all resolve from `appBar` tokens. Place it inside your page's `<header>` landmark.",
|
|
120
120
|
category: "components",
|
|
121
|
-
version: "11.
|
|
121
|
+
version: "11.8.0",
|
|
122
122
|
bindings: {
|
|
123
123
|
angular: {
|
|
124
124
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -191,7 +191,7 @@ var uni_index_default = {
|
|
|
191
191
|
summary: "Identity avatar with a graceful fallback chain: image \u2192 initials from `name` \u2192 themed symbol.",
|
|
192
192
|
description: "Identity avatar with a graceful fallback chain: image \u2192 initials from `name` \u2192 themed symbol. Coloring, radius, typeface and sizes all resolve from `avatar` theme tokens; `variant` picks the container palette.",
|
|
193
193
|
category: "components",
|
|
194
|
-
version: "11.
|
|
194
|
+
version: "11.8.0",
|
|
195
195
|
bindings: {
|
|
196
196
|
angular: {
|
|
197
197
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -286,7 +286,7 @@ var uni_index_default = {
|
|
|
286
286
|
summary: "Overlapping stack of avatars.",
|
|
287
287
|
description: "Overlapping stack of avatars. `max` collapses the overflow into a themed \u201C+N\u201D chip (itself a `uni-avatar`). Overlap and separator ring resolve from `avatarGroup` theme tokens.",
|
|
288
288
|
category: "components",
|
|
289
|
-
version: "11.
|
|
289
|
+
version: "11.8.0",
|
|
290
290
|
bindings: {
|
|
291
291
|
angular: {
|
|
292
292
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -335,7 +335,7 @@ var uni_index_default = {
|
|
|
335
335
|
summary: "",
|
|
336
336
|
description: "",
|
|
337
337
|
category: "primitives",
|
|
338
|
-
version: "11.
|
|
338
|
+
version: "11.8.0",
|
|
339
339
|
bindings: {
|
|
340
340
|
angular: {
|
|
341
341
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -416,7 +416,7 @@ var uni_index_default = {
|
|
|
416
416
|
summary: "",
|
|
417
417
|
description: "",
|
|
418
418
|
category: "feedback",
|
|
419
|
-
version: "11.
|
|
419
|
+
version: "11.8.0",
|
|
420
420
|
bindings: {
|
|
421
421
|
angular: {
|
|
422
422
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -513,7 +513,7 @@ var uni_index_default = {
|
|
|
513
513
|
summary: "",
|
|
514
514
|
description: "",
|
|
515
515
|
category: "directives",
|
|
516
|
-
version: "11.
|
|
516
|
+
version: "11.8.0",
|
|
517
517
|
bindings: {
|
|
518
518
|
angular: {
|
|
519
519
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -537,7 +537,7 @@ var uni_index_default = {
|
|
|
537
537
|
summary: 'The base layout primitive, applied as an attribute to any element so semantics stay yours: `<main box-layout [grow]="1" padding="md">`.',
|
|
538
538
|
description: 'The base layout primitive, applied as an attribute to any element so semantics stay yours: `<main box-layout [grow]="1" padding="md">`. It is a directive, so it composes freely \u2014 with another layout attribute (`<div stack-layout uni-text="body-1-long">`) and with a component\'s own host element (`<uni-card box-layout padding="lg">`); Angular merges the host `class` bindings rather than letting one win. Sizing convention (height/width/min/max/inset): a **number is px and needs a binding** \u2014 `[height]="420"`; a **plain attribute is a CSS length string** \u2014 `height="420px"`. Spacing/radius/color inputs take theme tokens.',
|
|
539
539
|
category: "layout",
|
|
540
|
-
version: "11.
|
|
540
|
+
version: "11.8.0",
|
|
541
541
|
bindings: {
|
|
542
542
|
angular: {
|
|
543
543
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -945,7 +945,7 @@ var uni_index_default = {
|
|
|
945
945
|
summary: 'WAI-ARIA breadcrumb: a `nav` landmark wrapping an ordered list; the last item is the current page (`aria-current="page"`), separators are decorative.',
|
|
946
946
|
description: 'WAI-ARIA breadcrumb: a `nav` landmark wrapping an ordered list; the last item is the current page (`aria-current="page"`), separators are decorative. Items with `href` render as real links; without one they render as link-styled buttons emitting `itemClicked` \u2014 wire that to your router.',
|
|
947
947
|
category: "components",
|
|
948
|
-
version: "11.
|
|
948
|
+
version: "11.8.0",
|
|
949
949
|
bindings: {
|
|
950
950
|
angular: {
|
|
951
951
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -1030,7 +1030,7 @@ var uni_index_default = {
|
|
|
1030
1030
|
summary: "",
|
|
1031
1031
|
description: "",
|
|
1032
1032
|
category: "primitives",
|
|
1033
|
-
version: "11.
|
|
1033
|
+
version: "11.8.0",
|
|
1034
1034
|
bindings: {
|
|
1035
1035
|
angular: {
|
|
1036
1036
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -1044,6 +1044,14 @@ var uni_index_default = {
|
|
|
1044
1044
|
default: "false, { transform: booleanAttribute }",
|
|
1045
1045
|
description: ""
|
|
1046
1046
|
},
|
|
1047
|
+
{
|
|
1048
|
+
name: "disabled",
|
|
1049
|
+
kind: "input",
|
|
1050
|
+
type: "unknown",
|
|
1051
|
+
required: false,
|
|
1052
|
+
default: "false, { transform: booleanAttribute }",
|
|
1053
|
+
description: "The native name, accepted as an alias of `disable`. Every other Uni form control takes `disabled`, so consumers write it here too \u2014 and without this input the binding landed on the DOM property, where the host's own `disabled` attribute binding removed it on the first pass. The button rendered enabled, with no error. Either name now works."
|
|
1054
|
+
},
|
|
1047
1055
|
{
|
|
1048
1056
|
name: "loading",
|
|
1049
1057
|
kind: "input",
|
|
@@ -1190,7 +1198,7 @@ var uni_index_default = {
|
|
|
1190
1198
|
summary: "",
|
|
1191
1199
|
description: "",
|
|
1192
1200
|
category: "primitives",
|
|
1193
|
-
version: "11.
|
|
1201
|
+
version: "11.8.0",
|
|
1194
1202
|
bindings: {
|
|
1195
1203
|
angular: {
|
|
1196
1204
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -1222,7 +1230,7 @@ var uni_index_default = {
|
|
|
1222
1230
|
summary: "Inline month calendar: single-date or start\u2013end range selection, day markers (availability dots), min/max fences and disabled dates.",
|
|
1223
1231
|
description: "Inline month calendar: single-date or start\u2013end range selection, day markers (availability dots), min/max fences and disabled dates. One tab stop with a roving-tabindex `role=\"grid\"`; every day is a real button named with its full date. Values are plain ISO strings (`'YYYY-MM-DD'`), never `Date` objects, so bindings are timezone-free and serializable. Selection and today colours come from the theme's `primary` role pair; geometry and glyphs come from the `calendar` theme entry.",
|
|
1224
1232
|
category: "forms",
|
|
1225
|
-
version: "11.
|
|
1233
|
+
version: "11.8.0",
|
|
1226
1234
|
bindings: {
|
|
1227
1235
|
angular: {
|
|
1228
1236
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -1463,7 +1471,7 @@ var uni_index_default = {
|
|
|
1463
1471
|
summary: "Anchored coach-mark panel that dims the page and cuts a spotlight hole around its target.",
|
|
1464
1472
|
description: 'Anchored coach-mark panel that dims the page and cuts a spotlight hole around its target. Both the scrim and the panel are `popover="manual"` elements shown in order, so they stack deterministically in the top layer above every app z-index, and every scrim piece is CSS-anchor-positioned to the target \u2014 the hole tracks scroll/resize/layout with zero listeners. The panel is a non-modal `role="dialog"` (deliberately no `aria-modal`): focus moves into it on open, Tab runs a "duet loop" over the panel\'s focusables plus the spotlit target while it stays interactive, and on close focus returns to the pre-open element \u2014 unless the user moved into the target, where it stays. Storage-free by rule: `key` and the `dismissed` output are the "don\'t show again" hooks; persistence is the app\'s business (e.g. cdk local-storage).',
|
|
1465
1473
|
category: "components",
|
|
1466
|
-
version: "11.
|
|
1474
|
+
version: "11.8.0",
|
|
1467
1475
|
bindings: {
|
|
1468
1476
|
angular: {
|
|
1469
1477
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -1683,7 +1691,7 @@ var uni_index_default = {
|
|
|
1683
1691
|
summary: "",
|
|
1684
1692
|
description: "",
|
|
1685
1693
|
category: "layout",
|
|
1686
|
-
version: "11.
|
|
1694
|
+
version: "11.8.0",
|
|
1687
1695
|
bindings: {
|
|
1688
1696
|
angular: {
|
|
1689
1697
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -1745,7 +1753,7 @@ var uni_index_default = {
|
|
|
1745
1753
|
summary: "",
|
|
1746
1754
|
description: "",
|
|
1747
1755
|
category: "layout",
|
|
1748
|
-
version: "11.
|
|
1756
|
+
version: "11.8.0",
|
|
1749
1757
|
bindings: {
|
|
1750
1758
|
angular: {
|
|
1751
1759
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -1786,7 +1794,7 @@ var uni_index_default = {
|
|
|
1786
1794
|
summary: "",
|
|
1787
1795
|
description: "",
|
|
1788
1796
|
category: "layout",
|
|
1789
|
-
version: "11.
|
|
1797
|
+
version: "11.8.0",
|
|
1790
1798
|
bindings: {
|
|
1791
1799
|
angular: {
|
|
1792
1800
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -1843,7 +1851,7 @@ var uni_index_default = {
|
|
|
1843
1851
|
summary: "",
|
|
1844
1852
|
description: "",
|
|
1845
1853
|
category: "layout",
|
|
1846
|
-
version: "11.
|
|
1854
|
+
version: "11.8.0",
|
|
1847
1855
|
bindings: {
|
|
1848
1856
|
angular: {
|
|
1849
1857
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -1898,7 +1906,7 @@ var uni_index_default = {
|
|
|
1898
1906
|
summary: "",
|
|
1899
1907
|
description: "",
|
|
1900
1908
|
category: "forms",
|
|
1901
|
-
version: "11.
|
|
1909
|
+
version: "11.8.0",
|
|
1902
1910
|
bindings: {
|
|
1903
1911
|
angular: {
|
|
1904
1912
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -2120,7 +2128,7 @@ var uni_index_default = {
|
|
|
2120
2128
|
summary: "Form-bound, closed-set, single-select autocomplete: `FormValueControl<T | null>` over object `Options<T>`, type-to-filter, commit-on-select.",
|
|
2121
2129
|
description: "Form-bound, closed-set, single-select autocomplete: `FormValueControl<T | null>` over object `Options<T>`, type-to-filter, commit-on-select. Typing produces a draft \u2014 a filter, never a value; the value changes only when an option commits, `clear()` runs, or the model is written from outside. Select semantics, not search: a real label, a chevron, no magnifier, nothing submits. For short lists with no need to type, prefer `uni-select` \u2014 the value contract is identical, so swapping is a template-only change.",
|
|
2122
2130
|
category: "forms",
|
|
2123
|
-
version: "11.
|
|
2131
|
+
version: "11.8.0",
|
|
2124
2132
|
bindings: {
|
|
2125
2133
|
angular: {
|
|
2126
2134
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -2226,6 +2234,14 @@ var uni_index_default = {
|
|
|
2226
2234
|
default: "true",
|
|
2227
2235
|
description: "Show a \u2715 while a value is set; an emptied field on blur also clears."
|
|
2228
2236
|
},
|
|
2237
|
+
{
|
|
2238
|
+
name: "emptyValue",
|
|
2239
|
+
kind: "input",
|
|
2240
|
+
type: "T | null",
|
|
2241
|
+
required: false,
|
|
2242
|
+
default: "null",
|
|
2243
|
+
description: "What \"nothing selected\" is written as. `null` by default \u2014 the control's contract is `FormValueControl<T | null>` \u2014 but a field bound to a plain `string` schema wants `''`, so a clear does not hand `null` to every reader of a string. A value equal to it reads as empty: no \u2715, no match."
|
|
2244
|
+
},
|
|
2229
2245
|
{
|
|
2230
2246
|
name: "commitOnBlur",
|
|
2231
2247
|
kind: "input",
|
|
@@ -2379,7 +2395,7 @@ emptyText="No countries found"
|
|
|
2379
2395
|
}
|
|
2380
2396
|
],
|
|
2381
2397
|
guidelines: {
|
|
2382
|
-
whenToUse: "The form-bound, **closed-set, single-select** autocomplete: object\n`Options<T>`, `FormValueControl<T | null>`, type-to-filter, commit-on-select.\nTyping produces a *draft* \u2014 a filter, never a value; the value changes only\nwhen an option commits, the field clears, or the model is written from\noutside. Select semantics, not search: a real label, a chevron, no magnifier,\nnothing submits.\nUnder ~10 options and no need to type \u2192 `uni-select`, the native, zero-JS,\nmobile-friendly answer. More options, or users know what they're looking for \u2192\n`uni-combobox`. The value contract is identical (`T | null`, `compareWith`),\nso swapping one for the other as a list grows is a template-only change \u2014 that\nis deliberate. For open sets, where typing *creates* values, use\n`uni-tag-input` (multi) or `uni-search-input` (queries); for closed multi\nsets, `uni-multi-select-dropdown`.",
|
|
2398
|
+
whenToUse: "The form-bound, **closed-set, single-select** autocomplete: object\n`Options<T>`, `FormValueControl<T | null>`, type-to-filter, commit-on-select.\nTyping produces a *draft* \u2014 a filter, never a value; the value changes only\nwhen an option commits, the field clears, or the model is written from\noutside. Select semantics, not search: a real label, a chevron, no magnifier,\nnothing submits.\nUnder ~10 options and no need to type \u2192 `uni-select`, the native, zero-JS,\nmobile-friendly answer. More options, or users know what they're looking for \u2192\n`uni-combobox`. The value contract is identical (`T | null`, `compareWith`),\nso swapping one for the other as a list grows is a template-only change \u2014 that\nis deliberate. A clear writes `null`; a field bound to a plain `string` schema\nsets `emptyValue=\"''\"` so its readers never meet a `null`. For open sets, where typing *creates* values, use\n`uni-tag-input` (multi) or `uni-search-input` (queries); for closed multi\nsets, `uni-multi-select-dropdown`.",
|
|
2383
2399
|
dos: [],
|
|
2384
2400
|
donts: [
|
|
2385
2401
|
"Don't expect free text to commit implicitly \u2014 it never does. Offer creation",
|
|
@@ -2414,7 +2430,7 @@ emptyText="No countries found"
|
|
|
2414
2430
|
summary: "",
|
|
2415
2431
|
description: "",
|
|
2416
2432
|
category: "feedback",
|
|
2417
|
-
version: "11.
|
|
2433
|
+
version: "11.8.0",
|
|
2418
2434
|
bindings: {
|
|
2419
2435
|
angular: {
|
|
2420
2436
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -2461,7 +2477,7 @@ emptyText="No countries found"
|
|
|
2461
2477
|
summary: "Recipient field for picking people: removable chips, a text input, and a list of known contacts that opens on focus and narrows as the user types \u2014 each row drawn as a person (avatar, name, address, a trailing note).",
|
|
2462
2478
|
description: "Recipient field for picking people: removable chips, a text input, and a list of known contacts that opens on focus and narrows as the user types \u2014 each row drawn as a person (avatar, name, address, a trailing note). A thin composition of `uni-tag-input` with a mail client's manners baked in: ArrowDown walks the matches and Enter picks the active one, Backspace in an empty field removes the last person, and text that is neither a known contact nor a valid address stays in the field to be fixed (`rejected` says why). Reach for `uni-tag-input` itself when the tokens are not people.",
|
|
2463
2479
|
category: "forms",
|
|
2464
|
-
version: "11.
|
|
2480
|
+
version: "11.8.0",
|
|
2465
2481
|
bindings: {
|
|
2466
2482
|
angular: {
|
|
2467
2483
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -2559,6 +2575,14 @@ emptyText="No countries found"
|
|
|
2559
2575
|
default: "true",
|
|
2560
2576
|
description: "Accept a typed value that is not a known contact. On by default \u2014 a typed email address becomes a chip; `false` restricts the field to `contacts`."
|
|
2561
2577
|
},
|
|
2578
|
+
{
|
|
2579
|
+
name: "chipAvatar",
|
|
2580
|
+
kind: "input",
|
|
2581
|
+
type: "boolean | undefined",
|
|
2582
|
+
required: false,
|
|
2583
|
+
default: "undefined",
|
|
2584
|
+
description: "Draw an initials avatar on each chip. Unbound, the `contactInput` theme entry's `chipAvatar` decides (on by default). Off, a chip is the name alone \u2014 in a narrow row of first names the initials only repeat it."
|
|
2585
|
+
},
|
|
2562
2586
|
{
|
|
2563
2587
|
name: "filterLocally",
|
|
2564
2588
|
kind: "input",
|
|
@@ -2710,7 +2734,7 @@ emptyText="No countries found"
|
|
|
2710
2734
|
}
|
|
2711
2735
|
],
|
|
2712
2736
|
guidelines: {
|
|
2713
|
-
whenToUse: "Recipient field for picking people: removable chips, a text input, and a list\nof known contacts that opens on focus and narrows as the user types. Each row\nis drawn as a person \u2014 avatar, name, address, and an optional note. Reach for\nit for a To line, a share dialog, assignees or mentions; for tokens that are\nnot people, use `uni-tag-input`, which this composes.\nIt behaves like a mail client: ArrowDown walks the matches and Enter picks\nthe active one, Backspace in an empty field removes the last person, and text\nthat is neither a known contact nor a valid address stays in the field to be\nfixed. Set `autoHighlight` to keep the first match active, so Enter or Tab\npicks it without arrowing. The chips come\nfrom the `tag` theme entry, the popup from `tagInput`, the field chrome from\n`input`, and the person row from `contactInput`.",
|
|
2737
|
+
whenToUse: "Recipient field for picking people: removable chips, a text input, and a list\nof known contacts that opens on focus and narrows as the user types. Each row\nis drawn as a person \u2014 avatar, name, address, and an optional note. Reach for\nit for a To line, a share dialog, assignees or mentions; for tokens that are\nnot people, use `uni-tag-input`, which this composes.\nIt behaves like a mail client: ArrowDown walks the matches and Enter picks\nthe active one, Backspace in an empty field removes the last person, and text\nthat is neither a known contact nor a valid address stays in the field to be\nfixed. Set `autoHighlight` to keep the first match active, so Enter or Tab\npicks it without arrowing. A paste splits on commas, semicolons, line breaks\nand whitespace, so a column copied from a spreadsheet becomes one chip per\naddress (`parse` takes over tokenizing when that is wrong). The chips come\nfrom the `tag` theme entry, the popup from `tagInput`, the field chrome from\n`input`, and the person row and chip avatar from `contactInput`.",
|
|
2714
2738
|
dos: [
|
|
2715
2739
|
"Order `contacts` most-relevant first; only the first few are shown.",
|
|
2716
2740
|
"Set `filterLocally` to `false` and refresh `contacts` from `(query)` when",
|
|
@@ -2738,7 +2762,7 @@ emptyText="No countries found"
|
|
|
2738
2762
|
summary: "",
|
|
2739
2763
|
description: "",
|
|
2740
2764
|
category: "forms",
|
|
2741
|
-
version: "11.
|
|
2765
|
+
version: "11.8.0",
|
|
2742
2766
|
bindings: {
|
|
2743
2767
|
angular: {
|
|
2744
2768
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -2837,7 +2861,7 @@ emptyText="No countries found"
|
|
|
2837
2861
|
summary: "",
|
|
2838
2862
|
description: "",
|
|
2839
2863
|
category: "data",
|
|
2840
|
-
version: "11.
|
|
2864
|
+
version: "11.8.0",
|
|
2841
2865
|
bindings: {
|
|
2842
2866
|
angular: {
|
|
2843
2867
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -3056,6 +3080,23 @@ emptyText="No countries found"
|
|
|
3056
3080
|
datasource: new UniRecordDatasource<any>(starWarsCharacters),
|
|
3057
3081
|
}
|
|
3058
3082
|
-->`
|
|
3083
|
+
},
|
|
3084
|
+
{
|
|
3085
|
+
title: "Column Options",
|
|
3086
|
+
framework: "angular",
|
|
3087
|
+
code: `<!-- Storybook story: Column Options -->
|
|
3088
|
+
<ng-template #nameCell let-row let-index="index">
|
|
3089
|
+
<div box-layout padding="sm" uni-text="title-small">{{ index + 1 }}. {{ row.name }}</div>
|
|
3090
|
+
</ng-template>
|
|
3091
|
+
<uni-data-table
|
|
3092
|
+
[datasource]="datasource"
|
|
3093
|
+
[useRowClick]="false"
|
|
3094
|
+
[columns]="[
|
|
3095
|
+
{ columnDef: 'name', header: 'Name', textAlign: 'left', width: '50%', template: nameCell },
|
|
3096
|
+
base[0],
|
|
3097
|
+
base[1]
|
|
3098
|
+
]"
|
|
3099
|
+
/>`
|
|
3059
3100
|
}
|
|
3060
3101
|
],
|
|
3061
3102
|
guidelines: {
|
|
@@ -3063,7 +3104,7 @@ emptyText="No countries found"
|
|
|
3063
3104
|
dos: [],
|
|
3064
3105
|
donts: [],
|
|
3065
3106
|
accessibility: [
|
|
3066
|
-
'Column headers use `scope="col"`; sortable headers are real buttons with `aria-sort` on the `<th>`.',
|
|
3107
|
+
'Column headers use `scope="col"`; sortable headers are real buttons with `aria-sort` on the `<th>`. A `sortable: false` column is a plain heading with neither.',
|
|
3067
3108
|
'The loading overlay is a `role="status"` region and the table is `aria-busy` while loading.',
|
|
3068
3109
|
"Collapsed detail rows are `inert`, out of the accessibility tree until expanded."
|
|
3069
3110
|
]
|
|
@@ -3077,7 +3118,7 @@ emptyText="No countries found"
|
|
|
3077
3118
|
summary: "Date field with free-typed parsing and a popup calendar.",
|
|
3078
3119
|
description: "Date field with free-typed parsing and a popup calendar. Type `aug 20`, `8/20/2026` or `2026-08-20`, or pick from the grid \u2014 the form gets the same canonical `'YYYY-MM-DD'` string either way. Parsing is `Intl`-driven (locale digit order and month names, never hardcoded); unreadable text stays in the field, flagged, with a `rejected` event. The popup is a native popover hosting the same `uni-calendar` an app could render inline.",
|
|
3079
3120
|
category: "forms",
|
|
3080
|
-
version: "11.
|
|
3121
|
+
version: "11.8.0",
|
|
3081
3122
|
bindings: {
|
|
3082
3123
|
angular: {
|
|
3083
3124
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -3308,7 +3349,7 @@ emptyText="No countries found"
|
|
|
3308
3349
|
summary: "One field for a date and a time: a thin composer seating a uni-date-input and a uni-time-input in one input-box chrome under one label, yielding one combined `'YYYY-MM-DDTHH:mm'` value.",
|
|
3309
3350
|
description: "One field for a date and a time: a thin composer seating a uni-date-input and a uni-time-input in one input-box chrome under one label, yielding one combined `'YYYY-MM-DDTHH:mm'` value. The value emits only when both parts are set \u2014 a time without a day is not an answer \u2014 and clearing the date clears it. With `slotsFor`, the time part stays disabled until a day is chosen and offers exactly that day's slots: the scheduling flow in one attribute. Two honest tab stops (it is two questions); apps needing a different arrangement compose the primitives directly.",
|
|
3310
3351
|
category: "forms",
|
|
3311
|
-
version: "11.
|
|
3352
|
+
version: "11.8.0",
|
|
3312
3353
|
bindings: {
|
|
3313
3354
|
angular: {
|
|
3314
3355
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -3501,7 +3542,7 @@ emptyText="No countries found"
|
|
|
3501
3542
|
summary: "Text input that emits `change` only after the user pauses typing.",
|
|
3502
3543
|
description: "Text input that emits `change` only after the user pauses typing. Wears the shared input chrome (themed color, border, typeface, focus ring) via `uni-input-box`; project adornments with the `pre-input` / `post-input` slots, matching `uni-input`'s convention. The ARIA passthrough inputs let a wrapping composite (e.g. SearchInput's combobox) annotate the real input element.",
|
|
3503
3544
|
category: "forms",
|
|
3504
|
-
version: "11.
|
|
3545
|
+
version: "11.8.0",
|
|
3505
3546
|
bindings: {
|
|
3506
3547
|
angular: {
|
|
3507
3548
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -3649,7 +3690,7 @@ emptyText="No countries found"
|
|
|
3649
3690
|
summary: "Modal dialog on the native `<dialog>` element, laid out as three rows: an optional `[dialog-header]`, the projected body, an optional `[dialog-buttons]`.",
|
|
3650
3691
|
description: "Modal dialog on the native `<dialog>` element, laid out as three rows: an optional `[dialog-header]`, the projected body, an optional `[dialog-buttons]`. **The surface is never the scroll container.** It is a flex column that is `overflow: clip` on both axes; the header and buttons pin while only the body row scrolls. Unlike the drawer, which is deliberately viewport-tall, the dialog stays content-sized: it has no `height`, and grows until it hits `calc(100dvh - 2 x inset)` \u2014 the point at which the body starts to scroll. The theme's `padding` insets all three rows (which is what makes the default header read as a pill floating inside the surface); `bodyPadding` pads the scrolling row alone.",
|
|
3651
3692
|
category: "feedback",
|
|
3652
|
-
version: "11.
|
|
3693
|
+
version: "11.8.0",
|
|
3653
3694
|
bindings: {
|
|
3654
3695
|
angular: {
|
|
3655
3696
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -3772,6 +3813,21 @@ uni-dialog
|
|
|
3772
3813
|
</div>
|
|
3773
3814
|
<footer dialog-buttons confirmButtonText="Save" cancelButtonText="Cancel"></footer>
|
|
3774
3815
|
</dialog>`
|
|
3816
|
+
},
|
|
3817
|
+
{
|
|
3818
|
+
title: "Rich Head",
|
|
3819
|
+
framework: "angular",
|
|
3820
|
+
code: '<!-- Storybook story: Rich Head -->\n<button text-button variant="primary" (click)="show = true">Open dialog</button>\n<dialog uni-dialog [(show)]="show">\n<header dialog-header rich>\n <span uni-text="label" display="block" color="on-surface-variant">Custom work</span>\n <h2 uni-text="headline-small" dialog-title>Add custom work</h2>\n <span uni-text="body-2-long" display="block" color="on-surface-variant">\n Describe the piece, who it is for, and when it is needed.\n </span>\n</header>\n<div stack-layout gap="md" padding="md" [width]="420">\n <uni-input label="Piece" placeholder="What is being made" />\n <uni-input label="Client" placeholder="Who it is for" />\n</div>\n<footer dialog-buttons confirmButtonText="Add" cancelButtonText="Cancel"></footer>\n</dialog>'
|
|
3821
|
+
},
|
|
3822
|
+
{
|
|
3823
|
+
title: "Custom Footer",
|
|
3824
|
+
framework: "angular",
|
|
3825
|
+
code: '<!-- Storybook story: Custom Footer -->\n<button text-button variant="primary" (click)="show = true">Open dialog</button>\n<dialog uni-dialog [(show)]="show" #dialog>\n<header dialog-header>Confirm purchase order</header>\n<div box-layout padding="md" [width]="420">\n <span uni-text="body-1-long">Three line items, one vendor, delivery in two weeks.</span>\n</div>\n<footer dialog-buttons [closeOnConfirm]="false" [loading]="saving" (confirmed)="save(dialog)">\n <span dialog-footnote uni-text="caption" color="on-surface-variant">The order opens for your review.</span>\n</footer>\n</dialog>'
|
|
3826
|
+
},
|
|
3827
|
+
{
|
|
3828
|
+
title: "Projected Actions",
|
|
3829
|
+
framework: "angular",
|
|
3830
|
+
code: '<!-- Storybook story: Projected Actions -->\n<button text-button variant="primary" (click)="show = true">Open dialog</button>\n<dialog uni-dialog [(show)]="show" #dialog>\n<header dialog-header>Unsaved changes</header>\n<div box-layout padding="md" [width]="420">\n <span uni-text="body-1-long">Keep the draft, use the saved version, or discard both?</span>\n</div>\n<footer dialog-buttons justifyContent="flex-end">\n <button text-button variant="warn" (click)="dialog.close()">Discard</button>\n <button text-button variant="secondary" (click)="dialog.close()">Use saved</button>\n <button text-button variant="primary" (click)="dialog.close()">Keep draft</button>\n</footer>\n</dialog>'
|
|
3775
3831
|
}
|
|
3776
3832
|
],
|
|
3777
3833
|
guidelines: {
|
|
@@ -3781,7 +3837,8 @@ uni-dialog
|
|
|
3781
3837
|
accessibility: [
|
|
3782
3838
|
"Focus trapping and keyboard navigation (Tab, Escape, Enter)",
|
|
3783
3839
|
"Screen reader announcements",
|
|
3784
|
-
"Semantic dialog roles"
|
|
3840
|
+
"Semantic dialog roles",
|
|
3841
|
+
"A `[dialog-header]` labels the dialog; in a `rich` head, mark the headline"
|
|
3785
3842
|
]
|
|
3786
3843
|
},
|
|
3787
3844
|
relatedTokens: [
|
|
@@ -3790,6 +3847,7 @@ uni-dialog
|
|
|
3790
3847
|
"dialog.behavior.border",
|
|
3791
3848
|
"dialog.behavior.padding",
|
|
3792
3849
|
"dialog.behavior.inset",
|
|
3850
|
+
"dialog.behavior.overscroll",
|
|
3793
3851
|
"dialog.behavior.elevation",
|
|
3794
3852
|
"dialog.behavior.backdrop",
|
|
3795
3853
|
"dialog.behavior.motion"
|
|
@@ -3799,10 +3857,10 @@ uni-dialog
|
|
|
3799
3857
|
id: "dialog-buttons",
|
|
3800
3858
|
name: "DialogButtons",
|
|
3801
3859
|
status: "stable",
|
|
3802
|
-
summary: "",
|
|
3803
|
-
description: "",
|
|
3860
|
+
summary: "The dialog's pinned footer action row.",
|
|
3861
|
+
description: "The dialog's pinned footer action row. Empty, it renders a Confirm/Cancel pair wired to the dialog. Project your own buttons and they replace the pair while keeping the row's chrome \u2014 padding, gap, justification, divider, `stretch` and `reverseOrder`. A `[dialog-footnote]` projects on the leading edge, pushing the actions to the trailing one.",
|
|
3804
3862
|
category: "feedback",
|
|
3805
|
-
version: "11.
|
|
3863
|
+
version: "11.8.0",
|
|
3806
3864
|
bindings: {
|
|
3807
3865
|
angular: {
|
|
3808
3866
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -3843,6 +3901,22 @@ uni-dialog
|
|
|
3843
3901
|
required: false,
|
|
3844
3902
|
description: ""
|
|
3845
3903
|
},
|
|
3904
|
+
{
|
|
3905
|
+
name: "closeOnConfirm",
|
|
3906
|
+
kind: "input",
|
|
3907
|
+
type: "unknown",
|
|
3908
|
+
required: false,
|
|
3909
|
+
default: "true, { transform: booleanAttribute }",
|
|
3910
|
+
description: "Whether Confirm closes the dialog as it emits `confirmed`. On by default. Off, the caller closes when its save resolves \u2014 a dialog that confirms asynchronously stays open with its error when the save fails."
|
|
3911
|
+
},
|
|
3912
|
+
{
|
|
3913
|
+
name: "loading",
|
|
3914
|
+
kind: "input",
|
|
3915
|
+
type: "unknown",
|
|
3916
|
+
required: false,
|
|
3917
|
+
default: "false, { transform: booleanAttribute }",
|
|
3918
|
+
description: "Passed to the Confirm button: a spinner, and no second click."
|
|
3919
|
+
},
|
|
3846
3920
|
{
|
|
3847
3921
|
name: "padding",
|
|
3848
3922
|
kind: "input",
|
|
@@ -3903,15 +3977,23 @@ uni-dialog
|
|
|
3903
3977
|
id: "dialog-header",
|
|
3904
3978
|
name: "DialogHeader",
|
|
3905
3979
|
status: "stable",
|
|
3906
|
-
summary: "",
|
|
3907
|
-
description: "",
|
|
3980
|
+
summary: "The dialog's pinned header row, in one of two shapes: - **Title bar** (default): one line of text, set in the theme's `textRole` and aligned by `textAlign`, beside a close button.",
|
|
3981
|
+
description: "The dialog's pinned header row, in one of two shapes: - **Title bar** (default): one line of text, set in the theme's `textRole` and aligned by `textAlign`, beside a close button. - **Rich** (`rich`): the projection is rendered as a block \u2014 an eyebrow, a headline, a blurb \u2014 beside the close button, in its own `richColor` and `richPadding`. Mark the headline `[dialog-title]` so it alone names the dialog.",
|
|
3908
3982
|
category: "feedback",
|
|
3909
|
-
version: "11.
|
|
3983
|
+
version: "11.8.0",
|
|
3910
3984
|
bindings: {
|
|
3911
3985
|
angular: {
|
|
3912
3986
|
importPath: "@uni-design-system/uni-angular",
|
|
3913
3987
|
selectorOrTag: "[uni-dialog-header], [dialog-header]",
|
|
3914
3988
|
api: [
|
|
3989
|
+
{
|
|
3990
|
+
name: "rich",
|
|
3991
|
+
kind: "input",
|
|
3992
|
+
type: "unknown",
|
|
3993
|
+
required: false,
|
|
3994
|
+
default: "false, { transform: booleanAttribute }",
|
|
3995
|
+
description: "Render the projection as a block rather than one line of text. A sheet's head \u2014 eyebrow, headline, blurb \u2014 has nowhere to go in a title bar."
|
|
3996
|
+
},
|
|
3915
3997
|
{
|
|
3916
3998
|
name: "variant",
|
|
3917
3999
|
kind: "input",
|
|
@@ -3940,6 +4022,30 @@ uni-dialog
|
|
|
3940
4022
|
},
|
|
3941
4023
|
relatedTokens: []
|
|
3942
4024
|
},
|
|
4025
|
+
{
|
|
4026
|
+
id: "dialog-title",
|
|
4027
|
+
name: "DialogTitle",
|
|
4028
|
+
status: "stable",
|
|
4029
|
+
summary: "Marks the element that names the dialog inside a rich `[dialog-header]`.",
|
|
4030
|
+
description: "Marks the element that names the dialog inside a rich `[dialog-header]`. A rich head projects an eyebrow, a headline and a blurb; the dialog should be labelled by the headline alone, not read all three as its name. Put this on the headline and it carries the id the dialog's `aria-labelledby` points at. Without one, the whole projected block is the label.",
|
|
4031
|
+
category: "feedback",
|
|
4032
|
+
version: "11.8.0",
|
|
4033
|
+
bindings: {
|
|
4034
|
+
angular: {
|
|
4035
|
+
importPath: "@uni-design-system/uni-angular",
|
|
4036
|
+
selectorOrTag: "[uni-dialog-title], [dialog-title]",
|
|
4037
|
+
api: []
|
|
4038
|
+
}
|
|
4039
|
+
},
|
|
4040
|
+
examples: [],
|
|
4041
|
+
guidelines: {
|
|
4042
|
+
whenToUse: "",
|
|
4043
|
+
dos: [],
|
|
4044
|
+
donts: [],
|
|
4045
|
+
accessibility: []
|
|
4046
|
+
},
|
|
4047
|
+
relatedTokens: []
|
|
4048
|
+
},
|
|
3943
4049
|
{
|
|
3944
4050
|
id: "divider",
|
|
3945
4051
|
name: "Divider",
|
|
@@ -3947,7 +4053,7 @@ uni-dialog
|
|
|
3947
4053
|
summary: "",
|
|
3948
4054
|
description: "",
|
|
3949
4055
|
category: "layout",
|
|
3950
|
-
version: "11.
|
|
4056
|
+
version: "11.8.0",
|
|
3951
4057
|
bindings: {
|
|
3952
4058
|
angular: {
|
|
3953
4059
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -4003,7 +4109,7 @@ uni-dialog
|
|
|
4003
4109
|
summary: "",
|
|
4004
4110
|
description: "",
|
|
4005
4111
|
category: "directives",
|
|
4006
|
-
version: "11.
|
|
4112
|
+
version: "11.8.0",
|
|
4007
4113
|
bindings: {
|
|
4008
4114
|
angular: {
|
|
4009
4115
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -4033,9 +4139,9 @@ uni-dialog
|
|
|
4033
4139
|
name: "Drawer",
|
|
4034
4140
|
status: "stable",
|
|
4035
4141
|
summary: "Drawer with two modes sharing one three-row layout: - `side` \u2014 an in-flow `<aside>` that pushes content (dashboard sidenav); opening/closing animates its width, and the divider border primitive separates it from the page.",
|
|
4036
|
-
description:
|
|
4142
|
+
description: 'Drawer with two modes sharing one three-row layout: - `side` \u2014 an in-flow `<aside>` that pushes content (dashboard sidenav); opening/closing animates its width, and the divider border primitive separates it from the page. - `over` \u2014 a native `<dialog>` in the top layer: focus trap, Escape and scrim backdrop come from the platform (same machinery as `uni-dialog`), sliding in from its edge. With `modal` off it is shown as a `popover="manual"` instead: still the top layer, but no focus trap, no inert page and no backdrop \u2014 a workbench beside a live document. **The panel is never the scroll container.** It is a flex column of three rows \u2014 an optional `[uni-drawer-header]`, the projected body, an optional `[uni-drawer-buttons]` \u2014 and only the body scrolls. The panel itself is `overflow: clip` on both axes. That is what lets a header and a save bar pin while a long form scrolls between them, and it is why the theme\'s `padding` option lands on the body row rather than the panel: padding on a scrolling box scrolls away with its content. Surface, width, divider, elevation, padding, backdrop, scrim and background all resolve from `drawer` theme tokens.',
|
|
4037
4143
|
category: "components",
|
|
4038
|
-
version: "11.
|
|
4144
|
+
version: "11.8.0",
|
|
4039
4145
|
bindings: {
|
|
4040
4146
|
angular: {
|
|
4041
4147
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -4065,6 +4171,22 @@ uni-dialog
|
|
|
4065
4171
|
default: "'start'",
|
|
4066
4172
|
description: ""
|
|
4067
4173
|
},
|
|
4174
|
+
{
|
|
4175
|
+
name: "modal",
|
|
4176
|
+
kind: "input",
|
|
4177
|
+
type: "unknown",
|
|
4178
|
+
required: false,
|
|
4179
|
+
default: "true, { transform: booleanAttribute }",
|
|
4180
|
+
description: 'Whether `over` mode is modal. On by default: `showModal()`, a focus trap, an inert page and a scrim. Off, the panel is a `popover="manual"` \u2014 in the top layer, so nothing can clip or cover it, but the page behind stays live: a settings panel beside the canvas it changes. Escape still asks to close through `closeRequest`; `scrim` has no backdrop to paint and is ignored; see `closeOnOutsideClick` for clicks beyond the panel.'
|
|
4181
|
+
},
|
|
4182
|
+
{
|
|
4183
|
+
name: "closeOnOutsideClick",
|
|
4184
|
+
kind: "input",
|
|
4185
|
+
type: "unknown",
|
|
4186
|
+
required: false,
|
|
4187
|
+
default: "false, { transform: booleanAttribute }",
|
|
4188
|
+
description: "Non-modal only: ask to close (`reason: 'outside'`) on a click beyond the panel. Off by default \u2014 for a workbench the canvas *is* the outside."
|
|
4189
|
+
},
|
|
4068
4190
|
{
|
|
4069
4191
|
name: "ariaLabel",
|
|
4070
4192
|
kind: "input",
|
|
@@ -4193,10 +4315,32 @@ initialFocus="input"
|
|
|
4193
4315
|
title: "Overlay",
|
|
4194
4316
|
framework: "angular",
|
|
4195
4317
|
code: '<!-- Storybook story: Overlay -->\n<button text-button variant="primary" size="md" (click)="open = true">Open drawer</button>\n<uni-drawer mode="over" position="start" [(open)]="open" ariaLabel="Main navigation">\n<span uni-text="title-small" display="block">Dashboard</span>\n<span uni-text="title-small" display="block">Reports</span>\n<span uni-text="title-small" display="block">Settings</span>\n<button text-button variant="secondary" size="sm" (click)="open = false">Close</button>\n</uni-drawer>'
|
|
4318
|
+
},
|
|
4319
|
+
{
|
|
4320
|
+
title: "Non Modal",
|
|
4321
|
+
framework: "angular",
|
|
4322
|
+
code: '<!-- Storybook story: Non Modal -->\n<div box-layout padding="md">\n<h2 uni-text="headline-small">Presentation preview</h2>\n<span uni-text="body-1-long" display="block">\n Change a setting in the panel and judge the result here, without closing it.\n</span>\n<div row-layout gap="sm" alignItems="center">\n <button text-button variant="secondary" size="md" (click)="clicks = clicks + 1">\n Still clickable\n </button>\n <span uni-text="body-2">Clicked {{ clicks }} times</span>\n</div>\n<button text-button variant="primary" size="md" (click)="open = true">Open settings</button>\n</div>\n<uni-drawer\nmode="over"\nposition="end"\n[modal]="false"\n[width]="360"\nheadline="Settings"\ninitialFocus="input"\n[(open)]="open"\n>\n<div stack-layout gap="md">\n <uni-input label="Cover title" placeholder="Spring collection" />\n <uni-input label="Subtitle" placeholder="For the Hartley residence" />\n</div>\n<div drawer-buttons confirmButtonText="Apply"></div>\n</uni-drawer>'
|
|
4323
|
+
},
|
|
4324
|
+
{
|
|
4325
|
+
title: "Custom Footer",
|
|
4326
|
+
framework: "angular",
|
|
4327
|
+
code: `<!-- Storybook story: Custom Footer -->
|
|
4328
|
+
<button text-button variant="primary" size="md" (click)="open = true">Edit quote</button>
|
|
4329
|
+
<uni-drawer mode="over" position="end" [width]="480" headline="Edit quote" [(open)]="open" #drawer>
|
|
4330
|
+
<div stack-layout gap="md">
|
|
4331
|
+
<uni-input label="Line" placeholder="Describe the line" />
|
|
4332
|
+
<uni-number-input label="Unit price" [value]="24.5" />
|
|
4333
|
+
</div>
|
|
4334
|
+
<div drawer-buttons>
|
|
4335
|
+
<span drawer-footnote uni-text="label">Total 1,204.00 USD</span>
|
|
4336
|
+
<button text-button variant="warn" size="md" (click)="drawer.requestClose('close-button')">Discard</button>
|
|
4337
|
+
<button text-button variant="primary" size="md" (click)="open = false">Save</button>
|
|
4338
|
+
</div>
|
|
4339
|
+
</uni-drawer>`
|
|
4196
4340
|
}
|
|
4197
4341
|
],
|
|
4198
4342
|
guidelines: {
|
|
4199
|
-
whenToUse:
|
|
4343
|
+
whenToUse: 'A panel attached to an edge of the page, in one of two modes:\n- **`side`** renders an in-flow `<aside>` that pushes page content \u2014 the classic\n dashboard sidenav. Opening and closing animates its width; a divider border primitive\n separates it from the content, and it is hidden from assistive tech while closed.\n- **`over`** renders a native `<dialog>` in the top layer: focus trapping, Escape, and\n the scrim backdrop come from the platform, and the panel slides in from its edge\n (`position`: `start` or `end`). With `modal` off it is a `popover="manual"`\n instead \u2014 still the top layer, but the page behind stays live.\n`[(open)]` is two-way; Escape and backdrop clicks keep it in sync.',
|
|
4200
4344
|
dos: [],
|
|
4201
4345
|
donts: [],
|
|
4202
4346
|
accessibility: [
|
|
@@ -4204,6 +4348,7 @@ initialFocus="input"
|
|
|
4204
4348
|
'A drawer with a header is labelled by that header\'s title via `aria-labelledby`. Without one, give it an `ariaLabel`. There is deliberately no default: a panel that inherited the name "Navigation" would announce itself as something it is not, and a wrong accessible name is worse than a missing one.',
|
|
4205
4349
|
"`initialFocus` matters more here than in a dialog. The platform focuses the first focusable element, which in a panel with a header is the close button; point it at the first field instead.",
|
|
4206
4350
|
"`scrim: false` keeps the drawer modal \u2014 focus is still trapped, the page behind is still inert \u2014 while leaving the backdrop transparent. Do not read a missing scrim as a non-modal drawer.",
|
|
4351
|
+
'`modal: false` is the non-modal drawer: a `popover="manual"` `<dialog>` with no `aria-modal`, no focus trap and a live page behind it. Escape asks to close only while focus is inside the panel; nothing else dismisses it unless `closeOnOutsideClick` is set.',
|
|
4207
4352
|
"A closed side drawer is `aria-hidden`, so its links leave the accessibility tree."
|
|
4208
4353
|
]
|
|
4209
4354
|
},
|
|
@@ -4224,9 +4369,9 @@ initialFocus="input"
|
|
|
4224
4369
|
name: "DrawerButtons",
|
|
4225
4370
|
status: "stable",
|
|
4226
4371
|
summary: "The drawer's pinned footer action row \u2014 the save bar of an editor panel.",
|
|
4227
|
-
description: "The drawer's pinned footer action row \u2014 the save bar of an editor panel. Sits outside the scrolling body, so the actions stay reachable however long the form is. Mirrors `[dialog-buttons]`; the difference is posture, which lives in the `drawerButtons` theme options rather than here.",
|
|
4372
|
+
description: "The drawer's pinned footer action row \u2014 the save bar of an editor panel. Sits outside the scrolling body, so the actions stay reachable however long the form is. Mirrors `[dialog-buttons]`; the difference is posture, which lives in the `drawerButtons` theme options rather than here. Empty, it renders a Cancel/Save pair wired to the drawer. Project your own buttons and they replace the pair while keeping the row's chrome; a `[drawer-footnote]` projects on the leading edge.",
|
|
4228
4373
|
category: "primitives",
|
|
4229
|
-
version: "11.
|
|
4374
|
+
version: "11.8.0",
|
|
4230
4375
|
bindings: {
|
|
4231
4376
|
angular: {
|
|
4232
4377
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -4267,6 +4412,14 @@ initialFocus="input"
|
|
|
4267
4412
|
required: false,
|
|
4268
4413
|
description: ""
|
|
4269
4414
|
},
|
|
4415
|
+
{
|
|
4416
|
+
name: "loading",
|
|
4417
|
+
kind: "input",
|
|
4418
|
+
type: "unknown",
|
|
4419
|
+
required: false,
|
|
4420
|
+
default: "false, { transform: booleanAttribute }",
|
|
4421
|
+
description: "Passed to the Save button: a spinner, and no second click."
|
|
4422
|
+
},
|
|
4270
4423
|
{
|
|
4271
4424
|
name: "padding",
|
|
4272
4425
|
kind: "input",
|
|
@@ -4323,7 +4476,7 @@ initialFocus="input"
|
|
|
4323
4476
|
summary: "The drawer's pinned header row: a title, and optionally a close button.",
|
|
4324
4477
|
description: "The drawer's pinned header row: a title, and optionally a close button. Sits outside the scrolling body, so it stays put while the form beneath it moves. Reached either by projecting it \u2014 `<div uni-drawer-header>` \u2014 or implicitly, by giving `uni-drawer` a `headline`, in which case the drawer renders one of these itself.",
|
|
4325
4478
|
category: "components",
|
|
4326
|
-
version: "11.
|
|
4479
|
+
version: "11.8.0",
|
|
4327
4480
|
bindings: {
|
|
4328
4481
|
angular: {
|
|
4329
4482
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -4371,7 +4524,7 @@ initialFocus="input"
|
|
|
4371
4524
|
summary: "",
|
|
4372
4525
|
description: "",
|
|
4373
4526
|
category: "components",
|
|
4374
|
-
version: "11.
|
|
4527
|
+
version: "11.8.0",
|
|
4375
4528
|
bindings: {
|
|
4376
4529
|
angular: {
|
|
4377
4530
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -4505,7 +4658,7 @@ initialFocus="input"
|
|
|
4505
4658
|
summary: "",
|
|
4506
4659
|
description: "",
|
|
4507
4660
|
category: "layout",
|
|
4508
|
-
version: "11.
|
|
4661
|
+
version: "11.8.0",
|
|
4509
4662
|
bindings: {
|
|
4510
4663
|
angular: {
|
|
4511
4664
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -4599,7 +4752,10 @@ initialFocus="input"
|
|
|
4599
4752
|
]
|
|
4600
4753
|
},
|
|
4601
4754
|
relatedTokens: [
|
|
4602
|
-
"expand.behavior.motion"
|
|
4755
|
+
"expand.behavior.motion",
|
|
4756
|
+
"expand.behavior.textRole",
|
|
4757
|
+
"expand.behavior.sublabelRole",
|
|
4758
|
+
"expand.behavior.sublabelColor"
|
|
4603
4759
|
]
|
|
4604
4760
|
},
|
|
4605
4761
|
{
|
|
@@ -4609,7 +4765,7 @@ initialFocus="input"
|
|
|
4609
4765
|
summary: "",
|
|
4610
4766
|
description: "",
|
|
4611
4767
|
category: "layout",
|
|
4612
|
-
version: "11.
|
|
4768
|
+
version: "11.8.0",
|
|
4613
4769
|
bindings: {
|
|
4614
4770
|
angular: {
|
|
4615
4771
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -4680,7 +4836,7 @@ initialFocus="input"
|
|
|
4680
4836
|
summary: "Trigger for a {@link UniExpandComponent} region.",
|
|
4681
4837
|
description: "Trigger for a {@link UniExpandComponent} region. Two shapes, chosen by whether `label` is set: - **Icon only** (default) \u2014 the bare chevron, sized for a Card Header. - **Labelled** \u2014 chevron plus a label and optional muted sublabel, as a single full-width button. Most real disclosures need a name for the section, and building that row by hand is the thing this saves; it also makes the label the button's accessible name rather than adjacent text.",
|
|
4682
4838
|
category: "layout",
|
|
4683
|
-
version: "11.
|
|
4839
|
+
version: "11.8.0",
|
|
4684
4840
|
bindings: {
|
|
4685
4841
|
angular: {
|
|
4686
4842
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -4729,13 +4885,13 @@ initialFocus="input"
|
|
|
4729
4885
|
{
|
|
4730
4886
|
title: "Primary",
|
|
4731
4887
|
framework: "angular",
|
|
4732
|
-
code: '<!-- Storybook story: Primary -->\n<uni-expand-toggle [collapsed]="collapsed" #toggle />\n<div>Collapsed: {{ toggle.collapsed() }}</div>\n<!-- args:\n{\n collapsed: true,\n }\n-->'
|
|
4888
|
+
code: '<!-- Storybook story: Primary -->\n<uni-expand-toggle [collapsed]="collapsed" [label]="label" [sublabel]="sublabel" #toggle />\n<div>Collapsed: {{ toggle.collapsed() }}</div>\n<!-- args:\n{\n collapsed: true,\n }\n-->'
|
|
4733
4889
|
},
|
|
4734
4890
|
{
|
|
4735
4891
|
title: "Labelled",
|
|
4736
4892
|
framework: "angular",
|
|
4737
4893
|
code: `<!-- Storybook story: Labelled -->
|
|
4738
|
-
<uni-expand-toggle [collapsed]="collapsed" #toggle />
|
|
4894
|
+
<uni-expand-toggle [collapsed]="collapsed" [label]="label" [sublabel]="sublabel" #toggle />
|
|
4739
4895
|
<div>Collapsed: {{ toggle.collapsed() }}</div>
|
|
4740
4896
|
<!-- args:
|
|
4741
4897
|
{
|
|
@@ -4765,7 +4921,7 @@ initialFocus="input"
|
|
|
4765
4921
|
summary: "",
|
|
4766
4922
|
description: "",
|
|
4767
4923
|
category: "forms",
|
|
4768
|
-
version: "11.
|
|
4924
|
+
version: "11.8.0",
|
|
4769
4925
|
bindings: {
|
|
4770
4926
|
angular: {
|
|
4771
4927
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -4923,7 +5079,7 @@ initialFocus="input"
|
|
|
4923
5079
|
summary: "",
|
|
4924
5080
|
description: "",
|
|
4925
5081
|
category: "layout",
|
|
4926
|
-
version: "11.
|
|
5082
|
+
version: "11.8.0",
|
|
4927
5083
|
bindings: {
|
|
4928
5084
|
angular: {
|
|
4929
5085
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -5020,7 +5176,7 @@ initialFocus="input"
|
|
|
5020
5176
|
summary: "",
|
|
5021
5177
|
description: "",
|
|
5022
5178
|
category: "layout",
|
|
5023
|
-
version: "11.
|
|
5179
|
+
version: "11.8.0",
|
|
5024
5180
|
bindings: {
|
|
5025
5181
|
angular: {
|
|
5026
5182
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -5052,7 +5208,7 @@ initialFocus="input"
|
|
|
5052
5208
|
summary: "",
|
|
5053
5209
|
description: "",
|
|
5054
5210
|
category: "primitives",
|
|
5055
|
-
version: "11.
|
|
5211
|
+
version: "11.8.0",
|
|
5056
5212
|
bindings: {
|
|
5057
5213
|
angular: {
|
|
5058
5214
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -5112,7 +5268,7 @@ initialFocus="input"
|
|
|
5112
5268
|
summary: "",
|
|
5113
5269
|
description: "",
|
|
5114
5270
|
category: "primitives",
|
|
5115
|
-
version: "11.
|
|
5271
|
+
version: "11.8.0",
|
|
5116
5272
|
bindings: {
|
|
5117
5273
|
angular: {
|
|
5118
5274
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -5158,15 +5314,25 @@ initialFocus="input"
|
|
|
5158
5314
|
{
|
|
5159
5315
|
name: "disable",
|
|
5160
5316
|
kind: "input",
|
|
5161
|
-
type: "
|
|
5317
|
+
type: "unknown",
|
|
5162
5318
|
required: false,
|
|
5163
|
-
|
|
5319
|
+
default: "false, { transform: booleanAttribute }",
|
|
5320
|
+
description: "A bare `disable` attribute reads as true, as `uni-button`'s does; `undefined` as false."
|
|
5321
|
+
},
|
|
5322
|
+
{
|
|
5323
|
+
name: "disabled",
|
|
5324
|
+
kind: "input",
|
|
5325
|
+
type: "unknown",
|
|
5326
|
+
required: false,
|
|
5327
|
+
default: "false, { transform: booleanAttribute }",
|
|
5328
|
+
description: "The native name, accepted as an alias of `disable` \u2014 see `uni-button`."
|
|
5164
5329
|
},
|
|
5165
5330
|
{
|
|
5166
5331
|
name: "loading",
|
|
5167
5332
|
kind: "input",
|
|
5168
|
-
type: "
|
|
5333
|
+
type: "unknown",
|
|
5169
5334
|
required: false,
|
|
5335
|
+
default: "false, { transform: booleanAttribute }",
|
|
5170
5336
|
description: ""
|
|
5171
5337
|
},
|
|
5172
5338
|
{
|
|
@@ -5215,7 +5381,7 @@ initialFocus="input"
|
|
|
5215
5381
|
summary: "A button that lives inside a sentence.",
|
|
5216
5382
|
description: "A button that lives inside a sentence. Every other button in the library owns a box. Even `ghost` is a flex box with a hit area, horizontal padding and a type scale of its own, so dropping one into a sentence takes it out of the run of text entirely. This one inherits that type \u2014 family, size, weight, line height and colour \u2014 and adds no padding, so a paragraph reads as one continuous run with an action in the middle of it. It is always a real `<button>`: it can *look* like a link (`underline`, `link`) without claiming to be navigation, so Enter and Space activate it and assistive tech announces a button rather than an unfollowable link. A glyph may sit alongside the label without disturbing that: it is sized in `em`, so it scales with the type it lands in rather than pinning a px size into someone else's paragraph. One limit comes from the element itself. Browsers blockify a `<button>` to `inline-block` whatever `display` it asks for, so the control is an atomic inline box: its own label wraps inside it, but the run cannot split across a line break the way the words around it do. `display: contents` would buy that at the cost of the button being focusable at all, which is not a trade worth making \u2014 keep labels to a few words, which is what an inline action wants anyway.",
|
|
5217
5383
|
category: "primitives",
|
|
5218
|
-
version: "11.
|
|
5384
|
+
version: "11.8.0",
|
|
5219
5385
|
bindings: {
|
|
5220
5386
|
angular: {
|
|
5221
5387
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -5330,7 +5496,7 @@ initialFocus="input"
|
|
|
5330
5496
|
summary: "",
|
|
5331
5497
|
description: "",
|
|
5332
5498
|
category: "forms",
|
|
5333
|
-
version: "11.
|
|
5499
|
+
version: "11.8.0",
|
|
5334
5500
|
bindings: {
|
|
5335
5501
|
angular: {
|
|
5336
5502
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -5535,6 +5701,21 @@ initialFocus="input"
|
|
|
5535
5701
|
required: false,
|
|
5536
5702
|
default: "undefined",
|
|
5537
5703
|
description: ""
|
|
5704
|
+
},
|
|
5705
|
+
{
|
|
5706
|
+
name: "unframed",
|
|
5707
|
+
kind: "input",
|
|
5708
|
+
type: "unknown",
|
|
5709
|
+
required: false,
|
|
5710
|
+
default: "false, { transform: booleanAttribute }",
|
|
5711
|
+
description: "Drop the field chrome and render the bare input \u2014 see `uni-input-box`."
|
|
5712
|
+
},
|
|
5713
|
+
{
|
|
5714
|
+
name: "align",
|
|
5715
|
+
kind: "input",
|
|
5716
|
+
type: "'start' | 'center' | 'end'",
|
|
5717
|
+
required: false,
|
|
5718
|
+
description: "Text alignment, as `uni-number-input`'s. Default: `start`."
|
|
5538
5719
|
}
|
|
5539
5720
|
]
|
|
5540
5721
|
}
|
|
@@ -5615,7 +5796,7 @@ initialFocus="input"
|
|
|
5615
5796
|
summary: "",
|
|
5616
5797
|
description: "",
|
|
5617
5798
|
category: "forms",
|
|
5618
|
-
version: "11.
|
|
5799
|
+
version: "11.8.0",
|
|
5619
5800
|
bindings: {
|
|
5620
5801
|
angular: {
|
|
5621
5802
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -5685,6 +5866,14 @@ initialFocus="input"
|
|
|
5685
5866
|
default: "false",
|
|
5686
5867
|
description: "Stop applying the themed leading inset to the inner control, for fields that place it themselves. The inset normally rides the `<input>`, which is right while the text is the field's leading edge. It is wrong the moment an adornment sits in front: a currency prefix would hug the border while the number it belongs to is indented past it. A field with adornments takes the inset over and puts it on whichever element is actually first."
|
|
5687
5868
|
},
|
|
5869
|
+
{
|
|
5870
|
+
name: "unframed",
|
|
5871
|
+
kind: "input",
|
|
5872
|
+
type: "unknown",
|
|
5873
|
+
required: false,
|
|
5874
|
+
default: "false, { transform: booleanAttribute }",
|
|
5875
|
+
description: "Drop the field chrome \u2014 border, fill, radius, shadow, leading inset and the focus treatment \u2014 and render the bare row. For fields drawn as an email client draws them: unframed lines with a hairline between. The surrounding layout draws any focus cue; the error state is still exposed through `aria-invalid` on the control inside. Same meaning as `uni-tag-input`'s."
|
|
5876
|
+
},
|
|
5688
5877
|
{
|
|
5689
5878
|
name: "variant",
|
|
5690
5879
|
kind: "input",
|
|
@@ -5736,7 +5925,7 @@ initialFocus="input"
|
|
|
5736
5925
|
summary: "",
|
|
5737
5926
|
description: "",
|
|
5738
5927
|
category: "components",
|
|
5739
|
-
version: "11.
|
|
5928
|
+
version: "11.8.0",
|
|
5740
5929
|
bindings: {
|
|
5741
5930
|
angular: {
|
|
5742
5931
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -5806,7 +5995,7 @@ initialFocus="input"
|
|
|
5806
5995
|
summary: "",
|
|
5807
5996
|
description: "",
|
|
5808
5997
|
category: "layout",
|
|
5809
|
-
version: "11.
|
|
5998
|
+
version: "11.8.0",
|
|
5810
5999
|
bindings: {
|
|
5811
6000
|
angular: {
|
|
5812
6001
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -5910,7 +6099,7 @@ initialFocus="input"
|
|
|
5910
6099
|
summary: "",
|
|
5911
6100
|
description: "",
|
|
5912
6101
|
category: "layout",
|
|
5913
|
-
version: "11.
|
|
6102
|
+
version: "11.8.0",
|
|
5914
6103
|
bindings: {
|
|
5915
6104
|
angular: {
|
|
5916
6105
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -5992,7 +6181,7 @@ initialFocus="input"
|
|
|
5992
6181
|
summary: "",
|
|
5993
6182
|
description: "",
|
|
5994
6183
|
category: "forms",
|
|
5995
|
-
version: "11.
|
|
6184
|
+
version: "11.8.0",
|
|
5996
6185
|
bindings: {
|
|
5997
6186
|
angular: {
|
|
5998
6187
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -6086,7 +6275,7 @@ initialFocus="input"
|
|
|
6086
6275
|
summary: "",
|
|
6087
6276
|
description: "",
|
|
6088
6277
|
category: "forms",
|
|
6089
|
-
version: "11.
|
|
6278
|
+
version: "11.8.0",
|
|
6090
6279
|
bindings: {
|
|
6091
6280
|
angular: {
|
|
6092
6281
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -6265,7 +6454,7 @@ initialFocus="input"
|
|
|
6265
6454
|
summary: "",
|
|
6266
6455
|
description: "",
|
|
6267
6456
|
category: "feedback",
|
|
6268
|
-
version: "11.
|
|
6457
|
+
version: "11.8.0",
|
|
6269
6458
|
bindings: {
|
|
6270
6459
|
angular: {
|
|
6271
6460
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -6506,7 +6695,7 @@ initialFocus="input"
|
|
|
6506
6695
|
}
|
|
6507
6696
|
],
|
|
6508
6697
|
guidelines: {
|
|
6509
|
-
whenToUse:
|
|
6698
|
+
whenToUse: "Attention indicator anchored to whatever it wraps \u2014 an icon button, a nav item, an\navatar. Three shapes: `dot` (something is new), `count` (how many), and `pill`\n(counts that need room); `maxCount` caps the display (\"99+\"). Position it on any\ncorner of the wrapped content.\nRadius, offset and the count's typeface resolve from the `notificationBadge`\ntheme options, and the disc's size from its `sizes` block through the `size`\ninput (a `sm` badge for a 12px nav label, `lg` for an icon button); the badge\nwears the active `variant` color. The wrapper is inline-flex, so it never moves\nthe element it wraps.",
|
|
6510
6699
|
dos: [],
|
|
6511
6700
|
donts: [
|
|
6512
6701
|
"Convey urgency by color alone \u2014 the count/dot shape carries the signal"
|
|
@@ -6525,7 +6714,7 @@ initialFocus="input"
|
|
|
6525
6714
|
summary: "",
|
|
6526
6715
|
description: "",
|
|
6527
6716
|
category: "feedback",
|
|
6528
|
-
version: "11.
|
|
6717
|
+
version: "11.8.0",
|
|
6529
6718
|
bindings: {
|
|
6530
6719
|
angular: {
|
|
6531
6720
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -6549,7 +6738,7 @@ initialFocus="input"
|
|
|
6549
6738
|
summary: "Numeric field with locale-aware parsing, `Intl` formatting on commit, prefix/suffix adornments and steppers that hold to repeat.",
|
|
6550
6739
|
description: 'Numeric field with locale-aware parsing, `Intl` formatting on commit, prefix/suffix adornments and steppers that hold to repeat. Not `<input type="number">`, and the first reason is a data-loss bug: per the HTML value sanitization algorithm, a number input whose text is not a valid floating-point number reports `value === \'\'`. Type `12,50` as most of Europe does, or paste `1,234.56` from a spreadsheet, and the app reads an empty field. This is `type="text"` with `role="spinbutton"`, which is the only way to keep the user\'s malformed text on screen and tell them about it. Chrome comes from `uni-input-box`, so error, disabled and focus states match every other field. All arithmetic runs on the cdk\'s exact decimal helpers.',
|
|
6551
6740
|
category: "forms",
|
|
6552
|
-
version: "11.
|
|
6741
|
+
version: "11.8.0",
|
|
6553
6742
|
bindings: {
|
|
6554
6743
|
angular: {
|
|
6555
6744
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -6742,6 +6931,14 @@ initialFocus="input"
|
|
|
6742
6931
|
default: "false",
|
|
6743
6932
|
description: "Renders without its own input-box chrome, for composers like uni-slider."
|
|
6744
6933
|
},
|
|
6934
|
+
{
|
|
6935
|
+
name: "unframed",
|
|
6936
|
+
kind: "input",
|
|
6937
|
+
type: "unknown",
|
|
6938
|
+
required: false,
|
|
6939
|
+
default: "false, { transform: booleanAttribute }",
|
|
6940
|
+
description: "Keep the box but drop its chrome \u2014 border, fill, inset, focus treatment \u2014 as `uni-input`'s `unframed` does. Unlike `embedded`, the field still owns its row and its steppers."
|
|
6941
|
+
},
|
|
6745
6942
|
{
|
|
6746
6943
|
name: "min",
|
|
6747
6944
|
kind: "input",
|
|
@@ -6975,7 +7172,7 @@ initialFocus="input"
|
|
|
6975
7172
|
summary: "Two linked numeric fields in one chrome, with one `{ start, end }` value \u2014 price filters, thresholds, tolerances.",
|
|
6976
7173
|
description: "Two linked numeric fields in one chrome, with one `{ start, end }` value \u2014 price filters, thresholds, tolerances. `start`/`end` deliberately match `UniDateRange`, so the library has one range vocabulary, and they avoid colliding with the `min`/`max` **inputs**, which mean the fence rather than the value. It owns its commit path rather than nesting two `uni-number-input`s, because the two behaviours the spec asks for need *different* bounds: a stepper must be fenced at the other end, while a typed commit must reach the parent un-clamped so a backwards range can be swapped instead of destroyed. A child field applies one bound pair to both. The arithmetic, parsing and formatting are still the cdk's, shared with every other numeric control.",
|
|
6977
7174
|
category: "forms",
|
|
6978
|
-
version: "11.
|
|
7175
|
+
version: "11.8.0",
|
|
6979
7176
|
bindings: {
|
|
6980
7177
|
angular: {
|
|
6981
7178
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -7266,7 +7463,7 @@ initialFocus="input"
|
|
|
7266
7463
|
summary: "",
|
|
7267
7464
|
description: "",
|
|
7268
7465
|
category: "data",
|
|
7269
|
-
version: "11.
|
|
7466
|
+
version: "11.8.0",
|
|
7270
7467
|
bindings: {
|
|
7271
7468
|
angular: {
|
|
7272
7469
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -7367,7 +7564,7 @@ initialFocus="input"
|
|
|
7367
7564
|
summary: "Anchored, top-layer panel on the native `popover` element \u2014 the browser owns positioning (CSS anchor positioning), stacking, and, in rich mode, light dismissal.",
|
|
7368
7565
|
description: 'Anchored, top-layer panel on the native `popover` element \u2014 the browser owns positioning (CSS anchor positioning), stacking, and, in rich mode, light dismissal. Two modes share one implementation: - `rich` (default): a click-toggled disclosure. The projected `[trigger]` carries `aria-expanded`/`aria-controls`; with no trigger content the app drives `open` and no element claims controller ARIA. Focus stays on the trigger (APG disclosure) unless the panel marks an `[autofocus]` field, and returns to the trigger on close. - `tooltip`: hover/focus-triggered, `role="tooltip"` + `aria-describedby`, WCAG 1.4.13 dismissable/hoverable/persistent. Content must not contain focusable elements. Anchoring and control are separate: `anchor` re-anchors the panel to any element (or id) while the trigger keeps the disclosure semantics.',
|
|
7369
7566
|
category: "layout",
|
|
7370
|
-
version: "11.
|
|
7567
|
+
version: "11.8.0",
|
|
7371
7568
|
bindings: {
|
|
7372
7569
|
angular: {
|
|
7373
7570
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -7559,7 +7756,7 @@ initialFocus="input"
|
|
|
7559
7756
|
summary: "",
|
|
7560
7757
|
description: "",
|
|
7561
7758
|
category: "feedback",
|
|
7562
|
-
version: "11.
|
|
7759
|
+
version: "11.8.0",
|
|
7563
7760
|
bindings: {
|
|
7564
7761
|
angular: {
|
|
7565
7762
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -7623,7 +7820,7 @@ initialFocus="input"
|
|
|
7623
7820
|
summary: "",
|
|
7624
7821
|
description: "",
|
|
7625
7822
|
category: "feedback",
|
|
7626
|
-
version: "11.
|
|
7823
|
+
version: "11.8.0",
|
|
7627
7824
|
bindings: {
|
|
7628
7825
|
angular: {
|
|
7629
7826
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -7695,7 +7892,7 @@ initialFocus="input"
|
|
|
7695
7892
|
summary: "`\u2212 3 +` for cart lines, table cells and seat counts: the numeric core with no field chrome, no label and no room for either.",
|
|
7696
7893
|
description: '`\u2212 3 +` for cart lines, table cells and seat counts: the numeric core with no field chrome, no label and no room for either. A separate component rather than a `chrome="bare"` flag on `uni-number-input`, because this control is defined by what it does *not* have \u2014 presets, affixes, expressions, four stepper layouts \u2014 and eight inputs are easier to write correctly than forty with a list of which ones to leave alone. The arithmetic, parsing and hold-to-repeat are the cdk\'s, shared with the field, so `1,200` and the keyboard map behave identically in both. The middle stays a real input by default: typing `12` beats tapping `+` eleven times. `editable=false` is for read-mostly tables.',
|
|
7697
7894
|
category: "forms",
|
|
7698
|
-
version: "11.
|
|
7895
|
+
version: "11.8.0",
|
|
7699
7896
|
bindings: {
|
|
7700
7897
|
angular: {
|
|
7701
7898
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -7898,7 +8095,7 @@ initialFocus="input"
|
|
|
7898
8095
|
summary: "",
|
|
7899
8096
|
description: "",
|
|
7900
8097
|
category: "forms",
|
|
7901
|
-
version: "11.
|
|
8098
|
+
version: "11.8.0",
|
|
7902
8099
|
bindings: {
|
|
7903
8100
|
angular: {
|
|
7904
8101
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -8127,7 +8324,7 @@ initialFocus="input"
|
|
|
8127
8324
|
summary: "Content for each of a radio group's options, in place of the plain label string.",
|
|
8128
8325
|
description: 'Content for each of a radio group\'s options, in place of the plain label string. A group renders N labels from an `options` array, so it cannot take `<ng-content />` the way `uni-checkbox` and `uni-toggle` do \u2014 there is no single slot to project into. A template is the shape that survives the repetition: it is instantiated once per option and handed that option, so a row can carry a description, a price or a badge and still be part of the `<label>` that drives the input. ```html <uni-radio [options]="plans"> <ng-template uniRadioOption let-option> <span uni-text="body-2-long">{{ option.label }}</span> </ng-template> </uni-radio> ```',
|
|
8129
8326
|
category: "forms",
|
|
8130
|
-
version: "11.
|
|
8327
|
+
version: "11.8.0",
|
|
8131
8328
|
bindings: {
|
|
8132
8329
|
angular: {
|
|
8133
8330
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -8151,7 +8348,7 @@ initialFocus="input"
|
|
|
8151
8348
|
summary: "",
|
|
8152
8349
|
description: "",
|
|
8153
8350
|
category: "directives",
|
|
8154
|
-
version: "11.
|
|
8351
|
+
version: "11.8.0",
|
|
8155
8352
|
bindings: {
|
|
8156
8353
|
angular: {
|
|
8157
8354
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -8175,7 +8372,7 @@ initialFocus="input"
|
|
|
8175
8372
|
summary: "",
|
|
8176
8373
|
description: "",
|
|
8177
8374
|
category: "layout",
|
|
8178
|
-
version: "11.
|
|
8375
|
+
version: "11.8.0",
|
|
8179
8376
|
bindings: {
|
|
8180
8377
|
angular: {
|
|
8181
8378
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -8230,7 +8427,7 @@ initialFocus="input"
|
|
|
8230
8427
|
summary: "Native scroll area with theme-driven scrollbar styling.",
|
|
8231
8428
|
description: "Native scroll area with theme-driven scrollbar styling. Scrollbars are styled entirely through Emotion-generated CSS: `::-webkit-scrollbar` rules cover Chromium/Safari, with a `scrollbar-width`/`scrollbar-color` fallback for Firefox.",
|
|
8232
8429
|
category: "layout",
|
|
8233
|
-
version: "11.
|
|
8430
|
+
version: "11.8.0",
|
|
8234
8431
|
bindings: {
|
|
8235
8432
|
angular: {
|
|
8236
8433
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -8314,6 +8511,21 @@ initialFocus="input"
|
|
|
8314
8511
|
required: false,
|
|
8315
8512
|
description: ""
|
|
8316
8513
|
},
|
|
8514
|
+
{
|
|
8515
|
+
name: "maxHeight",
|
|
8516
|
+
kind: "input",
|
|
8517
|
+
type: "OptionalValue",
|
|
8518
|
+
required: false,
|
|
8519
|
+
description: "Grow with the content up to this height, then scroll. The shape a dialog body wants: as tall as the form until it would leave the viewport. With `height` unset the area is otherwise content-sized and never scrolls."
|
|
8520
|
+
},
|
|
8521
|
+
{
|
|
8522
|
+
name: "fill",
|
|
8523
|
+
kind: "input",
|
|
8524
|
+
type: "unknown",
|
|
8525
|
+
required: false,
|
|
8526
|
+
default: "false, { transform: booleanAttribute }",
|
|
8527
|
+
description: "Take the room a flex-column parent leaves (`flex: 1 1 auto; min-height: 0`) and scroll within it \u2014 the body of a dialog or drawer without a wrapper."
|
|
8528
|
+
},
|
|
8317
8529
|
{
|
|
8318
8530
|
name: "width",
|
|
8319
8531
|
kind: "input",
|
|
@@ -8360,10 +8572,15 @@ initialFocus="input"
|
|
|
8360
8572
|
title: "Primary",
|
|
8361
8573
|
framework: "angular",
|
|
8362
8574
|
code: '<!-- Storybook story: Primary -->\n<div scroll-area ${argsToTemplate(props)} #scrollArea>\n <button size="sm" text-button variant="ghost" symbolLeft="arrow_downward" (click)="scrollArea.scrollToBottom()">Scroll to bottom</button>\n ${ngContent}\n <button size="sm" text-button variant="ghost" symbolLeft="arrow_upward" (click)="scrollArea.scrollToTop()">Back to top</button>\n</div>\n<!-- args:\n{\n border: \'quaternary\',\n containerColor: \'tertiary-surface\',\n height: 200,\n ngContent: `\n <span uni-text="headline-medium">Lorem ipsum dolor sit amet, consectetur adipisicing elit.</span>\n <span uni-text="body-1-long">\n <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quis facere debitis ullam, quae quidem, impedit\n culpa nam\n repellat in voluptatibus esse ab harum, hic? Aliquam nesciunt voluptates repellendus assumenda labore.\n </p>\n <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Porro quos voluptate doloribus. Optio unde\n inventore, tempore\n nemo repellat expedita! Quod, accusamus nobis iure. Aliquam quibusdam, nemo explicabo ipsum provident\n asperiores.</p>\n <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quaerat, qui, rem! Debitis cum maiores iste,\n possimus!\n Obcaecati accusamus eaque expedita quo soluta quis, repudiandae similique, veritatis repellendus facere\n suscipit!\n Et!</p>\n <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Harum doloremque repellat praesentium quae et\n consectetur\n iure quos porro, provident voluptates reprehenderit a. Accusamus ut, quaerat asperiores blanditiis\n voluptate, sint\n facilis.</p>\n <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Accusamus beatae inventore nobis esse\n temporibus\n exercitationem\n eos illo minima non magnam, provident sit doloribus maiores odio in animi quidem unde. Perferendis.</p>\n\n </span>\n\n\n `,\n }\n-->'
|
|
8575
|
+
},
|
|
8576
|
+
{
|
|
8577
|
+
title: "Max Height",
|
|
8578
|
+
framework: "angular",
|
|
8579
|
+
code: '<!-- Storybook story: Max Height -->\n<div scroll-area ${argsToTemplate(props)} #scrollArea>\n <button size="sm" text-button variant="ghost" symbolLeft="arrow_downward" (click)="scrollArea.scrollToBottom()">Scroll to bottom</button>\n ${ngContent}\n <button size="sm" text-button variant="ghost" symbolLeft="arrow_upward" (click)="scrollArea.scrollToTop()">Back to top</button>\n</div>\n<!-- args:\n{ ...Primary.args, height: undefined, maxHeight: 160 }\n-->'
|
|
8363
8580
|
}
|
|
8364
8581
|
],
|
|
8365
8582
|
guidelines: {
|
|
8366
|
-
whenToUse: "A scroll container with themed, consistent scrollbars across browsers \u2014 thin\nEmotion-styled WebKit scrollbars with a `scrollbar-width`/`scrollbar-color`\nfallback. It detects scrollable state via ResizeObserver (the `scrollable` output)\nand offers `scrollToTop`/`scrollToBottom` for programmatic control.",
|
|
8583
|
+
whenToUse: "A scroll container with themed, consistent scrollbars across browsers \u2014 thin\nEmotion-styled WebKit scrollbars with a `scrollbar-width`/`scrollbar-color`\nfallback. It detects scrollable state via ResizeObserver (the `scrollable` output)\nand offers `scrollToTop`/`scrollToBottom` for programmatic control.\nThree ways to size it: `height` fixes it; `maxHeight` lets it grow with its\ncontent up to a cap, then scroll; `fill` takes the room a flex-column parent\nleaves and scrolls within it \u2014 the body of a dialog without a wrapper. With none\nof them the area is content-sized and never scrolls.",
|
|
8367
8584
|
dos: [],
|
|
8368
8585
|
donts: [],
|
|
8369
8586
|
accessibility: []
|
|
@@ -8377,7 +8594,7 @@ initialFocus="input"
|
|
|
8377
8594
|
summary: "Generic search field: shared input chrome with a leading magnifier, a clear button while there's a query, Enter to submit, and optional type-ahead \u2014 pass `suggestions` (refresh them from `change`) and the field becomes an ARIA combobox with a keyboard-navigable listbox.",
|
|
8378
8595
|
description: "Generic search field: shared input chrome with a leading magnifier, a clear button while there's a query, Enter to submit, and optional type-ahead \u2014 pass `suggestions` (refresh them from `change`) and the field becomes an ARIA combobox with a keyboard-navigable listbox. Escape closes the list first, then clears the query.",
|
|
8379
8596
|
category: "forms",
|
|
8380
|
-
version: "11.
|
|
8597
|
+
version: "11.8.0",
|
|
8381
8598
|
bindings: {
|
|
8382
8599
|
angular: {
|
|
8383
8600
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -8512,7 +8729,7 @@ initialFocus="input"
|
|
|
8512
8729
|
summary: "",
|
|
8513
8730
|
description: "",
|
|
8514
8731
|
category: "forms",
|
|
8515
|
-
version: "11.
|
|
8732
|
+
version: "11.8.0",
|
|
8516
8733
|
bindings: {
|
|
8517
8734
|
angular: {
|
|
8518
8735
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -8660,9 +8877,11 @@ initialFocus="input"
|
|
|
8660
8877
|
}
|
|
8661
8878
|
],
|
|
8662
8879
|
guidelines: {
|
|
8663
|
-
whenToUse: "Single choice from a list, on a native `<select>` \u2014 platform pickers on mobile,\nplatform keyboard behavior everywhere. Options are typed generically\n(`options: T[]` with `optionLabel`/`optionValue` accessors), and the component\nimplements `FormValueControl` for the Signal Forms `[formField]` directive. Errors\nstyle the field only after interaction, matching Input.\nFor choosing several, use Multi Select. When the list outgrows ~10 options, or\nusers know what they're looking for and want to type it, use Combobox \u2014 the\nvalue contract is identical (`T | null`, `compareWith`), so the swap is a\ntemplate-only change.",
|
|
8880
|
+
whenToUse: "Single choice from a list, on a native `<select>` \u2014 platform pickers on mobile,\nplatform keyboard behavior everywhere. Options are typed generically\n(`options: T[]` with `optionLabel`/`optionValue` accessors), and the component\nimplements `FormValueControl` for the Signal Forms `[formField]` directive. Errors\nstyle the field only after interaction, matching Input.\nThe value contract is `T | null`: `null` is \"nothing selected\". A value that no\noption stands for \u2014 `''`, a stale id \u2014 renders as empty too, never as the first\noption, and is reported with a dev-mode warning once the options have loaded.\nFor choosing several, use Multi Select. When the list outgrows ~10 options, or\nusers know what they're looking for and want to type it, use Combobox \u2014 the\nvalue contract is identical (`T | null`, `compareWith`), so the swap is a\ntemplate-only change.",
|
|
8664
8881
|
dos: [],
|
|
8665
|
-
donts: [
|
|
8882
|
+
donts: [
|
|
8883
|
+
"Bind `''` to mean \"nothing selected\" \u2014 the contract is `null`. The field shows"
|
|
8884
|
+
],
|
|
8666
8885
|
accessibility: [
|
|
8667
8886
|
"Native `<select>`: platform keyboard interaction and mobile pickers for free.",
|
|
8668
8887
|
"`label` becomes the accessible name; `aria-invalid` reflects the touched error state.",
|
|
@@ -8682,7 +8901,7 @@ initialFocus="input"
|
|
|
8682
8901
|
summary: "Loading placeholder painted with surface tokens.",
|
|
8683
8902
|
description: "Loading placeholder painted with surface tokens. `text` renders one or more lines (the last line shortened, as real text would be), `rect` and `circle` render fixed shapes. The shimmer only animates when the user allows motion; it degrades to static blocks under `prefers-reduced-motion`. Color and radius are theme options with per-instance overrides, because one app routinely needs several: skeletons on a card and on the page background want different tints, and a pill placeholder wants a different corner than the text bars beside it.",
|
|
8684
8903
|
category: "components",
|
|
8685
|
-
version: "11.
|
|
8904
|
+
version: "11.8.0",
|
|
8686
8905
|
bindings: {
|
|
8687
8906
|
angular: {
|
|
8688
8907
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -8833,7 +9052,7 @@ initialFocus="input"
|
|
|
8833
9052
|
summary: "Bounded numeric input by pointer, for values where the *position* is the information: volume, opacity, weightings, price filters.",
|
|
8834
9053
|
description: "Bounded numeric input by pointer, for values where the *position* is the information: volume, opacity, weightings, price filters. Custom thumbs rather than `<input type=\"range\">`, which the previous version used: one native range input cannot carry two thumbs, marks or a tooltip, and a second component for the range case would mean two keyboard maps to keep in step. The step model and the keyboard map are the cdk's, shared with the numeric fields, so nothing new is learned moving between them. All arithmetic on values runs through the cdk's exact decimal helpers \u2014 stepping `0.1` never yields `0.30000000000000004`. Only pointer *positions* use floats, and they are snapped to the grid before becoming a value.",
|
|
8835
9054
|
category: "forms",
|
|
8836
|
-
version: "11.
|
|
9055
|
+
version: "11.8.0",
|
|
8837
9056
|
bindings: {
|
|
8838
9057
|
angular: {
|
|
8839
9058
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -9110,7 +9329,7 @@ initialFocus="input"
|
|
|
9110
9329
|
summary: "",
|
|
9111
9330
|
description: "",
|
|
9112
9331
|
category: "feedback",
|
|
9113
|
-
version: "11.
|
|
9332
|
+
version: "11.8.0",
|
|
9114
9333
|
bindings: {
|
|
9115
9334
|
angular: {
|
|
9116
9335
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -9222,7 +9441,7 @@ initialFocus="input"
|
|
|
9222
9441
|
summary: "",
|
|
9223
9442
|
description: "",
|
|
9224
9443
|
category: "data",
|
|
9225
|
-
version: "11.
|
|
9444
|
+
version: "11.8.0",
|
|
9226
9445
|
bindings: {
|
|
9227
9446
|
angular: {
|
|
9228
9447
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -9241,6 +9460,21 @@ initialFocus="input"
|
|
|
9241
9460
|
type: "UniDatasource<T>",
|
|
9242
9461
|
required: false,
|
|
9243
9462
|
description: ""
|
|
9463
|
+
},
|
|
9464
|
+
{
|
|
9465
|
+
name: "iconName",
|
|
9466
|
+
kind: "input",
|
|
9467
|
+
type: "IconName",
|
|
9468
|
+
required: false,
|
|
9469
|
+
default: "'arrowUp'",
|
|
9470
|
+
description: "The glyph shown while sorted. One icon serves both directions \u2014 it is drawn as given for descending and rotated half a turn for ascending \u2014 so pick an arrow or chevron that reads either way up."
|
|
9471
|
+
},
|
|
9472
|
+
{
|
|
9473
|
+
name: "align",
|
|
9474
|
+
kind: "input",
|
|
9475
|
+
type: "'left' | 'right' | 'center'",
|
|
9476
|
+
required: false,
|
|
9477
|
+
description: "The column's text alignment. The arrow hangs outside the label so the label stays flush with the cells under it; in a right-aligned column it moves to the leading side, where it cannot push past the table's edge."
|
|
9244
9478
|
}
|
|
9245
9479
|
]
|
|
9246
9480
|
}
|
|
@@ -9281,7 +9515,7 @@ initialFocus="input"
|
|
|
9281
9515
|
summary: "",
|
|
9282
9516
|
description: "",
|
|
9283
9517
|
category: "layout",
|
|
9284
|
-
version: "11.
|
|
9518
|
+
version: "11.8.0",
|
|
9285
9519
|
bindings: {
|
|
9286
9520
|
angular: {
|
|
9287
9521
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -9336,7 +9570,7 @@ initialFocus="input"
|
|
|
9336
9570
|
summary: 'KPI stat tile: muted label, large value (numbers auto-compact: 48234 \u2192 "48.2K"), an optional delta whose ink is decided by *direction \xD7 whether up is good* (never direction alone \u2014 churn going down is good news), and an optional decorative sparkline.',
|
|
9337
9571
|
description: 'KPI stat tile: muted label, large value (numbers auto-compact: 48234 \u2192 "48.2K"), an optional delta whose ink is decided by *direction \xD7 whether up is good* (never direction alone \u2014 churn going down is good news), and an optional decorative sparkline. Frame, typography and inks are all `stat` theme tokens.',
|
|
9338
9572
|
category: "components",
|
|
9339
|
-
version: "11.
|
|
9573
|
+
version: "11.8.0",
|
|
9340
9574
|
bindings: {
|
|
9341
9575
|
angular: {
|
|
9342
9576
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -9454,7 +9688,7 @@ initialFocus="input"
|
|
|
9454
9688
|
summary: "",
|
|
9455
9689
|
description: "",
|
|
9456
9690
|
category: "primitives",
|
|
9457
|
-
version: "11.
|
|
9691
|
+
version: "11.8.0",
|
|
9458
9692
|
bindings: {
|
|
9459
9693
|
angular: {
|
|
9460
9694
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -9543,7 +9777,7 @@ initialFocus="input"
|
|
|
9543
9777
|
summary: "One tab inside `uni-tabs`: a label for the tablist plus projected panel content.",
|
|
9544
9778
|
description: "One tab inside `uni-tabs`: a label for the tablist plus projected panel content. Content is captured in a template and only instantiated while the tab is selected, so inactive panels cost nothing.",
|
|
9545
9779
|
category: "components",
|
|
9546
|
-
version: "11.
|
|
9780
|
+
version: "11.8.0",
|
|
9547
9781
|
bindings: {
|
|
9548
9782
|
angular: {
|
|
9549
9783
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -9583,7 +9817,7 @@ initialFocus="input"
|
|
|
9583
9817
|
summary: "WAI-ARIA tabs: roving tabindex, automatic activation (arrow keys move focus and select), Home/End, disabled tabs skipped.",
|
|
9584
9818
|
description: "WAI-ARIA tabs: roving tabindex, automatic activation (arrow keys move focus and select), Home/End, disabled tabs skipped. Only the selected panel is instantiated. All styling resolves from `tabs` theme option tokens. A tab switch is softened by the `panelMotion` option: the incoming content fades in while the panel animates from the outgoing content's height to its own. The new content is live from the first frame \u2014 nothing waits on the animation.",
|
|
9585
9819
|
category: "components",
|
|
9586
|
-
version: "11.
|
|
9820
|
+
version: "11.8.0",
|
|
9587
9821
|
bindings: {
|
|
9588
9822
|
angular: {
|
|
9589
9823
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -9671,7 +9905,7 @@ initialFocus="input"
|
|
|
9671
9905
|
summary: "Compact chip for categories, states, filters and tokens.",
|
|
9672
9906
|
description: "Compact chip for categories, states, filters and tokens. Two orthogonal style axes: `variant` picks the colour role and `tone` picks the archetype (soft / solid / outline). Both live in the theme's `tag` entry, so a theme restyles every chip in the app without touching markup. Two state classes ride alongside the tone class for the same reason: `tag-selected` and `tag-interactive` let the theme paint selection and hover beside the colours they belong to, instead of an app swapping `tone` by hand on every chip. Structurally a chip is **body + trailing action as siblings**, never nested buttons: an interactive chip whose body is a `<button>` cannot contain the remove `<button>` (invalid HTML, and the inner control becomes unreachable for keyboard users). Both stay independently operable.",
|
|
9673
9907
|
category: "data",
|
|
9674
|
-
version: "11.
|
|
9908
|
+
version: "11.8.0",
|
|
9675
9909
|
bindings: {
|
|
9676
9910
|
angular: {
|
|
9677
9911
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -10049,7 +10283,7 @@ initialFocus="input"
|
|
|
10049
10283
|
summary: "A row of chips the user picks from: filters, facets, a set of labels.",
|
|
10050
10284
|
description: "A row of chips the user picks from: filters, facets, a set of labels. The group **renders its own chips** from `items` rather than projecting them. That is what lets it own the things an app was otherwise wiring per chip \u2014 which one is selected, which one holds the tab stop \u2014 since a parent cannot write a projected child's inputs. `uni-tag` is unchanged by this component; `controlTabIndex` was already its hook for a composite that manages focus. Keyboard model is the toolbar pattern: one tab stop for the whole group, and the arrow keys move within it. Twelve filter chips should cost one Tab to pass, not twelve.",
|
|
10051
10285
|
category: "data",
|
|
10052
|
-
version: "11.
|
|
10286
|
+
version: "11.8.0",
|
|
10053
10287
|
bindings: {
|
|
10054
10288
|
angular: {
|
|
10055
10289
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -10247,7 +10481,7 @@ initialFocus="input"
|
|
|
10247
10481
|
summary: "",
|
|
10248
10482
|
description: "",
|
|
10249
10483
|
category: "forms",
|
|
10250
|
-
version: "11.
|
|
10484
|
+
version: "11.8.0",
|
|
10251
10485
|
bindings: {
|
|
10252
10486
|
angular: {
|
|
10253
10487
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -10698,7 +10932,7 @@ placeholder="Name or address\u2026"
|
|
|
10698
10932
|
summary: "The typography primitive, applied as an attribute to any element so semantics stay yours.",
|
|
10699
10933
|
description: 'The typography primitive, applied as an attribute to any element so semantics stay yours. The attribute value is the typeface: `<h1 uni-text="display-small">`, `<span uni-text="caption">`, dynamic via `[uni-text]="role()"`. With no value, the typeface is inferred from the host element (h1 \u2192 headline-large, p \u2192 body-1-long, \u2026), falling back to `title-small`; the `typeface` input remains as an explicit override. It is a directive, so it stacks with anything else on the element \u2014 a layout attribute (`<div stack-layout uni-text="title-small">`) or a component\'s own host \u2014 rather than colliding with it.',
|
|
10700
10934
|
category: "primitives",
|
|
10701
|
-
version: "11.
|
|
10935
|
+
version: "11.8.0",
|
|
10702
10936
|
bindings: {
|
|
10703
10937
|
angular: {
|
|
10704
10938
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -10808,7 +11042,7 @@ placeholder="Name or address\u2026"
|
|
|
10808
11042
|
summary: "",
|
|
10809
11043
|
description: "",
|
|
10810
11044
|
category: "forms",
|
|
10811
|
-
version: "11.
|
|
11045
|
+
version: "11.8.0",
|
|
10812
11046
|
bindings: {
|
|
10813
11047
|
angular: {
|
|
10814
11048
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -10968,6 +11202,14 @@ placeholder="Name or address\u2026"
|
|
|
10968
11202
|
required: false,
|
|
10969
11203
|
default: "undefined",
|
|
10970
11204
|
description: ""
|
|
11205
|
+
},
|
|
11206
|
+
{
|
|
11207
|
+
name: "unframed",
|
|
11208
|
+
kind: "input",
|
|
11209
|
+
type: "unknown",
|
|
11210
|
+
required: false,
|
|
11211
|
+
default: "false, { transform: booleanAttribute }",
|
|
11212
|
+
description: "Drop the field chrome and render the bare textarea \u2014 see `uni-input-box`."
|
|
10971
11213
|
}
|
|
10972
11214
|
]
|
|
10973
11215
|
}
|
|
@@ -11015,7 +11257,7 @@ placeholder="Name or address\u2026"
|
|
|
11015
11257
|
summary: "",
|
|
11016
11258
|
description: "",
|
|
11017
11259
|
category: "primitives",
|
|
11018
|
-
version: "11.
|
|
11260
|
+
version: "11.8.0",
|
|
11019
11261
|
bindings: {
|
|
11020
11262
|
angular: {
|
|
11021
11263
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -11045,7 +11287,7 @@ placeholder="Name or address\u2026"
|
|
|
11045
11287
|
summary: "Drop-in switcher for the themes registered via `UNI_THEMES`: a select over `ThemeService.themeOptions` that applies the choice through `selectTheme` (so it persists across reloads like any other theme selection).",
|
|
11046
11288
|
description: "Drop-in switcher for the themes registered via `UNI_THEMES`: a select over `ThemeService.themeOptions` that applies the choice through `selectTheme` (so it persists across reloads like any other theme selection).",
|
|
11047
11289
|
category: "components",
|
|
11048
|
-
version: "11.
|
|
11290
|
+
version: "11.8.0",
|
|
11049
11291
|
bindings: {
|
|
11050
11292
|
angular: {
|
|
11051
11293
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -11103,7 +11345,7 @@ placeholder="Name or address\u2026"
|
|
|
11103
11345
|
summary: "Time field: a combobox over time options \u2014 the same listbox contract as uni-search-input and uni-tag-input.",
|
|
11104
11346
|
description: "Time field: a combobox over time options \u2014 the same listbox contract as uni-search-input and uni-tag-input. Type `3p`, `930` or `15:00`, or pick `3:00 PM` from the list; the form always gets 24-hour `'HH:mm'` (`hour12` affects display only). The list is assistive, not exhaustive: any parseable time commits, unless `slots` pins the choices (a slot picker) \u2014 then a typed time must match one. Unreadable or unavailable text stays in the field, flagged, with a `rejected` event.",
|
|
11105
11347
|
category: "forms",
|
|
11106
|
-
version: "11.
|
|
11348
|
+
version: "11.8.0",
|
|
11107
11349
|
bindings: {
|
|
11108
11350
|
angular: {
|
|
11109
11351
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -11318,7 +11560,7 @@ placeholder="Name or address\u2026"
|
|
|
11318
11560
|
summary: "",
|
|
11319
11561
|
description: "",
|
|
11320
11562
|
category: "forms",
|
|
11321
|
-
version: "11.
|
|
11563
|
+
version: "11.8.0",
|
|
11322
11564
|
bindings: {
|
|
11323
11565
|
angular: {
|
|
11324
11566
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -11580,7 +11822,7 @@ placeholder="Name or address\u2026"
|
|
|
11580
11822
|
summary: "",
|
|
11581
11823
|
description: "",
|
|
11582
11824
|
category: "feedback",
|
|
11583
|
-
version: "11.
|
|
11825
|
+
version: "11.8.0",
|
|
11584
11826
|
bindings: {
|
|
11585
11827
|
angular: {
|
|
11586
11828
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -11668,7 +11910,7 @@ placeholder="Name or address\u2026"
|
|
|
11668
11910
|
summary: 'A thin sequencer over one `uni-callout`: steps spotlight their targets, a footer walks Next/Back with dots-or-fraction progress, and `advanceOn` gates a step behind an interaction with its target (auto-advancing for clicks, unlocking Next otherwise \u2014 announced through one `role="status"` region).',
|
|
11669
11911
|
description: 'A thin sequencer over one `uni-callout`: steps spotlight their targets, a footer walks Next/Back with dots-or-fraction progress, and `advanceOn` gates a step behind an interaction with its target (auto-advancing for clicks, unlocking Next otherwise \u2014 announced through one `role="status"` region). Escape or the close button skips the tour and reports the step. `active` is a two-way model, so a tour is deep-linkable and inspectable; steps whose declared target cannot be resolved are skipped (with a dev warning) in the direction of travel rather than erroring.',
|
|
11670
11912
|
category: "components",
|
|
11671
|
-
version: "11.
|
|
11913
|
+
version: "11.8.0",
|
|
11672
11914
|
bindings: {
|
|
11673
11915
|
angular: {
|
|
11674
11916
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -11689,6 +11931,13 @@ placeholder="Name or address\u2026"
|
|
|
11689
11931
|
default: "null",
|
|
11690
11932
|
description: "The presented step index, or null when the tour is not running."
|
|
11691
11933
|
},
|
|
11934
|
+
{
|
|
11935
|
+
name: "progressStyle",
|
|
11936
|
+
kind: "input",
|
|
11937
|
+
type: "'dots' | 'fraction' | 'none'",
|
|
11938
|
+
required: false,
|
|
11939
|
+
description: "Per-instance override of the `progressStyle` theme option, so a one-off pointer can differ from the app's tours without a second theme entry. A one-step tour renders no progress whatever this says \u2014 one dot beside Done counts nothing."
|
|
11940
|
+
},
|
|
11692
11941
|
{
|
|
11693
11942
|
name: "nextLabel",
|
|
11694
11943
|
kind: "input",
|
|
@@ -11726,14 +11975,14 @@ placeholder="Name or address\u2026"
|
|
|
11726
11975
|
kind: "output",
|
|
11727
11976
|
type: "void",
|
|
11728
11977
|
required: false,
|
|
11729
|
-
description: ""
|
|
11978
|
+
description: "The first step of a run was presented \u2014 from `start()` or from a write to `active`."
|
|
11730
11979
|
},
|
|
11731
11980
|
{
|
|
11732
11981
|
name: "finished",
|
|
11733
11982
|
kind: "output",
|
|
11734
11983
|
type: "void",
|
|
11735
11984
|
required: false,
|
|
11736
|
-
description: ""
|
|
11985
|
+
description: "The run walked past its last step. Never emitted for a run in which no step was presented (empty `steps`, every target missing): a tour that never opened did not finish."
|
|
11737
11986
|
},
|
|
11738
11987
|
{
|
|
11739
11988
|
name: "variant",
|
|
@@ -11767,10 +12016,10 @@ placeholder="Name or address\u2026"
|
|
|
11767
12016
|
}
|
|
11768
12017
|
],
|
|
11769
12018
|
guidelines: {
|
|
11770
|
-
whenToUse: 'Tour sequences one `uni-callout` through a list of steps: spotlight targets,\ndim interludes, and interaction gates. A step with `advanceOn` locks Next\nuntil the user performs the gesture on its target \u2014 clicks auto-advance\n(the gesture is complete), anything else unlocks Next and announces it\nthrough one polite `role="status"` region, so nobody is yanked forward\nmid-typing. Steps whose declared target cannot be found are skipped in the\ndirection of travel with a dev warning, never an error. `active` is a\ntwo-way model, so tours are deep-linkable; Escape or the close button skips\nand reports the step through `skipped
|
|
12019
|
+
whenToUse: 'Tour sequences one `uni-callout` through a list of steps: spotlight targets,\ndim interludes, and interaction gates. A step with `advanceOn` locks Next\nuntil the user performs the gesture on its target \u2014 clicks auto-advance\n(the gesture is complete), anything else unlocks Next and announces it\nthrough one polite `role="status"` region, so nobody is yanked forward\nmid-typing. Steps whose declared target cannot be found are skipped in the\ndirection of travel with a dev warning, never an error. `active` is a\ntwo-way model, so tours are deep-linkable; Escape or the close button skips\nand reports the step through `skipped`.\n`started` fires when the first step of a run is presented \u2014 through `start()`\nor a write to `active` \u2014 and `finished` only for a run that presented at least\none step. A `start()` issued before `steps` are bound waits for them, so a host\nthat loads steps from a service and starts in the same turn still opens on the\nfirst one. A step without a `body` renders its title alone, and a one-step tour\ndraws no progress.',
|
|
11771
12020
|
dos: [
|
|
11772
12021
|
"Keep tours short and gate only steps whose gesture teaches something",
|
|
11773
|
-
"Handle `skipped`/`finished` and persist them \u2014 the tour holds no storage"
|
|
12022
|
+
"Handle `skipped`/`finished` and persist them \u2014 the tour holds no storage;"
|
|
11774
12023
|
],
|
|
11775
12024
|
donts: [
|
|
11776
12025
|
"Point steps at elements that may not exist without accepting the skip",
|
|
@@ -11795,7 +12044,7 @@ placeholder="Name or address\u2026"
|
|
|
11795
12044
|
summary: "",
|
|
11796
12045
|
description: "",
|
|
11797
12046
|
category: "layout",
|
|
11798
|
-
version: "11.
|
|
12047
|
+
version: "11.8.0",
|
|
11799
12048
|
bindings: {
|
|
11800
12049
|
angular: {
|
|
11801
12050
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -14217,6 +14466,18 @@ placeholder="Name or address\u2026"
|
|
|
14217
14466
|
DarkTheme: "lg"
|
|
14218
14467
|
}
|
|
14219
14468
|
},
|
|
14469
|
+
{
|
|
14470
|
+
id: "dialog.behavior.overscroll",
|
|
14471
|
+
value: "contain",
|
|
14472
|
+
type: "string",
|
|
14473
|
+
kind: "behavioral",
|
|
14474
|
+
target: "component-prop",
|
|
14475
|
+
appliesTo: "dialog",
|
|
14476
|
+
themeValues: {
|
|
14477
|
+
LightTheme: "contain",
|
|
14478
|
+
DarkTheme: "contain"
|
|
14479
|
+
}
|
|
14480
|
+
},
|
|
14220
14481
|
{
|
|
14221
14482
|
id: "dialog.behavior.elevation",
|
|
14222
14483
|
value: "dialog",
|
|
@@ -14445,6 +14706,18 @@ placeholder="Name or address\u2026"
|
|
|
14445
14706
|
DarkTheme: "md"
|
|
14446
14707
|
}
|
|
14447
14708
|
},
|
|
14709
|
+
{
|
|
14710
|
+
id: "dialogHeader.behavior.richPadding",
|
|
14711
|
+
value: "md",
|
|
14712
|
+
type: "string",
|
|
14713
|
+
kind: "behavioral",
|
|
14714
|
+
target: "component-prop",
|
|
14715
|
+
appliesTo: "dialogHeader",
|
|
14716
|
+
themeValues: {
|
|
14717
|
+
LightTheme: "md",
|
|
14718
|
+
DarkTheme: "md"
|
|
14719
|
+
}
|
|
14720
|
+
},
|
|
14448
14721
|
{
|
|
14449
14722
|
id: "select.behavior.toggleIcon",
|
|
14450
14723
|
value: "chevronDown",
|
|
@@ -14973,6 +15246,42 @@ placeholder="Name or address\u2026"
|
|
|
14973
15246
|
DarkTheme: "reveal"
|
|
14974
15247
|
}
|
|
14975
15248
|
},
|
|
15249
|
+
{
|
|
15250
|
+
id: "expand.behavior.textRole",
|
|
15251
|
+
value: "label",
|
|
15252
|
+
type: "string",
|
|
15253
|
+
kind: "behavioral",
|
|
15254
|
+
target: "component-prop",
|
|
15255
|
+
appliesTo: "expand",
|
|
15256
|
+
themeValues: {
|
|
15257
|
+
LightTheme: "label",
|
|
15258
|
+
DarkTheme: "label"
|
|
15259
|
+
}
|
|
15260
|
+
},
|
|
15261
|
+
{
|
|
15262
|
+
id: "expand.behavior.sublabelRole",
|
|
15263
|
+
value: "caption",
|
|
15264
|
+
type: "string",
|
|
15265
|
+
kind: "behavioral",
|
|
15266
|
+
target: "component-prop",
|
|
15267
|
+
appliesTo: "expand",
|
|
15268
|
+
themeValues: {
|
|
15269
|
+
LightTheme: "caption",
|
|
15270
|
+
DarkTheme: "caption"
|
|
15271
|
+
}
|
|
15272
|
+
},
|
|
15273
|
+
{
|
|
15274
|
+
id: "expand.behavior.sublabelColor",
|
|
15275
|
+
value: "on-background-variant",
|
|
15276
|
+
type: "string",
|
|
15277
|
+
kind: "behavioral",
|
|
15278
|
+
target: "component-prop",
|
|
15279
|
+
appliesTo: "expand",
|
|
15280
|
+
themeValues: {
|
|
15281
|
+
LightTheme: "on-background-variant",
|
|
15282
|
+
DarkTheme: "on-background-variant"
|
|
15283
|
+
}
|
|
15284
|
+
},
|
|
14976
15285
|
{
|
|
14977
15286
|
id: "input.behavior.typeface",
|
|
14978
15287
|
value: "input",
|
|
@@ -16005,6 +16314,18 @@ placeholder="Name or address\u2026"
|
|
|
16005
16314
|
DarkTheme: "sm"
|
|
16006
16315
|
}
|
|
16007
16316
|
},
|
|
16317
|
+
{
|
|
16318
|
+
id: "contactInput.behavior.chipAvatar",
|
|
16319
|
+
value: true,
|
|
16320
|
+
type: "boolean",
|
|
16321
|
+
kind: "behavioral",
|
|
16322
|
+
target: "component-prop",
|
|
16323
|
+
appliesTo: "contactInput",
|
|
16324
|
+
themeValues: {
|
|
16325
|
+
LightTheme: true,
|
|
16326
|
+
DarkTheme: true
|
|
16327
|
+
}
|
|
16328
|
+
},
|
|
16008
16329
|
{
|
|
16009
16330
|
id: "calendar.behavior.dayBorderRadius",
|
|
16010
16331
|
value: "max",
|
|
@@ -16665,6 +16986,18 @@ placeholder="Name or address\u2026"
|
|
|
16665
16986
|
DarkTheme: "sm"
|
|
16666
16987
|
}
|
|
16667
16988
|
},
|
|
16989
|
+
{
|
|
16990
|
+
id: "dataTable.behavior.sortIcon",
|
|
16991
|
+
value: "arrowUp",
|
|
16992
|
+
type: "string",
|
|
16993
|
+
kind: "behavioral",
|
|
16994
|
+
target: "component-prop",
|
|
16995
|
+
appliesTo: "dataTable",
|
|
16996
|
+
themeValues: {
|
|
16997
|
+
LightTheme: "arrowUp",
|
|
16998
|
+
DarkTheme: "arrowUp"
|
|
16999
|
+
}
|
|
17000
|
+
},
|
|
16668
17001
|
{
|
|
16669
17002
|
id: "dataTable.behavior.tdTextRole",
|
|
16670
17003
|
value: "title-small",
|
|
@@ -16809,6 +17142,18 @@ placeholder="Name or address\u2026"
|
|
|
16809
17142
|
DarkTheme: -10
|
|
16810
17143
|
}
|
|
16811
17144
|
},
|
|
17145
|
+
{
|
|
17146
|
+
id: "notificationBadge.behavior.typeface",
|
|
17147
|
+
value: "overline",
|
|
17148
|
+
type: "string",
|
|
17149
|
+
kind: "behavioral",
|
|
17150
|
+
target: "component-prop",
|
|
17151
|
+
appliesTo: "notificationBadge",
|
|
17152
|
+
themeValues: {
|
|
17153
|
+
LightTheme: "overline",
|
|
17154
|
+
DarkTheme: "overline"
|
|
17155
|
+
}
|
|
17156
|
+
},
|
|
16812
17157
|
{
|
|
16813
17158
|
id: "paginator.behavior.gap",
|
|
16814
17159
|
value: "xs",
|
|
@@ -17987,6 +18332,7 @@ placeholder="Name or address\u2026"
|
|
|
17987
18332
|
border: "quaternary",
|
|
17988
18333
|
padding: "sm",
|
|
17989
18334
|
inset: "lg",
|
|
18335
|
+
overscroll: "contain",
|
|
17990
18336
|
elevation: "dialog",
|
|
17991
18337
|
backdrop: "scrim",
|
|
17992
18338
|
motion: "panel"
|
|
@@ -18009,7 +18355,8 @@ placeholder="Name or address\u2026"
|
|
|
18009
18355
|
textRole: "title-large",
|
|
18010
18356
|
textAlign: "center",
|
|
18011
18357
|
closeButtonIcon: "close",
|
|
18012
|
-
closeButtonSize: "md"
|
|
18358
|
+
closeButtonSize: "md",
|
|
18359
|
+
richPadding: "md"
|
|
18013
18360
|
},
|
|
18014
18361
|
select: {
|
|
18015
18362
|
toggleIcon: "chevronDown",
|
|
@@ -18069,7 +18416,10 @@ placeholder="Name or address\u2026"
|
|
|
18069
18416
|
motion: "panel"
|
|
18070
18417
|
},
|
|
18071
18418
|
expand: {
|
|
18072
|
-
motion: "reveal"
|
|
18419
|
+
motion: "reveal",
|
|
18420
|
+
textRole: "label",
|
|
18421
|
+
sublabelRole: "caption",
|
|
18422
|
+
sublabelColor: "on-background-variant"
|
|
18073
18423
|
},
|
|
18074
18424
|
input: {
|
|
18075
18425
|
typeface: "input",
|
|
@@ -18179,7 +18529,8 @@ placeholder="Name or address\u2026"
|
|
|
18179
18529
|
avatarVariant: "primary",
|
|
18180
18530
|
nameTypeface: "body-2-short",
|
|
18181
18531
|
detailTypeface: "caption",
|
|
18182
|
-
rowGap: "sm"
|
|
18532
|
+
rowGap: "sm",
|
|
18533
|
+
chipAvatar: true
|
|
18183
18534
|
},
|
|
18184
18535
|
calendar: {
|
|
18185
18536
|
dayBorderRadius: "max",
|
|
@@ -18257,6 +18608,7 @@ placeholder="Name or address\u2026"
|
|
|
18257
18608
|
thVerticalBorder: "dotted",
|
|
18258
18609
|
thHorizontalBorder: "light",
|
|
18259
18610
|
thPadding: "sm",
|
|
18611
|
+
sortIcon: "arrowUp",
|
|
18260
18612
|
tdTextRole: "title-small",
|
|
18261
18613
|
tdColor: "primary-surface",
|
|
18262
18614
|
tdStickyColor: "primary-container",
|
|
@@ -18270,7 +18622,8 @@ placeholder="Name or address\u2026"
|
|
|
18270
18622
|
},
|
|
18271
18623
|
notificationBadge: {
|
|
18272
18624
|
borderRadius: "sm",
|
|
18273
|
-
offset: -10
|
|
18625
|
+
offset: -10,
|
|
18626
|
+
typeface: "overline"
|
|
18274
18627
|
},
|
|
18275
18628
|
paginator: {
|
|
18276
18629
|
gap: "xs",
|
|
@@ -18613,6 +18966,7 @@ placeholder="Name or address\u2026"
|
|
|
18613
18966
|
border: "quaternary",
|
|
18614
18967
|
padding: "sm",
|
|
18615
18968
|
inset: "lg",
|
|
18969
|
+
overscroll: "contain",
|
|
18616
18970
|
elevation: "dialog",
|
|
18617
18971
|
backdrop: "scrim",
|
|
18618
18972
|
motion: "panel"
|
|
@@ -18635,7 +18989,8 @@ placeholder="Name or address\u2026"
|
|
|
18635
18989
|
textRole: "title-large",
|
|
18636
18990
|
textAlign: "center",
|
|
18637
18991
|
closeButtonIcon: "close",
|
|
18638
|
-
closeButtonSize: "md"
|
|
18992
|
+
closeButtonSize: "md",
|
|
18993
|
+
richPadding: "md"
|
|
18639
18994
|
},
|
|
18640
18995
|
select: {
|
|
18641
18996
|
toggleIcon: "chevronDown",
|
|
@@ -18695,7 +19050,10 @@ placeholder="Name or address\u2026"
|
|
|
18695
19050
|
motion: "panel"
|
|
18696
19051
|
},
|
|
18697
19052
|
expand: {
|
|
18698
|
-
motion: "reveal"
|
|
19053
|
+
motion: "reveal",
|
|
19054
|
+
textRole: "label",
|
|
19055
|
+
sublabelRole: "caption",
|
|
19056
|
+
sublabelColor: "on-background-variant"
|
|
18699
19057
|
},
|
|
18700
19058
|
input: {
|
|
18701
19059
|
typeface: "input",
|
|
@@ -18805,7 +19163,8 @@ placeholder="Name or address\u2026"
|
|
|
18805
19163
|
avatarVariant: "primary",
|
|
18806
19164
|
nameTypeface: "body-2-short",
|
|
18807
19165
|
detailTypeface: "caption",
|
|
18808
|
-
rowGap: "sm"
|
|
19166
|
+
rowGap: "sm",
|
|
19167
|
+
chipAvatar: true
|
|
18809
19168
|
},
|
|
18810
19169
|
calendar: {
|
|
18811
19170
|
dayBorderRadius: "max",
|
|
@@ -18883,6 +19242,7 @@ placeholder="Name or address\u2026"
|
|
|
18883
19242
|
thVerticalBorder: "dotted",
|
|
18884
19243
|
thHorizontalBorder: "light",
|
|
18885
19244
|
thPadding: "sm",
|
|
19245
|
+
sortIcon: "arrowUp",
|
|
18886
19246
|
tdTextRole: "title-small",
|
|
18887
19247
|
tdColor: "primary-surface",
|
|
18888
19248
|
tdStickyColor: "primary-container",
|
|
@@ -18896,7 +19256,8 @@ placeholder="Name or address\u2026"
|
|
|
18896
19256
|
},
|
|
18897
19257
|
notificationBadge: {
|
|
18898
19258
|
borderRadius: "sm",
|
|
18899
|
-
offset: -10
|
|
19259
|
+
offset: -10,
|
|
19260
|
+
typeface: "overline"
|
|
18900
19261
|
},
|
|
18901
19262
|
paginator: {
|
|
18902
19263
|
gap: "xs",
|
|
@@ -19004,6 +19365,36 @@ placeholder="Name or address\u2026"
|
|
|
19004
19365
|
{
|
|
19005
19366
|
package: "@uni-design-system/uni-angular",
|
|
19006
19367
|
releases: [
|
|
19368
|
+
{
|
|
19369
|
+
version: "11.8.0",
|
|
19370
|
+
entries: [
|
|
19371
|
+
{
|
|
19372
|
+
bump: "minor",
|
|
19373
|
+
title: "The dialog and drawer release: footers that take your own actions, a rich dialog head, and a non-modal overlay drawer.",
|
|
19374
|
+
body: "- **`[dialog-buttons]`, `[drawer-buttons]`**: an `<ng-content>` inside the row. Empty, each renders its pair (Confirm/Cancel, Cancel/Save) as before; project your own buttons and they replace the pair while keeping the row's chrome \u2014 padding, gap, `justifyContent`, the divider, `stretch`, `reverseOrder`. Until now importing either component silently discarded whatever a consumer projected, which is why apps carried the slot attribute _without_ the import to keep a real footer. A `[dialog-footnote]` / `[drawer-footnote]` projects on the leading edge and pushes the actions to the trailing one. `loading` puts the spinner on the confirm button; on the dialog, `closeOnConfirm` (default `true`) can be turned off so an asynchronous save closes the dialog itself \u2014 and a failed one leaves it open with its error.\n- **`[dialog-header]`**: a `rich` input renders the projection as a block beside the close button \u2014 an eyebrow, a headline, a blurb \u2014 instead of one centred line. Two `dialogHeader` theme options dress it: `richColor` (unset by default: the head is part of the sheet, not a pill on it) and `richPadding` (`md`). The new **`[dialog-title]`** directive marks the headline inside a rich head so it alone is the dialog's accessible name; without one the whole block is. The title bar is unchanged.\n- **`uni-drawer`**: `modal` (default `true`) on `over` mode. Off, the panel is shown as a `popover=\"manual\"` \u2014 still the top layer, where nothing can clip or cover it, but no focus trap, no inert page and no backdrop: a workbench beside the live document it changes, and the reason a toast's Undo stays clickable while a panel is open. Escape still asks to close through `closeRequest` (while focus is inside the panel), so `disableAutoClose` vetoes it as in modal mode; `scrim` is ignored with a dev-mode warning; and `closeOnOutsideClick` (default `false`, reason `'outside'`) opts into dismissal on a click beyond the panel. `DrawerCloseReason` gains `'outside'`.\n- **`uni-callout`** (and so `uni-tour`): every retarget re-shows the scrim and panel, so a panel opened by the previous step's click \u2014 which entered the top layer after them and covered them \u2014 ends up beneath them again, and the next step can point inside it. The panel has to be non-modal for that: a `showModal()` dialog makes everything outside it inert, which no stacking undoes. That is what `modal: false` on the drawer is for.\n\nBase theme: `dialogHeader.options.richColor` (undefined) and `richPadding` (`md`).",
|
|
19375
|
+
commit: "fa02607"
|
|
19376
|
+
}
|
|
19377
|
+
],
|
|
19378
|
+
dependencyBumps: []
|
|
19379
|
+
},
|
|
19380
|
+
{
|
|
19381
|
+
version: "11.7.0",
|
|
19382
|
+
entries: [
|
|
19383
|
+
{
|
|
19384
|
+
bump: "minor",
|
|
19385
|
+
title: "Data table refinements from the Wellsourced adoption.",
|
|
19386
|
+
body: '- **Phantom scrollbar fixed**: a right-aligned last column no longer grows a horizontal scrollbar. The sort arrow now sits on the leading side of the label in right-aligned columns, and header cells clip the arrow instead of letting it widen the scroll area.\n- **`ColumnDefinition`**: `width` (a preferred column width) and `sortable` (default `true`; `false` renders a plain heading with no sort button or `aria-sort`).\n- **Cell templates** receive the row as `$implicit` and its `index`, alongside the row\'s fields by name, so `let-row` works and existing `let-name="name"` templates are unchanged. The context type is exported as `UniDataTableCellContext<T>`.\n- **`dataTable` theme options**: `thPaddingVertical` / `thPaddingHorizontal` and `tdPaddingVertical` / `tdPaddingHorizontal` override `thPadding` / `tdPadding` per axis; `sortIcon` picks the sort glyph (default `arrowUp`).\n- **`uni-sort-header`**: `iconName` and `align` inputs.',
|
|
19387
|
+
commit: "ffe2080"
|
|
19388
|
+
},
|
|
19389
|
+
{
|
|
19390
|
+
bump: "minor",
|
|
19391
|
+
title: 'Close the first two tiers of the Wellsourced change-request queue: six silent-failure fixes and five "the theme could not reach it" gaps, all additive.',
|
|
19392
|
+
body: "- **`uni-select`**: a value no option stands for \u2014 `''`, a stale id, or `null` with no `placeholder` \u2014 now renders as empty instead of as the first option. A native `<select>` with no selected `<option>` shows its first entry, so the field used to display a choice the model did not hold. A hidden \"nothing selected\" row is rendered whenever the model is unmatched (the placeholder, when there is one), and a dev-mode warning names a bound value that matches no option once the options have loaded.\n- **`uni-button`, `uni-icon-button`**: `disabled` is accepted as an alias of `disable`. The native name \u2014 the one every other Uni control uses \u2014 used to land on the DOM property, where the host's own attribute binding removed it on the first pass, so a button that had to start disabled rendered enabled with no error. `icon-button`'s `disable` and `loading` gain the `booleanAttribute` transform `text-button`'s already had: `<button icon-button disable>` works, and an optional chain (`[disable]=\"x()?.saving\"`) no longer needs a `!!`.\n- **`uni-tour`**: `finished` is only emitted for a run that presented at least one step, and `started` fires when the first step is presented \u2014 from `start()` or from a write to `active` \u2014 rather than at the call. A `start()` issued before `steps` are bound waits for them, so a host that loads steps from a service and starts in the same turn opens on the first one instead of reporting a finish for a tour that never opened. A one-step tour draws no progress, `progressStyle` accepts `'none'` and has a per-instance input, and a step may omit `body`.\n- **`uni-notification-badge`**: the `typeface` option is read (it was declared and never wired), the host is `inline-flex` so it no longer drops a wrapped link under its flex siblings, and the disc takes its size from a new `sizes` block (`sm` 14 / `md` 16 / `lg` 20px, keyed by `size`; `lg` is the default and the 20px it always drew). A count may widen rather than clip inside a fixed square. `offset` documents how it should scale with the wrapped element.\n- **`uni-contact-input`**: forwards `parse`; a `chipAvatar` input and theme option (default `true`) draw the chip as the name alone when the initials would only repeat it. **`uni-tag-input`** under `preset=\"email\"` now splits a paste on whitespace too \u2014 a column copied from a spreadsheet becomes one chip per address \u2014 while keeping the words of `Name <address>` together; and `openOnFocus` opens the list when suggestions arrive _after_ focus, so a field focused while its contacts are still loading shows them the moment they land (unless Escape dismissed the list in between).\n- **`uni-toggle`**: the hidden native input uses the shared `visuallyHidden` recipe \u2014 the last hidden helper in the library still on a private `position: absolute`.\n- **`uni-expand-toggle`**: the labelled trigger's type is themable through the `expand` entry \u2014 `textRole` / `textColor` and `sublabelRole` / `sublabelColor`, defaulting to the `label` / `caption` it hardcoded. The checkbox finding from 11.2.0, closed here.\n- **`uni-input`, `uni-textarea`, `uni-number-input`**: `unframed` drops the field chrome (border, fill, radius, shadow, inset and focus treatment) and renders the bare control, the same meaning it has on `uni-tag-input`; it lives on `uni-input-box` and is forwarded. `uni-input` also gains `align`, as `uni-number-input` has. (`labelHidden` was asked for too: the text fields never draw their `label` \u2014 it is the accessible name only \u2014 so there is nothing to hide.)\n- **`uni-dialog`**: an `overscroll` theme option (`auto` / `contain` / `none`, default `contain`, which is what the body hardcoded) for the scrolling body row.\n- **`uni-scroll-area`**: `maxHeight` lets the area grow with its content up to a cap and then scroll; `fill` takes the room a flex-column parent leaves. Either makes it the body of a dialog without a wrapper. With neither (or `height`) the layout is unchanged.\n- **`uni-combobox`**: `emptyValue` is what a clear writes \u2014 `null` by default, `''` for a field bound to a plain `string` schema, whose readers no longer meet a `null` after the \u2715.\n\nTheme-level additions in uni-core's base theme: `notificationBadge.sizes` and `options.typeface`, `expand.options.textRole` / `sublabelRole` / `sublabelColor`, `dialog.options.overscroll`, `contactInput.options.chipAvatar`. Every default reproduces what the component previously hardcoded.",
|
|
19393
|
+
commit: "9ff14bc"
|
|
19394
|
+
}
|
|
19395
|
+
],
|
|
19396
|
+
dependencyBumps: []
|
|
19397
|
+
},
|
|
19007
19398
|
{
|
|
19008
19399
|
version: "11.6.0",
|
|
19009
19400
|
entries: [
|
|
@@ -19962,6 +20353,36 @@ placeholder="Name or address\u2026"
|
|
|
19962
20353
|
{
|
|
19963
20354
|
package: "@uni-design-system/uni-core",
|
|
19964
20355
|
releases: [
|
|
20356
|
+
{
|
|
20357
|
+
version: "11.8.0",
|
|
20358
|
+
entries: [
|
|
20359
|
+
{
|
|
20360
|
+
bump: "minor",
|
|
20361
|
+
title: "The dialog and drawer release: footers that take your own actions, a rich dialog head, and a non-modal overlay drawer.",
|
|
20362
|
+
body: "- **`[dialog-buttons]`, `[drawer-buttons]`**: an `<ng-content>` inside the row. Empty, each renders its pair (Confirm/Cancel, Cancel/Save) as before; project your own buttons and they replace the pair while keeping the row's chrome \u2014 padding, gap, `justifyContent`, the divider, `stretch`, `reverseOrder`. Until now importing either component silently discarded whatever a consumer projected, which is why apps carried the slot attribute _without_ the import to keep a real footer. A `[dialog-footnote]` / `[drawer-footnote]` projects on the leading edge and pushes the actions to the trailing one. `loading` puts the spinner on the confirm button; on the dialog, `closeOnConfirm` (default `true`) can be turned off so an asynchronous save closes the dialog itself \u2014 and a failed one leaves it open with its error.\n- **`[dialog-header]`**: a `rich` input renders the projection as a block beside the close button \u2014 an eyebrow, a headline, a blurb \u2014 instead of one centred line. Two `dialogHeader` theme options dress it: `richColor` (unset by default: the head is part of the sheet, not a pill on it) and `richPadding` (`md`). The new **`[dialog-title]`** directive marks the headline inside a rich head so it alone is the dialog's accessible name; without one the whole block is. The title bar is unchanged.\n- **`uni-drawer`**: `modal` (default `true`) on `over` mode. Off, the panel is shown as a `popover=\"manual\"` \u2014 still the top layer, where nothing can clip or cover it, but no focus trap, no inert page and no backdrop: a workbench beside the live document it changes, and the reason a toast's Undo stays clickable while a panel is open. Escape still asks to close through `closeRequest` (while focus is inside the panel), so `disableAutoClose` vetoes it as in modal mode; `scrim` is ignored with a dev-mode warning; and `closeOnOutsideClick` (default `false`, reason `'outside'`) opts into dismissal on a click beyond the panel. `DrawerCloseReason` gains `'outside'`.\n- **`uni-callout`** (and so `uni-tour`): every retarget re-shows the scrim and panel, so a panel opened by the previous step's click \u2014 which entered the top layer after them and covered them \u2014 ends up beneath them again, and the next step can point inside it. The panel has to be non-modal for that: a `showModal()` dialog makes everything outside it inert, which no stacking undoes. That is what `modal: false` on the drawer is for.\n\nBase theme: `dialogHeader.options.richColor` (undefined) and `richPadding` (`md`).",
|
|
20363
|
+
commit: "fa02607"
|
|
20364
|
+
}
|
|
20365
|
+
],
|
|
20366
|
+
dependencyBumps: []
|
|
20367
|
+
},
|
|
20368
|
+
{
|
|
20369
|
+
version: "11.7.0",
|
|
20370
|
+
entries: [
|
|
20371
|
+
{
|
|
20372
|
+
bump: "minor",
|
|
20373
|
+
title: "Data table refinements from the Wellsourced adoption.",
|
|
20374
|
+
body: '- **Phantom scrollbar fixed**: a right-aligned last column no longer grows a horizontal scrollbar. The sort arrow now sits on the leading side of the label in right-aligned columns, and header cells clip the arrow instead of letting it widen the scroll area.\n- **`ColumnDefinition`**: `width` (a preferred column width) and `sortable` (default `true`; `false` renders a plain heading with no sort button or `aria-sort`).\n- **Cell templates** receive the row as `$implicit` and its `index`, alongside the row\'s fields by name, so `let-row` works and existing `let-name="name"` templates are unchanged. The context type is exported as `UniDataTableCellContext<T>`.\n- **`dataTable` theme options**: `thPaddingVertical` / `thPaddingHorizontal` and `tdPaddingVertical` / `tdPaddingHorizontal` override `thPadding` / `tdPadding` per axis; `sortIcon` picks the sort glyph (default `arrowUp`).\n- **`uni-sort-header`**: `iconName` and `align` inputs.',
|
|
20375
|
+
commit: "ffe2080"
|
|
20376
|
+
},
|
|
20377
|
+
{
|
|
20378
|
+
bump: "minor",
|
|
20379
|
+
title: 'Close the first two tiers of the Wellsourced change-request queue: six silent-failure fixes and five "the theme could not reach it" gaps, all additive.',
|
|
20380
|
+
body: "- **`uni-select`**: a value no option stands for \u2014 `''`, a stale id, or `null` with no `placeholder` \u2014 now renders as empty instead of as the first option. A native `<select>` with no selected `<option>` shows its first entry, so the field used to display a choice the model did not hold. A hidden \"nothing selected\" row is rendered whenever the model is unmatched (the placeholder, when there is one), and a dev-mode warning names a bound value that matches no option once the options have loaded.\n- **`uni-button`, `uni-icon-button`**: `disabled` is accepted as an alias of `disable`. The native name \u2014 the one every other Uni control uses \u2014 used to land on the DOM property, where the host's own attribute binding removed it on the first pass, so a button that had to start disabled rendered enabled with no error. `icon-button`'s `disable` and `loading` gain the `booleanAttribute` transform `text-button`'s already had: `<button icon-button disable>` works, and an optional chain (`[disable]=\"x()?.saving\"`) no longer needs a `!!`.\n- **`uni-tour`**: `finished` is only emitted for a run that presented at least one step, and `started` fires when the first step is presented \u2014 from `start()` or from a write to `active` \u2014 rather than at the call. A `start()` issued before `steps` are bound waits for them, so a host that loads steps from a service and starts in the same turn opens on the first one instead of reporting a finish for a tour that never opened. A one-step tour draws no progress, `progressStyle` accepts `'none'` and has a per-instance input, and a step may omit `body`.\n- **`uni-notification-badge`**: the `typeface` option is read (it was declared and never wired), the host is `inline-flex` so it no longer drops a wrapped link under its flex siblings, and the disc takes its size from a new `sizes` block (`sm` 14 / `md` 16 / `lg` 20px, keyed by `size`; `lg` is the default and the 20px it always drew). A count may widen rather than clip inside a fixed square. `offset` documents how it should scale with the wrapped element.\n- **`uni-contact-input`**: forwards `parse`; a `chipAvatar` input and theme option (default `true`) draw the chip as the name alone when the initials would only repeat it. **`uni-tag-input`** under `preset=\"email\"` now splits a paste on whitespace too \u2014 a column copied from a spreadsheet becomes one chip per address \u2014 while keeping the words of `Name <address>` together; and `openOnFocus` opens the list when suggestions arrive _after_ focus, so a field focused while its contacts are still loading shows them the moment they land (unless Escape dismissed the list in between).\n- **`uni-toggle`**: the hidden native input uses the shared `visuallyHidden` recipe \u2014 the last hidden helper in the library still on a private `position: absolute`.\n- **`uni-expand-toggle`**: the labelled trigger's type is themable through the `expand` entry \u2014 `textRole` / `textColor` and `sublabelRole` / `sublabelColor`, defaulting to the `label` / `caption` it hardcoded. The checkbox finding from 11.2.0, closed here.\n- **`uni-input`, `uni-textarea`, `uni-number-input`**: `unframed` drops the field chrome (border, fill, radius, shadow, inset and focus treatment) and renders the bare control, the same meaning it has on `uni-tag-input`; it lives on `uni-input-box` and is forwarded. `uni-input` also gains `align`, as `uni-number-input` has. (`labelHidden` was asked for too: the text fields never draw their `label` \u2014 it is the accessible name only \u2014 so there is nothing to hide.)\n- **`uni-dialog`**: an `overscroll` theme option (`auto` / `contain` / `none`, default `contain`, which is what the body hardcoded) for the scrolling body row.\n- **`uni-scroll-area`**: `maxHeight` lets the area grow with its content up to a cap and then scroll; `fill` takes the room a flex-column parent leaves. Either makes it the body of a dialog without a wrapper. With neither (or `height`) the layout is unchanged.\n- **`uni-combobox`**: `emptyValue` is what a clear writes \u2014 `null` by default, `''` for a field bound to a plain `string` schema, whose readers no longer meet a `null` after the \u2715.\n\nTheme-level additions in uni-core's base theme: `notificationBadge.sizes` and `options.typeface`, `expand.options.textRole` / `sublabelRole` / `sublabelColor`, `dialog.options.overscroll`, `contactInput.options.chipAvatar`. Every default reproduces what the component previously hardcoded.",
|
|
20381
|
+
commit: "9ff14bc"
|
|
20382
|
+
}
|
|
20383
|
+
],
|
|
20384
|
+
dependencyBumps: []
|
|
20385
|
+
},
|
|
19965
20386
|
{
|
|
19966
20387
|
version: "11.6.0",
|
|
19967
20388
|
entries: [
|
|
@@ -20645,6 +21066,16 @@ placeholder="Name or address\u2026"
|
|
|
20645
21066
|
{
|
|
20646
21067
|
package: "@uni-design-system/uni-react",
|
|
20647
21068
|
releases: [
|
|
21069
|
+
{
|
|
21070
|
+
version: "11.8.0",
|
|
21071
|
+
entries: [],
|
|
21072
|
+
dependencyBumps: []
|
|
21073
|
+
},
|
|
21074
|
+
{
|
|
21075
|
+
version: "11.7.0",
|
|
21076
|
+
entries: [],
|
|
21077
|
+
dependencyBumps: []
|
|
21078
|
+
},
|
|
20648
21079
|
{
|
|
20649
21080
|
version: "11.6.0",
|
|
20650
21081
|
entries: [],
|
|
@@ -20956,6 +21387,16 @@ placeholder="Name or address\u2026"
|
|
|
20956
21387
|
{
|
|
20957
21388
|
package: "@uni-design-system/uni-mcp",
|
|
20958
21389
|
releases: [
|
|
21390
|
+
{
|
|
21391
|
+
version: "11.8.0",
|
|
21392
|
+
entries: [],
|
|
21393
|
+
dependencyBumps: []
|
|
21394
|
+
},
|
|
21395
|
+
{
|
|
21396
|
+
version: "11.7.0",
|
|
21397
|
+
entries: [],
|
|
21398
|
+
dependencyBumps: []
|
|
21399
|
+
},
|
|
20959
21400
|
{
|
|
20960
21401
|
version: "11.6.0",
|
|
20961
21402
|
entries: [],
|
|
@@ -21225,7 +21666,7 @@ placeholder="Name or address\u2026"
|
|
|
21225
21666
|
summary: "Returns a document-unique id for wiring ARIA relationships (aria-controls, aria-describedby, aria-labelledby, ...).",
|
|
21226
21667
|
description: "Returns a document-unique id for wiring ARIA relationships (aria-controls, aria-describedby, aria-labelledby, ...).",
|
|
21227
21668
|
members: [],
|
|
21228
|
-
version: "11.
|
|
21669
|
+
version: "11.8.0"
|
|
21229
21670
|
},
|
|
21230
21671
|
{
|
|
21231
21672
|
id: "focusable-selector",
|
|
@@ -21237,7 +21678,7 @@ placeholder="Name or address\u2026"
|
|
|
21237
21678
|
summary: "Selector matching natively focusable elements.",
|
|
21238
21679
|
description: "Selector matching natively focusable elements. Used to locate the interactive element inside a projected trigger so ARIA attributes land on the element that actually receives focus.",
|
|
21239
21680
|
members: [],
|
|
21240
|
-
version: "11.
|
|
21681
|
+
version: "11.8.0"
|
|
21241
21682
|
},
|
|
21242
21683
|
{
|
|
21243
21684
|
id: "resolve-focus-target",
|
|
@@ -21249,7 +21690,7 @@ placeholder="Name or address\u2026"
|
|
|
21249
21690
|
summary: "Resolves the element that should carry ARIA state for a trigger: the element itself when focusable, otherwise its first focusable descendant.",
|
|
21250
21691
|
description: "Resolves the element that should carry ARIA state for a trigger: the element itself when focusable, otherwise its first focusable descendant.",
|
|
21251
21692
|
members: [],
|
|
21252
|
-
version: "11.
|
|
21693
|
+
version: "11.8.0"
|
|
21253
21694
|
},
|
|
21254
21695
|
{
|
|
21255
21696
|
id: "visually-hidden",
|
|
@@ -21261,7 +21702,7 @@ placeholder="Name or address\u2026"
|
|
|
21261
21702
|
summary: "Visually hides content while keeping it available to screen readers.",
|
|
21262
21703
|
description: "Visually hides content while keeping it available to screen readers. Use for text alternatives (e.g. badge counts, icon-only affordances). `fixed`, not `absolute`, and that is load-bearing. An absolutely positioned box resolves its containing block to the nearest *positioned* ancestor \u2014 which, since the controls emitting these spans are `position: static`, is whatever positioned box happens to be above them in the consumer's layout, often several scroll containers up. The span then skips every intervening `overflow: auto` and lands in that distant ancestor's scrollable overflow, turning 1x1 of invisible text into real scrollable distance in a box that never opted into scrolling. A fixed box's containing block is the viewport, so it joins no ancestor's scrollable overflow at all. Caveat: inside a `transform`ed (or `filter`ed/`contain`ed) ancestor a fixed box re-anchors to that ancestor. Harmless here \u2014 the element is 1x1 and clipped to nothing, so where it lands never matters, only what it overflows.",
|
|
21263
21704
|
members: [],
|
|
21264
|
-
version: "11.
|
|
21705
|
+
version: "11.8.0"
|
|
21265
21706
|
},
|
|
21266
21707
|
{
|
|
21267
21708
|
id: "motion-safe",
|
|
@@ -21273,7 +21714,7 @@ placeholder="Name or address\u2026"
|
|
|
21273
21714
|
summary: "Wraps animation/transition styles so they only apply when the user has not requested reduced motion (WCAG 2.3.3).",
|
|
21274
21715
|
description: "Wraps animation/transition styles so they only apply when the user has not requested reduced motion (WCAG 2.3.3).",
|
|
21275
21716
|
members: [],
|
|
21276
|
-
version: "11.
|
|
21717
|
+
version: "11.8.0"
|
|
21277
21718
|
},
|
|
21278
21719
|
{
|
|
21279
21720
|
id: "announcer",
|
|
@@ -21298,7 +21739,7 @@ placeholder="Name or address\u2026"
|
|
|
21298
21739
|
description: "Announce `text`, even when it repeats what was just announced."
|
|
21299
21740
|
}
|
|
21300
21741
|
],
|
|
21301
|
-
version: "11.
|
|
21742
|
+
version: "11.8.0"
|
|
21302
21743
|
},
|
|
21303
21744
|
{
|
|
21304
21745
|
id: "create-announcer",
|
|
@@ -21310,7 +21751,7 @@ placeholder="Name or address\u2026"
|
|
|
21310
21751
|
summary: "A polite live region's text, for the running commentary a form control owes a screen reader: commits, clears, refused entries, result counts \u2014 changes a sighted user sees but that are otherwise silent.",
|
|
21311
21752
|
description: "A polite live region's text, for the running commentary a form control owes a screen reader: commits, clears, refused entries, result counts \u2014 changes a sighted user sees but that are otherwise silent. Extracted because five controls (`uni-combobox`, `uni-tag-input`, `uni-time-input`, `uni-date-input`, `uni-calendar`) carried byte-identical copies, including the repeat trick below \u2014 the kind of subtlety that is quietly dropped when the sixth control hand-rolls its own. Announcing the same text twice must still be heard: assistive tech reads a live region when its content *changes*, so setting an identical string is a no-op and the second \"No match.\" would be silent. A trailing space breaks the equality without changing a word of what is read. Successive repeats alternate between the padded and unpadded form, so nothing accumulates. Deliberately holds no DOM and no styling: the region belongs to the component's own template, where its placement and visually-hidden class are already the component's business.",
|
|
21312
21753
|
members: [],
|
|
21313
|
-
version: "11.
|
|
21754
|
+
version: "11.8.0"
|
|
21314
21755
|
},
|
|
21315
21756
|
{
|
|
21316
21757
|
id: "uni-date",
|
|
@@ -21322,7 +21763,7 @@ placeholder="Name or address\u2026"
|
|
|
21322
21763
|
summary: "A calendar date, `'YYYY-MM-DD'`.",
|
|
21323
21764
|
description: "A calendar date, `'YYYY-MM-DD'`.",
|
|
21324
21765
|
members: [],
|
|
21325
|
-
version: "11.
|
|
21766
|
+
version: "11.8.0"
|
|
21326
21767
|
},
|
|
21327
21768
|
{
|
|
21328
21769
|
id: "uni-time",
|
|
@@ -21334,7 +21775,7 @@ placeholder="Name or address\u2026"
|
|
|
21334
21775
|
summary: "A wall-clock time, `'HH:mm'` (24-hour).",
|
|
21335
21776
|
description: "A wall-clock time, `'HH:mm'` (24-hour). Display format is separate.",
|
|
21336
21777
|
members: [],
|
|
21337
|
-
version: "11.
|
|
21778
|
+
version: "11.8.0"
|
|
21338
21779
|
},
|
|
21339
21780
|
{
|
|
21340
21781
|
id: "uni-date-time",
|
|
@@ -21346,7 +21787,7 @@ placeholder="Name or address\u2026"
|
|
|
21346
21787
|
summary: "A combined date and time, `'YYYY-MM-DDTHH:mm'`.",
|
|
21347
21788
|
description: "A combined date and time, `'YYYY-MM-DDTHH:mm'`.",
|
|
21348
21789
|
members: [],
|
|
21349
|
-
version: "11.
|
|
21790
|
+
version: "11.8.0"
|
|
21350
21791
|
},
|
|
21351
21792
|
{
|
|
21352
21793
|
id: "uni-date-range",
|
|
@@ -21371,7 +21812,7 @@ placeholder="Name or address\u2026"
|
|
|
21371
21812
|
description: ""
|
|
21372
21813
|
}
|
|
21373
21814
|
],
|
|
21374
|
-
version: "11.
|
|
21815
|
+
version: "11.8.0"
|
|
21375
21816
|
},
|
|
21376
21817
|
{
|
|
21377
21818
|
id: "iso-date",
|
|
@@ -21383,7 +21824,7 @@ placeholder="Name or address\u2026"
|
|
|
21383
21824
|
summary: "`(2026, 8, 5)` \u2192 `'2026-08-05'`.",
|
|
21384
21825
|
description: "`(2026, 8, 5)` \u2192 `'2026-08-05'`. Does not validate \u2014 see `isValidDate`.",
|
|
21385
21826
|
members: [],
|
|
21386
|
-
version: "11.
|
|
21827
|
+
version: "11.8.0"
|
|
21387
21828
|
},
|
|
21388
21829
|
{
|
|
21389
21830
|
id: "is-valid-date",
|
|
@@ -21395,7 +21836,7 @@ placeholder="Name or address\u2026"
|
|
|
21395
21836
|
summary: "The ISO date when the parts form a real calendar day, else `null`.",
|
|
21396
21837
|
description: "The ISO date when the parts form a real calendar day, else `null`.",
|
|
21397
21838
|
members: [],
|
|
21398
|
-
version: "11.
|
|
21839
|
+
version: "11.8.0"
|
|
21399
21840
|
},
|
|
21400
21841
|
{
|
|
21401
21842
|
id: "days-in-month",
|
|
@@ -21407,7 +21848,7 @@ placeholder="Name or address\u2026"
|
|
|
21407
21848
|
summary: "Days in a month, leap-year aware.",
|
|
21408
21849
|
description: "Days in a month, leap-year aware.",
|
|
21409
21850
|
members: [],
|
|
21410
|
-
version: "11.
|
|
21851
|
+
version: "11.8.0"
|
|
21411
21852
|
},
|
|
21412
21853
|
{
|
|
21413
21854
|
id: "add-days",
|
|
@@ -21419,7 +21860,7 @@ placeholder="Name or address\u2026"
|
|
|
21419
21860
|
summary: "",
|
|
21420
21861
|
description: "",
|
|
21421
21862
|
members: [],
|
|
21422
|
-
version: "11.
|
|
21863
|
+
version: "11.8.0"
|
|
21423
21864
|
},
|
|
21424
21865
|
{
|
|
21425
21866
|
id: "add-months",
|
|
@@ -21431,7 +21872,7 @@ placeholder="Name or address\u2026"
|
|
|
21431
21872
|
summary: "Same day \xB1 n months, clamping the day to the target month's length.",
|
|
21432
21873
|
description: "Same day \xB1 n months, clamping the day to the target month's length.",
|
|
21433
21874
|
members: [],
|
|
21434
|
-
version: "11.
|
|
21875
|
+
version: "11.8.0"
|
|
21435
21876
|
},
|
|
21436
21877
|
{
|
|
21437
21878
|
id: "day-of-week",
|
|
@@ -21443,7 +21884,7 @@ placeholder="Name or address\u2026"
|
|
|
21443
21884
|
summary: "Day of week, 0 = Sunday \u2026 6 = Saturday.",
|
|
21444
21885
|
description: "Day of week, 0 = Sunday \u2026 6 = Saturday.",
|
|
21445
21886
|
members: [],
|
|
21446
|
-
version: "11.
|
|
21887
|
+
version: "11.8.0"
|
|
21447
21888
|
},
|
|
21448
21889
|
{
|
|
21449
21890
|
id: "month-of",
|
|
@@ -21455,7 +21896,7 @@ placeholder="Name or address\u2026"
|
|
|
21455
21896
|
summary: "`'2026-08-20'` \u2192 `'2026-08'`.",
|
|
21456
21897
|
description: "`'2026-08-20'` \u2192 `'2026-08'`.",
|
|
21457
21898
|
members: [],
|
|
21458
|
-
version: "11.
|
|
21899
|
+
version: "11.8.0"
|
|
21459
21900
|
},
|
|
21460
21901
|
{
|
|
21461
21902
|
id: "today-iso",
|
|
@@ -21467,7 +21908,7 @@ placeholder="Name or address\u2026"
|
|
|
21467
21908
|
summary: "Today as a local-wall-clock ISO date (the one place local time matters).",
|
|
21468
21909
|
description: "Today as a local-wall-clock ISO date (the one place local time matters).",
|
|
21469
21910
|
members: [],
|
|
21470
|
-
version: "11.
|
|
21911
|
+
version: "11.8.0"
|
|
21471
21912
|
},
|
|
21472
21913
|
{
|
|
21473
21914
|
id: "inclusive-day-count",
|
|
@@ -21479,7 +21920,7 @@ placeholder="Name or address\u2026"
|
|
|
21479
21920
|
summary: "Inclusive day count of a range: `('-20', '-24')` \u2192 5.",
|
|
21480
21921
|
description: "Inclusive day count of a range: `('-20', '-24')` \u2192 5.",
|
|
21481
21922
|
members: [],
|
|
21482
|
-
version: "11.
|
|
21923
|
+
version: "11.8.0"
|
|
21483
21924
|
},
|
|
21484
21925
|
{
|
|
21485
21926
|
id: "uni-month-grid-cell",
|
|
@@ -21504,7 +21945,7 @@ placeholder="Name or address\u2026"
|
|
|
21504
21945
|
description: "True for leading/trailing cells that belong to the adjacent months."
|
|
21505
21946
|
}
|
|
21506
21947
|
],
|
|
21507
|
-
version: "11.
|
|
21948
|
+
version: "11.8.0"
|
|
21508
21949
|
},
|
|
21509
21950
|
{
|
|
21510
21951
|
id: "build-month-grid",
|
|
@@ -21516,7 +21957,7 @@ placeholder="Name or address\u2026"
|
|
|
21516
21957
|
summary: "The week matrix a calendar renders: full weeks covering `'YYYY-MM'`, starting on `weekStart` (0 = Sunday).",
|
|
21517
21958
|
description: "The week matrix a calendar renders: full weeks covering `'YYYY-MM'`, starting on `weekStart` (0 = Sunday). Outside cells are always present so showing or hiding them is a pure render decision.",
|
|
21518
21959
|
members: [],
|
|
21519
|
-
version: "11.
|
|
21960
|
+
version: "11.8.0"
|
|
21520
21961
|
},
|
|
21521
21962
|
{
|
|
21522
21963
|
id: "format-date",
|
|
@@ -21528,7 +21969,7 @@ placeholder="Name or address\u2026"
|
|
|
21528
21969
|
summary: "",
|
|
21529
21970
|
description: "",
|
|
21530
21971
|
members: [],
|
|
21531
|
-
version: "11.
|
|
21972
|
+
version: "11.8.0"
|
|
21532
21973
|
},
|
|
21533
21974
|
{
|
|
21534
21975
|
id: "format-month-heading",
|
|
@@ -21540,7 +21981,7 @@ placeholder="Name or address\u2026"
|
|
|
21540
21981
|
summary: "`'2026-08'` \u2192 `'August 2026'` in the locale.",
|
|
21541
21982
|
description: "`'2026-08'` \u2192 `'August 2026'` in the locale.",
|
|
21542
21983
|
members: [],
|
|
21543
|
-
version: "11.
|
|
21984
|
+
version: "11.8.0"
|
|
21544
21985
|
},
|
|
21545
21986
|
{
|
|
21546
21987
|
id: "uni-weekday-name",
|
|
@@ -21565,7 +22006,7 @@ placeholder="Name or address\u2026"
|
|
|
21565
22006
|
description: "Full weekday name, for the columnheader's `abbr`."
|
|
21566
22007
|
}
|
|
21567
22008
|
],
|
|
21568
|
-
version: "11.
|
|
22009
|
+
version: "11.8.0"
|
|
21569
22010
|
},
|
|
21570
22011
|
{
|
|
21571
22012
|
id: "weekday-names",
|
|
@@ -21577,7 +22018,7 @@ placeholder="Name or address\u2026"
|
|
|
21577
22018
|
summary: "Weekday header labels starting at `weekStart` (0 = Sunday).",
|
|
21578
22019
|
description: "Weekday header labels starting at `weekStart` (0 = Sunday).",
|
|
21579
22020
|
members: [],
|
|
21580
|
-
version: "11.
|
|
22021
|
+
version: "11.8.0"
|
|
21581
22022
|
},
|
|
21582
22023
|
{
|
|
21583
22024
|
id: "format-time",
|
|
@@ -21589,7 +22030,7 @@ placeholder="Name or address\u2026"
|
|
|
21589
22030
|
summary: "`'15:00'` \u2192 `'3:00 PM'` (or `'15:00'` when `hour12` is false).",
|
|
21590
22031
|
description: "`'15:00'` \u2192 `'3:00 PM'` (or `'15:00'` when `hour12` is false).",
|
|
21591
22032
|
members: [],
|
|
21592
|
-
version: "11.
|
|
22033
|
+
version: "11.8.0"
|
|
21593
22034
|
},
|
|
21594
22035
|
{
|
|
21595
22036
|
id: "locale-week-start",
|
|
@@ -21601,7 +22042,7 @@ placeholder="Name or address\u2026"
|
|
|
21601
22042
|
summary: "The locale's first day of week, 0 = Sunday \u2026 6 = Saturday.",
|
|
21602
22043
|
description: "The locale's first day of week, 0 = Sunday \u2026 6 = Saturday. Falls back to Sunday where `Intl.Locale` week info is unavailable.",
|
|
21603
22044
|
members: [],
|
|
21604
|
-
version: "11.
|
|
22045
|
+
version: "11.8.0"
|
|
21605
22046
|
},
|
|
21606
22047
|
{
|
|
21607
22048
|
id: "locale-default-hour12",
|
|
@@ -21613,7 +22054,7 @@ placeholder="Name or address\u2026"
|
|
|
21613
22054
|
summary: "Whether the locale's default clock is 12-hour.",
|
|
21614
22055
|
description: "Whether the locale's default clock is 12-hour.",
|
|
21615
22056
|
members: [],
|
|
21616
|
-
version: "11.
|
|
22057
|
+
version: "11.8.0"
|
|
21617
22058
|
},
|
|
21618
22059
|
{
|
|
21619
22060
|
id: "locale-field-order",
|
|
@@ -21625,7 +22066,7 @@ placeholder="Name or address\u2026"
|
|
|
21625
22066
|
summary: "The locale's numeric-date field order, e.g.",
|
|
21626
22067
|
description: "The locale's numeric-date field order, e.g. en-US \u2192 month, day, year.",
|
|
21627
22068
|
members: [],
|
|
21628
|
-
version: "11.
|
|
22069
|
+
version: "11.8.0"
|
|
21629
22070
|
},
|
|
21630
22071
|
{
|
|
21631
22072
|
id: "locale-month-names",
|
|
@@ -21637,7 +22078,7 @@ placeholder="Name or address\u2026"
|
|
|
21637
22078
|
summary: "Long + short month names \u2192 month number, lowercased, dots stripped.",
|
|
21638
22079
|
description: "Long + short month names \u2192 month number, lowercased, dots stripped.",
|
|
21639
22080
|
members: [],
|
|
21640
|
-
version: "11.
|
|
22081
|
+
version: "11.8.0"
|
|
21641
22082
|
},
|
|
21642
22083
|
{
|
|
21643
22084
|
id: "locale-date-placeholder",
|
|
@@ -21649,7 +22090,7 @@ placeholder="Name or address\u2026"
|
|
|
21649
22090
|
summary: "The locale's digit pattern as a placeholder, e.g.",
|
|
21650
22091
|
description: "The locale's digit pattern as a placeholder, e.g. `'MM/DD/YYYY'`.",
|
|
21651
22092
|
members: [],
|
|
21652
|
-
version: "11.
|
|
22093
|
+
version: "11.8.0"
|
|
21653
22094
|
},
|
|
21654
22095
|
{
|
|
21655
22096
|
id: "parse-date-text",
|
|
@@ -21661,7 +22102,7 @@ placeholder="Name or address\u2026"
|
|
|
21661
22102
|
summary: "Free-typed date text \u2192 ISO date, or `null` when unreadable.",
|
|
21662
22103
|
description: "Free-typed date text \u2192 ISO date, or `null` when unreadable. Accepts, in order: ISO (`2026-08-20`), a month name from the locale's own long/short lists (`aug 20`, `20 aug 2026`, `August 20th`), and locale-numeric text (`8/20/2026`, `20.8.2026`, `08-20`) with the digit order taken from `Intl.DateTimeFormat(locale).formatToParts()`. A missing year resolves to the next occurrence; two-digit years are refused rather than guessed.",
|
|
21663
22104
|
members: [],
|
|
21664
|
-
version: "11.
|
|
22105
|
+
version: "11.8.0"
|
|
21665
22106
|
},
|
|
21666
22107
|
{
|
|
21667
22108
|
id: "parse-time-text",
|
|
@@ -21673,7 +22114,7 @@ placeholder="Name or address\u2026"
|
|
|
21673
22114
|
summary: "Free-typed time text \u2192 `'HH:mm'`, or `null`.",
|
|
21674
22115
|
description: "Free-typed time text \u2192 `'HH:mm'`, or `null`. Accepts `9`, `930`, `9:30`, `9.30`, `9 30`, `3p`, `3pm`, `3 PM`, `15:00`. Bare hours 1\u20137 with no meridiem lean PM when `hour12` \u2014 typing `3` into an appointment field means 15:00, not 03:00.",
|
|
21675
22116
|
members: [],
|
|
21676
|
-
version: "11.
|
|
22117
|
+
version: "11.8.0"
|
|
21677
22118
|
},
|
|
21678
22119
|
{
|
|
21679
22120
|
id: "time-slots",
|
|
@@ -21685,7 +22126,7 @@ placeholder="Name or address\u2026"
|
|
|
21685
22126
|
summary: "Every `minuteStep` time between `min` and `max` (inclusive bounds).",
|
|
21686
22127
|
description: "Every `minuteStep` time between `min` and `max` (inclusive bounds).",
|
|
21687
22128
|
members: [],
|
|
21688
|
-
version: "11.
|
|
22129
|
+
version: "11.8.0"
|
|
21689
22130
|
},
|
|
21690
22131
|
{
|
|
21691
22132
|
id: "split-date-time",
|
|
@@ -21697,7 +22138,7 @@ placeholder="Name or address\u2026"
|
|
|
21697
22138
|
summary: "",
|
|
21698
22139
|
description: "",
|
|
21699
22140
|
members: [],
|
|
21700
|
-
version: "11.
|
|
22141
|
+
version: "11.8.0"
|
|
21701
22142
|
},
|
|
21702
22143
|
{
|
|
21703
22144
|
id: "join-date-time",
|
|
@@ -21709,7 +22150,7 @@ placeholder="Name or address\u2026"
|
|
|
21709
22150
|
summary: "One combined value only when both parts are present.",
|
|
21710
22151
|
description: "One combined value only when both parts are present.",
|
|
21711
22152
|
members: [],
|
|
21712
|
-
version: "11.
|
|
22153
|
+
version: "11.8.0"
|
|
21713
22154
|
},
|
|
21714
22155
|
{
|
|
21715
22156
|
id: "uni-number-range",
|
|
@@ -21734,7 +22175,7 @@ placeholder="Name or address\u2026"
|
|
|
21734
22175
|
description: ""
|
|
21735
22176
|
}
|
|
21736
22177
|
],
|
|
21737
|
-
version: "11.
|
|
22178
|
+
version: "11.8.0"
|
|
21738
22179
|
},
|
|
21739
22180
|
{
|
|
21740
22181
|
id: "uni-rounding-mode",
|
|
@@ -21746,7 +22187,7 @@ placeholder="Name or address\u2026"
|
|
|
21746
22187
|
summary: "How a tie is resolved when rounding to a fraction-digit count.",
|
|
21747
22188
|
description: "How a tie is resolved when rounding to a fraction-digit count. `half-up` is the invoice default (ties away from zero: `1.15` \u2192 `1.2`); `half-even` is banker's rounding, which removes the upward bias across a column of figures (`1.25` \u2192 `1.2`, `1.35` \u2192 `1.4`).",
|
|
21748
22189
|
members: [],
|
|
21749
|
-
version: "11.
|
|
22190
|
+
version: "11.8.0"
|
|
21750
22191
|
},
|
|
21751
22192
|
{
|
|
21752
22193
|
id: "uni-number-preset",
|
|
@@ -21758,7 +22199,7 @@ placeholder="Name or address\u2026"
|
|
|
21758
22199
|
summary: "Format archetype.",
|
|
21759
22200
|
description: "Format archetype. Supplies decimals, grouping, affix and `inputmode`.",
|
|
21760
22201
|
members: [],
|
|
21761
|
-
version: "11.
|
|
22202
|
+
version: "11.8.0"
|
|
21762
22203
|
},
|
|
21763
22204
|
{
|
|
21764
22205
|
id: "uni-number-grouping",
|
|
@@ -21770,7 +22211,7 @@ placeholder="Name or address\u2026"
|
|
|
21770
22211
|
summary: "Thousands-separator policy, mapped onto `Intl`'s `useGrouping`.",
|
|
21771
22212
|
description: "Thousands-separator policy, mapped onto `Intl`'s `useGrouping`. `min2` \u2014 the default \u2014 groups only from five integer digits, so a year renders `2026` rather than `2,026` while a price still renders `10,000`.",
|
|
21772
22213
|
members: [],
|
|
21773
|
-
version: "11.
|
|
22214
|
+
version: "11.8.0"
|
|
21774
22215
|
},
|
|
21775
22216
|
{
|
|
21776
22217
|
id: "uni-number-reject-reason",
|
|
@@ -21782,7 +22223,7 @@ placeholder="Name or address\u2026"
|
|
|
21782
22223
|
summary: "Why a typed commit was refused.",
|
|
21783
22224
|
description: "Why a typed commit was refused. The raw text stays in the field.",
|
|
21784
22225
|
members: [],
|
|
21785
|
-
version: "11.
|
|
22226
|
+
version: "11.8.0"
|
|
21786
22227
|
},
|
|
21787
22228
|
{
|
|
21788
22229
|
id: "uni-number-step-config",
|
|
@@ -21825,7 +22266,7 @@ placeholder="Name or address\u2026"
|
|
|
21825
22266
|
description: "Cycle past a fence instead of stopping at it \u2014 for genuinely cyclic fields only (23 \u2192 0 hours, 359 \u2192 0 degrees). Needs both `min` and `max`."
|
|
21826
22267
|
}
|
|
21827
22268
|
],
|
|
21828
|
-
version: "11.
|
|
22269
|
+
version: "11.8.0"
|
|
21829
22270
|
},
|
|
21830
22271
|
{
|
|
21831
22272
|
id: "uni-number-clamp",
|
|
@@ -21850,7 +22291,7 @@ placeholder="Name or address\u2026"
|
|
|
21850
22291
|
description: "Which fence was hit, or `null` when the value was already in range."
|
|
21851
22292
|
}
|
|
21852
22293
|
],
|
|
21853
|
-
version: "11.
|
|
22294
|
+
version: "11.8.0"
|
|
21854
22295
|
},
|
|
21855
22296
|
{
|
|
21856
22297
|
id: "uni-locale-number-parts",
|
|
@@ -21893,7 +22334,7 @@ placeholder="Name or address\u2026"
|
|
|
21893
22334
|
description: "Fraction digits `Intl` uses for the currency \u2014 JPY 0, USD 2."
|
|
21894
22335
|
}
|
|
21895
22336
|
],
|
|
21896
|
-
version: "11.
|
|
22337
|
+
version: "11.8.0"
|
|
21897
22338
|
},
|
|
21898
22339
|
{
|
|
21899
22340
|
id: "uni-number-format-config",
|
|
@@ -21978,7 +22419,7 @@ placeholder="Name or address\u2026"
|
|
|
21978
22419
|
description: "Spoken long form of an abbreviated suffix, for `aria-valuetext`."
|
|
21979
22420
|
}
|
|
21980
22421
|
],
|
|
21981
|
-
version: "11.
|
|
22422
|
+
version: "11.8.0"
|
|
21982
22423
|
},
|
|
21983
22424
|
{
|
|
21984
22425
|
id: "uni-resolved-number-format",
|
|
@@ -22069,7 +22510,7 @@ placeholder="Name or address\u2026"
|
|
|
22069
22510
|
description: ""
|
|
22070
22511
|
}
|
|
22071
22512
|
],
|
|
22072
|
-
version: "11.
|
|
22513
|
+
version: "11.8.0"
|
|
22073
22514
|
},
|
|
22074
22515
|
{
|
|
22075
22516
|
id: "uni-number-parse-result",
|
|
@@ -22081,7 +22522,7 @@ placeholder="Name or address\u2026"
|
|
|
22081
22522
|
summary: "The outcome of reading a user's text.",
|
|
22082
22523
|
description: "The outcome of reading a user's text. Refused text is never swallowed: the caller keeps it in the field and flags it, so nobody loses their work to a silently emptied box.",
|
|
22083
22524
|
members: [],
|
|
22084
|
-
version: "11.
|
|
22525
|
+
version: "11.8.0"
|
|
22085
22526
|
},
|
|
22086
22527
|
{
|
|
22087
22528
|
id: "is-canonical-decimal",
|
|
@@ -22093,7 +22534,7 @@ placeholder="Name or address\u2026"
|
|
|
22093
22534
|
summary: "True when `text` is already a canonical decimal (leading/trailing space allowed).",
|
|
22094
22535
|
description: "True when `text` is already a canonical decimal (leading/trailing space allowed).",
|
|
22095
22536
|
members: [],
|
|
22096
|
-
version: "11.
|
|
22537
|
+
version: "11.8.0"
|
|
22097
22538
|
},
|
|
22098
22539
|
{
|
|
22099
22540
|
id: "decimal-scale",
|
|
@@ -22105,7 +22546,7 @@ placeholder="Name or address\u2026"
|
|
|
22105
22546
|
summary: "Fraction-digit count.",
|
|
22106
22547
|
description: "Fraction-digit count. `'1.250'` \u2192 3, `'12'` \u2192 0, `'5.'` \u2192 0.",
|
|
22107
22548
|
members: [],
|
|
22108
|
-
version: "11.
|
|
22549
|
+
version: "11.8.0"
|
|
22109
22550
|
},
|
|
22110
22551
|
{
|
|
22111
22552
|
id: "to-scaled",
|
|
@@ -22117,7 +22558,7 @@ placeholder="Name or address\u2026"
|
|
|
22117
22558
|
summary: "Canonical decimal \u2192 integer scaled by `10^scale`.",
|
|
22118
22559
|
description: "Canonical decimal \u2192 integer scaled by `10^scale`. Fraction digits beyond `scale` are truncated, so callers that must not lose them pass a `scale` at least `decimalScale(value)`.",
|
|
22119
22560
|
members: [],
|
|
22120
|
-
version: "11.
|
|
22561
|
+
version: "11.8.0"
|
|
22121
22562
|
},
|
|
22122
22563
|
{
|
|
22123
22564
|
id: "from-scaled",
|
|
@@ -22129,7 +22570,7 @@ placeholder="Name or address\u2026"
|
|
|
22129
22570
|
summary: "Scaled integer \u2192 canonical decimal, with trailing fraction zeros trimmed.",
|
|
22130
22571
|
description: "Scaled integer \u2192 canonical decimal, with trailing fraction zeros trimmed.",
|
|
22131
22572
|
members: [],
|
|
22132
|
-
version: "11.
|
|
22573
|
+
version: "11.8.0"
|
|
22133
22574
|
},
|
|
22134
22575
|
{
|
|
22135
22576
|
id: "normalize-decimal",
|
|
@@ -22141,7 +22582,7 @@ placeholder="Name or address\u2026"
|
|
|
22141
22582
|
summary: "Strip a leading `+`, leading zeros and trailing fraction zeros: `'+01.50'` \u2192 `'1.5'`.",
|
|
22142
22583
|
description: "Strip a leading `+`, leading zeros and trailing fraction zeros: `'+01.50'` \u2192 `'1.5'`. Requires a canonical decimal; guard with `isCanonicalDecimal`.",
|
|
22143
22584
|
members: [],
|
|
22144
|
-
version: "11.
|
|
22585
|
+
version: "11.8.0"
|
|
22145
22586
|
},
|
|
22146
22587
|
{
|
|
22147
22588
|
id: "to-decimal",
|
|
@@ -22153,7 +22594,7 @@ placeholder="Name or address\u2026"
|
|
|
22153
22594
|
summary: "Any numeric input \u2192 canonical decimal, expanding the exponential notation `String(number)` produces outside 1e-7\u20261e21.",
|
|
22154
22595
|
description: "Any numeric input \u2192 canonical decimal, expanding the exponential notation `String(number)` produces outside 1e-7\u20261e21. A `step` of `1e-7` would otherwise reach the arithmetic as the literal text `'1e-7'`. Throws on text that is not numeric at all \u2014 every caller here passes either a `number` input or text already cleared by the parser.",
|
|
22155
22596
|
members: [],
|
|
22156
|
-
version: "11.
|
|
22597
|
+
version: "11.8.0"
|
|
22157
22598
|
},
|
|
22158
22599
|
{
|
|
22159
22600
|
id: "compare-decimal",
|
|
@@ -22165,7 +22606,7 @@ placeholder="Name or address\u2026"
|
|
|
22165
22606
|
summary: "`-1` when `a < b`, `1` when `a > b`, `0` when equal.",
|
|
22166
22607
|
description: "`-1` when `a < b`, `1` when `a > b`, `0` when equal. `'1.50'` equals `'1.5'`.",
|
|
22167
22608
|
members: [],
|
|
22168
|
-
version: "11.
|
|
22609
|
+
version: "11.8.0"
|
|
22169
22610
|
},
|
|
22170
22611
|
{
|
|
22171
22612
|
id: "round-decimal",
|
|
@@ -22177,7 +22618,7 @@ placeholder="Name or address\u2026"
|
|
|
22177
22618
|
summary: "Round to `fractionDigits`, breaking ties per `mode`.",
|
|
22178
22619
|
description: "Round to `fractionDigits`, breaking ties per `mode`. Exact where `Number.prototype.toFixed` is not \u2014 see the file header.",
|
|
22179
22620
|
members: [],
|
|
22180
|
-
version: "11.
|
|
22621
|
+
version: "11.8.0"
|
|
22181
22622
|
},
|
|
22182
22623
|
{
|
|
22183
22624
|
id: "shift-decimal",
|
|
@@ -22189,7 +22630,7 @@ placeholder="Name or address\u2026"
|
|
|
22189
22630
|
summary: "Multiply by `10^places`, exactly.",
|
|
22190
22631
|
description: "Multiply by `10^places`, exactly. Used for the percent preset's fraction \u21C4 display shift (`0.15` \u21C4 `15`) and for deriving a default large step of `step \xD7 10` without touching a float.",
|
|
22191
22632
|
members: [],
|
|
22192
|
-
version: "11.
|
|
22633
|
+
version: "11.8.0"
|
|
22193
22634
|
},
|
|
22194
22635
|
{
|
|
22195
22636
|
id: "clamp-decimal",
|
|
@@ -22201,7 +22642,7 @@ placeholder="Name or address\u2026"
|
|
|
22201
22642
|
summary: "Hold a value inside its fences, reporting which one it hit so the caller can announce it.",
|
|
22202
22643
|
description: "Hold a value inside its fences, reporting which one it hit so the caller can announce it. Clamping belongs on commit, never per keystroke: a `min=10` field that clamps live can never be typed into, because the `1` becomes `10` before the `5` arrives.",
|
|
22203
22644
|
members: [],
|
|
22204
|
-
version: "11.
|
|
22645
|
+
version: "11.8.0"
|
|
22205
22646
|
},
|
|
22206
22647
|
{
|
|
22207
22648
|
id: "step-decimal",
|
|
@@ -22213,7 +22654,7 @@ placeholder="Name or address\u2026"
|
|
|
22213
22654
|
summary: "One step from `current`, in `direction` (`1` up, `-1` down).",
|
|
22214
22655
|
description: "One step from `current`, in `direction` (`1` up, `-1` down). Steps land on the grid `origin + n \xB7 step`, where `origin` is `min` by default. A value that is *off* the grid snaps to the nearest grid point **in the direction of travel** rather than jumping past it: with `min=5, step=10` the grid is 5, 15, 25, and stepping up from 7 gives 15, not 17. Fences stop the value; they never wrap unless `wrap` is set and both bounds are defined. Returns `current` unchanged when `step` is zero.",
|
|
22215
22656
|
members: [],
|
|
22216
|
-
version: "11.
|
|
22657
|
+
version: "11.8.0"
|
|
22217
22658
|
},
|
|
22218
22659
|
{
|
|
22219
22660
|
id: "locale-number-parts",
|
|
@@ -22225,7 +22666,7 @@ placeholder="Name or address\u2026"
|
|
|
22225
22666
|
summary: "Locale separators plus, when a currency is given, its symbol, side and fraction digits.",
|
|
22226
22667
|
description: "Locale separators plus, when a currency is given, its symbol, side and fraction digits. Memoized: constructing an `Intl.NumberFormat` is expensive and a field re-resolves this on every keystroke.",
|
|
22227
22668
|
members: [],
|
|
22228
|
-
version: "11.
|
|
22669
|
+
version: "11.8.0"
|
|
22229
22670
|
},
|
|
22230
22671
|
{
|
|
22231
22672
|
id: "to-ascii-digits",
|
|
@@ -22237,7 +22678,7 @@ placeholder="Name or address\u2026"
|
|
|
22237
22678
|
summary: "Map localized digits and Arabic separators to ASCII, so `\u0661\u0662\u0663\u0664\u066B\u0665` parses in `ar` and `\u0967\u0968\u0969\u096A.\u096B` in `hi`.",
|
|
22238
22679
|
description: "Map localized digits and Arabic separators to ASCII, so `\u0661\u0662\u0663\u0664\u066B\u0665` parses in `ar` and `\u0967\u0968\u0969\u096A.\u096B` in `hi`.",
|
|
22239
22680
|
members: [],
|
|
22240
|
-
version: "11.
|
|
22681
|
+
version: "11.8.0"
|
|
22241
22682
|
},
|
|
22242
22683
|
{
|
|
22243
22684
|
id: "evaluate-expression",
|
|
@@ -22249,7 +22690,7 @@ placeholder="Name or address\u2026"
|
|
|
22249
22690
|
summary: "Evaluate `+ \u2212 \xD7 \xF7 ( )` over decimal literals \u2014 shunting-yard, roughly thirty lines, and **never `eval`**.",
|
|
22250
22691
|
description: "Evaluate `+ \u2212 \xD7 \xF7 ( )` over decimal literals \u2014 shunting-yard, roughly thirty lines, and **never `eval`**. Returns a canonical decimal, or `null` when the text is not a well-formed expression. Floats are acceptable here in a way they are not elsewhere: this is a convenience path for spreadsheet muscle memory (`12*3`, `100/4+5`), and the result is settled to ten decimals before re-entering exact arithmetic. Division is the only operation that can produce a non-terminating decimal, and no exact representation would help there either.",
|
|
22251
22692
|
members: [],
|
|
22252
|
-
version: "11.
|
|
22693
|
+
version: "11.8.0"
|
|
22253
22694
|
},
|
|
22254
22695
|
{
|
|
22255
22696
|
id: "resolve-number-format",
|
|
@@ -22261,7 +22702,7 @@ placeholder="Name or address\u2026"
|
|
|
22261
22702
|
summary: "Fill in every preset, locale and currency default.",
|
|
22262
22703
|
description: "Fill in every preset, locale and currency default.",
|
|
22263
22704
|
members: [],
|
|
22264
|
-
version: "11.
|
|
22705
|
+
version: "11.8.0"
|
|
22265
22706
|
},
|
|
22266
22707
|
{
|
|
22267
22708
|
id: "parse-number",
|
|
@@ -22273,7 +22714,7 @@ placeholder="Name or address\u2026"
|
|
|
22273
22714
|
summary: "Read a user's text into a canonical decimal in **model units**.",
|
|
22274
22715
|
description: "Read a user's text into a canonical decimal in **model units**. Accepted, in order: canonical/ASCII (always, whatever the locale \u2014 it is what agents and APIs write), locale-grouped, affixed, localized digits, compact (`1.5k`), accounting negatives (`(1,234.56)` \u2192 `-1234.56`), and expressions when `allowExpressions` is set.",
|
|
22275
22716
|
members: [],
|
|
22276
|
-
version: "11.
|
|
22717
|
+
version: "11.8.0"
|
|
22277
22718
|
},
|
|
22278
22719
|
{
|
|
22279
22720
|
id: "format-number",
|
|
@@ -22285,7 +22726,7 @@ placeholder="Name or address\u2026"
|
|
|
22285
22726
|
summary: "Canonical decimal (model units) \u2192 the display number, without affixes.",
|
|
22286
22727
|
description: "Canonical decimal (model units) \u2192 the display number, without affixes. `min2` grouping \u2014 the default \u2014 starts at five integer digits, so a year renders `2026` rather than `2,026` while a price still renders `10,000`.",
|
|
22287
22728
|
members: [],
|
|
22288
|
-
version: "11.
|
|
22729
|
+
version: "11.8.0"
|
|
22289
22730
|
},
|
|
22290
22731
|
{
|
|
22291
22732
|
id: "raw-number-text",
|
|
@@ -22297,7 +22738,7 @@ placeholder="Name or address\u2026"
|
|
|
22297
22738
|
summary: "The plain text the field shows while focused: the display number with no grouping and no affixes, so the caret never has to walk over a separator that appears and vanishes mid-word.",
|
|
22298
22739
|
description: "The plain text the field shows while focused: the display number with no grouping and no affixes, so the caret never has to walk over a separator that appears and vanishes mid-word.",
|
|
22299
22740
|
members: [],
|
|
22300
|
-
version: "11.
|
|
22741
|
+
version: "11.8.0"
|
|
22301
22742
|
},
|
|
22302
22743
|
{
|
|
22303
22744
|
id: "settle-number",
|
|
@@ -22309,7 +22750,7 @@ placeholder="Name or address\u2026"
|
|
|
22309
22750
|
summary: "Round a committed value to the field's precision, in model units.",
|
|
22310
22751
|
description: "Round a committed value to the field's precision, in model units.",
|
|
22311
22752
|
members: [],
|
|
22312
|
-
version: "11.
|
|
22753
|
+
version: "11.8.0"
|
|
22313
22754
|
},
|
|
22314
22755
|
{
|
|
22315
22756
|
id: "speak-number",
|
|
@@ -22321,7 +22762,7 @@ placeholder="Name or address\u2026"
|
|
|
22321
22762
|
summary: "The `aria-valuetext` string: the formatted number with its affixes spoken.",
|
|
22322
22763
|
description: 'The `aria-valuetext` string: the formatted number with its affixes spoken. `aria-valuenow` alone announces "1234.56", which is the one thing about a money field that is not the point. An empty field says "Empty" per APG.',
|
|
22323
22764
|
members: [],
|
|
22324
|
-
version: "11.
|
|
22765
|
+
version: "11.8.0"
|
|
22325
22766
|
},
|
|
22326
22767
|
{
|
|
22327
22768
|
id: "to-number",
|
|
@@ -22333,7 +22774,7 @@ placeholder="Name or address\u2026"
|
|
|
22333
22774
|
summary: "Model-units canonical decimal \u2192 the bound `number`.",
|
|
22334
22775
|
description: "Model-units canonical decimal \u2192 the bound `number`.",
|
|
22335
22776
|
members: [],
|
|
22336
|
-
version: "11.
|
|
22777
|
+
version: "11.8.0"
|
|
22337
22778
|
},
|
|
22338
22779
|
{
|
|
22339
22780
|
id: "loses-precision",
|
|
@@ -22345,7 +22786,7 @@ placeholder="Name or address\u2026"
|
|
|
22345
22786
|
summary: "True when a value cannot survive the trip through `number` \u2014 the reason the components also expose an exact `valueAsString` model, and the trigger for the dev-mode warning.",
|
|
22346
22787
|
description: "True when a value cannot survive the trip through `number` \u2014 the reason the components also expose an exact `valueAsString` model, and the trigger for the dev-mode warning. Silent precision loss is the whole point of that second model, so it is worth saying out loud once. A `number` can only be checked for magnitude, since it has already lost whatever it was going to lose. A canonical string can be checked properly: `'9007199254740993'` comes back as `'9007199254740992'`.",
|
|
22347
22788
|
members: [],
|
|
22348
|
-
version: "11.
|
|
22789
|
+
version: "11.8.0"
|
|
22349
22790
|
},
|
|
22350
22791
|
{
|
|
22351
22792
|
id: "press-repeat-timing",
|
|
@@ -22382,7 +22823,7 @@ placeholder="Name or address\u2026"
|
|
|
22382
22823
|
description: ""
|
|
22383
22824
|
}
|
|
22384
22825
|
],
|
|
22385
|
-
version: "11.
|
|
22826
|
+
version: "11.8.0"
|
|
22386
22827
|
},
|
|
22387
22828
|
{
|
|
22388
22829
|
id: "press-repeat-config",
|
|
@@ -22431,7 +22872,7 @@ placeholder="Name or address\u2026"
|
|
|
22431
22872
|
description: ""
|
|
22432
22873
|
}
|
|
22433
22874
|
],
|
|
22434
|
-
version: "11.
|
|
22875
|
+
version: "11.8.0"
|
|
22435
22876
|
},
|
|
22436
22877
|
{
|
|
22437
22878
|
id: "press-repeat",
|
|
@@ -22468,7 +22909,7 @@ placeholder="Name or address\u2026"
|
|
|
22468
22909
|
description: "End a hold without firing `onRelease` \u2014 for `Escape` and `pointercancel`."
|
|
22469
22910
|
}
|
|
22470
22911
|
],
|
|
22471
|
-
version: "11.
|
|
22912
|
+
version: "11.8.0"
|
|
22472
22913
|
},
|
|
22473
22914
|
{
|
|
22474
22915
|
id: "create-press-repeat",
|
|
@@ -22480,7 +22921,7 @@ placeholder="Name or address\u2026"
|
|
|
22480
22921
|
summary: "",
|
|
22481
22922
|
description: "",
|
|
22482
22923
|
members: [],
|
|
22483
|
-
version: "11.
|
|
22924
|
+
version: "11.8.0"
|
|
22484
22925
|
},
|
|
22485
22926
|
{
|
|
22486
22927
|
id: "listbox-navigation-config",
|
|
@@ -22523,7 +22964,7 @@ placeholder="Name or address\u2026"
|
|
|
22523
22964
|
description: "Let Home/End jump to the ends of the list. Default false. In an editable combobox those keys belong to the caret \u2014 APG reserves them for text editing, and a control that steals them makes the text un-navigable while its list is open. Opt in only where focus is *not* in a text field (uni-multi-select-dropdown, whose focus rides the option checkboxes). Nothing is lost by leaving it off: opening with ArrowUp already lands on the last option, ArrowDown on the first, and navigation wraps at both ends."
|
|
22524
22965
|
}
|
|
22525
22966
|
],
|
|
22526
|
-
version: "11.
|
|
22967
|
+
version: "11.8.0"
|
|
22527
22968
|
},
|
|
22528
22969
|
{
|
|
22529
22970
|
id: "listbox-navigation",
|
|
@@ -22596,7 +23037,7 @@ placeholder="Name or address\u2026"
|
|
|
22596
23037
|
description: "Close when focus leaves the control entirely (not on internal moves)."
|
|
22597
23038
|
}
|
|
22598
23039
|
],
|
|
22599
|
-
version: "11.
|
|
23040
|
+
version: "11.8.0"
|
|
22600
23041
|
},
|
|
22601
23042
|
{
|
|
22602
23043
|
id: "create-listbox-navigation",
|
|
@@ -22608,7 +23049,7 @@ placeholder="Name or address\u2026"
|
|
|
22608
23049
|
summary: "Factory mirroring the signal-API style used elsewhere in the CDK.",
|
|
22609
23050
|
description: "Factory mirroring the signal-API style used elsewhere in the CDK.",
|
|
22610
23051
|
members: [],
|
|
22611
|
-
version: "11.
|
|
23052
|
+
version: "11.8.0"
|
|
22612
23053
|
},
|
|
22613
23054
|
{
|
|
22614
23055
|
id: "placement",
|
|
@@ -22620,7 +23061,7 @@ placeholder="Name or address\u2026"
|
|
|
22620
23061
|
summary: "Native CSS Anchor Positioning helpers (Baseline 2026).",
|
|
22621
23062
|
description: "Native CSS Anchor Positioning helpers (Baseline 2026). These replace the former",
|
|
22622
23063
|
members: [],
|
|
22623
|
-
version: "11.
|
|
23064
|
+
version: "11.8.0"
|
|
22624
23065
|
},
|
|
22625
23066
|
{
|
|
22626
23067
|
id: "anchor-offset",
|
|
@@ -22645,7 +23086,7 @@ placeholder="Name or address\u2026"
|
|
|
22645
23086
|
description: "Shift along the cross axis, from the aligned edge."
|
|
22646
23087
|
}
|
|
22647
23088
|
],
|
|
22648
|
-
version: "11.
|
|
23089
|
+
version: "11.8.0"
|
|
22649
23090
|
},
|
|
22650
23091
|
{
|
|
22651
23092
|
id: "new-anchor-name",
|
|
@@ -22657,7 +23098,7 @@ placeholder="Name or address\u2026"
|
|
|
22657
23098
|
summary: "Returns a document-unique dashed-ident usable as a CSS `anchor-name`.",
|
|
22658
23099
|
description: "Returns a document-unique dashed-ident usable as a CSS `anchor-name`.",
|
|
22659
23100
|
members: [],
|
|
22660
|
-
version: "11.
|
|
23101
|
+
version: "11.8.0"
|
|
22661
23102
|
},
|
|
22662
23103
|
{
|
|
22663
23104
|
id: "anchor-styles",
|
|
@@ -22669,7 +23110,7 @@ placeholder="Name or address\u2026"
|
|
|
22669
23110
|
summary: "Emotion style object anchoring a panel to `anchor` at `placement`.",
|
|
22670
23111
|
description: "Emotion style object anchoring a panel to `anchor` at `placement`. Spread into the panel's `css()` styles. The trigger element must carry `anchor-name: <anchor>` (see `newAnchorName`).",
|
|
22671
23112
|
members: [],
|
|
22672
|
-
version: "11.
|
|
23113
|
+
version: "11.8.0"
|
|
22673
23114
|
},
|
|
22674
23115
|
{
|
|
22675
23116
|
id: "anchor-arrow-styles",
|
|
@@ -22681,7 +23122,7 @@ placeholder="Name or address\u2026"
|
|
|
22681
23122
|
summary: "Absolute positioning for a rotated-square arrow sitting on the panel edge that faces the anchor.",
|
|
22682
23123
|
description: "Absolute positioning for a rotated-square arrow sitting on the panel edge that faces the anchor. Static per placement: if the browser flips the panel via position-try, the arrow stays on the configured side (cosmetic-only degradation, matching the flip-support caveat above). `overlap` (default 0 \u2014 cut exactly on the panel edge) extends the kept half into the panel; see for when that is ever wanted.",
|
|
22683
23124
|
members: [],
|
|
22684
|
-
version: "11.
|
|
23125
|
+
version: "11.8.0"
|
|
22685
23126
|
},
|
|
22686
23127
|
{
|
|
22687
23128
|
id: "spotlight-options",
|
|
@@ -22712,7 +23153,7 @@ placeholder="Name or address\u2026"
|
|
|
22712
23153
|
description: "Scrim paint; scheme-invariant by convention, like `::backdrop`."
|
|
22713
23154
|
}
|
|
22714
23155
|
],
|
|
22715
|
-
version: "11.
|
|
23156
|
+
version: "11.8.0"
|
|
22716
23157
|
},
|
|
22717
23158
|
{
|
|
22718
23159
|
id: "spotlight-styles",
|
|
@@ -22743,7 +23184,7 @@ placeholder="Name or address\u2026"
|
|
|
22743
23184
|
description: "Hole-sized click-blocker, shown when the target must not be interactive."
|
|
22744
23185
|
}
|
|
22745
23186
|
],
|
|
22746
|
-
version: "11.
|
|
23187
|
+
version: "11.8.0"
|
|
22747
23188
|
},
|
|
22748
23189
|
{
|
|
22749
23190
|
id: "anchor-rect",
|
|
@@ -22792,7 +23233,7 @@ placeholder="Name or address\u2026"
|
|
|
22792
23233
|
description: ""
|
|
22793
23234
|
}
|
|
22794
23235
|
],
|
|
22795
|
-
version: "11.
|
|
23236
|
+
version: "11.8.0"
|
|
22796
23237
|
},
|
|
22797
23238
|
{
|
|
22798
23239
|
id: "transform-origin-for",
|
|
@@ -22804,7 +23245,7 @@ placeholder="Name or address\u2026"
|
|
|
22804
23245
|
summary: "Transform origin for a panel's open/close scale animation, derived from where the panel **actually** rendered relative to its anchor \u2014 not from the requested placement.",
|
|
22805
23246
|
description: "Transform origin for a panel's open/close scale animation, derived from where the panel **actually** rendered relative to its anchor \u2014 not from the requested placement. `position-try-fallbacks` lets the browser flip a panel at viewport edges, and a statically mapped origin then animates from the wrong corner (a `bottom-end` picker flipped above its field would still scale from `top right`). Measure after the popover is shown and apply the result as an inline style. Returns keyword pairs like `'top right'` / `'bottom center'`, or `null` when the panel has no box yet (e.g. `display: none`, or jsdom).",
|
|
22806
23247
|
members: [],
|
|
22807
|
-
version: "11.
|
|
23248
|
+
version: "11.8.0"
|
|
22808
23249
|
},
|
|
22809
23250
|
{
|
|
22810
23251
|
id: "transform-origins",
|
|
@@ -22816,7 +23257,7 @@ placeholder="Name or address\u2026"
|
|
|
22816
23257
|
summary: "Placement \u2192 `transform-origin`, so scale animations grow from the anchor.",
|
|
22817
23258
|
description: "Placement \u2192 `transform-origin`, so scale animations grow from the anchor.",
|
|
22818
23259
|
members: [],
|
|
22819
|
-
version: "11.
|
|
23260
|
+
version: "11.8.0"
|
|
22820
23261
|
},
|
|
22821
23262
|
{
|
|
22822
23263
|
id: "set-anchor-name",
|
|
@@ -22828,7 +23269,7 @@ placeholder="Name or address\u2026"
|
|
|
22828
23269
|
summary: "Write a CSS `anchor-name` onto an element (detached anchors and targets).",
|
|
22829
23270
|
description: "Write a CSS `anchor-name` onto an element (detached anchors and targets).",
|
|
22830
23271
|
members: [],
|
|
22831
|
-
version: "11.
|
|
23272
|
+
version: "11.8.0"
|
|
22832
23273
|
},
|
|
22833
23274
|
{
|
|
22834
23275
|
id: "clear-anchor-name",
|
|
@@ -22840,7 +23281,7 @@ placeholder="Name or address\u2026"
|
|
|
22840
23281
|
summary: "",
|
|
22841
23282
|
description: "",
|
|
22842
23283
|
members: [],
|
|
22843
|
-
version: "11.
|
|
23284
|
+
version: "11.8.0"
|
|
22844
23285
|
},
|
|
22845
23286
|
{
|
|
22846
23287
|
id: "resolve-element",
|
|
@@ -22852,7 +23293,7 @@ placeholder="Name or address\u2026"
|
|
|
22852
23293
|
summary: "Resolve an element-or-id reference.",
|
|
22853
23294
|
description: "Resolve an element-or-id reference. Id strings are looked up at call time \u2014 never cache the result across opens, the element may have been re-rendered. `''` and null-ish mean \"unset\" (falsy guard: an empty string is the only typeable empty for a string-typed input).",
|
|
22854
23295
|
members: [],
|
|
22855
|
-
version: "11.
|
|
23296
|
+
version: "11.8.0"
|
|
22856
23297
|
},
|
|
22857
23298
|
{
|
|
22858
23299
|
id: "is-toggle-open",
|
|
@@ -22864,7 +23305,7 @@ placeholder="Name or address\u2026"
|
|
|
22864
23305
|
summary: "True when a native `toggle` event reports the overlay opening.",
|
|
22865
23306
|
description: "True when a native `toggle` event reports the overlay opening.",
|
|
22866
23307
|
members: [],
|
|
22867
|
-
version: "11.
|
|
23308
|
+
version: "11.8.0"
|
|
22868
23309
|
},
|
|
22869
23310
|
{
|
|
22870
23311
|
id: "discrete-overlay-transition",
|
|
@@ -22876,7 +23317,7 @@ placeholder="Name or address\u2026"
|
|
|
22876
23317
|
summary: "The discrete-transition block that animates an element into and out of the top layer: `transition-behavior: allow-discrete` over the `hidden` keys plus `display`/`overlay`, the shown state under `:popover-open`, and `@starting-style` so entry transitions run from the hidden state.",
|
|
22877
23318
|
description: "The discrete-transition block that animates an element into and out of the top layer: `transition-behavior: allow-discrete` over the `hidden` keys plus `display`/`overlay`, the shown state under `:popover-open`, and `@starting-style` so entry transitions run from the hidden state. `display` and `overlay` must ride along or the element cannot animate into and out of the top layer at all \u2014 it would simply appear and vanish. `timingFunction` is omitted from the output when not given, leaving the CSS initial value (`ease`), so callers that never asked for one are unaffected.",
|
|
22878
23319
|
members: [],
|
|
22879
|
-
version: "11.
|
|
23320
|
+
version: "11.8.0"
|
|
22880
23321
|
},
|
|
22881
23322
|
{
|
|
22882
23323
|
id: "restore-overlay-focus",
|
|
@@ -22888,7 +23329,7 @@ placeholder="Name or address\u2026"
|
|
|
22888
23329
|
summary: "Returns focus to `target` when an overlay closes while focus was inside its panel (or was dropped on `<body>` by the top layer closing), so keyboard users are never stranded (WCAG 2.4.3).",
|
|
22889
23330
|
description: "Returns focus to `target` when an overlay closes while focus was inside its panel (or was dropped on `<body>` by the top layer closing), so keyboard users are never stranded (WCAG 2.4.3). Focus resting anywhere else is left alone.",
|
|
22890
23331
|
members: [],
|
|
22891
|
-
version: "11.
|
|
23332
|
+
version: "11.8.0"
|
|
22892
23333
|
},
|
|
22893
23334
|
{
|
|
22894
23335
|
id: "focusable-elements",
|
|
@@ -22900,7 +23341,7 @@ placeholder="Name or address\u2026"
|
|
|
22900
23341
|
summary: "The focusable elements inside `root`, in DOM order.",
|
|
22901
23342
|
description: "The focusable elements inside `root`, in DOM order. Filters disabled controls, and hidden ones where the environment can tell: jsdom reports `offsetParent` as null for every element, so the visibility filter applies only when the document actually lays out (some element has an offsetParent).",
|
|
22902
23343
|
members: [],
|
|
22903
|
-
version: "11.
|
|
23344
|
+
version: "11.8.0"
|
|
22904
23345
|
},
|
|
22905
23346
|
{
|
|
22906
23347
|
id: "backdrop-dismiss",
|
|
@@ -22925,7 +23366,7 @@ placeholder="Name or address\u2026"
|
|
|
22925
23366
|
description: "True only when both the press and the click landed on the dialog itself."
|
|
22926
23367
|
}
|
|
22927
23368
|
],
|
|
22928
|
-
version: "11.
|
|
23369
|
+
version: "11.8.0"
|
|
22929
23370
|
},
|
|
22930
23371
|
{
|
|
22931
23372
|
id: "sort-direction",
|
|
@@ -22937,7 +23378,7 @@ placeholder="Name or address\u2026"
|
|
|
22937
23378
|
summary: "",
|
|
22938
23379
|
description: "",
|
|
22939
23380
|
members: [],
|
|
22940
|
-
version: "11.
|
|
23381
|
+
version: "11.8.0"
|
|
22941
23382
|
},
|
|
22942
23383
|
{
|
|
22943
23384
|
id: "sort",
|
|
@@ -22962,7 +23403,7 @@ placeholder="Name or address\u2026"
|
|
|
22962
23403
|
description: ""
|
|
22963
23404
|
}
|
|
22964
23405
|
],
|
|
22965
|
-
version: "11.
|
|
23406
|
+
version: "11.8.0"
|
|
22966
23407
|
},
|
|
22967
23408
|
{
|
|
22968
23409
|
id: "uni-base-datasource",
|
|
@@ -23131,7 +23572,7 @@ placeholder="Name or address\u2026"
|
|
|
23131
23572
|
description: ""
|
|
23132
23573
|
}
|
|
23133
23574
|
],
|
|
23134
|
-
version: "11.
|
|
23575
|
+
version: "11.8.0"
|
|
23135
23576
|
},
|
|
23136
23577
|
{
|
|
23137
23578
|
id: "page-request",
|
|
@@ -23174,7 +23615,7 @@ placeholder="Name or address\u2026"
|
|
|
23174
23615
|
description: ""
|
|
23175
23616
|
}
|
|
23176
23617
|
],
|
|
23177
|
-
version: "11.
|
|
23618
|
+
version: "11.8.0"
|
|
23178
23619
|
},
|
|
23179
23620
|
{
|
|
23180
23621
|
id: "page-response",
|
|
@@ -23211,7 +23652,7 @@ placeholder="Name or address\u2026"
|
|
|
23211
23652
|
description: ""
|
|
23212
23653
|
}
|
|
23213
23654
|
],
|
|
23214
|
-
version: "11.
|
|
23655
|
+
version: "11.8.0"
|
|
23215
23656
|
},
|
|
23216
23657
|
{
|
|
23217
23658
|
id: "data-loader",
|
|
@@ -23223,7 +23664,7 @@ placeholder="Name or address\u2026"
|
|
|
23223
23664
|
summary: "",
|
|
23224
23665
|
description: "",
|
|
23225
23666
|
members: [],
|
|
23226
|
-
version: "11.
|
|
23667
|
+
version: "11.8.0"
|
|
23227
23668
|
},
|
|
23228
23669
|
{
|
|
23229
23670
|
id: "uni-server-side-datasource",
|
|
@@ -23362,7 +23803,7 @@ placeholder="Name or address\u2026"
|
|
|
23362
23803
|
description: ""
|
|
23363
23804
|
}
|
|
23364
23805
|
],
|
|
23365
|
-
version: "11.
|
|
23806
|
+
version: "11.8.0"
|
|
23366
23807
|
},
|
|
23367
23808
|
{
|
|
23368
23809
|
id: "uni-datasource",
|
|
@@ -23374,7 +23815,7 @@ placeholder="Name or address\u2026"
|
|
|
23374
23815
|
summary: "",
|
|
23375
23816
|
description: "",
|
|
23376
23817
|
members: [],
|
|
23377
|
-
version: "11.
|
|
23818
|
+
version: "11.8.0"
|
|
23378
23819
|
},
|
|
23379
23820
|
{
|
|
23380
23821
|
id: "uni-record-datasource",
|
|
@@ -23483,7 +23924,7 @@ placeholder="Name or address\u2026"
|
|
|
23483
23924
|
description: ""
|
|
23484
23925
|
}
|
|
23485
23926
|
],
|
|
23486
|
-
version: "11.
|
|
23927
|
+
version: "11.8.0"
|
|
23487
23928
|
},
|
|
23488
23929
|
{
|
|
23489
23930
|
id: "local-storage-service",
|
|
@@ -23538,7 +23979,7 @@ placeholder="Name or address\u2026"
|
|
|
23538
23979
|
description: ""
|
|
23539
23980
|
}
|
|
23540
23981
|
],
|
|
23541
|
-
version: "11.
|
|
23982
|
+
version: "11.8.0"
|
|
23542
23983
|
},
|
|
23543
23984
|
{
|
|
23544
23985
|
id: "alert",
|
|
@@ -23593,7 +24034,7 @@ placeholder="Name or address\u2026"
|
|
|
23593
24034
|
description: ""
|
|
23594
24035
|
}
|
|
23595
24036
|
],
|
|
23596
|
-
version: "11.
|
|
24037
|
+
version: "11.8.0"
|
|
23597
24038
|
},
|
|
23598
24039
|
{
|
|
23599
24040
|
id: "snackbar",
|
|
@@ -23648,7 +24089,7 @@ placeholder="Name or address\u2026"
|
|
|
23648
24089
|
description: ""
|
|
23649
24090
|
}
|
|
23650
24091
|
],
|
|
23651
|
-
version: "11.
|
|
24092
|
+
version: "11.8.0"
|
|
23652
24093
|
},
|
|
23653
24094
|
{
|
|
23654
24095
|
id: "confirmation",
|
|
@@ -23697,7 +24138,7 @@ placeholder="Name or address\u2026"
|
|
|
23697
24138
|
description: ""
|
|
23698
24139
|
}
|
|
23699
24140
|
],
|
|
23700
|
-
version: "11.
|
|
24141
|
+
version: "11.8.0"
|
|
23701
24142
|
},
|
|
23702
24143
|
{
|
|
23703
24144
|
id: "notification-service",
|
|
@@ -23764,7 +24205,7 @@ placeholder="Name or address\u2026"
|
|
|
23764
24205
|
description: ""
|
|
23765
24206
|
}
|
|
23766
24207
|
],
|
|
23767
|
-
version: "11.
|
|
24208
|
+
version: "11.8.0"
|
|
23768
24209
|
},
|
|
23769
24210
|
{
|
|
23770
24211
|
id: "option",
|
|
@@ -23801,7 +24242,7 @@ placeholder="Name or address\u2026"
|
|
|
23801
24242
|
description: "Visible and announced, but not committable; listbox navigation skips it."
|
|
23802
24243
|
}
|
|
23803
24244
|
],
|
|
23804
|
-
version: "11.
|
|
24245
|
+
version: "11.8.0"
|
|
23805
24246
|
},
|
|
23806
24247
|
{
|
|
23807
24248
|
id: "options",
|
|
@@ -23813,7 +24254,7 @@ placeholder="Name or address\u2026"
|
|
|
23813
24254
|
summary: "",
|
|
23814
24255
|
description: "",
|
|
23815
24256
|
members: [],
|
|
23816
|
-
version: "11.
|
|
24257
|
+
version: "11.8.0"
|
|
23817
24258
|
},
|
|
23818
24259
|
{
|
|
23819
24260
|
id: "use-timer",
|
|
@@ -23825,7 +24266,7 @@ placeholder="Name or address\u2026"
|
|
|
23825
24266
|
summary: "",
|
|
23826
24267
|
description: "",
|
|
23827
24268
|
members: [],
|
|
23828
|
-
version: "11.
|
|
24269
|
+
version: "11.8.0"
|
|
23829
24270
|
},
|
|
23830
24271
|
{
|
|
23831
24272
|
id: "acceptable-file",
|
|
@@ -23837,7 +24278,7 @@ placeholder="Name or address\u2026"
|
|
|
23837
24278
|
summary: "",
|
|
23838
24279
|
description: "",
|
|
23839
24280
|
members: [],
|
|
23840
|
-
version: "11.
|
|
24281
|
+
version: "11.8.0"
|
|
23841
24282
|
},
|
|
23842
24283
|
{
|
|
23843
24284
|
id: "get-file-extension",
|
|
@@ -23849,7 +24290,7 @@ placeholder="Name or address\u2026"
|
|
|
23849
24290
|
summary: "",
|
|
23850
24291
|
description: "",
|
|
23851
24292
|
members: [],
|
|
23852
|
-
version: "11.
|
|
24293
|
+
version: "11.8.0"
|
|
23853
24294
|
},
|
|
23854
24295
|
{
|
|
23855
24296
|
id: "query-permission",
|
|
@@ -23861,7 +24302,7 @@ placeholder="Name or address\u2026"
|
|
|
23861
24302
|
summary: "The current state of a browser permission.",
|
|
23862
24303
|
description: 'The current state of a browser permission. Resolves `unsupported` \u2014 never rejects \u2014 where the Permissions API is missing or does not know the name, which is the norm rather than the exception: Firefox and Safari reject `clipboard-write`, for one. Treat `unsupported` as "can\'t tell", not "no".',
|
|
23863
24304
|
members: [],
|
|
23864
|
-
version: "11.
|
|
24305
|
+
version: "11.8.0"
|
|
23865
24306
|
},
|
|
23866
24307
|
{
|
|
23867
24308
|
id: "permission-service",
|
|
@@ -23886,7 +24327,7 @@ placeholder="Name or address\u2026"
|
|
|
23886
24327
|
description: ""
|
|
23887
24328
|
}
|
|
23888
24329
|
],
|
|
23889
|
-
version: "11.
|
|
24330
|
+
version: "11.8.0"
|
|
23890
24331
|
},
|
|
23891
24332
|
{
|
|
23892
24333
|
id: "permission",
|
|
@@ -23898,7 +24339,7 @@ placeholder="Name or address\u2026"
|
|
|
23898
24339
|
summary: "",
|
|
23899
24340
|
description: "",
|
|
23900
24341
|
members: [],
|
|
23901
|
-
version: "11.
|
|
24342
|
+
version: "11.8.0"
|
|
23902
24343
|
},
|
|
23903
24344
|
{
|
|
23904
24345
|
id: "permission-state",
|
|
@@ -23910,7 +24351,7 @@ placeholder="Name or address\u2026"
|
|
|
23910
24351
|
summary: "",
|
|
23911
24352
|
description: "",
|
|
23912
24353
|
members: [],
|
|
23913
|
-
version: "11.
|
|
24354
|
+
version: "11.8.0"
|
|
23914
24355
|
},
|
|
23915
24356
|
{
|
|
23916
24357
|
id: "clipboard-copy-result",
|
|
@@ -23922,7 +24363,7 @@ placeholder="Name or address\u2026"
|
|
|
23922
24363
|
summary: "How a copy ended: - `copied` \u2014 the content is on the clipboard.",
|
|
23923
24364
|
description: "How a copy ended: - `copied` \u2014 the content is on the clipboard. - `denied` \u2014 the user or a policy has blocked clipboard access for this site; only a change in the browser's site settings will fix it. - `unsupported` \u2014 no Clipboard API here (an insecure context, a server render, an old browser) or the browser cannot write one of the types. - `failed` \u2014 the browser refused this attempt for another reason, most often a call made outside a user gesture or from an unfocused document.",
|
|
23924
24365
|
members: [],
|
|
23925
|
-
version: "11.
|
|
24366
|
+
version: "11.8.0"
|
|
23926
24367
|
},
|
|
23927
24368
|
{
|
|
23928
24369
|
id: "clipboard-data",
|
|
@@ -23934,7 +24375,7 @@ placeholder="Name or address\u2026"
|
|
|
23934
24375
|
summary: "One clipboard representation; a promise lets the data arrive after the gesture.",
|
|
23935
24376
|
description: "One clipboard representation; a promise lets the data arrive after the gesture.",
|
|
23936
24377
|
members: [],
|
|
23937
|
-
version: "11.
|
|
24378
|
+
version: "11.8.0"
|
|
23938
24379
|
},
|
|
23939
24380
|
{
|
|
23940
24381
|
id: "clipboard-content",
|
|
@@ -23946,7 +24387,7 @@ placeholder="Name or address\u2026"
|
|
|
23946
24387
|
summary: "What to copy: a plain string, or one item in several representations keyed by MIME type \u2014 `{ 'text/plain': \u2026, 'text/html': \u2026 }`, `{ 'image/png': blob }`.",
|
|
23947
24388
|
description: "What to copy: a plain string, or one item in several representations keyed by MIME type \u2014 `{ 'text/plain': \u2026, 'text/html': \u2026 }`, `{ 'image/png': blob }`.",
|
|
23948
24389
|
members: [],
|
|
23949
|
-
version: "11.
|
|
24390
|
+
version: "11.8.0"
|
|
23950
24391
|
},
|
|
23951
24392
|
{
|
|
23952
24393
|
id: "copy-to-clipboard",
|
|
@@ -23958,7 +24399,7 @@ placeholder="Name or address\u2026"
|
|
|
23958
24399
|
summary: "Copies text or rich content with the Async Clipboard API.",
|
|
23959
24400
|
description: "Copies text or rich content with the Async Clipboard API. Never rejects: the result says what happened, so a caller can tell the user why. Call it directly from the click or key handler. The write starts synchronously, before anything is awaited, because browsers only honor it inside the user gesture \u2014 which is also why the `clipboard-write` permission is consulted after a refusal, to explain it, rather than before the attempt. For content that has to be fetched or rendered first, pass a promise as the value instead of awaiting it yourself.",
|
|
23960
24401
|
members: [],
|
|
23961
|
-
version: "11.
|
|
24402
|
+
version: "11.8.0"
|
|
23962
24403
|
}
|
|
23963
24404
|
],
|
|
23964
24405
|
utilityDocs: [
|
|
@@ -25396,6 +25837,7 @@ var buildComponents = (c) => ({
|
|
|
25396
25837
|
padding: "sm",
|
|
25397
25838
|
bodyPadding: void 0,
|
|
25398
25839
|
inset: "lg",
|
|
25840
|
+
overscroll: "contain",
|
|
25399
25841
|
elevation: "dialog",
|
|
25400
25842
|
backdrop: "scrim",
|
|
25401
25843
|
motion: "panel"
|
|
@@ -25420,7 +25862,9 @@ var buildComponents = (c) => ({
|
|
|
25420
25862
|
textAlign: "center",
|
|
25421
25863
|
divider: void 0,
|
|
25422
25864
|
closeButtonIcon: "close",
|
|
25423
|
-
closeButtonSize: "md"
|
|
25865
|
+
closeButtonSize: "md",
|
|
25866
|
+
richColor: void 0,
|
|
25867
|
+
richPadding: "md"
|
|
25424
25868
|
} },
|
|
25425
25869
|
select: { options: {
|
|
25426
25870
|
toggleIcon: "chevronDown",
|
|
@@ -25496,7 +25940,12 @@ var buildComponents = (c) => ({
|
|
|
25496
25940
|
tooltipCloseDelay: 150,
|
|
25497
25941
|
motion: "panel"
|
|
25498
25942
|
} },
|
|
25499
|
-
expand: { options: {
|
|
25943
|
+
expand: { options: {
|
|
25944
|
+
motion: "reveal",
|
|
25945
|
+
textRole: "label",
|
|
25946
|
+
sublabelRole: "caption",
|
|
25947
|
+
sublabelColor: "on-background-variant"
|
|
25948
|
+
} },
|
|
25500
25949
|
input: { options: {
|
|
25501
25950
|
typeface: "input",
|
|
25502
25951
|
color: "primary-surface",
|
|
@@ -25686,7 +26135,8 @@ var buildComponents = (c) => ({
|
|
|
25686
26135
|
avatarVariant: "primary",
|
|
25687
26136
|
nameTypeface: "body-2-short",
|
|
25688
26137
|
detailTypeface: "caption",
|
|
25689
|
-
rowGap: "sm"
|
|
26138
|
+
rowGap: "sm",
|
|
26139
|
+
chipAvatar: true
|
|
25690
26140
|
} },
|
|
25691
26141
|
calendar: {
|
|
25692
26142
|
options: {
|
|
@@ -26013,6 +26463,7 @@ var buildComponents = (c) => ({
|
|
|
26013
26463
|
thVerticalBorder: "dotted",
|
|
26014
26464
|
thHorizontalBorder: "light",
|
|
26015
26465
|
thPadding: "sm",
|
|
26466
|
+
sortIcon: "arrowUp",
|
|
26016
26467
|
tdTextRole: "title-small",
|
|
26017
26468
|
tdColor: "primary-surface",
|
|
26018
26469
|
tdStickyColor: "primary-container",
|
|
@@ -26024,10 +26475,18 @@ var buildComponents = (c) => ({
|
|
|
26024
26475
|
loadingSpinnerColor: "primary",
|
|
26025
26476
|
loadingSpinnerSize: 40
|
|
26026
26477
|
} },
|
|
26027
|
-
notificationBadge: {
|
|
26028
|
-
|
|
26029
|
-
|
|
26030
|
-
|
|
26478
|
+
notificationBadge: {
|
|
26479
|
+
options: {
|
|
26480
|
+
borderRadius: "sm",
|
|
26481
|
+
offset: -10,
|
|
26482
|
+
typeface: "overline"
|
|
26483
|
+
},
|
|
26484
|
+
sizes: {
|
|
26485
|
+
sm: { height: 14 },
|
|
26486
|
+
md: { height: 16 },
|
|
26487
|
+
lg: { height: 20 }
|
|
26488
|
+
}
|
|
26489
|
+
},
|
|
26031
26490
|
paginator: { options: {
|
|
26032
26491
|
gap: "xs",
|
|
26033
26492
|
textRole: "label",
|
|
@@ -27582,4 +28041,4 @@ export {
|
|
|
27582
28041
|
buildStoredTheme,
|
|
27583
28042
|
createUniServer
|
|
27584
28043
|
};
|
|
27585
|
-
//# sourceMappingURL=chunk-
|
|
28044
|
+
//# sourceMappingURL=chunk-R4RLYWUY.js.map
|