@gravionlabs/helix-ui 22.2.5 → 22.2.7
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/README.md +21 -1
- package/chart/package.json +4 -0
- package/core.css +4082 -0
- package/fesm2022/gravionlabs-helix-ui-chart.mjs +446 -0
- package/fesm2022/gravionlabs-helix-ui-chart.mjs.map +1 -0
- package/fesm2022/gravionlabs-helix-ui.mjs +4194 -823
- package/fesm2022/gravionlabs-helix-ui.mjs.map +1 -1
- package/package.json +6 -1
- package/styles.css +521 -0
- package/types/gravionlabs-helix-ui-chart.d.ts +134 -0
- package/types/gravionlabs-helix-ui.d.ts +1111 -295
|
@@ -857,137 +857,6 @@ export declare class HxCarousel<T = unknown> {
|
|
|
857
857
|
"page": "pageChange";
|
|
858
858
|
}, ["itemTemplate"], ["[hxCarouselHeader]", "[hxCarouselFooter]"], true, never>;
|
|
859
859
|
}
|
|
860
|
-
type HxChartType = 'bar' | 'line' | 'scatter' | 'bubble' | 'pie' | 'doughnut' | 'polarArea' | 'radar';
|
|
861
|
-
/** What `(dataSelect)` carries: the click and what chart.js found under it. */
|
|
862
|
-
interface HxChartSelectEvent {
|
|
863
|
-
originalEvent: Event;
|
|
864
|
-
/** The nearest element under the pointer (chart.js `{ datasetIndex, index, element }`). */
|
|
865
|
-
element: unknown;
|
|
866
|
-
/** The elements of that dataset. */
|
|
867
|
-
dataset: unknown[];
|
|
868
|
-
}
|
|
869
|
-
/** The part of chart.js this component uses; the real module is `chart.js/auto`. */
|
|
870
|
-
interface HxChartModule {
|
|
871
|
-
default: new (canvas: HTMLCanvasElement, config: unknown) => HxChartInstance;
|
|
872
|
-
}
|
|
873
|
-
interface HxChartInstance {
|
|
874
|
-
data: unknown;
|
|
875
|
-
options: unknown;
|
|
876
|
-
update(mode?: string): void;
|
|
877
|
-
destroy(): void;
|
|
878
|
-
getElementsAtEventForMode(event: Event, mode: string, options: object, useFinalPosition: boolean): unknown[];
|
|
879
|
-
}
|
|
880
|
-
/**
|
|
881
|
-
* Loads chart.js. The default is a dynamic `import('chart.js/auto')`, so chart.js is only fetched by apps that show
|
|
882
|
-
* a chart; provide another function to register a smaller set of chart.js parts or to replace it in tests.
|
|
883
|
-
*/
|
|
884
|
-
export declare const HX_CHART_LOADER: InjectionToken<() => Promise<HxChartModule>>;
|
|
885
|
-
type Json = Record<string, unknown>;
|
|
886
|
-
/** The parts of chart.js data and datasets that are read here; everything else is passed on untouched. */
|
|
887
|
-
interface ChartDataLike extends Json {
|
|
888
|
-
datasets?: unknown;
|
|
889
|
-
}
|
|
890
|
-
/**
|
|
891
|
-
* A chart.js chart whose colours, grid and font come from the Helix tokens.
|
|
892
|
-
*
|
|
893
|
-
* ```html
|
|
894
|
-
* <hx-chart type="bar" [data]="data" [options]="options" height="20rem" ariaLabel="Sales per month">
|
|
895
|
-
* <table hxChartFallback>…the same numbers as text…</table>
|
|
896
|
-
* </hx-chart>
|
|
897
|
-
* ```
|
|
898
|
-
*
|
|
899
|
-
* chart.js is an optional peer dependency, loaded with a dynamic import (see `HX_CHART_LOADER`) the first time a
|
|
900
|
-
* chart is shown. Datasets without colours get the Helix palette; text, grid and legend colours come from
|
|
901
|
-
* `--h-text-muted-color` and `--h-content-border-color` of the element. Your `options` win over these defaults.
|
|
902
|
-
* The chart is redrawn when `class` or `style` of `<html>` change (dark mode, the primary colour).
|
|
903
|
-
*
|
|
904
|
-
* The canvas is an `img` named by `ariaLabel` / `ariaLabelledBy`; content marked `hxChartFallback` becomes the
|
|
905
|
-
* canvas fallback content, which assistive technology reads: put the numbers there as text or as a table.
|
|
906
|
-
*/
|
|
907
|
-
export declare class HxChart {
|
|
908
|
-
#private;
|
|
909
|
-
private readonly canvas;
|
|
910
|
-
readonly type: import("@angular/core").InputSignal<HxChartType>;
|
|
911
|
-
/** chart.js data: `{ labels, datasets }`. Pass a new object to update the chart. */
|
|
912
|
-
readonly data: import("@angular/core").InputSignal<ChartDataLike>;
|
|
913
|
-
/** chart.js options, on top of the token defaults. Pass a new object to update the chart. */
|
|
914
|
-
readonly options: import("@angular/core").InputSignal<Json>;
|
|
915
|
-
/** Extra chart.js plugins for this chart. */
|
|
916
|
-
readonly plugins: import("@angular/core").InputSignal<readonly unknown[]>;
|
|
917
|
-
/** CSS width of the frame, e.g. `30rem`; the chart fills its container by default. */
|
|
918
|
-
readonly width: import("@angular/core").InputSignal<string | undefined>;
|
|
919
|
-
/** CSS height of the frame; without it chart.js keeps its aspect ratio. */
|
|
920
|
-
readonly height: import("@angular/core").InputSignal<string | undefined>;
|
|
921
|
-
/** Resize with the container. */
|
|
922
|
-
readonly responsive: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
923
|
-
readonly ariaLabel: import("@angular/core").InputSignal<string | undefined>;
|
|
924
|
-
readonly ariaLabelledBy: import("@angular/core").InputSignal<string | undefined>;
|
|
925
|
-
/** Delay of a redraw after the theme changed, in ms; the style change is usually followed by more. */
|
|
926
|
-
readonly themeDelay: import("@angular/core").InputSignalWithTransform<number, unknown>;
|
|
927
|
-
/** A data point or dataset was clicked. */
|
|
928
|
-
readonly dataSelect: import("@angular/core").OutputEmitterRef<HxChartSelectEvent>;
|
|
929
|
-
constructor();
|
|
930
|
-
/** The chart.js instance, once it exists; `undefined` before chart.js has loaded. */
|
|
931
|
-
get chart(): HxChartInstance | undefined;
|
|
932
|
-
/** Redraws the chart, e.g. after the theme changed in a way the component cannot see. */
|
|
933
|
-
refresh(): void;
|
|
934
|
-
protected onClick(event: MouseEvent): void;
|
|
935
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<HxChart, never>;
|
|
936
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<HxChart, "hx-chart", never, {
|
|
937
|
-
"type": {
|
|
938
|
-
"alias": "type";
|
|
939
|
-
"required": false;
|
|
940
|
-
"isSignal": true;
|
|
941
|
-
};
|
|
942
|
-
"data": {
|
|
943
|
-
"alias": "data";
|
|
944
|
-
"required": false;
|
|
945
|
-
"isSignal": true;
|
|
946
|
-
};
|
|
947
|
-
"options": {
|
|
948
|
-
"alias": "options";
|
|
949
|
-
"required": false;
|
|
950
|
-
"isSignal": true;
|
|
951
|
-
};
|
|
952
|
-
"plugins": {
|
|
953
|
-
"alias": "plugins";
|
|
954
|
-
"required": false;
|
|
955
|
-
"isSignal": true;
|
|
956
|
-
};
|
|
957
|
-
"width": {
|
|
958
|
-
"alias": "width";
|
|
959
|
-
"required": false;
|
|
960
|
-
"isSignal": true;
|
|
961
|
-
};
|
|
962
|
-
"height": {
|
|
963
|
-
"alias": "height";
|
|
964
|
-
"required": false;
|
|
965
|
-
"isSignal": true;
|
|
966
|
-
};
|
|
967
|
-
"responsive": {
|
|
968
|
-
"alias": "responsive";
|
|
969
|
-
"required": false;
|
|
970
|
-
"isSignal": true;
|
|
971
|
-
};
|
|
972
|
-
"ariaLabel": {
|
|
973
|
-
"alias": "ariaLabel";
|
|
974
|
-
"required": false;
|
|
975
|
-
"isSignal": true;
|
|
976
|
-
};
|
|
977
|
-
"ariaLabelledBy": {
|
|
978
|
-
"alias": "ariaLabelledBy";
|
|
979
|
-
"required": false;
|
|
980
|
-
"isSignal": true;
|
|
981
|
-
};
|
|
982
|
-
"themeDelay": {
|
|
983
|
-
"alias": "themeDelay";
|
|
984
|
-
"required": false;
|
|
985
|
-
"isSignal": true;
|
|
986
|
-
};
|
|
987
|
-
}, {
|
|
988
|
-
"dataSelect": "dataSelect";
|
|
989
|
-
}, never, ["[hxChartFallback]"], true, never>;
|
|
990
|
-
}
|
|
991
860
|
type HxCheckboxSize = 'small' | 'medium' | 'large';
|
|
992
861
|
/**
|
|
993
862
|
* A native `<input type="checkbox">` drawn as a Helix checkbox (CSS only). It is a real checkbox: `checked`,
|
|
@@ -1156,6 +1025,8 @@ interface HxPageEvent {
|
|
|
1156
1025
|
/** The page, 0-based. */
|
|
1157
1026
|
page: number;
|
|
1158
1027
|
pageCount: number;
|
|
1028
|
+
/** Set when the "All" size is chosen: `rows` is then the number of all records (at least 1). */
|
|
1029
|
+
all?: true;
|
|
1159
1030
|
}
|
|
1160
1031
|
/**
|
|
1161
1032
|
* Page navigation for a list or table: first, previous, page links, next, last, and a rows-per-page select.
|
|
@@ -1176,7 +1047,7 @@ export declare class HxPaginator {
|
|
|
1176
1047
|
/** Index of the first record shown. */
|
|
1177
1048
|
readonly first: import("@angular/core").ModelSignal<number>;
|
|
1178
1049
|
/** Offers a rows-per-page select when given. */
|
|
1179
|
-
readonly rowsPerPageOptions: import("@angular/core").InputSignal<readonly number[] | undefined>;
|
|
1050
|
+
readonly rowsPerPageOptions: import("@angular/core").InputSignal<readonly (number | "all")[] | undefined>;
|
|
1180
1051
|
/** Page links shown at most (the current page stays in the middle). */
|
|
1181
1052
|
readonly pageLinkSize: import("@angular/core").InputSignalWithTransform<number, unknown>;
|
|
1182
1053
|
readonly showCurrentPageReport: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
@@ -1191,6 +1062,15 @@ export declare class HxPaginator {
|
|
|
1191
1062
|
/** `{page}` is replaced by the page number (1-based). */
|
|
1192
1063
|
readonly pageLabelTemplate: import("@angular/core").InputSignal<string>;
|
|
1193
1064
|
readonly rowsPerPageLabel: import("@angular/core").InputSignal<string>;
|
|
1065
|
+
/** The label of the `'all'` entry of `rowsPerPageOptions`. */
|
|
1066
|
+
readonly allLabel: import("@angular/core").InputSignal<string>;
|
|
1067
|
+
/** The "All" size is chosen: one page with every record; `rows` is left as it was. */
|
|
1068
|
+
readonly showAll: import("@angular/core").ModelSignal<boolean>;
|
|
1069
|
+
/** "All" is chosen and still offered by `rowsPerPageOptions`. */
|
|
1070
|
+
private readonly allSelected;
|
|
1071
|
+
/** The records per page in effect: all of them when "All" is chosen. */
|
|
1072
|
+
private readonly perPage;
|
|
1073
|
+
protected readonly rowsValue: import("@angular/core").Signal<number | "all">;
|
|
1194
1074
|
readonly pageChange: import("@angular/core").OutputEmitterRef<HxPageEvent>;
|
|
1195
1075
|
protected readonly pageCount: import("@angular/core").Signal<number>;
|
|
1196
1076
|
protected readonly page: import("@angular/core").Signal<number>;
|
|
@@ -1200,7 +1080,7 @@ export declare class HxPaginator {
|
|
|
1200
1080
|
protected readonly links: import("@angular/core").Signal<number[]>;
|
|
1201
1081
|
protected readonly rowsOptions: import("@angular/core").Signal<{
|
|
1202
1082
|
label: string;
|
|
1203
|
-
value: number;
|
|
1083
|
+
value: number | "all";
|
|
1204
1084
|
}[]>;
|
|
1205
1085
|
protected readonly report: import("@angular/core").Signal<string>;
|
|
1206
1086
|
protected pageLabel(page: number): string;
|
|
@@ -1285,9 +1165,20 @@ export declare class HxPaginator {
|
|
|
1285
1165
|
"required": false;
|
|
1286
1166
|
"isSignal": true;
|
|
1287
1167
|
};
|
|
1168
|
+
"allLabel": {
|
|
1169
|
+
"alias": "allLabel";
|
|
1170
|
+
"required": false;
|
|
1171
|
+
"isSignal": true;
|
|
1172
|
+
};
|
|
1173
|
+
"showAll": {
|
|
1174
|
+
"alias": "showAll";
|
|
1175
|
+
"required": false;
|
|
1176
|
+
"isSignal": true;
|
|
1177
|
+
};
|
|
1288
1178
|
}, {
|
|
1289
1179
|
"rows": "rowsChange";
|
|
1290
1180
|
"first": "firstChange";
|
|
1181
|
+
"showAll": "showAllChange";
|
|
1291
1182
|
"pageChange": "pageChange";
|
|
1292
1183
|
}, never, never, true, never>;
|
|
1293
1184
|
}
|
|
@@ -1359,6 +1250,8 @@ interface HxColumn {
|
|
|
1359
1250
|
field: string;
|
|
1360
1251
|
/** The header text. */
|
|
1361
1252
|
header: string;
|
|
1253
|
+
/** The `title` attribute of the header cell (a tooltip). */
|
|
1254
|
+
title?: string;
|
|
1362
1255
|
/** CSS width of the column (`8rem`, `20%`). */
|
|
1363
1256
|
width?: string;
|
|
1364
1257
|
/** Horizontal alignment of header and cells (the start edge by default). */
|
|
@@ -1367,7 +1260,13 @@ interface HxColumn {
|
|
|
1367
1260
|
sortable?: boolean;
|
|
1368
1261
|
/** The column gets a text filter in the filter row (`filterDisplay="row"`). */
|
|
1369
1262
|
filter?: boolean;
|
|
1263
|
+
/** The direction of the first click on the sort button (the table's `sortFirstOrder` by default). */
|
|
1264
|
+
sortFirstOrder?: HxSortFirstOrder;
|
|
1370
1265
|
}
|
|
1266
|
+
/** The direction a sort starts with. */
|
|
1267
|
+
type HxSortFirstOrder = 'asc' | 'desc';
|
|
1268
|
+
/** What `rowClass` may return: anything `[class]` accepts. */
|
|
1269
|
+
type HxRowClass = string | readonly string[] | Record<string, boolean | null | undefined> | null | undefined;
|
|
1371
1270
|
/** One sorted column: `order` 1 is ascending, -1 descending. */
|
|
1372
1271
|
interface HxSortMeta {
|
|
1373
1272
|
field: string;
|
|
@@ -1409,6 +1308,26 @@ export declare class HxCell {
|
|
|
1409
1308
|
};
|
|
1410
1309
|
}, {}, never, never, true, never>;
|
|
1411
1310
|
}
|
|
1311
|
+
/**
|
|
1312
|
+
* Extra content in the header of one column, beside the label and outside the sort button:
|
|
1313
|
+
* `<ng-template hxColumnHeader="price" let-column>…</ng-template>`. The context has the column (`$implicit`).
|
|
1314
|
+
*/
|
|
1315
|
+
export declare class HxColumnHeader {
|
|
1316
|
+
/** The `field` of the column. */
|
|
1317
|
+
readonly field: import("@angular/core").InputSignal<string>;
|
|
1318
|
+
readonly template: TemplateRef<HxColumnHeaderContext>;
|
|
1319
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<HxColumnHeader, never>;
|
|
1320
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<HxColumnHeader, "ng-template[hxColumnHeader]", never, {
|
|
1321
|
+
"field": {
|
|
1322
|
+
"alias": "hxColumnHeader";
|
|
1323
|
+
"required": true;
|
|
1324
|
+
"isSignal": true;
|
|
1325
|
+
};
|
|
1326
|
+
}, {}, never, never, true, never>;
|
|
1327
|
+
}
|
|
1328
|
+
interface HxColumnHeaderContext {
|
|
1329
|
+
$implicit: HxColumn;
|
|
1330
|
+
}
|
|
1412
1331
|
interface HxCellContext {
|
|
1413
1332
|
$implicit: unknown;
|
|
1414
1333
|
value: unknown;
|
|
@@ -1485,6 +1404,12 @@ export declare class HxDataTable implements OnInit {
|
|
|
1485
1404
|
/** Rows change colour under the pointer (default on). */
|
|
1486
1405
|
readonly hoverRows: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
1487
1406
|
readonly emptyMessage: import("@angular/core").InputSignal<string>;
|
|
1407
|
+
/** Classes for the `<tr>` of a row: a string, an array or an object, as for `[class]`. */
|
|
1408
|
+
readonly rowClass: import("@angular/core").InputSignal<((row: never) => HxRowClass) | undefined>;
|
|
1409
|
+
/** Text shown in a cell whose value is `null` or `undefined` (not for `0`, `false` or `''`). */
|
|
1410
|
+
readonly emptyValue: import("@angular/core").InputSignal<string>;
|
|
1411
|
+
/** The label of the `'all'` entry of `rowsPerPageOptions`. */
|
|
1412
|
+
readonly allLabel: import("@angular/core").InputSignal<string>;
|
|
1488
1413
|
/** Covers the table with a spinner and sets `aria-busy`. */
|
|
1489
1414
|
readonly loading: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
1490
1415
|
/** Visible caption text above the table. */
|
|
@@ -1505,11 +1430,13 @@ export declare class HxDataTable implements OnInit {
|
|
|
1505
1430
|
readonly multiSortMeta: import("@angular/core").ModelSignal<HxSortMeta[]>;
|
|
1506
1431
|
/** Replaces the client-side sort. */
|
|
1507
1432
|
readonly sortFunction: import("@angular/core").InputSignal<HxSortFunction | undefined>;
|
|
1433
|
+
/** The direction of the first click on a sortable column; a column's own `sortFirstOrder` wins. */
|
|
1434
|
+
readonly sortFirstOrder: import("@angular/core").InputSignal<HxSortFirstOrder>;
|
|
1508
1435
|
/** Shows a paginator below the table. */
|
|
1509
1436
|
readonly paginator: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
1510
1437
|
readonly rows: import("@angular/core").ModelSignal<number>;
|
|
1511
1438
|
readonly first: import("@angular/core").ModelSignal<number>;
|
|
1512
|
-
readonly rowsPerPageOptions: import("@angular/core").InputSignal<readonly number[] | undefined>;
|
|
1439
|
+
readonly rowsPerPageOptions: import("@angular/core").InputSignal<readonly (number | "all")[] | undefined>;
|
|
1513
1440
|
readonly showCurrentPageReport: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
1514
1441
|
/** The rows are paged and sorted elsewhere: the table only shows `value` and emits `lazyLoad`. */
|
|
1515
1442
|
readonly lazy: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
@@ -1541,7 +1468,13 @@ export declare class HxDataTable implements OnInit {
|
|
|
1541
1468
|
readonly collapseLabel: import("@angular/core").InputSignal<string>;
|
|
1542
1469
|
protected readonly announcement: import("@angular/core").WritableSignal<string>;
|
|
1543
1470
|
private readonly globalText;
|
|
1471
|
+
/** The paginator's "All" size is chosen: every row is shown, whatever `rows` says. */
|
|
1472
|
+
private readonly showAll;
|
|
1473
|
+
/** A `rows` set from outside (or by the user) ends "All". */
|
|
1474
|
+
private readonly resetAll;
|
|
1475
|
+
private readonly allActive;
|
|
1544
1476
|
protected readonly cellTemplates: import("@angular/core").Signal<readonly HxCell[]>;
|
|
1477
|
+
protected readonly columnHeaderTemplates: import("@angular/core").Signal<readonly HxColumnHeader[]>;
|
|
1545
1478
|
protected readonly headerTemplate: import("@angular/core").Signal<HxTableHeader | undefined>;
|
|
1546
1479
|
protected readonly bodyTemplate: import("@angular/core").Signal<HxTableBody | undefined>;
|
|
1547
1480
|
protected readonly footerTemplate: import("@angular/core").Signal<HxTableFooter | undefined>;
|
|
@@ -1557,6 +1490,8 @@ export declare class HxDataTable implements OnInit {
|
|
|
1557
1490
|
/** The rows the table draws: sorted, then the current page. */
|
|
1558
1491
|
protected readonly visibleRows: import("@angular/core").Signal<readonly unknown[]>;
|
|
1559
1492
|
protected readonly cells: import("@angular/core").Signal<Map<string, TemplateRef<HxCellContext>>>;
|
|
1493
|
+
private readonly warnedFields;
|
|
1494
|
+
protected readonly columnHeaders: import("@angular/core").Signal<Map<string, TemplateRef<HxColumnHeaderContext>>>;
|
|
1560
1495
|
protected readonly scrolls: import("@angular/core").Signal<boolean>;
|
|
1561
1496
|
protected readonly hasCaption: import("@angular/core").Signal<boolean>;
|
|
1562
1497
|
protected readonly captionHidden: import("@angular/core").Signal<boolean>;
|
|
@@ -1588,11 +1523,12 @@ export declare class HxDataTable implements OnInit {
|
|
|
1588
1523
|
protected ariaSort(column: HxColumn): 'ascending' | 'descending' | 'none' | null;
|
|
1589
1524
|
/** The position (1-based) of a column in a multi-column sort, when more than one column is sorted. */
|
|
1590
1525
|
protected sortRank(column: HxColumn): number | null;
|
|
1591
|
-
/** Sorts by a column:
|
|
1526
|
+
/** Sorts by a column: the first order, then the opposite, then not at all (ascending first by default). */
|
|
1592
1527
|
sort(column: HxColumn): void;
|
|
1593
1528
|
protected onPage(event: HxPageEvent): void;
|
|
1594
1529
|
private emitLazy;
|
|
1595
1530
|
protected trackRow(row: unknown, index: number): unknown;
|
|
1531
|
+
protected rowClassOf(row: unknown): HxRowClass;
|
|
1596
1532
|
protected valueOf(row: unknown, column: HxColumn): unknown;
|
|
1597
1533
|
static ɵfac: i0.ɵɵFactoryDeclaration<HxDataTable, never>;
|
|
1598
1534
|
static ɵcmp: i0.ɵɵComponentDeclaration<HxDataTable, "hx-data-table", never, {
|
|
@@ -1636,6 +1572,21 @@ export declare class HxDataTable implements OnInit {
|
|
|
1636
1572
|
"required": false;
|
|
1637
1573
|
"isSignal": true;
|
|
1638
1574
|
};
|
|
1575
|
+
"rowClass": {
|
|
1576
|
+
"alias": "rowClass";
|
|
1577
|
+
"required": false;
|
|
1578
|
+
"isSignal": true;
|
|
1579
|
+
};
|
|
1580
|
+
"emptyValue": {
|
|
1581
|
+
"alias": "emptyValue";
|
|
1582
|
+
"required": false;
|
|
1583
|
+
"isSignal": true;
|
|
1584
|
+
};
|
|
1585
|
+
"allLabel": {
|
|
1586
|
+
"alias": "allLabel";
|
|
1587
|
+
"required": false;
|
|
1588
|
+
"isSignal": true;
|
|
1589
|
+
};
|
|
1639
1590
|
"loading": {
|
|
1640
1591
|
"alias": "loading";
|
|
1641
1592
|
"required": false;
|
|
@@ -1651,287 +1602,1092 @@ export declare class HxDataTable implements OnInit {
|
|
|
1651
1602
|
"required": false;
|
|
1652
1603
|
"isSignal": true;
|
|
1653
1604
|
};
|
|
1654
|
-
"scrollHeight": {
|
|
1655
|
-
"alias": "scrollHeight";
|
|
1605
|
+
"scrollHeight": {
|
|
1606
|
+
"alias": "scrollHeight";
|
|
1607
|
+
"required": false;
|
|
1608
|
+
"isSignal": true;
|
|
1609
|
+
};
|
|
1610
|
+
"scrollable": {
|
|
1611
|
+
"alias": "scrollable";
|
|
1612
|
+
"required": false;
|
|
1613
|
+
"isSignal": true;
|
|
1614
|
+
};
|
|
1615
|
+
"sortMode": {
|
|
1616
|
+
"alias": "sortMode";
|
|
1617
|
+
"required": false;
|
|
1618
|
+
"isSignal": true;
|
|
1619
|
+
};
|
|
1620
|
+
"sortField": {
|
|
1621
|
+
"alias": "sortField";
|
|
1622
|
+
"required": false;
|
|
1623
|
+
"isSignal": true;
|
|
1624
|
+
};
|
|
1625
|
+
"sortOrder": {
|
|
1626
|
+
"alias": "sortOrder";
|
|
1627
|
+
"required": false;
|
|
1628
|
+
"isSignal": true;
|
|
1629
|
+
};
|
|
1630
|
+
"multiSortMeta": {
|
|
1631
|
+
"alias": "multiSortMeta";
|
|
1632
|
+
"required": false;
|
|
1633
|
+
"isSignal": true;
|
|
1634
|
+
};
|
|
1635
|
+
"sortFunction": {
|
|
1636
|
+
"alias": "sortFunction";
|
|
1637
|
+
"required": false;
|
|
1638
|
+
"isSignal": true;
|
|
1639
|
+
};
|
|
1640
|
+
"sortFirstOrder": {
|
|
1641
|
+
"alias": "sortFirstOrder";
|
|
1642
|
+
"required": false;
|
|
1643
|
+
"isSignal": true;
|
|
1644
|
+
};
|
|
1645
|
+
"paginator": {
|
|
1646
|
+
"alias": "paginator";
|
|
1647
|
+
"required": false;
|
|
1648
|
+
"isSignal": true;
|
|
1649
|
+
};
|
|
1650
|
+
"rows": {
|
|
1651
|
+
"alias": "rows";
|
|
1652
|
+
"required": false;
|
|
1653
|
+
"isSignal": true;
|
|
1654
|
+
};
|
|
1655
|
+
"first": {
|
|
1656
|
+
"alias": "first";
|
|
1657
|
+
"required": false;
|
|
1658
|
+
"isSignal": true;
|
|
1659
|
+
};
|
|
1660
|
+
"rowsPerPageOptions": {
|
|
1661
|
+
"alias": "rowsPerPageOptions";
|
|
1662
|
+
"required": false;
|
|
1663
|
+
"isSignal": true;
|
|
1664
|
+
};
|
|
1665
|
+
"showCurrentPageReport": {
|
|
1666
|
+
"alias": "showCurrentPageReport";
|
|
1667
|
+
"required": false;
|
|
1668
|
+
"isSignal": true;
|
|
1669
|
+
};
|
|
1670
|
+
"lazy": {
|
|
1671
|
+
"alias": "lazy";
|
|
1672
|
+
"required": false;
|
|
1673
|
+
"isSignal": true;
|
|
1674
|
+
};
|
|
1675
|
+
"totalRecords": {
|
|
1676
|
+
"alias": "totalRecords";
|
|
1677
|
+
"required": false;
|
|
1678
|
+
"isSignal": true;
|
|
1679
|
+
};
|
|
1680
|
+
"lazyLoadOnInit": {
|
|
1681
|
+
"alias": "lazyLoadOnInit";
|
|
1682
|
+
"required": false;
|
|
1683
|
+
"isSignal": true;
|
|
1684
|
+
};
|
|
1685
|
+
"selectionMode": {
|
|
1686
|
+
"alias": "selectionMode";
|
|
1687
|
+
"required": false;
|
|
1688
|
+
"isSignal": true;
|
|
1689
|
+
};
|
|
1690
|
+
"selection": {
|
|
1691
|
+
"alias": "selection";
|
|
1692
|
+
"required": false;
|
|
1693
|
+
"isSignal": true;
|
|
1694
|
+
};
|
|
1695
|
+
"metaKeySelection": {
|
|
1696
|
+
"alias": "metaKeySelection";
|
|
1697
|
+
"required": false;
|
|
1698
|
+
"isSignal": true;
|
|
1699
|
+
};
|
|
1700
|
+
"selectAllLabel": {
|
|
1701
|
+
"alias": "selectAllLabel";
|
|
1702
|
+
"required": false;
|
|
1703
|
+
"isSignal": true;
|
|
1704
|
+
};
|
|
1705
|
+
"selectRowLabel": {
|
|
1706
|
+
"alias": "selectRowLabel";
|
|
1707
|
+
"required": false;
|
|
1708
|
+
"isSignal": true;
|
|
1709
|
+
};
|
|
1710
|
+
"globalFilterFields": {
|
|
1711
|
+
"alias": "globalFilterFields";
|
|
1712
|
+
"required": false;
|
|
1713
|
+
"isSignal": true;
|
|
1714
|
+
};
|
|
1715
|
+
"filterDisplay": {
|
|
1716
|
+
"alias": "filterDisplay";
|
|
1717
|
+
"required": false;
|
|
1718
|
+
"isSignal": true;
|
|
1719
|
+
};
|
|
1720
|
+
"filters": {
|
|
1721
|
+
"alias": "filters";
|
|
1722
|
+
"required": false;
|
|
1723
|
+
"isSignal": true;
|
|
1724
|
+
};
|
|
1725
|
+
"filterLabel": {
|
|
1726
|
+
"alias": "filterLabel";
|
|
1727
|
+
"required": false;
|
|
1728
|
+
"isSignal": true;
|
|
1729
|
+
};
|
|
1730
|
+
"expandedRowKeys": {
|
|
1731
|
+
"alias": "expandedRowKeys";
|
|
1732
|
+
"required": false;
|
|
1733
|
+
"isSignal": true;
|
|
1734
|
+
};
|
|
1735
|
+
"expandLabel": {
|
|
1736
|
+
"alias": "expandLabel";
|
|
1737
|
+
"required": false;
|
|
1738
|
+
"isSignal": true;
|
|
1739
|
+
};
|
|
1740
|
+
"collapseLabel": {
|
|
1741
|
+
"alias": "collapseLabel";
|
|
1742
|
+
"required": false;
|
|
1743
|
+
"isSignal": true;
|
|
1744
|
+
};
|
|
1745
|
+
}, {
|
|
1746
|
+
"sortField": "sortFieldChange";
|
|
1747
|
+
"sortOrder": "sortOrderChange";
|
|
1748
|
+
"multiSortMeta": "multiSortMetaChange";
|
|
1749
|
+
"rows": "rowsChange";
|
|
1750
|
+
"first": "firstChange";
|
|
1751
|
+
"lazyLoad": "lazyLoad";
|
|
1752
|
+
"selection": "selectionChange";
|
|
1753
|
+
"filters": "filtersChange";
|
|
1754
|
+
"expandedRowKeys": "expandedRowKeysChange";
|
|
1755
|
+
}, ["cellTemplates", "columnHeaderTemplates", "headerTemplate", "bodyTemplate", "footerTemplate", "captionTemplate", "expansionTemplate", "emptyTemplate"], never, true, never>;
|
|
1756
|
+
}
|
|
1757
|
+
type CalendarView = 'day' | 'month' | 'year';
|
|
1758
|
+
interface DisabledRules {
|
|
1759
|
+
min?: Date | null;
|
|
1760
|
+
max?: Date | null;
|
|
1761
|
+
disabledDates?: readonly Date[];
|
|
1762
|
+
}
|
|
1763
|
+
/** `2026-9-5`, the `data-date` of a day button. */
|
|
1764
|
+
declare function dateKey(date: Date): string;
|
|
1765
|
+
/** Whether a day lies outside `min`..`max` (by day) or is one of `disabledDates`. */
|
|
1766
|
+
declare function isDateDisabled(date: Date, rules: DisabledRules): boolean;
|
|
1767
|
+
/** Whether a day lies strictly between the two dates of a complete range. */
|
|
1768
|
+
declare function isInRange(date: Date, selected: readonly Date[], mode: string): boolean;
|
|
1769
|
+
/** The focused day after the previous (`-1`) or next (`1`) button of the header: a month, a year or 12 years. */
|
|
1770
|
+
declare function stepFocus(view: CalendarView, current: Date, direction: 1 | -1): Date;
|
|
1771
|
+
/** The focused day after choosing a month (`0` to `11`) in the month view. */
|
|
1772
|
+
declare function focusMonth(current: Date, month: number): Date;
|
|
1773
|
+
/** The focused day after choosing a year in the year view. */
|
|
1774
|
+
declare function focusYear(current: Date, year: number): Date;
|
|
1775
|
+
/** The 12 years of the page that holds `year`. */
|
|
1776
|
+
declare function decadeOf(year: number): number[];
|
|
1777
|
+
/** The day a key of the day grid moves the focus to, or `null` for a key that does nothing. */
|
|
1778
|
+
declare function dayKeyTarget(key: string, date: Date, firstDayOfWeek: number, shift?: boolean): Date | null;
|
|
1779
|
+
type HxDatePickerSelectionMode = 'single' | 'range' | 'multiple';
|
|
1780
|
+
type HxDatePickerValue = Date | Date[] | null;
|
|
1781
|
+
/**
|
|
1782
|
+
* A date field that opens a calendar, or with `[inline]="true"` the calendar alone, to choose a day, a range or
|
|
1783
|
+
* several days. Typing a date in the field parses it; month and year views are one click on the title. Day, month and weekday names come from `Intl.DateTimeFormat` for the `locale`.
|
|
1784
|
+
*
|
|
1785
|
+
* ```html
|
|
1786
|
+
* <hx-date-picker inputId="arrival" showIcon showButtonBar [(ngModel)]="arrival" />
|
|
1787
|
+
* <hx-date-picker inline ariaLabel="Arrival" [(ngModel)]="arrival" />
|
|
1788
|
+
* <hx-date-picker inline selectionMode="range" [minDate]="today" [firstDayOfWeek]="1" [(value)]="stay" />
|
|
1789
|
+
* ```
|
|
1790
|
+
*
|
|
1791
|
+
* The value is a `Date` (`single`) or a `Date[]` (`multiple`; `range`: one date while the range is open, two when
|
|
1792
|
+
* it is complete). It works with `ngModel`, reactive forms and signal forms (`[formField]`).
|
|
1793
|
+
*
|
|
1794
|
+
* The field shows the value formatted with `Intl.DateTimeFormat` (`dateFormat` options, numeric by default so a
|
|
1795
|
+
* typed date parses back). The popup is a non-modal dialog: focus moves to the selected or today's day and returns
|
|
1796
|
+
* to the field on close; a range keeps it open until the second date.
|
|
1797
|
+
*
|
|
1798
|
+
* Keyboard in the day grid: arrows move by a day or a week, Home and End to the start and end of the week,
|
|
1799
|
+
* Page Up and Page Down by a month (with Shift by a year), Enter or Space selects.
|
|
1800
|
+
*/
|
|
1801
|
+
export declare class HxDatePicker implements ControlValueAccessor, FormValueControl<HxDatePickerValue> {
|
|
1802
|
+
#private;
|
|
1803
|
+
/** The text field's placeholder. */
|
|
1804
|
+
readonly placeholder: import("@angular/core").InputSignal<string>;
|
|
1805
|
+
/** A calendar button at the end of the field. */
|
|
1806
|
+
readonly showIcon: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
1807
|
+
/** Today and Clear buttons under the calendar of the popup. */
|
|
1808
|
+
readonly showButtonBar: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
1809
|
+
/**
|
|
1810
|
+
* `Intl.DateTimeFormat` options of the text in the field. By default numeric, so a typed date parses back.
|
|
1811
|
+
*/
|
|
1812
|
+
readonly dateFormat: import("@angular/core").InputSignal<Intl.DateTimeFormatOptions | undefined>;
|
|
1813
|
+
readonly todayLabel: import("@angular/core").InputSignal<string>;
|
|
1814
|
+
readonly clearLabel: import("@angular/core").InputSignal<string>;
|
|
1815
|
+
readonly chooseLabel: import("@angular/core").InputSignal<string>;
|
|
1816
|
+
/** The `id` of the text field, for a `<label for>`. */
|
|
1817
|
+
readonly inputId: import("@angular/core").InputSignal<string | undefined>;
|
|
1818
|
+
/** Shows the calendar in the page. */
|
|
1819
|
+
readonly inline: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
1820
|
+
readonly selectionMode: import("@angular/core").InputSignal<HxDatePickerSelectionMode>;
|
|
1821
|
+
/** The earliest and latest day that can be chosen. */
|
|
1822
|
+
readonly minDate: import("@angular/core").InputSignal<Date | null>;
|
|
1823
|
+
readonly maxDate: import("@angular/core").InputSignal<Date | null>;
|
|
1824
|
+
/** Days that cannot be chosen. */
|
|
1825
|
+
readonly disabledDates: import("@angular/core").InputSignal<readonly Date[]>;
|
|
1826
|
+
/** `0` Sunday … `6` Saturday. */
|
|
1827
|
+
readonly firstDayOfWeek: import("@angular/core").InputSignalWithTransform<number, unknown>;
|
|
1828
|
+
/** A BCP 47 tag for the names (default: the browser's). */
|
|
1829
|
+
readonly locale: import("@angular/core").InputSignal<string | undefined>;
|
|
1830
|
+
readonly ariaLabel: import("@angular/core").InputSignal<string | undefined>;
|
|
1831
|
+
readonly ariaLabelledby: import("@angular/core").InputSignal<string | undefined>;
|
|
1832
|
+
readonly value: import("@angular/core").ModelSignal<HxDatePickerValue>;
|
|
1833
|
+
readonly disabled: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
1834
|
+
readonly invalid: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
1835
|
+
readonly touch: import("@angular/core").OutputEmitterRef<void>;
|
|
1836
|
+
readonly open: import("@angular/core").WritableSignal<boolean>;
|
|
1837
|
+
protected readonly titleId: string;
|
|
1838
|
+
protected readonly popupId: string;
|
|
1839
|
+
protected readonly positions: ConnectedPosition[];
|
|
1840
|
+
private readonly field;
|
|
1841
|
+
private readonly calendar;
|
|
1842
|
+
protected readonly view: import("@angular/core").WritableSignal<CalendarView>;
|
|
1843
|
+
protected readonly isDisabled: import("@angular/core").Signal<boolean>;
|
|
1844
|
+
/** The day with the focus in the grid, and the month the grid shows. */
|
|
1845
|
+
protected readonly focusedDate: import("@angular/core").WritableSignal<Date>;
|
|
1846
|
+
protected readonly today: Date;
|
|
1847
|
+
protected readonly selectedDates: import("@angular/core").Signal<Date[]>;
|
|
1848
|
+
protected readonly text: import("@angular/core").Signal<string>;
|
|
1849
|
+
constructor();
|
|
1850
|
+
writeValue(value: HxDatePickerValue): void;
|
|
1851
|
+
registerOnChange(fn: (value: HxDatePickerValue) => void): void;
|
|
1852
|
+
registerOnTouched(fn: () => void): void;
|
|
1853
|
+
setDisabledState(disabled: boolean): void;
|
|
1854
|
+
/** Focuses the text field, or the day of an inline calendar (signal forms call this to focus the control). */
|
|
1855
|
+
focus(): void;
|
|
1856
|
+
protected isDateDisabled(date: Date): boolean;
|
|
1857
|
+
protected isSelected(date: Date): boolean;
|
|
1858
|
+
protected pick(date: Date): void;
|
|
1859
|
+
protected show(): void;
|
|
1860
|
+
protected toggle(): void;
|
|
1861
|
+
protected close(refocus?: boolean): void;
|
|
1862
|
+
protected onAttach(): void;
|
|
1863
|
+
protected onOverlayKeydown(event: KeyboardEvent): void;
|
|
1864
|
+
protected onOutsideClick(event: MouseEvent): void;
|
|
1865
|
+
protected onFieldKeydown(event: KeyboardEvent): void;
|
|
1866
|
+
protected onTyping(event: Event): void;
|
|
1867
|
+
/** Parses the typed text; an unreadable or disabled date puts the value back. */
|
|
1868
|
+
protected commitTyping(): void;
|
|
1869
|
+
protected selectToday(): void;
|
|
1870
|
+
protected clear(): void;
|
|
1871
|
+
protected onHostFocusOut(event: FocusEvent): void;
|
|
1872
|
+
protected onFocusOut(event: FocusEvent): void;
|
|
1873
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<HxDatePicker, never>;
|
|
1874
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<HxDatePicker, "hx-date-picker", never, {
|
|
1875
|
+
"placeholder": {
|
|
1876
|
+
"alias": "placeholder";
|
|
1877
|
+
"required": false;
|
|
1878
|
+
"isSignal": true;
|
|
1879
|
+
};
|
|
1880
|
+
"showIcon": {
|
|
1881
|
+
"alias": "showIcon";
|
|
1882
|
+
"required": false;
|
|
1883
|
+
"isSignal": true;
|
|
1884
|
+
};
|
|
1885
|
+
"showButtonBar": {
|
|
1886
|
+
"alias": "showButtonBar";
|
|
1887
|
+
"required": false;
|
|
1888
|
+
"isSignal": true;
|
|
1889
|
+
};
|
|
1890
|
+
"dateFormat": {
|
|
1891
|
+
"alias": "dateFormat";
|
|
1892
|
+
"required": false;
|
|
1893
|
+
"isSignal": true;
|
|
1894
|
+
};
|
|
1895
|
+
"todayLabel": {
|
|
1896
|
+
"alias": "todayLabel";
|
|
1897
|
+
"required": false;
|
|
1898
|
+
"isSignal": true;
|
|
1899
|
+
};
|
|
1900
|
+
"clearLabel": {
|
|
1901
|
+
"alias": "clearLabel";
|
|
1902
|
+
"required": false;
|
|
1903
|
+
"isSignal": true;
|
|
1904
|
+
};
|
|
1905
|
+
"chooseLabel": {
|
|
1906
|
+
"alias": "chooseLabel";
|
|
1907
|
+
"required": false;
|
|
1908
|
+
"isSignal": true;
|
|
1909
|
+
};
|
|
1910
|
+
"inputId": {
|
|
1911
|
+
"alias": "inputId";
|
|
1912
|
+
"required": false;
|
|
1913
|
+
"isSignal": true;
|
|
1914
|
+
};
|
|
1915
|
+
"inline": {
|
|
1916
|
+
"alias": "inline";
|
|
1917
|
+
"required": false;
|
|
1918
|
+
"isSignal": true;
|
|
1919
|
+
};
|
|
1920
|
+
"selectionMode": {
|
|
1921
|
+
"alias": "selectionMode";
|
|
1922
|
+
"required": false;
|
|
1923
|
+
"isSignal": true;
|
|
1924
|
+
};
|
|
1925
|
+
"minDate": {
|
|
1926
|
+
"alias": "minDate";
|
|
1927
|
+
"required": false;
|
|
1928
|
+
"isSignal": true;
|
|
1929
|
+
};
|
|
1930
|
+
"maxDate": {
|
|
1931
|
+
"alias": "maxDate";
|
|
1932
|
+
"required": false;
|
|
1933
|
+
"isSignal": true;
|
|
1934
|
+
};
|
|
1935
|
+
"disabledDates": {
|
|
1936
|
+
"alias": "disabledDates";
|
|
1937
|
+
"required": false;
|
|
1938
|
+
"isSignal": true;
|
|
1939
|
+
};
|
|
1940
|
+
"firstDayOfWeek": {
|
|
1941
|
+
"alias": "firstDayOfWeek";
|
|
1942
|
+
"required": false;
|
|
1943
|
+
"isSignal": true;
|
|
1944
|
+
};
|
|
1945
|
+
"locale": {
|
|
1946
|
+
"alias": "locale";
|
|
1947
|
+
"required": false;
|
|
1948
|
+
"isSignal": true;
|
|
1949
|
+
};
|
|
1950
|
+
"ariaLabel": {
|
|
1951
|
+
"alias": "ariaLabel";
|
|
1952
|
+
"required": false;
|
|
1953
|
+
"isSignal": true;
|
|
1954
|
+
};
|
|
1955
|
+
"ariaLabelledby": {
|
|
1956
|
+
"alias": "ariaLabelledby";
|
|
1957
|
+
"required": false;
|
|
1958
|
+
"isSignal": true;
|
|
1959
|
+
};
|
|
1960
|
+
"value": {
|
|
1961
|
+
"alias": "value";
|
|
1962
|
+
"required": false;
|
|
1963
|
+
"isSignal": true;
|
|
1964
|
+
};
|
|
1965
|
+
"disabled": {
|
|
1966
|
+
"alias": "disabled";
|
|
1967
|
+
"required": false;
|
|
1968
|
+
"isSignal": true;
|
|
1969
|
+
};
|
|
1970
|
+
"invalid": {
|
|
1971
|
+
"alias": "invalid";
|
|
1972
|
+
"required": false;
|
|
1973
|
+
"isSignal": true;
|
|
1974
|
+
};
|
|
1975
|
+
}, {
|
|
1976
|
+
"value": "valueChange";
|
|
1977
|
+
"touch": "touch";
|
|
1978
|
+
}, never, never, true, never>;
|
|
1979
|
+
}
|
|
1980
|
+
type TimeUnit = 'hour' | 'minute' | 'second' | 'period';
|
|
1981
|
+
interface TimeColumn {
|
|
1982
|
+
unit: TimeUnit;
|
|
1983
|
+
label: string;
|
|
1984
|
+
now: number;
|
|
1985
|
+
min: number;
|
|
1986
|
+
max: number;
|
|
1987
|
+
text: string;
|
|
1988
|
+
valueText: string;
|
|
1989
|
+
}
|
|
1990
|
+
interface TimeOfDay {
|
|
1991
|
+
hours: number;
|
|
1992
|
+
minutes: number;
|
|
1993
|
+
seconds: number;
|
|
1994
|
+
}
|
|
1995
|
+
interface TimeColumnOptions {
|
|
1996
|
+
hour12: boolean;
|
|
1997
|
+
showMinutes: boolean;
|
|
1998
|
+
showSeconds: boolean;
|
|
1999
|
+
locale?: string;
|
|
2000
|
+
labels: {
|
|
2001
|
+
hour: string;
|
|
2002
|
+
minute: string;
|
|
2003
|
+
second: string;
|
|
2004
|
+
period: string;
|
|
2005
|
+
};
|
|
2006
|
+
}
|
|
2007
|
+
interface TimeSteps {
|
|
2008
|
+
hour: number;
|
|
2009
|
+
minute: number;
|
|
2010
|
+
second: number;
|
|
2011
|
+
}
|
|
2012
|
+
/** The spinbutton columns of a time row: hour, minute, second, AM/PM as the options ask. */
|
|
2013
|
+
declare function buildTimeColumns(time: TimeOfDay, options: TimeColumnOptions): TimeColumn[];
|
|
2014
|
+
/** The values a time unit can take: from its minimum in steps, up to its maximum. */
|
|
2015
|
+
declare function unitValues(column: TimeColumn, steps: TimeSteps): number[];
|
|
2016
|
+
/** The next (`1`) or previous (`-1`) value of a column's steps, wrapping around. */
|
|
2017
|
+
declare function nextUnitValue(column: TimeColumn, steps: TimeSteps, direction: 1 | -1): number;
|
|
2018
|
+
/** The time with one unit set (in the units shown: 1 to 12 with AM/PM). */
|
|
2019
|
+
declare function applyUnit(time: TimeOfDay, unit: TimeUnit, value: number, hour12: boolean): TimeOfDay;
|
|
2020
|
+
/** The value a key of a spinbutton jumps to (Page Up/Down, Home, End), or `null` for another key. */
|
|
2021
|
+
declare function jumpKeyTarget(key: string, column: TimeColumn, steps: TimeSteps): number | null;
|
|
2022
|
+
type HxDateTimePickerValue = Date | null;
|
|
2023
|
+
/**
|
|
2024
|
+
* A date and time field that opens a calendar with a time row under it (hour, minute, optionally second and AM/PM),
|
|
2025
|
+
* or with `[inline]="true"` the calendar and the time row alone. The value is one `Date`; clearing the field gives
|
|
2026
|
+
* `null`. Typing parses `10/09/2026, 14:30` or `10/09/2026 2:30 PM`.
|
|
2027
|
+
*
|
|
2028
|
+
* ```html
|
|
2029
|
+
* <hx-date-time-picker inputId="start" showIcon showButtonBar [stepMinute]="15" [(ngModel)]="start" />
|
|
2030
|
+
* <hx-date-time-picker inline ariaLabel="Start" [(value)]="start" />
|
|
2031
|
+
* ```
|
|
2032
|
+
*
|
|
2033
|
+
* It works with `ngModel`, reactive forms and signal forms (`[formField]`). Choosing a day keeps the time already set;
|
|
2034
|
+
* setting a time with no date takes today. `minDate` and `maxDate` are compared including the time. The popup is a
|
|
2035
|
+
* non-modal dialog that stays open until Escape, the focus leaves the control or a button of the button bar.
|
|
2036
|
+
*
|
|
2037
|
+
* Each time column is a `spinbutton`: Arrow Up and Down change it by the step, Page Up and Page Down by a larger step,
|
|
2038
|
+
* Home and End go to the first and last value. Keyboard in the day grid: arrows move by a day or a week, Home and End
|
|
2039
|
+
* to the start and end of the week, Page Up and Page Down by a month (with Shift by a year), Enter or Space selects.
|
|
2040
|
+
*/
|
|
2041
|
+
export declare class HxDateTimePicker implements ControlValueAccessor, FormValueControl<HxDateTimePickerValue> {
|
|
2042
|
+
#private;
|
|
2043
|
+
/** The text field's placeholder. */
|
|
2044
|
+
readonly placeholder: import("@angular/core").InputSignal<string>;
|
|
2045
|
+
/** A calendar button at the end of the field. */
|
|
2046
|
+
readonly showIcon: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
2047
|
+
/** Today and Clear buttons under the time row of the popup. */
|
|
2048
|
+
readonly showButtonBar: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
2049
|
+
/**
|
|
2050
|
+
* `Intl.DateTimeFormat` options of the text in the field. By default numeric, so a typed date parses back: day,
|
|
2051
|
+
* month and year, plus hour and minute (and second), with the `hourCycle` of `hourFormat`.
|
|
2052
|
+
*/
|
|
2053
|
+
readonly dateFormat: import("@angular/core").InputSignal<Intl.DateTimeFormatOptions | undefined>;
|
|
2054
|
+
readonly todayLabel: import("@angular/core").InputSignal<string>;
|
|
2055
|
+
readonly clearLabel: import("@angular/core").InputSignal<string>;
|
|
2056
|
+
readonly chooseLabel: import("@angular/core").InputSignal<string>;
|
|
2057
|
+
/** Accessible names of the time row and its columns. */
|
|
2058
|
+
readonly timeLabel: import("@angular/core").InputSignal<string>;
|
|
2059
|
+
readonly hourLabel: import("@angular/core").InputSignal<string>;
|
|
2060
|
+
readonly minuteLabel: import("@angular/core").InputSignal<string>;
|
|
2061
|
+
readonly secondLabel: import("@angular/core").InputSignal<string>;
|
|
2062
|
+
readonly periodLabel: import("@angular/core").InputSignal<string>;
|
|
2063
|
+
/** The `id` of the text field, for a `<label for>`. */
|
|
2064
|
+
readonly inputId: import("@angular/core").InputSignal<string | undefined>;
|
|
2065
|
+
/** `'12'` shows hours from 1 to 12 and an AM/PM column. */
|
|
2066
|
+
readonly hourFormat: import("@angular/core").InputSignal<"24" | "12">;
|
|
2067
|
+
/** A minutes column; `false` picks the hour only (minutes and seconds are `0`, `showSeconds` is ignored). */
|
|
2068
|
+
readonly showMinutes: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
2069
|
+
/** A seconds column. */
|
|
2070
|
+
readonly showSeconds: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
2071
|
+
/** Step of the arrow keys and buttons of the hour column. */
|
|
2072
|
+
readonly stepHour: import("@angular/core").InputSignalWithTransform<number, unknown>;
|
|
2073
|
+
/** Step of the minute column. */
|
|
2074
|
+
readonly stepMinute: import("@angular/core").InputSignalWithTransform<number, unknown>;
|
|
2075
|
+
/** Step of the second column. */
|
|
2076
|
+
readonly stepSecond: import("@angular/core").InputSignalWithTransform<number, unknown>;
|
|
2077
|
+
/** Shows the calendar and the time row in the page. */
|
|
2078
|
+
readonly inline: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
2079
|
+
/** The earliest and latest moment that can be chosen, compared including the time. */
|
|
2080
|
+
readonly minDate: import("@angular/core").InputSignal<Date | null>;
|
|
2081
|
+
readonly maxDate: import("@angular/core").InputSignal<Date | null>;
|
|
2082
|
+
/** Days that cannot be chosen. */
|
|
2083
|
+
readonly disabledDates: import("@angular/core").InputSignal<readonly Date[]>;
|
|
2084
|
+
/** `0` Sunday … `6` Saturday. */
|
|
2085
|
+
readonly firstDayOfWeek: import("@angular/core").InputSignalWithTransform<number, unknown>;
|
|
2086
|
+
/** A BCP 47 tag for the names (default: the browser's). */
|
|
2087
|
+
readonly locale: import("@angular/core").InputSignal<string | undefined>;
|
|
2088
|
+
readonly ariaLabel: import("@angular/core").InputSignal<string | undefined>;
|
|
2089
|
+
readonly ariaLabelledby: import("@angular/core").InputSignal<string | undefined>;
|
|
2090
|
+
readonly value: import("@angular/core").ModelSignal<HxDateTimePickerValue>;
|
|
2091
|
+
readonly disabled: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
2092
|
+
readonly invalid: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
2093
|
+
readonly touch: import("@angular/core").OutputEmitterRef<void>;
|
|
2094
|
+
readonly open: import("@angular/core").WritableSignal<boolean>;
|
|
2095
|
+
protected readonly titleId: string;
|
|
2096
|
+
protected readonly popupId: string;
|
|
2097
|
+
protected readonly positions: ConnectedPosition[];
|
|
2098
|
+
private readonly field;
|
|
2099
|
+
private readonly calendar;
|
|
2100
|
+
protected readonly view: import("@angular/core").WritableSignal<CalendarView>;
|
|
2101
|
+
protected readonly isDisabled: import("@angular/core").Signal<boolean>;
|
|
2102
|
+
/** The day with the focus in the grid, and the month the grid shows. */
|
|
2103
|
+
protected readonly focusedDate: import("@angular/core").WritableSignal<Date>;
|
|
2104
|
+
protected readonly today: Date;
|
|
2105
|
+
protected readonly selectedDate: import("@angular/core").Signal<Date | null>;
|
|
2106
|
+
protected readonly selectedDates: import("@angular/core").Signal<Date[]>;
|
|
2107
|
+
protected readonly hour12: import("@angular/core").Signal<boolean>;
|
|
2108
|
+
/** The time of day shown in the time row: the value's, or midnight while there is none. */
|
|
2109
|
+
protected readonly time: import("@angular/core").Signal<TimeOfDay>;
|
|
2110
|
+
protected readonly text: import("@angular/core").Signal<string>;
|
|
2111
|
+
constructor();
|
|
2112
|
+
writeValue(value: HxDateTimePickerValue): void;
|
|
2113
|
+
registerOnChange(fn: (value: HxDateTimePickerValue) => void): void;
|
|
2114
|
+
registerOnTouched(fn: () => void): void;
|
|
2115
|
+
setDisabledState(disabled: boolean): void;
|
|
2116
|
+
/** Focuses the text field, or the day of an inline calendar (signal forms call this to focus the control). */
|
|
2117
|
+
focus(): void;
|
|
2118
|
+
protected isDateDisabled(date: Date): boolean;
|
|
2119
|
+
/** Chooses a day, keeping the time; `false` when the day is not accepted. */
|
|
2120
|
+
protected pick(date: Date): boolean;
|
|
2121
|
+
/** The time row changed a unit: keep the day, or take today. */
|
|
2122
|
+
protected setTime(time: TimeOfDay): void;
|
|
2123
|
+
protected show(): void;
|
|
2124
|
+
protected toggle(): void;
|
|
2125
|
+
protected close(refocus?: boolean): void;
|
|
2126
|
+
protected onAttach(): void;
|
|
2127
|
+
protected onOverlayKeydown(event: KeyboardEvent): void;
|
|
2128
|
+
protected onOutsideClick(event: MouseEvent): void;
|
|
2129
|
+
protected onFieldKeydown(event: KeyboardEvent): void;
|
|
2130
|
+
protected onTyping(event: Event): void;
|
|
2131
|
+
/** Parses the typed text; an unreadable, disabled or out of range date and time puts the value back. */
|
|
2132
|
+
protected commitTyping(): void;
|
|
2133
|
+
protected selectToday(): void;
|
|
2134
|
+
protected clear(): void;
|
|
2135
|
+
protected onHostFocusOut(event: FocusEvent): void;
|
|
2136
|
+
/** The focus left the popup for something outside the control. */
|
|
2137
|
+
protected onPopupFocusOut(event: FocusEvent): void;
|
|
2138
|
+
/** The focus left an inline calendar and time row for something outside the control. */
|
|
2139
|
+
protected onInlineFocusOut(event: FocusEvent): void;
|
|
2140
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<HxDateTimePicker, never>;
|
|
2141
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<HxDateTimePicker, "hx-date-time-picker", never, {
|
|
2142
|
+
"placeholder": {
|
|
2143
|
+
"alias": "placeholder";
|
|
2144
|
+
"required": false;
|
|
2145
|
+
"isSignal": true;
|
|
2146
|
+
};
|
|
2147
|
+
"showIcon": {
|
|
2148
|
+
"alias": "showIcon";
|
|
2149
|
+
"required": false;
|
|
2150
|
+
"isSignal": true;
|
|
2151
|
+
};
|
|
2152
|
+
"showButtonBar": {
|
|
2153
|
+
"alias": "showButtonBar";
|
|
2154
|
+
"required": false;
|
|
2155
|
+
"isSignal": true;
|
|
2156
|
+
};
|
|
2157
|
+
"dateFormat": {
|
|
2158
|
+
"alias": "dateFormat";
|
|
2159
|
+
"required": false;
|
|
2160
|
+
"isSignal": true;
|
|
2161
|
+
};
|
|
2162
|
+
"todayLabel": {
|
|
2163
|
+
"alias": "todayLabel";
|
|
2164
|
+
"required": false;
|
|
2165
|
+
"isSignal": true;
|
|
2166
|
+
};
|
|
2167
|
+
"clearLabel": {
|
|
2168
|
+
"alias": "clearLabel";
|
|
2169
|
+
"required": false;
|
|
2170
|
+
"isSignal": true;
|
|
2171
|
+
};
|
|
2172
|
+
"chooseLabel": {
|
|
2173
|
+
"alias": "chooseLabel";
|
|
2174
|
+
"required": false;
|
|
2175
|
+
"isSignal": true;
|
|
2176
|
+
};
|
|
2177
|
+
"timeLabel": {
|
|
2178
|
+
"alias": "timeLabel";
|
|
2179
|
+
"required": false;
|
|
2180
|
+
"isSignal": true;
|
|
2181
|
+
};
|
|
2182
|
+
"hourLabel": {
|
|
2183
|
+
"alias": "hourLabel";
|
|
2184
|
+
"required": false;
|
|
2185
|
+
"isSignal": true;
|
|
2186
|
+
};
|
|
2187
|
+
"minuteLabel": {
|
|
2188
|
+
"alias": "minuteLabel";
|
|
2189
|
+
"required": false;
|
|
2190
|
+
"isSignal": true;
|
|
2191
|
+
};
|
|
2192
|
+
"secondLabel": {
|
|
2193
|
+
"alias": "secondLabel";
|
|
2194
|
+
"required": false;
|
|
2195
|
+
"isSignal": true;
|
|
2196
|
+
};
|
|
2197
|
+
"periodLabel": {
|
|
2198
|
+
"alias": "periodLabel";
|
|
2199
|
+
"required": false;
|
|
2200
|
+
"isSignal": true;
|
|
2201
|
+
};
|
|
2202
|
+
"inputId": {
|
|
2203
|
+
"alias": "inputId";
|
|
2204
|
+
"required": false;
|
|
2205
|
+
"isSignal": true;
|
|
2206
|
+
};
|
|
2207
|
+
"hourFormat": {
|
|
2208
|
+
"alias": "hourFormat";
|
|
2209
|
+
"required": false;
|
|
2210
|
+
"isSignal": true;
|
|
2211
|
+
};
|
|
2212
|
+
"showMinutes": {
|
|
2213
|
+
"alias": "showMinutes";
|
|
2214
|
+
"required": false;
|
|
2215
|
+
"isSignal": true;
|
|
2216
|
+
};
|
|
2217
|
+
"showSeconds": {
|
|
2218
|
+
"alias": "showSeconds";
|
|
2219
|
+
"required": false;
|
|
2220
|
+
"isSignal": true;
|
|
2221
|
+
};
|
|
2222
|
+
"stepHour": {
|
|
2223
|
+
"alias": "stepHour";
|
|
2224
|
+
"required": false;
|
|
2225
|
+
"isSignal": true;
|
|
2226
|
+
};
|
|
2227
|
+
"stepMinute": {
|
|
2228
|
+
"alias": "stepMinute";
|
|
2229
|
+
"required": false;
|
|
2230
|
+
"isSignal": true;
|
|
2231
|
+
};
|
|
2232
|
+
"stepSecond": {
|
|
2233
|
+
"alias": "stepSecond";
|
|
2234
|
+
"required": false;
|
|
2235
|
+
"isSignal": true;
|
|
2236
|
+
};
|
|
2237
|
+
"inline": {
|
|
2238
|
+
"alias": "inline";
|
|
2239
|
+
"required": false;
|
|
2240
|
+
"isSignal": true;
|
|
2241
|
+
};
|
|
2242
|
+
"minDate": {
|
|
2243
|
+
"alias": "minDate";
|
|
2244
|
+
"required": false;
|
|
2245
|
+
"isSignal": true;
|
|
2246
|
+
};
|
|
2247
|
+
"maxDate": {
|
|
2248
|
+
"alias": "maxDate";
|
|
2249
|
+
"required": false;
|
|
2250
|
+
"isSignal": true;
|
|
2251
|
+
};
|
|
2252
|
+
"disabledDates": {
|
|
2253
|
+
"alias": "disabledDates";
|
|
2254
|
+
"required": false;
|
|
2255
|
+
"isSignal": true;
|
|
2256
|
+
};
|
|
2257
|
+
"firstDayOfWeek": {
|
|
2258
|
+
"alias": "firstDayOfWeek";
|
|
2259
|
+
"required": false;
|
|
2260
|
+
"isSignal": true;
|
|
2261
|
+
};
|
|
2262
|
+
"locale": {
|
|
2263
|
+
"alias": "locale";
|
|
2264
|
+
"required": false;
|
|
2265
|
+
"isSignal": true;
|
|
2266
|
+
};
|
|
2267
|
+
"ariaLabel": {
|
|
2268
|
+
"alias": "ariaLabel";
|
|
2269
|
+
"required": false;
|
|
2270
|
+
"isSignal": true;
|
|
2271
|
+
};
|
|
2272
|
+
"ariaLabelledby": {
|
|
2273
|
+
"alias": "ariaLabelledby";
|
|
2274
|
+
"required": false;
|
|
2275
|
+
"isSignal": true;
|
|
2276
|
+
};
|
|
2277
|
+
"value": {
|
|
2278
|
+
"alias": "value";
|
|
2279
|
+
"required": false;
|
|
2280
|
+
"isSignal": true;
|
|
2281
|
+
};
|
|
2282
|
+
"disabled": {
|
|
2283
|
+
"alias": "disabled";
|
|
2284
|
+
"required": false;
|
|
2285
|
+
"isSignal": true;
|
|
2286
|
+
};
|
|
2287
|
+
"invalid": {
|
|
2288
|
+
"alias": "invalid";
|
|
2289
|
+
"required": false;
|
|
2290
|
+
"isSignal": true;
|
|
2291
|
+
};
|
|
2292
|
+
}, {
|
|
2293
|
+
"value": "valueChange";
|
|
2294
|
+
"touch": "touch";
|
|
2295
|
+
}, never, never, true, never>;
|
|
2296
|
+
}
|
|
2297
|
+
type HxTimePickerValue = Date | null;
|
|
2298
|
+
/**
|
|
2299
|
+
* A time field that opens a time row (hour, minute, optionally second and AM/PM), or with `[inline]="true"` the
|
|
2300
|
+
* time row alone. The value is a `Date` that is today at the chosen time; clearing the field gives `null`. Typing
|
|
2301
|
+
* parses `14:30`, `2:30 PM` and, with `[showMinutes]="false"`, `14`.
|
|
2302
|
+
*
|
|
2303
|
+
* ```html
|
|
2304
|
+
* <hx-time-picker inputId="alarm" hourFormat="12" showIcon [(ngModel)]="alarm" />
|
|
2305
|
+
* <hx-time-picker [showMinutes]="false" [(value)]="opens" />
|
|
2306
|
+
* <hx-time-picker inline [stepMinute]="15" ariaLabel="Start" [(value)]="start" />
|
|
2307
|
+
* ```
|
|
2308
|
+
*
|
|
2309
|
+
* It works with `ngModel`, reactive forms and signal forms (`[formField]`). Each column is a `spinbutton`: Arrow Up
|
|
2310
|
+
* and Down change it by the step, Page Up and Page Down by a larger step, Home and End go to the first and last
|
|
2311
|
+
* value. `minTime` and `maxTime` limit the time of day (only the time of the dates counts). The popup is a non-modal
|
|
2312
|
+
* dialog that stays open until Escape, the focus leaves the control or a button of the button bar.
|
|
2313
|
+
*/
|
|
2314
|
+
export declare class HxTimePicker implements ControlValueAccessor, FormValueControl<HxTimePickerValue> {
|
|
2315
|
+
#private;
|
|
2316
|
+
/** The text field's placeholder. */
|
|
2317
|
+
readonly placeholder: import("@angular/core").InputSignal<string>;
|
|
2318
|
+
/** A clock button at the end of the field. */
|
|
2319
|
+
readonly showIcon: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
2320
|
+
/** Now and Clear buttons under the time row of the popup. */
|
|
2321
|
+
readonly showButtonBar: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
2322
|
+
/** `Intl.DateTimeFormat` options of the text in the field (default: numeric hour, minute, second with the `hourCycle`). */
|
|
2323
|
+
readonly dateFormat: import("@angular/core").InputSignal<Intl.DateTimeFormatOptions | undefined>;
|
|
2324
|
+
readonly nowLabel: import("@angular/core").InputSignal<string>;
|
|
2325
|
+
readonly clearLabel: import("@angular/core").InputSignal<string>;
|
|
2326
|
+
readonly chooseLabel: import("@angular/core").InputSignal<string>;
|
|
2327
|
+
/** Accessible names of the time row and its columns. */
|
|
2328
|
+
readonly timeLabel: import("@angular/core").InputSignal<string>;
|
|
2329
|
+
readonly hourLabel: import("@angular/core").InputSignal<string>;
|
|
2330
|
+
readonly minuteLabel: import("@angular/core").InputSignal<string>;
|
|
2331
|
+
readonly secondLabel: import("@angular/core").InputSignal<string>;
|
|
2332
|
+
readonly periodLabel: import("@angular/core").InputSignal<string>;
|
|
2333
|
+
/** The `id` of the text field, for a `<label for>`. */
|
|
2334
|
+
readonly inputId: import("@angular/core").InputSignal<string | undefined>;
|
|
2335
|
+
/** `'12'` shows hours from 1 to 12 and an AM/PM column. */
|
|
2336
|
+
readonly hourFormat: import("@angular/core").InputSignal<"24" | "12">;
|
|
2337
|
+
/** A minutes column; `false` picks the hour only (minutes and seconds are `0`, `showSeconds` is ignored). */
|
|
2338
|
+
readonly showMinutes: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
2339
|
+
/** A seconds column. */
|
|
2340
|
+
readonly showSeconds: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
2341
|
+
readonly stepHour: import("@angular/core").InputSignalWithTransform<number, unknown>;
|
|
2342
|
+
readonly stepMinute: import("@angular/core").InputSignalWithTransform<number, unknown>;
|
|
2343
|
+
readonly stepSecond: import("@angular/core").InputSignalWithTransform<number, unknown>;
|
|
2344
|
+
/** The earliest and latest time of day; only the time of the dates counts. */
|
|
2345
|
+
readonly minTime: import("@angular/core").InputSignal<Date | null>;
|
|
2346
|
+
readonly maxTime: import("@angular/core").InputSignal<Date | null>;
|
|
2347
|
+
/** Shows the time row in the page. */
|
|
2348
|
+
readonly inline: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
2349
|
+
/** A BCP 47 tag for the format and the AM/PM names (default: the browser's). */
|
|
2350
|
+
readonly locale: import("@angular/core").InputSignal<string | undefined>;
|
|
2351
|
+
readonly ariaLabel: import("@angular/core").InputSignal<string | undefined>;
|
|
2352
|
+
readonly ariaLabelledby: import("@angular/core").InputSignal<string | undefined>;
|
|
2353
|
+
readonly value: import("@angular/core").ModelSignal<HxTimePickerValue>;
|
|
2354
|
+
readonly disabled: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
2355
|
+
readonly invalid: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
2356
|
+
readonly touch: import("@angular/core").OutputEmitterRef<void>;
|
|
2357
|
+
readonly open: import("@angular/core").WritableSignal<boolean>;
|
|
2358
|
+
protected readonly popupId: string;
|
|
2359
|
+
protected readonly positions: ConnectedPosition[];
|
|
2360
|
+
private readonly field;
|
|
2361
|
+
private readonly timeRow;
|
|
2362
|
+
protected readonly isDisabled: import("@angular/core").Signal<boolean>;
|
|
2363
|
+
protected readonly hour12: import("@angular/core").Signal<boolean>;
|
|
2364
|
+
/** The time of day shown in the time row: the value's, or midnight while there is none. */
|
|
2365
|
+
protected readonly time: import("@angular/core").Signal<TimeOfDay>;
|
|
2366
|
+
protected readonly text: import("@angular/core").Signal<string>;
|
|
2367
|
+
writeValue(value: HxTimePickerValue): void;
|
|
2368
|
+
registerOnChange(fn: (value: HxTimePickerValue) => void): void;
|
|
2369
|
+
registerOnTouched(fn: () => void): void;
|
|
2370
|
+
setDisabledState(disabled: boolean): void;
|
|
2371
|
+
/** Focuses the text field, or the first column of an inline time row (signal forms call this to focus the control). */
|
|
2372
|
+
focus(): void;
|
|
2373
|
+
/** The time row changed a unit: today at that time. */
|
|
2374
|
+
protected setTime(time: TimeOfDay): void;
|
|
2375
|
+
protected show(): void;
|
|
2376
|
+
protected toggle(): void;
|
|
2377
|
+
protected close(refocus?: boolean): void;
|
|
2378
|
+
protected onAttach(): void;
|
|
2379
|
+
protected onOverlayKeydown(event: KeyboardEvent): void;
|
|
2380
|
+
protected onOutsideClick(event: MouseEvent): void;
|
|
2381
|
+
protected onFieldKeydown(event: KeyboardEvent): void;
|
|
2382
|
+
protected onTyping(event: Event): void;
|
|
2383
|
+
/** Parses the typed text; an unreadable time or one outside `minTime`..`maxTime` puts the value back. */
|
|
2384
|
+
protected commitTyping(): void;
|
|
2385
|
+
protected selectNow(): void;
|
|
2386
|
+
protected clear(): void;
|
|
2387
|
+
protected onHostFocusOut(event: FocusEvent): void;
|
|
2388
|
+
/** The focus left an inline time row for something outside the control. */
|
|
2389
|
+
protected onInlineFocusOut(event: FocusEvent): void;
|
|
2390
|
+
/** The focus left the popup for something outside the control. */
|
|
2391
|
+
protected onPopupFocusOut(event: FocusEvent): void;
|
|
2392
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<HxTimePicker, never>;
|
|
2393
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<HxTimePicker, "hx-time-picker", never, {
|
|
2394
|
+
"placeholder": {
|
|
2395
|
+
"alias": "placeholder";
|
|
2396
|
+
"required": false;
|
|
2397
|
+
"isSignal": true;
|
|
2398
|
+
};
|
|
2399
|
+
"showIcon": {
|
|
2400
|
+
"alias": "showIcon";
|
|
1656
2401
|
"required": false;
|
|
1657
2402
|
"isSignal": true;
|
|
1658
2403
|
};
|
|
1659
|
-
"
|
|
1660
|
-
"alias": "
|
|
2404
|
+
"showButtonBar": {
|
|
2405
|
+
"alias": "showButtonBar";
|
|
1661
2406
|
"required": false;
|
|
1662
2407
|
"isSignal": true;
|
|
1663
2408
|
};
|
|
1664
|
-
"
|
|
1665
|
-
"alias": "
|
|
2409
|
+
"dateFormat": {
|
|
2410
|
+
"alias": "dateFormat";
|
|
1666
2411
|
"required": false;
|
|
1667
2412
|
"isSignal": true;
|
|
1668
2413
|
};
|
|
1669
|
-
"
|
|
1670
|
-
"alias": "
|
|
2414
|
+
"nowLabel": {
|
|
2415
|
+
"alias": "nowLabel";
|
|
1671
2416
|
"required": false;
|
|
1672
2417
|
"isSignal": true;
|
|
1673
2418
|
};
|
|
1674
|
-
"
|
|
1675
|
-
"alias": "
|
|
2419
|
+
"clearLabel": {
|
|
2420
|
+
"alias": "clearLabel";
|
|
1676
2421
|
"required": false;
|
|
1677
2422
|
"isSignal": true;
|
|
1678
2423
|
};
|
|
1679
|
-
"
|
|
1680
|
-
"alias": "
|
|
2424
|
+
"chooseLabel": {
|
|
2425
|
+
"alias": "chooseLabel";
|
|
1681
2426
|
"required": false;
|
|
1682
2427
|
"isSignal": true;
|
|
1683
2428
|
};
|
|
1684
|
-
"
|
|
1685
|
-
"alias": "
|
|
2429
|
+
"timeLabel": {
|
|
2430
|
+
"alias": "timeLabel";
|
|
1686
2431
|
"required": false;
|
|
1687
2432
|
"isSignal": true;
|
|
1688
2433
|
};
|
|
1689
|
-
"
|
|
1690
|
-
"alias": "
|
|
2434
|
+
"hourLabel": {
|
|
2435
|
+
"alias": "hourLabel";
|
|
1691
2436
|
"required": false;
|
|
1692
2437
|
"isSignal": true;
|
|
1693
2438
|
};
|
|
1694
|
-
"
|
|
1695
|
-
"alias": "
|
|
2439
|
+
"minuteLabel": {
|
|
2440
|
+
"alias": "minuteLabel";
|
|
1696
2441
|
"required": false;
|
|
1697
2442
|
"isSignal": true;
|
|
1698
2443
|
};
|
|
1699
|
-
"
|
|
1700
|
-
"alias": "
|
|
2444
|
+
"secondLabel": {
|
|
2445
|
+
"alias": "secondLabel";
|
|
1701
2446
|
"required": false;
|
|
1702
2447
|
"isSignal": true;
|
|
1703
2448
|
};
|
|
1704
|
-
"
|
|
1705
|
-
"alias": "
|
|
2449
|
+
"periodLabel": {
|
|
2450
|
+
"alias": "periodLabel";
|
|
1706
2451
|
"required": false;
|
|
1707
2452
|
"isSignal": true;
|
|
1708
2453
|
};
|
|
1709
|
-
"
|
|
1710
|
-
"alias": "
|
|
2454
|
+
"inputId": {
|
|
2455
|
+
"alias": "inputId";
|
|
1711
2456
|
"required": false;
|
|
1712
2457
|
"isSignal": true;
|
|
1713
2458
|
};
|
|
1714
|
-
"
|
|
1715
|
-
"alias": "
|
|
2459
|
+
"hourFormat": {
|
|
2460
|
+
"alias": "hourFormat";
|
|
1716
2461
|
"required": false;
|
|
1717
2462
|
"isSignal": true;
|
|
1718
2463
|
};
|
|
1719
|
-
"
|
|
1720
|
-
"alias": "
|
|
2464
|
+
"showMinutes": {
|
|
2465
|
+
"alias": "showMinutes";
|
|
1721
2466
|
"required": false;
|
|
1722
2467
|
"isSignal": true;
|
|
1723
2468
|
};
|
|
1724
|
-
"
|
|
1725
|
-
"alias": "
|
|
2469
|
+
"showSeconds": {
|
|
2470
|
+
"alias": "showSeconds";
|
|
1726
2471
|
"required": false;
|
|
1727
2472
|
"isSignal": true;
|
|
1728
2473
|
};
|
|
1729
|
-
"
|
|
1730
|
-
"alias": "
|
|
2474
|
+
"stepHour": {
|
|
2475
|
+
"alias": "stepHour";
|
|
1731
2476
|
"required": false;
|
|
1732
2477
|
"isSignal": true;
|
|
1733
2478
|
};
|
|
1734
|
-
"
|
|
1735
|
-
"alias": "
|
|
2479
|
+
"stepMinute": {
|
|
2480
|
+
"alias": "stepMinute";
|
|
1736
2481
|
"required": false;
|
|
1737
2482
|
"isSignal": true;
|
|
1738
2483
|
};
|
|
1739
|
-
"
|
|
1740
|
-
"alias": "
|
|
2484
|
+
"stepSecond": {
|
|
2485
|
+
"alias": "stepSecond";
|
|
1741
2486
|
"required": false;
|
|
1742
2487
|
"isSignal": true;
|
|
1743
2488
|
};
|
|
1744
|
-
"
|
|
1745
|
-
"alias": "
|
|
2489
|
+
"minTime": {
|
|
2490
|
+
"alias": "minTime";
|
|
1746
2491
|
"required": false;
|
|
1747
2492
|
"isSignal": true;
|
|
1748
2493
|
};
|
|
1749
|
-
"
|
|
1750
|
-
"alias": "
|
|
2494
|
+
"maxTime": {
|
|
2495
|
+
"alias": "maxTime";
|
|
1751
2496
|
"required": false;
|
|
1752
2497
|
"isSignal": true;
|
|
1753
2498
|
};
|
|
1754
|
-
"
|
|
1755
|
-
"alias": "
|
|
2499
|
+
"inline": {
|
|
2500
|
+
"alias": "inline";
|
|
1756
2501
|
"required": false;
|
|
1757
2502
|
"isSignal": true;
|
|
1758
2503
|
};
|
|
1759
|
-
"
|
|
1760
|
-
"alias": "
|
|
2504
|
+
"locale": {
|
|
2505
|
+
"alias": "locale";
|
|
1761
2506
|
"required": false;
|
|
1762
2507
|
"isSignal": true;
|
|
1763
2508
|
};
|
|
1764
|
-
"
|
|
1765
|
-
"alias": "
|
|
2509
|
+
"ariaLabel": {
|
|
2510
|
+
"alias": "ariaLabel";
|
|
1766
2511
|
"required": false;
|
|
1767
2512
|
"isSignal": true;
|
|
1768
2513
|
};
|
|
1769
|
-
"
|
|
1770
|
-
"alias": "
|
|
2514
|
+
"ariaLabelledby": {
|
|
2515
|
+
"alias": "ariaLabelledby";
|
|
1771
2516
|
"required": false;
|
|
1772
2517
|
"isSignal": true;
|
|
1773
2518
|
};
|
|
1774
|
-
"
|
|
1775
|
-
"alias": "
|
|
2519
|
+
"value": {
|
|
2520
|
+
"alias": "value";
|
|
1776
2521
|
"required": false;
|
|
1777
2522
|
"isSignal": true;
|
|
1778
2523
|
};
|
|
1779
|
-
"
|
|
1780
|
-
"alias": "
|
|
2524
|
+
"disabled": {
|
|
2525
|
+
"alias": "disabled";
|
|
1781
2526
|
"required": false;
|
|
1782
2527
|
"isSignal": true;
|
|
1783
2528
|
};
|
|
1784
|
-
"
|
|
1785
|
-
"alias": "
|
|
2529
|
+
"invalid": {
|
|
2530
|
+
"alias": "invalid";
|
|
1786
2531
|
"required": false;
|
|
1787
2532
|
"isSignal": true;
|
|
1788
2533
|
};
|
|
1789
2534
|
}, {
|
|
1790
|
-
"
|
|
1791
|
-
"
|
|
1792
|
-
|
|
1793
|
-
|
|
1794
|
-
|
|
1795
|
-
|
|
1796
|
-
|
|
1797
|
-
|
|
1798
|
-
|
|
1799
|
-
|
|
2535
|
+
"value": "valueChange";
|
|
2536
|
+
"touch": "touch";
|
|
2537
|
+
}, never, never, true, never>;
|
|
2538
|
+
}
|
|
2539
|
+
interface HxDateTimeRangeValue {
|
|
2540
|
+
from: Date | null;
|
|
2541
|
+
to: Date | null;
|
|
2542
|
+
}
|
|
2543
|
+
/** A relative range in the popup's preset list; `from` and `to` are read when it is chosen (`now` stays current). */
|
|
2544
|
+
interface HxDateTimeRangePreset {
|
|
2545
|
+
label: string;
|
|
2546
|
+
from: () => Date;
|
|
2547
|
+
to: () => Date;
|
|
1800
2548
|
}
|
|
1801
|
-
type HxDatePickerSelectionMode = 'single' | 'range' | 'multiple';
|
|
1802
|
-
type HxDatePickerValue = Date | Date[] | null;
|
|
1803
|
-
type CalendarView = 'day' | 'month' | 'year';
|
|
1804
2549
|
/**
|
|
1805
|
-
* A
|
|
1806
|
-
*
|
|
2550
|
+
* A from and a to date-time range in one field with one button. The field shows the range as one text
|
|
2551
|
+
* (`1/1/2026 00:00 - 1/2/2026 00:15`); the popup holds one calendar (an inline range `hx-date-picker`) and a time picker for each end,
|
|
2552
|
+
* from and to. The value is `{ from, to }` (`null` while a side is empty); `to` is never before `from`: the `to`
|
|
2553
|
+
* time picker starts at `from` (including the time), the `from` time picker ends at `to`, and a choice that crosses the
|
|
2554
|
+
* other side moves it. The field is read-only unless `typeable`, which lets the range be typed in the field's
|
|
2555
|
+
* format (Enter or leaving the field commits it, an unreadable range puts the value back); the popup stays open
|
|
2556
|
+
* until Escape, an outside click or the focus leaving it.
|
|
1807
2557
|
*
|
|
1808
2558
|
* ```html
|
|
1809
|
-
* <hx-date-picker
|
|
1810
|
-
* <hx-date-picker
|
|
1811
|
-
* <hx-date-picker inline selectionMode="range" [minDate]="today" [firstDayOfWeek]="1" [(value)]="stay" />
|
|
2559
|
+
* <hx-date-time-range-picker [stepMinute]="15" [(ngModel)]="shift" />
|
|
2560
|
+
* <hx-date-time-range-picker timeOnly [showMinutes]="false" [(value)]="opening" />
|
|
1812
2561
|
* ```
|
|
1813
2562
|
*
|
|
1814
|
-
*
|
|
1815
|
-
*
|
|
1816
|
-
*
|
|
1817
|
-
* The field shows the value formatted with `Intl.DateTimeFormat` (`dateFormat` options, numeric by default so a
|
|
1818
|
-
* typed date parses back). The popup is a non-modal dialog: focus moves to the selected or today's day and returns
|
|
1819
|
-
* to the field on close; a range keeps it open until the second date.
|
|
1820
|
-
*
|
|
1821
|
-
* Keyboard in the day grid: arrows move by a day or a week, Home and End to the start and end of the week,
|
|
1822
|
-
* Page Up and Page Down by a month (with Shift by a year), Enter or Space selects.
|
|
2563
|
+
* It works with `ngModel`, reactive forms and signal forms (`[formField]`). The time options are those of
|
|
2564
|
+
* `hx-time-picker`. The popup is a dialog named by `ariaLabel` / `ariaLabelledby`; its time pickers are named
|
|
2565
|
+
* `fromLabel` / `toLabel`.
|
|
1823
2566
|
*/
|
|
1824
|
-
export declare class
|
|
2567
|
+
export declare class HxDateTimeRangePicker implements ControlValueAccessor, FormValueControl<HxDateTimeRangeValue> {
|
|
1825
2568
|
#private;
|
|
1826
|
-
/** The
|
|
2569
|
+
/** The names of the two time pickers in the popup. */
|
|
2570
|
+
readonly fromLabel: import("@angular/core").InputSignal<string>;
|
|
2571
|
+
readonly toLabel: import("@angular/core").InputSignal<string>;
|
|
2572
|
+
/** The text between the two dates in the field. */
|
|
2573
|
+
readonly separator: import("@angular/core").InputSignal<string>;
|
|
1827
2574
|
readonly placeholder: import("@angular/core").InputSignal<string>;
|
|
1828
|
-
/**
|
|
1829
|
-
readonly
|
|
1830
|
-
/**
|
|
1831
|
-
readonly
|
|
1832
|
-
/** `Intl.DateTimeFormat` options of the text in the field (numeric by default, so a typed date parses back). */
|
|
1833
|
-
readonly dateFormat: import("@angular/core").InputSignal<Intl.DateTimeFormatOptions>;
|
|
1834
|
-
readonly todayLabel: import("@angular/core").InputSignal<string>;
|
|
2575
|
+
/** The name of the group of preset buttons. */
|
|
2576
|
+
readonly presetsLabel: import("@angular/core").InputSignal<string>;
|
|
2577
|
+
/** Ready-made ranges listed in the popup; choosing one fills the draft, Submit applies it. */
|
|
2578
|
+
readonly presets: import("@angular/core").InputSignal<readonly HxDateTimeRangePreset[]>;
|
|
1835
2579
|
readonly clearLabel: import("@angular/core").InputSignal<string>;
|
|
2580
|
+
readonly cancelLabel: import("@angular/core").InputSignal<string>;
|
|
2581
|
+
readonly submitLabel: import("@angular/core").InputSignal<string>;
|
|
1836
2582
|
readonly chooseLabel: import("@angular/core").InputSignal<string>;
|
|
1837
2583
|
/** The `id` of the text field, for a `<label for>`. */
|
|
1838
2584
|
readonly inputId: import("@angular/core").InputSignal<string | undefined>;
|
|
1839
|
-
/**
|
|
1840
|
-
readonly
|
|
1841
|
-
|
|
1842
|
-
|
|
2585
|
+
/** The range can be typed into the field (`from separator to`); otherwise the field is read-only. */
|
|
2586
|
+
readonly typeable: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
2587
|
+
/** The time picker options, for both ends. */
|
|
2588
|
+
readonly showTime: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
2589
|
+
readonly timeOnly: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
2590
|
+
readonly hourFormat: import("@angular/core").InputSignal<"24" | "12">;
|
|
2591
|
+
readonly showMinutes: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
2592
|
+
readonly showSeconds: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
2593
|
+
readonly stepHour: import("@angular/core").InputSignalWithTransform<number, unknown>;
|
|
2594
|
+
readonly stepMinute: import("@angular/core").InputSignalWithTransform<number, unknown>;
|
|
2595
|
+
readonly stepSecond: import("@angular/core").InputSignalWithTransform<number, unknown>;
|
|
2596
|
+
readonly dateFormat: import("@angular/core").InputSignal<Intl.DateTimeFormatOptions | undefined>;
|
|
2597
|
+
readonly locale: import("@angular/core").InputSignal<string | undefined>;
|
|
2598
|
+
readonly firstDayOfWeek: import("@angular/core").InputSignalWithTransform<number, unknown>;
|
|
1843
2599
|
readonly minDate: import("@angular/core").InputSignal<Date | null>;
|
|
1844
2600
|
readonly maxDate: import("@angular/core").InputSignal<Date | null>;
|
|
1845
|
-
/** Days that cannot be chosen. */
|
|
1846
2601
|
readonly disabledDates: import("@angular/core").InputSignal<readonly Date[]>;
|
|
1847
|
-
/**
|
|
1848
|
-
readonly
|
|
1849
|
-
/** A BCP 47 tag for the names (default: the browser's). */
|
|
1850
|
-
readonly locale: import("@angular/core").InputSignal<string | undefined>;
|
|
2602
|
+
/** A Clear button next to Cancel and Submit. */
|
|
2603
|
+
readonly showButtonBar: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
1851
2604
|
readonly ariaLabel: import("@angular/core").InputSignal<string | undefined>;
|
|
1852
2605
|
readonly ariaLabelledby: import("@angular/core").InputSignal<string | undefined>;
|
|
1853
|
-
readonly value: import("@angular/core").ModelSignal<
|
|
2606
|
+
readonly value: import("@angular/core").ModelSignal<HxDateTimeRangeValue>;
|
|
1854
2607
|
readonly disabled: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
1855
2608
|
readonly invalid: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
1856
2609
|
readonly touch: import("@angular/core").OutputEmitterRef<void>;
|
|
1857
2610
|
readonly open: import("@angular/core").WritableSignal<boolean>;
|
|
1858
|
-
|
|
2611
|
+
/** The range being edited in the popup; Submit makes it the value, Cancel drops it. */
|
|
2612
|
+
protected readonly draft: import("@angular/core").WritableSignal<HxDateTimeRangeValue>;
|
|
1859
2613
|
protected readonly popupId: string;
|
|
1860
2614
|
protected readonly positions: ConnectedPosition[];
|
|
1861
2615
|
private readonly field;
|
|
1862
|
-
|
|
1863
|
-
|
|
1864
|
-
/**
|
|
1865
|
-
protected readonly focusedDate: import("@angular/core").WritableSignal<Date>;
|
|
1866
|
-
protected readonly viewYear: import("@angular/core").Signal<number>;
|
|
1867
|
-
protected readonly selectedDates: import("@angular/core").Signal<Date[]>;
|
|
2616
|
+
private readonly daysPicker;
|
|
2617
|
+
private readonly timePicker;
|
|
2618
|
+
/** `1/1/2026 00:00 - 1/2/2026 00:15`: the date and the time are separated by a space, not a comma. */
|
|
1868
2619
|
protected readonly text: import("@angular/core").Signal<string>;
|
|
1869
|
-
protected readonly
|
|
1870
|
-
|
|
1871
|
-
protected readonly
|
|
1872
|
-
|
|
1873
|
-
|
|
1874
|
-
|
|
1875
|
-
protected readonly
|
|
1876
|
-
protected readonly decade: import("@angular/core").Signal<number[]>;
|
|
2620
|
+
protected readonly isDisabled: import("@angular/core").Signal<boolean>;
|
|
2621
|
+
/** `from` ends at `to`, `to` starts at `from`, each inside `minDate`..`maxDate`. */
|
|
2622
|
+
protected readonly fromMax: import("@angular/core").Signal<Date | null>;
|
|
2623
|
+
protected readonly toMin: import("@angular/core").Signal<Date | null>;
|
|
2624
|
+
/** The values of the two time pickers: a fresh `Date` per draft change (midnight while a side is empty). */
|
|
2625
|
+
protected readonly fromValue: import("@angular/core").Signal<HxTimePickerValue>;
|
|
2626
|
+
protected readonly toValue: import("@angular/core").Signal<HxTimePickerValue>;
|
|
1877
2627
|
constructor();
|
|
1878
|
-
writeValue(value:
|
|
1879
|
-
registerOnChange(fn: (value:
|
|
2628
|
+
writeValue(value: HxDateTimeRangeValue | null): void;
|
|
2629
|
+
registerOnChange(fn: (value: HxDateTimeRangeValue) => void): void;
|
|
1880
2630
|
registerOnTouched(fn: () => void): void;
|
|
1881
2631
|
setDisabledState(disabled: boolean): void;
|
|
1882
|
-
/** Focuses the text field
|
|
2632
|
+
/** Focuses the text field (signal forms call this to focus the control). */
|
|
1883
2633
|
focus(): void;
|
|
1884
|
-
protected dateKey(date: Date): string;
|
|
1885
|
-
protected dayLabel(date: Date): string;
|
|
1886
|
-
protected isToday(date: Date): boolean;
|
|
1887
|
-
protected isSelected(date: Date): boolean;
|
|
1888
|
-
protected isInRange(date: Date): boolean;
|
|
1889
|
-
protected isDateDisabled(date: Date): boolean;
|
|
1890
|
-
/** One day of the grid takes the tab stop: the focused day, or the first day when the focus is elsewhere. */
|
|
1891
|
-
protected isFocusTarget(date: Date): boolean;
|
|
1892
|
-
protected step(direction: 1 | -1): void;
|
|
1893
|
-
protected chooseMonth(month: number): void;
|
|
1894
|
-
protected chooseYear(year: number): void;
|
|
1895
|
-
protected pick(date: Date): void;
|
|
1896
|
-
protected onDayKeydown(event: KeyboardEvent, date: Date): void;
|
|
1897
2634
|
protected show(): void;
|
|
1898
2635
|
protected toggle(): void;
|
|
1899
2636
|
protected close(refocus?: boolean): void;
|
|
1900
2637
|
protected onAttach(): void;
|
|
1901
|
-
|
|
1902
|
-
protected
|
|
2638
|
+
/** A typeable field opens with the button, Arrow Down or Alt+Arrow Up (click, Enter and Space are for typing). */
|
|
2639
|
+
protected onFieldClick(): void;
|
|
1903
2640
|
protected onFieldKeydown(event: KeyboardEvent): void;
|
|
1904
2641
|
protected onTyping(event: Event): void;
|
|
1905
|
-
/** Parses the typed
|
|
2642
|
+
/** Parses the typed range; an unreadable side, a disabled day or a time outside the limits puts the value back. */
|
|
1906
2643
|
protected commitTyping(): void;
|
|
1907
|
-
protected
|
|
2644
|
+
protected onOverlayKeydown(event: KeyboardEvent): void;
|
|
2645
|
+
protected onOutsideClick(event: MouseEvent): void;
|
|
1908
2646
|
protected clear(): void;
|
|
2647
|
+
/** Puts a preset into the draft (the calendar and the time pickers show it); Submit commits it. */
|
|
2648
|
+
protected applyPreset(preset: HxDateTimeRangePreset): void;
|
|
2649
|
+
protected submit(): void;
|
|
2650
|
+
/** The focus left the control (field, button and popup): the popup closes and the control is touched. */
|
|
1909
2651
|
protected onHostFocusOut(event: FocusEvent): void;
|
|
1910
|
-
protected
|
|
1911
|
-
|
|
1912
|
-
|
|
1913
|
-
|
|
1914
|
-
|
|
2652
|
+
protected onPopupFocusOut(event: FocusEvent): void;
|
|
2653
|
+
/** The days of the calendar: `[from]` while the range is open, `[from, to]` when complete. */
|
|
2654
|
+
protected readonly days: import("@angular/core").Signal<Date[]>;
|
|
2655
|
+
/** A choice in the calendar sets the days and keeps the times already chosen (midnight while there is none). */
|
|
2656
|
+
protected setDays(picked: HxDatePickerValue): void;
|
|
2657
|
+
/** The `from` picker changed: the day of `from` (else of `to`, else today) at the new time, not after `to`. */
|
|
2658
|
+
protected setFromTime(picked: HxTimePickerValue): void;
|
|
2659
|
+
/** The `to` picker changed: the day of `to` (else of `from`, else today) at the new time, not before `from`. */
|
|
2660
|
+
protected setToTime(picked: HxTimePickerValue): void;
|
|
2661
|
+
protected markTouched(): void;
|
|
2662
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<HxDateTimeRangePicker, never>;
|
|
2663
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<HxDateTimeRangePicker, "hx-date-time-range-picker", never, {
|
|
2664
|
+
"fromLabel": {
|
|
2665
|
+
"alias": "fromLabel";
|
|
1915
2666
|
"required": false;
|
|
1916
2667
|
"isSignal": true;
|
|
1917
2668
|
};
|
|
1918
|
-
"
|
|
1919
|
-
"alias": "
|
|
2669
|
+
"toLabel": {
|
|
2670
|
+
"alias": "toLabel";
|
|
1920
2671
|
"required": false;
|
|
1921
2672
|
"isSignal": true;
|
|
1922
2673
|
};
|
|
1923
|
-
"
|
|
1924
|
-
"alias": "
|
|
2674
|
+
"separator": {
|
|
2675
|
+
"alias": "separator";
|
|
1925
2676
|
"required": false;
|
|
1926
2677
|
"isSignal": true;
|
|
1927
2678
|
};
|
|
1928
|
-
"
|
|
1929
|
-
"alias": "
|
|
2679
|
+
"placeholder": {
|
|
2680
|
+
"alias": "placeholder";
|
|
1930
2681
|
"required": false;
|
|
1931
2682
|
"isSignal": true;
|
|
1932
2683
|
};
|
|
1933
|
-
"
|
|
1934
|
-
"alias": "
|
|
2684
|
+
"presetsLabel": {
|
|
2685
|
+
"alias": "presetsLabel";
|
|
2686
|
+
"required": false;
|
|
2687
|
+
"isSignal": true;
|
|
2688
|
+
};
|
|
2689
|
+
"presets": {
|
|
2690
|
+
"alias": "presets";
|
|
1935
2691
|
"required": false;
|
|
1936
2692
|
"isSignal": true;
|
|
1937
2693
|
};
|
|
@@ -1940,6 +2696,16 @@ export declare class HxDatePicker implements ControlValueAccessor, FormValueCont
|
|
|
1940
2696
|
"required": false;
|
|
1941
2697
|
"isSignal": true;
|
|
1942
2698
|
};
|
|
2699
|
+
"cancelLabel": {
|
|
2700
|
+
"alias": "cancelLabel";
|
|
2701
|
+
"required": false;
|
|
2702
|
+
"isSignal": true;
|
|
2703
|
+
};
|
|
2704
|
+
"submitLabel": {
|
|
2705
|
+
"alias": "submitLabel";
|
|
2706
|
+
"required": false;
|
|
2707
|
+
"isSignal": true;
|
|
2708
|
+
};
|
|
1943
2709
|
"chooseLabel": {
|
|
1944
2710
|
"alias": "chooseLabel";
|
|
1945
2711
|
"required": false;
|
|
@@ -1950,13 +2716,63 @@ export declare class HxDatePicker implements ControlValueAccessor, FormValueCont
|
|
|
1950
2716
|
"required": false;
|
|
1951
2717
|
"isSignal": true;
|
|
1952
2718
|
};
|
|
1953
|
-
"
|
|
1954
|
-
"alias": "
|
|
2719
|
+
"typeable": {
|
|
2720
|
+
"alias": "typeable";
|
|
1955
2721
|
"required": false;
|
|
1956
2722
|
"isSignal": true;
|
|
1957
2723
|
};
|
|
1958
|
-
"
|
|
1959
|
-
"alias": "
|
|
2724
|
+
"showTime": {
|
|
2725
|
+
"alias": "showTime";
|
|
2726
|
+
"required": false;
|
|
2727
|
+
"isSignal": true;
|
|
2728
|
+
};
|
|
2729
|
+
"timeOnly": {
|
|
2730
|
+
"alias": "timeOnly";
|
|
2731
|
+
"required": false;
|
|
2732
|
+
"isSignal": true;
|
|
2733
|
+
};
|
|
2734
|
+
"hourFormat": {
|
|
2735
|
+
"alias": "hourFormat";
|
|
2736
|
+
"required": false;
|
|
2737
|
+
"isSignal": true;
|
|
2738
|
+
};
|
|
2739
|
+
"showMinutes": {
|
|
2740
|
+
"alias": "showMinutes";
|
|
2741
|
+
"required": false;
|
|
2742
|
+
"isSignal": true;
|
|
2743
|
+
};
|
|
2744
|
+
"showSeconds": {
|
|
2745
|
+
"alias": "showSeconds";
|
|
2746
|
+
"required": false;
|
|
2747
|
+
"isSignal": true;
|
|
2748
|
+
};
|
|
2749
|
+
"stepHour": {
|
|
2750
|
+
"alias": "stepHour";
|
|
2751
|
+
"required": false;
|
|
2752
|
+
"isSignal": true;
|
|
2753
|
+
};
|
|
2754
|
+
"stepMinute": {
|
|
2755
|
+
"alias": "stepMinute";
|
|
2756
|
+
"required": false;
|
|
2757
|
+
"isSignal": true;
|
|
2758
|
+
};
|
|
2759
|
+
"stepSecond": {
|
|
2760
|
+
"alias": "stepSecond";
|
|
2761
|
+
"required": false;
|
|
2762
|
+
"isSignal": true;
|
|
2763
|
+
};
|
|
2764
|
+
"dateFormat": {
|
|
2765
|
+
"alias": "dateFormat";
|
|
2766
|
+
"required": false;
|
|
2767
|
+
"isSignal": true;
|
|
2768
|
+
};
|
|
2769
|
+
"locale": {
|
|
2770
|
+
"alias": "locale";
|
|
2771
|
+
"required": false;
|
|
2772
|
+
"isSignal": true;
|
|
2773
|
+
};
|
|
2774
|
+
"firstDayOfWeek": {
|
|
2775
|
+
"alias": "firstDayOfWeek";
|
|
1960
2776
|
"required": false;
|
|
1961
2777
|
"isSignal": true;
|
|
1962
2778
|
};
|
|
@@ -1975,13 +2791,8 @@ export declare class HxDatePicker implements ControlValueAccessor, FormValueCont
|
|
|
1975
2791
|
"required": false;
|
|
1976
2792
|
"isSignal": true;
|
|
1977
2793
|
};
|
|
1978
|
-
"
|
|
1979
|
-
"alias": "
|
|
1980
|
-
"required": false;
|
|
1981
|
-
"isSignal": true;
|
|
1982
|
-
};
|
|
1983
|
-
"locale": {
|
|
1984
|
-
"alias": "locale";
|
|
2794
|
+
"showButtonBar": {
|
|
2795
|
+
"alias": "showButtonBar";
|
|
1985
2796
|
"required": false;
|
|
1986
2797
|
"isSignal": true;
|
|
1987
2798
|
};
|
|
@@ -5314,6 +6125,11 @@ interface HxThemeOptions {
|
|
|
5314
6125
|
* `tokens.css`) or an attribute (`[data-theme="dark"]`).
|
|
5315
6126
|
*/
|
|
5316
6127
|
darkSelector?: string;
|
|
6128
|
+
/**
|
|
6129
|
+
* `false`: the host app owns the dark class/attribute (e.g. from `prefers-color-scheme`), HxTheme never writes it
|
|
6130
|
+
* to `<html>`. `dark()` still follows `setDark()` for the colour overrides. Default `true`.
|
|
6131
|
+
*/
|
|
6132
|
+
manageDark?: boolean;
|
|
5317
6133
|
/** Where the choice is remembered (localStorage). `null` (the default) remembers nothing. */
|
|
5318
6134
|
storageKey?: string | null;
|
|
5319
6135
|
/** Dark mode when nothing is remembered; by default the system setting (`prefers-color-scheme`). */
|
|
@@ -5881,4 +6697,4 @@ export declare class HxTree {
|
|
|
5881
6697
|
"nodeCollapse": "nodeCollapse";
|
|
5882
6698
|
}, ["template"], never, true, never>;
|
|
5883
6699
|
}
|
|
5884
|
-
export type { HxAccordionValue, HxAutoCompleteEvent, HxAutoCompleteSize, HxAvatarShape, HxAvatarSize, HxBadgeSeverity, HxBadgeSize, HxBreadcrumbItem, HxButtonSeverity, HxButtonSize, HxButtonVariant, HxCarouselItemContext, HxCarouselOrientation, HxCarouselResponsiveOption, HxCellContext,
|
|
6700
|
+
export type { HxAccordionValue, HxAutoCompleteEvent, HxAutoCompleteSize, HxAvatarShape, HxAvatarSize, HxBadgeSeverity, HxBadgeSize, HxBreadcrumbItem, HxButtonSeverity, HxButtonSize, HxButtonVariant, HxCarouselItemContext, HxCarouselOrientation, HxCarouselResponsiveOption, HxCellContext, HxCheckboxSize, HxColumn, HxColumnAlign, HxColumnHeaderContext, HxConfirmation, HxDatePickerSelectionMode, HxDatePickerValue, HxDateTimePickerValue, HxDateTimeRangePreset, HxDateTimeRangeValue, HxDialogConfig, HxDialogPosition, HxDividerAlign, HxDividerLayout, HxDividerType, HxDrawerPosition, HxFileUploadMode, HxFloatLabelVariant, HxGalleriaItem, HxGalleriaItemContext, HxGalleriaThumbnailsPosition, HxIconPosition, HxInputNumberButtonLayout, HxInputNumberMode, HxInputNumberSize, HxInputNumberVariant, HxInputSize, HxInputVariant, HxLazyLoadEvent, HxMenuItem, HxMenuItemCommandEvent, HxMessageSeverity, HxMessageSize, HxMessageVariant, HxMultiSelectDisplay, HxMultiSelectSize, HxMultiSelectVariant, HxPageEvent, HxPrimaryColor, HxProgressMode, HxRadioSize, HxRowClass, HxSelectButtonSize, HxSelectItem, HxSelectSize, HxSelectVariant, HxSelectionMode, HxSkeletonAnimation, HxSkeletonShape, HxSliderOrientation, HxSliderValue, HxSortFirstOrder, HxSortFunction, HxSortMeta, HxSortMode, HxStepContentContext, HxStepValue, HxSurface, HxTableColumnsContext, HxTableRowContext, HxTableSize, HxTagSeverity, HxThemeOptions, HxTimePickerValue, HxTimelineAlign, HxTimelineContext, HxTimelineLayout, HxToastMessage, HxToastMessageInput, HxToastPosition, HxToastSeverity, HxToggleButtonSize, HxTooltipEvent, HxTooltipPosition, HxTreeFilterMode, HxTreeNode, HxTreeNodeContext, HxTreeNodeEvent, HxTreeSelection, HxTreeSelectionMode };
|