@agorapulse/ui-components 22.1.8 → 22.2.1

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 (42) hide show
  1. package/agorapulse-ui-components-22.2.1.tgz +0 -0
  2. package/fesm2022/agorapulse-ui-components-action-dropdown.mjs +2 -2
  3. package/fesm2022/agorapulse-ui-components-action-dropdown.mjs.map +1 -1
  4. package/fesm2022/agorapulse-ui-components-autocomplete.mjs +1 -1
  5. package/fesm2022/agorapulse-ui-components-autocomplete.mjs.map +1 -1
  6. package/fesm2022/agorapulse-ui-components-datepicker.mjs +655 -219
  7. package/fesm2022/agorapulse-ui-components-datepicker.mjs.map +1 -1
  8. package/fesm2022/agorapulse-ui-components-directives.mjs +169 -2
  9. package/fesm2022/agorapulse-ui-components-directives.mjs.map +1 -1
  10. package/fesm2022/agorapulse-ui-components-dropdown-panel.mjs +3 -1
  11. package/fesm2022/agorapulse-ui-components-dropdown-panel.mjs.map +1 -1
  12. package/fesm2022/agorapulse-ui-components-filter-dropdown.mjs +15 -8
  13. package/fesm2022/agorapulse-ui-components-filter-dropdown.mjs.map +1 -1
  14. package/fesm2022/agorapulse-ui-components-input-group.mjs +6 -4
  15. package/fesm2022/agorapulse-ui-components-input-group.mjs.map +1 -1
  16. package/fesm2022/agorapulse-ui-components-input-search.mjs +1 -1
  17. package/fesm2022/agorapulse-ui-components-input-search.mjs.map +1 -1
  18. package/fesm2022/agorapulse-ui-components-labels-selector.mjs +1 -1
  19. package/fesm2022/agorapulse-ui-components-labels-selector.mjs.map +1 -1
  20. package/fesm2022/agorapulse-ui-components-neo-datepicker.mjs +2 -2
  21. package/fesm2022/agorapulse-ui-components-neo-datepicker.mjs.map +1 -1
  22. package/fesm2022/agorapulse-ui-components-phone-number-input.mjs +1 -1
  23. package/fesm2022/agorapulse-ui-components-phone-number-input.mjs.map +1 -1
  24. package/fesm2022/agorapulse-ui-components-popover.mjs +7 -0
  25. package/fesm2022/agorapulse-ui-components-popover.mjs.map +1 -1
  26. package/fesm2022/agorapulse-ui-components-select.mjs +8 -39
  27. package/fesm2022/agorapulse-ui-components-select.mjs.map +1 -1
  28. package/fesm2022/agorapulse-ui-components.mjs +1 -3
  29. package/fesm2022/agorapulse-ui-components.mjs.map +1 -1
  30. package/package.json +2 -6
  31. package/types/agorapulse-ui-components-datepicker.d.ts +313 -88
  32. package/types/agorapulse-ui-components-directives.d.ts +73 -1
  33. package/types/agorapulse-ui-components-dropdown-panel.d.ts +3 -1
  34. package/types/agorapulse-ui-components-input-group.d.ts +3 -1
  35. package/types/agorapulse-ui-components-neo-datepicker.d.ts +2 -2
  36. package/types/agorapulse-ui-components-popover.d.ts +7 -0
  37. package/types/agorapulse-ui-components-select.d.ts +3 -4
  38. package/types/agorapulse-ui-components.d.ts +1 -4
  39. package/agorapulse-ui-components-22.1.8.tgz +0 -0
  40. package/fesm2022/agorapulse-ui-components-date-range-picker.mjs +0 -163
  41. package/fesm2022/agorapulse-ui-components-date-range-picker.mjs.map +0 -1
  42. package/types/agorapulse-ui-components-date-range-picker.d.ts +0 -75
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@agorapulse/ui-components",
3
3
  "description": "Agorapulse UI Components Library",
4
- "version": "22.1.8",
4
+ "version": "22.2.1",
5
5
  "author": "Benoit Hediard",
6
6
  "repository": {
7
7
  "type": "git",
@@ -23,7 +23,7 @@
23
23
  "@floating-ui/dom": "^1.8.0",
24
24
  "@ng-select/ng-select": "^23.0.0",
25
25
  "@agorapulse/ngx-daterangepicker-material": "^6.0.5",
26
- "dayjs": "^1.11.6",
26
+ "dayjs": "^1.11.8",
27
27
  "es-toolkit": "1.39.8",
28
28
  "ngxtension": "7.2.0"
29
29
  },
@@ -81,10 +81,6 @@
81
81
  "types": "./types/agorapulse-ui-components-counter.d.ts",
82
82
  "default": "./fesm2022/agorapulse-ui-components-counter.mjs"
83
83
  },
84
- "./date-range-picker": {
85
- "types": "./types/agorapulse-ui-components-date-range-picker.d.ts",
86
- "default": "./fesm2022/agorapulse-ui-components-date-range-picker.mjs"
87
- },
88
84
  "./datepicker": {
89
85
  "types": "./types/agorapulse-ui-components-datepicker.d.ts",
90
86
  "default": "./fesm2022/agorapulse-ui-components-datepicker.mjs"
@@ -3,9 +3,107 @@ import * as _angular_core from '@angular/core';
3
3
  import { OnInit, OnChanges, AfterViewInit, ChangeDetectorRef, EventEmitter, SimpleChanges, TemplateRef } from '@angular/core';
4
4
  import { DropdownOverlay } from '@agorapulse/ui-components/dropdown-base';
5
5
  import dayjs from 'dayjs';
6
+ import { ButtonConfig } from '@agorapulse/ui-components/button';
6
7
  import { SymbolRegistry } from '@agorapulse/ui-symbol';
7
8
  import { DaterangepickerComponent } from '@agorapulse/ngx-daterangepicker-material';
8
- import { ControlValueAccessor } from '@angular/forms';
9
+ import { FormValueControl } from '@angular/forms/signals';
10
+
11
+ /** The month a calendar should move to. */
12
+ interface DatepickerMonth {
13
+ /** Zero-based, as dayjs and the vendor both count months. */
14
+ month: number;
15
+ year: number;
16
+ }
17
+ /** A cell of the grid, carrying the states the template would otherwise recompute on every render. */
18
+ interface MonthOption {
19
+ month: number;
20
+ label: string;
21
+ ariaLabel: string;
22
+ disabled: boolean;
23
+ config: ButtonConfig;
24
+ }
25
+ /** A cell of the year grid the panel shows once the year is clicked. */
26
+ interface YearOption {
27
+ year: number;
28
+ disabled: boolean;
29
+ config: ButtonConfig;
30
+ }
31
+ /**
32
+ * A year of months in a dropdown, so a calendar can be moved somewhere far without paging through
33
+ * the months in between. Driven by `apDropdownTrigger` on whatever the caller wants as a trigger.
34
+ *
35
+ * The year is browsable inside the panel; only clicking a month commits.
36
+ *
37
+ * @example
38
+ * ```html
39
+ * <ap-button [apDropdownTrigger]="picker">{{ label }}</ap-button>
40
+ * <ap-datepicker-month-picker
41
+ * #picker
42
+ * [month]="month"
43
+ * [year]="year"
44
+ * (monthSelected)="goTo($event)" />
45
+ * ```
46
+ */
47
+ declare class DatepickerMonthPickerComponent implements DropdownOverlay {
48
+ /** The month the calendar is showing, zero-based. Highlighted in the grid. */
49
+ readonly month: _angular_core.InputSignal<number>;
50
+ /** The year the calendar is showing. The panel opens on it, and returns to it when it moves. */
51
+ readonly year: _angular_core.InputSignal<number>;
52
+ readonly locale: _angular_core.InputSignal<string>;
53
+ readonly minDate: _angular_core.InputSignal<dayjs.Dayjs | undefined>;
54
+ readonly maxDate: _angular_core.InputSignal<dayjs.Dayjs | undefined>;
55
+ readonly monthSelected: _angular_core.OutputEmitterRef<DatepickerMonth>;
56
+ /**
57
+ * Months until the year is clicked, years until one is picked. Reaching a distant year through
58
+ * the arrows alone costs one click per year; through the grid it costs one per page.
59
+ */
60
+ readonly showingYears: _angular_core.WritableSignal<boolean>;
61
+ private readonly panelTemplate;
62
+ private readonly overlay;
63
+ readonly isOpen: _angular_core.Signal<boolean>;
64
+ /** Browsable on its own, and re-anchored on the calendar's year whenever that moves. */
65
+ readonly displayedYear: _angular_core.WritableSignal<number>;
66
+ /**
67
+ * First year of the visible page. Pages are fixed blocks rather than a window around the
68
+ * displayed year, so the same year always sits in the same page and browsing back and forth
69
+ * lands on the same grid.
70
+ */
71
+ private readonly yearPageStart;
72
+ /** The page the years grid spans, for the header that replaces the year while it shows. */
73
+ readonly displayedYearRange: _angular_core.Signal<string>;
74
+ readonly canGoPrevious: _angular_core.Signal<boolean>;
75
+ readonly canGoNext: _angular_core.Signal<boolean>;
76
+ readonly months: _angular_core.Signal<MonthOption[]>;
77
+ readonly years: _angular_core.Signal<YearOption[]>;
78
+ open(triggerElement?: HTMLElement): void;
79
+ close(): void;
80
+ toggle(triggerElement?: HTMLElement): void;
81
+ onPrevious(): void;
82
+ onNext(): void;
83
+ /** Toggles the grid between the months of a year and the years of a page. */
84
+ onToggleYears(): void;
85
+ onSelectYear(year: number): void;
86
+ onSelectMonth(month: number): void;
87
+ /** One year at a time through the months, a whole page at a time through the years. */
88
+ private step;
89
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DatepickerMonthPickerComponent, never>;
90
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DatepickerMonthPickerComponent, "ap-datepicker-month-picker", never, { "month": { "alias": "month"; "required": true; "isSignal": true; }; "year": { "alias": "year"; "required": true; "isSignal": true; }; "locale": { "alias": "locale"; "required": false; "isSignal": true; }; "minDate": { "alias": "minDate"; "required": false; "isSignal": true; }; "maxDate": { "alias": "maxDate"; "required": false; "isSignal": true; }; }, { "monthSelected": "monthSelected"; }, never, never, true, never>;
91
+ }
92
+
93
+ /** One shortcut in the column beside the calendars. */
94
+ interface DatepickerPreset {
95
+ /** Stable id, independent of the displayed label. */
96
+ key: string;
97
+ /** Text shown to the user. Already translated. */
98
+ label: string;
99
+ range: [dayjs.Dayjs, dayjs.Dayjs];
100
+ }
101
+ type DefaultPresetKey = 'yesterday' | 'lastWeek' | 'last30Days' | 'lastMonth' | 'thisMonth';
102
+ /**
103
+ * The five shortcuts a picker offers by default. A function and not a constant, so the ranges are
104
+ * computed when shown: a session left open across midnight would otherwise offer yesterday's.
105
+ */
106
+ declare function defaultDatepickerPresets(labels?: Partial<Record<DefaultPresetKey, string>>, today?: dayjs.Dayjs): DatepickerPreset[];
9
107
 
10
108
  declare enum DatepickerMode {
11
109
  Single = "Single",
@@ -16,44 +114,26 @@ interface Period {
16
114
  startDate?: dayjs.Dayjs;
17
115
  endDate?: dayjs.Dayjs;
18
116
  }
117
+ /**
118
+ * A range just picked, and the preset it came from when there is one. A widened `Period` rather
119
+ * than a type of its own, so callers typing `periodSelected` as a `Period` keep compiling.
120
+ */
121
+ interface SelectedPeriod extends Period {
122
+ preset?: DatepickerPreset;
123
+ }
19
124
  interface StartDate {
20
125
  startDate: dayjs.Dayjs;
21
126
  }
22
- interface I18nDatePicker {
23
- ranges: {
24
- yesterday: string;
25
- lastWeek: string;
26
- last30Days: string;
27
- lastMonth: string;
28
- thisMonth: string;
29
- [other: string]: string;
30
- };
31
- /** Label of the "Custom" range entry shown when `showCustomRangeLabel` is enabled. Defaults to 'Custom'. */
32
- customRangeLabel?: string;
33
- }
34
127
  type FirstDayOfWeek = 'sunday' | 'monday';
35
128
  type Locale = 'en' | 'fr' | 'es' | 'de';
36
129
  type RangesConfigPresetType = {
37
130
  [periodText: string]: [dayjs.Dayjs, dayjs.Dayjs];
38
131
  };
39
- declare const RangesConfigPreset: {
40
- yesterday: [dayjs.Dayjs, dayjs.Dayjs];
41
- lastWeek: [dayjs.Dayjs, dayjs.Dayjs];
42
- last30Days: [dayjs.Dayjs, dayjs.Dayjs];
43
- lastMonth: [dayjs.Dayjs, dayjs.Dayjs];
44
- thisMonth: [dayjs.Dayjs, dayjs.Dayjs];
45
- lastWeekFromToday: [dayjs.Dayjs, dayjs.Dayjs];
46
- lastMonthFromToday: [dayjs.Dayjs, dayjs.Dayjs];
47
- last3MonthsFromToday: [dayjs.Dayjs, dayjs.Dayjs];
48
- last6MonthsFromToday: [dayjs.Dayjs, dayjs.Dayjs];
49
- lastYearFromToday: [dayjs.Dayjs, dayjs.Dayjs];
50
- };
51
132
  declare class DatepickerComponent implements OnInit, OnChanges, AfterViewInit {
52
133
  changeDetectorRef: ChangeDetectorRef;
53
134
  symbolRegistry: SymbolRegistry;
54
135
  datepickerRef: DaterangepickerComponent;
55
136
  firstDayOfWeek: string;
56
- i18n: I18nDatePicker;
57
137
  locale: string;
58
138
  set maxDate(maxDate: dayjs.Dayjs | undefined);
59
139
  set minDate(minDate: dayjs.Dayjs | undefined);
@@ -63,45 +143,66 @@ declare class DatepickerComponent implements OnInit, OnChanges, AfterViewInit {
63
143
  selectedPeriod: Period;
64
144
  /** Maximum number of days between the start and the end date in Range mode. Undefined means no limit. */
65
145
  dateLimit: _angular_core.InputSignal<number | undefined>;
66
- showRanges: boolean;
67
- showCustomRangeLabel: _angular_core.InputSignal<boolean>;
146
+ /** Shortcuts listed beside the calendars. Empty by default, and ignored outside Range mode. */
147
+ presets: _angular_core.InputSignal<DatepickerPreset[]>;
68
148
  dateSelected: EventEmitter<any>;
69
- periodSelected: EventEmitter<Period>;
149
+ periodSelected: EventEmitter<SelectedPeriod>;
70
150
  DatepickerMode: typeof DatepickerMode;
71
- doubleCalendarWidth: number;
72
151
  localeConfig: {
73
152
  customRangeLabel: string;
74
153
  daysOfWeek: string[];
75
154
  monthNames: string[];
76
155
  firstDay: number;
77
156
  };
78
- rangesConfig: _angular_core.InputSignal<RangesConfigPresetType | null>;
79
- ranges: RangesConfigPresetType;
80
- rangePickerWidth: number;
81
- width: number;
82
157
  pageSet: boolean;
83
158
  maxDateStr: string;
84
159
  minDateStr: string;
160
+ /** The same bounds as `minDateStr`/`maxDateStr`, kept as dayjs for the month pickers. */
161
+ maxDateValue: dayjs.Dayjs | undefined;
162
+ minDateValue: dayjs.Dayjs | undefined;
163
+ /** A field and not an inline literal: the template would rebuild the object on every pass. */
164
+ readonly monthTriggerConfig: ButtonConfig;
165
+ /** A getter and not a `computed`: `mode` is a plain `@Input`, which a computed would not track. */
166
+ get hasPresets(): boolean;
167
+ /**
168
+ * Memoised, and a shared constant when empty, so the reference only changes when `presets` does.
169
+ * A fresh `ranges` object reaches the vendor's setter, which resets the calendars and drops the
170
+ * start anchor and the in-range preview of a selection still in progress.
171
+ */
172
+ private readonly presetRanges;
173
+ get vendorRanges(): RangesConfigPresetType;
85
174
  constructor(changeDetectorRef: ChangeDetectorRef, symbolRegistry: SymbolRegistry);
86
175
  ngOnInit(): void;
87
176
  ngOnChanges(changes: SimpleChanges): void;
88
177
  ngAfterViewInit(): void;
89
178
  initDatePickerLocale(): void;
90
- private initRanges;
91
179
  isCustomDate: (date: any) => string[];
92
180
  private isSelected;
93
181
  onStartDateChanged(event: StartDate): void;
94
182
  onDatesUpdated(event: Period): void;
183
+ /**
184
+ * The preset the current range came from. The vendor keeps `chosenRange` up to date both ways —
185
+ * `clickRange` writes the clicked label, `clickDate` resets it to `customRangeLabel` — and those
186
+ * labels are the keys of its `ranges` table, so they are unique. Matching on the label rather
187
+ * than on a position survives a translated or reordered shortcut.
188
+ */
189
+ private chosenPreset;
95
190
  onNextMonth(): void;
191
+ onLeftMonthPicked(picked: DatepickerMonth): void;
192
+ onRightMonthPicked(picked: DatepickerMonth): void;
193
+ /**
194
+ * The vendor moves the view only — never the selection — and clamps to its own min/max on the
195
+ * way, so the picker's disabled months are a second line of defence rather than the only one.
196
+ */
197
+ private moveCalendarTo;
96
198
  onPreviousMonth(): void;
97
199
  /**
98
200
  * Ugly hack used here to open the calendar on the right day if they are selected dates
99
201
  * * https://github.com/fetrarij/ngx-daterangepicker-material/issues/139
100
202
  */
101
203
  setCalendarCurrentPage(): void;
102
- setWidth(): void;
103
204
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<DatepickerComponent, never>;
104
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<DatepickerComponent, "ap-datepicker", never, { "firstDayOfWeek": { "alias": "firstDayOfWeek"; "required": false; }; "i18n": { "alias": "i18n"; "required": false; }; "locale": { "alias": "locale"; "required": false; }; "maxDate": { "alias": "maxDate"; "required": false; }; "minDate": { "alias": "minDate"; "required": false; }; "mode": { "alias": "mode"; "required": true; }; "selectedDate": { "alias": "selectedDate"; "required": false; }; "selectedDates": { "alias": "selectedDates"; "required": false; }; "selectedPeriod": { "alias": "selectedPeriod"; "required": false; }; "dateLimit": { "alias": "dateLimit"; "required": false; "isSignal": true; }; "showRanges": { "alias": "showRanges"; "required": false; }; "showCustomRangeLabel": { "alias": "showCustomRangeLabel"; "required": false; "isSignal": true; }; "rangesConfig": { "alias": "rangesConfig"; "required": false; "isSignal": true; }; }, { "dateSelected": "dateSelected"; "periodSelected": "periodSelected"; }, never, never, true, never>;
205
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DatepickerComponent, "ap-datepicker", never, { "firstDayOfWeek": { "alias": "firstDayOfWeek"; "required": false; }; "locale": { "alias": "locale"; "required": false; }; "maxDate": { "alias": "maxDate"; "required": false; }; "minDate": { "alias": "minDate"; "required": false; }; "mode": { "alias": "mode"; "required": true; }; "selectedDate": { "alias": "selectedDate"; "required": false; }; "selectedDates": { "alias": "selectedDates"; "required": false; }; "selectedPeriod": { "alias": "selectedPeriod"; "required": false; }; "dateLimit": { "alias": "dateLimit"; "required": false; "isSignal": true; }; "presets": { "alias": "presets"; "required": false; "isSignal": true; }; }, { "dateSelected": "dateSelected"; "periodSelected": "periodSelected"; }, never, never, true, never>;
105
206
  }
106
207
 
107
208
  /**
@@ -109,7 +210,14 @@ declare class DatepickerComponent implements OnInit, OnChanges, AfterViewInit {
109
210
  * in an overlay. Exposes open/close/toggle so it can be driven by apDropdownTrigger.
110
211
  */
111
212
  declare class DatepickerDropdownComponent implements DropdownOverlay {
112
- datepickerDropdownTemplate: _angular_core.Signal<TemplateRef<unknown> | undefined>;
213
+ /**
214
+ * Stable id for the panel (`role="dialog"`), so a trigger can bind `aria-controls` to it.
215
+ * Combines the app id — several federated Angular apps can share one page — with a per-instance
216
+ * random suffix computed once at construction. No shared mutable counter, and no reliance on
217
+ * `crypto.randomUUID()`, which browsers refuse outside a secure (HTTPS/localhost) context.
218
+ */
219
+ readonly panelId: string;
220
+ private readonly panel;
113
221
  mode: _angular_core.InputSignal<DatepickerMode>;
114
222
  selectedDate: _angular_core.InputSignal<dayjs.Dayjs | undefined>;
115
223
  selectedDates: _angular_core.InputSignal<dayjs.Dayjs[]>;
@@ -120,15 +228,20 @@ declare class DatepickerDropdownComponent implements DropdownOverlay {
120
228
  dateLimit: _angular_core.InputSignal<number | undefined>;
121
229
  /** Caption shown at the bottom of the panel, e.g. to explain a selection constraint. */
122
230
  hint: _angular_core.InputSignal<string | undefined>;
231
+ /**
232
+ * Rendered under `hint`, for what a caption cannot carry — a banner with its own button. A
233
+ * `TemplateRef` and not an `ng-content`: the footer shows inside the overlay's embedded view.
234
+ */
235
+ panelFooter: _angular_core.InputSignal<TemplateRef<unknown> | undefined>;
123
236
  firstDayOfWeek: _angular_core.InputSignal<"sunday" | "monday">;
124
237
  locale: _angular_core.InputSignal<string>;
125
- i18n: _angular_core.InputSignal<I18nDatePicker | undefined>;
126
- protected readonly effectiveI18n: _angular_core.Signal<I18nDatePicker>;
127
- showRanges: _angular_core.InputSignal<boolean>;
128
- showCustomRangeLabel: _angular_core.InputSignal<boolean>;
129
- rangesConfig: _angular_core.InputSignal<RangesConfigPresetType | null>;
238
+ /** Shortcuts listed beside the calendars. Empty: no column at all. */
239
+ presets: _angular_core.InputSignal<DatepickerPreset[]>;
130
240
  showBackdrop: _angular_core.InputSignal<boolean>;
131
- /** Close the overlay once a full period is selected. When false it stays open until backdrop click or Escape. */
241
+ /**
242
+ * Close the overlay once the selection is complete. When false it stays open until backdrop
243
+ * click or Escape — which lets the host vet a selection before anything closes.
244
+ */
132
245
  closeOnSelect: _angular_core.InputSignal<boolean>;
133
246
  disabled: _angular_core.InputSignal<boolean>;
134
247
  /** Panel placement. Unset means derived from the anchor mode, i.e. `bottom-start`. */
@@ -136,59 +249,171 @@ declare class DatepickerDropdownComponent implements DropdownOverlay {
136
249
  opened: _angular_core.OutputEmitterRef<void>;
137
250
  closed: _angular_core.OutputEmitterRef<void>;
138
251
  dateSelected: _angular_core.OutputEmitterRef<dayjs.Dayjs>;
139
- periodSelected: _angular_core.OutputEmitterRef<Period>;
140
- private readonly overlay;
252
+ periodSelected: _angular_core.OutputEmitterRef<SelectedPeriod>;
141
253
  readonly isOpen: _angular_core.Signal<boolean>;
142
254
  open(triggerElement?: HTMLElement): void;
255
+ /** `closed` is relayed from the panel, which fires it for a gesture as well as for this call. */
143
256
  close(): void;
144
257
  toggle(triggerElement?: HTMLElement): void;
145
258
  onDateSelected(date: dayjs.Dayjs): void;
146
- onPeriodSelected(period: Period): void;
259
+ onPeriodSelected(period: SelectedPeriod): void;
147
260
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<DatepickerDropdownComponent, never>;
148
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<DatepickerDropdownComponent, "ap-datepicker-dropdown", never, { "mode": { "alias": "mode"; "required": true; "isSignal": true; }; "selectedDate": { "alias": "selectedDate"; "required": false; "isSignal": true; }; "selectedDates": { "alias": "selectedDates"; "required": false; "isSignal": true; }; "selectedPeriod": { "alias": "selectedPeriod"; "required": false; "isSignal": true; }; "minDate": { "alias": "minDate"; "required": false; "isSignal": true; }; "maxDate": { "alias": "maxDate"; "required": false; "isSignal": true; }; "dateLimit": { "alias": "dateLimit"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "firstDayOfWeek": { "alias": "firstDayOfWeek"; "required": false; "isSignal": true; }; "locale": { "alias": "locale"; "required": false; "isSignal": true; }; "i18n": { "alias": "i18n"; "required": false; "isSignal": true; }; "showRanges": { "alias": "showRanges"; "required": false; "isSignal": true; }; "showCustomRangeLabel": { "alias": "showCustomRangeLabel"; "required": false; "isSignal": true; }; "rangesConfig": { "alias": "rangesConfig"; "required": false; "isSignal": true; }; "showBackdrop": { "alias": "showBackdrop"; "required": false; "isSignal": true; }; "closeOnSelect": { "alias": "closeOnSelect"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "placement": { "alias": "placement"; "required": false; "isSignal": true; }; }, { "opened": "opened"; "closed": "closed"; "dateSelected": "dateSelected"; "periodSelected": "periodSelected"; }, never, never, true, never>;
261
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DatepickerDropdownComponent, "ap-datepicker-dropdown", never, { "mode": { "alias": "mode"; "required": true; "isSignal": true; }; "selectedDate": { "alias": "selectedDate"; "required": false; "isSignal": true; }; "selectedDates": { "alias": "selectedDates"; "required": false; "isSignal": true; }; "selectedPeriod": { "alias": "selectedPeriod"; "required": false; "isSignal": true; }; "minDate": { "alias": "minDate"; "required": false; "isSignal": true; }; "maxDate": { "alias": "maxDate"; "required": false; "isSignal": true; }; "dateLimit": { "alias": "dateLimit"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "panelFooter": { "alias": "panelFooter"; "required": false; "isSignal": true; }; "firstDayOfWeek": { "alias": "firstDayOfWeek"; "required": false; "isSignal": true; }; "locale": { "alias": "locale"; "required": false; "isSignal": true; }; "presets": { "alias": "presets"; "required": false; "isSignal": true; }; "showBackdrop": { "alias": "showBackdrop"; "required": false; "isSignal": true; }; "closeOnSelect": { "alias": "closeOnSelect"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "placement": { "alias": "placement"; "required": false; "isSignal": true; }; }, { "opened": "opened"; "closed": "closed"; "dateSelected": "dateSelected"; "periodSelected": "periodSelected"; }, never, never, true, never>;
149
262
  }
150
263
 
151
- declare const defaultPeriodSelected: Period;
152
- declare class InputDatepickerComponent implements ControlValueAccessor {
153
- mode: _angular_core.InputSignal<DatepickerMode>;
154
- label: _angular_core.InputSignal<string | undefined>;
155
- placeholder: _angular_core.InputSignal<string>;
156
- firstDayOfWeek: _angular_core.InputSignal<FirstDayOfWeek>;
157
- locale: _angular_core.InputSignal<Locale>;
158
- dateFormat: _angular_core.InputSignal<string>;
159
- disabled: _angular_core.InputSignal<boolean>;
160
- minDate: _angular_core.InputSignal<dayjs.Dayjs | undefined>;
161
- maxDate: _angular_core.InputSignal<dayjs.Dayjs | undefined>;
162
- selectedDate: _angular_core.InputSignal<dayjs.Dayjs | undefined>;
163
- selectedDates: _angular_core.InputSignal<dayjs.Dayjs[]>;
164
- selectedPeriod: _angular_core.InputSignal<Period | undefined>;
165
- i18n: _angular_core.InputSignal<I18nDatePicker | undefined>;
166
- showRanges: _angular_core.InputSignal<boolean>;
167
- showCustomRangeLabel: _angular_core.InputSignal<boolean>;
168
- rangesConfig: _angular_core.InputSignal<RangesConfigPresetType | null>;
169
- showBackdrop: _angular_core.InputSignal<boolean>;
264
+ /**
265
+ * An `ap-datepicker-select` value. Its shape depends on the mode: a date in Single, a Period in
266
+ * Range, an array of dates in Multiple. TypeScript cannot tie the two together — `mode` is a
267
+ * runtime value — hence the guard below.
268
+ */
269
+ type DatepickerValue = dayjs.Dayjs | Period | dayjs.Dayjs[];
270
+ /** Tells a `Period` from the two other shapes, without an `as`. */
271
+ declare function isPeriod(value: unknown): value is Period;
272
+ /**
273
+ * Throws when the value does not match the mode. An empty value (`undefined`, `null`) is accepted
274
+ * everywhere: it means nothing is selected.
275
+ */
276
+ declare function assertValueMatchesMode(mode: DatepickerMode, value: unknown): void;
277
+
278
+ /** A selected date, as the field shows it in Multiple mode. */
279
+ interface DateChip {
280
+ label: string;
281
+ date: dayjs.Dayjs;
282
+ }
283
+ /** What the field just committed, and the preset it came from. */
284
+ interface DatepickerSelection {
285
+ /** The committed value, in the shape the mode requires. */
286
+ value: DatepickerValue | undefined;
287
+ /** The preset clicked, when the value came from one. Absent from a calendar pick. */
288
+ preset?: DatepickerPreset;
289
+ }
290
+ /**
291
+ * The design system's date field: it shows the value, opens the shared panel and binds to a form.
292
+ * It carries no label of its own — wrap it in an `ap-form-field`, as `ap-select` is.
293
+ *
294
+ * @example
295
+ * ```html
296
+ * <ap-form-field>
297
+ * <label for="period">Reporting period</label>
298
+ * <ap-datepicker-select [mode]="DatepickerMode.Range" [(value)]="period" [presets]="presets" />
299
+ * </ap-form-field>
300
+ * ```
301
+ */
302
+ declare class DatepickerSelectComponent implements FormValueControl<DatepickerValue | undefined | null> {
303
+ readonly mode: _angular_core.InputSignal<DatepickerMode>;
304
+ /**
305
+ * The selection. Its shape follows the mode: a date in Single, a `Period` in Range, an array in
306
+ * Multiple. A shape that does not match the mode throws on the first render.
307
+ *
308
+ * Empty is `undefined`, and `null` is accepted for it: a form holding a nullable date has no
309
+ * other empty to offer, and this is the type a binding is checked against.
310
+ */
311
+ readonly value: _angular_core.ModelSignal<DatepickerValue | null | undefined>;
312
+ /** Disables the field. A form writes here too, rather than to a second flag of its own. */
313
+ readonly disabled: _angular_core.InputSignal<boolean>;
314
+ readonly minDate: _angular_core.InputSignal<dayjs.Dayjs | undefined>;
315
+ readonly maxDate: _angular_core.InputSignal<dayjs.Dayjs | undefined>;
316
+ /**
317
+ * Maximum number of days between the start and the end, in Range mode. It bars the days beyond
318
+ * the limit without saying so: pair it with a `panelHint` when the constraint deserves a word.
319
+ */
320
+ readonly maxRangeDays: _angular_core.InputSignal<number | undefined>;
321
+ /** Caption shown at the bottom of the panel, to explain a constraint for instance. */
322
+ readonly panelHint: _angular_core.InputSignal<string | undefined>;
323
+ /** Rendered under `panelHint`, for what a sentence cannot carry — a banner with its own button. */
324
+ readonly panelFooter: _angular_core.InputSignal<TemplateRef<unknown> | undefined>;
325
+ /**
326
+ * Consulted before a selection is committed. Returning `false` keeps the current value, keeps the
327
+ * panel open and emits `selectionRejected`.
328
+ *
329
+ * A constraint the panel can apply itself (`minDate`, `maxDate`, `maxRangeDays`) belongs there
330
+ * instead: it bars the days rather than letting them be clicked and then refused.
331
+ */
332
+ readonly canSelect: _angular_core.InputSignal<((value: DatepickerValue) => boolean) | undefined>;
333
+ /** Shortcuts listed beside the calendars. Empty: no column at all. */
334
+ readonly presets: _angular_core.InputSignal<DatepickerPreset[]>;
335
+ readonly placeholder: _angular_core.InputSignal<string>;
336
+ /**
337
+ * Accessible name of the field, since `role="combobox"` is not a name-from-content role and the
338
+ * component carries no internal `<label>` — surround it with an `ap-form-field` for the visible
339
+ * label, and mirror its text here.
340
+ */
341
+ readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
342
+ /**
343
+ * dayjs format of the displayed text. Defaults to `'MM/DD/YYYY'`, which needs no plugin: the
344
+ * localized tokens (`ll`, `LL`) assume the host application loaded `dayjs/plugin/localizedFormat`.
345
+ */
346
+ readonly dateFormat: _angular_core.InputSignal<string>;
347
+ readonly locale: _angular_core.InputSignal<Locale>;
348
+ readonly firstDayOfWeek: _angular_core.InputSignal<FirstDayOfWeek>;
170
349
  /** Panel placement. Unset means derived from the anchor mode, i.e. `bottom-start`. */
171
350
  readonly placement: _angular_core.InputSignal<_floating_ui_utils.Placement | undefined>;
172
- /** Show a clear (X) inside the input when a value is selected. Off by default. */
173
- clearable: _angular_core.InputSignal<boolean>;
174
- periodRange: _angular_core.WritableSignal<Period>;
175
- isDisabled: _angular_core.WritableSignal<boolean>;
176
- periodChanged: _angular_core.OutputEmitterRef<Period>;
177
- dateSelected: _angular_core.OutputEmitterRef<dayjs.Dayjs>;
178
- displayedDate: _angular_core.Signal<string>;
179
- initPeriodRange: _angular_core.EffectRef;
180
- onTouched: () => void;
181
- onChange: (value: Period) => void;
182
- onPeriodSelected(period: Period): void;
183
- /** Clear the selected period. Stops propagation so it doesn't reopen the calendar. */
184
- onClear(event: Event): void;
185
- writeValue(value: Period): void;
186
- registerOnChange(fn: (value: Period) => void): void;
187
- registerOnTouched(fn: () => void): void;
188
- setDisabledState(isDisabled: boolean): void;
189
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<InputDatepickerComponent, never>;
190
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<InputDatepickerComponent, "ap-input-datepicker", never, { "mode": { "alias": "mode"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "firstDayOfWeek": { "alias": "firstDayOfWeek"; "required": false; "isSignal": true; }; "locale": { "alias": "locale"; "required": false; "isSignal": true; }; "dateFormat": { "alias": "dateFormat"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "minDate": { "alias": "minDate"; "required": false; "isSignal": true; }; "maxDate": { "alias": "maxDate"; "required": false; "isSignal": true; }; "selectedDate": { "alias": "selectedDate"; "required": false; "isSignal": true; }; "selectedDates": { "alias": "selectedDates"; "required": false; "isSignal": true; }; "selectedPeriod": { "alias": "selectedPeriod"; "required": false; "isSignal": true; }; "i18n": { "alias": "i18n"; "required": false; "isSignal": true; }; "showRanges": { "alias": "showRanges"; "required": false; "isSignal": true; }; "showCustomRangeLabel": { "alias": "showCustomRangeLabel"; "required": false; "isSignal": true; }; "rangesConfig": { "alias": "rangesConfig"; "required": false; "isSignal": true; }; "showBackdrop": { "alias": "showBackdrop"; "required": false; "isSignal": true; }; "placement": { "alias": "placement"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; }, { "periodChanged": "periodChanged"; "dateSelected": "dateSelected"; }, never, never, true, never>;
351
+ /** Shows a clear cross in the field as soon as something is selected. */
352
+ readonly clearable: _angular_core.InputSignal<boolean>;
353
+ /** IANA time zone name. When set, a chip shows its abbreviation beside the field. */
354
+ readonly timeZone: _angular_core.InputSignal<string | undefined>;
355
+ /** Tooltip carried by the info icon next to the chip. */
356
+ readonly timeZoneTooltip: _angular_core.InputSignal<string | undefined>;
357
+ /** Blur of the combobox. A form reads it to mark the field touched. */
358
+ readonly touch: _angular_core.OutputEmitterRef<void>;
359
+ /** The committed value with the preset that produced it, beside `valueChange` — one event, not two halves to correlate. */
360
+ readonly selectionChange: _angular_core.OutputEmitterRef<DatepickerSelection>;
361
+ /** The selection `canSelect` just refused. The field's value has not moved. */
362
+ readonly selectionRejected: _angular_core.OutputEmitterRef<DatepickerValue>;
363
+ /** The panel just opened, just closed, so that what a host shows beside it can start over. */
364
+ readonly opened: _angular_core.OutputEmitterRef<void>;
365
+ readonly closed: _angular_core.OutputEmitterRef<void>;
366
+ protected readonly DatepickerMode: typeof DatepickerMode;
367
+ /**
368
+ * The panel only closes itself without a refusal predicate: it emits the selection then closes,
369
+ * so a veto would land too late. With one, the field closes what it accepted.
370
+ */
371
+ protected readonly closesOnSelect: _angular_core.Signal<boolean>;
372
+ /** Fed by the dropdown's `opened`/`closed` rather than read back from it: a host class can only bind to our own members. */
373
+ protected readonly isOpen: _angular_core.WritableSignal<boolean>;
374
+ /** The dropdown driving the panel — held only to close it when the field becomes disabled. */
375
+ private readonly dropdown;
376
+ /**
377
+ * Closes an already-open panel the moment the field becomes disabled. The dropdown only guards
378
+ * *new* opens, and its panel is a CDK overlay detached from this component's DOM.
379
+ */
380
+ private readonly closeOnDisable;
381
+ /** Checks the value once, and sorts it into the three shapes the panel expects. */
382
+ private readonly shaped;
383
+ protected readonly selectedDate: _angular_core.Signal<dayjs.Dayjs | undefined>;
384
+ protected readonly selectedDates: _angular_core.Signal<dayjs.Dayjs[] | never[]>;
385
+ /**
386
+ * Bumped to re-impose the value a refusal kept. The panel only reacts to `selectedPeriod`
387
+ * changing identity, so putting it back takes a fresh object.
388
+ */
389
+ private readonly restoreNonce;
390
+ protected readonly selectedPeriod: _angular_core.Signal<{
391
+ startDate?: dayjs.Dayjs;
392
+ endDate?: dayjs.Dayjs;
393
+ }>;
394
+ protected readonly hasValue: _angular_core.Signal<boolean>;
395
+ /** The field's text. Empty in Multiple, where the field shows chips instead. */
396
+ readonly displayed: _angular_core.Signal<string>;
397
+ /** The chips shown in Multiple mode, one per selected date. */
398
+ readonly chips: _angular_core.Signal<DateChip[]>;
399
+ /** The zone abbreviation ("EST", "CEST"…), computed without touching dayjs globally. */
400
+ readonly timeZoneOffset: _angular_core.Signal<string>;
401
+ onDateSelected(date: dayjs.Dayjs): void;
402
+ /** Drops a date from the selection, from the chip the user closed. */
403
+ removeDate(chip: DateChip): void;
404
+ protected onPanelOpened(): void;
405
+ protected onPanelClosed(): void;
406
+ /** The preset is stripped from the value: it says where the value came from, it is not part of it. */
407
+ onPeriodSelected({ preset, ...period }: SelectedPeriod): void;
408
+ /** Clears the selection. Stops propagation so the panel does not reopen. */
409
+ clear(event: Event): void;
410
+ /** The single write point: the signal and the form get the same value, and a disabled field none. */
411
+ private commit;
412
+ /** True when nothing is left to pick — the panel's own closing criterion. */
413
+ private isComplete;
414
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DatepickerSelectComponent, never>;
415
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DatepickerSelectComponent, "ap-datepicker-select", never, { "mode": { "alias": "mode"; "required": true; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "minDate": { "alias": "minDate"; "required": false; "isSignal": true; }; "maxDate": { "alias": "maxDate"; "required": false; "isSignal": true; }; "maxRangeDays": { "alias": "maxRangeDays"; "required": false; "isSignal": true; }; "panelHint": { "alias": "panelHint"; "required": false; "isSignal": true; }; "panelFooter": { "alias": "panelFooter"; "required": false; "isSignal": true; }; "canSelect": { "alias": "canSelect"; "required": false; "isSignal": true; }; "presets": { "alias": "presets"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "dateFormat": { "alias": "dateFormat"; "required": false; "isSignal": true; }; "locale": { "alias": "locale"; "required": false; "isSignal": true; }; "firstDayOfWeek": { "alias": "firstDayOfWeek"; "required": false; "isSignal": true; }; "placement": { "alias": "placement"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "timeZone": { "alias": "timeZone"; "required": false; "isSignal": true; }; "timeZoneTooltip": { "alias": "timeZoneTooltip"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "touch": "touch"; "selectionChange": "selectionChange"; "selectionRejected": "selectionRejected"; "opened": "opened"; "closed": "closed"; }, never, never, true, never>;
191
416
  }
192
417
 
193
- export { DatepickerComponent, DatepickerDropdownComponent, DatepickerMode, InputDatepickerComponent, RangesConfigPreset, defaultPeriodSelected };
194
- export type { FirstDayOfWeek, I18nDatePicker, Locale, Period, RangesConfigPresetType, StartDate };
418
+ export { DatepickerComponent, DatepickerDropdownComponent, DatepickerMode, DatepickerMonthPickerComponent, DatepickerSelectComponent, assertValueMatchesMode, defaultDatepickerPresets, isPeriod };
419
+ export type { DateChip, DatepickerMonth, DatepickerPreset, DatepickerSelection, DatepickerValue, DefaultPresetKey, FirstDayOfWeek, Locale, Period, SelectedPeriod, StartDate };
@@ -1,6 +1,7 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { AfterContentChecked, ElementRef, AfterViewInit, OnInit, OnDestroy, EventEmitter, OnChanges, InjectionToken, Renderer2 } from '@angular/core';
3
3
  import { Validator, AbstractControl } from '@angular/forms';
4
+ import * as i1 from 'ngxtension/resize';
4
5
 
5
6
  declare class AutosizeTextareaDirective implements AfterContentChecked {
6
7
  element: ElementRef;
@@ -200,6 +201,77 @@ declare class MultiStyleTextDirective {
200
201
  static ɵdir: i0.ɵɵDirectiveDeclaration<MultiStyleTextDirective, "[multiStyleText]", never, { "multiStyleText": { "alias": "multiStyleText"; "required": false; }; }, { "partEvent": "partEvent"; }, never, never, true, never>;
201
202
  }
202
203
 
204
+ /** Marks an element as one of the items the row may collapse. */
205
+ declare class OverflowItemDirective {
206
+ readonly elementRef: ElementRef<HTMLElement>;
207
+ static ɵfac: i0.ɵɵFactoryDeclaration<OverflowItemDirective, never>;
208
+ static ɵdir: i0.ɵɵDirectiveDeclaration<OverflowItemDirective, "[apOverflowItem]", never, {}, {}, never, never, true, never>;
209
+ }
210
+ /**
211
+ * Marks the "+N" badge so its width can be reserved. Optional, and the first pass never has it:
212
+ * the badge only enters the DOM once `hiddenCount()` is above zero, so `counterFallbackWidth` stands in.
213
+ */
214
+ declare class OverflowCounterDirective {
215
+ readonly elementRef: ElementRef<HTMLElement>;
216
+ static ɵfac: i0.ɵɵFactoryDeclaration<OverflowCounterDirective, never>;
217
+ static ɵdir: i0.ɵɵDirectiveDeclaration<OverflowCounterDirective, "[apOverflowCounter]", never, {}, {}, never, never, true, never>;
218
+ }
219
+ /**
220
+ * Lays a row of items out on a single line and collapses whatever overflows into a "+N" badge.
221
+ *
222
+ * Put it on the container, mark the items with `apOverflowItem` and the badge with
223
+ * `apOverflowCounter`; read `hiddenCount()` to render the badge and to derive the hidden data.
224
+ * The container is measured, so it must be the box that actually bounds the row — give it
225
+ * `overflow: hidden` and keep the items from shrinking.
226
+ *
227
+ * Specs that mock a consumer's dependencies have to keep this directive — ng-mocks stubs inputs
228
+ * and outputs, not plain signal members, so a mocked `hiddenCount` is not callable:
229
+ * `MockBuilder(MyComponent).keep(OverflowCountDirective)`.
230
+ *
231
+ * @example
232
+ * ```html
233
+ * <div class="chips" apOverflowCount #overflow="apOverflowCount">
234
+ * @for (chip of chips(); track chip.id) {
235
+ * <ap-tag apOverflowItem>{{ chip.label }}</ap-tag>
236
+ * }
237
+ * @if (overflow.hiddenCount() > 0) {
238
+ * <ap-tag apOverflowCounter>+{{ overflow.hiddenCount() }}</ap-tag>
239
+ * }
240
+ * </div>
241
+ * ```
242
+ */
243
+ declare class OverflowCountDirective {
244
+ private readonly elementRef;
245
+ private readonly ngxResize;
246
+ /**
247
+ * Space between two items, in pixels. Read from the container's computed `column-gap` when left
248
+ * undefined, which is what a flex or grid row already declares — pass it only when the gap comes
249
+ * from somewhere the container doesn't express, such as item margins.
250
+ */
251
+ readonly gap: i0.InputSignalWithTransform<number | undefined, number | undefined>;
252
+ /** Width to reserve for the "+N" badge while it is not in the DOM to be measured. */
253
+ readonly counterFallbackWidth: i0.InputSignalWithTransform<number, unknown>;
254
+ /** Items kept visible whatever the width. A lone "+N" reads as an empty row, hence the default. */
255
+ readonly minVisible: i0.InputSignalWithTransform<number, unknown>;
256
+ private readonly items;
257
+ private readonly counter;
258
+ private readonly visible;
259
+ private readonly hidden;
260
+ /** How many items are currently laid out. */
261
+ readonly visibleCount: i0.Signal<number>;
262
+ /** How many items are collapsed — the number the "+N" badge shows. */
263
+ readonly hiddenCount: i0.Signal<number>;
264
+ constructor();
265
+ /** Measures the row and collapses its overflow. Public so a consumer resizing the container itself can force a pass. */
266
+ recompute(): void;
267
+ /** Guarded: these signals are written from a render effect, so an unchanged pass must be inert. */
268
+ private setCounts;
269
+ private resolvedGap;
270
+ private counterWidth;
271
+ static ɵfac: i0.ɵɵFactoryDeclaration<OverflowCountDirective, never>;
272
+ static ɵdir: i0.ɵɵDirectiveDeclaration<OverflowCountDirective, "[apOverflowCount]", ["apOverflowCount"], { "gap": { "alias": "gap"; "required": false; "isSignal": true; }; "counterFallbackWidth": { "alias": "counterFallbackWidth"; "required": false; "isSignal": true; }; "minVisible": { "alias": "minVisible"; "required": false; "isSignal": true; }; }, {}, ["items", "counter"], never, true, [{ directive: typeof i1.NgxResize; inputs: {}; outputs: {}; }]>;
273
+ }
274
+
203
275
  /**
204
276
  * Stops a click from reaching the ancestors, without altering the host semantics.
205
277
  *
@@ -244,5 +316,5 @@ declare class TableColumnDragDirective implements OnInit, OnDestroy {
244
316
  static ɵdir: i0.ɵɵDirectiveDeclaration<TableColumnDragDirective, "table[apTableColumnDrag]", never, {}, {}, never, never, true, never>;
245
317
  }
246
318
 
247
- export { AP_INTERACTIVE_ELEMENT, AutosizeTextareaDirective, BaseButtonDirective, CheckboxDirective, ClickDirective, DefaultImageDirective, EllipsisDirective, EqualValidatorDirective, FrozenGifDirective, GifService, MultiStyleTextDirective, StopPropagationDirective, TableColumnDragDirective };
319
+ export { AP_INTERACTIVE_ELEMENT, AutosizeTextareaDirective, BaseButtonDirective, CheckboxDirective, ClickDirective, DefaultImageDirective, EllipsisDirective, EqualValidatorDirective, FrozenGifDirective, GifService, MultiStyleTextDirective, OverflowCountDirective, OverflowCounterDirective, OverflowItemDirective, StopPropagationDirective, TableColumnDragDirective };
248
320
  export type { ApInteractiveElement };