ngx-tethys 13.2.3 → 13.2.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/CHANGELOG.md +45 -0
- package/cascader/cascader-li.component.d.ts +7 -3
- package/cascader/cascader.component.d.ts +70 -74
- package/cascader/module.d.ts +3 -1
- package/cascader/styles/cascader.scss +3 -64
- package/core/color/color.d.ts +3 -0
- package/esm2020/cascader/cascader-li.component.mjs +36 -8
- package/esm2020/cascader/cascader.component.mjs +274 -173
- package/esm2020/cascader/module.mjs +31 -4
- package/esm2020/core/color/color.mjs +5 -1
- package/esm2020/image/preview/image-preview.component.mjs +2 -5
- package/esm2020/mention/mention.directive.mjs +4 -1
- package/esm2020/menu/group/menu-group.component.mjs +3 -3
- package/esm2020/property/module.mjs +6 -4
- package/esm2020/property/properties.component.mjs +46 -64
- package/esm2020/property/property-item.component.mjs +82 -9
- package/esm2020/shared/select/module.mjs +5 -5
- package/esm2020/shared/select/select-control/select-control.component.mjs +7 -10
- package/esm2020/tag/tag.component.mjs +3 -3
- package/esm2020/time-picker/time-picker-panel.component.mjs +15 -6
- package/esm2020/time-picker/time-picker.component.mjs +62 -25
- package/esm2020/typography/index.mjs +4 -0
- package/esm2020/typography/module.mjs +21 -0
- package/esm2020/typography/ngx-tethys-typography.mjs +5 -0
- package/esm2020/typography/text/text.component.mjs +23 -0
- package/esm2020/typography/text-color.directive.mjs +42 -0
- package/esm2020/version.mjs +2 -2
- package/fesm2015/ngx-tethys-cascader.mjs +340 -183
- package/fesm2015/ngx-tethys-cascader.mjs.map +1 -1
- package/fesm2015/ngx-tethys-core.mjs +5 -1
- package/fesm2015/ngx-tethys-core.mjs.map +1 -1
- package/fesm2015/ngx-tethys-image.mjs +1 -1
- package/fesm2015/ngx-tethys-image.mjs.map +1 -1
- package/fesm2015/ngx-tethys-mention.mjs +3 -0
- package/fesm2015/ngx-tethys-mention.mjs.map +1 -1
- package/fesm2015/ngx-tethys-menu.mjs +2 -2
- package/fesm2015/ngx-tethys-menu.mjs.map +1 -1
- package/fesm2015/ngx-tethys-property.mjs +128 -74
- package/fesm2015/ngx-tethys-property.mjs.map +1 -1
- package/fesm2015/ngx-tethys-shared.mjs +10 -13
- package/fesm2015/ngx-tethys-shared.mjs.map +1 -1
- package/fesm2015/ngx-tethys-tag.mjs +2 -2
- package/fesm2015/ngx-tethys-tag.mjs.map +1 -1
- package/fesm2015/ngx-tethys-time-picker.mjs +75 -29
- package/fesm2015/ngx-tethys-time-picker.mjs.map +1 -1
- package/fesm2015/ngx-tethys-typography.mjs +87 -0
- package/fesm2015/ngx-tethys-typography.mjs.map +1 -0
- package/fesm2015/ngx-tethys.mjs +1 -1
- package/fesm2015/ngx-tethys.mjs.map +1 -1
- package/fesm2020/ngx-tethys-cascader.mjs +338 -183
- package/fesm2020/ngx-tethys-cascader.mjs.map +1 -1
- package/fesm2020/ngx-tethys-core.mjs +5 -1
- package/fesm2020/ngx-tethys-core.mjs.map +1 -1
- package/fesm2020/ngx-tethys-image.mjs +1 -4
- package/fesm2020/ngx-tethys-image.mjs.map +1 -1
- package/fesm2020/ngx-tethys-mention.mjs +3 -0
- package/fesm2020/ngx-tethys-mention.mjs.map +1 -1
- package/fesm2020/ngx-tethys-menu.mjs +2 -2
- package/fesm2020/ngx-tethys-menu.mjs.map +1 -1
- package/fesm2020/ngx-tethys-property.mjs +126 -74
- package/fesm2020/ngx-tethys-property.mjs.map +1 -1
- package/fesm2020/ngx-tethys-shared.mjs +10 -13
- package/fesm2020/ngx-tethys-shared.mjs.map +1 -1
- package/fesm2020/ngx-tethys-tag.mjs +2 -2
- package/fesm2020/ngx-tethys-tag.mjs.map +1 -1
- package/fesm2020/ngx-tethys-time-picker.mjs +75 -29
- package/fesm2020/ngx-tethys-time-picker.mjs.map +1 -1
- package/fesm2020/ngx-tethys-typography.mjs +87 -0
- package/fesm2020/ngx-tethys-typography.mjs.map +1 -0
- package/fesm2020/ngx-tethys.mjs +1 -1
- package/fesm2020/ngx-tethys.mjs.map +1 -1
- package/form/styles/forms.scss +3 -3
- package/mention/mention.directive.d.ts +1 -0
- package/menu/examples/collapsed/collapsed.component.scss +7 -2
- package/menu/styles/collapsed.scss +13 -1
- package/menu/styles/menu.scss +3 -4
- package/menu/styles/theme.scss +1 -1
- package/package.json +9 -1
- package/property/module.d.ts +3 -1
- package/property/properties.component.d.ts +2 -4
- package/property/property-item.component.d.ts +29 -6
- package/property/styles/properties.scss +24 -13
- package/schematics/version.d.ts +1 -1
- package/schematics/version.js +1 -1
- package/shared/select/module.d.ts +2 -2
- package/shared/select/select-control/select-control.component.d.ts +2 -2
- package/shared/select/select-control/select-control.scss +5 -6
- package/shared/select/styles/select.mixin.scss +16 -1
- package/styles/index.scss +1 -0
- package/styles/mixins/index.scss +1 -0
- package/styles/variables.scss +17 -5
- package/tag/tag.component.d.ts +1 -1
- package/time-picker/styles/time-picker.scss +3 -0
- package/time-picker/time-picker-panel.component.d.ts +3 -2
- package/time-picker/time-picker.component.d.ts +6 -3
- package/typography/index.d.ts +3 -0
- package/typography/module.d.ts +10 -0
- package/typography/ngx-tethys-typography.d.ts +5 -0
- package/typography/package.json +10 -0
- package/typography/styles/mixin.scss +0 -0
- package/typography/styles/typography.scss +14 -0
- package/typography/text/text.component.d.ts +16 -0
- package/typography/text-color.directive.d.ts +17 -0
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,51 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
|
4
4
|
|
|
5
|
+
## [13.2.6](https://github.com/atinc/ngx-tethys/compare/13.2.5...13.2.6) (2022-08-25)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### Bug Fixes
|
|
9
|
+
|
|
10
|
+
* **dialog:** import ThyCheckboxModule #INFR-4410 ([08ea36f](https://github.com/atinc/ngx-tethys/commit/08ea36f4e95dfac80bfb900ffed50324ce709c18)), closes [#INFR-4410](https://github.com/atinc/ngx-tethys/issues/INFR-4410)
|
|
11
|
+
* **property:** add thyFlexibleText for label text and add property-item-editor-offset for margin-left #INFR-4394 ([#2117](https://github.com/atinc/ngx-tethys/issues/2117)) ([7ab2c9e](https://github.com/atinc/ngx-tethys/commit/7ab2c9e6158684495950a9004e8034d06f33b7a5)), closes [#INFR-4394](https://github.com/atinc/ngx-tethys/issues/INFR-4394)
|
|
12
|
+
* **time-picker:** fix use origin value when input not valid date and improve test #INFR-4316 ([#2108](https://github.com/atinc/ngx-tethys/issues/2108)) ([153e7eb](https://github.com/atinc/ngx-tethys/commit/153e7ebc824c2f6ccc557dad8fe0869fc5032074)), closes [#INFR-4316](https://github.com/atinc/ngx-tethys/issues/INFR-4316)
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
### Features
|
|
16
|
+
|
|
17
|
+
* **cascader:** add mulitple feature #INFR-2596 ([#2111](https://github.com/atinc/ngx-tethys/issues/2111)) ([8e745fb](https://github.com/atinc/ngx-tethys/commit/8e745fb29ff331d9b3bf3d0d4673e524be32b7cf)), closes [#INFR-2596](https://github.com/atinc/ngx-tethys/issues/INFR-2596)
|
|
18
|
+
* **mention:** add isOpened for mention directive #INFR-4414 ([e342745](https://github.com/atinc/ngx-tethys/commit/e3427458f0889f643bcadf38e04b037cc6333985)), closes [#INFR-4414](https://github.com/atinc/ngx-tethys/issues/INFR-4414)
|
|
19
|
+
* **property:** add thySpan for thy-property-item #INFR-4358 ([#2116](https://github.com/atinc/ngx-tethys/issues/2116)) ([d902859](https://github.com/atinc/ngx-tethys/commit/d902859d40b8695012ca2a802013b33e98ad9221)), closes [#INFR-4358](https://github.com/atinc/ngx-tethys/issues/INFR-4358)
|
|
20
|
+
* **property:** support property editing ([#2120](https://github.com/atinc/ngx-tethys/issues/2120)) ([20edd1a](https://github.com/atinc/ngx-tethys/commit/20edd1a5527c063feef824c6106f2dc9b9ce074c))
|
|
21
|
+
* **typography:** add typography module contains thy-text #INFR-4234 ([#2099](https://github.com/atinc/ngx-tethys/issues/2099)) ([16aa7ba](https://github.com/atinc/ngx-tethys/commit/16aa7ba4e099d44018ee08678efba5a92d72374a)), closes [#INFR-4234](https://github.com/atinc/ngx-tethys/issues/INFR-4234)
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
## [13.2.5](https://github.com/atinc/ngx-tethys/compare/13.2.4...13.2.5) (2022-08-24)
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
### Bug Fixes
|
|
29
|
+
|
|
30
|
+
* **form:** fix label-required margin to 4px(#INFR-4338) ([#2107](https://github.com/atinc/ngx-tethys/issues/2107)) ([79d5bb5](https://github.com/atinc/ngx-tethys/commit/79d5bb59ae692d852b456eae7fdcc6d618e347ff)), closes [#INFR-4338](https://github.com/atinc/ngx-tethys/issues/INFR-4338)
|
|
31
|
+
* **property:** don't render item element when property item is null #INFR-4359 ([f8ad288](https://github.com/atinc/ngx-tethys/commit/f8ad288aa0a454b6b446e8ad14f78c795a0c05b7)), closes [#INFR-4359](https://github.com/atinc/ngx-tethys/issues/INFR-4359)
|
|
32
|
+
* **property:** optimize property editing #INFR-4361 #INFR-4363 ([#2109](https://github.com/atinc/ngx-tethys/issues/2109)) ([19153fd](https://github.com/atinc/ngx-tethys/commit/19153fd8e3f09b02bd77fec40165dccececa1872)), closes [#INFR-4361](https://github.com/atinc/ngx-tethys/issues/INFR-4361) [#INFR-4363](https://github.com/atinc/ngx-tethys/issues/INFR-4363)
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
### Features
|
|
36
|
+
|
|
37
|
+
* **menu:** show group icon when thyCollapsed is true #INFR-4366 ([433dbb5](https://github.com/atinc/ngx-tethys/commit/433dbb510920516f53e994c33ce7e56cc55f6e53)), closes [#INFR-4366](https://github.com/atinc/ngx-tethys/issues/INFR-4366)
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
## [13.2.4](https://github.com/atinc/ngx-tethys/compare/13.2.3...13.2.4) (2022-08-23)
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
### Bug Fixes
|
|
45
|
+
|
|
46
|
+
* **image:** fix blob image preview error #INFR-4333 ([#2103](https://github.com/atinc/ngx-tethys/issues/2103)) ([2e8c34d](https://github.com/atinc/ngx-tethys/commit/2e8c34d72ed436ce6dee4eadf5ad997e72a719d5)), closes [#INFR-4333](https://github.com/atinc/ngx-tethys/issues/INFR-4333)
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
|
|
5
50
|
## [13.2.3](https://github.com/atinc/ngx-tethys/compare/13.2.2...13.2.3) (2022-08-19)
|
|
6
51
|
|
|
7
52
|
|
|
@@ -1,16 +1,20 @@
|
|
|
1
|
-
import { OnInit } from '@angular/core';
|
|
1
|
+
import { EventEmitter, OnInit } from '@angular/core';
|
|
2
2
|
import { CascaderOption } from './types';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
export declare class ThyCascaderOptionComponent implements OnInit {
|
|
5
5
|
option: CascaderOption;
|
|
6
|
+
multiple: boolean;
|
|
7
|
+
isOnlySelectLeaf: boolean;
|
|
6
8
|
item: boolean;
|
|
7
9
|
active: boolean;
|
|
8
10
|
get disabled(): boolean;
|
|
9
11
|
get expand(): boolean;
|
|
10
|
-
|
|
12
|
+
labelProperty: string;
|
|
13
|
+
toggleSelectChange: EventEmitter<boolean>;
|
|
11
14
|
constructor();
|
|
12
15
|
getOptionLabel(): any;
|
|
13
16
|
ngOnInit(): void;
|
|
17
|
+
toggleOption(value: boolean): void;
|
|
14
18
|
static ɵfac: i0.ɵɵFactoryDeclaration<ThyCascaderOptionComponent, never>;
|
|
15
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<ThyCascaderOptionComponent, "[thy-cascader-option]", never, { "option": "option"; "active": "active"; "
|
|
19
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ThyCascaderOptionComponent, "[thy-cascader-option]", never, { "option": "option"; "multiple": "multiple"; "isOnlySelectLeaf": "isOnlySelectLeaf"; "active": "active"; "labelProperty": "labelProperty"; }, { "toggleSelectChange": "toggleSelectChange"; }, never, never>;
|
|
16
20
|
}
|
|
@@ -3,6 +3,8 @@ import { ChangeDetectorRef, ElementRef, EventEmitter, OnDestroy, OnInit, QueryLi
|
|
|
3
3
|
import { ControlValueAccessor } from '@angular/forms';
|
|
4
4
|
import { UpdateHostClassService } from 'ngx-tethys/core';
|
|
5
5
|
import { CascaderOption } from './types';
|
|
6
|
+
import { SelectControlSize, SelectOptionBase } from 'ngx-tethys/shared';
|
|
7
|
+
import { SelectionModel } from '@angular/cdk/collections';
|
|
6
8
|
import * as i0 from "@angular/core";
|
|
7
9
|
export declare type ThyCascaderTriggerType = 'click' | 'hover';
|
|
8
10
|
export declare type ThyCascaderExpandTrigger = 'click' | 'hover';
|
|
@@ -11,101 +13,94 @@ export declare class ThyCascaderComponent implements ControlValueAccessor, OnIni
|
|
|
11
13
|
private elementRef;
|
|
12
14
|
private updateHostClassService;
|
|
13
15
|
private viewPortRuler;
|
|
14
|
-
private changeOnSelect;
|
|
15
|
-
private showInput;
|
|
16
|
-
prefixCls: string;
|
|
17
|
-
private menuClassName;
|
|
18
|
-
private columnClassName;
|
|
19
|
-
private _menuColumnCls;
|
|
20
|
-
private defaultValue;
|
|
21
|
-
private readonly destroy$;
|
|
22
|
-
dropDownPosition: string;
|
|
23
|
-
menuVisible: boolean;
|
|
24
|
-
isLoading: boolean;
|
|
25
|
-
isOpening: boolean;
|
|
26
|
-
showSearch: boolean;
|
|
27
|
-
private _thySize;
|
|
28
|
-
private _arrowCls;
|
|
29
|
-
private _menuCls;
|
|
30
|
-
private _labelCls;
|
|
31
|
-
private _clearCls;
|
|
32
|
-
private _inputCls;
|
|
33
|
-
private labelRenderTpl;
|
|
34
|
-
isLabelRenderTemplate: boolean;
|
|
35
|
-
labelRenderText: string;
|
|
36
|
-
labelRenderContext: any;
|
|
37
|
-
onChange: any;
|
|
38
|
-
onTouched: any;
|
|
39
|
-
private cascaderPositon;
|
|
40
|
-
positions: ConnectionPositionPair[];
|
|
41
|
-
triggerRect: DOMRect;
|
|
42
|
-
set thyLabelRender(value: TemplateRef<any>);
|
|
43
|
-
get thyLabelRender(): TemplateRef<any>;
|
|
44
|
-
private value;
|
|
45
|
-
private selectedOptions;
|
|
46
|
-
private activatedOptions;
|
|
47
|
-
thyColumns: CascaderOption[][];
|
|
48
16
|
thyValueProperty: string;
|
|
49
17
|
thyLabelProperty: string;
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
18
|
+
thyPlaceholder: string;
|
|
19
|
+
thySize: SelectControlSize;
|
|
20
|
+
set thyOptions(options: CascaderOption[] | null);
|
|
21
|
+
thyChangeOnSelect: boolean;
|
|
22
|
+
thyShowInput: boolean;
|
|
23
|
+
set thyLabelRender(value: TemplateRef<any>);
|
|
24
|
+
get thyLabelRender(): TemplateRef<any>;
|
|
54
25
|
thyLoadData: (node: CascaderOption, index?: number) => PromiseLike<any>;
|
|
55
|
-
set thyChangeOnSelect(value: boolean);
|
|
56
|
-
get thyChangeOnSelect(): boolean;
|
|
57
|
-
set thyShowInput(value: boolean);
|
|
58
|
-
get thyShowInput(): boolean;
|
|
59
|
-
searchWidthStyle: string;
|
|
60
|
-
private oldColumnsHolder;
|
|
61
|
-
private oldActivatedOptions;
|
|
62
|
-
inSearch: boolean;
|
|
63
|
-
emptyStateText: string;
|
|
64
26
|
thyTriggerAction: ThyCascaderTriggerType | ThyCascaderTriggerType[];
|
|
65
27
|
thyExpandTriggerAction: ThyCascaderExpandTrigger | ThyCascaderExpandTrigger[];
|
|
66
28
|
thyMenuStyle: {
|
|
67
29
|
[key: string]: string;
|
|
68
30
|
};
|
|
69
|
-
set thyOptions(options: CascaderOption[] | null);
|
|
70
31
|
set thyMenuClassName(value: string);
|
|
71
32
|
get thyMenuClassName(): string;
|
|
72
33
|
set thyColumnClassName(value: string);
|
|
73
34
|
get thyColumnClassName(): string;
|
|
74
35
|
disabled: boolean;
|
|
75
|
-
set thySize(v: string);
|
|
76
|
-
get thySize(): string;
|
|
77
36
|
set thyEmptyStateText(value: string);
|
|
37
|
+
set thyMultiple(value: boolean);
|
|
38
|
+
get thyMultiple(): boolean;
|
|
39
|
+
thyMaxTagCount: number;
|
|
40
|
+
thyIsOnlySelectLeaf: boolean;
|
|
41
|
+
thyChangeOn: (option: CascaderOption, level: number) => boolean;
|
|
78
42
|
thyChange: EventEmitter<any[]>;
|
|
79
43
|
thySelectionChange: EventEmitter<CascaderOption[]>;
|
|
80
44
|
thySelect: EventEmitter<{
|
|
81
45
|
option: CascaderOption;
|
|
82
46
|
index: number;
|
|
83
47
|
}>;
|
|
84
|
-
|
|
48
|
+
thyDeselect: EventEmitter<{
|
|
49
|
+
option: CascaderOption;
|
|
50
|
+
index: number;
|
|
51
|
+
}>;
|
|
85
52
|
thyClear: EventEmitter<void>;
|
|
86
|
-
trigger: ElementRef<any>;
|
|
87
|
-
input: ElementRef;
|
|
88
|
-
menu: ElementRef;
|
|
89
53
|
cascaderOptions: QueryList<ElementRef>;
|
|
90
54
|
cascaderOptionContainers: QueryList<ElementRef>;
|
|
91
55
|
cdkConnectedOverlay: CdkConnectedOverlay;
|
|
56
|
+
trigger: ElementRef<any>;
|
|
57
|
+
input: ElementRef;
|
|
58
|
+
menu: ElementRef;
|
|
59
|
+
dropDownPosition: string;
|
|
60
|
+
menuVisible: boolean;
|
|
61
|
+
isLoading: boolean;
|
|
62
|
+
showSearch: boolean;
|
|
63
|
+
labelRenderText: string;
|
|
64
|
+
labelRenderContext: any;
|
|
65
|
+
isLabelRenderTemplate: boolean;
|
|
66
|
+
triggerRect: DOMRect;
|
|
67
|
+
columns: CascaderOption[][];
|
|
68
|
+
emptyStateText: string;
|
|
69
|
+
selectionModel: SelectionModel<SelectOptionBase>;
|
|
70
|
+
private prefixCls;
|
|
71
|
+
private menuClassName;
|
|
72
|
+
private columnClassName;
|
|
73
|
+
private _menuColumnCls;
|
|
74
|
+
private defaultValue;
|
|
75
|
+
private readonly destroy$;
|
|
76
|
+
private _menuCls;
|
|
77
|
+
private _labelCls;
|
|
78
|
+
private labelRenderTpl;
|
|
79
|
+
onChange: any;
|
|
80
|
+
onTouched: any;
|
|
81
|
+
private cascaderPosition;
|
|
82
|
+
positions: ConnectionPositionPair[];
|
|
83
|
+
private value;
|
|
84
|
+
private selectedOptions;
|
|
85
|
+
private activatedOptions;
|
|
86
|
+
get selected(): SelectOptionBase | SelectOptionBase[];
|
|
87
|
+
private isMultiple;
|
|
92
88
|
ngOnInit(): void;
|
|
89
|
+
private initSelectionModel;
|
|
93
90
|
private initPosition;
|
|
94
91
|
private initOptions;
|
|
95
92
|
private activateOnInit;
|
|
96
93
|
writeValue(value: any): void;
|
|
97
94
|
afterWriteValue(): void;
|
|
95
|
+
private addSelectedState;
|
|
98
96
|
registerOnChange(fn: (_: any) => {}): void;
|
|
99
97
|
registerOnTouched(fn: () => {}): void;
|
|
100
|
-
|
|
98
|
+
positionChange(position: ConnectedOverlayPositionChange): void;
|
|
101
99
|
private isLoaded;
|
|
102
100
|
getOptionLabel(option: CascaderOption): any;
|
|
103
101
|
getOptionValue(option: CascaderOption): any;
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
get showPlaceholder(): boolean;
|
|
107
|
-
isActivedOption(option: CascaderOption, index: number): boolean;
|
|
108
|
-
onAttached(): void;
|
|
102
|
+
isActivatedOption(option: CascaderOption, index: number): boolean;
|
|
103
|
+
attached(): void;
|
|
109
104
|
private findOption;
|
|
110
105
|
private buildDisplayLabel;
|
|
111
106
|
isMenuVisible(): boolean;
|
|
@@ -115,35 +110,36 @@ export declare class ThyCascaderComponent implements ControlValueAccessor, OnIni
|
|
|
115
110
|
private setMenuClass;
|
|
116
111
|
get menuColumnCls(): any;
|
|
117
112
|
private setMenuColumnClass;
|
|
118
|
-
get arrowCls(): any;
|
|
119
|
-
private setArrowClass;
|
|
120
|
-
get clearCls(): any;
|
|
121
|
-
private setClearClass;
|
|
122
113
|
get labelCls(): any;
|
|
123
114
|
private setLabelClass;
|
|
124
|
-
get inputCls(): any;
|
|
125
|
-
private setInputClass;
|
|
126
115
|
private setClassMap;
|
|
127
116
|
private isClickTriggerAction;
|
|
128
117
|
private isHoverTriggerAction;
|
|
129
118
|
private isHoverExpandTriggerAction;
|
|
130
119
|
toggleClick($event: Event): void;
|
|
131
120
|
toggleHover($event: Event): void;
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
121
|
+
clickOption(option: CascaderOption, index: number, event: Event): void;
|
|
122
|
+
mouseoverOption(option: CascaderOption, index: number, event: Event): void;
|
|
123
|
+
mouseleaveMenu(event: Event): void;
|
|
135
124
|
closeMenu(): void;
|
|
136
125
|
setActiveOption(option: CascaderOption, index: number, select: boolean, loadChildren?: boolean): void;
|
|
137
|
-
private
|
|
126
|
+
private selectOption;
|
|
127
|
+
removeSelectedItem(event: {
|
|
128
|
+
item: SelectOptionBase;
|
|
129
|
+
$eventOrigin: Event;
|
|
130
|
+
}): void;
|
|
131
|
+
private deselectOption;
|
|
138
132
|
private shouldPerformSelection;
|
|
139
|
-
private
|
|
133
|
+
private valueChange;
|
|
134
|
+
private getValues;
|
|
140
135
|
clearSelection($event: Event): void;
|
|
141
|
-
|
|
136
|
+
private deselectAllSelected;
|
|
142
137
|
private loadChildren;
|
|
143
138
|
private setColumnData;
|
|
144
|
-
getSubmitValue
|
|
139
|
+
private getSubmitValue;
|
|
145
140
|
constructor(cdr: ChangeDetectorRef, elementRef: ElementRef, updateHostClassService: UpdateHostClassService, viewPortRuler: ViewportRuler);
|
|
141
|
+
trackByFn(index: number, item: CascaderOption): any;
|
|
146
142
|
ngOnDestroy(): void;
|
|
147
143
|
static ɵfac: i0.ɵɵFactoryDeclaration<ThyCascaderComponent, never>;
|
|
148
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<ThyCascaderComponent, "thy-cascader,[thy-cascader]", never, { "
|
|
144
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ThyCascaderComponent, "thy-cascader,[thy-cascader]", never, { "thyValueProperty": "thyValueProperty"; "thyLabelProperty": "thyLabelProperty"; "thyPlaceholder": "thyPlaceholder"; "thySize": "thySize"; "thyOptions": "thyOptions"; "thyChangeOnSelect": "thyChangeOnSelect"; "thyShowInput": "thyShowInput"; "thyLabelRender": "thyLabelRender"; "thyLoadData": "thyLoadData"; "thyTriggerAction": "thyTriggerAction"; "thyExpandTriggerAction": "thyExpandTriggerAction"; "thyMenuStyle": "thyMenuStyle"; "thyMenuClassName": "thyMenuClassName"; "thyColumnClassName": "thyColumnClassName"; "disabled": "disabled"; "thyEmptyStateText": "thyEmptyStateText"; "thyMultiple": "thyMultiple"; "thyMaxTagCount": "thyMaxTagCount"; "thyIsOnlySelectLeaf": "thyIsOnlySelectLeaf"; "thyChangeOn": "thyChangeOn"; }, { "thyChange": "thyChange"; "thySelectionChange": "thySelectionChange"; "thySelect": "thySelect"; "thyDeselect": "thyDeselect"; "thyClear": "thyClear"; }, never, never>;
|
|
149
145
|
}
|
package/cascader/module.d.ts
CHANGED
|
@@ -7,8 +7,10 @@ import * as i5 from "@angular/cdk/overlay";
|
|
|
7
7
|
import * as i6 from "ngx-tethys/input";
|
|
8
8
|
import * as i7 from "ngx-tethys/icon";
|
|
9
9
|
import * as i8 from "ngx-tethys/empty";
|
|
10
|
+
import * as i9 from "ngx-tethys/shared";
|
|
11
|
+
import * as i10 from "ngx-tethys/checkbox";
|
|
10
12
|
export declare class ThyCascaderModule {
|
|
11
13
|
static ɵfac: i0.ɵɵFactoryDeclaration<ThyCascaderModule, never>;
|
|
12
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<ThyCascaderModule, [typeof i1.ThyCascaderComponent, typeof i2.ThyCascaderOptionComponent], [typeof i3.CommonModule, typeof i4.FormsModule, typeof i5.OverlayModule, typeof i6.ThyInputModule, typeof i7.ThyIconModule, typeof i8.ThyEmptyModule], [typeof i1.ThyCascaderComponent]>;
|
|
14
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<ThyCascaderModule, [typeof i1.ThyCascaderComponent, typeof i2.ThyCascaderOptionComponent], [typeof i3.CommonModule, typeof i4.FormsModule, typeof i5.OverlayModule, typeof i6.ThyInputModule, typeof i7.ThyIconModule, typeof i8.ThyEmptyModule, typeof i9.ThySelectCommonModule, typeof i10.ThyCheckboxModule], [typeof i1.ThyCascaderComponent]>;
|
|
13
15
|
static ɵinj: i0.ɵɵInjectorDeclaration<ThyCascaderModule>;
|
|
14
16
|
}
|
|
@@ -3,74 +3,13 @@
|
|
|
3
3
|
.thy-cascader {
|
|
4
4
|
position: relative;
|
|
5
5
|
display: inline-block;
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
border-radius: variables.$input-border-radius-xs;
|
|
9
|
-
&:hover:not(&-picker-disabled):not(.is-invalid) {
|
|
10
|
-
border-color: variables.$primary;
|
|
11
|
-
}
|
|
12
|
-
&-input.form-control {
|
|
13
|
-
border: none !important;
|
|
6
|
+
|
|
7
|
+
.form-control {
|
|
14
8
|
cursor: pointer;
|
|
15
9
|
|
|
16
|
-
|
|
17
|
-
cursor: default;
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
&-xs,
|
|
21
|
-
&-sm {
|
|
22
|
-
font-size: 0.75rem;
|
|
23
|
-
}
|
|
24
|
-
&-picker {
|
|
25
|
-
&-open {
|
|
26
|
-
border-color: variables.$primary;
|
|
27
|
-
}
|
|
28
|
-
&-disabled {
|
|
29
|
-
color: variables.$gray-600;
|
|
30
|
-
border-color: 1px solid variables.$gray-400;
|
|
10
|
+
&.disabled {
|
|
31
11
|
cursor: default;
|
|
32
12
|
}
|
|
33
|
-
&-label {
|
|
34
|
-
position: absolute;
|
|
35
|
-
left: 0;
|
|
36
|
-
height: 20px;
|
|
37
|
-
line-height: 20px;
|
|
38
|
-
top: 50%;
|
|
39
|
-
margin-top: -10px;
|
|
40
|
-
white-space: nowrap;
|
|
41
|
-
text-overflow: ellipsis;
|
|
42
|
-
overflow: hidden;
|
|
43
|
-
width: 100%;
|
|
44
|
-
padding: 0 24px 0 12px;
|
|
45
|
-
}
|
|
46
|
-
&-arrow {
|
|
47
|
-
color: variables.$gray-500;
|
|
48
|
-
position: absolute;
|
|
49
|
-
right: 12px;
|
|
50
|
-
top: 50%;
|
|
51
|
-
font-size: 1rem;
|
|
52
|
-
margin-top: -8px;
|
|
53
|
-
line-height: 1;
|
|
54
|
-
transition: transform 0.2s;
|
|
55
|
-
&-expand {
|
|
56
|
-
transform: rotate(180deg);
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
&-clear {
|
|
60
|
-
opacity: 0;
|
|
61
|
-
position: absolute;
|
|
62
|
-
right: 13px;
|
|
63
|
-
z-index: 2;
|
|
64
|
-
background: variables.$white;
|
|
65
|
-
top: 50%;
|
|
66
|
-
font-size: 0.875rem;
|
|
67
|
-
margin-top: -7px;
|
|
68
|
-
line-height: 1;
|
|
69
|
-
transition: color 0.3s ease, opacity 0.15s ease;
|
|
70
|
-
}
|
|
71
|
-
&:hover &-clear {
|
|
72
|
-
opacity: 1;
|
|
73
|
-
}
|
|
74
13
|
}
|
|
75
14
|
&-menus {
|
|
76
15
|
font-size: 14px;
|
package/core/color/color.d.ts
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
1
|
export declare const presetThemeColors: readonly ["primary", "success", "info", "warning", "danger", "default", "light"];
|
|
2
2
|
export declare type ThyThemeColor = typeof presetThemeColors[number];
|
|
3
3
|
export declare function isThemeColor(color: ThyThemeColor | string): boolean;
|
|
4
|
+
export declare const presetTextColors: readonly ["secondary", "muted", "desc", "placeholder"];
|
|
5
|
+
export declare type ThyTextColor = typeof presetTextColors[number];
|
|
6
|
+
export declare function isTextColor(color: ThyTextColor | string): boolean;
|
|
@@ -1,11 +1,18 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { __decorate, __metadata } from "tslib";
|
|
2
|
+
import { InputBoolean, UpdateHostClassService } from 'ngx-tethys/core';
|
|
3
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Input, Output, ViewEncapsulation } from '@angular/core';
|
|
3
4
|
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "
|
|
5
|
+
import * as i1 from "ngx-tethys/checkbox";
|
|
6
|
+
import * as i2 from "@angular/common";
|
|
7
|
+
import * as i3 from "@angular/forms";
|
|
5
8
|
export class ThyCascaderOptionComponent {
|
|
6
9
|
constructor() {
|
|
10
|
+
this.multiple = false;
|
|
11
|
+
this.isOnlySelectLeaf = true;
|
|
7
12
|
this.item = true;
|
|
8
13
|
this.active = false;
|
|
14
|
+
this.labelProperty = 'label';
|
|
15
|
+
this.toggleSelectChange = new EventEmitter();
|
|
9
16
|
}
|
|
10
17
|
get disabled() {
|
|
11
18
|
return this.option.disabled;
|
|
@@ -14,17 +21,36 @@ export class ThyCascaderOptionComponent {
|
|
|
14
21
|
return this.option && !this.option.isLeaf;
|
|
15
22
|
}
|
|
16
23
|
getOptionLabel() {
|
|
17
|
-
return this.option ? this.option[this.
|
|
24
|
+
return this.option ? this.option[this.labelProperty] : '';
|
|
18
25
|
}
|
|
19
26
|
ngOnInit() { }
|
|
27
|
+
toggleOption(value) {
|
|
28
|
+
this.toggleSelectChange.emit(value);
|
|
29
|
+
}
|
|
20
30
|
}
|
|
21
31
|
ThyCascaderOptionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.6", ngImport: i0, type: ThyCascaderOptionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
22
|
-
ThyCascaderOptionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.6", type: ThyCascaderOptionComponent, selector: "[thy-cascader-option]", inputs: { option: "option", active: "active",
|
|
32
|
+
ThyCascaderOptionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.6", type: ThyCascaderOptionComponent, selector: "[thy-cascader-option]", inputs: { option: "option", multiple: "multiple", isOnlySelectLeaf: "isOnlySelectLeaf", active: "active", labelProperty: "labelProperty" }, outputs: { toggleSelectChange: "toggleSelectChange" }, host: { properties: { "class.thy-cascader-menu-item": "this.item", "class.thy-cascader-menu-item-active": "this.active", "class.thy-cascader-menu-item-disabled": "this.disabled", "class.thy-cascader-menu-item-expand": "this.expand" } }, providers: [UpdateHostClassService], ngImport: i0, template: "<ng-container>\n <span *ngIf=\"!multiple || !option.isLeaf\"> {{ getOptionLabel() }}</span>\n <ng-container *ngIf=\"multiple && option.isLeaf && isOnlySelectLeaf\">\n <label\n thyCheckbox\n [(ngModel)]=\"active\"\n (ngModelChange)=\"toggleOption(active)\"\n [name]=\"option.value || option._id\"\n [thyLabelText]=\"getOptionLabel()\"\n ></label>\n </ng-container>\n\n <span\n *ngIf=\"!option.isLeaf || (option.children && option.children.length) || option.loading\"\n class=\"wtf wtf-angle-right thy-cascader-menu-item-expand-icon\"\n >\n </span>\n</ng-container>\n", components: [{ type: i1.ThyCheckboxComponent, selector: "thy-checkbox,[thy-checkbox],[thyCheckbox]", inputs: ["thyIndeterminate"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
33
|
+
__decorate([
|
|
34
|
+
InputBoolean(),
|
|
35
|
+
__metadata("design:type", Object)
|
|
36
|
+
], ThyCascaderOptionComponent.prototype, "multiple", void 0);
|
|
37
|
+
__decorate([
|
|
38
|
+
InputBoolean(),
|
|
39
|
+
__metadata("design:type", Object)
|
|
40
|
+
], ThyCascaderOptionComponent.prototype, "isOnlySelectLeaf", void 0);
|
|
41
|
+
__decorate([
|
|
42
|
+
InputBoolean(),
|
|
43
|
+
__metadata("design:type", Boolean)
|
|
44
|
+
], ThyCascaderOptionComponent.prototype, "active", void 0);
|
|
23
45
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.6", ngImport: i0, type: ThyCascaderOptionComponent, decorators: [{
|
|
24
46
|
type: Component,
|
|
25
|
-
args: [{ changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, selector: '[thy-cascader-option]', providers: [UpdateHostClassService], template: "<ng-container>\n
|
|
47
|
+
args: [{ changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, selector: '[thy-cascader-option]', providers: [UpdateHostClassService], template: "<ng-container>\n <span *ngIf=\"!multiple || !option.isLeaf\"> {{ getOptionLabel() }}</span>\n <ng-container *ngIf=\"multiple && option.isLeaf && isOnlySelectLeaf\">\n <label\n thyCheckbox\n [(ngModel)]=\"active\"\n (ngModelChange)=\"toggleOption(active)\"\n [name]=\"option.value || option._id\"\n [thyLabelText]=\"getOptionLabel()\"\n ></label>\n </ng-container>\n\n <span\n *ngIf=\"!option.isLeaf || (option.children && option.children.length) || option.loading\"\n class=\"wtf wtf-angle-right thy-cascader-menu-item-expand-icon\"\n >\n </span>\n</ng-container>\n" }]
|
|
26
48
|
}], ctorParameters: function () { return []; }, propDecorators: { option: [{
|
|
27
49
|
type: Input
|
|
50
|
+
}], multiple: [{
|
|
51
|
+
type: Input
|
|
52
|
+
}], isOnlySelectLeaf: [{
|
|
53
|
+
type: Input
|
|
28
54
|
}], item: [{
|
|
29
55
|
type: HostBinding,
|
|
30
56
|
args: ['class.thy-cascader-menu-item']
|
|
@@ -39,7 +65,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.6", ngImpor
|
|
|
39
65
|
}], expand: [{
|
|
40
66
|
type: HostBinding,
|
|
41
67
|
args: ['class.thy-cascader-menu-item-expand']
|
|
42
|
-
}],
|
|
68
|
+
}], labelProperty: [{
|
|
43
69
|
type: Input
|
|
70
|
+
}], toggleSelectChange: [{
|
|
71
|
+
type: Output
|
|
44
72
|
}] } });
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
73
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzY2FkZXItbGkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2Nhc2NhZGVyL2Nhc2NhZGVyLWxpLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy9jYXNjYWRlci9jYXNjYWRlci1saS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDOzs7OztBQVd4SSxNQUFNLE9BQU8sMEJBQTBCO0lBZ0NuQztRQTNCQSxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBSWpCLHFCQUFnQixHQUFHLElBQUksQ0FBQztRQUVxQixTQUFJLEdBQUcsSUFBSSxDQUFDO1FBS3pELFdBQU0sR0FBWSxLQUFLLENBQUM7UUFZZixrQkFBYSxHQUFXLE9BQU8sQ0FBQztRQUUvQix1QkFBa0IsR0FBMEIsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUUxRCxDQUFDO0lBZGhCLElBQ0ksUUFBUTtRQUNSLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7SUFDaEMsQ0FBQztJQUVELElBQ0ksTUFBTTtRQUNOLE9BQU8sSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQzlDLENBQUM7SUFRTSxjQUFjO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUM5RCxDQUFDO0lBRUQsUUFBUSxLQUFJLENBQUM7SUFFTixZQUFZLENBQUMsS0FBYztRQUM5QixJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3hDLENBQUM7O3VIQTFDUSwwQkFBMEI7MkdBQTFCLDBCQUEwQixnZUFGeEIsQ0FBQyxzQkFBc0IsQ0FBQywwQkNWdkMsa21CQWtCQTtBRERJO0lBREMsWUFBWSxFQUFFOzs0REFDRTtBQUlqQjtJQURDLFlBQVksRUFBRTs7b0VBQ1M7QUFPeEI7SUFEQyxZQUFZLEVBQUU7OzBEQUNTOzJGQWhCZiwwQkFBMEI7a0JBUnRDLFNBQVM7c0NBQ1csdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSSxZQUUzQix1QkFBdUIsYUFFdEIsQ0FBQyxzQkFBc0IsQ0FBQzswRUFHMUIsTUFBTTtzQkFBZCxLQUFLO2dCQUlOLFFBQVE7c0JBRlAsS0FBSztnQkFNTixnQkFBZ0I7c0JBRmYsS0FBSztnQkFJdUMsSUFBSTtzQkFBaEQsV0FBVzt1QkFBQyw4QkFBOEI7Z0JBSzNDLE1BQU07c0JBSEwsV0FBVzt1QkFBQyxxQ0FBcUM7O3NCQUNqRCxLQUFLO2dCQUtGLFFBQVE7c0JBRFgsV0FBVzt1QkFBQyx1Q0FBdUM7Z0JBTWhELE1BQU07c0JBRFQsV0FBVzt1QkFBQyxxQ0FBcUM7Z0JBS3pDLGFBQWE7c0JBQXJCLEtBQUs7Z0JBRUksa0JBQWtCO3NCQUEzQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5wdXRCb29sZWFuLCBVcGRhdGVIb3N0Q2xhc3NTZXJ2aWNlIH0gZnJvbSAnbmd4LXRldGh5cy9jb3JlJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENhc2NhZGVyT3B0aW9uIH0gZnJvbSAnLi90eXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgICBzZWxlY3RvcjogJ1t0aHktY2FzY2FkZXItb3B0aW9uXScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2Nhc2NhZGVyLWxpLmNvbXBvbmVudC5odG1sJyxcbiAgICBwcm92aWRlcnM6IFtVcGRhdGVIb3N0Q2xhc3NTZXJ2aWNlXVxufSlcbmV4cG9ydCBjbGFzcyBUaHlDYXNjYWRlck9wdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQElucHV0KCkgb3B0aW9uOiBDYXNjYWRlck9wdGlvbjtcblxuICAgIEBJbnB1dCgpXG4gICAgQElucHV0Qm9vbGVhbigpXG4gICAgbXVsdGlwbGUgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgQElucHV0Qm9vbGVhbigpXG4gICAgaXNPbmx5U2VsZWN0TGVhZiA9IHRydWU7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLnRoeS1jYXNjYWRlci1tZW51LWl0ZW0nKSBpdGVtID0gdHJ1ZTtcblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MudGh5LWNhc2NhZGVyLW1lbnUtaXRlbS1hY3RpdmUnKVxuICAgIEBJbnB1dCgpXG4gICAgQElucHV0Qm9vbGVhbigpXG4gICAgYWN0aXZlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLnRoeS1jYXNjYWRlci1tZW51LWl0ZW0tZGlzYWJsZWQnKVxuICAgIGdldCBkaXNhYmxlZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9uLmRpc2FibGVkO1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MudGh5LWNhc2NhZGVyLW1lbnUtaXRlbS1leHBhbmQnKVxuICAgIGdldCBleHBhbmQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbiAmJiAhdGhpcy5vcHRpb24uaXNMZWFmO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIGxhYmVsUHJvcGVydHk6IHN0cmluZyA9ICdsYWJlbCc7XG5cbiAgICBAT3V0cHV0KCkgdG9nZ2xlU2VsZWN0Q2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgICBwdWJsaWMgZ2V0T3B0aW9uTGFiZWwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbiA/IHRoaXMub3B0aW9uW3RoaXMubGFiZWxQcm9wZXJ0eV0gOiAnJztcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHt9XG5cbiAgICBwdWJsaWMgdG9nZ2xlT3B0aW9uKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMudG9nZ2xlU2VsZWN0Q2hhbmdlLmVtaXQodmFsdWUpO1xuICAgIH1cbn1cbiIsIjxuZy1jb250YWluZXI+XG4gIDxzcGFuICpuZ0lmPVwiIW11bHRpcGxlIHx8ICFvcHRpb24uaXNMZWFmXCI+IHt7IGdldE9wdGlvbkxhYmVsKCkgfX08L3NwYW4+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJtdWx0aXBsZSAmJiBvcHRpb24uaXNMZWFmICYmIGlzT25seVNlbGVjdExlYWZcIj5cbiAgICA8bGFiZWxcbiAgICAgIHRoeUNoZWNrYm94XG4gICAgICBbKG5nTW9kZWwpXT1cImFjdGl2ZVwiXG4gICAgICAobmdNb2RlbENoYW5nZSk9XCJ0b2dnbGVPcHRpb24oYWN0aXZlKVwiXG4gICAgICBbbmFtZV09XCJvcHRpb24udmFsdWUgfHwgb3B0aW9uLl9pZFwiXG4gICAgICBbdGh5TGFiZWxUZXh0XT1cImdldE9wdGlvbkxhYmVsKClcIlxuICAgID48L2xhYmVsPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8c3BhblxuICAgICpuZ0lmPVwiIW9wdGlvbi5pc0xlYWYgfHwgKG9wdGlvbi5jaGlsZHJlbiAmJiBvcHRpb24uY2hpbGRyZW4ubGVuZ3RoKSB8fCBvcHRpb24ubG9hZGluZ1wiXG4gICAgY2xhc3M9XCJ3dGYgd3RmLWFuZ2xlLXJpZ2h0IHRoeS1jYXNjYWRlci1tZW51LWl0ZW0tZXhwYW5kLWljb25cIlxuICA+XG4gIDwvc3Bhbj5cbjwvbmctY29udGFpbmVyPlxuIl19
|