@fundamental-ngx/platform 0.43.50 → 0.43.52
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/esm2020/form/auto-complete/auto-complete.directive.mjs +47 -20
- package/esm2020/form/combobox/commons/base-combobox.mjs +4 -2
- package/esm2020/form/multi-combobox/commons/base-multi-combobox.mjs +4 -2
- package/fesm2015/fundamental-ngx-platform-form.mjs +52 -22
- package/fesm2015/fundamental-ngx-platform-form.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-platform-form.mjs +52 -22
- package/fesm2020/fundamental-ngx-platform-form.mjs.map +1 -1
- package/form/auto-complete/auto-complete.directive.d.ts +7 -0
- package/fundamental-ngx-platform-v0.43.52.tgz +0 -0
- package/package.json +4 -4
- package/schematics/ng-add/index.js +1 -1
- package/fundamental-ngx-platform-v0.43.50.tgz +0 -0
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { InjectionToken, Directive, Input, Component, ChangeDetectionStrategy, ViewEncapsulation, ContentChild, Injectable, Inject, forwardRef, isDevMode, EventEmitter, TemplateRef, ElementRef, Optional, Self, SkipSelf, Output, ViewChild, ContentChildren, Host, Attribute, ViewChildren, HostListener, NgModule, Injector, Pipe, LOCALE_ID } from '@angular/core';
|
|
2
|
+
import { InjectionToken, Directive, Input, Component, ChangeDetectionStrategy, ViewEncapsulation, ContentChild, Injectable, Inject, forwardRef, isDevMode, EventEmitter, TemplateRef, ElementRef, Optional, Self, SkipSelf, Output, ViewChild, ContentChildren, Host, Attribute, ViewChildren, HostListener, NgModule, inject, NgZone, Injector, Pipe, LOCALE_ID } from '@angular/core';
|
|
3
3
|
import * as i1$1 from '@angular/forms';
|
|
4
4
|
import { Validators, FormControl, FormGroup, FormsModule, ReactiveFormsModule, NgControl, NgForm, FormGroupDirective } from '@angular/forms';
|
|
5
5
|
import { coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';
|
|
6
6
|
import { FD_FORM_FIELD, FD_FORM_FIELD_CONTROL } from '@fundamental-ngx/cdk/forms';
|
|
7
7
|
import { uniqBy, merge as merge$1, cloneDeep } from 'lodash-es';
|
|
8
8
|
import * as i15 from 'rxjs';
|
|
9
|
-
import { Subject, BehaviorSubject, tap, combineLatest, filter, Subscription, merge, fromEvent, isObservable, firstValueFrom, of, timer, interval } from 'rxjs';
|
|
9
|
+
import { Subject, BehaviorSubject, tap, combineLatest, filter, Subscription, merge, fromEvent, isObservable, takeUntil as takeUntil$1, firstValueFrom, of, timer, interval } from 'rxjs';
|
|
10
10
|
import { distinctUntilChanged, map, takeUntil, switchMap, startWith, debounceTime, filter as filter$1, take, skip } from 'rxjs/operators';
|
|
11
11
|
import * as i1 from '@fundamental-ngx/platform/shared';
|
|
12
12
|
import { ColumnLayoutGridClass, ResponsiveBreakPointConfig, RESPONSIVE_BREAKPOINTS_CONFIG, FormFieldGroup, BaseInput, InLineLayoutCollectionBaseInput, coerceArraySafe, CollectionBaseInput, isOptionItem, isJsObject, isString, MatchingStrategy, isFunction, isDataSource, ArrayMultiInputDataSource, ObservableMultiInputDataSource, MultiInputDataSource, DATA_PROVIDERS, PlatformContentDensityDeprecationsModule, ArrayComboBoxDataSource, ObservableComboBoxDataSource, ComboBoxDataSource, FormGroupContainer, ArrayMultiComboBoxDataSource, ObservableMultiComboBoxDataSource, isSelectableOptionItem, MultiComboBoxDataSource } from '@fundamental-ngx/platform/shared';
|
|
@@ -24,12 +24,12 @@ import { IconModule } from '@fundamental-ngx/core/icon';
|
|
|
24
24
|
import * as i7 from '@fundamental-ngx/core/link';
|
|
25
25
|
import { LinkModule } from '@fundamental-ngx/core/link';
|
|
26
26
|
import * as i3$2 from '@fundamental-ngx/cdk/utils';
|
|
27
|
-
import { RangeSelector, KeyUtil, TemplateDirective, isFunction as isFunction$1, selectStrategy, PipeModule, TemplateModule, DynamicComponentService, resizeObservable, InitialFocusModule, OnlyDigitsModule } from '@fundamental-ngx/cdk/utils';
|
|
27
|
+
import { RangeSelector, KeyUtil, TemplateDirective, DestroyedService, isFunction as isFunction$1, selectStrategy, PipeModule, TemplateModule, DynamicComponentService, resizeObservable, InitialFocusModule, OnlyDigitsModule } from '@fundamental-ngx/cdk/utils';
|
|
28
28
|
import { SelectionModel } from '@angular/cdk/collections';
|
|
29
29
|
import * as i2$1 from '@fundamental-ngx/core/checkbox';
|
|
30
30
|
import { CheckboxComponent as CheckboxComponent$1, CheckboxModule } from '@fundamental-ngx/core/checkbox';
|
|
31
31
|
import { FocusKeyManager } from '@angular/cdk/a11y';
|
|
32
|
-
import { DOWN_ARROW, UP_ARROW, LEFT_ARROW, RIGHT_ARROW, DELETE, BACKSPACE, ENTER, ESCAPE, CONTROL, TAB, SHIFT, ALT, NUMPAD_ZERO, NUMPAD_ONE, NUMPAD_TWO, NUMPAD_THREE, NUMPAD_FOUR, NUMPAD_FIVE, NUMPAD_SIX, NUMPAD_SEVEN, NUMPAD_EIGHT, NUMPAD_NINE,
|
|
32
|
+
import { DOWN_ARROW, UP_ARROW, LEFT_ARROW, RIGHT_ARROW, DELETE, BACKSPACE, ENTER, ESCAPE, CONTROL, TAB, SHIFT, ALT, NUMPAD_ZERO, NUMPAD_ONE, NUMPAD_TWO, NUMPAD_THREE, NUMPAD_FOUR, NUMPAD_FIVE, NUMPAD_SIX, NUMPAD_SEVEN, NUMPAD_EIGHT, NUMPAD_NINE, SPACE, A, PAGE_UP, PAGE_DOWN } from '@angular/cdk/keycodes';
|
|
33
33
|
import * as i3$1 from '@fundamental-ngx/core/radio';
|
|
34
34
|
import { RadioButtonComponent as RadioButtonComponent$1, RadioModule } from '@fundamental-ngx/core/radio';
|
|
35
35
|
import * as i5$1 from '@fundamental-ngx/i18n';
|
|
@@ -4300,11 +4300,35 @@ class AutoCompleteDirective {
|
|
|
4300
4300
|
/** Event thrown, when the auto ahead text is accepted */
|
|
4301
4301
|
this.onComplete = new EventEmitter();
|
|
4302
4302
|
/** @hidden */
|
|
4303
|
+
this._destroyed$ = inject(DestroyedService);
|
|
4304
|
+
/** @hidden */
|
|
4303
4305
|
this._completeKeys = [ENTER];
|
|
4304
4306
|
/** @hidden */
|
|
4305
4307
|
this._fillKeys = [LEFT_ARROW, RIGHT_ARROW];
|
|
4306
4308
|
/** @hidden */
|
|
4307
4309
|
this._stopKeys = [BACKSPACE, DELETE, ESCAPE];
|
|
4310
|
+
/** @hidden */
|
|
4311
|
+
this._isComposing = false;
|
|
4312
|
+
/** @hidden */
|
|
4313
|
+
this._zone = inject(NgZone);
|
|
4314
|
+
/**
|
|
4315
|
+
* Fixes #10710 / #12983
|
|
4316
|
+
* With chinese characters inputText property update was triggered after the keyup event trigger.
|
|
4317
|
+
* By ensuring that we set all properties we can proceed with stable data.
|
|
4318
|
+
*/
|
|
4319
|
+
this._zone.runOutsideAngular(() => {
|
|
4320
|
+
const keyupEvent = fromEvent(this._elementRef.nativeElement, 'keyup');
|
|
4321
|
+
const compositionStartEvent = fromEvent(this._elementRef.nativeElement, 'compositionstart');
|
|
4322
|
+
const compositionEndEvent = fromEvent(this._elementRef.nativeElement, 'compositionend');
|
|
4323
|
+
keyupEvent.pipe(takeUntil$1(this._destroyed$)).subscribe((evt) => this.handleKeyboardEvent(evt));
|
|
4324
|
+
compositionStartEvent.pipe(takeUntil$1(this._destroyed$)).subscribe(() => {
|
|
4325
|
+
this._isComposing = true;
|
|
4326
|
+
});
|
|
4327
|
+
compositionEndEvent.pipe(takeUntil$1(this._destroyed$)).subscribe(() => {
|
|
4328
|
+
this._isComposing = false;
|
|
4329
|
+
this.inputText = this._elementRef.nativeElement.value;
|
|
4330
|
+
});
|
|
4331
|
+
});
|
|
4308
4332
|
}
|
|
4309
4333
|
/** @hidden */
|
|
4310
4334
|
handleBlur() {
|
|
@@ -4314,24 +4338,26 @@ class AutoCompleteDirective {
|
|
|
4314
4338
|
}
|
|
4315
4339
|
/** @hidden */
|
|
4316
4340
|
handleKeyboardEvent(event) {
|
|
4317
|
-
if (
|
|
4318
|
-
|
|
4319
|
-
|
|
4320
|
-
else if (KeyUtil.isKeyCode(event, this._completeKeys)) {
|
|
4321
|
-
this._sendCompleteEvent(true);
|
|
4322
|
-
}
|
|
4323
|
-
else if (KeyUtil.isKeyCode(event, this._fillKeys)) {
|
|
4324
|
-
this._sendCompleteEvent(false);
|
|
4325
|
-
}
|
|
4326
|
-
else if (!this._isControlKey(event) && this.inputText) {
|
|
4327
|
-
/** Prevention from triggering typeahead, when having crtl/cmd + keys */
|
|
4328
|
-
if (!this._triggerTypeAhead()) {
|
|
4329
|
-
return;
|
|
4341
|
+
if (!this._isComposing) {
|
|
4342
|
+
if (KeyUtil.isKeyCode(event, this._stopKeys)) {
|
|
4343
|
+
this._element.value = this.inputText;
|
|
4330
4344
|
}
|
|
4331
|
-
|
|
4332
|
-
|
|
4333
|
-
|
|
4334
|
-
|
|
4345
|
+
else if (KeyUtil.isKeyCode(event, this._completeKeys)) {
|
|
4346
|
+
this._sendCompleteEvent(true);
|
|
4347
|
+
}
|
|
4348
|
+
else if (KeyUtil.isKeyCode(event, this._fillKeys)) {
|
|
4349
|
+
this._sendCompleteEvent(false);
|
|
4350
|
+
}
|
|
4351
|
+
else if (!this._isControlKey(event) && this.inputText) {
|
|
4352
|
+
/** Prevention from triggering typeahead, when having crtl/cmd + keys */
|
|
4353
|
+
if (!this._triggerTypeAhead()) {
|
|
4354
|
+
return;
|
|
4355
|
+
}
|
|
4356
|
+
this._oldValue = this.inputText;
|
|
4357
|
+
const item = this._searchByStrategy();
|
|
4358
|
+
if (item) {
|
|
4359
|
+
this._typeahead(item.label);
|
|
4360
|
+
}
|
|
4335
4361
|
}
|
|
4336
4362
|
}
|
|
4337
4363
|
this._lastKeyUpEvent = event;
|
|
@@ -6101,8 +6127,10 @@ class BaseCombobox extends CollectionBaseInput {
|
|
|
6101
6127
|
this.isOpenChangeHandle(true);
|
|
6102
6128
|
}
|
|
6103
6129
|
const acceptedKeys = !KeyUtil.isKeyCode(event, BACKSPACE) &&
|
|
6130
|
+
!KeyUtil.isKeyCode(event, SPACE) &&
|
|
6104
6131
|
!KeyUtil.isKeyType(event, 'alphabetical') &&
|
|
6105
6132
|
!KeyUtil.isKeyType(event, 'numeric') &&
|
|
6133
|
+
!KeyUtil.isKeyType(event, 'ime') &&
|
|
6106
6134
|
!KeyUtil.isKeyCode(event, this._numberPadNumberKeys);
|
|
6107
6135
|
if (this.isEmptyValue && acceptedKeys) {
|
|
6108
6136
|
this.listComponent?.setItemActive(0);
|
|
@@ -8819,7 +8847,9 @@ class BaseMultiCombobox extends CollectionBaseInput {
|
|
|
8819
8847
|
}
|
|
8820
8848
|
else if (!KeyUtil.isKeyCode(event, [...this._nonOpeningKeys, CONTROL])) {
|
|
8821
8849
|
this.showList(true);
|
|
8822
|
-
const acceptedKeys = !KeyUtil.isKeyType(event, 'alphabetical') &&
|
|
8850
|
+
const acceptedKeys = !KeyUtil.isKeyType(event, 'alphabetical') &&
|
|
8851
|
+
!KeyUtil.isKeyType(event, 'numeric') &&
|
|
8852
|
+
!KeyUtil.isKeyType(event, 'ime');
|
|
8823
8853
|
if (acceptedKeys) {
|
|
8824
8854
|
// SetTimeout is needed for input to receive new value.
|
|
8825
8855
|
setTimeout(() => {
|