@ng-nest/ui 20.3.1 → 20.3.2

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.
@@ -5,7 +5,7 @@ import { TemplateRef, OnInit, OnChanges, ComponentRef, SimpleChanges } from '@an
5
5
  import * as rxjs from 'rxjs';
6
6
  import { Subject, BehaviorSubject } from 'rxjs';
7
7
  import * as _ng_nest_ui_core from '@ng-nest/ui/core';
8
- import { XBoolean, XTemplate, XNumber, XAlign, XJustify, XDirection, XSize, XData, XParentIdentityProperty, XVariant, XPlacement, XFloatLabel, XPositionTopBottom } from '@ng-nest/ui/core';
8
+ import { XBoolean, XTemplate, XNumber, XAlign, XJustify, XDirection, XSize, XData, XParentIdentityProperty, XVariant, XPlacement, XPositionLeftRight, XFloatLabel, XPositionTopBottom } from '@ng-nest/ui/core';
9
9
  import { XFormOption } from '@ng-nest/ui/base-form';
10
10
  import { XInputComponent } from '@ng-nest/ui/input';
11
11
  import { XListComponent } from '@ng-nest/ui/list';
@@ -106,6 +106,16 @@ declare class XAutoCompleteProperty extends XAutoCompleteProperty_base {
106
106
  readonly inputStyle: _angular_core.InputSignal<{
107
107
  [style: string]: any;
108
108
  } | undefined>;
109
+ /**
110
+ * @zh_CN 图标
111
+ * @en_US Icon
112
+ */
113
+ readonly icon: _angular_core.ModelSignal<string | undefined>;
114
+ /**
115
+ * @zh_CN 图标布局方式
116
+ * @en_US Icon layout
117
+ */
118
+ readonly iconLayout: _angular_core.InputSignal<XPositionLeftRight>;
109
119
  /**
110
120
  * @zh_CN 下拉框的最大高度
111
121
  * @en_US The biggest height of the drop-down box
@@ -126,6 +136,11 @@ declare class XAutoCompleteProperty extends XAutoCompleteProperty_base {
126
136
  * @en_US The style class name of the drop-down box
127
137
  */
128
138
  readonly portalClass: _angular_core.InputSignal<string | string[]>;
139
+ /**
140
+ * @zh_CN 自定义下拉框中的内容
141
+ * @en_US Custom content in the drop-down box
142
+ */
143
+ readonly portalTemp: _angular_core.InputSignal<TemplateRef<any> | undefined>;
129
144
  /**
130
145
  * @zh_CN 匹配区分大小写
131
146
  * @en_US Case-sensitive
@@ -251,8 +266,13 @@ declare class XAutoCompleteProperty extends XAutoCompleteProperty_base {
251
266
  * @en_US Node click event
252
267
  */
253
268
  readonly nodeEmit: _angular_core.OutputEmitterRef<XAutoCompleteNode>;
269
+ /**
270
+ * @zh_CN 输入值变化事件
271
+ * @en_US Input value change event
272
+ */
273
+ readonly searchChange: _angular_core.OutputEmitterRef<any>;
254
274
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<XAutoCompleteProperty, never>;
255
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<XAutoCompleteProperty, "x-auto-complete-property", never, { "data": { "alias": "data"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "debounceTime": { "alias": "debounceTime"; "required": false; "isSignal": true; }; "placement": { "alias": "placement"; "required": false; "isSignal": true; }; "nodeTpl": { "alias": "nodeTpl"; "required": false; "isSignal": true; }; "bordered": { "alias": "bordered"; "required": false; "isSignal": true; }; "inputStyle": { "alias": "inputStyle"; "required": false; "isSignal": true; }; "portalMaxHeight": { "alias": "portalMaxHeight"; "required": false; "isSignal": true; }; "portalHeight": { "alias": "portalHeight"; "required": false; "isSignal": true; }; "portalWidth": { "alias": "portalWidth"; "required": false; "isSignal": true; }; "portalClass": { "alias": "portalClass"; "required": false; "isSignal": true; }; "caseSensitive": { "alias": "caseSensitive"; "required": false; "isSignal": true; }; "onlySelect": { "alias": "onlySelect"; "required": false; "isSignal": true; }; "floatLabel": { "alias": "floatLabel"; "required": false; "isSignal": true; }; "floatFixed": { "alias": "floatFixed"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "pointer": { "alias": "pointer"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "labelWidth": { "alias": "labelWidth"; "required": false; "isSignal": true; }; "labelAlign": { "alias": "labelAlign"; "required": false; "isSignal": true; }; "justify": { "alias": "justify"; "required": false; "isSignal": true; }; "align": { "alias": "align"; "required": false; "isSignal": true; }; "direction": { "alias": "direction"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "valueTpl": { "alias": "valueTpl"; "required": false; "isSignal": true; }; "valueTplContext": { "alias": "valueTplContext"; "required": false; "isSignal": true; }; "before": { "alias": "before"; "required": false; "isSignal": true; }; "after": { "alias": "after"; "required": false; "isSignal": true; }; "pattern": { "alias": "pattern"; "required": false; "isSignal": true; }; "message": { "alias": "message"; "required": false; "isSignal": true; }; "active": { "alias": "active"; "required": false; "isSignal": true; }; "inputValidator": { "alias": "inputValidator"; "required": false; "isSignal": true; }; }, { "active": "activeChange"; "nodeEmit": "nodeEmit"; }, never, never, true, never>;
275
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<XAutoCompleteProperty, "x-auto-complete-property", never, { "data": { "alias": "data"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "debounceTime": { "alias": "debounceTime"; "required": false; "isSignal": true; }; "placement": { "alias": "placement"; "required": false; "isSignal": true; }; "nodeTpl": { "alias": "nodeTpl"; "required": false; "isSignal": true; }; "bordered": { "alias": "bordered"; "required": false; "isSignal": true; }; "inputStyle": { "alias": "inputStyle"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "iconLayout": { "alias": "iconLayout"; "required": false; "isSignal": true; }; "portalMaxHeight": { "alias": "portalMaxHeight"; "required": false; "isSignal": true; }; "portalHeight": { "alias": "portalHeight"; "required": false; "isSignal": true; }; "portalWidth": { "alias": "portalWidth"; "required": false; "isSignal": true; }; "portalClass": { "alias": "portalClass"; "required": false; "isSignal": true; }; "portalTemp": { "alias": "portalTemp"; "required": false; "isSignal": true; }; "caseSensitive": { "alias": "caseSensitive"; "required": false; "isSignal": true; }; "onlySelect": { "alias": "onlySelect"; "required": false; "isSignal": true; }; "floatLabel": { "alias": "floatLabel"; "required": false; "isSignal": true; }; "floatFixed": { "alias": "floatFixed"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "pointer": { "alias": "pointer"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "labelWidth": { "alias": "labelWidth"; "required": false; "isSignal": true; }; "labelAlign": { "alias": "labelAlign"; "required": false; "isSignal": true; }; "justify": { "alias": "justify"; "required": false; "isSignal": true; }; "align": { "alias": "align"; "required": false; "isSignal": true; }; "direction": { "alias": "direction"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "valueTpl": { "alias": "valueTpl"; "required": false; "isSignal": true; }; "valueTplContext": { "alias": "valueTplContext"; "required": false; "isSignal": true; }; "before": { "alias": "before"; "required": false; "isSignal": true; }; "after": { "alias": "after"; "required": false; "isSignal": true; }; "pattern": { "alias": "pattern"; "required": false; "isSignal": true; }; "message": { "alias": "message"; "required": false; "isSignal": true; }; "active": { "alias": "active"; "required": false; "isSignal": true; }; "inputValidator": { "alias": "inputValidator"; "required": false; "isSignal": true; }; }, { "icon": "iconChange"; "active": "activeChange"; "nodeEmit": "nodeEmit"; "searchChange": "searchChange"; }, never, never, true, never>;
256
276
  }
257
277
  /**
258
278
  * AutoComplete Option
@@ -414,6 +434,13 @@ interface XAutoCompleteOption extends XFormOption {
414
434
  */
415
435
  nodeEmit?: (node: XAutoCompleteNode) => void;
416
436
  }
437
+ /**
438
+ * @zh_CN 图标布局方式,指在输入框中的位置
439
+ * @en_US Icon layout, refers to the position in the input box
440
+ * @value "left" 靠左
441
+ * @value "right" 靠右
442
+ */
443
+ type XAutoCompleteIconLayoutType = XPositionLeftRight;
417
444
  /**
418
445
  * @zh_CN 浮动标签类型
419
446
  * @en_US Float label type
@@ -442,7 +469,7 @@ declare class XAutoCompletePortalComponent implements OnInit {
442
469
  animateLeave: string;
443
470
  done(): void;
444
471
  start(): void;
445
- list: _angular_core.Signal<XListComponent>;
472
+ list: _angular_core.Signal<XListComponent | undefined>;
446
473
  data: _angular_core.InputSignal<XAutoCompleteNode[] | undefined>;
447
474
  value: _angular_core.InputSignal<any>;
448
475
  placement: _angular_core.InputSignal<XPositionTopBottom | undefined>;
@@ -459,6 +486,14 @@ declare class XAutoCompletePortalComponent implements OnInit {
459
486
  keydownSubject: Subject<KeyboardEvent>;
460
487
  active: _angular_core.WritableSignal<number>;
461
488
  destroy: _angular_core.WritableSignal<boolean>;
489
+ portalTemp: _angular_core.InputSignal<TemplateRef<any> | undefined>;
490
+ portalTempContext: _angular_core.Signal<{
491
+ $implicit: XAutoCompleteNode[] | undefined;
492
+ $data: XAutoCompleteNode[] | undefined;
493
+ $value: any;
494
+ $close: () => void;
495
+ $nodeClick: (node: XAutoCompleteNode) => void;
496
+ }>;
462
497
  private unSubject;
463
498
  private destroyRef;
464
499
  ngOnInit(): void;
@@ -468,14 +503,13 @@ declare class XAutoCompletePortalComponent implements OnInit {
468
503
  onActive(num: number): void;
469
504
  onTabOut(): void;
470
505
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<XAutoCompletePortalComponent, never>;
471
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<XAutoCompletePortalComponent, "x-auto-complete-portal", never, { "data": { "alias": "data"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "placement": { "alias": "placement"; "required": false; "isSignal": true; }; "nodeTpl": { "alias": "nodeTpl"; "required": false; "isSignal": true; }; "inputCom": { "alias": "inputCom"; "required": false; "isSignal": true; }; "keywordText": { "alias": "keywordText"; "required": false; "isSignal": true; }; "caseSensitive": { "alias": "caseSensitive"; "required": false; "isSignal": true; }; "portalMaxHeight": { "alias": "portalMaxHeight"; "required": false; "isSignal": true; }; "portalHeight": { "alias": "portalHeight"; "required": false; "isSignal": true; }; "portalWidth": { "alias": "portalWidth"; "required": false; "isSignal": true; }; }, { "keywordText": "keywordTextChange"; "animating": "animating"; "nodeClick": "nodeClick"; }, never, never, true, never>;
506
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<XAutoCompletePortalComponent, "x-auto-complete-portal", never, { "data": { "alias": "data"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "placement": { "alias": "placement"; "required": false; "isSignal": true; }; "nodeTpl": { "alias": "nodeTpl"; "required": false; "isSignal": true; }; "inputCom": { "alias": "inputCom"; "required": false; "isSignal": true; }; "keywordText": { "alias": "keywordText"; "required": false; "isSignal": true; }; "caseSensitive": { "alias": "caseSensitive"; "required": false; "isSignal": true; }; "portalMaxHeight": { "alias": "portalMaxHeight"; "required": false; "isSignal": true; }; "portalHeight": { "alias": "portalHeight"; "required": false; "isSignal": true; }; "portalWidth": { "alias": "portalWidth"; "required": false; "isSignal": true; }; "portalTemp": { "alias": "portalTemp"; "required": false; "isSignal": true; }; }, { "keywordText": "keywordTextChange"; "animating": "animating"; "nodeClick": "nodeClick"; }, never, never, true, never>;
472
507
  }
473
508
 
474
509
  declare class XAutoCompleteComponent extends XAutoCompleteProperty implements OnInit, OnChanges {
475
510
  inputCom: _angular_core.Signal<XInputComponent>;
476
511
  nodes: _angular_core.WritableSignal<XAutoCompleteNode[]>;
477
512
  searchNodes: _angular_core.WritableSignal<XAutoCompleteNode[]>;
478
- icon: _angular_core.WritableSignal<string>;
479
513
  iconSpin: _angular_core.WritableSignal<boolean>;
480
514
  animating: _angular_core.WritableSignal<boolean>;
481
515
  valueTplContextSignal: _angular_core.WritableSignal<{
@@ -483,6 +517,8 @@ declare class XAutoCompleteComponent extends XAutoCompleteProperty implements On
483
517
  $isValue: boolean;
484
518
  }>;
485
519
  valueTplContextComputed: _angular_core.Signal<unknown>;
520
+ widthComputed: _angular_core.Signal<boolean>;
521
+ get hostWidth(): any;
486
522
  inputChange: BehaviorSubject<any>;
487
523
  closeSubject: Subject<void>;
488
524
  keydownSubject: Subject<KeyboardEvent>;
@@ -514,6 +550,8 @@ declare class XAutoCompleteComponent extends XAutoCompleteProperty implements On
514
550
  setSearchNodes(value: string | number): void;
515
551
  modelChange(value: string | number): void;
516
552
  onKeydown($event: KeyboardEvent): void;
553
+ portalClose(): void;
554
+ portalNodeClick(node: XAutoCompleteNode): void;
517
555
  onInput(_event: Event): void;
518
556
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<XAutoCompleteComponent, never>;
519
557
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<XAutoCompleteComponent, "x-auto-complete", never, {}, {}, never, never, true, never>;
@@ -526,4 +564,4 @@ declare class XAutoCompleteModule {
526
564
  }
527
565
 
528
566
  export { XAutoCompleteComponent, XAutoCompleteModule, XAutoCompletePortalComponent, XAutoCompletePortalPrefix, XAutoCompletePrefix, XAutoCompleteProperty };
529
- export type { XAutoCompleteFloatLabel, XAutoCompleteNode, XAutoCompleteOption, XAutoCompleteVariant };
567
+ export type { XAutoCompleteFloatLabel, XAutoCompleteIconLayoutType, XAutoCompleteNode, XAutoCompleteOption, XAutoCompleteVariant };
@@ -24,7 +24,7 @@ declare class XContextmenuProperty extends XContextmenuProperty_base {
24
24
  * @zh_CN 触发目标元素
25
25
  * @en_US Trigger target element
26
26
  */
27
- readonly target: _angular_core.InputSignal<ElementRef<any> | HTMLElement | undefined>;
27
+ readonly target: _angular_core.InputSignal<HTMLElement | ElementRef<any> | undefined>;
28
28
  /**
29
29
  * @zh_CN 节点数据
30
30
  * @en_US Node data
package/core/index.d.ts CHANGED
@@ -1267,6 +1267,7 @@ interface XAutoCompleteConfig {
1267
1267
  floatFixed?: boolean;
1268
1268
  variant?: XVariant;
1269
1269
  placement?: XPositionTopBottom;
1270
+ iconLayout?: XPositionLeftRight;
1270
1271
  debounceTime?: number;
1271
1272
  size?: XSize;
1272
1273
  bordered?: boolean;
@@ -1,12 +1,13 @@
1
1
  import { Subject, BehaviorSubject, fromEvent } from 'rxjs';
2
2
  import * as i0 from '@angular/core';
3
- import { input, model, output, Component, viewChild, signal, inject, DestroyRef, HostListener, HostBinding, ChangeDetectionStrategy, ViewEncapsulation, computed, ViewContainerRef, ElementRef, effect, NgModule } from '@angular/core';
3
+ import { input, model, output, Component, viewChild, signal, computed, inject, DestroyRef, HostListener, HostBinding, ChangeDetectionStrategy, ViewEncapsulation, ViewContainerRef, ElementRef, effect, NgModule } from '@angular/core';
4
4
  import { XToNumber, XToBoolean, XToCssPixelValue, XIsChange, XIsObservable, XIsFunction, XSetData, XParents, XIsEmpty } from '@ng-nest/ui/core';
5
5
  import { XFormControlFunction, XValueAccessor } from '@ng-nest/ui/base-form';
6
6
  import { XPortalService, XPortalConnectedPosition } from '@ng-nest/ui/portal';
7
7
  import { XInputComponent } from '@ng-nest/ui/input';
8
8
  import { takeUntil, filter, debounceTime, distinctUntilChanged } from 'rxjs/operators';
9
9
  import { XListComponent } from '@ng-nest/ui/list';
10
+ import { NgTemplateOutlet } from '@angular/common';
10
11
  import { Overlay } from '@angular/cdk/overlay';
11
12
  import { DOWN_ARROW, UP_ARROW, ENTER, MAC_ENTER, ESCAPE } from '@angular/cdk/keycodes';
12
13
  import * as i1 from '@angular/forms';
@@ -61,6 +62,16 @@ class XAutoCompleteProperty extends XFormControlFunction(X_AUTOCOMPLETE_CONFIG_N
61
62
  * @en_US Input Style
62
63
  */
63
64
  this.inputStyle = input(...(ngDevMode ? [undefined, { debugName: "inputStyle" }] : []));
65
+ /**
66
+ * @zh_CN 图标
67
+ * @en_US Icon
68
+ */
69
+ this.icon = model(...(ngDevMode ? [undefined, { debugName: "icon" }] : []));
70
+ /**
71
+ * @zh_CN 图标布局方式
72
+ * @en_US Icon layout
73
+ */
74
+ this.iconLayout = input(this.config?.iconLayout ?? 'right', ...(ngDevMode ? [{ debugName: "iconLayout" }] : []));
64
75
  /**
65
76
  * @zh_CN 下拉框的最大高度
66
77
  * @en_US The biggest height of the drop-down box
@@ -85,6 +96,11 @@ class XAutoCompleteProperty extends XFormControlFunction(X_AUTOCOMPLETE_CONFIG_N
85
96
  * @en_US The style class name of the drop-down box
86
97
  */
87
98
  this.portalClass = input('', ...(ngDevMode ? [{ debugName: "portalClass" }] : []));
99
+ /**
100
+ * @zh_CN 自定义下拉框中的内容
101
+ * @en_US Custom content in the drop-down box
102
+ */
103
+ this.portalTemp = input(...(ngDevMode ? [undefined, { debugName: "portalTemp" }] : []));
88
104
  /**
89
105
  * @zh_CN 匹配区分大小写
90
106
  * @en_US Case-sensitive
@@ -210,14 +226,19 @@ class XAutoCompleteProperty extends XFormControlFunction(X_AUTOCOMPLETE_CONFIG_N
210
226
  * @en_US Node click event
211
227
  */
212
228
  this.nodeEmit = output();
229
+ /**
230
+ * @zh_CN 输入值变化事件
231
+ * @en_US Input value change event
232
+ */
233
+ this.searchChange = output();
213
234
  }
214
235
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: XAutoCompleteProperty, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
215
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.5", type: XAutoCompleteProperty, isStandalone: true, selector: "x-auto-complete-property", inputs: { data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, debounceTime: { classPropertyName: "debounceTime", publicName: "debounceTime", isSignal: true, isRequired: false, transformFunction: null }, placement: { classPropertyName: "placement", publicName: "placement", isSignal: true, isRequired: false, transformFunction: null }, nodeTpl: { classPropertyName: "nodeTpl", publicName: "nodeTpl", isSignal: true, isRequired: false, transformFunction: null }, bordered: { classPropertyName: "bordered", publicName: "bordered", isSignal: true, isRequired: false, transformFunction: null }, inputStyle: { classPropertyName: "inputStyle", publicName: "inputStyle", isSignal: true, isRequired: false, transformFunction: null }, portalMaxHeight: { classPropertyName: "portalMaxHeight", publicName: "portalMaxHeight", isSignal: true, isRequired: false, transformFunction: null }, portalHeight: { classPropertyName: "portalHeight", publicName: "portalHeight", isSignal: true, isRequired: false, transformFunction: null }, portalWidth: { classPropertyName: "portalWidth", publicName: "portalWidth", isSignal: true, isRequired: false, transformFunction: null }, portalClass: { classPropertyName: "portalClass", publicName: "portalClass", isSignal: true, isRequired: false, transformFunction: null }, caseSensitive: { classPropertyName: "caseSensitive", publicName: "caseSensitive", isSignal: true, isRequired: false, transformFunction: null }, onlySelect: { classPropertyName: "onlySelect", publicName: "onlySelect", isSignal: true, isRequired: false, transformFunction: null }, floatLabel: { classPropertyName: "floatLabel", publicName: "floatLabel", isSignal: true, isRequired: false, transformFunction: null }, floatFixed: { classPropertyName: "floatFixed", publicName: "floatFixed", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, pointer: { classPropertyName: "pointer", publicName: "pointer", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, labelWidth: { classPropertyName: "labelWidth", publicName: "labelWidth", isSignal: true, isRequired: false, transformFunction: null }, labelAlign: { classPropertyName: "labelAlign", publicName: "labelAlign", isSignal: true, isRequired: false, transformFunction: null }, justify: { classPropertyName: "justify", publicName: "justify", isSignal: true, isRequired: false, transformFunction: null }, align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null }, direction: { classPropertyName: "direction", publicName: "direction", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, valueTpl: { classPropertyName: "valueTpl", publicName: "valueTpl", isSignal: true, isRequired: false, transformFunction: null }, valueTplContext: { classPropertyName: "valueTplContext", publicName: "valueTplContext", isSignal: true, isRequired: false, transformFunction: null }, before: { classPropertyName: "before", publicName: "before", isSignal: true, isRequired: false, transformFunction: null }, after: { classPropertyName: "after", publicName: "after", isSignal: true, isRequired: false, transformFunction: null }, pattern: { classPropertyName: "pattern", publicName: "pattern", isSignal: true, isRequired: false, transformFunction: null }, message: { classPropertyName: "message", publicName: "message", isSignal: true, isRequired: false, transformFunction: null }, active: { classPropertyName: "active", publicName: "active", isSignal: true, isRequired: false, transformFunction: null }, inputValidator: { classPropertyName: "inputValidator", publicName: "inputValidator", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { active: "activeChange", nodeEmit: "nodeEmit" }, usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
236
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.5", type: XAutoCompleteProperty, isStandalone: true, selector: "x-auto-complete-property", inputs: { data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, debounceTime: { classPropertyName: "debounceTime", publicName: "debounceTime", isSignal: true, isRequired: false, transformFunction: null }, placement: { classPropertyName: "placement", publicName: "placement", isSignal: true, isRequired: false, transformFunction: null }, nodeTpl: { classPropertyName: "nodeTpl", publicName: "nodeTpl", isSignal: true, isRequired: false, transformFunction: null }, bordered: { classPropertyName: "bordered", publicName: "bordered", isSignal: true, isRequired: false, transformFunction: null }, inputStyle: { classPropertyName: "inputStyle", publicName: "inputStyle", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, iconLayout: { classPropertyName: "iconLayout", publicName: "iconLayout", isSignal: true, isRequired: false, transformFunction: null }, portalMaxHeight: { classPropertyName: "portalMaxHeight", publicName: "portalMaxHeight", isSignal: true, isRequired: false, transformFunction: null }, portalHeight: { classPropertyName: "portalHeight", publicName: "portalHeight", isSignal: true, isRequired: false, transformFunction: null }, portalWidth: { classPropertyName: "portalWidth", publicName: "portalWidth", isSignal: true, isRequired: false, transformFunction: null }, portalClass: { classPropertyName: "portalClass", publicName: "portalClass", isSignal: true, isRequired: false, transformFunction: null }, portalTemp: { classPropertyName: "portalTemp", publicName: "portalTemp", isSignal: true, isRequired: false, transformFunction: null }, caseSensitive: { classPropertyName: "caseSensitive", publicName: "caseSensitive", isSignal: true, isRequired: false, transformFunction: null }, onlySelect: { classPropertyName: "onlySelect", publicName: "onlySelect", isSignal: true, isRequired: false, transformFunction: null }, floatLabel: { classPropertyName: "floatLabel", publicName: "floatLabel", isSignal: true, isRequired: false, transformFunction: null }, floatFixed: { classPropertyName: "floatFixed", publicName: "floatFixed", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, pointer: { classPropertyName: "pointer", publicName: "pointer", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, labelWidth: { classPropertyName: "labelWidth", publicName: "labelWidth", isSignal: true, isRequired: false, transformFunction: null }, labelAlign: { classPropertyName: "labelAlign", publicName: "labelAlign", isSignal: true, isRequired: false, transformFunction: null }, justify: { classPropertyName: "justify", publicName: "justify", isSignal: true, isRequired: false, transformFunction: null }, align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null }, direction: { classPropertyName: "direction", publicName: "direction", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, valueTpl: { classPropertyName: "valueTpl", publicName: "valueTpl", isSignal: true, isRequired: false, transformFunction: null }, valueTplContext: { classPropertyName: "valueTplContext", publicName: "valueTplContext", isSignal: true, isRequired: false, transformFunction: null }, before: { classPropertyName: "before", publicName: "before", isSignal: true, isRequired: false, transformFunction: null }, after: { classPropertyName: "after", publicName: "after", isSignal: true, isRequired: false, transformFunction: null }, pattern: { classPropertyName: "pattern", publicName: "pattern", isSignal: true, isRequired: false, transformFunction: null }, message: { classPropertyName: "message", publicName: "message", isSignal: true, isRequired: false, transformFunction: null }, active: { classPropertyName: "active", publicName: "active", isSignal: true, isRequired: false, transformFunction: null }, inputValidator: { classPropertyName: "inputValidator", publicName: "inputValidator", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { icon: "iconChange", active: "activeChange", nodeEmit: "nodeEmit", searchChange: "searchChange" }, usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
216
237
  }
217
238
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: XAutoCompleteProperty, decorators: [{
218
239
  type: Component,
219
240
  args: [{ selector: `${XAutoCompletePrefix}-property`, template: '' }]
220
- }], propDecorators: { data: [{ type: i0.Input, args: [{ isSignal: true, alias: "data", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], debounceTime: [{ type: i0.Input, args: [{ isSignal: true, alias: "debounceTime", required: false }] }], placement: [{ type: i0.Input, args: [{ isSignal: true, alias: "placement", required: false }] }], nodeTpl: [{ type: i0.Input, args: [{ isSignal: true, alias: "nodeTpl", required: false }] }], bordered: [{ type: i0.Input, args: [{ isSignal: true, alias: "bordered", required: false }] }], inputStyle: [{ type: i0.Input, args: [{ isSignal: true, alias: "inputStyle", required: false }] }], portalMaxHeight: [{ type: i0.Input, args: [{ isSignal: true, alias: "portalMaxHeight", required: false }] }], portalHeight: [{ type: i0.Input, args: [{ isSignal: true, alias: "portalHeight", required: false }] }], portalWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "portalWidth", required: false }] }], portalClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "portalClass", required: false }] }], caseSensitive: [{ type: i0.Input, args: [{ isSignal: true, alias: "caseSensitive", required: false }] }], onlySelect: [{ type: i0.Input, args: [{ isSignal: true, alias: "onlySelect", required: false }] }], floatLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "floatLabel", required: false }] }], floatFixed: [{ type: i0.Input, args: [{ isSignal: true, alias: "floatFixed", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], pointer: [{ type: i0.Input, args: [{ isSignal: true, alias: "pointer", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], labelWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "labelWidth", required: false }] }], labelAlign: [{ type: i0.Input, args: [{ isSignal: true, alias: "labelAlign", required: false }] }], justify: [{ type: i0.Input, args: [{ isSignal: true, alias: "justify", required: false }] }], align: [{ type: i0.Input, args: [{ isSignal: true, alias: "align", required: false }] }], direction: [{ type: i0.Input, args: [{ isSignal: true, alias: "direction", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], required: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], valueTpl: [{ type: i0.Input, args: [{ isSignal: true, alias: "valueTpl", required: false }] }], valueTplContext: [{ type: i0.Input, args: [{ isSignal: true, alias: "valueTplContext", required: false }] }], before: [{ type: i0.Input, args: [{ isSignal: true, alias: "before", required: false }] }], after: [{ type: i0.Input, args: [{ isSignal: true, alias: "after", required: false }] }], pattern: [{ type: i0.Input, args: [{ isSignal: true, alias: "pattern", required: false }] }], message: [{ type: i0.Input, args: [{ isSignal: true, alias: "message", required: false }] }], active: [{ type: i0.Input, args: [{ isSignal: true, alias: "active", required: false }] }, { type: i0.Output, args: ["activeChange"] }], inputValidator: [{ type: i0.Input, args: [{ isSignal: true, alias: "inputValidator", required: false }] }], nodeEmit: [{ type: i0.Output, args: ["nodeEmit"] }] } });
241
+ }], propDecorators: { data: [{ type: i0.Input, args: [{ isSignal: true, alias: "data", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], debounceTime: [{ type: i0.Input, args: [{ isSignal: true, alias: "debounceTime", required: false }] }], placement: [{ type: i0.Input, args: [{ isSignal: true, alias: "placement", required: false }] }], nodeTpl: [{ type: i0.Input, args: [{ isSignal: true, alias: "nodeTpl", required: false }] }], bordered: [{ type: i0.Input, args: [{ isSignal: true, alias: "bordered", required: false }] }], inputStyle: [{ type: i0.Input, args: [{ isSignal: true, alias: "inputStyle", required: false }] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }, { type: i0.Output, args: ["iconChange"] }], iconLayout: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconLayout", required: false }] }], portalMaxHeight: [{ type: i0.Input, args: [{ isSignal: true, alias: "portalMaxHeight", required: false }] }], portalHeight: [{ type: i0.Input, args: [{ isSignal: true, alias: "portalHeight", required: false }] }], portalWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "portalWidth", required: false }] }], portalClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "portalClass", required: false }] }], portalTemp: [{ type: i0.Input, args: [{ isSignal: true, alias: "portalTemp", required: false }] }], caseSensitive: [{ type: i0.Input, args: [{ isSignal: true, alias: "caseSensitive", required: false }] }], onlySelect: [{ type: i0.Input, args: [{ isSignal: true, alias: "onlySelect", required: false }] }], floatLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "floatLabel", required: false }] }], floatFixed: [{ type: i0.Input, args: [{ isSignal: true, alias: "floatFixed", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], pointer: [{ type: i0.Input, args: [{ isSignal: true, alias: "pointer", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], labelWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "labelWidth", required: false }] }], labelAlign: [{ type: i0.Input, args: [{ isSignal: true, alias: "labelAlign", required: false }] }], justify: [{ type: i0.Input, args: [{ isSignal: true, alias: "justify", required: false }] }], align: [{ type: i0.Input, args: [{ isSignal: true, alias: "align", required: false }] }], direction: [{ type: i0.Input, args: [{ isSignal: true, alias: "direction", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], required: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], valueTpl: [{ type: i0.Input, args: [{ isSignal: true, alias: "valueTpl", required: false }] }], valueTplContext: [{ type: i0.Input, args: [{ isSignal: true, alias: "valueTplContext", required: false }] }], before: [{ type: i0.Input, args: [{ isSignal: true, alias: "before", required: false }] }], after: [{ type: i0.Input, args: [{ isSignal: true, alias: "after", required: false }] }], pattern: [{ type: i0.Input, args: [{ isSignal: true, alias: "pattern", required: false }] }], message: [{ type: i0.Input, args: [{ isSignal: true, alias: "message", required: false }] }], active: [{ type: i0.Input, args: [{ isSignal: true, alias: "active", required: false }] }, { type: i0.Output, args: ["activeChange"] }], inputValidator: [{ type: i0.Input, args: [{ isSignal: true, alias: "inputValidator", required: false }] }], nodeEmit: [{ type: i0.Output, args: ["nodeEmit"] }], searchChange: [{ type: i0.Output, args: ["searchChange"] }] } });
221
242
  /**
222
243
  * AutoComplete Portal
223
244
  * @selector x-auto-complete-portal
@@ -229,7 +250,7 @@ class XAutoCompletePortalComponent {
229
250
  constructor() {
230
251
  this.animateEnter = 'x-connect-enter';
231
252
  this.animateLeave = 'x-connect-leave';
232
- this.list = viewChild.required('list', { read: XListComponent });
253
+ this.list = viewChild('list', ...(ngDevMode ? [{ debugName: "list", read: XListComponent }] : [{ read: XListComponent }]));
233
254
  this.data = input(...(ngDevMode ? [undefined, { debugName: "data" }] : []));
234
255
  this.value = input(...(ngDevMode ? [undefined, { debugName: "value" }] : []));
235
256
  this.placement = input(...(ngDevMode ? [undefined, { debugName: "placement" }] : []));
@@ -244,6 +265,14 @@ class XAutoCompletePortalComponent {
244
265
  this.nodeClick = output();
245
266
  this.active = signal(-1, ...(ngDevMode ? [{ debugName: "active" }] : []));
246
267
  this.destroy = signal(false, ...(ngDevMode ? [{ debugName: "destroy" }] : []));
268
+ this.portalTemp = input(...(ngDevMode ? [undefined, { debugName: "portalTemp" }] : []));
269
+ this.portalTempContext = computed(() => ({
270
+ $implicit: this.data(),
271
+ $data: this.data(),
272
+ $value: this.value(),
273
+ $close: () => this.closeSubject.next(),
274
+ $nodeClick: (node) => this.onNodeClick(node)
275
+ }), ...(ngDevMode ? [{ debugName: "portalTempContext" }] : []));
247
276
  this.unSubject = new Subject();
248
277
  this.destroyRef = inject(DestroyRef);
249
278
  }
@@ -259,10 +288,10 @@ class XAutoCompletePortalComponent {
259
288
  }
260
289
  ngOnInit() {
261
290
  this.closeSubject.pipe(takeUntil(this.unSubject)).subscribe(() => {
262
- this.list().setUnActive(this.active());
291
+ this.list()?.setUnActive(this.active());
263
292
  });
264
293
  this.keydownSubject.pipe(takeUntil(this.unSubject)).subscribe((x) => {
265
- this.list().keydown(x);
294
+ this.list()?.keydown(x);
266
295
  });
267
296
  this.destroyRef.onDestroy(() => {
268
297
  this.destroy.set(true);
@@ -271,7 +300,7 @@ class XAutoCompletePortalComponent {
271
300
  });
272
301
  }
273
302
  ngAfterViewInit() {
274
- this.list().keyManager.setFirstItemActive();
303
+ this.list()?.keyManager.setFirstItemActive();
275
304
  }
276
305
  stopPropagation(event) {
277
306
  event.stopPropagation();
@@ -287,11 +316,11 @@ class XAutoCompletePortalComponent {
287
316
  this.closeSubject.next();
288
317
  }
289
318
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: XAutoCompletePortalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
290
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.3.5", type: XAutoCompletePortalComponent, isStandalone: true, selector: "x-auto-complete-portal", inputs: { data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, placement: { classPropertyName: "placement", publicName: "placement", isSignal: true, isRequired: false, transformFunction: null }, nodeTpl: { classPropertyName: "nodeTpl", publicName: "nodeTpl", isSignal: true, isRequired: false, transformFunction: null }, inputCom: { classPropertyName: "inputCom", publicName: "inputCom", isSignal: true, isRequired: false, transformFunction: null }, keywordText: { classPropertyName: "keywordText", publicName: "keywordText", isSignal: true, isRequired: false, transformFunction: null }, caseSensitive: { classPropertyName: "caseSensitive", publicName: "caseSensitive", isSignal: true, isRequired: false, transformFunction: null }, portalMaxHeight: { classPropertyName: "portalMaxHeight", publicName: "portalMaxHeight", isSignal: true, isRequired: false, transformFunction: null }, portalHeight: { classPropertyName: "portalHeight", publicName: "portalHeight", isSignal: true, isRequired: false, transformFunction: null }, portalWidth: { classPropertyName: "portalWidth", publicName: "portalWidth", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { keywordText: "keywordTextChange", animating: "animating", nodeClick: "nodeClick" }, host: { listeners: { "animationend": "done()", "animationstart": "start()" }, properties: { "animate.enter": "this.animateEnter", "animate.leave": "this.animateLeave" } }, viewQueries: [{ propertyName: "list", first: true, predicate: ["list"], descendants: true, read: XListComponent, isSignal: true }], ngImport: i0, template: "<div\r\n #autoCompletePortal\r\n class=\"x-auto-complete-portal\"\r\n tabindex=\"-1\"\r\n (click)=\"inputCom()?.inputFocus('focus'); stopPropagation($event)\"\r\n [style.maxHeight]=\"portalHeight() ? portalHeight() : portalMaxHeight()\"\r\n [style.height]=\"portalHeight()\"\r\n>\r\n <x-list\r\n #list\r\n [data]=\"data()!\"\r\n (nodeClick)=\"onNodeClick($event)\"\r\n (keyManagerChange)=\"onActive($event)\"\r\n (keyManagerTabOut)=\"onTabOut()\"\r\n [nodeTpl]=\"nodeTpl()\"\r\n [scrollElement]=\"autoCompletePortal\"\r\n [keywordText]=\"keywordText()\"\r\n [caseSensitive]=\"caseSensitive()\"\r\n [inPortal]=\"true\"\r\n ></x-list>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";x-auto-complete-portal{width:100%}.x-auto-complete-portal{color:var(--x-text);width:100%;border-radius:var(--x-border-small-radius);box-shadow:var(--x-box-shadow);position:relative;display:flex;background-color:var(--x-background-100);overflow:hidden auto;max-height:calc(calc(var(--x-font-size) + .875rem) * 6 + var(--x-border-width) * 7)}.x-auto-complete-portal:focus{outline:none}\n"], dependencies: [{ kind: "component", type: XListComponent, selector: "x-list" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
319
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.5", type: XAutoCompletePortalComponent, isStandalone: true, selector: "x-auto-complete-portal", inputs: { data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, placement: { classPropertyName: "placement", publicName: "placement", isSignal: true, isRequired: false, transformFunction: null }, nodeTpl: { classPropertyName: "nodeTpl", publicName: "nodeTpl", isSignal: true, isRequired: false, transformFunction: null }, inputCom: { classPropertyName: "inputCom", publicName: "inputCom", isSignal: true, isRequired: false, transformFunction: null }, keywordText: { classPropertyName: "keywordText", publicName: "keywordText", isSignal: true, isRequired: false, transformFunction: null }, caseSensitive: { classPropertyName: "caseSensitive", publicName: "caseSensitive", isSignal: true, isRequired: false, transformFunction: null }, portalMaxHeight: { classPropertyName: "portalMaxHeight", publicName: "portalMaxHeight", isSignal: true, isRequired: false, transformFunction: null }, portalHeight: { classPropertyName: "portalHeight", publicName: "portalHeight", isSignal: true, isRequired: false, transformFunction: null }, portalWidth: { classPropertyName: "portalWidth", publicName: "portalWidth", isSignal: true, isRequired: false, transformFunction: null }, portalTemp: { classPropertyName: "portalTemp", publicName: "portalTemp", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { keywordText: "keywordTextChange", animating: "animating", nodeClick: "nodeClick" }, host: { listeners: { "animationend": "done()", "animationstart": "start()" }, properties: { "animate.enter": "this.animateEnter", "animate.leave": "this.animateLeave" } }, viewQueries: [{ propertyName: "list", first: true, predicate: ["list"], descendants: true, read: XListComponent, isSignal: true }], ngImport: i0, template: "<div\r\n #autoCompletePortal\r\n class=\"x-auto-complete-portal\"\r\n tabindex=\"-1\"\r\n (click)=\"inputCom()?.inputFocus('focus'); stopPropagation($event)\"\r\n [style.maxHeight]=\"portalHeight() ? portalHeight() : portalMaxHeight()\"\r\n [style.height]=\"portalHeight()\"\r\n>\r\n @if (portalTemp(); as portalTpl) {\r\n <ng-template [ngTemplateOutlet]=\"portalTpl\" [ngTemplateOutletContext]=\"portalTempContext()\"></ng-template>\r\n } @else {\r\n <x-list\r\n #list\r\n [data]=\"data()!\"\r\n (nodeClick)=\"onNodeClick($event)\"\r\n (keyManagerChange)=\"onActive($event)\"\r\n (keyManagerTabOut)=\"onTabOut()\"\r\n [nodeTpl]=\"nodeTpl()\"\r\n [scrollElement]=\"autoCompletePortal\"\r\n [keywordText]=\"keywordText()\"\r\n [caseSensitive]=\"caseSensitive()\"\r\n [inPortal]=\"true\"\r\n ></x-list>\r\n }\r\n</div>\r\n", styles: ["@charset \"UTF-8\";x-auto-complete-portal{width:100%}.x-auto-complete-portal{color:var(--x-text);width:100%;border-radius:var(--x-border-small-radius);box-shadow:var(--x-box-shadow);position:relative;display:flex;background-color:var(--x-background-100);overflow:hidden auto;max-height:calc(calc(var(--x-font-size) + .875rem) * 6 + var(--x-border-width) * 7)}.x-auto-complete-portal:focus{outline:none}\n"], dependencies: [{ kind: "component", type: XListComponent, selector: "x-list" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
291
320
  }
292
321
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: XAutoCompletePortalComponent, decorators: [{
293
322
  type: Component,
294
- args: [{ selector: `${XAutoCompletePortalPrefix}`, imports: [XListComponent], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\r\n #autoCompletePortal\r\n class=\"x-auto-complete-portal\"\r\n tabindex=\"-1\"\r\n (click)=\"inputCom()?.inputFocus('focus'); stopPropagation($event)\"\r\n [style.maxHeight]=\"portalHeight() ? portalHeight() : portalMaxHeight()\"\r\n [style.height]=\"portalHeight()\"\r\n>\r\n <x-list\r\n #list\r\n [data]=\"data()!\"\r\n (nodeClick)=\"onNodeClick($event)\"\r\n (keyManagerChange)=\"onActive($event)\"\r\n (keyManagerTabOut)=\"onTabOut()\"\r\n [nodeTpl]=\"nodeTpl()\"\r\n [scrollElement]=\"autoCompletePortal\"\r\n [keywordText]=\"keywordText()\"\r\n [caseSensitive]=\"caseSensitive()\"\r\n [inPortal]=\"true\"\r\n ></x-list>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";x-auto-complete-portal{width:100%}.x-auto-complete-portal{color:var(--x-text);width:100%;border-radius:var(--x-border-small-radius);box-shadow:var(--x-box-shadow);position:relative;display:flex;background-color:var(--x-background-100);overflow:hidden auto;max-height:calc(calc(var(--x-font-size) + .875rem) * 6 + var(--x-border-width) * 7)}.x-auto-complete-portal:focus{outline:none}\n"] }]
323
+ args: [{ selector: `${XAutoCompletePortalPrefix}`, imports: [XListComponent, NgTemplateOutlet], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\r\n #autoCompletePortal\r\n class=\"x-auto-complete-portal\"\r\n tabindex=\"-1\"\r\n (click)=\"inputCom()?.inputFocus('focus'); stopPropagation($event)\"\r\n [style.maxHeight]=\"portalHeight() ? portalHeight() : portalMaxHeight()\"\r\n [style.height]=\"portalHeight()\"\r\n>\r\n @if (portalTemp(); as portalTpl) {\r\n <ng-template [ngTemplateOutlet]=\"portalTpl\" [ngTemplateOutletContext]=\"portalTempContext()\"></ng-template>\r\n } @else {\r\n <x-list\r\n #list\r\n [data]=\"data()!\"\r\n (nodeClick)=\"onNodeClick($event)\"\r\n (keyManagerChange)=\"onActive($event)\"\r\n (keyManagerTabOut)=\"onTabOut()\"\r\n [nodeTpl]=\"nodeTpl()\"\r\n [scrollElement]=\"autoCompletePortal\"\r\n [keywordText]=\"keywordText()\"\r\n [caseSensitive]=\"caseSensitive()\"\r\n [inPortal]=\"true\"\r\n ></x-list>\r\n }\r\n</div>\r\n", styles: ["@charset \"UTF-8\";x-auto-complete-portal{width:100%}.x-auto-complete-portal{color:var(--x-text);width:100%;border-radius:var(--x-border-small-radius);box-shadow:var(--x-box-shadow);position:relative;display:flex;background-color:var(--x-background-100);overflow:hidden auto;max-height:calc(calc(var(--x-font-size) + .875rem) * 6 + var(--x-border-width) * 7)}.x-auto-complete-portal:focus{outline:none}\n"] }]
295
324
  }], propDecorators: { animateEnter: [{
296
325
  type: HostBinding,
297
326
  args: ['animate.enter']
@@ -304,21 +333,27 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.5", ngImpor
304
333
  }], start: [{
305
334
  type: HostListener,
306
335
  args: ['animationstart']
307
- }], list: [{ type: i0.ViewChild, args: ['list', { ...{ read: XListComponent }, isSignal: true }] }], data: [{ type: i0.Input, args: [{ isSignal: true, alias: "data", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], placement: [{ type: i0.Input, args: [{ isSignal: true, alias: "placement", required: false }] }], nodeTpl: [{ type: i0.Input, args: [{ isSignal: true, alias: "nodeTpl", required: false }] }], inputCom: [{ type: i0.Input, args: [{ isSignal: true, alias: "inputCom", required: false }] }], keywordText: [{ type: i0.Input, args: [{ isSignal: true, alias: "keywordText", required: false }] }, { type: i0.Output, args: ["keywordTextChange"] }], caseSensitive: [{ type: i0.Input, args: [{ isSignal: true, alias: "caseSensitive", required: false }] }], portalMaxHeight: [{ type: i0.Input, args: [{ isSignal: true, alias: "portalMaxHeight", required: false }] }], portalHeight: [{ type: i0.Input, args: [{ isSignal: true, alias: "portalHeight", required: false }] }], portalWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "portalWidth", required: false }] }], animating: [{ type: i0.Output, args: ["animating"] }], nodeClick: [{ type: i0.Output, args: ["nodeClick"] }] } });
336
+ }], list: [{ type: i0.ViewChild, args: ['list', { ...{ read: XListComponent }, isSignal: true }] }], data: [{ type: i0.Input, args: [{ isSignal: true, alias: "data", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], placement: [{ type: i0.Input, args: [{ isSignal: true, alias: "placement", required: false }] }], nodeTpl: [{ type: i0.Input, args: [{ isSignal: true, alias: "nodeTpl", required: false }] }], inputCom: [{ type: i0.Input, args: [{ isSignal: true, alias: "inputCom", required: false }] }], keywordText: [{ type: i0.Input, args: [{ isSignal: true, alias: "keywordText", required: false }] }, { type: i0.Output, args: ["keywordTextChange"] }], caseSensitive: [{ type: i0.Input, args: [{ isSignal: true, alias: "caseSensitive", required: false }] }], portalMaxHeight: [{ type: i0.Input, args: [{ isSignal: true, alias: "portalMaxHeight", required: false }] }], portalHeight: [{ type: i0.Input, args: [{ isSignal: true, alias: "portalHeight", required: false }] }], portalWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "portalWidth", required: false }] }], animating: [{ type: i0.Output, args: ["animating"] }], nodeClick: [{ type: i0.Output, args: ["nodeClick"] }], portalTemp: [{ type: i0.Input, args: [{ isSignal: true, alias: "portalTemp", required: false }] }] } });
308
337
 
309
338
  class XAutoCompleteComponent extends XAutoCompleteProperty {
339
+ get hostWidth() {
340
+ return this.widthComputed() ? this.inputStyle()?.['width'] : null;
341
+ }
310
342
  constructor() {
311
343
  super();
312
344
  this.inputCom = viewChild.required('inputCom', { read: XInputComponent });
313
345
  this.nodes = signal([], ...(ngDevMode ? [{ debugName: "nodes" }] : []));
314
346
  this.searchNodes = signal([], ...(ngDevMode ? [{ debugName: "searchNodes" }] : []));
315
- this.icon = signal('', ...(ngDevMode ? [{ debugName: "icon" }] : []));
316
347
  this.iconSpin = signal(false, ...(ngDevMode ? [{ debugName: "iconSpin" }] : []));
317
348
  this.animating = signal(false, ...(ngDevMode ? [{ debugName: "animating" }] : []));
318
349
  this.valueTplContextSignal = signal({ $node: null, $isValue: true }, ...(ngDevMode ? [{ debugName: "valueTplContextSignal" }] : []));
319
350
  this.valueTplContextComputed = computed(() => {
320
351
  return this.valueTplContext() ? this.valueTplContext() : this.valueTplContextSignal();
321
352
  }, ...(ngDevMode ? [{ debugName: "valueTplContextComputed" }] : []));
353
+ this.widthComputed = computed(() => {
354
+ const inputStyle = this.inputStyle() || {};
355
+ return !!inputStyle?.['width'];
356
+ }, ...(ngDevMode ? [{ debugName: "widthComputed" }] : []));
322
357
  this.inputChange = new BehaviorSubject(null);
323
358
  this.closeSubject = new Subject();
324
359
  this.keydownSubject = new Subject();
@@ -341,6 +376,7 @@ class XAutoCompleteComponent extends XAutoCompleteProperty {
341
376
  effect(() => this.portalComponent()?.setInput('caseSensitive', this.caseSensitive()));
342
377
  effect(() => this.portalComponent()?.setInput('inputCom', this.inputCom()));
343
378
  effect(() => this.portalComponent()?.setInput('keywordText', this.inputChanged()));
379
+ effect(() => this.portalComponent()?.setInput('portalTemp', this.portalTemp()));
344
380
  }
345
381
  ngOnInit() {
346
382
  this.setSubject();
@@ -431,10 +467,11 @@ class XAutoCompleteComponent extends XAutoCompleteProperty {
431
467
  return;
432
468
  this.active.set(true);
433
469
  if ((XIsObservable(this.data()) && this.nodes.length === 0) || XIsFunction(this.data())) {
470
+ const beforeIcon = this.icon() || '';
434
471
  this.icon.set('fto-loader');
435
472
  this.iconSpin.set(true);
436
473
  XSetData(this.data(), this.unSubject, true, this.value()).subscribe((x) => {
437
- this.icon.set('');
474
+ this.icon.set(beforeIcon);
438
475
  this.iconSpin.set(false);
439
476
  this.nodes.set(x);
440
477
  this.createPortal();
@@ -551,10 +588,11 @@ class XAutoCompleteComponent extends XAutoCompleteProperty {
551
588
  this.closeSubject.next();
552
589
  }
553
590
  else {
591
+ const beforeIcon = this.icon() || '';
554
592
  this.icon.set('fto-loader');
555
593
  this.iconSpin.set(true);
556
594
  XSetData(this.data(), this.unSubject, true, value).subscribe((x) => {
557
- this.icon.set('');
595
+ this.icon.set(beforeIcon);
558
596
  this.iconSpin.set(false);
559
597
  this.nodes.set(x);
560
598
  this.searchNodes.set(this.nodes());
@@ -586,19 +624,29 @@ class XAutoCompleteComponent extends XAutoCompleteProperty {
586
624
  onKeydown($event) {
587
625
  this.keydownSubject.next($event);
588
626
  }
627
+ portalClose() {
628
+ this.closeSubject.next();
629
+ }
630
+ portalNodeClick(node) {
631
+ this.onNodeClick(node);
632
+ }
589
633
  onInput(_event) {
590
634
  this.formControlValidator();
591
635
  setTimeout(() => {
636
+ this.searchChange.emit(this.value());
592
637
  this.inputChange.next(this.value());
593
638
  });
594
639
  }
595
640
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: XAutoCompleteComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
596
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.3.5", type: XAutoCompleteComponent, isStandalone: true, selector: "x-auto-complete", providers: [XValueAccessor(XAutoCompleteComponent)], viewQueries: [{ propertyName: "inputCom", first: true, predicate: ["inputCom"], descendants: true, read: XInputComponent, isSignal: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div #autoComplete class=\"x-auto-complete\">\r\n <div class=\"x-auto-complete-row\">\r\n <x-input\r\n #inputCom\r\n type=\"text\"\r\n [label]=\"label()\"\r\n [labelWidth]=\"labelWidth()\"\r\n [labelAlign]=\"labelAlign()\"\r\n [justify]=\"justify()\"\r\n [align]=\"align()\"\r\n [direction]=\"direction()\"\r\n [disabled]=\"disabledComputed()\"\r\n [required]=\"requiredComputed()\"\r\n [validator]=\"validatorComputed()\"\r\n [inputValidator]=\"inputValidator()\"\r\n [icon]=\"icon()\"\r\n [iconSpin]=\"iconSpin()\"\r\n [placeholder]=\"placeholder()\"\r\n [readonly]=\"readonly()\"\r\n [clearable]=\"false\"\r\n [(ngModel)]=\"value\"\r\n [valueTpl]=\"valueTpl()\"\r\n [valueTplContext]=\"valueTplContextComputed()\"\r\n [size]=\"size()\"\r\n [bordered]=\"bordered()\"\r\n [inputStyle]=\"inputStyle()\"\r\n [before]=\"before()\"\r\n [after]=\"after()\"\r\n [pattern]=\"patternComputed()\"\r\n [message]=\"messageComputed()\"\r\n [pointer]=\"pointer()\"\r\n [variant]=\"variant()\"\r\n [floatLabel]=\"floatLabel()\"\r\n [floatFixed]=\"floatFixed()\"\r\n [(active)]=\"active\"\r\n (xInput)=\"onInput($event)\"\r\n (xKeydown)=\"onKeydown($event)\"\r\n (xClick)=\"showPortal()\"\r\n ></x-input>\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";x-auto-complete{display:inline-block;width:12rem}.x-auto-complete{margin:0;padding:0}.x-auto-complete{width:100%}.x-auto-complete x-input{width:100%}.x-auto-complete-portal{color:var(--x-text);width:100%;border-radius:var(--x-border-small-radius);box-shadow:var(--x-box-shadow);position:relative;display:flex;background-color:var(--x-background-100);overflow:hidden auto;max-height:calc(calc(var(--x-font-size) + .875rem) * 6 + var(--x-border-width) * 7)}.x-auto-complete-portal:focus{outline:none}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "component", type: XInputComponent, selector: "x-input" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
641
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.3.5", type: XAutoCompleteComponent, isStandalone: true, selector: "x-auto-complete", host: { properties: { "style.width": "this.hostWidth" } }, providers: [XValueAccessor(XAutoCompleteComponent)], viewQueries: [{ propertyName: "inputCom", first: true, predicate: ["inputCom"], descendants: true, read: XInputComponent, isSignal: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div #autoComplete class=\"x-auto-complete\">\r\n <div class=\"x-auto-complete-row\">\r\n <x-input\r\n #inputCom\r\n type=\"text\"\r\n [label]=\"label()\"\r\n [labelWidth]=\"labelWidth()\"\r\n [labelAlign]=\"labelAlign()\"\r\n [justify]=\"justify()\"\r\n [align]=\"align()\"\r\n [direction]=\"direction()\"\r\n [disabled]=\"disabledComputed()\"\r\n [required]=\"requiredComputed()\"\r\n [validator]=\"validatorComputed()\"\r\n [inputValidator]=\"inputValidator()\"\r\n [icon]=\"icon()\"\r\n [iconSpin]=\"iconSpin()\"\r\n [iconLayout]=\"iconLayout()\"\r\n [placeholder]=\"placeholder()\"\r\n [readonly]=\"readonly()\"\r\n [clearable]=\"false\"\r\n [(ngModel)]=\"value\"\r\n [valueTpl]=\"valueTpl()\"\r\n [valueTplContext]=\"valueTplContextComputed()\"\r\n [size]=\"size()\"\r\n [bordered]=\"bordered()\"\r\n [inputStyle]=\"inputStyle()\"\r\n [before]=\"before()\"\r\n [after]=\"after()\"\r\n [pattern]=\"patternComputed()\"\r\n [message]=\"messageComputed()\"\r\n [pointer]=\"pointer()\"\r\n [variant]=\"variant()\"\r\n [floatLabel]=\"floatLabel()\"\r\n [floatFixed]=\"floatFixed()\"\r\n [(active)]=\"active\"\r\n (xInput)=\"onInput($event)\"\r\n (xKeydown)=\"onKeydown($event)\"\r\n (xClick)=\"showPortal()\"\r\n ></x-input>\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";x-auto-complete{display:inline-block;width:12rem}.x-auto-complete{margin:0;padding:0}.x-auto-complete{width:100%}.x-auto-complete x-input{width:100%}.x-auto-complete-portal{color:var(--x-text);width:100%;border-radius:var(--x-border-small-radius);box-shadow:var(--x-box-shadow);position:relative;display:flex;background-color:var(--x-background-100);overflow:hidden auto;max-height:calc(calc(var(--x-font-size) + .875rem) * 6 + var(--x-border-width) * 7)}.x-auto-complete-portal:focus{outline:none}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "component", type: XInputComponent, selector: "x-input" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
597
642
  }
598
643
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: XAutoCompleteComponent, decorators: [{
599
644
  type: Component,
600
- args: [{ selector: `${XAutoCompletePrefix}`, imports: [FormsModule, ReactiveFormsModule, XInputComponent], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [XValueAccessor(XAutoCompleteComponent)], template: "<div #autoComplete class=\"x-auto-complete\">\r\n <div class=\"x-auto-complete-row\">\r\n <x-input\r\n #inputCom\r\n type=\"text\"\r\n [label]=\"label()\"\r\n [labelWidth]=\"labelWidth()\"\r\n [labelAlign]=\"labelAlign()\"\r\n [justify]=\"justify()\"\r\n [align]=\"align()\"\r\n [direction]=\"direction()\"\r\n [disabled]=\"disabledComputed()\"\r\n [required]=\"requiredComputed()\"\r\n [validator]=\"validatorComputed()\"\r\n [inputValidator]=\"inputValidator()\"\r\n [icon]=\"icon()\"\r\n [iconSpin]=\"iconSpin()\"\r\n [placeholder]=\"placeholder()\"\r\n [readonly]=\"readonly()\"\r\n [clearable]=\"false\"\r\n [(ngModel)]=\"value\"\r\n [valueTpl]=\"valueTpl()\"\r\n [valueTplContext]=\"valueTplContextComputed()\"\r\n [size]=\"size()\"\r\n [bordered]=\"bordered()\"\r\n [inputStyle]=\"inputStyle()\"\r\n [before]=\"before()\"\r\n [after]=\"after()\"\r\n [pattern]=\"patternComputed()\"\r\n [message]=\"messageComputed()\"\r\n [pointer]=\"pointer()\"\r\n [variant]=\"variant()\"\r\n [floatLabel]=\"floatLabel()\"\r\n [floatFixed]=\"floatFixed()\"\r\n [(active)]=\"active\"\r\n (xInput)=\"onInput($event)\"\r\n (xKeydown)=\"onKeydown($event)\"\r\n (xClick)=\"showPortal()\"\r\n ></x-input>\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";x-auto-complete{display:inline-block;width:12rem}.x-auto-complete{margin:0;padding:0}.x-auto-complete{width:100%}.x-auto-complete x-input{width:100%}.x-auto-complete-portal{color:var(--x-text);width:100%;border-radius:var(--x-border-small-radius);box-shadow:var(--x-box-shadow);position:relative;display:flex;background-color:var(--x-background-100);overflow:hidden auto;max-height:calc(calc(var(--x-font-size) + .875rem) * 6 + var(--x-border-width) * 7)}.x-auto-complete-portal:focus{outline:none}\n"] }]
601
- }], ctorParameters: () => [], propDecorators: { inputCom: [{ type: i0.ViewChild, args: ['inputCom', { ...{ read: XInputComponent }, isSignal: true }] }] } });
645
+ args: [{ selector: `${XAutoCompletePrefix}`, imports: [FormsModule, ReactiveFormsModule, XInputComponent], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [XValueAccessor(XAutoCompleteComponent)], template: "<div #autoComplete class=\"x-auto-complete\">\r\n <div class=\"x-auto-complete-row\">\r\n <x-input\r\n #inputCom\r\n type=\"text\"\r\n [label]=\"label()\"\r\n [labelWidth]=\"labelWidth()\"\r\n [labelAlign]=\"labelAlign()\"\r\n [justify]=\"justify()\"\r\n [align]=\"align()\"\r\n [direction]=\"direction()\"\r\n [disabled]=\"disabledComputed()\"\r\n [required]=\"requiredComputed()\"\r\n [validator]=\"validatorComputed()\"\r\n [inputValidator]=\"inputValidator()\"\r\n [icon]=\"icon()\"\r\n [iconSpin]=\"iconSpin()\"\r\n [iconLayout]=\"iconLayout()\"\r\n [placeholder]=\"placeholder()\"\r\n [readonly]=\"readonly()\"\r\n [clearable]=\"false\"\r\n [(ngModel)]=\"value\"\r\n [valueTpl]=\"valueTpl()\"\r\n [valueTplContext]=\"valueTplContextComputed()\"\r\n [size]=\"size()\"\r\n [bordered]=\"bordered()\"\r\n [inputStyle]=\"inputStyle()\"\r\n [before]=\"before()\"\r\n [after]=\"after()\"\r\n [pattern]=\"patternComputed()\"\r\n [message]=\"messageComputed()\"\r\n [pointer]=\"pointer()\"\r\n [variant]=\"variant()\"\r\n [floatLabel]=\"floatLabel()\"\r\n [floatFixed]=\"floatFixed()\"\r\n [(active)]=\"active\"\r\n (xInput)=\"onInput($event)\"\r\n (xKeydown)=\"onKeydown($event)\"\r\n (xClick)=\"showPortal()\"\r\n ></x-input>\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";x-auto-complete{display:inline-block;width:12rem}.x-auto-complete{margin:0;padding:0}.x-auto-complete{width:100%}.x-auto-complete x-input{width:100%}.x-auto-complete-portal{color:var(--x-text);width:100%;border-radius:var(--x-border-small-radius);box-shadow:var(--x-box-shadow);position:relative;display:flex;background-color:var(--x-background-100);overflow:hidden auto;max-height:calc(calc(var(--x-font-size) + .875rem) * 6 + var(--x-border-width) * 7)}.x-auto-complete-portal:focus{outline:none}\n"] }]
646
+ }], ctorParameters: () => [], propDecorators: { inputCom: [{ type: i0.ViewChild, args: ['inputCom', { ...{ read: XInputComponent }, isSignal: true }] }], hostWidth: [{
647
+ type: HostBinding,
648
+ args: ['style.width']
649
+ }] } });
602
650
 
603
651
  class XAutoCompleteModule {
604
652
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: XAutoCompleteModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }