@area8975/ui 0.2.2-dev.39 → 0.2.2-dev.41
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 +3 -0
- package/fesm2022/area8975-ui.mjs +864 -220
- package/fesm2022/area8975-ui.mjs.map +1 -1
- package/package.json +1 -1
- package/types/area8975-ui.d.ts +318 -107
package/package.json
CHANGED
package/types/area8975-ui.d.ts
CHANGED
|
@@ -24,6 +24,111 @@ export interface ChartLegendSource {
|
|
|
24
24
|
}
|
|
25
25
|
/** Where a chart draws its own legend, `none` when one is linked elsewhere. */
|
|
26
26
|
export type ChartLegendPosition = 'auto' | 'none';
|
|
27
|
+
export type ChartOptions = ApexCharts$1.ApexOptions;
|
|
28
|
+
/** One named set of values, one per category. */
|
|
29
|
+
export interface ChartSeries {
|
|
30
|
+
name: string;
|
|
31
|
+
data: (number | null)[];
|
|
32
|
+
/** Overrides the palette slot, keep it for when a series must match something else. */
|
|
33
|
+
colour?: string;
|
|
34
|
+
/** Draws the line dashed, e.g. to set projected figures apart from actual ones. Bars ignore it. */
|
|
35
|
+
dashed?: boolean;
|
|
36
|
+
}
|
|
37
|
+
/** `fill` takes the host's height, which has to come from layout. */
|
|
38
|
+
export type ChartHeight = number | 'fill';
|
|
39
|
+
/** Turns a raw value into what the axis, tooltip and table show, e.g. money. */
|
|
40
|
+
export type ChartValueFormatter = (value: number) => string;
|
|
41
|
+
/** Inputs, privacy handling and legend wiring every chart shares, whatever it draws. */
|
|
42
|
+
declare abstract class UiChartBase implements ChartLegendSource {
|
|
43
|
+
protected readonly uiFormat: import("@area8975/ui").UiFormat;
|
|
44
|
+
private readonly privacy;
|
|
45
|
+
protected readonly dark: import("@angular/core").WritableSignal<boolean>;
|
|
46
|
+
protected readonly ink: Signal<import("@area8975/ui").ChartInk>;
|
|
47
|
+
/** Says what the chart shows, e.g. "Spending by month". */
|
|
48
|
+
readonly ariaLabel: import("@angular/core").InputSignal<string>;
|
|
49
|
+
readonly height: import("@angular/core").InputSignal<ChartHeight>;
|
|
50
|
+
/** Used on the value axis, the tooltip and the table, e.g. to show money. */
|
|
51
|
+
readonly valueFormatter: import("@angular/core").InputSignal<ChartValueFormatter>;
|
|
52
|
+
/** Masks the values in privacy mode. Defaults to whether `valueFormatter` came from `injectMoneyFormatter`. */
|
|
53
|
+
readonly sensitive: import("@angular/core").InputSignalWithTransform<boolean | undefined, unknown>;
|
|
54
|
+
/** Heading for the category column in the data table. */
|
|
55
|
+
readonly categoryLabel: import("@angular/core").InputSignal<string>;
|
|
56
|
+
readonly loading: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
57
|
+
readonly emptyText: import("@angular/core").InputSignal<string>;
|
|
58
|
+
/** Shows the data table under the chart instead of only to screen readers. */
|
|
59
|
+
readonly showTable: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
60
|
+
/** Raw ApexCharts options merged over the defaults, for anything not covered here. */
|
|
61
|
+
readonly options: import("@angular/core").InputSignal<ApexCharts.ApexOptions | null>;
|
|
62
|
+
/** `none` leaves the legend out, for when a `ui-chart-legend` is linked with `for`. */
|
|
63
|
+
readonly legend: import("@angular/core").InputSignal<ChartLegendPosition>;
|
|
64
|
+
/** Series switched off in the legend. */
|
|
65
|
+
readonly hiddenSeries: import("@angular/core").WritableSignal<string[]>;
|
|
66
|
+
/** The series the legend is pointing at, the others fade while it's set. */
|
|
67
|
+
readonly emphasis: import("@angular/core").WritableSignal<string | null>;
|
|
68
|
+
abstract readonly legendItems: Signal<ChartLegendItem[]>;
|
|
69
|
+
abstract readonly legendNote: Signal<string>;
|
|
70
|
+
protected abstract readonly isEmpty: Signal<boolean>;
|
|
71
|
+
private readonly money;
|
|
72
|
+
protected readonly privacyMode: Signal<"visible" | "discreet" | "hidden">;
|
|
73
|
+
protected readonly masked: Signal<boolean>;
|
|
74
|
+
protected readonly concealed: Signal<boolean>;
|
|
75
|
+
protected readonly displayFormatter: Signal<ChartValueFormatter>;
|
|
76
|
+
protected readonly apexHeight: Signal<number | "100%">;
|
|
77
|
+
protected formatValue(value: number | null | undefined): string;
|
|
78
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<UiChartBase, never>;
|
|
79
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<UiChartBase, never, never, {
|
|
80
|
+
"ariaLabel": {
|
|
81
|
+
"alias": "ariaLabel";
|
|
82
|
+
"required": true;
|
|
83
|
+
"isSignal": true;
|
|
84
|
+
};
|
|
85
|
+
"height": {
|
|
86
|
+
"alias": "height";
|
|
87
|
+
"required": false;
|
|
88
|
+
"isSignal": true;
|
|
89
|
+
};
|
|
90
|
+
"valueFormatter": {
|
|
91
|
+
"alias": "valueFormatter";
|
|
92
|
+
"required": false;
|
|
93
|
+
"isSignal": true;
|
|
94
|
+
};
|
|
95
|
+
"sensitive": {
|
|
96
|
+
"alias": "sensitive";
|
|
97
|
+
"required": false;
|
|
98
|
+
"isSignal": true;
|
|
99
|
+
};
|
|
100
|
+
"categoryLabel": {
|
|
101
|
+
"alias": "categoryLabel";
|
|
102
|
+
"required": false;
|
|
103
|
+
"isSignal": true;
|
|
104
|
+
};
|
|
105
|
+
"loading": {
|
|
106
|
+
"alias": "loading";
|
|
107
|
+
"required": false;
|
|
108
|
+
"isSignal": true;
|
|
109
|
+
};
|
|
110
|
+
"emptyText": {
|
|
111
|
+
"alias": "emptyText";
|
|
112
|
+
"required": false;
|
|
113
|
+
"isSignal": true;
|
|
114
|
+
};
|
|
115
|
+
"showTable": {
|
|
116
|
+
"alias": "showTable";
|
|
117
|
+
"required": false;
|
|
118
|
+
"isSignal": true;
|
|
119
|
+
};
|
|
120
|
+
"options": {
|
|
121
|
+
"alias": "options";
|
|
122
|
+
"required": false;
|
|
123
|
+
"isSignal": true;
|
|
124
|
+
};
|
|
125
|
+
"legend": {
|
|
126
|
+
"alias": "legend";
|
|
127
|
+
"required": false;
|
|
128
|
+
"isSignal": true;
|
|
129
|
+
};
|
|
130
|
+
}, {}, never, never, true, never>;
|
|
131
|
+
}
|
|
27
132
|
/**
|
|
28
133
|
* Categorical colours for chart series, in a fixed order that was checked for
|
|
29
134
|
* colour blindness (adjacent pairs stay apart for protan, deutan and tritan).
|
|
@@ -188,63 +293,30 @@ export declare function chartColour(index: number, dark?: boolean): string;
|
|
|
188
293
|
* them apart. Anything past that is grey.
|
|
189
294
|
*/
|
|
190
295
|
export declare function chartSeriesStyle(index: number, dashes: boolean, dark?: boolean): ChartSeriesStyle;
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
export
|
|
203
|
-
/** Turns a raw value into what the axis, tooltip and table show, e.g. money. */
|
|
204
|
-
export type ChartValueFormatter = (value: number) => string;
|
|
296
|
+
/**
|
|
297
|
+
* Blends `colour` towards `towards`, keeping `strength` of the original: 1 leaves
|
|
298
|
+
* it as it is, 0 gives `towards`. Apex can't parse color-mix(), so it's done
|
|
299
|
+
* here. Both must be six digit hex, anything else gives null.
|
|
300
|
+
*/
|
|
301
|
+
export declare function mixChartColours(colour: string, towards: string, strength: number): string | null;
|
|
302
|
+
/**
|
|
303
|
+
* Dark or light text, whichever reads better on a mark filled with `background`.
|
|
304
|
+
* Judged by APCA, the contrast model drafted for WCAG 3: the WCAG 2 ratio
|
|
305
|
+
* puts black text on saturated orange and red, where white reads far better.
|
|
306
|
+
*/
|
|
307
|
+
export declare function chartLabelInk(background: string): string;
|
|
205
308
|
/** Inputs every chart with categories along one axis and values up the other shares. */
|
|
206
|
-
declare abstract class UiAxisChartBase
|
|
207
|
-
protected readonly uiFormat: import("@area8975/ui").UiFormat;
|
|
208
|
-
private readonly privacy;
|
|
209
|
-
protected readonly dark: import("@angular/core").WritableSignal<boolean>;
|
|
210
|
-
protected readonly ink: import("@angular/core").Signal<import("@area8975/ui").ChartInk>;
|
|
309
|
+
declare abstract class UiAxisChartBase extends UiChartBase {
|
|
211
310
|
readonly series: import("@angular/core").InputSignal<ChartSeries[]>;
|
|
212
311
|
readonly categories: import("@angular/core").InputSignal<string[]>;
|
|
213
|
-
/** Says what the chart shows, e.g. "Spending by month". */
|
|
214
|
-
readonly ariaLabel: import("@angular/core").InputSignal<string>;
|
|
215
|
-
readonly height: import("@angular/core").InputSignal<ChartHeight>;
|
|
216
|
-
/** Used on the value axis, the tooltip and the table, e.g. to show money. */
|
|
217
|
-
readonly valueFormatter: import("@angular/core").InputSignal<ChartValueFormatter>;
|
|
218
|
-
/** Masks the values in privacy mode. Defaults to whether `valueFormatter` came from `injectMoneyFormatter`. */
|
|
219
|
-
readonly sensitive: import("@angular/core").InputSignalWithTransform<boolean | undefined, unknown>;
|
|
220
|
-
/** Heading for the category column in the data table. */
|
|
221
|
-
readonly categoryLabel: import("@angular/core").InputSignal<string>;
|
|
222
|
-
readonly loading: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
223
|
-
readonly emptyText: import("@angular/core").InputSignal<string>;
|
|
224
|
-
/** Shows the data table under the chart instead of only to screen readers. */
|
|
225
|
-
readonly showTable: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
226
|
-
/** Raw ApexCharts options merged over the defaults, for anything not covered here. */
|
|
227
|
-
readonly options: import("@angular/core").InputSignal<ApexCharts.ApexOptions | null>;
|
|
228
312
|
/**
|
|
229
313
|
* Only these series get palette colours, the rest go grey so the few that
|
|
230
314
|
* matter stand out. The way to show more series than there are colours.
|
|
231
315
|
*/
|
|
232
316
|
readonly highlight: import("@angular/core").InputSignal<string[] | null>;
|
|
233
317
|
readonly highlightKeepsColours: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
234
|
-
/** `none` leaves the legend out, for when a `ui-chart-legend` is linked with `for`. */
|
|
235
|
-
readonly legend: import("@angular/core").InputSignal<ChartLegendPosition>;
|
|
236
|
-
/** Series switched off in the legend. */
|
|
237
|
-
readonly hiddenSeries: import("@angular/core").WritableSignal<string[]>;
|
|
238
|
-
/** The series the legend is pointing at, the others fade while it's set. */
|
|
239
|
-
readonly emphasis: import("@angular/core").WritableSignal<string | null>;
|
|
240
318
|
/** Charts that draw lines can tell series apart by dashes too, bars can't. */
|
|
241
319
|
protected readonly supportsDashes: boolean;
|
|
242
|
-
private readonly money;
|
|
243
|
-
protected readonly privacyMode: import("@angular/core").Signal<"visible" | "discreet" | "hidden">;
|
|
244
|
-
protected readonly masked: import("@angular/core").Signal<boolean>;
|
|
245
|
-
protected readonly concealed: import("@angular/core").Signal<boolean>;
|
|
246
|
-
protected readonly displayFormatter: import("@angular/core").Signal<ChartValueFormatter>;
|
|
247
|
-
protected readonly apexHeight: import("@angular/core").Signal<number | "100%">;
|
|
248
320
|
protected readonly isEmpty: import("@angular/core").Signal<boolean>;
|
|
249
321
|
protected readonly isMuted: import("@angular/core").Signal<boolean[]>;
|
|
250
322
|
private readonly colourOrder;
|
|
@@ -254,7 +326,6 @@ declare abstract class UiAxisChartBase implements ChartLegendSource {
|
|
|
254
326
|
/** Grey context series stay out of the legend, the note says how many there are. */
|
|
255
327
|
readonly legendItems: import("@angular/core").Signal<ChartLegendItem[]>;
|
|
256
328
|
readonly legendNote: import("@angular/core").Signal<string>;
|
|
257
|
-
protected formatValue(value: number | null | undefined): string;
|
|
258
329
|
static ɵfac: i0.ɵɵFactoryDeclaration<UiAxisChartBase, never>;
|
|
259
330
|
static ɵdir: i0.ɵɵDirectiveDeclaration<UiAxisChartBase, never, never, {
|
|
260
331
|
"series": {
|
|
@@ -267,51 +338,6 @@ declare abstract class UiAxisChartBase implements ChartLegendSource {
|
|
|
267
338
|
"required": true;
|
|
268
339
|
"isSignal": true;
|
|
269
340
|
};
|
|
270
|
-
"ariaLabel": {
|
|
271
|
-
"alias": "ariaLabel";
|
|
272
|
-
"required": true;
|
|
273
|
-
"isSignal": true;
|
|
274
|
-
};
|
|
275
|
-
"height": {
|
|
276
|
-
"alias": "height";
|
|
277
|
-
"required": false;
|
|
278
|
-
"isSignal": true;
|
|
279
|
-
};
|
|
280
|
-
"valueFormatter": {
|
|
281
|
-
"alias": "valueFormatter";
|
|
282
|
-
"required": false;
|
|
283
|
-
"isSignal": true;
|
|
284
|
-
};
|
|
285
|
-
"sensitive": {
|
|
286
|
-
"alias": "sensitive";
|
|
287
|
-
"required": false;
|
|
288
|
-
"isSignal": true;
|
|
289
|
-
};
|
|
290
|
-
"categoryLabel": {
|
|
291
|
-
"alias": "categoryLabel";
|
|
292
|
-
"required": false;
|
|
293
|
-
"isSignal": true;
|
|
294
|
-
};
|
|
295
|
-
"loading": {
|
|
296
|
-
"alias": "loading";
|
|
297
|
-
"required": false;
|
|
298
|
-
"isSignal": true;
|
|
299
|
-
};
|
|
300
|
-
"emptyText": {
|
|
301
|
-
"alias": "emptyText";
|
|
302
|
-
"required": false;
|
|
303
|
-
"isSignal": true;
|
|
304
|
-
};
|
|
305
|
-
"showTable": {
|
|
306
|
-
"alias": "showTable";
|
|
307
|
-
"required": false;
|
|
308
|
-
"isSignal": true;
|
|
309
|
-
};
|
|
310
|
-
"options": {
|
|
311
|
-
"alias": "options";
|
|
312
|
-
"required": false;
|
|
313
|
-
"isSignal": true;
|
|
314
|
-
};
|
|
315
341
|
"highlight": {
|
|
316
342
|
"alias": "highlight";
|
|
317
343
|
"required": false;
|
|
@@ -322,11 +348,6 @@ declare abstract class UiAxisChartBase implements ChartLegendSource {
|
|
|
322
348
|
"required": false;
|
|
323
349
|
"isSignal": true;
|
|
324
350
|
};
|
|
325
|
-
"legend": {
|
|
326
|
-
"alias": "legend";
|
|
327
|
-
"required": false;
|
|
328
|
-
"isSignal": true;
|
|
329
|
-
};
|
|
330
351
|
}, {}, never, never, true, never>;
|
|
331
352
|
}
|
|
332
353
|
/**
|
|
@@ -413,7 +434,8 @@ export declare class UiChartComponent {
|
|
|
413
434
|
}
|
|
414
435
|
/** The loading, empty and data table states around a chart, shared by every chart type. */
|
|
415
436
|
export declare class UiChartFrameComponent {
|
|
416
|
-
|
|
437
|
+
/** ApexCharts options to draw, or null for a chart that draws itself as projected content. */
|
|
438
|
+
readonly options: import("@angular/core").InputSignal<ApexCharts.ApexOptions | null>;
|
|
417
439
|
readonly ariaLabel: import("@angular/core").InputSignal<string>;
|
|
418
440
|
readonly categories: import("@angular/core").InputSignal<string[]>;
|
|
419
441
|
readonly series: import("@angular/core").InputSignal<ChartSeries[]>;
|
|
@@ -523,7 +545,7 @@ export declare class UiChartFrameComponent {
|
|
|
523
545
|
}, {
|
|
524
546
|
"hiddenSeries": "hiddenSeriesChange";
|
|
525
547
|
"emphasis": "emphasisChange";
|
|
526
|
-
}, never,
|
|
548
|
+
}, never, ["*"], true, never>;
|
|
527
549
|
}
|
|
528
550
|
/**
|
|
529
551
|
* The numbers behind a chart as a table. Hidden visually by default so screen
|
|
@@ -729,6 +751,168 @@ export declare class UiPieChartComponent extends UiAxisChartBase {
|
|
|
729
751
|
export declare const PieChartVariants: readonly ["pie", "donut"];
|
|
730
752
|
/** @see {@link PieChartVariants} */
|
|
731
753
|
export type PieChartVariant = typeof PieChartVariants[number];
|
|
754
|
+
/** One block inside a group, sized by its value. */
|
|
755
|
+
export interface TreemapItem {
|
|
756
|
+
name: string;
|
|
757
|
+
value: number;
|
|
758
|
+
}
|
|
759
|
+
/** A set of items drawn together in one colour, e.g. a category and who it went to. */
|
|
760
|
+
export interface TreemapGroup {
|
|
761
|
+
name: string;
|
|
762
|
+
items: TreemapItem[];
|
|
763
|
+
/** Overrides the palette slot, keep it for when a group must match something else. */
|
|
764
|
+
colour?: string;
|
|
765
|
+
}
|
|
766
|
+
/** What `itemSelect` emits when a block is clicked. */
|
|
767
|
+
export interface TreemapSelection {
|
|
768
|
+
group: string;
|
|
769
|
+
item: string;
|
|
770
|
+
}
|
|
771
|
+
declare const TREEMAP_GROUP_GAP = 8;
|
|
772
|
+
declare const TREEMAP_BLOCK_GAP = 3;
|
|
773
|
+
declare const TREEMAP_HEADER_HEIGHT = 24;
|
|
774
|
+
interface TreemapRect {
|
|
775
|
+
x: number;
|
|
776
|
+
y: number;
|
|
777
|
+
width: number;
|
|
778
|
+
height: number;
|
|
779
|
+
}
|
|
780
|
+
/** One block as it's drawn, with the colours worked out. */
|
|
781
|
+
interface TreemapBlock {
|
|
782
|
+
group: string;
|
|
783
|
+
item: string;
|
|
784
|
+
value: number;
|
|
785
|
+
fill: string;
|
|
786
|
+
labelInk: string;
|
|
787
|
+
}
|
|
788
|
+
/** A group as it's drawn: only its items with something to show. */
|
|
789
|
+
interface DrawnTreemapGroup {
|
|
790
|
+
name: string;
|
|
791
|
+
colour: string;
|
|
792
|
+
total: number;
|
|
793
|
+
blocks: TreemapBlock[];
|
|
794
|
+
}
|
|
795
|
+
/** How much of its label a block has room for. */
|
|
796
|
+
type TreemapLabel = 'none' | 'name' | 'full';
|
|
797
|
+
interface PlacedTreemapBlock extends TreemapBlock {
|
|
798
|
+
rect: TreemapRect;
|
|
799
|
+
label: TreemapLabel;
|
|
800
|
+
}
|
|
801
|
+
interface PlacedTreemapGroup extends DrawnTreemapGroup {
|
|
802
|
+
rect: TreemapRect;
|
|
803
|
+
hasHeader: boolean;
|
|
804
|
+
placedBlocks: PlacedTreemapBlock[];
|
|
805
|
+
}
|
|
806
|
+
/** A group's own colour, or its palette slot, then grey once the palette runs out. */
|
|
807
|
+
declare function treemapGroupColours(groups: TreemapGroup[], dark: boolean): string[];
|
|
808
|
+
/**
|
|
809
|
+
* The groups worth drawing: hidden ones and items of zero or less are left out,
|
|
810
|
+
* then any group left with nothing.
|
|
811
|
+
*/
|
|
812
|
+
declare function drawnTreemapGroups(groups: TreemapGroup[], colours: string[], hidden: string[], shades: boolean, ink: ChartInk): DrawnTreemapGroup[];
|
|
813
|
+
/** Every block as one row of the data table, named "<group> – <item>". */
|
|
814
|
+
declare function treemapTableRows(groups: TreemapGroup[]): {
|
|
815
|
+
categories: string[];
|
|
816
|
+
values: number[];
|
|
817
|
+
};
|
|
818
|
+
/**
|
|
819
|
+
* Places each group in `bounds`, a header strip along its top when there's
|
|
820
|
+
* room, and its blocks under that. Positions are relative to `bounds`, and
|
|
821
|
+
* each block's are relative to its group.
|
|
822
|
+
*/
|
|
823
|
+
declare function placeTreemapGroups(groups: DrawnTreemapGroup[], bounds: TreemapRect): PlacedTreemapGroup[];
|
|
824
|
+
/**
|
|
825
|
+
* Splits `bounds` into one rectangle per value, each sized by its share and
|
|
826
|
+
* kept as close to square as the others allow (the squarified treemap of
|
|
827
|
+
* Bruls, Huizing and van Wijk). Rectangles come back in the order of
|
|
828
|
+
* `values`, with `gap` between neighbours but none at the edges.
|
|
829
|
+
*/
|
|
830
|
+
declare function squarify(values: number[], bounds: TreemapRect, gap?: number): TreemapRect[];
|
|
831
|
+
interface PointedBlock {
|
|
832
|
+
group: PlacedTreemapGroup;
|
|
833
|
+
block: PlacedTreemapBlock;
|
|
834
|
+
x: number;
|
|
835
|
+
y: number;
|
|
836
|
+
}
|
|
837
|
+
/**
|
|
838
|
+
* Nested blocks sized by value, for showing how a whole splits into groups
|
|
839
|
+
* and each group into items, e.g. spending by category and who it went to.
|
|
840
|
+
* Past eight groups the palette runs out and the rest go grey, so give each
|
|
841
|
+
* group a `colour` when there can be more.
|
|
842
|
+
*/
|
|
843
|
+
export declare class UiTreemapChartComponent extends UiChartBase {
|
|
844
|
+
readonly groups: import("@angular/core").InputSignal<TreemapGroup[]>;
|
|
845
|
+
readonly height: import("@angular/core").InputSignal<ChartHeight>;
|
|
846
|
+
/** Shades each group's items from its colour, biggest strongest, so they stay told apart. */
|
|
847
|
+
readonly shades: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
848
|
+
/** Makes each block a button that emits `itemSelect`. */
|
|
849
|
+
readonly selectable: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
850
|
+
/** Heading for the value column in the data table. */
|
|
851
|
+
readonly valueLabel: import("@angular/core").InputSignal<string>;
|
|
852
|
+
readonly itemSelect: import("@angular/core").OutputEmitterRef<TreemapSelection>;
|
|
853
|
+
private readonly canvas;
|
|
854
|
+
private readonly size;
|
|
855
|
+
protected readonly pointed: import("@angular/core").WritableSignal<PointedBlock | null>;
|
|
856
|
+
/** Set once the first layout is drawn, so blocks glide to new places after that but don't grow in from nothing. */
|
|
857
|
+
protected readonly settled: import("@angular/core").WritableSignal<boolean>;
|
|
858
|
+
private readonly percentFormatter;
|
|
859
|
+
protected readonly fill: import("@angular/core").Signal<boolean>;
|
|
860
|
+
protected readonly fixedHeight: import("@angular/core").Signal<number | null>;
|
|
861
|
+
private readonly colours;
|
|
862
|
+
private readonly drawnGroups;
|
|
863
|
+
protected readonly placedGroups: import("@angular/core").Signal<PlacedTreemapGroup[]>;
|
|
864
|
+
private readonly total;
|
|
865
|
+
private readonly tableRows;
|
|
866
|
+
protected readonly categories: import("@angular/core").Signal<string[]>;
|
|
867
|
+
protected readonly series: import("@angular/core").Signal<ChartSeries[]>;
|
|
868
|
+
protected readonly isEmpty: import("@angular/core").Signal<boolean>;
|
|
869
|
+
readonly legendItems: import("@angular/core").Signal<ChartLegendItem[]>;
|
|
870
|
+
readonly legendNote: import("@angular/core").Signal<string>;
|
|
871
|
+
private readonly emphasised;
|
|
872
|
+
protected readonly tooltipFooter: import("@angular/core").Signal<string>;
|
|
873
|
+
protected readonly tooltipPosition: import("@angular/core").Signal<{
|
|
874
|
+
left: number | null;
|
|
875
|
+
right: number | null;
|
|
876
|
+
top: number;
|
|
877
|
+
} | null>;
|
|
878
|
+
constructor();
|
|
879
|
+
protected isFaded(group: PlacedTreemapGroup): boolean;
|
|
880
|
+
protected point(event: PointerEvent, group: PlacedTreemapGroup, block: PlacedTreemapBlock): void;
|
|
881
|
+
protected focus(group: PlacedTreemapGroup, block: PlacedTreemapBlock): void;
|
|
882
|
+
protected select(block: PlacedTreemapBlock): void;
|
|
883
|
+
protected accessibleName(block: PlacedTreemapBlock): string;
|
|
884
|
+
private percent;
|
|
885
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<UiTreemapChartComponent, never>;
|
|
886
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<UiTreemapChartComponent, "ui-treemap-chart", never, {
|
|
887
|
+
"groups": {
|
|
888
|
+
"alias": "groups";
|
|
889
|
+
"required": true;
|
|
890
|
+
"isSignal": true;
|
|
891
|
+
};
|
|
892
|
+
"height": {
|
|
893
|
+
"alias": "height";
|
|
894
|
+
"required": false;
|
|
895
|
+
"isSignal": true;
|
|
896
|
+
};
|
|
897
|
+
"shades": {
|
|
898
|
+
"alias": "shades";
|
|
899
|
+
"required": false;
|
|
900
|
+
"isSignal": true;
|
|
901
|
+
};
|
|
902
|
+
"selectable": {
|
|
903
|
+
"alias": "selectable";
|
|
904
|
+
"required": false;
|
|
905
|
+
"isSignal": true;
|
|
906
|
+
};
|
|
907
|
+
"valueLabel": {
|
|
908
|
+
"alias": "valueLabel";
|
|
909
|
+
"required": false;
|
|
910
|
+
"isSignal": true;
|
|
911
|
+
};
|
|
912
|
+
}, {
|
|
913
|
+
"itemSelect": "itemSelect";
|
|
914
|
+
}, never, never, true, never>;
|
|
915
|
+
}
|
|
732
916
|
export interface UiFormat {
|
|
733
917
|
/** ISO 4217 code, e.g. "GBP". */
|
|
734
918
|
currency: string;
|
|
@@ -1012,7 +1196,7 @@ export declare class UiInputComponent<ValueType = string> {
|
|
|
1012
1196
|
readonly name: import("@angular/core").InputSignal<string>;
|
|
1013
1197
|
readonly placeholder: import("@angular/core").InputSignal<string>;
|
|
1014
1198
|
readonly autocomplete: import("@angular/core").InputSignal<string>;
|
|
1015
|
-
readonly inputmode: import("@angular/core").InputSignal<"" | "
|
|
1199
|
+
readonly inputmode: import("@angular/core").InputSignal<"" | "none" | "decimal" | "search" | "text" | "numeric" | "email" | "tel" | "url">;
|
|
1016
1200
|
readonly required: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
1017
1201
|
readonly disabled: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
1018
1202
|
readonly readonly: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
@@ -3828,10 +4012,29 @@ export interface TableDateRangeFacet {
|
|
|
3828
4012
|
min?: IsoDate | null;
|
|
3829
4013
|
max?: IsoDate | null;
|
|
3830
4014
|
}
|
|
3831
|
-
|
|
4015
|
+
/** Either end is null when it's open. */
|
|
4016
|
+
export interface TableAmountRange {
|
|
4017
|
+
min: number | null;
|
|
4018
|
+
max: number | null;
|
|
4019
|
+
}
|
|
4020
|
+
export interface TableAmountRangePreset {
|
|
4021
|
+
label: string;
|
|
4022
|
+
range: TableAmountRange;
|
|
4023
|
+
}
|
|
4024
|
+
/** Writes `{ min, max }` under `id`, both ends included, with at least one of them set. */
|
|
4025
|
+
export interface TableAmountRangeFacet {
|
|
4026
|
+
id: string;
|
|
4027
|
+
label: string;
|
|
4028
|
+
kind: 'amountRange';
|
|
4029
|
+
presets?: TableAmountRangePreset[];
|
|
4030
|
+
/** Shown before each amount, such as a currency symbol. */
|
|
4031
|
+
prefix?: string;
|
|
4032
|
+
}
|
|
4033
|
+
export type TableFacet = TableOptionsFacet | TableDateRangeFacet | TableAmountRangeFacet;
|
|
3832
4034
|
export type TableFacetDateRange = DateRange;
|
|
3833
4035
|
type Filters = Record<string, unknown>;
|
|
3834
|
-
type
|
|
4036
|
+
type RangeMode = 'any' | 'custom' | number;
|
|
4037
|
+
type AmountEnd = keyof TableAmountRange;
|
|
3835
4038
|
export declare class UiTableFiltersComponent {
|
|
3836
4039
|
private readonly registry;
|
|
3837
4040
|
readonly facets: import("@angular/core").InputSignal<TableFacet[]>;
|
|
@@ -3841,9 +4044,10 @@ export declare class UiTableFiltersComponent {
|
|
|
3841
4044
|
/** Below this breakpoint the panel becomes a Filters button and a drawer. */
|
|
3842
4045
|
readonly collapseBelow: import("@angular/core").InputSignal<"sm" | "md" | "lg" | "xl" | "2xl">;
|
|
3843
4046
|
protected readonly idPrefix: string;
|
|
3844
|
-
protected readonly
|
|
3845
|
-
protected readonly
|
|
3846
|
-
private readonly
|
|
4047
|
+
protected readonly anyRange: RangeMode;
|
|
4048
|
+
protected readonly customRange: RangeMode;
|
|
4049
|
+
private readonly customRanges;
|
|
4050
|
+
private readonly amountDrafts;
|
|
3847
4051
|
private readonly expanded;
|
|
3848
4052
|
private readonly linked;
|
|
3849
4053
|
protected readonly appliedCount: import("@angular/core").Signal<number>;
|
|
@@ -3863,11 +4067,18 @@ export declare class UiTableFiltersComponent {
|
|
|
3863
4067
|
protected hiddenCount(facet: TableOptionsFacet): number;
|
|
3864
4068
|
protected toggleExpanded(facet: TableOptionsFacet): void;
|
|
3865
4069
|
protected range(facet: TableDateRangeFacet): DateRange;
|
|
3866
|
-
protected dateMode(facet: TableDateRangeFacet):
|
|
3867
|
-
protected pickDate(facet: TableDateRangeFacet, mode:
|
|
4070
|
+
protected dateMode(facet: TableDateRangeFacet): RangeMode;
|
|
4071
|
+
protected pickDate(facet: TableDateRangeFacet, mode: RangeMode): void;
|
|
3868
4072
|
protected setRange(facet: TableDateRangeFacet, range: DateRange): void;
|
|
4073
|
+
protected amountRange(facet: TableAmountRangeFacet): TableAmountRange | undefined;
|
|
4074
|
+
protected amountMode(facet: TableAmountRangeFacet): RangeMode;
|
|
4075
|
+
protected pickAmount(facet: TableAmountRangeFacet, mode: RangeMode): void;
|
|
4076
|
+
protected amountText(facet: TableAmountRangeFacet, end: AmountEnd): string;
|
|
4077
|
+
protected typeAmount(facet: TableAmountRangeFacet, end: AmountEnd, text: string): void;
|
|
4078
|
+
protected isAmountValid(facet: TableAmountRangeFacet, end: AmountEnd): boolean;
|
|
3869
4079
|
protected clearAll(): void;
|
|
3870
4080
|
private setCustom;
|
|
4081
|
+
private forgetAmountDraft;
|
|
3871
4082
|
private isPastCutoff;
|
|
3872
4083
|
private isSelected;
|
|
3873
4084
|
private apply;
|