qms-angular 1.1.24 → 1.1.26
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 +224 -78
- 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/breadcrumb/breadcrumb.js +3 -2
- 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 +5 -2
- package/esm2015/lib/components/select-department-tree/select-department-tree.component.js +134 -57
- package/fesm2015/qms-angular.js +173 -60
- 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 +3 -0
- package/lib/components/select-department-tree/select-department-tree.component.d.ts +49 -25
- package/package.json +1 -1
- package/src/lib/components/select-department/select-department.component.scss +13 -0
- package/src/lib/components/select-department-tree/select-department-tree.component.scss +328 -38
@@ -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
|
}
|
@@ -16,8 +16,11 @@ export declare class QMSSelectDepartmentTreeConfig {
|
|
16
16
|
headerName: {
|
17
17
|
treeName: string;
|
18
18
|
externalName: string;
|
19
|
+
resultSearchName: string;
|
19
20
|
};
|
20
21
|
activeSelectAllNode: boolean;
|
21
22
|
modeView: ModeDepartmentTreeeViewEnum;
|
23
|
+
isMobile: boolean;
|
24
|
+
lazy: boolean;
|
22
25
|
constructor();
|
23
26
|
}
|
@@ -1,7 +1,8 @@
|
|
1
1
|
import { SelectionModel } from '@angular/cdk/collections';
|
2
|
+
import { Overlay } from '@angular/cdk/overlay';
|
2
3
|
import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';
|
3
4
|
import { FlatTreeControl } from '@angular/cdk/tree';
|
4
|
-
import { AfterContentInit, AfterViewInit, ChangeDetectorRef, ElementRef, EventEmitter, OnInit } from '@angular/core';
|
5
|
+
import { AfterContentInit, AfterViewInit, ChangeDetectorRef, ElementRef, EventEmitter, OnInit, ViewContainerRef } from '@angular/core';
|
5
6
|
import { FormControl } from '@angular/forms';
|
6
7
|
import { MatIconRegistry } from '@angular/material/icon';
|
7
8
|
import { PageEvent } from '@angular/material/paginator';
|
@@ -28,7 +29,10 @@ export declare class SelectDepartmentTreeComponent implements OnInit, AfterViewI
|
|
28
29
|
private eleRef;
|
29
30
|
trans: TranslateLibraryService;
|
30
31
|
private treeDepartmentGlobalService;
|
32
|
+
overlay: Overlay;
|
33
|
+
viewContainerRef: ViewContainerRef;
|
31
34
|
LANG: any;
|
35
|
+
readonly spinnerArr: any[];
|
32
36
|
arrSkeleton: any[];
|
33
37
|
set rowsSkeleton(value: number);
|
34
38
|
height: string;
|
@@ -39,51 +43,56 @@ export declare class SelectDepartmentTreeComponent implements OnInit, AfterViewI
|
|
39
43
|
get isIndeterminateCheckboxAllTree(): boolean;
|
40
44
|
onSearchEvent: EventEmitter<string>;
|
41
45
|
onPagingSearchEvent: EventEmitter<PageEvent>;
|
42
|
-
MODE_VIEW_ENUM: typeof ModeDepartmentTreeeViewEnum;
|
43
|
-
ngUnsubscribe: Subject<void>;
|
44
|
-
resultSearchSelected: QMSTreeNode[];
|
45
|
-
resultSelected: QMSTreeNode[];
|
46
|
-
get currentTreeData(): QMSTreeNode[];
|
47
|
-
getDataTree$: BehaviorSubject<QMSTreeNode[]>;
|
48
46
|
onValueChangeEvent: EventEmitter<QMSTreeNode[]>;
|
49
47
|
selectionNodeChangeEvent: EventEmitter<ISelectionNodeChange<QMSTreeNode>>;
|
50
|
-
|
48
|
+
onCheckNodeEvent: EventEmitter<QMSFlatNodeTree>;
|
49
|
+
onExpandNodeEvent: EventEmitter<QMSFlatNodeTree>;
|
50
|
+
onLoadMoreEvent: EventEmitter<void>;
|
51
|
+
cdkVirtualScrollViewport: CdkVirtualScrollViewport;
|
51
52
|
paginatorSearch: QMSPaginatorComponent;
|
53
|
+
readonly MODE_VIEW_ENUM: typeof ModeDepartmentTreeeViewEnum;
|
54
|
+
ITEM_SIZE: number;
|
55
|
+
readonly ngUnsubscribe: Subject<void>;
|
56
|
+
resultSearchSelected: QMSTreeNode[];
|
57
|
+
resultSelected: QMSTreeNode[];
|
58
|
+
readonly getDataTree$: BehaviorSubject<QMSTreeNode[]>;
|
59
|
+
readonly searchDepartment$: BehaviorSubject<QMSDepartmentPagingModel<QMSFlatNodeTree>>;
|
52
60
|
resultSearch: DepartmentSearchResultModel[];
|
61
|
+
get currentTreeData(): QMSTreeNode[];
|
53
62
|
get isSelectAllResultSearch(): boolean;
|
54
63
|
get indeterminateSearchResult(): boolean;
|
55
64
|
indexView: number;
|
56
|
-
scrollToNodeEvent$: Subject<string>;
|
65
|
+
readonly scrollToNodeEvent$: Subject<string>;
|
66
|
+
readonly getActiveNodeEvent$: Subject<string>;
|
57
67
|
activeNode: string;
|
58
|
-
|
59
|
-
PAGINATION_SIZE: typeof PaginationSize;
|
68
|
+
readonly PAGINATION_SIZE: typeof PaginationSize;
|
60
69
|
PAGE_SIZE_OPTION: number[];
|
61
|
-
nestedTreeNodeMap: Map<QMSTreeNode, QMSFlatNodeTree>;
|
62
|
-
flatTreeNodeMap: Map<QMSFlatNodeTree, QMSTreeNode>;
|
63
|
-
checkListSelection: SelectionModel<QMSFlatNodeTree>;
|
64
|
-
checkListSelectionSearch: SelectionModel<DepartmentSearchResultModel>;
|
70
|
+
readonly nestedTreeNodeMap: Map<QMSTreeNode, QMSFlatNodeTree>;
|
71
|
+
readonly flatTreeNodeMap: Map<QMSFlatNodeTree, QMSTreeNode>;
|
72
|
+
readonly checkListSelection: SelectionModel<QMSFlatNodeTree>;
|
73
|
+
readonly checkListSelectionSearch: SelectionModel<DepartmentSearchResultModel>;
|
65
74
|
treeControl: FlatTreeControl<QMSFlatNodeTree>;
|
66
75
|
treeFlattener: MatTreeFlattener<QMSTreeNode, QMSFlatNodeTree>;
|
67
76
|
dataSource: MatTreeFlatDataSource<QMSTreeNode, QMSFlatNodeTree>;
|
68
77
|
dataSourceTreeSearch: MatTreeFlatDataSource<QMSTreeNode, QMSFlatNodeTree>;
|
69
78
|
formSearchControl: FormControl;
|
70
|
-
getLoading$: BehaviorSubject<boolean>;
|
79
|
+
readonly getLoading$: BehaviorSubject<boolean>;
|
80
|
+
readonly getLoadingMore$: BehaviorSubject<boolean>;
|
81
|
+
readonly afterOnCheckNode: Subject<QMSFlatNodeTree>;
|
71
82
|
textResultSearch: string;
|
72
83
|
itemIconType: typeof ItemIconType;
|
73
|
-
|
74
|
-
private getLevel;
|
75
|
-
private _getChild;
|
76
|
-
private isExpandable;
|
84
|
+
private readonly _transformer;
|
85
|
+
private readonly getLevel;
|
86
|
+
private readonly _getChild;
|
87
|
+
private readonly isExpandable;
|
77
88
|
hasChild: (_: number, node: QMSFlatNodeTree) => boolean;
|
78
|
-
|
79
|
-
cdkVirtualScrollViewport: CdkVirtualScrollViewport;
|
80
|
-
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);
|
81
90
|
ngAfterContentInit(): void;
|
82
91
|
ngAfterViewInit(): void;
|
83
92
|
ngOnInit(): void;
|
84
93
|
ngOnDestroy(): void;
|
85
94
|
private _initTreeData;
|
86
|
-
|
95
|
+
_convertToTreeData(data: QMSTreeNode[]): QMSTreeNode[];
|
87
96
|
private _initCheckListSelected;
|
88
97
|
private _handleItemSelectionChanged;
|
89
98
|
private _onSelectionNodeChangeEvent;
|
@@ -99,7 +108,13 @@ export declare class SelectDepartmentTreeComponent implements OnInit, AfterViewI
|
|
99
108
|
onRemoveNode(nodeId: string): void;
|
100
109
|
isIndeterminate(node: QMSFlatNodeTree): boolean;
|
101
110
|
isCheckAll(node: QMSFlatNodeTree): boolean;
|
102
|
-
|
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>;
|
103
118
|
private resetNode;
|
104
119
|
isSelectedNode(node: QMSFlatNodeTree): boolean;
|
105
120
|
getChildrenSelected(node: QMSFlatNodeTree): QMSFlatNodeTree[];
|
@@ -128,5 +143,14 @@ export declare class SelectDepartmentTreeComponent implements OnInit, AfterViewI
|
|
128
143
|
getHeightStyleRefNode(nodeId: string): string;
|
129
144
|
private getSelectedNodeStorage;
|
130
145
|
private setSelectedNodeStorage;
|
146
|
+
setDefaultPaginatorSize(options: number[]): void;
|
131
147
|
trackBy(index: number, item: QMSFlatNodeTree): QMSFlatNodeTree;
|
148
|
+
/**
|
149
|
+
* This function use for lazy load children of node
|
150
|
+
* @param node node update. if node is null data auto insert as roots
|
151
|
+
* @param data list children to update node.
|
152
|
+
* @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.
|
153
|
+
*/
|
154
|
+
updateChildOfNode(node: QMSFlatNodeTree, data?: QMSTreeNode[], mode?: 'insert' | 'update'): void;
|
155
|
+
addRootTree(data?: QMSTreeNode[]): void;
|
132
156
|
}
|
package/package.json
CHANGED
@@ -208,3 +208,16 @@
|
|
208
208
|
color: unset !important;
|
209
209
|
}
|
210
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
|
}
|
@@ -103,6 +104,9 @@
|
|
103
104
|
grid-template-columns: 1fr 200px;
|
104
105
|
column-gap: 2px;
|
105
106
|
padding: 4px 12px 4px 0;
|
107
|
+
.header-view:nth-child(1){
|
108
|
+
padding-left: 12px;
|
109
|
+
}
|
106
110
|
}
|
107
111
|
|
108
112
|
.tree-department-wrapper {
|
@@ -160,6 +164,59 @@
|
|
160
164
|
}
|
161
165
|
}
|
162
166
|
}
|
167
|
+
|
168
|
+
.mask-overlay{
|
169
|
+
z-index: 1000;
|
170
|
+
background-color: rgba(0,0,0,0.1);
|
171
|
+
position: absolute;
|
172
|
+
top: 0;
|
173
|
+
left: 0;
|
174
|
+
width: 100%;
|
175
|
+
height: 100%;
|
176
|
+
border-radius: 4px;
|
177
|
+
overflow: hidden;
|
178
|
+
display: grid;
|
179
|
+
place-items: center;
|
180
|
+
&> .qms-load-more-row {
|
181
|
+
// height: 0;
|
182
|
+
line-height: 35px;
|
183
|
+
text-align: center;
|
184
|
+
display: flex;
|
185
|
+
justify-content: center;
|
186
|
+
align-items: center;
|
187
|
+
gap: 4px;
|
188
|
+
transform: translateY(-15px);
|
189
|
+
span {
|
190
|
+
display: inline-block;
|
191
|
+
width: 10px;
|
192
|
+
height: 10px;
|
193
|
+
background: theme-apply($primary-light-12-opacity);
|
194
|
+
border-radius: 50px;
|
195
|
+
animation: up-down-animate 0.5s ease-in-out infinite alternate;
|
196
|
+
&:nth-child(2) {
|
197
|
+
background: theme-apply($primary-light-24-opacity);
|
198
|
+
animation-delay: 0.16s;
|
199
|
+
}
|
200
|
+
&:nth-child(3) {
|
201
|
+
background: theme-apply($primary-light-32-opacity);
|
202
|
+
animation-delay: 0.32s;
|
203
|
+
}
|
204
|
+
&:nth-child(4) {
|
205
|
+
background: theme-apply($primary-light-38-opacity);
|
206
|
+
animation-delay: 0.48s;
|
207
|
+
}
|
208
|
+
}
|
209
|
+
@keyframes up-down-animate {
|
210
|
+
0% {
|
211
|
+
transform: translateY(-8px);
|
212
|
+
}
|
213
|
+
|
214
|
+
100% {
|
215
|
+
transform: translateY(8px);
|
216
|
+
}
|
217
|
+
}
|
218
|
+
}
|
219
|
+
}
|
163
220
|
//Custom tree
|
164
221
|
.select-department-tree{
|
165
222
|
& > .cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper{
|
@@ -175,12 +232,16 @@
|
|
175
232
|
&> .node-expand-area{
|
176
233
|
width: 48px;
|
177
234
|
height: 48px;
|
235
|
+
position: relative;
|
178
236
|
}
|
179
237
|
&.active-external-view{
|
180
238
|
.mat-checkbox.qms-group-options{
|
181
|
-
width: calc(100% - 250px)
|
239
|
+
width: calc(100% - 250px) ;
|
182
240
|
}
|
183
241
|
}
|
242
|
+
&.node-loading{
|
243
|
+
background: theme-apply($primary-light-6-opacity);
|
244
|
+
}
|
184
245
|
&> .external-view-node{
|
185
246
|
flex-basis: 200px;
|
186
247
|
overflow: hidden;
|
@@ -270,7 +331,10 @@
|
|
270
331
|
}
|
271
332
|
|
272
333
|
.ml5 {
|
273
|
-
margin-left:
|
334
|
+
margin-left: 15px !important;
|
335
|
+
}
|
336
|
+
.pl-10{
|
337
|
+
padding-left: 10px;
|
274
338
|
}
|
275
339
|
|
276
340
|
::ng-deep .mat-checkbox.qms-group-options.flex-direction-row {
|
@@ -289,48 +353,88 @@
|
|
289
353
|
.qms-view-search-result{
|
290
354
|
width: 100%;
|
291
355
|
overflow: hidden;
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
display: flex;
|
303
|
-
justify-content: center;
|
304
|
-
align-items: center;
|
356
|
+
&__header{
|
357
|
+
position: relative;
|
358
|
+
&::after{
|
359
|
+
position: absolute;
|
360
|
+
content: "";
|
361
|
+
bottom: 0;
|
362
|
+
left: 0;
|
363
|
+
width: 100%;
|
364
|
+
height: 1px;
|
365
|
+
background-color: black(.1);
|
305
366
|
}
|
306
|
-
|
307
|
-
|
308
|
-
display:
|
309
|
-
|
310
|
-
|
367
|
+
.header-title{
|
368
|
+
padding: 8px 0;
|
369
|
+
display: inline-block;
|
370
|
+
&:nth-child(1){
|
371
|
+
padding-left: 12px;
|
372
|
+
}
|
373
|
+
&:nth-child(2){
|
374
|
+
flex-basis: 200px;
|
375
|
+
}
|
311
376
|
}
|
312
377
|
}
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
align-items: center;
|
318
|
-
cursor: pointer;
|
319
|
-
transition: background .3s ease;
|
320
|
-
&:not(:nth-child(1)){
|
321
|
-
margin-top: 4px !important;
|
378
|
+
&__wrapper{
|
379
|
+
height: calc(100% - 50px);
|
380
|
+
&.active-external{
|
381
|
+
height: calc(100% - 90px) !important;
|
322
382
|
}
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
383
|
+
width: 100%;
|
384
|
+
.result {
|
385
|
+
max-height: calc(100% - 44px);
|
386
|
+
overflow-y: auto;
|
387
|
+
margin-bottom: 4px;
|
388
|
+
padding-right: 4px;
|
389
|
+
&.active-paging{
|
390
|
+
max-height: calc(100% - 40px);
|
391
|
+
}
|
392
|
+
&.no-result{
|
393
|
+
height: 100%;
|
394
|
+
display: flex;
|
395
|
+
justify-content: center;
|
396
|
+
align-items: center;
|
397
|
+
}
|
398
|
+
&.no-result{
|
399
|
+
height: 100%;
|
400
|
+
display: flex;
|
401
|
+
justify-content: center;
|
402
|
+
align-items: center;
|
403
|
+
}
|
328
404
|
}
|
329
|
-
.
|
330
|
-
|
405
|
+
.result-item{
|
406
|
+
border-radius: 4px;
|
407
|
+
display: grid;
|
408
|
+
grid-template-columns: 45px 1fr;
|
409
|
+
align-items: center;
|
410
|
+
cursor: pointer;
|
411
|
+
transition: background .3s ease;
|
412
|
+
&:not(:nth-child(1)){
|
413
|
+
margin-top: 4px !important;
|
414
|
+
}
|
415
|
+
&:hover{
|
416
|
+
background: linear-gradient(0deg, rgba(1, 99, 178, 0.12), rgba(1, 99, 178, 0.12)), #FFFFFF;
|
417
|
+
}
|
418
|
+
&.active{
|
419
|
+
background: linear-gradient(0deg, rgba(1, 99, 178, 0.12), rgba(1, 99, 178, 0.12)), #FFFFFF;
|
420
|
+
}
|
421
|
+
&__content{
|
422
|
+
display: flex;
|
423
|
+
align-items: center;
|
424
|
+
.item-result-content-wraper{
|
425
|
+
padding: 5px 15px 5px 15px;
|
426
|
+
width: 100%;
|
427
|
+
}
|
428
|
+
.external-name{
|
429
|
+
flex-basis: 200px;
|
430
|
+
span{
|
431
|
+
width: 200px;
|
432
|
+
display: inline-block;
|
433
|
+
}
|
434
|
+
}
|
435
|
+
}
|
331
436
|
}
|
332
437
|
}
|
333
|
-
|
334
438
|
::ng-deep .mat-checkbox.qms-group-options{
|
335
439
|
display: flex;
|
336
440
|
height: 100%;
|
@@ -409,6 +513,7 @@
|
|
409
513
|
color: rgba(0, 0, 0, 0.6);
|
410
514
|
font-weight: 400;
|
411
515
|
font-size: 14px;
|
516
|
+
max-width: 250px;
|
412
517
|
}
|
413
518
|
|
414
519
|
::ng-deep .mat-checkbox.checkbox-all .mat-checkbox-label{
|
@@ -465,4 +570,189 @@
|
|
465
570
|
}
|
466
571
|
}
|
467
572
|
}
|
573
|
+
|
574
|
+
.qms-spinner {
|
575
|
+
font-size: 20px;
|
576
|
+
position: relative;
|
577
|
+
display: inline-block;
|
578
|
+
width: 1em;
|
579
|
+
height: 1em;
|
580
|
+
&.center {
|
581
|
+
position: absolute;
|
582
|
+
left: 0;
|
583
|
+
right: 0;
|
584
|
+
top: 0;
|
585
|
+
bottom: 0;
|
586
|
+
margin: auto;
|
587
|
+
}
|
588
|
+
&> .qms-spinner-blade {
|
589
|
+
position: absolute;
|
590
|
+
left: 0.4629em;
|
591
|
+
bottom: 0;
|
592
|
+
width: 0.074em;
|
593
|
+
height: 0.2777em;
|
594
|
+
border-radius: 0.0555em;
|
595
|
+
background-color: transparent;
|
596
|
+
-webkit-transform-origin: center -0.2222em;
|
597
|
+
-ms-transform-origin: center -0.2222em;
|
598
|
+
transform-origin: center -0.2222em;
|
599
|
+
animation: spinner-animation 1s infinite linear;
|
600
|
+
&:nth-child(1) {
|
601
|
+
-webkit-animation-delay: 0s;
|
602
|
+
animation-delay: 0s;
|
603
|
+
-webkit-transform: rotate(0deg);
|
604
|
+
-ms-transform: rotate(0deg);
|
605
|
+
transform: rotate(0deg);
|
606
|
+
}
|
607
|
+
&:nth-child(2) {
|
608
|
+
-webkit-animation-delay: 0.083s;
|
609
|
+
animation-delay: 0.083s;
|
610
|
+
-webkit-transform: rotate(30deg);
|
611
|
+
-ms-transform: rotate(30deg);
|
612
|
+
transform: rotate(30deg);
|
613
|
+
}
|
614
|
+
&:nth-child(3) {
|
615
|
+
-webkit-animation-delay: 0.166s;
|
616
|
+
animation-delay: 0.166s;
|
617
|
+
-webkit-transform: rotate(60deg);
|
618
|
+
-ms-transform: rotate(60deg);
|
619
|
+
transform: rotate(60deg);
|
620
|
+
}
|
621
|
+
&:nth-child(4) {
|
622
|
+
-webkit-animation-delay: 0.249s;
|
623
|
+
animation-delay: 0.249s;
|
624
|
+
-webkit-transform: rotate(90deg);
|
625
|
+
-ms-transform: rotate(90deg);
|
626
|
+
transform: rotate(90deg);
|
627
|
+
}
|
628
|
+
&:nth-child(5) {
|
629
|
+
-webkit-animation-delay: 0.332s;
|
630
|
+
animation-delay: 0.332s;
|
631
|
+
-webkit-transform: rotate(120deg);
|
632
|
+
-ms-transform: rotate(120deg);
|
633
|
+
transform: rotate(120deg);
|
634
|
+
}
|
635
|
+
&:nth-child(6) {
|
636
|
+
-webkit-animation-delay: 0.415s;
|
637
|
+
animation-delay: 0.415s;
|
638
|
+
-webkit-transform: rotate(150deg);
|
639
|
+
-ms-transform: rotate(150deg);
|
640
|
+
transform: rotate(150deg);
|
641
|
+
}
|
642
|
+
&:nth-child(7) {
|
643
|
+
-webkit-animation-delay: 0.498s;
|
644
|
+
animation-delay: 0.498s;
|
645
|
+
-webkit-transform: rotate(180deg);
|
646
|
+
-ms-transform: rotate(180deg);
|
647
|
+
transform: rotate(180deg);
|
648
|
+
}
|
649
|
+
&:nth-child(8) {
|
650
|
+
-webkit-animation-delay: 0.581s;
|
651
|
+
animation-delay: 0.581s;
|
652
|
+
-webkit-transform: rotate(210deg);
|
653
|
+
-ms-transform: rotate(210deg);
|
654
|
+
transform: rotate(210deg);
|
655
|
+
}
|
656
|
+
&:nth-child(9) {
|
657
|
+
-webkit-animation-delay: 0.664s;
|
658
|
+
animation-delay: 0.664s;
|
659
|
+
-webkit-transform: rotate(240deg);
|
660
|
+
-ms-transform: rotate(240deg);
|
661
|
+
transform: rotate(240deg);
|
662
|
+
}
|
663
|
+
&:nth-child(10) {
|
664
|
+
-webkit-animation-delay: 0.747s;
|
665
|
+
animation-delay: 0.747s;
|
666
|
+
-webkit-transform: rotate(270deg);
|
667
|
+
-ms-transform: rotate(270deg);
|
668
|
+
transform: rotate(270deg);
|
669
|
+
}
|
670
|
+
&:nth-child(11) {
|
671
|
+
-webkit-animation-delay: 0.83s;
|
672
|
+
animation-delay: 0.83s;
|
673
|
+
-webkit-transform: rotate(300deg);
|
674
|
+
-ms-transform: rotate(300deg);
|
675
|
+
transform: rotate(300deg);
|
676
|
+
}
|
677
|
+
&:nth-child(12) {
|
678
|
+
-webkit-animation-delay: 0.913s;
|
679
|
+
animation-delay: 0.913s;
|
680
|
+
-webkit-transform: rotate(330deg);
|
681
|
+
-ms-transform: rotate(330deg);
|
682
|
+
transform: rotate(330deg);
|
683
|
+
}
|
684
|
+
@keyframes spinner-animation {
|
685
|
+
0% {
|
686
|
+
background-color: theme-apply($primary-light-32-opacity);
|
687
|
+
}
|
688
|
+
|
689
|
+
100% {
|
690
|
+
background-color: transparent;
|
691
|
+
}
|
692
|
+
}
|
693
|
+
}
|
694
|
+
}
|
695
|
+
// Responsive
|
696
|
+
@media screen and (max-width: 600px) {
|
697
|
+
.external-view-node {
|
698
|
+
flex-basis: 65px !important;
|
699
|
+
}
|
700
|
+
|
701
|
+
.qms-tree-node.active-external-view .mat-checkbox.qms-group-options {
|
702
|
+
width: calc(100% - 110px)!important ;
|
703
|
+
}
|
704
|
+
|
705
|
+
.header-view-tree {
|
706
|
+
grid-template-columns: 1fr 80px !important;
|
707
|
+
}
|
708
|
+
|
709
|
+
::ng-deep .cdk-virtual-scroll-content-wrapper{
|
710
|
+
right: 0 !important;
|
711
|
+
}
|
712
|
+
.header-title{
|
713
|
+
font-size: 14px !important;
|
714
|
+
}
|
715
|
+
.text-name, .node-external, .text-label, .text-label+span{
|
716
|
+
font-size: 12px;
|
717
|
+
}
|
718
|
+
.node-expand-area{
|
719
|
+
width: 30px !important;
|
720
|
+
height: 30px !important;
|
721
|
+
.qms-btn-icon{
|
722
|
+
width: 30px;
|
723
|
+
height: 30px;
|
724
|
+
line-height: 30px;
|
725
|
+
}
|
726
|
+
}
|
727
|
+
.fs-base{
|
728
|
+
font-size: 12px !important;
|
729
|
+
}
|
730
|
+
.qms-select-department-tree-container .breadcrumb-container{
|
731
|
+
flex-wrap: nowrap !important;
|
732
|
+
}
|
733
|
+
::ng-deep .qms-breadcrumb-item-text{
|
734
|
+
font-size: 12px !important;
|
735
|
+
max-width: 175px !important;
|
736
|
+
}
|
737
|
+
|
738
|
+
::ng-deep .qms-paginator .mat-paginator-container .qms-total-result{
|
739
|
+
display: none !important;
|
740
|
+
}
|
741
|
+
|
742
|
+
::ng-deep .qms-paginator .size-small .mat-paginator-container{
|
743
|
+
justify-content: center !important;
|
744
|
+
}
|
745
|
+
|
746
|
+
.qms-view-search-result__header > .header-title:nth-child(2){
|
747
|
+
flex-basis: 120px !important;
|
748
|
+
}
|
749
|
+
|
750
|
+
.result-item__content .external-name{
|
751
|
+
flex-basis: 75px !important;
|
752
|
+
span{
|
753
|
+
width: 75px !important;
|
754
|
+
}
|
755
|
+
}
|
756
|
+
}
|
468
757
|
}
|
758
|
+
|