@guildofgleks/ui 21.12.0 → 21.13.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/AGENTS.md +179 -28
- package/CHANGELOG.md +612 -0
- package/README.md +23 -3
- package/TOKENS.md +52 -51
- package/fesm2022/guildofgleks-ui-datepicker.mjs +20 -0
- package/fesm2022/guildofgleks-ui-datepicker.mjs.map +1 -0
- package/fesm2022/guildofgleks-ui-dialog.mjs +20 -0
- package/fesm2022/guildofgleks-ui-dialog.mjs.map +1 -0
- package/fesm2022/guildofgleks-ui-shared.mjs +4692 -0
- package/fesm2022/guildofgleks-ui-shared.mjs.map +1 -0
- package/fesm2022/guildofgleks-ui-table.mjs +20 -0
- package/fesm2022/guildofgleks-ui-table.mjs.map +1 -0
- package/fesm2022/guildofgleks-ui.mjs +607 -3760
- package/fesm2022/guildofgleks-ui.mjs.map +1 -1
- package/package.json +17 -1
- package/styles/button.css +5 -5
- package/styles/presets/parchment.css +89 -86
- package/styles/presets/terminal.css +107 -102
- package/styles/theme.css +128 -23
- package/types/guildofgleks-ui-datepicker.d.ts +1 -0
- package/types/guildofgleks-ui-dialog.d.ts +1 -0
- package/types/guildofgleks-ui-shared.d.ts +2000 -0
- package/types/guildofgleks-ui-table.d.ts +1 -0
- package/types/guildofgleks-ui.d.ts +279 -1226
|
@@ -1,138 +1,12 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
|
-
import { TemplateRef,
|
|
3
|
-
import * as
|
|
2
|
+
import { TemplateRef, InjectionToken, Signal, ElementRef, DoCheck, Type, Injector, OnDestroy } from '@angular/core';
|
|
3
|
+
import * as _guildofgleks_ui_shared from '@guildofgleks/ui/shared';
|
|
4
|
+
import { GogVariant, GogSeverity, GogSize, GogAriaHasPopup, GogIconName, GogAlertLive, GogDropdownOption, GogDropdownBase, GogBadgePosition, GogTagVariant, GogOptionAccessor, GogButtonToggleAppearance, GogOrientation, GogTabsAlign, GogSurfaceVariant, GogDateRange, GogDateSelectionMode, GogHourFormat, GogErrorDisplay, GogFloatLabelVariant, GogDropdownDirection, GogDropdownPlacement, GogDividerVariant, GogProgressbarMode, ToastPosition, GogInputType, GogInputMode, GogTextareaResize, GogTagShape, GogSliderRange, GogSkeletonShape, GogSkeletonAnimation, GogPaginatorRangeMode, GogScrollAxis, GogScrollSize, GogScrollOverscrollBehavior, GogSpinnerVariant, GogTooltipPosition } from '@guildofgleks/ui/shared';
|
|
5
|
+
export { GOG_CONFIG, GOG_DEPRECATIONS, GOG_ICONS, GOG_TOKEN_GROUPS, GogAlertLive, GogAriaHasPopup, GogBadgePosition, GogBuiltinIconName, GogButtonToggleAppearance, GogDateRange, GogDateSelectionMode, GogDeprecation, GogDeprecationKind, GogDividerVariant, GogDropdownBase, GogDropdownChevronDirective, GogDropdownDirection, GogDropdownFilterPosition, GogDropdownOption, GogDropdownOptionContext, GogDropdownOptionDirective, GogFloatLabelState, GogFloatLabelVariant, GogGlobalConfig, GogHourFormat, GogIconName, GogInputMode, GogInputType, GogOptionAccessor, GogOrientation, GogPaginatorRangeMode, GogProgressbarMode, GogProgressbarVariant, GogScrollAxis, GogScrollOverscrollBehavior, GogScrollSize, GogSeverity, GogSize, GogSkeletonAnimation, GogSkeletonShape, GogSliderOrientation, GogSliderRange, GogSpinnerVariant, GogSurfaceVariant, GogTabsAlign, GogTagShape, GogTagVariant, GogTextareaResize, GogTokenGroup, GogTokenLayer, GogTokenName, GogTooltipPosition, GogTooltipSide, GogVariant, ICON_DEFS, ToastPosition, addDays, addMonths, addYears, buildMonthGrid, clampDate, copyTimeOnto, daysInMonth, formatDate, getByPath, isAfterDay, isBeforeDay, isInRange, isSameDay, isSameMonth, isSameOptionValue, isWithinBounds, localeFirstDayOfWeek, monthNames, parseDate, provideGogConfig, provideGogIcons, readOption, resolveConfigured, startOfDay, weekdayNames, withTime } from '@guildofgleks/ui/shared';
|
|
4
6
|
import { ControlValueAccessor } from '@angular/forms';
|
|
7
|
+
import * as _guildofgleks_ui from '@guildofgleks/ui';
|
|
5
8
|
import * as _angular_platform_browser from '@angular/platform-browser';
|
|
6
9
|
|
|
7
|
-
type GogSize = 'xsm' | 'sm' | 'md' | 'lg' | 'slg';
|
|
8
|
-
type GogVariant = 'primary' | 'secondary' | 'outline' | 'ghost';
|
|
9
|
-
/**
|
|
10
|
-
* The `aria-haspopup` values that make sense on a button, matching the ARIA 1.2 enumeration.
|
|
11
|
-
* `true` is a synonym for `'menu'` in the spec; prefer the specific value, since a screen
|
|
12
|
-
* reader announces it ("has menu", "has dialog").
|
|
13
|
-
*/
|
|
14
|
-
type GogAriaHasPopup = boolean | 'menu' | 'listbox' | 'tree' | 'grid' | 'dialog';
|
|
15
|
-
/**
|
|
16
|
-
* How a surface paints itself, shared by `gog-card` and `gog-panel` so the two agree:
|
|
17
|
-
* - `'outlined'` — a border, no shadow. The quietest, and right for a grid of many.
|
|
18
|
-
* - `'elevated'` — the shared surface shadow (`--gog-panel-shadow`), no border.
|
|
19
|
-
* - `'filled'` — a tinted background, neither border nor shadow.
|
|
20
|
-
*/
|
|
21
|
-
type GogSurfaceVariant = 'outlined' | 'elevated' | 'filled';
|
|
22
|
-
/**
|
|
23
|
-
* Which way a component lays its children out. Shared rather than re-declared per component:
|
|
24
|
-
* `gog-radio-group`, `gog-slider`, `gog-divider`, `gog-tabs` and `gog-button-toggle-group` all
|
|
25
|
-
* mean the same thing by it, and `roving-focus.ts` picks its arrow pair from this.
|
|
26
|
-
*/
|
|
27
|
-
type GogOrientation = 'horizontal' | 'vertical';
|
|
28
|
-
type GogSpinnerVariant = 'runic' | 'ring' | 'custom';
|
|
29
|
-
type GogTagVariant = 'success' | 'danger' | 'warning' | 'info';
|
|
30
|
-
type GogTagShape = 'rounded' | 'pill';
|
|
31
|
-
type GogSkeletonShape = 'text' | 'circle' | 'rect';
|
|
32
|
-
type GogSkeletonAnimation = 'pulse' | 'wave' | 'none';
|
|
33
|
-
type GogPaginatorRangeMode = 'window' | 'ellipsis';
|
|
34
|
-
type GogSliderOrientation = GogOrientation;
|
|
35
|
-
/** A `gog-slider`'s value pair when `range` is on. `start` is always kept ≤ `end`. */
|
|
36
|
-
interface GogSliderRange {
|
|
37
|
-
start: number;
|
|
38
|
-
end: number;
|
|
39
|
-
}
|
|
40
|
-
type GogScrollAxis = 'vertical' | 'horizontal' | 'both';
|
|
41
|
-
type GogScrollSize = 'normal' | 'thin';
|
|
42
|
-
/**
|
|
43
|
-
* Mirrors the CSS `overscroll-behavior` value space directly:
|
|
44
|
-
* - `'auto'` — scrolling past this instance's edge chains to the next scrollable ancestor
|
|
45
|
-
* (a page, a dialog body, another gog-scroll), the same as an un-customized native
|
|
46
|
-
* `overflow: auto` div. The default — matches what most embedded content expects.
|
|
47
|
-
* - `'contain'` — scrolling stops dead at this instance's edge; nothing behind it moves.
|
|
48
|
-
* Suited to overlay-style panels (a dropdown, a modal) where scrolling past the end
|
|
49
|
-
* shouldn't also scroll whatever is behind them.
|
|
50
|
-
* - `'none'` — like `'contain'`, and additionally suppresses the platform's own overscroll
|
|
51
|
-
* affordances (rubber-banding, pull-to-refresh) for this instance.
|
|
52
|
-
*/
|
|
53
|
-
type GogScrollOverscrollBehavior = 'auto' | 'contain' | 'none';
|
|
54
|
-
/**
|
|
55
|
-
* Which side of the trigger the tooltip bubble renders on. `'auto'` (the default) picks
|
|
56
|
-
* whichever of the four sides has room for the bubble, preferring top, then bottom, then
|
|
57
|
-
* right, then left — see `resolveTooltipPlacement` in `tooltip-position.ts`. An explicit
|
|
58
|
-
* side still flips to its opposite if the requested side has no room but the opposite does.
|
|
59
|
-
*/
|
|
60
|
-
type GogTooltipPosition = 'auto' | 'top' | 'bottom' | 'left' | 'right';
|
|
61
|
-
/**
|
|
62
|
-
* Where a field's label sits once it "floats" out of its resting position (overlapping the
|
|
63
|
-
* field like a placeholder) on focus or once the field has content. `'none'` (the default)
|
|
64
|
-
* keeps today's static label-above-the-field layout — nothing floats.
|
|
65
|
-
* - `'in'` — floats up but stays fully inside the field's border.
|
|
66
|
-
* - `'on'` — floats up until vertically centered on the top border line.
|
|
67
|
-
* - `'over'` — floats all the way above the field, outside the border.
|
|
68
|
-
*/
|
|
69
|
-
type GogFloatLabelVariant = 'none' | 'in' | 'on' | 'over';
|
|
70
|
-
/**
|
|
71
|
-
* Which end of a dropdown panel the search box sticks to. Matches `gog-multiselect`'s
|
|
72
|
-
* `controlsPosition` vocabulary — the same idea applied to its select-all row.
|
|
73
|
-
*/
|
|
74
|
-
type GogDropdownFilterPosition = 'top' | 'bottom';
|
|
75
|
-
/** How `gog-divider` paints its rule. */
|
|
76
|
-
type GogDividerVariant = 'solid' | 'dashed' | 'dotted';
|
|
77
|
-
/**
|
|
78
|
-
* Which corner of its host a `gogBadge` sits on. Named by block/inline edge rather than
|
|
79
|
-
* left/right so it follows the writing direction in an RTL layout.
|
|
80
|
-
*/
|
|
81
|
-
type GogBadgePosition = 'top-end' | 'top-start' | 'bottom-end' | 'bottom-start';
|
|
82
|
-
/**
|
|
83
|
-
* - `'determinate'` — the bar reflects `value`.
|
|
84
|
-
* - `'indeterminate'` — work of unknown length; the bar animates and reports no value to
|
|
85
|
-
* assistive tech, which is what marks it indeterminate.
|
|
86
|
-
* - `'buffer'` — `value` plus a second, lighter `buffer` level ahead of it (streaming/preload).
|
|
87
|
-
*/
|
|
88
|
-
type GogProgressbarMode = 'determinate' | 'indeterminate' | 'buffer';
|
|
89
|
-
/**
|
|
90
|
-
* `gog-progressbar`'s colour. Wider than `GogTagVariant` by one: progress is usually just
|
|
91
|
-
* "the app is working", which is the accent colour rather than any of the four status hues —
|
|
92
|
-
* so `'accent'` is the default and the status names are the exception.
|
|
93
|
-
*/
|
|
94
|
-
type GogProgressbarVariant = GogSeverity;
|
|
95
|
-
/**
|
|
96
|
-
* What an action or a reading *means*, as opposed to how loudly it is drawn. `'accent'` is the
|
|
97
|
-
* absence of a claim — the library's own colour, and the default everywhere this appears — and
|
|
98
|
-
* the four status names are the exception, so nothing has to opt out of a severity it does not
|
|
99
|
-
* have.
|
|
100
|
-
*
|
|
101
|
-
* Deliberately orthogonal to `GogVariant` on `gog-button`: a destructive action can be filled,
|
|
102
|
-
* outlined or a ghost and is destructive in all three, so `severity` says what it does and
|
|
103
|
-
* `variant` says only how much room it takes up. Shared rather than re-declared per component —
|
|
104
|
-
* `gog-progressbar` had this exact union first, under its own name, which is kept as an alias.
|
|
105
|
-
*/
|
|
106
|
-
type GogSeverity = 'accent' | 'success' | 'danger' | 'warning' | 'info';
|
|
107
|
-
/**
|
|
108
|
-
* - `'joined'` — one segmented control, buttons sharing borders (Material's look).
|
|
109
|
-
* - `'separated'` — discrete buttons with a gap between them.
|
|
110
|
-
*/
|
|
111
|
-
type GogButtonToggleAppearance = 'joined' | 'separated';
|
|
112
|
-
/** How the tab headers distribute along the tablist. `'stretch'` makes them share the width. */
|
|
113
|
-
type GogTabsAlign = 'start' | 'center' | 'end' | 'stretch';
|
|
114
|
-
/** Whether `gog-datepicker` picks one day or a start/end pair. */
|
|
115
|
-
type GogDateSelectionMode = 'single' | 'range';
|
|
116
|
-
/** Clock convention for `gog-datepicker`'s time section. */
|
|
117
|
-
type GogHourFormat = '12' | '24';
|
|
118
|
-
/** Matches the native CSS `resize` value space, applied to `gog-textarea`'s field. */
|
|
119
|
-
type GogTextareaResize = 'vertical' | 'horizontal' | 'both' | 'none';
|
|
120
|
-
/**
|
|
121
|
-
* The `type`s `gog-inputfield` renders as a single-line text-entry field.
|
|
122
|
-
*
|
|
123
|
-
* Deliberately not the whole native list: `checkbox`, `radio`, `range`, `file`, `color`,
|
|
124
|
-
* `submit`, `hidden` and friends are different controls with different markup and different
|
|
125
|
-
* accessibility contracts — the library ships `gog-checkbox`, `gog-radio-group`, `gog-slider`
|
|
126
|
-
* and `gog-button` for those rather than making one component shape-shift.
|
|
127
|
-
*/
|
|
128
|
-
type GogInputType = 'text' | 'password' | 'email' | 'number' | 'search' | 'tel' | 'url' | 'date' | 'time' | 'datetime-local';
|
|
129
|
-
/**
|
|
130
|
-
* Mirrors the native `inputmode` attribute — the hint that decides which on-screen keyboard a
|
|
131
|
-
* touch device brings up. Worth setting whenever `type` alone doesn't imply it: a postcode or a
|
|
132
|
-
* card number is `type="text"` (no browser validation wanted) but `inputmode="numeric"`.
|
|
133
|
-
*/
|
|
134
|
-
type GogInputMode = 'none' | 'text' | 'decimal' | 'numeric' | 'tel' | 'search' | 'email' | 'url';
|
|
135
|
-
|
|
136
10
|
declare class ButtonComponent {
|
|
137
11
|
variant: _angular_core.InputSignal<GogVariant>;
|
|
138
12
|
/**
|
|
@@ -451,6 +325,113 @@ declare class AccordionComponent {
|
|
|
451
325
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AccordionComponent, "gog-accordion", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "ripple": { "alias": "ripple"; "required": false; "isSignal": true; }; "expandFirst": { "alias": "expandFirst"; "required": false; "isSignal": true; }; "multi": { "alias": "multi"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "skeletonCount": { "alias": "skeletonCount"; "required": false; "isSignal": true; }; "showChevron": { "alias": "showChevron"; "required": false; "isSignal": true; }; "headingLevel": { "alias": "headingLevel"; "required": false; "isSignal": true; }; "openIds": { "alias": "openIds"; "required": false; "isSignal": true; }; }, { "openIds": "openIdsChange"; "gogToggle": "gogToggle"; }, ["headerTpl", "chevronTpl", "contentTpl"], never, true, never>;
|
|
452
326
|
}
|
|
453
327
|
|
|
328
|
+
declare class IconComponent {
|
|
329
|
+
private readonly sanitizer;
|
|
330
|
+
/** App-registered icons; overrides a built-in of the same name. See `provideGogIcons`. */
|
|
331
|
+
private readonly registered;
|
|
332
|
+
/** A built-in name, or one registered through `provideGogIcons(...)`. */
|
|
333
|
+
readonly name: _angular_core.InputSignal<GogIconName>;
|
|
334
|
+
readonly template: _angular_core.InputSignal<TemplateRef<unknown> | null>;
|
|
335
|
+
readonly title: _angular_core.InputSignal<string>;
|
|
336
|
+
readonly ariaHidden: _angular_core.InputSignal<boolean>;
|
|
337
|
+
protected readonly ariaLabel: _angular_core.Signal<string | null>;
|
|
338
|
+
/**
|
|
339
|
+
* The markup to render, or `null` when the name resolves to nothing.
|
|
340
|
+
*
|
|
341
|
+
* An unknown name renders **nothing** and warns in dev mode — it never throws. An icon is
|
|
342
|
+
* decoration: taking an app down mid-render over a typo in a glyph name would be a far worse
|
|
343
|
+
* failure than the missing glyph, and the warning is what gets the typo fixed.
|
|
344
|
+
*/
|
|
345
|
+
protected readonly iconSvg: _angular_core.Signal<_angular_platform_browser.SafeHtml | null>;
|
|
346
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<IconComponent, never>;
|
|
347
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<IconComponent, "gog-icon", never, { "name": { "alias": "name"; "required": false; "isSignal": true; }; "template": { "alias": "template"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "ariaHidden": { "alias": "ariaHidden"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
/**
|
|
351
|
+
* Custom markup for the alert's leading icon:
|
|
352
|
+
*
|
|
353
|
+
* ```html
|
|
354
|
+
* <ng-template gogAlertIcon><my-icon /></ng-template>
|
|
355
|
+
* ```
|
|
356
|
+
*/
|
|
357
|
+
declare class GogAlertIconDirective {
|
|
358
|
+
readonly templateRef: TemplateRef<unknown>;
|
|
359
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<GogAlertIconDirective, never>;
|
|
360
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<GogAlertIconDirective, "[gogAlertIcon]", never, {}, {}, never, never, true, never>;
|
|
361
|
+
}
|
|
362
|
+
/**
|
|
363
|
+
* A persistent, in-flow message — the thing `gog-toast` is not.
|
|
364
|
+
*
|
|
365
|
+
* A toast is transient, queued and portalled to a corner; this renders where it is written and
|
|
366
|
+
* stays until something removes it. `docs/alert.md` has the argument for why it is a component
|
|
367
|
+
* rather than a class, and the short version is that it owns semantics a class cannot express.
|
|
368
|
+
*
|
|
369
|
+
* **How it announces, and why the region is a separate hidden element.** A live region has to be
|
|
370
|
+
* in the DOM *before* the text it announces lands inside it. An alert written as
|
|
371
|
+
* `@if (error()) { <gog-alert>…</gog-alert> }` arrives with its own text in one insertion, and a
|
|
372
|
+
* screen reader routinely skips that — the exact trap `gog-toast-container` exists to work
|
|
373
|
+
* around, and the reason its regions are permanently mounted. So the visible alert renders
|
|
374
|
+
* normally and a visually-hidden region beside it, empty at first, takes a copy of the text one
|
|
375
|
+
* render later. The mutation inside an existing region is what gets announced.
|
|
376
|
+
*
|
|
377
|
+
* That is also why the copy is read off the DOM rather than from an input: the body is projected
|
|
378
|
+
* content, and the component has no other way to know what it says.
|
|
379
|
+
*/
|
|
380
|
+
declare class AlertComponent {
|
|
381
|
+
/**
|
|
382
|
+
* What the message *means*. Shared with `gog-button`, `gog-progressbar` and `gogBadge`, so an
|
|
383
|
+
* alert matches the rest of an app for free. `'accent'` is the library's own colour and claims
|
|
384
|
+
* nothing, which is the right default for a notice that is neither good news nor bad.
|
|
385
|
+
*/
|
|
386
|
+
readonly severity: _angular_core.InputSignal<GogSeverity>;
|
|
387
|
+
/** Optional title, above the projected body. */
|
|
388
|
+
readonly heading: _angular_core.InputSignal<string | undefined>;
|
|
389
|
+
/** Shows the close button and enables `dismissed`. The alert never removes itself. */
|
|
390
|
+
readonly dismissible: _angular_core.InputSignal<boolean>;
|
|
391
|
+
/**
|
|
392
|
+
* Overrides the severity's own glyph. `null` suppresses the icon entirely — for an alert whose
|
|
393
|
+
* body already carries its meaning in words, and where a second signal is noise.
|
|
394
|
+
*/
|
|
395
|
+
readonly iconName: _angular_core.InputSignal<GogIconName | null | undefined>;
|
|
396
|
+
/** Projected `gogAlertIcon` template, shown in place of `iconName`. */
|
|
397
|
+
protected readonly iconSlot: _angular_core.Signal<GogAlertIconDirective | undefined>;
|
|
398
|
+
/**
|
|
399
|
+
* How this message reaches a screen reader. **Defaults from `severity`** — `danger` and
|
|
400
|
+
* `warning` interrupt, the rest wait — which is the less wrong default, since an unannounced
|
|
401
|
+
* error costs more than an over-announced notice.
|
|
402
|
+
*
|
|
403
|
+
* **Set `'off'` for an alert that is on the page when it loads.** That is the commonest case and
|
|
404
|
+
* the one the default gets wrong: a reader arriving at a page does not need it interrupted about
|
|
405
|
+
* a message that was already there. The component cannot tell the two apart — see `GogAlertLive`
|
|
406
|
+
* for what was measured before this was left to you.
|
|
407
|
+
*/
|
|
408
|
+
readonly live: _angular_core.InputSignal<GogAlertLive | undefined>;
|
|
409
|
+
/**
|
|
410
|
+
* Pressed, not dismissed: the alert stays in the DOM and the consumer decides what happens.
|
|
411
|
+
* A component that removed itself would take the focused element with it — see `docs/alert.md`
|
|
412
|
+
* §3, which is iteration 2's work.
|
|
413
|
+
*/
|
|
414
|
+
readonly dismissed: _angular_core.OutputEmitterRef<void>;
|
|
415
|
+
private readonly globalConfig;
|
|
416
|
+
protected readonly closeLabel: _angular_core.Signal<string>;
|
|
417
|
+
protected readonly hasIcon: _angular_core.Signal<boolean>;
|
|
418
|
+
protected readonly resolvedIconName: _angular_core.Signal<GogIconName>;
|
|
419
|
+
protected readonly resolvedLive: _angular_core.Signal<GogAlertLive>;
|
|
420
|
+
/** `role` and `aria-live` both, because support for either alone is uneven. */
|
|
421
|
+
protected readonly liveRole: _angular_core.Signal<"alert" | "status" | null>;
|
|
422
|
+
private readonly contentEl;
|
|
423
|
+
/**
|
|
424
|
+
* Empty until after the first render, which is the whole mechanism: the region exists, then the
|
|
425
|
+
* text arrives inside it. Filling it during the first render would announce nothing.
|
|
426
|
+
*/
|
|
427
|
+
protected readonly announcement: _angular_core.WritableSignal<string>;
|
|
428
|
+
constructor();
|
|
429
|
+
protected readonly hostClasses: _angular_core.Signal<string>;
|
|
430
|
+
protected onDismiss(): void;
|
|
431
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AlertComponent, never>;
|
|
432
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AlertComponent, "gog-alert", never, { "severity": { "alias": "severity"; "required": false; "isSignal": true; }; "heading": { "alias": "heading"; "required": false; "isSignal": true; }; "dismissible": { "alias": "dismissible"; "required": false; "isSignal": true; }; "iconName": { "alias": "iconName"; "required": false; "isSignal": true; }; "live": { "alias": "live"; "required": false; "isSignal": true; }; }, { "dismissed": "dismissed"; }, ["iconSlot"], ["*"], true, never>;
|
|
433
|
+
}
|
|
434
|
+
|
|
454
435
|
/**
|
|
455
436
|
* Headless expand/collapse primitive — a trigger toggles a content region open and
|
|
456
437
|
* closed, in place (no portal/overlay, unlike `gog-select`/`gog-multiselect`). Unopinionated
|
|
@@ -531,434 +512,6 @@ declare class GogCollapsibleContentDirective {
|
|
|
531
512
|
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<GogCollapsibleContentDirective, "[gogCollapsibleContent]", never, {}, {}, never, never, true, never>;
|
|
532
513
|
}
|
|
533
514
|
|
|
534
|
-
type GogDropdownDirection = 'auto' | 'up' | 'down';
|
|
535
|
-
interface GogDropdownPlacement {
|
|
536
|
-
direction: 'up' | 'down';
|
|
537
|
-
top: number;
|
|
538
|
-
left: number;
|
|
539
|
-
width: number;
|
|
540
|
-
maxHeight: number;
|
|
541
|
-
}
|
|
542
|
-
|
|
543
|
-
/**
|
|
544
|
-
* `'manual'` (default): the field shows `errorMessage` for as long as it is non-empty — the
|
|
545
|
-
* consumer decides when to clear it, e.g.
|
|
546
|
-
* `errorMessage="control.invalid && control.touched ? 'Required' : ''"`.
|
|
547
|
-
*
|
|
548
|
-
* `'auto'`: shown once the attached form control has been touched and is invalid — the
|
|
549
|
-
* consumer only supplies the message text, not the timing. Requires a
|
|
550
|
-
* `[formControl]` / `formControlName` on the element; without one this falls back to
|
|
551
|
-
* `'manual'`, since there is no control state to key off.
|
|
552
|
-
*/
|
|
553
|
-
type GogErrorDisplay = 'auto' | 'manual';
|
|
554
|
-
|
|
555
|
-
/**
|
|
556
|
-
* How a collection-driven component reads one field off a consumer's own object.
|
|
557
|
-
*
|
|
558
|
-
* A `string` is a property name, or a dot-path into a nested one (`'profile.city'`). A function
|
|
559
|
-
* is anything else. This is what lets `gog-select` / `gog-multiselect` take a consumer's real
|
|
560
|
-
* DTO instead of forcing everything through a `{ id, name }` shape first.
|
|
561
|
-
*/
|
|
562
|
-
type GogOptionAccessor<TOption, TResult> = string | ((option: TOption) => TResult);
|
|
563
|
-
/** Resolves `field` against `source`, following dot-paths (e.g. `"address.city"`). */
|
|
564
|
-
declare function getByPath(source: unknown, field: string): unknown;
|
|
565
|
-
/** Applies an accessor — a property path or a function — to one option. */
|
|
566
|
-
declare function readOption<TOption, TResult>(option: TOption, accessor: GogOptionAccessor<TOption, TResult>): TResult;
|
|
567
|
-
/**
|
|
568
|
-
* Whether two resolved option values refer to the same option.
|
|
569
|
-
*
|
|
570
|
-
* Primitives are compared as strings, so a `formControl` holding `'1'` still matches an option
|
|
571
|
-
* whose value is the number `1` — the library behaved this way before option values could be
|
|
572
|
-
* anything, and forms routinely stringify. Objects are compared by identity instead: coercing
|
|
573
|
-
* them would make every plain object equal to every other (`"[object Object]"`).
|
|
574
|
-
*/
|
|
575
|
-
declare function isSameOptionValue(a: unknown, b: unknown): boolean;
|
|
576
|
-
|
|
577
|
-
/**
|
|
578
|
-
* Custom markup for the trigger's chevron, on `gog-select` and `gog-multiselect`:
|
|
579
|
-
*
|
|
580
|
-
* ```html
|
|
581
|
-
* <gog-select [options]="opts">
|
|
582
|
-
* <ng-template gogDropdownChevron><gog-icon name="sort" /></ng-template>
|
|
583
|
-
* </gog-select>
|
|
584
|
-
* ```
|
|
585
|
-
*/
|
|
586
|
-
declare class GogDropdownChevronDirective {
|
|
587
|
-
readonly templateRef: TemplateRef<unknown>;
|
|
588
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<GogDropdownChevronDirective, never>;
|
|
589
|
-
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<GogDropdownChevronDirective, "[gogDropdownChevron]", never, {}, {}, never, never, true, never>;
|
|
590
|
-
}
|
|
591
|
-
/** Context handed to a `gogDropdownOption` template. */
|
|
592
|
-
interface GogDropdownOptionContext<TOption> {
|
|
593
|
-
/** The consumer's own option object, untouched. */
|
|
594
|
-
$implicit: TOption;
|
|
595
|
-
selected: boolean;
|
|
596
|
-
disabled: boolean;
|
|
597
|
-
/** The resolved label, so a custom row can decorate it rather than re-derive it. */
|
|
598
|
-
label: string;
|
|
599
|
-
}
|
|
600
|
-
/**
|
|
601
|
-
* Custom markup for one option row, on `gog-select` and `gog-multiselect`:
|
|
602
|
-
*
|
|
603
|
-
* ```html
|
|
604
|
-
* <gog-select [options]="users" optionLabel="fullName" optionValue="id" [(value)]="userId">
|
|
605
|
-
* <ng-template gogDropdownOption let-user let-selected="selected">
|
|
606
|
-
* <img [src]="user.avatar" alt="" /> {{ user.fullName }}
|
|
607
|
-
* </ng-template>
|
|
608
|
-
* </gog-select>
|
|
609
|
-
* ```
|
|
610
|
-
*/
|
|
611
|
-
declare class GogDropdownOptionDirective<TOption = unknown> {
|
|
612
|
-
readonly templateRef: TemplateRef<GogDropdownOptionContext<TOption>>;
|
|
613
|
-
static ngTemplateContextGuard<TOption>(_dir: GogDropdownOptionDirective<TOption>, ctx: unknown): ctx is GogDropdownOptionContext<TOption>;
|
|
614
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<GogDropdownOptionDirective<any>, never>;
|
|
615
|
-
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<GogDropdownOptionDirective<any>, "[gogDropdownOption]", never, {}, {}, never, never, true, never>;
|
|
616
|
-
}
|
|
617
|
-
/**
|
|
618
|
-
* The shape the listbox controls assume when their accessor inputs are left at their defaults.
|
|
619
|
-
*
|
|
620
|
-
* It is no longer required: `optionLabel` / `optionValue` / `optionDisabled` accept any property
|
|
621
|
-
* path or function, so a consumer can pass their own DTO straight through. This interface just
|
|
622
|
-
* describes what the *default* accessors (`'name'` / `'id'` / `'disabled'`) expect to find.
|
|
623
|
-
*/
|
|
624
|
-
interface GogDropdownOption {
|
|
625
|
-
id: string | number;
|
|
626
|
-
name: string;
|
|
627
|
-
disabled?: boolean;
|
|
628
|
-
}
|
|
629
|
-
/**
|
|
630
|
-
* Shared behaviour for the listbox-style controls: open/close, placement, the
|
|
631
|
-
* append-to-body overlay, click-outside, keyboard navigation and `ControlValueAccessor`
|
|
632
|
-
* plumbing. Subclasses supply only what actually differs — the value type, the panel
|
|
633
|
-
* markup, and the BEM class names used to find the trigger and the options.
|
|
634
|
-
*
|
|
635
|
-
* Exported because it appears in the public type signatures of the components that
|
|
636
|
-
* extend it; it is not meant to be used or subclassed by consumers.
|
|
637
|
-
*/
|
|
638
|
-
declare abstract class GogDropdownBase<TValue, TOption = GogDropdownOption> implements ControlValueAccessor, DoCheck {
|
|
639
|
-
private static nextUid;
|
|
640
|
-
readonly label: _angular_core.InputSignal<string>;
|
|
641
|
-
readonly ariaLabel: _angular_core.InputSignal<string>;
|
|
642
|
-
readonly placeholder: _angular_core.InputSignal<string>;
|
|
643
|
-
readonly options: _angular_core.InputSignal<TOption[]>;
|
|
644
|
-
/**
|
|
645
|
-
* How to read an option's visible text — a property path (`'name'`, `'profile.title'`) or a
|
|
646
|
-
* function. Defaults to `'name'`, matching `GogDropdownOption`.
|
|
647
|
-
*/
|
|
648
|
-
readonly optionLabel: _angular_core.InputSignal<GogOptionAccessor<TOption, string>>;
|
|
649
|
-
/**
|
|
650
|
-
* How to read the value this control emits for an option. A property path or a function, or
|
|
651
|
-
* `null` to emit **the option object itself** — which is what lets a consumer keep their own
|
|
652
|
-
* DTO end to end instead of mapping ids back to objects on every change.
|
|
653
|
-
*
|
|
654
|
-
* Defaults to `'id'`, matching `GogDropdownOption`, so existing code is unaffected.
|
|
655
|
-
*/
|
|
656
|
-
readonly optionValue: _angular_core.InputSignal<GogOptionAccessor<TOption, unknown> | null>;
|
|
657
|
-
/** How to read whether an option is disabled. Defaults to `'disabled'`. */
|
|
658
|
-
readonly optionDisabled: _angular_core.InputSignal<GogOptionAccessor<TOption, boolean>>;
|
|
659
|
-
/**
|
|
660
|
-
* Whether to offer a clear button once something is selected. Unset, falls back to
|
|
661
|
-
* `GOG_CONFIG.control.clearable`, then to the control's own default.
|
|
662
|
-
*/
|
|
663
|
-
readonly clearable: _angular_core.InputSignal<boolean | undefined>;
|
|
664
|
-
/**
|
|
665
|
-
* Accessible name for the clear button. Unset, falls back to
|
|
666
|
-
* `GOG_CONFIG.labels.clearSelection`, then to `'Clear selection'`.
|
|
667
|
-
*/
|
|
668
|
-
readonly clearAriaLabel: _angular_core.InputSignal<string | undefined>;
|
|
669
|
-
/** Instance input → `GOG_CONFIG.labels` → the built-in English default. */
|
|
670
|
-
protected readonly resolvedClearLabel: Signal<string>;
|
|
671
|
-
/**
|
|
672
|
-
* Smallest width the trigger may shrink to, as any CSS length. Only meaningful with
|
|
673
|
-
* `[fullWidth]="false"`, where the trigger otherwise sizes to whatever is currently selected
|
|
674
|
-
* and can collapse to almost nothing on a short option. Left unset it falls back to the
|
|
675
|
-
* `--gog-{select,multiselect}-min-width` token.
|
|
676
|
-
*/
|
|
677
|
-
readonly minWidth: _angular_core.InputSignal<string | null>;
|
|
678
|
-
/**
|
|
679
|
-
* Whether the panel shows a search box that narrows the option list. Unset, falls back to
|
|
680
|
-
* `GOG_CONFIG.dropdown.filter`, then to `false`.
|
|
681
|
-
*/
|
|
682
|
-
readonly filter: _angular_core.InputSignal<boolean | undefined>;
|
|
683
|
-
readonly filterPlaceholder: _angular_core.InputSignal<string>;
|
|
684
|
-
/**
|
|
685
|
-
* Which end of the panel the search box sticks to. Named to match `gog-multiselect`'s
|
|
686
|
-
* `controlsPosition`, which is the same idea for its select-all row. Unset, falls back to
|
|
687
|
-
* `GOG_CONFIG.dropdown.filterPosition`, then to `'top'`.
|
|
688
|
-
*/
|
|
689
|
-
readonly filterPosition: _angular_core.InputSignal<GogDropdownFilterPosition | undefined>;
|
|
690
|
-
/** Shown in place of the list when the query matches nothing. */
|
|
691
|
-
readonly filterEmptyMessage: _angular_core.InputSignal<string>;
|
|
692
|
-
/**
|
|
693
|
-
* How an option is matched against the query. Left null, the resolved `optionLabel` is
|
|
694
|
-
* matched case-insensitively as a substring — pass a function to search other fields, match
|
|
695
|
-
* on a prefix, or plug in your own fuzzy matcher.
|
|
696
|
-
*/
|
|
697
|
-
readonly filterMatch: _angular_core.InputSignal<((option: TOption, query: string) => boolean) | null>;
|
|
698
|
-
readonly errorMessage: _angular_core.InputSignal<string>;
|
|
699
|
-
/**
|
|
700
|
-
* See `GogErrorDisplay`. Unset, falls back to `GOG_CONFIG.control.errorDisplay`, then to
|
|
701
|
-
* `'manual'` — matching every other control in the library.
|
|
702
|
-
*/
|
|
703
|
-
readonly errorDisplay: _angular_core.InputSignal<GogErrorDisplay | undefined>;
|
|
704
|
-
/** Unset, falls back to `GOG_CONFIG.control.size`, then to `'md'`. */
|
|
705
|
-
readonly size: _angular_core.InputSignal<GogSize | undefined>;
|
|
706
|
-
/** Unset, falls back to `GOG_CONFIG.dropdown.direction`, then to `'auto'`. */
|
|
707
|
-
readonly dropdownDirection: _angular_core.InputSignal<GogDropdownDirection | undefined>;
|
|
708
|
-
/**
|
|
709
|
-
* Explicit stacking order for the panel. Left unset the panel falls back to the
|
|
710
|
-
* stylesheet's `--gog-dropdown-z`, so the default lives in CSS where a consumer can
|
|
711
|
-
* retheme it, rather than being baked into the component.
|
|
712
|
-
*/
|
|
713
|
-
readonly dropdownZIndex: _angular_core.InputSignal<number | null>;
|
|
714
|
-
/**
|
|
715
|
-
* Fixed panel width as any CSS length (`'320px'`, `'40ch'`, `'100%'`, …), applied only
|
|
716
|
-
* when `appendToBody` is set. Left unset the panel matches the trigger's width, same as
|
|
717
|
-
* the inline panel already does via CSS.
|
|
718
|
-
*/
|
|
719
|
-
readonly dropdownWidth: _angular_core.InputSignal<string | null>;
|
|
720
|
-
/**
|
|
721
|
-
* Fixed panel max-height as any CSS length, applied only when `appendToBody` is set.
|
|
722
|
-
* `px`, `%` and `vh` also feed the up/down placement math (see `resolveCssLengthPx`); any
|
|
723
|
-
* other unit still renders correctly but is invisible to that heuristic, so the panel may
|
|
724
|
-
* pick the "wrong" side close to a viewport edge. Left unset the panel keeps the existing
|
|
725
|
-
* viewport-derived, auto-flipping height.
|
|
726
|
-
*/
|
|
727
|
-
readonly dropdownMaxHeight: _angular_core.InputSignal<string | null>;
|
|
728
|
-
/** Unset, falls back to `GOG_CONFIG.dropdown.appendToBody`, then to `false`. */
|
|
729
|
-
readonly appendToBody: _angular_core.InputSignal<boolean | undefined>;
|
|
730
|
-
readonly disabled: _angular_core.InputSignal<boolean>;
|
|
731
|
-
/** Projected `gogDropdownChevron` template, replacing the built-in chevron. */
|
|
732
|
-
protected readonly chevronSlot: Signal<GogDropdownChevronDirective | undefined>;
|
|
733
|
-
/**
|
|
734
|
-
* Full width of the container by default, matching every other field-style control.
|
|
735
|
-
* Set to `false` to shrink the trigger to fit its selected label instead.
|
|
736
|
-
*/
|
|
737
|
-
readonly fullWidth: _angular_core.InputSignal<boolean>;
|
|
738
|
-
/** Unset, falls back to `GOG_CONFIG.floatLabel.variant`, then to `'none'` (off). */
|
|
739
|
-
readonly floatLabel: _angular_core.InputSignal<GogFloatLabelVariant | undefined>;
|
|
740
|
-
/** Unset, falls back to `GOG_CONFIG.floatLabel.showPlaceholder`, then to `false`. */
|
|
741
|
-
readonly floatLabelShowPlaceholder: _angular_core.InputSignal<boolean | undefined>;
|
|
742
|
-
/**
|
|
743
|
-
* Press ripple on the panel's options. Unset, falls back to `GOG_CONFIG.ripple.enabled`, then
|
|
744
|
-
* to `false`. The trigger itself never ripples — it is a field, not a button.
|
|
745
|
-
*/
|
|
746
|
-
readonly ripple: _angular_core.InputSignal<boolean | undefined>;
|
|
747
|
-
readonly isOpen: _angular_core.WritableSignal<boolean>;
|
|
748
|
-
/** Projected `gogDropdownOption` template, if the consumer supplied one. */
|
|
749
|
-
protected readonly optionSlot: Signal<GogDropdownOptionDirective<any> | undefined>;
|
|
750
|
-
/** An option's visible text, via `optionLabel`. */
|
|
751
|
-
protected labelOf(option: TOption): string;
|
|
752
|
-
/**
|
|
753
|
-
* The value this control emits for an option, via `optionValue` — or the option object
|
|
754
|
-
* itself when `optionValue` is `null`.
|
|
755
|
-
*/
|
|
756
|
-
protected valueOf(option: TOption): unknown;
|
|
757
|
-
/** Whether an option is disabled, via `optionDisabled`. Anything falsy counts as enabled. */
|
|
758
|
-
protected isOptionDisabled(option: TOption): boolean;
|
|
759
|
-
/** Context for a projected `gogDropdownOption` row. */
|
|
760
|
-
protected optionContext(option: TOption, selected: boolean): GogDropdownOptionContext<TOption>;
|
|
761
|
-
/** Shared by both controls to match a resolved option value against the current value. */
|
|
762
|
-
protected sameValue(a: unknown, b: unknown): boolean;
|
|
763
|
-
/** The `<ng-template>` holding the panel markup, rendered inline or into `<body>`. */
|
|
764
|
-
protected abstract readonly panelTemplate: Signal<TemplateRef<unknown> | undefined>;
|
|
765
|
-
/** Declared by the subclass so each control keeps its own value type. */
|
|
766
|
-
protected abstract readonly value: ModelSignal<TValue>;
|
|
767
|
-
/** Value applied when a form writes `null` / the control is reset. */
|
|
768
|
-
protected abstract readonly emptyValue: TValue;
|
|
769
|
-
/** BEM class of one option button, used to collect keyboard-navigable elements. */
|
|
770
|
-
protected abstract readonly optionClass: string;
|
|
771
|
-
/** BEM class of the focusable trigger. */
|
|
772
|
-
protected abstract readonly triggerClass: string;
|
|
773
|
-
/**
|
|
774
|
-
* BEM block that carries the size modifier — `.gog-select` vs `.gog-ms-wrapper`. Separate
|
|
775
|
-
* from `triggerClass` because in `gog-multiselect` the two are different elements.
|
|
776
|
-
*/
|
|
777
|
-
protected abstract readonly sizeBlockClass: string;
|
|
778
|
-
/** BEM block of the panel, which repeats the size modifier when appended to `<body>`. */
|
|
779
|
-
protected abstract readonly panelBlockClass: string;
|
|
780
|
-
/** Whether the control currently has a selection — drives the float-label "filled" state. */
|
|
781
|
-
protected abstract readonly hasFloatValue: Signal<boolean>;
|
|
782
|
-
/**
|
|
783
|
-
* Spacing tokens feeding the height estimate. Overridable so each control keeps the
|
|
784
|
-
* `--gog-<block>-*` names it already exposes to consumers for theming.
|
|
785
|
-
*/
|
|
786
|
-
protected readonly optionGapToken: string;
|
|
787
|
-
protected readonly optionsPaddingToken: string;
|
|
788
|
-
/** Keep in sync with the real `max-height` on the subclass's `__dropdown` block. */
|
|
789
|
-
protected readonly panelMaxHeightToken: string;
|
|
790
|
-
/** Estimated row height fed into the placement math; not a real layout property. */
|
|
791
|
-
protected readonly optionHeightToken: string;
|
|
792
|
-
/**
|
|
793
|
-
* Unique per-instance suffix, so several dropdowns on a page can't collide on DOM ids.
|
|
794
|
-
*
|
|
795
|
-
* Deliberately a bare number rather than `nextGogControlId()` (which the single-element
|
|
796
|
-
* controls use): each subclass derives *several* ids from this one instance — trigger,
|
|
797
|
-
* listbox, label, error — so what it needs is the instance number, not one finished id.
|
|
798
|
-
*/
|
|
799
|
-
protected readonly uid: number;
|
|
800
|
-
protected readonly elRef: ElementRef<any>;
|
|
801
|
-
protected readonly isBrowser: boolean;
|
|
802
|
-
private readonly document;
|
|
803
|
-
private readonly appRef;
|
|
804
|
-
private readonly destroyRef;
|
|
805
|
-
private readonly ngControl;
|
|
806
|
-
/** `protected` so subclasses can resolve their own inputs against the same config object. */
|
|
807
|
-
protected readonly globalConfig: _guildofgleks_ui.GogGlobalConfig;
|
|
808
|
-
private readonly overlay;
|
|
809
|
-
/** Set from `(focus)`/`(blur)` on the trigger — see `onFocusIn`/`onFocusOut`. */
|
|
810
|
-
protected readonly isFocused: _angular_core.WritableSignal<boolean>;
|
|
811
|
-
/** Instance input → `GOG_CONFIG` → the component's own default. See `resolveConfigured`. */
|
|
812
|
-
protected readonly resolvedSize: Signal<GogSize>;
|
|
813
|
-
protected readonly rippleEnabled: Signal<boolean>;
|
|
814
|
-
protected readonly resolvedErrorDisplay: Signal<GogErrorDisplay>;
|
|
815
|
-
protected readonly resolvedAppendToBody: Signal<boolean>;
|
|
816
|
-
protected readonly resolvedDropdownDirection: Signal<GogDropdownDirection>;
|
|
817
|
-
/**
|
|
818
|
-
* The single size modifier for the wrapper, replacing one `[class.<block>--<size>]` binding
|
|
819
|
-
* per size. Empty for `'md'`: that is the default size and has no modifier rule of its own —
|
|
820
|
-
* every `--gog-<block>-size-*` chain bottoms out at the `md` tokens.
|
|
821
|
-
*/
|
|
822
|
-
protected readonly sizeClass: Signal<string>;
|
|
823
|
-
/**
|
|
824
|
-
* Same modifier repeated on the panel, but only when it is appended to `<body>` — outside
|
|
825
|
-
* the component's subtree the panel no longer inherits the wrapper's size tokens, so it has
|
|
826
|
-
* to carry them itself. See the `--portal` blocks in the component stylesheets.
|
|
827
|
-
*/
|
|
828
|
-
protected readonly panelSizeClass: Signal<string>;
|
|
829
|
-
private readonly cvaDisabled;
|
|
830
|
-
private readonly errorState;
|
|
831
|
-
protected readonly isDisabled: Signal<boolean>;
|
|
832
|
-
protected readonly dropdownDirectionState: _angular_core.WritableSignal<"up" | "down">;
|
|
833
|
-
protected readonly panelPlacement: _angular_core.WritableSignal<GogDropdownPlacement | null>;
|
|
834
|
-
/**
|
|
835
|
-
* Stacking order to write onto the panel, or null to leave it to the stylesheet.
|
|
836
|
-
*
|
|
837
|
-
* Only needed when appending to `<body>`: an inline panel inherits `--gog-dropdown-z` from
|
|
838
|
-
* its surroundings — which is how a dropdown inside a dialog ends up above the dialog —
|
|
839
|
-
* but an appended one sits outside that subtree and inherits nothing, so the value has
|
|
840
|
-
* to be resolved from the trigger and written out explicitly.
|
|
841
|
-
*/
|
|
842
|
-
protected readonly panelZIndex: _angular_core.WritableSignal<number | null>;
|
|
843
|
-
/**
|
|
844
|
-
* Explicit panel width, or null to let it size to its own content.
|
|
845
|
-
*
|
|
846
|
-
* The panel used to be pinned to the trigger's width, which broke a trigger narrower than its
|
|
847
|
-
* options: with `[fullWidth]="false"` the trigger shrinks to the *current* selection, so
|
|
848
|
-
* picking a short option cut the longer ones off in the list. It now sizes to its content with
|
|
849
|
-
* the trigger width as a floor — see `resolvedPanelMinWidth`.
|
|
850
|
-
*/
|
|
851
|
-
protected readonly resolvedPanelWidth: Signal<string | null>;
|
|
852
|
-
/** The trigger's width, used as the panel's minimum so it never renders narrower than it. */
|
|
853
|
-
protected readonly resolvedPanelMinWidth: Signal<string | null>;
|
|
854
|
-
/** `dropdownMaxHeight`, or the viewport-derived max-height from `panelPlacement`. */
|
|
855
|
-
protected readonly resolvedPanelMaxHeight: Signal<string | null>;
|
|
856
|
-
protected readonly hasError: Signal<boolean>;
|
|
857
|
-
protected readonly visibleError: Signal<string>;
|
|
858
|
-
/**
|
|
859
|
-
* Each control supplies its own default: `gog-multiselect` shipped a clear button before
|
|
860
|
-
* `clearable` existed, so it keeps one; `gog-select` opts in.
|
|
861
|
-
*/
|
|
862
|
-
protected abstract readonly clearableByDefault: boolean;
|
|
863
|
-
private readonly clearableState;
|
|
864
|
-
/** Whether to render the clear button right now — see `GogClearableState`. */
|
|
865
|
-
protected readonly showClear: Signal<boolean>;
|
|
866
|
-
protected readonly resolvedFilter: Signal<boolean>;
|
|
867
|
-
protected readonly resolvedFilterPosition: Signal<GogDropdownFilterPosition>;
|
|
868
|
-
/** Current search text. Cleared whenever the panel closes, so reopening starts fresh. */
|
|
869
|
-
protected readonly filterQuery: _angular_core.WritableSignal<string>;
|
|
870
|
-
/**
|
|
871
|
-
* The options actually rendered. Everything downstream — the loops, the keyboard navigation
|
|
872
|
-
* target list, the panel height estimate, and multiselect's select-all — reads this rather
|
|
873
|
-
* than `options()`, so filtering stays consistent instead of only hiding rows visually.
|
|
874
|
-
*/
|
|
875
|
-
protected readonly visibleOptions: Signal<TOption[]>;
|
|
876
|
-
protected onFilterInput(event: Event): void;
|
|
877
|
-
/** Resets the control to its empty value and notifies any attached form. */
|
|
878
|
-
protected clearValue(event: Event): void;
|
|
879
|
-
/**
|
|
880
|
-
* `hasFloatValue` is wrapped in a `computed` rather than passed straight through: these
|
|
881
|
-
* field initializers run before the *subclass's* do, so `this.hasFloatValue` is still
|
|
882
|
-
* undefined right here. The arrow defers the read until the signal is first evaluated, by
|
|
883
|
-
* which time the subclass has assigned it.
|
|
884
|
-
*/
|
|
885
|
-
private readonly floatLabelState;
|
|
886
|
-
protected readonly resolvedFloatLabel: Signal<GogFloatLabelVariant>;
|
|
887
|
-
protected readonly isFloatLabelActive: Signal<boolean>;
|
|
888
|
-
protected readonly isFloatLabelFloated: Signal<boolean>;
|
|
889
|
-
protected readonly effectivePlaceholder: Signal<string>;
|
|
890
|
-
/** Measured once per open rather than per scroll tick — see `refreshPanelMetrics`. */
|
|
891
|
-
private optionGap;
|
|
892
|
-
private optionsPadding;
|
|
893
|
-
private maxPanelHeight;
|
|
894
|
-
private optionHeight;
|
|
895
|
-
private repositionFrame;
|
|
896
|
-
private onChangeFn;
|
|
897
|
-
private onTouchedFn;
|
|
898
|
-
constructor();
|
|
899
|
-
/**
|
|
900
|
-
* Binds the click-outside and reposition listeners only for as long as the panel is
|
|
901
|
-
* open. Bound permanently — as host listeners were — every dropdown on the page runs a
|
|
902
|
-
* handler on every document click and every scroll frame, whether or not it is showing
|
|
903
|
-
* anything.
|
|
904
|
-
*/
|
|
905
|
-
private bindWhileOpen;
|
|
906
|
-
ngDoCheck(): void;
|
|
907
|
-
writeValue(val: TValue | null): void;
|
|
908
|
-
registerOnChange(fn: (val: TValue) => void): void;
|
|
909
|
-
registerOnTouched(fn: () => void): void;
|
|
910
|
-
setDisabledState(isDisabled: boolean): void;
|
|
911
|
-
/** Bound to `(focus)` on the trigger — only drives the float-label floated state. */
|
|
912
|
-
protected onFocusIn(): void;
|
|
913
|
-
/** Bound to `(blur)` on the trigger — only drives the float-label floated state. */
|
|
914
|
-
protected onFocusOut(): void;
|
|
915
|
-
protected toggle(): void;
|
|
916
|
-
protected open(): void;
|
|
917
|
-
protected close(): void;
|
|
918
|
-
/** Writes a new selection out to both the model and the attached form control. */
|
|
919
|
-
protected commitValue(next: TValue): void;
|
|
920
|
-
protected markTouched(): void;
|
|
921
|
-
private closeIfClickedOutside;
|
|
922
|
-
/**
|
|
923
|
-
* Coalesces bursts of scroll/resize events into one reposition per frame. Placement
|
|
924
|
-
* reads layout, so running it per event is what makes a scroll janky.
|
|
925
|
-
*/
|
|
926
|
-
private scheduleReposition;
|
|
927
|
-
/** Jumps from the trigger into the option list on ArrowDown/ArrowUp while open. */
|
|
928
|
-
protected onTriggerArrowKeydown(event: Event): void;
|
|
929
|
-
protected onOptionKeydown(event: KeyboardEvent): void;
|
|
930
|
-
protected focusTrigger(): void;
|
|
931
|
-
/** Extra chrome stacked above the options (e.g. a select-all row), in px. */
|
|
932
|
-
protected extraPanelHeight(): number;
|
|
933
|
-
private enabledOptionElements;
|
|
934
|
-
private attachOverlay;
|
|
935
|
-
/**
|
|
936
|
-
* Reads the spacing tokens that feed the height estimate. Done once per open instead of
|
|
937
|
-
* on every scroll tick, because `getComputedStyle` forces a style recalculation and the
|
|
938
|
-
* tokens cannot change while the panel is on screen.
|
|
939
|
-
*/
|
|
940
|
-
private refreshPanelMetrics;
|
|
941
|
-
/**
|
|
942
|
-
* Rough height, used only to choose up/down and to cap `max-height` before the panel
|
|
943
|
-
* has been laid out. Deliberately an estimate: measuring would require rendering the
|
|
944
|
-
* panel first, which is what we are trying to position. A resolvable `dropdownMaxHeight`
|
|
945
|
-
* replaces the row-count guess outright, since it is exact rather than estimated.
|
|
946
|
-
*/
|
|
947
|
-
private estimatePanelHeight;
|
|
948
|
-
/**
|
|
949
|
-
* The trigger's own rect, not the whole component's — a label above it or an error
|
|
950
|
-
* message below it sit in normal document flow and are not part of what the panel needs
|
|
951
|
-
* to clear. This also keeps `appendToBody` placement consistent with the inline panel,
|
|
952
|
-
* which is already positioned purely relative to the trigger via CSS.
|
|
953
|
-
*/
|
|
954
|
-
private triggerRect;
|
|
955
|
-
/** The stacking order the panel would have had if it were still inside the subtree. */
|
|
956
|
-
private resolvePanelZIndex;
|
|
957
|
-
private updatePlacement;
|
|
958
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<GogDropdownBase<any, any>, never>;
|
|
959
|
-
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<GogDropdownBase<any, any>, never, never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; "optionLabel": { "alias": "optionLabel"; "required": false; "isSignal": true; }; "optionValue": { "alias": "optionValue"; "required": false; "isSignal": true; }; "optionDisabled": { "alias": "optionDisabled"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "clearAriaLabel": { "alias": "clearAriaLabel"; "required": false; "isSignal": true; }; "minWidth": { "alias": "minWidth"; "required": false; "isSignal": true; }; "filter": { "alias": "filter"; "required": false; "isSignal": true; }; "filterPlaceholder": { "alias": "filterPlaceholder"; "required": false; "isSignal": true; }; "filterPosition": { "alias": "filterPosition"; "required": false; "isSignal": true; }; "filterEmptyMessage": { "alias": "filterEmptyMessage"; "required": false; "isSignal": true; }; "filterMatch": { "alias": "filterMatch"; "required": false; "isSignal": true; }; "errorMessage": { "alias": "errorMessage"; "required": false; "isSignal": true; }; "errorDisplay": { "alias": "errorDisplay"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "dropdownDirection": { "alias": "dropdownDirection"; "required": false; "isSignal": true; }; "dropdownZIndex": { "alias": "dropdownZIndex"; "required": false; "isSignal": true; }; "dropdownWidth": { "alias": "dropdownWidth"; "required": false; "isSignal": true; }; "dropdownMaxHeight": { "alias": "dropdownMaxHeight"; "required": false; "isSignal": true; }; "appendToBody": { "alias": "appendToBody"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "fullWidth": { "alias": "fullWidth"; "required": false; "isSignal": true; }; "floatLabel": { "alias": "floatLabel"; "required": false; "isSignal": true; }; "floatLabelShowPlaceholder": { "alias": "floatLabelShowPlaceholder"; "required": false; "isSignal": true; }; "ripple": { "alias": "ripple"; "required": false; "isSignal": true; }; }, {}, ["chevronSlot", "optionSlot"], never, true, never>;
|
|
960
|
-
}
|
|
961
|
-
|
|
962
515
|
/**
|
|
963
516
|
* A text field that suggests options as you type.
|
|
964
517
|
*
|
|
@@ -1040,7 +593,6 @@ declare class AutocompleteComponent<TOption = GogDropdownOption, TValue = string
|
|
|
1040
593
|
protected readonly panelBlockClass = "gog-autocomplete__dropdown";
|
|
1041
594
|
/** Opt-in, matching `gog-select` and `gog-inputfield`. */
|
|
1042
595
|
protected readonly clearableByDefault = false;
|
|
1043
|
-
protected readonly optionGapToken = "--gog-autocomplete-option-gap";
|
|
1044
596
|
protected readonly panelMaxHeightToken = "--gog-autocomplete-panel-max-height";
|
|
1045
597
|
protected readonly optionHeightToken = "--gog-autocomplete-option-height";
|
|
1046
598
|
private readonly config;
|
|
@@ -1094,6 +646,24 @@ declare class AutocompleteComponent<TOption = GogDropdownOption, TValue = string
|
|
|
1094
646
|
*/
|
|
1095
647
|
private editing;
|
|
1096
648
|
constructor();
|
|
649
|
+
/**
|
|
650
|
+
* Renders only the options in view instead of all of them. Off by default, with
|
|
651
|
+
* `GOG_CONFIG.dropdown.virtualize` as the app-wide default.
|
|
652
|
+
*
|
|
653
|
+
* Worth pairing with `gogLoadMore`, which solves the other half: that keeps the number of
|
|
654
|
+
* records the server sends small, and this keeps the number of rows the browser builds small.
|
|
655
|
+
* Neither implies the other — a `gogLoadMore` list that has loaded 10 000 records still stamps
|
|
656
|
+
* 10 000 rows without this.
|
|
657
|
+
*
|
|
658
|
+
* The count stays honest through `aria-setsize`/`aria-posinset`; `Ctrl+F` sees only the
|
|
659
|
+
* rendered rows and CSS targeting `:last-child` matches the last rendered one. Focus is not at
|
|
660
|
+
* risk here the way it is on `gog-select` — this is a combobox, so focus never leaves the text
|
|
661
|
+
* field.
|
|
662
|
+
*
|
|
663
|
+
* @default false
|
|
664
|
+
*/
|
|
665
|
+
readonly virtualize: _angular_core.InputSignal<boolean | undefined>;
|
|
666
|
+
protected readonly virtualizeRequest: _angular_core.InputSignal<boolean | undefined>;
|
|
1097
667
|
protected isSelected(option: TOption): boolean;
|
|
1098
668
|
protected onInput(event: Event): void;
|
|
1099
669
|
/**
|
|
@@ -1122,7 +692,7 @@ declare class AutocompleteComponent<TOption = GogDropdownOption, TValue = string
|
|
|
1122
692
|
private scheduleSearch;
|
|
1123
693
|
private cancelPendingSearch;
|
|
1124
694
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AutocompleteComponent<any, any>, never>;
|
|
1125
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AutocompleteComponent<any, any>, "gog-autocomplete", never, { "inputId": { "alias": "inputId"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "filterLocal": { "alias": "filterLocal"; "required": false; "isSignal": true; }; "minLength": { "alias": "minLength"; "required": false; "isSignal": true; }; "openOnFocus": { "alias": "openOnFocus"; "required": false; "isSignal": true; }; "searchDebounce": { "alias": "searchDebounce"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "emptyMessage": { "alias": "emptyMessage"; "required": false; "isSignal": true; }; "forceSelection": { "alias": "forceSelection"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "gogSearch": "gogSearch"; "gogLoadMore": "gogLoadMore"; }, never, never, true, never>;
|
|
695
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AutocompleteComponent<any, any>, "gog-autocomplete", never, { "inputId": { "alias": "inputId"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "filterLocal": { "alias": "filterLocal"; "required": false; "isSignal": true; }; "minLength": { "alias": "minLength"; "required": false; "isSignal": true; }; "openOnFocus": { "alias": "openOnFocus"; "required": false; "isSignal": true; }; "searchDebounce": { "alias": "searchDebounce"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "emptyMessage": { "alias": "emptyMessage"; "required": false; "isSignal": true; }; "forceSelection": { "alias": "forceSelection"; "required": false; "isSignal": true; }; "virtualize": { "alias": "virtualize"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "gogSearch": "gogSearch"; "gogLoadMore": "gogLoadMore"; }, never, never, true, never>;
|
|
1126
696
|
}
|
|
1127
697
|
|
|
1128
698
|
/**
|
|
@@ -1178,43 +748,6 @@ declare class GogBadgeDirective {
|
|
|
1178
748
|
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<GogBadgeDirective, "[gogBadge]", never, { "gogBadge": { "alias": "gogBadge"; "required": false; "isSignal": true; }; "badgePosition": { "alias": "badgePosition"; "required": false; "isSignal": true; }; "badgeVariant": { "alias": "badgeVariant"; "required": false; "isSignal": true; }; "badgeDot": { "alias": "badgeDot"; "required": false; "isSignal": true; }; "badgeMax": { "alias": "badgeMax"; "required": false; "isSignal": true; }; "badgeHidden": { "alias": "badgeHidden"; "required": false; "isSignal": true; }; "badgeAriaLabel": { "alias": "badgeAriaLabel"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
1179
749
|
}
|
|
1180
750
|
|
|
1181
|
-
/**
|
|
1182
|
-
* The glyphs the package ships. Kept as a closed union so they still autocomplete and so
|
|
1183
|
-
* `ICON_DEFS` below stays exhaustive — a `Record` over the open `GogIconName` would collapse
|
|
1184
|
-
* into an index signature and stop catching a missing definition.
|
|
1185
|
-
*/
|
|
1186
|
-
type GogBuiltinIconName = 'check' | 'close' | 'chevron-up' | 'chevron-down' | 'chevron-left' | 'chevron-right' | 'calendar' | 'clock' | 'sort' | 'sort-up' | 'sort-down' | 'success' | 'error' | 'warning' | 'info' | 'checkbox' | 'checkbox-checked' | 'eye' | 'eye-off' | 'copy' | 'search' | 'plus' | 'minus' | 'trash' | 'pencil' | 'download' | 'upload' | 'refresh' | 'filter' | 'external-link' | 'menu' | 'more-horizontal' | 'more-vertical' | 'arrow-left' | 'arrow-right' | 'user' | 'settings' | 'lock' | 'mail' | 'star' | 'star-filled';
|
|
1187
|
-
/**
|
|
1188
|
-
* Any icon `gog-icon` can render: one of the built-ins, or a name registered through
|
|
1189
|
-
* `provideGogIcons(...)`. The `(string & {})` half keeps the built-in names in autocomplete
|
|
1190
|
-
* while letting a registered name through — an open union is the point, since the set of icons
|
|
1191
|
-
* an app uses is the app's business, not the library's.
|
|
1192
|
-
*/
|
|
1193
|
-
type GogIconName = GogBuiltinIconName | (string & {});
|
|
1194
|
-
declare const ICON_DEFS: Record<GogBuiltinIconName, string>;
|
|
1195
|
-
|
|
1196
|
-
declare class IconComponent {
|
|
1197
|
-
private readonly sanitizer;
|
|
1198
|
-
/** App-registered icons; overrides a built-in of the same name. See `provideGogIcons`. */
|
|
1199
|
-
private readonly registered;
|
|
1200
|
-
/** A built-in name, or one registered through `provideGogIcons(...)`. */
|
|
1201
|
-
readonly name: _angular_core.InputSignal<GogIconName>;
|
|
1202
|
-
readonly template: _angular_core.InputSignal<TemplateRef<unknown> | null>;
|
|
1203
|
-
readonly title: _angular_core.InputSignal<string>;
|
|
1204
|
-
readonly ariaHidden: _angular_core.InputSignal<boolean>;
|
|
1205
|
-
protected readonly ariaLabel: _angular_core.Signal<string | null>;
|
|
1206
|
-
/**
|
|
1207
|
-
* The markup to render, or `null` when the name resolves to nothing.
|
|
1208
|
-
*
|
|
1209
|
-
* An unknown name renders **nothing** and warns in dev mode — it never throws. An icon is
|
|
1210
|
-
* decoration: taking an app down mid-render over a typo in a glyph name would be a far worse
|
|
1211
|
-
* failure than the missing glyph, and the warning is what gets the typo fixed.
|
|
1212
|
-
*/
|
|
1213
|
-
protected readonly iconSvg: _angular_core.Signal<_angular_platform_browser.SafeHtml | null>;
|
|
1214
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<IconComponent, never>;
|
|
1215
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<IconComponent, "gog-icon", never, { "name": { "alias": "name"; "required": false; "isSignal": true; }; "template": { "alias": "template"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "ariaHidden": { "alias": "ariaHidden"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
1216
|
-
}
|
|
1217
|
-
|
|
1218
751
|
/** Context handed to a `gogButtonToggleOption` template. */
|
|
1219
752
|
interface GogButtonToggleOptionContext<TOption> {
|
|
1220
753
|
/** The consumer's own option object, untouched. */
|
|
@@ -1759,95 +1292,6 @@ declare class CheckboxComponent implements ControlValueAccessor {
|
|
|
1759
1292
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<CheckboxComponent, "gog-checkbox", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "indeterminate": { "alias": "indeterminate"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "fullWidth": { "alias": "fullWidth"; "required": false; "isSignal": true; }; "checked": { "alias": "checked"; "required": false; "isSignal": true; }; }, { "checked": "checkedChange"; }, ["checkIconSlot"], never, true, never>;
|
|
1760
1293
|
}
|
|
1761
1294
|
|
|
1762
|
-
/**
|
|
1763
|
-
* Every date calculation `gog-datepicker` and `gog-calendar` do, as pure functions.
|
|
1764
|
-
*
|
|
1765
|
-
* Kept out of the components so the arithmetic is testable without a fixture, and so a range
|
|
1766
|
-
* calculation is written once rather than once per selection mode.
|
|
1767
|
-
*
|
|
1768
|
-
* **Everything here works in local time.** Nothing round-trips through `toISOString()` or
|
|
1769
|
-
* compares `Date` objects directly: an ISO round trip converts to UTC, which moves the date
|
|
1770
|
-
* across midnight for anyone east or west of Greenwich, and two `Date`s for "the same day"
|
|
1771
|
-
* are almost never equal because they carry different times. Comparisons go through
|
|
1772
|
-
* `startOfDay` and `isSameDay` instead. This is the single most common defect in a datepicker.
|
|
1773
|
-
*/
|
|
1774
|
-
/** A start/end pair. `end` is null while a range is half-picked. */
|
|
1775
|
-
interface GogDateRange {
|
|
1776
|
-
start: Date | null;
|
|
1777
|
-
end: Date | null;
|
|
1778
|
-
}
|
|
1779
|
-
/** Midnight local time on the same calendar day. */
|
|
1780
|
-
declare function startOfDay(date: Date): Date;
|
|
1781
|
-
/** Whether two dates fall on the same calendar day, ignoring the time of day. */
|
|
1782
|
-
declare function isSameDay(a: Date | null, b: Date | null): boolean;
|
|
1783
|
-
/** Whether two dates fall in the same calendar month. */
|
|
1784
|
-
declare function isSameMonth(a: Date | null, b: Date | null): boolean;
|
|
1785
|
-
declare function addDays(date: Date, days: number): Date;
|
|
1786
|
-
/** Days in a given month. `month` is 0-based, as `Date` uses it. */
|
|
1787
|
-
declare function daysInMonth(year: number, month: number): number;
|
|
1788
|
-
/**
|
|
1789
|
-
* Adds whole months, **clamping the day** to the target month's length: 31 January plus one
|
|
1790
|
-
* month is 28 February, not 3 March. `Date.setMonth` does the latter, which is why this is
|
|
1791
|
-
* not a one-liner.
|
|
1792
|
-
*/
|
|
1793
|
-
declare function addMonths(date: Date, months: number): Date;
|
|
1794
|
-
declare function addYears(date: Date, years: number): Date;
|
|
1795
|
-
/** Day-granularity comparison: `a` is strictly before `b`'s day. */
|
|
1796
|
-
declare function isBeforeDay(a: Date, b: Date): boolean;
|
|
1797
|
-
/** Day-granularity comparison: `a` is strictly after `b`'s day. */
|
|
1798
|
-
declare function isAfterDay(a: Date, b: Date): boolean;
|
|
1799
|
-
/** Whether `date`'s day falls within `[min, max]`, either bound optional. */
|
|
1800
|
-
declare function isWithinBounds(date: Date, min: Date | null, max: Date | null): boolean;
|
|
1801
|
-
/** Whether `date`'s day falls inside a range, inclusive of both ends. */
|
|
1802
|
-
declare function isInRange(date: Date, start: Date | null, end: Date | null): boolean;
|
|
1803
|
-
/** Pulls `date` inside `[min, max]`, keeping its time of day. */
|
|
1804
|
-
declare function clampDate(date: Date, min: Date | null, max: Date | null): Date;
|
|
1805
|
-
/** A new date on `day`'s calendar day carrying `time`'s clock. */
|
|
1806
|
-
declare function copyTimeOnto(day: Date, time: Date): Date;
|
|
1807
|
-
/** A new date on the same day with the clock replaced. */
|
|
1808
|
-
declare function withTime(date: Date, hours: number, minutes: number, seconds?: number): Date;
|
|
1809
|
-
/**
|
|
1810
|
-
* The six-week grid a month is drawn on, always 6×7 so the calendar's height never changes as
|
|
1811
|
-
* you page through months — a grid that grows and shrinks pushes the rest of the page around
|
|
1812
|
-
* and moves the button you were about to click.
|
|
1813
|
-
*
|
|
1814
|
-
* `firstDayOfWeek` is 0 (Sunday) to 6 (Saturday). Leading and trailing cells come from the
|
|
1815
|
-
* neighbouring months, as every calendar does.
|
|
1816
|
-
*/
|
|
1817
|
-
declare function buildMonthGrid(year: number, month: number, firstDayOfWeek: number): Date[][];
|
|
1818
|
-
/** Weekday names in `locale`, rotated so `firstDayOfWeek` comes first. */
|
|
1819
|
-
declare function weekdayNames(locale: string, firstDayOfWeek: number, style?: 'short' | 'narrow' | 'long'): string[];
|
|
1820
|
-
/** Month names in `locale`. */
|
|
1821
|
-
declare function monthNames(locale: string, style?: 'long' | 'short'): string[];
|
|
1822
|
-
/**
|
|
1823
|
-
* The first day of the week for a locale, from `Intl.Locale.prototype.getWeekInfo` where the
|
|
1824
|
-
* engine has it, falling back to Monday.
|
|
1825
|
-
*
|
|
1826
|
-
* `getWeekInfo` reports 1–7 with 1 = Monday and 7 = Sunday; `Date.getDay()` uses 0 = Sunday.
|
|
1827
|
-
* Converting between the two is exactly the kind of off-by-one that silently shifts a whole
|
|
1828
|
-
* calendar by a day, which is why it happens here once.
|
|
1829
|
-
*/
|
|
1830
|
-
declare function localeFirstDayOfWeek(locale: string): number;
|
|
1831
|
-
/**
|
|
1832
|
-
* Formats a date against a token pattern.
|
|
1833
|
-
*
|
|
1834
|
-
* Supported tokens: `yyyy`, `MM`, `dd`, `HH` (24h), `hh` (12h), `mm`, `ss`, `a` (AM/PM).
|
|
1835
|
-
* Anything else is copied through literally.
|
|
1836
|
-
*
|
|
1837
|
-
* Deliberately **not** `Intl.DateTimeFormat`: this pattern is also what `parseDate` reads, and
|
|
1838
|
-
* a formatter whose output cannot be parsed back is how a typed date silently becomes a
|
|
1839
|
-
* different one. `Intl` is still used for month and weekday *names*, which are never parsed.
|
|
1840
|
-
*/
|
|
1841
|
-
declare function formatDate(date: Date, pattern: string): string;
|
|
1842
|
-
/**
|
|
1843
|
-
* Reads a date back out of text written in `pattern`. Returns `null` when the text doesn't
|
|
1844
|
-
* match, or matches but isn't a real date (`31.02.2026`).
|
|
1845
|
-
*
|
|
1846
|
-
* The out-of-range check matters: `new Date(2026, 1, 31)` happily rolls over to 3 March, so a
|
|
1847
|
-
* typo would be accepted as a different date rather than rejected.
|
|
1848
|
-
*/
|
|
1849
|
-
declare function parseDate(text: string, pattern: string): Date | null;
|
|
1850
|
-
|
|
1851
1295
|
/** What `gog-calendar` and `gog-datepicker` carry, depending on `selectionMode`. */
|
|
1852
1296
|
type GogDatepickerValue = Date | GogDateRange | null;
|
|
1853
1297
|
/** One rendered day cell. Precomputed so the template stays free of logic. */
|
|
@@ -2341,7 +1785,7 @@ declare class ToggleComponent implements ControlValueAccessor {
|
|
|
2341
1785
|
readonly disabled: _angular_core.InputSignal<boolean>;
|
|
2342
1786
|
readonly fullWidth: _angular_core.InputSignal<boolean>;
|
|
2343
1787
|
/** Which side of the switch the label sits on. */
|
|
2344
|
-
readonly labelPosition: _angular_core.InputSignal<"
|
|
1788
|
+
readonly labelPosition: _angular_core.InputSignal<"end" | "start">;
|
|
2345
1789
|
/**
|
|
2346
1790
|
* Text rendered *inside* the track — the one thing a checkbox genuinely cannot do, and what
|
|
2347
1791
|
* makes a switch readable at a glance in a dense settings list. Both must be short; the
|
|
@@ -2580,7 +2024,7 @@ interface DialogRef<TResult = unknown> {
|
|
|
2580
2024
|
declare const DIALOG_REF: InjectionToken<DialogRef<unknown>>;
|
|
2581
2025
|
|
|
2582
2026
|
type ToastType = 'success' | 'error' | 'warning' | 'info';
|
|
2583
|
-
|
|
2027
|
+
|
|
2584
2028
|
interface Toast {
|
|
2585
2029
|
id: string;
|
|
2586
2030
|
message: string;
|
|
@@ -3192,6 +2636,29 @@ declare class SelectComponent<TOption = GogDropdownOption, TValue = string | num
|
|
|
3192
2636
|
* `WritableSignal<string | null>` keeps typing exactly as before.
|
|
3193
2637
|
*/
|
|
3194
2638
|
readonly value: _angular_core.ModelSignal<TValue>;
|
|
2639
|
+
/**
|
|
2640
|
+
* Renders only the options in view instead of all of them.
|
|
2641
|
+
*
|
|
2642
|
+
* For lists long enough that stamping every row is the cost: 10 000 options build 10 000 DOM
|
|
2643
|
+
* nodes to show about six, which measures at 216ms of build and layout before Angular does any
|
|
2644
|
+
* of its own work, and 50 000 at over a second. Windowed, that is a fixed ~20 rows whatever the
|
|
2645
|
+
* count is.
|
|
2646
|
+
*
|
|
2647
|
+
* **Opt in per field, or app-wide with `GOG_CONFIG.dropdown.virtualize`; never automatic.** A
|
|
2648
|
+
* windowed list behaves differently in ways nothing about the data predicts -- `Ctrl+F` finds
|
|
2649
|
+
* only what is rendered, a screen reader's "list all items" reads the window rather than the
|
|
2650
|
+
* list (the count stays honest through `aria-setsize`, the rows do not), and CSS targeting
|
|
2651
|
+
* `:last-child` matches the last *rendered* row.
|
|
2652
|
+
*
|
|
2653
|
+
* Two things it also changes, both only while it is on. Scrolling a keyboard-focused row out
|
|
2654
|
+
* of view hands focus back to the trigger, because the row it was on no longer exists. And the
|
|
2655
|
+
* rows are laid out by a spacer above and below rather than by their own count, so a consumer
|
|
2656
|
+
* stylesheet reaching into the options list by position will not find what it expects.
|
|
2657
|
+
*
|
|
2658
|
+
* @default false
|
|
2659
|
+
*/
|
|
2660
|
+
readonly virtualize: _angular_core.InputSignal<boolean | undefined>;
|
|
2661
|
+
protected readonly virtualizeRequest: _angular_core.InputSignal<boolean | undefined>;
|
|
3195
2662
|
protected readonly panelTemplate: _angular_core.Signal<TemplateRef<unknown> | undefined>;
|
|
3196
2663
|
/** A cleared select is `null`, whatever `TValue` the consumer bound. */
|
|
3197
2664
|
protected readonly emptyValue: TValue;
|
|
@@ -3201,7 +2668,6 @@ declare class SelectComponent<TOption = GogDropdownOption, TValue = string | num
|
|
|
3201
2668
|
protected readonly clearableByDefault = false;
|
|
3202
2669
|
protected readonly sizeBlockClass = "gog-select";
|
|
3203
2670
|
protected readonly panelBlockClass = "gog-select__dropdown";
|
|
3204
|
-
protected readonly optionGapToken = "--gog-select-option-gap";
|
|
3205
2671
|
protected readonly panelMaxHeightToken = "--gog-select-panel-max-height";
|
|
3206
2672
|
protected readonly optionHeightToken = "--gog-select-option-height";
|
|
3207
2673
|
protected readonly triggerId: _angular_core.Signal<string>;
|
|
@@ -3214,11 +2680,9 @@ declare class SelectComponent<TOption = GogDropdownOption, TValue = string | num
|
|
|
3214
2680
|
protected isSelected(option: TOption): boolean;
|
|
3215
2681
|
protected selectOption(option: TOption, event: MouseEvent): void;
|
|
3216
2682
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SelectComponent<any, any>, never>;
|
|
3217
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SelectComponent<any, any>, "gog-select", never, { "inputId": { "alias": "inputId"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
|
|
2683
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SelectComponent<any, any>, "gog-select", never, { "inputId": { "alias": "inputId"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "virtualize": { "alias": "virtualize"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
|
|
3218
2684
|
}
|
|
3219
2685
|
|
|
3220
|
-
type GogTooltipSide = 'top' | 'bottom' | 'left' | 'right';
|
|
3221
|
-
|
|
3222
2686
|
interface GogMenuPlacement {
|
|
3223
2687
|
direction: 'up' | 'down';
|
|
3224
2688
|
/** Viewport offset for a menu that drops down. `null` for one that flips up. */
|
|
@@ -3439,6 +2903,19 @@ declare class MultiselectComponent<TOption = GogDropdownOption, TValue = string
|
|
|
3439
2903
|
* themselves when `optionValue` is `null`.
|
|
3440
2904
|
*/
|
|
3441
2905
|
readonly value: _angular_core.ModelSignal<TValue[]>;
|
|
2906
|
+
/**
|
|
2907
|
+
* Renders only the options in view instead of all of them. Off by default, with
|
|
2908
|
+
* `GOG_CONFIG.dropdown.virtualize` as the app-wide default.
|
|
2909
|
+
*
|
|
2910
|
+
* Everything `gog-select`'s own `virtualize` documents applies here unchanged — the count stays
|
|
2911
|
+
* honest through `aria-setsize`/`aria-posinset`, `Ctrl+F` sees only rendered rows, CSS
|
|
2912
|
+
* targeting `:last-child` matches the last rendered one, and scrolling a keyboard-focused row
|
|
2913
|
+
* out of view hands focus back to the trigger.
|
|
2914
|
+
*
|
|
2915
|
+
* @default false
|
|
2916
|
+
*/
|
|
2917
|
+
readonly virtualize: _angular_core.InputSignal<boolean | undefined>;
|
|
2918
|
+
protected readonly virtualizeRequest: _angular_core.InputSignal<boolean | undefined>;
|
|
3442
2919
|
protected readonly panelTemplate: _angular_core.Signal<TemplateRef<unknown> | undefined>;
|
|
3443
2920
|
protected readonly emptyValue: TValue[];
|
|
3444
2921
|
protected readonly optionClass = "gog-ms__option";
|
|
@@ -3483,7 +2960,7 @@ declare class MultiselectComponent<TOption = GogDropdownOption, TValue = string
|
|
|
3483
2960
|
constructor();
|
|
3484
2961
|
protected extraPanelHeight(): number;
|
|
3485
2962
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<MultiselectComponent<any, any>, never>;
|
|
3486
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<MultiselectComponent<any, any>, "gog-multiselect", never, { "showControls": { "alias": "showControls"; "required": false; "isSignal": true; }; "controlsPosition": { "alias": "controlsPosition"; "required": false; "isSignal": true; }; "selectAllLabel": { "alias": "selectAllLabel"; "required": false; "isSignal": true; }; "clearAllLabel": { "alias": "clearAllLabel"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, ["clearIconSlot"], never, true, never>;
|
|
2963
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<MultiselectComponent<any, any>, "gog-multiselect", never, { "showControls": { "alias": "showControls"; "required": false; "isSignal": true; }; "controlsPosition": { "alias": "controlsPosition"; "required": false; "isSignal": true; }; "selectAllLabel": { "alias": "selectAllLabel"; "required": false; "isSignal": true; }; "clearAllLabel": { "alias": "clearAllLabel"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "virtualize": { "alias": "virtualize"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, ["clearIconSlot"], never, true, never>;
|
|
3487
2964
|
}
|
|
3488
2965
|
|
|
3489
2966
|
declare class SliderComponent implements ControlValueAccessor, DoCheck {
|
|
@@ -4152,7 +3629,7 @@ declare class TableComponent<T extends object> {
|
|
|
4152
3629
|
readonly showTotal: _angular_core.InputSignal<boolean>;
|
|
4153
3630
|
readonly emptyPlaceholder: _angular_core.InputSignal<string>;
|
|
4154
3631
|
/** Alignment of pagination controls */
|
|
4155
|
-
readonly paginatorPosition: _angular_core.InputSignal<"left" | "
|
|
3632
|
+
readonly paginatorPosition: _angular_core.InputSignal<"left" | "center" | "right">;
|
|
4156
3633
|
/** Alignment of total count label (only when showTotal=true) */
|
|
4157
3634
|
readonly totalPosition: _angular_core.InputSignal<"left" | "right" | "opposite">;
|
|
4158
3635
|
/** Show loading spinner instead of rows */
|
|
@@ -4248,6 +3725,109 @@ declare class TableComponent<T extends object> {
|
|
|
4248
3725
|
}>;
|
|
4249
3726
|
protected readonly hasSelection: _angular_core.Signal<boolean>;
|
|
4250
3727
|
protected readonly hasSelectionColumn: _angular_core.Signal<boolean>;
|
|
3728
|
+
/**
|
|
3729
|
+
* Renders only the rows in view instead of all of them.
|
|
3730
|
+
*
|
|
3731
|
+
* **Requires `maxHeight` and `fullWidth`**, and does nothing without them — with a dev-mode
|
|
3732
|
+
* warning saying which is missing, rather than half-working:
|
|
3733
|
+
*
|
|
3734
|
+
* - Without `maxHeight` the table's scroller is exactly as tall as its content and never scrolls
|
|
3735
|
+
* vertically, so there is no viewport to compute a window from. This is the same constraint
|
|
3736
|
+
* `stickyHeader` already documents.
|
|
3737
|
+
* - `fullWidth="false"` means `table-layout: auto`, and the browser then sizes columns from the
|
|
3738
|
+
* cells that are *present*. Measured: rendering 2 of 24 rows moved columns by up to 7.8px, so
|
|
3739
|
+
* a windowed table would shift its own columns as you scroll.
|
|
3740
|
+
*
|
|
3741
|
+
* What it changes while it is on, beyond speed: `Ctrl+F` finds only the rendered rows, CSS
|
|
3742
|
+
* targeting `:last-child` matches the last rendered one, and — with `interactiveRows` — scrolling
|
|
3743
|
+
* a focused row out of view moves focus to the scroll region, because the row it was on no longer
|
|
3744
|
+
* exists. `aria-rowcount` and `aria-rowindex` keep the announced count and position honest.
|
|
3745
|
+
*
|
|
3746
|
+
* Not a substitute for `[lazy]` and not substituted by it: `lazy` keeps the *fetch* small and
|
|
3747
|
+
* still stamps every row it is handed.
|
|
3748
|
+
*
|
|
3749
|
+
* @default false
|
|
3750
|
+
*/
|
|
3751
|
+
readonly virtualize: _angular_core.InputSignal<boolean>;
|
|
3752
|
+
private readonly elRef;
|
|
3753
|
+
private readonly isBrowser;
|
|
3754
|
+
private readonly ownDestroyRef;
|
|
3755
|
+
/** The scroller's real geometry, fed from `gog-scroll`'s own `(gogScroll)`. */
|
|
3756
|
+
private readonly viewport;
|
|
3757
|
+
/**
|
|
3758
|
+
* What to assume for a row that has never been rendered.
|
|
3759
|
+
*
|
|
3760
|
+
* Seeded from `maxHeight` is impossible — that is the viewport, not a row — so it starts at a
|
|
3761
|
+
* constant and is replaced by the first row actually measured. A seed, not a claim: it governs
|
|
3762
|
+
* only the frames before any row has rendered, and being wrong there costs one re-render rather
|
|
3763
|
+
* than a drifting scroll position.
|
|
3764
|
+
*/
|
|
3765
|
+
private readonly estimatedRowHeight;
|
|
3766
|
+
/** Windowing is on only when it can be correct — see `virtualize`. */
|
|
3767
|
+
protected readonly windowingActive: _angular_core.Signal<boolean>;
|
|
3768
|
+
/**
|
|
3769
|
+
* `maxHeight` resolved to px, as the viewport's stand-in until `gog-scroll` reports a real one.
|
|
3770
|
+
*
|
|
3771
|
+
* A computed rather than a value seeded on open, which is what this was first written as and is
|
|
3772
|
+
* wrong for a reason worth keeping: a component's constructor runs before its inputs are set, so
|
|
3773
|
+
* a seed taken there reads `maxHeight` as `null` and the first frame renders the whole table —
|
|
3774
|
+
* exactly the frame the seed exists to prevent.
|
|
3775
|
+
*/
|
|
3776
|
+
private readonly maxHeightPx;
|
|
3777
|
+
private readonly rowWindow;
|
|
3778
|
+
protected readonly rowRange: _angular_core.Signal<_guildofgleks_ui_shared.GogVirtualRange>;
|
|
3779
|
+
/**
|
|
3780
|
+
* What the template loops over. The same array instance as `visibleRows()` when not windowing,
|
|
3781
|
+
* so nothing re-renders for the sake of a slice that changed nothing.
|
|
3782
|
+
*/
|
|
3783
|
+
protected readonly renderedRows: _angular_core.Signal<T[]>;
|
|
3784
|
+
/** Filler above and below the rendered rows, as `<tr>` heights. */
|
|
3785
|
+
protected readonly padBefore: _angular_core.Signal<number>;
|
|
3786
|
+
protected readonly padAfter: _angular_core.Signal<number>;
|
|
3787
|
+
/**
|
|
3788
|
+
* A rendered row's index **within the page**, which is what every index this component hands out
|
|
3789
|
+
* has always meant.
|
|
3790
|
+
*
|
|
3791
|
+
* Three places read it and all three would have changed meaning silently under a window:
|
|
3792
|
+
* `gogRowClick`'s `index` (public API, documented as the index within the page), the
|
|
3793
|
+
* `showRowNumbers` column, and `GogColumnBodyContext.index` in every consumer's cell template.
|
|
3794
|
+
* The same trap `gog-autocomplete`'s option id hit one iteration earlier.
|
|
3795
|
+
*/
|
|
3796
|
+
protected rowIndexOf(renderedIndex: number): number;
|
|
3797
|
+
/** Total rows the grid claims, header included — `null` when every row is present anyway. */
|
|
3798
|
+
protected readonly ariaRowCount: _angular_core.Signal<number | null>;
|
|
3799
|
+
/** 1-based position of a rendered row in the grid, header being row 1. */
|
|
3800
|
+
protected ariaRowIndex(renderedIndex: number): number | null;
|
|
3801
|
+
/** `(gogScroll)` on the table's own scroller. */
|
|
3802
|
+
protected onTableScroll(metrics: {
|
|
3803
|
+
scrollTop: number;
|
|
3804
|
+
clientHeight: number;
|
|
3805
|
+
}): void;
|
|
3806
|
+
/**
|
|
3807
|
+
* With `interactiveRows`, every row is a tab stop. A row scrolled out of the window is
|
|
3808
|
+
* unmounted, and an unmounted element holding focus drops it on `<body>` -- where the arrow keys
|
|
3809
|
+
* scroll the page instead of the table.
|
|
3810
|
+
*
|
|
3811
|
+
* Focus goes to the scroll region instead, which `gog-scroll` already makes a tab stop
|
|
3812
|
+
* (`role="region"`, `tabindex="0"`) and which is where scrolling is driven from anyway.
|
|
3813
|
+
*
|
|
3814
|
+
* Runs after the viewport signal moves, so `rowRange()` is already the new range -- and before
|
|
3815
|
+
* the re-render, so the row still exists to be recognised. After the unmount there is nothing
|
|
3816
|
+
* left to ask whether it held focus.
|
|
3817
|
+
*/
|
|
3818
|
+
private releaseFocusLeavingTheWindow;
|
|
3819
|
+
/**
|
|
3820
|
+
* Reads the rendered rows and tells the window what they really measured.
|
|
3821
|
+
*
|
|
3822
|
+
* The return value is the part that matters and the part the arithmetic does not make obvious:
|
|
3823
|
+
* correcting a row *above* the viewport moves everything below it, under the reader, while they
|
|
3824
|
+
* are scrolling. Adding that delta to the scroller holds the visible rows still.
|
|
3825
|
+
*/
|
|
3826
|
+
private measureRenderedRows;
|
|
3827
|
+
private rowHeightSeeded;
|
|
3828
|
+
private cappedHeightWarned;
|
|
3829
|
+
private measureFrame;
|
|
3830
|
+
private scheduleRowMeasure;
|
|
4251
3831
|
readonly emptyColspan: _angular_core.Signal<number>;
|
|
4252
3832
|
/**
|
|
4253
3833
|
* Identity for selection and `@for` tracking. `dataKey`'s value when set, the row object
|
|
@@ -4294,9 +3874,9 @@ declare class TableComponent<T extends object> {
|
|
|
4294
3874
|
/** CSS grid-area for the total label: left slot or right slot */
|
|
4295
3875
|
readonly totalGridArea: _angular_core.Signal<"left" | "right">;
|
|
4296
3876
|
/** CSS grid-area for the pagination block */
|
|
4297
|
-
readonly paginatorGridArea: _angular_core.Signal<"left" | "
|
|
3877
|
+
readonly paginatorGridArea: _angular_core.Signal<"left" | "center" | "right">;
|
|
4298
3878
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TableComponent<any>, never>;
|
|
4299
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<TableComponent<any>, "gog-table", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "fullWidth": { "alias": "fullWidth"; "required": false; "isSignal": true; }; "pageSize": { "alias": "pageSize"; "required": false; "isSignal": true; }; "showPageSizeSelect": { "alias": "showPageSizeSelect"; "required": false; "isSignal": true; }; "pageSizeOptions": { "alias": "pageSizeOptions"; "required": false; "isSignal": true; }; "lazy": { "alias": "lazy"; "required": false; "isSignal": true; }; "totalRecords": { "alias": "totalRecords"; "required": false; "isSignal": true; }; "interactiveRows": { "alias": "interactiveRows"; "required": false; "isSignal": true; }; "selectionMode": { "alias": "selectionMode"; "required": false; "isSignal": true; }; "selection": { "alias": "selection"; "required": false; "isSignal": true; }; "dataKey": { "alias": "dataKey"; "required": false; "isSignal": true; }; "showSelectionColumn": { "alias": "showSelectionColumn"; "required": false; "isSignal": true; }; "showRowNumbers": { "alias": "showRowNumbers"; "required": false; "isSignal": true; }; "showTotal": { "alias": "showTotal"; "required": false; "isSignal": true; }; "emptyPlaceholder": { "alias": "emptyPlaceholder"; "required": false; "isSignal": true; }; "paginatorPosition": { "alias": "paginatorPosition"; "required": false; "isSignal": true; }; "totalPosition": { "alias": "totalPosition"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "showColumnBorders": { "alias": "showColumnBorders"; "required": false; "isSignal": true; }; "stickyHeader": { "alias": "stickyHeader"; "required": false; "isSignal": true; }; "maxHeight": { "alias": "maxHeight"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, { "pageSize": "pageSizeChange"; "selection": "selectionChange"; "gogSortChange": "gogSortChange"; "gogPageChange": "gogPageChange"; "gogRowClick": "gogRowClick"; }, ["columns"], never, true, never>;
|
|
3879
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<TableComponent<any>, "gog-table", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "fullWidth": { "alias": "fullWidth"; "required": false; "isSignal": true; }; "pageSize": { "alias": "pageSize"; "required": false; "isSignal": true; }; "showPageSizeSelect": { "alias": "showPageSizeSelect"; "required": false; "isSignal": true; }; "pageSizeOptions": { "alias": "pageSizeOptions"; "required": false; "isSignal": true; }; "lazy": { "alias": "lazy"; "required": false; "isSignal": true; }; "totalRecords": { "alias": "totalRecords"; "required": false; "isSignal": true; }; "interactiveRows": { "alias": "interactiveRows"; "required": false; "isSignal": true; }; "selectionMode": { "alias": "selectionMode"; "required": false; "isSignal": true; }; "selection": { "alias": "selection"; "required": false; "isSignal": true; }; "dataKey": { "alias": "dataKey"; "required": false; "isSignal": true; }; "showSelectionColumn": { "alias": "showSelectionColumn"; "required": false; "isSignal": true; }; "showRowNumbers": { "alias": "showRowNumbers"; "required": false; "isSignal": true; }; "showTotal": { "alias": "showTotal"; "required": false; "isSignal": true; }; "emptyPlaceholder": { "alias": "emptyPlaceholder"; "required": false; "isSignal": true; }; "paginatorPosition": { "alias": "paginatorPosition"; "required": false; "isSignal": true; }; "totalPosition": { "alias": "totalPosition"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "showColumnBorders": { "alias": "showColumnBorders"; "required": false; "isSignal": true; }; "stickyHeader": { "alias": "stickyHeader"; "required": false; "isSignal": true; }; "maxHeight": { "alias": "maxHeight"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "virtualize": { "alias": "virtualize"; "required": false; "isSignal": true; }; }, { "pageSize": "pageSizeChange"; "selection": "selectionChange"; "gogSortChange": "gogSortChange"; "gogPageChange": "gogPageChange"; "gogRowClick": "gogRowClick"; }, ["columns"], never, true, never>;
|
|
4300
3880
|
}
|
|
4301
3881
|
|
|
4302
3882
|
declare class SpinnerComponent {
|
|
@@ -4477,532 +4057,5 @@ declare class ThemeService {
|
|
|
4477
4057
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<ThemeService>;
|
|
4478
4058
|
}
|
|
4479
4059
|
|
|
4480
|
-
|
|
4481
|
-
|
|
4482
|
-
* timing/behavior knobs a whole app typically wants to set once (a house style for how long
|
|
4483
|
-
* scrollbars stay visible, how aggressively buttons debounce clicks), not visual ones.
|
|
4484
|
-
* Visual defaults (colors, radii, animation *durations expressed in CSS*) already have a
|
|
4485
|
-
* global mechanism: the `--gog-*` custom properties in `styles/theme.css`. This is only for
|
|
4486
|
-
* inputs that can't be a CSS token because a component reads them in TypeScript (a
|
|
4487
|
-
* `setTimeout` delay, an RxJS `timer` duration) — see `styling.instructions.md` and
|
|
4488
|
-
* `gleks-ui-library.instructions.md`'s "Global configuration" section for the line between
|
|
4489
|
-
* the two and for how to add a new field here when a component needs one.
|
|
4490
|
-
*
|
|
4491
|
-
* Every field is optional at every level: set only the ones you want to change from the
|
|
4492
|
-
* component's own built-in default. An instance's own input, when set, always wins over
|
|
4493
|
-
* this — this only fills in what the instance didn't specify itself.
|
|
4494
|
-
*/
|
|
4495
|
-
interface GogGlobalConfig {
|
|
4496
|
-
/**
|
|
4497
|
-
* The loading indicator, app-wide.
|
|
4498
|
-
*
|
|
4499
|
-
* `component` is the one config key that carries markup rather than a value, and it is here
|
|
4500
|
-
* because of what it removes: a house spinner otherwise has to be passed into every control
|
|
4501
|
-
* that can show one, and cannot be passed into the ones that render their own. Set it once and
|
|
4502
|
-
* **every** spinner the library draws is yours — `gog-spinner`, `gog-spinner-overlay`, and the
|
|
4503
|
-
* ones inside `gog-button`, `gog-autocomplete` and `gog-table`'s loading states, which have no
|
|
4504
|
-
* input to reach. It is rendered through `NgComponentOutlet` inside the size wrapper, so it
|
|
4505
|
-
* keeps the sizing, the overlay behaviour, the `role="status"` and the accessible name; only
|
|
4506
|
-
* the visual is yours.
|
|
4507
|
-
*
|
|
4508
|
-
* Precedence is the library's usual one, with a wrinkle worth stating: an instance's own
|
|
4509
|
-
* `variant` wins over both keys here, `component` wins over `variant`, and the built-in
|
|
4510
|
-
* `runic` is the fallback. So `<gog-spinner variant="ring">` still gets a ring in an app that
|
|
4511
|
-
* has set a component — an instance asking for something specific is not overridden by a
|
|
4512
|
-
* default.
|
|
4513
|
-
*
|
|
4514
|
-
* Applies to: `gog-spinner`, `gog-spinner-overlay`, and the spinners inside `gog-button`,
|
|
4515
|
-
* `gog-autocomplete` and `gog-table`. Two of those were wrong until 21.10.0 and are worth the
|
|
4516
|
-
* warning: `gog-table` was never listed although it always honoured the key, and
|
|
4517
|
-
* `gog-spinner-overlay` was listed although it did not — it forwards its own `variant` down,
|
|
4518
|
-
* and that input defaulted to `'runic'`, which the spinner inside correctly read as an
|
|
4519
|
-
* instance overruling a default. Neither shows up in a grep for `globalConfig.spinner`,
|
|
4520
|
-
* because neither reads the config: they render a `gog-spinner` that does.
|
|
4521
|
-
*/
|
|
4522
|
-
spinner?: {
|
|
4523
|
-
component?: Type<unknown>;
|
|
4524
|
-
variant?: GogSpinnerVariant;
|
|
4525
|
-
};
|
|
4526
|
-
scroll?: {
|
|
4527
|
-
autoHide?: boolean;
|
|
4528
|
-
hideDelay?: number;
|
|
4529
|
-
size?: GogScrollSize;
|
|
4530
|
-
overscrollBehavior?: GogScrollOverscrollBehavior;
|
|
4531
|
-
/**
|
|
4532
|
-
* Whether the overlay thumb/track ever renders. Scrolling itself is unaffected either way
|
|
4533
|
-
* — this is purely the visual affordance. Defaults to `true`.
|
|
4534
|
-
*/
|
|
4535
|
-
showTrack?: boolean;
|
|
4536
|
-
/**
|
|
4537
|
-
* Turns a vertical wheel into horizontal scrolling on a `gog-scroll` that has nothing to
|
|
4538
|
-
* scroll vertically. Defaults to `false`; see the component's `horizontalWheel` input for
|
|
4539
|
-
* the conditions it applies under and why it never swallows a gesture at the content's end.
|
|
4540
|
-
*/
|
|
4541
|
-
horizontalWheel?: boolean;
|
|
4542
|
-
};
|
|
4543
|
-
button?: {
|
|
4544
|
-
debounce?: number;
|
|
4545
|
-
};
|
|
4546
|
-
/**
|
|
4547
|
-
* Whether the library's own interactive surfaces show a press ripple: `gog-button`,
|
|
4548
|
-
* `[gogButton]`, `gog-button-toggle`, `gog-chip`, `gog-tabs`, `gog-accordion`,
|
|
4549
|
-
* `gog-collapsible`, `gog-menu` and the three dropdowns' options. **Off by default**, so the
|
|
4550
|
-
* effect is additive and nothing changes appearance until an app asks for it.
|
|
4551
|
-
*
|
|
4552
|
-
* This is the one visual default that is *not* expressible as a CSS token, which is why it is
|
|
4553
|
-
* here at all: `--gog-ripple-opacity: 0` would hide the wash but still pay for the DOM node,
|
|
4554
|
-
* the pointer listeners and the animation frames on every press. A real off has to reach the
|
|
4555
|
-
* TypeScript.
|
|
4556
|
-
*
|
|
4557
|
-
* Per-instance: every component listed above takes a `ripple` input that wins over this, so
|
|
4558
|
-
* `[ripple]="false"` opts one control out of an app-wide `true` (and `[ripple]="true"` opts one
|
|
4559
|
-
* in without switching the app over). The `[gogRipple]` directive on your **own** element is
|
|
4560
|
-
* not covered — writing the attribute is already the per-element decision, the same way
|
|
4561
|
-
* `[filter]="true"` on one `gog-select` is; `rippleDisabled` turns that one off.
|
|
4562
|
-
*/
|
|
4563
|
-
ripple?: {
|
|
4564
|
-
enabled?: boolean;
|
|
4565
|
-
};
|
|
4566
|
-
tooltip?: {
|
|
4567
|
-
showDelay?: number;
|
|
4568
|
-
hideDelay?: number;
|
|
4569
|
-
position?: GogTooltipPosition;
|
|
4570
|
-
};
|
|
4571
|
-
/**
|
|
4572
|
-
* Applies to `gog-inputfield`, `gog-textarea`, `gog-select`, `gog-multiselect`,
|
|
4573
|
-
* `gog-autocomplete` and `gog-datepicker` — every field that can float a label. All six read
|
|
4574
|
-
* it through the same `GogFloatLabelState`, three of them via `GogDropdownBase`.
|
|
4575
|
-
*/
|
|
4576
|
-
floatLabel?: {
|
|
4577
|
-
variant?: GogFloatLabelVariant;
|
|
4578
|
-
/**
|
|
4579
|
-
* Whether the field's own `placeholder` reappears once its label has floated out of
|
|
4580
|
-
* the way. Defaults to `false` — the placeholder stays hidden the whole time a float
|
|
4581
|
-
* label is active, since the resting label already occupies that space.
|
|
4582
|
-
*/
|
|
4583
|
-
showPlaceholder?: boolean;
|
|
4584
|
-
};
|
|
4585
|
-
/**
|
|
4586
|
-
* Defaults for the interactive form controls — the two settings an app otherwise repeats on
|
|
4587
|
-
* literally every one of them: a compact app writes `size="sm"` everywhere, and a
|
|
4588
|
-
* Reactive-Forms app writes `errorDisplay="auto"` on every field.
|
|
4589
|
-
*
|
|
4590
|
-
* - `size` applies to `gog-button` and `[gogButton]`, `gog-button-toggle-group`,
|
|
4591
|
-
* `gog-checkbox`, `gog-toggle`, `gog-radio-group`, `gog-inputfield`, `gog-textarea`,
|
|
4592
|
-
* `gog-select`, `gog-multiselect`, `gog-autocomplete` and `gog-datepicker`. Deliberately
|
|
4593
|
-
* **not** to `gog-table`, `gog-accordion` or `gog-paginator` (whose `size` means row/layout
|
|
4594
|
-
* density and whose defaults differ), nor to `gog-spinner`, `gog-skeleton`, `gog-tag` or
|
|
4595
|
-
* `gog-chip` (sized to fit whatever they sit next to, not to a form's density).
|
|
4596
|
-
* - `errorDisplay` applies to every control that renders a validation message:
|
|
4597
|
-
* `gog-inputfield`, `gog-textarea`, `gog-select`, `gog-multiselect`, `gog-autocomplete`,
|
|
4598
|
-
* `gog-datepicker`, `gog-radio-group` and `gog-slider`.
|
|
4599
|
-
*
|
|
4600
|
-
* A component's own built-in default still applies when this is unset, so setting `size`
|
|
4601
|
-
* here does not flatten the different defaults those excluded components have.
|
|
4602
|
-
*
|
|
4603
|
-
* **When you add a reader, add it here — and note that "reader" is not the same as "names
|
|
4604
|
-
* the field".** These lists were wrong for four keys until 2026-09-02, always in the same
|
|
4605
|
-
* direction and for the same reason: `gog-select`, `gog-multiselect` and `gog-autocomplete`
|
|
4606
|
-
* resolve `size`/`errorDisplay`/`clearable`/`floatLabel` inside `GogDropdownBase`, and
|
|
4607
|
-
* `gog-datepicker` composes the same state classes directly, so none of the four contains the
|
|
4608
|
-
* `globalConfig.control?.…` expression that a grep for readers finds. Nor does the resolved
|
|
4609
|
-
* value always reach a template by name — `size` arrives as a computed class (`sizeClass`,
|
|
4610
|
-
* `panelSizeClass`) and `dropdown.direction` is consumed by placement code, so "is the
|
|
4611
|
-
* computed referenced in the component's HTML?" answers *no* for components that genuinely
|
|
4612
|
-
* honour the key. Trace the shared state classes, not just the components.
|
|
4613
|
-
*/
|
|
4614
|
-
control?: {
|
|
4615
|
-
size?: GogSize;
|
|
4616
|
-
errorDisplay?: GogErrorDisplay;
|
|
4617
|
-
/**
|
|
4618
|
-
* Whether `gog-inputfield`, `gog-textarea`, `gog-select`, `gog-multiselect`,
|
|
4619
|
-
* `gog-autocomplete` and `gog-datepicker` offer a clear button — every control that
|
|
4620
|
-
* composes `GogClearableState`. The button only ever appears once the control actually has
|
|
4621
|
-
* something to clear, so switching this on app-wide adds no permanent chrome.
|
|
4622
|
-
*
|
|
4623
|
-
* Component defaults are `false`, except `gog-multiselect`, which had a clear button
|
|
4624
|
-
* before this input existed and keeps it.
|
|
4625
|
-
*/
|
|
4626
|
-
clearable?: boolean;
|
|
4627
|
-
};
|
|
4628
|
-
/**
|
|
4629
|
-
* Applies per field rather than per component, which is why this is not one sentence:
|
|
4630
|
-
*
|
|
4631
|
-
* - `appendToBody` and `direction` reach `gog-select`, `gog-multiselect`,
|
|
4632
|
-
* `gog-autocomplete` (all three through `GogDropdownBase`) and `gog-datepicker`, which
|
|
4633
|
-
* resolves the same pair itself.
|
|
4634
|
-
* - `filter` and `filterPosition` reach `gog-select` and `gog-multiselect` only.
|
|
4635
|
-
* `gog-autocomplete` inherits both inputs from the same base class and renders no filter
|
|
4636
|
-
* box for them — its own text field *is* the filter, so a second search box inside the
|
|
4637
|
-
* panel would be a duplicate. Setting these does nothing to an autocomplete.
|
|
4638
|
-
*/
|
|
4639
|
-
dropdown?: {
|
|
4640
|
-
/**
|
|
4641
|
-
* Whether the panel is rendered into `<body>` instead of inline. Worth setting app-wide
|
|
4642
|
-
* for a layout whose dropdowns generally live inside scrollable or overflow-clipped
|
|
4643
|
-
* containers, which is the case this exists for.
|
|
4644
|
-
*/
|
|
4645
|
-
appendToBody?: boolean;
|
|
4646
|
-
direction?: GogDropdownDirection;
|
|
4647
|
-
/** Whether the panel shows a search box. Off by default. */
|
|
4648
|
-
filter?: boolean;
|
|
4649
|
-
/** Which end of the panel the search box sticks to. `'top'` by default. */
|
|
4650
|
-
filterPosition?: GogDropdownFilterPosition;
|
|
4651
|
-
};
|
|
4652
|
-
/**
|
|
4653
|
-
* Applies to `gog-datepicker` and `gog-calendar`. Every field here is something an app sets
|
|
4654
|
-
* once rather than per field — a locale and a date format repeated on every date input is
|
|
4655
|
-
* exactly the boilerplate this config exists to remove.
|
|
4656
|
-
*/
|
|
4657
|
-
datepicker?: {
|
|
4658
|
-
/** BCP-47 tag driving month and weekday names. */
|
|
4659
|
-
locale?: string;
|
|
4660
|
-
/** 0 = Sunday … 6 = Saturday. Unset, it comes from the locale. */
|
|
4661
|
-
firstDayOfWeek?: number;
|
|
4662
|
-
/** Display and parse pattern (`dd.MM.yyyy`, `yyyy-MM-dd`, …). */
|
|
4663
|
-
format?: string;
|
|
4664
|
-
};
|
|
4665
|
-
/**
|
|
4666
|
-
* Applies to `gog-paginator`, and through it to `gog-table`'s built-in pagination.
|
|
4667
|
-
*
|
|
4668
|
-
* The page-size select is the one piece of paginator chrome an app decides once — either its
|
|
4669
|
-
* tables offer the choice or they don't, and the option list is a house style. Both are still
|
|
4670
|
-
* overridable per instance, for the page whose table genuinely needs `5, 10, 20` while the rest
|
|
4671
|
-
* of the app uses `20, 50, 100`.
|
|
4672
|
-
*/
|
|
4673
|
-
paginator?: {
|
|
4674
|
-
/** Whether the rows-per-page select renders at all. **Off by default.** */
|
|
4675
|
-
showPageSizeSelect?: boolean;
|
|
4676
|
-
/** The choices it offers. Defaults to `[10, 20, 30, 40, 50]`. */
|
|
4677
|
-
pageSizeOptions?: number[];
|
|
4678
|
-
};
|
|
4679
|
-
/** Applies to `gog-autocomplete`. */
|
|
4680
|
-
autocomplete?: {
|
|
4681
|
-
/**
|
|
4682
|
-
* Milliseconds to wait after the last keystroke before `gogSearch` fires. A whole app
|
|
4683
|
-
* usually wants one answer here, tuned to its backend rather than to each field.
|
|
4684
|
-
*/
|
|
4685
|
-
searchDebounce?: number;
|
|
4686
|
-
/** How many characters before the panel opens at all. */
|
|
4687
|
-
minLength?: number;
|
|
4688
|
-
/**
|
|
4689
|
-
* Whether focusing the field opens the panel immediately, showing the full option list.
|
|
4690
|
-
* Defaults to `true`.
|
|
4691
|
-
*/
|
|
4692
|
-
openOnFocus?: boolean;
|
|
4693
|
-
};
|
|
4694
|
-
/** Applies to `gog-inputfield`. */
|
|
4695
|
-
inputfield?: {
|
|
4696
|
-
/**
|
|
4697
|
-
* Whether a `type="number"` field shows the library's own spin buttons in place of the
|
|
4698
|
-
* browser's native ones. Defaults to `true`.
|
|
4699
|
-
*/
|
|
4700
|
-
showSpinButtons?: boolean;
|
|
4701
|
-
};
|
|
4702
|
-
/** Applies to `gog-textarea`. */
|
|
4703
|
-
textarea?: {
|
|
4704
|
-
/**
|
|
4705
|
-
* Which direction(s) the field's own drag handle resizes it in — matches the native CSS
|
|
4706
|
-
* `resize` value space. Defaults to `'vertical'`.
|
|
4707
|
-
*/
|
|
4708
|
-
resize?: GogTextareaResize;
|
|
4709
|
-
};
|
|
4710
|
-
toast?: {
|
|
4711
|
-
position?: ToastPosition;
|
|
4712
|
-
/** How long a non-sticky toast stays up, in ms. */
|
|
4713
|
-
duration?: number;
|
|
4714
|
-
};
|
|
4715
|
-
/**
|
|
4716
|
-
* Every fixed, user-visible string the library renders — button text and accessible names for
|
|
4717
|
-
* chrome the consumer never writes markup for.
|
|
4718
|
-
*
|
|
4719
|
-
* These are here rather than as one input per string because they are the definition of a
|
|
4720
|
-
* setting an app states once: a Russian-language app relabels "Clear" once, not on all 340
|
|
4721
|
-
* fields. Where a per-instance input already exists (`clearAriaLabel`, `todayLabel`, …) it
|
|
4722
|
-
* still wins for that one control — the usual instance → config → default order.
|
|
4723
|
-
*
|
|
4724
|
-
* Deliberately excludes anything that is *content* rather than chrome: `gog-checkbox`'s
|
|
4725
|
-
* `ariaLabel`, `gog-button`'s `ariaLabel`, a field's `label` or `placeholder`. Those differ
|
|
4726
|
-
* per instance by definition and have no meaningful app-wide value.
|
|
4727
|
-
*/
|
|
4728
|
-
labels?: {
|
|
4729
|
-
/** Clear button on `gog-inputfield` / `gog-textarea`. */
|
|
4730
|
-
clear?: string;
|
|
4731
|
-
/**
|
|
4732
|
-
* Clear button on `gog-select` / `gog-multiselect` / `gog-autocomplete`, which clears a
|
|
4733
|
-
* selection rather than text.
|
|
4734
|
-
*/
|
|
4735
|
-
clearSelection?: string;
|
|
4736
|
-
/** Clear button on `gog-datepicker`. */
|
|
4737
|
-
clearDate?: string;
|
|
4738
|
-
/** `gog-multiselect`'s select-all / clear-all buttons — visible text, not just a label. */
|
|
4739
|
-
selectAll?: string;
|
|
4740
|
-
clearAll?: string;
|
|
4741
|
-
/** `gog-inputfield`'s number spin buttons. */
|
|
4742
|
-
increment?: string;
|
|
4743
|
-
decrement?: string;
|
|
4744
|
-
/** `gog-inputfield`'s password reveal toggle, in its two states. */
|
|
4745
|
-
showPassword?: string;
|
|
4746
|
-
hidePassword?: string;
|
|
4747
|
-
/** Close buttons on the two service-driven overlays. */
|
|
4748
|
-
closeDialog?: string;
|
|
4749
|
-
closeToast?: string;
|
|
4750
|
-
/** `gog-paginator`'s `<nav>` accessible name and its two step buttons. */
|
|
4751
|
-
pagination?: string;
|
|
4752
|
-
previousPage?: string;
|
|
4753
|
-
nextPage?: string;
|
|
4754
|
-
/**
|
|
4755
|
-
* `gog-paginator`'s per-page button names ("Go to page 4", "Page 4, current page").
|
|
4756
|
-
*
|
|
4757
|
-
* A function rather than a string, and the only one in this block: these interpolate the
|
|
4758
|
-
* page number, and a template string with a `{0}` placeholder would be a second, weaker
|
|
4759
|
-
* formatting language to learn — one that also can't express languages where the number's
|
|
4760
|
-
* position or the surrounding grammar depends on its value. The default is
|
|
4761
|
-
* `` (page, isCurrent) => isCurrent ? `Page ${page}, current page` : `Go to page ${page}` ``.
|
|
4762
|
-
*/
|
|
4763
|
-
page?: (page: number, isCurrent: boolean) => string;
|
|
4764
|
-
/** `gog-datepicker`'s button that opens the calendar panel. */
|
|
4765
|
-
openCalendar?: string;
|
|
4766
|
-
/**
|
|
4767
|
-
* `gog-panel`'s collapse toggle, used **only** when the panel has no `gogPanelHeader` to
|
|
4768
|
-
* borrow a name from. A panel with a heading names its toggle after that heading, which is
|
|
4769
|
-
* both more useful and per-instance by definition.
|
|
4770
|
-
*/
|
|
4771
|
-
togglePanel?: string;
|
|
4772
|
-
/** `gog-paginator`'s rows-per-page select. */
|
|
4773
|
-
rowsPerPage?: string;
|
|
4774
|
-
/** `gog-table`: the row-count label, its paginator, and the selection checkboxes. */
|
|
4775
|
-
total?: string;
|
|
4776
|
-
tablePagination?: string;
|
|
4777
|
-
selectRow?: string;
|
|
4778
|
-
selectAllRows?: string;
|
|
4779
|
-
/** `gog-calendar` navigation and shortcuts. */
|
|
4780
|
-
today?: string;
|
|
4781
|
-
thisMonth?: string;
|
|
4782
|
-
previousMonth?: string;
|
|
4783
|
-
nextMonth?: string;
|
|
4784
|
-
previousYear?: string;
|
|
4785
|
-
nextYear?: string;
|
|
4786
|
-
/** `gog-calendar`'s time section. */
|
|
4787
|
-
hours?: string;
|
|
4788
|
-
minutes?: string;
|
|
4789
|
-
seconds?: string;
|
|
4790
|
-
};
|
|
4791
|
-
/**
|
|
4792
|
-
* Applies to `ThemeService`. Every field is off/neutral by default, so an app that configures
|
|
4793
|
-
* nothing keeps the pre-21.3.2 behaviour: adopt whatever `data-theme` is already on `<html>`,
|
|
4794
|
-
* else `'light'`.
|
|
4795
|
-
*/
|
|
4796
|
-
theme?: {
|
|
4797
|
-
/**
|
|
4798
|
-
* `localStorage` key the chosen theme is written to and read back from. Unset, nothing is
|
|
4799
|
-
* persisted and the theme resets on every load.
|
|
4800
|
-
*/
|
|
4801
|
-
storageKey?: string | null;
|
|
4802
|
-
/** Theme applied when nothing else decides. `'light'` by default. */
|
|
4803
|
-
defaultTheme?: string;
|
|
4804
|
-
/**
|
|
4805
|
-
* Whether to fall back to the OS `prefers-color-scheme` setting — and to keep following it
|
|
4806
|
-
* until the app calls `setTheme`/`toggleTheme`. Off by default: switching this on changes
|
|
4807
|
-
* which theme an existing app opens in.
|
|
4808
|
-
*/
|
|
4809
|
-
followSystem?: boolean;
|
|
4810
|
-
/** Theme names `toggleTheme()` alternates between, and `followSystem` maps the OS setting to. */
|
|
4811
|
-
lightTheme?: string;
|
|
4812
|
-
darkTheme?: string;
|
|
4813
|
-
};
|
|
4814
|
-
}
|
|
4815
|
-
/**
|
|
4816
|
-
* Resolves to `{}` — every field falls through to its component's own hardcoded default —
|
|
4817
|
-
* until a `provideGogConfig(...)` call overrides it somewhere in the injector tree.
|
|
4818
|
-
*/
|
|
4819
|
-
declare const GOG_CONFIG: InjectionToken<GogGlobalConfig>;
|
|
4820
|
-
/**
|
|
4821
|
-
* Sets app-wide (or subtree-wide, if placed in a route's or component's own `providers`
|
|
4822
|
-
* instead of the bootstrap config) defaults for every `@guildofgleks/ui` component that
|
|
4823
|
-
* reads `GOG_CONFIG` — one call instead of a separate injection token per setting:
|
|
4824
|
-
*
|
|
4825
|
-
* ```ts
|
|
4826
|
-
* // app.config.ts
|
|
4827
|
-
* providers: [
|
|
4828
|
-
* provideGogConfig({
|
|
4829
|
-
* scroll: { hideDelay: 1000 },
|
|
4830
|
-
* button: { debounce: 500 },
|
|
4831
|
-
* }),
|
|
4832
|
-
* ]
|
|
4833
|
-
* ```
|
|
4834
|
-
*
|
|
4835
|
-
* **Providing this again further down the injector tree layers onto the parent's config
|
|
4836
|
-
* rather than replacing it.** A route that only cares about tooltips can say so, and the
|
|
4837
|
-
* app-wide `button.debounce` stays in effect inside it:
|
|
4838
|
-
*
|
|
4839
|
-
* ```ts
|
|
4840
|
-
* // a route's providers — button.debounce from app.config.ts still applies here
|
|
4841
|
-
* provideGogConfig({ tooltip: { showDelay: 0 } })
|
|
4842
|
-
* ```
|
|
4843
|
-
*
|
|
4844
|
-
* Merging is one level deep, per component key: the nearest provider wins field by field, so
|
|
4845
|
-
* `{ tooltip: { showDelay: 0 } }` overrides only `showDelay` and leaves a parent's
|
|
4846
|
-
* `tooltip.position` alone. To drop an inherited value rather than change it, set it back to
|
|
4847
|
-
* the component's own default explicitly — there is no "unset" marker.
|
|
4848
|
-
*/
|
|
4849
|
-
declare function provideGogConfig(config: GogGlobalConfig): Provider;
|
|
4850
|
-
/**
|
|
4851
|
-
* The library's precedence rule for a configurable input, in one place: an instance's own
|
|
4852
|
-
* input wins, then the app-wide `GOG_CONFIG` value, then the component's built-in default.
|
|
4853
|
-
*
|
|
4854
|
-
* Every configurable input resolves through this rather than repeating the `??` chain, so the
|
|
4855
|
-
* order can't drift between components — a component that accidentally checked the config
|
|
4856
|
-
* first would silently ignore the input on that one control only, which is close to invisible
|
|
4857
|
-
* in review. Kept a plain function (no `inject`) so it works anywhere: inside a `computed`, in
|
|
4858
|
-
* a composition class like `GogFloatLabelState`, and in unit tests without an injector.
|
|
4859
|
-
*
|
|
4860
|
-
* ```ts
|
|
4861
|
-
* private readonly globalConfig = inject(GOG_CONFIG);
|
|
4862
|
-
* protected readonly resolvedDebounce = computed(() =>
|
|
4863
|
-
* resolveConfigured(this.debounce(), this.globalConfig.button?.debounce, DEFAULT_DEBOUNCE),
|
|
4864
|
-
* );
|
|
4865
|
-
* ```
|
|
4866
|
-
*/
|
|
4867
|
-
declare function resolveConfigured<T>(instanceValue: T | undefined, configuredValue: T | undefined, fallback: T): T;
|
|
4868
|
-
|
|
4869
|
-
/**
|
|
4870
|
-
* Shared float-label state for the library's field-style controls.
|
|
4871
|
-
*
|
|
4872
|
-
* A plain class rather than a base class or directive, for the same reason as `GogErrorState`:
|
|
4873
|
-
* it has to serve `gog-inputfield` and `gog-textarea`, which share no base class, as well as
|
|
4874
|
-
* `GogDropdownBase`, which is one. Each consumer owns an instance and exposes whichever
|
|
4875
|
-
* members its template needs.
|
|
4876
|
-
*
|
|
4877
|
-
* The one thing each control must supply itself is `hasValue` — "this field has content" means
|
|
4878
|
-
* something different everywhere (a non-empty string, a non-null selection, a non-empty
|
|
4879
|
-
* selection array), which is exactly why this is composed in rather than implemented as a
|
|
4880
|
-
* directive sitting outside the component.
|
|
4881
|
-
*/
|
|
4882
|
-
declare class GogFloatLabelState {
|
|
4883
|
-
private readonly variantInput;
|
|
4884
|
-
private readonly showPlaceholderInput;
|
|
4885
|
-
private readonly placeholder;
|
|
4886
|
-
private readonly isFocused;
|
|
4887
|
-
private readonly hasValue;
|
|
4888
|
-
private readonly config;
|
|
4889
|
-
/**
|
|
4890
|
-
* @param variantInput the control's own `floatLabel` input (`undefined` when unset)
|
|
4891
|
-
* @param showPlaceholderInput the control's own `floatLabelShowPlaceholder` input
|
|
4892
|
-
* @param placeholder the control's `placeholder` input
|
|
4893
|
-
* @param isFocused whether the control currently has focus
|
|
4894
|
-
* @param hasValue whether the control has a value — see the class note
|
|
4895
|
-
* @param config the injected `GOG_CONFIG`
|
|
4896
|
-
*/
|
|
4897
|
-
constructor(variantInput: Signal<GogFloatLabelVariant | undefined>, showPlaceholderInput: Signal<boolean | undefined>, placeholder: Signal<string>, isFocused: Signal<boolean>, hasValue: Signal<boolean>, config: GogGlobalConfig);
|
|
4898
|
-
/** The resolved variant: instance input, else `GOG_CONFIG.floatLabel.variant`, else `'none'`. */
|
|
4899
|
-
readonly variant: Signal<GogFloatLabelVariant>;
|
|
4900
|
-
readonly showPlaceholder: Signal<boolean>;
|
|
4901
|
-
/** Whether a float label is in effect at all — `false` keeps the static label-above layout. */
|
|
4902
|
-
readonly isActive: Signal<boolean>;
|
|
4903
|
-
/** Whether the label is at its floated target rather than resting like a placeholder. */
|
|
4904
|
-
readonly isFloated: Signal<boolean>;
|
|
4905
|
-
/**
|
|
4906
|
-
* The placeholder the control should actually render. While a float label is active the
|
|
4907
|
-
* resting label already occupies that space, so the placeholder stays hidden unless the
|
|
4908
|
-
* consumer opted into `floatLabelShowPlaceholder` — and even then only once the label has
|
|
4909
|
-
* floated out of the way.
|
|
4910
|
-
*/
|
|
4911
|
-
readonly effectivePlaceholder: Signal<string>;
|
|
4912
|
-
}
|
|
4913
|
-
|
|
4914
|
-
/** What kind of thing a deprecation is about: an exported symbol, or a CSS custom property. */
|
|
4915
|
-
type GogDeprecationKind = 'symbol' | 'token';
|
|
4916
|
-
/** One deprecated part of the public API, with the version that removes it. */
|
|
4917
|
-
interface GogDeprecation {
|
|
4918
|
-
kind: GogDeprecationKind;
|
|
4919
|
-
/** The deprecated name — an export, an input, or a `--gog-*` custom property. */
|
|
4920
|
-
name: string;
|
|
4921
|
-
/** What to use instead. */
|
|
4922
|
-
replacement: string;
|
|
4923
|
-
/** The version that deprecated it, and the day it was announced. */
|
|
4924
|
-
since: string;
|
|
4925
|
-
sinceDate: string;
|
|
4926
|
-
/** The version that removes it. Until then, the deprecated name still works. */
|
|
4927
|
-
removedIn: string;
|
|
4928
|
-
}
|
|
4929
|
-
/**
|
|
4930
|
-
* Everything `@guildofgleks/ui` currently deprecates: 0 symbol(s) and 0 token(s).
|
|
4931
|
-
*
|
|
4932
|
-
* Generated from the library's own source — `@deprecated` tags for symbols, and the stylesheets
|
|
4933
|
-
* themselves for tokens — so it cannot drift from what actually still resolves. Meant for tooling
|
|
4934
|
-
* that has to answer "is this still supported, and until when?": a docs site marking an API row,
|
|
4935
|
-
* an editor plugin, a codemod.
|
|
4936
|
-
*
|
|
4937
|
-
* An empty `symbol` half means exactly what it says: nothing in the TypeScript API is deprecated
|
|
4938
|
-
* right now.
|
|
4939
|
-
*/
|
|
4940
|
-
declare const GOG_DEPRECATIONS: readonly GogDeprecation[];
|
|
4941
|
-
|
|
4942
|
-
/** Every `--gog-*` custom property the library declares or documents as an override point. */
|
|
4943
|
-
type GogTokenName = '--gog-accent-bright' | '--gog-accent-color' | '--gog-accent-dim' | '--gog-accent-pale' | '--gog-accent-text-color' | '--gog-accordion-accent-color' | '--gog-accordion-body-bg' | '--gog-accordion-body-color' | '--gog-accordion-body-font-family' | '--gog-accordion-body-font-size' | '--gog-accordion-body-lift' | '--gog-accordion-body-line-height' | '--gog-accordion-body-padding-bottom' | '--gog-accordion-body-padding-top' | '--gog-accordion-body-radius' | '--gog-accordion-body-transition-duration' | '--gog-accordion-border-color' | '--gog-accordion-border-style' | '--gog-accordion-border-width' | '--gog-accordion-chevron-font-size' | '--gog-accordion-chevron-line-height' | '--gog-accordion-chevron-size' | '--gog-accordion-chevron-transition-duration' | '--gog-accordion-content-gap' | '--gog-accordion-disabled-opacity' | '--gog-accordion-focus-ring-color' | '--gog-accordion-focus-ring-width' | '--gog-accordion-font-family' | '--gog-accordion-font-size' | '--gog-accordion-header-bg' | '--gog-accordion-header-gap' | '--gog-accordion-header-text-transform' | '--gog-accordion-hover-bg' | '--gog-accordion-hover-color' | '--gog-accordion-hover-ring' | '--gog-accordion-letter-spacing' | '--gog-accordion-lg-body-font-size' | '--gog-accordion-lg-body-line-height' | '--gog-accordion-lg-body-padding-bottom' | '--gog-accordion-lg-body-padding-top' | '--gog-accordion-lg-chevron-font-size' | '--gog-accordion-lg-chevron-size' | '--gog-accordion-lg-content-gap' | '--gog-accordion-lg-font-size' | '--gog-accordion-lg-letter-spacing' | '--gog-accordion-lg-padding-x' | '--gog-accordion-lg-padding-y' | '--gog-accordion-line-height' | '--gog-accordion-md-body-font-size' | '--gog-accordion-md-body-line-height' | '--gog-accordion-md-body-padding-bottom' | '--gog-accordion-md-body-padding-top' | '--gog-accordion-md-chevron-font-size' | '--gog-accordion-md-chevron-size' | '--gog-accordion-md-content-gap' | '--gog-accordion-md-font-size' | '--gog-accordion-md-letter-spacing' | '--gog-accordion-md-padding-x' | '--gog-accordion-md-padding-y' | '--gog-accordion-padding-x' | '--gog-accordion-padding-y' | '--gog-accordion-press-bg' | '--gog-accordion-radius' | '--gog-accordion-slg-body-font-size' | '--gog-accordion-slg-body-line-height' | '--gog-accordion-slg-body-padding-bottom' | '--gog-accordion-slg-body-padding-top' | '--gog-accordion-slg-chevron-font-size' | '--gog-accordion-slg-chevron-size' | '--gog-accordion-slg-content-gap' | '--gog-accordion-slg-font-size' | '--gog-accordion-slg-letter-spacing' | '--gog-accordion-slg-padding-x' | '--gog-accordion-slg-padding-y' | '--gog-accordion-sm-body-font-size' | '--gog-accordion-sm-body-line-height' | '--gog-accordion-sm-body-padding-bottom' | '--gog-accordion-sm-body-padding-top' | '--gog-accordion-sm-chevron-font-size' | '--gog-accordion-sm-chevron-size' | '--gog-accordion-sm-content-gap' | '--gog-accordion-sm-font-size' | '--gog-accordion-sm-letter-spacing' | '--gog-accordion-sm-padding-x' | '--gog-accordion-sm-padding-y' | '--gog-accordion-text-color' | '--gog-accordion-transition-duration' | '--gog-accordion-xsm-body-font-size' | '--gog-accordion-xsm-body-line-height' | '--gog-accordion-xsm-body-padding-bottom' | '--gog-accordion-xsm-body-padding-top' | '--gog-accordion-xsm-chevron-font-size' | '--gog-accordion-xsm-chevron-size' | '--gog-accordion-xsm-content-gap' | '--gog-accordion-xsm-font-size' | '--gog-accordion-xsm-letter-spacing' | '--gog-accordion-xsm-padding-x' | '--gog-accordion-xsm-padding-y' | '--gog-autocomplete-actions-gap' | '--gog-autocomplete-actions-inset' | '--gog-autocomplete-actions-reserve' | '--gog-autocomplete-bg' | '--gog-autocomplete-border-color' | '--gog-autocomplete-border-style' | '--gog-autocomplete-border-width' | '--gog-autocomplete-clear-color' | '--gog-autocomplete-clear-hover-color' | '--gog-autocomplete-clear-icon-ratio' | '--gog-autocomplete-color' | '--gog-autocomplete-disabled-opacity' | '--gog-autocomplete-empty-color' | '--gog-autocomplete-empty-font-size' | '--gog-autocomplete-empty-line-height' | '--gog-autocomplete-error-border-color' | '--gog-autocomplete-error-color' | '--gog-autocomplete-error-font-family' | '--gog-autocomplete-error-font-size' | '--gog-autocomplete-error-line-height' | '--gog-autocomplete-field-bg' | '--gog-autocomplete-float-label-in-top' | '--gog-autocomplete-float-label-on-bg' | '--gog-autocomplete-float-label-over-gap' | '--gog-autocomplete-float-label-over-reserve' | '--gog-autocomplete-float-label-reserve' | '--gog-autocomplete-focus-ring-color' | '--gog-autocomplete-focus-ring-offset' | '--gog-autocomplete-focus-ring-width' | '--gog-autocomplete-font-family' | '--gog-autocomplete-font-size' | '--gog-autocomplete-gap' | '--gog-autocomplete-hover-border-color' | '--gog-autocomplete-label-color' | '--gog-autocomplete-label-font-family' | '--gog-autocomplete-label-font-size' | '--gog-autocomplete-label-font-weight' | '--gog-autocomplete-label-letter-spacing' | '--gog-autocomplete-label-line-height' | '--gog-autocomplete-label-text-transform' | '--gog-autocomplete-line-height' | '--gog-autocomplete-min-width' | '--gog-autocomplete-option-color' | '--gog-autocomplete-option-gap' | '--gog-autocomplete-option-height' | '--gog-autocomplete-option-hover-bg' | '--gog-autocomplete-option-hover-color' | '--gog-autocomplete-option-padding' | '--gog-autocomplete-option-press-bg' | '--gog-autocomplete-option-radius' | '--gog-autocomplete-option-selected-bg' | '--gog-autocomplete-option-selected-color' | '--gog-autocomplete-options-padding' | '--gog-autocomplete-padding-x' | '--gog-autocomplete-padding-y' | '--gog-autocomplete-panel-bg' | '--gog-autocomplete-panel-border-color' | '--gog-autocomplete-panel-border-style' | '--gog-autocomplete-panel-border-width' | '--gog-autocomplete-panel-gap' | '--gog-autocomplete-panel-max-height' | '--gog-autocomplete-panel-max-width' | '--gog-autocomplete-panel-radius' | '--gog-autocomplete-panel-shadow' | '--gog-autocomplete-placeholder-color' | '--gog-autocomplete-radius' | '--gog-autocomplete-spinner-size' | '--gog-autocomplete-text-color' | '--gog-autocomplete-transition-duration' | '--gog-background-color' | '--gog-badge-bg' | '--gog-badge-border-color' | '--gog-badge-border-style' | '--gog-badge-border-width' | '--gog-badge-color' | '--gog-badge-danger-bg' | '--gog-badge-danger-color' | '--gog-badge-dot-size' | '--gog-badge-font-family' | '--gog-badge-font-size' | '--gog-badge-font-weight' | '--gog-badge-info-bg' | '--gog-badge-info-color' | '--gog-badge-line-height' | '--gog-badge-offset' | '--gog-badge-padding-inline' | '--gog-badge-radius' | '--gog-badge-size' | '--gog-badge-success-bg' | '--gog-badge-success-color' | '--gog-badge-warning-bg' | '--gog-badge-warning-color' | '--gog-badge-z' | '--gog-border-color' | '--gog-border-style' | '--gog-border-width' | '--gog-button-active-scale' | '--gog-button-bg' | '--gog-button-border' | '--gog-button-border-style' | '--gog-button-border-width' | '--gog-button-color' | '--gog-button-danger-fill' | '--gog-button-danger-fill-hover' | '--gog-button-danger-fill-press' | '--gog-button-danger-ink' | '--gog-button-danger-on-fill' | '--gog-button-danger-wash' | '--gog-button-disabled-opacity' | '--gog-button-focus-ring-offset' | '--gog-button-focus-ring-width' | '--gog-button-font-family' | '--gog-button-font-weight' | '--gog-button-gap' | '--gog-button-ghost-bg' | '--gog-button-ghost-border' | '--gog-button-ghost-color' | '--gog-button-ghost-hover-bg' | '--gog-button-ghost-hover-color' | '--gog-button-ghost-hover-shadow' | '--gog-button-ghost-press-bg' | '--gog-button-ghost-press-color' | '--gog-button-ghost-shadow' | '--gog-button-ghost-spinner-color' | '--gog-button-ghost-toggled-shadow' | '--gog-button-hover-bg' | '--gog-button-hover-color' | '--gog-button-hover-shadow' | '--gog-button-info-fill' | '--gog-button-info-fill-hover' | '--gog-button-info-fill-press' | '--gog-button-info-ink' | '--gog-button-info-on-fill' | '--gog-button-info-wash' | '--gog-button-letter-spacing' | '--gog-button-lg-font-size' | '--gog-button-lg-padding' | '--gog-button-line-height' | '--gog-button-loading-opacity' | '--gog-button-md-font-size' | '--gog-button-md-padding' | '--gog-button-outline-bg' | '--gog-button-outline-border' | '--gog-button-outline-color' | '--gog-button-outline-hover-bg' | '--gog-button-outline-hover-color' | '--gog-button-outline-hover-shadow' | '--gog-button-outline-press-bg' | '--gog-button-outline-press-color' | '--gog-button-outline-shadow' | '--gog-button-outline-spinner-color' | '--gog-button-outline-toggled-shadow' | '--gog-button-press-bg' | '--gog-button-press-color' | '--gog-button-primary-bg' | '--gog-button-primary-border' | '--gog-button-primary-color' | '--gog-button-primary-hover-bg' | '--gog-button-primary-hover-color' | '--gog-button-primary-hover-shadow' | '--gog-button-primary-press-bg' | '--gog-button-primary-press-color' | '--gog-button-primary-shadow' | '--gog-button-primary-spinner-color' | '--gog-button-primary-toggled-shadow' | '--gog-button-radius' | '--gog-button-secondary-bg' | '--gog-button-secondary-border' | '--gog-button-secondary-color' | '--gog-button-secondary-hover-bg' | '--gog-button-secondary-hover-color' | '--gog-button-secondary-hover-shadow' | '--gog-button-secondary-press-bg' | '--gog-button-secondary-press-color' | '--gog-button-secondary-shadow' | '--gog-button-secondary-spinner-color' | '--gog-button-secondary-toggled-shadow' | '--gog-button-shadow' | '--gog-button-slg-font-size' | '--gog-button-slg-padding' | '--gog-button-sm-font-size' | '--gog-button-sm-padding' | '--gog-button-spinner-color' | '--gog-button-spinner-max-size' | '--gog-button-success-fill' | '--gog-button-success-fill-hover' | '--gog-button-success-fill-press' | '--gog-button-success-ink' | '--gog-button-success-on-fill' | '--gog-button-success-wash' | '--gog-button-text-transform' | '--gog-button-toggle-bg' | '--gog-button-toggle-border-color' | '--gog-button-toggle-border-style' | '--gog-button-toggle-border-width' | '--gog-button-toggle-color' | '--gog-button-toggle-disabled-opacity' | '--gog-button-toggle-focus-ring-color' | '--gog-button-toggle-focus-ring-offset' | '--gog-button-toggle-focus-ring-width' | '--gog-button-toggle-font-family' | '--gog-button-toggle-font-size' | '--gog-button-toggle-font-weight' | '--gog-button-toggle-gap' | '--gog-button-toggle-hover-bg' | '--gog-button-toggle-hover-color' | '--gog-button-toggle-icon-size' | '--gog-button-toggle-letter-spacing' | '--gog-button-toggle-line-height' | '--gog-button-toggle-padding' | '--gog-button-toggle-press-bg' | '--gog-button-toggle-radius' | '--gog-button-toggle-rest-bg' | '--gog-button-toggle-rest-color' | '--gog-button-toggle-selected-bg' | '--gog-button-toggle-selected-border-color' | '--gog-button-toggle-selected-color' | '--gog-button-toggle-selected-press-bg' | '--gog-button-toggle-separated-gap' | '--gog-button-toggle-text-transform' | '--gog-button-toggle-transition-duration' | '--gog-button-toggled-ring-width' | '--gog-button-toggled-shadow' | '--gog-button-transition-duration' | '--gog-button-warning-fill' | '--gog-button-warning-fill-hover' | '--gog-button-warning-fill-press' | '--gog-button-warning-ink' | '--gog-button-warning-on-fill' | '--gog-button-warning-wash' | '--gog-button-xsm-font-size' | '--gog-button-xsm-padding' | '--gog-calendar-action-padding' | '--gog-calendar-color' | '--gog-calendar-day-bg' | '--gog-calendar-day-border-style' | '--gog-calendar-day-border-width' | '--gog-calendar-day-color' | '--gog-calendar-day-hover-bg' | '--gog-calendar-day-outside-color' | '--gog-calendar-day-radius' | '--gog-calendar-day-rest-bg' | '--gog-calendar-day-rest-color' | '--gog-calendar-day-size' | '--gog-calendar-disabled-opacity' | '--gog-calendar-divider-color' | '--gog-calendar-divider-style' | '--gog-calendar-divider-width' | '--gog-calendar-focus-ring-color' | '--gog-calendar-focus-ring-offset' | '--gog-calendar-focus-ring-width' | '--gog-calendar-font-family' | '--gog-calendar-footer-gap' | '--gog-calendar-header-gap' | '--gog-calendar-header-margin' | '--gog-calendar-lg-day-size' | '--gog-calendar-lg-font-size' | '--gog-calendar-line-height' | '--gog-calendar-max-width' | '--gog-calendar-md-day-size' | '--gog-calendar-md-font-size' | '--gog-calendar-months-gap' | '--gog-calendar-nav-bg' | '--gog-calendar-nav-color' | '--gog-calendar-nav-hover-bg' | '--gog-calendar-nav-hover-color' | '--gog-calendar-nav-icon-overlap' | '--gog-calendar-nav-icon-size' | '--gog-calendar-nav-radius' | '--gog-calendar-nav-size' | '--gog-calendar-padding' | '--gog-calendar-range-bg' | '--gog-calendar-range-color' | '--gog-calendar-selected-bg' | '--gog-calendar-selected-color' | '--gog-calendar-selected-font-weight' | '--gog-calendar-slg-day-size' | '--gog-calendar-slg-font-size' | '--gog-calendar-sm-day-size' | '--gog-calendar-sm-font-size' | '--gog-calendar-time-gap' | '--gog-calendar-time-input-bg' | '--gog-calendar-time-input-padding' | '--gog-calendar-time-input-width' | '--gog-calendar-time-margin' | '--gog-calendar-title-color' | '--gog-calendar-title-font-weight' | '--gog-calendar-today-border-color' | '--gog-calendar-today-font-weight' | '--gog-calendar-transition-duration' | '--gog-calendar-weekday-color' | '--gog-calendar-weekday-font-size' | '--gog-calendar-weekday-font-weight' | '--gog-calendar-weekday-line-height' | '--gog-calendar-weekday-padding' | '--gog-calendar-weekday-text-transform' | '--gog-calendar-xsm-day-size' | '--gog-calendar-xsm-font-size' | '--gog-card-bg' | '--gog-card-border-color' | '--gog-card-border-style' | '--gog-card-border-width' | '--gog-card-color' | '--gog-card-disabled-opacity' | '--gog-card-elevated-bg' | '--gog-card-elevated-border-color' | '--gog-card-elevated-shadow' | '--gog-card-filled-bg' | '--gog-card-filled-border-color' | '--gog-card-filled-shadow' | '--gog-card-focus-ring' | '--gog-card-focus-ring-offset' | '--gog-card-focus-ring-width' | '--gog-card-font-family' | '--gog-card-footer-border-color' | '--gog-card-footer-gap' | '--gog-card-footer-padding-top' | '--gog-card-gap' | '--gog-card-heading-color' | '--gog-card-heading-font-family' | '--gog-card-heading-font-size' | '--gog-card-heading-font-weight' | '--gog-card-heading-line-height' | '--gog-card-hover-border-color' | '--gog-card-hover-shadow' | '--gog-card-lg-gap' | '--gog-card-lg-padding-x' | '--gog-card-lg-padding-y' | '--gog-card-md-gap' | '--gog-card-md-padding-x' | '--gog-card-md-padding-y' | '--gog-card-outlined-bg' | '--gog-card-outlined-border-color' | '--gog-card-outlined-shadow' | '--gog-card-padding-x' | '--gog-card-padding-y' | '--gog-card-radius' | '--gog-card-shadow' | '--gog-card-slg-gap' | '--gog-card-slg-padding-x' | '--gog-card-slg-padding-y' | '--gog-card-sm-gap' | '--gog-card-sm-padding-x' | '--gog-card-sm-padding-y' | '--gog-card-transition-duration' | '--gog-card-xsm-gap' | '--gog-card-xsm-padding-x' | '--gog-card-xsm-padding-y' | '--gog-checkbox-bg' | '--gog-checkbox-border-color' | '--gog-checkbox-border-style' | '--gog-checkbox-border-width' | '--gog-checkbox-box-size' | '--gog-checkbox-checked-bg' | '--gog-checkbox-checked-border' | '--gog-checkbox-dash-height' | '--gog-checkbox-dash-radius' | '--gog-checkbox-dash-width-ratio' | '--gog-checkbox-disabled-opacity' | '--gog-checkbox-focus-ring' | '--gog-checkbox-focus-ring-offset' | '--gog-checkbox-focus-ring-width' | '--gog-checkbox-font-family' | '--gog-checkbox-gap' | '--gog-checkbox-icon-color' | '--gog-checkbox-icon-line-height' | '--gog-checkbox-icon-size' | '--gog-checkbox-label-color' | '--gog-checkbox-label-line-height' | '--gog-checkbox-label-size' | '--gog-checkbox-padding' | '--gog-checkbox-radius' | '--gog-checkbox-transition-duration' | '--gog-chip-avatar-inset-ratio' | '--gog-chip-avatar-size' | '--gog-chip-bg' | '--gog-chip-border' | '--gog-chip-border-style' | '--gog-chip-border-width' | '--gog-chip-color' | '--gog-chip-disabled-opacity' | '--gog-chip-focus-ring-color' | '--gog-chip-focus-ring-offset' | '--gog-chip-focus-ring-width' | '--gog-chip-font-family' | '--gog-chip-font-size' | '--gog-chip-font-weight' | '--gog-chip-gap' | '--gog-chip-hover-bg' | '--gog-chip-icon-size' | '--gog-chip-lg-avatar-size' | '--gog-chip-lg-font-size' | '--gog-chip-lg-gap' | '--gog-chip-lg-icon-size' | '--gog-chip-lg-padding-block' | '--gog-chip-lg-padding-inline' | '--gog-chip-lg-remove-size' | '--gog-chip-line-height' | '--gog-chip-md-avatar-size' | '--gog-chip-md-font-size' | '--gog-chip-md-gap' | '--gog-chip-md-icon-size' | '--gog-chip-md-padding-block' | '--gog-chip-md-padding-inline' | '--gog-chip-md-remove-size' | '--gog-chip-padding-block' | '--gog-chip-padding-inline' | '--gog-chip-pill-radius' | '--gog-chip-press-bg' | '--gog-chip-radius' | '--gog-chip-remove-color' | '--gog-chip-remove-hover-color' | '--gog-chip-remove-inset-ratio' | '--gog-chip-remove-scale' | '--gog-chip-remove-size' | '--gog-chip-selected-ring-width' | '--gog-chip-selected-shadow' | '--gog-chip-slg-avatar-size' | '--gog-chip-slg-font-size' | '--gog-chip-slg-gap' | '--gog-chip-slg-icon-size' | '--gog-chip-slg-padding-block' | '--gog-chip-slg-padding-inline' | '--gog-chip-slg-remove-size' | '--gog-chip-sm-avatar-size' | '--gog-chip-sm-font-size' | '--gog-chip-sm-gap' | '--gog-chip-sm-icon-size' | '--gog-chip-sm-padding-block' | '--gog-chip-sm-padding-inline' | '--gog-chip-sm-remove-size' | '--gog-chip-xsm-avatar-size' | '--gog-chip-xsm-font-size' | '--gog-chip-xsm-gap' | '--gog-chip-xsm-icon-size' | '--gog-chip-xsm-padding-block' | '--gog-chip-xsm-padding-inline' | '--gog-chip-xsm-remove-size' | '--gog-collapsible-disabled-opacity' | '--gog-collapsible-max-height' | '--gog-collapsible-transition-duration' | '--gog-confirmation-dialog-actions-gap' | '--gog-confirmation-dialog-actions-offset' | '--gog-confirmation-dialog-color' | '--gog-confirmation-dialog-description-color' | '--gog-confirmation-dialog-description-font-size' | '--gog-confirmation-dialog-description-line-height' | '--gog-confirmation-dialog-gap' | '--gog-confirmation-dialog-max-width' | '--gog-confirmation-dialog-min-width' | '--gog-confirmation-dialog-title-font-size' | '--gog-confirmation-dialog-title-line-height' | '--gog-control-border-style' | '--gog-control-border-width' | '--gog-control-boundary-color' | '--gog-control-checkbox-box-size-lg' | '--gog-control-checkbox-box-size-md' | '--gog-control-checkbox-box-size-slg' | '--gog-control-checkbox-box-size-sm' | '--gog-control-checkbox-box-size-xsm' | '--gog-control-checkbox-icon-size-lg' | '--gog-control-checkbox-icon-size-md' | '--gog-control-checkbox-icon-size-slg' | '--gog-control-checkbox-icon-size-sm' | '--gog-control-checkbox-icon-size-xsm' | '--gog-control-checkbox-label-size-lg' | '--gog-control-checkbox-label-size-md' | '--gog-control-checkbox-label-size-slg' | '--gog-control-checkbox-label-size-sm' | '--gog-control-checkbox-label-size-xsm' | '--gog-control-checkbox-padding' | '--gog-control-clear-icon-ratio' | '--gog-control-icon-offset' | '--gog-control-padding-x' | '--gog-control-padding-y' | '--gog-danger-color' | '--gog-danger-shade' | '--gog-danger-text-color' | '--gog-datepicker-actions-gap' | '--gog-datepicker-actions-inset' | '--gog-datepicker-actions-reserve' | '--gog-datepicker-bg' | '--gog-datepicker-border-color' | '--gog-datepicker-border-style' | '--gog-datepicker-border-width' | '--gog-datepicker-clear-color' | '--gog-datepicker-clear-icon-ratio' | '--gog-datepicker-color' | '--gog-datepicker-disabled-opacity' | '--gog-datepicker-error-border-color' | '--gog-datepicker-error-color' | '--gog-datepicker-error-font-family' | '--gog-datepicker-error-font-size' | '--gog-datepicker-error-line-height' | '--gog-datepicker-field-bg' | '--gog-datepicker-float-label-in-top' | '--gog-datepicker-float-label-on-bg' | '--gog-datepicker-float-label-over-gap' | '--gog-datepicker-float-label-over-reserve' | '--gog-datepicker-float-label-reserve' | '--gog-datepicker-focus-ring-color' | '--gog-datepicker-focus-ring-offset' | '--gog-datepicker-focus-ring-width' | '--gog-datepicker-font-family' | '--gog-datepicker-font-size' | '--gog-datepicker-gap' | '--gog-datepicker-hover-border-color' | '--gog-datepicker-icon-color' | '--gog-datepicker-icon-hover-color' | '--gog-datepicker-label-color' | '--gog-datepicker-label-font-family' | '--gog-datepicker-label-font-size' | '--gog-datepicker-label-letter-spacing' | '--gog-datepicker-label-line-height' | '--gog-datepicker-label-text-transform' | '--gog-datepicker-line-height' | '--gog-datepicker-min-width' | '--gog-datepicker-padding-x' | '--gog-datepicker-padding-y' | '--gog-datepicker-panel-bg' | '--gog-datepicker-panel-border-color' | '--gog-datepicker-panel-border-style' | '--gog-datepicker-panel-border-width' | '--gog-datepicker-panel-gap' | '--gog-datepicker-panel-radius' | '--gog-datepicker-panel-shadow' | '--gog-datepicker-panel-width' | '--gog-datepicker-placeholder-color' | '--gog-datepicker-radius' | '--gog-datepicker-text-color' | '--gog-datepicker-toggle-icon-size' | '--gog-datepicker-transition-duration' | '--gog-density' | '--gog-dialog-backdrop-bg' | '--gog-dialog-backdrop-blur' | '--gog-dialog-backdrop-fade-duration' | '--gog-dialog-backdrop-padding' | '--gog-dialog-bg' | '--gog-dialog-body-max-height' | '--gog-dialog-body-padding' | '--gog-dialog-border' | '--gog-dialog-border-style' | '--gog-dialog-border-width' | '--gog-dialog-close-color' | '--gog-dialog-close-focus-ring' | '--gog-dialog-close-focus-ring-offset' | '--gog-dialog-close-focus-ring-width' | '--gog-dialog-close-font-size' | '--gog-dialog-close-hover-bg' | '--gog-dialog-close-hover-border' | '--gog-dialog-close-hover-color' | '--gog-dialog-close-line-height' | '--gog-dialog-close-size' | '--gog-dialog-color' | '--gog-dialog-enter-distance' | '--gog-dialog-enter-duration' | '--gog-dialog-font-family' | '--gog-dialog-header-border-color' | '--gog-dialog-header-gap' | '--gog-dialog-header-padding' | '--gog-dialog-max-height' | '--gog-dialog-min-width' | '--gog-dialog-offset-x' | '--gog-dialog-offset-y' | '--gog-dialog-radius' | '--gog-dialog-shadow' | '--gog-dialog-title-font-size' | '--gog-dialog-title-line-height' | '--gog-disabled-opacity' | '--gog-divider-block-spacing' | '--gog-divider-color' | '--gog-divider-dashed-style' | '--gog-divider-dotted-style' | '--gog-divider-inline-spacing' | '--gog-divider-inset-size' | '--gog-divider-label-color' | '--gog-divider-label-font-family' | '--gog-divider-label-font-size' | '--gog-divider-label-font-weight' | '--gog-divider-label-gap' | '--gog-divider-label-line-height' | '--gog-divider-line-color' | '--gog-divider-line-thickness' | '--gog-divider-solid-style' | '--gog-divider-spacing' | '--gog-divider-thickness' | '--gog-divider-vertical-length' | '--gog-dropdown-z' | '--gog-duration-base' | '--gog-duration-fast' | '--gog-duration-slow' | '--gog-easing' | '--gog-elevated-surface-color' | '--gog-elevation-0' | '--gog-elevation-1' | '--gog-elevation-2' | '--gog-elevation-3' | '--gog-elevation-4' | '--gog-elevation-5' | '--gog-elevation-ambient-alpha' | '--gog-elevation-contact' | '--gog-elevation-contact-blur' | '--gog-elevation-highlight' | '--gog-elevation-highlight-alpha' | '--gog-elevation-highlight-ink' | '--gog-elevation-ink' | '--gog-elevation-key-alpha' | '--gog-elevation-key-blur' | '--gog-elevation-key-x' | '--gog-elevation-key-y' | '--gog-elevation-ring' | '--gog-elevation-ring-width' | '--gog-field-error-line-height' | '--gog-field-float-label-in-top' | '--gog-field-float-label-over-gap' | '--gog-field-float-label-over-reserve' | '--gog-field-float-label-reserve' | '--gog-field-icon-glyph' | '--gog-field-icon-glyph-sm' | '--gog-field-icon-glyph-xsm' | '--gog-field-label-line-height' | '--gog-field-lg-font-size' | '--gog-field-lg-icon-inset' | '--gog-field-lg-icon-offset' | '--gog-field-lg-padding-x' | '--gog-field-lg-padding-y' | '--gog-field-line-height' | '--gog-field-md-font-size' | '--gog-field-md-icon-inset' | '--gog-field-md-icon-offset' | '--gog-field-md-padding-x' | '--gog-field-md-padding-y' | '--gog-field-slg-font-size' | '--gog-field-slg-icon-inset' | '--gog-field-slg-icon-offset' | '--gog-field-slg-padding-x' | '--gog-field-slg-padding-y' | '--gog-field-sm-font-size' | '--gog-field-sm-icon-inset' | '--gog-field-sm-icon-offset' | '--gog-field-sm-padding-x' | '--gog-field-sm-padding-y' | '--gog-field-xsm-font-size' | '--gog-field-xsm-icon-inset' | '--gog-field-xsm-icon-offset' | '--gog-field-xsm-padding-x' | '--gog-field-xsm-padding-y' | '--gog-focus-ring-offset' | '--gog-focus-ring-width' | '--gog-font-body' | '--gog-font-heading' | '--gog-font-mono' | '--gog-font-weight-bold' | '--gog-font-weight-heavy' | '--gog-font-weight-medium' | '--gog-font-weight-semibold' | '--gog-hover-color' | '--gog-icon-fallback-size' | '--gog-icon-size' | '--gog-icon-stroke-width' | '--gog-info-color' | '--gog-info-shade' | '--gog-info-text-color' | '--gog-input-clear-icon-ratio' | '--gog-input-clear-inset' | '--gog-input-clear-line-height' | '--gog-input-clear-radius' | '--gog-input-disabled-opacity' | '--gog-input-error-color' | '--gog-input-error-font-size' | '--gog-input-error-line-height' | '--gog-input-error-offset' | '--gog-input-field-bg' | '--gog-input-field-border' | '--gog-input-field-border-style' | '--gog-input-field-border-width' | '--gog-input-field-color' | '--gog-input-float-label-in-top' | '--gog-input-float-label-on-bg' | '--gog-input-float-label-over-gap' | '--gog-input-float-label-over-reserve' | '--gog-input-float-label-reserve' | '--gog-input-focus-border' | '--gog-input-focus-glow' | '--gog-input-focus-ring' | '--gog-input-focus-ring-offset' | '--gog-input-focus-ring-width' | '--gog-input-font' | '--gog-input-font-family' | '--gog-input-gap' | '--gog-input-icon-action-radius' | '--gog-input-icon-color' | '--gog-input-icon-focus-ring-width' | '--gog-input-icon-hover-color' | '--gog-input-icon-line-height' | '--gog-input-label-color' | '--gog-input-label-font-family' | '--gog-input-label-font-size' | '--gog-input-label-letter-spacing' | '--gog-input-label-line-height' | '--gog-input-label-text-transform' | '--gog-input-padding-x' | '--gog-input-padding-y' | '--gog-input-placeholder-color' | '--gog-input-radius' | '--gog-input-spin-hover-bg' | '--gog-input-spin-width' | '--gog-input-transition-duration' | '--gog-letter-spacing' | '--gog-line-height-loose' | '--gog-line-height-none' | '--gog-line-height-normal' | '--gog-line-height-relaxed' | '--gog-line-height-snug' | '--gog-line-height-tight' | '--gog-menu-available-height' | '--gog-menu-bg' | '--gog-menu-border-color' | '--gog-menu-border-style' | '--gog-menu-border-width' | '--gog-menu-focus-ring' | '--gog-menu-focus-ring-width' | '--gog-menu-font-family' | '--gog-menu-gap' | '--gog-menu-item-color' | '--gog-menu-item-disabled-color' | '--gog-menu-item-disabled-opacity' | '--gog-menu-item-font-size' | '--gog-menu-item-gap' | '--gog-menu-item-hover-bg' | '--gog-menu-item-hover-color' | '--gog-menu-item-icon-size' | '--gog-menu-item-line-height' | '--gog-menu-item-padding' | '--gog-menu-item-press-bg' | '--gog-menu-item-radius' | '--gog-menu-max-height' | '--gog-menu-max-width' | '--gog-menu-min-width' | '--gog-menu-offset' | '--gog-menu-padding' | '--gog-menu-radius' | '--gog-menu-shadow' | '--gog-menu-transition-duration' | '--gog-menu-z' | '--gog-multiselect-actions-gap' | '--gog-multiselect-actions-inset' | '--gog-multiselect-arrow-icon-ratio' | '--gog-multiselect-arrow-transition-duration' | '--gog-multiselect-border-color' | '--gog-multiselect-checkbox-bg' | '--gog-multiselect-checkbox-border' | '--gog-multiselect-checkbox-checked-bg' | '--gog-multiselect-checkbox-checked-color' | '--gog-multiselect-clear-icon-ratio' | '--gog-multiselect-clear-line-height' | '--gog-multiselect-clear-radius' | '--gog-multiselect-controls-gap' | '--gog-multiselect-controls-padding' | '--gog-multiselect-disabled-opacity' | '--gog-multiselect-error-color' | '--gog-multiselect-error-font-size' | '--gog-multiselect-error-line-height' | '--gog-multiselect-error-offset' | '--gog-multiselect-field-bg' | '--gog-multiselect-field-border' | '--gog-multiselect-field-border-style' | '--gog-multiselect-field-border-width' | '--gog-multiselect-field-color' | '--gog-multiselect-filter-border-color' | '--gog-multiselect-filter-border-style' | '--gog-multiselect-filter-border-width' | '--gog-multiselect-filter-empty-color' | '--gog-multiselect-filter-empty-padding' | '--gog-multiselect-filter-input-bg' | '--gog-multiselect-filter-input-border' | '--gog-multiselect-filter-input-color' | '--gog-multiselect-filter-input-padding-x' | '--gog-multiselect-filter-input-padding-y' | '--gog-multiselect-filter-input-radius' | '--gog-multiselect-filter-padding' | '--gog-multiselect-float-label-in-top' | '--gog-multiselect-float-label-on-bg' | '--gog-multiselect-float-label-over-gap' | '--gog-multiselect-float-label-over-reserve' | '--gog-multiselect-float-label-reserve' | '--gog-multiselect-focus-border' | '--gog-multiselect-focus-glow' | '--gog-multiselect-focus-ring' | '--gog-multiselect-focus-ring-offset' | '--gog-multiselect-focus-ring-width' | '--gog-multiselect-font-family' | '--gog-multiselect-font-size' | '--gog-multiselect-gap' | '--gog-multiselect-label-color' | '--gog-multiselect-label-font-family' | '--gog-multiselect-label-font-size' | '--gog-multiselect-label-letter-spacing' | '--gog-multiselect-label-line-height' | '--gog-multiselect-label-text-transform' | '--gog-multiselect-mark-icon-ratio' | '--gog-multiselect-mark-size-ratio' | '--gog-multiselect-min-width' | '--gog-multiselect-option-color' | '--gog-multiselect-option-disabled-opacity' | '--gog-multiselect-option-gap' | '--gog-multiselect-option-gap-inline' | '--gog-multiselect-option-height' | '--gog-multiselect-option-hover-bg' | '--gog-multiselect-option-press-bg' | '--gog-multiselect-option-radius' | '--gog-multiselect-option-transition-duration' | '--gog-multiselect-options-padding' | '--gog-multiselect-overflow-color' | '--gog-multiselect-overflow-font-size' | '--gog-multiselect-overflow-gap' | '--gog-multiselect-overflow-line-height' | '--gog-multiselect-padding-x' | '--gog-multiselect-padding-y' | '--gog-multiselect-panel-bg' | '--gog-multiselect-panel-border' | '--gog-multiselect-panel-max-height' | '--gog-multiselect-panel-max-width' | '--gog-multiselect-panel-offset' | '--gog-multiselect-panel-radius' | '--gog-multiselect-panel-shadow' | '--gog-multiselect-placeholder-color' | '--gog-multiselect-radius' | '--gog-multiselect-transition-duration' | '--gog-multiselect-value-color' | '--gog-muted-text-color' | '--gog-paginator-ellipsis-color' | '--gog-paginator-ellipsis-font-family' | '--gog-paginator-ellipsis-font-size' | '--gog-paginator-ellipsis-line-height' | '--gog-paginator-ellipsis-min-width' | '--gog-paginator-gap' | '--gog-paginator-page-size-min-width' | '--gog-panel-bg' | '--gog-panel-border-color' | '--gog-panel-border-style' | '--gog-panel-border-width' | '--gog-panel-chevron-size' | '--gog-panel-color' | '--gog-panel-disabled-opacity' | '--gog-panel-elevated-bg' | '--gog-panel-elevated-border-color' | '--gog-panel-elevated-shadow' | '--gog-panel-filled-bg' | '--gog-panel-filled-border-color' | '--gog-panel-filled-shadow' | '--gog-panel-focus-ring' | '--gog-panel-focus-ring-offset' | '--gog-panel-focus-ring-width' | '--gog-panel-font-family' | '--gog-panel-footer-border-color' | '--gog-panel-footer-gap' | '--gog-panel-footer-padding-top' | '--gog-panel-gap' | '--gog-panel-header-gap' | '--gog-panel-heading-color' | '--gog-panel-heading-font-family' | '--gog-panel-heading-font-size' | '--gog-panel-heading-font-weight' | '--gog-panel-heading-line-height' | '--gog-panel-lg-gap' | '--gog-panel-lg-padding-x' | '--gog-panel-lg-padding-y' | '--gog-panel-md-gap' | '--gog-panel-md-padding-x' | '--gog-panel-md-padding-y' | '--gog-panel-outlined-bg' | '--gog-panel-outlined-border-color' | '--gog-panel-outlined-shadow' | '--gog-panel-padding-x' | '--gog-panel-padding-y' | '--gog-panel-radius' | '--gog-panel-shadow' | '--gog-panel-slg-gap' | '--gog-panel-slg-padding-x' | '--gog-panel-slg-padding-y' | '--gog-panel-sm-gap' | '--gog-panel-sm-padding-x' | '--gog-panel-sm-padding-y' | '--gog-panel-toggle-color' | '--gog-panel-toggle-hover-bg' | '--gog-panel-toggle-radius' | '--gog-panel-toggle-size' | '--gog-panel-transition-duration' | '--gog-panel-xsm-gap' | '--gog-panel-xsm-padding-x' | '--gog-panel-xsm-padding-y' | '--gog-primary-color' | '--gog-progressbar-accent-bg' | '--gog-progressbar-accent-buffer-bg' | '--gog-progressbar-buffer-bg' | '--gog-progressbar-danger-bg' | '--gog-progressbar-danger-buffer-bg' | '--gog-progressbar-edge-backing-color' | '--gog-progressbar-edge-color' | '--gog-progressbar-edge-width' | '--gog-progressbar-fill-bg' | '--gog-progressbar-height' | '--gog-progressbar-indeterminate-duration' | '--gog-progressbar-indeterminate-easing' | '--gog-progressbar-info-bg' | '--gog-progressbar-info-buffer-bg' | '--gog-progressbar-lg-height' | '--gog-progressbar-md-height' | '--gog-progressbar-radius' | '--gog-progressbar-slg-height' | '--gog-progressbar-sm-height' | '--gog-progressbar-stripe-color' | '--gog-progressbar-stripe-size' | '--gog-progressbar-success-bg' | '--gog-progressbar-success-buffer-bg' | '--gog-progressbar-track-base-bg' | '--gog-progressbar-track-bg' | '--gog-progressbar-transition-duration' | '--gog-progressbar-value-color' | '--gog-progressbar-value-font-family' | '--gog-progressbar-value-font-size' | '--gog-progressbar-value-gap' | '--gog-progressbar-value-line-height' | '--gog-progressbar-value-min-width' | '--gog-progressbar-warning-bg' | '--gog-progressbar-warning-buffer-bg' | '--gog-progressbar-xsm-height' | '--gog-radio-bg' | '--gog-radio-border-color' | '--gog-radio-border-style' | '--gog-radio-border-width' | '--gog-radio-box-size' | '--gog-radio-checked-bg' | '--gog-radio-checked-border' | '--gog-radio-disabled-opacity' | '--gog-radio-dot-color' | '--gog-radio-dot-size-ratio' | '--gog-radio-error-color' | '--gog-radio-error-font-size' | '--gog-radio-error-line-height' | '--gog-radio-focus-ring' | '--gog-radio-focus-ring-offset' | '--gog-radio-focus-ring-width' | '--gog-radio-font-family' | '--gog-radio-gap' | '--gog-radio-group-gap' | '--gog-radio-group-label-color' | '--gog-radio-group-label-size' | '--gog-radio-group-option-gap' | '--gog-radio-group-option-gap-horizontal' | '--gog-radio-label-color' | '--gog-radio-label-line-height' | '--gog-radio-label-size' | '--gog-radio-padding' | '--gog-radio-transition-duration' | '--gog-radius' | '--gog-ripple-color' | '--gog-ripple-easing' | '--gog-ripple-enter-duration' | '--gog-ripple-exit-duration' | '--gog-ripple-opacity' | '--gog-scroll-corner-bg' | '--gog-scroll-fade-duration' | '--gog-scroll-focus-ring' | '--gog-scroll-focus-ring-width' | '--gog-scroll-normal-thumb-hit-padding' | '--gog-scroll-normal-thumb-min-size' | '--gog-scroll-normal-track-width' | '--gog-scroll-thin-thumb-hit-padding' | '--gog-scroll-thin-thumb-min-size' | '--gog-scroll-thin-track-width' | '--gog-scroll-thumb-active-bg' | '--gog-scroll-thumb-bg' | '--gog-scroll-thumb-hover-bg' | '--gog-scroll-thumb-inset' | '--gog-scroll-thumb-radius' | '--gog-scroll-track-bg' | '--gog-scroll-track-radius' | '--gog-secondary-color' | '--gog-select-chevron-color' | '--gog-select-chevron-icon-ratio' | '--gog-select-chevron-inset' | '--gog-select-clear-color' | '--gog-select-clear-gap' | '--gog-select-clear-hover-color' | '--gog-select-clear-icon-ratio' | '--gog-select-clear-line-height' | '--gog-select-clear-radius' | '--gog-select-control-font' | '--gog-select-control-gap' | '--gog-select-control-padding-x' | '--gog-select-control-padding-y' | '--gog-select-disabled-opacity' | '--gog-select-error-color' | '--gog-select-error-font-size' | '--gog-select-error-line-height' | '--gog-select-field-bg' | '--gog-select-field-border' | '--gog-select-field-border-style' | '--gog-select-field-border-width' | '--gog-select-field-color' | '--gog-select-filter-border-color' | '--gog-select-filter-border-style' | '--gog-select-filter-border-width' | '--gog-select-filter-empty-color' | '--gog-select-filter-empty-padding' | '--gog-select-filter-input-bg' | '--gog-select-filter-input-border' | '--gog-select-filter-input-color' | '--gog-select-filter-input-padding-x' | '--gog-select-filter-input-padding-y' | '--gog-select-filter-input-radius' | '--gog-select-filter-padding' | '--gog-select-float-label-in-top' | '--gog-select-float-label-on-bg' | '--gog-select-float-label-over-gap' | '--gog-select-float-label-over-reserve' | '--gog-select-float-label-reserve' | '--gog-select-focus-border' | '--gog-select-focus-glow' | '--gog-select-focus-ring' | '--gog-select-focus-ring-offset' | '--gog-select-focus-ring-width' | '--gog-select-font-family' | '--gog-select-gap' | '--gog-select-label-color' | '--gog-select-label-font-family' | '--gog-select-label-font-size' | '--gog-select-label-letter-spacing' | '--gog-select-label-line-height' | '--gog-select-label-text-transform' | '--gog-select-mark-icon-ratio' | '--gog-select-mark-size-ratio' | '--gog-select-min-width' | '--gog-select-option-color' | '--gog-select-option-disabled-opacity' | '--gog-select-option-gap' | '--gog-select-option-height' | '--gog-select-option-hover-bg' | '--gog-select-option-press-bg' | '--gog-select-option-radius' | '--gog-select-option-selected-color' | '--gog-select-option-transition-duration' | '--gog-select-options-padding' | '--gog-select-panel-bg' | '--gog-select-panel-max-height' | '--gog-select-panel-max-width' | '--gog-select-panel-offset' | '--gog-select-panel-radius' | '--gog-select-panel-shadow' | '--gog-select-placeholder-color' | '--gog-select-radius' | '--gog-select-transition-duration' | '--gog-skeleton-base' | '--gog-skeleton-circle-size-lg' | '--gog-skeleton-circle-size-md' | '--gog-skeleton-circle-size-slg' | '--gog-skeleton-circle-size-sm' | '--gog-skeleton-circle-size-xsm' | '--gog-skeleton-line-gap' | '--gog-skeleton-line-height-lg' | '--gog-skeleton-line-height-md' | '--gog-skeleton-line-height-slg' | '--gog-skeleton-line-height-sm' | '--gog-skeleton-line-height-xsm' | '--gog-skeleton-line-radius' | '--gog-skeleton-pulse-duration' | '--gog-skeleton-pulse-min-opacity' | '--gog-skeleton-radius' | '--gog-skeleton-rect-height-lg' | '--gog-skeleton-rect-height-md' | '--gog-skeleton-rect-height-slg' | '--gog-skeleton-rect-height-sm' | '--gog-skeleton-rect-height-xsm' | '--gog-skeleton-shine' | '--gog-skeleton-short-line-width' | '--gog-skeleton-square-radius' | '--gog-skeleton-wave-duration' | '--gog-slider-auto-width' | '--gog-slider-disabled-opacity' | '--gog-slider-error-color' | '--gog-slider-error-font-family' | '--gog-slider-error-font-size' | '--gog-slider-error-line-height' | '--gog-slider-fill-bg' | '--gog-slider-focus-ring' | '--gog-slider-focus-ring-width' | '--gog-slider-gap' | '--gog-slider-label-color' | '--gog-slider-label-font-family' | '--gog-slider-label-font-size' | '--gog-slider-label-letter-spacing' | '--gog-slider-label-line-height' | '--gog-slider-label-text-transform' | '--gog-slider-range-color' | '--gog-slider-range-font-size' | '--gog-slider-range-line-height' | '--gog-slider-thumb-bg' | '--gog-slider-thumb-border' | '--gog-slider-thumb-border-width' | '--gog-slider-thumb-glow-size' | '--gog-slider-thumb-radius' | '--gog-slider-thumb-shadow' | '--gog-slider-thumb-size' | '--gog-slider-track-area-height' | '--gog-slider-track-bg' | '--gog-slider-track-border-color' | '--gog-slider-track-border-style' | '--gog-slider-track-border-width' | '--gog-slider-track-height' | '--gog-slider-track-radius' | '--gog-slider-value-color' | '--gog-slider-value-font-family' | '--gog-slider-value-font-size' | '--gog-slider-value-line-height' | '--gog-slider-value-min-width' | '--gog-slider-vertical-length' | '--gog-space-12' | '--gog-space-16' | '--gog-space-20' | '--gog-space-24' | '--gog-space-28' | '--gog-space-2xl' | '--gog-space-32' | '--gog-space-4' | '--gog-space-40' | '--gog-space-48' | '--gog-space-8' | '--gog-space-lg' | '--gog-space-md' | '--gog-space-sm' | '--gog-space-xs' | '--gog-spinner-arc-inner-color' | '--gog-spinner-arc-inner-dash' | '--gog-spinner-arc-inner-glow' | '--gog-spinner-arc-inner-opacity' | '--gog-spinner-arc-inner-pulse-opacity' | '--gog-spinner-arc-inner-stroke-compact' | '--gog-spinner-arc-outer-color' | '--gog-spinner-arc-outer-dash' | '--gog-spinner-arc-outer-glow' | '--gog-spinner-arc-outer-pulse-opacity' | '--gog-spinner-diamond-color' | '--gog-spinner-diamond-glow' | '--gog-spinner-diamond-opacity' | '--gog-spinner-glow-color' | '--gog-spinner-overlay-bg' | '--gog-spinner-overlay-blur' | '--gog-spinner-overlay-fade-duration' | '--gog-spinner-overlay-z' | '--gog-spinner-pulse-duration' | '--gog-spinner-ring-duration' | '--gog-spinner-ring-glow' | '--gog-spinner-ring-padding' | '--gog-spinner-rune-color' | '--gog-spinner-rune-font-family' | '--gog-spinner-rune-glow' | '--gog-spinner-rune-pulse-opacity' | '--gog-spinner-rune-size' | '--gog-spinner-size-lg' | '--gog-spinner-size-md' | '--gog-spinner-size-slg' | '--gog-spinner-size-sm' | '--gog-spinner-size-xsm' | '--gog-spinner-spin-duration' | '--gog-spinner-spin-slow-duration' | '--gog-spinner-ticks-duration' | '--gog-spinner-track-color' | '--gog-spinner-track-opacity' | '--gog-success-color' | '--gog-success-shade' | '--gog-success-text-color' | '--gog-surface-color' | '--gog-table-accent-bright' | '--gog-table-accent-color' | '--gog-table-border-color' | '--gog-table-border-style' | '--gog-table-border-width' | '--gog-table-empty-font-size' | '--gog-table-empty-line-height' | '--gog-table-empty-padding' | '--gog-table-focus-ring' | '--gog-table-focus-ring-width' | '--gog-table-font-family' | '--gog-table-footer-gap' | '--gog-table-footer-min-height' | '--gog-table-gap' | '--gog-table-header-bg' | '--gog-table-header-font-family' | '--gog-table-header-letter-spacing' | '--gog-table-header-text-transform' | '--gog-table-hover-bg' | '--gog-table-lg-padding-v' | '--gog-table-lg-td-font-size' | '--gog-table-lg-th-font-size' | '--gog-table-loading-opacity' | '--gog-table-loading-padding' | '--gog-table-md-padding-v' | '--gog-table-md-td-font-size' | '--gog-table-md-th-font-size' | '--gog-table-muted-color' | '--gog-table-num-col-width' | '--gog-table-num-font-size' | '--gog-table-num-line-height' | '--gog-table-numeric-font-family' | '--gog-table-padding-h' | '--gog-table-row-border-width' | '--gog-table-row-transition-duration' | '--gog-table-select-col-width' | '--gog-table-selected-bg' | '--gog-table-slg-padding-v' | '--gog-table-slg-td-font-size' | '--gog-table-slg-th-font-size' | '--gog-table-sm-padding-v' | '--gog-table-sm-td-font-size' | '--gog-table-sm-th-font-size' | '--gog-table-sort-icon-opacity' | '--gog-table-sort-icon-size' | '--gog-table-sort-icon-width' | '--gog-table-surface' | '--gog-table-td-font-size' | '--gog-table-td-line-height' | '--gog-table-td-padding-v' | '--gog-table-text-color' | '--gog-table-th-font-size' | '--gog-table-th-inner-gap' | '--gog-table-th-line-height' | '--gog-table-th-padding-v' | '--gog-table-total-font-size' | '--gog-table-total-letter-spacing' | '--gog-table-total-line-height' | '--gog-table-total-text-transform' | '--gog-table-xsm-padding-v' | '--gog-table-xsm-td-font-size' | '--gog-table-xsm-th-font-size' | '--gog-tabs-active-color' | '--gog-tabs-disabled-opacity' | '--gog-tabs-focus-ring-color' | '--gog-tabs-focus-ring-offset' | '--gog-tabs-focus-ring-width' | '--gog-tabs-font-family' | '--gog-tabs-font-weight' | '--gog-tabs-gap' | '--gog-tabs-header-border-color' | '--gog-tabs-header-border-style' | '--gog-tabs-header-border-width' | '--gog-tabs-hover-color' | '--gog-tabs-icon-size' | '--gog-tabs-indicator-color' | '--gog-tabs-indicator-radius' | '--gog-tabs-indicator-thickness' | '--gog-tabs-letter-spacing' | '--gog-tabs-lg-font-size' | '--gog-tabs-lg-padding' | '--gog-tabs-line-height' | '--gog-tabs-md-font-size' | '--gog-tabs-md-padding' | '--gog-tabs-panel-color' | '--gog-tabs-panel-padding' | '--gog-tabs-press-bg' | '--gog-tabs-press-color' | '--gog-tabs-rest-bg' | '--gog-tabs-rest-color' | '--gog-tabs-slg-font-size' | '--gog-tabs-slg-padding' | '--gog-tabs-sm-font-size' | '--gog-tabs-sm-padding' | '--gog-tabs-tab-bg' | '--gog-tabs-tab-color' | '--gog-tabs-tab-font-size' | '--gog-tabs-tab-gap' | '--gog-tabs-tab-padding' | '--gog-tabs-text-transform' | '--gog-tabs-transition-duration' | '--gog-tabs-xsm-font-size' | '--gog-tabs-xsm-padding' | '--gog-tag-accent' | '--gog-tag-bg' | '--gog-tag-bg-base' | '--gog-tag-bg-mix' | '--gog-tag-border' | '--gog-tag-border-style' | '--gog-tag-border-width' | '--gog-tag-color' | '--gog-tag-color-base' | '--gog-tag-color-mix' | '--gog-tag-danger-color' | '--gog-tag-default-color' | '--gog-tag-font-family' | '--gog-tag-font-size' | '--gog-tag-font-weight' | '--gog-tag-gap' | '--gog-tag-icon-size' | '--gog-tag-info-color' | '--gog-tag-inner-border-width' | '--gog-tag-lg-font-size' | '--gog-tag-lg-gap' | '--gog-tag-lg-icon-size' | '--gog-tag-lg-padding-block' | '--gog-tag-lg-padding-inline' | '--gog-tag-line-height' | '--gog-tag-md-font-size' | '--gog-tag-md-gap' | '--gog-tag-md-icon-size' | '--gog-tag-md-padding-block' | '--gog-tag-md-padding-inline' | '--gog-tag-padding-block' | '--gog-tag-padding-inline' | '--gog-tag-pill-radius' | '--gog-tag-radius' | '--gog-tag-slg-font-size' | '--gog-tag-slg-gap' | '--gog-tag-slg-icon-size' | '--gog-tag-slg-padding-block' | '--gog-tag-slg-padding-inline' | '--gog-tag-sm-font-size' | '--gog-tag-sm-gap' | '--gog-tag-sm-icon-size' | '--gog-tag-sm-padding-block' | '--gog-tag-sm-padding-inline' | '--gog-tag-success-color' | '--gog-tag-warning-color' | '--gog-tag-xsm-font-size' | '--gog-tag-xsm-gap' | '--gog-tag-xsm-icon-size' | '--gog-tag-xsm-padding-block' | '--gog-tag-xsm-padding-inline' | '--gog-text-2xl' | '--gog-text-2xs' | '--gog-text-3xl' | '--gog-text-color' | '--gog-text-lg' | '--gog-text-md' | '--gog-text-slg' | '--gog-text-sm' | '--gog-text-transform' | '--gog-text-xl' | '--gog-text-xs' | '--gog-textarea-clear-icon-ratio' | '--gog-textarea-line-height' | '--gog-textarea-resize-grip-color' | '--gog-textarea-resize-grip-offset' | '--gog-textarea-resize-grip-opacity' | '--gog-textarea-resize-grip-size' | '--gog-textarea-resize-grip-stripe-gap' | '--gog-textarea-resize-grip-stripe-width' | '--gog-textarea-resize-inset-bottom' | '--gog-textarea-resize-inset-right' | '--gog-textarea-scrollbar-width' | '--gog-toast-accent-width' | '--gog-toast-action-font-size' | '--gog-toast-action-line-height' | '--gog-toast-action-padding' | '--gog-toast-actions-gap' | '--gog-toast-base-z' | '--gog-toast-bg' | '--gog-toast-border' | '--gog-toast-close-font-size' | '--gog-toast-close-line-height' | '--gog-toast-close-padding' | '--gog-toast-color' | '--gog-toast-content-gap' | '--gog-toast-enter-distance' | '--gog-toast-error-color' | '--gog-toast-font-family' | '--gog-toast-gap' | '--gog-toast-icon-color' | '--gog-toast-icon-line-height' | '--gog-toast-icon-size' | '--gog-toast-info-color' | '--gog-toast-main-gap' | '--gog-toast-max-width' | '--gog-toast-message-font-size' | '--gog-toast-message-line-height' | '--gog-toast-min-width' | '--gog-toast-padding' | '--gog-toast-progress-height' | '--gog-toast-progress-opacity' | '--gog-toast-radius' | '--gog-toast-shadow' | '--gog-toast-stack-expanded-gap' | '--gog-toast-stack-max-depth' | '--gog-toast-stack-min-opacity' | '--gog-toast-stack-opacity-step' | '--gog-toast-stack-padding' | '--gog-toast-stack-peek' | '--gog-toast-stack-scale-step' | '--gog-toast-success-color' | '--gog-toast-transition-duration' | '--gog-toast-warning-color' | '--gog-toast-z-index' | '--gog-toggle-border-color' | '--gog-toggle-border-style' | '--gog-toggle-border-width' | '--gog-toggle-disabled-opacity' | '--gog-toggle-focus-ring-color' | '--gog-toggle-focus-ring-offset' | '--gog-toggle-focus-ring-width' | '--gog-toggle-font-family' | '--gog-toggle-gap' | '--gog-toggle-label-color' | '--gog-toggle-label-line-height' | '--gog-toggle-lg-label-size' | '--gog-toggle-lg-state-font-size' | '--gog-toggle-lg-thumb-size' | '--gog-toggle-lg-track-height' | '--gog-toggle-lg-track-width' | '--gog-toggle-md-label-size' | '--gog-toggle-md-state-font-size' | '--gog-toggle-md-thumb-size' | '--gog-toggle-md-track-height' | '--gog-toggle-md-track-width' | '--gog-toggle-on-border-color' | '--gog-toggle-padding' | '--gog-toggle-radius' | '--gog-toggle-slg-label-size' | '--gog-toggle-slg-state-font-size' | '--gog-toggle-slg-thumb-size' | '--gog-toggle-slg-track-height' | '--gog-toggle-slg-track-width' | '--gog-toggle-sm-label-size' | '--gog-toggle-sm-state-font-size' | '--gog-toggle-sm-thumb-size' | '--gog-toggle-sm-track-height' | '--gog-toggle-sm-track-width' | '--gog-toggle-state-color' | '--gog-toggle-state-font-weight' | '--gog-toggle-state-letter-spacing' | '--gog-toggle-state-line-height' | '--gog-toggle-state-offset' | '--gog-toggle-state-padding-inline' | '--gog-toggle-state-thumb-gap' | '--gog-toggle-thumb-bg' | '--gog-toggle-thumb-inset' | '--gog-toggle-thumb-off-bg' | '--gog-toggle-thumb-on-bg' | '--gog-toggle-thumb-shadow' | '--gog-toggle-track-bg' | '--gog-toggle-track-off-bg' | '--gog-toggle-track-on-bg' | '--gog-toggle-transition-duration' | '--gog-toggle-xsm-label-size' | '--gog-toggle-xsm-state-font-size' | '--gog-toggle-xsm-thumb-size' | '--gog-toggle-xsm-track-height' | '--gog-toggle-xsm-track-width' | '--gog-tooltip-arrow-size' | '--gog-tooltip-bg' | '--gog-tooltip-border-color' | '--gog-tooltip-border-style' | '--gog-tooltip-border-width' | '--gog-tooltip-color' | '--gog-tooltip-font-family' | '--gog-tooltip-font-size' | '--gog-tooltip-gap' | '--gog-tooltip-line-height' | '--gog-tooltip-max-height' | '--gog-tooltip-max-width' | '--gog-tooltip-padding' | '--gog-tooltip-radius' | '--gog-tooltip-shadow' | '--gog-tooltip-transition-duration' | '--gog-tooltip-z' | '--gog-warning-color' | '--gog-warning-shade' | '--gog-warning-text-color' | '--gog-z-base';
|
|
4944
|
-
/** Which of the three layers a token belongs to — see the README's theming section. */
|
|
4945
|
-
type GogTokenLayer = 'foundation' | 'component' | 'instance';
|
|
4946
|
-
interface GogTokenGroup {
|
|
4947
|
-
/** The `── Section ──` heading the token sits under in theme.css. */
|
|
4948
|
-
readonly section: string;
|
|
4949
|
-
readonly layer: GogTokenLayer;
|
|
4950
|
-
readonly tokens: readonly GogTokenName[];
|
|
4951
|
-
}
|
|
4952
|
-
/**
|
|
4953
|
-
* The token catalogue, grouped as theme.css groups it. Exported so a theme editor or docs page
|
|
4954
|
-
* can enumerate the real tokens instead of keeping a hand-copied list that drifts.
|
|
4955
|
-
*/
|
|
4956
|
-
declare const GOG_TOKEN_GROUPS: readonly GogTokenGroup[];
|
|
4957
|
-
|
|
4958
|
-
/**
|
|
4959
|
-
* Icons an app has registered, keyed by the name `gog-icon` will be asked for. Resolves to `{}`
|
|
4960
|
-
* — only the built-ins are available — until a `provideGogIcons(...)` call fills it in.
|
|
4961
|
-
*
|
|
4962
|
-
* Values are raw `<svg>` markup, injected with `bypassSecurityTrustHtml` exactly like the
|
|
4963
|
-
* built-ins. See `provideGogIcons` for what that means for you.
|
|
4964
|
-
*/
|
|
4965
|
-
declare const GOG_ICONS: InjectionToken<Readonly<Record<string, string>>>;
|
|
4966
|
-
/**
|
|
4967
|
-
* Registers icons by name, so `<gog-icon name="cart" />` works for glyphs the library does not
|
|
4968
|
-
* ship. This is the supported way to use your own icon set: the alternative — a `TemplateRef`
|
|
4969
|
-
* per instance through the `template` input — costs a `<ng-template>` at every use site and is
|
|
4970
|
-
* meant for one-offs, not for an icon set.
|
|
4971
|
-
*
|
|
4972
|
-
* ```ts
|
|
4973
|
-
* // app.config.ts
|
|
4974
|
-
* providers: [
|
|
4975
|
-
* provideGogIcons({
|
|
4976
|
-
* cart: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor">…</svg>',
|
|
4977
|
-
* user: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor">…</svg>',
|
|
4978
|
-
* }),
|
|
4979
|
-
* ]
|
|
4980
|
-
* ```
|
|
4981
|
-
*
|
|
4982
|
-
* **A registered name overrides a built-in of the same name**, which is how you swap the
|
|
4983
|
-
* library's checkmark or chevron for your own without touching every component that renders one.
|
|
4984
|
-
*
|
|
4985
|
-
* **Providing this again further down the injector tree layers onto the parent's set** rather
|
|
4986
|
-
* than replacing it, matching `provideGogConfig`: a lazy feature can register the three icons
|
|
4987
|
-
* only it uses, and the app-wide set stays available inside it.
|
|
4988
|
-
*
|
|
4989
|
-
* ## What to put in the SVG
|
|
4990
|
-
*
|
|
4991
|
-
* Use `stroke="currentColor"` (or `fill="currentColor"`) and a `viewBox`, and leave the sizing
|
|
4992
|
-
* alone — `gog-icon`'s stylesheet drives width, height and stroke width from the
|
|
4993
|
-
* `--gog-icon-*` tokens, so an icon inherits size and colour from wherever it is used, the same
|
|
4994
|
-
* as a built-in.
|
|
4995
|
-
*
|
|
4996
|
-
* ## Security
|
|
4997
|
-
*
|
|
4998
|
-
* The markup is inserted with `DomSanitizer.bypassSecurityTrustHtml`, because Angular's HTML
|
|
4999
|
-
* sanitizer strips SVG and would leave you with nothing. That is safe for what this is for —
|
|
5000
|
-
* static icon markup you wrote or imported at build time — and unsafe for anything derived from
|
|
5001
|
-
* user input or fetched at runtime. **Never build a registered icon string from data you did
|
|
5002
|
-
* not author.** If you need remote icons, fetch them yourself, sanitize them with a real SVG
|
|
5003
|
-
* sanitizer, and register the result.
|
|
5004
|
-
*/
|
|
5005
|
-
declare function provideGogIcons(icons: Readonly<Record<string, string>>): Provider;
|
|
5006
|
-
|
|
5007
|
-
export { AccordionComponent, AutocompleteComponent, ButtonComponent, ButtonToggleGroupComponent, CalendarComponent, CardComponent, CheckboxComponent, ChipComponent, CollapsibleComponent, ConfirmationDialogComponent, DIALOG_DATA, DIALOG_REF, DatepickerComponent, DialogComponent, DialogService, DividerComponent, GOG_CONFIG, GOG_DEPRECATIONS, GOG_ICONS, GOG_TABS_STATE, GOG_TOKEN_GROUPS, GogAccordionChevronDirective, GogAccordionContentDirective, GogAccordionHeaderDirective, GogBadgeDirective, GogButtonDirective, GogButtonToggleOptionDirective, GogCardFooterDirective, GogCardHeaderDirective, GogCardLinkDirective, GogCardMediaDirective, GogCheckboxIconDirective, GogCollapsibleContentDirective, GogCollapsibleTriggerDirective, GogColumn, GogColumnBodyDirective, GogColumnHeaderDirective, GogDropdownBase, GogDropdownChevronDirective, GogDropdownOptionDirective, GogFloatLabelState, GogInputAddonEndDirective, GogInputAddonStartDirective, GogMenuItemDirective, GogMenuTriggerDirective, GogMultiselectClearIconDirective, GogPanelFooterDirective, GogPanelHeaderDirective, GogRippleDirective, GogTabContentDirective, GogTabHeaderDirective, GogTagIconDirective, GogTooltipDirective, ICON_DEFS, IconComponent, InputfieldComponent, MenuComponent, MultiselectComponent, PaginatorComponent, PanelComponent, ProgressbarComponent, RadioGroupComponent, ScrollComponent, SelectComponent, SkeletonComponent, SliderComponent, SpinnerComponent, SpinnerOverlayComponent, TabComponent, TableComponent, TabsComponent, TagComponent, TextareaComponent, ThemeService, ToastComponent, ToastContainerComponent, ToastService, ToggleComponent, addDays, addMonths, addYears, buildMonthGrid, clampDate, copyTimeOnto, daysInMonth, defaultCompare, formatDate, getByPath, isAfterDay, isBeforeDay, isInRange, isSameDay, isSameMonth, isSameOptionValue, isWithinBounds, localeFirstDayOfWeek, monthNames, parseDate, provideGogConfig, provideGogIcons, readOption, resolveConfigured, startOfDay, weekdayNames, withTime };
|
|
5008
|
-
export type { ConfirmDialogData, DialogConfig, DialogHandle, DialogRef, GogAccordionChevronContext, GogAccordionHeaderContext, GogAccordionItem, GogAccordionToggleEvent, GogAriaHasPopup, GogBadgePosition, GogBuiltinIconName, GogButtonToggleAppearance, GogButtonToggleOptionContext, GogCalendarDay, GogColumnBodyContext, GogColumnHeaderContext, GogDateRange, GogDateSelectionMode, GogDatepickerValue, GogDeprecation, GogDeprecationKind, GogDividerVariant, GogDropdownDirection, GogDropdownFilterPosition, GogDropdownOption, GogDropdownOptionContext, GogFloatLabelVariant, GogGlobalConfig, GogHourFormat, GogIconName, GogInputMode, GogInputType, GogOptionAccessor, GogOrientation, GogPaginatorRangeMode, GogProgressbarMode, GogProgressbarVariant, GogRadioOption, GogScrollAxis, GogScrollMetrics, GogScrollOverscrollBehavior, GogScrollSize, GogSeverity, GogSize, GogSkeletonAnimation, GogSkeletonShape, GogSliderOrientation, GogSliderRange, GogSpinnerVariant, GogSurfaceVariant, GogTabHeaderContext, GogTableRowClickEvent, GogTableSelectionMode, GogTableSortEvent, GogTabsAlign, GogTabsState, GogTagShape, GogTagVariant, GogTextareaResize, GogTokenGroup, GogTokenLayer, GogTokenName, GogTooltipPosition, GogTooltipSide, GogVariant, OpenDialog, SortDirection, Toast, ToastAction, ToastConfig, ToastPosition, ToastType };
|
|
4060
|
+
export { AccordionComponent, AlertComponent, AutocompleteComponent, ButtonComponent, ButtonToggleGroupComponent, CalendarComponent, CardComponent, CheckboxComponent, ChipComponent, CollapsibleComponent, ConfirmationDialogComponent, DIALOG_DATA, DIALOG_REF, DatepickerComponent, DialogComponent, DialogService, DividerComponent, GOG_TABS_STATE, GogAccordionChevronDirective, GogAccordionContentDirective, GogAccordionHeaderDirective, GogAlertIconDirective, GogBadgeDirective, GogButtonDirective, GogButtonToggleOptionDirective, GogCardFooterDirective, GogCardHeaderDirective, GogCardLinkDirective, GogCardMediaDirective, GogCheckboxIconDirective, GogCollapsibleContentDirective, GogCollapsibleTriggerDirective, GogColumn, GogColumnBodyDirective, GogColumnHeaderDirective, GogInputAddonEndDirective, GogInputAddonStartDirective, GogMenuItemDirective, GogMenuTriggerDirective, GogMultiselectClearIconDirective, GogPanelFooterDirective, GogPanelHeaderDirective, GogRippleDirective, GogTabContentDirective, GogTabHeaderDirective, GogTagIconDirective, GogTooltipDirective, IconComponent, InputfieldComponent, MenuComponent, MultiselectComponent, PaginatorComponent, PanelComponent, ProgressbarComponent, RadioGroupComponent, ScrollComponent, SelectComponent, SkeletonComponent, SliderComponent, SpinnerComponent, SpinnerOverlayComponent, TabComponent, TableComponent, TabsComponent, TagComponent, TextareaComponent, ThemeService, ToastComponent, ToastContainerComponent, ToastService, ToggleComponent, defaultCompare };
|
|
4061
|
+
export type { ConfirmDialogData, DialogConfig, DialogHandle, DialogRef, GogAccordionChevronContext, GogAccordionHeaderContext, GogAccordionItem, GogAccordionToggleEvent, GogButtonToggleOptionContext, GogCalendarDay, GogColumnBodyContext, GogColumnHeaderContext, GogDatepickerValue, GogRadioOption, GogScrollMetrics, GogTabHeaderContext, GogTableRowClickEvent, GogTableSelectionMode, GogTableSortEvent, GogTabsState, OpenDialog, SortDirection, Toast, ToastAction, ToastConfig, ToastType };
|