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.
@@ -13,4 +13,5 @@ export declare class QMSFlatNodeTree {
13
13
  itemMatIcon?: string;
14
14
  isGroup?: boolean;
15
15
  groupId?: string;
16
+ isLoading?: boolean;
16
17
  }
@@ -14,6 +14,7 @@ export interface QMSTreeNode {
14
14
  tooltip?: string;
15
15
  isGroup?: boolean;
16
16
  groupId?: string;
17
+ expandable?: boolean;
17
18
  }
18
19
  export declare class QMSTreeModel implements QMSTreeNode {
19
20
  id: string;
@@ -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
- searchDepartment$: BehaviorSubject<QMSDepartmentPagingModel<QMSFlatNodeTree>>;
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
- getActiveNodeEvent$: Subject<string>;
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
- _transformer: (node: QMSTreeNode, level: number) => QMSFlatNodeTree;
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
- originalDataSource: QMSTreeNode[];
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
- private _convertToTreeData;
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
- private _handleCheckNode;
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "qms-angular",
3
- "version": "1.1.24",
3
+ "version": "1.1.26",
4
4
  "dependencies": {
5
5
  "tslib": "^2.0.0"
6
6
  },
@@ -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) !important;
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: 10px !important;
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
- .result {
293
- max-height: calc(100% - 44px);
294
- overflow-y: auto;
295
- margin-bottom: 4px;
296
- padding-right: 4px;
297
- &.active-paging{
298
- max-height: calc(100% - 95px);
299
- }
300
- &.no-result{
301
- height: 100%;
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
- &.no-result{
307
- height: 100%;
308
- display: flex;
309
- justify-content: center;
310
- align-items: center;
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
- .result-item{
314
- border-radius: 4px;
315
- display: grid;
316
- grid-template-columns: 45px 1fr;
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
- &:hover{
324
- background: linear-gradient(0deg, rgba(1, 99, 178, 0.12), rgba(1, 99, 178, 0.12)), #FFFFFF;
325
- }
326
- &.active{
327
- background: linear-gradient(0deg, rgba(1, 99, 178, 0.12), rgba(1, 99, 178, 0.12)), #FFFFFF;
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
- .item-result-content-wraper{
330
- padding: 5px 15px 5px 15px;
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
+