@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,8 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
|
+
import { InjectionToken } from '@angular/core';
|
|
3
|
+
import * as _lucca_front_ng_form_label from '@lucca-front/ng/form-label';
|
|
2
4
|
import { SafeHtml } from '@angular/platform-browser';
|
|
5
|
+
import { LuTranslation } from '@lucca-front/ng/core';
|
|
3
6
|
|
|
4
7
|
/**
|
|
5
8
|
* Available FormLabelComponent Types
|
|
@@ -7,13 +10,8 @@ import { SafeHtml } from '@angular/platform-browser';
|
|
|
7
10
|
declare const FORM_LABEL_SIZE: readonly ["XS", "S"];
|
|
8
11
|
type FormLabelSize = (typeof FORM_LABEL_SIZE)[number];
|
|
9
12
|
|
|
10
|
-
interface LuFormLabelTranslations {
|
|
11
|
-
counterAlt: string;
|
|
12
|
-
tooltipAlt: string;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
13
|
declare class FormLabelComponent {
|
|
16
|
-
protected readonly intl: _angular_core.InputSignalWithTransform<LuFormLabelTranslations, Partial<LuFormLabelTranslations>>;
|
|
14
|
+
protected readonly intl: _angular_core.InputSignalWithTransform<_lucca_front_ng_form_label.LuFormLabelTranslations, Partial<_lucca_front_ng_form_label.LuFormLabelTranslations>>;
|
|
17
15
|
readonly required: _angular_core.InputSignalWithTransform<boolean, boolean | "" | "false" | "true">;
|
|
18
16
|
readonly error: _angular_core.InputSignalWithTransform<boolean, boolean | "" | "false" | "true">;
|
|
19
17
|
readonly tooltip: _angular_core.InputSignal<string | SafeHtml>;
|
|
@@ -26,5 +24,12 @@ declare class FormLabelComponent {
|
|
|
26
24
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<FormLabelComponent, "label[luFormLabel], legend[luFormLabel]", never, { "intl": { "alias": "intl"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; "tooltip": { "alias": "tooltip"; "required": false; "isSignal": true; }; "tag": { "alias": "tag"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "counterStatus": { "alias": "counterStatus"; "required": false; "isSignal": true; }; "counterMax": { "alias": "counterMax"; "required": false; "isSignal": true; }; "counterId": { "alias": "counterId"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
27
25
|
}
|
|
28
26
|
|
|
29
|
-
|
|
30
|
-
|
|
27
|
+
declare const LU_FORM_LABEL_TRANSLATIONS: InjectionToken<LuTranslation<LuFormLabelTranslations>>;
|
|
28
|
+
interface LuFormLabelTranslations {
|
|
29
|
+
counterAlt: string;
|
|
30
|
+
tooltipAlt: string;
|
|
31
|
+
}
|
|
32
|
+
declare const luFormLabelTranslations: LuTranslation<LuFormLabelTranslations>;
|
|
33
|
+
|
|
34
|
+
export { FORM_LABEL_SIZE, FormLabelComponent, LU_FORM_LABEL_TRANSLATIONS, luFormLabelTranslations };
|
|
35
|
+
export type { FormLabelSize, LuFormLabelTranslations };
|
|
@@ -3,11 +3,17 @@ import { InjectionToken } from '@angular/core';
|
|
|
3
3
|
import { LuDialogRef } from '@lucca-front/ng/dialog';
|
|
4
4
|
|
|
5
5
|
declare class FormComponent {
|
|
6
|
+
#private;
|
|
6
7
|
protected readonly dialogRef: LuDialogRef<any, any>;
|
|
7
8
|
readonly maxWidth: _angular_core.InputSignalWithTransform<boolean, boolean | "" | "false" | "true">;
|
|
8
9
|
readonly presentation: _angular_core.InputSignalWithTransform<boolean, boolean | "" | "false" | "true">;
|
|
10
|
+
/**
|
|
11
|
+
* When enabled, submitting an invalid form moves focus to the first invalid field. Disabled by default.
|
|
12
|
+
*/
|
|
13
|
+
readonly focusInvalidOnSubmit: _angular_core.InputSignalWithTransform<boolean, boolean | "" | "false" | "true">;
|
|
14
|
+
protected onSubmit(): void;
|
|
9
15
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FormComponent, never>;
|
|
10
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<FormComponent, "form[luForm]", never, { "maxWidth": { "alias": "maxWidth"; "required": false; "isSignal": true; }; "presentation": { "alias": "presentation"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
16
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<FormComponent, "form[luForm]", never, { "maxWidth": { "alias": "maxWidth"; "required": false; "isSignal": true; }; "presentation": { "alias": "presentation"; "required": false; "isSignal": true; }; "focusInvalidOnSubmit": { "alias": "focusInvalidOnSubmit"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
11
17
|
}
|
|
12
18
|
|
|
13
19
|
declare const LU_FORM_INSTANCE: InjectionToken<FormComponent>;
|
|
@@ -2,12 +2,14 @@ import * as _angular_core from '@angular/core';
|
|
|
2
2
|
import { InjectionToken, Signal, WritableSignal, OnInit, OnDestroy, ElementRef, ViewContainerRef, TemplateRef } from '@angular/core';
|
|
3
3
|
import * as lexical from 'lexical';
|
|
4
4
|
import { LexicalEditor, Klass, LexicalNode, LexicalNodeReplacement, NodeKey, EditorConfig, ElementDOMSlot, DOMExportOutput, DecoratorNode, DOMConversionMap, Spread, SerializedLexicalNode, LexicalUpdateJSON, TextFormatType } from 'lexical';
|
|
5
|
+
import * as _lucca_front_ng_forms_rich_text_input from '@lucca-front/ng/forms/rich-text-input';
|
|
5
6
|
import { DomPortal } from '@angular/cdk/portal';
|
|
6
7
|
import { ControlValueAccessor, FormControl } from '@angular/forms';
|
|
7
8
|
import { LuSimpleSelectInputComponent } from '@lucca-front/ng/simple-select';
|
|
8
9
|
import { LinkNode, LinkAttributes, SerializedLinkNode, AutoLinkNode, SerializedAutoLinkNode } from '@lexical/link';
|
|
9
10
|
import { ConnectionPositionPair } from '@angular/cdk/overlay';
|
|
10
11
|
import { LuccaIcon } from '@lucca-front/icons';
|
|
12
|
+
import { LuTranslation } from '@lucca-front/ng/core';
|
|
11
13
|
|
|
12
14
|
type UnregisterFn = () => void;
|
|
13
15
|
declare abstract class RichTextFormatter {
|
|
@@ -18,32 +20,6 @@ declare abstract class RichTextFormatter {
|
|
|
18
20
|
}
|
|
19
21
|
declare const RICH_TEXT_FORMATTER: InjectionToken<RichTextFormatter>;
|
|
20
22
|
|
|
21
|
-
interface ILuRichTextInputLabel {
|
|
22
|
-
clearFormat: string;
|
|
23
|
-
linksCancel: string;
|
|
24
|
-
linksDelete: string;
|
|
25
|
-
linksHref: string;
|
|
26
|
-
linksLabel: string;
|
|
27
|
-
linksSubmit: string;
|
|
28
|
-
linksPlaceholder: string;
|
|
29
|
-
listsNumberedLabel: string;
|
|
30
|
-
listsBulletLabel: string;
|
|
31
|
-
headingsLabel: string;
|
|
32
|
-
headings0: string;
|
|
33
|
-
headings1: string;
|
|
34
|
-
headings2: string;
|
|
35
|
-
headings3: string;
|
|
36
|
-
headings4: string;
|
|
37
|
-
headings5: string;
|
|
38
|
-
headings6: string;
|
|
39
|
-
stylesItalic: string;
|
|
40
|
-
stylesBold: string;
|
|
41
|
-
stylesUnderline: string;
|
|
42
|
-
stylesStrikethrough: string;
|
|
43
|
-
insertTag: string;
|
|
44
|
-
selectTag: string;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
23
|
declare const INITIAL_UPDATE_TAG = "initial-update";
|
|
48
24
|
interface RichTextPluginComponent {
|
|
49
25
|
setEditorInstance(editor: LexicalEditor): void;
|
|
@@ -84,7 +60,7 @@ declare class RichTextInputComponent implements OnInit, OnDestroy, ControlValueA
|
|
|
84
60
|
|
|
85
61
|
declare class ClearFormatComponent implements RichTextPluginComponent, OnDestroy {
|
|
86
62
|
#private;
|
|
87
|
-
readonly intl: _angular_core.InputSignalWithTransform<ILuRichTextInputLabel, Partial<ILuRichTextInputLabel>>;
|
|
63
|
+
readonly intl: _angular_core.InputSignalWithTransform<_lucca_front_ng_forms_rich_text_input.ILuRichTextInputLabel, Partial<_lucca_front_ng_forms_rich_text_input.ILuRichTextInputLabel>>;
|
|
88
64
|
readonly element: _angular_core.Signal<ElementRef<any>>;
|
|
89
65
|
readonly tabindex: _angular_core.WritableSignal<number>;
|
|
90
66
|
readonly isDisabled: _angular_core.WritableSignal<boolean>;
|
|
@@ -103,7 +79,7 @@ declare class HeadingsComponent implements OnDestroy, RichTextPluginComponent {
|
|
|
103
79
|
readonly tabindex: _angular_core.WritableSignal<number>;
|
|
104
80
|
readonly maxHeadingLevel: _angular_core.InputSignalWithTransform<1 | 2 | 3 | 4 | 5 | 6, 1 | "1" | "2" | "3" | 2 | 3 | 4 | 5 | 6 | "4" | "5" | "6">;
|
|
105
81
|
readonly headingOptions: _angular_core.Signal<("h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "paragraph")[]>;
|
|
106
|
-
readonly intl: _angular_core.InputSignalWithTransform<ILuRichTextInputLabel, Partial<ILuRichTextInputLabel>>;
|
|
82
|
+
readonly intl: _angular_core.InputSignalWithTransform<_lucca_front_ng_forms_rich_text_input.ILuRichTextInputLabel, Partial<_lucca_front_ng_forms_rich_text_input.ILuRichTextInputLabel>>;
|
|
107
83
|
readonly headingLabels: _angular_core.Signal<Record<"h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "paragraph", [string, number]>>;
|
|
108
84
|
readonly formControl: FormControl<"h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "paragraph">;
|
|
109
85
|
setEditorInstance(editor: LexicalEditor): void;
|
|
@@ -172,7 +148,7 @@ declare class LinkComponent implements OnDestroy, RichTextPluginComponent {
|
|
|
172
148
|
readonly tabindex: _angular_core.WritableSignal<number>;
|
|
173
149
|
readonly active: _angular_core.WritableSignal<boolean>;
|
|
174
150
|
readonly isDisabled: _angular_core.WritableSignal<boolean>;
|
|
175
|
-
readonly intl: _angular_core.InputSignalWithTransform<ILuRichTextInputLabel, Partial<ILuRichTextInputLabel>>;
|
|
151
|
+
readonly intl: _angular_core.InputSignalWithTransform<_lucca_front_ng_forms_rich_text_input.ILuRichTextInputLabel, Partial<_lucca_front_ng_forms_rich_text_input.ILuRichTextInputLabel>>;
|
|
176
152
|
readonly isEditable: _angular_core.WritableSignal<boolean>;
|
|
177
153
|
setEditorInstance(editor: LexicalEditor): void;
|
|
178
154
|
getLexicalNodes(): (typeof PopoverLinkNode | typeof PopoverAutoLinkNode | {
|
|
@@ -196,7 +172,7 @@ declare class LinkComponent implements OnDestroy, RichTextPluginComponent {
|
|
|
196
172
|
declare class ListStyleToolbarComponent implements OnDestroy, RichTextPluginComponent {
|
|
197
173
|
#private;
|
|
198
174
|
readonly pluginComponents: _angular_core.Signal<readonly RichTextPluginComponent[]>;
|
|
199
|
-
readonly intl: _angular_core.InputSignalWithTransform<ILuRichTextInputLabel, Partial<ILuRichTextInputLabel>>;
|
|
175
|
+
readonly intl: _angular_core.InputSignalWithTransform<_lucca_front_ng_forms_rich_text_input.ILuRichTextInputLabel, Partial<_lucca_front_ng_forms_rich_text_input.ILuRichTextInputLabel>>;
|
|
200
176
|
setEditorInstance(editor: LexicalEditor): void;
|
|
201
177
|
getLexicalNodes?(): Klass<LexicalNode>[];
|
|
202
178
|
setDisabledState(isDisabled: boolean): void;
|
|
@@ -214,7 +190,7 @@ type Tag = {
|
|
|
214
190
|
|
|
215
191
|
declare class RichTextPluginTagComponent implements RichTextPluginComponent, OnDestroy {
|
|
216
192
|
#private;
|
|
217
|
-
readonly intl: _angular_core.InputSignalWithTransform<ILuRichTextInputLabel, Partial<ILuRichTextInputLabel>>;
|
|
193
|
+
readonly intl: _angular_core.InputSignalWithTransform<_lucca_front_ng_forms_rich_text_input.ILuRichTextInputLabel, Partial<_lucca_front_ng_forms_rich_text_input.ILuRichTextInputLabel>>;
|
|
218
194
|
readonly tags: _angular_core.InputSignal<Tag[]>;
|
|
219
195
|
readonly isDisabled: _angular_core.WritableSignal<boolean>;
|
|
220
196
|
readonly focusIndex: _angular_core.WritableSignal<number>;
|
|
@@ -246,6 +222,8 @@ type SerializedTagNode = Spread<{
|
|
|
246
222
|
tagDescription?: string;
|
|
247
223
|
disabled?: boolean;
|
|
248
224
|
}, SerializedLexicalNode>;
|
|
225
|
+
/** Destroy stale chip components once Lexical has reconciled the DOM. */
|
|
226
|
+
declare function registerTagChipsCleanup(editor: LexicalEditor): () => void;
|
|
249
227
|
declare class TagNode extends DecoratorNode<string> {
|
|
250
228
|
#private;
|
|
251
229
|
setViewContainerRef(vcr: ViewContainerRef): this;
|
|
@@ -265,7 +243,6 @@ declare class TagNode extends DecoratorNode<string> {
|
|
|
265
243
|
decorate(): string;
|
|
266
244
|
createDOM(_config: EditorConfig, editor: LexicalEditor): HTMLElement;
|
|
267
245
|
updateDOM(prevNode: TagNode, _dom: HTMLElement, _config: EditorConfig): boolean;
|
|
268
|
-
remove(preserveEmptyParent?: boolean): void;
|
|
269
246
|
exportDOM(): DOMExportOutput;
|
|
270
247
|
static importDOM(): DOMConversionMap;
|
|
271
248
|
static importJSON(serializedNode: SerializedTagNode): TagNode;
|
|
@@ -296,7 +273,7 @@ declare class TextStyleComponent implements OnDestroy, RichTextPluginComponent {
|
|
|
296
273
|
|
|
297
274
|
declare class TextStyleToolbarComponent implements RichTextPluginComponent {
|
|
298
275
|
readonly pluginComponents: _angular_core.Signal<readonly RichTextPluginComponent[]>;
|
|
299
|
-
readonly intl: _angular_core.InputSignalWithTransform<ILuRichTextInputLabel, Partial<ILuRichTextInputLabel>>;
|
|
276
|
+
readonly intl: _angular_core.InputSignalWithTransform<_lucca_front_ng_forms_rich_text_input.ILuRichTextInputLabel, Partial<_lucca_front_ng_forms_rich_text_input.ILuRichTextInputLabel>>;
|
|
300
277
|
setEditorInstance(editor: LexicalEditor): void;
|
|
301
278
|
setDisabledState(isDisabled: boolean): void;
|
|
302
279
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TextStyleToolbarComponent, never>;
|
|
@@ -312,5 +289,33 @@ declare class RichTextInputToolbarComponent implements RichTextPluginComponent {
|
|
|
312
289
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<RichTextInputToolbarComponent, "lu-rich-text-input-toolbar", never, {}, {}, never, never, true, never>;
|
|
313
290
|
}
|
|
314
291
|
|
|
315
|
-
|
|
316
|
-
|
|
292
|
+
declare const LU_RICH_TEXT_INPUT_TRANSLATIONS: InjectionToken<LuTranslation<ILuRichTextInputLabel>>;
|
|
293
|
+
interface ILuRichTextInputLabel {
|
|
294
|
+
clearFormat: string;
|
|
295
|
+
linksCancel: string;
|
|
296
|
+
linksDelete: string;
|
|
297
|
+
linksHref: string;
|
|
298
|
+
linksLabel: string;
|
|
299
|
+
linksSubmit: string;
|
|
300
|
+
linksPlaceholder: string;
|
|
301
|
+
listsNumberedLabel: string;
|
|
302
|
+
listsBulletLabel: string;
|
|
303
|
+
headingsLabel: string;
|
|
304
|
+
headings0: string;
|
|
305
|
+
headings1: string;
|
|
306
|
+
headings2: string;
|
|
307
|
+
headings3: string;
|
|
308
|
+
headings4: string;
|
|
309
|
+
headings5: string;
|
|
310
|
+
headings6: string;
|
|
311
|
+
stylesItalic: string;
|
|
312
|
+
stylesBold: string;
|
|
313
|
+
stylesUnderline: string;
|
|
314
|
+
stylesStrikethrough: string;
|
|
315
|
+
insertTag: string;
|
|
316
|
+
selectTag: string;
|
|
317
|
+
}
|
|
318
|
+
declare const luRichTextInputTranslations: LuTranslation<ILuRichTextInputLabel>;
|
|
319
|
+
|
|
320
|
+
export { $createTagNode, $isTagNode, ClearFormatComponent, HeadingsComponent, INITIAL_UPDATE_TAG, LU_RICH_TEXT_INPUT_TRANSLATIONS, LinkComponent, ListStyleToolbarComponent, RICH_TEXT_FORMATTER, RICH_TEXT_PLUGIN_COMPONENT, RichTextFormatter, RichTextInputComponent, RichTextInputToolbarComponent, RichTextPluginTagComponent, TagNode, TextStyleComponent, TextStyleToolbarComponent, luRichTextInputTranslations, registerTagChipsCleanup };
|
|
321
|
+
export type { ILuRichTextInputLabel, RichTextPluginComponent, SerializedTagNode, Tag };
|
|
@@ -2,13 +2,13 @@ import * as _angular_core from '@angular/core';
|
|
|
2
2
|
import { OnDestroy, OnInit, Signal, WritableSignal, AfterViewInit, ElementRef, InjectionToken } from '@angular/core';
|
|
3
3
|
import * as _angular_forms from '@angular/forms';
|
|
4
4
|
import { NgModel, FormControlDirective, FormControlName, NgControl, FormControl, ControlValueAccessor, ValidatorFn } from '@angular/forms';
|
|
5
|
-
import { FilterPillInputComponent, FilterPillLayout } from '@lucca-front/ng/filter-pills';
|
|
5
|
+
import { FilterPillInputComponent, FilterPillLayout } from '@lucca-front/ng/filter-pills/core';
|
|
6
6
|
import { FormFieldComponent } from '@lucca-front/ng/form-field';
|
|
7
|
+
import * as _lucca_front_ng_forms from '@lucca-front/ng/forms';
|
|
7
8
|
import { ConnectionPositionPair } from '@angular/cdk/overlay';
|
|
8
9
|
import { NumberFormatStyle, NumberFormatCurrencyDisplay, NumberFormatUnit, NumberFormatUnitDisplay } from '@lucca-front/ng/number-format';
|
|
9
10
|
import { LuccaIcon } from '@lucca-front/icons';
|
|
10
11
|
import { PortalContent, LuTranslation } from '@lucca-front/ng/core';
|
|
11
|
-
import * as _lucca_front_ng_forms from '@lucca-front/ng/forms';
|
|
12
12
|
|
|
13
13
|
declare class FormFieldIdDirective implements OnDestroy {
|
|
14
14
|
#private;
|
|
@@ -89,35 +89,7 @@ declare const INVARIANT_CULTURE_CODE = "invariant";
|
|
|
89
89
|
|
|
90
90
|
declare class MultilanguageInputComponent implements ControlValueAccessor {
|
|
91
91
|
#private;
|
|
92
|
-
readonly intl: _angular_core.InputSignalWithTransform<
|
|
93
|
-
clear: string;
|
|
94
|
-
toggleMultilanguage: string;
|
|
95
|
-
translateTo: string;
|
|
96
|
-
translateWithAI: string;
|
|
97
|
-
invariantInfo: string;
|
|
98
|
-
requiredError: string;
|
|
99
|
-
} | {
|
|
100
|
-
clear: string;
|
|
101
|
-
toggleMultilanguage: string;
|
|
102
|
-
translateTo: string;
|
|
103
|
-
translateWithAI: string;
|
|
104
|
-
invariantInfo: string;
|
|
105
|
-
requiredError: string;
|
|
106
|
-
}, Partial<{
|
|
107
|
-
clear: string;
|
|
108
|
-
toggleMultilanguage: string;
|
|
109
|
-
translateTo: string;
|
|
110
|
-
translateWithAI: string;
|
|
111
|
-
invariantInfo: string;
|
|
112
|
-
requiredError: string;
|
|
113
|
-
} | {
|
|
114
|
-
clear: string;
|
|
115
|
-
toggleMultilanguage: string;
|
|
116
|
-
translateTo: string;
|
|
117
|
-
translateWithAI: string;
|
|
118
|
-
invariantInfo: string;
|
|
119
|
-
requiredError: string;
|
|
120
|
-
}>>;
|
|
92
|
+
readonly intl: _angular_core.InputSignalWithTransform<_lucca_front_ng_forms.LuMultilanguageInputTranslations, Partial<_lucca_front_ng_forms.LuMultilanguageInputTranslations>>;
|
|
121
93
|
readonly formFieldRef: FormFieldComponent;
|
|
122
94
|
readonly formFieldSize: _angular_core.InputSignal<"XS" | "S" | "M">;
|
|
123
95
|
protected onTouched: () => void;
|
|
@@ -159,10 +131,6 @@ declare function areAllLanguagesFilled(model: MultilanguageTranslation[]): boole
|
|
|
159
131
|
declare function isInvariantFilled(model: MultilanguageTranslation[]): boolean;
|
|
160
132
|
declare const MultiLanguageInputValidators: Record<'allLanguagesRequired' | 'invariantRequired', ValidatorFn>;
|
|
161
133
|
|
|
162
|
-
interface LuNumberFormatFieldLabel {
|
|
163
|
-
clear: string;
|
|
164
|
-
}
|
|
165
|
-
|
|
166
134
|
type TextfieldIconAddon = {
|
|
167
135
|
icon: LuccaIcon;
|
|
168
136
|
ariaLabel: string;
|
|
@@ -206,7 +174,7 @@ declare class NumberFormatInputComponent implements AfterViewInit {
|
|
|
206
174
|
unitDisplay: NumberFormatUnitDisplay;
|
|
207
175
|
}>;
|
|
208
176
|
readonly formattedValue: _angular_core.Signal<string>;
|
|
209
|
-
readonly intl: _angular_core.InputSignalWithTransform<LuNumberFormatFieldLabel, Partial<LuNumberFormatFieldLabel>>;
|
|
177
|
+
readonly intl: _angular_core.InputSignalWithTransform<_lucca_front_ng_forms.LuNumberFormatFieldLabel, Partial<_lucca_front_ng_forms.LuNumberFormatFieldLabel>>;
|
|
210
178
|
clearValue(): void;
|
|
211
179
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<NumberFormatInputComponent, never>;
|
|
212
180
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<NumberFormatInputComponent, "lu-number-format-input", never, { "formatStyle": { "alias": "formatStyle"; "required": false; "isSignal": true; }; "useAutoPrefixSuffix": { "alias": "useAutoPrefixSuffix"; "required": false; "isSignal": true; }; "prefix": { "alias": "prefix"; "required": false; "isSignal": true; }; "suffix": { "alias": "suffix"; "required": false; "isSignal": true; }; "currency": { "alias": "currency"; "required": false; "isSignal": true; }; "currencyDisplay": { "alias": "currencyDisplay"; "required": false; "isSignal": true; }; "unit": { "alias": "unit"; "required": false; "isSignal": true; }; "unitDisplay": { "alias": "unitDisplay"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "hasClearer": { "alias": "hasClearer"; "required": false; "isSignal": true; }; "valueAlignRight": { "alias": "valueAlignRight"; "required": false; "isSignal": true; }; "intl": { "alias": "intl"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof NoopValueAccessorDirective; inputs: {}; outputs: {}; }]>;
|
|
@@ -317,15 +285,20 @@ declare class TextInputComponent {
|
|
|
317
285
|
*/
|
|
318
286
|
readonly searchIcon: _angular_core.InputSignal<LuccaIcon>;
|
|
319
287
|
readonly type: _angular_core.InputSignal<TextFieldType>;
|
|
288
|
+
/**
|
|
289
|
+
* Width of the input itself, using the same scale as the form field width
|
|
290
|
+
*/
|
|
291
|
+
readonly width: _angular_core.InputSignalWithTransform<10 | 20 | 30 | 40 | 50 | 60, 10 | 20 | 30 | 40 | 50 | 60 | "null" | "10" | "20" | "30" | "40" | "50" | "60">;
|
|
320
292
|
readonly blur: _angular_core.OutputEmitterRef<FocusEvent>;
|
|
321
293
|
protected readonly showPassword: _angular_core.WritableSignal<boolean>;
|
|
322
294
|
protected readonly typeRef: _angular_core.Signal<TextFieldType>;
|
|
323
295
|
protected readonly hasTogglePasswordVisibilityIcon: _angular_core.Signal<boolean>;
|
|
296
|
+
protected readonly widthClass: _angular_core.Signal<string>;
|
|
324
297
|
protected hasValue(): boolean;
|
|
325
298
|
clearValue(): void;
|
|
326
299
|
togglePasswordVisibility(): void;
|
|
327
300
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TextInputComponent, never>;
|
|
328
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<TextInputComponent, "lu-text-input", never, { "intl": { "alias": "intl"; "required": false; "isSignal": true; }; "mask": { "alias": "mask"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "autocomplete": { "alias": "autocomplete"; "required": false; "isSignal": true; }; "hasClearer": { "alias": "hasClearer"; "required": false; "isSignal": true; }; "hasSearchIcon": { "alias": "hasSearchIcon"; "required": false; "isSignal": true; }; "valueAlignRight": { "alias": "valueAlignRight"; "required": false; "isSignal": true; }; "prefix": { "alias": "prefix"; "required": false; "isSignal": true; }; "suffix": { "alias": "suffix"; "required": false; "isSignal": true; }; "minlength": { "alias": "minlength"; "required": false; "isSignal": true; }; "maxlength": { "alias": "maxlength"; "required": false; "isSignal": true; }; "searchIcon": { "alias": "searchIcon"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; }, { "blur": "blur"; }, never, never, true, [{ directive: typeof NoopValueAccessorDirective; inputs: {}; outputs: {}; }]>;
|
|
301
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<TextInputComponent, "lu-text-input", never, { "intl": { "alias": "intl"; "required": false; "isSignal": true; }; "mask": { "alias": "mask"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "autocomplete": { "alias": "autocomplete"; "required": false; "isSignal": true; }; "hasClearer": { "alias": "hasClearer"; "required": false; "isSignal": true; }; "hasSearchIcon": { "alias": "hasSearchIcon"; "required": false; "isSignal": true; }; "valueAlignRight": { "alias": "valueAlignRight"; "required": false; "isSignal": true; }; "prefix": { "alias": "prefix"; "required": false; "isSignal": true; }; "suffix": { "alias": "suffix"; "required": false; "isSignal": true; }; "minlength": { "alias": "minlength"; "required": false; "isSignal": true; }; "maxlength": { "alias": "maxlength"; "required": false; "isSignal": true; }; "searchIcon": { "alias": "searchIcon"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; }, { "blur": "blur"; }, never, never, true, [{ directive: typeof NoopValueAccessorDirective; inputs: {}; outputs: {}; }]>;
|
|
329
302
|
}
|
|
330
303
|
|
|
331
304
|
declare class TextareaInputComponent implements OnInit {
|
|
@@ -352,6 +325,23 @@ interface LuNumberFieldLabel {
|
|
|
352
325
|
}
|
|
353
326
|
declare const luNumberFieldTranslations: LuTranslation<LuNumberFieldLabel>;
|
|
354
327
|
|
|
328
|
+
interface LuMultilanguageInputTranslations {
|
|
329
|
+
clear: string;
|
|
330
|
+
toggleMultilanguage: string;
|
|
331
|
+
translateTo: string;
|
|
332
|
+
translateWithAI: string;
|
|
333
|
+
invariantInfo: string;
|
|
334
|
+
requiredError: string;
|
|
335
|
+
}
|
|
336
|
+
declare const LU_MULTILANGUAGE_INPUT_TRANSLATIONS: InjectionToken<LuTranslation<LuMultilanguageInputTranslations>>;
|
|
337
|
+
declare const luMultilanguageInputTranslations: LuTranslation<LuMultilanguageInputTranslations>;
|
|
338
|
+
|
|
339
|
+
declare const LU_NUMBERFORMATFIELD_TRANSLATIONS: InjectionToken<LuTranslation<LuNumberFormatFieldLabel>>;
|
|
340
|
+
interface LuNumberFormatFieldLabel {
|
|
341
|
+
clear: string;
|
|
342
|
+
}
|
|
343
|
+
declare const luNumberFormatFieldTranslations: LuTranslation<LuNumberFormatFieldLabel>;
|
|
344
|
+
|
|
355
345
|
declare const LU_TEXTFIELD_TRANSLATIONS: InjectionToken<LuTranslation<LuTextfieldLabel>>;
|
|
356
346
|
interface LuTextfieldLabel {
|
|
357
347
|
clear: string;
|
|
@@ -386,12 +376,8 @@ interface ColorOption {
|
|
|
386
376
|
borderColor?: string;
|
|
387
377
|
}
|
|
388
378
|
|
|
389
|
-
interface LuColorLabel {
|
|
390
|
-
color: string;
|
|
391
|
-
}
|
|
392
|
-
|
|
393
379
|
declare class ColorInputComponent {
|
|
394
|
-
readonly intl: _angular_core.InputSignalWithTransform<LuColorLabel, Partial<LuColorLabel>>;
|
|
380
|
+
readonly intl: _angular_core.InputSignalWithTransform<_lucca_front_ng_forms.LuColorLabel, Partial<_lucca_front_ng_forms.LuColorLabel>>;
|
|
395
381
|
readonly pointerNavigation: Signal<boolean>;
|
|
396
382
|
readonly mouseHighlighted: _angular_core.WritableSignal<string>;
|
|
397
383
|
readonly keyboardHighlighted: _angular_core.WritableSignal<string>;
|
|
@@ -410,5 +396,11 @@ declare class ColorInputComponent {
|
|
|
410
396
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ColorInputComponent, "lu-color-input", never, { "intl": { "alias": "intl"; "required": false; "isSignal": true; }; "colors": { "alias": "colors"; "required": true; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "compact": { "alias": "compact"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof NoopValueAccessorDirective; inputs: {}; outputs: {}; }]>;
|
|
411
397
|
}
|
|
412
398
|
|
|
413
|
-
|
|
414
|
-
|
|
399
|
+
declare const LU_COLOR_TRANSLATIONS: InjectionToken<LuTranslation<LuColorLabel>>;
|
|
400
|
+
interface LuColorLabel {
|
|
401
|
+
color: string;
|
|
402
|
+
}
|
|
403
|
+
declare const luColorTranslations: LuTranslation<LuColorLabel>;
|
|
404
|
+
|
|
405
|
+
export { CheckboxInputComponent, ColorInputComponent, FIELDSET_SIZE, FORM_FIELD_ID_LABELLED_BY_STRATEGY, FieldsetComponent, FormFieldIdDirective, INVARIANT_CULTURE_CODE, LU_COLOR_TRANSLATIONS, LU_MULTILANGUAGE_INPUT_TRANSLATIONS, LU_NUMBERFIELD_TRANSLATIONS, LU_NUMBERFORMATFIELD_TRANSLATIONS, LU_TEXTFIELD_TRANSLATIONS, MultiLanguageInputValidators, MultilanguageInputComponent, NoopValueAccessorDirective, NumberFormatInputComponent, NumberInputComponent, RADIO_GROUP_INPUT_ARROW, RADIO_GROUP_INPUT_FRAMED_SIZE, RADIO_GROUP_INPUT_SIZE, RadioComponent, RadioGroupInputComponent, SwitchInputComponent, TextInputComponent, TextareaInputComponent, areAllLanguagesFilled, injectNgControl, isInvariantFilled, luColorTranslations, luMultilanguageInputTranslations, luNumberFieldTranslations, luNumberFormatFieldTranslations, luTextfieldTranslations };
|
|
406
|
+
export type { ColorOption, FieldsetSize, FormFieldIdLabelledByStrategy, LuColorLabel, LuMultilanguageInputTranslations, LuNumberFieldLabel, LuNumberFormatFieldLabel, LuTextfieldLabel, MultilanguageTranslation, RadioGroupInputArrow, RadioGroupInputFramedSize, RadioGroupInputSize, TextInputAddon, TextfieldIconAddon, TextfieldTextAddon };
|
|
@@ -38,7 +38,7 @@ declare class HighlightDataComponent {
|
|
|
38
38
|
*/
|
|
39
39
|
readonly theme: _angular_core.InputSignal<"white" | "light" | "dark">;
|
|
40
40
|
/**
|
|
41
|
-
* Apply
|
|
41
|
+
* Apply a palette to the component and its bubble colors
|
|
42
42
|
* This specific palette must be set up on config.scss
|
|
43
43
|
*/
|
|
44
44
|
readonly palette: _angular_core.InputSignal<string>;
|
|
@@ -61,7 +61,6 @@ declare class HighlightDataComponent {
|
|
|
61
61
|
readonly nested: _angular_core.InputSignalWithTransform<boolean, boolean | "" | "false" | "true">;
|
|
62
62
|
readonly illustrationSrc: _angular_core.Signal<string>;
|
|
63
63
|
readonly bubbleSrc: _angular_core.Signal<string>;
|
|
64
|
-
readonly bubbleTheme: _angular_core.Signal<"light" | "dark">;
|
|
65
64
|
constructor();
|
|
66
65
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<HighlightDataComponent, never>;
|
|
67
66
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<HighlightDataComponent, "lu-highlight-data", never, { "heading": { "alias": "heading"; "required": true; "isSignal": true; }; "value": { "alias": "value"; "required": true; "isSignal": true; }; "subText": { "alias": "subText"; "required": false; "isSignal": true; }; "bubble": { "alias": "bubble"; "required": false; "isSignal": true; }; "theme": { "alias": "theme"; "required": false; "isSignal": true; }; "palette": { "alias": "palette"; "required": false; "isSignal": true; }; "illustration": { "alias": "illustration"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "valueFirst": { "alias": "valueFirst"; "required": false; "isSignal": true; }; "nested": { "alias": "nested"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
@@ -1,25 +1,34 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
|
-
import { ElementRef } from '@angular/core';
|
|
2
|
+
import { ElementRef, InjectionToken } from '@angular/core';
|
|
3
|
+
import * as _lucca_front_ng_impersonation from '@lucca-front/ng/impersonation';
|
|
3
4
|
import * as _lucca_front_ng_core_select_user from '@lucca-front/ng/core-select/user';
|
|
4
5
|
import { ConnectionPositionPair } from '@angular/cdk/overlay';
|
|
5
6
|
import { PopoverDirective } from '@lucca-front/ng/popover2';
|
|
6
7
|
import { LuSimpleSelectInputComponent } from '@lucca-front/ng/simple-select';
|
|
7
8
|
import { ILuUser } from '@lucca-front/ng/user';
|
|
8
|
-
|
|
9
|
-
interface LuImpersonationTranslations {
|
|
10
|
-
a11yNavigationDescription: string;
|
|
11
|
-
switchProfile: string;
|
|
12
|
-
clear: string;
|
|
13
|
-
}
|
|
9
|
+
import { LuTranslation } from '@lucca-front/ng/core';
|
|
14
10
|
|
|
15
11
|
declare class ImpersonationComponent {
|
|
16
12
|
protected readonly elementRef: ElementRef<any>;
|
|
17
|
-
readonly intl: _angular_core.InputSignalWithTransform<_lucca_front_ng_core_select_user.LuCoreSelectUserTranslations & LuImpersonationTranslations, Partial<_lucca_front_ng_core_select_user.LuCoreSelectUserTranslations & LuImpersonationTranslations>>;
|
|
13
|
+
readonly intl: _angular_core.InputSignalWithTransform<_lucca_front_ng_core_select_user.LuCoreSelectUserTranslations & _lucca_front_ng_impersonation.LuImpersonationTranslations, Partial<_lucca_front_ng_core_select_user.LuCoreSelectUserTranslations & _lucca_front_ng_impersonation.LuImpersonationTranslations>>;
|
|
18
14
|
protected readonly currentUserId: number;
|
|
19
15
|
readonly inputComponentRef: _angular_core.Signal<LuSimpleSelectInputComponent<ILuUser>>;
|
|
20
16
|
readonly popoverRef: _angular_core.Signal<PopoverDirective>;
|
|
21
17
|
readonly selectedUser: _angular_core.ModelSignal<ILuUser>;
|
|
22
18
|
readonly enableFormerEmployees: _angular_core.InputSignalWithTransform<boolean, boolean | "" | "false" | "true">;
|
|
19
|
+
/**
|
|
20
|
+
* Restricts the users to the ones reachable through these operations, scoped by `appInstanceId`.
|
|
21
|
+
*/
|
|
22
|
+
readonly operationIds: _angular_core.InputSignal<readonly number[]>;
|
|
23
|
+
/**
|
|
24
|
+
* Restricts the users to the ones reachable through these unique operations.
|
|
25
|
+
* Takes precedence over `operationIds` / `appInstanceId`, which the API then ignores.
|
|
26
|
+
*/
|
|
27
|
+
readonly uniqueOperationIds: _angular_core.InputSignal<readonly number[]>;
|
|
28
|
+
/**
|
|
29
|
+
* Application instance the `operationIds` are scoped to. Unused with `uniqueOperationIds`.
|
|
30
|
+
*/
|
|
31
|
+
readonly appInstanceId: _angular_core.InputSignalWithTransform<number, number | `${number}` | "null">;
|
|
23
32
|
readonly isNotMe: _angular_core.Signal<boolean>;
|
|
24
33
|
readonly clear: _angular_core.OutputEmitterRef<void>;
|
|
25
34
|
readonly popoverPositions: ConnectionPositionPair[];
|
|
@@ -27,7 +36,16 @@ declare class ImpersonationComponent {
|
|
|
27
36
|
closePopover: () => void;
|
|
28
37
|
updatePosition: () => void;
|
|
29
38
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ImpersonationComponent, never>;
|
|
30
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ImpersonationComponent, "lu-impersonation", never, { "intl": { "alias": "intl"; "required": false; "isSignal": true; }; "selectedUser": { "alias": "selectedUser"; "required": false; "isSignal": true; }; "enableFormerEmployees": { "alias": "enableFormerEmployees"; "required": false; "isSignal": true; }; }, { "selectedUser": "selectedUserChange"; "clear": "clear"; }, never, never, true, never>;
|
|
39
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ImpersonationComponent, "lu-impersonation", never, { "intl": { "alias": "intl"; "required": false; "isSignal": true; }; "selectedUser": { "alias": "selectedUser"; "required": false; "isSignal": true; }; "enableFormerEmployees": { "alias": "enableFormerEmployees"; "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; }; }, { "selectedUser": "selectedUserChange"; "clear": "clear"; }, never, never, true, never>;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
declare const LU_IMPERSONATION_TRANSLATIONS: InjectionToken<LuTranslation<LuImpersonationTranslations>>;
|
|
43
|
+
interface LuImpersonationTranslations {
|
|
44
|
+
a11yNavigationDescription: string;
|
|
45
|
+
switchProfile: string;
|
|
46
|
+
clear: string;
|
|
31
47
|
}
|
|
48
|
+
declare const luImpersonationTranslations: LuTranslation<LuImpersonationTranslations>;
|
|
32
49
|
|
|
33
|
-
export { ImpersonationComponent };
|
|
50
|
+
export { ImpersonationComponent, LU_IMPERSONATION_TRANSLATIONS, luImpersonationTranslations };
|
|
51
|
+
export type { LuImpersonationTranslations };
|
|
@@ -45,9 +45,11 @@ declare class IndexTableRowCellHeaderComponent extends BaseIndexTableCell {
|
|
|
45
45
|
readonly hiddenLabel: _angular_core.InputSignalWithTransform<boolean, boolean | "" | "false" | "true">;
|
|
46
46
|
readonly actions: _angular_core.InputSignalWithTransform<boolean, boolean | "" | "false" | "true">;
|
|
47
47
|
readonly inlineSize: _angular_core.InputSignalWithTransform<number, number | `${number}`>;
|
|
48
|
+
readonly sortWithEllipsis: _angular_core.InputSignalWithTransform<boolean, boolean | "" | "false" | "true">;
|
|
49
|
+
protected readonly sortButtonRef: _angular_core.Signal<ElementRef<HTMLElement>>;
|
|
48
50
|
toggleSort(): void;
|
|
49
51
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<IndexTableRowCellHeaderComponent, never>;
|
|
50
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<IndexTableRowCellHeaderComponent, "th[luIndexTableCell]", never, { "sort": { "alias": "sort"; "required": false; "isSignal": true; }; "selectable": { "alias": "selectable"; "required": false; "isSignal": true; }; "hiddenLabel": { "alias": "hiddenLabel"; "required": false; "isSignal": true; }; "actions": { "alias": "actions"; "required": false; "isSignal": true; }; "inlineSize": { "alias": "inlineSize"; "required": false; "isSignal": true; }; }, { "sort": "sortChange"; }, never, ["*"], true, never>;
|
|
52
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<IndexTableRowCellHeaderComponent, "th[luIndexTableCell]", never, { "sort": { "alias": "sort"; "required": false; "isSignal": true; }; "selectable": { "alias": "selectable"; "required": false; "isSignal": true; }; "hiddenLabel": { "alias": "hiddenLabel"; "required": false; "isSignal": true; }; "actions": { "alias": "actions"; "required": false; "isSignal": true; }; "inlineSize": { "alias": "inlineSize"; "required": false; "isSignal": true; }; "sortWithEllipsis": { "alias": "sortWithEllipsis"; "required": false; "isSignal": true; }; }, { "sort": "sortChange"; }, never, ["*"], true, never>;
|
|
51
53
|
}
|
|
52
54
|
|
|
53
55
|
declare class IndexTableRowCellComponent extends BaseIndexTableCell {
|
|
@@ -2,12 +2,10 @@ import * as _lucca_front_ng_data_table from '@lucca-front/ng/data-table';
|
|
|
2
2
|
import * as _lucca_front_ng_index_table from '@lucca-front/ng/index-table';
|
|
3
3
|
import * as _angular_core from '@angular/core';
|
|
4
4
|
import { Renderer2, ElementRef, WritableSignal, InjectionToken } from '@angular/core';
|
|
5
|
+
import * as _lucca_front_ng_link from '@lucca-front/ng/link';
|
|
5
6
|
import { LocationStrategy, Location } from '@angular/common';
|
|
6
7
|
import { RouterLink, Router, ActivatedRoute, UrlTree } from '@angular/router';
|
|
7
|
-
|
|
8
|
-
interface LinkTranslate {
|
|
9
|
-
external: string;
|
|
10
|
-
}
|
|
8
|
+
import { LuTranslation } from '@lucca-front/ng/core';
|
|
11
9
|
|
|
12
10
|
declare class LuRouterLink extends RouterLink {
|
|
13
11
|
constructor(router: Router, route: ActivatedRoute, tabIndexAttribute: string | null | undefined, renderer: Renderer2, el: ElementRef, locationStrategy?: LocationStrategy);
|
|
@@ -18,7 +16,7 @@ declare class LuRouterLink extends RouterLink {
|
|
|
18
16
|
|
|
19
17
|
declare class LinkComponent {
|
|
20
18
|
#private;
|
|
21
|
-
readonly intl: _angular_core.InputSignalWithTransform<LinkTranslate, Partial<LinkTranslate>>;
|
|
19
|
+
readonly intl: _angular_core.InputSignalWithTransform<_lucca_front_ng_link.LinkTranslate, Partial<_lucca_front_ng_link.LinkTranslate>>;
|
|
22
20
|
readonly routerLink: LuRouterLink;
|
|
23
21
|
readonly router: Router;
|
|
24
22
|
readonly location: Location;
|
|
@@ -48,13 +46,24 @@ declare class LinkComponent {
|
|
|
48
46
|
* External icon only visible on hover/focus
|
|
49
47
|
*/
|
|
50
48
|
readonly hiddenIcon: _angular_core.InputSignalWithTransform<boolean, boolean | "" | "false" | "true">;
|
|
49
|
+
/**
|
|
50
|
+
* Renders the link with the default text color instead of the link color
|
|
51
|
+
*/
|
|
52
|
+
readonly neutral: _angular_core.InputSignalWithTransform<boolean, boolean | "" | "false" | "true">;
|
|
51
53
|
hrefBackup: string;
|
|
52
54
|
constructor();
|
|
53
55
|
redirect(): void;
|
|
54
56
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<LinkComponent, never>;
|
|
55
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<LinkComponent, "a[luLink], button[luLink]", never, { "intl": { "alias": "intl"; "required": false; "isSignal": true; }; "luHref": { "alias": "href"; "required": false; "isSignal": true; }; "routerLinkCommands": { "alias": "luLink"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "decorationHover": { "alias": "decorationHover"; "required": false; "isSignal": true; }; "external": { "alias": "external"; "required": false; "isSignal": true; }; "hiddenIcon": { "alias": "hiddenIcon"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, [{ directive: typeof LuRouterLink; inputs: { "preserveFragment": "preserveFragment"; "skipLocationChange": "skipLocationChange"; "replaceUrl": "replaceUrl"; "queryParams": "queryParams"; "fragment": "fragment"; "queryParamsHandling": "queryParamsHandling"; "state": "state"; "info": "info"; "relativeTo": "relativeTo"; }; outputs: {}; }]>;
|
|
57
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<LinkComponent, "a[luLink], button[luLink]", never, { "intl": { "alias": "intl"; "required": false; "isSignal": true; }; "luHref": { "alias": "href"; "required": false; "isSignal": true; }; "routerLinkCommands": { "alias": "luLink"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "decorationHover": { "alias": "decorationHover"; "required": false; "isSignal": true; }; "external": { "alias": "external"; "required": false; "isSignal": true; }; "hiddenIcon": { "alias": "hiddenIcon"; "required": false; "isSignal": true; }; "neutral": { "alias": "neutral"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, [{ directive: typeof LuRouterLink; inputs: { "preserveFragment": "preserveFragment"; "skipLocationChange": "skipLocationChange"; "replaceUrl": "replaceUrl"; "queryParams": "queryParams"; "fragment": "fragment"; "queryParamsHandling": "queryParamsHandling"; "state": "state"; "info": "info"; "relativeTo": "relativeTo"; }; outputs: {}; }]>;
|
|
56
58
|
}
|
|
57
59
|
|
|
58
60
|
declare const LU_LINK_INSTANCE: InjectionToken<boolean>;
|
|
59
61
|
|
|
60
|
-
|
|
62
|
+
declare const LU_LINK_TRANSLATIONS: InjectionToken<LuTranslation<LinkTranslate>>;
|
|
63
|
+
interface LinkTranslate {
|
|
64
|
+
external: string;
|
|
65
|
+
}
|
|
66
|
+
declare const luLinkTranslations: LuTranslation<LinkTranslate>;
|
|
67
|
+
|
|
68
|
+
export { LU_LINK_INSTANCE, LU_LINK_TRANSLATIONS, LinkComponent, LuRouterLink, luLinkTranslations };
|
|
69
|
+
export type { LinkTranslate };
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import * as _angular_core from '@angular/core';
|
|
2
|
+
|
|
3
|
+
declare class MarkdownComponent {
|
|
4
|
+
readonly content: _angular_core.InputSignal<string>;
|
|
5
|
+
readonly headingLevel: _angular_core.InputSignalWithTransform<number, unknown>;
|
|
6
|
+
protected html: _angular_core.Signal<string>;
|
|
7
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<MarkdownComponent, never>;
|
|
8
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<MarkdownComponent, "lu-markdown", never, { "content": { "alias": "content"; "required": true; "isSignal": true; }; "headingLevel": { "alias": "headingLevel"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
interface RenderMarkdownOptions {
|
|
12
|
+
/**
|
|
13
|
+
* Heading level used for the top-level markdown heading (`# Heading`), the following ones being nested from it.
|
|
14
|
+
* Set it to the level that keeps the document outline valid where the markdown is displayed: with `2`,
|
|
15
|
+
* `# Heading` renders a `<h2 class="pr-u-h1">`, keeping the heading semantics clean while preserving its style.
|
|
16
|
+
*
|
|
17
|
+
* @default 1
|
|
18
|
+
*/
|
|
19
|
+
headingLevel?: number;
|
|
20
|
+
}
|
|
21
|
+
declare function renderMarkdown(content: string, { headingLevel }?: RenderMarkdownOptions): string;
|
|
22
|
+
|
|
23
|
+
export { MarkdownComponent, renderMarkdown };
|
|
24
|
+
export type { RenderMarkdownOptions };
|
|
@@ -1,17 +1,10 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
urlGooglePlay: string;
|
|
6
|
-
altAppStore: string;
|
|
7
|
-
altGooglePlay: string;
|
|
8
|
-
srcAppStore: string;
|
|
9
|
-
srcGooglePlay: string;
|
|
10
|
-
newTab: string;
|
|
11
|
-
}
|
|
2
|
+
import { InjectionToken } from '@angular/core';
|
|
3
|
+
import * as _lucca_front_ng_mobile_push from '@lucca-front/ng/mobile-push';
|
|
4
|
+
import { LuTranslation } from '@lucca-front/ng/core';
|
|
12
5
|
|
|
13
6
|
declare class MobilePushComponent {
|
|
14
|
-
readonly intl: _angular_core.InputSignalWithTransform<MobilePushTranslate, Partial<MobilePushTranslate>>;
|
|
7
|
+
readonly intl: _angular_core.InputSignalWithTransform<_lucca_front_ng_mobile_push.MobilePushTranslate, Partial<_lucca_front_ng_mobile_push.MobilePushTranslate>>;
|
|
15
8
|
/**
|
|
16
9
|
* Emit event when appStoreLink is clicked
|
|
17
10
|
*/
|
|
@@ -24,4 +17,17 @@ declare class MobilePushComponent {
|
|
|
24
17
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<MobilePushComponent, "lu-mobile-push", never, { "intl": { "alias": "intl"; "required": false; "isSignal": true; }; }, { "appStoreLinkClicked": "appStoreLinkClicked"; "googlePlayLinkClicked": "googlePlayLinkClicked"; }, never, ["*"], true, never>;
|
|
25
18
|
}
|
|
26
19
|
|
|
27
|
-
|
|
20
|
+
declare const LU_MOBILE_PUSH_TRANSLATIONS: InjectionToken<LuTranslation<MobilePushTranslate>>;
|
|
21
|
+
interface MobilePushTranslate {
|
|
22
|
+
urlAppStore: string;
|
|
23
|
+
urlGooglePlay: string;
|
|
24
|
+
altAppStore: string;
|
|
25
|
+
altGooglePlay: string;
|
|
26
|
+
srcAppStore: string;
|
|
27
|
+
srcGooglePlay: string;
|
|
28
|
+
newTab: string;
|
|
29
|
+
}
|
|
30
|
+
declare const luMobilePushTranslations: LuTranslation<MobilePushTranslate>;
|
|
31
|
+
|
|
32
|
+
export { LU_MOBILE_PUSH_TRANSLATIONS, MobilePushComponent, luMobilePushTranslations };
|
|
33
|
+
export type { MobilePushTranslate };
|
|
@@ -8,6 +8,7 @@ import { LuPluralForms, LuTranslation } from '@lucca-front/ng/core';
|
|
|
8
8
|
import * as rxjs from 'rxjs';
|
|
9
9
|
import { Subject, BehaviorSubject } from 'rxjs';
|
|
10
10
|
import { Overlay, OverlayPositionBuilder, ScrollStrategyOptions, OverlayConfig, ConnectedPosition } from '@angular/cdk/overlay';
|
|
11
|
+
import { LuDialogService } from '@lucca-front/ng/dialog';
|
|
11
12
|
import * as i1 from '@lucca-front/ng/form-field';
|
|
12
13
|
import { LuOptionComparer } from '@lucca-front/ng/option';
|
|
13
14
|
|
|
@@ -36,6 +37,7 @@ declare class LuMultiSelectPanelRefFactory {
|
|
|
36
37
|
protected positionBuilder: OverlayPositionBuilder;
|
|
37
38
|
protected scrollStrategies: ScrollStrategyOptions;
|
|
38
39
|
protected parentInjector: Injector;
|
|
40
|
+
protected dialogService: LuDialogService;
|
|
39
41
|
private selectLabelId;
|
|
40
42
|
private selectId;
|
|
41
43
|
buildPanelRef<T>(selectInput: LuMultiSelectInputComponent<T>, defaultOverlayConfigOverride?: OverlayConfig): LuMultiSelectPanelRef<T>;
|
|
@@ -216,6 +218,13 @@ declare class LuMultiSelectDisplayerInputDirective<T> implements OnInit {
|
|
|
216
218
|
readonly context: ILuOptionContext<T[]>;
|
|
217
219
|
readonly elementRef: ElementRef<HTMLInputElement>;
|
|
218
220
|
readonly destroyRef: DestroyRef;
|
|
221
|
+
/**
|
|
222
|
+
* Below the `S` breakpoint the panel opens as a modal sheet carrying its own search input, so this
|
|
223
|
+
* element is only ever a trigger and the displayers render it as a `<button>`. Typing into it is
|
|
224
|
+
* impossible by then, and an `<input>` would make iOS raise the software keyboard on a field the
|
|
225
|
+
* sheet is about to cover.
|
|
226
|
+
*/
|
|
227
|
+
get isButton(): boolean;
|
|
219
228
|
get panelOpen(): boolean;
|
|
220
229
|
get activeDescendant(): string;
|
|
221
230
|
get controls(): string;
|
|
@@ -226,7 +235,7 @@ declare class LuMultiSelectDisplayerInputDirective<T> implements OnInit {
|
|
|
226
235
|
constructor();
|
|
227
236
|
ngOnInit(): void;
|
|
228
237
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<LuMultiSelectDisplayerInputDirective<any>, never>;
|
|
229
|
-
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<LuMultiSelectDisplayerInputDirective<any>, "[luMultiSelectDisplayerInput]",
|
|
238
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<LuMultiSelectDisplayerInputDirective<any>, "[luMultiSelectDisplayerInput]", ["luMultiSelectDisplayerInput"], {}, {}, never, never, true, [{ directive: typeof i1.InputDirective; inputs: { "luInputLabelledBy": "luInputLabelledBy"; }; outputs: {}; }]>;
|
|
230
239
|
}
|
|
231
240
|
|
|
232
241
|
declare class LuMultiDisplayerDirective<T> {
|