@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.
Files changed (177) hide show
  1. package/README.md +1 -0
  2. package/fesm2022/lucca-front-ng-a11y.mjs +1 -0
  3. package/fesm2022/lucca-front-ng-a11y.mjs.map +1 -1
  4. package/fesm2022/lucca-front-ng-activity-feed.mjs +15 -12
  5. package/fesm2022/lucca-front-ng-activity-feed.mjs.map +1 -1
  6. package/fesm2022/lucca-front-ng-approbation-inbox.mjs +3 -3
  7. package/fesm2022/lucca-front-ng-approbation-inbox.mjs.map +1 -1
  8. package/fesm2022/lucca-front-ng-box.mjs +1 -1
  9. package/fesm2022/lucca-front-ng-box.mjs.map +1 -1
  10. package/fesm2022/lucca-front-ng-breadcrumbs.mjs +1 -1
  11. package/fesm2022/lucca-front-ng-breadcrumbs.mjs.map +1 -1
  12. package/fesm2022/lucca-front-ng-bubble-icon.mjs +2 -2
  13. package/fesm2022/lucca-front-ng-bubble-icon.mjs.map +1 -1
  14. package/fesm2022/lucca-front-ng-callout.mjs +3 -3
  15. package/fesm2022/lucca-front-ng-callout.mjs.map +1 -1
  16. package/fesm2022/lucca-front-ng-chip.mjs +14 -7
  17. package/fesm2022/lucca-front-ng-chip.mjs.map +1 -1
  18. package/fesm2022/lucca-front-ng-clear.mjs +1 -1
  19. package/fesm2022/lucca-front-ng-clear.mjs.map +1 -1
  20. package/fesm2022/lucca-front-ng-core-select-api.mjs +42 -3
  21. package/fesm2022/lucca-front-ng-core-select-api.mjs.map +1 -1
  22. package/fesm2022/lucca-front-ng-core-select-department.mjs.map +1 -1
  23. package/fesm2022/lucca-front-ng-core-select-establishment.mjs +32 -9
  24. package/fesm2022/lucca-front-ng-core-select-establishment.mjs.map +1 -1
  25. package/fesm2022/lucca-front-ng-core-select-job-qualification.mjs +11 -0
  26. package/fesm2022/lucca-front-ng-core-select-job-qualification.mjs.map +1 -1
  27. package/fesm2022/lucca-front-ng-core-select-legal-units.mjs.map +1 -1
  28. package/fesm2022/lucca-front-ng-core-select-occupation-category.mjs.map +1 -1
  29. package/fesm2022/lucca-front-ng-core-select-user.mjs +32 -32
  30. package/fesm2022/lucca-front-ng-core-select-user.mjs.map +1 -1
  31. package/fesm2022/lucca-front-ng-core-select.mjs +309 -39
  32. package/fesm2022/lucca-front-ng-core-select.mjs.map +1 -1
  33. package/fesm2022/lucca-front-ng-data-table.mjs +22 -14
  34. package/fesm2022/lucca-front-ng-data-table.mjs.map +1 -1
  35. package/fesm2022/lucca-front-ng-date.mjs +2 -4
  36. package/fesm2022/lucca-front-ng-date.mjs.map +1 -1
  37. package/fesm2022/lucca-front-ng-date2.mjs +210 -107
  38. package/fesm2022/lucca-front-ng-date2.mjs.map +1 -1
  39. package/fesm2022/lucca-front-ng-dialog.mjs +9 -4
  40. package/fesm2022/lucca-front-ng-dialog.mjs.map +1 -1
  41. package/fesm2022/lucca-front-ng-dropdown.mjs +3 -0
  42. package/fesm2022/lucca-front-ng-dropdown.mjs.map +1 -1
  43. package/fesm2022/lucca-front-ng-fancy-box.mjs +47 -24
  44. package/fesm2022/lucca-front-ng-fancy-box.mjs.map +1 -1
  45. package/fesm2022/lucca-front-ng-file-upload.mjs +6 -6
  46. package/fesm2022/lucca-front-ng-file-upload.mjs.map +1 -1
  47. package/fesm2022/lucca-front-ng-filter-pills-core.mjs +55 -0
  48. package/fesm2022/lucca-front-ng-filter-pills-core.mjs.map +1 -0
  49. package/fesm2022/lucca-front-ng-filter-pills.mjs +119 -70
  50. package/fesm2022/lucca-front-ng-filter-pills.mjs.map +1 -1
  51. package/fesm2022/lucca-front-ng-form-field.mjs +110 -28
  52. package/fesm2022/lucca-front-ng-form-field.mjs.map +1 -1
  53. package/fesm2022/lucca-front-ng-form-label.mjs +2 -2
  54. package/fesm2022/lucca-front-ng-form-label.mjs.map +1 -1
  55. package/fesm2022/lucca-front-ng-form.mjs +42 -5
  56. package/fesm2022/lucca-front-ng-form.mjs.map +1 -1
  57. package/fesm2022/lucca-front-ng-forms-phone-number-input.mjs +15 -13
  58. package/fesm2022/lucca-front-ng-forms-phone-number-input.mjs.map +1 -1
  59. package/fesm2022/lucca-front-ng-forms-rich-text-input-formatters-plain-text.mjs +5 -2
  60. package/fesm2022/lucca-front-ng-forms-rich-text-input-formatters-plain-text.mjs.map +1 -1
  61. package/fesm2022/lucca-front-ng-forms-rich-text-input.mjs +61 -29
  62. package/fesm2022/lucca-front-ng-forms-rich-text-input.mjs.map +1 -1
  63. package/fesm2022/lucca-front-ng-forms.mjs +23 -16
  64. package/fesm2022/lucca-front-ng-forms.mjs.map +1 -1
  65. package/fesm2022/lucca-front-ng-highlight-data.mjs +6 -7
  66. package/fesm2022/lucca-front-ng-highlight-data.mjs.map +1 -1
  67. package/fesm2022/lucca-front-ng-impersonation.mjs +20 -5
  68. package/fesm2022/lucca-front-ng-impersonation.mjs.map +1 -1
  69. package/fesm2022/lucca-front-ng-index-table.mjs +13 -8
  70. package/fesm2022/lucca-front-ng-index-table.mjs.map +1 -1
  71. package/fesm2022/lucca-front-ng-inline-message.mjs +1 -1
  72. package/fesm2022/lucca-front-ng-inline-message.mjs.map +1 -1
  73. package/fesm2022/lucca-front-ng-link.mjs +9 -4
  74. package/fesm2022/lucca-front-ng-link.mjs.map +1 -1
  75. package/fesm2022/lucca-front-ng-listbox.mjs +3 -2
  76. package/fesm2022/lucca-front-ng-listbox.mjs.map +1 -1
  77. package/fesm2022/lucca-front-ng-markdown.mjs +51 -0
  78. package/fesm2022/lucca-front-ng-markdown.mjs.map +1 -0
  79. package/fesm2022/lucca-front-ng-mobile-push.mjs +2 -2
  80. package/fesm2022/lucca-front-ng-mobile-push.mjs.map +1 -1
  81. package/fesm2022/lucca-front-ng-modal.mjs +9 -4
  82. package/fesm2022/lucca-front-ng-modal.mjs.map +1 -1
  83. package/fesm2022/lucca-front-ng-multi-select.mjs +153 -48
  84. package/fesm2022/lucca-front-ng-multi-select.mjs.map +1 -1
  85. package/fesm2022/lucca-front-ng-option.mjs +6 -2
  86. package/fesm2022/lucca-front-ng-option.mjs.map +1 -1
  87. package/fesm2022/lucca-front-ng-pagination.mjs +1 -1
  88. package/fesm2022/lucca-front-ng-pagination.mjs.map +1 -1
  89. package/fesm2022/lucca-front-ng-picker.mjs.map +1 -1
  90. package/fesm2022/lucca-front-ng-plg-push.mjs +1 -1
  91. package/fesm2022/lucca-front-ng-plg-push.mjs.map +1 -1
  92. package/fesm2022/lucca-front-ng-popover2.mjs +21 -12
  93. package/fesm2022/lucca-front-ng-popover2.mjs.map +1 -1
  94. package/fesm2022/lucca-front-ng-priority-levels.mjs +128 -0
  95. package/fesm2022/lucca-front-ng-priority-levels.mjs.map +1 -0
  96. package/fesm2022/lucca-front-ng-progress-stepper.mjs +2 -2
  97. package/fesm2022/lucca-front-ng-progress-stepper.mjs.map +1 -1
  98. package/fesm2022/lucca-front-ng-read-more.mjs +3 -3
  99. package/fesm2022/lucca-front-ng-read-more.mjs.map +1 -1
  100. package/fesm2022/lucca-front-ng-resource-card.mjs +2 -2
  101. package/fesm2022/lucca-front-ng-resource-card.mjs.map +1 -1
  102. package/fesm2022/lucca-front-ng-safe-content.mjs +43 -3
  103. package/fesm2022/lucca-front-ng-safe-content.mjs.map +1 -1
  104. package/fesm2022/lucca-front-ng-scroll-box.mjs +8 -4
  105. package/fesm2022/lucca-front-ng-scroll-box.mjs.map +1 -1
  106. package/fesm2022/lucca-front-ng-segmented-control-tabs.mjs +9 -4
  107. package/fesm2022/lucca-front-ng-segmented-control-tabs.mjs.map +1 -1
  108. package/fesm2022/lucca-front-ng-segmented-control.mjs +10 -5
  109. package/fesm2022/lucca-front-ng-segmented-control.mjs.map +1 -1
  110. package/fesm2022/lucca-front-ng-select.mjs +1 -1
  111. package/fesm2022/lucca-front-ng-select.mjs.map +1 -1
  112. package/fesm2022/lucca-front-ng-simple-select.mjs +71 -17
  113. package/fesm2022/lucca-front-ng-simple-select.mjs.map +1 -1
  114. package/fesm2022/lucca-front-ng-software-icon-wrapper.mjs +1 -1
  115. package/fesm2022/lucca-front-ng-software-icon-wrapper.mjs.map +1 -1
  116. package/fesm2022/lucca-front-ng-software-icon.mjs +1 -1
  117. package/fesm2022/lucca-front-ng-software-icon.mjs.map +1 -1
  118. package/fesm2022/lucca-front-ng-status-badge.mjs +1 -1
  119. package/fesm2022/lucca-front-ng-status-badge.mjs.map +1 -1
  120. package/fesm2022/lucca-front-ng-time.mjs +1 -1
  121. package/fesm2022/lucca-front-ng-time.mjs.map +1 -1
  122. package/fesm2022/lucca-front-ng-user-popover.mjs +3 -2
  123. package/fesm2022/lucca-front-ng-user-popover.mjs.map +1 -1
  124. package/package.json +17 -4
  125. package/schematics/collection.json +5 -0
  126. package/schematics/deprecated-resolver/index.js +1 -4
  127. package/schematics/file-upload/index.js +22 -0
  128. package/schematics/file-upload/migration.js +230 -0
  129. package/schematics/file-upload/migration.spec.js +56 -0
  130. package/schematics/file-upload/schema.json +23 -0
  131. package/schematics/lib/angular-component-ast.js +3 -1
  132. package/schematics/lib/deprecated-mapper.js +2 -10
  133. package/schematics/lib/html-ast.js +26 -0
  134. package/src/components/_listbox.scss +12 -6
  135. package/src/components/cdk/_overlay.scss +3 -1
  136. package/types/lucca-front-ng-activity-feed.d.ts +16 -10
  137. package/types/lucca-front-ng-approbation-inbox.d.ts +32 -25
  138. package/types/lucca-front-ng-box.d.ts +12 -6
  139. package/types/lucca-front-ng-breadcrumbs.d.ts +12 -7
  140. package/types/lucca-front-ng-chip.d.ts +16 -9
  141. package/types/lucca-front-ng-clear.d.ts +12 -8
  142. package/types/lucca-front-ng-core-select-api.d.ts +30 -1
  143. package/types/lucca-front-ng-core-select-establishment.d.ts +7 -0
  144. package/types/lucca-front-ng-core-select-job-qualification.d.ts +8 -0
  145. package/types/lucca-front-ng-core-select-user.d.ts +6 -0
  146. package/types/lucca-front-ng-core-select.d.ts +115 -7
  147. package/types/lucca-front-ng-data-table.d.ts +16 -10
  148. package/types/lucca-front-ng-date.d.ts +12 -10
  149. package/types/lucca-front-ng-date2.d.ts +46 -21
  150. package/types/lucca-front-ng-fancy-box.d.ts +29 -12
  151. package/types/lucca-front-ng-file-upload.d.ts +41 -36
  152. package/types/lucca-front-ng-filter-pills-core.d.ts +69 -0
  153. package/types/lucca-front-ng-filter-pills.d.ts +53 -69
  154. package/types/lucca-front-ng-form-field.d.ts +34 -5
  155. package/types/lucca-front-ng-form-label.d.ts +13 -8
  156. package/types/lucca-front-ng-form.d.ts +7 -1
  157. package/types/lucca-front-ng-forms-rich-text-input.d.ts +40 -35
  158. package/types/lucca-front-ng-forms.d.ts +36 -44
  159. package/types/lucca-front-ng-highlight-data.d.ts +1 -2
  160. package/types/lucca-front-ng-impersonation.d.ts +28 -10
  161. package/types/lucca-front-ng-index-table.d.ts +3 -1
  162. package/types/lucca-front-ng-link.d.ts +16 -7
  163. package/types/lucca-front-ng-markdown.d.ts +24 -0
  164. package/types/lucca-front-ng-mobile-push.d.ts +18 -12
  165. package/types/lucca-front-ng-multi-select.d.ts +10 -1
  166. package/types/lucca-front-ng-option.d.ts +8 -8
  167. package/types/lucca-front-ng-pagination.d.ts +15 -10
  168. package/types/lucca-front-ng-picker.d.ts +2 -2
  169. package/types/lucca-front-ng-plg-push.d.ts +12 -6
  170. package/types/lucca-front-ng-popover2.d.ts +7 -1
  171. package/types/lucca-front-ng-priority-levels.d.ts +44 -0
  172. package/types/lucca-front-ng-read-more.d.ts +13 -9
  173. package/types/lucca-front-ng-safe-content.d.ts +8 -2
  174. package/types/lucca-front-ng-segmented-control-tabs.d.ts +5 -1
  175. package/types/lucca-front-ng-segmented-control.d.ts +5 -1
  176. package/types/lucca-front-ng-select.d.ts +6 -6
  177. package/types/lucca-front-ng-simple-select.d.ts +5 -1
@@ -1,28 +1,17 @@
1
1
  import * as _angular_core from '@angular/core';
2
- import { OnInit, ElementRef, Signal } from '@angular/core';
3
- import { Palette, PortalContent } from '@lucca-front/ng/core';
2
+ import { OnInit, ElementRef, Signal, InjectionToken } from '@angular/core';
3
+ import * as _lucca_front_ng_date2 from '@lucca-front/ng/date2';
4
+ import { Palette, PortalContent, LuTranslation } from '@lucca-front/ng/core';
4
5
  import { ConnectionPositionPair } from '@angular/cdk/overlay';
5
6
  import { ControlValueAccessor, Validator, NgControl, AbstractControl, ValidationErrors } from '@angular/forms';
6
7
  import { LuccaIcon } from '@lucca-front/icons';
7
- import { FilterPillInputComponent } from '@lucca-front/ng/filter-pills';
8
+ import { FilterPillInputComponent } from '@lucca-front/ng/filter-pills/core';
8
9
  import { PopoverDirective } from '@lucca-front/ng/popover2';
9
10
  import { WeekOptions, FirstWeekContainsDateOptions } from 'date-fns';
10
11
 
11
12
  declare const CALENDAR_MODE: readonly ["day", "week", "month", "year"];
12
13
  type CalendarMode = (typeof CALENDAR_MODE)[number];
13
14
 
14
- interface Date2Translate {
15
- from: string;
16
- to: string;
17
- directionKeysTip: string;
18
- pickDate: string;
19
- previous: string;
20
- next: string;
21
- clear: string;
22
- weekNumber: string;
23
- weekPrefix: string;
24
- }
25
-
26
15
  interface CellStatus {
27
16
  classes: string[];
28
17
  disabled?: boolean;
@@ -32,18 +21,32 @@ interface CellStatus {
32
21
 
33
22
  interface DateRangeInput {
34
23
  class?: `palette-${Palette}` | string;
35
- start: Date | string;
24
+ /**
25
+ * Start bound of the range. Optional: a range can be open on its start, for instance when
26
+ * a filter only expresses an "until" date.
27
+ */
28
+ start?: Date | string | null;
29
+ /**
30
+ * End bound of the range. Optional: a range can be open on its end, for instance when
31
+ * a filter only expresses a "from" date.
32
+ */
36
33
  end?: Date | string | null;
37
34
  label?: string;
38
35
  scope?: CalendarMode;
39
36
  }
40
37
  interface DateRange extends DateRangeInput {
41
- start: Date;
38
+ start?: Date | null;
42
39
  end?: Date | null;
43
40
  }
44
41
 
45
42
  interface RangeInfo {
46
43
  range?: DateRange;
44
+ /**
45
+ * Bound the range is anchored on: its start when it has one, its end otherwise.
46
+ * A range without start date is rendered from its end, the same way an incomplete
47
+ * range is rendered from its start.
48
+ */
49
+ anchor: Date;
47
50
  isStart: boolean;
48
51
  isEnd: boolean;
49
52
  label?: string;
@@ -98,7 +101,7 @@ declare class Calendar2CellDirective {
98
101
  declare class Calendar2Component implements OnInit {
99
102
  #private;
100
103
  readonly elementRef: ElementRef<HTMLElement>;
101
- readonly intl: _angular_core.InputSignalWithTransform<Date2Translate, Partial<Date2Translate>>;
104
+ readonly intl: _angular_core.InputSignalWithTransform<_lucca_front_ng_date2.Date2Translate, Partial<_lucca_front_ng_date2.Date2Translate>>;
102
105
  readonly showOverflow: _angular_core.InputSignalWithTransform<boolean, boolean | "" | "false" | "true">;
103
106
  readonly enableOverflow: _angular_core.InputSignalWithTransform<boolean, boolean | "" | "false" | "true">;
104
107
  readonly removeYearOverflow: _angular_core.InputSignalWithTransform<boolean, boolean | "" | "false" | "true">;
@@ -147,6 +150,7 @@ declare class Calendar2Component implements OnInit {
147
150
  getWeekDayCellClasses(day: CalendarCellInfo, isLastDay: boolean): Record<string, boolean>;
148
151
  getRangeInfo(date: Date, scope: CalendarMode | null, isOverflow?: boolean): {
149
152
  range: DateRange;
153
+ anchor: Date;
150
154
  isStart: boolean;
151
155
  isEnd: boolean;
152
156
  label: string;
@@ -184,7 +188,7 @@ declare abstract class AbstractDateComponent {
184
188
  intlDateTimeFormat: Intl.DateTimeFormat;
185
189
  intlDateTimeFormatMonth: Intl.DateTimeFormat;
186
190
  intlDateTimeFormatYear: Intl.DateTimeFormat;
187
- readonly intl: _angular_core.InputSignalWithTransform<Date2Translate, Partial<Date2Translate>>;
191
+ readonly intl: _angular_core.InputSignalWithTransform<_lucca_front_ng_date2.Date2Translate, Partial<_lucca_front_ng_date2.Date2Translate>>;
188
192
  onTouched?: () => void;
189
193
  readonly disabled: _angular_core.WritableSignal<boolean>;
190
194
  readonly format: _angular_core.InputSignal<DateFormat>;
@@ -322,6 +326,11 @@ declare class DateRangeInputComponent extends AbstractDateComponent implements O
322
326
  isFilterPill: boolean;
323
327
  get isWidthAuto(): boolean;
324
328
  readonly isFilterPillEmpty: Signal<boolean>;
329
+ /**
330
+ * The field of the missing bound when a single date is selected, null otherwise.
331
+ * In filter pill mode, the popover initially focuses it, so the next picked date completes the range instead of replacing the selected one
332
+ */
333
+ protected readonly missingBoundField: Signal<0 | 1>;
325
334
  readonly isFilterPillClearable: Signal<boolean>;
326
335
  filterPillPopoverCloseFn?: () => void;
327
336
  readonly filterPillDisabled: _angular_core.WritableSignal<boolean>;
@@ -353,5 +362,21 @@ declare class DateRangeInputComponent extends AbstractDateComponent implements O
353
362
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<DateRangeInputComponent, "lu-date-range-input", never, { "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "widthAuto": { "alias": "widthAuto"; "required": false; "isSignal": true; }; "shortcuts": { "alias": "shortcuts"; "required": false; "isSignal": true; }; "autocomplete": { "alias": "autocomplete"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
354
363
  }
355
364
 
356
- export { CALENDAR_MODE, Calendar2Component, DATE2_CLEAR_BEHAVIOR, DATE_FORMAT, DATE_FORMAT_CONST, DATE_ISO_FORMAT, DateInputComponent, DateRangeInputComponent, PremadeShortcuts, getDateFormat, getLocalizedDateFormat, getSeparator, humanizeDate };
357
- export type { CalendarMode, CalendarShortcut, CellStatus, Date2ClearBehavior, DateFormat, DateInputValidatorErrorType, DateRange, DateRangeInput };
365
+ declare const LU_DATE2_TRANSLATIONS: InjectionToken<LuTranslation<Date2Translate>>;
366
+ interface Date2Translate {
367
+ from: string;
368
+ to: string;
369
+ fromDate: string;
370
+ untilDate: string;
371
+ directionKeysTip: string;
372
+ pickDate: string;
373
+ previous: string;
374
+ next: string;
375
+ clear: string;
376
+ weekNumber: string;
377
+ weekPrefix: string;
378
+ }
379
+ declare const luDate2Translations: LuTranslation<Date2Translate>;
380
+
381
+ export { CALENDAR_MODE, Calendar2Component, DATE2_CLEAR_BEHAVIOR, DATE_FORMAT, DATE_FORMAT_CONST, DATE_ISO_FORMAT, DateInputComponent, DateRangeInputComponent, LU_DATE2_TRANSLATIONS, PremadeShortcuts, getDateFormat, getLocalizedDateFormat, getSeparator, humanizeDate, luDate2Translations };
382
+ export type { CalendarMode, CalendarShortcut, CellStatus, Date2ClearBehavior, Date2Translate, DateFormat, DateInputValidatorErrorType, DateRange, DateRangeInput };
@@ -2,27 +2,36 @@ import * as _angular_core from '@angular/core';
2
2
 
3
3
  declare class FancyBoxComponent {
4
4
  #private;
5
+ readonly domain = "https://cdn.lucca.fr";
6
+ readonly path = "/transverse/prisme/visuals/fancy-box/";
7
+ readonly extension = ".svg";
5
8
  /**
6
- * foreground image (URL)
9
+ * @deprecated use `foregroundStartEnd` instead
7
10
  */
8
11
  readonly foreground: _angular_core.InputSignal<string>;
9
12
  /**
10
- * Background left image (URL)
13
+ * @deprecated use `backgroundEndStart` instead
11
14
  */
12
15
  readonly backgroundLeft: _angular_core.InputSignal<string>;
13
16
  /**
14
- * Background right image (URL)
17
+ * @deprecated use `backgroundStartEnd` instead
15
18
  */
16
19
  readonly backgroundRight: _angular_core.InputSignal<string>;
17
- /**
18
- * Which size should the callout be? Defaults to small
19
- */
20
+ readonly foregroundStartEnd: _angular_core.InputSignal<string>;
21
+ readonly foregroundEndStart: _angular_core.InputSignal<string>;
22
+ readonly backgroundEndStart: _angular_core.InputSignal<string>;
23
+ readonly backgroundStartEnd: _angular_core.InputSignal<string>;
20
24
  readonly size: _angular_core.InputSignal<"S">;
21
- readonly foregroundStyle: _angular_core.Signal<string>;
22
- readonly backgroundLeftStyle: _angular_core.Signal<string>;
23
- readonly backgroundRightStyle: _angular_core.Signal<string>;
25
+ readonly palette: _angular_core.InputSignal<string>;
26
+ readonly paletteClass: _angular_core.Signal<{
27
+ [x: string]: boolean;
28
+ }>;
29
+ readonly backgroundEndStartUrl: _angular_core.Signal<string>;
30
+ readonly backgroundStartEndUrl: _angular_core.Signal<string>;
31
+ readonly foregroundStartEndUrl: _angular_core.Signal<string>;
32
+ readonly foregroundEndStartUrl: _angular_core.Signal<string>;
24
33
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<FancyBoxComponent, never>;
25
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<FancyBoxComponent, "lu-fancy-box", never, { "foreground": { "alias": "foreground"; "required": false; "isSignal": true; }; "backgroundLeft": { "alias": "backgroundLeft"; "required": true; "isSignal": true; }; "backgroundRight": { "alias": "backgroundRight"; "required": true; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
34
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<FancyBoxComponent, "lu-fancy-box", never, { "foreground": { "alias": "foreground"; "required": false; "isSignal": true; }; "backgroundLeft": { "alias": "backgroundLeft"; "required": false; "isSignal": true; }; "backgroundRight": { "alias": "backgroundRight"; "required": false; "isSignal": true; }; "foregroundStartEnd": { "alias": "foregroundStartEnd"; "required": false; "isSignal": true; }; "foregroundEndStart": { "alias": "foregroundEndStart"; "required": false; "isSignal": true; }; "backgroundEndStart": { "alias": "backgroundEndStart"; "required": false; "isSignal": true; }; "backgroundStartEnd": { "alias": "backgroundStartEnd"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "palette": { "alias": "palette"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
26
35
  }
27
36
 
28
37
  /**
@@ -30,6 +39,14 @@ declare class FancyBoxComponent {
30
39
  */
31
40
  declare const FANCY_BOX_SIZE: readonly ["S"];
32
41
  type FancyBoxSize = (typeof FANCY_BOX_SIZE)[number];
42
+ declare const FANCY_BOX_BACKGROUND_END_START: readonly ["bubbles", "plant"];
43
+ type FancyBoxBackgroundEndStart = (typeof FANCY_BOX_BACKGROUND_END_START)[number];
44
+ declare const FANCY_BOX_BACKGROUND_START_END: readonly ["bubbles", "candies"];
45
+ type FancyBoxBackgroundStartEnd = (typeof FANCY_BOX_BACKGROUND_START_END)[number];
46
+ declare const FANCY_BOX_FOREGROUND_END_START: readonly ["clips"];
47
+ type FancyBoxForegroundEndStart = (typeof FANCY_BOX_FOREGROUND_END_START)[number];
48
+ declare const FANCY_BOX_FOREGROUND_START_END: readonly ["pizza"];
49
+ type FancyBoxForegroundStartEnd = (typeof FANCY_BOX_FOREGROUND_START_END)[number];
33
50
 
34
- export { FANCY_BOX_SIZE, FancyBoxComponent };
35
- export type { FancyBoxSize };
51
+ export { FANCY_BOX_BACKGROUND_END_START, FANCY_BOX_BACKGROUND_START_END, FANCY_BOX_FOREGROUND_END_START, FANCY_BOX_FOREGROUND_START_END, FANCY_BOX_SIZE, FancyBoxComponent };
52
+ export type { FancyBoxBackgroundEndStart, FancyBoxBackgroundStartEnd, FancyBoxForegroundEndStart, FancyBoxForegroundStartEnd, FancyBoxSize };
@@ -1,44 +1,15 @@
1
1
  import * as _lucca_front_ng_form_field from '@lucca-front/ng/form-field';
2
2
  import * as _angular_core from '@angular/core';
3
+ import { InjectionToken } from '@angular/core';
4
+ import * as _lucca_front_ng_file_upload from '@lucca-front/ng/file-upload';
3
5
  import { Subject } from 'rxjs';
4
-
5
- interface LuFileUploadLabel {
6
- acceptedFormat: {
7
- one: string;
8
- other: string;
9
- };
10
- selectFile: {
11
- one: string;
12
- other: string;
13
- };
14
- dropOrClick: {
15
- one: string;
16
- other: string;
17
- };
18
- maxWeight: {
19
- one: string;
20
- other: string;
21
- };
22
- fileUploadedListed: {
23
- one: string;
24
- other: string;
25
- };
26
- all: string;
27
- file: string;
28
- download: string;
29
- preview: string;
30
- downloadFile: string;
31
- delete: string;
32
- deleteFile: string;
33
- password: string;
34
- confirmPassword: string;
35
- }
6
+ import { LuTranslation } from '@lucca-front/ng/core';
36
7
 
37
8
  declare abstract class BaseFileUploadComponent {
38
9
  protected locale: string;
39
10
  protected idSuffix: number;
40
11
  protected droppable: boolean;
41
- readonly intl: _angular_core.InputSignalWithTransform<LuFileUploadLabel, Partial<LuFileUploadLabel>>;
12
+ readonly intl: _angular_core.InputSignalWithTransform<_lucca_front_ng_file_upload.LuFileUploadLabel, Partial<_lucca_front_ng_file_upload.LuFileUploadLabel>>;
42
13
  protected formFieldRef: _lucca_front_ng_form_field.FormFieldComponent;
43
14
  filePicked: _angular_core.OutputEmitterRef<File>;
44
15
  readonly accept: _angular_core.InputSignal<{
@@ -93,7 +64,7 @@ interface FileEntry {
93
64
 
94
65
  declare class FileEntryComponent {
95
66
  #private;
96
- readonly intl: _angular_core.InputSignalWithTransform<LuFileUploadLabel, Partial<LuFileUploadLabel>>;
67
+ readonly intl: _angular_core.InputSignalWithTransform<_lucca_front_ng_file_upload.LuFileUploadLabel, Partial<_lucca_front_ng_file_upload.LuFileUploadLabel>>;
97
68
  readonly state: _angular_core.InputSignal<"loading" | "success" | "error" | "default">;
98
69
  readonly displayFileName: _angular_core.InputSignalWithTransform<boolean, boolean | "" | "false" | "true">;
99
70
  readonly structure: _angular_core.InputSignalWithTransform<boolean, boolean | "" | "false" | "true">;
@@ -157,5 +128,39 @@ declare class SingleFileUploadComponent extends BaseFileUploadComponent {
157
128
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<SingleFileUploadComponent, "lu-single-file-upload", never, { "entry": { "alias": "entry"; "required": false; "isSignal": true; }; "state": { "alias": "state"; "required": false; "isSignal": true; }; "inlineMessageError": { "alias": "inlineMessageError"; "required": false; "isSignal": true; }; "previewUrl": { "alias": "previewUrl"; "required": false; "isSignal": true; }; "displayFileName": { "alias": "displayFileName"; "required": false; "isSignal": true; }; }, { "deleteFile": "deleteFile"; }, never, ["*"], true, never>;
158
129
  }
159
130
 
160
- export { FILE_ENTRY_SIZE, FILE_ENTRY_STATE, FILE_UPLOAD_SIZE, FILE_UPLOAD_STATE, FileDropzoneComponent, FileEntryComponent, FileEntryWrapperComponent, MultiFileUploadComponent, SingleFileUploadComponent, formatFileSize };
161
- export type { FileEntry, FileEntrySize, FileEntryState, FileUploadSize, FileUploadState };
131
+ declare const LU_FILE_UPLOAD_TRANSLATIONS: InjectionToken<LuTranslation<LuFileUploadLabel>>;
132
+ interface LuFileUploadLabel {
133
+ acceptedFormat: {
134
+ one: string;
135
+ other: string;
136
+ };
137
+ selectFile: {
138
+ one: string;
139
+ other: string;
140
+ };
141
+ dropOrClick: {
142
+ one: string;
143
+ other: string;
144
+ };
145
+ maxWeight: {
146
+ one: string;
147
+ other: string;
148
+ };
149
+ fileUploadedListed: {
150
+ one: string;
151
+ other: string;
152
+ };
153
+ all: string;
154
+ file: string;
155
+ download: string;
156
+ preview: string;
157
+ downloadFile: string;
158
+ delete: string;
159
+ deleteFile: string;
160
+ password: string;
161
+ confirmPassword: string;
162
+ }
163
+ declare const luFileUploadTranslations: LuTranslation<LuFileUploadLabel>;
164
+
165
+ export { FILE_ENTRY_SIZE, FILE_ENTRY_STATE, FILE_UPLOAD_SIZE, FILE_UPLOAD_STATE, FileDropzoneComponent, FileEntryComponent, FileEntryWrapperComponent, LU_FILE_UPLOAD_TRANSLATIONS, MultiFileUploadComponent, SingleFileUploadComponent, formatFileSize, luFileUploadTranslations };
166
+ export type { FileEntry, FileEntrySize, FileEntryState, FileUploadSize, FileUploadState, LuFileUploadLabel };
@@ -0,0 +1,69 @@
1
+ import * as i0 from '@angular/core';
2
+ import { Signal, TemplateRef, WritableSignal, InjectionToken } from '@angular/core';
3
+ import { LuccaIcon } from '@lucca-front/icons';
4
+
5
+ type FilterPillLayout = 'checkable';
6
+ interface FilterPillInputComponent {
7
+ parentInput?: FilterPillInputComponent | null;
8
+ isFilterPillEmpty: Signal<boolean>;
9
+ isFilterPillClearable: Signal<boolean>;
10
+ filterPillLayout?: Signal<FilterPillLayout>;
11
+ hideCombobox?: Signal<boolean>;
12
+ showColon?: Signal<boolean>;
13
+ filterPillDisabled?: Signal<boolean>;
14
+ clearFilterPillValue(): void;
15
+ registerFilterPillClosePopover(closeFn: () => void): void;
16
+ registerFilterPillUpdatePosition?(updateFn: () => void): void;
17
+ enableFilterPillMode?(): void;
18
+ onFilterPillClosed?(): void;
19
+ onFilterPillOpened?(): void;
20
+ onFilterPillClick?(): void;
21
+ getDefaultFilterPillIcon?(): LuccaIcon;
22
+ }
23
+
24
+ /**
25
+ * Contract exposed by `lu-filter-pill` to the inputs and directives it hosts.
26
+ * Declared here rather than typing the token with `FilterPillComponent` so this entry point
27
+ * stays independent from the components one, which depends on inputs such as `lu-multi-select`.
28
+ */
29
+ interface FilterPillHostComponent {
30
+ /** Template rendering the input's value inside the pill, set by `luFilterPillDisplayer`. */
31
+ pillTpl: TemplateRef<unknown>;
32
+ /** Template overriding the pill's label, set by `luFilterPillLabel`. */
33
+ readonly customLabelTpl: WritableSignal<TemplateRef<unknown> | null>;
34
+ /** Lets an input register itself when it's too deep to be picked up by content query. */
35
+ registerInput(input: FilterPillInputComponent): void;
36
+ }
37
+
38
+ declare const FILTER_PILL_INPUT_COMPONENT: InjectionToken<FilterPillInputComponent>;
39
+ declare const FILTER_PILL_HOST_COMPONENT: InjectionToken<FilterPillHostComponent>;
40
+
41
+ interface FilterPillDisplayerContext {
42
+ label: string;
43
+ placeholder: string;
44
+ isEmpty: boolean;
45
+ }
46
+ declare class FilterPillDisplayerDirective {
47
+ #private;
48
+ constructor();
49
+ static ngTemplateContextGuard(_dir: FilterPillDisplayerDirective, _ctx: unknown): _ctx is FilterPillDisplayerContext;
50
+ static ɵfac: i0.ɵɵFactoryDeclaration<FilterPillDisplayerDirective, never>;
51
+ static ɵdir: i0.ɵɵDirectiveDeclaration<FilterPillDisplayerDirective, "[luFilterPillDisplayer]", never, {}, {}, never, never, true, never>;
52
+ }
53
+
54
+ interface FilterPillLabelContext {
55
+ label: string;
56
+ placeholder: string;
57
+ isEmpty: boolean;
58
+ colon: string;
59
+ }
60
+ declare class FilterPillLabelDirective {
61
+ #private;
62
+ constructor();
63
+ static ngTemplateContextGuard(_dir: FilterPillLabelDirective, _ctx: unknown): _ctx is FilterPillLabelContext;
64
+ static ɵfac: i0.ɵɵFactoryDeclaration<FilterPillLabelDirective, never>;
65
+ static ɵdir: i0.ɵɵDirectiveDeclaration<FilterPillLabelDirective, "[luFilterPillLabel]", never, {}, {}, never, never, true, never>;
66
+ }
67
+
68
+ export { FILTER_PILL_HOST_COMPONENT, FILTER_PILL_INPUT_COMPONENT, FilterPillDisplayerDirective, FilterPillLabelDirective };
69
+ export type { FilterPillHostComponent, FilterPillInputComponent, FilterPillLayout };
@@ -1,71 +1,17 @@
1
1
  import * as _angular_core from '@angular/core';
2
- import { Signal, InjectionToken, ElementRef, TemplateRef } from '@angular/core';
2
+ import { ElementRef, TemplateRef, InjectionToken } from '@angular/core';
3
+ import * as _lucca_front_ng_filter_pills from '@lucca-front/ng/filter-pills';
3
4
  import { ConnectionPositionPair } from '@angular/cdk/overlay';
4
5
  import { LuccaIcon } from '@lucca-front/icons';
5
6
  import { PopoverDirective } from '@lucca-front/ng/popover2';
7
+ import { FilterPillHostComponent, FilterPillInputComponent } from '@lucca-front/ng/filter-pills/core';
8
+ export * from '@lucca-front/ng/filter-pills/core';
9
+ import { LuOptionComparer as LuOptionComparer$1 } from '@lucca-front/ng/core-select';
10
+ import { LuTranslation } from '@lucca-front/ng/core';
6
11
 
7
- interface LuFilterPillsLabel {
8
- clear: string;
9
- placeholder: string;
10
- additionalFilters: string;
11
- selectView: string;
12
- viewOptions: string;
13
- renameView: string;
14
- deleteView: string;
15
- }
16
-
17
- type FilterPillLayout = 'checkable';
18
- interface FilterPillInputComponent {
19
- parentInput?: FilterPillInputComponent | null;
20
- isFilterPillEmpty: Signal<boolean>;
21
- isFilterPillClearable: Signal<boolean>;
22
- filterPillLayout?: Signal<FilterPillLayout>;
23
- hideCombobox?: Signal<boolean>;
24
- showColon?: Signal<boolean>;
25
- filterPillDisabled?: Signal<boolean>;
26
- clearFilterPillValue(): void;
27
- registerFilterPillClosePopover(closeFn: () => void): void;
28
- registerFilterPillUpdatePosition?(updateFn: () => void): void;
29
- enableFilterPillMode?(): void;
30
- onFilterPillClosed?(): void;
31
- onFilterPillOpened?(): void;
32
- onFilterPillClick?(): void;
33
- getDefaultFilterPillIcon?(): LuccaIcon;
34
- }
35
-
36
- declare const FILTER_PILL_INPUT_COMPONENT: InjectionToken<FilterPillInputComponent>;
37
- declare const FILTER_PILL_HOST_COMPONENT: InjectionToken<FilterPillComponent>;
38
-
39
- interface FilterPillDisplayerContext {
40
- label: string;
41
- placeholder: string;
42
- isEmpty: boolean;
43
- }
44
- declare class FilterPillDisplayerDirective {
12
+ declare class FilterPillComponent implements FilterPillHostComponent {
45
13
  #private;
46
- constructor();
47
- static ngTemplateContextGuard(_dir: FilterPillDisplayerDirective, _ctx: unknown): _ctx is FilterPillDisplayerContext;
48
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<FilterPillDisplayerDirective, never>;
49
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<FilterPillDisplayerDirective, "[luFilterPillDisplayer]", never, {}, {}, never, never, true, never>;
50
- }
51
-
52
- interface FilterPillLabelContext {
53
- label: string;
54
- placeholder: string;
55
- isEmpty: boolean;
56
- colon: string;
57
- }
58
- declare class FilterPillLabelDirective {
59
- #private;
60
- constructor();
61
- static ngTemplateContextGuard(_dir: FilterPillLabelDirective, _ctx: unknown): _ctx is FilterPillLabelContext;
62
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<FilterPillLabelDirective, never>;
63
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<FilterPillLabelDirective, "[luFilterPillLabel]", never, {}, {}, never, never, true, never>;
64
- }
65
-
66
- declare class FilterPillComponent {
67
- #private;
68
- readonly intl: _angular_core.InputSignalWithTransform<LuFilterPillsLabel, Partial<LuFilterPillsLabel>>;
14
+ readonly intl: _angular_core.InputSignalWithTransform<_lucca_front_ng_filter_pills.LuFilterPillsLabel, Partial<_lucca_front_ng_filter_pills.LuFilterPillsLabel>>;
69
15
  readonly elementRef: ElementRef<any>;
70
16
  readonly layout: _angular_core.Signal<"checkable" | "default">;
71
17
  readonly childInputComponentRef: _angular_core.Signal<FilterPillInputComponent>;
@@ -78,6 +24,12 @@ declare class FilterPillComponent {
78
24
  readonly customLabelTpl: _angular_core.WritableSignal<TemplateRef<unknown>>;
79
25
  readonly name: _angular_core.InputSignal<string>;
80
26
  readonly optional: _angular_core.InputSignalWithTransform<boolean, boolean | "" | "false" | "true">;
27
+ /** Groups the pill with the ones sharing the same value in the filter bar's optional filters list. Empty means no group. */
28
+ readonly grouping: _angular_core.InputSignal<string>;
29
+ /** Renders the pill as an icon-only button, its label being carried by a tooltip. */
30
+ readonly iconOnly: _angular_core.InputSignalWithTransform<boolean, boolean | "" | "false" | "true">;
31
+ /** Catches the click that closes the popover instead of letting it through to the page. */
32
+ readonly backdrop: _angular_core.InputSignalWithTransform<boolean, boolean | "" | "false" | "true">;
81
33
  readonly disabled: _angular_core.Signal<boolean>;
82
34
  get isHiddenClass(): boolean;
83
35
  readonly displayed: _angular_core.ModelSignal<boolean>;
@@ -107,18 +59,37 @@ declare class FilterPillComponent {
107
59
  clear(): void;
108
60
  registerInput(input: FilterPillInputComponent): void;
109
61
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<FilterPillComponent, never>;
110
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<FilterPillComponent, "lu-filter-pill", never, { "intl": { "alias": "intl"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "optional": { "alias": "optional"; "required": false; "isSignal": true; }; "displayed": { "alias": "displayed"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": true; "isSignal": true; }; "placeholderOverride": { "alias": "placeholder"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; }, { "displayed": "displayedChange"; }, ["childInputComponentRef"], ["*"], true, never>;
62
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<FilterPillComponent, "lu-filter-pill", never, { "intl": { "alias": "intl"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "optional": { "alias": "optional"; "required": false; "isSignal": true; }; "grouping": { "alias": "grouping"; "required": false; "isSignal": true; }; "iconOnly": { "alias": "iconOnly"; "required": false; "isSignal": true; }; "backdrop": { "alias": "backdrop"; "required": false; "isSignal": true; }; "displayed": { "alias": "displayed"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": true; "isSignal": true; }; "placeholderOverride": { "alias": "placeholder"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; }, { "displayed": "displayedChange"; }, ["childInputComponentRef"], ["*"], true, never>;
111
63
  }
112
64
 
113
65
  declare class FilterBarComponent {
114
- readonly intl: _angular_core.InputSignalWithTransform<LuFilterPillsLabel, Partial<LuFilterPillsLabel>>;
66
+ readonly intl: _angular_core.InputSignalWithTransform<_lucca_front_ng_filter_pills.LuFilterPillsLabel, Partial<_lucca_front_ng_filter_pills.LuFilterPillsLabel>>;
67
+ /**
68
+ * Set when results only update after an explicit "Apply" action, to remove the hidden message
69
+ * telling assistive technology users that the results list updates automatically
70
+ */
71
+ readonly manualApply: _angular_core.InputSignalWithTransform<boolean, boolean | "" | "false" | "true">;
72
+ readonly autoApplyAnnouncementId: string;
115
73
  readonly addonBefore: _angular_core.WritableSignal<TemplateRef<unknown>>;
116
74
  readonly addonAfter: _angular_core.WritableSignal<TemplateRef<unknown>>;
117
- popoverPositions: ConnectionPositionPair[];
118
75
  readonly pills: _angular_core.Signal<readonly FilterPillComponent[]>;
119
76
  readonly optionalPills: _angular_core.Signal<FilterPillComponent[]>;
77
+ protected readonly displayedOptionalPills: _angular_core.Signal<FilterPillComponent[]>;
78
+ /** Mirrors the search clue of the optional filters select, which filters its options on its own. */
79
+ protected readonly clue: _angular_core.WritableSignal<string>;
80
+ /**
81
+ * The panel builds a group out of each run of consecutive options, so the pills of a same group
82
+ * have to be listed together. Groups keep the order of their first pill, ungrouped pills come first.
83
+ */
84
+ protected readonly optionalPillOptions: _angular_core.Signal<FilterPillComponent[]>;
85
+ /** Optional pills are identified by their instance, they have no serializable value to compare. */
86
+ protected readonly optionalPillComparer: LuOptionComparer$1<FilterPillComponent>;
87
+ private readonly optionalPillsSelect;
88
+ private readonly optionalPillsGroupTpl;
89
+ constructor();
90
+ protected displayOptionalPills(pills: FilterPillComponent[]): void;
120
91
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<FilterBarComponent, never>;
121
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<FilterBarComponent, "lu-filter-bar", never, { "intl": { "alias": "intl"; "required": false; "isSignal": true; }; }, {}, ["pills"], ["*"], true, never>;
92
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<FilterBarComponent, "lu-filter-bar", never, { "intl": { "alias": "intl"; "required": false; "isSignal": true; }; "manualApply": { "alias": "manualApply"; "required": false; "isSignal": true; }; }, {}, ["pills"], ["*"], true, never>;
122
93
  }
123
94
 
124
95
  declare const LU_FILTER_BAR_INSTANCE: InjectionToken<FilterBarComponent>;
@@ -127,7 +98,7 @@ type LuOptionComparer<T> = (a: T, b: T) => boolean;
127
98
  declare const filterViewDefaultOptionComparer: LuOptionComparer<unknown>;
128
99
  declare const filterViewDefaultOptionKey: (option: unknown) => unknown;
129
100
  declare class FilterViewSelectorComponent<T> {
130
- readonly intl: _angular_core.InputSignalWithTransform<LuFilterPillsLabel, Partial<LuFilterPillsLabel>>;
101
+ readonly intl: _angular_core.InputSignalWithTransform<_lucca_front_ng_filter_pills.LuFilterPillsLabel, Partial<_lucca_front_ng_filter_pills.LuFilterPillsLabel>>;
131
102
  readonly popoverRef: _angular_core.Signal<PopoverDirective>;
132
103
  /** The list of saved views to pick from. */
133
104
  readonly views: _angular_core.InputSignal<T[]>;
@@ -169,5 +140,18 @@ declare class FilterPillAddonAfterDirective {
169
140
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<FilterPillAddonAfterDirective, "[luFilterPillAddonAfter]", never, {}, {}, never, never, true, never>;
170
141
  }
171
142
 
172
- export { FILTER_PILL_HOST_COMPONENT, FILTER_PILL_INPUT_COMPONENT, FilterBarComponent, FilterPillAddonAfterDirective, FilterPillAddonBeforeDirective, FilterPillComponent, FilterPillDisplayerDirective, FilterPillLabelDirective, FilterViewSelectorComponent, LU_FILTER_BAR_INSTANCE, filterViewDefaultOptionComparer, filterViewDefaultOptionKey };
173
- export type { FilterPillInputComponent, FilterPillLayout, LuOptionComparer };
143
+ declare const LU_FILTER_PILLS_TRANSLATIONS: InjectionToken<LuTranslation<LuFilterPillsLabel>>;
144
+ interface LuFilterPillsLabel {
145
+ clear: string;
146
+ placeholder: string;
147
+ additionalFilters: string;
148
+ autoApplyAnnouncement: string;
149
+ selectView: string;
150
+ viewOptions: string;
151
+ renameView: string;
152
+ deleteView: string;
153
+ }
154
+ declare const luFilterPillsTranslations: LuTranslation<LuFilterPillsLabel>;
155
+
156
+ export { FilterBarComponent, FilterPillAddonAfterDirective, FilterPillAddonBeforeDirective, FilterPillComponent, FilterViewSelectorComponent, LU_FILTER_BAR_INSTANCE, LU_FILTER_PILLS_TRANSLATIONS, filterViewDefaultOptionComparer, filterViewDefaultOptionKey, luFilterPillsTranslations };
157
+ export type { LuFilterPillsLabel, LuOptionComparer };
@@ -1,6 +1,6 @@
1
1
  import * as _lucca_front_ng_form from '@lucca-front/ng/form';
2
2
  import * as _angular_core from '@angular/core';
3
- import { OnInit, ElementRef, OnDestroy, DoCheck, TemplateRef, InjectionToken } from '@angular/core';
3
+ import { OnInit, OnDestroy, ElementRef, DoCheck, TemplateRef, InjectionToken } from '@angular/core';
4
4
  import * as _lucca_front_ng_form_field from '@lucca-front/ng/form-field';
5
5
  import { RequiredValidator, NgControl, AbstractControl } from '@angular/forms';
6
6
  import { FormField } from '@angular/forms/signals';
@@ -14,21 +14,34 @@ type FormFieldSize = (typeof FORM_FIELD_SIZE)[number];
14
14
  /**
15
15
  * Available FormFieldComponent types
16
16
  */
17
- declare const FORM_FIELD_WIDTH: readonly [20, 30, 40, 50, 60];
17
+ declare const FORM_FIELD_WIDTH: readonly [10, 20, 30, 40, 50, 60];
18
18
  type FormFieldWidth = (typeof FORM_FIELD_WIDTH)[number];
19
19
  declare const FORM_FIELD_LAYOUT: readonly ["default", "checkable", "fieldset"];
20
20
  type FormFieldLayout = (typeof FORM_FIELD_LAYOUT)[number];
21
21
 
22
- declare class InputDirective implements OnInit {
22
+ declare class InputDirective implements OnInit, OnDestroy {
23
+ #private;
23
24
  readonly host: ElementRef<HTMLElement>;
24
25
  readonly formFieldRef: _lucca_front_ng_form_field.FormFieldComponent;
25
26
  /**
26
27
  * Prevents message and label ids from being propagated, useful if the input holds its own message and label (like for radios)
27
28
  */
28
29
  readonly standalone: _angular_core.InputSignalWithTransform<boolean, boolean | "" | "false" | "true">;
30
+ /**
31
+ * Space-separated ids labelling the input, appended to the ones provided by the parent form field.
32
+ * Use it instead of binding `aria-labelledby`, which the form field would override.
33
+ */
34
+ readonly labelledBy: _angular_core.InputSignal<string>;
35
+ /**
36
+ * Space-separated ids describing the input, placed before the ones provided by the parent form field.
37
+ * Use it instead of binding `aria-describedby`, which the form field would override.
38
+ */
39
+ readonly describedBy: _angular_core.InputSignal<string>;
40
+ constructor();
29
41
  ngOnInit(): void;
42
+ ngOnDestroy(): void;
30
43
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<InputDirective, never>;
31
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<InputDirective, "[luInput]", never, { "standalone": { "alias": "luInputStandalone"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
44
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<InputDirective, "[luInput]", never, { "standalone": { "alias": "luInputStandalone"; "required": false; "isSignal": true; }; "labelledBy": { "alias": "luInputLabelledBy"; "required": false; "isSignal": true; }; "describedBy": { "alias": "luInputDescribedBy"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
32
45
  }
33
46
 
34
47
  declare class FormFieldComponent implements OnDestroy, DoCheck {
@@ -62,7 +75,7 @@ declare class FormFieldComponent implements OnDestroy, DoCheck {
62
75
  readonly AI: _angular_core.InputSignalWithTransform<boolean, boolean | "" | "false" | "true">;
63
76
  readonly iconAItooltip: _angular_core.InputSignal<string>;
64
77
  readonly iconAIalt: _angular_core.InputSignal<string>;
65
- readonly width: _angular_core.InputSignalWithTransform<20 | 30 | 40 | 50 | 60, 20 | 30 | 40 | 50 | 60 | "null" | "20" | "30" | "40" | "50" | "60">;
78
+ readonly width: _angular_core.InputSignalWithTransform<10 | 20 | 30 | 40 | 50 | 60, 10 | 20 | 30 | 40 | 50 | 60 | "null" | "10" | "20" | "30" | "40" | "50" | "60">;
66
79
  invalidStatus: _angular_core.Signal<boolean>;
67
80
  readonly invalid: _angular_core.InputSignalWithTransform<boolean, boolean | "" | "false" | "true" | "null">;
68
81
  readonly inlineMessage: _angular_core.InputSignal<PortalContent>;
@@ -88,11 +101,27 @@ declare class FormFieldComponent implements OnDestroy, DoCheck {
88
101
  readonly presentation: _angular_core.InputSignalWithTransform<boolean, boolean | "" | "false" | "true">;
89
102
  readonly presentationMode: _angular_core.Signal<boolean>;
90
103
  readonly presentationDisplayTpl: _angular_core.WritableSignal<TemplateRef<unknown>>;
104
+ readonly hasInlineMessage: _angular_core.Signal<boolean>;
91
105
  addInput(input: InputDirective): void;
106
+ /**
107
+ * Unregisters an input that's being destroyed — e.g. one side of an `@if`/`@else` toggling which
108
+ * element carries `luInput` (a text field swapping for a button below a breakpoint, say). Without
109
+ * this, the detached element lingers in `#inputs` forever: `prepareInput` keeps reassigning it a
110
+ * fresh id on every future change, and each one gets added to `aria-labelledby` and never removed.
111
+ */
112
+ removeInput(input: InputDirective): void;
92
113
  get inputs(): InputDirective[];
93
114
  readonly id: _angular_core.WritableSignal<string>;
94
115
  readonly ready$: BehaviorSubject<boolean>;
95
116
  get ready(): boolean;
117
+ /**
118
+ * Ids labelling the inputs of this field, applied by each non-standalone `luInput`
119
+ */
120
+ readonly ariaLabelledBy: _angular_core.Signal<string[]>;
121
+ /**
122
+ * Ids describing the inputs of this field, applied by each non-standalone `luInput`
123
+ */
124
+ readonly ariaDescribedBy: _angular_core.Signal<string[]>;
96
125
  constructor();
97
126
  addLabelledBy(id: string, prepend?: boolean): void;
98
127
  removeLabelledBy(id: string): void;