@leanix/components 0.4.486 → 0.4.487
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/core-ui/components/ellipsis/ellipsis.component.mjs +4 -1
- package/esm2022/lib/core-ui/components/tokenizer/tokenizer.component.mjs +4 -1
- package/esm2022/lib/forms-ui/components/currency/currency-input.component.mjs +13 -1
- package/esm2022/lib/forms-ui/components/drag-and-drop-list/drag-and-drop-list.component.mjs +9 -1
- package/esm2022/lib/forms-ui/components/form-error/form-error.component.mjs +3 -1
- package/esm2022/lib/forms-ui/components/keyboard-select.directive.mjs +8 -1
- package/esm2022/lib/forms-ui/components/multi-select/multi-select.component.mjs +24 -1
- package/esm2022/lib/forms-ui/components/option-group-dropdown/option-group-dropdown.component.mjs +9 -1
- package/esm2022/lib/forms-ui/components/options-dropdown/options-dropdown.component.mjs +17 -2
- package/esm2022/lib/forms-ui/components/picker/picker.component.mjs +16 -1
- package/esm2022/lib/forms-ui/components/select-list/select-list.component.mjs +9 -1
- package/esm2022/lib/forms-ui/components/single-select/single-select.component.mjs +20 -1
- package/esm2022/lib/forms-ui/models/base-select.directive.mjs +15 -1
- package/fesm2022/leanix-components.mjs +138 -1
- package/fesm2022/leanix-components.mjs.map +1 -1
- package/lib/core-ui/components/ellipsis/ellipsis.component.d.ts +8 -0
- package/lib/core-ui/components/tokenizer/tokenizer.component.d.ts +6 -0
- package/lib/forms-ui/components/currency/currency-input.component.d.ts +14 -0
- package/lib/forms-ui/components/drag-and-drop-list/drag-and-drop-list.component.d.ts +13 -0
- package/lib/forms-ui/components/form-error/form-error.component.d.ts +2 -0
- package/lib/forms-ui/components/keyboard-select.directive.d.ts +9 -0
- package/lib/forms-ui/components/multi-select/multi-select.component.d.ts +28 -0
- package/lib/forms-ui/components/option-group-dropdown/option-group-dropdown.component.d.ts +11 -0
- package/lib/forms-ui/components/options-dropdown/options-dropdown.component.d.ts +17 -0
- package/lib/forms-ui/components/picker/picker.component.d.ts +19 -0
- package/lib/forms-ui/components/select-list/select-list.component.d.ts +13 -0
- package/lib/forms-ui/components/single-select/single-select.component.d.ts +25 -0
- package/lib/forms-ui/models/base-select.directive.d.ts +19 -0
- package/package.json +1 -1
@@ -917,6 +917,7 @@ const LX_ELLIPSIS_DEBOUNCE_ON_RESIZE = new InjectionToken('LX_ELLIPSIS_DEBOUNCE_
|
|
917
917
|
* e.g. <lx-ellipsis style="max-width: 300px" content="Hello World[..]"></lx-ellipsis>.
|
918
918
|
*/
|
919
919
|
class EllipsisComponent {
|
920
|
+
/** @internal */
|
920
921
|
static { this.DEFAULT_RESIZE_DEBOUNCE_MS = 500; }
|
921
922
|
constructor(debounceMsAfterResize, cdRef, hostEl, resizeObserverService, translateService) {
|
922
923
|
this.debounceMsAfterResize = debounceMsAfterResize;
|
@@ -930,6 +931,7 @@ class EllipsisComponent {
|
|
930
931
|
* or if you sanitize the provided content yourself.
|
931
932
|
*/
|
932
933
|
this.escapeHtmlInContent = true;
|
934
|
+
/** @internal */
|
933
935
|
this.isShowingMore$ = new BehaviorSubject(false);
|
934
936
|
this.destroyed$ = new Subject();
|
935
937
|
this.viewChecked$ = new Subject();
|
@@ -993,6 +995,7 @@ class EllipsisComponent {
|
|
993
995
|
ngAfterViewChecked() {
|
994
996
|
this.viewChecked$.next();
|
995
997
|
}
|
998
|
+
/** @internal */
|
996
999
|
onShowMoreToggle() {
|
997
1000
|
this.isShowingMore$.next(!this.isShowingMore$.getValue());
|
998
1001
|
this.cdRef.detectChanges();
|
@@ -2735,10 +2738,12 @@ class TokenizerComponent {
|
|
2735
2738
|
this.destroyRef = destroyRef;
|
2736
2739
|
this.changeDetectorRef = changeDetectorRef;
|
2737
2740
|
this.resizeObserverService = resizeObserverService;
|
2741
|
+
/** @internal */
|
2738
2742
|
this.NAME = 'TokenizerComponent';
|
2739
2743
|
this.overflowItems = signal([]);
|
2740
2744
|
this.overflowItemCount = computed(() => this.overflowItems().length);
|
2741
2745
|
this.showCounter = computed(() => this.active() && this.overflowItemCount() > 0);
|
2746
|
+
/** Can be used to activate & deactivate tokenization */
|
2742
2747
|
this.active = input(true);
|
2743
2748
|
this.active$ = toObservable(this.active);
|
2744
2749
|
this.overflowStartIndex = signal(null);
|
@@ -2768,6 +2773,7 @@ class TokenizerComponent {
|
|
2768
2773
|
this.tokenize(containerWidth);
|
2769
2774
|
});
|
2770
2775
|
}
|
2776
|
+
/** @internal */
|
2771
2777
|
onCounterClicked() {
|
2772
2778
|
const startIndex = this.overflowStartIndex();
|
2773
2779
|
if (typeof startIndex === 'number') {
|
@@ -3044,19 +3050,25 @@ var KeyboardSelectAction;
|
|
3044
3050
|
})(KeyboardSelectAction || (KeyboardSelectAction = {}));
|
3045
3051
|
class KeyboardSelectDirective {
|
3046
3052
|
constructor() {
|
3053
|
+
/** @internal */
|
3047
3054
|
this.cdkOverlayOpenState = new ReplaySubject(1);
|
3055
|
+
/** @internal */
|
3048
3056
|
this.cdkOverlayOpen$ = this.cdkOverlayOpenState.asObservable().pipe(startWith(false), distinctUntilChanged());
|
3057
|
+
/** @internal */
|
3049
3058
|
this.overlayPositioning = false;
|
3050
3059
|
this.keyboardSelectAction = new Observable();
|
3051
3060
|
this.selectedItemIndexChange = new EventEmitter(true); // TODO: this is just index change from navigating (highlighting)
|
3061
|
+
/** @internal */
|
3052
3062
|
this.destroyed$ = new Subject();
|
3053
3063
|
// Beware: If the list of items is empty, there might not come a -1 because Angular only updates the ViewChildren lazily.
|
3054
3064
|
this.selectedItemIndex$ = new BehaviorSubject(-1);
|
3055
3065
|
this.selectedItemSubject$ = new BehaviorSubject(null);
|
3056
3066
|
}
|
3067
|
+
/** @internal */
|
3057
3068
|
get selectedItem$() {
|
3058
3069
|
return this.selectedItemSubject$.asObservable();
|
3059
3070
|
}
|
3071
|
+
/** @internal */
|
3060
3072
|
select(index) {
|
3061
3073
|
this.selectedItemIndex$.next(index);
|
3062
3074
|
}
|
@@ -3085,6 +3097,7 @@ class KeyboardSelectDirective {
|
|
3085
3097
|
.pipe(filter((item) => !!item), distinctUntilChanged(), takeUntil(this.destroyed$))
|
3086
3098
|
.subscribe((item) => item?.scrollToItem());
|
3087
3099
|
}
|
3100
|
+
/** @internal */
|
3088
3101
|
isItemSelected(item, selectedItem) {
|
3089
3102
|
return selectedItem && item === selectedItem.nativeElement;
|
3090
3103
|
}
|
@@ -4018,8 +4031,11 @@ class CurrencyInputComponent {
|
|
4018
4031
|
this.markInvalid = false;
|
4019
4032
|
this.onFocusLost = new EventEmitter();
|
4020
4033
|
this.onChange = new EventEmitter();
|
4034
|
+
/** @internal */
|
4021
4035
|
this.showCurrencyInput = false;
|
4036
|
+
/** @internal */
|
4022
4037
|
this.dataValue$ = new ReplaySubject();
|
4038
|
+
/** @internal */
|
4023
4039
|
this.destroyed$ = new Subject();
|
4024
4040
|
}
|
4025
4041
|
ngOnInit() {
|
@@ -4037,6 +4053,7 @@ class CurrencyInputComponent {
|
|
4037
4053
|
ngOnDestroy() {
|
4038
4054
|
this.destroyed$.next();
|
4039
4055
|
}
|
4056
|
+
/** @internal */
|
4040
4057
|
valueChanged(value) {
|
4041
4058
|
if (typeof value === 'string') {
|
4042
4059
|
const invalidSeparator = this.decimalSeparator === '.' ? ',' : '.';
|
@@ -4047,30 +4064,38 @@ class CurrencyInputComponent {
|
|
4047
4064
|
this.onChange.emit(value);
|
4048
4065
|
this.propagateChange(value);
|
4049
4066
|
}
|
4067
|
+
/** @internal */
|
4050
4068
|
onBlur() {
|
4051
4069
|
this.showCurrencyInput = false;
|
4052
4070
|
this.onFocusLost.emit(true);
|
4053
4071
|
}
|
4072
|
+
/** @internal */
|
4054
4073
|
focusCurrencyInput() {
|
4055
4074
|
this.showCurrencyInput = true;
|
4056
4075
|
this.changeDetector.detectChanges();
|
4057
4076
|
this.currencyInput.nativeElement.focus();
|
4058
4077
|
this.currencyInput.nativeElement.setSelectionRange(0, 0);
|
4059
4078
|
}
|
4079
|
+
/** @internal */
|
4060
4080
|
shouldRejectKey(event) {
|
4061
4081
|
if (this.fieldDefinitionType === 'DOUBLE' && event.key === this.decimalSeparator) {
|
4062
4082
|
return this.containsSeparators(this.currencyInput.nativeElement.value);
|
4063
4083
|
}
|
4064
4084
|
return !this.allowedCharacters.test(event.key);
|
4065
4085
|
}
|
4086
|
+
/** @internal */
|
4066
4087
|
propagateChange(_newValue) { }
|
4088
|
+
/** @internal */
|
4067
4089
|
writeValue(newValue) {
|
4068
4090
|
this.dataValue$.next(newValue);
|
4069
4091
|
}
|
4092
|
+
/** @internal */
|
4070
4093
|
registerOnChange(fn) {
|
4071
4094
|
this.propagateChange = fn;
|
4072
4095
|
}
|
4096
|
+
/** @internal */
|
4073
4097
|
registerOnTouched(_fn) { }
|
4098
|
+
/** @internal */
|
4074
4099
|
setDisabledState(disabled) {
|
4075
4100
|
this.disabled = disabled;
|
4076
4101
|
}
|
@@ -5878,6 +5903,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
|
|
5878
5903
|
|
5879
5904
|
class DragAndDropListComponent {
|
5880
5905
|
constructor() {
|
5906
|
+
/** @internal */
|
5881
5907
|
this.NAME = DRAG_AND_DROP_LIST_TRANSLATION_NAME;
|
5882
5908
|
/**
|
5883
5909
|
* Override the global label font weight of 700
|
@@ -5893,9 +5919,12 @@ class DragAndDropListComponent {
|
|
5893
5919
|
this.moveItem = new EventEmitter();
|
5894
5920
|
/**
|
5895
5921
|
* TODO: extract state about keyboard sorting into KeyboardSortableListDirective
|
5922
|
+
* @internal
|
5896
5923
|
*/
|
5897
5924
|
this.isSortingByKeyboard = false;
|
5925
|
+
/** @internal */
|
5898
5926
|
this.keyboardItemBeingSorted = undefined;
|
5927
|
+
/** @internal */
|
5899
5928
|
this.allItemsData = [];
|
5900
5929
|
}
|
5901
5930
|
ngAfterContentInit() {
|
@@ -5905,6 +5934,7 @@ class DragAndDropListComponent {
|
|
5905
5934
|
ngAfterViewInit() {
|
5906
5935
|
this.keyboardSortableItems$ = this._keyboardSortableItems.changes.pipe(startWith(this._keyboardSortableItems), map((items) => items.toArray()));
|
5907
5936
|
}
|
5937
|
+
/** @internal */
|
5908
5938
|
emitContentChildAction(action) {
|
5909
5939
|
this._items.find((itemComponent) => itemComponent.item === action.item)?.action.emit(action);
|
5910
5940
|
}
|
@@ -5916,10 +5946,12 @@ class DragAndDropListComponent {
|
|
5916
5946
|
* https://material.angular.io/cdk/drag-drop/overview
|
5917
5947
|
*
|
5918
5948
|
* You're supposed to update the data in the parent and pass the new items as input.
|
5949
|
+
* @internal
|
5919
5950
|
*/
|
5920
5951
|
drop(event) {
|
5921
5952
|
this.sortItems(event.container.data, event.item.data, event.previousIndex, event.currentIndex);
|
5922
5953
|
}
|
5954
|
+
/** @internal */
|
5923
5955
|
dropToIndexAfterArrowKey(item, previousIndex, currentIndex) {
|
5924
5956
|
if (this.isSortingByKeyboard) {
|
5925
5957
|
this.sortItems(this._items, item, previousIndex, currentIndex);
|
@@ -5930,6 +5962,7 @@ class DragAndDropListComponent {
|
|
5930
5962
|
this.moveToIndex.emit({ index: currentIndex, previous: previousIndex });
|
5931
5963
|
this.moveItem.emit({ item, index: currentIndex });
|
5932
5964
|
}
|
5965
|
+
/** @internal */
|
5933
5966
|
trackByItem(_index, item) {
|
5934
5967
|
return item.item;
|
5935
5968
|
}
|
@@ -6041,6 +6074,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
|
|
6041
6074
|
|
6042
6075
|
class FormErrorComponent {
|
6043
6076
|
constructor() {
|
6077
|
+
/** @internal */
|
6044
6078
|
this.translationKeys = [];
|
6045
6079
|
}
|
6046
6080
|
ngOnInit() {
|
@@ -6054,6 +6088,7 @@ class FormErrorComponent {
|
|
6054
6088
|
ngOnDestroy() {
|
6055
6089
|
this.formSubscription.unsubscribe();
|
6056
6090
|
}
|
6091
|
+
/** @internal */
|
6057
6092
|
getTranslationKeys() {
|
6058
6093
|
const formControl = this.form.get(this.controlName);
|
6059
6094
|
if (formControl && formControl.errors) {
|
@@ -6198,16 +6233,26 @@ class BaseSelectDirective {
|
|
6198
6233
|
this.query = new EventEmitter();
|
6199
6234
|
this.close = new EventEmitter();
|
6200
6235
|
this.open = new EventEmitter();
|
6236
|
+
/** @internal */
|
6201
6237
|
this.query$ = this.query.asObservable();
|
6238
|
+
/** @internal */
|
6202
6239
|
this.dropdownDirection$ = new BehaviorSubject('BOTTOM');
|
6240
|
+
/** @internal */
|
6203
6241
|
this.dropdownOpen = false;
|
6204
6242
|
// an axis, where the negative range represents the selected item in the selection
|
6243
|
+
/** @internal */
|
6205
6244
|
this.selectionKeyboardSelectAction$ = new Subject();
|
6245
|
+
/** @internal */
|
6206
6246
|
this.optionsKeyboardSelectAction$ = new Subject();
|
6247
|
+
/** @internal */
|
6207
6248
|
this.virtualCursorPosition = 0;
|
6249
|
+
/** @internal */
|
6208
6250
|
this.inputWasFocused = false;
|
6251
|
+
/** @internal */
|
6209
6252
|
this.queryControl = new UntypedFormControl('');
|
6253
|
+
/** @internal */
|
6210
6254
|
this.isInputFocused = false;
|
6255
|
+
/** @internal */
|
6211
6256
|
this.destroyed$ = new Subject();
|
6212
6257
|
}
|
6213
6258
|
ngAfterViewInit() {
|
@@ -6258,6 +6303,7 @@ class BaseSelectDirective {
|
|
6258
6303
|
}
|
6259
6304
|
/**
|
6260
6305
|
* @param toggle is true when the caret to the right in a select component was clicked
|
6306
|
+
* @internal
|
6261
6307
|
*/
|
6262
6308
|
handleClick(toggle) {
|
6263
6309
|
if (toggle || !this.dropdownOpen || !this.allowQuery) {
|
@@ -6265,15 +6311,18 @@ class BaseSelectDirective {
|
|
6265
6311
|
}
|
6266
6312
|
this.focus();
|
6267
6313
|
}
|
6314
|
+
/** @internal */
|
6268
6315
|
handleBackdropClick(event) {
|
6269
6316
|
event.stopPropagation();
|
6270
6317
|
this.closeInput();
|
6271
6318
|
}
|
6319
|
+
/** @internal */
|
6272
6320
|
closeInput() {
|
6273
6321
|
this.open.next(false);
|
6274
6322
|
this.resetInput();
|
6275
6323
|
this.query.emit('');
|
6276
6324
|
}
|
6325
|
+
/** @internal */
|
6277
6326
|
openInput() {
|
6278
6327
|
this.open.next(true);
|
6279
6328
|
}
|
@@ -6468,6 +6517,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
|
|
6468
6517
|
}] } });
|
6469
6518
|
|
6470
6519
|
class MultiSelectComponent extends BaseSelectDirective {
|
6520
|
+
/** @internal */
|
6471
6521
|
static isStillPossibleMoveToLeft(eventSet) {
|
6472
6522
|
return (!(eventSet.virtualCursorPosition === 0 &&
|
6473
6523
|
eventSet.inputCursorPosition === 0 &&
|
@@ -6478,9 +6528,11 @@ class MultiSelectComponent extends BaseSelectDirective {
|
|
6478
6528
|
eventSet.selectionLength > 0 &&
|
6479
6529
|
Math.abs(eventSet.virtualCursorPosition) === eventSet.selectionLength));
|
6480
6530
|
}
|
6531
|
+
/** @internal */
|
6481
6532
|
static isMovingfromZeroToRight(eventSet) {
|
6482
6533
|
return eventSet.virtualCursorPosition === 0 && eventSet.inputCursorPosition === 0 && eventSet.event.keyCode === ARROW_RIGHT;
|
6483
6534
|
}
|
6535
|
+
/** @internal */
|
6484
6536
|
static calculateNewCursorPostionOnKeyboardNavigation(cursorPosition, keyCode) {
|
6485
6537
|
switch (keyCode) {
|
6486
6538
|
case ARROW_LEFT:
|
@@ -6492,6 +6544,7 @@ class MultiSelectComponent extends BaseSelectDirective {
|
|
6492
6544
|
}
|
6493
6545
|
return cursorPosition;
|
6494
6546
|
}
|
6547
|
+
/** @internal */
|
6495
6548
|
static getKeyboardSelectAction(cursorPosition, keyCode) {
|
6496
6549
|
if (cursorPosition <= -1 && keyCode === ARROW_RIGHT) {
|
6497
6550
|
return KeyboardSelectAction.NEXT;
|
@@ -6507,9 +6560,11 @@ class MultiSelectComponent extends BaseSelectDirective {
|
|
6507
6560
|
}
|
6508
6561
|
return null;
|
6509
6562
|
}
|
6563
|
+
/** @internal */
|
6510
6564
|
get dropdownTmpl() {
|
6511
6565
|
return this.explicitDropdown || this.implicitDropdown;
|
6512
6566
|
}
|
6567
|
+
/** @internal */
|
6513
6568
|
get tokenize() {
|
6514
6569
|
return this.canTokenize && !this.isInputFocused && !this.dropdownOpen;
|
6515
6570
|
}
|
@@ -6522,10 +6577,14 @@ class MultiSelectComponent extends BaseSelectDirective {
|
|
6522
6577
|
this.dropdownWidthScale = '1x';
|
6523
6578
|
this.selectionChange = new EventEmitter();
|
6524
6579
|
this.blur = new EventEmitter();
|
6580
|
+
/** @internal */
|
6525
6581
|
this.destroyed$ = new Subject();
|
6582
|
+
/** @internal */
|
6526
6583
|
this.isInputFocusedViaTab = false;
|
6584
|
+
/** @internal */
|
6527
6585
|
this.canTokenize = true;
|
6528
6586
|
}
|
6587
|
+
/** @internal */
|
6529
6588
|
get dropdownWidth() {
|
6530
6589
|
switch (this.dropdownWidthScale) {
|
6531
6590
|
case '1x':
|
@@ -6536,22 +6595,27 @@ class MultiSelectComponent extends BaseSelectDirective {
|
|
6536
6595
|
return '200%';
|
6537
6596
|
}
|
6538
6597
|
}
|
6598
|
+
/** @internal */
|
6539
6599
|
resetInput() {
|
6540
6600
|
this.queryInput.resetInput();
|
6541
6601
|
this.queryControl.setValue('');
|
6542
6602
|
}
|
6603
|
+
/** @internal */
|
6543
6604
|
focus() {
|
6544
6605
|
this.queryInput.focusInput();
|
6545
6606
|
}
|
6607
|
+
/** @internal */
|
6546
6608
|
focusAndOpen() {
|
6547
6609
|
this.queryInput.focusInput();
|
6548
6610
|
this.open.next(true);
|
6549
6611
|
}
|
6612
|
+
/** @internal */
|
6550
6613
|
onFocus() {
|
6551
6614
|
this.isInputFocused = true;
|
6552
6615
|
this.scrollToEndOfSelection();
|
6553
6616
|
this.canTokenize = false;
|
6554
6617
|
}
|
6618
|
+
/** @internal */
|
6555
6619
|
onBlur() {
|
6556
6620
|
this.isInputFocused = false;
|
6557
6621
|
this.isInputFocusedViaTab = false;
|
@@ -6645,6 +6709,7 @@ class MultiSelectComponent extends BaseSelectDirective {
|
|
6645
6709
|
* Adds the given option to the selection and, by default, resets the input field.
|
6646
6710
|
* @param option The option to add to the selection.
|
6647
6711
|
* @param keepSearchQueryAndScrollPosition If true, the search query and scroll position of the dropdown will be kept, unless there are no options left.
|
6712
|
+
* @internal
|
6648
6713
|
*/
|
6649
6714
|
addItemToSelection(option, keepSearchQueryAndScrollPosition = false) {
|
6650
6715
|
if (option !== null) {
|
@@ -6657,6 +6722,7 @@ class MultiSelectComponent extends BaseSelectDirective {
|
|
6657
6722
|
}
|
6658
6723
|
this.resetSelectState();
|
6659
6724
|
}
|
6725
|
+
/** @internal */
|
6660
6726
|
removeItem(optionToRemove) {
|
6661
6727
|
if (this.disabled) {
|
6662
6728
|
return;
|
@@ -6674,17 +6740,23 @@ class MultiSelectComponent extends BaseSelectDirective {
|
|
6674
6740
|
this.virtualCursorPosition++;
|
6675
6741
|
}
|
6676
6742
|
}
|
6743
|
+
/** @internal */
|
6677
6744
|
propagateChange(_value) { }
|
6745
|
+
/** @internal */
|
6678
6746
|
writeValue(value) {
|
6679
6747
|
this.selection = value;
|
6680
6748
|
}
|
6749
|
+
/** @internal */
|
6681
6750
|
registerOnChange(fn) {
|
6682
6751
|
this.propagateChange = fn;
|
6683
6752
|
}
|
6753
|
+
/** @internal */
|
6684
6754
|
registerOnTouched(_fn) { }
|
6755
|
+
/** @internal */
|
6685
6756
|
setDisabledState(isDisabled) {
|
6686
6757
|
this.disabled = isDisabled;
|
6687
6758
|
}
|
6759
|
+
/** @internal */
|
6688
6760
|
focusedViaTab() {
|
6689
6761
|
this.isInputFocusedViaTab = true;
|
6690
6762
|
}
|
@@ -6784,6 +6856,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
|
|
6784
6856
|
class OptionGroupDropdownComponent extends KeyboardSelectDirective {
|
6785
6857
|
constructor() {
|
6786
6858
|
super(...arguments);
|
6859
|
+
/** @internal */
|
6787
6860
|
this.NAME = 'OptionGroupDropdownComponent';
|
6788
6861
|
this.optionGroups = [];
|
6789
6862
|
this.showCreateNewOption = false;
|
@@ -6794,30 +6867,37 @@ class OptionGroupDropdownComponent extends KeyboardSelectDirective {
|
|
6794
6867
|
this.onItemSelected = new EventEmitter();
|
6795
6868
|
this.containerScrolled = new EventEmitter();
|
6796
6869
|
this.createNewOption = new EventEmitter();
|
6870
|
+
/** @internal */
|
6797
6871
|
this.isTopDropdown = false;
|
6798
6872
|
}
|
6873
|
+
/** @internal */
|
6799
6874
|
get isNewItem() {
|
6800
6875
|
const options = this.optionGroups?.reduce((flatOptions, optionGroup) => flatOptions.concat(optionGroup.options), []) ??
|
6801
6876
|
[];
|
6802
6877
|
return BasicDropdownComponent.isNewItem(options, this.newOptionLabel ?? '', this.labelKey);
|
6803
6878
|
}
|
6879
|
+
/** @internal */
|
6804
6880
|
selectOption(option) {
|
6805
6881
|
this.onItemSelected.emit(option);
|
6806
6882
|
}
|
6883
|
+
/** @internal */
|
6807
6884
|
trackByLabel(index, optionGroup) {
|
6808
6885
|
return optionGroup.label + index;
|
6809
6886
|
}
|
6887
|
+
/** @internal */
|
6810
6888
|
onCreateNewOption() {
|
6811
6889
|
if (!this.loading && this.newOptionLabel) {
|
6812
6890
|
this.createNewOption.emit(this.newOptionLabel);
|
6813
6891
|
}
|
6814
6892
|
}
|
6893
|
+
/** @internal */
|
6815
6894
|
trackByValue(_index, option) {
|
6816
6895
|
if (this.trackByProperty) {
|
6817
6896
|
return option[this.trackByProperty];
|
6818
6897
|
}
|
6819
6898
|
return option.value;
|
6820
6899
|
}
|
6900
|
+
/** @internal */
|
6821
6901
|
onPositionChange(event) {
|
6822
6902
|
this.isTopDropdown = event.connectionPair.originY === 'top';
|
6823
6903
|
}
|
@@ -6878,9 +6958,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
|
|
6878
6958
|
}] } });
|
6879
6959
|
|
6880
6960
|
class OptionsDropdownComponent {
|
6961
|
+
/** @internal */
|
6881
6962
|
get displayStyle() {
|
6882
6963
|
return this.isFlexEnabledTriggerContainer ? 'block' : 'inline-block';
|
6883
6964
|
}
|
6965
|
+
/** @internal */
|
6884
6966
|
get overlayPositions() {
|
6885
6967
|
return [
|
6886
6968
|
{
|
@@ -6897,6 +6979,7 @@ class OptionsDropdownComponent {
|
|
6897
6979
|
}
|
6898
6980
|
];
|
6899
6981
|
}
|
6982
|
+
/** @internal */
|
6900
6983
|
set open(value) {
|
6901
6984
|
if (this.disabled) {
|
6902
6985
|
return;
|
@@ -6916,15 +6999,19 @@ class OptionsDropdownComponent {
|
|
6916
6999
|
}
|
6917
7000
|
this.changeDetection.markForCheck();
|
6918
7001
|
}
|
7002
|
+
/** @internal */
|
6919
7003
|
get open() {
|
6920
7004
|
return this._open;
|
6921
7005
|
}
|
7006
|
+
/** @internal */
|
6922
7007
|
get options() {
|
6923
7008
|
return this._options?.toArray() || [];
|
6924
7009
|
}
|
7010
|
+
/** @internal */
|
6925
7011
|
get optionIds() {
|
6926
7012
|
return this.options.map((o) => o.optionId);
|
6927
7013
|
}
|
7014
|
+
/** @internal */
|
6928
7015
|
get lxButton() {
|
6929
7016
|
return this.trigger?.nativeElement();
|
6930
7017
|
}
|
@@ -6932,6 +7019,7 @@ class OptionsDropdownComponent {
|
|
6932
7019
|
this.changeDetection = changeDetection;
|
6933
7020
|
this.scrollStrategies = scrollStrategies;
|
6934
7021
|
this.renderer = renderer;
|
7022
|
+
/** @internal */
|
6935
7023
|
this.NAME = 'OptionsDropdownComponent';
|
6936
7024
|
this.align = 'right';
|
6937
7025
|
this.closeOnScroll = false;
|
@@ -6941,6 +7029,7 @@ class OptionsDropdownComponent {
|
|
6941
7029
|
this.overlayPositioning = false;
|
6942
7030
|
this.dropdownClass = '';
|
6943
7031
|
this.isFlexEnabledTriggerContainer = false;
|
7032
|
+
/** @internal */
|
6944
7033
|
this.overlayScrollStrategy = this.closeOnScroll ? this.scrollStrategies.close() : this.scrollStrategies.reposition();
|
6945
7034
|
this.opened = new EventEmitter();
|
6946
7035
|
this.closed = new EventEmitter();
|
@@ -6948,6 +7037,7 @@ class OptionsDropdownComponent {
|
|
6948
7037
|
this.highlightedOptionIndex$ = new BehaviorSubject(0);
|
6949
7038
|
this._open = false;
|
6950
7039
|
this.isSubdropdownExpanded = false;
|
7040
|
+
/** @internal */
|
6951
7041
|
this.destroyed$ = new Subject();
|
6952
7042
|
this.listboxId = uniqueId('listbox');
|
6953
7043
|
}
|
@@ -7016,10 +7106,12 @@ class OptionsDropdownComponent {
|
|
7016
7106
|
this.destroyed$.next();
|
7017
7107
|
this.destroyed$.complete();
|
7018
7108
|
}
|
7109
|
+
/** @internal */
|
7019
7110
|
closeDropdown() {
|
7020
7111
|
this.open = false;
|
7021
7112
|
this.closed.emit();
|
7022
7113
|
}
|
7114
|
+
/** @internal */
|
7023
7115
|
toggleOpen() {
|
7024
7116
|
this.open = !this.open;
|
7025
7117
|
if (!this.open) {
|
@@ -7089,6 +7181,7 @@ class OptionsDropdownComponent {
|
|
7089
7181
|
this.renderer.setAttribute(this.lxButton, 'aria-controls', this.listboxId);
|
7090
7182
|
this.renderer.setAttribute(this.lxButton, 'aria-expanded', 'false');
|
7091
7183
|
}
|
7184
|
+
/** @internal */
|
7092
7185
|
handleOptionKeyDown(event) {
|
7093
7186
|
// In order to keep the centralized keyboard event management logic from `KeyboardActionSourceDirective`
|
7094
7187
|
// we duplicate the option event here and trigger it again from lxButton.
|
@@ -7133,7 +7226,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
|
|
7133
7226
|
}], trigger: [{
|
7134
7227
|
type: ContentChild,
|
7135
7228
|
args: [KeyboardActionSourceDirective]
|
7136
|
-
}],
|
7229
|
+
}],
|
7230
|
+
/** @internal */
|
7231
|
+
_options: [{
|
7137
7232
|
type: ContentChildren,
|
7138
7233
|
args: [OptionComponent, { descendants: true }]
|
7139
7234
|
}], opened: [{
|
@@ -7409,22 +7504,27 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
|
|
7409
7504
|
* ```
|
7410
7505
|
*/
|
7411
7506
|
class PickerComponent {
|
7507
|
+
/** @internal */
|
7412
7508
|
get activeDescendantsId() {
|
7413
7509
|
return this._activeDescendantsId;
|
7414
7510
|
}
|
7511
|
+
/** @internal */
|
7415
7512
|
set activeDescendantsId(value) {
|
7416
7513
|
this._activeDescendantsId = value;
|
7417
7514
|
this.cdRef.markForCheck();
|
7418
7515
|
}
|
7516
|
+
/** @internal */
|
7419
7517
|
get open() {
|
7420
7518
|
return this._open;
|
7421
7519
|
}
|
7520
|
+
/** @internal */
|
7422
7521
|
set open(value) {
|
7423
7522
|
this._open = value;
|
7424
7523
|
this.cdRef.markForCheck();
|
7425
7524
|
}
|
7426
7525
|
/**
|
7427
7526
|
* Returns a negative margin, that is used to move the picker dropdown to the left side of the picker trigger.
|
7527
|
+
* @internal
|
7428
7528
|
*/
|
7429
7529
|
get leftOffset() {
|
7430
7530
|
const dropdownWidth = 185;
|
@@ -7434,11 +7534,16 @@ class PickerComponent {
|
|
7434
7534
|
this.dir = dir;
|
7435
7535
|
this.cdRef = cdRef;
|
7436
7536
|
this.openDirection = 'right';
|
7537
|
+
/** @internal */
|
7437
7538
|
this._isFormControl = false;
|
7539
|
+
/** @internal */
|
7438
7540
|
this._open = false;
|
7541
|
+
/** @internal */
|
7439
7542
|
this._lastSelectWasByKeyManager = false;
|
7543
|
+
/** @internal */
|
7440
7544
|
this.destroyed$ = new Subject();
|
7441
7545
|
}
|
7546
|
+
/** @internal */
|
7442
7547
|
manageKeyboardEvents(event) {
|
7443
7548
|
if (this.open) {
|
7444
7549
|
const activeIndex = this.keyManager.activeItemIndex || 0;
|
@@ -7512,10 +7617,12 @@ class PickerComponent {
|
|
7512
7617
|
ngOnDestroy() {
|
7513
7618
|
this.destroyed$.next();
|
7514
7619
|
}
|
7620
|
+
/** @internal */
|
7515
7621
|
closePicker() {
|
7516
7622
|
this.setActivePickerOption(-1);
|
7517
7623
|
this.open = false;
|
7518
7624
|
}
|
7625
|
+
/** @internal */
|
7519
7626
|
toggleOpen() {
|
7520
7627
|
this.open = !this.open;
|
7521
7628
|
if (this.open) {
|
@@ -7533,13 +7640,16 @@ class PickerComponent {
|
|
7533
7640
|
}
|
7534
7641
|
}
|
7535
7642
|
//#region Angular Forms API. This is only used when using the Picker inside a FormGroup
|
7643
|
+
/** @internal */
|
7536
7644
|
writeValue(value) {
|
7537
7645
|
this.options?.toArray().forEach((option) => (option.selected = option.value === value));
|
7538
7646
|
}
|
7647
|
+
/** @internal */
|
7539
7648
|
registerOnChange(fn) {
|
7540
7649
|
this.propagateChange = fn;
|
7541
7650
|
this._isFormControl = true;
|
7542
7651
|
}
|
7652
|
+
/** @internal */
|
7543
7653
|
registerOnTouched(fn) {
|
7544
7654
|
this.onTouched = fn;
|
7545
7655
|
}
|
@@ -7700,18 +7810,24 @@ class SelectListComponent extends BaseSelectDirective {
|
|
7700
7810
|
this.options = [];
|
7701
7811
|
this.selectionChange = new EventEmitter();
|
7702
7812
|
this.onChooseItem = new EventEmitter();
|
7813
|
+
/** @internal */
|
7703
7814
|
this.highlightedIndex = 0;
|
7815
|
+
/** @internal */
|
7704
7816
|
this.destroyed$ = new Subject();
|
7705
7817
|
}
|
7818
|
+
/** @internal */
|
7706
7819
|
get dropdownTmpl() {
|
7707
7820
|
return this.explicitDropdown || this.implicitDropdown;
|
7708
7821
|
}
|
7822
|
+
/** @internal */
|
7709
7823
|
resetInput() {
|
7710
7824
|
this.queryControl.reset('', { emitEvent: false });
|
7711
7825
|
}
|
7826
|
+
/** @internal */
|
7712
7827
|
focus() {
|
7713
7828
|
this.searchInput.nativeElement.focus();
|
7714
7829
|
}
|
7830
|
+
/** @internal */
|
7715
7831
|
focusAndOpen() {
|
7716
7832
|
this.focus();
|
7717
7833
|
this.open.next(true);
|
@@ -7793,6 +7909,7 @@ class SelectListComponent extends BaseSelectDirective {
|
|
7793
7909
|
});
|
7794
7910
|
this.focusAndOpen();
|
7795
7911
|
}
|
7912
|
+
/** @internal */
|
7796
7913
|
selectOption(index) {
|
7797
7914
|
if (this.determineHighlightIndex(this.options, this.selection) === index) {
|
7798
7915
|
this.onChooseItem.emit(this.selection.id);
|
@@ -7805,6 +7922,7 @@ class SelectListComponent extends BaseSelectDirective {
|
|
7805
7922
|
this.dropdownComponent?.select(index);
|
7806
7923
|
}
|
7807
7924
|
}
|
7925
|
+
/** @internal */
|
7808
7926
|
searchKeyChanged(event) {
|
7809
7927
|
if (event.target.value === '' && !['ArrowUp', 'ArrowDown'].includes(event.key)) {
|
7810
7928
|
this.highlightedIndex = this.determineHighlightIndex(this.dropdownComponent.options, this.selection);
|
@@ -7888,6 +8006,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
|
|
7888
8006
|
* 2. Use the component in your template.
|
7889
8007
|
*/
|
7890
8008
|
class SingleSelectComponent extends BaseSelectDirective {
|
8009
|
+
/** @internal */
|
7891
8010
|
static calculateNewCursorPostionOnKeyboardNavigation(cursorPosition, keyCode) {
|
7892
8011
|
switch (keyCode) {
|
7893
8012
|
case ARROW_LEFT:
|
@@ -7899,6 +8018,7 @@ class SingleSelectComponent extends BaseSelectDirective {
|
|
7899
8018
|
}
|
7900
8019
|
return cursorPosition;
|
7901
8020
|
}
|
8021
|
+
/** @internal */
|
7902
8022
|
static getKeyboardSelectAction(cursorPosition, keyCode) {
|
7903
8023
|
if (cursorPosition <= -1 && keyCode === ARROW_RIGHT) {
|
7904
8024
|
return KeyboardSelectAction.NEXT;
|
@@ -7914,9 +8034,11 @@ class SingleSelectComponent extends BaseSelectDirective {
|
|
7914
8034
|
}
|
7915
8035
|
return null;
|
7916
8036
|
}
|
8037
|
+
/** @internal */
|
7917
8038
|
get selectedOptionTmpl() {
|
7918
8039
|
return this.explicitSelectedOption || this.implicitSelectedOption;
|
7919
8040
|
}
|
8041
|
+
/** @internal */
|
7920
8042
|
get dropdownTmpl() {
|
7921
8043
|
return this.explicitDropdown || this.implicitDropdown;
|
7922
8044
|
}
|
@@ -7933,9 +8055,12 @@ class SingleSelectComponent extends BaseSelectDirective {
|
|
7933
8055
|
this.allowClear = true;
|
7934
8056
|
this.tabIndex = 0;
|
7935
8057
|
this.markInvalid = false;
|
8058
|
+
/** @internal */
|
7936
8059
|
this.destroyed$ = new Subject();
|
8060
|
+
/** @internal */
|
7937
8061
|
this.isInputFocusedViaTab = false;
|
7938
8062
|
}
|
8063
|
+
/** @internal */
|
7939
8064
|
get cursorStyle() {
|
7940
8065
|
if (this.disabled) {
|
7941
8066
|
return 'default';
|
@@ -7947,6 +8072,7 @@ class SingleSelectComponent extends BaseSelectDirective {
|
|
7947
8072
|
return 'pointer';
|
7948
8073
|
}
|
7949
8074
|
}
|
8075
|
+
/** @internal */
|
7950
8076
|
get dropdownWidth() {
|
7951
8077
|
switch (this.dropdownWidthScale) {
|
7952
8078
|
case '1x':
|
@@ -7957,12 +8083,15 @@ class SingleSelectComponent extends BaseSelectDirective {
|
|
7957
8083
|
return '200%';
|
7958
8084
|
}
|
7959
8085
|
}
|
8086
|
+
/** @internal */
|
7960
8087
|
resetInput() {
|
7961
8088
|
this.queryControl.reset('', { emitEvent: false });
|
7962
8089
|
}
|
8090
|
+
/** @internal */
|
7963
8091
|
focus() {
|
7964
8092
|
this.queryInput.nativeElement.focus();
|
7965
8093
|
}
|
8094
|
+
/** @internal */
|
7966
8095
|
focusAndOpen() {
|
7967
8096
|
this.queryInput.nativeElement.focus();
|
7968
8097
|
this.open.next(true);
|
@@ -8055,6 +8184,7 @@ class SingleSelectComponent extends BaseSelectDirective {
|
|
8055
8184
|
});
|
8056
8185
|
keyboardEvents.openOnArrowDown$.subscribe(() => this.open.next(true));
|
8057
8186
|
}
|
8187
|
+
/** @internal */
|
8058
8188
|
selectOption(option) {
|
8059
8189
|
this.selection = option;
|
8060
8190
|
this.selectionChange.emit(option);
|
@@ -8066,6 +8196,7 @@ class SingleSelectComponent extends BaseSelectDirective {
|
|
8066
8196
|
this.open.next(false);
|
8067
8197
|
});
|
8068
8198
|
}
|
8199
|
+
/** @internal */
|
8069
8200
|
removeSelection() {
|
8070
8201
|
this.selection = null;
|
8071
8202
|
this.cd.markForCheck();
|
@@ -8074,17 +8205,23 @@ class SingleSelectComponent extends BaseSelectDirective {
|
|
8074
8205
|
this.propagateChange(this.selection);
|
8075
8206
|
this.resetSelectState();
|
8076
8207
|
}
|
8208
|
+
/** @internal */
|
8077
8209
|
propagateChange(_value) { }
|
8210
|
+
/** @internal */
|
8078
8211
|
writeValue(newSelection) {
|
8079
8212
|
this.selection = newSelection;
|
8080
8213
|
}
|
8214
|
+
/** @internal */
|
8081
8215
|
setDisabledState(isDisabled) {
|
8082
8216
|
this.disabled = isDisabled;
|
8083
8217
|
}
|
8218
|
+
/** @internal */
|
8084
8219
|
registerOnChange(fn) {
|
8085
8220
|
this.propagateChange = fn;
|
8086
8221
|
}
|
8222
|
+
/** @internal */
|
8087
8223
|
registerOnTouched(_fn) { }
|
8224
|
+
/** @internal */
|
8088
8225
|
focusedViaTab() {
|
8089
8226
|
this.isInputFocusedViaTab = true;
|
8090
8227
|
}
|