@coreui/angular-pro 5.2.0 → 5.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.
- package/esm2022/lib/multi-select/multi-select/multi-select.component.mjs +88 -65
- package/esm2022/lib/tabs-2/tab/tab.directive.mjs +3 -2
- package/esm2022/lib/tabs-2/tab-panel/tab-panel.component.mjs +3 -2
- package/esm2022/lib/tabs-2/tabs-content/tabs-content.component.mjs +3 -2
- package/esm2022/lib/tabs-2/tabs-list/tabs-list.component.mjs +3 -2
- package/esm2022/lib/tabs-2/tabs.component.mjs +3 -3
- package/fesm2022/coreui-angular-pro.mjs +97 -70
- package/fesm2022/coreui-angular-pro.mjs.map +1 -1
- package/lib/multi-select/multi-select/multi-select.component.d.ts +4 -3
- package/lib/tabs-2/tab/tab.directive.d.ts +1 -1
- package/lib/tabs-2/tab-panel/tab-panel.component.d.ts +1 -1
- package/lib/tabs-2/tabs-content/tabs-content.component.d.ts +1 -1
- package/lib/tabs-2/tabs-list/tabs-list.component.d.ts +1 -1
- package/lib/tabs-2/tabs.component.d.ts +1 -1
- package/package.json +1 -1
|
@@ -10025,7 +10025,7 @@ const observeReferenceResizeModifier = {
|
|
|
10025
10025
|
const RO_PROP = '__popperjsRO__';
|
|
10026
10026
|
const { reference } = state.elements;
|
|
10027
10027
|
let resizeObserver = new ResizeObserver((entries) => {
|
|
10028
|
-
if (entries.find(entry => entry.target === reference)) {
|
|
10028
|
+
if (entries.find((entry) => entry.target === reference)) {
|
|
10029
10029
|
instance.update();
|
|
10030
10030
|
}
|
|
10031
10031
|
});
|
|
@@ -10182,7 +10182,7 @@ class MultiSelectComponent {
|
|
|
10182
10182
|
* @type IPluralMap
|
|
10183
10183
|
* @default { '=1': 'item selected', 'other': 'items selected' }
|
|
10184
10184
|
*/
|
|
10185
|
-
this.selectionTypeCounterTextPluralMap = { '=1': 'item selected',
|
|
10185
|
+
this.selectionTypeCounterTextPluralMap = { '=1': 'item selected', other: 'items selected' };
|
|
10186
10186
|
this.#value = [];
|
|
10187
10187
|
/**
|
|
10188
10188
|
* Emits valueChange
|
|
@@ -10203,6 +10203,7 @@ class MultiSelectComponent {
|
|
|
10203
10203
|
* @default 196
|
|
10204
10204
|
*/
|
|
10205
10205
|
this.itemMinWidth = 196;
|
|
10206
|
+
this.minWidth = signal(this.itemMinWidth);
|
|
10206
10207
|
this._visible = false;
|
|
10207
10208
|
/**
|
|
10208
10209
|
* Emits visibleChange
|
|
@@ -10226,7 +10227,7 @@ class MultiSelectComponent {
|
|
|
10226
10227
|
#options;
|
|
10227
10228
|
#optionsContent;
|
|
10228
10229
|
writeValue(value) {
|
|
10229
|
-
if (
|
|
10230
|
+
if (value !== undefined && value !== null) {
|
|
10230
10231
|
this.value = Array.isArray(value) ? [...value] : [value];
|
|
10231
10232
|
}
|
|
10232
10233
|
else {
|
|
@@ -10355,7 +10356,7 @@ class MultiSelectComponent {
|
|
|
10355
10356
|
*/
|
|
10356
10357
|
set visibleItems(value) {
|
|
10357
10358
|
this._visibleItems = value > 0 ? value : 8;
|
|
10358
|
-
this.optionsMaxHeight = (
|
|
10359
|
+
this.optionsMaxHeight = (this.itemSize * this._visibleItems + 16).toString();
|
|
10359
10360
|
}
|
|
10360
10361
|
get visibleItems() {
|
|
10361
10362
|
return this._visibleItems;
|
|
@@ -10390,7 +10391,7 @@ class MultiSelectComponent {
|
|
|
10390
10391
|
const currOptions = {
|
|
10391
10392
|
...options,
|
|
10392
10393
|
modifiers: [
|
|
10393
|
-
...prevModifiers.filter(prevModifier => !currModifiers.find(currModifier => currModifier.name === prevModifier.name)),
|
|
10394
|
+
...prevModifiers.filter((prevModifier) => !currModifiers.find((currModifier) => currModifier.name === prevModifier.name)),
|
|
10394
10395
|
...currModifiers
|
|
10395
10396
|
]
|
|
10396
10397
|
};
|
|
@@ -10404,7 +10405,7 @@ class MultiSelectComponent {
|
|
|
10404
10405
|
return [...this.optionsSelected.values()];
|
|
10405
10406
|
}
|
|
10406
10407
|
get selectedOptionsText() {
|
|
10407
|
-
return this.selectedOptions.map(option => option.label).join(', ');
|
|
10408
|
+
return this.selectedOptions.map((option) => option.label).join(', ');
|
|
10408
10409
|
}
|
|
10409
10410
|
get counterText() {
|
|
10410
10411
|
return `${this.selectedOptions.length} ${this.selectionTypeCounterText}`;
|
|
@@ -10412,7 +10413,6 @@ class MultiSelectComponent {
|
|
|
10412
10413
|
get counterTextType() {
|
|
10413
10414
|
return typeof (this.selectionTypeCounterTextPluralMap ?? this.selectionTypeCounterText);
|
|
10414
10415
|
}
|
|
10415
|
-
;
|
|
10416
10416
|
get counterPlaceholderText() {
|
|
10417
10417
|
if (this.selectedOptions.length === 0 || this.selectionType !== 'counter') {
|
|
10418
10418
|
return null;
|
|
@@ -10465,7 +10465,8 @@ class MultiSelectComponent {
|
|
|
10465
10465
|
this.setFocus('keyboard', 'onKeyUp');
|
|
10466
10466
|
return;
|
|
10467
10467
|
}
|
|
10468
|
-
if (['Enter', 'Space', 'ArrowDown'].includes($event.code) &&
|
|
10468
|
+
if (['Enter', 'Space', 'ArrowDown'].includes($event.code) &&
|
|
10469
|
+
[this.inputElement?.nativeElement, this.elementRef.nativeElement].includes($event.target)) {
|
|
10469
10470
|
$event.stopPropagation();
|
|
10470
10471
|
this.visible = true;
|
|
10471
10472
|
if (!this.search) {
|
|
@@ -10489,12 +10490,16 @@ class MultiSelectComponent {
|
|
|
10489
10490
|
if (this.visible && this.subtreeFocused) {
|
|
10490
10491
|
if (targetTagName === 'C-MULTI-SELECT-OPTION') {
|
|
10491
10492
|
if (this.tabTarget === 'C-MULTI-SELECT-OPTION') {
|
|
10492
|
-
if ($event.shiftKey &&
|
|
10493
|
+
if ($event.shiftKey &&
|
|
10494
|
+
this.focusKeyManager.activeItem?.value ===
|
|
10495
|
+
this.options.filter((option) => option.visible && !option.disabled).slice(0)[0].value) {
|
|
10493
10496
|
this.setFocus('keyboard', 'onKeyUp');
|
|
10494
10497
|
this.tabTarget = targetTagName;
|
|
10495
10498
|
return;
|
|
10496
10499
|
}
|
|
10497
|
-
if (!$event.shiftKey &&
|
|
10500
|
+
if (!$event.shiftKey &&
|
|
10501
|
+
this.focusKeyManager.activeItem?.value ===
|
|
10502
|
+
this.options.filter((option) => option.visible && !option.disabled).slice(-1)[0].value) {
|
|
10498
10503
|
this.setFocus('keyboard', 'onKeyUp');
|
|
10499
10504
|
this.tabTarget = targetTagName;
|
|
10500
10505
|
this.updateActiveItem(0);
|
|
@@ -10581,21 +10586,23 @@ class MultiSelectComponent {
|
|
|
10581
10586
|
}
|
|
10582
10587
|
ngOnInit() {
|
|
10583
10588
|
this.multiSelectService.selectionModel.changed
|
|
10584
|
-
.pipe(filter(() => !this.multiple), delay(0), tap(change => {
|
|
10589
|
+
.pipe(filter(() => !this.multiple), delay(0), tap((change) => {
|
|
10585
10590
|
if (change.added.length > 0) {
|
|
10586
10591
|
// close dropdown for single select (!multiple)
|
|
10587
10592
|
this.visible = false;
|
|
10588
10593
|
this.searchValue = '';
|
|
10589
10594
|
}
|
|
10590
|
-
}), skip(1), tap(change => {
|
|
10595
|
+
}), skip(1), tap((change) => {
|
|
10591
10596
|
this.setFocus('program', 'selectionModel.changed (single)');
|
|
10592
10597
|
}), takeUntilDestroyed(this.#destroyRef))
|
|
10593
10598
|
.subscribe();
|
|
10594
|
-
this.#optionsReady
|
|
10599
|
+
this.#optionsReady$
|
|
10600
|
+
.pipe(filter(() => !this.virtualScroller), delay(0), tap(() => {
|
|
10595
10601
|
this.setFocusKeyManager([...this.multiSelectOptionsContent, ...this.multiSelectOptionsView]);
|
|
10596
|
-
}), takeUntilDestroyed(this.#destroyRef))
|
|
10602
|
+
}), takeUntilDestroyed(this.#destroyRef))
|
|
10603
|
+
.subscribe();
|
|
10597
10604
|
this.multiSelectService.selectionModel.changed
|
|
10598
|
-
.pipe(tap(change => {
|
|
10605
|
+
.pipe(tap((change) => {
|
|
10599
10606
|
const { added } = { ...change };
|
|
10600
10607
|
if (added.length > 0 && this.clearSearchOnSelect) {
|
|
10601
10608
|
this.searchValue = '';
|
|
@@ -10607,10 +10614,10 @@ class MultiSelectComponent {
|
|
|
10607
10614
|
// delay(0),
|
|
10608
10615
|
combineLatestWith(this.#optionsReady$), tap(([change, ready]) => {
|
|
10609
10616
|
const { removed } = { ...change };
|
|
10610
|
-
removed.forEach(value => {
|
|
10617
|
+
removed.forEach((value) => {
|
|
10611
10618
|
this.optionsSelected.delete(value);
|
|
10612
10619
|
});
|
|
10613
|
-
this.multiSelectService.selectionModel.selected.forEach(key => {
|
|
10620
|
+
this.multiSelectService.selectionModel.selected.forEach((key) => {
|
|
10614
10621
|
const value = this.#options.get(key);
|
|
10615
10622
|
if (value) {
|
|
10616
10623
|
this.optionsSelected.set(key, value);
|
|
@@ -10624,19 +10631,17 @@ class MultiSelectComponent {
|
|
|
10624
10631
|
.subscribe();
|
|
10625
10632
|
// set initial values
|
|
10626
10633
|
this.multiSelectService.selectionModel.select(...this.#value);
|
|
10627
|
-
this.value
|
|
10628
|
-
.pipe(takeUntilDestroyed(this.#destroyRef))
|
|
10629
|
-
.subscribe(value => {
|
|
10634
|
+
this.value$.pipe(takeUntilDestroyed(this.#destroyRef)).subscribe((value) => {
|
|
10630
10635
|
if (!value.length) {
|
|
10631
10636
|
this.clearAllOptions();
|
|
10632
10637
|
return;
|
|
10633
10638
|
}
|
|
10634
|
-
value.forEach(value => {
|
|
10639
|
+
value.forEach((value) => {
|
|
10635
10640
|
this.multiSelectService.selectionModel.select(value);
|
|
10636
10641
|
});
|
|
10637
10642
|
});
|
|
10638
10643
|
this.value$
|
|
10639
|
-
.pipe(debounceTime(100), tap(value => {
|
|
10644
|
+
.pipe(debounceTime(100), tap((value) => {
|
|
10640
10645
|
this.valueChange.emit(this.value);
|
|
10641
10646
|
}), takeUntilDestroyed(this.#destroyRef))
|
|
10642
10647
|
.subscribe();
|
|
@@ -10645,15 +10650,15 @@ class MultiSelectComponent {
|
|
|
10645
10650
|
this.visibleOptions.set(options.some((item) => item.visible) || userOptions.some((item) => item.visible));
|
|
10646
10651
|
this.activeOption = null;
|
|
10647
10652
|
if (this.virtualScroller) {
|
|
10648
|
-
this.multiSelectOptionsContent?.forEach(option => {
|
|
10653
|
+
this.multiSelectOptionsContent?.forEach((option) => {
|
|
10649
10654
|
option.active = false;
|
|
10650
10655
|
});
|
|
10651
10656
|
this.scrollViewport?.setRenderedRange({ start: 0, end: this.visibleItems });
|
|
10652
10657
|
this.scrollViewport?.scrollToIndex(0);
|
|
10653
10658
|
}
|
|
10654
10659
|
else {
|
|
10655
|
-
this.multiSelectOptionsContent?.forEach(option => {
|
|
10656
|
-
const found = options.find(item => item.value === option.value);
|
|
10660
|
+
this.multiSelectOptionsContent?.forEach((option) => {
|
|
10661
|
+
const found = options.find((item) => item.value === option.value);
|
|
10657
10662
|
option.visible = found?.visible ?? false;
|
|
10658
10663
|
option.active = false;
|
|
10659
10664
|
});
|
|
@@ -10692,13 +10697,17 @@ class MultiSelectComponent {
|
|
|
10692
10697
|
value.visible = false;
|
|
10693
10698
|
});
|
|
10694
10699
|
}
|
|
10695
|
-
options.forEach(option => {
|
|
10700
|
+
options.forEach((option) => {
|
|
10696
10701
|
const key = option.value;
|
|
10697
10702
|
const value = {
|
|
10698
10703
|
value: option.value ?? option.label,
|
|
10699
10704
|
label: option.label ?? option.value?.toString(),
|
|
10700
10705
|
disabled: option.disabled === true,
|
|
10701
|
-
visible: this.search === 'external'
|
|
10706
|
+
visible: this.search === 'external'
|
|
10707
|
+
? true
|
|
10708
|
+
: option.custom && option.selected
|
|
10709
|
+
? option.visible
|
|
10710
|
+
: option.visible !== false,
|
|
10702
10711
|
text: option.text ?? option.label ?? option.value?.toString(),
|
|
10703
10712
|
selected: option.selected,
|
|
10704
10713
|
custom: option.custom
|
|
@@ -10719,7 +10728,7 @@ class MultiSelectComponent {
|
|
|
10719
10728
|
// });
|
|
10720
10729
|
addUserOption() {
|
|
10721
10730
|
if (this.allowCreateOptions) {
|
|
10722
|
-
if (this.userOptions().some(option => option.value === this.searchValue)) {
|
|
10731
|
+
if (this.userOptions().some((option) => option.value === this.searchValue)) {
|
|
10723
10732
|
return;
|
|
10724
10733
|
}
|
|
10725
10734
|
if (this.#options.get(this.searchValue)) {
|
|
@@ -10733,7 +10742,7 @@ class MultiSelectComponent {
|
|
|
10733
10742
|
custom: true,
|
|
10734
10743
|
selected: true
|
|
10735
10744
|
};
|
|
10736
|
-
this.searchValue =
|
|
10745
|
+
this.searchValue = this.clearSearchOnSelect || this.allowCreateOptions ? '' : this.searchValue;
|
|
10737
10746
|
this.multiSelectService.addUserOption(userOption);
|
|
10738
10747
|
this.multiSelectService.selectionModel.select(userOption.value);
|
|
10739
10748
|
this.optionsSelected.set(userOption.value, userOption);
|
|
@@ -10747,16 +10756,16 @@ class MultiSelectComponent {
|
|
|
10747
10756
|
this.setVirtualScroller();
|
|
10748
10757
|
this.multiSelectOptionsContent?.changes
|
|
10749
10758
|
.pipe(delay(0), distinctUntilChanged((previous, current) => {
|
|
10750
|
-
const prev = previous.toArray().map(option => option.value);
|
|
10751
|
-
const curr = current.toArray().map(option => option.value);
|
|
10759
|
+
const prev = previous.toArray().map((option) => option.value);
|
|
10760
|
+
const curr = current.toArray().map((option) => option.value);
|
|
10752
10761
|
if (this.virtualScroller) {
|
|
10753
10762
|
return JSON.stringify(prev) === JSON.stringify(curr);
|
|
10754
10763
|
}
|
|
10755
10764
|
return JSON.stringify(this.#optionsContent) === JSON.stringify(curr);
|
|
10756
|
-
}), tap(changes => {
|
|
10757
|
-
this.#optionsContent = changes.toArray().map(option => option.value);
|
|
10765
|
+
}), tap((changes) => {
|
|
10766
|
+
this.#optionsContent = changes.toArray().map((option) => option.value);
|
|
10758
10767
|
}), takeUntilDestroyed(this.#destroyRef))
|
|
10759
|
-
.subscribe(next => {
|
|
10768
|
+
.subscribe((next) => {
|
|
10760
10769
|
this.visibleOptions.set(this.multiSelectOptionsContent?.some((option) => option.visible));
|
|
10761
10770
|
if (this.visibleOptions()) {
|
|
10762
10771
|
this.makeOptions(this.multiSelectOptionsContent.toArray());
|
|
@@ -10793,6 +10802,10 @@ class MultiSelectComponent {
|
|
|
10793
10802
|
}
|
|
10794
10803
|
else {
|
|
10795
10804
|
if (this.virtualScroller) {
|
|
10805
|
+
{
|
|
10806
|
+
const dropdownMinWidth = parseInt(this.dropdownMenu.nativeElement.style.minWidth, 10);
|
|
10807
|
+
this.minWidth.set(this.itemMinWidth > dropdownMinWidth ? this.itemMinWidth : dropdownMinWidth);
|
|
10808
|
+
}
|
|
10796
10809
|
this.scrollViewport?.setRenderedRange({ start: 0, end: this.visibleItems });
|
|
10797
10810
|
this.scrollViewport?.scrollToIndex(0);
|
|
10798
10811
|
}
|
|
@@ -10804,7 +10817,9 @@ class MultiSelectComponent {
|
|
|
10804
10817
|
}
|
|
10805
10818
|
clearAllOptions($event) {
|
|
10806
10819
|
setTimeout(() => {
|
|
10807
|
-
const enabledOptions = Array.from(this.optionsSelected.values())
|
|
10820
|
+
const enabledOptions = Array.from(this.optionsSelected.values())
|
|
10821
|
+
.filter((option) => !option.disabled)
|
|
10822
|
+
.map((option) => option.value);
|
|
10808
10823
|
this.multiSelectService.selectionModel.deselect(...enabledOptions);
|
|
10809
10824
|
this.removeAllUserOptions();
|
|
10810
10825
|
this.searchValue = '';
|
|
@@ -10814,7 +10829,9 @@ class MultiSelectComponent {
|
|
|
10814
10829
|
});
|
|
10815
10830
|
}
|
|
10816
10831
|
selectAllOptions() {
|
|
10817
|
-
const enabledOptions = Array.from(this.#options.values())
|
|
10832
|
+
const enabledOptions = Array.from(this.#options.values())
|
|
10833
|
+
.filter((option) => option.visible && !option.disabled)
|
|
10834
|
+
.map((option) => option.value);
|
|
10818
10835
|
this.multiSelectService.selectionModel.select(...enabledOptions);
|
|
10819
10836
|
this.inputElementSize();
|
|
10820
10837
|
}
|
|
@@ -10863,7 +10880,7 @@ class MultiSelectComponent {
|
|
|
10863
10880
|
if (!this.nativeSelectRef || !this.nativeId) {
|
|
10864
10881
|
return;
|
|
10865
10882
|
}
|
|
10866
|
-
const options = Array.from(this.optionsSelected).map(item => {
|
|
10883
|
+
const options = Array.from(this.optionsSelected).map((item) => {
|
|
10867
10884
|
const { selected, value, label } = item[1];
|
|
10868
10885
|
return { selected, value, label };
|
|
10869
10886
|
});
|
|
@@ -10900,7 +10917,7 @@ class MultiSelectComponent {
|
|
|
10900
10917
|
}
|
|
10901
10918
|
if (['Backspace', 'Delete'].includes($event.key)) {
|
|
10902
10919
|
$event.stopPropagation();
|
|
10903
|
-
const last = this.selectedOptions.filter(option => !option.disabled).pop();
|
|
10920
|
+
const last = this.selectedOptions.filter((option) => !option.disabled).pop();
|
|
10904
10921
|
if (last) {
|
|
10905
10922
|
this.multiSelectService.selectionModel.deselect(last.value);
|
|
10906
10923
|
}
|
|
@@ -10919,7 +10936,8 @@ class MultiSelectComponent {
|
|
|
10919
10936
|
// takeUntilDestroyed(this.#destroyRef)
|
|
10920
10937
|
// )
|
|
10921
10938
|
// .subscribe();
|
|
10922
|
-
this.focusMonitorSubscription = this.focusMonitor
|
|
10939
|
+
this.focusMonitorSubscription = this.focusMonitor
|
|
10940
|
+
?.monitor(this.elementRef, true)
|
|
10923
10941
|
.pipe(
|
|
10924
10942
|
// to avoid focus lost on speed scrolling with virtualScroll
|
|
10925
10943
|
debounceTime(100), takeUntilDestroyed(this.#destroyRef))
|
|
@@ -10939,19 +10957,19 @@ class MultiSelectComponent {
|
|
|
10939
10957
|
if (!this.scrollViewport) {
|
|
10940
10958
|
this.scrollViewport = scrollViewport;
|
|
10941
10959
|
}
|
|
10942
|
-
const availableOptions = this.options.filter(option => option.visible);
|
|
10960
|
+
const availableOptions = this.options.filter((option) => option.visible);
|
|
10943
10961
|
const firstVisibleOption = availableOptions[scrolledIndex];
|
|
10944
|
-
const activeOptionIndex = availableOptions.findIndex(option => option.value === this.activeOption?.value);
|
|
10962
|
+
const activeOptionIndex = availableOptions.findIndex((option) => option.value === this.activeOption?.value);
|
|
10945
10963
|
const optionsArray = this.multiSelectOptionsContent.toArray();
|
|
10946
10964
|
if (scrolledIndex > activeOptionIndex) {
|
|
10947
|
-
const firstVisibleItem = optionsArray.find(option => option.value === firstVisibleOption?.value);
|
|
10965
|
+
const firstVisibleItem = optionsArray.find((option) => option.value === firstVisibleOption?.value);
|
|
10948
10966
|
if (firstVisibleItem && scrolledIndex) {
|
|
10949
10967
|
this.focusKeyManager.setActiveItem(firstVisibleItem);
|
|
10950
10968
|
}
|
|
10951
10969
|
return;
|
|
10952
10970
|
}
|
|
10953
10971
|
if (scrolledIndex + this.visibleItems - 2 <= activeOptionIndex) {
|
|
10954
|
-
const lastVisibleItem = optionsArray.findIndex(option => option.value === firstVisibleOption.value);
|
|
10972
|
+
const lastVisibleItem = optionsArray.findIndex((option) => option.value === firstVisibleOption.value);
|
|
10955
10973
|
if (lastVisibleItem > -1) {
|
|
10956
10974
|
this.focusKeyManager.setActiveItem(lastVisibleItem + this.visibleItems - 2);
|
|
10957
10975
|
}
|
|
@@ -10990,14 +11008,12 @@ class MultiSelectComponent {
|
|
|
10990
11008
|
return [...option.elementRef.nativeElement.parentElement.children]?.indexOf(option.elementRef.nativeElement);
|
|
10991
11009
|
};
|
|
10992
11010
|
const optionsChange$ = this.multiSelectOptionsContent.changes;
|
|
10993
|
-
const sortedOptions$ = optionsChange$.pipe(map(options => options.toArray()), filter(options => options.length > 0), map(options => options.sort((a, b) => indexOfOption(a) - indexOfOption(b))), takeUntilDestroyed(this.#destroyRef));
|
|
10994
|
-
sortedOptions
|
|
10995
|
-
.pipe(takeUntilDestroyed(this.#destroyRef))
|
|
10996
|
-
.subscribe(sortedOptions => {
|
|
11011
|
+
const sortedOptions$ = optionsChange$.pipe(map((options) => options.toArray()), filter((options) => options.length > 0), map((options) => options.sort((a, b) => indexOfOption(a) - indexOfOption(b))), takeUntilDestroyed(this.#destroyRef));
|
|
11012
|
+
sortedOptions$.pipe(takeUntilDestroyed(this.#destroyRef)).subscribe((sortedOptions) => {
|
|
10997
11013
|
return this.multiSelectOptionsContent.reset(sortedOptions);
|
|
10998
11014
|
});
|
|
10999
11015
|
this.scrollViewportView.changes
|
|
11000
|
-
.pipe(take(1), map(changes => changes.toArray()[0]), tap((scrollViewport) => {
|
|
11016
|
+
.pipe(take(1), map((changes) => changes.toArray()[0]), tap((scrollViewport) => {
|
|
11001
11017
|
if (!this.scrollViewport) {
|
|
11002
11018
|
this.scrollViewport = scrollViewport;
|
|
11003
11019
|
const cdkVirtualScrollContentWrapper = this.scrollViewport.getElementRef().nativeElement?.firstElementChild;
|
|
@@ -11005,8 +11021,8 @@ class MultiSelectComponent {
|
|
|
11005
11021
|
const style = getComputedStyle(cdkVirtualScrollContentWrapper, null) ?? undefined;
|
|
11006
11022
|
const padding = parseInt(style?.getPropertyValue('padding-left') ?? '12px') * 3;
|
|
11007
11023
|
const observer = new MutationObserver((mutationRecords) => {
|
|
11008
|
-
mutationRecords.forEach(child => {
|
|
11009
|
-
child.addedNodes.forEach(node => {
|
|
11024
|
+
mutationRecords.forEach((child) => {
|
|
11025
|
+
child.addedNodes.forEach((node) => {
|
|
11010
11026
|
if (node.nodeName === 'C-MULTI-SELECT-OPTION') {
|
|
11011
11027
|
const width = node.offsetWidth;
|
|
11012
11028
|
if (width > this.itemMinWidth) {
|
|
@@ -11038,16 +11054,14 @@ class MultiSelectComponent {
|
|
|
11038
11054
|
this.focusKeyManager = new FocusKeyManager(focusableOptions)
|
|
11039
11055
|
.withHomeAndEnd()
|
|
11040
11056
|
.withPageUpDown()
|
|
11041
|
-
.skipPredicate((option) =>
|
|
11057
|
+
.skipPredicate((option) => option.disabled || !option.visible);
|
|
11042
11058
|
if (!this._virtualScroller) {
|
|
11043
11059
|
this.focusKeyManager.withTypeAhead(300);
|
|
11044
11060
|
}
|
|
11045
11061
|
this.focusKeyManager.tabOut
|
|
11046
11062
|
.pipe(takeUntilDestroyed(this.#destroyRef), tap(() => { }))
|
|
11047
11063
|
.subscribe();
|
|
11048
|
-
this.focusKeyManager.change
|
|
11049
|
-
.pipe(takeUntilDestroyed(this.#destroyRef))
|
|
11050
|
-
.subscribe(change => {
|
|
11064
|
+
this.focusKeyManager.change.pipe(takeUntilDestroyed(this.#destroyRef)).subscribe((change) => {
|
|
11051
11065
|
if (change < 0) {
|
|
11052
11066
|
this.activeOption ? this.focusKeyManager.setActiveItem(this.activeOption) : this.setFirstItemActive();
|
|
11053
11067
|
}
|
|
@@ -11065,21 +11079,26 @@ class MultiSelectComponent {
|
|
|
11065
11079
|
// }
|
|
11066
11080
|
}
|
|
11067
11081
|
get firstFocusableItem() {
|
|
11068
|
-
return this.multiSelectOptionsContent?.find(option => option.visible && !option.disabled) ??
|
|
11082
|
+
return (this.multiSelectOptionsContent?.find((option) => option.visible && !option.disabled) ??
|
|
11083
|
+
this.multiSelectOptionsView?.find((option) => option.visible && !option.disabled));
|
|
11069
11084
|
}
|
|
11070
11085
|
setFirstItemActive() {
|
|
11071
11086
|
const firstFocusableItem = this.firstFocusableItem;
|
|
11072
|
-
firstFocusableItem
|
|
11087
|
+
firstFocusableItem
|
|
11088
|
+
? this.focusKeyManager?.setActiveItem(firstFocusableItem)
|
|
11089
|
+
: this.focusKeyManager?.setFirstItemActive();
|
|
11073
11090
|
this.activeOption = this.focusKeyManager?.activeItem ?? null;
|
|
11074
11091
|
}
|
|
11075
11092
|
updateActiveItem(item) {
|
|
11076
11093
|
const firstFocusableItem = this.firstFocusableItem ?? item;
|
|
11077
|
-
firstFocusableItem
|
|
11094
|
+
firstFocusableItem
|
|
11095
|
+
? this.focusKeyManager?.updateActiveItem(firstFocusableItem)
|
|
11096
|
+
: this.focusKeyManager?.updateActiveItem(0);
|
|
11078
11097
|
if (this.focusKeyManager?.activeItem) {
|
|
11079
|
-
this.multiSelectOptionsContent?.forEach(option => {
|
|
11098
|
+
this.multiSelectOptionsContent?.forEach((option) => {
|
|
11080
11099
|
option.active = false;
|
|
11081
11100
|
});
|
|
11082
|
-
this.multiSelectOptionsView?.forEach(option => {
|
|
11101
|
+
this.multiSelectOptionsView?.forEach((option) => {
|
|
11083
11102
|
option.active = false;
|
|
11084
11103
|
});
|
|
11085
11104
|
this.focusKeyManager.activeItem.active = true;
|
|
@@ -11096,9 +11115,11 @@ class MultiSelectComponent {
|
|
|
11096
11115
|
I18nPluralPipe,
|
|
11097
11116
|
MultiSelectService,
|
|
11098
11117
|
{
|
|
11099
|
-
provide: NG_VALUE_ACCESSOR,
|
|
11118
|
+
provide: NG_VALUE_ACCESSOR,
|
|
11119
|
+
useExisting: forwardRef(() => MultiSelectComponent),
|
|
11120
|
+
multi: true
|
|
11100
11121
|
}
|
|
11101
|
-
], queries: [{ propertyName: "multiSelectOptionsContent", predicate: MultiSelectOptionComponent, descendants: true }, { propertyName: "contentTemplates", predicate: TemplateIdDirective, descendants: true }], viewQueries: [{ propertyName: "optionsElementRef", first: true, predicate: ["options"], descendants: true }, { propertyName: "inputElement", first: true, predicate: ["inputElement"], descendants: true }, { propertyName: "dropdownMenu", first: true, predicate: ["dropdownMenu"], descendants: true }, { propertyName: "dropdown", first: true, predicate: DropdownComponent, descendants: true, read: ElementRef }, { propertyName: "dropdownToggle", first: true, predicate: DropdownToggleDirective, descendants: true, read: ElementRef }, { propertyName: "multiSelectOptionsView", predicate: MultiSelectOptionComponent, descendants: true }, { propertyName: "scrollViewportView", predicate: ["scrollViewport"], descendants: true }], exportAs: ["cMultiSelect"], usesOnChanges: true, ngImport: i0, template: "<c-dropdown #dropdown=\"cDropdown\"\n [(visible)]=\"visible\"\n [autoClose]=\"'outside'\"\n [ngClass]=\"multiselectClasses\"\n [popperOptions]=\"popperOptions\">\n <div #dropdownToggle=\"cDropdownToggle\" [caret]=\"false\" [disabled]=\"disabled\" cDropdownToggle role=\"button\"\n class=\"form-multi-select-input-group\">\n <span\n [ngClass]=\"{'form-multi-select-selection': true, 'form-multi-select-selection-tags': (selectionType === 'tags' && selectedOptions.length)}\">\n @if (selectionType === 'tags') {\n @if (optionsSelected$ | async; as optionTags) {\n @for (option of optionTags; track option.value; let i = $index) {\n <c-multi-select-tag\n (remove)=\"handleTagRemove($event)\"\n [disabled]=\"option.disabled ?? false\"\n [label]=\"option.label ?? option.value?.toString()\"\n [option]=\"option\"\n [value]=\"option.value\"\n class=\"form-multi-select-tag text-truncate\"\n tabindex=\"-1\"\n />\n }\n }\n } @else if (selectionType === 'text' && !!selectedOptions.length) {\n @for (option of selectedOptions; track option.value; let i = $index, last = $last) {\n <span class=\"form-multi-select-text text-truncate\">{{ option.label }}{{ last ? ' ' : ', ' }}</span>\n }\n }\n @if (!search) {\n <span class=\"text-placeholder text-truncate\">\n {{ optionsSelected.size === 0 ? placeholder : counterPlaceholderText }}\n </span>\n }\n @if (search) {\n <input\n #inputElement\n (keydown)=\"handleSearchKeyDown($event)\"\n (valueChange)=\"handleSearchValueChange($event)\"\n [attr.placeholder]=\"selectedOptions.length === 0 ? placeholder : counterPlaceholderText\"\n [disabled]=\"disabled || !search\"\n [ngClass]=\"{ 'form-multi-select-search': true, disabled: (disabled || !search), 'text-truncate': true }\"\n [ngModel]=\"searchValue\"\n [value]=\"searchValue\"\n autocomplete=\"off\"\n cMultiSelectSearch\n size=\"2\"\n tabindex=\"{{ disabled ? -1 : 0 }}\"\n type=\"text\"\n >\n }\n </span>\n <div class=\"form-multi-select-buttons\">\n @if (!!cleaner && optionsSelected.size > 0 && !disabled) {\n <button\n (click)=\"clearAllOptions($event)\"\n [disabled]=\"disabled || (!isDropdownVisible && cleaner !== 'active')\"\n aria-label=\"Clear all\"\n class=\"form-multi-select-cleaner\"\n type=\"button\"\n ></button>\n }\n <button (click)=\"handleIndicatorClick($event)\"\n [disabled]=\"disabled\"\n class=\"form-multi-select-indicator\"\n type=\"button\">\n </button>\n </div>\n </div>\n @if (!disabled) {\n <div #dropdownMenu=\"cDropdownMenu\" [visible]=\"dropdown.visible\" cDropdownMenu\n class=\"form-multi-select-dropdown\" role=\"menu\">\n @if (visibleOptions() && options.length > 0) {\n @if (selectAll && multiple && !virtualScroller) {\n <button\n (click)=\"selectAllOptions()\"\n class=\"form-multi-select-all\"\n type=\"button\"\n tabindex=\"0\"\n >\n {{ selectAllLabel }}\n </button>\n }\n }\n @if ((visibleOptions() && options.length > 0) || isLoading()) {\n <ng-container *ngTemplateOutlet=\"virtualScroller ? multiselectVirtualScroller : multiselectOptionsDiv\" />\n } @else {\n <div class=\"form-multi-select-options-empty\">{{ searchNoResultsLabel }}</div>\n }\n @if (isLoading()) {\n <c-element-cover [ngStyle]=\"{'border-radius': '6px', 'z-index': 2}\" />\n }\n </div>\n }\n</c-dropdown>\n\n<ng-template #multiselectVirtualScroller>\n @defer (on immediate) {\n @if ((optionsArray$ | async); as optionsArray) {\n <cdk-virtual-scroll-viewport\n #scrollViewport\n (scrolledIndexChange)=\"handleScrolledIndexChange($event, scrollViewport)\"\n [itemSize]=\"itemSize\"\n [ngStyle]=\"optionsMaxHeight !== 'auto' ? { 'height.px': optionsMaxHeight, 'maxHeight.px': optionsMaxHeight, 'minWidth.px': itemMinWidth ?? 196, overflowX: 'hidden' } : { 'minWidth.px': itemMinWidth ?? 196, overflowX: 'hidden'}\"\n maxBufferPx=\"{{itemSize * visibleItems}}\"\n minBufferPx=\"{{itemSize * visibleItems}}\"\n class=\"form-multi-select-options\"\n tabindex=\"-1\"\n >\n <ng-container\n #cdkVirtualFor\n *cdkVirtualFor=\"let option of optionsArray; trackBy: trackByFn; templateCacheSize: 0; even as even; odd as odd; index as index; count as count; first as first; last as last;\"\n [ngTemplateOutletContext]=\"{$implicit: option, even, odd, index, count, first, last}\"\n [ngTemplateOutlet]=\"templates['multiSelectOptionTemplate'] || defaultMultiSelectOptionTemplate\"\n />\n </cdk-virtual-scroll-viewport>\n }\n }\n</ng-template>\n\n<ng-template #multiselectOptionsDiv>\n <div\n [ngClass]=\"{'form-multi-select-options': visibleOptions()}\"\n [ngStyle]=\"optionsMaxHeight !== 'auto' ? { 'maxHeight.px': optionsMaxHeight, overflowY: 'scroll' } : {}\"\n >\n <ng-content />\n <ng-container [ngTemplateOutlet]=\"userOptionsTemplate\" />\n </div>\n</ng-template>\n\n<ng-template #defaultMultiSelectOptionTemplate let-option>\n <c-multi-select-option\n [disabled]=\"option.disabled\"\n [label]=\"option.label\"\n [text]=\"option.text\"\n [value]=\"option.value\"\n [visible]=\"option.visible\"\n >\n {{ option.text }}\n </c-multi-select-option>\n</ng-template>\n\n<ng-template #userOptionsTemplate>\n @for (option of userOptionsArray$ | async; track option; let even = $even, odd = $odd, index = $index, count = $count, first = $first, last = $last) {\n <ng-container\n [ngTemplateOutlet]=\"templates['multiSelectOptionTemplate'] || defaultMultiSelectOptionTemplate\"\n [ngTemplateOutletContext]=\"{$implicit: option, even, odd, index, count, first, last}\"\n />\n }\n</ng-template>\n", styles: [":host{display:block}:host:focus-visible{outline:none}:host.cdk-focused:not(.disabled) .form-multi-select{outline:none;box-shadow:0 0 0 var(--cui-focus-ring-width) var(--cui-focus-ring-color);border-radius:var(--cui-border-radius, .375rem)}:host:not(.cdk-focused) .form-multi-select:not(.show) input.form-multi-select-search:not([placeholder]){display:none}:host .form-multi-select .form-multi-select-selection{display:flex;flex:1 1 auto;flex-wrap:wrap}:host .form-multi-select .form-multi-select-selection .text-placeholder,:host .form-multi-select .form-multi-select-selection .form-multi-select-search::placeholder{color:var(--cui-form-multi-select-color);opacity:.8}:host .form-multi-select .form-multi-select-search[size]{display:flex}:host ::ng-deep .cdk-virtual-scroll-content-wrapper{padding:var(--cui-form-multi-select-options-padding-y) var(--cui-form-multi-select-options-padding-x);font-size:1rem;color:var(--cui-form-multi-select-options-color)}:host .cdk-virtual-scroll-viewport{width:var(--cui-dropdown-min-width)}:host .dropdown-menu{--cui-dropdown-padding-y: 0}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: MultiSelectTagComponent, selector: "c-multi-select-tag", inputs: ["option", "disabled", "label", "value"], outputs: ["remove"] }, { kind: "component", type: MultiSelectOptionComponent, selector: "c-multi-select-option", inputs: ["optionsStyle", "label", "text", "visible", "disabled", "selected", "value", "active", "role"], outputs: ["selectedChange", "focusChange"], exportAs: ["cMultiSelectOption"] }, { kind: "directive", type: MultiSelectSearchDirective, selector: "[cMultiSelectSearch]", inputs: ["delay", "value"], outputs: ["valueChange"], exportAs: ["cMultiSelectSearch"] }, { kind: "component", type: DropdownComponent, selector: "c-dropdown", inputs: ["alignment", "autoClose", "direction", "placement", "popper", "popperOptions", "variant", "visible"], outputs: ["visibleChange"], exportAs: ["cDropdown"] }, { kind: "directive", type: DropdownMenuDirective, selector: "[cDropdownMenu]", inputs: ["alignment", "visible"], exportAs: ["cDropdownMenu"] }, { kind: "directive", type: DropdownToggleDirective, selector: "[cDropdownToggle]", inputs: ["dropdownComponent", "disabled", "caret", "split"], exportAs: ["cDropdownToggle"] }, { kind: "component", type: ElementCoverComponent, selector: "c-element-cover, [cElementCover]", inputs: ["boundaries", "opacity"] }], deferBlockDependencies: [() => [AsyncPipe,
|
|
11122
|
+
], queries: [{ propertyName: "multiSelectOptionsContent", predicate: MultiSelectOptionComponent, descendants: true }, { propertyName: "contentTemplates", predicate: TemplateIdDirective, descendants: true }], viewQueries: [{ propertyName: "optionsElementRef", first: true, predicate: ["options"], descendants: true }, { propertyName: "inputElement", first: true, predicate: ["inputElement"], descendants: true }, { propertyName: "dropdownMenu", first: true, predicate: DropdownMenuDirective, descendants: true, read: ElementRef }, { propertyName: "dropdown", first: true, predicate: DropdownComponent, descendants: true, read: ElementRef }, { propertyName: "dropdownToggle", first: true, predicate: DropdownToggleDirective, descendants: true, read: ElementRef }, { propertyName: "multiSelectOptionsView", predicate: MultiSelectOptionComponent, descendants: true }, { propertyName: "scrollViewportView", predicate: ["scrollViewport"], descendants: true }], exportAs: ["cMultiSelect"], usesOnChanges: true, ngImport: i0, template: "<c-dropdown #dropdown=\"cDropdown\"\n [(visible)]=\"visible\"\n [autoClose]=\"'outside'\"\n [ngClass]=\"multiselectClasses\"\n [popperOptions]=\"popperOptions\">\n <div #dropdownToggle=\"cDropdownToggle\" [caret]=\"false\" [disabled]=\"disabled\" cDropdownToggle role=\"button\"\n class=\"form-multi-select-input-group\">\n <span\n [ngClass]=\"{'form-multi-select-selection': true, 'form-multi-select-selection-tags': (selectionType === 'tags' && selectedOptions.length)}\">\n @if (selectionType === 'tags') {\n @if (optionsSelected$ | async; as optionTags) {\n @for (option of optionTags; track option.value; let i = $index) {\n <c-multi-select-tag\n (remove)=\"handleTagRemove($event)\"\n [disabled]=\"option.disabled ?? false\"\n [label]=\"option.label ?? option.value?.toString()\"\n [option]=\"option\"\n [value]=\"option.value\"\n class=\"form-multi-select-tag text-truncate\"\n tabindex=\"-1\"\n />\n }\n }\n } @else if (selectionType === 'text' && !!selectedOptions.length) {\n @for (option of selectedOptions; track option.value; let i = $index, last = $last) {\n <span class=\"form-multi-select-text text-truncate\">{{ option.label }}{{ last ? ' ' : ', ' }}</span>\n }\n }\n @if (!search) {\n <span class=\"text-placeholder text-truncate\">\n {{ optionsSelected.size === 0 ? placeholder : counterPlaceholderText }}\n </span>\n }\n @if (search) {\n <input\n #inputElement\n (keydown)=\"handleSearchKeyDown($event)\"\n (valueChange)=\"handleSearchValueChange($event)\"\n [attr.placeholder]=\"selectedOptions.length === 0 ? placeholder : counterPlaceholderText\"\n [disabled]=\"disabled || !search\"\n [ngClass]=\"{ 'form-multi-select-search': true, disabled: (disabled || !search), 'text-truncate': true }\"\n [ngModel]=\"searchValue\"\n [value]=\"searchValue\"\n autocomplete=\"off\"\n cMultiSelectSearch\n size=\"2\"\n tabindex=\"{{ disabled ? -1 : 0 }}\"\n type=\"text\"\n >\n }\n </span>\n <div class=\"form-multi-select-buttons\">\n @if (!!cleaner && optionsSelected.size > 0 && !disabled) {\n <button\n (click)=\"clearAllOptions($event)\"\n [disabled]=\"disabled || (!isDropdownVisible && cleaner !== 'active')\"\n aria-label=\"Clear all\"\n class=\"form-multi-select-cleaner\"\n type=\"button\"\n ></button>\n }\n <button (click)=\"handleIndicatorClick($event)\"\n [disabled]=\"disabled\"\n class=\"form-multi-select-indicator\"\n type=\"button\">\n </button>\n </div>\n </div>\n @if (!disabled) {\n <div #dropdownMenu=\"cDropdownMenu\" [visible]=\"dropdown.visible\" cDropdownMenu\n class=\"form-multi-select-dropdown\" role=\"menu\">\n @if (visibleOptions() && options.length > 0) {\n @if (selectAll && multiple && !virtualScroller) {\n <button\n (click)=\"selectAllOptions()\"\n class=\"form-multi-select-all\"\n type=\"button\"\n tabindex=\"0\"\n >\n {{ selectAllLabel }}\n </button>\n }\n }\n @if ((visibleOptions() && options.length > 0) || isLoading()) {\n <ng-container *ngTemplateOutlet=\"virtualScroller ? multiselectVirtualScroller : multiselectOptionsDiv\" />\n } @else {\n <div class=\"form-multi-select-options-empty\">{{ searchNoResultsLabel }}</div>\n }\n @if (isLoading()) {\n <c-element-cover [ngStyle]=\"{'border-radius': '6px', 'z-index': 2}\" />\n }\n </div>\n }\n</c-dropdown>\n\n<ng-template #multiselectVirtualScroller>\n @defer (on immediate) {\n @if ((optionsArray$ | async); as optionsArray) {\n <cdk-virtual-scroll-viewport\n #scrollViewport\n (scrolledIndexChange)=\"handleScrolledIndexChange($event, scrollViewport)\"\n [itemSize]=\"itemSize\"\n [ngStyle]=\"optionsMaxHeight !== 'auto' ? { 'height.px': optionsMaxHeight, 'maxHeight.px': optionsMaxHeight, 'minWidth.px': minWidth(), overflowX: 'hidden' } : { 'minWidth.px': minWidth(), overflowX: 'hidden'}\"\n maxBufferPx=\"{{itemSize * visibleItems}}\"\n minBufferPx=\"{{itemSize * visibleItems}}\"\n class=\"form-multi-select-options\"\n tabindex=\"-1\"\n >\n <ng-container\n #cdkVirtualFor\n *cdkVirtualFor=\"let option of optionsArray; trackBy: trackByFn; templateCacheSize: 0; even as even; odd as odd; index as index; count as count; first as first; last as last;\"\n [ngTemplateOutletContext]=\"{$implicit: option, even, odd, index, count, first, last}\"\n [ngTemplateOutlet]=\"templates['multiSelectOptionTemplate'] || defaultMultiSelectOptionTemplate\"\n />\n </cdk-virtual-scroll-viewport>\n }\n }\n</ng-template>\n\n<ng-template #multiselectOptionsDiv>\n <div\n [ngClass]=\"{'form-multi-select-options': visibleOptions()}\"\n [ngStyle]=\"optionsMaxHeight !== 'auto' ? { 'maxHeight.px': optionsMaxHeight, overflowY: 'scroll' } : {}\"\n >\n <ng-content />\n <ng-container [ngTemplateOutlet]=\"userOptionsTemplate\" />\n </div>\n</ng-template>\n\n<ng-template #defaultMultiSelectOptionTemplate let-option>\n <c-multi-select-option\n [disabled]=\"option.disabled\"\n [label]=\"option.label\"\n [text]=\"option.text\"\n [value]=\"option.value\"\n [visible]=\"option.visible\"\n >\n {{ option.text }}\n </c-multi-select-option>\n</ng-template>\n\n<ng-template #userOptionsTemplate>\n @for (option of userOptionsArray$ | async; track option; let even = $even, odd = $odd, index = $index, count = $count, first = $first, last = $last) {\n <ng-container\n [ngTemplateOutlet]=\"templates['multiSelectOptionTemplate'] || defaultMultiSelectOptionTemplate\"\n [ngTemplateOutletContext]=\"{$implicit: option, even, odd, index, count, first, last}\"\n />\n }\n</ng-template>\n", styles: [":host{display:block}:host:focus-visible{outline:none}:host.cdk-focused:not(.disabled) .form-multi-select{outline:none;box-shadow:0 0 0 var(--cui-focus-ring-width) var(--cui-focus-ring-color);border-radius:var(--cui-border-radius, .375rem)}:host:not(.cdk-focused) .form-multi-select:not(.show) input.form-multi-select-search:not([placeholder]){display:none}:host .form-multi-select .form-multi-select-selection{display:flex;flex:1 1 auto;flex-wrap:wrap}:host .form-multi-select .form-multi-select-selection .text-placeholder,:host .form-multi-select .form-multi-select-selection .form-multi-select-search::placeholder{color:var(--cui-form-multi-select-color);opacity:.8}:host .form-multi-select .form-multi-select-search[size]{display:flex}:host ::ng-deep .cdk-virtual-scroll-content-wrapper{padding:var(--cui-form-multi-select-options-padding-y) var(--cui-form-multi-select-options-padding-x);font-size:1rem;color:var(--cui-form-multi-select-options-color)}:host .cdk-virtual-scroll-viewport{width:var(--cui-dropdown-min-width)}:host .dropdown-menu{--cui-dropdown-padding-y: 0}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: MultiSelectTagComponent, selector: "c-multi-select-tag", inputs: ["option", "disabled", "label", "value"], outputs: ["remove"] }, { kind: "component", type: MultiSelectOptionComponent, selector: "c-multi-select-option", inputs: ["optionsStyle", "label", "text", "visible", "disabled", "selected", "value", "active", "role"], outputs: ["selectedChange", "focusChange"], exportAs: ["cMultiSelectOption"] }, { kind: "directive", type: MultiSelectSearchDirective, selector: "[cMultiSelectSearch]", inputs: ["delay", "value"], outputs: ["valueChange"], exportAs: ["cMultiSelectSearch"] }, { kind: "component", type: DropdownComponent, selector: "c-dropdown", inputs: ["alignment", "autoClose", "direction", "placement", "popper", "popperOptions", "variant", "visible"], outputs: ["visibleChange"], exportAs: ["cDropdown"] }, { kind: "directive", type: DropdownMenuDirective, selector: "[cDropdownMenu]", inputs: ["alignment", "visible"], exportAs: ["cDropdownMenu"] }, { kind: "directive", type: DropdownToggleDirective, selector: "[cDropdownToggle]", inputs: ["dropdownComponent", "disabled", "caret", "split"], exportAs: ["cDropdownToggle"] }, { kind: "component", type: ElementCoverComponent, selector: "c-element-cover, [cElementCover]", inputs: ["boundaries", "opacity"] }], deferBlockDependencies: [() => [AsyncPipe,
|
|
11102
11123
|
NgStyle,
|
|
11103
11124
|
NgTemplateOutlet,
|
|
11104
11125
|
CdkFixedSizeVirtualScroll,
|
|
@@ -11111,7 +11132,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImpor
|
|
|
11111
11132
|
I18nPluralPipe,
|
|
11112
11133
|
MultiSelectService,
|
|
11113
11134
|
{
|
|
11114
|
-
provide: NG_VALUE_ACCESSOR,
|
|
11135
|
+
provide: NG_VALUE_ACCESSOR,
|
|
11136
|
+
useExisting: forwardRef(() => MultiSelectComponent),
|
|
11137
|
+
multi: true
|
|
11115
11138
|
}
|
|
11116
11139
|
], standalone: true, imports: [
|
|
11117
11140
|
AsyncPipe,
|
|
@@ -11131,7 +11154,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImpor
|
|
|
11131
11154
|
DropdownMenuDirective,
|
|
11132
11155
|
DropdownToggleDirective,
|
|
11133
11156
|
ElementCoverComponent
|
|
11134
|
-
], template: "<c-dropdown #dropdown=\"cDropdown\"\n [(visible)]=\"visible\"\n [autoClose]=\"'outside'\"\n [ngClass]=\"multiselectClasses\"\n [popperOptions]=\"popperOptions\">\n <div #dropdownToggle=\"cDropdownToggle\" [caret]=\"false\" [disabled]=\"disabled\" cDropdownToggle role=\"button\"\n class=\"form-multi-select-input-group\">\n <span\n [ngClass]=\"{'form-multi-select-selection': true, 'form-multi-select-selection-tags': (selectionType === 'tags' && selectedOptions.length)}\">\n @if (selectionType === 'tags') {\n @if (optionsSelected$ | async; as optionTags) {\n @for (option of optionTags; track option.value; let i = $index) {\n <c-multi-select-tag\n (remove)=\"handleTagRemove($event)\"\n [disabled]=\"option.disabled ?? false\"\n [label]=\"option.label ?? option.value?.toString()\"\n [option]=\"option\"\n [value]=\"option.value\"\n class=\"form-multi-select-tag text-truncate\"\n tabindex=\"-1\"\n />\n }\n }\n } @else if (selectionType === 'text' && !!selectedOptions.length) {\n @for (option of selectedOptions; track option.value; let i = $index, last = $last) {\n <span class=\"form-multi-select-text text-truncate\">{{ option.label }}{{ last ? ' ' : ', ' }}</span>\n }\n }\n @if (!search) {\n <span class=\"text-placeholder text-truncate\">\n {{ optionsSelected.size === 0 ? placeholder : counterPlaceholderText }}\n </span>\n }\n @if (search) {\n <input\n #inputElement\n (keydown)=\"handleSearchKeyDown($event)\"\n (valueChange)=\"handleSearchValueChange($event)\"\n [attr.placeholder]=\"selectedOptions.length === 0 ? placeholder : counterPlaceholderText\"\n [disabled]=\"disabled || !search\"\n [ngClass]=\"{ 'form-multi-select-search': true, disabled: (disabled || !search), 'text-truncate': true }\"\n [ngModel]=\"searchValue\"\n [value]=\"searchValue\"\n autocomplete=\"off\"\n cMultiSelectSearch\n size=\"2\"\n tabindex=\"{{ disabled ? -1 : 0 }}\"\n type=\"text\"\n >\n }\n </span>\n <div class=\"form-multi-select-buttons\">\n @if (!!cleaner && optionsSelected.size > 0 && !disabled) {\n <button\n (click)=\"clearAllOptions($event)\"\n [disabled]=\"disabled || (!isDropdownVisible && cleaner !== 'active')\"\n aria-label=\"Clear all\"\n class=\"form-multi-select-cleaner\"\n type=\"button\"\n ></button>\n }\n <button (click)=\"handleIndicatorClick($event)\"\n [disabled]=\"disabled\"\n class=\"form-multi-select-indicator\"\n type=\"button\">\n </button>\n </div>\n </div>\n @if (!disabled) {\n <div #dropdownMenu=\"cDropdownMenu\" [visible]=\"dropdown.visible\" cDropdownMenu\n class=\"form-multi-select-dropdown\" role=\"menu\">\n @if (visibleOptions() && options.length > 0) {\n @if (selectAll && multiple && !virtualScroller) {\n <button\n (click)=\"selectAllOptions()\"\n class=\"form-multi-select-all\"\n type=\"button\"\n tabindex=\"0\"\n >\n {{ selectAllLabel }}\n </button>\n }\n }\n @if ((visibleOptions() && options.length > 0) || isLoading()) {\n <ng-container *ngTemplateOutlet=\"virtualScroller ? multiselectVirtualScroller : multiselectOptionsDiv\" />\n } @else {\n <div class=\"form-multi-select-options-empty\">{{ searchNoResultsLabel }}</div>\n }\n @if (isLoading()) {\n <c-element-cover [ngStyle]=\"{'border-radius': '6px', 'z-index': 2}\" />\n }\n </div>\n }\n</c-dropdown>\n\n<ng-template #multiselectVirtualScroller>\n @defer (on immediate) {\n @if ((optionsArray$ | async); as optionsArray) {\n <cdk-virtual-scroll-viewport\n #scrollViewport\n (scrolledIndexChange)=\"handleScrolledIndexChange($event, scrollViewport)\"\n [itemSize]=\"itemSize\"\n [ngStyle]=\"optionsMaxHeight !== 'auto' ? { 'height.px': optionsMaxHeight, 'maxHeight.px': optionsMaxHeight, 'minWidth.px':
|
|
11157
|
+
], template: "<c-dropdown #dropdown=\"cDropdown\"\n [(visible)]=\"visible\"\n [autoClose]=\"'outside'\"\n [ngClass]=\"multiselectClasses\"\n [popperOptions]=\"popperOptions\">\n <div #dropdownToggle=\"cDropdownToggle\" [caret]=\"false\" [disabled]=\"disabled\" cDropdownToggle role=\"button\"\n class=\"form-multi-select-input-group\">\n <span\n [ngClass]=\"{'form-multi-select-selection': true, 'form-multi-select-selection-tags': (selectionType === 'tags' && selectedOptions.length)}\">\n @if (selectionType === 'tags') {\n @if (optionsSelected$ | async; as optionTags) {\n @for (option of optionTags; track option.value; let i = $index) {\n <c-multi-select-tag\n (remove)=\"handleTagRemove($event)\"\n [disabled]=\"option.disabled ?? false\"\n [label]=\"option.label ?? option.value?.toString()\"\n [option]=\"option\"\n [value]=\"option.value\"\n class=\"form-multi-select-tag text-truncate\"\n tabindex=\"-1\"\n />\n }\n }\n } @else if (selectionType === 'text' && !!selectedOptions.length) {\n @for (option of selectedOptions; track option.value; let i = $index, last = $last) {\n <span class=\"form-multi-select-text text-truncate\">{{ option.label }}{{ last ? ' ' : ', ' }}</span>\n }\n }\n @if (!search) {\n <span class=\"text-placeholder text-truncate\">\n {{ optionsSelected.size === 0 ? placeholder : counterPlaceholderText }}\n </span>\n }\n @if (search) {\n <input\n #inputElement\n (keydown)=\"handleSearchKeyDown($event)\"\n (valueChange)=\"handleSearchValueChange($event)\"\n [attr.placeholder]=\"selectedOptions.length === 0 ? placeholder : counterPlaceholderText\"\n [disabled]=\"disabled || !search\"\n [ngClass]=\"{ 'form-multi-select-search': true, disabled: (disabled || !search), 'text-truncate': true }\"\n [ngModel]=\"searchValue\"\n [value]=\"searchValue\"\n autocomplete=\"off\"\n cMultiSelectSearch\n size=\"2\"\n tabindex=\"{{ disabled ? -1 : 0 }}\"\n type=\"text\"\n >\n }\n </span>\n <div class=\"form-multi-select-buttons\">\n @if (!!cleaner && optionsSelected.size > 0 && !disabled) {\n <button\n (click)=\"clearAllOptions($event)\"\n [disabled]=\"disabled || (!isDropdownVisible && cleaner !== 'active')\"\n aria-label=\"Clear all\"\n class=\"form-multi-select-cleaner\"\n type=\"button\"\n ></button>\n }\n <button (click)=\"handleIndicatorClick($event)\"\n [disabled]=\"disabled\"\n class=\"form-multi-select-indicator\"\n type=\"button\">\n </button>\n </div>\n </div>\n @if (!disabled) {\n <div #dropdownMenu=\"cDropdownMenu\" [visible]=\"dropdown.visible\" cDropdownMenu\n class=\"form-multi-select-dropdown\" role=\"menu\">\n @if (visibleOptions() && options.length > 0) {\n @if (selectAll && multiple && !virtualScroller) {\n <button\n (click)=\"selectAllOptions()\"\n class=\"form-multi-select-all\"\n type=\"button\"\n tabindex=\"0\"\n >\n {{ selectAllLabel }}\n </button>\n }\n }\n @if ((visibleOptions() && options.length > 0) || isLoading()) {\n <ng-container *ngTemplateOutlet=\"virtualScroller ? multiselectVirtualScroller : multiselectOptionsDiv\" />\n } @else {\n <div class=\"form-multi-select-options-empty\">{{ searchNoResultsLabel }}</div>\n }\n @if (isLoading()) {\n <c-element-cover [ngStyle]=\"{'border-radius': '6px', 'z-index': 2}\" />\n }\n </div>\n }\n</c-dropdown>\n\n<ng-template #multiselectVirtualScroller>\n @defer (on immediate) {\n @if ((optionsArray$ | async); as optionsArray) {\n <cdk-virtual-scroll-viewport\n #scrollViewport\n (scrolledIndexChange)=\"handleScrolledIndexChange($event, scrollViewport)\"\n [itemSize]=\"itemSize\"\n [ngStyle]=\"optionsMaxHeight !== 'auto' ? { 'height.px': optionsMaxHeight, 'maxHeight.px': optionsMaxHeight, 'minWidth.px': minWidth(), overflowX: 'hidden' } : { 'minWidth.px': minWidth(), overflowX: 'hidden'}\"\n maxBufferPx=\"{{itemSize * visibleItems}}\"\n minBufferPx=\"{{itemSize * visibleItems}}\"\n class=\"form-multi-select-options\"\n tabindex=\"-1\"\n >\n <ng-container\n #cdkVirtualFor\n *cdkVirtualFor=\"let option of optionsArray; trackBy: trackByFn; templateCacheSize: 0; even as even; odd as odd; index as index; count as count; first as first; last as last;\"\n [ngTemplateOutletContext]=\"{$implicit: option, even, odd, index, count, first, last}\"\n [ngTemplateOutlet]=\"templates['multiSelectOptionTemplate'] || defaultMultiSelectOptionTemplate\"\n />\n </cdk-virtual-scroll-viewport>\n }\n }\n</ng-template>\n\n<ng-template #multiselectOptionsDiv>\n <div\n [ngClass]=\"{'form-multi-select-options': visibleOptions()}\"\n [ngStyle]=\"optionsMaxHeight !== 'auto' ? { 'maxHeight.px': optionsMaxHeight, overflowY: 'scroll' } : {}\"\n >\n <ng-content />\n <ng-container [ngTemplateOutlet]=\"userOptionsTemplate\" />\n </div>\n</ng-template>\n\n<ng-template #defaultMultiSelectOptionTemplate let-option>\n <c-multi-select-option\n [disabled]=\"option.disabled\"\n [label]=\"option.label\"\n [text]=\"option.text\"\n [value]=\"option.value\"\n [visible]=\"option.visible\"\n >\n {{ option.text }}\n </c-multi-select-option>\n</ng-template>\n\n<ng-template #userOptionsTemplate>\n @for (option of userOptionsArray$ | async; track option; let even = $even, odd = $odd, index = $index, count = $count, first = $first, last = $last) {\n <ng-container\n [ngTemplateOutlet]=\"templates['multiSelectOptionTemplate'] || defaultMultiSelectOptionTemplate\"\n [ngTemplateOutletContext]=\"{$implicit: option, even, odd, index, count, first, last}\"\n />\n }\n</ng-template>\n", styles: [":host{display:block}:host:focus-visible{outline:none}:host.cdk-focused:not(.disabled) .form-multi-select{outline:none;box-shadow:0 0 0 var(--cui-focus-ring-width) var(--cui-focus-ring-color);border-radius:var(--cui-border-radius, .375rem)}:host:not(.cdk-focused) .form-multi-select:not(.show) input.form-multi-select-search:not([placeholder]){display:none}:host .form-multi-select .form-multi-select-selection{display:flex;flex:1 1 auto;flex-wrap:wrap}:host .form-multi-select .form-multi-select-selection .text-placeholder,:host .form-multi-select .form-multi-select-selection .form-multi-select-search::placeholder{color:var(--cui-form-multi-select-color);opacity:.8}:host .form-multi-select .form-multi-select-search[size]{display:flex}:host ::ng-deep .cdk-virtual-scroll-content-wrapper{padding:var(--cui-form-multi-select-options-padding-y) var(--cui-form-multi-select-options-padding-x);font-size:1rem;color:var(--cui-form-multi-select-options-color)}:host .cdk-virtual-scroll-viewport{width:var(--cui-dropdown-min-width)}:host .dropdown-menu{--cui-dropdown-padding-y: 0}\n"] }]
|
|
11135
11158
|
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i0.ViewContainerRef }, { type: i1$2.FocusMonitor }, { type: MultiSelectService }, { type: i0.IterableDiffers }], propDecorators: { allowCreateOptions: [{
|
|
11136
11159
|
type: Input,
|
|
11137
11160
|
args: [{ transform: booleanAttribute }]
|
|
@@ -11226,7 +11249,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImpor
|
|
|
11226
11249
|
args: ['inputElement']
|
|
11227
11250
|
}], dropdownMenu: [{
|
|
11228
11251
|
type: ViewChild,
|
|
11229
|
-
args: [
|
|
11252
|
+
args: [DropdownMenuDirective, { read: ElementRef }]
|
|
11230
11253
|
}], dropdown: [{
|
|
11231
11254
|
type: ViewChild,
|
|
11232
11255
|
args: [DropdownComponent, { read: ElementRef }]
|
|
@@ -17149,11 +17172,11 @@ class TabsComponent {
|
|
|
17149
17172
|
}, { allowSignalWrites: true });
|
|
17150
17173
|
}
|
|
17151
17174
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: TabsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
17152
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.0.3", type: TabsComponent, isStandalone: true, selector: "c-tabs", inputs: { activeItemKey: { classPropertyName: "activeItemKey", publicName: "activeItemKey", isSignal: true, isRequired: false, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { activeItemKey: "activeItemKeyChange" }, host: { properties: { "id": "id()" }, classAttribute: "tabs" }, providers: [TabsService], ngImport: i0, template: '<ng-content />', isInline: true, styles: [":host{display:block}\n"] }); }
|
|
17175
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.0.3", type: TabsComponent, isStandalone: true, selector: "c-tabs", inputs: { activeItemKey: { classPropertyName: "activeItemKey", publicName: "activeItemKey", isSignal: true, isRequired: false, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { activeItemKey: "activeItemKeyChange" }, host: { properties: { "id": "id()" }, classAttribute: "tabs" }, providers: [TabsService], exportAs: ["cTabs"], ngImport: i0, template: '<ng-content />', isInline: true, styles: [":host{display:block}\n"] }); }
|
|
17153
17176
|
}
|
|
17154
17177
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: TabsComponent, decorators: [{
|
|
17155
17178
|
type: Component,
|
|
17156
|
-
args: [{ selector: 'c-tabs', standalone: true, imports: [], template: '<ng-content />', providers: [TabsService], host: {
|
|
17179
|
+
args: [{ exportAs: 'cTabs', selector: 'c-tabs', standalone: true, imports: [], template: '<ng-content />', providers: [TabsService], host: {
|
|
17157
17180
|
'[id]': 'id()',
|
|
17158
17181
|
class: 'tabs'
|
|
17159
17182
|
}, styles: [":host{display:block}\n"] }]
|
|
@@ -17223,11 +17246,12 @@ class TabDirective {
|
|
|
17223
17246
|
this.#elementRef.nativeElement.focus();
|
|
17224
17247
|
}
|
|
17225
17248
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: TabDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
17226
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.0.3", type: TabDirective, isStandalone: true, selector: "button[cTab]", inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, itemKey: { classPropertyName: "itemKey", publicName: "itemKey", isSignal: true, isRequired: true, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, ariaControls: { classPropertyName: "ariaControls", publicName: "aria-controls", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "type": "button", "role": "tab" }, properties: { "class": "hostClasses()", "attr.aria-selected": "isActive()", "attr.aria-controls": "attrAriaControls()", "id": "propId()", "tabindex": "isActive() ? 0 : -1" } }, ngImport: i0 }); }
|
|
17249
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.0.3", type: TabDirective, isStandalone: true, selector: "button[cTab]", inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, itemKey: { classPropertyName: "itemKey", publicName: "itemKey", isSignal: true, isRequired: true, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, ariaControls: { classPropertyName: "ariaControls", publicName: "aria-controls", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "type": "button", "role": "tab" }, properties: { "class": "hostClasses()", "attr.aria-selected": "isActive()", "attr.aria-controls": "attrAriaControls()", "id": "propId()", "tabindex": "isActive() ? 0 : -1" } }, exportAs: ["cTab"], ngImport: i0 }); }
|
|
17227
17250
|
}
|
|
17228
17251
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: TabDirective, decorators: [{
|
|
17229
17252
|
type: Directive,
|
|
17230
17253
|
args: [{
|
|
17254
|
+
exportAs: 'cTab',
|
|
17231
17255
|
selector: 'button[cTab]',
|
|
17232
17256
|
standalone: true,
|
|
17233
17257
|
host: {
|
|
@@ -17311,11 +17335,12 @@ class TabsListComponent {
|
|
|
17311
17335
|
return;
|
|
17312
17336
|
}
|
|
17313
17337
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: TabsListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
17314
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.0.3", type: TabsListComponent, isStandalone: true, selector: "c-tabs-list", inputs: { layout: { classPropertyName: "layout", publicName: "layout", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, role: { classPropertyName: "role", publicName: "role", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "keydown": "onKeydown($event)" }, properties: { "attr.role": "role()", "class": "hostClasses()" } }, queries: [{ propertyName: "tabs", predicate: TabDirective, isSignal: true }], ngImport: i0, template: '<ng-content />', isInline: true }); }
|
|
17338
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.0.3", type: TabsListComponent, isStandalone: true, selector: "c-tabs-list", inputs: { layout: { classPropertyName: "layout", publicName: "layout", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, role: { classPropertyName: "role", publicName: "role", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "keydown": "onKeydown($event)" }, properties: { "attr.role": "role()", "class": "hostClasses()" } }, queries: [{ propertyName: "tabs", predicate: TabDirective, isSignal: true }], exportAs: ["cTabsList"], ngImport: i0, template: '<ng-content />', isInline: true }); }
|
|
17315
17339
|
}
|
|
17316
17340
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: TabsListComponent, decorators: [{
|
|
17317
17341
|
type: Component,
|
|
17318
17342
|
args: [{
|
|
17343
|
+
exportAs: 'cTabsList',
|
|
17319
17344
|
selector: 'c-tabs-list',
|
|
17320
17345
|
standalone: true,
|
|
17321
17346
|
imports: [TabDirective],
|
|
@@ -17332,11 +17357,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImpor
|
|
|
17332
17357
|
|
|
17333
17358
|
class TabsContentComponent {
|
|
17334
17359
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: TabsContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
17335
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.3", type: TabsContentComponent, isStandalone: true, selector: "c-tabs-content", host: { classAttribute: "tab-content" }, ngImport: i0, template: '<ng-content />', isInline: true }); }
|
|
17360
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.3", type: TabsContentComponent, isStandalone: true, selector: "c-tabs-content", host: { classAttribute: "tab-content" }, exportAs: ["cTabsContent"], ngImport: i0, template: '<ng-content />', isInline: true }); }
|
|
17336
17361
|
}
|
|
17337
17362
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: TabsContentComponent, decorators: [{
|
|
17338
17363
|
type: Component,
|
|
17339
17364
|
args: [{
|
|
17365
|
+
exportAs: 'cTabsContent',
|
|
17340
17366
|
selector: 'c-tabs-content',
|
|
17341
17367
|
standalone: true,
|
|
17342
17368
|
template: '<ng-content />',
|
|
@@ -17412,7 +17438,7 @@ class TabPanelComponent {
|
|
|
17412
17438
|
this.show.set(this.visible());
|
|
17413
17439
|
}
|
|
17414
17440
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: TabPanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
17415
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.0.3", type: TabPanelComponent, isStandalone: true, selector: "c-tab-panel", inputs: { ariaLabelledBy: { classPropertyName: "ariaLabelledBy", publicName: "aria-labelledby", isSignal: true, isRequired: false, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, itemKey: { classPropertyName: "itemKey", publicName: "itemKey", isSignal: true, isRequired: true, transformFunction: null }, tabindex: { classPropertyName: "tabindex", publicName: "tabindex", isSignal: true, isRequired: false, transformFunction: null }, transition: { classPropertyName: "transition", publicName: "transition", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { visibleChange: "visibleChange" }, host: { attributes: { "role": "tabpanel" }, listeners: { "@fadeInOut.done": "onAnimationDone($event)" }, properties: { "class": "hostClasses()", "tabindex": "visible() ? tabindex(): -1", "attr.aria-labelledby": "attrAriaLabelledBy()", "id": "propId()", "@.disabled": "this.animationDisabled", "@fadeInOut": "this.animateType" } }, ngImport: i0, template: '<ng-content />', isInline: true, animations: [
|
|
17441
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.0.3", type: TabPanelComponent, isStandalone: true, selector: "c-tab-panel", inputs: { ariaLabelledBy: { classPropertyName: "ariaLabelledBy", publicName: "aria-labelledby", isSignal: true, isRequired: false, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, itemKey: { classPropertyName: "itemKey", publicName: "itemKey", isSignal: true, isRequired: true, transformFunction: null }, tabindex: { classPropertyName: "tabindex", publicName: "tabindex", isSignal: true, isRequired: false, transformFunction: null }, transition: { classPropertyName: "transition", publicName: "transition", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { visibleChange: "visibleChange" }, host: { attributes: { "role": "tabpanel" }, listeners: { "@fadeInOut.done": "onAnimationDone($event)" }, properties: { "class": "hostClasses()", "tabindex": "visible() ? tabindex(): -1", "attr.aria-labelledby": "attrAriaLabelledBy()", "id": "propId()", "@.disabled": "this.animationDisabled", "@fadeInOut": "this.animateType" } }, exportAs: ["cTabPanel"], ngImport: i0, template: '<ng-content />', isInline: true, animations: [
|
|
17416
17442
|
trigger('fadeInOut', [
|
|
17417
17443
|
state('show', style({ opacity: 1 })),
|
|
17418
17444
|
state('hide', style({ opacity: 0 })),
|
|
@@ -17424,6 +17450,7 @@ class TabPanelComponent {
|
|
|
17424
17450
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: TabPanelComponent, decorators: [{
|
|
17425
17451
|
type: Component,
|
|
17426
17452
|
args: [{
|
|
17453
|
+
exportAs: 'cTabPanel',
|
|
17427
17454
|
selector: 'c-tab-panel',
|
|
17428
17455
|
standalone: true,
|
|
17429
17456
|
template: '<ng-content />',
|