qms-angular 1.1.23 → 1.1.25
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/bundles/qms-angular.umd.js +242 -129
- package/bundles/qms-angular.umd.js.map +1 -1
- package/esm2015/lib/common/models/qms-flat-node.model.js +1 -1
- package/esm2015/lib/common/models/qms-tree-node.model.js +1 -1
- package/esm2015/lib/components/select-department/select-department.component.js +37 -4
- package/esm2015/lib/components/select-department-tree/model/department-paging.model.js +2 -1
- package/esm2015/lib/components/select-department-tree/model/select-department-tree.config.js +3 -1
- package/esm2015/lib/components/select-department-tree/select-department-tree.component.js +155 -109
- package/esm2015/lib/components/select-department-tree/select-department-tree.module.js +4 -2
- package/fesm2015/qms-angular.js +192 -112
- package/fesm2015/qms-angular.js.map +1 -1
- package/lib/common/models/qms-flat-node.model.d.ts +1 -0
- package/lib/common/models/qms-tree-node.model.d.ts +1 -0
- package/lib/components/select-department/select-department.component.d.ts +19 -0
- package/lib/components/select-department-tree/model/select-department-tree.config.d.ts +2 -0
- package/lib/components/select-department-tree/select-department-tree.component.d.ts +35 -8
- package/package.json +1 -1
- package/src/lib/components/select-department/select-department.component.scss +25 -5
- package/src/lib/components/select-department-tree/select-department-tree.component.scss +269 -146
@@ -19,8 +19,12 @@ export declare class SelectDepartmentComponent implements OnInit, OnDestroy, Aft
|
|
19
19
|
popupData: SelectDepartmentPopupData;
|
20
20
|
resultSelected: QMSTreeNode[];
|
21
21
|
onSearchEvent: EventEmitter<string>;
|
22
|
+
onCheckNodeEvent: EventEmitter<QMSFlatNodeTree>;
|
23
|
+
onExpandNodeEvent: EventEmitter<QMSFlatNodeTree>;
|
24
|
+
onLoadMoreEvent: EventEmitter<void>;
|
22
25
|
resultSearch: QMSFlatNodeTree[];
|
23
26
|
isActiveViewSearch: boolean;
|
27
|
+
get isIncludeChild(): boolean;
|
24
28
|
constructor(cdRef: ChangeDetectorRef, dialogRef: MatDialogRef<SelectDepartmentComponent>, data: SelectDepartmentPopupData, trans: TranslateLibraryService);
|
25
29
|
ngAfterViewInit(): void;
|
26
30
|
onCloseDialog(): void;
|
@@ -34,4 +38,19 @@ export declare class SelectDepartmentComponent implements OnInit, OnDestroy, Aft
|
|
34
38
|
generateTootip(node: QMSTreeNode): string;
|
35
39
|
updateResultSearch(data: QMSDepartmentPagingModel<QMSFlatNodeTree>): void;
|
36
40
|
private formatString;
|
41
|
+
/**
|
42
|
+
* This function use for lazy load children of node
|
43
|
+
* @param node node update. if node is null data auto insert as roots
|
44
|
+
* @param data list children to update node.
|
45
|
+
* @param mode default is update that replace current list children by new list children , if mode = 'insert' will insert new value to list children existed before.
|
46
|
+
*/
|
47
|
+
updateChildOfNode(node: QMSFlatNodeTree, data: QMSTreeNode[], mode?: 'insert' | 'update'): void;
|
48
|
+
addRootTree(data?: QMSTreeNode[]): void;
|
49
|
+
/**
|
50
|
+
* This function handle check node of tree
|
51
|
+
* @param node node of tree
|
52
|
+
* @param callback do something before handle check node
|
53
|
+
* @returns
|
54
|
+
*/
|
55
|
+
handleCheckNode(node: QMSFlatNodeTree, callback?: (node: QMSFlatNodeTree) => Promise<void>): void;
|
37
56
|
}
|
@@ -1,6 +1,8 @@
|
|
1
1
|
import { SelectionModel } from '@angular/cdk/collections';
|
2
|
+
import { Overlay } from '@angular/cdk/overlay';
|
3
|
+
import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';
|
2
4
|
import { FlatTreeControl } from '@angular/cdk/tree';
|
3
|
-
import { AfterContentInit, AfterViewInit, ChangeDetectorRef, ElementRef, EventEmitter, OnInit } from '@angular/core';
|
5
|
+
import { AfterContentInit, AfterViewInit, ChangeDetectorRef, ElementRef, EventEmitter, OnInit, ViewContainerRef } from '@angular/core';
|
4
6
|
import { FormControl } from '@angular/forms';
|
5
7
|
import { MatIconRegistry } from '@angular/material/icon';
|
6
8
|
import { PageEvent } from '@angular/material/paginator';
|
@@ -27,7 +29,10 @@ export declare class SelectDepartmentTreeComponent implements OnInit, AfterViewI
|
|
27
29
|
private eleRef;
|
28
30
|
trans: TranslateLibraryService;
|
29
31
|
private treeDepartmentGlobalService;
|
32
|
+
overlay: Overlay;
|
33
|
+
viewContainerRef: ViewContainerRef;
|
30
34
|
LANG: any;
|
35
|
+
spinnerArr: any[];
|
31
36
|
arrSkeleton: any[];
|
32
37
|
set rowsSkeleton(value: number);
|
33
38
|
height: string;
|
@@ -38,18 +43,22 @@ export declare class SelectDepartmentTreeComponent implements OnInit, AfterViewI
|
|
38
43
|
get isIndeterminateCheckboxAllTree(): boolean;
|
39
44
|
onSearchEvent: EventEmitter<string>;
|
40
45
|
onPagingSearchEvent: EventEmitter<PageEvent>;
|
46
|
+
onValueChangeEvent: EventEmitter<QMSTreeNode[]>;
|
47
|
+
selectionNodeChangeEvent: EventEmitter<ISelectionNodeChange<QMSTreeNode>>;
|
48
|
+
onCheckNodeEvent: EventEmitter<QMSFlatNodeTree>;
|
49
|
+
onExpandNodeEvent: EventEmitter<QMSFlatNodeTree>;
|
50
|
+
onLoadMoreEvent: EventEmitter<void>;
|
51
|
+
cdkVirtualScrollViewport: CdkVirtualScrollViewport;
|
52
|
+
paginatorSearch: QMSPaginatorComponent;
|
41
53
|
MODE_VIEW_ENUM: typeof ModeDepartmentTreeeViewEnum;
|
54
|
+
ITEM_SIZE: number;
|
42
55
|
ngUnsubscribe: Subject<void>;
|
43
|
-
isLoaded: boolean;
|
44
56
|
resultSearchSelected: QMSTreeNode[];
|
45
57
|
resultSelected: QMSTreeNode[];
|
46
|
-
get currentTreeData(): QMSTreeNode[];
|
47
58
|
getDataTree$: BehaviorSubject<QMSTreeNode[]>;
|
48
|
-
onValueChangeEvent: EventEmitter<QMSTreeNode[]>;
|
49
|
-
selectionNodeChangeEvent: EventEmitter<ISelectionNodeChange<QMSTreeNode>>;
|
50
59
|
searchDepartment$: BehaviorSubject<QMSDepartmentPagingModel<QMSFlatNodeTree>>;
|
51
|
-
paginatorSearch: QMSPaginatorComponent;
|
52
60
|
resultSearch: DepartmentSearchResultModel[];
|
61
|
+
get currentTreeData(): QMSTreeNode[];
|
53
62
|
get isSelectAllResultSearch(): boolean;
|
54
63
|
get indeterminateSearchResult(): boolean;
|
55
64
|
indexView: number;
|
@@ -68,6 +77,8 @@ export declare class SelectDepartmentTreeComponent implements OnInit, AfterViewI
|
|
68
77
|
dataSourceTreeSearch: MatTreeFlatDataSource<QMSTreeNode, QMSFlatNodeTree>;
|
69
78
|
formSearchControl: FormControl;
|
70
79
|
getLoading$: BehaviorSubject<boolean>;
|
80
|
+
getLoadingMore$: BehaviorSubject<boolean>;
|
81
|
+
afterOnCheckNode: Subject<QMSFlatNodeTree>;
|
71
82
|
textResultSearch: string;
|
72
83
|
itemIconType: typeof ItemIconType;
|
73
84
|
_transformer: (node: QMSTreeNode, level: number) => QMSFlatNodeTree;
|
@@ -75,12 +86,13 @@ export declare class SelectDepartmentTreeComponent implements OnInit, AfterViewI
|
|
75
86
|
private _getChild;
|
76
87
|
private isExpandable;
|
77
88
|
hasChild: (_: number, node: QMSFlatNodeTree) => boolean;
|
78
|
-
constructor(cdRef: ChangeDetectorRef, domSanitizer: DomSanitizer, appIconService: QMSIconRegistryService, iconRegistry: MatIconRegistry, eleRef: ElementRef, trans: TranslateLibraryService, treeDepartmentGlobalService: QMSSelectDepartmentTreeGlobalService);
|
89
|
+
constructor(cdRef: ChangeDetectorRef, domSanitizer: DomSanitizer, appIconService: QMSIconRegistryService, iconRegistry: MatIconRegistry, eleRef: ElementRef, trans: TranslateLibraryService, treeDepartmentGlobalService: QMSSelectDepartmentTreeGlobalService, overlay: Overlay, viewContainerRef: ViewContainerRef);
|
79
90
|
ngAfterContentInit(): void;
|
80
91
|
ngAfterViewInit(): void;
|
81
92
|
ngOnInit(): void;
|
82
93
|
ngOnDestroy(): void;
|
83
94
|
private _initTreeData;
|
95
|
+
_convertToTreeData(data: QMSTreeNode[]): QMSTreeNode[];
|
84
96
|
private _initCheckListSelected;
|
85
97
|
private _handleItemSelectionChanged;
|
86
98
|
private _onSelectionNodeChangeEvent;
|
@@ -96,7 +108,13 @@ export declare class SelectDepartmentTreeComponent implements OnInit, AfterViewI
|
|
96
108
|
onRemoveNode(nodeId: string): void;
|
97
109
|
isIndeterminate(node: QMSFlatNodeTree): boolean;
|
98
110
|
isCheckAll(node: QMSFlatNodeTree): boolean;
|
99
|
-
|
111
|
+
/**
|
112
|
+
* This function handle check node of tree
|
113
|
+
* @param node node of tree
|
114
|
+
* @param callback do something before handle check node
|
115
|
+
* @returns
|
116
|
+
*/
|
117
|
+
handleCheckNode(node: QMSFlatNodeTree, callback?: (node: QMSFlatNodeTree) => Promise<void>): Promise<void>;
|
100
118
|
private resetNode;
|
101
119
|
isSelectedNode(node: QMSFlatNodeTree): boolean;
|
102
120
|
getChildrenSelected(node: QMSFlatNodeTree): QMSFlatNodeTree[];
|
@@ -125,4 +143,13 @@ export declare class SelectDepartmentTreeComponent implements OnInit, AfterViewI
|
|
125
143
|
getHeightStyleRefNode(nodeId: string): string;
|
126
144
|
private getSelectedNodeStorage;
|
127
145
|
private setSelectedNodeStorage;
|
146
|
+
trackBy(index: number, item: QMSFlatNodeTree): QMSFlatNodeTree;
|
147
|
+
/**
|
148
|
+
* This function use for lazy load children of node
|
149
|
+
* @param node node update. if node is null data auto insert as roots
|
150
|
+
* @param data list children to update node.
|
151
|
+
* @param mode default is update that replace current list children by new list children , if mode = 'insert' will insert new value to list children existed before.
|
152
|
+
*/
|
153
|
+
updateChildOfNode(node: QMSFlatNodeTree, data?: QMSTreeNode[], mode?: 'insert' | 'update'): void;
|
154
|
+
addRootTree(data?: QMSTreeNode[]): void;
|
128
155
|
}
|
package/package.json
CHANGED
@@ -137,17 +137,24 @@
|
|
137
137
|
|
138
138
|
|
139
139
|
span.related__item__content_name {
|
140
|
-
display: inline-block;
|
141
140
|
min-width: calc(100% - 13px);
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
141
|
+
max-width: 250px;
|
142
|
+
display: flex;
|
143
|
+
align-items: center;
|
144
|
+
& > span:nth-child(1){
|
145
|
+
display: inline-block;
|
146
|
+
margin-right: 4px;
|
147
|
+
white-space: nowrap;
|
148
|
+
overflow: hidden;
|
149
|
+
text-overflow: ellipsis;
|
150
|
+
max-width: 200px;
|
151
|
+
}
|
146
152
|
|
147
153
|
.select__include-children__count {
|
148
154
|
font-size: 0.75rem;
|
149
155
|
color: black(0.5);
|
150
156
|
font-weight: 600;
|
157
|
+
line-height: 16px;
|
151
158
|
}
|
152
159
|
}
|
153
160
|
}
|
@@ -201,3 +208,16 @@
|
|
201
208
|
color: unset !important;
|
202
209
|
}
|
203
210
|
}
|
211
|
+
|
212
|
+
@media screen and (max-width: 600px) {
|
213
|
+
::ng-deep .cdk-global-overlay-wrapper{
|
214
|
+
justify-content: center !important;
|
215
|
+
width: 100vw;
|
216
|
+
}
|
217
|
+
.header-title{
|
218
|
+
font-size: 14px;
|
219
|
+
}
|
220
|
+
.related__item__content_name{
|
221
|
+
font-size: 12px !important;
|
222
|
+
}
|
223
|
+
}
|
@@ -3,7 +3,6 @@
|
|
3
3
|
@import "../../../themes/theme/mixins";
|
4
4
|
@import "../../../themes/qms-icon-font";
|
5
5
|
|
6
|
-
|
7
6
|
.qms-select-department-tree-container {
|
8
7
|
.mr10 {
|
9
8
|
margin-right: 10px;
|
@@ -85,6 +84,8 @@
|
|
85
84
|
font-weight: 500;
|
86
85
|
color: theme-apply($ws-text-primary);
|
87
86
|
font-size: 16px;
|
87
|
+
display: flex;
|
88
|
+
align-items: center;
|
88
89
|
.header-view{
|
89
90
|
padding: 4px 0;
|
90
91
|
}
|
@@ -106,12 +107,10 @@
|
|
106
107
|
}
|
107
108
|
|
108
109
|
.tree-department-wrapper {
|
109
|
-
height: 375px;
|
110
110
|
padding-right: 4px;
|
111
|
-
overflow
|
112
|
-
overflow-x: hidden;
|
111
|
+
overflow: hidden;
|
113
112
|
position: relative;
|
114
|
-
transition: height .
|
113
|
+
transition: height .3s ease-in-out;
|
115
114
|
.tree-view{
|
116
115
|
&.active-mode-external-view{
|
117
116
|
width: 100%;
|
@@ -142,7 +141,7 @@
|
|
142
141
|
.external-list-item-container{
|
143
142
|
.node-external{
|
144
143
|
overflow: hidden;
|
145
|
-
transition: .1s ease-in-out;
|
144
|
+
transition: all .1s ease-in-out;
|
146
145
|
.node-external-content {
|
147
146
|
padding: 5px 15px 5px 15px;
|
148
147
|
height: calc(100% - 2px);
|
@@ -163,104 +162,131 @@
|
|
163
162
|
}
|
164
163
|
}
|
165
164
|
|
166
|
-
|
167
|
-
|
165
|
+
.mask-overlay{
|
166
|
+
z-index: 1000;
|
167
|
+
background-color: rgba(0,0,0,0.1);
|
168
|
+
position: absolute;
|
169
|
+
top: 0;
|
170
|
+
left: 0;
|
171
|
+
width: 100%;
|
168
172
|
height: 100%;
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
.
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
173
|
+
border-radius: 4px;
|
174
|
+
overflow: hidden;
|
175
|
+
display: grid;
|
176
|
+
place-items: center;
|
177
|
+
&> .qms-load-more-row {
|
178
|
+
// height: 0;
|
179
|
+
line-height: 35px;
|
180
|
+
text-align: center;
|
181
|
+
display: flex;
|
182
|
+
justify-content: center;
|
183
|
+
align-items: center;
|
184
|
+
gap: 4px;
|
185
|
+
transform: translateY(-15px);
|
186
|
+
span {
|
187
|
+
display: inline-block;
|
188
|
+
width: 10px;
|
189
|
+
height: 10px;
|
190
|
+
background: theme-apply($primary-light-12-opacity);
|
191
|
+
border-radius: 50px;
|
192
|
+
animation: up-down-animate 0.5s ease-in-out infinite alternate;
|
193
|
+
&:nth-child(2) {
|
194
|
+
background: theme-apply($primary-light-24-opacity);
|
195
|
+
animation-delay: 0.16s;
|
189
196
|
}
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
.type-icon,
|
194
|
-
.text-name {
|
195
|
-
color: theme-apply($primary);
|
197
|
+
&:nth-child(3) {
|
198
|
+
background: theme-apply($primary-light-32-opacity);
|
199
|
+
animation-delay: 0.32s;
|
196
200
|
}
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
.mat-tree-node.collapse-node:not(.selected-theme) {
|
201
|
-
&.active {
|
202
|
-
button,
|
203
|
-
.mat-icon-rtl-mirror,
|
204
|
-
.type-icon,
|
205
|
-
.text-name {
|
206
|
-
color: theme-apply($primary);
|
201
|
+
&:nth-child(4) {
|
202
|
+
background: theme-apply($primary-light-38-opacity);
|
203
|
+
animation-delay: 0.48s;
|
207
204
|
}
|
208
|
-
|
209
|
-
|
210
|
-
|
205
|
+
}
|
206
|
+
@keyframes up-down-animate {
|
207
|
+
0% {
|
208
|
+
transform: translateY(-8px);
|
211
209
|
}
|
212
210
|
|
213
|
-
|
214
|
-
|
211
|
+
100% {
|
212
|
+
transform: translateY(8px);
|
215
213
|
}
|
216
214
|
}
|
217
215
|
}
|
218
|
-
|
219
|
-
|
220
|
-
|
216
|
+
}
|
217
|
+
//Custom tree
|
218
|
+
.select-department-tree{
|
219
|
+
& > .cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper{
|
220
|
+
padding: 0 4px !important;
|
221
221
|
}
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
.type-icon,
|
229
|
-
.text-name {
|
230
|
-
color: theme-apply($primary);
|
222
|
+
.qms-tree-node{
|
223
|
+
display: flex;
|
224
|
+
align-items: center;
|
225
|
+
border-radius: 4px;
|
226
|
+
&:hover{
|
227
|
+
background-color: rgba(0,0,0,.08);
|
231
228
|
}
|
232
|
-
|
233
|
-
|
229
|
+
&> .node-expand-area{
|
230
|
+
width: 48px;
|
231
|
+
height: 48px;
|
232
|
+
position: relative;
|
233
|
+
}
|
234
|
+
&.active-external-view{
|
235
|
+
.mat-checkbox.qms-group-options{
|
236
|
+
width: calc(100% - 250px) ;
|
237
|
+
}
|
238
|
+
}
|
239
|
+
&.node-loading{
|
234
240
|
background: theme-apply($primary-light-6-opacity);
|
235
241
|
}
|
242
|
+
&> .external-view-node{
|
243
|
+
flex-basis: 200px;
|
244
|
+
overflow: hidden;
|
245
|
+
.node-external{
|
246
|
+
overflow: hidden;
|
247
|
+
transition: all .1s ease-in-out;
|
248
|
+
display: block;
|
249
|
+
.node-external-content {
|
250
|
+
padding: 5px 15px 5px 15px;
|
251
|
+
height: calc(100% - 2px);
|
252
|
+
color: theme-apply($default-color);
|
253
|
+
font-size: 14px;
|
254
|
+
display: flex;
|
255
|
+
align-items: center;
|
256
|
+
span{
|
257
|
+
overflow: hidden;
|
258
|
+
text-overflow: ellipsis;
|
259
|
+
white-space: nowrap;
|
260
|
+
}
|
261
|
+
}
|
262
|
+
}
|
263
|
+
}
|
264
|
+
&.expand-node {
|
265
|
+
color: theme-apply($primary);
|
266
|
+
&:hover {
|
267
|
+
background: theme-apply($primary-light-6-opacity);
|
268
|
+
}
|
236
269
|
|
237
|
-
|
270
|
+
&:active {
|
271
|
+
background: theme-apply($primary-light-12-opacity);
|
272
|
+
}
|
273
|
+
}
|
274
|
+
.node-without-checkbox{
|
275
|
+
cursor: pointer;
|
276
|
+
width: 100%;
|
277
|
+
display: flex;
|
278
|
+
justify-content: space-between;
|
279
|
+
align-items: center;
|
280
|
+
.mat-icon{
|
281
|
+
color: theme-apply($primary);
|
282
|
+
margin-right: 4px;
|
283
|
+
}
|
284
|
+
}
|
285
|
+
&.selected-theme{
|
238
286
|
background: theme-apply($primary-light-12-opacity);
|
239
287
|
}
|
240
|
-
}
|
241
|
-
|
242
|
-
.type-icon {
|
243
|
-
margin-right: 5px;
|
244
|
-
color: theme-apply($ws-action-active);
|
245
|
-
}
|
246
|
-
|
247
|
-
.text-name {
|
248
|
-
color: theme-apply($default-color);
|
249
|
-
}
|
250
288
|
|
251
|
-
|
252
|
-
color: black(0.6);
|
253
|
-
}
|
254
|
-
|
255
|
-
.mat-icon-button.btn-toggle {
|
256
|
-
width: 35px;
|
257
|
-
height: 35px;
|
258
|
-
line-height: 35px;
|
259
|
-
}
|
260
|
-
|
261
|
-
|
262
|
-
.mat-tree-node {
|
263
|
-
&.mat-tree-node-disabled-all {
|
289
|
+
&.mat-tree-node-disabled-all {
|
264
290
|
cursor: default !important;
|
265
291
|
pointer-events: none;
|
266
292
|
user-select: none;
|
@@ -284,66 +310,8 @@
|
|
284
310
|
background-color: transparent;
|
285
311
|
}
|
286
312
|
}
|
287
|
-
|
288
|
-
&.mat-tree-node-disabled {
|
289
|
-
|
290
|
-
button.mat-button-disabled,
|
291
|
-
.type-icon {
|
292
|
-
color: black(0.38);
|
293
|
-
}
|
294
|
-
|
295
|
-
.text-name {
|
296
|
-
&.disabled {
|
297
|
-
color: black(0.38);
|
298
|
-
cursor: default !important;
|
299
|
-
pointer-events: none;
|
300
|
-
user-select: none;
|
301
|
-
}
|
302
|
-
}
|
303
|
-
|
304
|
-
&.active,
|
305
|
-
&:hover,
|
306
|
-
&:active,
|
307
|
-
&.expand-node:hover,
|
308
|
-
&.expand-node:active {
|
309
|
-
background-color: transparent;
|
310
|
-
}
|
311
|
-
}
|
312
|
-
|
313
|
-
.node-without-checkbox{
|
314
|
-
cursor: pointer;
|
315
|
-
width: 100%;
|
316
|
-
display: flex;
|
317
|
-
justify-content: space-between;
|
318
|
-
align-items: center;
|
319
|
-
.mat-icon{
|
320
|
-
color: theme-apply($primary);
|
321
|
-
margin-right: 4px;
|
322
|
-
}
|
323
|
-
}
|
324
|
-
|
325
|
-
&>.node-content-wraper {
|
326
|
-
width: fit-content;
|
327
|
-
position: relative;
|
328
|
-
display: flex;
|
329
|
-
justify-content: center;
|
330
|
-
align-items: center;
|
331
|
-
|
332
|
-
&>.mat-progress-bar {
|
333
|
-
height: 3px;
|
334
|
-
width: 100%;
|
335
|
-
position: absolute;
|
336
|
-
bottom: 0;
|
337
|
-
left: 10px;
|
338
|
-
|
339
|
-
.mat-progress-bar-fill::after {
|
340
|
-
background: theme-apply($primary);
|
341
|
-
}
|
342
|
-
}
|
343
|
-
}
|
344
313
|
}
|
345
314
|
}
|
346
|
-
|
347
315
|
.text-name {
|
348
316
|
position: relative;
|
349
317
|
overflow: hidden;
|
@@ -377,7 +345,6 @@
|
|
377
345
|
}
|
378
346
|
|
379
347
|
.qms-view-search-result{
|
380
|
-
height: 100%;
|
381
348
|
width: 100%;
|
382
349
|
overflow: hidden;
|
383
350
|
.result {
|
@@ -556,4 +523,160 @@
|
|
556
523
|
}
|
557
524
|
}
|
558
525
|
}
|
526
|
+
|
527
|
+
.qms-spinner {
|
528
|
+
font-size: 20px;
|
529
|
+
position: relative;
|
530
|
+
display: inline-block;
|
531
|
+
width: 1em;
|
532
|
+
height: 1em;
|
533
|
+
&.center {
|
534
|
+
position: absolute;
|
535
|
+
left: 0;
|
536
|
+
right: 0;
|
537
|
+
top: 0;
|
538
|
+
bottom: 0;
|
539
|
+
margin: auto;
|
540
|
+
}
|
541
|
+
&> .qms-spinner-blade {
|
542
|
+
position: absolute;
|
543
|
+
left: 0.4629em;
|
544
|
+
bottom: 0;
|
545
|
+
width: 0.074em;
|
546
|
+
height: 0.2777em;
|
547
|
+
border-radius: 0.0555em;
|
548
|
+
background-color: transparent;
|
549
|
+
-webkit-transform-origin: center -0.2222em;
|
550
|
+
-ms-transform-origin: center -0.2222em;
|
551
|
+
transform-origin: center -0.2222em;
|
552
|
+
animation: spinner-animation 1s infinite linear;
|
553
|
+
&:nth-child(1) {
|
554
|
+
-webkit-animation-delay: 0s;
|
555
|
+
animation-delay: 0s;
|
556
|
+
-webkit-transform: rotate(0deg);
|
557
|
+
-ms-transform: rotate(0deg);
|
558
|
+
transform: rotate(0deg);
|
559
|
+
}
|
560
|
+
&:nth-child(2) {
|
561
|
+
-webkit-animation-delay: 0.083s;
|
562
|
+
animation-delay: 0.083s;
|
563
|
+
-webkit-transform: rotate(30deg);
|
564
|
+
-ms-transform: rotate(30deg);
|
565
|
+
transform: rotate(30deg);
|
566
|
+
}
|
567
|
+
&:nth-child(3) {
|
568
|
+
-webkit-animation-delay: 0.166s;
|
569
|
+
animation-delay: 0.166s;
|
570
|
+
-webkit-transform: rotate(60deg);
|
571
|
+
-ms-transform: rotate(60deg);
|
572
|
+
transform: rotate(60deg);
|
573
|
+
}
|
574
|
+
&:nth-child(4) {
|
575
|
+
-webkit-animation-delay: 0.249s;
|
576
|
+
animation-delay: 0.249s;
|
577
|
+
-webkit-transform: rotate(90deg);
|
578
|
+
-ms-transform: rotate(90deg);
|
579
|
+
transform: rotate(90deg);
|
580
|
+
}
|
581
|
+
&:nth-child(5) {
|
582
|
+
-webkit-animation-delay: 0.332s;
|
583
|
+
animation-delay: 0.332s;
|
584
|
+
-webkit-transform: rotate(120deg);
|
585
|
+
-ms-transform: rotate(120deg);
|
586
|
+
transform: rotate(120deg);
|
587
|
+
}
|
588
|
+
&:nth-child(6) {
|
589
|
+
-webkit-animation-delay: 0.415s;
|
590
|
+
animation-delay: 0.415s;
|
591
|
+
-webkit-transform: rotate(150deg);
|
592
|
+
-ms-transform: rotate(150deg);
|
593
|
+
transform: rotate(150deg);
|
594
|
+
}
|
595
|
+
&:nth-child(7) {
|
596
|
+
-webkit-animation-delay: 0.498s;
|
597
|
+
animation-delay: 0.498s;
|
598
|
+
-webkit-transform: rotate(180deg);
|
599
|
+
-ms-transform: rotate(180deg);
|
600
|
+
transform: rotate(180deg);
|
601
|
+
}
|
602
|
+
&:nth-child(8) {
|
603
|
+
-webkit-animation-delay: 0.581s;
|
604
|
+
animation-delay: 0.581s;
|
605
|
+
-webkit-transform: rotate(210deg);
|
606
|
+
-ms-transform: rotate(210deg);
|
607
|
+
transform: rotate(210deg);
|
608
|
+
}
|
609
|
+
&:nth-child(9) {
|
610
|
+
-webkit-animation-delay: 0.664s;
|
611
|
+
animation-delay: 0.664s;
|
612
|
+
-webkit-transform: rotate(240deg);
|
613
|
+
-ms-transform: rotate(240deg);
|
614
|
+
transform: rotate(240deg);
|
615
|
+
}
|
616
|
+
&:nth-child(10) {
|
617
|
+
-webkit-animation-delay: 0.747s;
|
618
|
+
animation-delay: 0.747s;
|
619
|
+
-webkit-transform: rotate(270deg);
|
620
|
+
-ms-transform: rotate(270deg);
|
621
|
+
transform: rotate(270deg);
|
622
|
+
}
|
623
|
+
&:nth-child(11) {
|
624
|
+
-webkit-animation-delay: 0.83s;
|
625
|
+
animation-delay: 0.83s;
|
626
|
+
-webkit-transform: rotate(300deg);
|
627
|
+
-ms-transform: rotate(300deg);
|
628
|
+
transform: rotate(300deg);
|
629
|
+
}
|
630
|
+
&:nth-child(12) {
|
631
|
+
-webkit-animation-delay: 0.913s;
|
632
|
+
animation-delay: 0.913s;
|
633
|
+
-webkit-transform: rotate(330deg);
|
634
|
+
-ms-transform: rotate(330deg);
|
635
|
+
transform: rotate(330deg);
|
636
|
+
}
|
637
|
+
@keyframes spinner-animation {
|
638
|
+
0% {
|
639
|
+
background-color: theme-apply($primary-light-32-opacity);
|
640
|
+
}
|
641
|
+
|
642
|
+
100% {
|
643
|
+
background-color: transparent;
|
644
|
+
}
|
645
|
+
}
|
646
|
+
}
|
647
|
+
}
|
648
|
+
// Responsive
|
649
|
+
@media screen and (max-width: 600px) {
|
650
|
+
.external-view-node {
|
651
|
+
flex-basis: 65px !important;
|
652
|
+
}
|
653
|
+
|
654
|
+
.qms-tree-node.active-external-view .mat-checkbox.qms-group-options {
|
655
|
+
width: calc(100% - 110px)!important ;
|
656
|
+
}
|
657
|
+
|
658
|
+
.header-view-tree {
|
659
|
+
grid-template-columns: 1fr 80px !important;
|
660
|
+
}
|
661
|
+
|
662
|
+
::ng-deep .cdk-virtual-scroll-content-wrapper{
|
663
|
+
right: 0 !important;
|
664
|
+
}
|
665
|
+
.header-title{
|
666
|
+
font-size: 14px !important;
|
667
|
+
}
|
668
|
+
.text-name, .node-external, .text-label, .text-label+span{
|
669
|
+
font-size: 12px;
|
670
|
+
}
|
671
|
+
.node-expand-area{
|
672
|
+
width: 30px !important;
|
673
|
+
height: 30px !important;
|
674
|
+
.qms-btn-icon{
|
675
|
+
width: 30px;
|
676
|
+
height: 30px;
|
677
|
+
line-height: 30px;
|
678
|
+
}
|
679
|
+
}
|
680
|
+
}
|
559
681
|
}
|
682
|
+
|