@fundamental-ngx/core 0.65.0-rc.9 → 0.65.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 (28) hide show
  1. package/fesm2022/fundamental-ngx-core-avatar-group.mjs +118 -39
  2. package/fesm2022/fundamental-ngx-core-avatar-group.mjs.map +1 -1
  3. package/fesm2022/fundamental-ngx-core-combobox.mjs +165 -21
  4. package/fesm2022/fundamental-ngx-core-combobox.mjs.map +1 -1
  5. package/fesm2022/fundamental-ngx-core-date-picker.mjs +1 -4
  6. package/fesm2022/fundamental-ngx-core-date-picker.mjs.map +1 -1
  7. package/fesm2022/fundamental-ngx-core-datetime-picker.mjs +21 -0
  8. package/fesm2022/fundamental-ngx-core-datetime-picker.mjs.map +1 -1
  9. package/fesm2022/fundamental-ngx-core-icon.mjs +2 -2
  10. package/fesm2022/fundamental-ngx-core-icon.mjs.map +1 -1
  11. package/fesm2022/fundamental-ngx-core-menu.mjs +63 -2
  12. package/fesm2022/fundamental-ngx-core-menu.mjs.map +1 -1
  13. package/fesm2022/fundamental-ngx-core-multi-combobox.mjs +20 -35
  14. package/fesm2022/fundamental-ngx-core-multi-combobox.mjs.map +1 -1
  15. package/fesm2022/fundamental-ngx-core-popover.mjs +22 -40
  16. package/fesm2022/fundamental-ngx-core-popover.mjs.map +1 -1
  17. package/fesm2022/fundamental-ngx-core-table.mjs +373 -499
  18. package/fesm2022/fundamental-ngx-core-table.mjs.map +1 -1
  19. package/package.json +3 -3
  20. package/schematics/package.json +1 -1
  21. package/types/fundamental-ngx-core-avatar-group.d.ts +52 -19
  22. package/types/fundamental-ngx-core-combobox.d.ts +44 -6
  23. package/types/fundamental-ngx-core-datetime-picker.d.ts +3 -1
  24. package/types/fundamental-ngx-core-menu.d.ts +8 -1
  25. package/types/fundamental-ngx-core-mobile-mode.d.ts +2 -0
  26. package/types/fundamental-ngx-core-multi-combobox.d.ts +1 -1
  27. package/types/fundamental-ngx-core-popover.d.ts +11 -16
  28. package/types/fundamental-ngx-core-table.d.ts +133 -164
@@ -368,30 +368,18 @@ class BaseMultiCombobox {
368
368
  }, { injector: this._injector });
369
369
  }
370
370
  /** @hidden */
371
- _setSelectedSuggestions() {
372
- this._selectedSuggestions.set([]);
373
- const selectedItems = this._selectedItems();
374
- if (!selectedItems?.length) {
375
- return;
376
- }
377
- const fullFlatSuggestions = this._fullFlatSuggestions();
378
- const selectedSuggestions = [];
379
- // Update immutably
380
- const updatedSuggestions = fullFlatSuggestions.map((item) => {
381
- const isSelected = selectedItems.some((selectedItem) => item.label === selectedItem || item.value === selectedItem);
382
- if (isSelected) {
383
- selectedSuggestions.push({ ...item, selected: true });
384
- return { ...item, selected: true };
385
- }
386
- else if (item.selected) {
387
- // Item was selected but is now deselected - must update to false
388
- return { ...item, selected: false };
389
- }
390
- // Item was not and is not selected - no change needed
391
- return item;
371
+ _setSelectedSuggestions(selectedItems = this._selectedItems()) {
372
+ const isSelected = (item) => selectedItems.some((selectedItem) => item.id === lookupValue(selectedItem, this.lookupKey()) || shallowEqual(item.value, selectedItem));
373
+ const updateSelection = (items) => items.map((item) => {
374
+ const children = item.children ? updateSelection(item.children) : undefined;
375
+ const selected = isSelected(item);
376
+ return { ...item, selected, children };
392
377
  });
393
- this._selectedSuggestions.set(selectedSuggestions);
394
- this._fullFlatSuggestions.set(updatedSuggestions);
378
+ const fullFlatSuggestions = updateSelection(this._fullFlatSuggestions());
379
+ this._selectedSuggestions.set(fullFlatSuggestions.filter((item) => item.selected));
380
+ this._suggestions.set(updateSelection(this._suggestions()));
381
+ this._flatSuggestions.set(updateSelection(this._flatSuggestions()));
382
+ this._fullFlatSuggestions.set(fullFlatSuggestions);
395
383
  }
396
384
  /**
397
385
  * Convert original data to SelectableOptionItems Interface
@@ -549,7 +537,6 @@ class BaseMultiCombobox {
549
537
  }
550
538
  this.writeValue(selectedItems);
551
539
  this._cva.onChange(selectedItems);
552
- this._emitChangeEvent();
553
540
  }
554
541
  /**
555
542
  * @hidden
@@ -1341,13 +1328,9 @@ class MultiComboboxComponent extends BaseMultiCombobox {
1341
1328
  _toggleSelection(item, fromTokenCloseClick = false) {
1342
1329
  const selectedSuggestions = this._selectedSuggestions();
1343
1330
  const idx = getTokenIndexByIdlOrValue(item, selectedSuggestions);
1344
- if (idx === -1) {
1345
- this._selectedSuggestions.set([...selectedSuggestions, item]);
1346
- }
1347
- else {
1348
- this._selectedSuggestions.set(selectedSuggestions.filter((_, i) => i !== idx));
1349
- }
1331
+ const updatedSelectedSuggestions = idx === -1 ? [...selectedSuggestions, item] : selectedSuggestions.filter((_, index) => index !== idx);
1350
1332
  item.selected = !item.selected;
1333
+ this._setSelectedSuggestions(updatedSelectedSuggestions.map(({ value }) => value));
1351
1334
  this._propagateChange(fromTokenCloseClick);
1352
1335
  this._cd.detectChanges();
1353
1336
  }
@@ -1376,11 +1359,13 @@ class MultiComboboxComponent extends BaseMultiCombobox {
1376
1359
  if (event) {
1377
1360
  event.preventDefault();
1378
1361
  }
1379
- const optionItem = this._flatSuggestions().find((s) => s.value === token.value);
1380
- if (optionItem) {
1381
- this._toggleSelection(optionItem, true);
1382
- this._rangeSelector.reset();
1362
+ const flatSuggestions = this._flatSuggestions();
1363
+ const optionItemIndex = getTokenIndexByIdlOrValue(token, flatSuggestions);
1364
+ if (optionItemIndex === -1) {
1365
+ return;
1383
1366
  }
1367
+ this._toggleSelection(flatSuggestions[optionItemIndex], true);
1368
+ this._rangeSelector.reset();
1384
1369
  }
1385
1370
  /** @hidden */
1386
1371
  _moreClicked() {
@@ -1442,7 +1427,7 @@ class MultiComboboxComponent extends BaseMultiCombobox {
1442
1427
  * Handle dialog dismissing, closes popover and sets backup data.
1443
1428
  */
1444
1429
  _dialogDismiss(backup) {
1445
- this._selectedSuggestions.set([...backup]);
1430
+ this._setSelectedSuggestions(backup.map(({ value }) => value));
1446
1431
  this._setInputText('');
1447
1432
  this._showList(false);
1448
1433
  this.selectedShown.set(false);