@siemens/element-ng 51.2.0 → 51.3.0

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 (29) hide show
  1. package/README.md +2 -2
  2. package/fesm2022/siemens-element-ng-datepicker.mjs +13 -3
  3. package/fesm2022/siemens-element-ng-datepicker.mjs.map +1 -1
  4. package/fesm2022/siemens-element-ng-filtered-search.mjs +7 -3
  5. package/fesm2022/siemens-element-ng-filtered-search.mjs.map +1 -1
  6. package/fesm2022/siemens-element-ng-form.mjs +4 -4
  7. package/fesm2022/siemens-element-ng-form.mjs.map +1 -1
  8. package/fesm2022/siemens-element-ng-number-input.mjs +3 -2
  9. package/fesm2022/siemens-element-ng-number-input.mjs.map +1 -1
  10. package/fesm2022/siemens-element-ng-popover.mjs +16 -5
  11. package/fesm2022/siemens-element-ng-popover.mjs.map +1 -1
  12. package/fesm2022/siemens-element-ng-tree-view.mjs +15 -10
  13. package/fesm2022/siemens-element-ng-tree-view.mjs.map +1 -1
  14. package/fesm2022/siemens-element-ng-typeahead.mjs +9 -0
  15. package/fesm2022/siemens-element-ng-typeahead.mjs.map +1 -1
  16. package/package.json +5 -5
  17. package/schematics/migrations/data/attribute-selectors.js +8 -1
  18. package/schematics/migrations/data/element-selectors.js +7 -1
  19. package/schematics/migrations/data/symbol-renaming.js +10 -0
  20. package/schematics/migrations/utilities/attribute-selector.migration.js +26 -10
  21. package/schematics/migrations/utilities/element-selector.migration.js +25 -15
  22. package/schematics/migrations/utilities/symbol-renaming.migration.js +90 -3
  23. package/schematics/utils/template-edit-utils.js +9 -0
  24. package/types/siemens-element-ng-datepicker.d.ts +6 -1
  25. package/types/siemens-element-ng-form.d.ts +1 -1
  26. package/types/siemens-element-ng-number-input.d.ts +2 -2
  27. package/types/siemens-element-ng-popover.d.ts +1 -1
  28. package/types/siemens-element-ng-tree-view.d.ts +1 -0
  29. package/types/siemens-element-ng-typeahead.d.ts +7 -0
package/README.md CHANGED
@@ -10,8 +10,8 @@
10
10
  <a href="https://www.npmjs.com/@siemens/element-ng">
11
11
  <img src="https://img.shields.io/npm/v/@siemens/element-ng.svg?logo=npm&logoColor=fff&label=NPM+package&color=limegreen" alt="Element on npm" />
12
12
  </a>
13
- <a href="https://element.siemens.io/coverage/element-ng/index.html">
14
- <img src="https://img.shields.io/endpoint?url=https://element.siemens.io/coverage-summary.json" alt="Code Coverage">
13
+ <a href="https://element.siemens.io/development/coverage/element-ng/index.html">
14
+ <img src="https://img.shields.io/endpoint?url=https://element.siemens.io/development/coverage-summary.json" alt="Code Coverage">
15
15
  </a>
16
16
  </p>
17
17
 
@@ -858,6 +858,7 @@ class SiDateInputDirective {
858
858
  this.stateChange.emit();
859
859
  }
860
860
  writeValue(value) {
861
+ value ??= undefined;
861
862
  // remove date when user input is empty
862
863
  let emptyString = false;
863
864
  // Flag to define invalid string
@@ -900,7 +901,8 @@ class SiDateInputDirective {
900
901
  const hasChanged = !(parsedDate === this.date);
901
902
  if (hasChanged) {
902
903
  this.date = parsedDate;
903
- this.onModelChange(this.date);
904
+ // Emit `null` for an empty input, as `undefined` is not supported by Angular signal forms.
905
+ this.onModelChange(this.date ?? null);
904
906
  this.dateChange.emit(this.date);
905
907
  }
906
908
  }
@@ -921,7 +923,7 @@ class SiDateInputDirective {
921
923
  // update input element
922
924
  this.writeValue(date);
923
925
  // update the Forms ngModel
924
- this.onModelChange(this.date);
926
+ this.onModelChange(this.date ?? null);
925
927
  }
926
928
  /**
927
929
  * Datepicker consider time / ignore time changed.
@@ -2333,6 +2335,11 @@ class SiTimepickerComponent {
2333
2335
  * Holds the time as date object that is presented by this control.
2334
2336
  */
2335
2337
  time;
2338
+ /**
2339
+ * Whether `null` was emitted due to an incomplete or invalid input.
2340
+ * The next valid time must be emitted, even if it equals the previous `time`.
2341
+ */
2342
+ invalidTimeEmitted = false;
2336
2343
  periodDefaults;
2337
2344
  constructor() {
2338
2345
  this.periodDefaults = getLocaleDayPeriods(this.locale, FormStyle.Format, TranslationWidth.Short).slice();
@@ -2358,6 +2365,7 @@ class SiTimepickerComponent {
2358
2365
  const time = this.parseTime(obj);
2359
2366
  if (!time || this.isValidDate(time)) {
2360
2367
  this.time = time;
2368
+ this.invalidTimeEmitted = false;
2361
2369
  this.updateUI(this.time);
2362
2370
  }
2363
2371
  }
@@ -2432,6 +2440,7 @@ class SiTimepickerComponent {
2432
2440
  updateTime() {
2433
2441
  if (this.hasInvalidUnit()) {
2434
2442
  this.isValid.emit(false);
2443
+ this.invalidTimeEmitted = true;
2435
2444
  this.onChange(null);
2436
2445
  return;
2437
2446
  }
@@ -2443,7 +2452,8 @@ class SiTimepickerComponent {
2443
2452
  * @param time - The new time to be set.
2444
2453
  */
2445
2454
  setTime(time) {
2446
- if (this.time?.getTime() !== time?.getTime()) {
2455
+ if (this.invalidTimeEmitted || this.time?.getTime() !== time?.getTime()) {
2456
+ this.invalidTimeEmitted = false;
2447
2457
  this.time = time;
2448
2458
  this.updateUI(this.time);
2449
2459
  this.onChange(this.time);