@alauda/ui 6.4.6-beta.3 → 6.4.6-beta.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (102) hide show
  1. package/alauda-ui.d.ts +3 -0
  2. package/button/button.types.d.ts +9 -0
  3. package/esm2020/accordion/accordion-item/accordion-item.component.mjs +3 -1
  4. package/esm2020/alauda-ui.mjs +4 -1
  5. package/esm2020/anchor/anchor.component.mjs +2 -1
  6. package/esm2020/back-top/back-top.component.mjs +4 -2
  7. package/esm2020/button/button.component.mjs +2 -1
  8. package/esm2020/button/button.types.mjs +10 -1
  9. package/esm2020/date-picker/calendar/constant.mjs +2 -1
  10. package/esm2020/date-picker/calendar/header/component.mjs +5 -1
  11. package/esm2020/date-picker/calendar/panel/picker-panel.mjs +5 -1
  12. package/esm2020/date-picker/calendar/range-picker-panel/component.mjs +3 -1
  13. package/esm2020/date-picker/calendar/util.mjs +2 -1
  14. package/esm2020/dialog/dialog-content/dialog-content.component.mjs +2 -1
  15. package/esm2020/dialog/dialog.service.mjs +2 -1
  16. package/esm2020/drawer/component/drawer.component.mjs +4 -1
  17. package/esm2020/drawer/component/helper-directives.mjs +5 -1
  18. package/esm2020/form/common-form.mjs +8 -1
  19. package/esm2020/icon/icon-register.service.mjs +2 -1
  20. package/esm2020/input/autosize.directive.mjs +7 -2
  21. package/esm2020/input/input.component.mjs +5 -1
  22. package/esm2020/input/search/search.component.mjs +2 -2
  23. package/esm2020/input/tags-input/tags-input.component.mjs +7 -2
  24. package/esm2020/message/message.config.mjs +6 -1
  25. package/esm2020/notification/notification.component.mjs +5 -1
  26. package/esm2020/paginator/paginator-intl.mjs +12 -1
  27. package/esm2020/paginator/paginator.component.mjs +9 -1
  28. package/esm2020/radio/radio-button/radio-button.component.mjs +2 -1
  29. package/esm2020/radio/radio-group/radio-group.component.mjs +4 -1
  30. package/esm2020/radio/radio.component.mjs +2 -1
  31. package/esm2020/scrolling/fixed-size-table-virtual-scroll-strategy.mjs +3 -1
  32. package/esm2020/scrolling/fixed-size-table-virtual-scroll.directive.mjs +3 -1
  33. package/esm2020/scrolling/fixed-size-virtual-scroll.directive.mjs +2 -1
  34. package/esm2020/select/base-select.mjs +5 -2
  35. package/esm2020/select/multi-select/multi-select.component.mjs +4 -2
  36. package/esm2020/select/select.component.mjs +2 -1
  37. package/esm2020/select/validators.mjs +6 -2
  38. package/esm2020/sort/sort-errors.mjs +5 -1
  39. package/esm2020/sort/sort-header.component.mjs +5 -1
  40. package/esm2020/sort/sort.directive.mjs +2 -1
  41. package/esm2020/steps/steps.component.mjs +5 -1
  42. package/esm2020/table/table-cell-def.directive.mjs +5 -1
  43. package/esm2020/table/table-cell.directive.mjs +3 -1
  44. package/esm2020/table/table-column-def.directive.mjs +7 -1
  45. package/esm2020/table/table-header-cell-def.directive.mjs +5 -1
  46. package/esm2020/table/table-header-cell.directive.mjs +3 -1
  47. package/esm2020/table/table-header-row-def.directive.mjs +5 -1
  48. package/esm2020/table/table-header-row.component.mjs +2 -1
  49. package/esm2020/table/table-row-def.directive.mjs +6 -1
  50. package/esm2020/table/table-row.component.mjs +2 -1
  51. package/esm2020/table/table-scroll.directive.mjs +2 -1
  52. package/esm2020/table/table.component.mjs +4 -1
  53. package/esm2020/tabs/tab-body.component.mjs +19 -1
  54. package/esm2020/tabs/tab-context.service.mjs +4 -1
  55. package/esm2020/tabs/tab-group.component.mjs +46 -1
  56. package/esm2020/tabs/tab-header-active-indicator.component.mjs +10 -1
  57. package/esm2020/tabs/tab-header.component.mjs +106 -3
  58. package/esm2020/tabs/tab.component.mjs +15 -1
  59. package/esm2020/tabs/tabs.types.mjs +4 -1
  60. package/esm2020/tag/tag.component.mjs +2 -1
  61. package/esm2020/time-picker/panel/panel.component.mjs +3 -1
  62. package/esm2020/tooltip/tooltip-intl.mjs +7 -1
  63. package/esm2020/tree-select/tree-select.component.mjs +2 -1
  64. package/esm2020/types.mjs +4 -1
  65. package/esm2020/utils/bem.mjs +2 -1
  66. package/esm2020/utils/coercion.mjs +5 -1
  67. package/fesm2015/alauda-ui.mjs +375 -10
  68. package/fesm2015/alauda-ui.mjs.map +1 -1
  69. package/fesm2020/alauda-ui.mjs +375 -10
  70. package/fesm2020/alauda-ui.mjs.map +1 -1
  71. package/form/common-form.d.ts +7 -0
  72. package/input/autosize.directive.d.ts +3 -0
  73. package/input/input.component.d.ts +3 -0
  74. package/message/message.config.d.ts +20 -0
  75. package/notification/notification.component.d.ts +4 -0
  76. package/package.json +2 -3
  77. package/paginator/paginator-intl.d.ts +9 -0
  78. package/paginator/paginator.component.d.ts +14 -0
  79. package/radio/radio-group/radio-group.component.d.ts +3 -0
  80. package/select/base-select.d.ts +3 -0
  81. package/sort/sort-errors.d.ts +4 -0
  82. package/steps/steps.component.d.ts +3 -0
  83. package/steps/types.d.ts +3 -0
  84. package/table/table-cell-def.directive.d.ts +4 -0
  85. package/table/table-cell.directive.d.ts +1 -0
  86. package/table/table-column-def.directive.d.ts +4 -0
  87. package/table/table-header-cell-def.directive.d.ts +4 -0
  88. package/table/table-header-cell.directive.d.ts +1 -0
  89. package/table/table-header-row-def.directive.d.ts +4 -0
  90. package/table/table-header-row.component.d.ts +1 -0
  91. package/table/table-row-def.directive.d.ts +5 -0
  92. package/table/table-row.component.d.ts +1 -0
  93. package/tabs/tab-body.component.d.ts +16 -0
  94. package/tabs/tab-context.service.d.ts +3 -0
  95. package/tabs/tab-group.component.d.ts +28 -0
  96. package/tabs/tab-header-active-indicator.component.d.ts +9 -0
  97. package/tabs/tab-header.component.d.ts +83 -0
  98. package/tabs/tab.component.d.ts +18 -0
  99. package/tabs/tabs.types.d.ts +3 -0
  100. package/theme/_theme-preset.scss +2 -0
  101. package/tooltip/tooltip-intl.d.ts +4 -0
  102. package/types.d.ts +3 -0
@@ -60,6 +60,9 @@ const ComponentSize = {
60
60
  Medium: 'medium',
61
61
  Small: 'small',
62
62
  Mini: 'mini',
63
+ /**
64
+ * represents default internally, @link https://github.com/angular/vscode-ng-language-service/issues/1147
65
+ */
63
66
  Empty: '',
64
67
  };
65
68
 
@@ -71,8 +74,17 @@ const ButtonType = {
71
74
  Danger: 'danger',
72
75
  Text: 'text',
73
76
  Inline: 'inline',
77
+ /**
78
+ * represents default internally, @link https://github.com/angular/vscode-ng-language-service/issues/1147
79
+ */
74
80
  Empty: '',
81
+ /**
82
+ * @deprecated use `ButtonType.Danger` instead
83
+ */
75
84
  Error: 'danger',
85
+ /**
86
+ * @deprecated use `ButtonType.Default` instead
87
+ */
76
88
  Info: 'default',
77
89
  };
78
90
 
@@ -82,6 +94,7 @@ function sleep(ms = 0) {
82
94
  });
83
95
  }
84
96
 
97
+ // Experimental bem classname helper
85
98
  class Bem {
86
99
  constructor(namespace) {
87
100
  this.namespace = namespace;
@@ -127,6 +140,7 @@ function buildBem(namespace) {
127
140
 
128
141
  function coerceString(val) {
129
142
  var _a;
143
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-call
130
144
  return val == null ? '' : (_a = val === null || val === void 0 ? void 0 : val.toString()) !== null && _a !== void 0 ? _a : '';
131
145
  }
132
146
  function coerceAttrBoolean(val) {
@@ -136,6 +150,9 @@ function coerceNumber(val, fallbackValue = 0) {
136
150
  return _isNumberValue(val) ? Number(val) : fallbackValue;
137
151
  }
138
152
  function _isNumberValue(value) {
153
+ // parseFloat(value) handles most of the cases we're interested in (it treats null, empty string,
154
+ // and other non-number values as NaN, where Number just uses 0) but it considers the string
155
+ // '123hello' to be a valid number. Therefore we also check if Number(value) is NaN.
139
156
  return !isNaN(parseFloat(value)) && !isNaN(Number(value));
140
157
  }
141
158
 
@@ -268,6 +285,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
268
285
  type: Optional
269
286
  }] }];
270
287
  } });
288
+ // eslint-disable-next-line sonar/function-name
271
289
  function ICON_REGISTER_PROVIDER_FACTORY(parentRegister, document, httpClient) {
272
290
  return parentRegister || new IconRegisterService(document, httpClient);
273
291
  }
@@ -495,6 +513,7 @@ class ButtonComponent {
495
513
  return this._size;
496
514
  }
497
515
  set size(val) {
516
+ // when change from other size to default
498
517
  if (!val) {
499
518
  val = ComponentSize.Medium;
500
519
  }
@@ -650,12 +669,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
650
669
  }]
651
670
  }] });
652
671
  class AccordionItemComponent extends CdkAccordionItem {
672
+ // eslint-disable-next-line @typescript-eslint/no-useless-constructor
653
673
  constructor(accordion, cdr, uniqueSelectionDispatcher) {
654
674
  super(accordion, cdr, uniqueSelectionDispatcher);
655
675
  this.background = true;
656
676
  }
657
677
  ngAfterContentInit() {
658
678
  if (this._lazyContentTpl) {
679
+ // Render the content as soon as the accordion becomes open.
659
680
  this.opened
660
681
  .pipe(startWith(null), filter(() => !!this.expanded), take(1))
661
682
  .subscribe(() => {
@@ -944,6 +965,7 @@ class AnchorTreeComponent extends AnchorDirectiveChild {
944
965
  watchLabelsChange() {
945
966
  this.depose$$.next();
946
967
  const cdr = this.injector.get(ChangeDetectorRef);
968
+ // FIXME: Is there any better way to achieve this?
947
969
  combineLatest(this.treeItems.map(({ labelChange }) => labelChange).filter(Boolean))
948
970
  .pipe(debounceTime(0), takeUntil(this.depose$$))
949
971
  .subscribe(() => cdr.markForCheck());
@@ -1661,6 +1683,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
1661
1683
  args: ['auiTooltipActive']
1662
1684
  }] } });
1663
1685
 
1686
+ /**
1687
+ * Texts to render on the code editor.
1688
+ */
1664
1689
  class TooltipCopyIntl {
1665
1690
  constructor() {
1666
1691
  this.copyTip = 'Click to copy';
@@ -1673,10 +1698,13 @@ TooltipCopyIntl.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", vers
1673
1698
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: TooltipCopyIntl, decorators: [{
1674
1699
  type: Injectable
1675
1700
  }] });
1701
+ // eslint-disable-next-line sonar/function-name
1676
1702
  function TOOLTIP_COPY_INTL_PROVIDER_FACTORY(parentIntl) {
1677
1703
  return parentIntl || new TooltipCopyIntl();
1678
1704
  }
1705
+ /** @docs-private */
1679
1706
  const TOOLTIP_COPY_INTL_INTL_PROVIDER = {
1707
+ // If there is already an CodeEditorIntl available, use that. Otherwise, provide a new one.
1680
1708
  provide: TooltipCopyIntl,
1681
1709
  deps: [[new Optional(), new SkipSelf(), TooltipCopyIntl]],
1682
1710
  useFactory: TOOLTIP_COPY_INTL_PROVIDER_FACTORY,
@@ -2135,7 +2163,9 @@ class BackTopComponent {
2135
2163
  this.target$$ = new BehaviorSubject(this.target);
2136
2164
  this.visibilityHeight$$ = new BehaviorSubject(this.visibilityHeight);
2137
2165
  this.isDisplayed$ = combineLatest([
2138
- this.target$$.asObservable().pipe(map(target => this.getTarget(target)), switchMap(target => fromEvent(target, 'scroll').pipe(throttleTime(50, undefined, { leading: true, trailing: true }), map(() => this.getTargetScrollTop(target))))),
2166
+ this.target$$.asObservable().pipe(map(target => this.getTarget(target)), switchMap(target => fromEvent(target, 'scroll').pipe(
2167
+ // use default scheduler
2168
+ throttleTime(50, undefined, { leading: true, trailing: true }), map(() => this.getTargetScrollTop(target))))),
2139
2169
  this.visibilityHeight$$,
2140
2170
  ]).pipe(map(([scrollTop, visibilityHeight]) => scrollTop >= visibilityHeight), distinctUntilChanged());
2141
2171
  }
@@ -2402,6 +2432,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
2402
2432
  }]
2403
2433
  }] });
2404
2434
 
2435
+ /**
2436
+ * form control 内部不保持 value 属性,当不使用 ngModel 时可以通过 [(value)] 实现双向绑定;
2437
+ * 也可以分别传入 value 和 监听 valueChange 事件以实现阻断用户操作的功能。
2438
+ */
2405
2439
  class CommonFormControl {
2406
2440
  constructor(cdr) {
2407
2441
  this.cdr = cdr;
@@ -2480,6 +2514,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
2480
2514
  }], valueChange: [{
2481
2515
  type: Output
2482
2516
  }] } });
2517
+ /**
2518
+ * @deprecated use {@link CommonFormControl} instead
2519
+ */
2483
2520
  const CommonForm = CommonFormControl;
2484
2521
 
2485
2522
  const LabelPosition = {
@@ -3008,6 +3045,7 @@ const YEAR = 'year';
3008
3045
  const HOUR = 'hour';
3009
3046
  const MINUTE = 'minute';
3010
3047
  const SECOND = 'second';
3048
+ // 根据日期类型,分为年,月,日
3011
3049
  var DatePickerType;
3012
3050
  (function (DatePickerType) {
3013
3051
  DatePickerType["Day"] = "date";
@@ -3060,6 +3098,7 @@ function getDatePanelIterable(date, navRange, weekStartDay) {
3060
3098
  counts = YEAR_PANEL_COLUMN_COUNT * YEAR_PANEL_ROW_COUNT;
3061
3099
  break;
3062
3100
  }
3101
+ // No default
3063
3102
  }
3064
3103
  let i = 0;
3065
3104
  return {
@@ -3286,18 +3325,22 @@ class CalendarHeaderComponent {
3286
3325
  get headerRange() {
3287
3326
  return calcRangeValue(this.dateNavRange, this.anchor);
3288
3327
  }
3328
+ // maxAvail > current date :right btn hide
3329
+ // minAvail > current date :left btn hide
3289
3330
  shouldShowNav(type, side) {
3290
3331
  var _a;
3291
3332
  const availValue = (_a = (side === Side.Left ? this._minAvail : this._maxAvail)) === null || _a === void 0 ? void 0 : _a.clone();
3292
3333
  if (!availValue) {
3293
3334
  return true;
3294
3335
  }
3336
+ // 对于年的判别,2014-5-1至2015-6-1日,仍当展示按钮
3295
3337
  const constrainDate = [DateNavRange.Month, DateNavRange.Year].includes(type)
3296
3338
  ? availValue.add(side === Side.Left ? 1 : -1, type)
3297
3339
  : availValue;
3298
3340
  return (this.compareNavValue(type, constrainDate, this.anchor) ===
3299
3341
  (side === Side.Left ? -1 : 1));
3300
3342
  }
3343
+ // @return isBetween|isEqual:0, isBefore:-1,isAfter:1
3301
3344
  compareNavValue(type, constrain, anchor) {
3302
3345
  const range = calcRangeValue(type, anchor);
3303
3346
  const constrainValue = constrain;
@@ -3387,9 +3430,12 @@ class PickerPanelComponent {
3387
3430
  return composeDisabledDateFn(date => this.minDate && date.isBefore(this.minDate), date => this.maxDate && date.isAfter(this.maxDate), this.disabledDate);
3388
3431
  }
3389
3432
  ngOnChanges() {
3433
+ // 如果 dateValue 是一个数组,必然是同一个面板上,否则应当给与不同的面板不同的dateValue值
3390
3434
  const headerRange = calcRangeValue(this.navRange, this.anchor);
3391
3435
  this.renderPanelData(headerRange.start, this.navRange);
3392
3436
  }
3437
+ // 根据当前数据,计算渲染表格
3438
+ // eslint-disable-next-line sonarjs/cognitive-complexity
3393
3439
  renderPanelData(date, navRange) {
3394
3440
  const value = [];
3395
3441
  let colCounts = 0;
@@ -3414,6 +3460,7 @@ class PickerPanelComponent {
3414
3460
  rowCounts = MONTH_PANEL_ROW_COUNT;
3415
3461
  break;
3416
3462
  }
3463
+ // No default
3417
3464
  }
3418
3465
  for (let k = 0; k < rowCounts; k++) {
3419
3466
  const row = [];
@@ -3568,6 +3615,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
3568
3615
  }]
3569
3616
  }] });
3570
3617
 
3618
+ /* eslint-disable sonarjs/no-duplicate-string */
3571
3619
  class InputComponent {
3572
3620
  constructor(elementRef, renderer) {
3573
3621
  this.elementRef = elementRef;
@@ -3575,6 +3623,9 @@ class InputComponent {
3575
3623
  this._size = ComponentSize.Medium;
3576
3624
  this._disabled = false;
3577
3625
  this.size$ = new BehaviorSubject(this.size);
3626
+ /**
3627
+ * workaround for @link https://github.com/microsoft/TypeScript/pull/42425
3628
+ */
3578
3629
  this.disabled$ = new BehaviorSubject(this.disabled);
3579
3630
  this.renderer.addClass(this.elementRef.nativeElement, 'aui-input');
3580
3631
  this.renderer.addClass(this.elementRef.nativeElement, 'aui-input--' + this.size);
@@ -3676,6 +3727,7 @@ class TimePickerPanelComponent extends CommonFormControl {
3676
3727
  this.ComponentSize = ComponentSize;
3677
3728
  this.bem = bem$4;
3678
3729
  this.enabledColumns = 0;
3730
+ // 用于控制初次滚动,是否展示滚动动画效果
3679
3731
  this.firstScrolled = false;
3680
3732
  this.model$.subscribe(_ => {
3681
3733
  this.cdr.markForCheck();
@@ -3793,6 +3845,7 @@ class TimePickerPanelComponent extends CommonFormControl {
3793
3845
  }
3794
3846
  else {
3795
3847
  const difference = targetOffset - currentTop;
3848
+ // 每个tick滚动距离
3796
3849
  const perTick = (difference / duration) * 10;
3797
3850
  requestAnimationFrame(() => {
3798
3851
  element.scrollTop = currentTop + perTick;
@@ -4165,6 +4218,7 @@ class DateRangePickerPanelComponent extends CommonFormControl {
4165
4218
  this.FOOTER_DATE_FORMAT = 'YYYY-MM-dd';
4166
4219
  this.leftAnchor = dayjs();
4167
4220
  this.rightAnchor = dayjs().add(1, MONTH);
4221
+ // 用于存放 range data 序列,数量为 2 时清除
4168
4222
  this.rangeValue = [];
4169
4223
  this.leftDisabledTimeFn = this.getDisabledTimeCachedFn(Side.Left);
4170
4224
  this.rightDisabledTimeFn = this.getDisabledTimeCachedFn(Side.Right);
@@ -4194,6 +4248,7 @@ class DateRangePickerPanelComponent extends CommonFormControl {
4194
4248
  this.rightDateRange = type;
4195
4249
  }
4196
4250
  }
4251
+ // range 组件范围受控
4197
4252
  getDateDisabledFn(side, constrainValue) {
4198
4253
  return composeDisabledDateFn((date, navRange) => {
4199
4254
  if (navRange === DateNavRange.Month) {
@@ -4445,6 +4500,9 @@ const DEFAULT_VALUE = {
4445
4500
  minRows: 3,
4446
4501
  maxRows: 6,
4447
4502
  };
4503
+ /**
4504
+ * Directive to automatically resize a textarea to fit its content.
4505
+ */
4448
4506
  class AutosizeDirective {
4449
4507
  constructor(elRef, ngControl) {
4450
4508
  this.elRef = elRef;
@@ -4483,7 +4541,9 @@ AutosizeDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", vers
4483
4541
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: AutosizeDirective, decorators: [{
4484
4542
  type: Directive,
4485
4543
  args: [{
4486
- selector: 'textarea[autosize][ngModel],textarea[autosize][formControl],textarea[autosize][formControlName]',
4544
+ selector:
4545
+ // eslint-disable-next-line @angular-eslint/directive-selector
4546
+ 'textarea[autosize][ngModel],textarea[autosize][formControl],textarea[autosize][formControlName]',
4487
4547
  exportAs: 'TextareaAutosize',
4488
4548
  }]
4489
4549
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i4.NgControl }]; }, propDecorators: { autoSize: [{
@@ -4583,6 +4643,7 @@ class TagComponent {
4583
4643
  get rootClass() {
4584
4644
  return `${this.bem.block(this.type || TagType.Primary, this.size || ComponentSize.Medium)} ${this.solid ? 'isSolid' : ''} ${this.border ? 'hasBorder' : ''} ${this.invalid ? 'isInvalid' : ''} ${this.round ? 'isRound' : ''} ${this.allowClick && this.isNormalTag ? 'allowClick' : ''}`;
4585
4645
  }
4646
+ // 只有常规标签支持单击样式
4586
4647
  get isNormalTag() {
4587
4648
  return !this.solid && !this.closeable && !this.invalid;
4588
4649
  }
@@ -4774,10 +4835,10 @@ class SearchComponent {
4774
4835
  }
4775
4836
  }
4776
4837
  SearchComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: SearchComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4777
- SearchComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.8", type: SearchComponent, selector: "aui-search", inputs: { size: "size", searchButton: "searchButton", clearable: "clearable", searching: "searching", placeholder: "placeholder", disabled: "disabled", keyword: "keyword" }, outputs: { keywordChange: "keywordChange", search: "search", clear: "clear" }, viewQueries: [{ propertyName: "inputRef", first: true, predicate: ["input"], descendants: true, read: ElementRef }], ngImport: i0, template: "<div\n [ngClass]=\"bem.block(size)\"\n [class.hasIcon]=\"!searchButton\"\n [class.hasButton]=\"searchButton\"\n [class.isClearable]=\"clearable\"\n [class.isSearching]=\"searching\"\n [class.isDisabled]=\"disabled\"\n>\n <div\n *ngIf=\"!searchButton\"\n [class]=\"bem.element('icon')\"\n >\n <aui-icon icon=\"search_s\"></aui-icon>\n </div>\n <input\n #input\n aui-input\n autocomplete=\"off\"\n [ngModel]=\"value\"\n (ngModelChange)=\"emitChange($event)\"\n [disabled]=\"disabled\"\n (keyup.enter)=\"emitSearch()\"\n [ngClass]=\"bem.element('input')\"\n [placeholder]=\"placeholder\"\n [size]=\"size\"\n />\n <div\n *ngIf=\"showSpinner\"\n [class]=\"bem.element('spinner')\"\n >\n <aui-icon icon=\"spinner\"></aui-icon>\n </div>\n <div\n [hidden]=\"!showClear\"\n [class]=\"bem.element('clear')\"\n (click)=\"emitClear()\"\n >\n <aui-icon icon=\"close_small\"></aui-icon>\n </div>\n <div\n *ngIf=\"searchButton\"\n [class]=\"bem.element('button')\"\n (click)=\"emitSearch()\"\n >\n <div [class]=\"bem.element('button-icon')\">\n <aui-icon [icon]=\"searching ? 'spinner' : 'search_s'\"></aui-icon>\n </div>\n </div>\n</div>\n", styles: [".aui-search{display:inline-block;width:100%;position:relative;color:rgb(var(--aui-color-n-4))}.aui-search.isDisabled{color:rgb(var(--aui-color-disabled-text));cursor:not-allowed}.aui-search--large{font-size:var(--aui-font-size-l);line-height:var(--aui-line-height-l)}.aui-search--large aui-icon{font-size:var(--aui-icon-size-l)}.aui-search--large .aui-search__clear,.aui-search--large .aui-search__spinner{right:calc(var(--aui-inline-padding-xs) + 1px)}.aui-search--large .aui-search__icon{left:calc(var(--aui-inline-padding-xs) + 1px)}.aui-search--large .aui-search__button-icon{padding:0 var(--aui-inline-padding-xs)}.aui-search--large.hasIcon .aui-search__input{padding-left:calc(var(--aui-icon-size-l) + var(--aui-inline-padding-xs) * 2 + 1px)}.aui-search--large.hasIcon.isSearching .aui-search__input,.aui-search--large.hasIcon.isClearable .aui-search__input{padding-right:calc(var(--aui-icon-size-l) + var(--aui-inline-padding-xs) * 2 + 1px)}.aui-search--large.hasButton .aui-search__input{padding-right:calc(var(--aui-icon-size-l) + var(--aui-inline-padding-xs) * 3 + 1px)}.aui-search--large.hasButton .aui-search__clear{right:calc(var(--aui-icon-size-l) + var(--aui-inline-padding-xs) * 3 + 1px * 2)}.aui-search--large.hasButton.isClearable .aui-search__input{padding-right:calc(var(--aui-icon-size-l)* 2 + var(--aui-inline-padding-xs) * 4 + 3px)}.aui-search--medium{font-size:var(--aui-font-size-m);line-height:var(--aui-line-height-m)}.aui-search--medium aui-icon{font-size:var(--aui-icon-size-m)}.aui-search--medium .aui-search__clear,.aui-search--medium .aui-search__spinner{right:calc(var(--aui-inline-padding-xs) + 1px)}.aui-search--medium .aui-search__icon{left:calc(var(--aui-inline-padding-xs) + 1px)}.aui-search--medium .aui-search__button-icon{padding:0 var(--aui-inline-padding-xs)}.aui-search--medium.hasIcon .aui-search__input{padding-left:calc(var(--aui-icon-size-m) + var(--aui-inline-padding-xs) * 2 + 1px)}.aui-search--medium.hasIcon.isSearching .aui-search__input,.aui-search--medium.hasIcon.isClearable .aui-search__input{padding-right:calc(var(--aui-icon-size-m) + var(--aui-inline-padding-xs) * 2 + 1px)}.aui-search--medium.hasButton .aui-search__input{padding-right:calc(var(--aui-icon-size-m) + var(--aui-inline-padding-xs) * 3 + 1px)}.aui-search--medium.hasButton .aui-search__clear{right:calc(var(--aui-icon-size-m) + var(--aui-inline-padding-xs) * 3 + 1px * 2)}.aui-search--medium.hasButton.isClearable .aui-search__input{padding-right:calc(var(--aui-icon-size-m)* 2 + var(--aui-inline-padding-xs) * 4 + 3px)}.aui-search--small{font-size:var(--aui-font-size-m);line-height:var(--aui-line-height-m)}.aui-search--small aui-icon{font-size:var(--aui-icon-size-m)}.aui-search--small .aui-search__clear,.aui-search--small .aui-search__spinner{right:calc(var(--aui-inline-padding-xs) + 1px)}.aui-search--small .aui-search__icon{left:calc(var(--aui-inline-padding-xs) + 1px)}.aui-search--small .aui-search__button-icon{padding:0 var(--aui-inline-padding-xs)}.aui-search--small.hasIcon .aui-search__input{padding-left:calc(var(--aui-icon-size-m) + var(--aui-inline-padding-xs) * 2 + 1px)}.aui-search--small.hasIcon.isSearching .aui-search__input,.aui-search--small.hasIcon.isClearable .aui-search__input{padding-right:calc(var(--aui-icon-size-m) + var(--aui-inline-padding-xs) * 2 + 1px)}.aui-search--small.hasButton .aui-search__input{padding-right:calc(var(--aui-icon-size-m) + var(--aui-inline-padding-xs) * 3 + 1px)}.aui-search--small.hasButton .aui-search__clear{right:calc(var(--aui-icon-size-m) + var(--aui-inline-padding-xs) * 3 + 1px * 2)}.aui-search--small.hasButton.isClearable .aui-search__input{padding-right:calc(var(--aui-icon-size-m)* 2 + var(--aui-inline-padding-xs) * 4 + 3px)}.aui-search--mini{font-size:var(--aui-font-size-s);line-height:var(--aui-line-height-s)}.aui-search--mini aui-icon{font-size:var(--aui-icon-size-s)}.aui-search--mini .aui-search__clear,.aui-search--mini .aui-search__spinner{right:calc(var(--aui-inline-padding-xs) + 1px)}.aui-search--mini .aui-search__icon{left:calc(var(--aui-inline-padding-xs) + 1px)}.aui-search--mini .aui-search__button-icon{padding:0 var(--aui-inline-padding-xs)}.aui-search--mini.hasIcon .aui-search__input{padding-left:calc(var(--aui-icon-size-s) + var(--aui-inline-padding-xs) * 2 + 1px)}.aui-search--mini.hasIcon.isSearching .aui-search__input,.aui-search--mini.hasIcon.isClearable .aui-search__input{padding-right:calc(var(--aui-icon-size-s) + var(--aui-inline-padding-xs) * 2 + 1px)}.aui-search--mini.hasButton .aui-search__input{padding-right:calc(var(--aui-icon-size-s) + var(--aui-inline-padding-xs) * 3 + 1px)}.aui-search--mini.hasButton .aui-search__clear{right:calc(var(--aui-icon-size-s) + var(--aui-inline-padding-xs) * 3 + 1px * 2)}.aui-search--mini.hasButton.isClearable .aui-search__input{padding-right:calc(var(--aui-icon-size-s)* 2 + var(--aui-inline-padding-xs) * 4 + 3px)}.aui-search__icon{position:absolute;top:50%;transform:translateY(-50%);color:rgb(var(--aui-color-placeholder-text))}.aui-search__button{position:absolute;top:0;right:1px;height:100%;display:flex;align-items:center}.aui-search:not(.isDisabled):not(.isSearching) .aui-search__button{cursor:pointer}.aui-search:not(.isDisabled):not(.isSearching) .aui-search__button:hover{color:rgb(var(--aui-color-primary))}.aui-search__button-icon{border-left:1px solid rgb(var(--aui-color-n-7))}.aui-search__clear,.aui-search__spinner{position:absolute;top:50%;transform:translateY(-50%)}.aui-search__clear .aui-icon{border-radius:50%;color:rgb(var(--aui-color-help-text));cursor:pointer;transition:all .3s ease}.aui-search__clear .aui-icon:hover{color:rgb(var(--aui-color-main-bg));background-color:rgb(var(--aui-color-help-text))}\n"], components: [{ type: IconComponent, selector: "aui-icon", inputs: ["icon", "light", "dark", "link", "margin", "size", "color", "background", "backgroundColor"] }, { type: InputComponent, selector: "input[aui-input],textarea[aui-input]", inputs: ["size", "disabled"] }], directives: [{ type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
4838
+ SearchComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.8", type: SearchComponent, selector: "aui-search", inputs: { size: "size", searchButton: "searchButton", clearable: "clearable", searching: "searching", placeholder: "placeholder", disabled: "disabled", keyword: "keyword" }, outputs: { keywordChange: "keywordChange", search: "search", clear: "clear" }, viewQueries: [{ propertyName: "inputRef", first: true, predicate: ["input"], descendants: true, read: ElementRef }], ngImport: i0, template: "<div\n [ngClass]=\"bem.block(size)\"\n [class.hasIcon]=\"!searchButton\"\n [class.hasButton]=\"searchButton\"\n [class.isClearable]=\"clearable\"\n [class.isSearching]=\"searching\"\n [class.isDisabled]=\"disabled\"\n>\n <div\n *ngIf=\"!searchButton\"\n [class]=\"bem.element('icon')\"\n >\n <aui-icon icon=\"search_s\"></aui-icon>\n </div>\n <input\n #input\n aui-input\n autocomplete=\"off\"\n [ngModel]=\"value\"\n (ngModelChange)=\"emitChange($event)\"\n [disabled]=\"disabled\"\n (keyup.enter)=\"emitSearch()\"\n [ngClass]=\"bem.element('input')\"\n [placeholder]=\"placeholder\"\n [size]=\"size\"\n />\n <div\n *ngIf=\"showSpinner\"\n [class]=\"bem.element('spinner')\"\n >\n <aui-icon icon=\"spinner\"></aui-icon>\n </div>\n <div\n [hidden]=\"!showClear\"\n [class]=\"bem.element('clear')\"\n (click)=\"emitClear()\"\n >\n <aui-icon icon=\"close_small\"></aui-icon>\n </div>\n <div\n *ngIf=\"searchButton\"\n [class]=\"bem.element('button')\"\n (click)=\"emitSearch()\"\n >\n <div [class]=\"bem.element('button-icon')\">\n <aui-icon [icon]=\"searching ? 'spinner' : 'search_s'\"></aui-icon>\n </div>\n </div>\n</div>\n", styles: [".aui-search{display:inline-block;width:100%;position:relative;color:rgb(var(--aui-color-n-4))}.aui-search.isDisabled{color:rgb(var(--aui-color-disabled-text));cursor:not-allowed}.aui-search--large{font-size:var(--aui-font-size-l);line-height:var(--aui-line-height-l)}.aui-search--large aui-icon{font-size:var(--aui-icon-size-l)}.aui-search--large .aui-search__clear,.aui-search--large .aui-search__spinner{right:calc(var(--aui-inline-padding-xs) + 1px)}.aui-search--large .aui-search__icon{left:calc(var(--aui-inline-padding-xs) + 1px)}.aui-search--large .aui-search__button-icon{padding:0 var(--aui-inline-padding-xs)}.aui-search--large.hasIcon .aui-search__input{padding-left:calc(var(--aui-icon-size-l) + var(--aui-inline-padding-xs) * 2 + 1px)}.aui-search--large.hasIcon.isSearching .aui-search__input,.aui-search--large.hasIcon.isClearable .aui-search__input{padding-right:calc(var(--aui-icon-size-l) + var(--aui-inline-padding-xs) * 2 + 1px)}.aui-search--large.hasButton .aui-search__input{padding-right:calc(var(--aui-icon-size-l) + var(--aui-inline-padding-xs) * 3 + 1px)}.aui-search--large.hasButton .aui-search__clear{right:calc(var(--aui-icon-size-l) + var(--aui-inline-padding-xs) * 3 + 1px * 2)}.aui-search--large.hasButton.isClearable .aui-search__input{padding-right:calc(var(--aui-icon-size-l) * 2 + var(--aui-inline-padding-xs) * 4 + 3px)}.aui-search--medium{font-size:var(--aui-font-size-m);line-height:var(--aui-line-height-m)}.aui-search--medium aui-icon{font-size:var(--aui-icon-size-m)}.aui-search--medium .aui-search__clear,.aui-search--medium .aui-search__spinner{right:calc(var(--aui-inline-padding-xs) + 1px)}.aui-search--medium .aui-search__icon{left:calc(var(--aui-inline-padding-xs) + 1px)}.aui-search--medium .aui-search__button-icon{padding:0 var(--aui-inline-padding-xs)}.aui-search--medium.hasIcon .aui-search__input{padding-left:calc(var(--aui-icon-size-m) + var(--aui-inline-padding-xs) * 2 + 1px)}.aui-search--medium.hasIcon.isSearching .aui-search__input,.aui-search--medium.hasIcon.isClearable .aui-search__input{padding-right:calc(var(--aui-icon-size-m) + var(--aui-inline-padding-xs) * 2 + 1px)}.aui-search--medium.hasButton .aui-search__input{padding-right:calc(var(--aui-icon-size-m) + var(--aui-inline-padding-xs) * 3 + 1px)}.aui-search--medium.hasButton .aui-search__clear{right:calc(var(--aui-icon-size-m) + var(--aui-inline-padding-xs) * 3 + 1px * 2)}.aui-search--medium.hasButton.isClearable .aui-search__input{padding-right:calc(var(--aui-icon-size-m) * 2 + var(--aui-inline-padding-xs) * 4 + 3px)}.aui-search--small{font-size:var(--aui-font-size-m);line-height:var(--aui-line-height-m)}.aui-search--small aui-icon{font-size:var(--aui-icon-size-m)}.aui-search--small .aui-search__clear,.aui-search--small .aui-search__spinner{right:calc(var(--aui-inline-padding-xs) + 1px)}.aui-search--small .aui-search__icon{left:calc(var(--aui-inline-padding-xs) + 1px)}.aui-search--small .aui-search__button-icon{padding:0 var(--aui-inline-padding-xs)}.aui-search--small.hasIcon .aui-search__input{padding-left:calc(var(--aui-icon-size-m) + var(--aui-inline-padding-xs) * 2 + 1px)}.aui-search--small.hasIcon.isSearching .aui-search__input,.aui-search--small.hasIcon.isClearable .aui-search__input{padding-right:calc(var(--aui-icon-size-m) + var(--aui-inline-padding-xs) * 2 + 1px)}.aui-search--small.hasButton .aui-search__input{padding-right:calc(var(--aui-icon-size-m) + var(--aui-inline-padding-xs) * 3 + 1px)}.aui-search--small.hasButton .aui-search__clear{right:calc(var(--aui-icon-size-m) + var(--aui-inline-padding-xs) * 3 + 1px * 2)}.aui-search--small.hasButton.isClearable .aui-search__input{padding-right:calc(var(--aui-icon-size-m) * 2 + var(--aui-inline-padding-xs) * 4 + 3px)}.aui-search--mini{font-size:var(--aui-font-size-s);line-height:var(--aui-line-height-s)}.aui-search--mini aui-icon{font-size:var(--aui-icon-size-s)}.aui-search--mini .aui-search__clear,.aui-search--mini .aui-search__spinner{right:calc(var(--aui-inline-padding-xs) + 1px)}.aui-search--mini .aui-search__icon{left:calc(var(--aui-inline-padding-xs) + 1px)}.aui-search--mini .aui-search__button-icon{padding:0 var(--aui-inline-padding-xs)}.aui-search--mini.hasIcon .aui-search__input{padding-left:calc(var(--aui-icon-size-s) + var(--aui-inline-padding-xs) * 2 + 1px)}.aui-search--mini.hasIcon.isSearching .aui-search__input,.aui-search--mini.hasIcon.isClearable .aui-search__input{padding-right:calc(var(--aui-icon-size-s) + var(--aui-inline-padding-xs) * 2 + 1px)}.aui-search--mini.hasButton .aui-search__input{padding-right:calc(var(--aui-icon-size-s) + var(--aui-inline-padding-xs) * 3 + 1px)}.aui-search--mini.hasButton .aui-search__clear{right:calc(var(--aui-icon-size-s) + var(--aui-inline-padding-xs) * 3 + 1px * 2)}.aui-search--mini.hasButton.isClearable .aui-search__input{padding-right:calc(var(--aui-icon-size-s) * 2 + var(--aui-inline-padding-xs) * 4 + 3px)}.aui-search__icon{position:absolute;top:50%;transform:translateY(-50%);color:rgb(var(--aui-color-placeholder-text))}.aui-search__button{position:absolute;top:0;right:1px;height:100%;display:flex;align-items:center}.aui-search:not(.isDisabled):not(.isSearching) .aui-search__button{cursor:pointer}.aui-search:not(.isDisabled):not(.isSearching) .aui-search__button:hover{color:rgb(var(--aui-color-primary))}.aui-search__button-icon{border-left:1px solid rgb(var(--aui-color-n-7))}.aui-search__clear,.aui-search__spinner{position:absolute;top:50%;transform:translateY(-50%)}.aui-search__clear .aui-icon{border-radius:50%;color:rgb(var(--aui-color-help-text));cursor:pointer;transition:all .3s ease}.aui-search__clear .aui-icon:hover{color:rgb(var(--aui-color-main-bg));background-color:rgb(var(--aui-color-help-text))}\n"], components: [{ type: IconComponent, selector: "aui-icon", inputs: ["icon", "light", "dark", "link", "margin", "size", "color", "background", "backgroundColor"] }, { type: InputComponent, selector: "input[aui-input],textarea[aui-input]", inputs: ["size", "disabled"] }], directives: [{ type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
4778
4839
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: SearchComponent, decorators: [{
4779
4840
  type: Component,
4780
- args: [{ selector: 'aui-search', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, preserveWhitespaces: false, template: "<div\n [ngClass]=\"bem.block(size)\"\n [class.hasIcon]=\"!searchButton\"\n [class.hasButton]=\"searchButton\"\n [class.isClearable]=\"clearable\"\n [class.isSearching]=\"searching\"\n [class.isDisabled]=\"disabled\"\n>\n <div\n *ngIf=\"!searchButton\"\n [class]=\"bem.element('icon')\"\n >\n <aui-icon icon=\"search_s\"></aui-icon>\n </div>\n <input\n #input\n aui-input\n autocomplete=\"off\"\n [ngModel]=\"value\"\n (ngModelChange)=\"emitChange($event)\"\n [disabled]=\"disabled\"\n (keyup.enter)=\"emitSearch()\"\n [ngClass]=\"bem.element('input')\"\n [placeholder]=\"placeholder\"\n [size]=\"size\"\n />\n <div\n *ngIf=\"showSpinner\"\n [class]=\"bem.element('spinner')\"\n >\n <aui-icon icon=\"spinner\"></aui-icon>\n </div>\n <div\n [hidden]=\"!showClear\"\n [class]=\"bem.element('clear')\"\n (click)=\"emitClear()\"\n >\n <aui-icon icon=\"close_small\"></aui-icon>\n </div>\n <div\n *ngIf=\"searchButton\"\n [class]=\"bem.element('button')\"\n (click)=\"emitSearch()\"\n >\n <div [class]=\"bem.element('button-icon')\">\n <aui-icon [icon]=\"searching ? 'spinner' : 'search_s'\"></aui-icon>\n </div>\n </div>\n</div>\n", styles: [".aui-search{display:inline-block;width:100%;position:relative;color:rgb(var(--aui-color-n-4))}.aui-search.isDisabled{color:rgb(var(--aui-color-disabled-text));cursor:not-allowed}.aui-search--large{font-size:var(--aui-font-size-l);line-height:var(--aui-line-height-l)}.aui-search--large aui-icon{font-size:var(--aui-icon-size-l)}.aui-search--large .aui-search__clear,.aui-search--large .aui-search__spinner{right:calc(var(--aui-inline-padding-xs) + 1px)}.aui-search--large .aui-search__icon{left:calc(var(--aui-inline-padding-xs) + 1px)}.aui-search--large .aui-search__button-icon{padding:0 var(--aui-inline-padding-xs)}.aui-search--large.hasIcon .aui-search__input{padding-left:calc(var(--aui-icon-size-l) + var(--aui-inline-padding-xs) * 2 + 1px)}.aui-search--large.hasIcon.isSearching .aui-search__input,.aui-search--large.hasIcon.isClearable .aui-search__input{padding-right:calc(var(--aui-icon-size-l) + var(--aui-inline-padding-xs) * 2 + 1px)}.aui-search--large.hasButton .aui-search__input{padding-right:calc(var(--aui-icon-size-l) + var(--aui-inline-padding-xs) * 3 + 1px)}.aui-search--large.hasButton .aui-search__clear{right:calc(var(--aui-icon-size-l) + var(--aui-inline-padding-xs) * 3 + 1px * 2)}.aui-search--large.hasButton.isClearable .aui-search__input{padding-right:calc(var(--aui-icon-size-l)* 2 + var(--aui-inline-padding-xs) * 4 + 3px)}.aui-search--medium{font-size:var(--aui-font-size-m);line-height:var(--aui-line-height-m)}.aui-search--medium aui-icon{font-size:var(--aui-icon-size-m)}.aui-search--medium .aui-search__clear,.aui-search--medium .aui-search__spinner{right:calc(var(--aui-inline-padding-xs) + 1px)}.aui-search--medium .aui-search__icon{left:calc(var(--aui-inline-padding-xs) + 1px)}.aui-search--medium .aui-search__button-icon{padding:0 var(--aui-inline-padding-xs)}.aui-search--medium.hasIcon .aui-search__input{padding-left:calc(var(--aui-icon-size-m) + var(--aui-inline-padding-xs) * 2 + 1px)}.aui-search--medium.hasIcon.isSearching .aui-search__input,.aui-search--medium.hasIcon.isClearable .aui-search__input{padding-right:calc(var(--aui-icon-size-m) + var(--aui-inline-padding-xs) * 2 + 1px)}.aui-search--medium.hasButton .aui-search__input{padding-right:calc(var(--aui-icon-size-m) + var(--aui-inline-padding-xs) * 3 + 1px)}.aui-search--medium.hasButton .aui-search__clear{right:calc(var(--aui-icon-size-m) + var(--aui-inline-padding-xs) * 3 + 1px * 2)}.aui-search--medium.hasButton.isClearable .aui-search__input{padding-right:calc(var(--aui-icon-size-m)* 2 + var(--aui-inline-padding-xs) * 4 + 3px)}.aui-search--small{font-size:var(--aui-font-size-m);line-height:var(--aui-line-height-m)}.aui-search--small aui-icon{font-size:var(--aui-icon-size-m)}.aui-search--small .aui-search__clear,.aui-search--small .aui-search__spinner{right:calc(var(--aui-inline-padding-xs) + 1px)}.aui-search--small .aui-search__icon{left:calc(var(--aui-inline-padding-xs) + 1px)}.aui-search--small .aui-search__button-icon{padding:0 var(--aui-inline-padding-xs)}.aui-search--small.hasIcon .aui-search__input{padding-left:calc(var(--aui-icon-size-m) + var(--aui-inline-padding-xs) * 2 + 1px)}.aui-search--small.hasIcon.isSearching .aui-search__input,.aui-search--small.hasIcon.isClearable .aui-search__input{padding-right:calc(var(--aui-icon-size-m) + var(--aui-inline-padding-xs) * 2 + 1px)}.aui-search--small.hasButton .aui-search__input{padding-right:calc(var(--aui-icon-size-m) + var(--aui-inline-padding-xs) * 3 + 1px)}.aui-search--small.hasButton .aui-search__clear{right:calc(var(--aui-icon-size-m) + var(--aui-inline-padding-xs) * 3 + 1px * 2)}.aui-search--small.hasButton.isClearable .aui-search__input{padding-right:calc(var(--aui-icon-size-m)* 2 + var(--aui-inline-padding-xs) * 4 + 3px)}.aui-search--mini{font-size:var(--aui-font-size-s);line-height:var(--aui-line-height-s)}.aui-search--mini aui-icon{font-size:var(--aui-icon-size-s)}.aui-search--mini .aui-search__clear,.aui-search--mini .aui-search__spinner{right:calc(var(--aui-inline-padding-xs) + 1px)}.aui-search--mini .aui-search__icon{left:calc(var(--aui-inline-padding-xs) + 1px)}.aui-search--mini .aui-search__button-icon{padding:0 var(--aui-inline-padding-xs)}.aui-search--mini.hasIcon .aui-search__input{padding-left:calc(var(--aui-icon-size-s) + var(--aui-inline-padding-xs) * 2 + 1px)}.aui-search--mini.hasIcon.isSearching .aui-search__input,.aui-search--mini.hasIcon.isClearable .aui-search__input{padding-right:calc(var(--aui-icon-size-s) + var(--aui-inline-padding-xs) * 2 + 1px)}.aui-search--mini.hasButton .aui-search__input{padding-right:calc(var(--aui-icon-size-s) + var(--aui-inline-padding-xs) * 3 + 1px)}.aui-search--mini.hasButton .aui-search__clear{right:calc(var(--aui-icon-size-s) + var(--aui-inline-padding-xs) * 3 + 1px * 2)}.aui-search--mini.hasButton.isClearable .aui-search__input{padding-right:calc(var(--aui-icon-size-s)* 2 + var(--aui-inline-padding-xs) * 4 + 3px)}.aui-search__icon{position:absolute;top:50%;transform:translateY(-50%);color:rgb(var(--aui-color-placeholder-text))}.aui-search__button{position:absolute;top:0;right:1px;height:100%;display:flex;align-items:center}.aui-search:not(.isDisabled):not(.isSearching) .aui-search__button{cursor:pointer}.aui-search:not(.isDisabled):not(.isSearching) .aui-search__button:hover{color:rgb(var(--aui-color-primary))}.aui-search__button-icon{border-left:1px solid rgb(var(--aui-color-n-7))}.aui-search__clear,.aui-search__spinner{position:absolute;top:50%;transform:translateY(-50%)}.aui-search__clear .aui-icon{border-radius:50%;color:rgb(var(--aui-color-help-text));cursor:pointer;transition:all .3s ease}.aui-search__clear .aui-icon:hover{color:rgb(var(--aui-color-main-bg));background-color:rgb(var(--aui-color-help-text))}\n"] }]
4841
+ args: [{ selector: 'aui-search', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, preserveWhitespaces: false, template: "<div\n [ngClass]=\"bem.block(size)\"\n [class.hasIcon]=\"!searchButton\"\n [class.hasButton]=\"searchButton\"\n [class.isClearable]=\"clearable\"\n [class.isSearching]=\"searching\"\n [class.isDisabled]=\"disabled\"\n>\n <div\n *ngIf=\"!searchButton\"\n [class]=\"bem.element('icon')\"\n >\n <aui-icon icon=\"search_s\"></aui-icon>\n </div>\n <input\n #input\n aui-input\n autocomplete=\"off\"\n [ngModel]=\"value\"\n (ngModelChange)=\"emitChange($event)\"\n [disabled]=\"disabled\"\n (keyup.enter)=\"emitSearch()\"\n [ngClass]=\"bem.element('input')\"\n [placeholder]=\"placeholder\"\n [size]=\"size\"\n />\n <div\n *ngIf=\"showSpinner\"\n [class]=\"bem.element('spinner')\"\n >\n <aui-icon icon=\"spinner\"></aui-icon>\n </div>\n <div\n [hidden]=\"!showClear\"\n [class]=\"bem.element('clear')\"\n (click)=\"emitClear()\"\n >\n <aui-icon icon=\"close_small\"></aui-icon>\n </div>\n <div\n *ngIf=\"searchButton\"\n [class]=\"bem.element('button')\"\n (click)=\"emitSearch()\"\n >\n <div [class]=\"bem.element('button-icon')\">\n <aui-icon [icon]=\"searching ? 'spinner' : 'search_s'\"></aui-icon>\n </div>\n </div>\n</div>\n", styles: [".aui-search{display:inline-block;width:100%;position:relative;color:rgb(var(--aui-color-n-4))}.aui-search.isDisabled{color:rgb(var(--aui-color-disabled-text));cursor:not-allowed}.aui-search--large{font-size:var(--aui-font-size-l);line-height:var(--aui-line-height-l)}.aui-search--large aui-icon{font-size:var(--aui-icon-size-l)}.aui-search--large .aui-search__clear,.aui-search--large .aui-search__spinner{right:calc(var(--aui-inline-padding-xs) + 1px)}.aui-search--large .aui-search__icon{left:calc(var(--aui-inline-padding-xs) + 1px)}.aui-search--large .aui-search__button-icon{padding:0 var(--aui-inline-padding-xs)}.aui-search--large.hasIcon .aui-search__input{padding-left:calc(var(--aui-icon-size-l) + var(--aui-inline-padding-xs) * 2 + 1px)}.aui-search--large.hasIcon.isSearching .aui-search__input,.aui-search--large.hasIcon.isClearable .aui-search__input{padding-right:calc(var(--aui-icon-size-l) + var(--aui-inline-padding-xs) * 2 + 1px)}.aui-search--large.hasButton .aui-search__input{padding-right:calc(var(--aui-icon-size-l) + var(--aui-inline-padding-xs) * 3 + 1px)}.aui-search--large.hasButton .aui-search__clear{right:calc(var(--aui-icon-size-l) + var(--aui-inline-padding-xs) * 3 + 1px * 2)}.aui-search--large.hasButton.isClearable .aui-search__input{padding-right:calc(var(--aui-icon-size-l) * 2 + var(--aui-inline-padding-xs) * 4 + 3px)}.aui-search--medium{font-size:var(--aui-font-size-m);line-height:var(--aui-line-height-m)}.aui-search--medium aui-icon{font-size:var(--aui-icon-size-m)}.aui-search--medium .aui-search__clear,.aui-search--medium .aui-search__spinner{right:calc(var(--aui-inline-padding-xs) + 1px)}.aui-search--medium .aui-search__icon{left:calc(var(--aui-inline-padding-xs) + 1px)}.aui-search--medium .aui-search__button-icon{padding:0 var(--aui-inline-padding-xs)}.aui-search--medium.hasIcon .aui-search__input{padding-left:calc(var(--aui-icon-size-m) + var(--aui-inline-padding-xs) * 2 + 1px)}.aui-search--medium.hasIcon.isSearching .aui-search__input,.aui-search--medium.hasIcon.isClearable .aui-search__input{padding-right:calc(var(--aui-icon-size-m) + var(--aui-inline-padding-xs) * 2 + 1px)}.aui-search--medium.hasButton .aui-search__input{padding-right:calc(var(--aui-icon-size-m) + var(--aui-inline-padding-xs) * 3 + 1px)}.aui-search--medium.hasButton .aui-search__clear{right:calc(var(--aui-icon-size-m) + var(--aui-inline-padding-xs) * 3 + 1px * 2)}.aui-search--medium.hasButton.isClearable .aui-search__input{padding-right:calc(var(--aui-icon-size-m) * 2 + var(--aui-inline-padding-xs) * 4 + 3px)}.aui-search--small{font-size:var(--aui-font-size-m);line-height:var(--aui-line-height-m)}.aui-search--small aui-icon{font-size:var(--aui-icon-size-m)}.aui-search--small .aui-search__clear,.aui-search--small .aui-search__spinner{right:calc(var(--aui-inline-padding-xs) + 1px)}.aui-search--small .aui-search__icon{left:calc(var(--aui-inline-padding-xs) + 1px)}.aui-search--small .aui-search__button-icon{padding:0 var(--aui-inline-padding-xs)}.aui-search--small.hasIcon .aui-search__input{padding-left:calc(var(--aui-icon-size-m) + var(--aui-inline-padding-xs) * 2 + 1px)}.aui-search--small.hasIcon.isSearching .aui-search__input,.aui-search--small.hasIcon.isClearable .aui-search__input{padding-right:calc(var(--aui-icon-size-m) + var(--aui-inline-padding-xs) * 2 + 1px)}.aui-search--small.hasButton .aui-search__input{padding-right:calc(var(--aui-icon-size-m) + var(--aui-inline-padding-xs) * 3 + 1px)}.aui-search--small.hasButton .aui-search__clear{right:calc(var(--aui-icon-size-m) + var(--aui-inline-padding-xs) * 3 + 1px * 2)}.aui-search--small.hasButton.isClearable .aui-search__input{padding-right:calc(var(--aui-icon-size-m) * 2 + var(--aui-inline-padding-xs) * 4 + 3px)}.aui-search--mini{font-size:var(--aui-font-size-s);line-height:var(--aui-line-height-s)}.aui-search--mini aui-icon{font-size:var(--aui-icon-size-s)}.aui-search--mini .aui-search__clear,.aui-search--mini .aui-search__spinner{right:calc(var(--aui-inline-padding-xs) + 1px)}.aui-search--mini .aui-search__icon{left:calc(var(--aui-inline-padding-xs) + 1px)}.aui-search--mini .aui-search__button-icon{padding:0 var(--aui-inline-padding-xs)}.aui-search--mini.hasIcon .aui-search__input{padding-left:calc(var(--aui-icon-size-s) + var(--aui-inline-padding-xs) * 2 + 1px)}.aui-search--mini.hasIcon.isSearching .aui-search__input,.aui-search--mini.hasIcon.isClearable .aui-search__input{padding-right:calc(var(--aui-icon-size-s) + var(--aui-inline-padding-xs) * 2 + 1px)}.aui-search--mini.hasButton .aui-search__input{padding-right:calc(var(--aui-icon-size-s) + var(--aui-inline-padding-xs) * 3 + 1px)}.aui-search--mini.hasButton .aui-search__clear{right:calc(var(--aui-icon-size-s) + var(--aui-inline-padding-xs) * 3 + 1px * 2)}.aui-search--mini.hasButton.isClearable .aui-search__input{padding-right:calc(var(--aui-icon-size-s) * 2 + var(--aui-inline-padding-xs) * 4 + 3px)}.aui-search__icon{position:absolute;top:50%;transform:translateY(-50%);color:rgb(var(--aui-color-placeholder-text))}.aui-search__button{position:absolute;top:0;right:1px;height:100%;display:flex;align-items:center}.aui-search:not(.isDisabled):not(.isSearching) .aui-search__button{cursor:pointer}.aui-search:not(.isDisabled):not(.isSearching) .aui-search__button:hover{color:rgb(var(--aui-color-primary))}.aui-search__button-icon{border-left:1px solid rgb(var(--aui-color-n-7))}.aui-search__clear,.aui-search__spinner{position:absolute;top:50%;transform:translateY(-50%)}.aui-search__clear .aui-icon{border-radius:50%;color:rgb(var(--aui-color-help-text));cursor:pointer;transition:all .3s ease}.aui-search__clear .aui-icon:hover{color:rgb(var(--aui-color-main-bg));background-color:rgb(var(--aui-color-help-text))}\n"] }]
4781
4842
  }], propDecorators: { size: [{
4782
4843
  type: Input
4783
4844
  }], searchButton: [{
@@ -4855,12 +4916,13 @@ class TagsInputComponent extends CommonFormControl {
4855
4916
  this.bem = buildBem('aui-tags-input');
4856
4917
  this.placeholder = '';
4857
4918
  this.size = ComponentSize.Medium;
4919
+ // TODO: implement this feature
4858
4920
  this.clearable = false;
4859
4921
  this.allowRepeat = false;
4860
4922
  this.allowEmpty = false;
4861
4923
  this.readonlyTags = [];
4862
4924
  this.maxRowCount = 0;
4863
- this.customRowHeight = 0;
4925
+ this.customRowHeight = 0; // 0: use default style const value, > 1: for ```tagClassFn``` maybe affect lineHeight
4864
4926
  this.withMaxRowCount = createWithMaxRowCount(this);
4865
4927
  this.focused = false;
4866
4928
  this.model = [];
@@ -4930,6 +4992,7 @@ class TagsInputComponent extends CommonFormControl {
4930
4992
  onInput() {
4931
4993
  var _a, _b, _c;
4932
4994
  const value = this.inputRef.nativeElement.value;
4995
+ // make sure value sync to span element
4933
4996
  requestAnimationFrame(() => {
4934
4997
  if (!value.length) {
4935
4998
  this.renderer.removeStyle(this.inputRef.nativeElement, 'width');
@@ -4991,11 +5054,13 @@ class TagsInputComponent extends CommonFormControl {
4991
5054
  return;
4992
5055
  }
4993
5056
  this.inputControl.setValue(this.inputRef.nativeElement.value);
5057
+ // inputControl 自身的状态为同步计算
4994
5058
  this.syncControlStatus();
4995
5059
  if (this.inputControl.valid) {
4996
5060
  this.emitValue(this.model.concat(value));
4997
5061
  }
4998
5062
  else if (this.inputControl.pending) {
5063
+ // PENDING 后只会变为 VALID 或 INVALID 的决议状态
4999
5064
  this.inputControl.statusChanges.pipe(take(1)).subscribe(_ => {
5000
5065
  this.syncControlStatus();
5001
5066
  if (this.inputControl.valid) {
@@ -5019,6 +5084,7 @@ class TagsInputComponent extends CommonFormControl {
5019
5084
  (_d = this.controlContainer) === null || _d === void 0 ? void 0 : _d.control.setErrors(Object.assign(Object.assign({}, (_f = (_e = this.controlContainer) === null || _e === void 0 ? void 0 : _e.control) === null || _f === void 0 ? void 0 : _f.errors), { [INPUT_ERROR_KEY]: errors }));
5020
5085
  }
5021
5086
  else if (disabled) {
5087
+ // 与当前 input 校验脱离
5022
5088
  (_h = (_g = this.controlContainer) === null || _g === void 0 ? void 0 : _g.control) === null || _h === void 0 ? void 0 : _h.updateValueAndValidity();
5023
5089
  }
5024
5090
  }
@@ -5758,6 +5824,7 @@ class DialogService {
5758
5824
  resolve(action.result);
5759
5825
  }
5760
5826
  else {
5827
+ // eslint-disable-next-line prefer-promise-reject-errors
5761
5828
  reject(action.result);
5762
5829
  }
5763
5830
  });
@@ -5881,6 +5948,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
5881
5948
  }] } });
5882
5949
 
5883
5950
  class DialogContentComponent extends CdkScrollable {
5951
+ // eslint-disable-next-line @typescript-eslint/no-useless-constructor
5884
5952
  constructor(elementRef, scrollDispatcher, ngZone, dir) {
5885
5953
  super(elementRef, scrollDispatcher, ngZone, dir);
5886
5954
  this.bem = buildBem('aui-dialog');
@@ -6001,6 +6069,10 @@ var DrawerSize;
6001
6069
  class DrawerRef {
6002
6070
  }
6003
6071
 
6072
+ /**
6073
+ * @packageDocumentation
6074
+ * @module page-guard
6075
+ */
6004
6076
  class DrawerHeaderDirective {
6005
6077
  }
6006
6078
  DrawerHeaderDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: DrawerHeaderDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
@@ -6093,6 +6165,7 @@ class DrawerComponent extends DrawerRef {
6093
6165
  this.open();
6094
6166
  }
6095
6167
  else if (!visible.firstChange) {
6168
+ // 不希望默认关闭时,drawer 渲染后就触发 close 事件
6096
6169
  this.dispose();
6097
6170
  }
6098
6171
  }
@@ -6115,6 +6188,8 @@ class DrawerComponent extends DrawerRef {
6115
6188
  .pipe(takeUntil(this.onDestroy$))
6116
6189
  .subscribe(event => {
6117
6190
  var _a, _b;
6191
+ // 判断鼠标点击事件的 target 是否为 overlay-container 的子节点,如果是,则不关闭 drawer。
6192
+ // 为了避免点击 drawer 里的 tooltip 后 drawer 被关闭。
6118
6193
  if (this.visible &&
6119
6194
  this.hideOnClickOutside &&
6120
6195
  event.target instanceof Node &&
@@ -6764,6 +6839,11 @@ var MessageType;
6764
6839
  MessageType["Warning"] = "warning";
6765
6840
  MessageType["Info"] = "info";
6766
6841
  })(MessageType || (MessageType = {}));
6842
+ /**
6843
+ * messageOptions: contains Basic configuration
6844
+ * Just for some containers like Message-Container
6845
+ * Detailed document: http://confluence.alaudatech.com/pages/viewpage.action?pageId=23383163
6846
+ */
6767
6847
  class MessageConfig {
6768
6848
  }
6769
6849
  const MESSAGE_CONFIG = new InjectionToken('MESSAGE_CONFIG');
@@ -7049,6 +7129,10 @@ class NotificationComponent extends MessageComponent {
7049
7129
  });
7050
7130
  }
7051
7131
  }
7132
+ /**
7133
+ * Attach a TemplatePortal as content to this modal container.
7134
+ * @param portal Portal to be attached as the modal content.
7135
+ */
7052
7136
  attachTemplatePortal(portal) {
7053
7137
  return this.portalOutlet.attachTemplatePortal(portal);
7054
7138
  }
@@ -7142,9 +7226,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
7142
7226
  }]
7143
7227
  }] });
7144
7228
 
7229
+ /**
7230
+ * To modify the labels and text displayed, create a new instance of MatPaginatorIntl and
7231
+ * include it in a custom provider
7232
+ */
7145
7233
  class PaginatorIntl {
7146
7234
  constructor() {
7235
+ /**
7236
+ * Stream that emits whenever the labels here are changed. Use this to notify
7237
+ * components if the labels have changed after initialization.
7238
+ */
7147
7239
  this.changes = new Subject();
7240
+ /** A label for the page size selector. */
7148
7241
  this.itemsPerPageLabel = 'perPage';
7149
7242
  this.jumperLabelPrefix = 'Goto';
7150
7243
  this.jumperLabelSuffix = '';
@@ -7156,10 +7249,12 @@ PaginatorIntl.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", versio
7156
7249
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: PaginatorIntl, decorators: [{
7157
7250
  type: Injectable
7158
7251
  }] });
7252
+ // eslint-disable-next-line sonar/function-name
7159
7253
  function PAGINATOR_INTL_PROVIDER_FACTORY(parentIntl) {
7160
7254
  return parentIntl || new PaginatorIntl();
7161
7255
  }
7162
7256
  const PAGINATOR_INTL_PROVIDER = {
7257
+ // If there is already an PaginatorIntl available, use that. Otherwise, provide a new one.
7163
7258
  provide: PaginatorIntl,
7164
7259
  deps: [[new Optional(), new SkipSelf(), PaginatorIntl]],
7165
7260
  useFactory: PAGINATOR_INTL_PROVIDER_FACTORY,
@@ -7398,6 +7493,7 @@ class BaseSelect extends CommonFormControl {
7398
7493
  this.customOptions.changes.pipe(startWith(this.customOptions)),
7399
7494
  this.contentOptions.changes.pipe(startWith(this.contentOptions)),
7400
7495
  ]).pipe(map(([customOptions, contentOptions]) => [...customOptions.toArray(), ...contentOptions.toArray()]), publishRef());
7496
+ // support dynamic options loading on filtering
7401
7497
  this.allOptions$.pipe(takeUntil(this.destroy$$)).subscribe(() => {
7402
7498
  if (this.opened) {
7403
7499
  requestAnimationFrame(() => {
@@ -7406,7 +7502,9 @@ class BaseSelect extends CommonFormControl {
7406
7502
  }
7407
7503
  });
7408
7504
  this.hasMatchedOption$ = combineLatest([
7409
- this.allOptions$.pipe(map(customOptions => customOptions.filter(option => option !== this.inputtingOption)), switchMap(options => options.length > 0
7505
+ this.allOptions$.pipe(map(customOptions => customOptions.filter(option => option !== this.inputtingOption)),
7506
+ // eslint-disable-next-line sonarjs/no-identical-functions
7507
+ switchMap(options => options.length > 0
7410
7508
  ? combineLatest(options.map(option => option.value$))
7411
7509
  : of([]))),
7412
7510
  this.filterString$,
@@ -7657,6 +7755,7 @@ class SelectComponent extends BaseSelect {
7657
7755
  label: option.label ||
7658
7756
  ((_a = this.labelFn) === null || _a === void 0 ? void 0 : _a.call(this, option.value)) ||
7659
7757
  coerceString(this.trackFn(option.value)),
7758
+ // https://github.com/angular/angular/issues/24515
7660
7759
  labelContext: Object.assign({}, option.labelContext),
7661
7760
  }
7662
7761
  : {
@@ -7716,6 +7815,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
7716
7815
  args: ['inputRef', { static: true }]
7717
7816
  }] } });
7718
7817
 
7818
+ /**
7819
+ * Change event object that is emitted when the user selects a
7820
+ * different page size or navigates to another page.
7821
+ * @deprecated use Output events directly instead
7822
+ */
7719
7823
  class PageEvent {
7720
7824
  }
7721
7825
  class PaginatorComponent {
@@ -7739,6 +7843,9 @@ class PaginatorComponent {
7739
7843
  set pageIndex(val) {
7740
7844
  this.currentPage = val + 1;
7741
7845
  }
7846
+ /**
7847
+ * @deprecated use `total` instead
7848
+ */
7742
7849
  get length() {
7743
7850
  return this.total;
7744
7851
  }
@@ -7841,7 +7948,7 @@ class MultiSelectComponent extends BaseSelect {
7841
7948
  this.model = [];
7842
7949
  this.values$ = this.model$;
7843
7950
  this.maxRowCount = 0;
7844
- this.customRowHeight = 0;
7951
+ this.customRowHeight = 0; // 0: use default style const value, > 1: for ```tagClassFn``` maybe affect lineHeight
7845
7952
  this.inputValue = '';
7846
7953
  this.withMaxRowCount = createWithMaxRowCount(this);
7847
7954
  this.focused = false;
@@ -7912,6 +8019,7 @@ class MultiSelectComponent extends BaseSelect {
7912
8019
  value,
7913
8020
  };
7914
8021
  })
8022
+ // sort disabled options as first
7915
8023
  .sort((a, b) => {
7916
8024
  if (a.disabled) {
7917
8025
  return -1;
@@ -8059,6 +8167,7 @@ class MultiSelectComponent extends BaseSelect {
8059
8167
  this.setInputWidth();
8060
8168
  this.filterString = '';
8061
8169
  }
8170
+ // calculate input element width according to its value
8062
8171
  setInputWidth() {
8063
8172
  const { value } = this.inputRef.nativeElement;
8064
8173
  if (!value.length) {
@@ -8154,6 +8263,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
8154
8263
  }]
8155
8264
  }] });
8156
8265
 
8266
+ // @dynamic
8267
+ // eslint-disable-next-line @typescript-eslint/no-extraneous-class
8157
8268
  class AuiSelectValidators {
8158
8269
  static includes(options, trackFn = val => val) {
8159
8270
  return (control) => options.some(option => trackFn(option) === trackFn(control.value))
@@ -8209,7 +8320,9 @@ IncludesDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", vers
8209
8320
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: IncludesDirective, decorators: [{
8210
8321
  type: Directive,
8211
8322
  args: [{
8212
- selector: 'aui-select[ngModel][includes],aui-select[formControl][includes],aui-select[formControlName][includes]',
8323
+ selector:
8324
+ // eslint-disable-next-line @angular-eslint/directive-selector
8325
+ 'aui-select[ngModel][includes],aui-select[formControl][includes],aui-select[formControlName][includes]',
8213
8326
  providers: [
8214
8327
  {
8215
8328
  provide: NG_VALIDATORS,
@@ -8330,6 +8443,9 @@ class RadioGroupComponent extends CommonFormControl {
8330
8443
  set size(val) {
8331
8444
  this.size$$.next(val);
8332
8445
  }
8446
+ /**
8447
+ * @deprecated use `plain` instead
8448
+ */
8333
8449
  set isPlain(val) {
8334
8450
  this.plain = val;
8335
8451
  }
@@ -8440,6 +8556,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
8440
8556
  }] } });
8441
8557
 
8442
8558
  class RadioComponent extends BaseRadio {
8559
+ // eslint-disable-next-line @typescript-eslint/no-useless-constructor
8443
8560
  constructor(radioGroup, focusMonitor, cdr) {
8444
8561
  super(radioGroup, focusMonitor, cdr);
8445
8562
  this.bem = buildBem('aui-radio');
@@ -8456,6 +8573,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
8456
8573
  }], ctorParameters: function () { return [{ type: RadioGroupComponent }, { type: i2$1.FocusMonitor }, { type: i0.ChangeDetectorRef }]; } });
8457
8574
 
8458
8575
  class RadioButtonComponent extends BaseRadio {
8576
+ // eslint-disable-next-line @typescript-eslint/no-useless-constructor
8459
8577
  constructor(radioGroup, focusMonitor, cdr) {
8460
8578
  super(radioGroup, focusMonitor, cdr);
8461
8579
  this.bem = buildBem('aui-radio-button');
@@ -8529,10 +8647,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
8529
8647
  }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.ElementRef }]; } });
8530
8648
 
8531
8649
  class TableComponent extends CdkTable {
8650
+ // FIXME: workaround to override because it will break constructor if it is field, but why MatTable works?
8651
+ // @ts-ignore
8532
8652
  get stickyCssClass() {
8533
8653
  return 'aui-table-sticky';
8534
8654
  }
8535
8655
  set stickyCssClass(_) {
8656
+ // nothing
8536
8657
  }
8537
8658
  ngAfterContentInit() {
8538
8659
  this._createPlaceholder();
@@ -8597,6 +8718,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
8597
8718
  args: [TablePlaceholderDefDirective, { static: true }]
8598
8719
  }] } });
8599
8720
 
8721
+ /**
8722
+ * Cell definition for the aui-table.
8723
+ * Captures the template of a column's data row cell as well as cell-specific properties.
8724
+ */
8600
8725
  class TableCellDefDirective extends CdkCellDef {
8601
8726
  }
8602
8727
  TableCellDefDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: TableCellDefDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
@@ -8735,6 +8860,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
8735
8860
  }] } });
8736
8861
 
8737
8862
  const bem$1 = buildBem('aui-table');
8863
+ /** Cell template container that adds the right classes and role. */
8738
8864
  class TableCellDirective extends CdkCell {
8739
8865
  constructor(columnDef, elementRef) {
8740
8866
  super(columnDef, elementRef);
@@ -8747,6 +8873,7 @@ TableCellDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", ver
8747
8873
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: TableCellDirective, decorators: [{
8748
8874
  type: Directive,
8749
8875
  args: [{
8876
+ // eslint-disable-next-line @angular-eslint/directive-selector
8750
8877
  selector: 'aui-table-cell',
8751
8878
  host: {
8752
8879
  class: 'aui-table__cell',
@@ -8758,7 +8885,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
8758
8885
  type: Input
8759
8886
  }] } });
8760
8887
 
8888
+ /**
8889
+ * Column definition for the aui-table.
8890
+ * Defines a set of cells available for a table column.
8891
+ */
8761
8892
  class TableColumnDefDirective extends CdkColumnDef {
8893
+ // Unique name for this column
8894
+ // Why it does not work in `inputs` property?
8762
8895
  set auiTableColumnDef(value) {
8763
8896
  this.name = value;
8764
8897
  }
@@ -8786,6 +8919,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
8786
8919
  type: Input
8787
8920
  }] } });
8788
8921
 
8922
+ /**
8923
+ * Header cell definition for the aui-table.
8924
+ * Captures the template of a column's header cell and as well as cell-specific properties.
8925
+ */
8789
8926
  class TableHeaderCellDefDirective extends CdkHeaderCellDef {
8790
8927
  }
8791
8928
  TableHeaderCellDefDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: TableHeaderCellDefDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
@@ -8809,6 +8946,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
8809
8946
  }] });
8810
8947
 
8811
8948
  const bem = buildBem('aui-table');
8949
+ /** Header cell template container that adds the right classes and role. */
8812
8950
  class TableHeaderCellDirective extends CdkHeaderCell {
8813
8951
  constructor(columnDef, elementRef) {
8814
8952
  super(columnDef, elementRef);
@@ -8820,6 +8958,7 @@ TableHeaderCellDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0
8820
8958
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: TableHeaderCellDirective, decorators: [{
8821
8959
  type: Directive,
8822
8960
  args: [{
8961
+ // eslint-disable-next-line @angular-eslint/directive-selector
8823
8962
  selector: 'aui-table-header-cell',
8824
8963
  host: {
8825
8964
  class: 'aui-table__header-cell',
@@ -8828,6 +8967,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
8828
8967
  }]
8829
8968
  }], ctorParameters: function () { return [{ type: i1$3.CdkColumnDef }, { type: i0.ElementRef }]; } });
8830
8969
 
8970
+ /**
8971
+ * Header row definition for the aui-table.
8972
+ * Captures the header row's template and other header properties such as the columns to display.
8973
+ */
8831
8974
  class TableHeaderRowDefDirective extends CdkHeaderRowDef {
8832
8975
  constructor() {
8833
8976
  super(...arguments);
@@ -8860,6 +9003,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
8860
9003
  args: ['auiTableHeaderRowDefSticky']
8861
9004
  }] } });
8862
9005
 
9006
+ /** Header template container that contains the cell outlet. Adds the right class and role. */
8863
9007
  class TableHeaderRowComponent extends CdkHeaderRow {
8864
9008
  }
8865
9009
  TableHeaderRowComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: TableHeaderRowComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
@@ -8880,6 +9024,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
8880
9024
  }]
8881
9025
  }] });
8882
9026
 
9027
+ /**
9028
+ * Data row definition for the aui-table.
9029
+ * Captures the header row's template and other row properties such as the columns to display and
9030
+ * a when predicate that describes when this row should be used.
9031
+ */
8883
9032
  class TableRowDefDirective extends CdkRowDef {
8884
9033
  constructor() {
8885
9034
  super(...arguments);
@@ -8914,6 +9063,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
8914
9063
  type: Input
8915
9064
  }] } });
8916
9065
 
9066
+ /** Data row template container that contains the cell outlet. Adds the right class and role. */
8917
9067
  class TableRowComponent extends CdkRow {
8918
9068
  constructor(elRef) {
8919
9069
  super();
@@ -9018,6 +9168,7 @@ class TableScrollShadowDirective {
9018
9168
  const scrollTop = this.containerEl.scrollTop;
9019
9169
  this.placeClassList(this.containerEl.classList, scrollTop > 0, HAS_TABLE_TOP_SHADOW);
9020
9170
  this.placeClassList(this.containerEl.classList, scrollTop < scrollDis, HAS_TABLE_BOTTOM_SHADOW);
9171
+ // 兼容屏幕缩放是 sticky多列的样式问题
9021
9172
  this.table.updateStickyColumnStyles();
9022
9173
  }
9023
9174
  mutateHorizontalScroll() {
@@ -9174,8 +9325,10 @@ class FixedSizeTableVirtualScrollStrategy {
9174
9325
  this._updateContent();
9175
9326
  }
9176
9327
  onContentRendered() {
9328
+ // no-op
9177
9329
  }
9178
9330
  onRenderedOffsetChanged() {
9331
+ // no-op
9179
9332
  }
9180
9333
  scrollToIndex(index, behavior) {
9181
9334
  if (!this.viewport || !this._rowHeight) {
@@ -9263,6 +9416,7 @@ class FixedSizeTableVirtualScrollDirective {
9263
9416
  }
9264
9417
  isStickyEnabled() {
9265
9418
  return (!!this.scrollStrategy.viewport &&
9419
+ // @ts-expect-error
9266
9420
  this.table._headerRowDefs
9267
9421
  .map(def => def.sticky)
9268
9422
  .reduce((prev, curr) => prev && curr, true));
@@ -9302,6 +9456,7 @@ FixedSizeTableVirtualScrollDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVers
9302
9456
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: FixedSizeTableVirtualScrollDirective, decorators: [{
9303
9457
  type: Directive,
9304
9458
  args: [{
9459
+ // eslint-disable-next-line @angular-eslint/directive-selector
9305
9460
  selector: 'aui-virtual-scroll-viewport[fixedSize]',
9306
9461
  exportAs: 'viewPort',
9307
9462
  providers: [
@@ -9338,6 +9493,7 @@ FixedSizeVirtualScrollDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion:
9338
9493
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: FixedSizeVirtualScrollDirective, decorators: [{
9339
9494
  type: Directive,
9340
9495
  args: [{
9496
+ // eslint-disable-next-line @angular-eslint/directive-selector
9341
9497
  selector: 'aui-virtual-scroll-viewport[itemSize]',
9342
9498
  providers: [
9343
9499
  {
@@ -9427,19 +9583,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
9427
9583
  }]
9428
9584
  }] });
9429
9585
 
9586
+ /** @docs-private */
9430
9587
  function getSortDuplicateSortableIdError(id) {
9431
9588
  return new Error(`Cannot have two MatSortables with the same id (${id}).`);
9432
9589
  }
9590
+ /** @docs-private */
9433
9591
  function getSortHeaderNotContainedWithinSortError() {
9434
9592
  return new Error(`MatSortHeader must be placed within a parent element with the MatSort directive.`);
9435
9593
  }
9594
+ /** @docs-private */
9436
9595
  function getSortHeaderMissingIdError() {
9437
9596
  return new Error(`MatSortHeader must be provided with a unique id.`);
9438
9597
  }
9598
+ /** @docs-private */
9439
9599
  function getSortInvalidDirectionError(direction) {
9440
9600
  return new Error(`${direction} is not a valid sort direction ('asc' or 'desc').`);
9441
9601
  }
9442
9602
 
9603
+ // Original code from material2
9443
9604
  class SortDirective {
9444
9605
  constructor() {
9445
9606
  this.sortables = new Map();
@@ -9659,6 +9820,9 @@ const StepSelectedIcon = {
9659
9820
  class StepsComponent {
9660
9821
  constructor() {
9661
9822
  this._steps = [];
9823
+ /**
9824
+ * @deprecated type 为 step 时一般在使用上下文中控制是否可以进行下一步;type 为 progress 时强制按顺序执行
9825
+ */
9662
9826
  this.linear = false;
9663
9827
  this.orientation = 'horizontal';
9664
9828
  this.type = 'step';
@@ -9771,6 +9935,7 @@ class StepsComponent {
9771
9935
  (currentStep.state !== StepState.Done && i > this._currentIndex))) {
9772
9936
  return false;
9773
9937
  }
9938
+ // eslint-disable-next-line sonarjs/prefer-single-boolean-return
9774
9939
  if (i < this._currentIndex && !this.selectable) {
9775
9940
  return false;
9776
9941
  }
@@ -10084,6 +10249,7 @@ class TabBodyComponent {
10084
10249
  constructor() {
10085
10250
  this.content$ = new BehaviorSubject(null);
10086
10251
  }
10252
+ /** The tab body content to display. */
10087
10253
  get content() {
10088
10254
  return this._content;
10089
10255
  }
@@ -10108,7 +10274,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
10108
10274
  }], content: [{
10109
10275
  type: Input
10110
10276
  }] } });
10277
+ /** Used to flag tab labels for use with the portal directive */
10111
10278
  class TabLabelDirective extends CdkPortal {
10279
+ // eslint-disable-next-line @typescript-eslint/no-useless-constructor
10112
10280
  constructor(templateRef, viewContainerRef) {
10113
10281
  super(templateRef, viewContainerRef);
10114
10282
  }
@@ -10121,6 +10289,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
10121
10289
  selector: '[auiTabLabel]',
10122
10290
  }]
10123
10291
  }], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }]; } });
10292
+ /**
10293
+ * Lazy load the embedded template for a tab content.
10294
+ */
10124
10295
  class TabContentDirective {
10125
10296
  constructor(template) {
10126
10297
  this.template = template;
@@ -10134,7 +10305,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
10134
10305
  selector: '[auiTabContent]',
10135
10306
  }]
10136
10307
  }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });
10308
+ /** Used to project additional template from host to the tab header. */
10137
10309
  class TabHeaderAddonDirective extends CdkPortal {
10310
+ // eslint-disable-next-line @typescript-eslint/no-useless-constructor
10138
10311
  constructor(templateRef, viewContainerRef) {
10139
10312
  super(templateRef, viewContainerRef);
10140
10313
  }
@@ -10147,10 +10320,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
10147
10320
  selector: '[auiTabHeaderAddon]',
10148
10321
  }]
10149
10322
  }], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }]; } });
10323
+ /**
10324
+ * Used in the `aui-tab-group` view to display tab labels.
10325
+ */
10150
10326
  class TabLabelWrapperDirective {
10151
10327
  constructor(elementRef) {
10152
10328
  this.elementRef = elementRef;
10153
10329
  }
10330
+ /** Whether or not the tab is disabled */
10154
10331
  get disabled() {
10155
10332
  return this._disabled;
10156
10333
  }
@@ -10163,6 +10340,7 @@ class TabLabelWrapperDirective {
10163
10340
  getOffsetWidth() {
10164
10341
  return this.elementRef.nativeElement.offsetWidth;
10165
10342
  }
10343
+ /** Sets focus on the wrapper element */
10166
10344
  focus() {
10167
10345
  this.elementRef.nativeElement.focus();
10168
10346
  }
@@ -10182,6 +10360,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
10182
10360
  type: Input
10183
10361
  }] } });
10184
10362
  class TabTitleDirective extends CdkPortal {
10363
+ // eslint-disable-next-line @typescript-eslint/no-useless-constructor
10185
10364
  constructor(templateRef, viewContainerRef) {
10186
10365
  super(templateRef, viewContainerRef);
10187
10366
  }
@@ -10194,12 +10373,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
10194
10373
  selector: '[auiTabTitle]',
10195
10374
  }]
10196
10375
  }], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }]; } });
10376
+ /**
10377
+ * The portal host directive for the contents of the tab.
10378
+ */
10197
10379
  class TabBodyPortalDirective extends CdkPortalOutlet {
10198
10380
  constructor(componentFactoryResolver, viewContainerRef, _host) {
10199
10381
  super(componentFactoryResolver, viewContainerRef);
10200
10382
  this._host = _host;
10201
10383
  this._hostSubscription = Subscription.EMPTY;
10202
10384
  }
10385
+ /** Set initial visibility or set up subscription for changing visibility. */
10203
10386
  ngOnInit() {
10204
10387
  super.ngOnInit();
10205
10388
  this._hostSubscription = this._host.content$.subscribe(content => {
@@ -10230,6 +10413,9 @@ class TabContextService {
10230
10413
  ? combineLatest([_parent.active$, this.active$$]).pipe(map(([a, b]) => a && b))
10231
10414
  : this.active$$).pipe(distinctUntilChanged());
10232
10415
  }
10416
+ /**
10417
+ * Whether the tab is currently active.
10418
+ */
10233
10419
  get isActive() {
10234
10420
  return this.active$$.value;
10235
10421
  }
@@ -10249,19 +10435,33 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
10249
10435
  }] }];
10250
10436
  } });
10251
10437
 
10438
+ /* eslint-disable no-prototype-builtins */
10252
10439
  class TabComponent {
10253
10440
  constructor(_viewContainerRef, tabContext) {
10254
10441
  this._viewContainerRef = _viewContainerRef;
10255
10442
  this.tabContext = tabContext;
10443
+ /** Plain text label for the tab, used when there is no template label. */
10256
10444
  this.textLabel = '';
10445
+ /** Whether or not to show the close button in the header */
10257
10446
  this.closeable = false;
10258
10447
  this.close = new EventEmitter();
10448
+ /**
10449
+ * The relatively indexed position where 0 represents the center, negative is left, and positive
10450
+ * represents the right.
10451
+ */
10259
10452
  this.position = null;
10453
+ /**
10454
+ * The initial relatively index origin of the tab if it was created and selected after there
10455
+ * was already a selected tab. Provides context of what position the tab should originate from.
10456
+ */
10260
10457
  this.origin = null;
10458
+ /** Emits whenever the internal state of the tab changes. */
10261
10459
  this._stateChanges = new Subject();
10460
+ /** Portal that will be the hosted content of the tab */
10262
10461
  this._contentPortal = null;
10263
10462
  this._disabled = false;
10264
10463
  }
10464
+ /** Whether or not the tab is disabled */
10265
10465
  get disabled() {
10266
10466
  return this._disabled;
10267
10467
  }
@@ -10313,8 +10513,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
10313
10513
  }] } });
10314
10514
 
10315
10515
  const TabSize = {
10516
+ /** 卡片级尺寸 */
10316
10517
  Large: 'large',
10518
+ /** 页面级尺寸 */
10317
10519
  Medium: 'medium',
10520
+ /** 小尺寸 */
10318
10521
  Small: 'small',
10319
10522
  };
10320
10523
  const TabType = {
@@ -10329,6 +10532,11 @@ class TabHeaderActiveIndicatorComponent {
10329
10532
  this.type = TabType.Line;
10330
10533
  this.bem = buildBem('aui-tab-header-active-indicator');
10331
10534
  }
10535
+ /**
10536
+ * Calculates the styles from the provided element in order to align the indicator to that element.
10537
+ * Shows the indicator if previously set as hidden.
10538
+ * @param element
10539
+ */
10332
10540
  alignToElement(element) {
10333
10541
  if (typeof requestAnimationFrame !== 'undefined') {
10334
10542
  this._ngZone.runOutsideAngular(() => {
@@ -10339,6 +10547,10 @@ class TabHeaderActiveIndicatorComponent {
10339
10547
  this._setStyles(element);
10340
10548
  }
10341
10549
  }
10550
+ /**
10551
+ * Sets the proper styles to the element.
10552
+ * @param element
10553
+ */
10342
10554
  _setStyles(element) {
10343
10555
  const positions = this._getElementPosition(element);
10344
10556
  const nativeEl = this._elementRef.nativeElement;
@@ -10361,6 +10573,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
10361
10573
  type: Input
10362
10574
  }] } });
10363
10575
 
10576
+ /**
10577
+ * The distance in pixels that will be overshot when scrolling a tab label into view. This helps
10578
+ * provide a small affordance to the label next to it.
10579
+ */
10364
10580
  const EXAGGERATED_OVERSCROLL = 60;
10365
10581
  class TabHeaderComponent {
10366
10582
  constructor(_changeDetectorRef, _viewportRuler) {
@@ -10368,18 +10584,27 @@ class TabHeaderComponent {
10368
10584
  this._viewportRuler = _viewportRuler;
10369
10585
  this.bem = buildBem('aui-tab-header');
10370
10586
  this._showAddon = false;
10587
+ /** Whether the controls for pagination should be displayed */
10371
10588
  this._showPaginationControls = false;
10589
+ /** Whether the tab list can be scrolled more towards the end of the tab label list. */
10372
10590
  this._disableScrollAfter = true;
10591
+ /** Whether the tab list can be scrolled more towards the beginning of the tab label list. */
10373
10592
  this._disableScrollBefore = true;
10593
+ /** Whether the header should scroll to the selected index after the view has been checked. */
10374
10594
  this._selectedIndexChanged = false;
10595
+ /** The distance in pixels that the tab labels should be translated to the left. */
10375
10596
  this._scrollDistance = 0;
10376
10597
  this._selectedIndex = 0;
10598
+ /** Emits when the component is destroyed. */
10377
10599
  this._destroyed = new Subject();
10378
10600
  this.type = TabType.Line;
10379
10601
  this.size = TabSize.Medium;
10602
+ /** Event emitted when the option is selected. */
10380
10603
  this.selectFocusedIndex = new EventEmitter();
10604
+ /** Event emitted when a label is focused. */
10381
10605
  this.indexFocused = new EventEmitter();
10382
10606
  }
10607
+ /** The index of the active tab. */
10383
10608
  get selectedIndex() {
10384
10609
  return this._selectedIndex;
10385
10610
  }
@@ -10396,11 +10621,14 @@ class TabHeaderComponent {
10396
10621
  this._destroyed.complete();
10397
10622
  }
10398
10623
  ngAfterContentChecked() {
10624
+ // If the number of tab labels have changed, check if scrolling should be enabled
10399
10625
  if (this._tabLabelCount !== this._labelWrappers.length) {
10400
10626
  this._updatePagination();
10401
10627
  this._tabLabelCount = this._labelWrappers.length;
10402
10628
  this._changeDetectorRef.markForCheck();
10403
10629
  }
10630
+ // If the selected index has changed, scroll to the label and check if the scrolling controls
10631
+ // should be disabled.
10404
10632
  if (this._selectedIndexChanged) {
10405
10633
  this._scrollToLabel(this._selectedIndex);
10406
10634
  this._checkScrollingControls();
@@ -10408,6 +10636,8 @@ class TabHeaderComponent {
10408
10636
  this._selectedIndexChanged = false;
10409
10637
  this._changeDetectorRef.markForCheck();
10410
10638
  }
10639
+ // If the scroll distance has been changed (tab selected, focused, scroll controls activated),
10640
+ // then translate the header to reflect this.
10411
10641
  if (this._scrollDistanceChanged) {
10412
10642
  this._updateTabScrollPosition();
10413
10643
  this._scrollDistanceChanged = false;
@@ -10419,6 +10649,9 @@ class TabHeaderComponent {
10419
10649
  this._changeDetectorRef.markForCheck();
10420
10650
  }
10421
10651
  }
10652
+ /**
10653
+ * Aligns the ink bar to the selected tab on load.
10654
+ */
10422
10655
  ngAfterContentInit() {
10423
10656
  const resize = this._viewportRuler.change(150);
10424
10657
  const realign = () => {
@@ -10429,12 +10662,19 @@ class TabHeaderComponent {
10429
10662
  .withHorizontalOrientation('ltr')
10430
10663
  .withWrap();
10431
10664
  this._keyManager.updateActiveItem(0);
10665
+ // Defer the first call in order to allow for slower browsers to lay out the elements.
10666
+ // This helps in cases where the user lands directly on a page with paginated tabs.
10432
10667
  typeof requestAnimationFrame !== 'undefined'
10433
10668
  ? requestAnimationFrame(realign)
10434
10669
  : realign();
10670
+ // On window resize, realign the ink bar and update the orientation of
10671
+ // the key manager if the direction has changed.
10435
10672
  resize.pipe(takeUntil(this._destroyed)).subscribe(() => {
10436
10673
  realign();
10437
10674
  });
10675
+ // If there is a change in the focus key manager we need to emit the `indexFocused`
10676
+ // event in order to provide a public event that notifies about focus changes. Also we realign
10677
+ // the tabs container by scrolling the new focused tab into the visible section.
10438
10678
  this._keyManager.change
10439
10679
  .pipe(takeUntil(this._destroyed))
10440
10680
  .subscribe(newFocusIndex => {
@@ -10442,17 +10682,22 @@ class TabHeaderComponent {
10442
10682
  this._setTabFocus(newFocusIndex);
10443
10683
  });
10444
10684
  }
10685
+ /** Sets the distance in pixels that the tab header should be transformed in the X-axis. */
10445
10686
  get scrollDistance() {
10446
10687
  return this._scrollDistance;
10447
10688
  }
10448
10689
  set scrollDistance(v) {
10449
10690
  this._scrollDistance = Math.max(0, Math.min(this._getMaxScrollDistance(), v));
10691
+ // Mark that the scroll distance has changed so that after the view is checked, the CSS
10692
+ // transformation can move the header.
10450
10693
  this._scrollDistanceChanged = true;
10451
10694
  this._checkScrollingControls();
10452
10695
  }
10696
+ /** Tracks which element has focus; used for keyboard navigation */
10453
10697
  get focusIndex() {
10454
10698
  return this._keyManager ? this._keyManager.activeItemIndex : 0;
10455
10699
  }
10700
+ /** When the focus index is set, we must manually send focus to the correct label */
10456
10701
  set focusIndex(value) {
10457
10702
  if (!this._isValidIndex(value) ||
10458
10703
  this.focusIndex === value ||
@@ -10461,6 +10706,10 @@ class TabHeaderComponent {
10461
10706
  }
10462
10707
  this._keyManager.setActiveItem(value);
10463
10708
  }
10709
+ /**
10710
+ * Determines if an index is valid. If the tabs are not ready yet, we assume that the user is
10711
+ * providing a valid index and return true.
10712
+ */
10464
10713
  _isValidIndex(index) {
10465
10714
  if (!this._labelWrappers) {
10466
10715
  return true;
@@ -10489,6 +10738,10 @@ class TabHeaderComponent {
10489
10738
  this._keyManager.onKeydown(event);
10490
10739
  }
10491
10740
  }
10741
+ /**
10742
+ * Sets focus on the HTML element for the label wrapper and scrolls it into the view if
10743
+ * scrolling is enabled.
10744
+ */
10492
10745
  _setTabFocus(tabIndex) {
10493
10746
  var _a;
10494
10747
  if (this._showPaginationControls) {
@@ -10496,10 +10749,19 @@ class TabHeaderComponent {
10496
10749
  }
10497
10750
  if (((_a = this._labelWrappers) === null || _a === void 0 ? void 0 : _a.length) > 0) {
10498
10751
  this._labelWrappers.toArray()[tabIndex].focus();
10752
+ // Do not let the browser manage scrolling to focus the element, this will be handled
10753
+ // by using translation. In LTR, the scroll left should be 0. In RTL, the scroll width
10754
+ // should be the full width minus the offset width.
10499
10755
  const containerEl = this._tabListContainer.nativeElement;
10500
10756
  containerEl.scrollLeft = 0;
10501
10757
  }
10502
10758
  }
10759
+ /**
10760
+ * Moves the tab list such that the desired tab label (marked by index) is moved into view.
10761
+ *
10762
+ * This is an expensive call that forces a layout reflow to compute box and scroll metrics and
10763
+ * should be called sparingly.
10764
+ */
10503
10765
  _scrollToLabel(labelIndex) {
10504
10766
  const selectedLabel = this._labelWrappers
10505
10767
  ? this._labelWrappers.toArray()[labelIndex]
@@ -10507,37 +10769,63 @@ class TabHeaderComponent {
10507
10769
  if (!selectedLabel) {
10508
10770
  return;
10509
10771
  }
10772
+ // The view length is the visible width of the tab labels.
10510
10773
  const viewLength = this._tabListContainer.nativeElement.offsetWidth;
10511
10774
  const labelBeforePos = selectedLabel.getOffsetLeft();
10512
10775
  const labelAfterPos = labelBeforePos + selectedLabel.getOffsetWidth();
10513
10776
  const beforeVisiblePos = this.scrollDistance;
10514
10777
  const afterVisiblePos = this.scrollDistance + viewLength;
10515
10778
  if (labelBeforePos < beforeVisiblePos) {
10779
+ // Scroll header to move label to the before direction
10516
10780
  this.scrollDistance -=
10517
10781
  beforeVisiblePos - labelBeforePos + EXAGGERATED_OVERSCROLL;
10518
10782
  }
10519
10783
  else if (labelAfterPos > afterVisiblePos) {
10784
+ // Scroll header to move label to the after direction
10520
10785
  this.scrollDistance +=
10521
10786
  labelAfterPos - afterVisiblePos + EXAGGERATED_OVERSCROLL;
10522
10787
  }
10523
10788
  }
10789
+ /**
10790
+ * Moves the tab list in the 'before' or 'after' direction (towards the beginning of the list or
10791
+ * the end of the list, respectively). The distance to scroll is computed to be a third of the
10792
+ * length of the tab list view window.
10793
+ *
10794
+ * This is an expensive call that forces a layout reflow to compute box and scroll metrics and
10795
+ * should be called sparingly.
10796
+ */
10524
10797
  _scrollHeader(scrollDir) {
10525
10798
  const viewLength = this._tabListContainer.nativeElement.offsetWidth;
10799
+ // Move the scroll distance one-third the length of the tab list's viewport.
10526
10800
  this.scrollDistance += ((scrollDir === 'before' ? -1 : 1) * viewLength) / 3;
10527
10801
  }
10802
+ /**
10803
+ * Callback for when the MutationObserver detects that the content has changed.
10804
+ */
10528
10805
  _onContentChanges() {
10529
10806
  this._updatePagination();
10530
10807
  this._alignActiveIndicatorToSelectedTab();
10531
10808
  this._changeDetectorRef.markForCheck();
10532
10809
  }
10810
+ /**
10811
+ * Updating the view whether pagination should be enabled or not
10812
+ */
10533
10813
  _updatePagination() {
10534
10814
  this._checkPaginationEnabled();
10535
10815
  this._checkScrollingControls();
10536
10816
  this._updateTabScrollPosition();
10537
10817
  }
10818
+ /**
10819
+ * Evaluate whether the pagination controls should be displayed. If the scroll width of the
10820
+ * tab list is wider than the size of the header container, then the pagination controls should
10821
+ * be shown.
10822
+ *
10823
+ * This is an expensive call that forces a layout reflow to compute box and scroll metrics and
10824
+ * should be called sparingly.
10825
+ */
10538
10826
  _checkPaginationEnabled() {
10539
10827
  const isEnabled = this._tabList.nativeElement.scrollWidth >
10540
- this._paginationWrapper.nativeElement.offsetWidth + 2;
10828
+ this._paginationWrapper.nativeElement.offsetWidth + 2; // 2 is the border size
10541
10829
  if (!isEnabled) {
10542
10830
  this.scrollDistance = 0;
10543
10831
  }
@@ -10547,22 +10835,45 @@ class TabHeaderComponent {
10547
10835
  this._changeDetectorRef.markForCheck();
10548
10836
  }
10549
10837
  }
10838
+ /**
10839
+ * Evaluate whether the before and after controls should be enabled or disabled.
10840
+ * If the header is at the beginning of the list (scroll distance is equal to 0) then disable the
10841
+ * before button. If the header is at the end of the list (scroll distance is equal to the
10842
+ * maximum distance we can scroll), then disable the after button.
10843
+ *
10844
+ * This is an expensive call that forces a layout reflow to compute box and scroll metrics and
10845
+ * should be called sparingly.
10846
+ */
10550
10847
  _checkScrollingControls() {
10848
+ // Check if the pagination arrows should be activated.
10551
10849
  this._disableScrollBefore = this.scrollDistance === 0;
10552
10850
  this._disableScrollAfter =
10553
10851
  this.scrollDistance === this._getMaxScrollDistance();
10554
10852
  this._changeDetectorRef.markForCheck();
10555
10853
  }
10854
+ /**
10855
+ * Determines what is the maximum length in pixels that can be set for the scroll distance. This
10856
+ * is equal to the difference in width between the tab list container and tab header container.
10857
+ *
10858
+ * This is an expensive call that forces a layout reflow to compute box and scroll metrics and
10859
+ * should be called sparingly.
10860
+ */
10556
10861
  _getMaxScrollDistance() {
10557
10862
  const lengthOfTabList = this._tabList.nativeElement.scrollWidth;
10558
10863
  const viewLength = this._tabListContainer.nativeElement.offsetWidth;
10559
10864
  return lengthOfTabList - viewLength || 0;
10560
10865
  }
10866
+ /** Performs the CSS transformation on the tab list that will cause the list to scroll. */
10561
10867
  _updateTabScrollPosition() {
10562
10868
  const scrollDistance = this.scrollDistance;
10563
10869
  const translateX = -scrollDistance;
10870
+ // Don't use `translate3d` here because we don't want to create a new layer. A new layer
10871
+ // seems to cause flickering and overflow in Internet Explorer. For example, the ink bar
10872
+ // and ripples will exceed the boundaries of the visible tab bar.
10873
+ // See: https://github.com/angular/material2/issues/10276
10564
10874
  this._tabList.nativeElement.style.transform = `translateX(${translateX}px)`;
10565
10875
  }
10876
+ /** Tells the active indicator to align itself to the current label wrapper */
10566
10877
  _alignActiveIndicatorToSelectedTab() {
10567
10878
  var _a;
10568
10879
  const selectedLabelWrapper = ((_a = this._labelWrappers) === null || _a === void 0 ? void 0 : _a.length) > 0
@@ -10593,7 +10904,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
10593
10904
  }], _title: [{
10594
10905
  type: ContentChild,
10595
10906
  args: [TabTitleDirective, { static: false }]
10596
- }], _labelWrappers: [{
10907
+ }],
10908
+ /**
10909
+ * workaround for @link https://github.com/microsoft/TypeScript/pull/42425
10910
+ */
10911
+ _labelWrappers: [{
10597
10912
  type: ContentChildren,
10598
10913
  args: [TabLabelWrapperDirective]
10599
10914
  }], _tabListContainer: [{
@@ -10610,27 +10925,38 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
10610
10925
  args: [TabHeaderActiveIndicatorComponent, { static: true }]
10611
10926
  }] } });
10612
10927
 
10928
+ /* eslint-disable no-prototype-builtins */
10929
+ /** A simple change event emitted on focus or selection changes. */
10613
10930
  class TabChangeEvent {
10614
10931
  }
10615
10932
  class TabGroupComponent {
10616
10933
  constructor(_changeDetectorRef) {
10617
10934
  this._changeDetectorRef = _changeDetectorRef;
10618
10935
  this.bem = buildBem('aui-tab-group');
10936
+ /** The tab index that should be selected after the content has been checked. */
10619
10937
  this._indexToSelect = 0;
10938
+ /** Subscription to tabs being added/removed. */
10620
10939
  this._tabsSubscription = Subscription.EMPTY;
10940
+ /** Subscription to changes in the tab labels. */
10621
10941
  this._tabLabelSubscription = Subscription.EMPTY;
10622
10942
  this._selectedIndex = null;
10623
10943
  this._tab = null;
10624
10944
  this._type = TabType.Line;
10625
10945
  this._size = TabSize.Medium;
10946
+ /** Emits whenever the type changes */
10626
10947
  this._typeChange = new Subject();
10948
+ /** Emits whenever the size changes */
10627
10949
  this._sizeChange = new Subject();
10950
+ /** Output to enable support for two-way binding on `[(selectedIndex)]` */
10628
10951
  this.selectedIndexChange = new EventEmitter();
10629
10952
  this.tabChange = new EventEmitter();
10953
+ /** Event emitted when the tab selection has changed. */
10630
10954
  this.selectedTabChange = new EventEmitter(true);
10955
+ /** Event emitted when focus has changed within a tab group. */
10631
10956
  this.focusChange = new EventEmitter();
10632
10957
  this.activatedTabs = [];
10633
10958
  }
10959
+ /** The index of the active tab. */
10634
10960
  get selectedIndex() {
10635
10961
  return this._selectedIndex;
10636
10962
  }
@@ -10690,20 +11016,34 @@ class TabGroupComponent {
10690
11016
  this._sizeChange.next();
10691
11017
  }
10692
11018
  }
11019
+ /**
11020
+ * After the content is checked, this component knows what tabs have been defined
11021
+ * and what the selected index should be. This is where we can know exactly what position
11022
+ * each tab should be in according to the new selected index.
11023
+ */
10693
11024
  ngAfterContentChecked() {
11025
+ // Don't clamp the `indexToSelect` immediately in the setter because it can happen that
11026
+ // the amount of tabs changes before the actual change detection runs.
10694
11027
  const indexToSelect = (this._indexToSelect = this._clampTabIndex(this._indexToSelect));
11028
+ // If there is a change in selected index, emit a change event. Should not trigger if
11029
+ // the selected index has not yet been initialized.
10695
11030
  if (this._selectedIndex !== indexToSelect && this._selectedIndex != null) {
10696
11031
  this._changeActivatedTabs();
10697
11032
  const tabChangeEvent = this._createChangeEvent(indexToSelect);
10698
11033
  this.selectedTabChange.emit(tabChangeEvent);
11034
+ // Emitting this value after change detection has run
11035
+ // since the checked content may contain this variable'
10699
11036
  Promise.resolve().then(() => {
10700
11037
  this.selectedIndexChange.emit(indexToSelect);
10701
11038
  this.tabChange.emit(this._tabs.get(indexToSelect).name);
10702
11039
  });
10703
11040
  }
11041
+ // Setup the position for each tab and optionally setup an origin on the next selected tab.
10704
11042
  this._tabs.forEach((tab, index) => {
10705
11043
  tab.position = index - indexToSelect;
10706
11044
  tab.tabContext.isActive = index === indexToSelect;
11045
+ // If there is already a selected tab, then set up an origin for the next selected tab
11046
+ // if it doesn't have one already.
10707
11047
  if (this._selectedIndex != null && tab.position === 0 && !tab.origin) {
10708
11048
  tab.origin = indexToSelect - this._selectedIndex;
10709
11049
  }
@@ -10723,15 +11063,22 @@ class TabGroupComponent {
10723
11063
  }
10724
11064
  this._changeActivatedTabs();
10725
11065
  this._subscribeToTabLabels();
11066
+ // Subscribe to changes in the amount of tabs, in order to be
11067
+ // able to re-render the content as new tabs are added or removed.
10726
11068
  this._tabsSubscription = this._tabs.changes.subscribe(() => {
10727
11069
  const tabs = this._tabs.toArray();
10728
11070
  if (this._lazy) {
10729
11071
  this.activatedTabs = this.activatedTabs.filter(tab => tabs.includes(tab));
10730
11072
  }
10731
11073
  const indexToSelect = this._clampTabIndex(this._indexToSelect);
11074
+ // Maintain the previously-selected tab if a new tab is added or removed and there is no
11075
+ // explicit change that selects a different tab.
10732
11076
  if (indexToSelect === this._selectedIndex) {
10733
11077
  for (const [i, tab] of tabs.entries()) {
10734
11078
  if (tab.tabContext.isActive) {
11079
+ // Assign both to the `_indexToSelect` and `_selectedIndex` so we don't fire a changed
11080
+ // event, otherwise the consumer may end up in an infinite loop in some edge cases like
11081
+ // adding a tab within the `selectedIndexChange` event.
10735
11082
  this._indexToSelect = this._selectedIndex = i;
10736
11083
  break;
10737
11084
  }
@@ -10748,6 +11095,7 @@ class TabGroupComponent {
10748
11095
  this._typeChange.complete();
10749
11096
  this._sizeChange.complete();
10750
11097
  }
11098
+ /** Handle click events, setting new selected index if appropriate. */
10751
11099
  _handleClick(tab, idx) {
10752
11100
  if (!tab.disabled) {
10753
11101
  this.selectedIndex = this._tabHeader.focusIndex = idx;
@@ -10756,6 +11104,7 @@ class TabGroupComponent {
10756
11104
  _focusChanged(index) {
10757
11105
  this.focusChange.emit(this._createChangeEvent(index));
10758
11106
  }
11107
+ /** Re-aligns the ink bar to the selected tab element. */
10759
11108
  realignActiveIndicator() {
10760
11109
  if (this._tabHeader) {
10761
11110
  this._tabHeader._alignActiveIndicatorToSelectedTab();
@@ -10773,7 +11122,11 @@ class TabGroupComponent {
10773
11122
  this.activatedTabs.push(tab);
10774
11123
  }
10775
11124
  }
11125
+ /** Clamps the given index to the bounds of 0 and the tabs length. */
10776
11126
  _clampTabIndex(index) {
11127
+ // Note the `|| 0`, which ensures that values like NaN can't get through
11128
+ // and which would otherwise throw the component into an infinite loop
11129
+ // (since Math.max(NaN, 0) === NaN).
10777
11130
  return Math.min(this._tabs.length - 1, Math.max(index || 0, 0));
10778
11131
  }
10779
11132
  _findIndexByTab(name) {
@@ -10788,6 +11141,12 @@ class TabGroupComponent {
10788
11141
  }
10789
11142
  return event;
10790
11143
  }
11144
+ /**
11145
+ * Subscribes to changes in the tab labels. This is needed, because the @Input for the label is
11146
+ * on the Tab component, whereas the data binding is inside the TabGroup. In order for the
11147
+ * binding to be updated, we need to subscribe to changes in it and trigger change detection
11148
+ * manually.
11149
+ */
10791
11150
  _subscribeToTabLabels() {
10792
11151
  if (this._tabLabelSubscription) {
10793
11152
  this._tabLabelSubscription.unsubscribe();
@@ -10797,6 +11156,7 @@ class TabGroupComponent {
10797
11156
  this._changeDetectorRef.markForCheck();
10798
11157
  });
10799
11158
  }
11159
+ /** Retrieves the tabindex for the tab. */
10800
11160
  _getTabIndex(tab, idx) {
10801
11161
  if (tab.disabled) {
10802
11162
  return null;
@@ -10951,6 +11311,7 @@ class TreeSelectComponent extends CommonFormControl {
10951
11311
  this.filterString$ = this.filterString$$.asObservable();
10952
11312
  this.displayText = '';
10953
11313
  this.flattedNodes = [];
11314
+ // `this` is not available in `trackBy`...
10954
11315
  this.trackByLabel = (_, node) => this.getLabelFromNode(node);
10955
11316
  }
10956
11317
  get nodesData() {
@@ -11287,5 +11648,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
11287
11648
  }]
11288
11649
  }] });
11289
11650
 
11651
+ /**
11652
+ * Generated bundle index. Do not edit.
11653
+ */
11654
+
11290
11655
  export { AccordionComponent, AccordionItemComponent, AccordionItemContentDirective, AccordionItemHeaderDirective, AccordionModule, AnchorComponent, AnchorDirective, AnchorDirectiveChild, AnchorLabelDirective, AnchorModule, AnchorTreeComponent, AuiSelectValidators, AutoCompleteDirective, AutocompleteComponent, AutocompleteModule, AutocompletePlaceholderComponent, AutosizeDirective, BackTopComponent, BackTopModule, BaseTooltip, Bem, BreadcrumbComponent, BreadcrumbItemComponent, BreadcrumbModule, ButtonComponent, ButtonGroupComponent, ButtonModule, ButtonType, CONTROL_ITEM_HEIGHT, CalendarFooterComponent, CalendarHeaderComponent, CardComponent, CardFooterDirective, CardHeaderDirective, CardModule, CheckTagComponent, CheckboxComponent, CheckboxGroupComponent, CheckboxModule, ColorPickerComponent, ColorPickerModule, CommonForm, CommonFormControl, ComponentSize, ConfirmDialogConfig, ConfirmType, CssVarPipe, CustomAutoCompleteDirective, DATA, DATE, DATE_NAV_RANGES, DATE_TYPES, DAY, DAY_PANEL_COLUMN_COUNT, DAY_PANEL_ROW_COUNT, DIALOG_DATA, DISPLAY_DELAY, DateNavRange, DatePickerComponent, DatePickerModule, DatePickerPanelComponent, DatePickerTriggerComponent, DatePickerType, DateRangePickerPanelComponent, DialogCloseDirective, DialogComponent, DialogConfig, DialogContentComponent, DialogFooterComponent, DialogHeaderComponent, DialogModule, DialogRef, DialogService, DialogSize, DrawerComponent, DrawerContentDirective, DrawerFooterDirective, DrawerHeaderDirective, DrawerModule, DrawerRef, DrawerService, DrawerSize, DropdownActiveDirective, DropdownButtonComponent, DropdownDirective, DropdownModule, FixedSizeTableVirtualScrollDirective, FixedSizeTableVirtualScrollStrategy, FixedSizeVirtualScrollDirective, FormDirective, FormItemAddonDirective, FormItemComponent, FormItemControlDirective, FormItemErrorDirective, FormItemHintDirective, FormItemLabelDirective, FormItemWidth, FormModule, HIDDEN_DELAY, HOUR, HOUR_ITEMS, I18NInterfaceToken, I18nModule, I18nPipe, I18nService, ICON_REGISTER_PROVIDER_FACTORY, ICON_REGISTER_SERVICE_PROVIDER, INPUT_ERROR_KEY, IconComponent, IconModule, IconRegisterService, IncludesDirective, InlineAlertComponent, InlineAlertModule, InlineAlertTitleDirective, InlineAlertType, InputAddonAfterDirective, InputAddonBeforeDirective, InputComponent, InputGroupComponent, InputModule, InputPrefixDirective, InputSuffixDirective, LabelPosition, MESSAGE_CONFIG, MESSAGE_DEFAULT_CONFIG, MINUTE, MINUTE_ITEMS, MONTH, MONTH_PANEL_COLUMN_COUNT, MONTH_PANEL_ROW_COUNT, MenuComponent, MenuContentDirective, MenuGroupComponent, MenuGroupTitleDirective, MenuItemComponent, MenuItemType, MessageConfig, MessageModule, MessageService, MessageType, MultiSelectComponent, NOTIFICATION_CONFIG, NOTIFICATION_DEFAULT_CONFIG, NotificationComponent, NotificationModule, NotificationService, NumberInputComponent, OptionComponent, OptionContentDirective, OptionGroupComponent, OptionGroupTitleDirective, OptionPlaceholderComponent, PAGINATOR_INTL_PROVIDER, PAGINATOR_INTL_PROVIDER_FACTORY, PageEvent, PaginatorComponent, PaginatorIntl, PaginatorModule, PickerPanelComponent, RadioButtonComponent, RadioComponent, RadioGroupComponent, RadioModule, RadioSize, RangePickerComponent, RgbColorPipe, RgbaColorPipe, SECOND, SECOND_ITEMS, ScrollingModule, SearchComponent, SectionComponent, SectionTitleDirective, SelectAllStatus, SelectComponent, SelectModule, Side, SortDirective, SortHeaderComponent, SortModule, StatusBarComponent, StatusBarModule, StatusBarSize, StatusType, StepState, StepsComponent, StepsModule, SubmenuComponent, SuggestionComponent, SuggestionGroupComponent, SuggestionGroupTitleDirective, SwitchComponent, SwitchModule, TOOLTIP_COPY_INTL_INTL_PROVIDER, TOOLTIP_COPY_INTL_PROVIDER_FACTORY, TabBodyComponent, TabBodyPortalDirective, TabChangeEvent, TabComponent, TabContentDirective, TabContextService, TabGroupComponent, TabHeaderActiveIndicatorComponent, TabHeaderAddonDirective, TabHeaderComponent, TabLabelDirective, TabLabelWrapperDirective, TabSize, TabTitleDirective, TabType, TableCellDefDirective, TableCellDirective, TableColumnDefDirective, TableComponent, TableExpandButtonCellComponent, TableExpandPanelCellComponent, TableHeaderCellDefDirective, TableHeaderCellDirective, TableHeaderRowComponent, TableHeaderRowDefDirective, TableModule, TableOfContentsModule, TablePlaceholderDefDirective, TablePlaceholderOutletDirective, TableRowComponent, TableRowDefDirective, TableScrollShadowDirective, TableScrollWrapperDirective, TabsModule, TagComponent, TagModule, TagType, TagsInputComponent, ThemeModule, ThemePickerPipe, ThemeService, TimePickerComponent, TimePickerControlType, TimePickerModule, TimePickerPanelComponent, TocContainerDirective, TocContentDirective, TocLinkDirective, TooltipActiveDirective, TooltipComponent, TooltipCopyDirective, TooltipCopyIntl, TooltipDirective, TooltipModule, TooltipTrigger, TooltipType, TreeNodeComponent, TreeNodePlaceholderComponent, TreeSelectComponent, TreeSelectModule, VirtualForOfDirective, VirtualScrollViewportComponent, YEAR, YEAR_PANEL_COLUMN_COUNT, YEAR_PANEL_ROW_COUNT, _isNumberValue, _tableVirtualScrollDirectiveStrategyFactory, buildBem, coerceAttrBoolean, coerceNumber, coerceString, cssVar, en, getAnchorTreeItems, getSortDuplicateSortableIdError, getSortHeaderMissingIdError, getSortHeaderNotContainedWithinSortError, getSortInvalidDirectionError, handlePixel, isString, isTemplateRef, isTimePickerModel, isUndefined, last, observeMutationOn, observeResizeOn, publishRef, rgbColor, rgbaColor, scrollIntoView, sleep, watchContentExist, zh };
11291
11656
  //# sourceMappingURL=alauda-ui.mjs.map