@joanroucoux/cairn-ui 0.8.2 → 0.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +114 -0
- package/fesm2022/joanroucoux-cairn-ui-action-bar.mjs +57 -53
- package/fesm2022/joanroucoux-cairn-ui-action-bar.mjs.map +1 -1
- package/fesm2022/joanroucoux-cairn-ui-alert.mjs +155 -47
- package/fesm2022/joanroucoux-cairn-ui-alert.mjs.map +1 -1
- package/fesm2022/joanroucoux-cairn-ui-amount.mjs +220 -110
- package/fesm2022/joanroucoux-cairn-ui-amount.mjs.map +1 -1
- package/fesm2022/joanroucoux-cairn-ui-async.mjs +392 -216
- package/fesm2022/joanroucoux-cairn-ui-async.mjs.map +1 -1
- package/fesm2022/joanroucoux-cairn-ui-avatar.mjs +145 -68
- package/fesm2022/joanroucoux-cairn-ui-avatar.mjs.map +1 -1
- package/fesm2022/joanroucoux-cairn-ui-back-link.mjs +87 -47
- package/fesm2022/joanroucoux-cairn-ui-back-link.mjs.map +1 -1
- package/fesm2022/joanroucoux-cairn-ui-badge.mjs +83 -43
- package/fesm2022/joanroucoux-cairn-ui-badge.mjs.map +1 -1
- package/fesm2022/joanroucoux-cairn-ui-button.mjs +184 -104
- package/fesm2022/joanroucoux-cairn-ui-button.mjs.map +1 -1
- package/fesm2022/joanroucoux-cairn-ui-card.mjs +232 -137
- package/fesm2022/joanroucoux-cairn-ui-card.mjs.map +1 -1
- package/fesm2022/joanroucoux-cairn-ui-choice-chips.mjs +298 -102
- package/fesm2022/joanroucoux-cairn-ui-choice-chips.mjs.map +1 -1
- package/fesm2022/joanroucoux-cairn-ui-control.mjs +4 -17
- package/fesm2022/joanroucoux-cairn-ui-control.mjs.map +1 -1
- package/fesm2022/joanroucoux-cairn-ui-delta.mjs +150 -83
- package/fesm2022/joanroucoux-cairn-ui-delta.mjs.map +1 -1
- package/fesm2022/joanroucoux-cairn-ui-dialog.mjs +508 -471
- package/fesm2022/joanroucoux-cairn-ui-dialog.mjs.map +1 -1
- package/fesm2022/joanroucoux-cairn-ui-donut.mjs +255 -157
- package/fesm2022/joanroucoux-cairn-ui-donut.mjs.map +1 -1
- package/fesm2022/joanroucoux-cairn-ui-drawer.mjs +303 -0
- package/fesm2022/joanroucoux-cairn-ui-drawer.mjs.map +1 -0
- package/fesm2022/joanroucoux-cairn-ui-empty.mjs +76 -35
- package/fesm2022/joanroucoux-cairn-ui-empty.mjs.map +1 -1
- package/fesm2022/joanroucoux-cairn-ui-external-link.mjs +40 -31
- package/fesm2022/joanroucoux-cairn-ui-external-link.mjs.map +1 -1
- package/fesm2022/joanroucoux-cairn-ui-fact.mjs +188 -79
- package/fesm2022/joanroucoux-cairn-ui-fact.mjs.map +1 -1
- package/fesm2022/joanroucoux-cairn-ui-field.mjs +309 -173
- package/fesm2022/joanroucoux-cairn-ui-field.mjs.map +1 -1
- package/fesm2022/joanroucoux-cairn-ui-filter-chips.mjs +165 -87
- package/fesm2022/joanroucoux-cairn-ui-filter-chips.mjs.map +1 -1
- package/fesm2022/joanroucoux-cairn-ui-group-header.mjs +269 -0
- package/fesm2022/joanroucoux-cairn-ui-group-header.mjs.map +1 -0
- package/fesm2022/joanroucoux-cairn-ui-input.mjs +205 -85
- package/fesm2022/joanroucoux-cairn-ui-input.mjs.map +1 -1
- package/fesm2022/joanroucoux-cairn-ui-line-chart.mjs +838 -512
- package/fesm2022/joanroucoux-cairn-ui-line-chart.mjs.map +1 -1
- package/fesm2022/joanroucoux-cairn-ui-menu.mjs +401 -225
- package/fesm2022/joanroucoux-cairn-ui-menu.mjs.map +1 -1
- package/fesm2022/joanroucoux-cairn-ui-meter.mjs +143 -57
- package/fesm2022/joanroucoux-cairn-ui-meter.mjs.map +1 -1
- package/fesm2022/joanroucoux-cairn-ui-motion.mjs +367 -399
- package/fesm2022/joanroucoux-cairn-ui-motion.mjs.map +1 -1
- package/fesm2022/joanroucoux-cairn-ui-nav-item.mjs +73 -44
- package/fesm2022/joanroucoux-cairn-ui-nav-item.mjs.map +1 -1
- package/fesm2022/joanroucoux-cairn-ui-result-group.mjs +191 -0
- package/fesm2022/joanroucoux-cairn-ui-result-group.mjs.map +1 -0
- package/fesm2022/joanroucoux-cairn-ui-row.mjs +408 -146
- package/fesm2022/joanroucoux-cairn-ui-row.mjs.map +1 -1
- package/fesm2022/joanroucoux-cairn-ui-segmented.mjs +183 -81
- package/fesm2022/joanroucoux-cairn-ui-segmented.mjs.map +1 -1
- package/fesm2022/joanroucoux-cairn-ui-select-pill.mjs +270 -0
- package/fesm2022/joanroucoux-cairn-ui-select-pill.mjs.map +1 -0
- package/fesm2022/joanroucoux-cairn-ui-select.mjs +121 -67
- package/fesm2022/joanroucoux-cairn-ui-select.mjs.map +1 -1
- package/fesm2022/joanroucoux-cairn-ui-skeleton.mjs +129 -51
- package/fesm2022/joanroucoux-cairn-ui-skeleton.mjs.map +1 -1
- package/fesm2022/joanroucoux-cairn-ui-stale-link.mjs +80 -39
- package/fesm2022/joanroucoux-cairn-ui-stale-link.mjs.map +1 -1
- package/fesm2022/joanroucoux-cairn-ui-stat.mjs +85 -55
- package/fesm2022/joanroucoux-cairn-ui-stat.mjs.map +1 -1
- package/fesm2022/joanroucoux-cairn-ui-switch.mjs +48 -35
- package/fesm2022/joanroucoux-cairn-ui-switch.mjs.map +1 -1
- package/fesm2022/joanroucoux-cairn-ui-tab-bar.mjs +113 -69
- package/fesm2022/joanroucoux-cairn-ui-tab-bar.mjs.map +1 -1
- package/fesm2022/joanroucoux-cairn-ui-table.mjs +1036 -310
- package/fesm2022/joanroucoux-cairn-ui-table.mjs.map +1 -1
- package/fesm2022/joanroucoux-cairn-ui-toast.mjs +240 -127
- package/fesm2022/joanroucoux-cairn-ui-toast.mjs.map +1 -1
- package/fesm2022/joanroucoux-cairn-ui.mjs +0 -4
- package/package.json +17 -1
- package/styles/motion.css +1 -13
- package/styles/tokens.css +35 -64
- package/types/joanroucoux-cairn-ui-action-bar.d.ts +9 -14
- package/types/joanroucoux-cairn-ui-alert.d.ts +29 -15
- package/types/joanroucoux-cairn-ui-amount.d.ts +64 -32
- package/types/joanroucoux-cairn-ui-async.d.ts +85 -38
- package/types/joanroucoux-cairn-ui-avatar.d.ts +34 -22
- package/types/joanroucoux-cairn-ui-back-link.d.ts +20 -15
- package/types/joanroucoux-cairn-ui-badge.d.ts +22 -14
- package/types/joanroucoux-cairn-ui-button.d.ts +36 -18
- package/types/joanroucoux-cairn-ui-card.d.ts +48 -23
- package/types/joanroucoux-cairn-ui-choice-chips.d.ts +91 -35
- package/types/joanroucoux-cairn-ui-control.d.ts +9 -18
- package/types/joanroucoux-cairn-ui-delta.d.ts +46 -24
- package/types/joanroucoux-cairn-ui-dialog.d.ts +124 -57
- package/types/joanroucoux-cairn-ui-donut.d.ts +83 -46
- package/types/joanroucoux-cairn-ui-drawer.d.ts +73 -0
- package/types/joanroucoux-cairn-ui-empty.d.ts +20 -13
- package/types/joanroucoux-cairn-ui-external-link.d.ts +6 -10
- package/types/joanroucoux-cairn-ui-fact.d.ts +49 -25
- package/types/joanroucoux-cairn-ui-field.d.ts +72 -49
- package/types/joanroucoux-cairn-ui-filter-chips.d.ts +35 -20
- package/types/joanroucoux-cairn-ui-group-header.d.ts +58 -0
- package/types/joanroucoux-cairn-ui-input.d.ts +59 -37
- package/types/joanroucoux-cairn-ui-line-chart.d.ts +199 -89
- package/types/joanroucoux-cairn-ui-menu.d.ts +81 -44
- package/types/joanroucoux-cairn-ui-meter.d.ts +44 -22
- package/types/joanroucoux-cairn-ui-motion.d.ts +61 -75
- package/types/joanroucoux-cairn-ui-nav-item.d.ts +15 -13
- package/types/joanroucoux-cairn-ui-result-group.d.ts +52 -0
- package/types/joanroucoux-cairn-ui-row.d.ts +92 -37
- package/types/joanroucoux-cairn-ui-segmented.d.ts +51 -27
- package/types/joanroucoux-cairn-ui-select-pill.d.ts +59 -0
- package/types/joanroucoux-cairn-ui-select.d.ts +28 -18
- package/types/joanroucoux-cairn-ui-skeleton.d.ts +35 -18
- package/types/joanroucoux-cairn-ui-stale-link.d.ts +23 -16
- package/types/joanroucoux-cairn-ui-stat.d.ts +26 -21
- package/types/joanroucoux-cairn-ui-switch.d.ts +7 -11
- package/types/joanroucoux-cairn-ui-tab-bar.d.ts +20 -17
- package/types/joanroucoux-cairn-ui-table.d.ts +251 -89
- package/types/joanroucoux-cairn-ui-toast.d.ts +46 -36
- package/types/joanroucoux-cairn-ui.d.ts +1 -2
- package/fesm2022/joanroucoux-cairn-ui.mjs.map +0 -1
|
@@ -1,18 +1,13 @@
|
|
|
1
|
-
import * as i0 from
|
|
2
|
-
import { Signal } from
|
|
3
|
-
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
import { Signal } from "@angular/core";
|
|
4
3
|
/**
|
|
5
|
-
* Slides the items of a list into place when one is removed or inserted (FLIP)
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* out first. Nothing moves under `prefers-reduced-motion`: the list closes up at once.
|
|
4
|
+
* Slides the items of a list into place when one is removed or inserted (FLIP). Pair it with
|
|
5
|
+
* `animate.leave="ui-leave-fade"` on the item so it fades out first. Nothing moves under
|
|
6
|
+
* `prefers-reduced-motion`.
|
|
9
7
|
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
* inside another item (a row inside a card): it then moves by its own share and its card carries the rest.
|
|
14
|
-
* Only an item added or removed starts a slide; a change inside an item does not. Positions leave out the
|
|
15
|
-
* translate of any animation running inside the list (a slide in progress, an enter fade-up).
|
|
8
|
+
* The items are the direct children of the list. Mark them with `uiFlipItem` instead when they sit
|
|
9
|
+
* deeper, so a removal also slides the groups below. Only an item added or removed starts a slide;
|
|
10
|
+
* a change inside an item does not.
|
|
16
11
|
*
|
|
17
12
|
* @example
|
|
18
13
|
* <ul uiFlipList>
|
|
@@ -32,93 +27,84 @@ import { Signal } from '@angular/core';
|
|
|
32
27
|
* }
|
|
33
28
|
* </table>
|
|
34
29
|
*/
|
|
35
|
-
declare class UiFlipList {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
30
|
+
export declare class UiFlipList {
|
|
31
|
+
private readonly host;
|
|
32
|
+
private readonly reduced;
|
|
33
|
+
private readonly mutations;
|
|
34
|
+
private readonly resizes;
|
|
35
|
+
private readonly running;
|
|
36
|
+
private readonly watched;
|
|
37
|
+
private readonly items;
|
|
38
|
+
private tops;
|
|
39
|
+
private shifts;
|
|
40
|
+
constructor();
|
|
41
|
+
private tracked;
|
|
42
|
+
private measure;
|
|
43
|
+
private onChange;
|
|
44
|
+
private parentItem;
|
|
45
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<UiFlipList, never>;
|
|
46
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<UiFlipList, "[uiFlipList]", never, {}, {}, never, never, true, never>;
|
|
52
47
|
}
|
|
53
48
|
/**
|
|
54
|
-
* Marks an element as an item of the nearest `uiFlipList`, at any depth
|
|
55
|
-
*
|
|
49
|
+
* Marks an element as an item of the nearest `uiFlipList`, at any depth. Once one item is marked,
|
|
50
|
+
* the list follows its marked items only.
|
|
56
51
|
*
|
|
57
52
|
* @example
|
|
58
53
|
* <tr uiTr uiFlipItem animate.leave="ui-leave-fade">...</tr>
|
|
59
54
|
*/
|
|
60
|
-
declare class UiFlipItem {
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
55
|
+
export declare class UiFlipItem {
|
|
56
|
+
constructor();
|
|
57
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<UiFlipItem, never>;
|
|
58
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<UiFlipItem, "[uiFlipItem]", never, {}, {}, never, never, true, never>;
|
|
64
59
|
}
|
|
65
|
-
|
|
66
60
|
/**
|
|
67
|
-
* Draws the eye to an element that just changed: scrolls it into view when
|
|
68
|
-
* `--soft` fill
|
|
69
|
-
*
|
|
70
|
-
*
|
|
71
|
-
* cells, on a `td[ui-group-cell]` the band, anywhere else the host. Under `prefers-reduced-motion` the
|
|
72
|
-
* scroll is instant and the fade lasts 600 ms.
|
|
73
|
-
*
|
|
74
|
-
* It starts on the next frame and, when the element is still playing a finite animation of its own (an
|
|
75
|
-
* `animate.enter` fade on a new row), once that animation has finished, waiting no longer than
|
|
76
|
-
* `--duration-base`: the element fades in, then lights up. Both can sit on the same element.
|
|
61
|
+
* Draws the eye to an element that just changed: scrolls it into view when off screen, flashes the
|
|
62
|
+
* `--soft` fill, then fades back. Each new non-null token plays once, so pass a fresh value per
|
|
63
|
+
* event (an object or a counter), not a boolean. A non-null token present at first render plays on
|
|
64
|
+
* arrival. Can sit on the same element as `animate.enter`: it waits for that fade to finish.
|
|
77
65
|
*
|
|
78
66
|
* Give the element `scroll-margin-top` and `scroll-margin-bottom` equal to what is pinned above and
|
|
79
|
-
* below it (header, tab bar, action bar)
|
|
80
|
-
*
|
|
81
|
-
*
|
|
82
|
-
* from where the page is.
|
|
67
|
+
* below it (header, tab bar, action bar), or a row under them counts as on screen. For an arrival
|
|
68
|
+
* on a page opened at the element, scroll to it first (`scrollIntoView` in `afterNextRender`) and
|
|
69
|
+
* set the token afterwards, otherwise it scrolls smoothly from where the page is.
|
|
83
70
|
*
|
|
84
71
|
* @example
|
|
85
72
|
* <a ui-row [uiHighlight]="changed() === holding.id ? token() : null" routerLink="/holdings/1">...</a>
|
|
86
73
|
*/
|
|
87
|
-
declare class UiHighlight {
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
74
|
+
export declare class UiHighlight {
|
|
75
|
+
readonly uiHighlight: import("@angular/core").InputSignal<unknown>;
|
|
76
|
+
private readonly host;
|
|
77
|
+
private readonly reduced;
|
|
78
|
+
private cancel;
|
|
79
|
+
constructor();
|
|
80
|
+
private play;
|
|
81
|
+
private isVisible;
|
|
82
|
+
private flash;
|
|
83
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<UiHighlight, never>;
|
|
84
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<UiHighlight, "[uiHighlight]", never, {
|
|
85
|
+
"uiHighlight": {
|
|
86
|
+
"alias": "uiHighlight";
|
|
87
|
+
"required": false;
|
|
88
|
+
"isSignal": true;
|
|
89
|
+
};
|
|
90
|
+
}, {}, never, never, true, never>;
|
|
98
91
|
}
|
|
99
|
-
|
|
100
92
|
/**
|
|
101
|
-
* A signal that follows the user's `prefers-reduced-motion` preference
|
|
102
|
-
*
|
|
93
|
+
* A signal that follows the user's `prefers-reduced-motion` preference. Call it in an injection
|
|
94
|
+
* context.
|
|
103
95
|
*
|
|
104
96
|
* @example
|
|
105
97
|
* protected readonly reduced = injectReducedMotion();
|
|
106
98
|
*/
|
|
107
|
-
declare function injectReducedMotion(): Signal<boolean>;
|
|
108
|
-
|
|
99
|
+
export declare function injectReducedMotion(): Signal<boolean>;
|
|
109
100
|
/**
|
|
110
101
|
* Holds the transitions of the host and of everything inside it until two frames after its first
|
|
111
|
-
* render,
|
|
112
|
-
*
|
|
113
|
-
* would otherwise turn the bound fill, colour or switch track into a transition on page open. Call it
|
|
114
|
-
* in an injection context. A host whose view is never refreshed (a detached change detector) keeps the
|
|
115
|
-
* attribute, and with it no transition.
|
|
102
|
+
* render, so bound classes do not animate on page open. Call it in an injection context. A host
|
|
103
|
+
* whose view is never refreshed (a detached change detector) never gets its transitions back.
|
|
116
104
|
*
|
|
117
105
|
* @example
|
|
118
106
|
* constructor() {
|
|
119
107
|
* holdTransitionsUntilRendered();
|
|
120
108
|
* }
|
|
121
109
|
*/
|
|
122
|
-
declare function holdTransitionsUntilRendered(): void;
|
|
123
|
-
|
|
124
|
-
export { UiFlipItem, UiFlipList, UiHighlight, holdTransitionsUntilRendered, injectReducedMotion };
|
|
110
|
+
export declare function holdTransitionsUntilRendered(): void;
|
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
import * as
|
|
2
|
-
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
3
2
|
/**
|
|
4
|
-
* One destination of the sidebar navigation
|
|
5
|
-
* fill and text colour switch at once on navigation; only the hover fill fades.
|
|
3
|
+
* One destination of the sidebar navigation.
|
|
6
4
|
*
|
|
7
5
|
* @example
|
|
8
6
|
* <a ui-nav-item [active]="url === '/'" routerLink="/">
|
|
@@ -10,12 +8,16 @@ import * as _angular_core from '@angular/core';
|
|
|
10
8
|
* Portfolio
|
|
11
9
|
* </a>
|
|
12
10
|
*/
|
|
13
|
-
declare class UiNavItem {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
11
|
+
export declare class UiNavItem {
|
|
12
|
+
readonly active: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
13
|
+
protected readonly classes: import("@angular/core").Signal<string>;
|
|
14
|
+
constructor();
|
|
15
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<UiNavItem, never>;
|
|
16
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<UiNavItem, "a[ui-nav-item]", never, {
|
|
17
|
+
"active": {
|
|
18
|
+
"alias": "active";
|
|
19
|
+
"required": false;
|
|
20
|
+
"isSignal": true;
|
|
21
|
+
};
|
|
22
|
+
}, {}, never, ["[navIcon]", "*"], true, never>;
|
|
23
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
/**
|
|
3
|
+
* One source of a search: a two-tone heading, then its rows, or a skeleton while it answers, a
|
|
4
|
+
* message when it has nothing, or an inline error with a retry.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* <ui-result-group label="Yahoo Finance" hint="cours en continu" [state]="state()"
|
|
8
|
+
* errorMessage="Yahoo Finance n'a pas répondu." retryLabel="Réessayer" (retry)="search()">
|
|
9
|
+
* <button ui-row size="dense" type="button">...</button>
|
|
10
|
+
* <span resultGroupMessage>Aucun résultat chez Yahoo Finance.</span>
|
|
11
|
+
* </ui-result-group>
|
|
12
|
+
*/
|
|
13
|
+
export declare class UiResultGroup {
|
|
14
|
+
readonly label: import("@angular/core").InputSignal<string>;
|
|
15
|
+
readonly hint: import("@angular/core").InputSignal<string | undefined>;
|
|
16
|
+
readonly state: import("@angular/core").InputSignal<"loading" | "error" | "empty" | "ready">;
|
|
17
|
+
readonly errorMessage: import("@angular/core").InputSignal<string | undefined>;
|
|
18
|
+
readonly retryLabel: import("@angular/core").InputSignal<string | undefined>;
|
|
19
|
+
readonly retry: import("@angular/core").OutputEmitterRef<void>;
|
|
20
|
+
protected readonly name: import("@angular/core").Signal<string>;
|
|
21
|
+
protected readonly animation = "cairn-pulse var(--pulse-duration) var(--ease-out) infinite alternate";
|
|
22
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<UiResultGroup, never>;
|
|
23
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<UiResultGroup, "ui-result-group", never, {
|
|
24
|
+
"label": {
|
|
25
|
+
"alias": "label";
|
|
26
|
+
"required": true;
|
|
27
|
+
"isSignal": true;
|
|
28
|
+
};
|
|
29
|
+
"hint": {
|
|
30
|
+
"alias": "hint";
|
|
31
|
+
"required": false;
|
|
32
|
+
"isSignal": true;
|
|
33
|
+
};
|
|
34
|
+
"state": {
|
|
35
|
+
"alias": "state";
|
|
36
|
+
"required": false;
|
|
37
|
+
"isSignal": true;
|
|
38
|
+
};
|
|
39
|
+
"errorMessage": {
|
|
40
|
+
"alias": "errorMessage";
|
|
41
|
+
"required": false;
|
|
42
|
+
"isSignal": true;
|
|
43
|
+
};
|
|
44
|
+
"retryLabel": {
|
|
45
|
+
"alias": "retryLabel";
|
|
46
|
+
"required": false;
|
|
47
|
+
"isSignal": true;
|
|
48
|
+
};
|
|
49
|
+
}, {
|
|
50
|
+
"retry": "retry";
|
|
51
|
+
}, never, ["[resultGroupMessage]", "*"], true, never>;
|
|
52
|
+
}
|
|
@@ -1,34 +1,72 @@
|
|
|
1
|
-
import * as
|
|
2
|
-
|
|
3
|
-
declare const ROW_SIZES: readonly ["md", "lg", "xl", "card", "dense"];
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
export declare const ROW_SIZES: readonly ["md", "lg", "xl", "card", "dense"];
|
|
4
3
|
type RowSize = (typeof ROW_SIZES)[number];
|
|
5
|
-
declare const ROW_PADDINGS: readonly ["md", "sm", "none"];
|
|
4
|
+
export declare const ROW_PADDINGS: readonly ["md", "sm", "none"];
|
|
6
5
|
type RowPadding = (typeof ROW_PADDINGS)[number];
|
|
7
|
-
declare const ROW_GAPS: readonly ["default", "sm"];
|
|
6
|
+
export declare const ROW_GAPS: readonly ["default", "sm"];
|
|
8
7
|
type RowGap = (typeof ROW_GAPS)[number];
|
|
8
|
+
export declare const ROW_TRAILINGS: readonly ["none", "chevron"];
|
|
9
|
+
type RowTrailing = (typeof ROW_TRAILINGS)[number];
|
|
9
10
|
/**
|
|
10
|
-
* Clickable row of a list: a holding, an account, a search result.
|
|
11
|
+
* Clickable row of a list: a holding, an account, a search result. With `trailing="chevron"` it is a
|
|
12
|
+
* flush link row: no side padding, a 16 px chevron at the end, the text dimming on hover.
|
|
11
13
|
*
|
|
12
14
|
* @example
|
|
13
15
|
* <a ui-row [selected]="holding.id === openId()" [routerLink]="['/holdings', holding.id]">
|
|
14
16
|
* {{ holding.name }}
|
|
15
17
|
* </a>
|
|
16
18
|
*/
|
|
17
|
-
declare class UiRow {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
19
|
+
export declare class UiRow {
|
|
20
|
+
readonly selected: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
21
|
+
readonly busy: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
22
|
+
readonly unavailable: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
23
|
+
readonly size: import("@angular/core").InputSignal<"md" | "lg" | "xl" | "card" | "dense">;
|
|
24
|
+
readonly padding: import("@angular/core").InputSignal<"md" | "sm" | "none">;
|
|
25
|
+
readonly gap: import("@angular/core").InputSignal<"sm" | "default">;
|
|
26
|
+
readonly trailing: import("@angular/core").InputSignal<"none" | "chevron">;
|
|
27
|
+
protected readonly classes: import("@angular/core").Signal<string>;
|
|
28
|
+
constructor();
|
|
29
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<UiRow, never>;
|
|
30
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<UiRow, "a[ui-row], button[ui-row]", never, {
|
|
31
|
+
"selected": {
|
|
32
|
+
"alias": "selected";
|
|
33
|
+
"required": false;
|
|
34
|
+
"isSignal": true;
|
|
35
|
+
};
|
|
36
|
+
"busy": {
|
|
37
|
+
"alias": "busy";
|
|
38
|
+
"required": false;
|
|
39
|
+
"isSignal": true;
|
|
40
|
+
};
|
|
41
|
+
"unavailable": {
|
|
42
|
+
"alias": "unavailable";
|
|
43
|
+
"required": false;
|
|
44
|
+
"isSignal": true;
|
|
45
|
+
};
|
|
46
|
+
"size": {
|
|
47
|
+
"alias": "size";
|
|
48
|
+
"required": false;
|
|
49
|
+
"isSignal": true;
|
|
50
|
+
};
|
|
51
|
+
"padding": {
|
|
52
|
+
"alias": "padding";
|
|
53
|
+
"required": false;
|
|
54
|
+
"isSignal": true;
|
|
55
|
+
};
|
|
56
|
+
"gap": {
|
|
57
|
+
"alias": "gap";
|
|
58
|
+
"required": false;
|
|
59
|
+
"isSignal": true;
|
|
60
|
+
};
|
|
61
|
+
"trailing": {
|
|
62
|
+
"alias": "trailing";
|
|
63
|
+
"required": false;
|
|
64
|
+
"isSignal": true;
|
|
65
|
+
};
|
|
66
|
+
}, {}, never, ["*"], true, never>;
|
|
28
67
|
}
|
|
29
68
|
/**
|
|
30
|
-
* Lays out a `ui-row` with a trailing action beside it, such as a "more" icon button
|
|
31
|
-
* the room the action leaves and the action keeps its own size.
|
|
69
|
+
* Lays out a `ui-row` with a trailing action beside it, such as a "more" icon button.
|
|
32
70
|
*
|
|
33
71
|
* @example
|
|
34
72
|
* <div uiRowItem>
|
|
@@ -36,14 +74,14 @@ declare class UiRow {
|
|
|
36
74
|
* <button ui-button variant="quiet" size="icon-sm" aria-label="Account actions">...</button>
|
|
37
75
|
* </div>
|
|
38
76
|
*/
|
|
39
|
-
declare class UiRowItem {
|
|
40
|
-
|
|
41
|
-
|
|
77
|
+
export declare class UiRowItem {
|
|
78
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<UiRowItem, never>;
|
|
79
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<UiRowItem, "[uiRowItem]", never, {}, {}, never, never, true, never>;
|
|
42
80
|
}
|
|
43
81
|
/**
|
|
44
82
|
* Non-interactive row of a list, separated from the next by a hairline: a passkey with its delete
|
|
45
|
-
* button, a device, a setting.
|
|
46
|
-
*
|
|
83
|
+
* button, a device, a setting. Put it on an `li` or a `div`. Use `ui-row` instead when the whole
|
|
84
|
+
* row is a link or an action.
|
|
47
85
|
*
|
|
48
86
|
* @example
|
|
49
87
|
* <ul>
|
|
@@ -53,15 +91,34 @@ declare class UiRowItem {
|
|
|
53
91
|
* </li>
|
|
54
92
|
* </ul>
|
|
55
93
|
*/
|
|
56
|
-
declare class UiListRow {
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
94
|
+
export declare class UiListRow {
|
|
95
|
+
readonly ruled: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
96
|
+
protected readonly classes: import("@angular/core").Signal<"flex min-h-18 items-center gap-3 py-1.5 lg:min-h-17 shadow-[inset_0_-1px_0_var(--hairline)]" | "flex min-h-18 items-center gap-3 py-1.5 lg:min-h-17">;
|
|
97
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<UiListRow, never>;
|
|
98
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<UiListRow, "[uiListRow]", never, {
|
|
99
|
+
"ruled": {
|
|
100
|
+
"alias": "ruled";
|
|
101
|
+
"required": false;
|
|
102
|
+
"isSignal": true;
|
|
103
|
+
};
|
|
104
|
+
}, {}, never, never, true, never>;
|
|
61
105
|
}
|
|
62
106
|
/**
|
|
63
|
-
*
|
|
64
|
-
*
|
|
107
|
+
* Groups link rows under a hairline, as the "other ways" links under a search list. Put it on a `div`
|
|
108
|
+
* around `ui-row` with `trailing="chevron"`.
|
|
109
|
+
*
|
|
110
|
+
* @example
|
|
111
|
+
* <div uiRowGroup>
|
|
112
|
+
* <button ui-row type="button" trailing="chevron">Saisir à la main</button>
|
|
113
|
+
* </div>
|
|
114
|
+
*/
|
|
115
|
+
export declare class UiRowGroup {
|
|
116
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<UiRowGroup, never>;
|
|
117
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<UiRowGroup, "[uiRowGroup]", never, {}, {}, never, never, true, never>;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* The filled tile that leads a row, holding an icon. Put it on a `span` as the first child of a
|
|
121
|
+
* `ui-row` or a `uiListRow`.
|
|
65
122
|
*
|
|
66
123
|
* @example
|
|
67
124
|
* <a ui-row size="xl" padding="sm" href="/export">
|
|
@@ -69,10 +126,8 @@ declare class UiListRow {
|
|
|
69
126
|
* Export
|
|
70
127
|
* </a>
|
|
71
128
|
*/
|
|
72
|
-
declare class UiRowTile {
|
|
73
|
-
|
|
74
|
-
|
|
129
|
+
export declare class UiRowTile {
|
|
130
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<UiRowTile, never>;
|
|
131
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<UiRowTile, "[uiRowTile]", never, {}, {}, never, never, true, never>;
|
|
75
132
|
}
|
|
76
|
-
|
|
77
|
-
export { ROW_GAPS, ROW_PADDINGS, ROW_SIZES, UiListRow, UiRow, UiRowItem, UiRowTile };
|
|
78
|
-
export type { RowGap, RowPadding, RowSize };
|
|
133
|
+
export type { RowGap, RowPadding, RowSize, RowTrailing };
|
|
@@ -1,36 +1,60 @@
|
|
|
1
|
-
import * as
|
|
2
|
-
import { ElementRef } from
|
|
3
|
-
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
import { ElementRef } from "@angular/core";
|
|
4
3
|
type SegmentedOption = {
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
value: string;
|
|
5
|
+
label: string;
|
|
7
6
|
};
|
|
8
|
-
declare const SEGMENTED_SIZES: readonly ["md", "sm"];
|
|
7
|
+
export declare const SEGMENTED_SIZES: readonly ["md", "sm"];
|
|
9
8
|
type SegmentedSize = (typeof SEGMENTED_SIZES)[number];
|
|
10
9
|
/**
|
|
11
|
-
* Exclusive choice within a small, known set: a time range, a unit, a mode.
|
|
12
|
-
* background is a single thumb that slides under it in `transform`, instead of being redrawn.
|
|
10
|
+
* Exclusive choice within a small, known set: a time range, a unit, a mode.
|
|
13
11
|
*
|
|
14
12
|
* @example
|
|
15
13
|
* <ui-segmented [options]="ranges" label="Time range" [(value)]="range" />
|
|
16
14
|
*/
|
|
17
|
-
declare class UiSegmented {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
15
|
+
export declare class UiSegmented {
|
|
16
|
+
readonly options: import("@angular/core").InputSignal<SegmentedOption[]>;
|
|
17
|
+
readonly label: import("@angular/core").InputSignal<string>;
|
|
18
|
+
readonly showLabel: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
19
|
+
protected readonly labelId: string;
|
|
20
|
+
readonly value: import("@angular/core").ModelSignal<string>;
|
|
21
|
+
readonly size: import("@angular/core").InputSignal<"md" | "sm">;
|
|
22
|
+
protected readonly radios: import("@angular/core").Signal<readonly ElementRef<HTMLButtonElement>[]>;
|
|
23
|
+
protected readonly thumbIndex: import("@angular/core").Signal<number>;
|
|
24
|
+
constructor();
|
|
25
|
+
protected optionClasses(optionValue: string): string;
|
|
26
|
+
protected tabIndexFor(optionValue: string): number;
|
|
27
|
+
protected select(optionValue: string): void;
|
|
28
|
+
protected onKeydown(event: KeyboardEvent): void;
|
|
29
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<UiSegmented, never>;
|
|
30
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<UiSegmented, "ui-segmented", never, {
|
|
31
|
+
"options": {
|
|
32
|
+
"alias": "options";
|
|
33
|
+
"required": true;
|
|
34
|
+
"isSignal": true;
|
|
35
|
+
};
|
|
36
|
+
"label": {
|
|
37
|
+
"alias": "label";
|
|
38
|
+
"required": true;
|
|
39
|
+
"isSignal": true;
|
|
40
|
+
};
|
|
41
|
+
"showLabel": {
|
|
42
|
+
"alias": "showLabel";
|
|
43
|
+
"required": false;
|
|
44
|
+
"isSignal": true;
|
|
45
|
+
};
|
|
46
|
+
"value": {
|
|
47
|
+
"alias": "value";
|
|
48
|
+
"required": true;
|
|
49
|
+
"isSignal": true;
|
|
50
|
+
};
|
|
51
|
+
"size": {
|
|
52
|
+
"alias": "size";
|
|
53
|
+
"required": false;
|
|
54
|
+
"isSignal": true;
|
|
55
|
+
};
|
|
56
|
+
}, {
|
|
57
|
+
"value": "valueChange";
|
|
58
|
+
}, never, never, true, never>;
|
|
33
59
|
}
|
|
34
|
-
|
|
35
|
-
export { SEGMENTED_SIZES, UiSegmented };
|
|
36
|
-
export type { SegmentedOption, SegmentedSize };
|
|
60
|
+
export type { SegmentedOption, SegmentedSize };
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
import { ElementRef } from "@angular/core";
|
|
3
|
+
import { UiMenu } from "@joanroucoux/cairn-ui/menu";
|
|
4
|
+
/**
|
|
5
|
+
* A pill that opens a `ui-menu` of exclusive choices, to head a row of filter chips: outlined at rest with a
|
|
6
|
+
* chevron, solid primary when `active`, where a separate 14 px cross replaces the chevron and emits `cleared`.
|
|
7
|
+
* It is 34 px tall inside a 44 px target on touch and 32 px with a fine pointer; its focus ring is an outline
|
|
8
|
+
* 2 px outside the pill; the cross has a 44 px hit area on touch (36 px with a fine pointer). `contextLabel`, when
|
|
9
|
+
* given, is read before the label while active so a screen reader hears what the account is. Clearing moves focus
|
|
10
|
+
* back to the trigger. `disabled` dims it like a disabled button, opens nothing and draws the chevron even when `active`. The projected text is the pill label and the projected `ui-menu` is what it opens.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* <ui-select-pill uiChipsLeading [active]="!!account()" clearLabel="Clear the account" (cleared)="account.set('')">
|
|
14
|
+
* {{ accountName() }}
|
|
15
|
+
* <ui-menu label="Account" sheet>
|
|
16
|
+
* <button uiMenuItem [checked]="!account()" (click)="account.set('')">All accounts</button>
|
|
17
|
+
* </ui-menu>
|
|
18
|
+
* </ui-select-pill>
|
|
19
|
+
*/
|
|
20
|
+
export declare class UiSelectPill {
|
|
21
|
+
readonly active: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
22
|
+
readonly disabled: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
23
|
+
readonly clearLabel: import("@angular/core").InputSignal<string>;
|
|
24
|
+
readonly contextLabel: import("@angular/core").InputSignal<string | undefined>;
|
|
25
|
+
readonly cleared: import("@angular/core").OutputEmitterRef<void>;
|
|
26
|
+
protected readonly menu: import("@angular/core").Signal<UiMenu>;
|
|
27
|
+
protected readonly trigger: import("@angular/core").Signal<ElementRef<HTMLButtonElement>>;
|
|
28
|
+
protected readonly hostClasses: import("@angular/core").Signal<"relative flex-none inline-flex h-11 items-center pointer-fine:h-8" | "relative flex-none inline-flex h-11 items-center pointer-fine:h-8 opacity-40">;
|
|
29
|
+
protected readonly chevronClasses: import("@angular/core").Signal<"text-(--primary-foreground)" | "text-(--foreground)">;
|
|
30
|
+
protected readonly triggerClasses = "-mx-[5px] flex h-11 cursor-pointer items-center rounded-pill border-x-[5px] border-y-0 border-transparent bg-transparent p-0 font-[inherit] focus-visible:outline-2 focus-visible:-outline-offset-5 focus-visible:outline-(--ring) pointer-fine:mx-0 pointer-fine:h-8 pointer-fine:border-x-0 pointer-fine:focus-visible:outline-offset-0 disabled:pointer-events-none";
|
|
31
|
+
protected readonly clearClasses = "absolute end-0 flex size-[34px] cursor-pointer items-center justify-center rounded-pill border-0 bg-transparent p-0 text-(--primary-foreground) focus-visible:outline-2 focus-visible:-outline-offset-7 focus-visible:outline-(--primary-foreground) pointer-fine:size-8 pointer-fine:focus-visible:-outline-offset-6 after:absolute after:-inset-[5px] pointer-fine:after:-inset-0.5";
|
|
32
|
+
protected clear(): void;
|
|
33
|
+
protected readonly pillClasses: import("@angular/core").Signal<string>;
|
|
34
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<UiSelectPill, never>;
|
|
35
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<UiSelectPill, "ui-select-pill", never, {
|
|
36
|
+
"active": {
|
|
37
|
+
"alias": "active";
|
|
38
|
+
"required": false;
|
|
39
|
+
"isSignal": true;
|
|
40
|
+
};
|
|
41
|
+
"disabled": {
|
|
42
|
+
"alias": "disabled";
|
|
43
|
+
"required": false;
|
|
44
|
+
"isSignal": true;
|
|
45
|
+
};
|
|
46
|
+
"clearLabel": {
|
|
47
|
+
"alias": "clearLabel";
|
|
48
|
+
"required": true;
|
|
49
|
+
"isSignal": true;
|
|
50
|
+
};
|
|
51
|
+
"contextLabel": {
|
|
52
|
+
"alias": "contextLabel";
|
|
53
|
+
"required": false;
|
|
54
|
+
"isSignal": true;
|
|
55
|
+
};
|
|
56
|
+
}, {
|
|
57
|
+
"cleared": "cleared";
|
|
58
|
+
}, ["menu"], ["*", "ui-menu"], true, never>;
|
|
59
|
+
}
|
|
@@ -1,23 +1,33 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
|
|
1
|
+
import { UiControl, UiControlError } from "@joanroucoux/cairn-ui/control";
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
4
3
|
/**
|
|
5
|
-
* Styled native select, drop-down list included where the browser allows it.
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* Declares the `errors` and `touched` inputs Angular's `[formField]` fills, so a `ui-field` around
|
|
9
|
-
* it can show the message without any binding here.
|
|
4
|
+
* Styled native select, drop-down list included where the browser allows it. Declares the `errors`
|
|
5
|
+
* and `touched` inputs Angular's `[formField]` fills, so a surrounding `ui-field` can show the message.
|
|
10
6
|
*
|
|
11
7
|
* @example
|
|
12
8
|
* <select uiSelect><option value="pea">PEA</option></select>
|
|
13
9
|
*/
|
|
14
|
-
declare class UiSelect implements UiControl {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
10
|
+
export declare class UiSelect implements UiControl {
|
|
11
|
+
readonly size: import("@angular/core").InputSignal<"sm" | "md" | "lg" | "xl">;
|
|
12
|
+
readonly errors: import("@angular/core").InputSignal<readonly UiControlError[]>;
|
|
13
|
+
readonly touched: import("@angular/core").InputSignal<boolean>;
|
|
14
|
+
protected readonly classes: import("@angular/core").Signal<string>;
|
|
15
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<UiSelect, never>;
|
|
16
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<UiSelect, "select[uiSelect]", never, {
|
|
17
|
+
"size": {
|
|
18
|
+
"alias": "size";
|
|
19
|
+
"required": false;
|
|
20
|
+
"isSignal": true;
|
|
21
|
+
};
|
|
22
|
+
"errors": {
|
|
23
|
+
"alias": "errors";
|
|
24
|
+
"required": false;
|
|
25
|
+
"isSignal": true;
|
|
26
|
+
};
|
|
27
|
+
"touched": {
|
|
28
|
+
"alias": "touched";
|
|
29
|
+
"required": false;
|
|
30
|
+
"isSignal": true;
|
|
31
|
+
};
|
|
32
|
+
}, {}, never, never, true, never>;
|
|
33
|
+
}
|