@joanroucoux/cairn-ui 0.8.2 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +99 -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 +376 -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 +233 -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 +79 -37
- package/types/joanroucoux-cairn-ui-segmented.d.ts +51 -27
- package/types/joanroucoux-cairn-ui-select-pill.d.ts +52 -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,29 +1,53 @@
|
|
|
1
|
-
import * as
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
import { OutputEmitterRef, Signal } from "@angular/core";
|
|
3
|
+
type SharedReason = 'escape' | 'backdrop' | 'cross' | 'programmatic';
|
|
4
|
+
type ModalCloseConfig<R extends string> = {
|
|
5
|
+
readonly open: Signal<boolean>;
|
|
6
|
+
readonly busy: Signal<boolean>;
|
|
7
|
+
readonly dismissed: OutputEmitterRef<void>;
|
|
8
|
+
readonly closed: OutputEmitterRef<R | SharedReason>;
|
|
9
|
+
readonly reset?: () => void;
|
|
10
|
+
readonly opening?: () => void;
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* The close protocol of a modal on the native <dialog> under the host: `open` drives `showModal()` and `close()`,
|
|
14
|
+
* Escape and a press-and-release on the veil close it unless `busy`, `dismissed` reports a close the user asked for
|
|
15
|
+
* and `closed` its reason once the exit transition has played. `opening` runs just before `showModal()`. Must be
|
|
16
|
+
* created in an injection context.
|
|
17
|
+
*/
|
|
18
|
+
export declare class ModalClose<R extends string> {
|
|
19
|
+
#private;
|
|
20
|
+
constructor(config: ModalCloseConfig<R>);
|
|
21
|
+
close(reason: R | SharedReason): void;
|
|
22
|
+
onCancel(event: Event): void;
|
|
23
|
+
onKeydown(event: KeyboardEvent): void;
|
|
24
|
+
onPointerDown(event: MouseEvent): void;
|
|
25
|
+
onClick(event: MouseEvent): void;
|
|
26
|
+
onNativeClose(): void;
|
|
27
|
+
}
|
|
28
|
+
/** Named dialog widths; any other CSS length is accepted as is. */
|
|
29
|
+
export declare const DIALOG_WIDTHS: readonly ["md", "lg"];
|
|
5
30
|
type DialogWidth = (typeof DIALOG_WIDTHS)[number];
|
|
6
|
-
/**
|
|
7
|
-
declare const
|
|
8
|
-
type
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
footer: string;
|
|
31
|
+
/** `confirm` is a short alertdialog: no cross, no hairlines, one 24px padding, 440px wide unless told otherwise. */
|
|
32
|
+
export declare const DIALOG_VARIANTS: readonly ["default", "confirm"];
|
|
33
|
+
type DialogVariant = (typeof DIALOG_VARIANTS)[number];
|
|
34
|
+
/** `full` makes the sheet under `64rem` fill the screen below the status area; `fit` sizes it to its content. */
|
|
35
|
+
export declare const DIALOG_SHEETS: readonly ["fit", "full"];
|
|
36
|
+
type DialogSheet = (typeof DIALOG_SHEETS)[number];
|
|
37
|
+
type VariantClasses = {
|
|
38
|
+
handle: string;
|
|
39
|
+
header: string;
|
|
40
|
+
body: string;
|
|
41
|
+
footer: string;
|
|
18
42
|
};
|
|
19
|
-
/** What started a close, as `closed` reports it.
|
|
20
|
-
declare const DIALOG_CLOSE_REASONS: readonly ["escape", "backdrop", "cross", "drag", "programmatic"];
|
|
43
|
+
/** What started a close, as `closed` reports it. */
|
|
44
|
+
export declare const DIALOG_CLOSE_REASONS: readonly ["escape", "backdrop", "cross", "drag", "programmatic"];
|
|
21
45
|
type DialogCloseReason = (typeof DIALOG_CLOSE_REASONS)[number];
|
|
22
46
|
/**
|
|
23
47
|
* Modal dialog on the native <dialog>: a bottom sheet under `64rem`, centered above it.
|
|
24
48
|
*
|
|
25
|
-
* `busy` keeps it open while its action runs: Escape, a click
|
|
26
|
-
*
|
|
49
|
+
* `busy` keeps it open while its action runs: Escape, a backdrop click and a sheet drag do nothing
|
|
50
|
+
* and the cross is disabled. The owner disables its own buttons and still closes it through `open`.
|
|
27
51
|
*
|
|
28
52
|
* @example
|
|
29
53
|
* <ui-dialog heading="Buy" description="Ferrari" closeLabel="Close" width="528px" [open]="buying()" (dismissed)="buying.set(false)">
|
|
@@ -32,41 +56,84 @@ type DialogCloseReason = (typeof DIALOG_CLOSE_REASONS)[number];
|
|
|
32
56
|
* <button dialogActions ui-button>Buy 40 shares</button>
|
|
33
57
|
* </ui-dialog>
|
|
34
58
|
*/
|
|
35
|
-
declare class UiDialog {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
59
|
+
export declare class UiDialog {
|
|
60
|
+
#private;
|
|
61
|
+
readonly heading: import("@angular/core").InputSignal<string>;
|
|
62
|
+
readonly description: import("@angular/core").InputSignal<string | undefined>;
|
|
63
|
+
readonly closeLabel: import("@angular/core").InputSignal<string | undefined>;
|
|
64
|
+
readonly variant: import("@angular/core").InputSignal<"default" | "confirm">;
|
|
65
|
+
readonly sheet: import("@angular/core").InputSignal<"fit" | "full">;
|
|
66
|
+
readonly truncateDescription: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
67
|
+
readonly width: import("@angular/core").InputSignal<"md" | "lg" | (string & {}) | undefined>;
|
|
68
|
+
readonly open: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
69
|
+
readonly busy: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
70
|
+
readonly dismissed: import("@angular/core").OutputEmitterRef<void>;
|
|
71
|
+
readonly closed: import("@angular/core").OutputEmitterRef<"drag" | "escape" | "backdrop" | "cross" | "programmatic">;
|
|
72
|
+
protected readonly headingId: string;
|
|
73
|
+
protected readonly descriptionId: string;
|
|
74
|
+
protected readonly bodyId: string;
|
|
75
|
+
protected readonly scrollable: import("@angular/core").WritableSignal<boolean>;
|
|
76
|
+
protected readonly stacked: import("@angular/core").WritableSignal<boolean>;
|
|
77
|
+
protected readonly describedBy: import("@angular/core").Signal<string | null>;
|
|
78
|
+
protected readonly widthValue: import("@angular/core").Signal<string>;
|
|
79
|
+
protected readonly spec: import("@angular/core").Signal<VariantClasses>;
|
|
80
|
+
protected readonly hairlines: import("@angular/core").Signal<boolean>;
|
|
81
|
+
protected readonly headerClasses: import("@angular/core").Signal<string>;
|
|
82
|
+
protected readonly crossClasses = "rounded-pill lg:rounded-control grid size-11 flex-none cursor-pointer place-items-center text-(--muted-foreground) transition-[scale,background-color,color] [transition-duration:var(--duration-press),var(--duration-fast),var(--duration-fast)] ease-out outline-none focus-visible:outline-2 focus-visible:outline-offset-[-2px] focus-visible:outline-(--ring) active:scale-(--press-scale) active:bg-(--soft) disabled:pointer-events-none disabled:opacity-40 lg:size-9 lg:hover:bg-(--glow) lg:hover:text-(--foreground)";
|
|
83
|
+
protected readonly footerClasses: import("@angular/core").Signal<string>;
|
|
84
|
+
protected readonly classes: import("@angular/core").Signal<string>;
|
|
85
|
+
protected readonly modal: ModalClose<DialogCloseReason>;
|
|
86
|
+
constructor();
|
|
87
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<UiDialog, never>;
|
|
88
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<UiDialog, "ui-dialog", never, {
|
|
89
|
+
"heading": {
|
|
90
|
+
"alias": "heading";
|
|
91
|
+
"required": true;
|
|
92
|
+
"isSignal": true;
|
|
93
|
+
};
|
|
94
|
+
"description": {
|
|
95
|
+
"alias": "description";
|
|
96
|
+
"required": false;
|
|
97
|
+
"isSignal": true;
|
|
98
|
+
};
|
|
99
|
+
"closeLabel": {
|
|
100
|
+
"alias": "closeLabel";
|
|
101
|
+
"required": false;
|
|
102
|
+
"isSignal": true;
|
|
103
|
+
};
|
|
104
|
+
"variant": {
|
|
105
|
+
"alias": "variant";
|
|
106
|
+
"required": false;
|
|
107
|
+
"isSignal": true;
|
|
108
|
+
};
|
|
109
|
+
"sheet": {
|
|
110
|
+
"alias": "sheet";
|
|
111
|
+
"required": false;
|
|
112
|
+
"isSignal": true;
|
|
113
|
+
};
|
|
114
|
+
"truncateDescription": {
|
|
115
|
+
"alias": "truncateDescription";
|
|
116
|
+
"required": false;
|
|
117
|
+
"isSignal": true;
|
|
118
|
+
};
|
|
119
|
+
"width": {
|
|
120
|
+
"alias": "width";
|
|
121
|
+
"required": false;
|
|
122
|
+
"isSignal": true;
|
|
123
|
+
};
|
|
124
|
+
"open": {
|
|
125
|
+
"alias": "open";
|
|
126
|
+
"required": false;
|
|
127
|
+
"isSignal": true;
|
|
128
|
+
};
|
|
129
|
+
"busy": {
|
|
130
|
+
"alias": "busy";
|
|
131
|
+
"required": false;
|
|
132
|
+
"isSignal": true;
|
|
133
|
+
};
|
|
134
|
+
}, {
|
|
135
|
+
"dismissed": "dismissed";
|
|
136
|
+
"closed": "closed";
|
|
137
|
+
}, never, ["*", "[dialogActions]"], true, never>;
|
|
69
138
|
}
|
|
70
|
-
|
|
71
|
-
export { DIALOG_CLOSE_REASONS, DIALOG_LAYOUTS, DIALOG_WIDTHS, UiDialog };
|
|
72
|
-
export type { DialogCloseReason, DialogLayout, DialogWidth };
|
|
139
|
+
export type { DialogCloseReason, DialogSheet, DialogVariant, DialogWidth, ModalCloseConfig };
|
|
@@ -1,59 +1,96 @@
|
|
|
1
|
-
import * as
|
|
2
|
-
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
3
2
|
type DonutSlice = {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
3
|
+
id: string;
|
|
4
|
+
label: string;
|
|
5
|
+
value: number;
|
|
6
|
+
sublabel?: string;
|
|
8
7
|
};
|
|
9
8
|
type Ramp = 1 | 2 | 3 | 4 | 5 | 6;
|
|
9
|
+
type SharedSlice = DonutSlice & {
|
|
10
|
+
share: number;
|
|
11
|
+
};
|
|
10
12
|
type RankedSlice = DonutSlice & {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
13
|
+
share: number;
|
|
14
|
+
ramp: Ramp;
|
|
15
|
+
members: string[];
|
|
14
16
|
};
|
|
15
|
-
|
|
17
|
+
declare function shareSlices(slices: DonutSlice[]): SharedSlice[];
|
|
18
|
+
declare function rankSlices(slices: DonutSlice[], othersLabel: string): RankedSlice[];
|
|
16
19
|
type PositionedSlice = RankedSlice & {
|
|
17
|
-
|
|
18
|
-
|
|
20
|
+
dash: string;
|
|
21
|
+
offset: string;
|
|
19
22
|
};
|
|
20
|
-
|
|
23
|
+
declare const RADIUS = 78;
|
|
24
|
+
declare const RING_WIDTH = 30;
|
|
25
|
+
declare const CIRCUMFERENCE: number;
|
|
26
|
+
declare function positionSlices(slices: RankedSlice[]): PositionedSlice[];
|
|
21
27
|
/**
|
|
22
|
-
* A ring chart with a legend: slices rank from largest to smallest
|
|
23
|
-
*
|
|
28
|
+
* A ring chart with a legend: slices rank from largest to smallest, and hovering, focusing or
|
|
29
|
+
* activating a legend row highlights its slice.
|
|
24
30
|
*
|
|
25
31
|
* @example
|
|
26
32
|
* <ui-donut [slices]="byAssetClass()" label="Par classe d'actif" othersLabel="Autres" [valueFormat]="formatEur" [shareFormat]="formatShare" (sliceSelect)="goToHoldings($event)" />
|
|
27
33
|
*/
|
|
28
|
-
declare class UiDonut {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
34
|
+
export declare class UiDonut {
|
|
35
|
+
readonly slices: import("@angular/core").InputSignal<DonutSlice[]>;
|
|
36
|
+
readonly label: import("@angular/core").InputSignal<string>;
|
|
37
|
+
readonly othersLabel: import("@angular/core").InputSignal<string>;
|
|
38
|
+
readonly valueFormat: import("@angular/core").InputSignal<(value: number) => string>;
|
|
39
|
+
readonly shareFormat: import("@angular/core").InputSignal<(share: number) => string>;
|
|
40
|
+
readonly legendHref: import("@angular/core").InputSignal<((id: string) => string | null) | undefined>;
|
|
41
|
+
readonly sliceSelect: import("@angular/core").OutputEmitterRef<string>;
|
|
42
|
+
protected readonly activeId: import("@angular/core").WritableSignal<string | null>;
|
|
43
|
+
protected readonly ranked: import("@angular/core").Signal<RankedSlice[]>;
|
|
44
|
+
protected readonly positioned: import("@angular/core").Signal<PositionedSlice[]>;
|
|
45
|
+
protected readonly active: import("@angular/core").Signal<RankedSlice | null>;
|
|
46
|
+
protected readonly ariaLabel: import("@angular/core").Signal<string>;
|
|
47
|
+
protected readonly radius = 78;
|
|
48
|
+
protected readonly ringWidth = 30;
|
|
49
|
+
protected strokeColor(slice: RankedSlice): string;
|
|
50
|
+
protected sliceClasses(slice: RankedSlice): string;
|
|
51
|
+
protected dotClasses(slice: RankedSlice): string;
|
|
52
|
+
protected rowClasses(slice: RankedSlice): string;
|
|
53
|
+
protected subLabel(slice: RankedSlice): string;
|
|
54
|
+
protected isActive(slice: RankedSlice): boolean;
|
|
55
|
+
protected highlight(id: string): void;
|
|
56
|
+
protected clearHighlight(id: string): void;
|
|
57
|
+
protected hrefFor(id: string): string | null;
|
|
58
|
+
protected follow(event: MouseEvent, slice: RankedSlice): void;
|
|
59
|
+
protected select(slice: RankedSlice): void;
|
|
60
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<UiDonut, never>;
|
|
61
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<UiDonut, "ui-donut", never, {
|
|
62
|
+
"slices": {
|
|
63
|
+
"alias": "slices";
|
|
64
|
+
"required": true;
|
|
65
|
+
"isSignal": true;
|
|
66
|
+
};
|
|
67
|
+
"label": {
|
|
68
|
+
"alias": "label";
|
|
69
|
+
"required": true;
|
|
70
|
+
"isSignal": true;
|
|
71
|
+
};
|
|
72
|
+
"othersLabel": {
|
|
73
|
+
"alias": "othersLabel";
|
|
74
|
+
"required": true;
|
|
75
|
+
"isSignal": true;
|
|
76
|
+
};
|
|
77
|
+
"valueFormat": {
|
|
78
|
+
"alias": "valueFormat";
|
|
79
|
+
"required": false;
|
|
80
|
+
"isSignal": true;
|
|
81
|
+
};
|
|
82
|
+
"shareFormat": {
|
|
83
|
+
"alias": "shareFormat";
|
|
84
|
+
"required": false;
|
|
85
|
+
"isSignal": true;
|
|
86
|
+
};
|
|
87
|
+
"legendHref": {
|
|
88
|
+
"alias": "legendHref";
|
|
89
|
+
"required": false;
|
|
90
|
+
"isSignal": true;
|
|
91
|
+
};
|
|
92
|
+
}, {
|
|
93
|
+
"sliceSelect": "sliceSelect";
|
|
94
|
+
}, never, never, true, never>;
|
|
56
95
|
}
|
|
57
|
-
|
|
58
|
-
export { UiDonut };
|
|
59
|
-
export type { DonutSlice };
|
|
96
|
+
export type { DonutSlice };
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { ModalClose } from "@joanroucoux/cairn-ui/dialog";
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
/** What started a close, as `closed` reports it. */
|
|
4
|
+
export declare const DRAWER_CLOSE_REASONS: readonly ["escape", "backdrop", "cross", "programmatic"];
|
|
5
|
+
type DrawerCloseReason = (typeof DRAWER_CLOSE_REASONS)[number];
|
|
6
|
+
/**
|
|
7
|
+
* Modal side panel on the native <dialog>, against the right edge at full height, for a detail opened from a list.
|
|
8
|
+
*
|
|
9
|
+
* Without `heading` it draws no header: the content brings its own title and close button, and `label` names it.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* <ui-drawer heading="Northwind Monde" closeLabel="Fermer le détail" [open]="open()" (dismissed)="open.set(false)">
|
|
13
|
+
* <p>Body</p>
|
|
14
|
+
* </ui-drawer>
|
|
15
|
+
*/
|
|
16
|
+
export declare class UiDrawer {
|
|
17
|
+
readonly heading: import("@angular/core").InputSignal<string | undefined>;
|
|
18
|
+
readonly description: import("@angular/core").InputSignal<string | undefined>;
|
|
19
|
+
readonly closeLabel: import("@angular/core").InputSignal<string | undefined>;
|
|
20
|
+
readonly label: import("@angular/core").InputSignal<string | undefined>;
|
|
21
|
+
readonly width: import("@angular/core").InputSignal<string>;
|
|
22
|
+
readonly open: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
23
|
+
readonly busy: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
24
|
+
readonly dismissed: import("@angular/core").OutputEmitterRef<void>;
|
|
25
|
+
readonly closed: import("@angular/core").OutputEmitterRef<"escape" | "backdrop" | "cross" | "programmatic">;
|
|
26
|
+
protected readonly headingId: string;
|
|
27
|
+
protected readonly descriptionId: string;
|
|
28
|
+
protected readonly describedBy: import("@angular/core").Signal<string | null>;
|
|
29
|
+
protected readonly ariaLabel: import("@angular/core").Signal<string | null | undefined>;
|
|
30
|
+
protected readonly modal: ModalClose<"escape" | "backdrop" | "cross" | "programmatic">;
|
|
31
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<UiDrawer, never>;
|
|
32
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<UiDrawer, "ui-drawer", never, {
|
|
33
|
+
"heading": {
|
|
34
|
+
"alias": "heading";
|
|
35
|
+
"required": false;
|
|
36
|
+
"isSignal": true;
|
|
37
|
+
};
|
|
38
|
+
"description": {
|
|
39
|
+
"alias": "description";
|
|
40
|
+
"required": false;
|
|
41
|
+
"isSignal": true;
|
|
42
|
+
};
|
|
43
|
+
"closeLabel": {
|
|
44
|
+
"alias": "closeLabel";
|
|
45
|
+
"required": false;
|
|
46
|
+
"isSignal": true;
|
|
47
|
+
};
|
|
48
|
+
"label": {
|
|
49
|
+
"alias": "label";
|
|
50
|
+
"required": false;
|
|
51
|
+
"isSignal": true;
|
|
52
|
+
};
|
|
53
|
+
"width": {
|
|
54
|
+
"alias": "width";
|
|
55
|
+
"required": false;
|
|
56
|
+
"isSignal": true;
|
|
57
|
+
};
|
|
58
|
+
"open": {
|
|
59
|
+
"alias": "open";
|
|
60
|
+
"required": false;
|
|
61
|
+
"isSignal": true;
|
|
62
|
+
};
|
|
63
|
+
"busy": {
|
|
64
|
+
"alias": "busy";
|
|
65
|
+
"required": false;
|
|
66
|
+
"isSignal": true;
|
|
67
|
+
};
|
|
68
|
+
}, {
|
|
69
|
+
"dismissed": "dismissed";
|
|
70
|
+
"closed": "closed";
|
|
71
|
+
}, never, ["*"], true, never>;
|
|
72
|
+
}
|
|
73
|
+
export type { DrawerCloseReason };
|
|
@@ -1,19 +1,26 @@
|
|
|
1
|
-
import * as
|
|
2
|
-
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
3
2
|
/**
|
|
4
|
-
* Centred empty state: a title, a hint and an action slot, such as a
|
|
5
|
-
* nothing. The padding is 24px, 48px from 64rem.
|
|
3
|
+
* Centred empty state: a title, a hint and an action slot, such as a search that matches nothing.
|
|
6
4
|
*
|
|
7
5
|
* @example
|
|
8
|
-
* <ui-empty heading="
|
|
6
|
+
* <ui-empty heading="Aucune ligne ne correspond à « zzz »" hint="La recherche porte sur le nom et l'ISIN.">
|
|
9
7
|
* <button ui-button variant="outline" size="md" type="button">Ajouter une ligne</button>
|
|
10
8
|
* </ui-empty>
|
|
11
9
|
*/
|
|
12
|
-
declare class UiEmpty {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
10
|
+
export declare class UiEmpty {
|
|
11
|
+
readonly heading: import("@angular/core").InputSignal<string>;
|
|
12
|
+
readonly hint: import("@angular/core").InputSignal<string>;
|
|
13
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<UiEmpty, never>;
|
|
14
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<UiEmpty, "ui-empty", never, {
|
|
15
|
+
"heading": {
|
|
16
|
+
"alias": "heading";
|
|
17
|
+
"required": true;
|
|
18
|
+
"isSignal": true;
|
|
19
|
+
};
|
|
20
|
+
"hint": {
|
|
21
|
+
"alias": "hint";
|
|
22
|
+
"required": false;
|
|
23
|
+
"isSignal": true;
|
|
24
|
+
};
|
|
25
|
+
}, {}, never, ["*"], true, never>;
|
|
26
|
+
}
|
|
@@ -1,15 +1,11 @@
|
|
|
1
|
-
import * as i0 from
|
|
2
|
-
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
3
2
|
/**
|
|
4
|
-
* Link to another site: the label followed by an external-link icon.
|
|
5
|
-
* an underline on hover with a mouse.
|
|
3
|
+
* Link to another site: the label followed by an external-link icon.
|
|
6
4
|
*
|
|
7
5
|
* @example
|
|
8
6
|
* <a ui-external-link href="https://example.com" target="_blank" rel="noopener">Page on example.com</a>
|
|
9
7
|
*/
|
|
10
|
-
declare class UiExternalLink {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
export { UiExternalLink };
|
|
8
|
+
export declare class UiExternalLink {
|
|
9
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<UiExternalLink, never>;
|
|
10
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<UiExternalLink, "a[ui-external-link]", never, {}, {}, never, ["*"], true, never>;
|
|
11
|
+
}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
import * as
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
declare const FACT_SIZES: readonly ["md", "sm", "auto", "recap"];
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
/** Available fact row sizes. */
|
|
3
|
+
export declare const FACT_SIZES: readonly ["md", "sm", "auto", "recap"];
|
|
5
4
|
type FactSize = (typeof FACT_SIZES)[number];
|
|
6
5
|
/** Colour of the line under a fact value. `stale` flags an out-of-date figure. */
|
|
7
|
-
declare const FACT_SUB_TONES: readonly ["subtle", "stale"];
|
|
6
|
+
export declare const FACT_SUB_TONES: readonly ["subtle", "stale"];
|
|
8
7
|
type FactSubTone = (typeof FACT_SUB_TONES)[number];
|
|
9
8
|
/**
|
|
10
9
|
* The list that holds `div[ui-fact]` rows, as a native description list.
|
|
@@ -15,30 +14,55 @@ type FactSubTone = (typeof FACT_SUB_TONES)[number];
|
|
|
15
14
|
* <div ui-fact label="Price" sub="24/09 · Yahoo">28,64 €</div>
|
|
16
15
|
* </dl>
|
|
17
16
|
*/
|
|
18
|
-
declare class UiFacts {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
17
|
+
export declare class UiFacts {
|
|
18
|
+
readonly ruled: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
19
|
+
protected readonly classes: import("@angular/core").Signal<"m-0 flex flex-col shadow-[inset_0_1px_0_var(--hairline)]" | "m-0 flex flex-col">;
|
|
20
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<UiFacts, never>;
|
|
21
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<UiFacts, "dl[uiFacts]", never, {
|
|
22
|
+
"ruled": {
|
|
23
|
+
"alias": "ruled";
|
|
24
|
+
"required": false;
|
|
25
|
+
"isSignal": true;
|
|
26
|
+
};
|
|
27
|
+
}, {}, never, never, true, never>;
|
|
23
28
|
}
|
|
24
29
|
/**
|
|
25
|
-
* One fact of a `dl[uiFacts]`: a label
|
|
26
|
-
* under the value
|
|
30
|
+
* One fact of a `dl[uiFacts]`: a label, its value (the projected content) and an optional sub-line
|
|
31
|
+
* under the value.
|
|
27
32
|
*
|
|
28
33
|
* @example
|
|
29
34
|
* <div ui-fact label="Price" sub="24/09 · Yahoo" subTone="stale">28,64 €</div>
|
|
30
35
|
*/
|
|
31
|
-
declare class UiFact {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
36
|
+
export declare class UiFact {
|
|
37
|
+
readonly label: import("@angular/core").InputSignal<string>;
|
|
38
|
+
readonly sub: import("@angular/core").InputSignal<string | undefined>;
|
|
39
|
+
readonly subTone: import("@angular/core").InputSignal<"subtle" | "stale">;
|
|
40
|
+
readonly size: import("@angular/core").InputSignal<"md" | "sm" | "auto" | "recap">;
|
|
41
|
+
protected readonly classes: import("@angular/core").Signal<string>;
|
|
42
|
+
protected readonly valueClasses: import("@angular/core").Signal<string>;
|
|
43
|
+
protected readonly subClasses: import("@angular/core").Signal<string>;
|
|
44
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<UiFact, never>;
|
|
45
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<UiFact, "div[ui-fact]", never, {
|
|
46
|
+
"label": {
|
|
47
|
+
"alias": "label";
|
|
48
|
+
"required": true;
|
|
49
|
+
"isSignal": true;
|
|
50
|
+
};
|
|
51
|
+
"sub": {
|
|
52
|
+
"alias": "sub";
|
|
53
|
+
"required": false;
|
|
54
|
+
"isSignal": true;
|
|
55
|
+
};
|
|
56
|
+
"subTone": {
|
|
57
|
+
"alias": "subTone";
|
|
58
|
+
"required": false;
|
|
59
|
+
"isSignal": true;
|
|
60
|
+
};
|
|
61
|
+
"size": {
|
|
62
|
+
"alias": "size";
|
|
63
|
+
"required": false;
|
|
64
|
+
"isSignal": true;
|
|
65
|
+
};
|
|
66
|
+
}, {}, never, ["*"], true, never>;
|
|
41
67
|
}
|
|
42
|
-
|
|
43
|
-
export { FACT_SIZES, FACT_SUB_TONES, UiFact, UiFacts };
|
|
44
|
-
export type { FactSize, FactSubTone };
|
|
68
|
+
export type { FactSize, FactSubTone };
|