@fundamental-ngx/core 0.63.0-rc.2 → 0.63.0-rc.21

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 (119) hide show
  1. package/fesm2022/fundamental-ngx-core-action-bar.mjs +2 -2
  2. package/fesm2022/fundamental-ngx-core-action-sheet.mjs +2 -2
  3. package/fesm2022/fundamental-ngx-core-action-sheet.mjs.map +1 -1
  4. package/fesm2022/fundamental-ngx-core-avatar-group.mjs +2 -2
  5. package/fesm2022/fundamental-ngx-core-avatar-group.mjs.map +1 -1
  6. package/fesm2022/fundamental-ngx-core-avatar.mjs +2 -2
  7. package/fesm2022/fundamental-ngx-core-bar.mjs +2 -2
  8. package/fesm2022/fundamental-ngx-core-bar.mjs.map +1 -1
  9. package/fesm2022/fundamental-ngx-core-breadcrumb.mjs +2 -2
  10. package/fesm2022/fundamental-ngx-core-busy-indicator.mjs +2 -2
  11. package/fesm2022/fundamental-ngx-core-button.mjs +2 -2
  12. package/fesm2022/fundamental-ngx-core-calendar.mjs +52 -47
  13. package/fesm2022/fundamental-ngx-core-calendar.mjs.map +1 -1
  14. package/fesm2022/fundamental-ngx-core-card.mjs +2 -2
  15. package/fesm2022/fundamental-ngx-core-card.mjs.map +1 -1
  16. package/fesm2022/fundamental-ngx-core-carousel.mjs +2 -2
  17. package/fesm2022/fundamental-ngx-core-checkbox.mjs +2 -2
  18. package/fesm2022/fundamental-ngx-core-combobox.mjs +1 -1
  19. package/fesm2022/fundamental-ngx-core-combobox.mjs.map +1 -1
  20. package/fesm2022/fundamental-ngx-core-date-picker.mjs +7 -6
  21. package/fesm2022/fundamental-ngx-core-date-picker.mjs.map +1 -1
  22. package/fesm2022/fundamental-ngx-core-datetime-picker.mjs +14 -13
  23. package/fesm2022/fundamental-ngx-core-datetime-picker.mjs.map +1 -1
  24. package/fesm2022/fundamental-ngx-core-datetime.mjs +295 -100
  25. package/fesm2022/fundamental-ngx-core-datetime.mjs.map +1 -1
  26. package/fesm2022/fundamental-ngx-core-dialog.mjs +2 -2
  27. package/fesm2022/fundamental-ngx-core-dynamic-page.mjs +2 -2
  28. package/fesm2022/fundamental-ngx-core-dynamic-side-content.mjs +2 -2
  29. package/fesm2022/fundamental-ngx-core-facets.mjs +2 -2
  30. package/fesm2022/fundamental-ngx-core-feed-input.mjs +2 -2
  31. package/fesm2022/fundamental-ngx-core-feed-list-item.mjs +2 -2
  32. package/fesm2022/fundamental-ngx-core-file-uploader.mjs +2 -2
  33. package/fesm2022/fundamental-ngx-core-fixed-card-layout.mjs +2 -2
  34. package/fesm2022/fundamental-ngx-core-flexible-column-layout.mjs +2 -2
  35. package/fesm2022/fundamental-ngx-core-form.mjs +19 -16
  36. package/fesm2022/fundamental-ngx-core-form.mjs.map +1 -1
  37. package/fesm2022/fundamental-ngx-core-generic-tag.mjs +2 -2
  38. package/fesm2022/fundamental-ngx-core-grid-list.mjs +2 -2
  39. package/fesm2022/fundamental-ngx-core-icon.mjs +2 -2
  40. package/fesm2022/fundamental-ngx-core-info-label.mjs +2 -2
  41. package/fesm2022/fundamental-ngx-core-input-group.mjs +2 -2
  42. package/fesm2022/fundamental-ngx-core-layout-grid.mjs +2 -2
  43. package/fesm2022/fundamental-ngx-core-layout-panel.mjs +2 -2
  44. package/fesm2022/fundamental-ngx-core-link.mjs +2 -2
  45. package/fesm2022/fundamental-ngx-core-list.mjs +4 -4
  46. package/fesm2022/fundamental-ngx-core-message-box.mjs +2 -2
  47. package/fesm2022/fundamental-ngx-core-message-page.mjs +2 -2
  48. package/fesm2022/fundamental-ngx-core-message-strip.mjs +2 -2
  49. package/fesm2022/fundamental-ngx-core-message-strip.mjs.map +1 -1
  50. package/fesm2022/fundamental-ngx-core-message-toast.mjs +2 -2
  51. package/fesm2022/fundamental-ngx-core-micro-process-flow.mjs +2 -2
  52. package/fesm2022/fundamental-ngx-core-multi-combobox.mjs +2 -2
  53. package/fesm2022/fundamental-ngx-core-multi-combobox.mjs.map +1 -1
  54. package/fesm2022/fundamental-ngx-core-multi-input.mjs +1 -1
  55. package/fesm2022/fundamental-ngx-core-multi-input.mjs.map +1 -1
  56. package/fesm2022/fundamental-ngx-core-nested-list.mjs +1 -1
  57. package/fesm2022/fundamental-ngx-core-nested-list.mjs.map +1 -1
  58. package/fesm2022/fundamental-ngx-core-notification.mjs +2 -2
  59. package/fesm2022/fundamental-ngx-core-object-attribute.mjs +2 -2
  60. package/fesm2022/fundamental-ngx-core-object-identifier.mjs +2 -2
  61. package/fesm2022/fundamental-ngx-core-object-marker.mjs +2 -2
  62. package/fesm2022/fundamental-ngx-core-object-status.mjs +2 -2
  63. package/fesm2022/fundamental-ngx-core-overflow-layout.mjs +1 -1
  64. package/fesm2022/fundamental-ngx-core-overflow-layout.mjs.map +1 -1
  65. package/fesm2022/fundamental-ngx-core-pagination.mjs +2 -2
  66. package/fesm2022/fundamental-ngx-core-panel.mjs +2 -2
  67. package/fesm2022/fundamental-ngx-core-popover.mjs +110 -6
  68. package/fesm2022/fundamental-ngx-core-popover.mjs.map +1 -1
  69. package/fesm2022/fundamental-ngx-core-product-switch.mjs +3 -3
  70. package/fesm2022/fundamental-ngx-core-product-switch.mjs.map +1 -1
  71. package/fesm2022/fundamental-ngx-core-progress-indicator.mjs +2 -2
  72. package/fesm2022/fundamental-ngx-core-progress-indicator.mjs.map +1 -1
  73. package/fesm2022/fundamental-ngx-core-quick-view.mjs +2 -2
  74. package/fesm2022/fundamental-ngx-core-radio.mjs +2 -2
  75. package/fesm2022/fundamental-ngx-core-rating-indicator.mjs +2 -2
  76. package/fesm2022/fundamental-ngx-core-rating-indicator.mjs.map +1 -1
  77. package/fesm2022/fundamental-ngx-core-resizable-card-layout.mjs +4 -4
  78. package/fesm2022/fundamental-ngx-core-segmented-button.mjs +2 -2
  79. package/fesm2022/fundamental-ngx-core-select.mjs +2 -2
  80. package/fesm2022/fundamental-ngx-core-select.mjs.map +1 -1
  81. package/fesm2022/fundamental-ngx-core-settings.mjs +4 -4
  82. package/fesm2022/fundamental-ngx-core-shellbar.mjs +2 -2
  83. package/fesm2022/fundamental-ngx-core-shellbar.mjs.map +1 -1
  84. package/fesm2022/fundamental-ngx-core-side-navigation.mjs +2 -2
  85. package/fesm2022/fundamental-ngx-core-skeleton.mjs +2 -2
  86. package/fesm2022/fundamental-ngx-core-slider.mjs +2 -2
  87. package/fesm2022/fundamental-ngx-core-slider.mjs.map +1 -1
  88. package/fesm2022/fundamental-ngx-core-split-button.mjs +2 -2
  89. package/fesm2022/fundamental-ngx-core-status-indicator.mjs +2 -2
  90. package/fesm2022/fundamental-ngx-core-step-input.mjs +2 -2
  91. package/fesm2022/fundamental-ngx-core-switch.mjs +2 -2
  92. package/fesm2022/fundamental-ngx-core-table.mjs +4 -4
  93. package/fesm2022/fundamental-ngx-core-tabs.mjs +4 -4
  94. package/fesm2022/fundamental-ngx-core-text.mjs +2 -2
  95. package/fesm2022/fundamental-ngx-core-tile.mjs +2 -2
  96. package/fesm2022/fundamental-ngx-core-time-picker.mjs +8 -17
  97. package/fesm2022/fundamental-ngx-core-time-picker.mjs.map +1 -1
  98. package/fesm2022/fundamental-ngx-core-time.mjs +8 -16
  99. package/fesm2022/fundamental-ngx-core-time.mjs.map +1 -1
  100. package/fesm2022/fundamental-ngx-core-title.mjs +2 -2
  101. package/fesm2022/fundamental-ngx-core-token.mjs +4 -4
  102. package/fesm2022/fundamental-ngx-core-token.mjs.map +1 -1
  103. package/fesm2022/fundamental-ngx-core-toolbar.mjs +2 -2
  104. package/fesm2022/fundamental-ngx-core-toolbar.mjs.map +1 -1
  105. package/fesm2022/fundamental-ngx-core-tree.mjs +2 -2
  106. package/fesm2022/fundamental-ngx-core-upload-collection.mjs +2 -2
  107. package/fesm2022/fundamental-ngx-core-user-menu.mjs +25 -4
  108. package/fesm2022/fundamental-ngx-core-user-menu.mjs.map +1 -1
  109. package/fesm2022/fundamental-ngx-core-vertical-navigation.mjs +4 -4
  110. package/fesm2022/fundamental-ngx-core-wizard.mjs +2 -2
  111. package/package.json +4 -4
  112. package/types/fundamental-ngx-core-calendar.d.ts +5 -12
  113. package/types/fundamental-ngx-core-datetime-picker.d.ts +0 -2
  114. package/types/fundamental-ngx-core-datetime.d.ts +109 -68
  115. package/types/fundamental-ngx-core-form.d.ts +2 -0
  116. package/types/fundamental-ngx-core-popover.d.ts +378 -319
  117. package/types/fundamental-ngx-core-time-picker.d.ts +2 -8
  118. package/types/fundamental-ngx-core-time.d.ts +1 -7
  119. package/types/fundamental-ngx-core-user-menu.d.ts +7 -2
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core",
3
- "version": "0.63.0-rc.2",
3
+ "version": "0.63.0-rc.21",
4
4
  "schematics": "./schematics/collection.json",
5
5
  "ng-update": {
6
6
  "migrations": "./schematics/migrations.json"
@@ -22,10 +22,10 @@
22
22
  "@angular/forms": "^21.0.0",
23
23
  "@angular/platform-browser": "^21.0.0",
24
24
  "@angular/router": "^21.0.0",
25
- "@fundamental-ngx/cdk": "0.63.0-rc.2",
26
- "@fundamental-ngx/i18n": "0.63.0-rc.2",
25
+ "@fundamental-ngx/cdk": "0.63.0-rc.21",
26
+ "@fundamental-ngx/i18n": "0.63.0-rc.21",
27
27
  "@sap-theming/theming-base-content": "^11.35.0",
28
- "fundamental-styles": "0.41.6",
28
+ "fundamental-styles": "0.41.7",
29
29
  "rxjs": "^7.8.0"
30
30
  },
31
31
  "dependencies": {
@@ -1,5 +1,5 @@
1
1
  import * as _angular_core from '@angular/core';
2
- import { OnInit, OnChanges, EventEmitter, ElementRef, ChangeDetectorRef, SimpleChanges, OnDestroy } from '@angular/core';
2
+ import { OnInit, OnChanges, EventEmitter, ElementRef, ChangeDetectorRef, SimpleChanges } from '@angular/core';
3
3
  import { DatetimeAdapter, DateTimeFormats } from '@fundamental-ngx/core/datetime';
4
4
  import { Subject } from 'rxjs';
5
5
  import { Nullable } from '@fundamental-ngx/cdk/utils';
@@ -243,13 +243,13 @@ declare class CalendarHeaderComponent<D> implements OnInit, OnChanges {
243
243
  * Select years range aria label id
244
244
  */
245
245
  get _selectYearsRangeButtonAriaLabelId(): string;
246
- /** @hidden */
247
- private readonly _destroyRef;
248
246
  /** Month names */
249
247
  private _monthNames;
250
248
  /** Get information about amount of years displayed at once on year view */
251
249
  private _amountOfYearsPerPeriod;
252
250
  /** @hidden */
251
+ private _initiated;
252
+ /** @hidden */
253
253
  constructor(_changeDetRef: ChangeDetectorRef, _calendarService: CalendarService, _dateTimeAdapter: DatetimeAdapter<D>);
254
254
  /** @hidden */
255
255
  ngOnChanges(changes: SimpleChanges): void;
@@ -262,8 +262,6 @@ declare class CalendarHeaderComponent<D> implements OnInit, OnChanges {
262
262
  /** @hidden */
263
263
  _processViewChange(type: FdCalendarView, event?: MouseEvent): void;
264
264
  /** @hidden */
265
- private _listenToLocaleChanges;
266
- /** @hidden */
267
265
  private _calculateLabels;
268
266
  /** @hidden */
269
267
  private _calculateSelectMonthLabel;
@@ -1431,7 +1429,7 @@ declare class CalendarYearViewComponent<D> implements OnInit, OnChanges, Focusab
1431
1429
  * ```
1432
1430
  *
1433
1431
  */
1434
- declare class CalendarComponent<D> implements OnInit, OnChanges, ControlValueAccessor, Validator, OnDestroy {
1432
+ declare class CalendarComponent<D> implements OnInit, OnChanges, ControlValueAccessor, Validator {
1435
1433
  private _elementRef;
1436
1434
  private _changeDetectorRef;
1437
1435
  private _dateTimeAdapter;
@@ -1565,9 +1563,8 @@ declare class CalendarComponent<D> implements OnInit, OnChanges, ControlValueAcc
1565
1563
  /** @hidden */
1566
1564
  nextButtonDisabled: boolean;
1567
1565
  /** @hidden */
1568
- protected readonly calendarRoleDescription: _angular_core.Signal<string>;
1569
1566
  /** @hidden */
1570
- private _subscriptions;
1567
+ protected readonly calendarRoleDescription: _angular_core.Signal<string>;
1571
1568
  /** @hidden */
1572
1569
  private _adapterStartingDayOfWeek;
1573
1570
  /** @hidden */
@@ -1598,8 +1595,6 @@ declare class CalendarComponent<D> implements OnInit, OnChanges, ControlValueAcc
1598
1595
  ngOnChanges(changes: SimpleChanges): void;
1599
1596
  /** @hidden */
1600
1597
  getWeekStartDay(): DaysOfWeek;
1601
- /** @hidden */
1602
- ngOnDestroy(): void;
1603
1598
  /**
1604
1599
  * @hidden
1605
1600
  * Function that provides support for ControlValueAccessor that allows to use [(ngModel)] or forms.
@@ -1694,8 +1689,6 @@ declare class CalendarComponent<D> implements OnInit, OnChanges, ControlValueAcc
1694
1689
  isDateRangeMonthFormat(): boolean;
1695
1690
  /** Whether the date range format is year */
1696
1691
  isDateRangeYearFormat(): boolean;
1697
- /** @hidden */
1698
- private _listenToLocaleChanges;
1699
1692
  /**
1700
1693
  * @hidden
1701
1694
  * Method that sets up the currently displayed variables, like shown month and year.
@@ -257,8 +257,6 @@ declare class DatetimePickerComponent<D> implements DateTimePicker<D>, OnInit, O
257
257
  /** @hidden */
258
258
  private _mobileComponentRef;
259
259
  /** @hidden */
260
- private _subscriptions;
261
- /** @hidden */
262
260
  private _touched;
263
261
  /** @hidden */
264
262
  constructor(_elRef: ElementRef, _changeDetRef: ChangeDetectorRef, _dateTimeAdapter: DatetimeAdapter<D>, _dateTimeFormats: DateTimeFormats, _popoverFormMessage: PopoverFormMessageService);
@@ -1,9 +1,7 @@
1
- import { Nullable } from '@fundamental-ngx/cdk/utils';
2
- import { Observable } from 'rxjs';
3
1
  import * as i0 from '@angular/core';
4
- import { InjectionToken, PipeTransform, Provider } from '@angular/core';
2
+ import { Signal, PipeTransform, InjectionToken, Provider } from '@angular/core';
3
+ import { Nullable } from '@fundamental-ngx/cdk/utils';
5
4
  import * as i1 from '@angular/cdk/platform';
6
- import { Platform } from '@angular/cdk/platform';
7
5
 
8
6
  /**
9
7
  * Datetime Adapter is an abstract class that must be implemented by each adapter.
@@ -246,11 +244,22 @@ declare abstract class DatetimeAdapter<D> {
246
244
  */
247
245
  abstract isValid(date: Nullable<D>): date is D;
248
246
  /**
249
- * Gets the RFC 3339 compatible string (https://tools.ietf.org/html/rfc3339) for the given date.
247
+ * Gets the ISO 8601 date-time string for the given date.
248
+ *
249
+ * Returns a **local** (timezone-unaware) string in the format `YYYY-MM-DDTHH:mm:ss`.
250
+ * This is intentionally **not** RFC 3339 compliant because no timezone designator is appended.
251
+ *
250
252
  * This method is used to generate date strings that are compatible with native HTML attributes
251
253
  * such as the `min` or `max` attribute of an `<input>`.
254
+ *
255
+ * To produce an RFC 3339 string, append a timezone designator to the result:
256
+ * ```ts
257
+ * const rfc3339Utc = adapter.toIso8601(date) + 'Z'; // UTC
258
+ * const rfc3339Local = adapter.toIso8601(date) + '+05:30'; // with offset
259
+ * ```
260
+ *
252
261
  * @param date The date to get the ISO date string for.
253
- * @returns The ISO date string date string.
262
+ * @returns The ISO 8601 date-time string without timezone designator.
254
263
  */
255
264
  abstract toIso8601(date: D): string;
256
265
  /**
@@ -282,12 +291,10 @@ declare abstract class DatetimeAdapter<D> {
282
291
  * @returns String representing how much time has passed since the date param.
283
292
  */
284
293
  abstract fromNow?(date: D): string;
285
- /** locale changes stream */
286
- readonly localeChanges: Observable<void>;
287
- /** current locale */
288
- protected locale: string;
294
+ /** Current locale as a readonly signal. */
295
+ readonly locale: Signal<string>;
289
296
  /** @hidden */
290
- private _localeChanges;
297
+ private readonly _locale;
291
298
  protected constructor();
292
299
  /**
293
300
  * Sets the locale used for all dates.
@@ -307,7 +314,7 @@ declare abstract class DatetimeAdapter<D> {
307
314
  * Get Amount of weeks in given month/year
308
315
  * @param year The year of the date
309
316
  * @param month The month of the date
310
- * @param firstDayOfWeek The first day of week. 1 - Sunday, 2 - Monday...
317
+ * @param firstDayOfWeek The first day of week. 1 - Sunday, 2 - Monday, ..., 7 - Saturday
311
318
  * @returns Number of weeks in the given month
312
319
  */
313
320
  getAmountOfWeeks(year: number, month: number, firstDayOfWeek: number): number;
@@ -321,69 +328,40 @@ declare abstract class DatetimeAdapter<D> {
321
328
  compareDate(first: D, second: D): number;
322
329
  }
323
330
 
324
- /**
325
- * DateTimeFormats is intended to keep options
326
- * related to date-time formatting / parsing
327
- *
328
- */
329
- interface DateTimeFormats {
330
- parse: {
331
- dateInput: unknown;
332
- timeInput: unknown;
333
- dateTimeInput: unknown;
334
- };
335
- display: {
336
- dateInput: unknown;
337
- timeInput: unknown;
338
- dateTimeInput: unknown;
339
- dateA11yLabel: unknown;
340
- monthA11yLabel: unknown;
341
- yearA11yLabel: unknown;
342
- };
343
- rangeDelimiter: string;
344
- }
345
- /**
346
- * DateTimeFormats injection token
347
- */
348
- declare const DATE_TIME_FORMATS: InjectionToken<DateTimeFormats>;
349
-
350
331
  declare class DateFormatPipe<D> implements PipeTransform {
351
- private _dateTimeAdapter;
352
- private _dateTimeFormats;
353
332
  /** @hidden */
354
- constructor(_dateTimeAdapter: DatetimeAdapter<D>, _dateTimeFormats: DateTimeFormats);
333
+ private readonly _dateTimeAdapter;
334
+ /** @hidden */
335
+ private readonly _dateTimeFormats;
355
336
  /** Format date object */
356
337
  transform(date: D, noDateMessage?: string): string;
357
- static ɵfac: i0.ɵɵFactoryDeclaration<DateFormatPipe<any>, [null, { optional: true; }]>;
338
+ static ɵfac: i0.ɵɵFactoryDeclaration<DateFormatPipe<any>, never>;
358
339
  static ɵpipe: i0.ɵɵPipeDeclaration<DateFormatPipe<any>, "dateFormat", true>;
359
340
  }
360
341
  declare class DateTimeFormatPipe<D> implements PipeTransform {
361
- private _dateTimeAdapter;
362
- private _dateTimeFormats;
363
342
  /** @hidden */
364
- constructor(_dateTimeAdapter: DatetimeAdapter<D>, _dateTimeFormats: DateTimeFormats);
343
+ private readonly _dateTimeAdapter;
344
+ /** @hidden */
345
+ private readonly _dateTimeFormats;
365
346
  /** Format date object */
366
347
  transform(date: D, noDateMessage?: string): string;
367
- static ɵfac: i0.ɵɵFactoryDeclaration<DateTimeFormatPipe<any>, [null, { optional: true; }]>;
348
+ static ɵfac: i0.ɵɵFactoryDeclaration<DateTimeFormatPipe<any>, never>;
368
349
  static ɵpipe: i0.ɵɵPipeDeclaration<DateTimeFormatPipe<any>, "dateTimeFormat", true>;
369
350
  }
370
351
  declare class DateFromNowPipe<D> implements PipeTransform {
371
- private _dateTimeAdapter;
372
352
  /** @hidden */
373
- constructor(_dateTimeAdapter: DatetimeAdapter<D>);
353
+ private readonly _dateTimeAdapter;
374
354
  /** Format date object */
375
355
  transform(date: D, noDateMessage?: string): string;
376
356
  static ɵfac: i0.ɵɵFactoryDeclaration<DateFromNowPipe<any>, never>;
377
357
  static ɵpipe: i0.ɵɵPipeDeclaration<DateFromNowPipe<any>, "dateFromNow", true>;
378
358
  }
379
359
  declare class DayPeriodFormatPipe<D> implements PipeTransform {
380
- private _dateTimeAdapter;
381
- private _dateTimeFormats;
382
360
  /** @hidden */
383
- constructor(_dateTimeAdapter: DatetimeAdapter<D>, _dateTimeFormats: DateTimeFormats);
361
+ private readonly _dateTimeAdapter;
384
362
  /** Format date object for day period */
385
363
  transform(date: D, customFormat?: any, noDateMessage?: string): string;
386
- static ɵfac: i0.ɵɵFactoryDeclaration<DayPeriodFormatPipe<any>, [null, { optional: true; }]>;
364
+ static ɵfac: i0.ɵɵFactoryDeclaration<DayPeriodFormatPipe<any>, never>;
387
365
  static ɵpipe: i0.ɵɵPipeDeclaration<DayPeriodFormatPipe<any>, "dayPeriodFormat", true>;
388
366
  }
389
367
  declare class TranslateDayPeriodPipe implements PipeTransform {
@@ -397,6 +375,32 @@ declare class TranslateDayPeriodPipe implements PipeTransform {
397
375
  static ɵpipe: i0.ɵɵPipeDeclaration<TranslateDayPeriodPipe, "translateDayPeriod", true>;
398
376
  }
399
377
 
378
+ /**
379
+ * DateTimeFormats is intended to keep options
380
+ * related to date-time formatting / parsing
381
+ *
382
+ */
383
+ interface DateTimeFormats {
384
+ parse: {
385
+ dateInput: unknown;
386
+ timeInput: unknown;
387
+ dateTimeInput: unknown;
388
+ };
389
+ display: {
390
+ dateInput: unknown;
391
+ timeInput: unknown;
392
+ dateTimeInput: unknown;
393
+ dateA11yLabel: unknown;
394
+ monthA11yLabel: unknown;
395
+ yearA11yLabel: unknown;
396
+ };
397
+ rangeDelimiter: string;
398
+ }
399
+ /**
400
+ * DateTimeFormats injection token
401
+ */
402
+ declare const DATE_TIME_FORMATS: InjectionToken<DateTimeFormats>;
403
+
400
404
  /**
401
405
  * Converts a given time string to a desired format.
402
406
  *
@@ -508,9 +512,9 @@ declare class FdDate {
508
512
 
509
513
  declare const FD_DATETIME_FORMATS: DateTimeFormats;
510
514
 
511
- /** Adds 0 if number is less then 10 */
512
- declare function _leftPad(n: number): string;
513
- /** Converts date to ISO8601 */
515
+ /** Pads a number to at least 2 digits. Years are padded to at least 4 digits. */
516
+ declare function _leftPad(n: number, minLength?: number): string;
517
+ /** Converts date to ISO 8601 date-time string without timezone designator (`YYYY-MM-DDTHH:mm:ss`). */
514
518
  declare function toIso8601(fdDate: {
515
519
  year: number;
516
520
  month: number;
@@ -544,10 +548,16 @@ type CustomDateTimeFormatOptions = Omit<Intl.DateTimeFormatOptions, 'dayPeriod'>
544
548
  declare class FdDatetimeAdapter extends DatetimeAdapter<FdDate> {
545
549
  /** Whether to clamp the date between 1 and 9999 to avoid IE and Edge errors. */
546
550
  private readonly _fixYearsRangeIssue;
551
+ /** Cached Intl.RelativeTimeFormat instance, invalidated on locale change. */
552
+ private _relativeTimeFormatter;
553
+ /** Cached result of _isFormatDayFirst(), invalidated on locale change. */
554
+ private _dayFirstCache;
547
555
  /** @hidden */
548
- constructor(localeId: string, platform: Platform);
556
+ constructor();
549
557
  /** @hidden */
550
- fromNow?(date: FdDate): string;
558
+ setLocale(locale: string): void;
559
+ /** @hidden */
560
+ fromNow(date: FdDate): string;
551
561
  /** Get year */
552
562
  getYear(date: FdDate): number;
553
563
  /** Get month */
@@ -593,9 +603,9 @@ declare class FdDatetimeAdapter extends DatetimeAdapter<FdDate> {
593
603
  /** Set hours */
594
604
  setHours(date: FdDate, hours: number): FdDate;
595
605
  /** Set minutes */
596
- setMinutes(date: FdDate, hours: number): FdDate;
606
+ setMinutes(date: FdDate, minutes: number): FdDate;
597
607
  /** Set seconds */
598
- setSeconds(date: FdDate, hours: number): FdDate;
608
+ setSeconds(date: FdDate, seconds: number): FdDate;
599
609
  /** Get first day of week */
600
610
  getFirstDayOfWeek(): number;
601
611
  /** Get number of days in a month */
@@ -626,7 +636,7 @@ declare class FdDatetimeAdapter extends DatetimeAdapter<FdDate> {
626
636
  datesEqual(date1: FdDate, date2: FdDate): boolean;
627
637
  /** Check if dates and time are equal */
628
638
  dateTimesEqual(date1: FdDate, date2: FdDate): boolean;
629
- /** Format date object to ISO8601 string */
639
+ /** {@inheritDoc DatetimeAdapter.toIso8601} */
630
640
  toIso8601(fdDate: FdDate): string;
631
641
  /** Check if a time format includes a day period */
632
642
  isTimeFormatIncludesDayPeriod(displayFormat: CustomDateTimeFormatOptions): boolean;
@@ -671,7 +681,7 @@ declare class FdDatetimeAdapter extends DatetimeAdapter<FdDate> {
671
681
  * @param hours The hours as a number between 0 - 24
672
682
  * @param minutes The minutes as a number between 0 - 59
673
683
  * @param seconds The seconds as a number between 0 - 59
674
- * @param milliseconds The milliseconds as a number between 0 - 59
684
+ * @param milliseconds The milliseconds as a number between 0 - 999
675
685
  */
676
686
  private _createUTCDateInstance;
677
687
  /** @hidden */
@@ -679,16 +689,47 @@ declare class FdDatetimeAdapter extends DatetimeAdapter<FdDate> {
679
689
  /**
680
690
  * @hidden
681
691
  *
682
- * Since FdDatetimeAdapter can parse only "en-US" locale
683
- * there is no reason to create comprehensive time parse
684
- * that can understand plenty of locales.
685
- *
686
- * @param timeStr Time string to parse (E.g. '10:30 PM')
687
- * @returns date Native date instance
692
+ * Parse a time string into hours, minutes, seconds and apply to today's date.
693
+ * Supports: "14:30", "14:30:45", "10:30 PM", "10:30PM", "14.30" (dot separator).
688
694
  *
695
+ * @param timeStr Time string to parse
696
+ * @returns date Native date instance (Invalid Date if parsing fails)
689
697
  */
690
698
  private _parseTimeString;
691
- static ɵfac: i0.ɵɵFactoryDeclaration<FdDatetimeAdapter, [{ optional: true; }, null]>;
699
+ /**
700
+ * @hidden
701
+ *
702
+ * Try to parse a date string with common separators (/, -, .)
703
+ * using locale awareness for day/month ordering.
704
+ *
705
+ * @param value Date string (e.g. "12.03.2026", "03/12/2026", "2026-03-12")
706
+ * @returns Native Date instance or null if parsing fails
707
+ */
708
+ private _parseDateString;
709
+ /**
710
+ * @hidden
711
+ *
712
+ * Parse a locale-native datetime string that contains both a date and a time
713
+ * component (e.g. "20/05/2026 16:33" fr-FR, "20.5.2026, 16:33" de-DE).
714
+ *
715
+ * Strategy: split on the first 4-digit year boundary (everything before+including
716
+ * the year is the date part; everything after the optional ", " separator is the
717
+ * time part), delegate each half to the existing helpers, then combine.
718
+ *
719
+ * @param value Datetime string to parse
720
+ * @returns Native Date instance or null if parsing fails
721
+ */
722
+ private _parseDateTimeString;
723
+ /**
724
+ * @hidden
725
+ *
726
+ * Detect whether the current locale formats dates with day before month.
727
+ * Uses Intl.DateTimeFormat.formatToParts to inspect the locale's ordering.
728
+ *
729
+ * @returns true if locale puts day before month (e.g. de-DE, en-GB)
730
+ */
731
+ private _isFormatDayFirst;
732
+ static ɵfac: i0.ɵɵFactoryDeclaration<FdDatetimeAdapter, never>;
692
733
  static ɵprov: i0.ɵɵInjectableDeclaration<FdDatetimeAdapter>;
693
734
  }
694
735
 
@@ -220,6 +220,8 @@ declare class FormInputMessageGroupComponent {
220
220
  _popover: PopoverComponent;
221
221
  /** @hidden */
222
222
  readonly _elementRef: ElementRef<any>;
223
+ /** @hidden Translated aria-label for the popover body (#14260). */
224
+ protected readonly _popoverAriaLabel: i0.Signal<string>;
223
225
  /**
224
226
  * Function is called every time message changes isOpen attribute
225
227
  */