@lucca-front/ng 22.1.0-rc.1 → 22.1.0-rc.2
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 +1 -0
- package/fesm2022/lucca-front-ng-a11y.mjs +1 -0
- package/fesm2022/lucca-front-ng-a11y.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-activity-feed.mjs +15 -12
- package/fesm2022/lucca-front-ng-activity-feed.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-approbation-inbox.mjs +3 -3
- package/fesm2022/lucca-front-ng-approbation-inbox.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-box.mjs +1 -1
- package/fesm2022/lucca-front-ng-box.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-breadcrumbs.mjs +1 -1
- package/fesm2022/lucca-front-ng-breadcrumbs.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-bubble-icon.mjs +2 -2
- package/fesm2022/lucca-front-ng-bubble-icon.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-callout.mjs +3 -3
- package/fesm2022/lucca-front-ng-callout.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-chip.mjs +14 -7
- package/fesm2022/lucca-front-ng-chip.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-clear.mjs +1 -1
- package/fesm2022/lucca-front-ng-clear.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-core-select-api.mjs +42 -3
- package/fesm2022/lucca-front-ng-core-select-api.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-core-select-department.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-core-select-establishment.mjs +32 -9
- package/fesm2022/lucca-front-ng-core-select-establishment.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-core-select-job-qualification.mjs +11 -0
- package/fesm2022/lucca-front-ng-core-select-job-qualification.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-core-select-legal-units.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-core-select-occupation-category.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-core-select-user.mjs +32 -32
- package/fesm2022/lucca-front-ng-core-select-user.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-core-select.mjs +309 -39
- package/fesm2022/lucca-front-ng-core-select.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-data-table.mjs +22 -14
- package/fesm2022/lucca-front-ng-data-table.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-date.mjs +2 -4
- package/fesm2022/lucca-front-ng-date.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-date2.mjs +210 -107
- package/fesm2022/lucca-front-ng-date2.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-dialog.mjs +9 -4
- package/fesm2022/lucca-front-ng-dialog.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-dropdown.mjs +3 -0
- package/fesm2022/lucca-front-ng-dropdown.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-fancy-box.mjs +47 -24
- package/fesm2022/lucca-front-ng-fancy-box.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-file-upload.mjs +6 -6
- package/fesm2022/lucca-front-ng-file-upload.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-filter-pills-core.mjs +55 -0
- package/fesm2022/lucca-front-ng-filter-pills-core.mjs.map +1 -0
- package/fesm2022/lucca-front-ng-filter-pills.mjs +119 -70
- package/fesm2022/lucca-front-ng-filter-pills.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-form-field.mjs +110 -28
- package/fesm2022/lucca-front-ng-form-field.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-form-label.mjs +2 -2
- package/fesm2022/lucca-front-ng-form-label.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-form.mjs +42 -5
- package/fesm2022/lucca-front-ng-form.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-forms-phone-number-input.mjs +15 -13
- package/fesm2022/lucca-front-ng-forms-phone-number-input.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-forms-rich-text-input-formatters-plain-text.mjs +5 -2
- package/fesm2022/lucca-front-ng-forms-rich-text-input-formatters-plain-text.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-forms-rich-text-input.mjs +61 -29
- package/fesm2022/lucca-front-ng-forms-rich-text-input.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-forms.mjs +23 -16
- package/fesm2022/lucca-front-ng-forms.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-highlight-data.mjs +6 -7
- package/fesm2022/lucca-front-ng-highlight-data.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-impersonation.mjs +20 -5
- package/fesm2022/lucca-front-ng-impersonation.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-index-table.mjs +13 -8
- package/fesm2022/lucca-front-ng-index-table.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-inline-message.mjs +1 -1
- package/fesm2022/lucca-front-ng-inline-message.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-link.mjs +9 -4
- package/fesm2022/lucca-front-ng-link.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-listbox.mjs +3 -2
- package/fesm2022/lucca-front-ng-listbox.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-markdown.mjs +51 -0
- package/fesm2022/lucca-front-ng-markdown.mjs.map +1 -0
- package/fesm2022/lucca-front-ng-mobile-push.mjs +2 -2
- package/fesm2022/lucca-front-ng-mobile-push.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-modal.mjs +9 -4
- package/fesm2022/lucca-front-ng-modal.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-multi-select.mjs +153 -48
- package/fesm2022/lucca-front-ng-multi-select.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-option.mjs +6 -2
- package/fesm2022/lucca-front-ng-option.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-pagination.mjs +1 -1
- package/fesm2022/lucca-front-ng-pagination.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-picker.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-plg-push.mjs +1 -1
- package/fesm2022/lucca-front-ng-plg-push.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-popover2.mjs +21 -12
- package/fesm2022/lucca-front-ng-popover2.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-priority-levels.mjs +128 -0
- package/fesm2022/lucca-front-ng-priority-levels.mjs.map +1 -0
- package/fesm2022/lucca-front-ng-progress-stepper.mjs +2 -2
- package/fesm2022/lucca-front-ng-progress-stepper.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-read-more.mjs +3 -3
- package/fesm2022/lucca-front-ng-read-more.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-resource-card.mjs +2 -2
- package/fesm2022/lucca-front-ng-resource-card.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-safe-content.mjs +43 -3
- package/fesm2022/lucca-front-ng-safe-content.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-scroll-box.mjs +8 -4
- package/fesm2022/lucca-front-ng-scroll-box.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-segmented-control-tabs.mjs +9 -4
- package/fesm2022/lucca-front-ng-segmented-control-tabs.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-segmented-control.mjs +10 -5
- package/fesm2022/lucca-front-ng-segmented-control.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-select.mjs +1 -1
- package/fesm2022/lucca-front-ng-select.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-simple-select.mjs +71 -17
- package/fesm2022/lucca-front-ng-simple-select.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-software-icon-wrapper.mjs +1 -1
- package/fesm2022/lucca-front-ng-software-icon-wrapper.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-software-icon.mjs +1 -1
- package/fesm2022/lucca-front-ng-software-icon.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-status-badge.mjs +1 -1
- package/fesm2022/lucca-front-ng-status-badge.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-time.mjs +1 -1
- package/fesm2022/lucca-front-ng-time.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-user-popover.mjs +3 -2
- package/fesm2022/lucca-front-ng-user-popover.mjs.map +1 -1
- package/package.json +17 -4
- package/schematics/collection.json +5 -0
- package/schematics/deprecated-resolver/index.js +1 -4
- package/schematics/file-upload/index.js +22 -0
- package/schematics/file-upload/migration.js +230 -0
- package/schematics/file-upload/migration.spec.js +56 -0
- package/schematics/file-upload/schema.json +23 -0
- package/schematics/lib/angular-component-ast.js +3 -1
- package/schematics/lib/deprecated-mapper.js +2 -10
- package/schematics/lib/html-ast.js +26 -0
- package/src/components/_listbox.scss +12 -6
- package/src/components/cdk/_overlay.scss +3 -1
- package/types/lucca-front-ng-activity-feed.d.ts +16 -10
- package/types/lucca-front-ng-approbation-inbox.d.ts +32 -25
- package/types/lucca-front-ng-box.d.ts +12 -6
- package/types/lucca-front-ng-breadcrumbs.d.ts +12 -7
- package/types/lucca-front-ng-chip.d.ts +16 -9
- package/types/lucca-front-ng-clear.d.ts +12 -8
- package/types/lucca-front-ng-core-select-api.d.ts +30 -1
- package/types/lucca-front-ng-core-select-establishment.d.ts +7 -0
- package/types/lucca-front-ng-core-select-job-qualification.d.ts +8 -0
- package/types/lucca-front-ng-core-select-user.d.ts +6 -0
- package/types/lucca-front-ng-core-select.d.ts +115 -7
- package/types/lucca-front-ng-data-table.d.ts +16 -10
- package/types/lucca-front-ng-date.d.ts +12 -10
- package/types/lucca-front-ng-date2.d.ts +46 -21
- package/types/lucca-front-ng-fancy-box.d.ts +29 -12
- package/types/lucca-front-ng-file-upload.d.ts +41 -36
- package/types/lucca-front-ng-filter-pills-core.d.ts +69 -0
- package/types/lucca-front-ng-filter-pills.d.ts +53 -69
- package/types/lucca-front-ng-form-field.d.ts +34 -5
- package/types/lucca-front-ng-form-label.d.ts +13 -8
- package/types/lucca-front-ng-form.d.ts +7 -1
- package/types/lucca-front-ng-forms-rich-text-input.d.ts +40 -35
- package/types/lucca-front-ng-forms.d.ts +36 -44
- package/types/lucca-front-ng-highlight-data.d.ts +1 -2
- package/types/lucca-front-ng-impersonation.d.ts +28 -10
- package/types/lucca-front-ng-index-table.d.ts +3 -1
- package/types/lucca-front-ng-link.d.ts +16 -7
- package/types/lucca-front-ng-markdown.d.ts +24 -0
- package/types/lucca-front-ng-mobile-push.d.ts +18 -12
- package/types/lucca-front-ng-multi-select.d.ts +10 -1
- package/types/lucca-front-ng-option.d.ts +8 -8
- package/types/lucca-front-ng-pagination.d.ts +15 -10
- package/types/lucca-front-ng-picker.d.ts +2 -2
- package/types/lucca-front-ng-plg-push.d.ts +12 -6
- package/types/lucca-front-ng-popover2.d.ts +7 -1
- package/types/lucca-front-ng-priority-levels.d.ts +44 -0
- package/types/lucca-front-ng-read-more.d.ts +13 -9
- package/types/lucca-front-ng-safe-content.d.ts +8 -2
- package/types/lucca-front-ng-segmented-control-tabs.d.ts +5 -1
- package/types/lucca-front-ng-segmented-control.d.ts +5 -1
- package/types/lucca-front-ng-select.d.ts +6 -6
- package/types/lucca-front-ng-simple-select.d.ts +5 -1
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
|
-
import { TemplateRef } from '@angular/core';
|
|
2
|
+
import { TemplateRef, InjectionToken } from '@angular/core';
|
|
3
|
+
import * as _lucca_front_ng_breadcrumbs from '@lucca-front/ng/breadcrumbs';
|
|
4
|
+
import { LuTranslation } from '@lucca-front/ng/core';
|
|
3
5
|
|
|
4
6
|
declare class BreadcrumbsLinkDirective {
|
|
5
7
|
template: TemplateRef<any>;
|
|
@@ -7,12 +9,8 @@ declare class BreadcrumbsLinkDirective {
|
|
|
7
9
|
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BreadcrumbsLinkDirective, "[luBreadcrumbsLink]", never, {}, {}, never, never, true, never>;
|
|
8
10
|
}
|
|
9
11
|
|
|
10
|
-
interface LuBreadcrumbsLabel {
|
|
11
|
-
breadcrumbs: string;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
12
|
declare class BreadcrumbsComponent {
|
|
15
|
-
readonly intl: _angular_core.InputSignalWithTransform<LuBreadcrumbsLabel, Partial<LuBreadcrumbsLabel>>;
|
|
13
|
+
readonly intl: _angular_core.InputSignalWithTransform<_lucca_front_ng_breadcrumbs.LuBreadcrumbsLabel, Partial<_lucca_front_ng_breadcrumbs.LuBreadcrumbsLabel>>;
|
|
16
14
|
readonly disableCompact: _angular_core.InputSignalWithTransform<boolean, boolean | "" | "false" | "true">;
|
|
17
15
|
readonly links: _angular_core.Signal<readonly BreadcrumbsLinkDirective[]>;
|
|
18
16
|
readonly isCompact: _angular_core.Signal<boolean>;
|
|
@@ -21,4 +19,11 @@ declare class BreadcrumbsComponent {
|
|
|
21
19
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<BreadcrumbsComponent, "lu-breadcrumbs", never, { "intl": { "alias": "intl"; "required": false; "isSignal": true; }; "disableCompact": { "alias": "disableCompact"; "required": false; "isSignal": true; }; }, {}, ["links"], never, true, never>;
|
|
22
20
|
}
|
|
23
21
|
|
|
24
|
-
|
|
22
|
+
declare const LU_BREADCRUMBS_TRANSLATIONS: InjectionToken<LuTranslation<LuBreadcrumbsLabel>>;
|
|
23
|
+
interface LuBreadcrumbsLabel {
|
|
24
|
+
breadcrumbs: string;
|
|
25
|
+
}
|
|
26
|
+
declare const luBreadcrumbsTranslations: LuTranslation<LuBreadcrumbsLabel>;
|
|
27
|
+
|
|
28
|
+
export { BreadcrumbsComponent, BreadcrumbsLinkDirective, LU_BREADCRUMBS_TRANSLATIONS, luBreadcrumbsTranslations };
|
|
29
|
+
export type { LuBreadcrumbsLabel };
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
|
+
import { InjectionToken } from '@angular/core';
|
|
3
|
+
import * as _lucca_front_ng_chip from '@lucca-front/ng/chip';
|
|
2
4
|
import { LuccaIcon } from '@lucca-front/icons';
|
|
5
|
+
import { LuTranslation } from '@lucca-front/ng/core';
|
|
3
6
|
|
|
4
7
|
/**
|
|
5
8
|
* Available ChipComponent Types
|
|
@@ -9,14 +12,9 @@ type ChipSize = (typeof CHIP_SIZE)[number];
|
|
|
9
12
|
declare const CHIP_STATE: readonly ["warning", "critical"];
|
|
10
13
|
type ChipState = (typeof CHIP_STATE)[number];
|
|
11
14
|
|
|
12
|
-
interface ChipTranslate {
|
|
13
|
-
delete: string;
|
|
14
|
-
error: string;
|
|
15
|
-
warning: string;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
15
|
declare class ChipComponent {
|
|
19
|
-
|
|
16
|
+
#private;
|
|
17
|
+
readonly intl: _angular_core.InputSignalWithTransform<_lucca_front_ng_chip.ChipTranslate, Partial<_lucca_front_ng_chip.ChipTranslate>>;
|
|
20
18
|
/**
|
|
21
19
|
* Add an ellipsis if the text is too long
|
|
22
20
|
*/
|
|
@@ -59,9 +57,18 @@ declare class ChipComponent {
|
|
|
59
57
|
readonly isWarning: _angular_core.Signal<boolean>;
|
|
60
58
|
readonly isCritical: _angular_core.Signal<boolean>;
|
|
61
59
|
readonly displayedIcon: _angular_core.Signal<LuccaIcon>;
|
|
60
|
+
protected readonly tooltipTriggerAnchor: _angular_core.Signal<HTMLElement>;
|
|
62
61
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ChipComponent, never>;
|
|
63
62
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ChipComponent, "lu-chip, button[luChip], a[luChip]", never, { "intl": { "alias": "intl"; "required": false; "isSignal": true; }; "withEllipsis": { "alias": "withEllipsis"; "required": false; "isSignal": true; }; "unkillable": { "alias": "unkillable"; "required": false; "isSignal": true; }; "palette": { "alias": "palette"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "state": { "alias": "state"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; }, { "kill": "kill"; }, never, ["*"], true, never>;
|
|
64
63
|
}
|
|
65
64
|
|
|
66
|
-
|
|
67
|
-
|
|
65
|
+
declare const LU_CHIP_TRANSLATIONS: InjectionToken<LuTranslation<ChipTranslate>>;
|
|
66
|
+
interface ChipTranslate {
|
|
67
|
+
delete: string;
|
|
68
|
+
error: string;
|
|
69
|
+
warning: string;
|
|
70
|
+
}
|
|
71
|
+
declare const luChipTranslations: LuTranslation<ChipTranslate>;
|
|
72
|
+
|
|
73
|
+
export { CHIP_SIZE, CHIP_STATE, ChipComponent, LU_CHIP_TRANSLATIONS, luChipTranslations };
|
|
74
|
+
export type { ChipSize, ChipState, ChipTranslate };
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
|
-
import { EventEmitter, ElementRef } from '@angular/core';
|
|
2
|
+
import { EventEmitter, ElementRef, InjectionToken } from '@angular/core';
|
|
3
|
+
import * as _lucca_front_ng_clear from '@lucca-front/ng/clear';
|
|
3
4
|
import { Observable } from 'rxjs';
|
|
5
|
+
import { LuTranslation } from '@lucca-front/ng/core';
|
|
4
6
|
|
|
5
7
|
/**
|
|
6
8
|
* Available ClearComponent Types
|
|
@@ -8,10 +10,6 @@ import { Observable } from 'rxjs';
|
|
|
8
10
|
declare const CLEAR_SIZE: readonly ["S"];
|
|
9
11
|
type ClearSize = (typeof CLEAR_SIZE)[number];
|
|
10
12
|
|
|
11
|
-
interface LuClearLabel {
|
|
12
|
-
clear: string;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
13
|
interface ILuClear<T> {
|
|
16
14
|
onClear: Observable<T>;
|
|
17
15
|
}
|
|
@@ -21,7 +19,7 @@ declare abstract class ALuClear<T> implements ILuClear<T> {
|
|
|
21
19
|
|
|
22
20
|
declare class ClearComponent<T> extends ALuClear<T> implements ILuClear<T> {
|
|
23
21
|
#private;
|
|
24
|
-
readonly intl: _angular_core.InputSignalWithTransform<LuClearLabel, Partial<LuClearLabel>>;
|
|
22
|
+
readonly intl: _angular_core.InputSignalWithTransform<_lucca_front_ng_clear.LuClearLabel, Partial<_lucca_front_ng_clear.LuClearLabel>>;
|
|
25
23
|
/**
|
|
26
24
|
* Which size should the clear be? Defaults to small
|
|
27
25
|
*/
|
|
@@ -50,5 +48,11 @@ declare class ClearComponent<T> extends ALuClear<T> implements ILuClear<T> {
|
|
|
50
48
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClearComponent<any>, "lu-clear", ["luClearer"], { "intl": { "alias": "intl"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "palette": { "alias": "palette"; "required": false; "isSignal": true; }; "inverted": { "alias": "inverted"; "required": false; "isSignal": true; }; }, { "onClearOutput": "onClear"; }, ["contentRef"], ["*"], true, never>;
|
|
51
49
|
}
|
|
52
50
|
|
|
53
|
-
|
|
54
|
-
|
|
51
|
+
declare const LU_CLEAR_TRANSLATIONS: InjectionToken<LuTranslation<LuClearLabel>>;
|
|
52
|
+
interface LuClearLabel {
|
|
53
|
+
clear: string;
|
|
54
|
+
}
|
|
55
|
+
declare const luClearTranslations: LuTranslation<LuClearLabel>;
|
|
56
|
+
|
|
57
|
+
export { ALuClear, CLEAR_SIZE, ClearComponent, LU_CLEAR_TRANSLATIONS, luClearTranslations };
|
|
58
|
+
export type { ClearSize, ILuClear, LuClearLabel };
|
|
@@ -44,9 +44,38 @@ declare abstract class ALuCoreSelectApiDirective<TOption, TParams = Record<strin
|
|
|
44
44
|
* Return the options for the given params and page
|
|
45
45
|
*/
|
|
46
46
|
protected abstract getOptions(params: TParams, page: number): Observable<TOption[]>;
|
|
47
|
+
/**
|
|
48
|
+
* Return every option of a group, ignoring pagination, so the group "select all" acts on the whole
|
|
49
|
+
* group and not only on the pages already loaded. Override it in directives that set a grouping;
|
|
50
|
+
* left undefined, the panel keeps its default behaviour and toggles the rendered options only.
|
|
51
|
+
*/
|
|
52
|
+
protected getGroupOptions?: (group: unknown) => Observable<TOption[]>;
|
|
47
53
|
ngOnInit(): void;
|
|
54
|
+
/**
|
|
55
|
+
* Emits whenever something *other than the clue* changed in {@link params$}, so the option stream
|
|
56
|
+
* resets and reloads from page 0 — a panel header toggle, a filter bound to an input…
|
|
57
|
+
*
|
|
58
|
+
* Clue changes are already the select's own business (debounce included), and every directive folds
|
|
59
|
+
* the clue into its params under its own key — sometimes driving the sort along with it — so there
|
|
60
|
+
* is no clue key to strip generically. They are recognized here by comparing the clue of two
|
|
61
|
+
* consecutive params emissions instead: same clue but different params means a real params change.
|
|
62
|
+
*/
|
|
63
|
+
protected buildParamsChange(): Observable<TParams>;
|
|
64
|
+
/**
|
|
65
|
+
* Post-process the whole list of loaded options (all pages accumulated). Override it for
|
|
66
|
+
* decorations that can't be computed page by page, eg. flagging homonyms across pages.
|
|
67
|
+
*/
|
|
68
|
+
protected transformOptions(options: readonly TOption[]): Observable<readonly TOption[]>;
|
|
48
69
|
protected buildParamsFromClue(clue: string): Observable<TParams>;
|
|
49
|
-
|
|
70
|
+
/**
|
|
71
|
+
* Total number of options matching the current params, ignoring pagination. Only the select-all
|
|
72
|
+
* feature of `lu-multi-select` needs it, so it is optional: a directive that has no cheap way to
|
|
73
|
+
* count — or whose select never offers a select-all — simply leaves it undefined.
|
|
74
|
+
*
|
|
75
|
+
* Being a property of this class, it has to be implemented as a field: TypeScript rejects an
|
|
76
|
+
* accessor overriding a property (TS2611).
|
|
77
|
+
*/
|
|
78
|
+
totalCount$: Observable<number> | undefined;
|
|
50
79
|
protected clearLastPageByClue(): void;
|
|
51
80
|
protected getOptionsPage(params: TParams, page: number): Observable<{
|
|
52
81
|
items: TOption[];
|
|
@@ -41,6 +41,13 @@ declare class LuCoreSelectEstablishmentsDirective<T extends LuCoreSelectEstablis
|
|
|
41
41
|
ngOnInit(): void;
|
|
42
42
|
protected initGrouping(): void;
|
|
43
43
|
protected buildParamsFromClue(clue: string): Observable<Record<string, string | number | boolean>>;
|
|
44
|
+
/**
|
|
45
|
+
* Establishments are grouped by legal unit, but the panel only knows the options of the pages it
|
|
46
|
+
* already loaded: a legal unit spanning several pages would be partially selected. Fetch the whole
|
|
47
|
+
* legal unit instead, page by page, so "select all" covers the options that are not rendered yet.
|
|
48
|
+
* Groups are only displayed when the clue is empty, hence the clue-less params.
|
|
49
|
+
*/
|
|
50
|
+
protected getGroupOptions: (legalUnitId: unknown) => Observable<T[]>;
|
|
44
51
|
protected getOptions(params: Record<string, string | number | boolean> | null, page: number): Observable<T[]>;
|
|
45
52
|
protected readonly paramsSignal: _angular_core.Signal<Record<string, string | number | boolean>>;
|
|
46
53
|
protected readonly params$: Observable<Record<string, string | number | boolean>>;
|
|
@@ -14,6 +14,7 @@ interface LuCoreSelectJobQualification extends ILuApiItem {
|
|
|
14
14
|
}
|
|
15
15
|
|
|
16
16
|
declare class LuCoreSelectJobQualificationsDirective<T extends LuCoreSelectJobQualification = LuCoreSelectJobQualification> extends ALuCoreSelectApiDirective<T> implements OnInit, CoreSelectApiTotalCountProvider {
|
|
17
|
+
#private;
|
|
17
18
|
protected httpClient: HttpClient;
|
|
18
19
|
readonly url: _angular_core.InputSignal<string>;
|
|
19
20
|
readonly filters: _angular_core.InputSignal<Record<string, string | number | boolean>>;
|
|
@@ -21,6 +22,13 @@ declare class LuCoreSelectJobQualificationsDirective<T extends LuCoreSelectJobQu
|
|
|
21
22
|
protected readonly clue: _angular_core.Signal<string>;
|
|
22
23
|
constructor();
|
|
23
24
|
protected buildParamsFromClue(clue: string): Observable<Record<string, string | number | boolean>>;
|
|
25
|
+
/**
|
|
26
|
+
* Job qualifications are grouped by job, but the panel only knows the options of the pages it
|
|
27
|
+
* already loaded: a job spanning several pages would be partially selected. Fetch the whole job
|
|
28
|
+
* instead, page by page, so "select all" covers the options that are not rendered yet. Groups are
|
|
29
|
+
* only displayed when the clue is empty, hence the clue-less params.
|
|
30
|
+
*/
|
|
31
|
+
protected getGroupOptions: (jobId: unknown) => Observable<T[]>;
|
|
24
32
|
protected getOptions(params: Record<string, string | number | boolean> | null, page: number): Observable<T[]>;
|
|
25
33
|
protected readonly paramsSignal: _angular_core.Signal<Record<string, string | number | boolean>>;
|
|
26
34
|
protected readonly params$: Observable<Record<string, string | number | boolean>>;
|
|
@@ -67,6 +67,12 @@ declare class LuCoreSelectUsersDirective<T extends LuCoreSelectUser = LuCoreSele
|
|
|
67
67
|
items: LuCoreSelectWithAdditionnalInformation<T>[];
|
|
68
68
|
isLastPage: boolean;
|
|
69
69
|
}>;
|
|
70
|
+
/**
|
|
71
|
+
* Homonyms can only be detected by looking at every loaded option at once: two homonyms may
|
|
72
|
+
* land on different pages (last option of a page, first of the next one), in which case a
|
|
73
|
+
* page by page detection would find none. So we run it on the accumulated list instead.
|
|
74
|
+
*/
|
|
75
|
+
protected transformOptions(options: readonly LuCoreSelectWithAdditionnalInformation<T>[]): Observable<readonly LuCoreSelectWithAdditionnalInformation<T>[]>;
|
|
70
76
|
protected optionKey: (option: T) => number;
|
|
71
77
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<LuCoreSelectUsersDirective<any>, never>;
|
|
72
78
|
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<LuCoreSelectUsersDirective<any>, "lu-simple-select[users],lu-multi-select[users]", ["luUsers"], { "displayFormat": { "alias": "displayFormat"; "required": false; "isSignal": true; }; "filters": { "alias": "filters"; "required": false; "isSignal": true; }; "url": { "alias": "url"; "required": false; "isSignal": true; }; "orderBy": { "alias": "orderBy"; "required": false; "isSignal": true; }; "operationIds": { "alias": "operationIds"; "required": false; "isSignal": true; }; "uniqueOperationIds": { "alias": "uniqueOperationIds"; "required": false; "isSignal": true; }; "appInstanceId": { "alias": "appInstanceId"; "required": false; "isSignal": true; }; "enableFormerEmployees": { "alias": "enableFormerEmployees"; "required": false; "isSignal": true; }; "displayMeOption": { "alias": "displayMeOption"; "required": false; "isSignal": true; }; "customUserOptionTpl": { "alias": "customUserOptionTpl"; "required": false; "isSignal": true; }; "searchDelimiter": { "alias": "searchDelimiter"; "required": false; "isSignal": true; }; }, { "customUserOptionTpl": "customUserOptionTplChange"; }, never, never, true, never>;
|
|
@@ -2,24 +2,46 @@ import * as _angular_core from '@angular/core';
|
|
|
2
2
|
import { InjectionToken, OnDestroy, ElementRef, Signal, EventEmitter, TemplateRef, Injector, WritableSignal, OnInit, ChangeDetectorRef, Type, Provider, PipeTransform } from '@angular/core';
|
|
3
3
|
import * as rxjs from 'rxjs';
|
|
4
4
|
import { Observable, Subject, BehaviorSubject, ReplaySubject } from 'rxjs';
|
|
5
|
-
import * as
|
|
6
|
-
import { FilterPillInputComponent } from '@lucca-front/ng/filter-pills';
|
|
7
|
-
import { OverlayConfig, OverlayRef } from '@angular/cdk/overlay';
|
|
5
|
+
import * as _lucca_front_ng_filter_pills_core from '@lucca-front/ng/filter-pills/core';
|
|
6
|
+
import { FilterPillInputComponent } from '@lucca-front/ng/filter-pills/core';
|
|
7
|
+
import { ComponentType, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';
|
|
8
8
|
import { ControlValueAccessor } from '@angular/forms';
|
|
9
9
|
import { PortalContent, LuTranslation } from '@lucca-front/ng/core';
|
|
10
|
+
import { FormFieldComponent } from '@lucca-front/ng/form-field';
|
|
10
11
|
import * as _lucca_front_ng_core_select from '@lucca-front/ng/core-select';
|
|
11
12
|
import { Treeitem } from '@lucca-front/ng/listbox';
|
|
12
13
|
import { Highlightable } from '@angular/cdk/a11y';
|
|
14
|
+
import { LuDialogService, LuDialogRef } from '@lucca-front/ng/dialog';
|
|
13
15
|
|
|
14
16
|
interface SelectDataSourceParams {
|
|
15
17
|
clue: string;
|
|
16
18
|
page: number;
|
|
17
19
|
}
|
|
18
20
|
interface SelectDataSource<TOption, TGroup = never> {
|
|
21
|
+
/**
|
|
22
|
+
* Emits when the params behind `getOptions` changed, so the select resets and reloads from page 0
|
|
23
|
+
* with the current clue — a panel header toggle, a filter bound to an input…
|
|
24
|
+
*
|
|
25
|
+
* It must not emit on clue changes: those are the select's own business, debounce included, and an
|
|
26
|
+
* emission here would load the same page a second time.
|
|
27
|
+
*/
|
|
19
28
|
paramsChange?: Observable<unknown>;
|
|
20
29
|
/** Optional debounce in ms for clue-based re-queries (useful for API data sources) */
|
|
21
30
|
clueDebounceMs?: number;
|
|
31
|
+
/**
|
|
32
|
+
* Whether `getOptions` answers page by page. When false, it emits the whole list at once and `page`
|
|
33
|
+
* is always 0: the select accumulates nothing, `nextPage` is only a request for more, and the loading
|
|
34
|
+
* row is left to the consumer through the `loading` input.
|
|
35
|
+
* @default true
|
|
36
|
+
*/
|
|
37
|
+
paginated?: boolean;
|
|
22
38
|
getOptions(params: SelectDataSourceParams): Observable<readonly TOption[]>;
|
|
39
|
+
/**
|
|
40
|
+
* Optional post-processing applied to the whole list of loaded options (all pages accumulated),
|
|
41
|
+
* every time it changes. Use it for decorations that can't be computed page by page —
|
|
42
|
+
* for example flagging homonyms, which requires seeing every loaded option at once.
|
|
43
|
+
*/
|
|
44
|
+
transformOptions?(options: readonly TOption[]): Observable<readonly TOption[]>;
|
|
23
45
|
getTotalCount?(params: SelectDataSourceParams): Observable<number>;
|
|
24
46
|
getGroupOptions?: [TGroup] extends [never] ? never : (group: TGroup) => Observable<TOption[]>;
|
|
25
47
|
reset?(): void;
|
|
@@ -43,6 +65,11 @@ type CoreSelectAddOptionStrategy = 'never' | 'always' | 'if-empty-clue' | 'if-no
|
|
|
43
65
|
declare const SELECT_ID: InjectionToken<number>;
|
|
44
66
|
declare const SELECT_LABEL: InjectionToken<HTMLLabelElement>;
|
|
45
67
|
declare const SELECT_LABEL_ID: InjectionToken<string>;
|
|
68
|
+
/**
|
|
69
|
+
* Contract behind {@link CORE_SELECT_API_TOTAL_COUNT_PROVIDER}: a directive fulfills it by declaring
|
|
70
|
+
* a `totalCount$`, which the select-all of `lu-multi-select` then reads through the token. Providing
|
|
71
|
+
* a count stays optional — see `ALuCoreSelectApiDirective.totalCount$`.
|
|
72
|
+
*/
|
|
46
73
|
interface CoreSelectApiTotalCountProvider {
|
|
47
74
|
totalCount$: Observable<number>;
|
|
48
75
|
}
|
|
@@ -141,6 +168,30 @@ declare abstract class LuSelectPanelRef<TOption, TValue> {
|
|
|
141
168
|
close(): void;
|
|
142
169
|
}
|
|
143
170
|
|
|
171
|
+
/**
|
|
172
|
+
* Opens a select panel as a bottom sheet.
|
|
173
|
+
*
|
|
174
|
+
* Below the `S` breakpoint the panel stops being a popover anchored to the field and becomes a modal
|
|
175
|
+
* surface pinned to the bottom of the viewport. That surface already exists as the dialog's `sheet`
|
|
176
|
+
* mode — backdrop, blocked page scroll, focus trap, focus restoration and close button all come with
|
|
177
|
+
* it — so the panel is opened as a dialog instead of as a bespoke overlay.
|
|
178
|
+
*
|
|
179
|
+
* The opening animation is disabled (`mod-select`, styled by the select packages themselves — see their
|
|
180
|
+
* `sheet` mixin) and the search input is focused by hand instead of through CDK's `autoFocus`. iOS
|
|
181
|
+
* Safari only raises the virtual keyboard for a `focus()` call made synchronously inside the tap that
|
|
182
|
+
* triggered it; CDK's own autofocus defers the actual `focus()` through `afterNextRender`, which always
|
|
183
|
+
* lands after that window has closed, so the keyboard silently never opens. Forcing a render with
|
|
184
|
+
* `ApplicationRef.tick()` right here — still inside the same synchronous call stack as the tap — makes
|
|
185
|
+
* the search input exist in the DOM in time to focus it for real, and skipping the animation keeps the
|
|
186
|
+
* sheet from visibly jumping once the keyboard's own viewport resize kicks in immediately after.
|
|
187
|
+
*
|
|
188
|
+
* @param dialogService the dialog service provided alongside the select input
|
|
189
|
+
* @param panel the panel component to render inside the sheet
|
|
190
|
+
* @param injector the injector carrying the panel ref and the select input for the panel
|
|
191
|
+
* @param ariaLabel names the sheet, so it stays named even before its header has rendered
|
|
192
|
+
*/
|
|
193
|
+
declare function openSelectPanelSheet<TPanel>(dialogService: LuDialogService, panel: ComponentType<TPanel>, injector: Injector, ariaLabel: string): LuDialogRef<TPanel, never>;
|
|
194
|
+
|
|
144
195
|
/**
|
|
145
196
|
* Scrolls an element into view once its layout has settled.
|
|
146
197
|
*
|
|
@@ -160,6 +211,34 @@ type GroupTemplateLocation = 'group-header' | 'option' | 'none';
|
|
|
160
211
|
* the options are being (re)fetched, then flip to the final location on the next options emission.
|
|
161
212
|
*/
|
|
162
213
|
declare function getGroupTemplateLocation(hasGrouping: Signal<boolean>, clue: Signal<string>, options: Signal<readonly unknown[]>, searchable?: boolean): Signal<GroupTemplateLocation>;
|
|
214
|
+
/**
|
|
215
|
+
* Requests the next page for as long as the panel's scroll viewport can't scroll.
|
|
216
|
+
*
|
|
217
|
+
* Pagination is driven by the scroll event: reaching the bottom of the viewport asks the consumer
|
|
218
|
+
* for the next page. A page that doesn't overflow the viewport therefore never asks for anything —
|
|
219
|
+
* there is nothing to scroll. The popover panel caps its content at 20rem, which a page of options
|
|
220
|
+
* always overflows, so this never came up; the bottom sheet is only as tall as its content instead,
|
|
221
|
+
* so a first page of a few options leaves it short of a scrollbar and pagination stops right there.
|
|
222
|
+
*
|
|
223
|
+
* So the viewport is measured again after every render and, while it still can't scroll, the next
|
|
224
|
+
* page is requested. The option count is what guards against an endless loop: a page that brought
|
|
225
|
+
* no new option — the data source is exhausted — is never requested twice. A new search landing on
|
|
226
|
+
* exactly the same count as the last requested page is the one case left unfilled, which the next
|
|
227
|
+
* scroll — or the next keystroke — resolves on its own.
|
|
228
|
+
*
|
|
229
|
+
* The request itself is deferred by a microtask: the panel's first render happens inside the sheet's
|
|
230
|
+
* own `ApplicationRef.tick()`, which `openPanel` runs *before* subscribing the select input to the
|
|
231
|
+
* panel ref, so a page requested straight from that render would be emitted into the void. A
|
|
232
|
+
* microtask lands once `openPanel` has returned, still well ahead of anything the user could do.
|
|
233
|
+
*
|
|
234
|
+
* Must be called from an injection context.
|
|
235
|
+
*/
|
|
236
|
+
declare function fillScrollViewport({ viewport, optionCount, loading, nextPage, }: {
|
|
237
|
+
viewport: Signal<HTMLElement | undefined>;
|
|
238
|
+
optionCount: Signal<number>;
|
|
239
|
+
loading: Signal<boolean>;
|
|
240
|
+
nextPage: () => void;
|
|
241
|
+
}): void;
|
|
163
242
|
|
|
164
243
|
interface CoreSelectPanelInstance<T = unknown> {
|
|
165
244
|
options: WritableSignal<CoreSelectPanelElement<T>[]>;
|
|
@@ -211,12 +290,19 @@ declare abstract class ALuSelectInputComponent<TOption, TValue> implements OnDes
|
|
|
211
290
|
protected overlayContainerRef: HTMLElement;
|
|
212
291
|
protected labelElement: HTMLElement | undefined;
|
|
213
292
|
protected labelId: string;
|
|
293
|
+
protected formField: FormFieldComponent;
|
|
214
294
|
protected abstract intl: Signal<LuCoreSelectLabel>;
|
|
215
|
-
protected filterPillHost:
|
|
295
|
+
protected filterPillHost: _lucca_front_ng_filter_pills_core.FilterPillHostComponent;
|
|
216
296
|
protected afterCloseFn?: () => void;
|
|
217
297
|
protected updatePositionFn?: () => void;
|
|
218
|
-
filterPillMode: boolean;
|
|
298
|
+
get filterPillMode(): boolean;
|
|
299
|
+
set filterPillMode(filterPillMode: boolean);
|
|
219
300
|
readonly ignorePresentation: _angular_core.InputSignalWithTransform<boolean, boolean | "" | "false" | "true">;
|
|
301
|
+
/**
|
|
302
|
+
* Width of the select itself, using the same scale as the form field width
|
|
303
|
+
*/
|
|
304
|
+
readonly width: _angular_core.InputSignalWithTransform<10 | 20 | 30 | 40 | 50 | 60, 10 | 20 | 30 | 40 | 50 | 60 | "null" | "10" | "20" | "30" | "40" | "50" | "60">;
|
|
305
|
+
protected readonly widthClass: Signal<string>;
|
|
220
306
|
selectParent$?: Subject<void>;
|
|
221
307
|
selectChildren$?: Subject<void>;
|
|
222
308
|
readonly panelClosed: _angular_core.OutputEmitterRef<void>;
|
|
@@ -240,6 +326,25 @@ declare abstract class ALuSelectInputComponent<TOption, TValue> implements OnDes
|
|
|
240
326
|
get isPanelOpen(): boolean;
|
|
241
327
|
readonly isPanelOpen$: BehaviorSubject<boolean>;
|
|
242
328
|
readonly panelOpenSignal: Signal<boolean>;
|
|
329
|
+
private readonly belowSmallBreakpoint;
|
|
330
|
+
/**
|
|
331
|
+
* Below the `S` breakpoint (800px) the panel opens as a dialog in `sheet` mode that embeds its own
|
|
332
|
+
* search input, instead of a popover anchored to the field — mirroring how filter pills move the input
|
|
333
|
+
* inside their overlay. Filter pills already provide their own overlay, so they keep their behavior.
|
|
334
|
+
*/
|
|
335
|
+
readonly bottomSheetMode: Signal<boolean>;
|
|
336
|
+
/**
|
|
337
|
+
* Whether the currently open panel is a sheet, snapshotted when it opens rather than tracking
|
|
338
|
+
* `bottomSheetMode()` live: the panel's own ref (`SelectPanelSheetRef` vs `SelectPanelRef`) is
|
|
339
|
+
* chosen once at open time too, so resizing across the breakpoint while the panel stays open must
|
|
340
|
+
* not flip which surface its template renders — that surface was never actually attached as a
|
|
341
|
+
* dialog, so switching to it crashes with a missing `LuDialogRef` provider.
|
|
342
|
+
*/
|
|
343
|
+
readonly panelBottomSheetMode: _angular_core.WritableSignal<boolean>;
|
|
344
|
+
/** Field label echoed as the bottom sheet's title, snapshotted when the sheet opens. */
|
|
345
|
+
readonly panelTitle: _angular_core.WritableSignal<string>;
|
|
346
|
+
/** Whether that field label carries the required marker, so the sheet's title can echo it too. */
|
|
347
|
+
readonly panelTitleRequired: Signal<boolean>;
|
|
243
348
|
readonly activeDescendant$: BehaviorSubject<string>;
|
|
244
349
|
protected manualOptions$: ReplaySubject<readonly TOption[]>;
|
|
245
350
|
get ariaControls(): string;
|
|
@@ -299,6 +404,7 @@ declare abstract class ALuSelectInputComponent<TOption, TValue> implements OnDes
|
|
|
299
404
|
protected _panelRef?: LuSelectPanelRef<TOption, TValue>;
|
|
300
405
|
protected readonly destroyed$: Subject<void>;
|
|
301
406
|
private readonly injector;
|
|
407
|
+
private readonly hostElementRef;
|
|
302
408
|
constructor();
|
|
303
409
|
onClickOpenPanel($event: Event): void;
|
|
304
410
|
onKeyDownNavigation(event: Event): void;
|
|
@@ -313,6 +419,8 @@ declare abstract class ALuSelectInputComponent<TOption, TValue> implements OnDes
|
|
|
313
419
|
protected abstract buildPanelRef(): this['panelRef'];
|
|
314
420
|
protected bindInputToPanelRefEvents(): void;
|
|
315
421
|
focusInput(): void;
|
|
422
|
+
private resolvePanelTitle;
|
|
423
|
+
private getLabelText;
|
|
316
424
|
protected emptyClue(): void;
|
|
317
425
|
closePanel(): void;
|
|
318
426
|
writeValue(value: TValue | null): void;
|
|
@@ -324,7 +432,7 @@ declare abstract class ALuSelectInputComponent<TOption, TValue> implements OnDes
|
|
|
324
432
|
onFilterPillOpened(): void;
|
|
325
433
|
onFilterPillClosed(): void;
|
|
326
434
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ALuSelectInputComponent<any, any>, never>;
|
|
327
|
-
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<ALuSelectInputComponent<any, any>, never, never, { "ignorePresentation": { "alias": "ignorePresentation"; "required": false; "isSignal": true; }; "prefix": { "alias": "prefix"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "clearableInput": { "alias": "clearable"; "required": false; "isSignal": true; }; "addOptionLabelInput": { "alias": "addOptionLabel"; "required": false; "isSignal": true; }; "addOptionStrategy": { "alias": "addOptionStrategy"; "required": false; "isSignal": true; }; "overlayConfig": { "alias": "overlayConfig"; "required": false; "isSignal": true; }; "loadingInput": { "alias": "loading"; "required": false; "isSignal": true; }; "optionsInput": { "alias": "options"; "required": false; "isSignal": true; }; "optionComparerInput": { "alias": "optionComparer"; "required": false; "isSignal": true; }; "optionKeyInput": { "alias": "optionKey"; "required": false; "isSignal": true; }; "noClueIcon": { "alias": "noClueIcon"; "required": false; "isSignal": true; }; "inputTabindex": { "alias": "inputTabindex"; "required": false; "isSignal": true; }; "compact": { "alias": "compact"; "required": false; "isSignal": true; }; "colorPicker": { "alias": "colorPicker"; "required": false; "isSignal": true; }; "optionTpl": { "alias": "optionTpl"; "required": false; "isSignal": true; }; "valueTpl": { "alias": "valueTpl"; "required": false; "isSignal": true; }; "panelHeaderTpl": { "alias": "panelHeaderTpl"; "required": false; "isSignal": true; }; "panelFooterTpl": { "alias": "panelFooterTpl"; "required": false; "isSignal": true; }; "dataSource": { "alias": "dataSource"; "required": false; "isSignal": true; }; }, { "panelClosed": "panelClosed"; "panelOpened": "panelOpened"; "highlightedOption": "highlightedOption"; "optionTpl": "optionTplChange"; "valueTpl": "valueTplChange"; "panelHeaderTpl": "panelHeaderTplChange"; "panelFooterTpl": "panelFooterTplChange"; "clueChange": "clueChange"; "nextPage": "nextPage"; "addOption": "addOption"; "dataSource": "dataSourceChange"; }, never, never, true, never>;
|
|
435
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<ALuSelectInputComponent<any, any>, never, never, { "ignorePresentation": { "alias": "ignorePresentation"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "prefix": { "alias": "prefix"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "clearableInput": { "alias": "clearable"; "required": false; "isSignal": true; }; "addOptionLabelInput": { "alias": "addOptionLabel"; "required": false; "isSignal": true; }; "addOptionStrategy": { "alias": "addOptionStrategy"; "required": false; "isSignal": true; }; "overlayConfig": { "alias": "overlayConfig"; "required": false; "isSignal": true; }; "loadingInput": { "alias": "loading"; "required": false; "isSignal": true; }; "optionsInput": { "alias": "options"; "required": false; "isSignal": true; }; "optionComparerInput": { "alias": "optionComparer"; "required": false; "isSignal": true; }; "optionKeyInput": { "alias": "optionKey"; "required": false; "isSignal": true; }; "noClueIcon": { "alias": "noClueIcon"; "required": false; "isSignal": true; }; "inputTabindex": { "alias": "inputTabindex"; "required": false; "isSignal": true; }; "compact": { "alias": "compact"; "required": false; "isSignal": true; }; "colorPicker": { "alias": "colorPicker"; "required": false; "isSignal": true; }; "optionTpl": { "alias": "optionTpl"; "required": false; "isSignal": true; }; "valueTpl": { "alias": "valueTpl"; "required": false; "isSignal": true; }; "panelHeaderTpl": { "alias": "panelHeaderTpl"; "required": false; "isSignal": true; }; "panelFooterTpl": { "alias": "panelFooterTpl"; "required": false; "isSignal": true; }; "dataSource": { "alias": "dataSource"; "required": false; "isSignal": true; }; }, { "panelClosed": "panelClosed"; "panelOpened": "panelOpened"; "highlightedOption": "highlightedOption"; "optionTpl": "optionTplChange"; "valueTpl": "valueTplChange"; "panelHeaderTpl": "panelHeaderTplChange"; "panelFooterTpl": "panelFooterTplChange"; "clueChange": "clueChange"; "nextPage": "nextPage"; "addOption": "addOption"; "dataSource": "dataSourceChange"; }, never, never, true, never>;
|
|
328
436
|
}
|
|
329
437
|
|
|
330
438
|
declare function provideLuSelectLabelsAndIds(): Provider[];
|
|
@@ -481,5 +589,5 @@ declare class LuIsOptionSelectedPipe<T> implements PipeTransform {
|
|
|
481
589
|
static ɵpipe: _angular_core.ɵɵPipeDeclaration<LuIsOptionSelectedPipe<any>, "luIsOptionSelected", true>;
|
|
482
590
|
}
|
|
483
591
|
|
|
484
|
-
export { ALuSelectInputComponent, CORE_SELECT_API_TOTAL_COUNT_PROVIDER, CoreSelectKeyManager, LU_CORE_SELECT_TRANSLATIONS, LU_OPTION_CONTEXT, LuCoreSelectNoClueDirective, LuCoreSelectPanelHeaderDirective, LuCoreSelectTotalCountDirective, LuDisabledOptionDirective, LuDisplayerDirective, LuIsOptionSelectedPipe, LuOptionDirective, LuOptionGroupDirective, LuSelectPanelLayoutComponent, LuSelectPanelRef, LuSimpleSelectDefaultOptionComponent, SELECT_ID, SELECT_LABEL, SELECT_LABEL_ID, SELECT_PANEL_INSTANCE, TreeDisplayPipe, addAttributesOnCdkContainer, applySearchDelimiter, coreSelectDefaultOptionComparer, coreSelectDefaultOptionKey, luCoreSelectTranslations, provideLuSelectLabelsAndIds, provideOptionContext, CoreSelectPanelElement as ɵCoreSelectPanelElement, ɵIsSelectedStrategy, LuOptionComponent as ɵLuOptionComponent, LuOptionGroupPipe as ɵLuOptionGroupPipe, LuOptionOutletDirective as ɵLuOptionOutletDirective, generateGroups as ɵgenerateGroups, getGroupTemplateLocation as ɵgetGroupTemplateLocation, injectPointerNavigation as ɵinjectPointerNavigation, scrollIntoViewOnceReady as ɵscrollIntoViewOnceReady };
|
|
592
|
+
export { ALuSelectInputComponent, CORE_SELECT_API_TOTAL_COUNT_PROVIDER, CoreSelectKeyManager, LU_CORE_SELECT_TRANSLATIONS, LU_OPTION_CONTEXT, LuCoreSelectNoClueDirective, LuCoreSelectPanelHeaderDirective, LuCoreSelectTotalCountDirective, LuDisabledOptionDirective, LuDisplayerDirective, LuIsOptionSelectedPipe, LuOptionDirective, LuOptionGroupDirective, LuSelectPanelLayoutComponent, LuSelectPanelRef, LuSimpleSelectDefaultOptionComponent, SELECT_ID, SELECT_LABEL, SELECT_LABEL_ID, SELECT_PANEL_INSTANCE, TreeDisplayPipe, addAttributesOnCdkContainer, applySearchDelimiter, coreSelectDefaultOptionComparer, coreSelectDefaultOptionKey, luCoreSelectTranslations, provideLuSelectLabelsAndIds, provideOptionContext, CoreSelectPanelElement as ɵCoreSelectPanelElement, ɵIsSelectedStrategy, LuOptionComponent as ɵLuOptionComponent, LuOptionGroupPipe as ɵLuOptionGroupPipe, LuOptionOutletDirective as ɵLuOptionOutletDirective, fillScrollViewport as ɵfillScrollViewport, generateGroups as ɵgenerateGroups, getGroupTemplateLocation as ɵgetGroupTemplateLocation, injectPointerNavigation as ɵinjectPointerNavigation, openSelectPanelSheet as ɵopenSelectPanelSheet, scrollIntoViewOnceReady as ɵscrollIntoViewOnceReady };
|
|
485
593
|
export type { CoreSelectAddOptionStrategy, CoreSelectApiTotalCountProvider, CoreSelectPanelInstance, ILuOptionContext, LuCoreSelectLabel, LuOptionComparer, LuOptionContext, LuOptionGroup, LuOptionGroupByContext, LuOptionGrouping, SelectDataSource, SelectDataSourceParams, TreeGenerator, TreeGroupingFn, TreeNode };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as _lucca_front_ng_data_table from '@lucca-front/ng/data-table';
|
|
2
2
|
import * as _angular_core from '@angular/core';
|
|
3
3
|
import { AfterContentInit, ElementRef, OnInit, InjectionToken } from '@angular/core';
|
|
4
|
-
import { PortalContent } from '@lucca-front/ng/core';
|
|
4
|
+
import { PortalContent, LuTranslation } from '@lucca-front/ng/core';
|
|
5
5
|
|
|
6
6
|
declare class DataTableBodyComponent {
|
|
7
7
|
readonly group: _angular_core.InputSignal<PortalContent>;
|
|
@@ -35,13 +35,15 @@ declare class DataTableRowCellHeaderComponent extends BaseDataTableCell implemen
|
|
|
35
35
|
readonly sort: _angular_core.ModelSignal<"none" | "ascending" | "descending">;
|
|
36
36
|
readonly fixedWidth: _angular_core.InputSignal<string>;
|
|
37
37
|
readonly inlineSize: _angular_core.InputSignal<string>;
|
|
38
|
+
readonly sortWithEllipsis: _angular_core.InputSignalWithTransform<boolean, boolean | "" | "false" | "true">;
|
|
39
|
+
protected readonly sortButtonRef: _angular_core.Signal<ElementRef<HTMLElement>>;
|
|
38
40
|
readonly insetInlineStart: _angular_core.Signal<string>;
|
|
39
41
|
readonly insetInlineEnd: _angular_core.Signal<string>;
|
|
40
42
|
readonly inlineSizePx: _angular_core.Signal<number>;
|
|
41
43
|
ngAfterContentInit(): void;
|
|
42
44
|
toggleSort(): void;
|
|
43
45
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DataTableRowCellHeaderComponent, never>;
|
|
44
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DataTableRowCellHeaderComponent, "th[luDataTableCell]", never, { "sort": { "alias": "sort"; "required": false; "isSignal": true; }; "fixedWidth": { "alias": "fixedWidth"; "required": false; "isSignal": true; }; "inlineSize": { "alias": "inlineSize"; "required": false; "isSignal": true; }; }, { "sort": "sortChange"; }, never, ["*"], true, never>;
|
|
46
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DataTableRowCellHeaderComponent, "th[luDataTableCell]", never, { "sort": { "alias": "sort"; "required": false; "isSignal": true; }; "fixedWidth": { "alias": "fixedWidth"; "required": false; "isSignal": true; }; "inlineSize": { "alias": "inlineSize"; "required": false; "isSignal": true; }; "sortWithEllipsis": { "alias": "sortWithEllipsis"; "required": false; "isSignal": true; }; }, { "sort": "sortChange"; }, never, ["*"], true, never>;
|
|
45
47
|
}
|
|
46
48
|
|
|
47
49
|
declare class DataTableRowCellComponent extends BaseDataTableCell {
|
|
@@ -63,16 +65,13 @@ declare class DataTableHeadComponent {
|
|
|
63
65
|
readonly sticky: _angular_core.InputSignalWithTransform<boolean, boolean | "" | "false" | "true">;
|
|
64
66
|
readonly isFirstVisible: _angular_core.WritableSignal<boolean>;
|
|
65
67
|
readonly cols: _angular_core.Signal<readonly DataTableRowCellHeaderComponent[]>;
|
|
68
|
+
tableRef: _lucca_front_ng_data_table.DataTableComponent;
|
|
66
69
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DataTableHeadComponent, never>;
|
|
67
70
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DataTableHeadComponent, "thead[luDataTableHead]", never, { "sticky": { "alias": "sticky"; "required": false; "isSignal": true; }; }, {}, ["cols"], ["*"], true, never>;
|
|
68
71
|
}
|
|
69
72
|
|
|
70
|
-
interface LuDataTableTranslations {
|
|
71
|
-
move: string;
|
|
72
|
-
}
|
|
73
|
-
|
|
74
73
|
declare class DataTableRowComponent {
|
|
75
|
-
readonly intl: _angular_core.InputSignalWithTransform<LuDataTableTranslations, Partial<LuDataTableTranslations>>;
|
|
74
|
+
readonly intl: _angular_core.InputSignalWithTransform<_lucca_front_ng_data_table.LuDataTableTranslations, Partial<_lucca_front_ng_data_table.LuDataTableTranslations>>;
|
|
76
75
|
readonly bodyRef: _lucca_front_ng_data_table.DataTableBodyComponent;
|
|
77
76
|
readonly headRef: _lucca_front_ng_data_table.DataTableHeadComponent;
|
|
78
77
|
readonly footRef: _lucca_front_ng_data_table.DataTableFootComponent;
|
|
@@ -97,6 +96,7 @@ declare class DataTableComponent implements OnInit {
|
|
|
97
96
|
readonly nested: _angular_core.InputSignalWithTransform<boolean, boolean | "" | "false" | "true">;
|
|
98
97
|
readonly drag: _angular_core.InputSignalWithTransform<boolean, boolean | "" | "false" | "true">;
|
|
99
98
|
readonly noOverflow: _angular_core.InputSignalWithTransform<boolean, boolean | "" | "false" | "true">;
|
|
99
|
+
readonly empty: _angular_core.InputSignalWithTransform<boolean, boolean | "" | "false" | "true">;
|
|
100
100
|
readonly responsive: _angular_core.InputSignal<Partial<Record<"layoutFixedAtMediaMinXXXS" | "layoutFixedAtMediaMinXXS" | "layoutFixedAtMediaMinXS" | "layoutFixedAtMediaMinS" | "layoutFixedAtMediaMinM" | "layoutFixedAtMediaMinL" | "layoutFixedAtMediaMinXL" | "layoutFixedAtMediaMinXXL" | "layoutFixedAtMediaMinXXXL" | "layoutFixedAtContainerMinXXXS" | "layoutFixedAtContainerMinXXS" | "layoutFixedAtContainerMinXS" | "layoutFixedAtContainerMinS" | "layoutFixedAtContainerMinM" | "layoutFixedAtContainerMinL" | "layoutFixedAtContainerMinXL" | "layoutFixedAtContainerMinXXL" | "layoutFixedAtContainerMinXXXL", true>>>;
|
|
101
101
|
readonly verticalAlign: _angular_core.InputSignal<"top" | "middle" | "bottom">;
|
|
102
102
|
readonly rows: _angular_core.Signal<readonly DataTableRowComponent[]>;
|
|
@@ -132,7 +132,7 @@ declare class DataTableComponent implements OnInit {
|
|
|
132
132
|
constructor();
|
|
133
133
|
ngOnInit(): void;
|
|
134
134
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DataTableComponent, never>;
|
|
135
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DataTableComponent, "lu-data-table", never, { "hover": { "alias": "hover"; "required": false; "isSignal": true; }; "selectable": { "alias": "selectable"; "required": false; "isSignal": true; }; "layoutFixed": { "alias": "layoutFixed"; "required": false; "isSignal": true; }; "cellBorder": { "alias": "cellBorder"; "required": false; "isSignal": true; }; "nested": { "alias": "nested"; "required": false; "isSignal": true; }; "drag": { "alias": "drag"; "required": false; "isSignal": true; }; "noOverflow": { "alias": "noOverflow"; "required": false; "isSignal": true; }; "responsive": { "alias": "responsive"; "required": false; "isSignal": true; }; "verticalAlign": { "alias": "verticalAlign"; "required": false; "isSignal": true; }; "stickyColsStart": { "alias": "stickyColsStart"; "required": false; "isSignal": true; }; "stickyColsEnd": { "alias": "stickyColsEnd"; "required": false; "isSignal": true; }; }, {}, ["rows", "header"], ["*", "[dataTablePagination]"], true, never>;
|
|
135
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DataTableComponent, "lu-data-table", never, { "hover": { "alias": "hover"; "required": false; "isSignal": true; }; "selectable": { "alias": "selectable"; "required": false; "isSignal": true; }; "layoutFixed": { "alias": "layoutFixed"; "required": false; "isSignal": true; }; "cellBorder": { "alias": "cellBorder"; "required": false; "isSignal": true; }; "nested": { "alias": "nested"; "required": false; "isSignal": true; }; "drag": { "alias": "drag"; "required": false; "isSignal": true; }; "noOverflow": { "alias": "noOverflow"; "required": false; "isSignal": true; }; "empty": { "alias": "empty"; "required": false; "isSignal": true; }; "responsive": { "alias": "responsive"; "required": false; "isSignal": true; }; "verticalAlign": { "alias": "verticalAlign"; "required": false; "isSignal": true; }; "stickyColsStart": { "alias": "stickyColsStart"; "required": false; "isSignal": true; }; "stickyColsEnd": { "alias": "stickyColsEnd"; "required": false; "isSignal": true; }; }, {}, ["rows", "header"], ["*", "[dataTablePagination]"], true, never>;
|
|
136
136
|
}
|
|
137
137
|
|
|
138
138
|
declare const LU_DATA_TABLE_INSTANCE: InjectionToken<DataTableComponent>;
|
|
@@ -147,5 +147,11 @@ type DataTableVerticalAlign = (typeof DATA_TABLE_VERTICAL_ALIGN)[number];
|
|
|
147
147
|
declare const DATA_TABLE_ALIGN: readonly ["start", "center", "end"];
|
|
148
148
|
type DataTableAlign = (typeof DATA_TABLE_ALIGN)[number];
|
|
149
149
|
|
|
150
|
-
|
|
151
|
-
|
|
150
|
+
declare const LU_DATA_TABLE_TRANSLATIONS: InjectionToken<LuTranslation<LuDataTableTranslations>>;
|
|
151
|
+
interface LuDataTableTranslations {
|
|
152
|
+
move: string;
|
|
153
|
+
}
|
|
154
|
+
declare const luDataTableTranslations: LuTranslation<LuDataTableTranslations>;
|
|
155
|
+
|
|
156
|
+
export { DATA_TABLE_ALIGN, DATA_TABLE_SORT, DATA_TABLE_VERTICAL_ALIGN, DataTableBodyComponent, DataTableComponent, DataTableFootComponent, DataTableHeadComponent, DataTableRowCellComponent, DataTableRowCellHeaderComponent, DataTableRowComponent, LU_DATA_TABLE_INSTANCE, LU_DATA_TABLE_TRANSLATIONS, luDataTableTranslations };
|
|
157
|
+
export type { DataTableAlign, DataTableSort, DataTableVerticalAlign, LuDataTableTranslations };
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { PipeTransform, OnInit, ChangeDetectorRef, ElementRef, Renderer2, EventEmitter, AfterViewInit, ViewContainerRef
|
|
2
|
+
import { PipeTransform, OnInit, ChangeDetectorRef, ElementRef, Renderer2, InjectionToken, EventEmitter, AfterViewInit, ViewContainerRef } from '@angular/core';
|
|
3
3
|
import { ALuDateAdapter, LuDateGranularity, ELuDateGranularity, LuTranslation } from '@lucca-front/ng/core';
|
|
4
|
+
import * as _lucca_front_ng_date from '@lucca-front/ng/date';
|
|
4
5
|
import { ControlValueAccessor, Validator, AbstractControl, ValidationErrors } from '@angular/forms';
|
|
5
6
|
import { ALuInput } from '@lucca-front/ng/input';
|
|
6
7
|
import { ALuPickerPanel, ILuInputWithPicker } from '@lucca-front/ng/picker';
|
|
7
|
-
import * as _lucca_front_ng_date from '@lucca-front/ng/date';
|
|
8
8
|
import { Overlay } from '@angular/cdk/overlay';
|
|
9
9
|
import { ALuSelectInputComponent } from '@lucca-front/ng/select';
|
|
10
10
|
import { Observable } from 'rxjs';
|
|
@@ -26,11 +26,6 @@ declare class LuDateAdapterModule {
|
|
|
26
26
|
static ɵinj: i0.ɵɵInjectorDeclaration<LuDateAdapterModule>;
|
|
27
27
|
}
|
|
28
28
|
|
|
29
|
-
interface LuCalendarInputLabel {
|
|
30
|
-
previous: string;
|
|
31
|
-
next: string;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
29
|
interface ICalendarItem<D> {
|
|
35
30
|
id: string;
|
|
36
31
|
date: D;
|
|
@@ -88,7 +83,7 @@ declare class LuCalendarInputComponent<D> extends ALuInput<D> implements Control
|
|
|
88
83
|
private _locale;
|
|
89
84
|
private _factory;
|
|
90
85
|
private _adapter;
|
|
91
|
-
readonly intl: i0.InputSignalWithTransform<LuCalendarInputLabel, Partial<LuCalendarInputLabel>>;
|
|
86
|
+
readonly intl: i0.InputSignalWithTransform<_lucca_front_ng_date.LuCalendarInputLabel, Partial<_lucca_front_ng_date.LuCalendarInputLabel>>;
|
|
92
87
|
readonly min: i0.InputSignal<D>;
|
|
93
88
|
readonly max: i0.InputSignal<D>;
|
|
94
89
|
readonly granularity: i0.InputSignal<string>;
|
|
@@ -127,6 +122,13 @@ declare class LuCalendarInputComponent<D> extends ALuInput<D> implements Control
|
|
|
127
122
|
static ɵcmp: i0.ɵɵComponentDeclaration<LuCalendarInputComponent<any>, "lu-calendar", never, { "intl": { "alias": "intl"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "granularity": { "alias": "granularity"; "required": false; "isSignal": true; }; "startOn": { "alias": "startOn"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
128
123
|
}
|
|
129
124
|
|
|
125
|
+
declare const LU_CALENDARINPUT_TRANSLATIONS: InjectionToken<LuTranslation<LuCalendarInputLabel>>;
|
|
126
|
+
interface LuCalendarInputLabel {
|
|
127
|
+
previous: string;
|
|
128
|
+
next: string;
|
|
129
|
+
}
|
|
130
|
+
declare const luCalendarInputTranslations: LuTranslation<LuCalendarInputLabel>;
|
|
131
|
+
|
|
130
132
|
declare class LuDatePickerComponent<D = Date> extends ALuPickerPanel<D> {
|
|
131
133
|
private _adapter;
|
|
132
134
|
_value: D;
|
|
@@ -271,5 +273,5 @@ interface ILuDateSelectInputLabel {
|
|
|
271
273
|
}
|
|
272
274
|
declare const luDateSelectInputTranslations: LuTranslation<ILuDateSelectInputLabel>;
|
|
273
275
|
|
|
274
|
-
export { LU_DATE_INPUT_TRANSLATIONS, LU_DATE_SELECT_INPUT_TRANSLATIONS, LuCalendarInputComponent, LuDateAdapterModule, LuDateAdapterPipe, LuDateInputDirective, LuDateModule, LuDatePickerComponent, LuDatePickerModule, LuDateSelectInputComponent, LuDateSelectInputModule, LuHumanizeDateFormatter, LuHumanizeDatePipe, getRelativeTime, luDateInputTranslations, luDateSelectInputTranslations, luRelativeTimeFormatUnit, relativeTimeTimer };
|
|
275
|
-
export type { ILuDateInputLabel, ILuDateSelectInputLabel, LuRelativeTime, LuRelativeTimeFormatUnit };
|
|
276
|
+
export { LU_CALENDARINPUT_TRANSLATIONS, LU_DATE_INPUT_TRANSLATIONS, LU_DATE_SELECT_INPUT_TRANSLATIONS, LuCalendarInputComponent, LuDateAdapterModule, LuDateAdapterPipe, LuDateInputDirective, LuDateModule, LuDatePickerComponent, LuDatePickerModule, LuDateSelectInputComponent, LuDateSelectInputModule, LuHumanizeDateFormatter, LuHumanizeDatePipe, getRelativeTime, luCalendarInputTranslations, luDateInputTranslations, luDateSelectInputTranslations, luRelativeTimeFormatUnit, relativeTimeTimer };
|
|
277
|
+
export type { ILuDateInputLabel, ILuDateSelectInputLabel, LuCalendarInputLabel, LuRelativeTime, LuRelativeTimeFormatUnit };
|