@uni-design-system/uni-angular 8.2.0 → 8.3.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.
|
@@ -4,6 +4,7 @@ import * as _uni_design_system_uni_core from '@uni-design-system/uni-core';
|
|
|
4
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 * as _uni_design_system_uni_angular from '@uni-design-system/uni-angular';
|
|
6
6
|
import { FormValueControl, FormCheckboxControl } from '@angular/forms/signals';
|
|
7
|
+
import { CSSObject } from '@emotion/css/create-instance';
|
|
7
8
|
|
|
8
9
|
/**
|
|
9
10
|
* Returns a document-unique id for wiring ARIA relationships
|
|
@@ -156,6 +157,11 @@ interface ListboxNavigationConfig {
|
|
|
156
157
|
idPrefix?: string;
|
|
157
158
|
/** Wrap past the ends. Default true. */
|
|
158
159
|
wrap?: boolean;
|
|
160
|
+
/**
|
|
161
|
+
* Non-navigable options. Arrows step over them; Home/End land on the
|
|
162
|
+
* nearest enabled option; an all-disabled list never activates.
|
|
163
|
+
*/
|
|
164
|
+
disabled?: (index: number) => boolean;
|
|
159
165
|
}
|
|
160
166
|
/**
|
|
161
167
|
* The keyboard and ARIA bookkeeping shared by every combobox-style popup:
|
|
@@ -180,6 +186,7 @@ declare class ListboxNavigation {
|
|
|
180
186
|
private readonly _open;
|
|
181
187
|
private readonly _activeIndex;
|
|
182
188
|
private readonly wrap;
|
|
189
|
+
private readonly isDisabled;
|
|
183
190
|
/** Whether the popup is showing. Also false when there is nothing to show. */
|
|
184
191
|
readonly open: Signal<boolean>;
|
|
185
192
|
/** Index of the highlighted option, or -1 when none is active. */
|
|
@@ -200,6 +207,9 @@ declare class ListboxNavigation {
|
|
|
200
207
|
*/
|
|
201
208
|
navigate(event: KeyboardEvent): boolean;
|
|
202
209
|
private nextIndex;
|
|
210
|
+
/** Nearest enabled index at or after `start`, walking by `delta` with wrap;
|
|
211
|
+
null when every option is disabled. */
|
|
212
|
+
private seek;
|
|
203
213
|
private step;
|
|
204
214
|
/** Close when focus leaves the control entirely (not on internal moves). */
|
|
205
215
|
closeOnFocusOut(event: FocusEvent): void;
|
|
@@ -235,8 +245,77 @@ declare function anchorStyles(anchor: string, placement: Placement, offset?: Anc
|
|
|
235
245
|
* that faces the anchor. Static per placement: if the browser flips the panel
|
|
236
246
|
* via position-try, the arrow stays on the configured side (cosmetic-only
|
|
237
247
|
* degradation, matching the flip-support caveat above).
|
|
248
|
+
*
|
|
249
|
+
* `overlap` (default 0 — cut exactly on the panel edge) extends the kept half
|
|
250
|
+
* into the panel; see {@link ARROW_CLIP} for when that is ever wanted.
|
|
251
|
+
*/
|
|
252
|
+
declare function anchorArrowStyles(placement: Placement, size?: number, overlap?: number): Record<string, string | number>;
|
|
253
|
+
interface SpotlightOptions {
|
|
254
|
+
/** Gap between the target's box and the hole edge, px. */
|
|
255
|
+
pad?: number;
|
|
256
|
+
/** Ring border width, px — border-color and radius come from the caller. */
|
|
257
|
+
ringWidth?: number;
|
|
258
|
+
/** Scrim paint; scheme-invariant by convention, like `::backdrop`. */
|
|
259
|
+
scrimColor?: string;
|
|
260
|
+
}
|
|
261
|
+
interface SpotlightStyles {
|
|
262
|
+
/** Paints the scrim + ring. `pointer-events: none` — purely visual. */
|
|
263
|
+
window: Record<string, string | number>;
|
|
264
|
+
/** Click-blockers surrounding the hole; the hole itself is genuinely empty. */
|
|
265
|
+
strips: Record<'top' | 'bottom' | 'left' | 'right', Record<string, string | number>>;
|
|
266
|
+
/** Hole-sized click-blocker, shown when the target must not be interactive. */
|
|
267
|
+
cover: Record<string, string | number>;
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* Scrim pieces that cut a spotlight hole around the element carrying
|
|
271
|
+
* `anchor-name: <anchor>`. Every inset is `calc(anchor(<side>) ± px)`, so the
|
|
272
|
+
* browser tracks the target through scroll/resize/layout with zero listeners.
|
|
273
|
+
*
|
|
274
|
+
* The window paints everything: its `border` is the focus ring and its huge
|
|
275
|
+
* spread shadow is the scrim (an outer shadow of a rounded rect covers the
|
|
276
|
+
* whole viewport except the rect, rounded corners included). It is
|
|
277
|
+
* click-through; the four strips do the click-blocking, and the optional
|
|
278
|
+
* cover blocks the hole itself. Callers append these to a fixed, transparent,
|
|
279
|
+
* `pointer-events: none` full-viewport container (each piece is
|
|
280
|
+
* `position: fixed`).
|
|
281
|
+
*/
|
|
282
|
+
declare function spotlightStyles(anchor: string, options?: SpotlightOptions): SpotlightStyles;
|
|
283
|
+
|
|
284
|
+
/** Placement → `transform-origin`, so scale animations grow from the anchor. */
|
|
285
|
+
declare const TRANSFORM_ORIGINS: Record<Placement, string>;
|
|
286
|
+
/** Write a CSS `anchor-name` onto an element (detached anchors and targets). */
|
|
287
|
+
declare function setAnchorName(el: HTMLElement, name: string): void;
|
|
288
|
+
declare function clearAnchorName(el: HTMLElement): void;
|
|
289
|
+
/**
|
|
290
|
+
* Resolve an element-or-id reference. Id strings are looked up at call time —
|
|
291
|
+
* never cache the result across opens, the element may have been re-rendered.
|
|
292
|
+
* `''` and null-ish mean "unset" (falsy guard: an empty string is the only
|
|
293
|
+
* typeable empty for a string-typed input).
|
|
294
|
+
*/
|
|
295
|
+
declare function resolveElement(ref: HTMLElement | string | null | undefined): HTMLElement | null;
|
|
296
|
+
/** True when a native `toggle` event reports the overlay opening. */
|
|
297
|
+
declare function isToggleOpen(event: Event): boolean;
|
|
298
|
+
/**
|
|
299
|
+
* The discrete-transition block that animates an element into and out of the
|
|
300
|
+
* top layer: `transition-behavior: allow-discrete` over the `hidden` keys plus
|
|
301
|
+
* `display`/`overlay`, the shown state under `:popover-open`, and
|
|
302
|
+
* `@starting-style` so entry transitions run from the hidden state.
|
|
303
|
+
*/
|
|
304
|
+
declare function discreteOverlayTransition(durationMs: number, hidden: Record<string, string | number>, shown: Record<string, string | number>): Record<string, unknown>;
|
|
305
|
+
/**
|
|
306
|
+
* Returns focus to `target` when an overlay closes while focus was inside its
|
|
307
|
+
* panel (or was dropped on `<body>` by the top layer closing), so keyboard
|
|
308
|
+
* users are never stranded (WCAG 2.4.3). Focus resting anywhere else is left
|
|
309
|
+
* alone.
|
|
310
|
+
*/
|
|
311
|
+
declare function restoreOverlayFocus(panel: HTMLElement, target: HTMLElement | null): void;
|
|
312
|
+
/**
|
|
313
|
+
* The focusable elements inside `root`, in DOM order. Filters disabled
|
|
314
|
+
* controls, and hidden ones where the environment can tell: jsdom reports
|
|
315
|
+
* `offsetParent` as null for every element, so the visibility filter applies
|
|
316
|
+
* only when the document actually lays out (some element has an offsetParent).
|
|
238
317
|
*/
|
|
239
|
-
declare function
|
|
318
|
+
declare function focusableElements(root: HTMLElement): HTMLElement[];
|
|
240
319
|
|
|
241
320
|
type SortDirection = 'asc' | 'desc' | 'indet';
|
|
242
321
|
interface Sort<T> {
|
|
@@ -401,6 +480,10 @@ declare class NotificationService {
|
|
|
401
480
|
interface Option<T = unknown> {
|
|
402
481
|
label: string;
|
|
403
482
|
value: T;
|
|
483
|
+
/** Secondary line, e.g. an email under a name. Read as part of the option's name. */
|
|
484
|
+
description?: string;
|
|
485
|
+
/** Visible and announced, but not committable; listbox navigation skips it. */
|
|
486
|
+
disabled?: boolean;
|
|
404
487
|
}
|
|
405
488
|
type Options<T = unknown> = Option<T>[];
|
|
406
489
|
|
|
@@ -896,7 +979,7 @@ declare class UniCalendarComponent extends BaseComponent<UniCalendarOptions> imp
|
|
|
896
979
|
/** BCP 47 tag; defaults to the document language, then the browser's. */
|
|
897
980
|
locale: _angular_core.InputSignal<string>;
|
|
898
981
|
/** First day of week, 0 = Sunday; defaults from the locale's week info. */
|
|
899
|
-
weekStart: _angular_core.InputSignal<0 | 1 | 2 | 3 | 4 |
|
|
982
|
+
weekStart: _angular_core.InputSignal<0 | 1 | 2 | 3 | 4 | 6 | 5>;
|
|
900
983
|
/** Names the grid when it stands alone (otherwise the heading names it). */
|
|
901
984
|
ariaLabel: _angular_core.InputSignal<string>;
|
|
902
985
|
/** Day geometry token; `sm`/`md`/`lg` map to the theme's `calendar` sizes. */
|
|
@@ -984,6 +1067,132 @@ declare class UniCalendarComponent extends BaseComponent<UniCalendarOptions> imp
|
|
|
984
1067
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniCalendarComponent, "uni-calendar, Calendar", 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; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "month": { "alias": "month"; "required": false; "isSignal": true; }; "minDate": { "alias": "minDate"; "required": false; "isSignal": true; }; "maxDate": { "alias": "maxDate"; "required": false; "isSignal": true; }; "disabledDates": { "alias": "disabledDates"; "required": false; "isSignal": true; }; "markers": { "alias": "markers"; "required": false; "isSignal": true; }; "locale": { "alias": "locale"; "required": false; "isSignal": true; }; "weekStart": { "alias": "weekStart"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "touched": "touchedChange"; "month": "monthChange"; "selected": "selected"; }, never, never, true, never>;
|
|
985
1068
|
}
|
|
986
1069
|
|
|
1070
|
+
/** Why a callout closed. `programmatic` = the app drove `open` to false. */
|
|
1071
|
+
interface UniCalloutDismissal {
|
|
1072
|
+
/** The callout's `key`, when one was set — the "don't show again" hook. */
|
|
1073
|
+
key?: string;
|
|
1074
|
+
reason: 'close-button' | 'escape' | 'backdrop' | 'programmatic';
|
|
1075
|
+
}
|
|
1076
|
+
/**
|
|
1077
|
+
* Theme options for the `callout` component entry. The spotlight ring color
|
|
1078
|
+
* is deliberately not an option — it is the callout's `variant` role.
|
|
1079
|
+
*/
|
|
1080
|
+
interface UniCalloutOptions {
|
|
1081
|
+
color: ContainerColorToken;
|
|
1082
|
+
borderRadius: Radius;
|
|
1083
|
+
shadow: Shadow;
|
|
1084
|
+
width: string;
|
|
1085
|
+
padding: string;
|
|
1086
|
+
headerTypeface: Typeface;
|
|
1087
|
+
typeface: Typeface;
|
|
1088
|
+
closeSymbol: IconName;
|
|
1089
|
+
arrowSize: number;
|
|
1090
|
+
/** Main-axis gap between the spotlight hole edge and the panel, px. */
|
|
1091
|
+
offset: number;
|
|
1092
|
+
/** Scrim paint; scheme-invariant by convention, like `::backdrop`. */
|
|
1093
|
+
scrimColor: string;
|
|
1094
|
+
/** Gap between the target's box and the hole edge, px. */
|
|
1095
|
+
spotlightPadding: number;
|
|
1096
|
+
spotlightRadius: Radius;
|
|
1097
|
+
/** Spotlight ring width, px. */
|
|
1098
|
+
ringWidth: number;
|
|
1099
|
+
transitionMs: number;
|
|
1100
|
+
}
|
|
1101
|
+
|
|
1102
|
+
/**
|
|
1103
|
+
* Anchored coach-mark panel that dims the page and cuts a spotlight hole
|
|
1104
|
+
* around its target. Both the scrim and the panel are `popover="manual"`
|
|
1105
|
+
* elements shown in order, so they stack deterministically in the top layer
|
|
1106
|
+
* above every app z-index, and every scrim piece is CSS-anchor-positioned to
|
|
1107
|
+
* the target — the hole tracks scroll/resize/layout with zero listeners.
|
|
1108
|
+
*
|
|
1109
|
+
* The panel is a non-modal `role="dialog"` (deliberately no `aria-modal`):
|
|
1110
|
+
* focus moves into it on open, Tab runs a "duet loop" over the panel's
|
|
1111
|
+
* focusables plus the spotlit target while it stays interactive, and on close
|
|
1112
|
+
* focus returns to the pre-open element — unless the user moved into the
|
|
1113
|
+
* target, where it stays.
|
|
1114
|
+
*
|
|
1115
|
+
* Storage-free by rule: `key` and the `dismissed` output are the "don't show
|
|
1116
|
+
* again" hooks; persistence is the app's business (e.g. cdk local-storage).
|
|
1117
|
+
*/
|
|
1118
|
+
declare class UniCalloutComponent extends BaseComponent<UniCalloutOptions> {
|
|
1119
|
+
private destroyRef;
|
|
1120
|
+
open: _angular_core.ModelSignal<boolean>;
|
|
1121
|
+
/** Identifies this callout in `dismissed` payloads. Empty string = unset. */
|
|
1122
|
+
key: _angular_core.InputSignal<string>;
|
|
1123
|
+
/** Element (or id, resolved at open time) to spotlight. '' = unset. */
|
|
1124
|
+
target: _angular_core.InputSignal<string | HTMLElement>;
|
|
1125
|
+
placement: _angular_core.InputSignal<Placement>;
|
|
1126
|
+
/** Defaults to `spotlight` when a target resolves, else `dim`. */
|
|
1127
|
+
backdrop: _angular_core.InputSignal<"none" | "spotlight" | "dim">;
|
|
1128
|
+
/** When false, a transparent cover blocks the spotlit target. */
|
|
1129
|
+
targetInteractive: _angular_core.InputSignal<boolean>;
|
|
1130
|
+
/** Gates Escape and the close button. */
|
|
1131
|
+
dismissible: _angular_core.InputSignal<boolean>;
|
|
1132
|
+
/** When true, scrim clicks close (reason `backdrop`); else the panel pulses. */
|
|
1133
|
+
dismissOnBackdrop: _angular_core.InputSignal<boolean>;
|
|
1134
|
+
header: _angular_core.InputSignal<string>;
|
|
1135
|
+
arrow: _angular_core.InputSignal<boolean>;
|
|
1136
|
+
/** Wins over the header/body labelling; the tour sets "{title}, step n of N". */
|
|
1137
|
+
ariaLabel: _angular_core.InputSignal<string>;
|
|
1138
|
+
/** Accessible name of the dismiss button (the tour passes its skip label). */
|
|
1139
|
+
closeLabel: _angular_core.InputSignal<string>;
|
|
1140
|
+
opened: _angular_core.OutputEmitterRef<void>;
|
|
1141
|
+
closed: _angular_core.OutputEmitterRef<void>;
|
|
1142
|
+
dismissed: _angular_core.OutputEmitterRef<UniCalloutDismissal>;
|
|
1143
|
+
/** Keys pressed while focus is inside the panel (the tour's arrow-key hook). */
|
|
1144
|
+
panelKeydown: _angular_core.OutputEmitterRef<KeyboardEvent>;
|
|
1145
|
+
readonly panelId: string;
|
|
1146
|
+
protected readonly headerId: string;
|
|
1147
|
+
protected readonly bodyId: string;
|
|
1148
|
+
private readonly anchorName;
|
|
1149
|
+
protected readonly showing: _angular_core.WritableSignal<boolean>;
|
|
1150
|
+
protected readonly activeTarget: _angular_core.WritableSignal<HTMLElement>;
|
|
1151
|
+
private readonly scrimShown;
|
|
1152
|
+
/**
|
|
1153
|
+
* Keeps the spotlight pieces rendered and the panel anchored through the
|
|
1154
|
+
* close fade — tearing the anchor down at close time made the panel jump
|
|
1155
|
+
* and the scrim vanish mid-transition.
|
|
1156
|
+
*/
|
|
1157
|
+
protected readonly scrimContent: _angular_core.WritableSignal<boolean>;
|
|
1158
|
+
private pendingTeardown;
|
|
1159
|
+
private prevFocus;
|
|
1160
|
+
private detachKeydown;
|
|
1161
|
+
protected readonly stripSides: readonly ["top", "bottom", "left", "right"];
|
|
1162
|
+
private scrimRef;
|
|
1163
|
+
private panelRef;
|
|
1164
|
+
private actionsRef;
|
|
1165
|
+
constructor();
|
|
1166
|
+
protected readonly effectiveBackdrop: _angular_core.Signal<"none" | "spotlight" | "dim">;
|
|
1167
|
+
private show;
|
|
1168
|
+
protected close(reason: UniCalloutDismissal['reason']): void;
|
|
1169
|
+
/** Move an open callout to a new target without a close/open round trip. */
|
|
1170
|
+
private retarget;
|
|
1171
|
+
/** `[autofocus]` → first action → first panel focusable → the panel itself. */
|
|
1172
|
+
private focusInitial;
|
|
1173
|
+
/**
|
|
1174
|
+
* Capture phase so Escape works from inside the spotlit target and the tab
|
|
1175
|
+
* loop preempts the page. Non-Tab keys surface through `panelKeydown`.
|
|
1176
|
+
*/
|
|
1177
|
+
private onKeydown;
|
|
1178
|
+
/** A stray click shouldn't kill onboarding: nudge the panel instead. */
|
|
1179
|
+
protected onBackdropClick(): void;
|
|
1180
|
+
private readonly spotlight;
|
|
1181
|
+
protected readonly scrimClassName: _angular_core.Signal<string>;
|
|
1182
|
+
protected readonly windowClassName: _angular_core.Signal<string>;
|
|
1183
|
+
protected stripClassName(side: (typeof this.stripSides)[number]): string;
|
|
1184
|
+
protected readonly coverClassName: _angular_core.Signal<string>;
|
|
1185
|
+
protected readonly fullCoverClassName: _angular_core.Signal<string>;
|
|
1186
|
+
protected readonly panelClassName: _angular_core.Signal<string>;
|
|
1187
|
+
protected readonly headRowClassName: _angular_core.Signal<string>;
|
|
1188
|
+
protected readonly titleClassName: _angular_core.Signal<string>;
|
|
1189
|
+
protected readonly bodyClassName: _angular_core.Signal<string>;
|
|
1190
|
+
protected readonly actionsRowClassName: _angular_core.Signal<string>;
|
|
1191
|
+
protected readonly arrowClassName: _angular_core.Signal<string>;
|
|
1192
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniCalloutComponent, never>;
|
|
1193
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniCalloutComponent, "uni-callout", never, { "open": { "alias": "open"; "required": false; "isSignal": true; }; "key": { "alias": "key"; "required": false; "isSignal": true; }; "target": { "alias": "target"; "required": false; "isSignal": true; }; "placement": { "alias": "placement"; "required": false; "isSignal": true; }; "backdrop": { "alias": "backdrop"; "required": false; "isSignal": true; }; "targetInteractive": { "alias": "targetInteractive"; "required": false; "isSignal": true; }; "dismissible": { "alias": "dismissible"; "required": false; "isSignal": true; }; "dismissOnBackdrop": { "alias": "dismissOnBackdrop"; "required": false; "isSignal": true; }; "header": { "alias": "header"; "required": false; "isSignal": true; }; "arrow": { "alias": "arrow"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "closeLabel": { "alias": "closeLabel"; "required": false; "isSignal": true; }; }, { "open": "openChange"; "opened": "opened"; "closed": "closed"; "dismissed": "dismissed"; "panelKeydown": "panelKeydown"; }, never, ["[callout-media]", "[callout-header]", "*", "[callout-actions]"], true, never>;
|
|
1194
|
+
}
|
|
1195
|
+
|
|
987
1196
|
declare class UniCardContentComponent extends BaseComponent {
|
|
988
1197
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniCardContentComponent, never>;
|
|
989
1198
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniCardContentComponent, "uni-card-content", never, {}, {}, never, ["*"], true, never>;
|
|
@@ -1067,6 +1276,149 @@ declare class UniCheckboxComponent extends BaseComponent<UniCheckboxOptions> imp
|
|
|
1067
1276
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniCheckboxComponent, "uni-checkbox", never, { "checked": { "alias": "checked"; "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": false; "isSignal": true; }; "indeterminate": { "alias": "indeterminate"; "required": false; "isSignal": true; }; }, { "checked": "checkedChange"; "touched": "touchedChange"; "indeterminate": "indeterminateChange"; }, never, never, true, never>;
|
|
1068
1277
|
}
|
|
1069
1278
|
|
|
1279
|
+
/** A commit was refused (no match); the field reverted to the committed label. */
|
|
1280
|
+
interface UniComboboxRejection {
|
|
1281
|
+
query: string;
|
|
1282
|
+
}
|
|
1283
|
+
/**
|
|
1284
|
+
* Theme options for the `combobox` entry. Field chrome is not duplicated
|
|
1285
|
+
* here — it comes from `input` via uni-input-box; the list trio matches
|
|
1286
|
+
* tagInput/searchInput/timeInput. Glyphs are theme icon primitives rendered
|
|
1287
|
+
* by `uni-icon`, so they restyle with the theme's iconography.
|
|
1288
|
+
*/
|
|
1289
|
+
interface UniComboboxOptions {
|
|
1290
|
+
toggleIcon?: IconName;
|
|
1291
|
+
clearIcon?: IconName;
|
|
1292
|
+
selectedIcon?: IconName;
|
|
1293
|
+
listColor?: ContainerColorToken;
|
|
1294
|
+
listShadow?: Shadow;
|
|
1295
|
+
listBorderRadius?: Radius;
|
|
1296
|
+
/** Active/hover option fill; the on-color pair is derived. Must contrast
|
|
1297
|
+
with `listColor` or keyboard navigation turns invisible. */
|
|
1298
|
+
activeColor?: ContainerColorToken;
|
|
1299
|
+
/** Scroll height in rows — the list scrolls past this, never truncates. */
|
|
1300
|
+
maxVisibleOptions?: number;
|
|
1301
|
+
descriptionColor?: ContentColorToken;
|
|
1302
|
+
}
|
|
1303
|
+
|
|
1304
|
+
/**
|
|
1305
|
+
* Form-bound, closed-set, single-select autocomplete: `FormValueControl<T | null>`
|
|
1306
|
+
* over object `Options<T>`, type-to-filter, commit-on-select. Typing produces a
|
|
1307
|
+
* draft — a filter, never a value; the value changes only when an option
|
|
1308
|
+
* commits, `clear()` runs, or the model is written from outside. Select
|
|
1309
|
+
* semantics, not search: a real label, a chevron, no magnifier, nothing
|
|
1310
|
+
* submits. For short lists with no need to type, prefer `uni-select` — the
|
|
1311
|
+
* value contract is identical, so swapping is a template-only change.
|
|
1312
|
+
*/
|
|
1313
|
+
declare class UniComboboxComponent<T> extends BaseComponent<UniComboboxOptions> implements FormValueControl<T | null> {
|
|
1314
|
+
readonly value: _angular_core.ModelSignal<T>;
|
|
1315
|
+
readonly disabled: _angular_core.InputSignal<boolean>;
|
|
1316
|
+
readonly touched: _angular_core.ModelSignal<boolean>;
|
|
1317
|
+
readonly invalid: _angular_core.InputSignal<boolean>;
|
|
1318
|
+
readonly dirty: _angular_core.InputSignal<boolean>;
|
|
1319
|
+
readonly required: _angular_core.InputSignal<boolean>;
|
|
1320
|
+
readonly ariaDescribedBy: _angular_core.InputSignal<string>;
|
|
1321
|
+
/** Accessible name for the field, e.g. "State"; echoed on the listbox. */
|
|
1322
|
+
label: _angular_core.InputSignal<string>;
|
|
1323
|
+
placeholder: _angular_core.InputSignal<string>;
|
|
1324
|
+
options: _angular_core.InputSignal<Options<T>>;
|
|
1325
|
+
/**
|
|
1326
|
+
* Equality used to match `value` against option values, called as
|
|
1327
|
+
* `compareWith(optionValue, value)`. Defaults to reference equality, which
|
|
1328
|
+
* never matches an object value rebuilt from elsewhere (e.g. a saved record
|
|
1329
|
+
* against options from a fresh fetch) — pass a key comparison like
|
|
1330
|
+
* `(a, b) => a?.id === b?.id` for object values.
|
|
1331
|
+
*/
|
|
1332
|
+
compareWith: _angular_core.InputSignal<(optionValue: T, value: T) => boolean>;
|
|
1333
|
+
width: _angular_core.InputSignal<string | number>;
|
|
1334
|
+
/** Show a ✕ while a value is set; an emptied field on blur also clears. */
|
|
1335
|
+
clearable: _angular_core.InputSignal<boolean>;
|
|
1336
|
+
/** Blur commits an exact-match draft; a non-matching draft reverts. */
|
|
1337
|
+
commitOnBlur: _angular_core.InputSignal<boolean>;
|
|
1338
|
+
/** i18n-able empty row, also announced when a filter matches nothing. */
|
|
1339
|
+
emptyText: _angular_core.InputSignal<string>;
|
|
1340
|
+
/** `false` renders `options` verbatim; narrow them app-side from `query`. */
|
|
1341
|
+
filterLocally: _angular_core.InputSignal<boolean>;
|
|
1342
|
+
/** Filter predicate; default is locale-lowercased label-contains. */
|
|
1343
|
+
filterWith: _angular_core.InputSignal<(option: Option<T>, query: string) => boolean>;
|
|
1344
|
+
debounceTime: _angular_core.InputSignal<number>;
|
|
1345
|
+
/** Debounced draft text, for async option lists. */
|
|
1346
|
+
query: _angular_core.OutputEmitterRef<string>;
|
|
1347
|
+
/** An option committed. */
|
|
1348
|
+
selected: _angular_core.OutputEmitterRef<Option<T>>;
|
|
1349
|
+
cleared: _angular_core.OutputEmitterRef<void>;
|
|
1350
|
+
/** A commit was refused (no match); the field reverted. */
|
|
1351
|
+
rejected: _angular_core.OutputEmitterRef<UniComboboxRejection>;
|
|
1352
|
+
private readonly host;
|
|
1353
|
+
private readonly inputRef;
|
|
1354
|
+
private readonly listRef;
|
|
1355
|
+
/** Cancelled on destroy — a late tick would emit on a destroyed OutputRef. */
|
|
1356
|
+
private queryTimer?;
|
|
1357
|
+
constructor();
|
|
1358
|
+
protected readonly srOnly: string;
|
|
1359
|
+
protected readonly announcement: _angular_core.WritableSignal<string>;
|
|
1360
|
+
/** null → the field shows the committed label; a string is an uncommitted draft. */
|
|
1361
|
+
protected readonly draft: _angular_core.WritableSignal<string>;
|
|
1362
|
+
/**
|
|
1363
|
+
* Popup visibility. Component-owned rather than `list.open()` — the shared
|
|
1364
|
+
* signal gates on `count() > 0`, which would hide the "No matches" row and
|
|
1365
|
+
* misreport `aria-expanded` over an empty filter.
|
|
1366
|
+
*/
|
|
1367
|
+
protected readonly popupOpen: _angular_core.WritableSignal<boolean>;
|
|
1368
|
+
/** Index in options() of the option matching value(), else -1. */
|
|
1369
|
+
protected readonly committedIndex: _angular_core.Signal<number>;
|
|
1370
|
+
/** A value with no matching option renders '' but is preserved — options may
|
|
1371
|
+
still be loading; the field self-heals when they arrive. */
|
|
1372
|
+
protected readonly committedLabel: _angular_core.Signal<string>;
|
|
1373
|
+
protected readonly displayValue: _angular_core.Signal<string>;
|
|
1374
|
+
/** Indices into options() surviving the filter. The draft filters; the
|
|
1375
|
+
committed label does not — reopening always shows the full set. */
|
|
1376
|
+
protected readonly filteredIndices: _angular_core.Signal<number[]>;
|
|
1377
|
+
/** Shared combobox bookkeeping, in filtered-list positions — the fourth
|
|
1378
|
+
consumer of the contract behind search-input, tag-input and time-input. */
|
|
1379
|
+
protected readonly list: _uni_design_system_uni_angular.ListboxNavigation;
|
|
1380
|
+
protected readonly showError: _angular_core.Signal<boolean>;
|
|
1381
|
+
private commit;
|
|
1382
|
+
protected clear(): void;
|
|
1383
|
+
/**
|
|
1384
|
+
* Draft resolution, used by Enter, Tab and blur:
|
|
1385
|
+
* 1. an active option in the list → commit it;
|
|
1386
|
+
* 2. else a unique exact label match (locale-case-insensitive) → commit it;
|
|
1387
|
+
* 3. Enter only: the filter narrowed to exactly one enabled option → commit it
|
|
1388
|
+
* (on Enter the user can see the single candidate; on blur they're gone,
|
|
1389
|
+
* and committing a value they never saw confirmed is how forms grow
|
|
1390
|
+
* mystery data);
|
|
1391
|
+
* 4. else the caller keeps the list open (Enter) or reverts (Tab/blur).
|
|
1392
|
+
*/
|
|
1393
|
+
private resolveDraft;
|
|
1394
|
+
private revertDraft;
|
|
1395
|
+
private reject;
|
|
1396
|
+
protected onKeydown(event: KeyboardEvent): void;
|
|
1397
|
+
protected onInput(): void;
|
|
1398
|
+
/** Click-to-browse: pointer users get the select affordance. Focus alone
|
|
1399
|
+
never opens — Tab-through forms must not spray popups. */
|
|
1400
|
+
protected onFieldClick(): void;
|
|
1401
|
+
protected onToggleMousedown(event: MouseEvent): void;
|
|
1402
|
+
protected onOptionClick(optIndex: number): void;
|
|
1403
|
+
protected onFocusOut(event: FocusEvent): void;
|
|
1404
|
+
/** Filtered position of the committed option when visible and enabled, else -1. */
|
|
1405
|
+
private committedFilteredPos;
|
|
1406
|
+
private openList;
|
|
1407
|
+
private closeList;
|
|
1408
|
+
private scrollToActive;
|
|
1409
|
+
private setFieldText;
|
|
1410
|
+
private announce;
|
|
1411
|
+
protected readonly className: _angular_core.Signal<string>;
|
|
1412
|
+
protected readonly rowClass: _angular_core.Signal<string>;
|
|
1413
|
+
protected readonly inputClass: _angular_core.Signal<string>;
|
|
1414
|
+
/** Pointer-only affordance: keyboard already has ArrowDown, and the input
|
|
1415
|
+
itself announces expanded state. */
|
|
1416
|
+
protected readonly toggleClass: _angular_core.Signal<string>;
|
|
1417
|
+
protected readonly listClass: _angular_core.Signal<string>;
|
|
1418
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniComboboxComponent<any>, never>;
|
|
1419
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniComboboxComponent<any>, "uni-combobox, Combobox", 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; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; "compareWith": { "alias": "compareWith"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "commitOnBlur": { "alias": "commitOnBlur"; "required": false; "isSignal": true; }; "emptyText": { "alias": "emptyText"; "required": false; "isSignal": true; }; "filterLocally": { "alias": "filterLocally"; "required": false; "isSignal": true; }; "filterWith": { "alias": "filterWith"; "required": false; "isSignal": true; }; "debounceTime": { "alias": "debounceTime"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "touched": "touchedChange"; "query": "query"; "selected": "selected"; "cleared": "cleared"; "rejected": "rejected"; }, never, never, true, never>;
|
|
1420
|
+
}
|
|
1421
|
+
|
|
1070
1422
|
interface UniDataSearchOptions {
|
|
1071
1423
|
border: Border;
|
|
1072
1424
|
borderRadius: Radius;
|
|
@@ -1209,7 +1561,7 @@ declare class UniDateInputComponent extends BaseComponent<UniDateInputOptions> i
|
|
|
1209
1561
|
maxDate: _angular_core.InputSignal<string>;
|
|
1210
1562
|
disabledDates: _angular_core.InputSignal<string[] | ((date: UniDate) => boolean)>;
|
|
1211
1563
|
markers: _angular_core.InputSignal<UniCalendarMarker[]>;
|
|
1212
|
-
weekStart: _angular_core.InputSignal<0 | 1 | 2 | 3 | 4 |
|
|
1564
|
+
weekStart: _angular_core.InputSignal<0 | 1 | 2 | 3 | 4 | 6 | 5>;
|
|
1213
1565
|
/** Popup shown. */
|
|
1214
1566
|
opened: _angular_core.OutputEmitterRef<void>;
|
|
1215
1567
|
/** Popup hidden. */
|
|
@@ -1303,7 +1655,7 @@ declare class UniDateTimeInputComponent extends BaseComponent<UniDateTimeInputOp
|
|
|
1303
1655
|
slots: _angular_core.InputSignal<string[]>;
|
|
1304
1656
|
minuteStep: _angular_core.InputSignal<number>;
|
|
1305
1657
|
hour12: _angular_core.InputSignal<boolean>;
|
|
1306
|
-
weekStart: _angular_core.InputSignal<0 | 1 | 2 | 3 | 4 |
|
|
1658
|
+
weekStart: _angular_core.InputSignal<0 | 1 | 2 | 3 | 4 | 6 | 5>;
|
|
1307
1659
|
locale: _angular_core.InputSignal<string>;
|
|
1308
1660
|
/** Scheduling: the day's available times. Gates the time part on a date. */
|
|
1309
1661
|
slotsFor: _angular_core.InputSignal<(date: UniDate) => UniTime[]>;
|
|
@@ -1793,6 +2145,42 @@ declare class UniDebounceInputComponent {
|
|
|
1793
2145
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniDebounceInputComponent, "uni-debounce-input", never, { "inputName": { "alias": "inputName"; "required": false; "isSignal": true; }; "inputId": { "alias": "inputId"; "required": false; "isSignal": true; }; "debounceTime": { "alias": "debounceTime"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "role": { "alias": "role"; "required": false; "isSignal": true; }; "ariaExpanded": { "alias": "ariaExpanded"; "required": false; "isSignal": true; }; "ariaControls": { "alias": "ariaControls"; "required": false; "isSignal": true; }; "ariaActivedescendant": { "alias": "ariaActivedescendant"; "required": false; "isSignal": true; }; }, { "change": "change"; }, never, ["[pre-input]", "[post-input]"], true, never>;
|
|
1794
2146
|
}
|
|
1795
2147
|
|
|
2148
|
+
/**
|
|
2149
|
+
* The theme options every listbox popup shares — the "list trio" plus the
|
|
2150
|
+
* active-option fill. Component option interfaces (searchInput, tagInput,
|
|
2151
|
+
* timeInput, combobox) satisfy this structurally; their extra options ride
|
|
2152
|
+
* alongside. `ColorKey`-typed so the wider `searchInput` contract (custom
|
|
2153
|
+
* theme color tokens) stays satisfiable; `colorPair` resolves any registered
|
|
2154
|
+
* token at runtime.
|
|
2155
|
+
*/
|
|
2156
|
+
interface UniListboxPopupOptions {
|
|
2157
|
+
/** Popup surface; its on-color pair is derived and cascades to options. */
|
|
2158
|
+
listColor?: ColorKey;
|
|
2159
|
+
listShadow?: Shadow;
|
|
2160
|
+
listBorderRadius?: Radius;
|
|
2161
|
+
/** Active/hover option fill; the on-color pair is derived. Must contrast
|
|
2162
|
+
with `listColor` or keyboard navigation turns invisible. */
|
|
2163
|
+
activeColor?: ColorKey;
|
|
2164
|
+
}
|
|
2165
|
+
/**
|
|
2166
|
+
* Style block for the popup behind every `ListboxNavigation` consumer: an
|
|
2167
|
+
* absolutely-positioned `ul[role="listbox"]` under a `position: relative`
|
|
2168
|
+
* field wrapper, with the shared option chrome and active/hover highlight.
|
|
2169
|
+
*
|
|
2170
|
+
* Extracted because four components (`uni-search-input`, `uni-tag-input`,
|
|
2171
|
+
* `uni-time-input`, `uni-combobox`) carried hand-rolled copies, and the parts
|
|
2172
|
+
* that silently drift between copies all live here: the surface/elevation
|
|
2173
|
+
* trio, and the `activeColor` pair that themes re-point when their container
|
|
2174
|
+
* tokens don't contrast (see the Wellsourced overrides).
|
|
2175
|
+
*
|
|
2176
|
+
* Compose extras with the array form — `css([listboxPopupStyles(…), {…}])` —
|
|
2177
|
+
* so a component's own `& [role="option"]` block cascades after this one
|
|
2178
|
+
* instead of replacing it (an object spread would overwrite the key).
|
|
2179
|
+
*/
|
|
2180
|
+
declare const listboxPopupStyles: (theme: ThemeService, options: UniListboxPopupOptions, { maxHeight }?: {
|
|
2181
|
+
maxHeight?: number;
|
|
2182
|
+
}) => CSSObject;
|
|
2183
|
+
|
|
1796
2184
|
declare class UniIconComponent {
|
|
1797
2185
|
private themeService;
|
|
1798
2186
|
color: _angular_core.InputSignal<string>;
|
|
@@ -2387,27 +2775,135 @@ declare class UniPaginatorComponent<T> extends BaseComponent<UniPaginatorOptions
|
|
|
2387
2775
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniPaginatorComponent<any>, "uni-paginator", never, { "datasource": { "alias": "datasource"; "required": false; "isSignal": true; }; "initPageSize": { "alias": "initPageSize"; "required": false; "isSignal": true; }; "showPageSize": { "alias": "showPageSize"; "required": false; "isSignal": true; }; "showPageJumper": { "alias": "showPageJumper"; "required": false; "isSignal": true; }; "showPageNumbers": { "alias": "showPageNumbers"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
2388
2776
|
}
|
|
2389
2777
|
|
|
2390
|
-
|
|
2778
|
+
/**
|
|
2779
|
+
* Theme options for the `popover` component entry. Defaults reproduce the
|
|
2780
|
+
* pre-theme hardcoded look; the `tooltip*` options apply only in
|
|
2781
|
+
* `mode="tooltip"`.
|
|
2782
|
+
*/
|
|
2783
|
+
interface UniPopoverOptions {
|
|
2784
|
+
color: ContainerColorToken;
|
|
2785
|
+
border: Border;
|
|
2786
|
+
borderRadius: Radius;
|
|
2787
|
+
shadow: Shadow;
|
|
2788
|
+
typeface: Typeface;
|
|
2789
|
+
/** Typeface for the `header` title row. */
|
|
2790
|
+
headerTypeface: Typeface;
|
|
2791
|
+
/** Body padding in rich mode. */
|
|
2792
|
+
padding: string;
|
|
2793
|
+
/** Body padding in tooltip mode (tighter). */
|
|
2794
|
+
tooltipPadding: string;
|
|
2795
|
+
/** Default panel max-width; an instance `maxWidth` input overrides. */
|
|
2796
|
+
maxWidth: string;
|
|
2797
|
+
/** Main-axis gap between anchor and panel, px. */
|
|
2798
|
+
offset: number;
|
|
2799
|
+
arrowSize: number;
|
|
2800
|
+
/** Icon primitive for the `closable` button. */
|
|
2801
|
+
closeSymbol: IconName;
|
|
2802
|
+
/** Hover open delay in tooltip mode, ms. */
|
|
2803
|
+
tooltipOpenDelay: number;
|
|
2804
|
+
/** Pointer-leave close delay in tooltip mode, ms. */
|
|
2805
|
+
tooltipCloseDelay: number;
|
|
2806
|
+
}
|
|
2807
|
+
|
|
2808
|
+
/**
|
|
2809
|
+
* Anchored, top-layer panel on the native `popover` element — the browser owns
|
|
2810
|
+
* positioning (CSS anchor positioning), stacking, and, in rich mode, light
|
|
2811
|
+
* dismissal. Two modes share one implementation:
|
|
2812
|
+
*
|
|
2813
|
+
* - `rich` (default): a click-toggled disclosure. The projected `[trigger]`
|
|
2814
|
+
* carries `aria-expanded`/`aria-controls`; with no trigger content the app
|
|
2815
|
+
* drives `open` and no element claims controller ARIA. Focus stays on the
|
|
2816
|
+
* trigger (APG disclosure) unless the panel marks an `[autofocus]` field,
|
|
2817
|
+
* and returns to the trigger on close.
|
|
2818
|
+
* - `tooltip`: hover/focus-triggered, `role="tooltip"` + `aria-describedby`,
|
|
2819
|
+
* WCAG 1.4.13 dismissable/hoverable/persistent. Content must not contain
|
|
2820
|
+
* focusable elements.
|
|
2821
|
+
*
|
|
2822
|
+
* Anchoring and control are separate: `anchor` re-anchors the panel to any
|
|
2823
|
+
* element (or id) while the trigger keeps the disclosure semantics.
|
|
2824
|
+
*/
|
|
2825
|
+
declare class UniPopoverComponent extends BaseComponent<UniPopoverOptions> {
|
|
2391
2826
|
private renderer;
|
|
2392
|
-
private
|
|
2827
|
+
private destroyRef;
|
|
2393
2828
|
placement: _angular_core.InputSignal<Placement>;
|
|
2394
2829
|
/** Light-dismiss on outside click / Escape (native popover="auto"). */
|
|
2395
2830
|
autoClose: _angular_core.InputSignal<boolean>;
|
|
2831
|
+
/** Two-way open state; light dismissal and hover timers sync back into it. */
|
|
2832
|
+
open: _angular_core.ModelSignal<boolean>;
|
|
2833
|
+
/** `rich` = click-toggled disclosure; `tooltip` = hover/focus description. */
|
|
2834
|
+
mode: _angular_core.InputSignal<"tooltip" | "rich">;
|
|
2835
|
+
/**
|
|
2836
|
+
* Anchor the panel to another element (or element id, resolved each time
|
|
2837
|
+
* the panel opens) while the projected trigger keeps the disclosure ARIA.
|
|
2838
|
+
* Empty string means unset.
|
|
2839
|
+
*/
|
|
2840
|
+
anchor: _angular_core.InputSignal<string | HTMLElement>;
|
|
2841
|
+
/** Title rendered in the header row and used as the accessible name. */
|
|
2842
|
+
header: _angular_core.InputSignal<string>;
|
|
2843
|
+
/** Renders a "Close" icon button in the header row. */
|
|
2844
|
+
closable: _angular_core.InputSignal<boolean>;
|
|
2845
|
+
arrow: _angular_core.InputSignal<boolean>;
|
|
2846
|
+
/** Panel max-width; numbers are px. Defaults to the theme's `maxWidth`. */
|
|
2847
|
+
maxWidth: _angular_core.InputSignal<string | number>;
|
|
2848
|
+
/** Tooltip-mode hover-open delay, ms; defaults to the theme option. */
|
|
2849
|
+
openDelay: _angular_core.InputSignal<number>;
|
|
2850
|
+
/** Tooltip-mode pointer-leave close delay, ms; defaults to the theme option. */
|
|
2851
|
+
closeDelay: _angular_core.InputSignal<number>;
|
|
2852
|
+
opened: _angular_core.OutputEmitterRef<void>;
|
|
2853
|
+
closed: _angular_core.OutputEmitterRef<void>;
|
|
2396
2854
|
readonly panelId: string;
|
|
2855
|
+
protected readonly headerId: string;
|
|
2397
2856
|
private readonly anchorName;
|
|
2398
2857
|
private readonly showing;
|
|
2858
|
+
/** Whether the `[trigger]` slot projected any element content. */
|
|
2859
|
+
private readonly hasTrigger;
|
|
2399
2860
|
private triggerRef;
|
|
2400
2861
|
private panelRef;
|
|
2862
|
+
private openTimer;
|
|
2863
|
+
private closeTimer;
|
|
2864
|
+
/** The element currently carrying our anchor-name. */
|
|
2865
|
+
private anchoredEl;
|
|
2866
|
+
private detachEscape;
|
|
2401
2867
|
constructor();
|
|
2402
|
-
|
|
2868
|
+
/** Tooltip mode is always `manual` — its lifecycle belongs to the timers. */
|
|
2869
|
+
protected readonly popoverKind: _angular_core.Signal<"auto" | "manual">;
|
|
2403
2870
|
showPopover(): void;
|
|
2404
2871
|
hidePopover(): void;
|
|
2405
|
-
togglePopover(event
|
|
2872
|
+
togglePopover(event?: MouseEvent): void;
|
|
2873
|
+
/**
|
|
2874
|
+
* The panel anchors to the detached `anchor` when one resolves (id strings
|
|
2875
|
+
* are looked up now, at open time), else to the trigger span.
|
|
2876
|
+
*/
|
|
2877
|
+
private applyAnchor;
|
|
2878
|
+
protected onToggle(event: Event): void;
|
|
2879
|
+
protected closeFromButton(): void;
|
|
2880
|
+
protected onTriggerClick(event: MouseEvent): void;
|
|
2881
|
+
private readonly openDelayMs;
|
|
2882
|
+
private readonly closeDelayMs;
|
|
2883
|
+
protected onTriggerEnter(): void;
|
|
2884
|
+
protected onTriggerLeave(): void;
|
|
2885
|
+
protected onTriggerFocusIn(): void;
|
|
2886
|
+
protected onTriggerFocusOut(): void;
|
|
2887
|
+
/** Resting the pointer inside the panel must not dismiss it (hoverable). */
|
|
2888
|
+
protected onPanelEnter(): void;
|
|
2889
|
+
protected onPanelLeave(): void;
|
|
2890
|
+
/**
|
|
2891
|
+
* Tooltip panels are `manual`, so Escape is ours: dismiss without moving
|
|
2892
|
+
* focus, and stop propagation so an enclosing dialog stays open. Capture
|
|
2893
|
+
* phase, document-level — the pointer may be nowhere near the trigger.
|
|
2894
|
+
*/
|
|
2895
|
+
private attachTooltipEscape;
|
|
2406
2896
|
protected readonly triggerClassName: string;
|
|
2897
|
+
private readonly resolvedMaxWidth;
|
|
2407
2898
|
protected readonly popoverClassName: _angular_core.Signal<string>;
|
|
2899
|
+
/** Empty regions collapse, so bare content renders v1's single-region look. */
|
|
2900
|
+
protected readonly headerRowClassName: _angular_core.Signal<string>;
|
|
2901
|
+
protected readonly titleClassName: _angular_core.Signal<string>;
|
|
2902
|
+
protected readonly bodyClassName: _angular_core.Signal<string>;
|
|
2903
|
+
protected readonly footerRowClassName: _angular_core.Signal<string>;
|
|
2408
2904
|
protected readonly arrowClassName: _angular_core.Signal<string>;
|
|
2409
2905
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniPopoverComponent, never>;
|
|
2410
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniPopoverComponent, "uni-popover", never, { "placement": { "alias": "placement"; "required": false; "isSignal": true; }; "autoClose": { "alias": "autoClose"; "required": false; "isSignal": true; }; }, {}, never, ["[trigger]", "*"], true, never>;
|
|
2906
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniPopoverComponent, "uni-popover", never, { "placement": { "alias": "placement"; "required": false; "isSignal": true; }; "autoClose": { "alias": "autoClose"; "required": false; "isSignal": true; }; "open": { "alias": "open"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "anchor": { "alias": "anchor"; "required": false; "isSignal": true; }; "header": { "alias": "header"; "required": false; "isSignal": true; }; "closable": { "alias": "closable"; "required": false; "isSignal": true; }; "arrow": { "alias": "arrow"; "required": false; "isSignal": true; }; "maxWidth": { "alias": "maxWidth"; "required": false; "isSignal": true; }; "openDelay": { "alias": "openDelay"; "required": false; "isSignal": true; }; "closeDelay": { "alias": "closeDelay"; "required": false; "isSignal": true; }; }, { "open": "openChange"; "opened": "opened"; "closed": "closed"; }, never, ["[trigger]", "[popover-header]", "*", "[popover-footer]"], true, never>;
|
|
2411
2907
|
}
|
|
2412
2908
|
|
|
2413
2909
|
declare class UniProgressBarComponent {
|
|
@@ -2550,6 +3046,9 @@ interface UniSearchInputOptions {
|
|
|
2550
3046
|
clearSymbol?: string;
|
|
2551
3047
|
/** Suggestion list surface color token. */
|
|
2552
3048
|
listColor?: ColorKey;
|
|
3049
|
+
/** Active/hover suggestion fill; the on-color pair is derived. Must
|
|
3050
|
+
contrast with `listColor` or keyboard navigation turns invisible. */
|
|
3051
|
+
activeColor?: ContainerColorToken;
|
|
2553
3052
|
/** Suggestion list elevation token. */
|
|
2554
3053
|
listShadow?: Shadow;
|
|
2555
3054
|
/** Suggestion list radius token. */
|
|
@@ -3052,6 +3551,9 @@ interface UniTagInputOptions {
|
|
|
3052
3551
|
listColor?: ContainerColorToken;
|
|
3053
3552
|
listShadow?: Shadow;
|
|
3054
3553
|
listBorderRadius?: Radius;
|
|
3554
|
+
/** Active/hover suggestion fill; the on-color pair is derived. Must
|
|
3555
|
+
contrast with `listColor` or keyboard navigation turns invisible. */
|
|
3556
|
+
activeColor?: ContainerColorToken;
|
|
3055
3557
|
maxSuggestions?: number;
|
|
3056
3558
|
}
|
|
3057
3559
|
|
|
@@ -3276,6 +3778,9 @@ interface UniTimeInputOptions {
|
|
|
3276
3778
|
listColor?: ContainerColorToken;
|
|
3277
3779
|
listShadow?: Shadow;
|
|
3278
3780
|
listBorderRadius?: Radius;
|
|
3781
|
+
/** Active/hover option fill; the on-color pair is derived. Must contrast
|
|
3782
|
+
with `listColor` or keyboard navigation turns invisible. */
|
|
3783
|
+
activeColor?: ContainerColorToken;
|
|
3279
3784
|
maxVisibleOptions?: number;
|
|
3280
3785
|
}
|
|
3281
3786
|
|
|
@@ -3453,6 +3958,102 @@ declare class UniTooltipComponent extends BaseComponent<UniTooltipOptions> {
|
|
|
3453
3958
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniTooltipComponent, "uni-tooltip", never, { "hoverDelay": { "alias": "hoverDelay"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": true; "isSignal": true; }; "placement": { "alias": "placement"; "required": false; "isSignal": true; }; "inlineText": { "alias": "inlineText"; "required": false; "isSignal": true; }; "appendToBody": { "alias": "appendToBody"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
3454
3959
|
}
|
|
3455
3960
|
|
|
3961
|
+
/**
|
|
3962
|
+
* Advances a step from an interaction on its target instead of the Next
|
|
3963
|
+
* button. `auto` advances the moment the event fires; it defaults to true for
|
|
3964
|
+
* `click` (the gesture is complete) and false otherwise (mid-typing must not
|
|
3965
|
+
* yank the user forward — Next unlocks instead).
|
|
3966
|
+
*/
|
|
3967
|
+
interface UniTourAdvance {
|
|
3968
|
+
event: string;
|
|
3969
|
+
auto?: boolean;
|
|
3970
|
+
}
|
|
3971
|
+
interface UniTourStep {
|
|
3972
|
+
key: string;
|
|
3973
|
+
/** Element or id to spotlight; omit for a centered, page-dimming step. */
|
|
3974
|
+
target?: HTMLElement | string;
|
|
3975
|
+
title: string;
|
|
3976
|
+
body: string;
|
|
3977
|
+
placement?: Placement;
|
|
3978
|
+
backdrop?: 'spotlight' | 'dim' | 'none';
|
|
3979
|
+
targetInteractive?: boolean;
|
|
3980
|
+
advanceOn?: UniTourAdvance;
|
|
3981
|
+
}
|
|
3982
|
+
/** Theme options for the `tour` component entry. */
|
|
3983
|
+
interface UniTourOptions {
|
|
3984
|
+
progressStyle: 'dots' | 'fraction';
|
|
3985
|
+
footerGap: Size;
|
|
3986
|
+
}
|
|
3987
|
+
|
|
3988
|
+
/**
|
|
3989
|
+
* A thin sequencer over one `uni-callout`: steps spotlight their targets, a
|
|
3990
|
+
* footer walks Next/Back with dots-or-fraction progress, and `advanceOn`
|
|
3991
|
+
* gates a step behind an interaction with its target (auto-advancing for
|
|
3992
|
+
* clicks, unlocking Next otherwise — announced through one `role="status"`
|
|
3993
|
+
* region). Escape or the close button skips the tour and reports the step.
|
|
3994
|
+
*
|
|
3995
|
+
* `active` is a two-way model, so a tour is deep-linkable and inspectable;
|
|
3996
|
+
* steps whose declared target cannot be resolved are skipped (with a dev
|
|
3997
|
+
* warning) in the direction of travel rather than erroring.
|
|
3998
|
+
*/
|
|
3999
|
+
declare class UniTourComponent extends BaseComponent<UniTourOptions> {
|
|
4000
|
+
private renderer;
|
|
4001
|
+
private destroyRef;
|
|
4002
|
+
steps: _angular_core.InputSignal<UniTourStep[]>;
|
|
4003
|
+
/** The presented step index, or null when the tour is not running. */
|
|
4004
|
+
active: _angular_core.ModelSignal<number>;
|
|
4005
|
+
nextLabel: _angular_core.InputSignal<string>;
|
|
4006
|
+
backLabel: _angular_core.InputSignal<string>;
|
|
4007
|
+
skipLabel: _angular_core.InputSignal<string>;
|
|
4008
|
+
doneLabel: _angular_core.InputSignal<string>;
|
|
4009
|
+
started: _angular_core.OutputEmitterRef<void>;
|
|
4010
|
+
stepChanged: _angular_core.OutputEmitterRef<{
|
|
4011
|
+
key: string;
|
|
4012
|
+
index: number;
|
|
4013
|
+
}>;
|
|
4014
|
+
finished: _angular_core.OutputEmitterRef<void>;
|
|
4015
|
+
skipped: _angular_core.OutputEmitterRef<{
|
|
4016
|
+
key: string;
|
|
4017
|
+
index: number;
|
|
4018
|
+
}>;
|
|
4019
|
+
protected readonly calloutOpen: _angular_core.WritableSignal<boolean>;
|
|
4020
|
+
protected readonly satisfied: _angular_core.WritableSignal<boolean>;
|
|
4021
|
+
protected readonly announcement: _angular_core.WritableSignal<string>;
|
|
4022
|
+
protected readonly resolvedTarget: _angular_core.WritableSignal<HTMLElement>;
|
|
4023
|
+
private readonly presentedIndex;
|
|
4024
|
+
private gateCleanup;
|
|
4025
|
+
protected readonly index: _angular_core.Signal<number>;
|
|
4026
|
+
protected readonly currentStep: _angular_core.Signal<UniTourStep>;
|
|
4027
|
+
protected readonly isLast: _angular_core.Signal<boolean>;
|
|
4028
|
+
protected readonly clickGate: _angular_core.Signal<boolean>;
|
|
4029
|
+
/** Gated steps force an interactive target — the gate needs the gesture. */
|
|
4030
|
+
protected readonly targetInteractive: _angular_core.Signal<boolean>;
|
|
4031
|
+
protected readonly stepAriaLabel: _angular_core.Signal<string>;
|
|
4032
|
+
constructor();
|
|
4033
|
+
start(at?: number): void;
|
|
4034
|
+
next(): void;
|
|
4035
|
+
back(): void;
|
|
4036
|
+
skip(): void;
|
|
4037
|
+
protected advance(): void;
|
|
4038
|
+
/**
|
|
4039
|
+
* Present step `index`, skipping (in the direction of travel) steps whose
|
|
4040
|
+
* declared target cannot be resolved right now.
|
|
4041
|
+
*/
|
|
4042
|
+
private present;
|
|
4043
|
+
private setupGate;
|
|
4044
|
+
protected onDismissed(dismissal: UniCalloutDismissal): void;
|
|
4045
|
+
/** Arrow keys navigate only while focus is inside the panel. */
|
|
4046
|
+
protected onPanelKeydown(event: KeyboardEvent): void;
|
|
4047
|
+
private finishTour;
|
|
4048
|
+
private stopTour;
|
|
4049
|
+
protected readonly statusClassName: string;
|
|
4050
|
+
protected readonly footerClassName: _angular_core.Signal<string>;
|
|
4051
|
+
protected readonly dotsClassName: _angular_core.Signal<string>;
|
|
4052
|
+
protected readonly fractionClassName: string;
|
|
4053
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniTourComponent, never>;
|
|
4054
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniTourComponent, "uni-tour", never, { "steps": { "alias": "steps"; "required": true; "isSignal": true; }; "active": { "alias": "active"; "required": false; "isSignal": true; }; "nextLabel": { "alias": "nextLabel"; "required": false; "isSignal": true; }; "backLabel": { "alias": "backLabel"; "required": false; "isSignal": true; }; "skipLabel": { "alias": "skipLabel"; "required": false; "isSignal": true; }; "doneLabel": { "alias": "doneLabel"; "required": false; "isSignal": true; }; }, { "active": "activeChange"; "started": "started"; "stepChanged": "stepChanged"; "finished": "finished"; "skipped": "skipped"; }, never, never, true, never>;
|
|
4055
|
+
}
|
|
4056
|
+
|
|
3456
4057
|
declare class BodyRenderDirective implements OnInit {
|
|
3457
4058
|
private el;
|
|
3458
4059
|
private renderer;
|
|
@@ -3471,5 +4072,5 @@ declare class DragAndDropDirective {
|
|
|
3471
4072
|
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<DragAndDropDirective, "[uni-drag-n-drop], [dragAndDrop]", never, {}, { "onFileDropped": "onFileDropped"; }, never, never, true, never>;
|
|
3472
4073
|
}
|
|
3473
4074
|
|
|
3474
|
-
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, UniCalendarComponent, UniCardComponent, UniCardContentComponent, UniCardHeaderComponent, UniCenterComponent, UniCheckboxComponent, UniDataSearchComponent, UniDataTableComponent, UniDateInputComponent, UniDateTimeInputComponent, 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, UniTimeInputComponent, UniToggleComponent, UniTooltipComponent, UniWrapComponent, acceptableFile, addDays, addMonths, anchorArrowStyles, anchorStyles, buildMonthGrid, createListboxNavigation, dayOfWeek, daysInMonth, formatDate, formatMonthHeading, formatTime, getFileExtension, inclusiveDayCount, isDivider, isValidDate, isoDate, joinDateTime, localeDatePlaceholder, localeDefaultHour12, localeFieldOrder, localeMonthNames, localeWeekStart, monthOf, motionSafe, newAnchorName, parseDateText, parseTimeText, resolveFocusTarget, splitDateTime, timeSlots, todayIso, uniqueId, useTimer, visuallyHidden, weekdayNames };
|
|
3475
|
-
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, UniCalendarMarker, UniCalendarMode, UniCalendarOptions, UniCalendarValue, UniCheckboxOptions, UniDataSearchOptions, UniDataTableOptions, UniDatasource, UniDate, UniDateInputOptions, UniDateInputRejection, UniDateRange, UniDateTime, UniDateTimeInputOptions, UniDrawerOptions, UniExpandOptions, UniInputBoxOptions, UniMenuItemOptions, UniMenuOptions, UniMonthGridCell, UniMultiSelectDropdownOptions, UniNotificationBadgeOptions, UniPaginatorOptions, UniRadioOption, UniRadioOptions, UniSearchInputOptions, UniSkeletonOptions, UniSliderOptions, UniStatOptions, UniTabsOptions, UniTagInputOptions, UniTagItem, UniTagOptions, UniTagRejection, UniTagSuggestion, UniTagValue, UniTextareaOptions, UniTime, UniTimeInputOptions, UniTimeInputRejection, UniToggleOptions, UniWeekdayName };
|
|
4075
|
+
export { BodyRenderDirective, ConfirmationDialogComponent, DragAndDropDirective, FOCUSABLE_SELECTOR, ListboxNavigation, LocalStorageService, NotificationService, NotificationsComponent, RippleDirective, TRANSFORM_ORIGINS, ThemeService, UNI_THEMES, UniAlertComponent, UniAppBarComponent, UniAvatarComponent, UniAvatarGroupComponent, UniBackgroundComponent, UniBadgeComponent, UniBaseDatasource, UniBoxComponent, UniBreadcrumbComponent, UniButtonComponent, UniButtonGroupComponent, UniCalendarComponent, UniCalloutComponent, UniCardComponent, UniCardContentComponent, UniCardHeaderComponent, UniCenterComponent, UniCheckboxComponent, UniComboboxComponent, UniDataSearchComponent, UniDataTableComponent, UniDateInputComponent, UniDateTimeInputComponent, 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, UniTimeInputComponent, UniToggleComponent, UniTooltipComponent, UniTourComponent, UniWrapComponent, acceptableFile, addDays, addMonths, anchorArrowStyles, anchorStyles, buildMonthGrid, clearAnchorName, createListboxNavigation, dayOfWeek, daysInMonth, discreteOverlayTransition, focusableElements, formatDate, formatMonthHeading, formatTime, getFileExtension, inclusiveDayCount, isDivider, isToggleOpen, isValidDate, isoDate, joinDateTime, listboxPopupStyles, localeDatePlaceholder, localeDefaultHour12, localeFieldOrder, localeMonthNames, localeWeekStart, monthOf, motionSafe, newAnchorName, parseDateText, parseTimeText, resolveElement, resolveFocusTarget, restoreOverlayFocus, setAnchorName, splitDateTime, spotlightStyles, timeSlots, todayIso, uniqueId, useTimer, visuallyHidden, weekdayNames };
|
|
4076
|
+
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, SpotlightOptions, SpotlightStyles, UniAppBarOptions, UniAvatarGroupOptions, UniAvatarOptions, UniBreadcrumbOptions, UniCalendarMarker, UniCalendarMode, UniCalendarOptions, UniCalendarValue, UniCalloutDismissal, UniCalloutOptions, UniCheckboxOptions, UniComboboxOptions, UniComboboxRejection, UniDataSearchOptions, UniDataTableOptions, UniDatasource, UniDate, UniDateInputOptions, UniDateInputRejection, UniDateRange, UniDateTime, UniDateTimeInputOptions, UniDrawerOptions, UniExpandOptions, UniInputBoxOptions, UniListboxPopupOptions, UniMenuItemOptions, UniMenuOptions, UniMonthGridCell, UniMultiSelectDropdownOptions, UniNotificationBadgeOptions, UniPaginatorOptions, UniPopoverOptions, UniRadioOption, UniRadioOptions, UniSearchInputOptions, UniSkeletonOptions, UniSliderOptions, UniStatOptions, UniTabsOptions, UniTagInputOptions, UniTagItem, UniTagOptions, UniTagRejection, UniTagSuggestion, UniTagValue, UniTextareaOptions, UniTime, UniTimeInputOptions, UniTimeInputRejection, UniToggleOptions, UniTourAdvance, UniTourOptions, UniTourStep, UniWeekdayName };
|