@uni-design-system/uni-angular 7.3.0 → 8.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@uni-design-system/uni-angular",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "8.0.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"@angular/core": "^21.2.0",
|
|
23
23
|
"@angular/forms": "^21.2.0",
|
|
24
24
|
"@emotion/css": "^11.0.0",
|
|
25
|
-
"@uni-design-system/uni-core": "^
|
|
25
|
+
"@uni-design-system/uni-core": "^8.0.0"
|
|
26
26
|
},
|
|
27
27
|
"module": "fesm2022/uni-design-system-uni-angular.mjs",
|
|
28
28
|
"typings": "types/uni-design-system-uni-angular.d.ts",
|
|
@@ -644,6 +644,23 @@ var BaseIcons = {
|
|
|
644
644
|
logout: "data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 -960 960 960'%3e%3cpath d='M212.31-140Q182-140 161-161q-21-21-21-51.31v-535.38Q140-778 161-799q21-21 51.31-21h268.07v60H212.31q-4.62 0-8.46 3.85-3.85 3.84-3.85 8.46v535.38q0 4.62 3.85 8.46 3.84 3.85 8.46 3.85h268.07v60H212.31Zm436.92-169.23-41.54-43.39L705.08-450H363.85v-60h341.23l-97.39-97.38 41.54-43.39L820-480 649.23-309.23Z'/%3e%3c/svg%3e",
|
|
645
645
|
spinner: "data:image/svg+xml;charset=UTF-8,%3csvg stroke='%23000' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg' %3e%3cstyle%3e .oui_spinner %7b transform-origin: center; animation: rotate_360 2s linear infinite;%7d .oui_spinner circle %7b stroke-linecap: round; animation: dash 1.5s ease-in-out infinite;%7d %40keyframes rotate_360 %7b 100%25 %7b transform: rotate(360deg);%7d %7d %40keyframes dash %7b 0%25 %7b stroke-dasharray: 0 150; stroke-dashoffset: 0;%7d 47.5%25 %7b stroke-dasharray: 42 150; stroke-dashoffset: -16;%7d 95%25, 100%25 %7b stroke-dasharray: 42 150; stroke-dashoffset: -59;%7d %7d %3c/style%3e%3cg class='oui_spinner'%3e%3ccircle cx='12' cy='12' r='9.5' fill='none' stroke-width='3'%3e%3c/circle%3e%3c/g%3e%3c/svg%3e "
|
|
646
646
|
};
|
|
647
|
+
/**
|
|
648
|
+
* The highlight state for roving-focus composites (menus, and any other widget
|
|
649
|
+
* that moves focus programmatically): pointer hover, or focus the user drove
|
|
650
|
+
* from the keyboard.
|
|
651
|
+
*
|
|
652
|
+
* Why not plain `:focus` — a roving-focus composite calls `.focus()` on an item
|
|
653
|
+
* every time it opens, including pointer opens, and `:focus` would paint that
|
|
654
|
+
* as a highlight the mouse user never asked for, reading as a preselected
|
|
655
|
+
* item. `:focus-visible` excludes programmatic focus that follows a click while
|
|
656
|
+
* still matching keyboard navigation.
|
|
657
|
+
*
|
|
658
|
+
* Shared as a constant because Emotion merges styles by **exact selector
|
|
659
|
+
* text**: a component's base rule and any theme variant restyling that rule
|
|
660
|
+
* must key both with this value, or the variant silently fails to override and
|
|
661
|
+
* reintroduces the phantom highlight.
|
|
662
|
+
*/
|
|
663
|
+
var HOVER_OR_KEYBOARD_FOCUS = "&:hover, &:focus-visible";
|
|
647
664
|
var BaseTypography = {
|
|
648
665
|
"display-large": {
|
|
649
666
|
fontFamily: "Red Hat Display",
|
|
@@ -840,6 +857,25 @@ var buildBorders = (c) => ({
|
|
|
840
857
|
dark: `1px solid ${c["on-background"]}`,
|
|
841
858
|
dotted: `1px dotted ${c["on-background"]}`
|
|
842
859
|
});
|
|
860
|
+
/**
|
|
861
|
+
* One tag colour role across all three tones. `soft` is the resting look (the
|
|
862
|
+
* container pair), `solid` fills with the role itself, `outline` keeps the
|
|
863
|
+
* surface and draws the edge — so every role stays consistent and a theme can
|
|
864
|
+
* still override any single cell.
|
|
865
|
+
*/
|
|
866
|
+
var tagVariant = (c, role) => ({ [role]: {
|
|
867
|
+
backgroundColor: c[`${role}-container`],
|
|
868
|
+
color: c[`on-${role}-container`],
|
|
869
|
+
"&.tone-solid": {
|
|
870
|
+
backgroundColor: c[role],
|
|
871
|
+
color: c[`on-${role}`]
|
|
872
|
+
},
|
|
873
|
+
"&.tone-outline": {
|
|
874
|
+
backgroundColor: "transparent",
|
|
875
|
+
color: c[role],
|
|
876
|
+
borderColor: c[`on-${role}-container-border`] ?? c[role]
|
|
877
|
+
}
|
|
878
|
+
} });
|
|
843
879
|
var buildComponents = (c) => ({
|
|
844
880
|
alert: { options: {
|
|
845
881
|
topPosition: 40,
|
|
@@ -1010,7 +1046,7 @@ var buildComponents = (c) => ({
|
|
|
1010
1046
|
},
|
|
1011
1047
|
variants: { warn: {
|
|
1012
1048
|
color: c.warn,
|
|
1013
|
-
|
|
1049
|
+
[HOVER_OR_KEYBOARD_FOCUS]: {
|
|
1014
1050
|
backgroundColor: c["warn-container"],
|
|
1015
1051
|
color: c["on-warn-container"]
|
|
1016
1052
|
}
|
|
@@ -1064,6 +1100,79 @@ var buildComponents = (c) => ({
|
|
|
1064
1100
|
focusOutlineOffset: 2
|
|
1065
1101
|
} },
|
|
1066
1102
|
badge: { options: { borderRadius: "xxs" } },
|
|
1103
|
+
tag: {
|
|
1104
|
+
options: {
|
|
1105
|
+
borderRadius: "max",
|
|
1106
|
+
typeface: "tag",
|
|
1107
|
+
gap: "xs",
|
|
1108
|
+
removeIcon: "close",
|
|
1109
|
+
selectedIcon: "check"
|
|
1110
|
+
},
|
|
1111
|
+
fixed: {
|
|
1112
|
+
display: "inline-flex",
|
|
1113
|
+
alignItems: "center",
|
|
1114
|
+
maxWidth: "100%",
|
|
1115
|
+
border: "1px solid transparent",
|
|
1116
|
+
transition: "background-color .2s ease, color .2s ease"
|
|
1117
|
+
},
|
|
1118
|
+
variants: {
|
|
1119
|
+
...tagVariant(c, "primary"),
|
|
1120
|
+
...tagVariant(c, "secondary"),
|
|
1121
|
+
...tagVariant(c, "tertiary"),
|
|
1122
|
+
...tagVariant(c, "warn"),
|
|
1123
|
+
...tagVariant(c, "success"),
|
|
1124
|
+
ghost: {
|
|
1125
|
+
backgroundColor: "transparent",
|
|
1126
|
+
color: c["on-background"],
|
|
1127
|
+
"&.tone-solid": {
|
|
1128
|
+
backgroundColor: c["surface-variant"],
|
|
1129
|
+
color: c["on-surface-variant"]
|
|
1130
|
+
},
|
|
1131
|
+
"&.tone-outline": {
|
|
1132
|
+
backgroundColor: "transparent",
|
|
1133
|
+
borderColor: c.outline
|
|
1134
|
+
}
|
|
1135
|
+
},
|
|
1136
|
+
disabled: {
|
|
1137
|
+
backgroundColor: c["disabled-container"],
|
|
1138
|
+
color: c["on-disabled"],
|
|
1139
|
+
"&.tone-solid": {
|
|
1140
|
+
backgroundColor: c.disabled,
|
|
1141
|
+
color: c["on-disabled"]
|
|
1142
|
+
},
|
|
1143
|
+
"&.tone-outline": {
|
|
1144
|
+
backgroundColor: "transparent",
|
|
1145
|
+
borderColor: c.disabled
|
|
1146
|
+
}
|
|
1147
|
+
}
|
|
1148
|
+
},
|
|
1149
|
+
sizes: {
|
|
1150
|
+
sm: {
|
|
1151
|
+
height: 20,
|
|
1152
|
+
fontSize: 12,
|
|
1153
|
+
padding: "0 8px"
|
|
1154
|
+
},
|
|
1155
|
+
md: {
|
|
1156
|
+
height: 24,
|
|
1157
|
+
fontSize: 13,
|
|
1158
|
+
padding: "0 10px"
|
|
1159
|
+
},
|
|
1160
|
+
lg: {
|
|
1161
|
+
height: 32,
|
|
1162
|
+
fontSize: 15,
|
|
1163
|
+
padding: "0 12px"
|
|
1164
|
+
}
|
|
1165
|
+
}
|
|
1166
|
+
},
|
|
1167
|
+
tagInput: { options: {
|
|
1168
|
+
chipGap: "xs",
|
|
1169
|
+
chipSize: "md",
|
|
1170
|
+
minInputWidth: "12ch",
|
|
1171
|
+
listColor: "primary-surface",
|
|
1172
|
+
listShadow: "menu",
|
|
1173
|
+
listBorderRadius: "xs",
|
|
1174
|
+
maxSuggestions: 8
|
|
1175
|
+
} },
|
|
1067
1176
|
button: {
|
|
1068
1177
|
options: {
|
|
1069
1178
|
borderRadius: "max",
|
|
@@ -1367,11 +1476,11 @@ var buildComponents = (c) => ({
|
|
|
1367
1476
|
typeface: "label"
|
|
1368
1477
|
} }
|
|
1369
1478
|
});
|
|
1370
|
-
var isRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
|
|
1479
|
+
var isRecord$1 = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
|
|
1371
1480
|
var deepMerge = (base, override) => {
|
|
1372
1481
|
if (!override) return base;
|
|
1373
1482
|
const out = { ...base };
|
|
1374
|
-
for (const [key, value] of Object.entries(override)) out[key] = isRecord(value) && isRecord(out[key]) ? deepMerge(out[key], value) : value;
|
|
1483
|
+
for (const [key, value] of Object.entries(override)) out[key] = isRecord$1(value) && isRecord$1(out[key]) ? deepMerge(out[key], value) : value;
|
|
1375
1484
|
return out;
|
|
1376
1485
|
};
|
|
1377
1486
|
var createTheme = ({ id, name, colors, icons = {}, radii = BaseRadii, shadows = BaseShadows, borders, components }) => ({
|
|
@@ -1519,6 +1628,11 @@ var generateThemes = (input) => {
|
|
|
1519
1628
|
}
|
|
1520
1629
|
};
|
|
1521
1630
|
};
|
|
1631
|
+
/**
|
|
1632
|
+
* One-line human summary of a {@link ContrastReport}. Shared so the generated
|
|
1633
|
+
* theme file's header and the MCP's theme tools report identical wording.
|
|
1634
|
+
*/
|
|
1635
|
+
var summarizeContrast = (report) => `${report.checks.length} contrast pairs checked · worst ${report.worstRatio}:1 · ${report.pass ? "all AA" : `${report.checks.filter((check) => !check.pass).length} failing`}`;
|
|
1522
1636
|
var IDENT = /^[A-Za-z_$][A-Za-z0-9_$]*$/;
|
|
1523
1637
|
var asKey = (k) => IDENT.test(k) ? k : `'${k}'`;
|
|
1524
1638
|
var recordLiteral = (record, indent) => Object.entries(record).map(([k, v]) => `${indent}${asKey(k)}: '${v}',`).join("\n");
|
|
@@ -1573,7 +1687,7 @@ var emitThemeFile = (input) => {
|
|
|
1573
1687
|
input.shape && `--shape=${input.shape}`,
|
|
1574
1688
|
!darkMode && "--dark-mode=false"
|
|
1575
1689
|
].filter(Boolean).join(" ");
|
|
1576
|
-
const reportSummary =
|
|
1690
|
+
const reportSummary = summarizeContrast(report);
|
|
1577
1691
|
const modes = [{
|
|
1578
1692
|
exportName: `${id}Light`,
|
|
1579
1693
|
displayName: `${name} Light`,
|
|
@@ -1754,7 +1868,7 @@ var UniThemes = {
|
|
|
1754
1868
|
Object.keys(UniThemes)[0];
|
|
1755
1869
|
//#endregion
|
|
1756
1870
|
//#region package.json
|
|
1757
|
-
var version = "
|
|
1871
|
+
var version = "8.0.0";
|
|
1758
1872
|
//#endregion
|
|
1759
1873
|
//#region schematics-src/ng-add/transforms.ts
|
|
1760
1874
|
var addDependencies = (packageJsonText, deps) => {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
2
|
import { Signal, WritableSignal, InjectionToken, ElementRef, TemplateRef, OnInit, OnDestroy, AfterViewInit } from '@angular/core';
|
|
3
3
|
import * as _uni_design_system_uni_core from '@uni-design-system/uni-core';
|
|
4
|
-
import { IconName, Variant, ContainerColorToken, PaletteConfig, GenerateColorsConfig, Radii, UniTheme, ComponentName, ComponentTheme, NullableSize, ThemeName, TextRole, ContentColorToken, Size, Thickness, NullableStyleExpression, ColorKey, ColorToken, Typeface, Radius, OptionalSize, Border, Shadow, ZIndexableElements, Elevation, RadiiSize, TextColor, JustifyContent, StyleExpression, Orientation, CssLength, OptionalAlignSelf, OptionalAlignItems, OptionalAlignContent, OptionalJustifyContent, OptionalDisplay, OptionalPosition, OptionalOverflow, OptionalFlexDirection, OptionalTextAlign, OptionalWrap, ColorScheme, ColorCategory, ThemeShape, ContrastCheck, Colors, GenerationInput } from '@uni-design-system/uni-core';
|
|
4
|
+
import { IconName, Variant, ContainerColorToken, PaletteConfig, GenerateColorsConfig, Radii, UniTheme, ComponentName, ComponentTheme, NullableSize, ThemeName, ThemeParseResult, TextRole, ContentColorToken, Size, Thickness, NullableStyleExpression, ColorKey, ColorToken, Typeface, Radius, OptionalSize, Border, Shadow, ZIndexableElements, Elevation, RadiiSize, TextColor, JustifyContent, StyleExpression, Orientation, CssLength, OptionalAlignSelf, OptionalAlignItems, OptionalAlignContent, OptionalJustifyContent, OptionalDisplay, OptionalPosition, OptionalOverflow, OptionalFlexDirection, OptionalTextAlign, OptionalWrap, TagTone, ColorScheme, ColorCategory, ThemeShape, ContrastCheck, Colors, GenerationInput } from '@uni-design-system/uni-core';
|
|
5
5
|
import { FormCheckboxControl, FormValueControl } from '@angular/forms/signals';
|
|
6
6
|
import * as _uni_design_system_uni_angular from '@uni-design-system/uni-angular';
|
|
7
7
|
|
|
@@ -44,6 +44,64 @@ declare function motionSafe<T extends object>(styles: T): {
|
|
|
44
44
|
'@media (prefers-reduced-motion: no-preference)': T;
|
|
45
45
|
};
|
|
46
46
|
|
|
47
|
+
interface ListboxNavigationConfig {
|
|
48
|
+
/** How many options are currently navigable. Read reactively. */
|
|
49
|
+
count: () => number;
|
|
50
|
+
/** Id prefix for the listbox and its options. */
|
|
51
|
+
idPrefix?: string;
|
|
52
|
+
/** Wrap past the ends. Default true. */
|
|
53
|
+
wrap?: boolean;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* The keyboard and ARIA bookkeeping shared by every combobox-style popup:
|
|
57
|
+
* open state, the active option index, and the `aria-activedescendant` id
|
|
58
|
+
* wiring. Deliberately owns no markup and no filtering — each control renders
|
|
59
|
+
* its own options and decides what a suggestion *is*.
|
|
60
|
+
*
|
|
61
|
+
* Extracted because three controls need the identical contract
|
|
62
|
+
* (`uni-search-input`, `uni-tag-input`, and the multi-select upgrade), and the
|
|
63
|
+
* parts that silently drift between hand-rolled copies all live here: the
|
|
64
|
+
* wrap-around arithmetic, Home/End, and keeping the active id in sync with the
|
|
65
|
+
* option list.
|
|
66
|
+
*
|
|
67
|
+
* `Enter` and `Escape` are deliberately *not* handled: what they mean depends
|
|
68
|
+
* on the control (submit a search, commit a typed token, clear the field), and
|
|
69
|
+
* `activeIndex()` is all a caller needs to decide.
|
|
70
|
+
*/
|
|
71
|
+
declare class ListboxNavigation {
|
|
72
|
+
private readonly config;
|
|
73
|
+
/** Id for the `role="listbox"` element; wire as `aria-controls`. */
|
|
74
|
+
readonly listboxId: string;
|
|
75
|
+
private readonly _open;
|
|
76
|
+
private readonly _activeIndex;
|
|
77
|
+
private readonly wrap;
|
|
78
|
+
/** Whether the popup is showing. Also false when there is nothing to show. */
|
|
79
|
+
readonly open: Signal<boolean>;
|
|
80
|
+
/** Index of the highlighted option, or -1 when none is active. */
|
|
81
|
+
readonly activeIndex: Signal<number>;
|
|
82
|
+
/** Value for `aria-activedescendant`, or null when nothing is active. */
|
|
83
|
+
readonly activeDescendantId: Signal<string | null>;
|
|
84
|
+
constructor(config: ListboxNavigationConfig);
|
|
85
|
+
/** Stable per-option id, for `role="option"` elements. */
|
|
86
|
+
optionId(index: number): string;
|
|
87
|
+
show(): void;
|
|
88
|
+
/** Close and drop the active option, so reopening starts clean. */
|
|
89
|
+
hide(): void;
|
|
90
|
+
setActive(index: number): void;
|
|
91
|
+
/**
|
|
92
|
+
* Handle ArrowDown / ArrowUp / Home / End, opening the popup if needed.
|
|
93
|
+
* Returns true when the key was consumed, so a caller can fall through to
|
|
94
|
+
* its own handling for everything else.
|
|
95
|
+
*/
|
|
96
|
+
navigate(event: KeyboardEvent): boolean;
|
|
97
|
+
private nextIndex;
|
|
98
|
+
private step;
|
|
99
|
+
/** Close when focus leaves the control entirely (not on internal moves). */
|
|
100
|
+
closeOnFocusOut(event: FocusEvent): void;
|
|
101
|
+
}
|
|
102
|
+
/** Factory mirroring the signal-API style used elsewhere in the CDK. */
|
|
103
|
+
declare const createListboxNavigation: (config: ListboxNavigationConfig) => ListboxNavigation;
|
|
104
|
+
|
|
47
105
|
/**
|
|
48
106
|
* Native CSS Anchor Positioning helpers (Baseline 2026). These replace the
|
|
49
107
|
* former @floating-ui/dom dependency: the browser tracks the anchor natively
|
|
@@ -271,10 +329,19 @@ declare class ThemeService {
|
|
|
271
329
|
static readonly CUSTOM_KEY = "CustomTheme";
|
|
272
330
|
/** localStorage key holding the serialized brand palette config. */
|
|
273
331
|
static readonly PALETTE_KEY = "uni-custom-palette";
|
|
274
|
-
private themes;
|
|
275
332
|
private localStorage;
|
|
276
|
-
|
|
277
|
-
|
|
333
|
+
/**
|
|
334
|
+
* The live theme registry: the injected {@link UNI_THEMES} map (validated
|
|
335
|
+
* at construction) plus anything added via {@link registerTheme} — including
|
|
336
|
+
* the custom brand theme, which registers under {@link CUSTOM_KEY} so it is
|
|
337
|
+
* an ordinary, selectable entry.
|
|
338
|
+
*/
|
|
339
|
+
private readonly registry;
|
|
340
|
+
private readonly _theme;
|
|
341
|
+
/** The active theme. Write via {@link setTheme}/{@link selectTheme} — every write is validated. */
|
|
342
|
+
readonly theme: Signal<UniTheme>;
|
|
343
|
+
/** Selectable themes, derived from the registry — reactive to registration. */
|
|
344
|
+
readonly themeOptions: Signal<Options<string>>;
|
|
278
345
|
components: Signal<Partial<Record<ComponentName, ComponentTheme<object>>>>;
|
|
279
346
|
component: <T>(componentName: ComponentName) => Signal<ComponentTheme<T>>;
|
|
280
347
|
colors: Signal<Partial<Record<string, string>>>;
|
|
@@ -286,7 +353,37 @@ declare class ThemeService {
|
|
|
286
353
|
shadows: Signal<Partial<Record<string, string>>>;
|
|
287
354
|
icons: Signal<_uni_design_system_uni_core.Icons>;
|
|
288
355
|
constructor();
|
|
289
|
-
|
|
356
|
+
/**
|
|
357
|
+
* Activate a registered theme. Returns false — touching nothing, persisting
|
|
358
|
+
* nothing — when the name is unknown (previously this silently kept the old
|
|
359
|
+
* theme while still recording the bad key).
|
|
360
|
+
*/
|
|
361
|
+
selectTheme(themeName: ThemeName): boolean;
|
|
362
|
+
/**
|
|
363
|
+
* Validate and activate a theme without registering it. The result carries
|
|
364
|
+
* acceptance or the complete list of rejection reasons; on rejection the
|
|
365
|
+
* active theme is unchanged.
|
|
366
|
+
*/
|
|
367
|
+
setTheme(input: unknown): ThemeParseResult;
|
|
368
|
+
/**
|
|
369
|
+
* Validate and add a theme to the registry (keyed by its `id`), making it
|
|
370
|
+
* selectable and listed in {@link themeOptions}. On rejection the registry
|
|
371
|
+
* is unchanged and the result lists every reason.
|
|
372
|
+
*/
|
|
373
|
+
registerTheme(input: unknown, opts?: {
|
|
374
|
+
select?: boolean;
|
|
375
|
+
}): ThemeParseResult;
|
|
376
|
+
/**
|
|
377
|
+
* The gate every externally-supplied theme passes: validate, then restore
|
|
378
|
+
* any built-in icons the payload left out. Themes that travel as JSON (the
|
|
379
|
+
* MCP theme tools, a theme registry) omit the built-in icon set — it is
|
|
380
|
+
* ~71% of the bytes and every consumer already ships it — so hydration
|
|
381
|
+
* applies the same `{...BaseIcons, ...icons}` contract `createTheme` uses:
|
|
382
|
+
* the theme's own icons win, built-ins fill the rest.
|
|
383
|
+
*/
|
|
384
|
+
private accept;
|
|
385
|
+
/** Remove a registered theme; falls back to the first remaining theme if it was active. */
|
|
386
|
+
unregisterTheme(id: string): void;
|
|
290
387
|
/** The live brand palette config, when a custom theme is active. */
|
|
291
388
|
customPalette: _angular_core.WritableSignal<BrandPaletteConfig>;
|
|
292
389
|
isCustomTheme: Signal<boolean>;
|
|
@@ -296,7 +393,7 @@ declare class ThemeService {
|
|
|
296
393
|
* reload) renders with the same brand.
|
|
297
394
|
*/
|
|
298
395
|
applyPalette(config: BrandPaletteConfig, persist?: boolean): void;
|
|
299
|
-
/** Drop the custom brand theme and fall back to the first
|
|
396
|
+
/** Drop the custom brand theme and fall back to the first registered theme. */
|
|
300
397
|
clearCustomPalette(): void;
|
|
301
398
|
selectedThemeName: Signal<string>;
|
|
302
399
|
selectedThemeKey: _angular_core.WritableSignal<string>;
|
|
@@ -1608,20 +1705,49 @@ declare class UniMultiSelectDropdownComponent<T = unknown> extends BaseComponent
|
|
|
1608
1705
|
readonly ariaDescribedBy: _angular_core.InputSignal<string>;
|
|
1609
1706
|
readonly options: _angular_core.InputSignal<Options<T>>;
|
|
1610
1707
|
readonly placeholder: _angular_core.InputSignal<string>;
|
|
1708
|
+
/**
|
|
1709
|
+
* What the field is for, e.g. "Fruits". Rendered visually hidden inside the
|
|
1710
|
+
* trigger so its accessible name reads "Fruits, Apple, Pear" — without it a
|
|
1711
|
+
* screen reader announces only the current selection, with no clue which
|
|
1712
|
+
* field it belongs to.
|
|
1713
|
+
*/
|
|
1714
|
+
readonly label: _angular_core.InputSignal<string>;
|
|
1715
|
+
/** Debounce for the filter box, matching the library's input debounce. */
|
|
1716
|
+
readonly debounceTime: _angular_core.InputSignal<number>;
|
|
1717
|
+
protected readonly srOnly: string;
|
|
1611
1718
|
protected readonly query: _angular_core.WritableSignal<string>;
|
|
1719
|
+
private queryTimer?;
|
|
1612
1720
|
protected readonly filteredOptions: _angular_core.Signal<Options<T>>;
|
|
1721
|
+
private readonly optionRefs;
|
|
1722
|
+
/**
|
|
1723
|
+
* Roving focus over the options. The shared helper owns the index
|
|
1724
|
+
* arithmetic — wrapping, Home/End, and never pointing past a list the
|
|
1725
|
+
* filter has narrowed — the same contract `uni-search-input` and
|
|
1726
|
+
* `uni-tag-input` use, so the keys behave identically across all three.
|
|
1727
|
+
*/
|
|
1728
|
+
protected readonly list: _uni_design_system_uni_angular.ListboxNavigation;
|
|
1729
|
+
/** Announced with the selection so the count is not left to guesswork. */
|
|
1730
|
+
readonly selectionSummary: _angular_core.Signal<string>;
|
|
1613
1731
|
readonly selectedLabelsText: _angular_core.Signal<string>;
|
|
1614
1732
|
protected readonly showError: _angular_core.Signal<boolean>;
|
|
1615
1733
|
protected readonly textColor: _angular_core.Signal<_uni_design_system_uni_core.TextColor>;
|
|
1616
1734
|
triggerClass: string;
|
|
1617
1735
|
protected readonly searchInputClass: _angular_core.Signal<string>;
|
|
1618
1736
|
protected handleQueryInput(event: Event): void;
|
|
1737
|
+
/**
|
|
1738
|
+
* Arrow keys walk the options from anywhere in the panel, including the
|
|
1739
|
+
* filter box — previously the only way in was to Tab through every
|
|
1740
|
+
* checkbox.
|
|
1741
|
+
*/
|
|
1742
|
+
protected onPanelKeydown(event: KeyboardEvent): void;
|
|
1743
|
+
/** Keeps the active index in step when focus lands on a row by pointer. */
|
|
1744
|
+
protected onOptionFocus(index: number): void;
|
|
1619
1745
|
selectAll(): void;
|
|
1620
1746
|
deselectAll(): void;
|
|
1621
1747
|
protected isOptionSelected(option: Option<T>): _angular_core.Signal<boolean>;
|
|
1622
1748
|
toggleOption(option: Option<T>, checked: boolean): void;
|
|
1623
1749
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniMultiSelectDropdownComponent<any>, never>;
|
|
1624
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniMultiSelectDropdownComponent<any>, "uni-multi-select-dropdown", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "dirty": { "alias": "dirty"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "ariaDescribedBy": { "alias": "ariaDescribedBy"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": true; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "touched": "touchedChange"; }, never, never, true, never>;
|
|
1750
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniMultiSelectDropdownComponent<any>, "uni-multi-select-dropdown", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "dirty": { "alias": "dirty"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "ariaDescribedBy": { "alias": "ariaDescribedBy"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": true; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "debounceTime": { "alias": "debounceTime"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "touched": "touchedChange"; }, never, never, true, never>;
|
|
1625
1751
|
}
|
|
1626
1752
|
|
|
1627
1753
|
interface UniNotificationBadgeOptions {
|
|
@@ -1962,12 +2088,10 @@ declare class UniSearchInputComponent extends BaseComponent<UniSearchInputOption
|
|
|
1962
2088
|
search: _angular_core.OutputEmitterRef<string>;
|
|
1963
2089
|
suggestionSelected: _angular_core.OutputEmitterRef<string>;
|
|
1964
2090
|
protected readonly field: _angular_core.Signal<UniDebounceInputComponent>;
|
|
1965
|
-
readonly listboxId: string;
|
|
1966
|
-
protected readonly listOpen: _angular_core.WritableSignal<boolean>;
|
|
1967
|
-
protected readonly activeIndex: _angular_core.WritableSignal<number>;
|
|
1968
2091
|
protected readonly visibleSuggestions: _angular_core.Signal<string[]>;
|
|
1969
|
-
|
|
1970
|
-
protected readonly
|
|
2092
|
+
/** Shared combobox bookkeeping: open state, active option, ARIA ids. */
|
|
2093
|
+
protected readonly list: _uni_design_system_uni_angular.ListboxNavigation;
|
|
2094
|
+
readonly listboxId: string;
|
|
1971
2095
|
protected readonly hasQuery: _angular_core.Signal<boolean>;
|
|
1972
2096
|
protected handleChange(value: string): void;
|
|
1973
2097
|
protected submit(): void;
|
|
@@ -2298,13 +2422,217 @@ declare class UniSymbolComponent extends BaseComponent<SymbolOptions> {
|
|
|
2298
2422
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniSymbolComponent, "uni-symbol", never, { "name": { "alias": "name"; "required": true; "isSignal": true; }; "fill": { "alias": "fill"; "required": false; "isSignal": true; }; "weight": { "alias": "weight"; "required": false; "isSignal": true; }; "grade": { "alias": "grade"; "required": false; "isSignal": true; }; "opticalSize": { "alias": "opticalSize"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
2299
2423
|
}
|
|
2300
2424
|
|
|
2301
|
-
|
|
2425
|
+
/** Theme options for the `tag` component entry. */
|
|
2426
|
+
interface UniTagOptions {
|
|
2427
|
+
borderRadius?: Radius;
|
|
2428
|
+
typeface?: Typeface;
|
|
2429
|
+
/** Space between the lead element, label and remove button. */
|
|
2430
|
+
gap?: NullableSize;
|
|
2431
|
+
/** Icon primitive for the remove affordance. */
|
|
2432
|
+
removeIcon?: IconName;
|
|
2433
|
+
/** Icon primitive shown in the lead slot when the chip is selected. */
|
|
2434
|
+
selectedIcon?: IconName;
|
|
2435
|
+
}
|
|
2436
|
+
/** The value a tag echoes back on `removed` / `activated`. */
|
|
2437
|
+
type UniTagValue = string | number | undefined;
|
|
2438
|
+
|
|
2439
|
+
/**
|
|
2440
|
+
* Compact chip for categories, states, filters and tokens.
|
|
2441
|
+
*
|
|
2442
|
+
* Two orthogonal style axes: `variant` picks the colour role and `tone` picks
|
|
2443
|
+
* the archetype (soft / solid / outline). Both live in the theme's `tag` entry,
|
|
2444
|
+
* so a theme restyles every chip in the app without touching markup.
|
|
2445
|
+
*
|
|
2446
|
+
* Structurally a chip is **body + trailing action as siblings**, never nested
|
|
2447
|
+
* buttons: an interactive chip whose body is a `<button>` cannot contain the
|
|
2448
|
+
* remove `<button>` (invalid HTML, and the inner control becomes unreachable
|
|
2449
|
+
* for keyboard users). Both stay independently operable.
|
|
2450
|
+
*/
|
|
2451
|
+
declare class UniTagComponent extends BaseComponent<UniTagOptions> {
|
|
2452
|
+
size: _angular_core.InputSignal<Size>;
|
|
2453
|
+
tone: _angular_core.InputSignal<TagTone>;
|
|
2302
2454
|
label: _angular_core.InputSignal<string>;
|
|
2303
2455
|
value: _angular_core.InputSignal<string | number>;
|
|
2304
|
-
|
|
2305
|
-
|
|
2456
|
+
/** Truncation budget, e.g. `'14ch'`. A number is treated as px. */
|
|
2457
|
+
maxWidth: _angular_core.InputSignal<string | number>;
|
|
2458
|
+
avatarSrc: _angular_core.InputSignal<string>;
|
|
2459
|
+
/** Initials fallback when `avatarSrc` is absent or fails to load. */
|
|
2460
|
+
avatarName: _angular_core.InputSignal<string>;
|
|
2461
|
+
/** Theme icon primitive — the preferred glyph path. */
|
|
2462
|
+
iconName: _angular_core.InputSignal<IconName>;
|
|
2463
|
+
/** Material Symbols ligature, for glyphs the theme's icon set doesn't carry. */
|
|
2464
|
+
symbolName: _angular_core.InputSignal<string>;
|
|
2465
|
+
/** Status dot in the current colour. */
|
|
2466
|
+
dot: _angular_core.InputSignal<boolean>;
|
|
2467
|
+
removable: _angular_core.InputSignal<boolean>;
|
|
2468
|
+
interactive: _angular_core.InputSignal<boolean>;
|
|
2469
|
+
/**
|
|
2470
|
+
* Toggle state. Left undefined the chip carries no `aria-pressed` at all —
|
|
2471
|
+
* an interactive chip is not always a toggle (inside a tag input it is
|
|
2472
|
+
* focusable so it can be removed), and announcing "not pressed" on a
|
|
2473
|
+
* recipient chip is worse than announcing nothing.
|
|
2474
|
+
*/
|
|
2475
|
+
selected: _angular_core.InputSignal<boolean>;
|
|
2476
|
+
invalid: _angular_core.InputSignal<boolean>;
|
|
2477
|
+
disabled: _angular_core.InputSignal<boolean>;
|
|
2478
|
+
/** Accessible-name override for the remove button. */
|
|
2479
|
+
removeLabel: _angular_core.InputSignal<string>;
|
|
2480
|
+
/**
|
|
2481
|
+
* Tab position of the chip's controls. A composite that owns its own
|
|
2482
|
+
* roving focus — `uni-tag-input`, where the whole field is one tab stop —
|
|
2483
|
+
* passes `-1` so Tab does not walk through every chip to reach the next
|
|
2484
|
+
* control.
|
|
2485
|
+
*/
|
|
2486
|
+
controlTabIndex: _angular_core.InputSignal<number>;
|
|
2487
|
+
removed: _angular_core.OutputEmitterRef<UniTagValue>;
|
|
2488
|
+
activated: _angular_core.OutputEmitterRef<UniTagValue>;
|
|
2489
|
+
/** A disabled chip wears the theme's `disabled` role, whatever its variant. */
|
|
2490
|
+
protected readonly resolvedVariant: _angular_core.Signal<_uni_design_system_uni_core.Variant>;
|
|
2491
|
+
protected readonly themeStyle: _angular_core.Signal<{
|
|
2492
|
+
[x: string]: string | number | _uni_design_system_uni_core.StyleExpression;
|
|
2493
|
+
}>;
|
|
2494
|
+
/** Lead elements derive from the chip height, so no second size token. */
|
|
2495
|
+
protected readonly leadSize: _angular_core.Signal<number>;
|
|
2496
|
+
/** Remove glyph, proportional to the chip rather than to the icon-button. */
|
|
2497
|
+
protected readonly removeGlyphSize: _angular_core.Signal<number>;
|
|
2498
|
+
protected readonly initials: _angular_core.Signal<string>;
|
|
2499
|
+
protected readonly hostClass: _angular_core.Signal<string>;
|
|
2500
|
+
/** Truncating label; `title` exposes the full text when a budget is set. */
|
|
2501
|
+
protected readonly labelClass: string;
|
|
2502
|
+
protected readonly bodyClass: _angular_core.Signal<string>;
|
|
2503
|
+
protected readonly leadClass: _angular_core.Signal<string>;
|
|
2504
|
+
protected readonly dotClass: _angular_core.Signal<string>;
|
|
2505
|
+
protected remove(): void;
|
|
2506
|
+
protected activate(): void;
|
|
2306
2507
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniTagComponent, never>;
|
|
2307
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniTagComponent, "uni-tag", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "
|
|
2508
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniTagComponent, "uni-tag", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "tone": { "alias": "tone"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "maxWidth": { "alias": "maxWidth"; "required": false; "isSignal": true; }; "avatarSrc": { "alias": "avatarSrc"; "required": false; "isSignal": true; }; "avatarName": { "alias": "avatarName"; "required": false; "isSignal": true; }; "iconName": { "alias": "iconName"; "required": false; "isSignal": true; }; "symbolName": { "alias": "symbolName"; "required": false; "isSignal": true; }; "dot": { "alias": "dot"; "required": false; "isSignal": true; }; "removable": { "alias": "removable"; "required": false; "isSignal": true; }; "interactive": { "alias": "interactive"; "required": false; "isSignal": true; }; "selected": { "alias": "selected"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "removeLabel": { "alias": "removeLabel"; "required": false; "isSignal": true; }; "controlTabIndex": { "alias": "controlTabIndex"; "required": false; "isSignal": true; }; }, { "removed": "removed"; "activated": "activated"; }, never, ["[tag-lead]", "*"], true, never>;
|
|
2509
|
+
}
|
|
2510
|
+
|
|
2511
|
+
/**
|
|
2512
|
+
* One committed token. `value` is canonical — what a form submits — and
|
|
2513
|
+
* everything else is presentation the field may enrich from a suggestion.
|
|
2514
|
+
*
|
|
2515
|
+
* `{ value: 'a@b.com' }` is a complete item, so the least a caller has to write
|
|
2516
|
+
* is `[value]="[{ value: 'a@b.com' }]"`.
|
|
2517
|
+
*/
|
|
2518
|
+
interface UniTagItem {
|
|
2519
|
+
/** Canonical value, e.g. an email address. */
|
|
2520
|
+
value: string;
|
|
2521
|
+
/** Display text; falls back to `value`. */
|
|
2522
|
+
label?: string;
|
|
2523
|
+
avatarSrc?: string;
|
|
2524
|
+
/**
|
|
2525
|
+
* Failed `validate()`. The item stays **in** the value rather than being
|
|
2526
|
+
* rejected — a field that silently swallows a typo'd address is worse than
|
|
2527
|
+
* one that shows it in red, and the user can click in to fix it.
|
|
2528
|
+
*/
|
|
2529
|
+
invalid?: boolean;
|
|
2530
|
+
/** Locked token (e.g. a thread owner): rendered without a remove control. */
|
|
2531
|
+
disabled?: boolean;
|
|
2532
|
+
}
|
|
2533
|
+
/** A type-ahead entry. Same contract as `uni-search-input`: the app filters. */
|
|
2534
|
+
interface UniTagSuggestion {
|
|
2535
|
+
value: string;
|
|
2536
|
+
label?: string;
|
|
2537
|
+
description?: string;
|
|
2538
|
+
avatarSrc?: string;
|
|
2539
|
+
}
|
|
2540
|
+
/** Why a typed token did not become a chip. */
|
|
2541
|
+
interface UniTagRejection {
|
|
2542
|
+
raw: string;
|
|
2543
|
+
reason: 'duplicate' | 'max' | 'invalid';
|
|
2544
|
+
}
|
|
2545
|
+
/** Theme options for the `tagInput` component entry. */
|
|
2546
|
+
interface UniTagInputOptions {
|
|
2547
|
+
/** Space between chips. */
|
|
2548
|
+
chipGap?: NullableSize;
|
|
2549
|
+
chipSize?: Size;
|
|
2550
|
+
/** Keeps the text input usable when chips have wrapped. */
|
|
2551
|
+
minInputWidth?: string | number;
|
|
2552
|
+
listColor?: ContainerColorToken;
|
|
2553
|
+
listShadow?: Shadow;
|
|
2554
|
+
listBorderRadius?: Radius;
|
|
2555
|
+
maxSuggestions?: number;
|
|
2556
|
+
}
|
|
2557
|
+
|
|
2558
|
+
declare class UniTagInputComponent extends BaseComponent<UniTagInputOptions> implements FormValueControl<UniTagItem[]> {
|
|
2559
|
+
readonly value: _angular_core.ModelSignal<UniTagItem[]>;
|
|
2560
|
+
readonly disabled: _angular_core.InputSignal<boolean>;
|
|
2561
|
+
readonly touched: _angular_core.ModelSignal<boolean>;
|
|
2562
|
+
readonly invalid: _angular_core.InputSignal<boolean>;
|
|
2563
|
+
readonly dirty: _angular_core.InputSignal<boolean>;
|
|
2564
|
+
readonly required: _angular_core.InputSignal<boolean>;
|
|
2565
|
+
readonly ariaDescribedBy: _angular_core.InputSignal<string>;
|
|
2566
|
+
/** Accessible name for the field, e.g. "To". */
|
|
2567
|
+
label: _angular_core.InputSignal<string>;
|
|
2568
|
+
placeholder: _angular_core.InputSignal<string>;
|
|
2569
|
+
/** `email` wires an address validator, paste parser and space separator. */
|
|
2570
|
+
preset: _angular_core.InputSignal<"text" | "email">;
|
|
2571
|
+
separators: _angular_core.InputSignal<string[]>;
|
|
2572
|
+
commitOnBlur: _angular_core.InputSignal<boolean>;
|
|
2573
|
+
allowDuplicates: _angular_core.InputSignal<boolean>;
|
|
2574
|
+
max: _angular_core.InputSignal<number>;
|
|
2575
|
+
validate: _angular_core.InputSignal<(raw: string) => boolean>;
|
|
2576
|
+
parse: _angular_core.InputSignal<(pasted: string) => string[]>;
|
|
2577
|
+
tagVariant: _angular_core.InputSignal<Variant>;
|
|
2578
|
+
tagTone: _angular_core.InputSignal<TagTone>;
|
|
2579
|
+
tagSize: _angular_core.InputSignal<Size>;
|
|
2580
|
+
suggestions: _angular_core.InputSignal<UniTagSuggestion[]>;
|
|
2581
|
+
/** Debounced text the app should filter `suggestions` from. */
|
|
2582
|
+
query: _angular_core.OutputEmitterRef<string>;
|
|
2583
|
+
debounceTime: _angular_core.InputSignal<number>;
|
|
2584
|
+
added: _angular_core.OutputEmitterRef<UniTagItem>;
|
|
2585
|
+
removed: _angular_core.OutputEmitterRef<UniTagItem>;
|
|
2586
|
+
rejected: _angular_core.OutputEmitterRef<UniTagRejection>;
|
|
2587
|
+
private readonly inputRef;
|
|
2588
|
+
private readonly chipRefs;
|
|
2589
|
+
/** Uncommitted text in the field. */
|
|
2590
|
+
protected readonly draft: _angular_core.WritableSignal<string>;
|
|
2591
|
+
/** Index of the focused chip, or -1 when focus is in the text input. */
|
|
2592
|
+
protected readonly focusedChip: _angular_core.WritableSignal<number>;
|
|
2593
|
+
/** Announcement for the status region; add/remove are otherwise silent. */
|
|
2594
|
+
protected readonly announcement: _angular_core.WritableSignal<string>;
|
|
2595
|
+
protected readonly hintId: string;
|
|
2596
|
+
protected readonly srOnly: string;
|
|
2597
|
+
private queryTimer?;
|
|
2598
|
+
protected readonly visibleSuggestions: _angular_core.Signal<UniTagSuggestion[]>;
|
|
2599
|
+
/** Shared combobox bookkeeping — identical contract to uni-search-input. */
|
|
2600
|
+
protected readonly list: _uni_design_system_uni_angular.ListboxNavigation;
|
|
2601
|
+
protected readonly showError: _angular_core.Signal<boolean>;
|
|
2602
|
+
protected readonly separatorKeys: _angular_core.Signal<string[]>;
|
|
2603
|
+
protected readonly describedBy: _angular_core.Signal<string>;
|
|
2604
|
+
protected labelOf(item: UniTagItem | UniTagSuggestion): string;
|
|
2605
|
+
/** Split pasted text into candidate tokens. */
|
|
2606
|
+
private parseRaw;
|
|
2607
|
+
private isValid;
|
|
2608
|
+
/**
|
|
2609
|
+
* Turn typed text into a chip. Invalid entries are kept and flagged rather
|
|
2610
|
+
* than dropped; duplicates and over-max are refused with a reason.
|
|
2611
|
+
*/
|
|
2612
|
+
protected commit(raw: string): boolean;
|
|
2613
|
+
private reject;
|
|
2614
|
+
protected removeAt(index: number, focus?: 'left' | 'right' | 'input'): void;
|
|
2615
|
+
private countNoun;
|
|
2616
|
+
private announce;
|
|
2617
|
+
protected focusInput(): void;
|
|
2618
|
+
private focusChip;
|
|
2619
|
+
protected onInputKeydown(event: KeyboardEvent): void;
|
|
2620
|
+
protected onInput(value: string): void;
|
|
2621
|
+
protected onPaste(event: ClipboardEvent): void;
|
|
2622
|
+
protected onBlur(): void;
|
|
2623
|
+
protected onFocusOut(event: FocusEvent): void;
|
|
2624
|
+
protected onChipKeydown(event: KeyboardEvent, index: number): void;
|
|
2625
|
+
/** Lift a chip back into the input for correction. */
|
|
2626
|
+
protected editChip(index: number): void;
|
|
2627
|
+
protected selectSuggestion(suggestion: UniTagSuggestion): void;
|
|
2628
|
+
private commitDraft;
|
|
2629
|
+
private setDraft;
|
|
2630
|
+
protected readonly className: _angular_core.Signal<string>;
|
|
2631
|
+
protected readonly fieldClass: _angular_core.Signal<string>;
|
|
2632
|
+
protected readonly inputClass: _angular_core.Signal<string>;
|
|
2633
|
+
protected readonly listClass: _angular_core.Signal<string>;
|
|
2634
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniTagInputComponent, never>;
|
|
2635
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniTagInputComponent, "uni-tag-input", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "dirty": { "alias": "dirty"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "ariaDescribedBy": { "alias": "ariaDescribedBy"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": true; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "preset": { "alias": "preset"; "required": false; "isSignal": true; }; "separators": { "alias": "separators"; "required": false; "isSignal": true; }; "commitOnBlur": { "alias": "commitOnBlur"; "required": false; "isSignal": true; }; "allowDuplicates": { "alias": "allowDuplicates"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "validate": { "alias": "validate"; "required": false; "isSignal": true; }; "parse": { "alias": "parse"; "required": false; "isSignal": true; }; "tagVariant": { "alias": "tagVariant"; "required": false; "isSignal": true; }; "tagTone": { "alias": "tagTone"; "required": false; "isSignal": true; }; "tagSize": { "alias": "tagSize"; "required": false; "isSignal": true; }; "suggestions": { "alias": "suggestions"; "required": false; "isSignal": true; }; "debounceTime": { "alias": "debounceTime"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "touched": "touchedChange"; "query": "query"; "added": "added"; "removed": "removed"; "rejected": "rejected"; }, never, never, true, never>;
|
|
2308
2636
|
}
|
|
2309
2637
|
|
|
2310
2638
|
/**
|
|
@@ -2544,5 +2872,5 @@ declare class DragAndDropDirective {
|
|
|
2544
2872
|
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<DragAndDropDirective, "[uni-drag-n-drop], [dragAndDrop]", never, {}, { "onFileDropped": "onFileDropped"; }, never, never, true, never>;
|
|
2545
2873
|
}
|
|
2546
2874
|
|
|
2547
|
-
export { BodyRenderDirective, ConfirmationDialogComponent, DragAndDropDirective, FOCUSABLE_SELECTOR, LocalStorageService, NotificationService, NotificationsComponent, RippleDirective, ThemeService, UNI_THEMES, UniAlertComponent, UniAppBarComponent, UniAvatarComponent, UniAvatarGroupComponent, UniBackgroundComponent, UniBadgeComponent, UniBaseDatasource, UniBoxComponent, UniBreadcrumbComponent, UniButtonComponent, UniButtonGroupComponent, UniCardComponent, UniCardContentComponent, UniCardHeaderComponent, UniCenterComponent, UniCheckboxComponent, UniDataSearchComponent, UniDataTableComponent, UniDebounceInputComponent, UniDialogButtonsComponent, UniDialogComponent, UniDialogHeaderComponent, UniDividerComponent, UniDrawerComponent, UniDropdownComponent, UniExpandAreaComponent, UniExpandComponent, UniExpandToggleComponent, UniFileDropZoneComponent, UniGridAreaComponent, UniGridComponent, UniIconButtonComponent, UniIconComponent, UniInputBoxComponent, UniInputComponent, UniJsonViewComponent, UniMenuComponent, UniMultiSelectComponent, UniMultiSelectDropdownComponent, UniNotificationBadgeComponent, UniPaginatorComponent, UniPopoverComponent, UniProgressBarComponent, UniProgressGaugeComponent, UniRadioComponent, UniRecordDatasource, UniRowComponent, UniScrollAreaComponent, UniSearchInputComponent, UniSelectComponent, UniServerSideDatasource, UniSkeletonComponent, UniSliderComponent, UniSnackbarComponent, UniSortHeaderComponent, UniStackComponent, UniStatComponent, UniSymbolComponent, UniTabComponent, UniTabsComponent, UniTagComponent, UniTextComponent, UniTextareaComponent, UniThemeBuilderComponent, UniThemeSwitchComponent, UniToggleComponent, UniTooltipComponent, UniWrapComponent, acceptableFile, anchorArrowStyles, anchorStyles, getFileExtension, isDivider, motionSafe, newAnchorName, resolveFocusTarget, uniqueId, useTimer, visuallyHidden };
|
|
2548
|
-
export type { Alert, AnchorOffset, BrandPaletteConfig, BreadcrumbItem, ButtonGroupConfig, ButtonGroupItem, ColumnDefinition, Confirmation, DataLoader, DrawerMode, DrawerPosition, ImagePosition, MenuDivider, MenuItem, MenuItemWithLabel, MenuItemWithTemplate, Option, Options, PageRequest, PageResponse, Placement, ScrollbarAppearance, SkeletonShape, Snackbar, Sort, SortDirection, UniAppBarOptions, UniAvatarGroupOptions, UniAvatarOptions, UniBreadcrumbOptions, UniCheckboxOptions, UniDataSearchOptions, UniDataTableOptions, UniDatasource, UniDrawerOptions, UniExpandOptions, UniInputBoxOptions, UniMenuItemOptions, UniMenuOptions, UniMultiSelectDropdownOptions, UniNotificationBadgeOptions, UniPaginatorOptions, UniRadioOption, UniRadioOptions, UniSearchInputOptions, UniSkeletonOptions, UniSliderOptions, UniStatOptions, UniTabsOptions, UniTextareaOptions, UniToggleOptions };
|
|
2875
|
+
export { BodyRenderDirective, ConfirmationDialogComponent, DragAndDropDirective, FOCUSABLE_SELECTOR, ListboxNavigation, LocalStorageService, NotificationService, NotificationsComponent, RippleDirective, ThemeService, UNI_THEMES, UniAlertComponent, UniAppBarComponent, UniAvatarComponent, UniAvatarGroupComponent, UniBackgroundComponent, UniBadgeComponent, UniBaseDatasource, UniBoxComponent, UniBreadcrumbComponent, UniButtonComponent, UniButtonGroupComponent, UniCardComponent, UniCardContentComponent, UniCardHeaderComponent, UniCenterComponent, UniCheckboxComponent, UniDataSearchComponent, UniDataTableComponent, UniDebounceInputComponent, UniDialogButtonsComponent, UniDialogComponent, UniDialogHeaderComponent, UniDividerComponent, UniDrawerComponent, UniDropdownComponent, UniExpandAreaComponent, UniExpandComponent, UniExpandToggleComponent, UniFileDropZoneComponent, UniGridAreaComponent, UniGridComponent, UniIconButtonComponent, UniIconComponent, UniInputBoxComponent, UniInputComponent, UniJsonViewComponent, UniMenuComponent, UniMultiSelectComponent, UniMultiSelectDropdownComponent, UniNotificationBadgeComponent, UniPaginatorComponent, UniPopoverComponent, UniProgressBarComponent, UniProgressGaugeComponent, UniRadioComponent, UniRecordDatasource, UniRowComponent, UniScrollAreaComponent, UniSearchInputComponent, UniSelectComponent, UniServerSideDatasource, UniSkeletonComponent, UniSliderComponent, UniSnackbarComponent, UniSortHeaderComponent, UniStackComponent, UniStatComponent, UniSymbolComponent, UniTabComponent, UniTabsComponent, UniTagComponent, UniTagInputComponent, UniTextComponent, UniTextareaComponent, UniThemeBuilderComponent, UniThemeSwitchComponent, UniToggleComponent, UniTooltipComponent, UniWrapComponent, acceptableFile, anchorArrowStyles, anchorStyles, createListboxNavigation, getFileExtension, isDivider, motionSafe, newAnchorName, resolveFocusTarget, uniqueId, useTimer, visuallyHidden };
|
|
2876
|
+
export type { Alert, AnchorOffset, BrandPaletteConfig, BreadcrumbItem, ButtonGroupConfig, ButtonGroupItem, ColumnDefinition, Confirmation, DataLoader, DrawerMode, DrawerPosition, ImagePosition, ListboxNavigationConfig, MenuDivider, MenuItem, MenuItemWithLabel, MenuItemWithTemplate, Option, Options, PageRequest, PageResponse, Placement, ScrollbarAppearance, SkeletonShape, Snackbar, Sort, SortDirection, UniAppBarOptions, UniAvatarGroupOptions, UniAvatarOptions, UniBreadcrumbOptions, UniCheckboxOptions, UniDataSearchOptions, UniDataTableOptions, UniDatasource, UniDrawerOptions, UniExpandOptions, UniInputBoxOptions, UniMenuItemOptions, UniMenuOptions, UniMultiSelectDropdownOptions, UniNotificationBadgeOptions, UniPaginatorOptions, UniRadioOption, UniRadioOptions, UniSearchInputOptions, UniSkeletonOptions, UniSliderOptions, UniStatOptions, UniTabsOptions, UniTagInputOptions, UniTagItem, UniTagOptions, UniTagRejection, UniTagSuggestion, UniTagValue, UniTextareaOptions, UniToggleOptions };
|