@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.
- package/alauda-ui.d.ts +3 -0
- package/button/button.types.d.ts +9 -0
- package/esm2020/accordion/accordion-item/accordion-item.component.mjs +3 -1
- package/esm2020/alauda-ui.mjs +4 -1
- package/esm2020/anchor/anchor.component.mjs +2 -1
- package/esm2020/back-top/back-top.component.mjs +4 -2
- package/esm2020/button/button.component.mjs +2 -1
- package/esm2020/button/button.types.mjs +10 -1
- package/esm2020/date-picker/calendar/constant.mjs +2 -1
- package/esm2020/date-picker/calendar/header/component.mjs +5 -1
- package/esm2020/date-picker/calendar/panel/picker-panel.mjs +5 -1
- package/esm2020/date-picker/calendar/range-picker-panel/component.mjs +3 -1
- package/esm2020/date-picker/calendar/util.mjs +2 -1
- package/esm2020/dialog/dialog-content/dialog-content.component.mjs +2 -1
- package/esm2020/dialog/dialog.service.mjs +2 -1
- package/esm2020/drawer/component/drawer.component.mjs +4 -1
- package/esm2020/drawer/component/helper-directives.mjs +5 -1
- package/esm2020/form/common-form.mjs +8 -1
- package/esm2020/icon/icon-register.service.mjs +2 -1
- package/esm2020/input/autosize.directive.mjs +7 -2
- package/esm2020/input/input.component.mjs +5 -1
- package/esm2020/input/search/search.component.mjs +2 -2
- package/esm2020/input/tags-input/tags-input.component.mjs +7 -2
- package/esm2020/message/message.config.mjs +6 -1
- package/esm2020/notification/notification.component.mjs +5 -1
- package/esm2020/paginator/paginator-intl.mjs +12 -1
- package/esm2020/paginator/paginator.component.mjs +9 -1
- package/esm2020/radio/radio-button/radio-button.component.mjs +2 -1
- package/esm2020/radio/radio-group/radio-group.component.mjs +4 -1
- package/esm2020/radio/radio.component.mjs +2 -1
- package/esm2020/scrolling/fixed-size-table-virtual-scroll-strategy.mjs +3 -1
- package/esm2020/scrolling/fixed-size-table-virtual-scroll.directive.mjs +3 -1
- package/esm2020/scrolling/fixed-size-virtual-scroll.directive.mjs +2 -1
- package/esm2020/select/base-select.mjs +5 -2
- package/esm2020/select/multi-select/multi-select.component.mjs +4 -2
- package/esm2020/select/select.component.mjs +2 -1
- package/esm2020/select/validators.mjs +6 -2
- package/esm2020/sort/sort-errors.mjs +5 -1
- package/esm2020/sort/sort-header.component.mjs +5 -1
- package/esm2020/sort/sort.directive.mjs +2 -1
- package/esm2020/steps/steps.component.mjs +5 -1
- package/esm2020/table/table-cell-def.directive.mjs +5 -1
- package/esm2020/table/table-cell.directive.mjs +3 -1
- package/esm2020/table/table-column-def.directive.mjs +7 -1
- package/esm2020/table/table-header-cell-def.directive.mjs +5 -1
- package/esm2020/table/table-header-cell.directive.mjs +3 -1
- package/esm2020/table/table-header-row-def.directive.mjs +5 -1
- package/esm2020/table/table-header-row.component.mjs +2 -1
- package/esm2020/table/table-row-def.directive.mjs +6 -1
- package/esm2020/table/table-row.component.mjs +2 -1
- package/esm2020/table/table-scroll.directive.mjs +2 -1
- package/esm2020/table/table.component.mjs +4 -1
- package/esm2020/tabs/tab-body.component.mjs +19 -1
- package/esm2020/tabs/tab-context.service.mjs +4 -1
- package/esm2020/tabs/tab-group.component.mjs +46 -1
- package/esm2020/tabs/tab-header-active-indicator.component.mjs +10 -1
- package/esm2020/tabs/tab-header.component.mjs +106 -3
- package/esm2020/tabs/tab.component.mjs +15 -1
- package/esm2020/tabs/tabs.types.mjs +4 -1
- package/esm2020/tag/tag.component.mjs +2 -1
- package/esm2020/time-picker/panel/panel.component.mjs +3 -1
- package/esm2020/tooltip/tooltip-intl.mjs +7 -1
- package/esm2020/tree-select/tree-select.component.mjs +2 -1
- package/esm2020/types.mjs +4 -1
- package/esm2020/utils/bem.mjs +2 -1
- package/esm2020/utils/coercion.mjs +5 -1
- package/fesm2015/alauda-ui.mjs +375 -10
- package/fesm2015/alauda-ui.mjs.map +1 -1
- package/fesm2020/alauda-ui.mjs +375 -10
- package/fesm2020/alauda-ui.mjs.map +1 -1
- package/form/common-form.d.ts +7 -0
- package/input/autosize.directive.d.ts +3 -0
- package/input/input.component.d.ts +3 -0
- package/message/message.config.d.ts +20 -0
- package/notification/notification.component.d.ts +4 -0
- package/package.json +2 -3
- package/paginator/paginator-intl.d.ts +9 -0
- package/paginator/paginator.component.d.ts +14 -0
- package/radio/radio-group/radio-group.component.d.ts +3 -0
- package/select/base-select.d.ts +3 -0
- package/sort/sort-errors.d.ts +4 -0
- package/steps/steps.component.d.ts +3 -0
- package/steps/types.d.ts +3 -0
- package/table/table-cell-def.directive.d.ts +4 -0
- package/table/table-cell.directive.d.ts +1 -0
- package/table/table-column-def.directive.d.ts +4 -0
- package/table/table-header-cell-def.directive.d.ts +4 -0
- package/table/table-header-cell.directive.d.ts +1 -0
- package/table/table-header-row-def.directive.d.ts +4 -0
- package/table/table-header-row.component.d.ts +1 -0
- package/table/table-row-def.directive.d.ts +5 -0
- package/table/table-row.component.d.ts +1 -0
- package/tabs/tab-body.component.d.ts +16 -0
- package/tabs/tab-context.service.d.ts +3 -0
- package/tabs/tab-group.component.d.ts +28 -0
- package/tabs/tab-header-active-indicator.component.d.ts +9 -0
- package/tabs/tab-header.component.d.ts +83 -0
- package/tabs/tab.component.d.ts +18 -0
- package/tabs/tabs.types.d.ts +3 -0
- package/theme/_theme-preset.scss +2 -0
- package/tooltip/tooltip-intl.d.ts +4 -0
- package/types.d.ts +3 -0
package/fesm2020/alauda-ui.mjs
CHANGED
|
@@ -57,6 +57,9 @@ const ComponentSize = {
|
|
|
57
57
|
Medium: 'medium',
|
|
58
58
|
Small: 'small',
|
|
59
59
|
Mini: 'mini',
|
|
60
|
+
/**
|
|
61
|
+
* represents default internally, @link https://github.com/angular/vscode-ng-language-service/issues/1147
|
|
62
|
+
*/
|
|
60
63
|
Empty: '',
|
|
61
64
|
};
|
|
62
65
|
|
|
@@ -68,8 +71,17 @@ const ButtonType = {
|
|
|
68
71
|
Danger: 'danger',
|
|
69
72
|
Text: 'text',
|
|
70
73
|
Inline: 'inline',
|
|
74
|
+
/**
|
|
75
|
+
* represents default internally, @link https://github.com/angular/vscode-ng-language-service/issues/1147
|
|
76
|
+
*/
|
|
71
77
|
Empty: '',
|
|
78
|
+
/**
|
|
79
|
+
* @deprecated use `ButtonType.Danger` instead
|
|
80
|
+
*/
|
|
72
81
|
Error: 'danger',
|
|
82
|
+
/**
|
|
83
|
+
* @deprecated use `ButtonType.Default` instead
|
|
84
|
+
*/
|
|
73
85
|
Info: 'default',
|
|
74
86
|
};
|
|
75
87
|
|
|
@@ -79,6 +91,7 @@ function sleep(ms = 0) {
|
|
|
79
91
|
});
|
|
80
92
|
}
|
|
81
93
|
|
|
94
|
+
// Experimental bem classname helper
|
|
82
95
|
class Bem {
|
|
83
96
|
constructor(namespace) {
|
|
84
97
|
this.namespace = namespace;
|
|
@@ -123,6 +136,7 @@ function buildBem(namespace) {
|
|
|
123
136
|
}
|
|
124
137
|
|
|
125
138
|
function coerceString(val) {
|
|
139
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-call
|
|
126
140
|
return val == null ? '' : val?.toString() ?? '';
|
|
127
141
|
}
|
|
128
142
|
function coerceAttrBoolean(val) {
|
|
@@ -132,6 +146,9 @@ function coerceNumber(val, fallbackValue = 0) {
|
|
|
132
146
|
return _isNumberValue(val) ? Number(val) : fallbackValue;
|
|
133
147
|
}
|
|
134
148
|
function _isNumberValue(value) {
|
|
149
|
+
// parseFloat(value) handles most of the cases we're interested in (it treats null, empty string,
|
|
150
|
+
// and other non-number values as NaN, where Number just uses 0) but it considers the string
|
|
151
|
+
// '123hello' to be a valid number. Therefore we also check if Number(value) is NaN.
|
|
135
152
|
return !isNaN(parseFloat(value)) && !isNaN(Number(value));
|
|
136
153
|
}
|
|
137
154
|
|
|
@@ -262,6 +279,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
|
|
|
262
279
|
}] }, { type: i1.HttpClient, decorators: [{
|
|
263
280
|
type: Optional
|
|
264
281
|
}] }]; } });
|
|
282
|
+
// eslint-disable-next-line sonar/function-name
|
|
265
283
|
function ICON_REGISTER_PROVIDER_FACTORY(parentRegister, document, httpClient) {
|
|
266
284
|
return parentRegister || new IconRegisterService(document, httpClient);
|
|
267
285
|
}
|
|
@@ -489,6 +507,7 @@ class ButtonComponent {
|
|
|
489
507
|
return this._size;
|
|
490
508
|
}
|
|
491
509
|
set size(val) {
|
|
510
|
+
// when change from other size to default
|
|
492
511
|
if (!val) {
|
|
493
512
|
val = ComponentSize.Medium;
|
|
494
513
|
}
|
|
@@ -644,12 +663,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
|
|
|
644
663
|
}]
|
|
645
664
|
}] });
|
|
646
665
|
class AccordionItemComponent extends CdkAccordionItem {
|
|
666
|
+
// eslint-disable-next-line @typescript-eslint/no-useless-constructor
|
|
647
667
|
constructor(accordion, cdr, uniqueSelectionDispatcher) {
|
|
648
668
|
super(accordion, cdr, uniqueSelectionDispatcher);
|
|
649
669
|
this.background = true;
|
|
650
670
|
}
|
|
651
671
|
ngAfterContentInit() {
|
|
652
672
|
if (this._lazyContentTpl) {
|
|
673
|
+
// Render the content as soon as the accordion becomes open.
|
|
653
674
|
this.opened
|
|
654
675
|
.pipe(startWith(null), filter(() => !!this.expanded), take(1))
|
|
655
676
|
.subscribe(() => {
|
|
@@ -935,6 +956,7 @@ class AnchorTreeComponent extends AnchorDirectiveChild {
|
|
|
935
956
|
watchLabelsChange() {
|
|
936
957
|
this.depose$$.next();
|
|
937
958
|
const cdr = this.injector.get(ChangeDetectorRef);
|
|
959
|
+
// FIXME: Is there any better way to achieve this?
|
|
938
960
|
combineLatest(this.treeItems.map(({ labelChange }) => labelChange).filter(Boolean))
|
|
939
961
|
.pipe(debounceTime(0), takeUntil(this.depose$$))
|
|
940
962
|
.subscribe(() => cdr.markForCheck());
|
|
@@ -1640,6 +1662,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
|
|
|
1640
1662
|
args: ['auiTooltipActive']
|
|
1641
1663
|
}] } });
|
|
1642
1664
|
|
|
1665
|
+
/**
|
|
1666
|
+
* Texts to render on the code editor.
|
|
1667
|
+
*/
|
|
1643
1668
|
class TooltipCopyIntl {
|
|
1644
1669
|
constructor() {
|
|
1645
1670
|
this.copyTip = 'Click to copy';
|
|
@@ -1652,10 +1677,13 @@ TooltipCopyIntl.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", vers
|
|
|
1652
1677
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: TooltipCopyIntl, decorators: [{
|
|
1653
1678
|
type: Injectable
|
|
1654
1679
|
}] });
|
|
1680
|
+
// eslint-disable-next-line sonar/function-name
|
|
1655
1681
|
function TOOLTIP_COPY_INTL_PROVIDER_FACTORY(parentIntl) {
|
|
1656
1682
|
return parentIntl || new TooltipCopyIntl();
|
|
1657
1683
|
}
|
|
1684
|
+
/** @docs-private */
|
|
1658
1685
|
const TOOLTIP_COPY_INTL_INTL_PROVIDER = {
|
|
1686
|
+
// If there is already an CodeEditorIntl available, use that. Otherwise, provide a new one.
|
|
1659
1687
|
provide: TooltipCopyIntl,
|
|
1660
1688
|
deps: [[new Optional(), new SkipSelf(), TooltipCopyIntl]],
|
|
1661
1689
|
useFactory: TOOLTIP_COPY_INTL_PROVIDER_FACTORY,
|
|
@@ -2112,7 +2140,9 @@ class BackTopComponent {
|
|
|
2112
2140
|
this.target$$ = new BehaviorSubject(this.target);
|
|
2113
2141
|
this.visibilityHeight$$ = new BehaviorSubject(this.visibilityHeight);
|
|
2114
2142
|
this.isDisplayed$ = combineLatest([
|
|
2115
|
-
this.target$$.asObservable().pipe(map(target => this.getTarget(target)), switchMap(target => fromEvent(target, 'scroll').pipe(
|
|
2143
|
+
this.target$$.asObservable().pipe(map(target => this.getTarget(target)), switchMap(target => fromEvent(target, 'scroll').pipe(
|
|
2144
|
+
// use default scheduler
|
|
2145
|
+
throttleTime(50, undefined, { leading: true, trailing: true }), map(() => this.getTargetScrollTop(target))))),
|
|
2116
2146
|
this.visibilityHeight$$,
|
|
2117
2147
|
]).pipe(map(([scrollTop, visibilityHeight]) => scrollTop >= visibilityHeight), distinctUntilChanged());
|
|
2118
2148
|
}
|
|
@@ -2376,6 +2406,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
|
|
|
2376
2406
|
}]
|
|
2377
2407
|
}] });
|
|
2378
2408
|
|
|
2409
|
+
/**
|
|
2410
|
+
* form control 内部不保持 value 属性,当不使用 ngModel 时可以通过 [(value)] 实现双向绑定;
|
|
2411
|
+
* 也可以分别传入 value 和 监听 valueChange 事件以实现阻断用户操作的功能。
|
|
2412
|
+
*/
|
|
2379
2413
|
class CommonFormControl {
|
|
2380
2414
|
constructor(cdr) {
|
|
2381
2415
|
this.cdr = cdr;
|
|
@@ -2454,6 +2488,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
|
|
|
2454
2488
|
}], valueChange: [{
|
|
2455
2489
|
type: Output
|
|
2456
2490
|
}] } });
|
|
2491
|
+
/**
|
|
2492
|
+
* @deprecated use {@link CommonFormControl} instead
|
|
2493
|
+
*/
|
|
2457
2494
|
const CommonForm = CommonFormControl;
|
|
2458
2495
|
|
|
2459
2496
|
const LabelPosition = {
|
|
@@ -2976,6 +3013,7 @@ const YEAR = 'year';
|
|
|
2976
3013
|
const HOUR = 'hour';
|
|
2977
3014
|
const MINUTE = 'minute';
|
|
2978
3015
|
const SECOND = 'second';
|
|
3016
|
+
// 根据日期类型,分为年,月,日
|
|
2979
3017
|
var DatePickerType;
|
|
2980
3018
|
(function (DatePickerType) {
|
|
2981
3019
|
DatePickerType["Day"] = "date";
|
|
@@ -3028,6 +3066,7 @@ function getDatePanelIterable(date, navRange, weekStartDay) {
|
|
|
3028
3066
|
counts = YEAR_PANEL_COLUMN_COUNT * YEAR_PANEL_ROW_COUNT;
|
|
3029
3067
|
break;
|
|
3030
3068
|
}
|
|
3069
|
+
// No default
|
|
3031
3070
|
}
|
|
3032
3071
|
let i = 0;
|
|
3033
3072
|
return {
|
|
@@ -3252,17 +3291,21 @@ class CalendarHeaderComponent {
|
|
|
3252
3291
|
get headerRange() {
|
|
3253
3292
|
return calcRangeValue(this.dateNavRange, this.anchor);
|
|
3254
3293
|
}
|
|
3294
|
+
// maxAvail > current date :right btn hide
|
|
3295
|
+
// minAvail > current date :left btn hide
|
|
3255
3296
|
shouldShowNav(type, side) {
|
|
3256
3297
|
const availValue = (side === Side.Left ? this._minAvail : this._maxAvail)?.clone();
|
|
3257
3298
|
if (!availValue) {
|
|
3258
3299
|
return true;
|
|
3259
3300
|
}
|
|
3301
|
+
// 对于年的判别,2014-5-1至2015-6-1日,仍当展示按钮
|
|
3260
3302
|
const constrainDate = [DateNavRange.Month, DateNavRange.Year].includes(type)
|
|
3261
3303
|
? availValue.add(side === Side.Left ? 1 : -1, type)
|
|
3262
3304
|
: availValue;
|
|
3263
3305
|
return (this.compareNavValue(type, constrainDate, this.anchor) ===
|
|
3264
3306
|
(side === Side.Left ? -1 : 1));
|
|
3265
3307
|
}
|
|
3308
|
+
// @return isBetween|isEqual:0, isBefore:-1,isAfter:1
|
|
3266
3309
|
compareNavValue(type, constrain, anchor) {
|
|
3267
3310
|
const range = calcRangeValue(type, anchor);
|
|
3268
3311
|
const constrainValue = constrain;
|
|
@@ -3352,9 +3395,12 @@ class PickerPanelComponent {
|
|
|
3352
3395
|
return composeDisabledDateFn(date => this.minDate && date.isBefore(this.minDate), date => this.maxDate && date.isAfter(this.maxDate), this.disabledDate);
|
|
3353
3396
|
}
|
|
3354
3397
|
ngOnChanges() {
|
|
3398
|
+
// 如果 dateValue 是一个数组,必然是同一个面板上,否则应当给与不同的面板不同的dateValue值
|
|
3355
3399
|
const headerRange = calcRangeValue(this.navRange, this.anchor);
|
|
3356
3400
|
this.renderPanelData(headerRange.start, this.navRange);
|
|
3357
3401
|
}
|
|
3402
|
+
// 根据当前数据,计算渲染表格
|
|
3403
|
+
// eslint-disable-next-line sonarjs/cognitive-complexity
|
|
3358
3404
|
renderPanelData(date, navRange) {
|
|
3359
3405
|
const value = [];
|
|
3360
3406
|
let colCounts = 0;
|
|
@@ -3379,6 +3425,7 @@ class PickerPanelComponent {
|
|
|
3379
3425
|
rowCounts = MONTH_PANEL_ROW_COUNT;
|
|
3380
3426
|
break;
|
|
3381
3427
|
}
|
|
3428
|
+
// No default
|
|
3382
3429
|
}
|
|
3383
3430
|
for (let k = 0; k < rowCounts; k++) {
|
|
3384
3431
|
const row = [];
|
|
@@ -3532,6 +3579,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
|
|
|
3532
3579
|
}]
|
|
3533
3580
|
}] });
|
|
3534
3581
|
|
|
3582
|
+
/* eslint-disable sonarjs/no-duplicate-string */
|
|
3535
3583
|
class InputComponent {
|
|
3536
3584
|
constructor(elementRef, renderer) {
|
|
3537
3585
|
this.elementRef = elementRef;
|
|
@@ -3539,6 +3587,9 @@ class InputComponent {
|
|
|
3539
3587
|
this._size = ComponentSize.Medium;
|
|
3540
3588
|
this._disabled = false;
|
|
3541
3589
|
this.size$ = new BehaviorSubject(this.size);
|
|
3590
|
+
/**
|
|
3591
|
+
* workaround for @link https://github.com/microsoft/TypeScript/pull/42425
|
|
3592
|
+
*/
|
|
3542
3593
|
this.disabled$ = new BehaviorSubject(this.disabled);
|
|
3543
3594
|
this.renderer.addClass(this.elementRef.nativeElement, 'aui-input');
|
|
3544
3595
|
this.renderer.addClass(this.elementRef.nativeElement, 'aui-input--' + this.size);
|
|
@@ -3640,6 +3691,7 @@ class TimePickerPanelComponent extends CommonFormControl {
|
|
|
3640
3691
|
this.ComponentSize = ComponentSize;
|
|
3641
3692
|
this.bem = bem$4;
|
|
3642
3693
|
this.enabledColumns = 0;
|
|
3694
|
+
// 用于控制初次滚动,是否展示滚动动画效果
|
|
3643
3695
|
this.firstScrolled = false;
|
|
3644
3696
|
this.model$.subscribe(_ => {
|
|
3645
3697
|
this.cdr.markForCheck();
|
|
@@ -3757,6 +3809,7 @@ class TimePickerPanelComponent extends CommonFormControl {
|
|
|
3757
3809
|
}
|
|
3758
3810
|
else {
|
|
3759
3811
|
const difference = targetOffset - currentTop;
|
|
3812
|
+
// 每个tick滚动距离
|
|
3760
3813
|
const perTick = (difference / duration) * 10;
|
|
3761
3814
|
requestAnimationFrame(() => {
|
|
3762
3815
|
element.scrollTop = currentTop + perTick;
|
|
@@ -4128,6 +4181,7 @@ class DateRangePickerPanelComponent extends CommonFormControl {
|
|
|
4128
4181
|
this.FOOTER_DATE_FORMAT = 'YYYY-MM-dd';
|
|
4129
4182
|
this.leftAnchor = dayjs();
|
|
4130
4183
|
this.rightAnchor = dayjs().add(1, MONTH);
|
|
4184
|
+
// 用于存放 range data 序列,数量为 2 时清除
|
|
4131
4185
|
this.rangeValue = [];
|
|
4132
4186
|
this.leftDisabledTimeFn = this.getDisabledTimeCachedFn(Side.Left);
|
|
4133
4187
|
this.rightDisabledTimeFn = this.getDisabledTimeCachedFn(Side.Right);
|
|
@@ -4157,6 +4211,7 @@ class DateRangePickerPanelComponent extends CommonFormControl {
|
|
|
4157
4211
|
this.rightDateRange = type;
|
|
4158
4212
|
}
|
|
4159
4213
|
}
|
|
4214
|
+
// range 组件范围受控
|
|
4160
4215
|
getDateDisabledFn(side, constrainValue) {
|
|
4161
4216
|
return composeDisabledDateFn((date, navRange) => {
|
|
4162
4217
|
if (navRange === DateNavRange.Month) {
|
|
@@ -4405,6 +4460,9 @@ const DEFAULT_VALUE = {
|
|
|
4405
4460
|
minRows: 3,
|
|
4406
4461
|
maxRows: 6,
|
|
4407
4462
|
};
|
|
4463
|
+
/**
|
|
4464
|
+
* Directive to automatically resize a textarea to fit its content.
|
|
4465
|
+
*/
|
|
4408
4466
|
class AutosizeDirective {
|
|
4409
4467
|
constructor(elRef, ngControl) {
|
|
4410
4468
|
this.elRef = elRef;
|
|
@@ -4442,7 +4500,9 @@ AutosizeDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", vers
|
|
|
4442
4500
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: AutosizeDirective, decorators: [{
|
|
4443
4501
|
type: Directive,
|
|
4444
4502
|
args: [{
|
|
4445
|
-
selector:
|
|
4503
|
+
selector:
|
|
4504
|
+
// eslint-disable-next-line @angular-eslint/directive-selector
|
|
4505
|
+
'textarea[autosize][ngModel],textarea[autosize][formControl],textarea[autosize][formControlName]',
|
|
4446
4506
|
exportAs: 'TextareaAutosize',
|
|
4447
4507
|
}]
|
|
4448
4508
|
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i4.NgControl }]; }, propDecorators: { autoSize: [{
|
|
@@ -4542,6 +4602,7 @@ class TagComponent {
|
|
|
4542
4602
|
get rootClass() {
|
|
4543
4603
|
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' : ''}`;
|
|
4544
4604
|
}
|
|
4605
|
+
// 只有常规标签支持单击样式
|
|
4545
4606
|
get isNormalTag() {
|
|
4546
4607
|
return !this.solid && !this.closeable && !this.invalid;
|
|
4547
4608
|
}
|
|
@@ -4730,10 +4791,10 @@ class SearchComponent {
|
|
|
4730
4791
|
}
|
|
4731
4792
|
}
|
|
4732
4793
|
SearchComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: SearchComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
4733
|
-
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 });
|
|
4794
|
+
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 });
|
|
4734
4795
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: SearchComponent, decorators: [{
|
|
4735
4796
|
type: Component,
|
|
4736
|
-
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"] }]
|
|
4797
|
+
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"] }]
|
|
4737
4798
|
}], propDecorators: { size: [{
|
|
4738
4799
|
type: Input
|
|
4739
4800
|
}], searchButton: [{
|
|
@@ -4811,12 +4872,13 @@ class TagsInputComponent extends CommonFormControl {
|
|
|
4811
4872
|
this.bem = buildBem('aui-tags-input');
|
|
4812
4873
|
this.placeholder = '';
|
|
4813
4874
|
this.size = ComponentSize.Medium;
|
|
4875
|
+
// TODO: implement this feature
|
|
4814
4876
|
this.clearable = false;
|
|
4815
4877
|
this.allowRepeat = false;
|
|
4816
4878
|
this.allowEmpty = false;
|
|
4817
4879
|
this.readonlyTags = [];
|
|
4818
4880
|
this.maxRowCount = 0;
|
|
4819
|
-
this.customRowHeight = 0;
|
|
4881
|
+
this.customRowHeight = 0; // 0: use default style const value, > 1: for ```tagClassFn``` maybe affect lineHeight
|
|
4820
4882
|
this.withMaxRowCount = createWithMaxRowCount(this);
|
|
4821
4883
|
this.focused = false;
|
|
4822
4884
|
this.model = [];
|
|
@@ -4884,6 +4946,7 @@ class TagsInputComponent extends CommonFormControl {
|
|
|
4884
4946
|
}
|
|
4885
4947
|
onInput() {
|
|
4886
4948
|
const value = this.inputRef.nativeElement.value;
|
|
4949
|
+
// make sure value sync to span element
|
|
4887
4950
|
requestAnimationFrame(() => {
|
|
4888
4951
|
if (!value.length) {
|
|
4889
4952
|
this.renderer.removeStyle(this.inputRef.nativeElement, 'width');
|
|
@@ -4945,11 +5008,13 @@ class TagsInputComponent extends CommonFormControl {
|
|
|
4945
5008
|
return;
|
|
4946
5009
|
}
|
|
4947
5010
|
this.inputControl.setValue(this.inputRef.nativeElement.value);
|
|
5011
|
+
// inputControl 自身的状态为同步计算
|
|
4948
5012
|
this.syncControlStatus();
|
|
4949
5013
|
if (this.inputControl.valid) {
|
|
4950
5014
|
this.emitValue(this.model.concat(value));
|
|
4951
5015
|
}
|
|
4952
5016
|
else if (this.inputControl.pending) {
|
|
5017
|
+
// PENDING 后只会变为 VALID 或 INVALID 的决议状态
|
|
4953
5018
|
this.inputControl.statusChanges.pipe(take(1)).subscribe(_ => {
|
|
4954
5019
|
this.syncControlStatus();
|
|
4955
5020
|
if (this.inputControl.valid) {
|
|
@@ -4975,6 +5040,7 @@ class TagsInputComponent extends CommonFormControl {
|
|
|
4975
5040
|
});
|
|
4976
5041
|
}
|
|
4977
5042
|
else if (disabled) {
|
|
5043
|
+
// 与当前 input 校验脱离
|
|
4978
5044
|
this.controlContainer?.control?.updateValueAndValidity();
|
|
4979
5045
|
}
|
|
4980
5046
|
}
|
|
@@ -5708,6 +5774,7 @@ class DialogService {
|
|
|
5708
5774
|
resolve(action.result);
|
|
5709
5775
|
}
|
|
5710
5776
|
else {
|
|
5777
|
+
// eslint-disable-next-line prefer-promise-reject-errors
|
|
5711
5778
|
reject(action.result);
|
|
5712
5779
|
}
|
|
5713
5780
|
});
|
|
@@ -5828,6 +5895,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
|
|
|
5828
5895
|
}] } });
|
|
5829
5896
|
|
|
5830
5897
|
class DialogContentComponent extends CdkScrollable {
|
|
5898
|
+
// eslint-disable-next-line @typescript-eslint/no-useless-constructor
|
|
5831
5899
|
constructor(elementRef, scrollDispatcher, ngZone, dir) {
|
|
5832
5900
|
super(elementRef, scrollDispatcher, ngZone, dir);
|
|
5833
5901
|
this.bem = buildBem('aui-dialog');
|
|
@@ -5946,6 +6014,10 @@ var DrawerSize;
|
|
|
5946
6014
|
class DrawerRef {
|
|
5947
6015
|
}
|
|
5948
6016
|
|
|
6017
|
+
/**
|
|
6018
|
+
* @packageDocumentation
|
|
6019
|
+
* @module page-guard
|
|
6020
|
+
*/
|
|
5949
6021
|
class DrawerHeaderDirective {
|
|
5950
6022
|
}
|
|
5951
6023
|
DrawerHeaderDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: DrawerHeaderDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
@@ -6042,6 +6114,7 @@ class DrawerComponent extends DrawerRef {
|
|
|
6042
6114
|
this.open();
|
|
6043
6115
|
}
|
|
6044
6116
|
else if (!visible.firstChange) {
|
|
6117
|
+
// 不希望默认关闭时,drawer 渲染后就触发 close 事件
|
|
6045
6118
|
this.dispose();
|
|
6046
6119
|
}
|
|
6047
6120
|
}
|
|
@@ -6063,6 +6136,8 @@ class DrawerComponent extends DrawerRef {
|
|
|
6063
6136
|
.outsidePointerEvents()
|
|
6064
6137
|
.pipe(takeUntil(this.onDestroy$))
|
|
6065
6138
|
.subscribe(event => {
|
|
6139
|
+
// 判断鼠标点击事件的 target 是否为 overlay-container 的子节点,如果是,则不关闭 drawer。
|
|
6140
|
+
// 为了避免点击 drawer 里的 tooltip 后 drawer 被关闭。
|
|
6066
6141
|
if (this.visible &&
|
|
6067
6142
|
this.hideOnClickOutside &&
|
|
6068
6143
|
event.target instanceof Node &&
|
|
@@ -6703,6 +6778,11 @@ var MessageType;
|
|
|
6703
6778
|
MessageType["Warning"] = "warning";
|
|
6704
6779
|
MessageType["Info"] = "info";
|
|
6705
6780
|
})(MessageType || (MessageType = {}));
|
|
6781
|
+
/**
|
|
6782
|
+
* messageOptions: contains Basic configuration
|
|
6783
|
+
* Just for some containers like Message-Container
|
|
6784
|
+
* Detailed document: http://confluence.alaudatech.com/pages/viewpage.action?pageId=23383163
|
|
6785
|
+
*/
|
|
6706
6786
|
class MessageConfig {
|
|
6707
6787
|
}
|
|
6708
6788
|
const MESSAGE_CONFIG = new InjectionToken('MESSAGE_CONFIG');
|
|
@@ -6992,6 +7072,10 @@ class NotificationComponent extends MessageComponent {
|
|
|
6992
7072
|
});
|
|
6993
7073
|
}
|
|
6994
7074
|
}
|
|
7075
|
+
/**
|
|
7076
|
+
* Attach a TemplatePortal as content to this modal container.
|
|
7077
|
+
* @param portal Portal to be attached as the modal content.
|
|
7078
|
+
*/
|
|
6995
7079
|
attachTemplatePortal(portal) {
|
|
6996
7080
|
return this.portalOutlet.attachTemplatePortal(portal);
|
|
6997
7081
|
}
|
|
@@ -7086,9 +7170,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
|
|
|
7086
7170
|
}]
|
|
7087
7171
|
}] });
|
|
7088
7172
|
|
|
7173
|
+
/**
|
|
7174
|
+
* To modify the labels and text displayed, create a new instance of MatPaginatorIntl and
|
|
7175
|
+
* include it in a custom provider
|
|
7176
|
+
*/
|
|
7089
7177
|
class PaginatorIntl {
|
|
7090
7178
|
constructor() {
|
|
7179
|
+
/**
|
|
7180
|
+
* Stream that emits whenever the labels here are changed. Use this to notify
|
|
7181
|
+
* components if the labels have changed after initialization.
|
|
7182
|
+
*/
|
|
7091
7183
|
this.changes = new Subject();
|
|
7184
|
+
/** A label for the page size selector. */
|
|
7092
7185
|
this.itemsPerPageLabel = 'perPage';
|
|
7093
7186
|
this.jumperLabelPrefix = 'Goto';
|
|
7094
7187
|
this.jumperLabelSuffix = '';
|
|
@@ -7100,10 +7193,12 @@ PaginatorIntl.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", versio
|
|
|
7100
7193
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: PaginatorIntl, decorators: [{
|
|
7101
7194
|
type: Injectable
|
|
7102
7195
|
}] });
|
|
7196
|
+
// eslint-disable-next-line sonar/function-name
|
|
7103
7197
|
function PAGINATOR_INTL_PROVIDER_FACTORY(parentIntl) {
|
|
7104
7198
|
return parentIntl || new PaginatorIntl();
|
|
7105
7199
|
}
|
|
7106
7200
|
const PAGINATOR_INTL_PROVIDER = {
|
|
7201
|
+
// If there is already an PaginatorIntl available, use that. Otherwise, provide a new one.
|
|
7107
7202
|
provide: PaginatorIntl,
|
|
7108
7203
|
deps: [[new Optional(), new SkipSelf(), PaginatorIntl]],
|
|
7109
7204
|
useFactory: PAGINATOR_INTL_PROVIDER_FACTORY,
|
|
@@ -7341,6 +7436,7 @@ class BaseSelect extends CommonFormControl {
|
|
|
7341
7436
|
this.customOptions.changes.pipe(startWith(this.customOptions)),
|
|
7342
7437
|
this.contentOptions.changes.pipe(startWith(this.contentOptions)),
|
|
7343
7438
|
]).pipe(map(([customOptions, contentOptions]) => [...customOptions.toArray(), ...contentOptions.toArray()]), publishRef());
|
|
7439
|
+
// support dynamic options loading on filtering
|
|
7344
7440
|
this.allOptions$.pipe(takeUntil(this.destroy$$)).subscribe(() => {
|
|
7345
7441
|
if (this.opened) {
|
|
7346
7442
|
requestAnimationFrame(() => {
|
|
@@ -7349,7 +7445,9 @@ class BaseSelect extends CommonFormControl {
|
|
|
7349
7445
|
}
|
|
7350
7446
|
});
|
|
7351
7447
|
this.hasMatchedOption$ = combineLatest([
|
|
7352
|
-
this.allOptions$.pipe(map(customOptions => customOptions.filter(option => option !== this.inputtingOption)),
|
|
7448
|
+
this.allOptions$.pipe(map(customOptions => customOptions.filter(option => option !== this.inputtingOption)),
|
|
7449
|
+
// eslint-disable-next-line sonarjs/no-identical-functions
|
|
7450
|
+
switchMap(options => options.length > 0
|
|
7353
7451
|
? combineLatest(options.map(option => option.value$))
|
|
7354
7452
|
: of([]))),
|
|
7355
7453
|
this.filterString$,
|
|
@@ -7597,6 +7695,7 @@ class SelectComponent extends BaseSelect {
|
|
|
7597
7695
|
label: option.label ||
|
|
7598
7696
|
this.labelFn?.(option.value) ||
|
|
7599
7697
|
coerceString(this.trackFn(option.value)),
|
|
7698
|
+
// https://github.com/angular/angular/issues/24515
|
|
7600
7699
|
labelContext: {
|
|
7601
7700
|
...option.labelContext,
|
|
7602
7701
|
},
|
|
@@ -7657,6 +7756,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
|
|
|
7657
7756
|
args: ['inputRef', { static: true }]
|
|
7658
7757
|
}] } });
|
|
7659
7758
|
|
|
7759
|
+
/**
|
|
7760
|
+
* Change event object that is emitted when the user selects a
|
|
7761
|
+
* different page size or navigates to another page.
|
|
7762
|
+
* @deprecated use Output events directly instead
|
|
7763
|
+
*/
|
|
7660
7764
|
class PageEvent {
|
|
7661
7765
|
}
|
|
7662
7766
|
class PaginatorComponent {
|
|
@@ -7680,6 +7784,9 @@ class PaginatorComponent {
|
|
|
7680
7784
|
set pageIndex(val) {
|
|
7681
7785
|
this.currentPage = val + 1;
|
|
7682
7786
|
}
|
|
7787
|
+
/**
|
|
7788
|
+
* @deprecated use `total` instead
|
|
7789
|
+
*/
|
|
7683
7790
|
get length() {
|
|
7684
7791
|
return this.total;
|
|
7685
7792
|
}
|
|
@@ -7782,7 +7889,7 @@ class MultiSelectComponent extends BaseSelect {
|
|
|
7782
7889
|
this.model = [];
|
|
7783
7890
|
this.values$ = this.model$;
|
|
7784
7891
|
this.maxRowCount = 0;
|
|
7785
|
-
this.customRowHeight = 0;
|
|
7892
|
+
this.customRowHeight = 0; // 0: use default style const value, > 1: for ```tagClassFn``` maybe affect lineHeight
|
|
7786
7893
|
this.inputValue = '';
|
|
7787
7894
|
this.withMaxRowCount = createWithMaxRowCount(this);
|
|
7788
7895
|
this.focused = false;
|
|
@@ -7852,6 +7959,7 @@ class MultiSelectComponent extends BaseSelect {
|
|
|
7852
7959
|
value,
|
|
7853
7960
|
};
|
|
7854
7961
|
})
|
|
7962
|
+
// sort disabled options as first
|
|
7855
7963
|
.sort((a, b) => {
|
|
7856
7964
|
if (a.disabled) {
|
|
7857
7965
|
return -1;
|
|
@@ -7999,6 +8107,7 @@ class MultiSelectComponent extends BaseSelect {
|
|
|
7999
8107
|
this.setInputWidth();
|
|
8000
8108
|
this.filterString = '';
|
|
8001
8109
|
}
|
|
8110
|
+
// calculate input element width according to its value
|
|
8002
8111
|
setInputWidth() {
|
|
8003
8112
|
const { value } = this.inputRef.nativeElement;
|
|
8004
8113
|
if (!value.length) {
|
|
@@ -8094,6 +8203,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
|
|
|
8094
8203
|
}]
|
|
8095
8204
|
}] });
|
|
8096
8205
|
|
|
8206
|
+
// @dynamic
|
|
8207
|
+
// eslint-disable-next-line @typescript-eslint/no-extraneous-class
|
|
8097
8208
|
class AuiSelectValidators {
|
|
8098
8209
|
static includes(options, trackFn = val => val) {
|
|
8099
8210
|
return (control) => options.some(option => trackFn(option) === trackFn(control.value))
|
|
@@ -8149,7 +8260,9 @@ IncludesDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", vers
|
|
|
8149
8260
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: IncludesDirective, decorators: [{
|
|
8150
8261
|
type: Directive,
|
|
8151
8262
|
args: [{
|
|
8152
|
-
selector:
|
|
8263
|
+
selector:
|
|
8264
|
+
// eslint-disable-next-line @angular-eslint/directive-selector
|
|
8265
|
+
'aui-select[ngModel][includes],aui-select[formControl][includes],aui-select[formControlName][includes]',
|
|
8153
8266
|
providers: [
|
|
8154
8267
|
{
|
|
8155
8268
|
provide: NG_VALIDATORS,
|
|
@@ -8270,6 +8383,9 @@ class RadioGroupComponent extends CommonFormControl {
|
|
|
8270
8383
|
set size(val) {
|
|
8271
8384
|
this.size$$.next(val);
|
|
8272
8385
|
}
|
|
8386
|
+
/**
|
|
8387
|
+
* @deprecated use `plain` instead
|
|
8388
|
+
*/
|
|
8273
8389
|
set isPlain(val) {
|
|
8274
8390
|
this.plain = val;
|
|
8275
8391
|
}
|
|
@@ -8380,6 +8496,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
|
|
|
8380
8496
|
}] } });
|
|
8381
8497
|
|
|
8382
8498
|
class RadioComponent extends BaseRadio {
|
|
8499
|
+
// eslint-disable-next-line @typescript-eslint/no-useless-constructor
|
|
8383
8500
|
constructor(radioGroup, focusMonitor, cdr) {
|
|
8384
8501
|
super(radioGroup, focusMonitor, cdr);
|
|
8385
8502
|
this.bem = buildBem('aui-radio');
|
|
@@ -8396,6 +8513,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
|
|
|
8396
8513
|
}], ctorParameters: function () { return [{ type: RadioGroupComponent }, { type: i2$1.FocusMonitor }, { type: i0.ChangeDetectorRef }]; } });
|
|
8397
8514
|
|
|
8398
8515
|
class RadioButtonComponent extends BaseRadio {
|
|
8516
|
+
// eslint-disable-next-line @typescript-eslint/no-useless-constructor
|
|
8399
8517
|
constructor(radioGroup, focusMonitor, cdr) {
|
|
8400
8518
|
super(radioGroup, focusMonitor, cdr);
|
|
8401
8519
|
this.bem = buildBem('aui-radio-button');
|
|
@@ -8469,10 +8587,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
|
|
|
8469
8587
|
}], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.ElementRef }]; } });
|
|
8470
8588
|
|
|
8471
8589
|
class TableComponent extends CdkTable {
|
|
8590
|
+
// FIXME: workaround to override because it will break constructor if it is field, but why MatTable works?
|
|
8591
|
+
// @ts-ignore
|
|
8472
8592
|
get stickyCssClass() {
|
|
8473
8593
|
return 'aui-table-sticky';
|
|
8474
8594
|
}
|
|
8475
8595
|
set stickyCssClass(_) {
|
|
8596
|
+
// nothing
|
|
8476
8597
|
}
|
|
8477
8598
|
ngAfterContentInit() {
|
|
8478
8599
|
this._createPlaceholder();
|
|
@@ -8537,6 +8658,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
|
|
|
8537
8658
|
args: [TablePlaceholderDefDirective, { static: true }]
|
|
8538
8659
|
}] } });
|
|
8539
8660
|
|
|
8661
|
+
/**
|
|
8662
|
+
* Cell definition for the aui-table.
|
|
8663
|
+
* Captures the template of a column's data row cell as well as cell-specific properties.
|
|
8664
|
+
*/
|
|
8540
8665
|
class TableCellDefDirective extends CdkCellDef {
|
|
8541
8666
|
}
|
|
8542
8667
|
TableCellDefDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: TableCellDefDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
@@ -8675,6 +8800,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
|
|
|
8675
8800
|
}] } });
|
|
8676
8801
|
|
|
8677
8802
|
const bem$1 = buildBem('aui-table');
|
|
8803
|
+
/** Cell template container that adds the right classes and role. */
|
|
8678
8804
|
class TableCellDirective extends CdkCell {
|
|
8679
8805
|
constructor(columnDef, elementRef) {
|
|
8680
8806
|
super(columnDef, elementRef);
|
|
@@ -8687,6 +8813,7 @@ TableCellDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", ver
|
|
|
8687
8813
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: TableCellDirective, decorators: [{
|
|
8688
8814
|
type: Directive,
|
|
8689
8815
|
args: [{
|
|
8816
|
+
// eslint-disable-next-line @angular-eslint/directive-selector
|
|
8690
8817
|
selector: 'aui-table-cell',
|
|
8691
8818
|
host: {
|
|
8692
8819
|
class: 'aui-table__cell',
|
|
@@ -8698,7 +8825,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
|
|
|
8698
8825
|
type: Input
|
|
8699
8826
|
}] } });
|
|
8700
8827
|
|
|
8828
|
+
/**
|
|
8829
|
+
* Column definition for the aui-table.
|
|
8830
|
+
* Defines a set of cells available for a table column.
|
|
8831
|
+
*/
|
|
8701
8832
|
class TableColumnDefDirective extends CdkColumnDef {
|
|
8833
|
+
// Unique name for this column
|
|
8834
|
+
// Why it does not work in `inputs` property?
|
|
8702
8835
|
set auiTableColumnDef(value) {
|
|
8703
8836
|
this.name = value;
|
|
8704
8837
|
}
|
|
@@ -8726,6 +8859,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
|
|
|
8726
8859
|
type: Input
|
|
8727
8860
|
}] } });
|
|
8728
8861
|
|
|
8862
|
+
/**
|
|
8863
|
+
* Header cell definition for the aui-table.
|
|
8864
|
+
* Captures the template of a column's header cell and as well as cell-specific properties.
|
|
8865
|
+
*/
|
|
8729
8866
|
class TableHeaderCellDefDirective extends CdkHeaderCellDef {
|
|
8730
8867
|
}
|
|
8731
8868
|
TableHeaderCellDefDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: TableHeaderCellDefDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
@@ -8749,6 +8886,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
|
|
|
8749
8886
|
}] });
|
|
8750
8887
|
|
|
8751
8888
|
const bem = buildBem('aui-table');
|
|
8889
|
+
/** Header cell template container that adds the right classes and role. */
|
|
8752
8890
|
class TableHeaderCellDirective extends CdkHeaderCell {
|
|
8753
8891
|
constructor(columnDef, elementRef) {
|
|
8754
8892
|
super(columnDef, elementRef);
|
|
@@ -8760,6 +8898,7 @@ TableHeaderCellDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0
|
|
|
8760
8898
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: TableHeaderCellDirective, decorators: [{
|
|
8761
8899
|
type: Directive,
|
|
8762
8900
|
args: [{
|
|
8901
|
+
// eslint-disable-next-line @angular-eslint/directive-selector
|
|
8763
8902
|
selector: 'aui-table-header-cell',
|
|
8764
8903
|
host: {
|
|
8765
8904
|
class: 'aui-table__header-cell',
|
|
@@ -8768,6 +8907,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
|
|
|
8768
8907
|
}]
|
|
8769
8908
|
}], ctorParameters: function () { return [{ type: i1$3.CdkColumnDef }, { type: i0.ElementRef }]; } });
|
|
8770
8909
|
|
|
8910
|
+
/**
|
|
8911
|
+
* Header row definition for the aui-table.
|
|
8912
|
+
* Captures the header row's template and other header properties such as the columns to display.
|
|
8913
|
+
*/
|
|
8771
8914
|
class TableHeaderRowDefDirective extends CdkHeaderRowDef {
|
|
8772
8915
|
constructor() {
|
|
8773
8916
|
super(...arguments);
|
|
@@ -8800,6 +8943,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
|
|
|
8800
8943
|
args: ['auiTableHeaderRowDefSticky']
|
|
8801
8944
|
}] } });
|
|
8802
8945
|
|
|
8946
|
+
/** Header template container that contains the cell outlet. Adds the right class and role. */
|
|
8803
8947
|
class TableHeaderRowComponent extends CdkHeaderRow {
|
|
8804
8948
|
}
|
|
8805
8949
|
TableHeaderRowComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: TableHeaderRowComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
@@ -8820,6 +8964,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
|
|
|
8820
8964
|
}]
|
|
8821
8965
|
}] });
|
|
8822
8966
|
|
|
8967
|
+
/**
|
|
8968
|
+
* Data row definition for the aui-table.
|
|
8969
|
+
* Captures the header row's template and other row properties such as the columns to display and
|
|
8970
|
+
* a when predicate that describes when this row should be used.
|
|
8971
|
+
*/
|
|
8823
8972
|
class TableRowDefDirective extends CdkRowDef {
|
|
8824
8973
|
constructor() {
|
|
8825
8974
|
super(...arguments);
|
|
@@ -8854,6 +9003,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
|
|
|
8854
9003
|
type: Input
|
|
8855
9004
|
}] } });
|
|
8856
9005
|
|
|
9006
|
+
/** Data row template container that contains the cell outlet. Adds the right class and role. */
|
|
8857
9007
|
class TableRowComponent extends CdkRow {
|
|
8858
9008
|
constructor(elRef) {
|
|
8859
9009
|
super();
|
|
@@ -8958,6 +9108,7 @@ class TableScrollShadowDirective {
|
|
|
8958
9108
|
const scrollTop = this.containerEl.scrollTop;
|
|
8959
9109
|
this.placeClassList(this.containerEl.classList, scrollTop > 0, HAS_TABLE_TOP_SHADOW);
|
|
8960
9110
|
this.placeClassList(this.containerEl.classList, scrollTop < scrollDis, HAS_TABLE_BOTTOM_SHADOW);
|
|
9111
|
+
// 兼容屏幕缩放是 sticky多列的样式问题
|
|
8961
9112
|
this.table.updateStickyColumnStyles();
|
|
8962
9113
|
}
|
|
8963
9114
|
mutateHorizontalScroll() {
|
|
@@ -9112,8 +9263,10 @@ class FixedSizeTableVirtualScrollStrategy {
|
|
|
9112
9263
|
this._updateContent();
|
|
9113
9264
|
}
|
|
9114
9265
|
onContentRendered() {
|
|
9266
|
+
// no-op
|
|
9115
9267
|
}
|
|
9116
9268
|
onRenderedOffsetChanged() {
|
|
9269
|
+
// no-op
|
|
9117
9270
|
}
|
|
9118
9271
|
scrollToIndex(index, behavior) {
|
|
9119
9272
|
if (!this.viewport || !this._rowHeight) {
|
|
@@ -9201,6 +9354,7 @@ class FixedSizeTableVirtualScrollDirective {
|
|
|
9201
9354
|
}
|
|
9202
9355
|
isStickyEnabled() {
|
|
9203
9356
|
return (!!this.scrollStrategy.viewport &&
|
|
9357
|
+
// @ts-expect-error
|
|
9204
9358
|
this.table._headerRowDefs
|
|
9205
9359
|
.map(def => def.sticky)
|
|
9206
9360
|
.reduce((prev, curr) => prev && curr, true));
|
|
@@ -9240,6 +9394,7 @@ FixedSizeTableVirtualScrollDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVers
|
|
|
9240
9394
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: FixedSizeTableVirtualScrollDirective, decorators: [{
|
|
9241
9395
|
type: Directive,
|
|
9242
9396
|
args: [{
|
|
9397
|
+
// eslint-disable-next-line @angular-eslint/directive-selector
|
|
9243
9398
|
selector: 'aui-virtual-scroll-viewport[fixedSize]',
|
|
9244
9399
|
exportAs: 'viewPort',
|
|
9245
9400
|
providers: [
|
|
@@ -9276,6 +9431,7 @@ FixedSizeVirtualScrollDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion:
|
|
|
9276
9431
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: FixedSizeVirtualScrollDirective, decorators: [{
|
|
9277
9432
|
type: Directive,
|
|
9278
9433
|
args: [{
|
|
9434
|
+
// eslint-disable-next-line @angular-eslint/directive-selector
|
|
9279
9435
|
selector: 'aui-virtual-scroll-viewport[itemSize]',
|
|
9280
9436
|
providers: [
|
|
9281
9437
|
{
|
|
@@ -9365,19 +9521,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
|
|
|
9365
9521
|
}]
|
|
9366
9522
|
}] });
|
|
9367
9523
|
|
|
9524
|
+
/** @docs-private */
|
|
9368
9525
|
function getSortDuplicateSortableIdError(id) {
|
|
9369
9526
|
return new Error(`Cannot have two MatSortables with the same id (${id}).`);
|
|
9370
9527
|
}
|
|
9528
|
+
/** @docs-private */
|
|
9371
9529
|
function getSortHeaderNotContainedWithinSortError() {
|
|
9372
9530
|
return new Error(`MatSortHeader must be placed within a parent element with the MatSort directive.`);
|
|
9373
9531
|
}
|
|
9532
|
+
/** @docs-private */
|
|
9374
9533
|
function getSortHeaderMissingIdError() {
|
|
9375
9534
|
return new Error(`MatSortHeader must be provided with a unique id.`);
|
|
9376
9535
|
}
|
|
9536
|
+
/** @docs-private */
|
|
9377
9537
|
function getSortInvalidDirectionError(direction) {
|
|
9378
9538
|
return new Error(`${direction} is not a valid sort direction ('asc' or 'desc').`);
|
|
9379
9539
|
}
|
|
9380
9540
|
|
|
9541
|
+
// Original code from material2
|
|
9381
9542
|
class SortDirective {
|
|
9382
9543
|
constructor() {
|
|
9383
9544
|
this.sortables = new Map();
|
|
@@ -9595,6 +9756,9 @@ const StepSelectedIcon = {
|
|
|
9595
9756
|
class StepsComponent {
|
|
9596
9757
|
constructor() {
|
|
9597
9758
|
this._steps = [];
|
|
9759
|
+
/**
|
|
9760
|
+
* @deprecated type 为 step 时一般在使用上下文中控制是否可以进行下一步;type 为 progress 时强制按顺序执行
|
|
9761
|
+
*/
|
|
9598
9762
|
this.linear = false;
|
|
9599
9763
|
this.orientation = 'horizontal';
|
|
9600
9764
|
this.type = 'step';
|
|
@@ -9706,6 +9870,7 @@ class StepsComponent {
|
|
|
9706
9870
|
(currentStep.state !== StepState.Done && i > this._currentIndex))) {
|
|
9707
9871
|
return false;
|
|
9708
9872
|
}
|
|
9873
|
+
// eslint-disable-next-line sonarjs/prefer-single-boolean-return
|
|
9709
9874
|
if (i < this._currentIndex && !this.selectable) {
|
|
9710
9875
|
return false;
|
|
9711
9876
|
}
|
|
@@ -10017,6 +10182,7 @@ class TabBodyComponent {
|
|
|
10017
10182
|
constructor() {
|
|
10018
10183
|
this.content$ = new BehaviorSubject(null);
|
|
10019
10184
|
}
|
|
10185
|
+
/** The tab body content to display. */
|
|
10020
10186
|
get content() {
|
|
10021
10187
|
return this._content;
|
|
10022
10188
|
}
|
|
@@ -10041,7 +10207,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
|
|
|
10041
10207
|
}], content: [{
|
|
10042
10208
|
type: Input
|
|
10043
10209
|
}] } });
|
|
10210
|
+
/** Used to flag tab labels for use with the portal directive */
|
|
10044
10211
|
class TabLabelDirective extends CdkPortal {
|
|
10212
|
+
// eslint-disable-next-line @typescript-eslint/no-useless-constructor
|
|
10045
10213
|
constructor(templateRef, viewContainerRef) {
|
|
10046
10214
|
super(templateRef, viewContainerRef);
|
|
10047
10215
|
}
|
|
@@ -10054,6 +10222,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
|
|
|
10054
10222
|
selector: '[auiTabLabel]',
|
|
10055
10223
|
}]
|
|
10056
10224
|
}], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }]; } });
|
|
10225
|
+
/**
|
|
10226
|
+
* Lazy load the embedded template for a tab content.
|
|
10227
|
+
*/
|
|
10057
10228
|
class TabContentDirective {
|
|
10058
10229
|
constructor(template) {
|
|
10059
10230
|
this.template = template;
|
|
@@ -10067,7 +10238,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
|
|
|
10067
10238
|
selector: '[auiTabContent]',
|
|
10068
10239
|
}]
|
|
10069
10240
|
}], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });
|
|
10241
|
+
/** Used to project additional template from host to the tab header. */
|
|
10070
10242
|
class TabHeaderAddonDirective extends CdkPortal {
|
|
10243
|
+
// eslint-disable-next-line @typescript-eslint/no-useless-constructor
|
|
10071
10244
|
constructor(templateRef, viewContainerRef) {
|
|
10072
10245
|
super(templateRef, viewContainerRef);
|
|
10073
10246
|
}
|
|
@@ -10080,10 +10253,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
|
|
|
10080
10253
|
selector: '[auiTabHeaderAddon]',
|
|
10081
10254
|
}]
|
|
10082
10255
|
}], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }]; } });
|
|
10256
|
+
/**
|
|
10257
|
+
* Used in the `aui-tab-group` view to display tab labels.
|
|
10258
|
+
*/
|
|
10083
10259
|
class TabLabelWrapperDirective {
|
|
10084
10260
|
constructor(elementRef) {
|
|
10085
10261
|
this.elementRef = elementRef;
|
|
10086
10262
|
}
|
|
10263
|
+
/** Whether or not the tab is disabled */
|
|
10087
10264
|
get disabled() {
|
|
10088
10265
|
return this._disabled;
|
|
10089
10266
|
}
|
|
@@ -10096,6 +10273,7 @@ class TabLabelWrapperDirective {
|
|
|
10096
10273
|
getOffsetWidth() {
|
|
10097
10274
|
return this.elementRef.nativeElement.offsetWidth;
|
|
10098
10275
|
}
|
|
10276
|
+
/** Sets focus on the wrapper element */
|
|
10099
10277
|
focus() {
|
|
10100
10278
|
this.elementRef.nativeElement.focus();
|
|
10101
10279
|
}
|
|
@@ -10115,6 +10293,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
|
|
|
10115
10293
|
type: Input
|
|
10116
10294
|
}] } });
|
|
10117
10295
|
class TabTitleDirective extends CdkPortal {
|
|
10296
|
+
// eslint-disable-next-line @typescript-eslint/no-useless-constructor
|
|
10118
10297
|
constructor(templateRef, viewContainerRef) {
|
|
10119
10298
|
super(templateRef, viewContainerRef);
|
|
10120
10299
|
}
|
|
@@ -10127,12 +10306,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
|
|
|
10127
10306
|
selector: '[auiTabTitle]',
|
|
10128
10307
|
}]
|
|
10129
10308
|
}], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }]; } });
|
|
10309
|
+
/**
|
|
10310
|
+
* The portal host directive for the contents of the tab.
|
|
10311
|
+
*/
|
|
10130
10312
|
class TabBodyPortalDirective extends CdkPortalOutlet {
|
|
10131
10313
|
constructor(componentFactoryResolver, viewContainerRef, _host) {
|
|
10132
10314
|
super(componentFactoryResolver, viewContainerRef);
|
|
10133
10315
|
this._host = _host;
|
|
10134
10316
|
this._hostSubscription = Subscription.EMPTY;
|
|
10135
10317
|
}
|
|
10318
|
+
/** Set initial visibility or set up subscription for changing visibility. */
|
|
10136
10319
|
ngOnInit() {
|
|
10137
10320
|
super.ngOnInit();
|
|
10138
10321
|
this._hostSubscription = this._host.content$.subscribe(content => {
|
|
@@ -10163,6 +10346,9 @@ class TabContextService {
|
|
|
10163
10346
|
? combineLatest([_parent.active$, this.active$$]).pipe(map(([a, b]) => a && b))
|
|
10164
10347
|
: this.active$$).pipe(distinctUntilChanged());
|
|
10165
10348
|
}
|
|
10349
|
+
/**
|
|
10350
|
+
* Whether the tab is currently active.
|
|
10351
|
+
*/
|
|
10166
10352
|
get isActive() {
|
|
10167
10353
|
return this.active$$.value;
|
|
10168
10354
|
}
|
|
@@ -10180,19 +10366,33 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
|
|
|
10180
10366
|
type: SkipSelf
|
|
10181
10367
|
}] }]; } });
|
|
10182
10368
|
|
|
10369
|
+
/* eslint-disable no-prototype-builtins */
|
|
10183
10370
|
class TabComponent {
|
|
10184
10371
|
constructor(_viewContainerRef, tabContext) {
|
|
10185
10372
|
this._viewContainerRef = _viewContainerRef;
|
|
10186
10373
|
this.tabContext = tabContext;
|
|
10374
|
+
/** Plain text label for the tab, used when there is no template label. */
|
|
10187
10375
|
this.textLabel = '';
|
|
10376
|
+
/** Whether or not to show the close button in the header */
|
|
10188
10377
|
this.closeable = false;
|
|
10189
10378
|
this.close = new EventEmitter();
|
|
10379
|
+
/**
|
|
10380
|
+
* The relatively indexed position where 0 represents the center, negative is left, and positive
|
|
10381
|
+
* represents the right.
|
|
10382
|
+
*/
|
|
10190
10383
|
this.position = null;
|
|
10384
|
+
/**
|
|
10385
|
+
* The initial relatively index origin of the tab if it was created and selected after there
|
|
10386
|
+
* was already a selected tab. Provides context of what position the tab should originate from.
|
|
10387
|
+
*/
|
|
10191
10388
|
this.origin = null;
|
|
10389
|
+
/** Emits whenever the internal state of the tab changes. */
|
|
10192
10390
|
this._stateChanges = new Subject();
|
|
10391
|
+
/** Portal that will be the hosted content of the tab */
|
|
10193
10392
|
this._contentPortal = null;
|
|
10194
10393
|
this._disabled = false;
|
|
10195
10394
|
}
|
|
10395
|
+
/** Whether or not the tab is disabled */
|
|
10196
10396
|
get disabled() {
|
|
10197
10397
|
return this._disabled;
|
|
10198
10398
|
}
|
|
@@ -10244,8 +10444,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
|
|
|
10244
10444
|
}] } });
|
|
10245
10445
|
|
|
10246
10446
|
const TabSize = {
|
|
10447
|
+
/** 卡片级尺寸 */
|
|
10247
10448
|
Large: 'large',
|
|
10449
|
+
/** 页面级尺寸 */
|
|
10248
10450
|
Medium: 'medium',
|
|
10451
|
+
/** 小尺寸 */
|
|
10249
10452
|
Small: 'small',
|
|
10250
10453
|
};
|
|
10251
10454
|
const TabType = {
|
|
@@ -10260,6 +10463,11 @@ class TabHeaderActiveIndicatorComponent {
|
|
|
10260
10463
|
this.type = TabType.Line;
|
|
10261
10464
|
this.bem = buildBem('aui-tab-header-active-indicator');
|
|
10262
10465
|
}
|
|
10466
|
+
/**
|
|
10467
|
+
* Calculates the styles from the provided element in order to align the indicator to that element.
|
|
10468
|
+
* Shows the indicator if previously set as hidden.
|
|
10469
|
+
* @param element
|
|
10470
|
+
*/
|
|
10263
10471
|
alignToElement(element) {
|
|
10264
10472
|
if (typeof requestAnimationFrame !== 'undefined') {
|
|
10265
10473
|
this._ngZone.runOutsideAngular(() => {
|
|
@@ -10270,6 +10478,10 @@ class TabHeaderActiveIndicatorComponent {
|
|
|
10270
10478
|
this._setStyles(element);
|
|
10271
10479
|
}
|
|
10272
10480
|
}
|
|
10481
|
+
/**
|
|
10482
|
+
* Sets the proper styles to the element.
|
|
10483
|
+
* @param element
|
|
10484
|
+
*/
|
|
10273
10485
|
_setStyles(element) {
|
|
10274
10486
|
const positions = this._getElementPosition(element);
|
|
10275
10487
|
const nativeEl = this._elementRef.nativeElement;
|
|
@@ -10292,6 +10504,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
|
|
|
10292
10504
|
type: Input
|
|
10293
10505
|
}] } });
|
|
10294
10506
|
|
|
10507
|
+
/**
|
|
10508
|
+
* The distance in pixels that will be overshot when scrolling a tab label into view. This helps
|
|
10509
|
+
* provide a small affordance to the label next to it.
|
|
10510
|
+
*/
|
|
10295
10511
|
const EXAGGERATED_OVERSCROLL = 60;
|
|
10296
10512
|
class TabHeaderComponent {
|
|
10297
10513
|
constructor(_changeDetectorRef, _viewportRuler) {
|
|
@@ -10299,18 +10515,27 @@ class TabHeaderComponent {
|
|
|
10299
10515
|
this._viewportRuler = _viewportRuler;
|
|
10300
10516
|
this.bem = buildBem('aui-tab-header');
|
|
10301
10517
|
this._showAddon = false;
|
|
10518
|
+
/** Whether the controls for pagination should be displayed */
|
|
10302
10519
|
this._showPaginationControls = false;
|
|
10520
|
+
/** Whether the tab list can be scrolled more towards the end of the tab label list. */
|
|
10303
10521
|
this._disableScrollAfter = true;
|
|
10522
|
+
/** Whether the tab list can be scrolled more towards the beginning of the tab label list. */
|
|
10304
10523
|
this._disableScrollBefore = true;
|
|
10524
|
+
/** Whether the header should scroll to the selected index after the view has been checked. */
|
|
10305
10525
|
this._selectedIndexChanged = false;
|
|
10526
|
+
/** The distance in pixels that the tab labels should be translated to the left. */
|
|
10306
10527
|
this._scrollDistance = 0;
|
|
10307
10528
|
this._selectedIndex = 0;
|
|
10529
|
+
/** Emits when the component is destroyed. */
|
|
10308
10530
|
this._destroyed = new Subject();
|
|
10309
10531
|
this.type = TabType.Line;
|
|
10310
10532
|
this.size = TabSize.Medium;
|
|
10533
|
+
/** Event emitted when the option is selected. */
|
|
10311
10534
|
this.selectFocusedIndex = new EventEmitter();
|
|
10535
|
+
/** Event emitted when a label is focused. */
|
|
10312
10536
|
this.indexFocused = new EventEmitter();
|
|
10313
10537
|
}
|
|
10538
|
+
/** The index of the active tab. */
|
|
10314
10539
|
get selectedIndex() {
|
|
10315
10540
|
return this._selectedIndex;
|
|
10316
10541
|
}
|
|
@@ -10327,11 +10552,14 @@ class TabHeaderComponent {
|
|
|
10327
10552
|
this._destroyed.complete();
|
|
10328
10553
|
}
|
|
10329
10554
|
ngAfterContentChecked() {
|
|
10555
|
+
// If the number of tab labels have changed, check if scrolling should be enabled
|
|
10330
10556
|
if (this._tabLabelCount !== this._labelWrappers.length) {
|
|
10331
10557
|
this._updatePagination();
|
|
10332
10558
|
this._tabLabelCount = this._labelWrappers.length;
|
|
10333
10559
|
this._changeDetectorRef.markForCheck();
|
|
10334
10560
|
}
|
|
10561
|
+
// If the selected index has changed, scroll to the label and check if the scrolling controls
|
|
10562
|
+
// should be disabled.
|
|
10335
10563
|
if (this._selectedIndexChanged) {
|
|
10336
10564
|
this._scrollToLabel(this._selectedIndex);
|
|
10337
10565
|
this._checkScrollingControls();
|
|
@@ -10339,6 +10567,8 @@ class TabHeaderComponent {
|
|
|
10339
10567
|
this._selectedIndexChanged = false;
|
|
10340
10568
|
this._changeDetectorRef.markForCheck();
|
|
10341
10569
|
}
|
|
10570
|
+
// If the scroll distance has been changed (tab selected, focused, scroll controls activated),
|
|
10571
|
+
// then translate the header to reflect this.
|
|
10342
10572
|
if (this._scrollDistanceChanged) {
|
|
10343
10573
|
this._updateTabScrollPosition();
|
|
10344
10574
|
this._scrollDistanceChanged = false;
|
|
@@ -10350,6 +10580,9 @@ class TabHeaderComponent {
|
|
|
10350
10580
|
this._changeDetectorRef.markForCheck();
|
|
10351
10581
|
}
|
|
10352
10582
|
}
|
|
10583
|
+
/**
|
|
10584
|
+
* Aligns the ink bar to the selected tab on load.
|
|
10585
|
+
*/
|
|
10353
10586
|
ngAfterContentInit() {
|
|
10354
10587
|
const resize = this._viewportRuler.change(150);
|
|
10355
10588
|
const realign = () => {
|
|
@@ -10360,12 +10593,19 @@ class TabHeaderComponent {
|
|
|
10360
10593
|
.withHorizontalOrientation('ltr')
|
|
10361
10594
|
.withWrap();
|
|
10362
10595
|
this._keyManager.updateActiveItem(0);
|
|
10596
|
+
// Defer the first call in order to allow for slower browsers to lay out the elements.
|
|
10597
|
+
// This helps in cases where the user lands directly on a page with paginated tabs.
|
|
10363
10598
|
typeof requestAnimationFrame !== 'undefined'
|
|
10364
10599
|
? requestAnimationFrame(realign)
|
|
10365
10600
|
: realign();
|
|
10601
|
+
// On window resize, realign the ink bar and update the orientation of
|
|
10602
|
+
// the key manager if the direction has changed.
|
|
10366
10603
|
resize.pipe(takeUntil(this._destroyed)).subscribe(() => {
|
|
10367
10604
|
realign();
|
|
10368
10605
|
});
|
|
10606
|
+
// If there is a change in the focus key manager we need to emit the `indexFocused`
|
|
10607
|
+
// event in order to provide a public event that notifies about focus changes. Also we realign
|
|
10608
|
+
// the tabs container by scrolling the new focused tab into the visible section.
|
|
10369
10609
|
this._keyManager.change
|
|
10370
10610
|
.pipe(takeUntil(this._destroyed))
|
|
10371
10611
|
.subscribe(newFocusIndex => {
|
|
@@ -10373,17 +10613,22 @@ class TabHeaderComponent {
|
|
|
10373
10613
|
this._setTabFocus(newFocusIndex);
|
|
10374
10614
|
});
|
|
10375
10615
|
}
|
|
10616
|
+
/** Sets the distance in pixels that the tab header should be transformed in the X-axis. */
|
|
10376
10617
|
get scrollDistance() {
|
|
10377
10618
|
return this._scrollDistance;
|
|
10378
10619
|
}
|
|
10379
10620
|
set scrollDistance(v) {
|
|
10380
10621
|
this._scrollDistance = Math.max(0, Math.min(this._getMaxScrollDistance(), v));
|
|
10622
|
+
// Mark that the scroll distance has changed so that after the view is checked, the CSS
|
|
10623
|
+
// transformation can move the header.
|
|
10381
10624
|
this._scrollDistanceChanged = true;
|
|
10382
10625
|
this._checkScrollingControls();
|
|
10383
10626
|
}
|
|
10627
|
+
/** Tracks which element has focus; used for keyboard navigation */
|
|
10384
10628
|
get focusIndex() {
|
|
10385
10629
|
return this._keyManager ? this._keyManager.activeItemIndex : 0;
|
|
10386
10630
|
}
|
|
10631
|
+
/** When the focus index is set, we must manually send focus to the correct label */
|
|
10387
10632
|
set focusIndex(value) {
|
|
10388
10633
|
if (!this._isValidIndex(value) ||
|
|
10389
10634
|
this.focusIndex === value ||
|
|
@@ -10392,6 +10637,10 @@ class TabHeaderComponent {
|
|
|
10392
10637
|
}
|
|
10393
10638
|
this._keyManager.setActiveItem(value);
|
|
10394
10639
|
}
|
|
10640
|
+
/**
|
|
10641
|
+
* Determines if an index is valid. If the tabs are not ready yet, we assume that the user is
|
|
10642
|
+
* providing a valid index and return true.
|
|
10643
|
+
*/
|
|
10395
10644
|
_isValidIndex(index) {
|
|
10396
10645
|
if (!this._labelWrappers) {
|
|
10397
10646
|
return true;
|
|
@@ -10420,16 +10669,29 @@ class TabHeaderComponent {
|
|
|
10420
10669
|
this._keyManager.onKeydown(event);
|
|
10421
10670
|
}
|
|
10422
10671
|
}
|
|
10672
|
+
/**
|
|
10673
|
+
* Sets focus on the HTML element for the label wrapper and scrolls it into the view if
|
|
10674
|
+
* scrolling is enabled.
|
|
10675
|
+
*/
|
|
10423
10676
|
_setTabFocus(tabIndex) {
|
|
10424
10677
|
if (this._showPaginationControls) {
|
|
10425
10678
|
this._scrollToLabel(tabIndex);
|
|
10426
10679
|
}
|
|
10427
10680
|
if (this._labelWrappers?.length > 0) {
|
|
10428
10681
|
this._labelWrappers.toArray()[tabIndex].focus();
|
|
10682
|
+
// Do not let the browser manage scrolling to focus the element, this will be handled
|
|
10683
|
+
// by using translation. In LTR, the scroll left should be 0. In RTL, the scroll width
|
|
10684
|
+
// should be the full width minus the offset width.
|
|
10429
10685
|
const containerEl = this._tabListContainer.nativeElement;
|
|
10430
10686
|
containerEl.scrollLeft = 0;
|
|
10431
10687
|
}
|
|
10432
10688
|
}
|
|
10689
|
+
/**
|
|
10690
|
+
* Moves the tab list such that the desired tab label (marked by index) is moved into view.
|
|
10691
|
+
*
|
|
10692
|
+
* This is an expensive call that forces a layout reflow to compute box and scroll metrics and
|
|
10693
|
+
* should be called sparingly.
|
|
10694
|
+
*/
|
|
10433
10695
|
_scrollToLabel(labelIndex) {
|
|
10434
10696
|
const selectedLabel = this._labelWrappers
|
|
10435
10697
|
? this._labelWrappers.toArray()[labelIndex]
|
|
@@ -10437,37 +10699,63 @@ class TabHeaderComponent {
|
|
|
10437
10699
|
if (!selectedLabel) {
|
|
10438
10700
|
return;
|
|
10439
10701
|
}
|
|
10702
|
+
// The view length is the visible width of the tab labels.
|
|
10440
10703
|
const viewLength = this._tabListContainer.nativeElement.offsetWidth;
|
|
10441
10704
|
const labelBeforePos = selectedLabel.getOffsetLeft();
|
|
10442
10705
|
const labelAfterPos = labelBeforePos + selectedLabel.getOffsetWidth();
|
|
10443
10706
|
const beforeVisiblePos = this.scrollDistance;
|
|
10444
10707
|
const afterVisiblePos = this.scrollDistance + viewLength;
|
|
10445
10708
|
if (labelBeforePos < beforeVisiblePos) {
|
|
10709
|
+
// Scroll header to move label to the before direction
|
|
10446
10710
|
this.scrollDistance -=
|
|
10447
10711
|
beforeVisiblePos - labelBeforePos + EXAGGERATED_OVERSCROLL;
|
|
10448
10712
|
}
|
|
10449
10713
|
else if (labelAfterPos > afterVisiblePos) {
|
|
10714
|
+
// Scroll header to move label to the after direction
|
|
10450
10715
|
this.scrollDistance +=
|
|
10451
10716
|
labelAfterPos - afterVisiblePos + EXAGGERATED_OVERSCROLL;
|
|
10452
10717
|
}
|
|
10453
10718
|
}
|
|
10719
|
+
/**
|
|
10720
|
+
* Moves the tab list in the 'before' or 'after' direction (towards the beginning of the list or
|
|
10721
|
+
* the end of the list, respectively). The distance to scroll is computed to be a third of the
|
|
10722
|
+
* length of the tab list view window.
|
|
10723
|
+
*
|
|
10724
|
+
* This is an expensive call that forces a layout reflow to compute box and scroll metrics and
|
|
10725
|
+
* should be called sparingly.
|
|
10726
|
+
*/
|
|
10454
10727
|
_scrollHeader(scrollDir) {
|
|
10455
10728
|
const viewLength = this._tabListContainer.nativeElement.offsetWidth;
|
|
10729
|
+
// Move the scroll distance one-third the length of the tab list's viewport.
|
|
10456
10730
|
this.scrollDistance += ((scrollDir === 'before' ? -1 : 1) * viewLength) / 3;
|
|
10457
10731
|
}
|
|
10732
|
+
/**
|
|
10733
|
+
* Callback for when the MutationObserver detects that the content has changed.
|
|
10734
|
+
*/
|
|
10458
10735
|
_onContentChanges() {
|
|
10459
10736
|
this._updatePagination();
|
|
10460
10737
|
this._alignActiveIndicatorToSelectedTab();
|
|
10461
10738
|
this._changeDetectorRef.markForCheck();
|
|
10462
10739
|
}
|
|
10740
|
+
/**
|
|
10741
|
+
* Updating the view whether pagination should be enabled or not
|
|
10742
|
+
*/
|
|
10463
10743
|
_updatePagination() {
|
|
10464
10744
|
this._checkPaginationEnabled();
|
|
10465
10745
|
this._checkScrollingControls();
|
|
10466
10746
|
this._updateTabScrollPosition();
|
|
10467
10747
|
}
|
|
10748
|
+
/**
|
|
10749
|
+
* Evaluate whether the pagination controls should be displayed. If the scroll width of the
|
|
10750
|
+
* tab list is wider than the size of the header container, then the pagination controls should
|
|
10751
|
+
* be shown.
|
|
10752
|
+
*
|
|
10753
|
+
* This is an expensive call that forces a layout reflow to compute box and scroll metrics and
|
|
10754
|
+
* should be called sparingly.
|
|
10755
|
+
*/
|
|
10468
10756
|
_checkPaginationEnabled() {
|
|
10469
10757
|
const isEnabled = this._tabList.nativeElement.scrollWidth >
|
|
10470
|
-
this._paginationWrapper.nativeElement.offsetWidth + 2;
|
|
10758
|
+
this._paginationWrapper.nativeElement.offsetWidth + 2; // 2 is the border size
|
|
10471
10759
|
if (!isEnabled) {
|
|
10472
10760
|
this.scrollDistance = 0;
|
|
10473
10761
|
}
|
|
@@ -10477,22 +10765,45 @@ class TabHeaderComponent {
|
|
|
10477
10765
|
this._changeDetectorRef.markForCheck();
|
|
10478
10766
|
}
|
|
10479
10767
|
}
|
|
10768
|
+
/**
|
|
10769
|
+
* Evaluate whether the before and after controls should be enabled or disabled.
|
|
10770
|
+
* If the header is at the beginning of the list (scroll distance is equal to 0) then disable the
|
|
10771
|
+
* before button. If the header is at the end of the list (scroll distance is equal to the
|
|
10772
|
+
* maximum distance we can scroll), then disable the after button.
|
|
10773
|
+
*
|
|
10774
|
+
* This is an expensive call that forces a layout reflow to compute box and scroll metrics and
|
|
10775
|
+
* should be called sparingly.
|
|
10776
|
+
*/
|
|
10480
10777
|
_checkScrollingControls() {
|
|
10778
|
+
// Check if the pagination arrows should be activated.
|
|
10481
10779
|
this._disableScrollBefore = this.scrollDistance === 0;
|
|
10482
10780
|
this._disableScrollAfter =
|
|
10483
10781
|
this.scrollDistance === this._getMaxScrollDistance();
|
|
10484
10782
|
this._changeDetectorRef.markForCheck();
|
|
10485
10783
|
}
|
|
10784
|
+
/**
|
|
10785
|
+
* Determines what is the maximum length in pixels that can be set for the scroll distance. This
|
|
10786
|
+
* is equal to the difference in width between the tab list container and tab header container.
|
|
10787
|
+
*
|
|
10788
|
+
* This is an expensive call that forces a layout reflow to compute box and scroll metrics and
|
|
10789
|
+
* should be called sparingly.
|
|
10790
|
+
*/
|
|
10486
10791
|
_getMaxScrollDistance() {
|
|
10487
10792
|
const lengthOfTabList = this._tabList.nativeElement.scrollWidth;
|
|
10488
10793
|
const viewLength = this._tabListContainer.nativeElement.offsetWidth;
|
|
10489
10794
|
return lengthOfTabList - viewLength || 0;
|
|
10490
10795
|
}
|
|
10796
|
+
/** Performs the CSS transformation on the tab list that will cause the list to scroll. */
|
|
10491
10797
|
_updateTabScrollPosition() {
|
|
10492
10798
|
const scrollDistance = this.scrollDistance;
|
|
10493
10799
|
const translateX = -scrollDistance;
|
|
10800
|
+
// Don't use `translate3d` here because we don't want to create a new layer. A new layer
|
|
10801
|
+
// seems to cause flickering and overflow in Internet Explorer. For example, the ink bar
|
|
10802
|
+
// and ripples will exceed the boundaries of the visible tab bar.
|
|
10803
|
+
// See: https://github.com/angular/material2/issues/10276
|
|
10494
10804
|
this._tabList.nativeElement.style.transform = `translateX(${translateX}px)`;
|
|
10495
10805
|
}
|
|
10806
|
+
/** Tells the active indicator to align itself to the current label wrapper */
|
|
10496
10807
|
_alignActiveIndicatorToSelectedTab() {
|
|
10497
10808
|
const selectedLabelWrapper = this._labelWrappers?.length > 0
|
|
10498
10809
|
? this._labelWrappers.toArray()[this.selectedIndex].elementRef
|
|
@@ -10522,7 +10833,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
|
|
|
10522
10833
|
}], _title: [{
|
|
10523
10834
|
type: ContentChild,
|
|
10524
10835
|
args: [TabTitleDirective, { static: false }]
|
|
10525
|
-
}],
|
|
10836
|
+
}],
|
|
10837
|
+
/**
|
|
10838
|
+
* workaround for @link https://github.com/microsoft/TypeScript/pull/42425
|
|
10839
|
+
*/
|
|
10840
|
+
_labelWrappers: [{
|
|
10526
10841
|
type: ContentChildren,
|
|
10527
10842
|
args: [TabLabelWrapperDirective]
|
|
10528
10843
|
}], _tabListContainer: [{
|
|
@@ -10539,27 +10854,38 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
|
|
|
10539
10854
|
args: [TabHeaderActiveIndicatorComponent, { static: true }]
|
|
10540
10855
|
}] } });
|
|
10541
10856
|
|
|
10857
|
+
/* eslint-disable no-prototype-builtins */
|
|
10858
|
+
/** A simple change event emitted on focus or selection changes. */
|
|
10542
10859
|
class TabChangeEvent {
|
|
10543
10860
|
}
|
|
10544
10861
|
class TabGroupComponent {
|
|
10545
10862
|
constructor(_changeDetectorRef) {
|
|
10546
10863
|
this._changeDetectorRef = _changeDetectorRef;
|
|
10547
10864
|
this.bem = buildBem('aui-tab-group');
|
|
10865
|
+
/** The tab index that should be selected after the content has been checked. */
|
|
10548
10866
|
this._indexToSelect = 0;
|
|
10867
|
+
/** Subscription to tabs being added/removed. */
|
|
10549
10868
|
this._tabsSubscription = Subscription.EMPTY;
|
|
10869
|
+
/** Subscription to changes in the tab labels. */
|
|
10550
10870
|
this._tabLabelSubscription = Subscription.EMPTY;
|
|
10551
10871
|
this._selectedIndex = null;
|
|
10552
10872
|
this._tab = null;
|
|
10553
10873
|
this._type = TabType.Line;
|
|
10554
10874
|
this._size = TabSize.Medium;
|
|
10875
|
+
/** Emits whenever the type changes */
|
|
10555
10876
|
this._typeChange = new Subject();
|
|
10877
|
+
/** Emits whenever the size changes */
|
|
10556
10878
|
this._sizeChange = new Subject();
|
|
10879
|
+
/** Output to enable support for two-way binding on `[(selectedIndex)]` */
|
|
10557
10880
|
this.selectedIndexChange = new EventEmitter();
|
|
10558
10881
|
this.tabChange = new EventEmitter();
|
|
10882
|
+
/** Event emitted when the tab selection has changed. */
|
|
10559
10883
|
this.selectedTabChange = new EventEmitter(true);
|
|
10884
|
+
/** Event emitted when focus has changed within a tab group. */
|
|
10560
10885
|
this.focusChange = new EventEmitter();
|
|
10561
10886
|
this.activatedTabs = [];
|
|
10562
10887
|
}
|
|
10888
|
+
/** The index of the active tab. */
|
|
10563
10889
|
get selectedIndex() {
|
|
10564
10890
|
return this._selectedIndex;
|
|
10565
10891
|
}
|
|
@@ -10619,20 +10945,34 @@ class TabGroupComponent {
|
|
|
10619
10945
|
this._sizeChange.next();
|
|
10620
10946
|
}
|
|
10621
10947
|
}
|
|
10948
|
+
/**
|
|
10949
|
+
* After the content is checked, this component knows what tabs have been defined
|
|
10950
|
+
* and what the selected index should be. This is where we can know exactly what position
|
|
10951
|
+
* each tab should be in according to the new selected index.
|
|
10952
|
+
*/
|
|
10622
10953
|
ngAfterContentChecked() {
|
|
10954
|
+
// Don't clamp the `indexToSelect` immediately in the setter because it can happen that
|
|
10955
|
+
// the amount of tabs changes before the actual change detection runs.
|
|
10623
10956
|
const indexToSelect = (this._indexToSelect = this._clampTabIndex(this._indexToSelect));
|
|
10957
|
+
// If there is a change in selected index, emit a change event. Should not trigger if
|
|
10958
|
+
// the selected index has not yet been initialized.
|
|
10624
10959
|
if (this._selectedIndex !== indexToSelect && this._selectedIndex != null) {
|
|
10625
10960
|
this._changeActivatedTabs();
|
|
10626
10961
|
const tabChangeEvent = this._createChangeEvent(indexToSelect);
|
|
10627
10962
|
this.selectedTabChange.emit(tabChangeEvent);
|
|
10963
|
+
// Emitting this value after change detection has run
|
|
10964
|
+
// since the checked content may contain this variable'
|
|
10628
10965
|
Promise.resolve().then(() => {
|
|
10629
10966
|
this.selectedIndexChange.emit(indexToSelect);
|
|
10630
10967
|
this.tabChange.emit(this._tabs.get(indexToSelect).name);
|
|
10631
10968
|
});
|
|
10632
10969
|
}
|
|
10970
|
+
// Setup the position for each tab and optionally setup an origin on the next selected tab.
|
|
10633
10971
|
this._tabs.forEach((tab, index) => {
|
|
10634
10972
|
tab.position = index - indexToSelect;
|
|
10635
10973
|
tab.tabContext.isActive = index === indexToSelect;
|
|
10974
|
+
// If there is already a selected tab, then set up an origin for the next selected tab
|
|
10975
|
+
// if it doesn't have one already.
|
|
10636
10976
|
if (this._selectedIndex != null && tab.position === 0 && !tab.origin) {
|
|
10637
10977
|
tab.origin = indexToSelect - this._selectedIndex;
|
|
10638
10978
|
}
|
|
@@ -10652,15 +10992,22 @@ class TabGroupComponent {
|
|
|
10652
10992
|
}
|
|
10653
10993
|
this._changeActivatedTabs();
|
|
10654
10994
|
this._subscribeToTabLabels();
|
|
10995
|
+
// Subscribe to changes in the amount of tabs, in order to be
|
|
10996
|
+
// able to re-render the content as new tabs are added or removed.
|
|
10655
10997
|
this._tabsSubscription = this._tabs.changes.subscribe(() => {
|
|
10656
10998
|
const tabs = this._tabs.toArray();
|
|
10657
10999
|
if (this._lazy) {
|
|
10658
11000
|
this.activatedTabs = this.activatedTabs.filter(tab => tabs.includes(tab));
|
|
10659
11001
|
}
|
|
10660
11002
|
const indexToSelect = this._clampTabIndex(this._indexToSelect);
|
|
11003
|
+
// Maintain the previously-selected tab if a new tab is added or removed and there is no
|
|
11004
|
+
// explicit change that selects a different tab.
|
|
10661
11005
|
if (indexToSelect === this._selectedIndex) {
|
|
10662
11006
|
for (const [i, tab] of tabs.entries()) {
|
|
10663
11007
|
if (tab.tabContext.isActive) {
|
|
11008
|
+
// Assign both to the `_indexToSelect` and `_selectedIndex` so we don't fire a changed
|
|
11009
|
+
// event, otherwise the consumer may end up in an infinite loop in some edge cases like
|
|
11010
|
+
// adding a tab within the `selectedIndexChange` event.
|
|
10664
11011
|
this._indexToSelect = this._selectedIndex = i;
|
|
10665
11012
|
break;
|
|
10666
11013
|
}
|
|
@@ -10677,6 +11024,7 @@ class TabGroupComponent {
|
|
|
10677
11024
|
this._typeChange.complete();
|
|
10678
11025
|
this._sizeChange.complete();
|
|
10679
11026
|
}
|
|
11027
|
+
/** Handle click events, setting new selected index if appropriate. */
|
|
10680
11028
|
_handleClick(tab, idx) {
|
|
10681
11029
|
if (!tab.disabled) {
|
|
10682
11030
|
this.selectedIndex = this._tabHeader.focusIndex = idx;
|
|
@@ -10685,6 +11033,7 @@ class TabGroupComponent {
|
|
|
10685
11033
|
_focusChanged(index) {
|
|
10686
11034
|
this.focusChange.emit(this._createChangeEvent(index));
|
|
10687
11035
|
}
|
|
11036
|
+
/** Re-aligns the ink bar to the selected tab element. */
|
|
10688
11037
|
realignActiveIndicator() {
|
|
10689
11038
|
if (this._tabHeader) {
|
|
10690
11039
|
this._tabHeader._alignActiveIndicatorToSelectedTab();
|
|
@@ -10702,7 +11051,11 @@ class TabGroupComponent {
|
|
|
10702
11051
|
this.activatedTabs.push(tab);
|
|
10703
11052
|
}
|
|
10704
11053
|
}
|
|
11054
|
+
/** Clamps the given index to the bounds of 0 and the tabs length. */
|
|
10705
11055
|
_clampTabIndex(index) {
|
|
11056
|
+
// Note the `|| 0`, which ensures that values like NaN can't get through
|
|
11057
|
+
// and which would otherwise throw the component into an infinite loop
|
|
11058
|
+
// (since Math.max(NaN, 0) === NaN).
|
|
10706
11059
|
return Math.min(this._tabs.length - 1, Math.max(index || 0, 0));
|
|
10707
11060
|
}
|
|
10708
11061
|
_findIndexByTab(name) {
|
|
@@ -10716,6 +11069,12 @@ class TabGroupComponent {
|
|
|
10716
11069
|
}
|
|
10717
11070
|
return event;
|
|
10718
11071
|
}
|
|
11072
|
+
/**
|
|
11073
|
+
* Subscribes to changes in the tab labels. This is needed, because the @Input for the label is
|
|
11074
|
+
* on the Tab component, whereas the data binding is inside the TabGroup. In order for the
|
|
11075
|
+
* binding to be updated, we need to subscribe to changes in it and trigger change detection
|
|
11076
|
+
* manually.
|
|
11077
|
+
*/
|
|
10719
11078
|
_subscribeToTabLabels() {
|
|
10720
11079
|
if (this._tabLabelSubscription) {
|
|
10721
11080
|
this._tabLabelSubscription.unsubscribe();
|
|
@@ -10725,6 +11084,7 @@ class TabGroupComponent {
|
|
|
10725
11084
|
this._changeDetectorRef.markForCheck();
|
|
10726
11085
|
});
|
|
10727
11086
|
}
|
|
11087
|
+
/** Retrieves the tabindex for the tab. */
|
|
10728
11088
|
_getTabIndex(tab, idx) {
|
|
10729
11089
|
if (tab.disabled) {
|
|
10730
11090
|
return null;
|
|
@@ -10879,6 +11239,7 @@ class TreeSelectComponent extends CommonFormControl {
|
|
|
10879
11239
|
this.filterString$ = this.filterString$$.asObservable();
|
|
10880
11240
|
this.displayText = '';
|
|
10881
11241
|
this.flattedNodes = [];
|
|
11242
|
+
// `this` is not available in `trackBy`...
|
|
10882
11243
|
this.trackByLabel = (_, node) => this.getLabelFromNode(node);
|
|
10883
11244
|
}
|
|
10884
11245
|
get nodesData() {
|
|
@@ -11213,5 +11574,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
|
|
|
11213
11574
|
}]
|
|
11214
11575
|
}] });
|
|
11215
11576
|
|
|
11577
|
+
/**
|
|
11578
|
+
* Generated bundle index. Do not edit.
|
|
11579
|
+
*/
|
|
11580
|
+
|
|
11216
11581
|
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 };
|
|
11217
11582
|
//# sourceMappingURL=alauda-ui.mjs.map
|