qms-angular 1.1.34 → 1.1.36

Sign up to get free protection for your applications and to get access to all the features.
Files changed (78) hide show
  1. package/bundles/qms-angular.umd.js +373 -194
  2. package/bundles/qms-angular.umd.js.map +1 -1
  3. package/esm2015/lib/common/enum/document-field-status.js +7 -0
  4. package/esm2015/lib/common/models/qms-flat-node.model.js +1 -1
  5. package/esm2015/lib/common/models/qms-tree-node.model.js +1 -1
  6. package/esm2015/lib/components/qms-stepper/models/qms-stepper.model.js +4 -3
  7. package/esm2015/lib/components/qms-stepper/qms-stepper.component.js +5 -3
  8. package/esm2015/lib/components/related/common/video.const.js +4 -0
  9. package/esm2015/lib/components/related/model/popup-data.model.js +1 -1
  10. package/esm2015/lib/components/related/model/risk-danger.model.js +2 -1
  11. package/esm2015/lib/components/related/popup/related-popup.component.js +30 -12
  12. package/esm2015/lib/components/related/risk/list/list.component.js +4 -3
  13. package/esm2015/lib/components/select-department/model/select-department-popup-data.model.js +1 -1
  14. package/esm2015/lib/components/select-department/select-department.component.js +29 -7
  15. package/esm2015/lib/components/select-department-tree/model/select-department-tree.config.js +5 -1
  16. package/esm2015/lib/components/select-department-tree/select-department-tree.component.js +45 -8
  17. package/esm2015/lib/components/select-process-document/select-process-document.component.js +1 -1
  18. package/esm2015/lib/components/tree/model/tree-node.model.js +1 -1
  19. package/esm2015/lib/components/tree/tree.component.js +75 -42
  20. package/esm2015/lib/components/tree/tree.function.js +2 -1
  21. package/esm2015/lib/model/en.js +5 -2
  22. package/esm2015/lib/model/no.js +5 -2
  23. package/esm2015/lib/qms-ckeditor-components/common/classes/qmsUploadAdapter.js +1 -5
  24. package/esm2015/lib/qms-ckeditor-components/common/constants/iconSvg.constants.js +2 -1
  25. package/esm2015/lib/qms-ckeditor-components/common/models/qms-ckeditor-data.model.js +1 -1
  26. package/esm2015/lib/qms-ckeditor-components/components/qms-ckeditor-bpmn/qms-ckeditor-bpmn.component.js +3 -3
  27. package/esm2015/lib/qms-ckeditor-components/components/qms-ckeditor-link/qms-ckeditor-link.component.js +9 -2
  28. package/esm2015/lib/qms-ckeditor-components/components/qms-ckeditor-link-simple/qms-ckeditor-link-simple.component.js +2 -1
  29. package/esm2015/lib/qms-ckeditor-components/components/qms-ckeditor-load-template/qms-ckeditor-load-template.component.js +14 -9
  30. package/esm2015/lib/qms-ckeditor-components/components/qms-ckeditor-relation/qmsckeditor-related.component.js +17 -47
  31. package/esm2015/lib/qms-ckeditor-components/components/qms-ckeditor-template/qms-ckeditor-template.component.js +68 -28
  32. package/esm2015/lib/qms-ckeditor-components/models/qms-ckeditor-template.model.js +3 -2
  33. package/esm2015/lib/qms-ckeditor-components/qms-ckeditor.component.js +10 -8
  34. package/esm2015/lib/qms-ckeditor-components/qms-ckeditor.module.js +3 -1
  35. package/esm2015/lib/qms-ckeditor-components/services/qms-ckeditor-upload.service.js +5 -2
  36. package/esm2015/lib/qms-ckeditor-components/services/qms-ckedtior-template.service.js +8 -5
  37. package/fesm2015/qms-angular.js +336 -181
  38. package/fesm2015/qms-angular.js.map +1 -1
  39. package/lib/common/enum/document-field-status.d.ts +5 -0
  40. package/lib/common/models/qms-flat-node.model.d.ts +3 -0
  41. package/lib/common/models/qms-tree-node.model.d.ts +3 -0
  42. package/lib/components/qms-stepper/models/qms-stepper.model.d.ts +3 -2
  43. package/lib/components/qms-stepper/qms-stepper.component.d.ts +2 -0
  44. package/lib/components/related/common/video.const.d.ts +3 -0
  45. package/lib/components/related/model/popup-data.model.d.ts +2 -0
  46. package/lib/components/related/model/risk-danger.model.d.ts +1 -0
  47. package/lib/components/related/popup/related-popup.component.d.ts +5 -2
  48. package/lib/components/related/risk/list/list.component.d.ts +1 -0
  49. package/lib/components/select-department/model/select-department-popup-data.model.d.ts +2 -0
  50. package/lib/components/select-department/select-department.component.d.ts +9 -1
  51. package/lib/components/select-department-tree/model/select-department-tree.config.d.ts +4 -0
  52. package/lib/components/select-department-tree/select-department-tree.component.d.ts +7 -1
  53. package/lib/components/tree/model/tree-node.model.d.ts +1 -0
  54. package/lib/components/tree/tree.component.d.ts +2 -1
  55. package/lib/model/en.d.ts +3 -0
  56. package/lib/model/no.d.ts +3 -0
  57. package/lib/qms-ckeditor-components/common/classes/qmsUploadAdapter.d.ts +0 -1
  58. package/lib/qms-ckeditor-components/common/constants/iconSvg.constants.d.ts +1 -0
  59. package/lib/qms-ckeditor-components/common/models/qms-ckeditor-data.model.d.ts +2 -0
  60. package/lib/qms-ckeditor-components/components/qms-ckeditor-link/qms-ckeditor-link.component.d.ts +1 -0
  61. package/lib/qms-ckeditor-components/components/qms-ckeditor-load-template/qms-ckeditor-load-template.component.d.ts +4 -2
  62. package/lib/qms-ckeditor-components/components/qms-ckeditor-relation/qmsckeditor-related.component.d.ts +1 -1
  63. package/lib/qms-ckeditor-components/components/qms-ckeditor-template/qms-ckeditor-template.component.d.ts +17 -3
  64. package/lib/qms-ckeditor-components/models/qms-ckeditor-template.model.d.ts +3 -1
  65. package/lib/qms-ckeditor-components/services/qms-ckeditor-upload.service.d.ts +1 -1
  66. package/lib/qms-ckeditor-components/services/qms-ckedtior-template.service.d.ts +2 -1
  67. package/package.json +1 -1
  68. package/qms-angular.metadata.json +1 -1
  69. package/src/assets/qms-ckeditor-plugin/build/ckeditor.js +1 -1
  70. package/src/assets/qms-ckeditor-plugin/build/ckeditor.js.map +1 -1
  71. package/src/assets/qms-ckeditor-plugin/src/plugins/link/linkcommand.js +4 -0
  72. package/src/assets/qms-ckeditor-plugin/src/plugins/link/linkdialogcommand.js +66 -14
  73. package/src/assets/qms-ckeditor-plugin/src/plugins/link/linkui.js +1 -1
  74. package/src/lib/components/qms-stepper/qms-stepper.component.scss +4 -0
  75. package/src/lib/components/select-process-document/select-process-document.component.scss +3 -0
  76. package/src/lib/qms-ckeditor-components/components/qms-ckeditor-bpmn/qms-ckeditor-bpmn.component.scss +26 -0
  77. package/src/lib/qms-ckeditor-components/components/qms-ckeditor-load-template/qms-ckeditor-load-template.component.scss +5 -0
  78. package/src/lib/qms-ckeditor-components/components/qms-ckeditor-template/qms-ckeditor-template.component.scss +21 -0
@@ -139,6 +139,7 @@ const en = {
139
139
  "SEARCH_WITH_NAME": "Search first and last name",
140
140
  "RESULT_SEARCH_FOR": "Results search for ",
141
141
  "TOOLTIP_INCLUDE_SUB_DEPARTMENT": "{0} - include {1} sub-departments",
142
+ "TOOLTIP_INCLUDE_SUB_ITEM": "{0} - include {1} sub-items",
142
143
  "NO_RESULT": "No Result",
143
144
  "ITEM_NOT_MATCH_TO_TREE": "This item not match the tree",
144
145
  "ERROR": {
@@ -235,7 +236,9 @@ const en = {
235
236
  "CHARACTERS": "Characters",
236
237
  "SELECT_VIDEO_FROM_ARCHIVE": "Select video from the archive",
237
238
  "SELECT_VIDEO_IMAGE": "Select video image",
238
- "DOCUMENT_HEADER": "Document information"
239
+ "DOCUMENT_HEADER": "Document information",
240
+ "ADD_IMAGE": "Add image",
241
+ "IMAGE_INFO": "Image Info"
239
242
  },
240
243
  "ABOUT": {
241
244
  "ABOUT_CKEDITOR": "About CKEditor",
@@ -529,6 +532,7 @@ const no = {
529
532
  "SEARCH_WITH_NAME": "Søk for- og etternavn",
530
533
  "RESULT_SEARCH_FOR": "Resultater søk etter ",
531
534
  "TOOLTIP_INCLUDE_SUB_DEPARTMENT": "{0} – inkluderer {1} barn",
535
+ "TOOLTIP_INCLUDE_SUB_ITEM": "{0} - inkluderer {1} underelementer",
532
536
  "NO_RESULT": "Inget resultat",
533
537
  "ITEM_NOT_MATCH_TO_TREE": "Dette elementet samsvarer ikke med treet",
534
538
  "ERROR": {
@@ -625,7 +629,9 @@ const no = {
625
629
  "CHARACTERS": "Tegn",
626
630
  "SELECT_VIDEO_FROM_ARCHIVE": "Velg video fra arkivet",
627
631
  "SELECT_VIDEO_IMAGE": "Velg videobilde",
628
- "DOCUMENT_HEADER": "Dokumentinformasjon"
632
+ "DOCUMENT_HEADER": "Dokumentinformasjon",
633
+ "ADD_IMAGE": "Legg til et bilde",
634
+ "IMAGE_INFO": "Bilde Info"
629
635
  },
630
636
  "ABOUT": {
631
637
  "ABOUT_CKEDITOR": "Om CKEditor",
@@ -5025,6 +5031,9 @@ RelatedConst$1.IS_DISPLAY_SEARCH_RESULT = 'IS_DISPLAY_SEARCH_RESULT';
5025
5031
  RelatedConst$1.HIDE_SEARCH_RESULT = 'HIDE_SEARCH_RESULT';
5026
5032
  RelatedConst$1.SHOW_SEARCH_RESULT = 'SHOW_SEARCH_RESULT';
5027
5033
 
5034
+ class TreeFlatNode {
5035
+ }
5036
+
5028
5037
  class TreeNode$1 {
5029
5038
  }
5030
5039
 
@@ -5040,6 +5049,7 @@ function buildArrayTree$2(obj, level) {
5040
5049
  node.parentId = keyObj["parentId"];
5041
5050
  node.levelType = keyObj["levelType"];
5042
5051
  node.markedGetChildren = keyObj["markedGetChildren"];
5052
+ node.disabled = keyObj["disabled"];
5043
5053
  if (value != null) {
5044
5054
  if (typeof value === 'object') {
5045
5055
  node.children = this.buildArrayTree(value, level + 1);
@@ -5123,9 +5133,6 @@ const TreeFunctions$1 = {
5123
5133
  findChild: findChild$2
5124
5134
  };
5125
5135
 
5126
- class TreeFlatNode {
5127
- }
5128
-
5129
5136
  class TreeComponent {
5130
5137
  constructor(cdRef, domSanitizer, iconRegistry, appIconService) {
5131
5138
  this.cdRef = cdRef;
@@ -5199,7 +5206,7 @@ class TreeComponent {
5199
5206
  id: node.id,
5200
5207
  hasChild: checkHasChild,
5201
5208
  parentId: node.parentId,
5202
- disabled: false,
5209
+ disabled: node.disabled,
5203
5210
  levelType: node.levelType,
5204
5211
  markedGetChildren: node.markedGetChildren || false
5205
5212
  };
@@ -5231,7 +5238,7 @@ class TreeComponent {
5231
5238
  this.initTreeData();
5232
5239
  }
5233
5240
  if (changes.selectedData &&
5234
- (changes.selectedData.currentValue.length > 0 ||
5241
+ (changes.selectedData.currentValue.length &&
5235
5242
  JSON.stringify(changes.selectedData.currentValue) !==
5236
5243
  JSON.stringify(changes.selectedData.previousValue))) {
5237
5244
  if (changes.selectedData.currentValue && changes.selectedData.currentValue[0] !== null) {
@@ -5376,44 +5383,76 @@ class TreeComponent {
5376
5383
  checkDisabledList() {
5377
5384
  var _a, _b;
5378
5385
  // Disable List
5379
- for (let i = 0; i < this.treeControl.dataNodes.length; i++) {
5380
- this.treeControl.dataNodes[i].disabled = false;
5381
- }
5382
- if (this.disabledList.length && this.treeConfig.selectOne) {
5383
- const currNode = this.disabledList[this.disabledList.length - 1];
5384
- const idxParent = this.disabledList.length >= 2 ? this.disabledList.length - 2 : '';
5385
- const parentNode = idxParent !== '' ? this.disabledList[idxParent] : '';
5386
- // const index = this.treeControl.dataNodes.findIndex(node => node.id?.toLowerCase() === currNode?.toLowerCase()
5387
- // && (parentNode?.toLowerCase() === node.parentId?.toLowerCase()));
5388
- // if (index >= 0) {
5389
- // this.treeControl.dataNodes[index].disabled = true;
5390
- // }
5391
- // get all children nodes on same level
5392
- let listChildNodeSameLevel = this.findChildNode(currNode.toLowerCase(), this.dataSource.data);
5393
- // get all children in all level
5394
- this.listChildNode = [];
5395
- this.getChild(listChildNodeSameLevel);
5396
- this.listChildNode.push(listChildNodeSameLevel);
5397
- for (let i = 0; i < this.treeControl.dataNodes.length; i++) {
5398
- if ((currNode === null || currNode === void 0 ? void 0 : currNode.toLowerCase()) === ((_a = this.treeControl.dataNodes[i].id) === null || _a === void 0 ? void 0 : _a.toLowerCase())
5399
- && ((parentNode === null || parentNode === void 0 ? void 0 : parentNode.toLowerCase()) === ((_b = this.treeControl.dataNodes[i].parentId) === null || _b === void 0 ? void 0 : _b.toLowerCase()))) {
5400
- this.treeControl.dataNodes[i].disabled = true;
5401
- this.selectNodeEvent.emit(this.treeControl.dataNodes[i]);
5386
+ // for (let i = 0; i < this.treeControl.dataNodes.length; i++) {
5387
+ // this.treeControl.dataNodes[i].disabled = false;
5388
+ // }
5389
+ if (this.disabledList.length) {
5390
+ if (this.treeConfig.selectOne) {
5391
+ const currNode = this.disabledList[this.disabledList.length - 1];
5392
+ const idxParent = this.disabledList.length >= 2 ? this.disabledList.length - 2 : '';
5393
+ const parentNode = idxParent !== '' ? this.disabledList[idxParent] : '';
5394
+ // const index = this.treeControl.dataNodes.findIndex(node => node.id?.toLowerCase() === currNode?.toLowerCase()
5395
+ // && (parentNode?.toLowerCase() === node.parentId?.toLowerCase()));
5396
+ // if (index >= 0) {
5397
+ // this.treeControl.dataNodes[index].disabled = true;
5398
+ // }
5399
+ // get all children nodes on same level
5400
+ let listChildNodeSameLevel = this.findChildNode(currNode.toLowerCase(), this.dataSource.data);
5401
+ // get all children in all level
5402
+ this.listChildNode = [];
5403
+ this.getChild(listChildNodeSameLevel);
5404
+ this.listChildNode.push(listChildNodeSameLevel);
5405
+ for (let i = 0; i < this.treeControl.dataNodes.length; i++) {
5406
+ if ((currNode === null || currNode === void 0 ? void 0 : currNode.toLowerCase()) === ((_a = this.treeControl.dataNodes[i].id) === null || _a === void 0 ? void 0 : _a.toLowerCase())
5407
+ && ((parentNode === null || parentNode === void 0 ? void 0 : parentNode.toLowerCase()) === ((_b = this.treeControl.dataNodes[i].parentId) === null || _b === void 0 ? void 0 : _b.toLowerCase()))) {
5408
+ this.treeControl.dataNodes[i].disabled = true;
5409
+ this.selectNodeEvent.emit(this.treeControl.dataNodes[i]);
5410
+ }
5411
+ this.disabledList.forEach(el => {
5412
+ var _a;
5413
+ if (((_a = this.treeControl.dataNodes[i].id) === null || _a === void 0 ? void 0 : _a.toLowerCase()) === (el === null || el === void 0 ? void 0 : el.toLowerCase())) {
5414
+ // this.treeControl.expand(this.treeControl.dataNodes[i]);
5415
+ }
5416
+ });
5417
+ // remove all children nodes when user dont need to show them
5418
+ // this.listChildNode.forEach(el => {
5419
+ // if (el.id && this.treeControl.dataNodes[i]?.id === el.id) {
5420
+ // this.treeControl.dataNodes.splice(i, 1);
5421
+ // }
5422
+ // });
5402
5423
  }
5403
- this.disabledList.forEach(el => {
5404
- var _a;
5405
- if (((_a = this.treeControl.dataNodes[i].id) === null || _a === void 0 ? void 0 : _a.toLowerCase()) === (el === null || el === void 0 ? void 0 : el.toLowerCase())) {
5406
- // this.treeControl.expand(this.treeControl.dataNodes[i]);
5424
+ this.idCheckIcon = this.idToCheckSelectOne(currNode === null || currNode === void 0 ? void 0 : currNode.toLowerCase(), parentNode === null || parentNode === void 0 ? void 0 : parentNode.toLowerCase());
5425
+ }
5426
+ else {
5427
+ this.disabledList.forEach(item => {
5428
+ switch (item.itemType) {
5429
+ case this.dataType.deviation:
5430
+ const deviationIndex = this.treeControl.dataNodes.findIndex(node => node.id === item.id && node.parentId === item.parentId);
5431
+ if (deviationIndex >= 0) {
5432
+ this.treeControl.dataNodes[deviationIndex].disabled = true;
5433
+ }
5434
+ break;
5435
+ case this.dataType.risk:
5436
+ const riskIndex = this.treeControl.dataNodes.findIndex(node => node.id === item.id);
5437
+ if (riskIndex >= 0) {
5438
+ this.treeControl.dataNodes[riskIndex].disabled = true;
5439
+ }
5440
+ break;
5441
+ case this.dataType.checklist:
5442
+ const checklistIndex = this.treeControl.dataNodes.findIndex(node => {
5443
+ var _a, _b;
5444
+ return node.id.toLowerCase() === item.id.toLowerCase()
5445
+ && ((_a = node.parentId) === null || _a === void 0 ? void 0 : _a.toLowerCase()) === ((_b = item.parentId) === null || _b === void 0 ? void 0 : _b.toLowerCase());
5446
+ });
5447
+ if (checklistIndex >= 0) {
5448
+ this.treeControl.dataNodes[checklistIndex].disabled = true;
5449
+ }
5450
+ break;
5451
+ default:
5452
+ return;
5407
5453
  }
5408
5454
  });
5409
- // remove all children nodes when user dont need to show them
5410
- // this.listChildNode.forEach(el => {
5411
- // if (el.id && this.treeControl.dataNodes[i]?.id === el.id) {
5412
- // this.treeControl.dataNodes.splice(i, 1);
5413
- // }
5414
- // });
5415
5455
  }
5416
- this.idCheckIcon = this.idToCheckSelectOne(currNode === null || currNode === void 0 ? void 0 : currNode.toLowerCase(), parentNode === null || parentNode === void 0 ? void 0 : parentNode.toLowerCase());
5417
5456
  }
5418
5457
  else {
5419
5458
  this.idCheckIcon = '';
@@ -5470,7 +5509,8 @@ class TreeComponent {
5470
5509
  this.checklistSelection.deselect(tree);
5471
5510
  for (let j = 0; j < itemSelected.length; j++) {
5472
5511
  const element = itemSelected[j];
5473
- if (tree.id === element.id && (!element.parentId || tree.parentId === element.parentId)) {
5512
+ if (tree.id === element.id && (!tree.parentId || tree.parentId === element.parentId)) {
5513
+ console.log(tree);
5474
5514
  this.checklistSelection.select(tree);
5475
5515
  }
5476
5516
  }
@@ -5650,7 +5690,7 @@ class TreeComponent {
5650
5690
  this.selectFolderEvent.emit(node);
5651
5691
  }
5652
5692
  onExpandNode(node, isExpandNode) {
5653
- if (isExpandNode && !this.expandOnTitleClick) {
5693
+ if (isExpandNode && this.expandOnTitleClick) {
5654
5694
  if (!node.markedGetChildren && !this.treeControl.isExpanded(node)) {
5655
5695
  this.treeControl.dataNodes.forEach(x => {
5656
5696
  if (x.parentId === node.parentId && x.id === node.id) {
@@ -5817,7 +5857,7 @@ class TreeComponent {
5817
5857
  TreeComponent.decorators = [
5818
5858
  { type: Component, args: [{
5819
5859
  selector: 'qms-tree',
5820
- template: "<mat-tree\r\n [dataSource]=\"dataSource\"\r\n [treeControl]=\"treeControl\"\r\n class=\"tree__container\"\r\n>\r\n <mat-tree-node\r\n class=\"tree-branch\"\r\n *matTreeNodeDef=\"let node\"\r\n matTreeNodeToggle\r\n matTreeNodePadding\r\n [class.disabled]=\"node.disabled\"\r\n >\r\n <!-- form thu 1 - child -->\r\n <mat-checkbox\r\n qms-group-options\r\n [disabled]=\"node.disabled\"\r\n color=\"default\"\r\n *ngIf=\"node.name && showCheckBox && !onlyCheckBoxForChild && !onlyFolder\"\r\n class=\"checklist-leaf-node\"\r\n [checked]=\"checklistSelection.isSelected(node)\"\r\n (change)=\"todoItemSelectionToggle(node)\"\r\n >\r\n </mat-checkbox>\r\n\r\n <!-- form thu 2 -->\r\n <mat-checkbox\r\n qms-group-options\r\n [disabled]=\"node.disabled\"\r\n color=\"default\"\r\n *ngIf=\"node.name && showCheckBox && onlyCheckBoxForChild && !onlyFolder\"\r\n class=\"ml-10 checklist-leaf-node\"\r\n [checked]=\"checklistSelection.isSelected(node)\"\r\n (change)=\"todoItemSelectionToggle(node)\"\r\n ></mat-checkbox>\r\n <div\r\n class=\"expand-node\"\r\n *ngIf=\"node.name && !onlyFolder\"\r\n [class.bgSelected]=\"\r\n treeConfig.selectOne &&\r\n idCheckIcon == idToCheckSelectOne(node.id, node.parentId)\r\n \"\r\n (click)=\"!node.disabled && selectNode(node)\"\r\n [id]=\"getNodeId(node)\"\r\n >\r\n <div class=\"expand-node__text\">\r\n <mat-icon\r\n *ngIf=\"displayType === itemIconType.name\"\r\n class=\"mat-icon-rtl-mirror material-icons-outlined\"\r\n >\r\n {{ itemIcon }}\r\n </mat-icon>\r\n\r\n <mat-icon\r\n *ngIf=\"displayType === itemIconType.svg\"\r\n class=\"mat-icon-rtl-mirror material-icons-outlined\"\r\n [svgIcon]=\"itemIconSvg\"\r\n >\r\n </mat-icon>\r\n\r\n <img\r\n *ngIf=\"displayType === itemIconType.path\"\r\n class=\"mat-icon\"\r\n [src]=\"itemIconPath\"\r\n />\r\n\r\n <img\r\n *ngIf=\"displayType === itemIconType.base64\"\r\n class=\"mat-icon image-base64\"\r\n [src]=\"getImagePath()\"\r\n />\r\n\r\n <mat-icon\r\n *ngIf=\"displayType === itemIconType.none\"\r\n class=\"mat-icon-rtl-mirror material-icons-outlined\"\r\n [svgIcon]=\"getItemIcon(node)\"\r\n ></mat-icon>\r\n <span\r\n class=\"text-node\"\r\n [class.select-one-checked]=\"\r\n treeConfig.selectOne &&\r\n !node.disabled &&\r\n idCheckIcon == idToCheckSelectOne(node.id, node.parentId)\r\n \"\r\n >{{ node.name }}</span\r\n >\r\n </div>\r\n <mat-icon\r\n class=\"select-one-checked\"\r\n *ngIf=\"\r\n treeConfig.selectOne &&\r\n !node.disabled &&\r\n idCheckIcon == idToCheckSelectOne(node.id, node.parentId)\r\n \"\r\n >done</mat-icon\r\n >\r\n </div>\r\n </mat-tree-node>\r\n\r\n <mat-tree-node\r\n *matTreeNodeDef=\"let node; when: hasChild\"\r\n matTreeNodePadding\r\n [class.disabled]=\"node.disabled\"\r\n >\r\n <!-- form thu 1 - parent -->\r\n <mat-checkbox\r\n qms-group-options\r\n [disabled]=\"node.disabled\"\r\n color=\"default\"\r\n *ngIf=\"node.name && showCheckBox && !onlyCheckBoxForChild\"\r\n [checked]=\"descendantsAllSelected(node)\"\r\n [indeterminate]=\"descendantsPartiallySelected(node)\"\r\n (change)=\"todoItemSelectionToggle(node)\"\r\n ></mat-checkbox>\r\n <button\r\n class=\"button-boder\"\r\n mat-icon-button\r\n matTreeNodeToggle\r\n [disableRipple]=\"!node.hasChild\"\r\n [attr.aria-label]=\"'toggle ' + node.filename\"\r\n *ngIf=\"node.name\"\r\n [disabled]=\"node.disabled\"\r\n >\r\n <mat-icon\r\n *ngIf=\"openIcon && closeIcon\"\r\n class=\"mat-icon-rtl-mirror\"\r\n [ngStyle]=\"{\r\n color: treeControl.isExpanded(node) ? openIconColor : closeIconColor\r\n }\"\r\n (click)=\"!node.disabled && onExpandNode(node, true)\"\r\n >{{ getNodeIcon(node) }}</mat-icon\r\n >\r\n <mat-icon\r\n *ngIf=\"!openIcon || !closeIcon\"\r\n class=\"mat-icon-rtl-mirror\"\r\n [ngClass]=\"{\r\n 'open-icon': treeControl.isExpanded(node),\r\n 'not-department-icon': moduleId !== dataType.document\r\n }\"\r\n [svgIcon]=\"getNodeIcon(node)\"\r\n (click)=\"!node.disabled && onExpandNode(node, true)\"\r\n >\r\n </mat-icon>\r\n </button>\r\n <span\r\n *ngIf=\"expandOnTitleClick\"\r\n matTreeNodeToggle\r\n class=\"text-node-parent\"\r\n (click)=\"!node.disabled && onExpandNode(node, false)\"\r\n [id]=\"getNodeId(node)\"\r\n [ngStyle]=\"{\r\n color: treeControl.isExpanded(node) ? openIconColor : '#000000'\r\n }\"\r\n >\r\n <span>{{ node.name }}</span>\r\n </span>\r\n <span\r\n *ngIf=\"!expandOnTitleClick\"\r\n class=\"text-node-parent\"\r\n (click)=\"!node.disabled && selectFolderNode(node)\"\r\n [id]=\"getNodeId(node)\"\r\n >\r\n <span\r\n [class.select-one-checked]=\"\r\n treeConfig.selectOne &&\r\n !node.disabled &&\r\n treeConfig.allowSelectFolder &&\r\n idCheckIcon == idToCheckSelectOne(node.id, node.parentId)\r\n \"\r\n >{{ node.name }}</span\r\n >\r\n <mat-icon\r\n class=\"select-one-checked\"\r\n *ngIf=\"\r\n treeConfig.selectOne &&\r\n !node.disabled &&\r\n treeConfig.allowSelectFolder &&\r\n idCheckIcon == idToCheckSelectOne(node.id, node.parentId)\r\n \"\r\n >done</mat-icon\r\n >\r\n </span>\r\n </mat-tree-node>\r\n</mat-tree>\r\n",
5860
+ template: "<mat-tree\r\n [dataSource]=\"dataSource\"\r\n [treeControl]=\"treeControl\"\r\n class=\"tree__container\"\r\n>\r\n <mat-tree-node\r\n class=\"tree-branch\"\r\n *matTreeNodeDef=\"let node\"\r\n matTreeNodeToggle\r\n matTreeNodePadding\r\n >\r\n <!-- form thu 1 - child -->\r\n <mat-checkbox\r\n qms-group-options\r\n [disabled]=\"node.disabled\"\r\n color=\"default\"\r\n *ngIf=\"node.name && showCheckBox && !onlyCheckBoxForChild && !onlyFolder\"\r\n class=\"checklist-leaf-node\"\r\n [checked]=\"checklistSelection.isSelected(node)\"\r\n (change)=\"todoItemSelectionToggle(node)\"\r\n >\r\n </mat-checkbox>\r\n\r\n <!-- form thu 2 -->\r\n <mat-checkbox\r\n qms-group-options\r\n [disabled]=\"node.disabled\"\r\n color=\"default\"\r\n *ngIf=\"node.name && showCheckBox && onlyCheckBoxForChild && !onlyFolder\"\r\n class=\"ml-10 checklist-leaf-node\"\r\n [checked]=\"checklistSelection.isSelected(node)\"\r\n (change)=\"todoItemSelectionToggle(node)\"\r\n ></mat-checkbox>\r\n <div\r\n class=\"expand-node\"\r\n *ngIf=\"node.name && !onlyFolder\"\r\n [class.bgSelected]=\"\r\n treeConfig.selectOne &&\r\n idCheckIcon == idToCheckSelectOne(node.id, node.parentId)\r\n \"\r\n (click)=\"!node.disabled && selectNode(node)\"\r\n [id]=\"getNodeId(node)\"\r\n >\r\n <div class=\"expand-node__text\">\r\n <mat-icon\r\n *ngIf=\"displayType === itemIconType.name\"\r\n class=\"mat-icon-rtl-mirror material-icons-outlined\"\r\n >\r\n {{ itemIcon }}\r\n </mat-icon>\r\n\r\n <mat-icon\r\n *ngIf=\"displayType === itemIconType.svg\"\r\n class=\"mat-icon-rtl-mirror material-icons-outlined\"\r\n [svgIcon]=\"itemIconSvg\"\r\n >\r\n </mat-icon>\r\n\r\n <img\r\n *ngIf=\"displayType === itemIconType.path\"\r\n class=\"mat-icon\"\r\n [src]=\"itemIconPath\"\r\n />\r\n\r\n <img\r\n *ngIf=\"displayType === itemIconType.base64\"\r\n class=\"mat-icon image-base64\"\r\n [src]=\"getImagePath()\"\r\n />\r\n\r\n <mat-icon\r\n *ngIf=\"displayType === itemIconType.none\"\r\n class=\"mat-icon-rtl-mirror material-icons-outlined\"\r\n [svgIcon]=\"getItemIcon(node)\"\r\n ></mat-icon>\r\n <span\r\n class=\"text-node\"\r\n [class.select-one-checked]=\"\r\n treeConfig.selectOne &&\r\n !node.disabled &&\r\n idCheckIcon == idToCheckSelectOne(node.id, node.parentId)\r\n \"\r\n >{{ node.name }}</span\r\n >\r\n </div>\r\n <mat-icon\r\n class=\"select-one-checked\"\r\n *ngIf=\"\r\n treeConfig.selectOne &&\r\n !node.disabled &&\r\n idCheckIcon == idToCheckSelectOne(node.id, node.parentId)\r\n \"\r\n >done</mat-icon\r\n >\r\n </div>\r\n </mat-tree-node>\r\n\r\n <mat-tree-node\r\n *matTreeNodeDef=\"let node; when: hasChild\"\r\n matTreeNodePadding\r\n [class.disabled]=\"node.disabled\"\r\n >\r\n <!-- form thu 1 - parent -->\r\n <mat-checkbox\r\n qms-group-options\r\n [disabled]=\"node.disabled\"\r\n color=\"default\"\r\n *ngIf=\"node.name && showCheckBox && !onlyCheckBoxForChild\"\r\n [checked]=\"descendantsAllSelected(node)\"\r\n [indeterminate]=\"descendantsPartiallySelected(node)\"\r\n (change)=\"todoItemSelectionToggle(node)\"\r\n ></mat-checkbox>\r\n <button\r\n class=\"button-boder\"\r\n mat-icon-button\r\n matTreeNodeToggle\r\n [disableRipple]=\"!node.hasChild\"\r\n [attr.aria-label]=\"'toggle ' + node.filename\"\r\n *ngIf=\"node.name\"\r\n [disabled]=\"node.disabled\"\r\n >\r\n <mat-icon\r\n *ngIf=\"openIcon && closeIcon\"\r\n class=\"mat-icon-rtl-mirror\"\r\n [ngStyle]=\"{\r\n color: treeControl.isExpanded(node) ? openIconColor : closeIconColor\r\n }\"\r\n (click)=\"!node.disabled && onExpandNode(node, true)\"\r\n >{{ getNodeIcon(node) }}</mat-icon\r\n >\r\n <mat-icon\r\n *ngIf=\"!openIcon || !closeIcon\"\r\n class=\"mat-icon-rtl-mirror\"\r\n [ngClass]=\"{\r\n 'open-icon': treeControl.isExpanded(node),\r\n 'not-department-icon': moduleId !== dataType.document\r\n }\"\r\n [svgIcon]=\"getNodeIcon(node)\"\r\n (click)=\"!node.disabled && onExpandNode(node, true)\"\r\n >\r\n </mat-icon>\r\n </button>\r\n <span\r\n *ngIf=\"expandOnTitleClick\"\r\n matTreeNodeToggle\r\n class=\"text-node-parent\"\r\n (click)=\"!node.disabled && onExpandNode(node, false)\"\r\n [id]=\"getNodeId(node)\"\r\n [ngStyle]=\"{\r\n color: treeControl.isExpanded(node) ? openIconColor : '#000000'\r\n }\"\r\n >\r\n <span>{{ node.name }}</span>\r\n </span>\r\n <span\r\n *ngIf=\"!expandOnTitleClick\"\r\n class=\"text-node-parent\"\r\n (click)=\"!node.disabled && selectFolderNode(node)\"\r\n [id]=\"getNodeId(node)\"\r\n >\r\n <span\r\n [class.select-one-checked]=\"\r\n treeConfig.selectOne &&\r\n !node.disabled &&\r\n treeConfig.allowSelectFolder &&\r\n idCheckIcon == idToCheckSelectOne(node.id, node.parentId)\r\n \"\r\n >{{ node.name }}</span\r\n >\r\n <mat-icon\r\n class=\"select-one-checked\"\r\n *ngIf=\"\r\n treeConfig.selectOne &&\r\n !node.disabled &&\r\n treeConfig.allowSelectFolder &&\r\n idCheckIcon == idToCheckSelectOne(node.id, node.parentId)\r\n \"\r\n >done</mat-icon\r\n >\r\n </span>\r\n </mat-tree-node>\r\n</mat-tree>\r\n",
5821
5861
  encapsulation: ViewEncapsulation.None,
5822
5862
  styles: [".tree__container{font-family:Open Sans;font-style:normal;font-weight:400;font-size:.875rem;line-height:19px;color:var(--default-color)}.tree__container .mat-tree-node{color:var(--tree-node-color);min-height:0}.tree__container .mat-tree-node .mat-checkbox.qms-group-options{padding:0}.tree__container .mat-tree-node .mat-checkbox.qms-group-options .mat-checkbox-inner-container{margin-right:11px}.tree__container .mat-tree-node.disabled .text-node-parent{cursor:default;color:#999}.tree__container .mat-tree-node.disabled svg path{fill:#999}.tree__container .button{margin-left:6px}.tree__container .button:focus,.tree__container .button:hover{background-color:var(--tree-node-background-color);border-radius:2px;width:auto}.tree__container .button-boder:focus,.tree__container .button:focus{outline:0}.tree__container .button-folder-boder:focus{outline:0}.tree__container .button-folder-boder:focus,.tree__container .button-folder-boder:hover{background-color:var(--tree-node-boder-color);border-radius:2px;width:auto}.tree__container .expand-node{margin-left:8px;min-height:32px;justify-content:space-between;width:100%}.tree__container .expand-node,.tree__container .expand-node .expand-node__text{display:flex;align-items:center}.tree__container .expand-node .mat-icon{color:rgba(0,0,0,.6);margin-right:17px;min-width:-webkit-fit-content;min-width:-moz-fit-content;min-width:fit-content}.tree__container .expand-node .mat-icon svg{display:block;min-width:-webkit-fit-content;min-width:-moz-fit-content;min-width:fit-content}.tree__container .expand-node.bgSelected .select-one-checked{color:var(--primary)}.tree__container .text-node-parent{width:100%;display:flex;align-items:center;justify-content:space-between;margin-left:10px;cursor:pointer}.tree__container .text-node-parent.active-item{color:#1954a9!important}.tree__container .text-node-parent .select-one-checked{color:var(--primary)}.tree__container .mr-11{margin-right:11px}.tree__container .ml-10{margin-left:10px}.tree__container .tree-branch:hover{background-color:var(--primary-light-12-opacity)}.tree__container .image-base64{width:20px;height:20px}.tree__container .mat-checkbox.qms-group-options.mat-checkbox-checked{background:transparent!important}::ng-deep .mat-tree .mat-checkbox.qms-group-options{padding:0}::ng-deep .mat-tree .mat-checkbox.qms-group-options.mat-checkbox-checked{background-color:transparent}::ng-deep .mat-tree .mat-checkbox.qms-group-options .mat-checkbox-inner-container{margin-right:0}svg{display:block;min-width:-webkit-fit-content;min-width:-moz-fit-content;min-width:fit-content}.open-icon svg path:first-child,.open-icon.not-department-icon svg path{fill:#1954a9}.mat-checkbox.mat-checkbox-disabled.qms-group-options.mat-checkbox-checked .mat-checkbox-background{background-color:#e0e0e0!important}"]
5823
5863
  },] }
@@ -6104,7 +6144,7 @@ QMSCKEditorBaseService.ctorParameters = () => [
6104
6144
  ];
6105
6145
 
6106
6146
  class QMSCKEditorUploadService extends QMSCKEditorBaseService {
6107
- uploadImage(file, imageHeight, imageWidth) {
6147
+ uploadImage(file, imageHeight, imageWidth, description) {
6108
6148
  const formData = new FormData();
6109
6149
  formData.append('name', file.name);
6110
6150
  formData.append('file', file);
@@ -6112,6 +6152,9 @@ class QMSCKEditorUploadService extends QMSCKEditorBaseService {
6112
6152
  formData.append('imageHeight', imageHeight.toString());
6113
6153
  formData.append('imageWidth', imageWidth.toString());
6114
6154
  }
6155
+ if (description) {
6156
+ formData.append('description', description);
6157
+ }
6115
6158
  return this.post('ckeditorUpload/UploadImage', formData);
6116
6159
  }
6117
6160
  }
@@ -6186,14 +6229,21 @@ QMSRelatedGlobalService.decorators = [
6186
6229
  ];
6187
6230
  QMSRelatedGlobalService.ctorParameters = () => [];
6188
6231
 
6189
- const UPLOAD_ICON = `
6190
- <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px">
6191
- <path d="M0 0h24v24H0V0z" fill="none"/>
6192
- <path d="M9 16h6v-6h4l-7-7-7 7h4v6zm3-10.17L14.17 8H13v6h-2V8H9.83L12 5.83zM5 18h14v2H5z"/>
6193
- </svg>
6194
- `;
6232
+ class IconSvg {
6233
+ }
6234
+ IconSvg.VECTOR_POINTER = `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="24" height="24" viewBox="0 0 24 24"><path fill="#000000" d="M13.75,10.19L14.38,10.32L18.55,12.4C19.25,12.63 19.71,13.32 19.65,14.06V14.19L19.65,14.32L18.75,20.44C18.69,20.87 18.5,21.27 18.15,21.55C17.84,21.85 17.43,22 17,22H10.12C9.63,22 9.18,21.82 8.85,21.47L2.86,15.5L3.76,14.5C4,14.25 4.38,14.11 4.74,14.13H5.03L9,15V4.5A2,2 0 0,1 11,2.5A2,2 0 0,1 13,4.5V10.19H13.75Z" /></svg>`;
6235
+ IconSvg.VECTOR_RECTANGLE = `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="24" height="24" viewBox="0 0 24 24"><path fill="#000000" d="M2,2H8V4H16V2H22V8H20V16H22V22H16V20H8V22H2V16H4V8H2V2M16,8V6H8V8H6V16H8V18H16V16H18V8H16M4,4V6H6V4H4M18,4V6H20V4H18M4,18V20H6V18H4M18,18V20H20V18H18Z" /></svg>`;
6236
+ IconSvg.VECTOR_CIRCLE = `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="24" height="24" viewBox="0 0 24 24"><path fill="#000000" d="M9,2V4.06C6.72,4.92 4.92,6.72 4.05,9H2V15H4.06C4.92,17.28 6.72,19.09 9,19.95V22H15V19.94C17.28,19.08 19.09,17.28 19.95,15H22V9H19.94C19.08,6.72 17.28,4.92 15,4.05V2M11,4H13V6H11M9,6.25V8H15V6.25C16.18,6.86 17.14,7.82 17.75,9H16V15H17.75C17.14,16.18 16.18,17.14 15,17.75V16H9V17.75C7.82,17.14 6.86,16.18 6.25,15H8V9H6.25C6.86,7.82 7.82,6.86 9,6.25M4,11H6V13H4M18,11H20V13H18M11,18H13V20H11" /></svg>`;
6237
+ IconSvg.VECTOR_POLYGON = `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="24" height="24" viewBox="0 0 24 24"><path fill="#000000" d="M2,2V8H4.28L5.57,16H4V22H10V20.06L15,20.05V22H21V16H19.17L20,9H22V3H16V6.53L14.8,8H9.59L8,5.82V2M4,4H6V6H4M18,5H20V7H18M6.31,8H7.11L9,10.59V14H15V10.91L16.57,9H18L17.16,16H15V18.06H10V16H7.6M11,10H13V12H11M6,18H8V20H6M17,18H19V20H17" /></svg>`;
6238
+ IconSvg.VECTOR_REMOVE = `<svg width="24px" height="24px" viewBox="0 0 24 24" role="img" xmlns="http://www.w3.org/2000/svg" stroke="#000000" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" fill="none" color="#000000"><path fill="#000000" d="M17,12 L7,12"/> <circle cx="12" cy="12" r="10"/> </svg>`;
6239
+ IconSvg.UPLOAD_ICON = `<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px"><path d="M0 0h24v24H0V0z" fill="none"/><path d="M9 16h6v-6h4l-7-7-7 7h4v6zm3-10.17L14.17 8H13v6h-2V8H9.83L12 5.83zM5 18h14v2H5z"/></svg>`;
6240
+
6241
+ class VideoConst {
6242
+ }
6243
+ VideoConst.DEFAUL_MAX_VIDEO_THUMBNAIL_SIZE_KB = 500;
6244
+
6195
6245
  class RelatedPopupComponent {
6196
- constructor(cdRef, translate, dialogRef, globalService, iconRegistry, sanitizer, appIconService, elem, uploadService, data) {
6246
+ constructor(cdRef, translate, dialogRef, globalService, iconRegistry, sanitizer, appIconService, elem, uploadService, dialog, data) {
6197
6247
  this.cdRef = cdRef;
6198
6248
  this.translate = translate;
6199
6249
  this.dialogRef = dialogRef;
@@ -6203,6 +6253,7 @@ class RelatedPopupComponent {
6203
6253
  this.appIconService = appIconService;
6204
6254
  this.elem = elem;
6205
6255
  this.uploadService = uploadService;
6256
+ this.dialog = dialog;
6206
6257
  this.data = data;
6207
6258
  this.ngUnsubscribe = new Subject();
6208
6259
  this.moduleId = 0;
@@ -6238,8 +6289,9 @@ class RelatedPopupComponent {
6238
6289
  this.onSearch = new EventEmitter();
6239
6290
  this.onExpandFolder = new EventEmitter();
6240
6291
  this.parentNodeSelected = new TreeFlatNode();
6292
+ this.acceptExtensions = ['pjp', 'jpg', 'pjpeg', 'jpeg', 'jfif', 'png', 'gif', 'bmp', 'webp', 'tif', 'tiff'];
6241
6293
  this.qmsInputImageType = new FormControl('', [
6242
- requiredFileType(['pjp', 'jpg', 'pjpeg', 'jpeg', 'jfif', 'png', 'gif', 'bmp', 'webp', 'tif', 'tiff'])
6294
+ requiredFileType(this.acceptExtensions)
6243
6295
  ]);
6244
6296
  this.qmsInputImageFile = null;
6245
6297
  this.isLoadingImageFile = false;
@@ -6259,6 +6311,7 @@ class RelatedPopupComponent {
6259
6311
  this.maxSelectItemCount = data.maxSelectItemCount;
6260
6312
  this.canOnlySelectItem = data.canOnlySelectItem;
6261
6313
  this.canUploadImage = data.canUploadImage;
6314
+ this.maxVideoThumbnailSizeKB = (data.maxVideoThumbnailSizeKB || VideoConst.DEFAUL_MAX_VIDEO_THUMBNAIL_SIZE_KB) * 1024;
6262
6315
  appIconService.registerProcessIcon(iconRegistry, sanitizer);
6263
6316
  appIconService.registerProcessAreaIcon(iconRegistry, sanitizer);
6264
6317
  appIconService.registerDocumentIcon(iconRegistry, sanitizer);
@@ -6266,7 +6319,7 @@ class RelatedPopupComponent {
6266
6319
  appIconService.registerDeviationIcon(iconRegistry, sanitizer);
6267
6320
  appIconService.registerChecklistIcon(iconRegistry, sanitizer);
6268
6321
  appIconService.registerRiskIcon(iconRegistry, sanitizer);
6269
- iconRegistry.addSvgIconLiteral('upload', sanitizer.bypassSecurityTrustHtml(UPLOAD_ICON));
6322
+ iconRegistry.addSvgIconLiteral('upload', sanitizer.bypassSecurityTrustHtml(IconSvg.UPLOAD_ICON));
6270
6323
  }
6271
6324
  ngOnDestroy() {
6272
6325
  this.ngUnsubscribe.next();
@@ -7322,6 +7375,22 @@ class RelatedPopupComponent {
7322
7375
  this.qmsInputImageFile = null;
7323
7376
  }
7324
7377
  onChangeImage(event) {
7378
+ var _a;
7379
+ if (!((_a = this.qmsInputImageFile) === null || _a === void 0 ? void 0 : _a.isSuccessful) && this.maxVideoThumbnailSizeKB) {
7380
+ const dialogRef = this.dialog.open(QMSUploadFileErrorDialog, {
7381
+ width: '500px',
7382
+ data: {
7383
+ fileNames: this.qmsInputImageFile.typeError == FileErrorType.notSupportedExtension ? [this.qmsInputImageFile.fileName] : [],
7384
+ acceptedExtension: this.acceptExtensions,
7385
+ overLimitFiles: this.qmsInputImageFile.typeError == FileErrorType.exceedMaxSize ? [this.qmsInputImageFile.fileName] : [],
7386
+ fileSizeLimit: this.maxVideoThumbnailSizeKB / 1024,
7387
+ fileSizeLimitUnit: 'KB'
7388
+ }
7389
+ });
7390
+ dialogRef.afterClosed().subscribe(() => {
7391
+ this.qmsInputImageFile = null;
7392
+ });
7393
+ }
7325
7394
  const readerImage = new FileReader();
7326
7395
  readerImage.readAsDataURL(this.qmsInputImageFile.file);
7327
7396
  readerImage.onload = (event) => __awaiter(this, void 0, void 0, function* () {
@@ -7332,7 +7401,7 @@ class RelatedPopupComponent {
7332
7401
  RelatedPopupComponent.decorators = [
7333
7402
  { type: Component, args: [{
7334
7403
  selector: 'qms-related-popup',
7335
- template: "<div id=\"qmslib_related_popup\" class=\"qmslib__related__popup__container\">\r\n <div id=\"qmslib_related_popup_header\">\r\n <span mat-icon-button class=\"button__close\" (click)=\"onCloseClick()\">\r\n <mat-icon mat-icon>close</mat-icon>\r\n </span>\r\n <div id=\"qmslib_related_popup_header_001\" mat-dialog-content>\r\n <div *ngIf=\"canUploadImage\" class=\"selected-image\">\r\n <span>{{ moduleUploadImageName | uppercase }}</span>\r\n <form>\r\n <mat-form-field qms-form qms-file-upload appearance=\"fill\" class=\"example-width input-upload\">\r\n <mat-icon matPrefix svgIcon=\"upload\"></mat-icon>\r\n <input matInput placeholder=\"Upload file\" [formControl]=\"qmsInputImageType\" [readOnly]=\"true\"\r\n qms-file-upload-display #fileDisplay \r\n value=\"{{qmsInputImageFile? qmsInputImageFile.fileName : ''}}\"\r\n [attr.disabled]=\"isLoadingImageFile ? 'disabled' : null\">\r\n <input hidden type=\"file\" [(inputFile)]=\"qmsInputImageFile\" \r\n qms-file-upload-selector #fileSelector\r\n accept=\".pjp, .jpg, .pjpeg, .jpeg, .jfif, .png, .gif, .bmp, .webp, .tif, .tiff\" \r\n [maxSize]=\"1000000\" (change)=\"onChangeImage($event)\">\r\n\r\n <mat-progress-spinner matSuffix mode=\"indeterminate\" diameter='20'\r\n *ngIf=\"isLoadingImageFile\"></mat-progress-spinner>\r\n <div matSuffix qms-input-clear *ngIf=\"qmsInputImageFile && qmsInputImageFile.fileName\">\r\n <button qms-btn-icon color=\"light\" (click)=\"clearQMSInputImageFile()\" [disabled]=\"isLoadingImageFile\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </div>\r\n\r\n <mat-error *ngIf=\"qmsInputImageFile && qmsInputImageFile.typeError == 1\">\r\n The extension is not supported.\r\n </mat-error>\r\n </mat-form-field>\r\n </form>\r\n </div>\r\n <span>{{ moduleName | uppercase }}</span>\r\n </div>\r\n </div>\r\n\r\n <div id=\"qmslib_related_popup_search\" class=\"input__field\">\r\n <input\r\n type=\"text\"\r\n placeholder=\"{{ LANG.SEARCH }}\"\r\n matInput\r\n [formControl]=\"myControl\"\r\n [matAutocomplete]=\"auto\"\r\n />\r\n <mat-icon>search</mat-icon>\r\n </div>\r\n\r\n <div class=\"line__divider\"></div>\r\n\r\n <mat-autocomplete\r\n #auto=\"matAutocomplete\"\r\n class=\"mat-autocomplete_related-viewport\"\r\n (optionSelected)=\"selectRelated($event.option.value)\"\r\n [displayWith]=\"displayWhenSelectRelatedOption\"\r\n >\r\n <cdk-virtual-scroll-viewport\r\n qms-scrollbar\r\n itemSize=\"10\"\r\n [class.related-viewport]=\"isInputValue\"\r\n *ngIf=\"filteredOptions.length\"\r\n >\r\n <ng-container *ngFor=\"let type of searchOrder\">\r\n <div\r\n class=\"search__module-result\"\r\n *ngIf=\"canShowSearchOption(type.value)\"\r\n >\r\n <span class=\"search__module-title\">{{ getTitle(type.value) }}</span>\r\n <mat-option\r\n class=\"search__option\"\r\n *ngFor=\"let option of getModuleFilteredOptions(type.value)\"\r\n [value]=\"option\"\r\n [disabled]=\"option.disabled\"\r\n >\r\n <qms-list-item type=\"image-square\">\r\n <mat-icon\r\n leading-icon\r\n type=\"image-square\"\r\n [svgIcon]=\"getNodeIcon(option)\"\r\n ></mat-icon>\r\n <div qms-list-header>\r\n <div\r\n qms-line\r\n type=\"caption\"\r\n qms-tool-tip=\"{{\r\n isEllipsisActive(searchItemResult) ? option.parentName : ''\r\n }}\"\r\n mode=\"dark\"\r\n *ngIf=\"getParentName(option)\"\r\n >\r\n <span #searchItemResult class=\"search__result__parent-name\">\r\n {{ option.parentName }}\r\n </span>\r\n </div>\r\n <div qms-line type=\"subtitle\" class=\"search__option-name\">\r\n {{ option.itemName }}\r\n </div>\r\n <div\r\n class=\"caption\"\r\n *ngIf=\"option.breadcumbs && option.breadcumbs.length\"\r\n >\r\n <qms-breadcrumb\r\n class=\"breadcrumb-container\"\r\n type=\"table\"\r\n numDisplayItem=\"1\"\r\n [nodes]=\"option.breadcumbs\"\r\n >\r\n </qms-breadcrumb>\r\n </div>\r\n </div>\r\n <div qms-line color=\"default-subtitle\" *ngIf=\"getItemId(option)\">\r\n <span>\r\n <mat-icon\r\n class=\"material-icons-outlined search__description-icon\"\r\n >local_offer</mat-icon\r\n >\r\n </span>\r\n {{ getItemId(option) }}\r\n </div>\r\n </qms-list-item>\r\n </mat-option>\r\n </div>\r\n </ng-container>\r\n </cdk-virtual-scroll-viewport>\r\n </mat-autocomplete>\r\n\r\n <div class=\"row\">\r\n <div\r\n class=\"qms-scrollbar qmslib_related_popup_content\"\r\n [ngClass]=\"{\r\n panel__content_item: checkedNodeList.length,\r\n panel__content: !checkedNodeList.length,\r\n panel__content_height_with_upload: canUploadImage && !checkedNodeList.length,\r\n panel__content_item_height_with_upload: canUploadImage && checkedNodeList.length,\r\n 'col-6': splitView,\r\n 'col-12': !splitView\r\n }\"\r\n >\r\n <ng-container *ngIf=\"treeData1.length > 0\">\r\n <mat-expansion-panel\r\n hideToggle\r\n id=\"qmslib_related_popup_common_001\"\r\n [expanded]=\"isCommonExpanded\"\r\n (opened)=\"isCommonExpanded = true\"\r\n (closed)=\"isCommonExpanded = false\"\r\n class=\"panel-tree\"\r\n >\r\n <mat-expansion-panel-header class=\"padding-5\">\r\n <mat-panel-title *ngIf=\"moduleId === module.documentProcess\">\r\n {{ LANG.PROCESSES | uppercase }}\r\n </mat-panel-title>\r\n <mat-panel-title *ngIf=\"moduleId === module.deviation\">\r\n {{ LANG.DEVIATION | uppercase }}\r\n </mat-panel-title>\r\n <mat-panel-title *ngIf=\"moduleId === module.checklist\">\r\n {{ LANG.CHECKLIST | uppercase }}\r\n </mat-panel-title>\r\n <mat-panel-title *ngIf=\"moduleId === module.risk\">\r\n {{ LANG.ASSESSMENT | uppercase }}\r\n </mat-panel-title>\r\n <button qms-btn-icon class=\"related_popup_toggle-btn\">\r\n <mat-icon>\r\n {{\r\n isCommonExpanded ? \"keyboard_arrow_up\" : \"keyboard_arrow_down\"\r\n }}\r\n </mat-icon>\r\n </button>\r\n </mat-expansion-panel-header>\r\n <div id=\"qmslib_related_popup_common_002\">\r\n <qms-tree\r\n [treeData]=\"treeData1\"\r\n [treeConfig]=\"treeConfig1\"\r\n [selectedData]=\"selectedData\"\r\n [selectedRiskData]=\"selectedRiskData\"\r\n [disabledList]=\"disabledList\"\r\n (checkBoxEvent)=\"getCommonCheckedNode($event)\"\r\n (nodeExpandEvent)=\"getChildrenOfFolder($event, dataType.area)\"\r\n (selectNodeEvent)=\"selectNodeTreeEvent($event)\"\r\n (getChildNodeSelectOne)=\"getChildNodeSelectOne($event)\"\r\n [expandOnTitleClick]=\"!splitView\"\r\n [parentNodeOnClick]=\"parentNodeSelected\"\r\n (treeControlNodes)=\"selectTreeControlNodeProcess($event)\"\r\n ></qms-tree>\r\n </div>\r\n </mat-expansion-panel>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"treeData2.length > 0\">\r\n <div\r\n *ngIf=\"moduleId === module.documentProcess\"\r\n class=\"line__divider\"\r\n ></div>\r\n\r\n <mat-expansion-panel\r\n hideToggle\r\n *ngIf=\"moduleId === module.documentProcess\"\r\n id=\"qmslib_related_popup_document_001\"\r\n [expanded]=\"isDocumentExpanded\"\r\n (opened)=\"isDocumentExpanded = true\"\r\n (closed)=\"isDocumentExpanded = false\"\r\n class=\"panel-tree\"\r\n >\r\n <mat-expansion-panel-header class=\"padding-5\">\r\n <mat-panel-title>\r\n {{ LANG.DOCUMENTS | uppercase }}\r\n </mat-panel-title>\r\n <button qms-btn-icon class=\"related_popup_toggle-btn\">\r\n <mat-icon>\r\n {{\r\n isDocumentExpanded\r\n ? \"keyboard_arrow_up\"\r\n : \"keyboard_arrow_down\"\r\n }}\r\n </mat-icon>\r\n </button>\r\n </mat-expansion-panel-header>\r\n <div id=\"qmslib_related_popup_document_002\">\r\n <qms-tree\r\n [treeData]=\"treeData2\"\r\n [treeConfig]=\"treeConfig2\"\r\n [selectedData]=\"selectedData2\"\r\n [disabledList]=\"disabledList2\"\r\n (checkBoxEvent)=\"getDocumentCheckedNode($event)\"\r\n (nodeExpandEvent)=\"getChildrenOfFolder($event, dataType.folder)\"\r\n (selectNodeEvent)=\"selectNodeTree2Event($event)\"\r\n (getChildNodeSelectOne)=\"getChildNodeSelectOne($event)\"\r\n [expandOnTitleClick]=\"!splitView\"\r\n [parentNodeOnClick]=\"parentNodeSelected\"\r\n (treeControlNodes)=\"selectTreeControlNodeDocument($event)\"\r\n ></qms-tree>\r\n </div>\r\n </mat-expansion-panel>\r\n </ng-container>\r\n </div>\r\n <div\r\n *ngIf=\"splitView\"\r\n class=\"qms-scrollbar qmslib-related-popup-splitview qmslib_related_popup_content col-6\"\r\n [ngClass]=\"{\r\n panel__content_item: checkedNodeList.length,\r\n panel__content: !checkedNodeList.length\r\n }\"\r\n >\r\n <div class=\"splitview-header\" *ngIf=\"selectedFolder\">\r\n {{ splitViewTitle }}\r\n </div>\r\n <div class=\"expand-node\" *ngFor=\"let node of itemInSplitview\">\r\n <mat-checkbox\r\n qms-group-options\r\n [disabled]=\"node.disabled\"\r\n color=\"default\"\r\n [checked]=\"isNodeSelected(node)\"\r\n (change)=\"toggleSelectItem(node)\"\r\n ></mat-checkbox>\r\n <mat-icon\r\n class=\"mat-icon-rtl-mirror material-icons-outlined\"\r\n [svgIcon]=\"getNodeIcon(node)\"\r\n ></mat-icon>\r\n <span class=\"text-node\">{{ node.itemName }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"checkedNodeList.length\" class=\"line__divider\"></div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-12 pr-0 pe-0\">\r\n <div *ngIf=\"checkedNodeList.length\" class=\"panel__item qms-scrollbar\">\r\n <div class=\"related__item__inline\" *ngFor=\"let item of checkedNodeList\">\r\n <button\r\n *ngIf=\"item.itemName\"\r\n mat-button\r\n class=\"related__item__content\"\r\n qms-tool-tip=\"{{\r\n isEllipsisActive(itemName) ? getItemChipName(item) : ''\r\n }}\"\r\n mode=\"dark\"\r\n >\r\n <span class=\"related__item__content_name\" #itemName>{{\r\n getItemChipName(item)\r\n }}</span>\r\n <mat-icon\r\n *ngIf=\"!(treeConfig1?.selectOne || treeConfig2?.selectOne)\"\r\n (click)=\"removeCheckedNodeList(item)\"\r\n >cancel</mat-icon\r\n >\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"line__divider\"></div>\r\n\r\n <div class=\"confirm__button__groups\">\r\n <button\r\n *ngIf=\"!checkedNodeList.length\"\r\n qms-btn\r\n style=\"margin-top: 7px\"\r\n (click)=\"onAddClick()\"\r\n >\r\n {{ LANG.ADD }}\r\n </button>\r\n <button\r\n *ngIf=\"checkedNodeList.length\"\r\n qms-btn\r\n style=\"margin-top: 0px\"\r\n (click)=\"onAddClick()\"\r\n >\r\n {{ LANG.ADD }} ({{ checkedNodeList.length }})\r\n </button>\r\n <button\r\n qms-btn-text\r\n [ngStyle]=\"{ 'margin-top': checkedNodeList.length ? '0px' : '7px' }\"\r\n (click)=\"onCloseClick()\"\r\n >\r\n {{ LANG.CANCEL }}\r\n </button>\r\n </div>\r\n</div>\r\n",
7404
+ template: "<div id=\"qmslib_related_popup\" class=\"qmslib__related__popup__container\">\r\n <div id=\"qmslib_related_popup_header\">\r\n <span mat-icon-button class=\"button__close\" (click)=\"onCloseClick()\">\r\n <mat-icon mat-icon>close</mat-icon>\r\n </span>\r\n <div id=\"qmslib_related_popup_header_001\" mat-dialog-content>\r\n <div *ngIf=\"canUploadImage\" class=\"selected-image\">\r\n <span>{{ moduleUploadImageName | uppercase }}</span>\r\n <form>\r\n <mat-form-field qms-form qms-file-upload appearance=\"fill\" class=\"example-width input-upload\">\r\n <mat-icon matPrefix svgIcon=\"upload\"></mat-icon>\r\n <input matInput placeholder=\"Upload file\" [formControl]=\"qmsInputImageType\" [readOnly]=\"true\"\r\n qms-file-upload-display #fileDisplay \r\n value=\"{{qmsInputImageFile? qmsInputImageFile.fileName : ''}}\"\r\n [attr.disabled]=\"isLoadingImageFile ? 'disabled' : null\">\r\n <input hidden type=\"file\" [(inputFile)]=\"qmsInputImageFile\" \r\n qms-file-upload-selector #fileSelector\r\n accept=\".pjp, .jpg, .pjpeg, .jpeg, .jfif, .png, .gif, .bmp, .webp, .tif, .tiff\" \r\n [maxSize]=\"maxVideoThumbnailSizeKB\" (change)=\"onChangeImage($event)\">\r\n\r\n <mat-progress-spinner matSuffix mode=\"indeterminate\" diameter='20'\r\n *ngIf=\"isLoadingImageFile\"></mat-progress-spinner>\r\n <div matSuffix qms-input-clear *ngIf=\"qmsInputImageFile && qmsInputImageFile.fileName\">\r\n <button qms-btn-icon color=\"light\" (click)=\"clearQMSInputImageFile()\" [disabled]=\"isLoadingImageFile\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </div>\r\n\r\n <mat-error *ngIf=\"qmsInputImageFile && qmsInputImageFile.typeError == 1\">\r\n The extension is not supported.\r\n </mat-error>\r\n </mat-form-field>\r\n </form>\r\n </div>\r\n <span>{{ moduleName | uppercase }}</span>\r\n </div>\r\n </div>\r\n\r\n <div id=\"qmslib_related_popup_search\" class=\"input__field\">\r\n <input\r\n type=\"text\"\r\n placeholder=\"{{ LANG.SEARCH }}\"\r\n matInput\r\n [formControl]=\"myControl\"\r\n [matAutocomplete]=\"auto\"\r\n />\r\n <mat-icon>search</mat-icon>\r\n </div>\r\n\r\n <div class=\"line__divider\"></div>\r\n\r\n <mat-autocomplete\r\n #auto=\"matAutocomplete\"\r\n class=\"mat-autocomplete_related-viewport\"\r\n (optionSelected)=\"selectRelated($event.option.value)\"\r\n [displayWith]=\"displayWhenSelectRelatedOption\"\r\n >\r\n <cdk-virtual-scroll-viewport\r\n qms-scrollbar\r\n itemSize=\"10\"\r\n [class.related-viewport]=\"isInputValue\"\r\n *ngIf=\"filteredOptions.length\"\r\n >\r\n <ng-container *ngFor=\"let type of searchOrder\">\r\n <div\r\n class=\"search__module-result\"\r\n *ngIf=\"canShowSearchOption(type.value)\"\r\n >\r\n <span class=\"search__module-title\">{{ getTitle(type.value) }}</span>\r\n <mat-option\r\n class=\"search__option\"\r\n *ngFor=\"let option of getModuleFilteredOptions(type.value)\"\r\n [value]=\"option\"\r\n [disabled]=\"option.disabled\"\r\n >\r\n <qms-list-item type=\"image-square\">\r\n <mat-icon\r\n leading-icon\r\n type=\"image-square\"\r\n [svgIcon]=\"getNodeIcon(option)\"\r\n ></mat-icon>\r\n <div qms-list-header>\r\n <div\r\n qms-line\r\n type=\"caption\"\r\n qms-tool-tip=\"{{\r\n isEllipsisActive(searchItemResult) ? option.parentName : ''\r\n }}\"\r\n mode=\"dark\"\r\n *ngIf=\"getParentName(option)\"\r\n >\r\n <span #searchItemResult class=\"search__result__parent-name\">\r\n {{ option.parentName }}\r\n </span>\r\n </div>\r\n <div qms-line type=\"subtitle\" class=\"search__option-name\">\r\n {{ option.itemName }}\r\n </div>\r\n <div\r\n class=\"caption\"\r\n *ngIf=\"option.breadcumbs && option.breadcumbs.length\"\r\n >\r\n <qms-breadcrumb\r\n class=\"breadcrumb-container\"\r\n type=\"table\"\r\n numDisplayItem=\"1\"\r\n [nodes]=\"option.breadcumbs\"\r\n >\r\n </qms-breadcrumb>\r\n </div>\r\n </div>\r\n <div qms-line color=\"default-subtitle\" *ngIf=\"getItemId(option)\">\r\n <span>\r\n <mat-icon\r\n class=\"material-icons-outlined search__description-icon\"\r\n >local_offer</mat-icon\r\n >\r\n </span>\r\n {{ getItemId(option) }}\r\n </div>\r\n </qms-list-item>\r\n </mat-option>\r\n </div>\r\n </ng-container>\r\n </cdk-virtual-scroll-viewport>\r\n </mat-autocomplete>\r\n\r\n <div class=\"row\">\r\n <div\r\n class=\"qms-scrollbar qmslib_related_popup_content\"\r\n [ngClass]=\"{\r\n panel__content_item: checkedNodeList.length,\r\n panel__content: !checkedNodeList.length,\r\n panel__content_height_with_upload: canUploadImage && !checkedNodeList.length,\r\n panel__content_item_height_with_upload: canUploadImage && checkedNodeList.length,\r\n 'col-6': splitView,\r\n 'col-12': !splitView\r\n }\"\r\n >\r\n <ng-container *ngIf=\"treeData1.length > 0\">\r\n <mat-expansion-panel\r\n hideToggle\r\n id=\"qmslib_related_popup_common_001\"\r\n [expanded]=\"isCommonExpanded\"\r\n (opened)=\"isCommonExpanded = true\"\r\n (closed)=\"isCommonExpanded = false\"\r\n class=\"panel-tree\"\r\n >\r\n <mat-expansion-panel-header class=\"padding-5\">\r\n <mat-panel-title *ngIf=\"moduleId === module.documentProcess\">\r\n {{ LANG.PROCESSES | uppercase }}\r\n </mat-panel-title>\r\n <mat-panel-title *ngIf=\"moduleId === module.deviation\">\r\n {{ LANG.DEVIATION | uppercase }}\r\n </mat-panel-title>\r\n <mat-panel-title *ngIf=\"moduleId === module.checklist\">\r\n {{ LANG.CHECKLIST | uppercase }}\r\n </mat-panel-title>\r\n <mat-panel-title *ngIf=\"moduleId === module.risk\">\r\n {{ LANG.ASSESSMENT | uppercase }}\r\n </mat-panel-title>\r\n <button qms-btn-icon class=\"related_popup_toggle-btn\">\r\n <mat-icon>\r\n {{\r\n isCommonExpanded ? \"keyboard_arrow_up\" : \"keyboard_arrow_down\"\r\n }}\r\n </mat-icon>\r\n </button>\r\n </mat-expansion-panel-header>\r\n <div id=\"qmslib_related_popup_common_002\">\r\n <qms-tree\r\n [treeData]=\"treeData1\"\r\n [treeConfig]=\"treeConfig1\"\r\n [selectedData]=\"selectedData\"\r\n [selectedRiskData]=\"selectedRiskData\"\r\n [disabledList]=\"disabledList\"\r\n (checkBoxEvent)=\"getCommonCheckedNode($event)\"\r\n (nodeExpandEvent)=\"getChildrenOfFolder($event, dataType.area)\"\r\n (selectNodeEvent)=\"selectNodeTreeEvent($event)\"\r\n (getChildNodeSelectOne)=\"getChildNodeSelectOne($event)\"\r\n [expandOnTitleClick]=\"!splitView\"\r\n [parentNodeOnClick]=\"parentNodeSelected\"\r\n (treeControlNodes)=\"selectTreeControlNodeProcess($event)\"\r\n ></qms-tree>\r\n </div>\r\n </mat-expansion-panel>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"treeData2.length > 0\">\r\n <div\r\n *ngIf=\"moduleId === module.documentProcess\"\r\n class=\"line__divider\"\r\n ></div>\r\n\r\n <mat-expansion-panel\r\n hideToggle\r\n *ngIf=\"moduleId === module.documentProcess\"\r\n id=\"qmslib_related_popup_document_001\"\r\n [expanded]=\"isDocumentExpanded\"\r\n (opened)=\"isDocumentExpanded = true\"\r\n (closed)=\"isDocumentExpanded = false\"\r\n class=\"panel-tree\"\r\n >\r\n <mat-expansion-panel-header class=\"padding-5\">\r\n <mat-panel-title>\r\n {{ LANG.DOCUMENTS | uppercase }}\r\n </mat-panel-title>\r\n <button qms-btn-icon class=\"related_popup_toggle-btn\">\r\n <mat-icon>\r\n {{\r\n isDocumentExpanded\r\n ? \"keyboard_arrow_up\"\r\n : \"keyboard_arrow_down\"\r\n }}\r\n </mat-icon>\r\n </button>\r\n </mat-expansion-panel-header>\r\n <div id=\"qmslib_related_popup_document_002\">\r\n <qms-tree\r\n [treeData]=\"treeData2\"\r\n [treeConfig]=\"treeConfig2\"\r\n [selectedData]=\"selectedData2\"\r\n [disabledList]=\"disabledList2\"\r\n (checkBoxEvent)=\"getDocumentCheckedNode($event)\"\r\n (nodeExpandEvent)=\"getChildrenOfFolder($event, dataType.folder)\"\r\n (selectNodeEvent)=\"selectNodeTree2Event($event)\"\r\n (getChildNodeSelectOne)=\"getChildNodeSelectOne($event)\"\r\n [expandOnTitleClick]=\"!splitView\"\r\n [parentNodeOnClick]=\"parentNodeSelected\"\r\n (treeControlNodes)=\"selectTreeControlNodeDocument($event)\"\r\n ></qms-tree>\r\n </div>\r\n </mat-expansion-panel>\r\n </ng-container>\r\n </div>\r\n <div\r\n *ngIf=\"splitView\"\r\n class=\"qms-scrollbar qmslib-related-popup-splitview qmslib_related_popup_content col-6\"\r\n [ngClass]=\"{\r\n panel__content_item: checkedNodeList.length,\r\n panel__content: !checkedNodeList.length\r\n }\"\r\n >\r\n <div class=\"splitview-header\" *ngIf=\"selectedFolder\">\r\n {{ splitViewTitle }}\r\n </div>\r\n <div class=\"expand-node\" *ngFor=\"let node of itemInSplitview\">\r\n <mat-checkbox\r\n qms-group-options\r\n [disabled]=\"node.disabled\"\r\n color=\"default\"\r\n [checked]=\"isNodeSelected(node)\"\r\n (change)=\"toggleSelectItem(node)\"\r\n ></mat-checkbox>\r\n <mat-icon\r\n class=\"mat-icon-rtl-mirror material-icons-outlined\"\r\n [svgIcon]=\"getNodeIcon(node)\"\r\n ></mat-icon>\r\n <span class=\"text-node\">{{ node.itemName }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"checkedNodeList.length\" class=\"line__divider\"></div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-12 pr-0 pe-0\">\r\n <div *ngIf=\"checkedNodeList.length\" class=\"panel__item qms-scrollbar\">\r\n <div class=\"related__item__inline\" *ngFor=\"let item of checkedNodeList\">\r\n <button\r\n *ngIf=\"item.itemName\"\r\n mat-button\r\n class=\"related__item__content\"\r\n qms-tool-tip=\"{{\r\n isEllipsisActive(itemName) ? getItemChipName(item) : ''\r\n }}\"\r\n mode=\"dark\"\r\n >\r\n <span class=\"related__item__content_name\" #itemName>{{\r\n getItemChipName(item)\r\n }}</span>\r\n <mat-icon\r\n *ngIf=\"!(treeConfig1?.selectOne || treeConfig2?.selectOne)\"\r\n (click)=\"removeCheckedNodeList(item)\"\r\n >cancel</mat-icon\r\n >\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"line__divider\"></div>\r\n\r\n <div class=\"confirm__button__groups\">\r\n <button\r\n *ngIf=\"!checkedNodeList.length\"\r\n qms-btn\r\n style=\"margin-top: 7px\"\r\n (click)=\"onAddClick()\"\r\n >\r\n {{ LANG.ADD }}\r\n </button>\r\n <button\r\n *ngIf=\"checkedNodeList.length\"\r\n qms-btn\r\n style=\"margin-top: 0px\"\r\n (click)=\"onAddClick()\"\r\n >\r\n {{ LANG.ADD }} ({{ checkedNodeList.length }})\r\n </button>\r\n <button\r\n qms-btn-text\r\n [ngStyle]=\"{ 'margin-top': checkedNodeList.length ? '0px' : '7px' }\"\r\n (click)=\"onCloseClick()\"\r\n >\r\n {{ LANG.CANCEL }}\r\n </button>\r\n </div>\r\n</div>\r\n",
7336
7405
  encapsulation: ViewEncapsulation.None,
7337
7406
  styles: ["::-webkit-scrollbar{width:12px}::-webkit-scrollbar-track{background:rgba(0,0,0,.12);background-clip:content-box}::-webkit-scrollbar-thumb{background:rgba(0,0,0,.38);border-radius:20px;width:4px;border:4px solid transparent;background-clip:content-box}::-webkit-scrollbar-thumb:hover{background:rgba(0,0,0,.5);background-clip:content-box;border:4px solid transparent}.qms__popup .button__close{float:right;top:-24px;right:-24px;cursor:pointer}.qms__danger button{border:none;color:var(--text-white);padding:0;text-align:center;text-decoration:none;display:inline-block;cursor:pointer;height:20px;width:20px;font-family:Open Sans;font-size:12px;font-weight:600;font-style:normal;line-height:16px}.qms__danger .red{background-color:var(--button-red-background);margin-left:10px}.qms__danger .yellow{background-color:var(--button-yellow-background);margin-left:10px;color:var(--popup-title-color)}.qms__danger .green{background-color:var(--button-green-background);margin-left:10px}.confirm__button__groups{margin-top:11px}.confirm__button__groups button{min-height:36px;width:auto;font-family:Open Sans;font-weight:500;font-size:14px;letter-spacing:1px;line-height:16px;padding-left:15px;padding-right:15px;margin-right:5px;float:right}.confirm__button__groups .confirm{background:var(--button-background)}.confirm__button__groups .confirm:hover{background:var(--primary-button-background-color);color:var(--primary-button-text-color)}.confirm__button__groups .confirm:disabled{cursor:not-allowed}.confirm__button__groups .cancel{background:var(--button-background)}.confirm__button__groups .cancel:hover{background:var(--primary-button-background-color);color:var(--primary-button-text-color)}.qmslib__related__popup__container .input__field{display:flex;align-items:center}.qmslib__related__popup__container .input__field input{width:100%;padding:10px;outline:none;border:none;background:var(--background-input-text)}.qmslib__related__popup__container .input__field .mat-icon{margin-left:-30px;cursor:pointer;vertical-align:middle}.qmslib__related__popup__container .line__divider{border-bottom:1px solid #ccc;height:1px;margin-top:10px;min-width:300px;max-width:100%}.qmslib__related__popup__container .button__close{float:right;top:-24px;right:-24px;cursor:pointer}.qmslib__related__popup__container .panel__content{height:450px;overflow:auto;margin-top:12px}.qmslib__related__popup__container .panel__content_height_with_upload{height:380px}.qmslib__related__popup__container .panel__content_item{height:350px;overflow:auto;margin-top:12px}.qmslib__related__popup__container .panel__content_item_height_with_upload{height:257px}.qmslib__related__popup__container .panel-tree .mat-expansion-panel-body{padding:0 12px 12px}.qmslib__related__popup__container .mat-expansion-panel-header{height:30px;font-size:12px;letter-spacing:1px;font-family:Raleway;font-weight:600;padding:0}.qmslib__related__popup__container .mat-expansion-panel-header .mat-expansion-panel-header-title{align-items:center;margin-left:12px}.qmslib__related__popup__container .mat-expansion-panel-header .related_popup_toggle-btn{width:1.5rem;height:1.5rem;line-height:1.5rem}.qmslib__related__popup__container .mat-expansion-panel:not([class*=mat-elevation-z]){box-shadow:none}.qmslib__related__popup__container .panel__item{height:100px;margin-top:12px;overflow-x:hidden;overflow-y:auto;padding-right:5px;width:100%;max-width:100%;display:flex;flex-wrap:wrap;align-content:flex-start}.qmslib__related__popup__container .panel__item .related__item__inline{max-width:100%}.qmslib__related__popup__container .panel__item .related__item__content{height:32px;line-height:32px;background-color:var(--related-item-background);max-width:100%;margin-bottom:5px;margin-left:2.5px;margin-right:2.5px}.qmslib__related__popup__container .panel__item .related__item__content .mat-icon{color:var(--related-mat-icon-color);font-size:24px}.qmslib__related__popup__container .panel__item .related__item__content span.related__item__content_name{display:inline-block;min-width:calc(100% - 13px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:278px}.qmslib__related__popup__container .qmslib-related-popup-splitview{background-color:#fff;border-left:1px solid #ccc;height:450px;overflow-y:auto;margin-top:12px}.qmslib__related__popup__container .qmslib-related-popup-splitview.panel__content{height:450px;overflow:auto;margin-top:12px}.qmslib__related__popup__container .qmslib-related-popup-splitview.panel__content_item{height:350px;overflow:auto;margin-top:12px}.qmslib__related__popup__container .qmslib-related-popup-splitview .splitview-header{font-size:12px;letter-spacing:1px;font-family:RALEWAY;font-weight:600;display:flex;align-items:center}.qmslib__related__popup__container .qmslib-related-popup-splitview .mat-checkbox.qms-group-options{padding:0}.qmslib__related__popup__container .qmslib-related-popup-splitview .mat-checkbox.qms-group-options .mat-checkbox-inner-container{margin-right:11px}.qmslib__related__popup__container .qmslib-related-popup-splitview .mat-checkbox.qms-group-options.mat-checkbox-checked{background:transparent!important}.qmslib__related__popup__container .qmslib-related-popup-splitview .expand-node{margin-left:8px;display:flex;align-items:center;min-height:40px}.qmslib__related__popup__container .qmslib-related-popup-splitview .expand-node .mat-icon{color:rgba(0,0,0,.6);margin-right:17px;min-width:-webkit-fit-content;min-width:-moz-fit-content;min-width:fit-content}.qmslib__related__popup__container .qmslib-related-popup-splitview .expand-node .mat-icon svg{display:block;min-width:-webkit-fit-content;min-width:-moz-fit-content;min-width:fit-content}cdk-virtual-scroll-viewport{overflow-x:hidden}cdk-virtual-scroll-viewport .search__module-result{margin:1.5rem;padding:0 0 .5rem}cdk-virtual-scroll-viewport .search__module-result .search__module-title{font-size:14px;font-weight:600}cdk-virtual-scroll-viewport .search__module-result .search__option{height:auto;line-height:normal;padding:8px 0;border-bottom:1px solid #e0e0e0}cdk-virtual-scroll-viewport .search__module-result .search__option .qms-list-item.mat-2-line.image-item{height:auto}cdk-virtual-scroll-viewport .search__module-result .search__option .qms-list-item-content{margin:0;border-bottom:none}cdk-virtual-scroll-viewport .search__module-result .search__option .qms-list-item-content .wrap-image.image-square{width:2.5rem;height:100%;background:transparent;align-self:center;margin-right:0}cdk-virtual-scroll-viewport .search__module-result .search__option .qms-list-item-content .wrap-image.image-square img{width:24px;height:24px}cdk-virtual-scroll-viewport .search__module-result .search__option .qms-list-item-content .material-icons-outlined.leading-icon,cdk-virtual-scroll-viewport .search__module-result .search__option .qms-list-item-content mat-icon.leading-icon{padding:4px 0 4px 4px}cdk-virtual-scroll-viewport .search__module-result .search__option .qms-list-item-content .subtitle{font-weight:400}cdk-virtual-scroll-viewport .search__module-result .search__option .qms-list-item-content .caption{overflow:hidden;line-height:normal;white-space:normal;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;padding:0;margin:0}cdk-virtual-scroll-viewport .search__module-result .search__option .qms-list-item-content .caption span.search__result__parent-name{display:inline-block;width:auto;width:calc(100% - 13px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}cdk-virtual-scroll-viewport .search__module-result .search__option .qms-list-item-content .default-subtitle{color:rgba(0,0,0,.38)}cdk-virtual-scroll-viewport .search__module-result .search__option .qms-list-item-content .search__description-icon{margin-right:0;width:12px;height:12px;font-size:12px}cdk-virtual-scroll-viewport .search__module-result .search__option .qms-list-item-content .qms-list-text{border-bottom:none}cdk-virtual-scroll-viewport .search__module-result .search__option .qms-list-item-content .breadcrumb-container .qms-breadcrumb-item .mat-icon{font-size:16px!important;padding-bottom:1px}cdk-virtual-scroll-viewport .search__module-result .mat-option[aria-disabled=true] .breadcrumb-container .qms-breadcrumb-item .mat-icon,cdk-virtual-scroll-viewport .search__module-result .mat-option[aria-disabled=true] .breadcrumb-container .qms-breadcrumb-item-text,cdk-virtual-scroll-viewport .search__module-result .mat-option[aria-disabled=true] .subtitle{color:rgba(0,0,0,.38)}cdk-virtual-scroll-viewport .search__module-result svg{display:block}#qmslib_related_popup_header_001{margin-bottom:20px;padding:0;font-weight:600;font-family:Raleway}#qmslib_related_popup_header_001 .selected-image{display:flex;align-items:center;padding-bottom:10px}#qmslib_related_popup_header_001 .selected-image .input-upload{height:60px;padding-left:30px}.padding-5{padding:5px}.mat-autocomplete_related-viewport{height:100%;max-height:100%!important}.mat-autocomplete_related-viewport .cdk-virtual-scroll-content-wrapper{width:100%}.mat-autocomplete_related-viewport .related-viewport{min-height:300px}"]
7338
7407
  },] }
@@ -7347,6 +7416,7 @@ RelatedPopupComponent.ctorParameters = () => [
7347
7416
  { type: QMSIconRegistryService },
7348
7417
  { type: ElementRef },
7349
7418
  { type: QMSCKEditorUploadService },
7419
+ { type: MatDialog },
7350
7420
  { type: PopupData, decorators: [{ type: Inject, args: [MAT_DIALOG_DATA,] }] }
7351
7421
  ];
7352
7422
  RelatedPopupComponent.propDecorators = {
@@ -7489,13 +7559,14 @@ class RiskListComponent {
7489
7559
  this.updateData = new EventEmitter();
7490
7560
  }
7491
7561
  ngOnChanges(changes) {
7492
- var _a, _b;
7562
+ var _a, _b, _c;
7493
7563
  if (changes.data && JSON.stringify(changes.data.currentValue) !== JSON.stringify(changes.data.previousValue)) {
7494
7564
  this.dangers = [];
7495
7565
  this.title = changes.data.currentValue.title;
7496
7566
  this.isNotEditedItem = (_a = changes.data.currentValue['isNotEditedItem']) !== null && _a !== void 0 ? _a : false;
7497
7567
  this.dangers = [...changes.data.currentValue.data];
7498
7568
  this.show = ((_b = changes.data.currentValue) === null || _b === void 0 ? void 0 : _b.numRow) || 5;
7569
+ this.enableArchive = (_c = changes.data.currentValue) === null || _c === void 0 ? void 0 : _c.enableArchive;
7499
7570
  this.analysisDanger = [];
7500
7571
  this.groupByDanger(changes.data.currentValue.data, 0);
7501
7572
  }
@@ -7619,7 +7690,7 @@ class RiskListComponent {
7619
7690
  RiskListComponent.decorators = [
7620
7691
  { type: Component, args: [{
7621
7692
  selector: 'qms-risk-list',
7622
- template: "<div class=\"container list-risk\">\r\n <div class=\"list-risk__title\">\r\n <strong>{{ title }}</strong>\r\n </div>\r\n <div class=\"list-risk__body\" *ngFor=\"let analysis of analysisDanger\">\r\n <div class=\"list-risk__body-parent\">\r\n <div class=\"block\">\r\n <mat-icon class=\"material-icons-outlined mat-icon\">border_all</mat-icon>\r\n <div class=\"title\">{{ analysis.name }}</div>\r\n </div>\r\n <div class=\"block\" *ngIf=\"!isNotEditedItem\">\r\n <span class=\"label-archived\" *ngIf=\"analysis.folderId == -1\">\r\n {{ LANG.ARCHIVED }}</span\r\n >\r\n <button\r\n *ngIf=\"analysis.folderId !== -1\"\r\n qms-btn-icon\r\n color=\"light\"\r\n qms-tool-tip=\"Caption\"\r\n mode=\"dark\"\r\n (click)=\"editDanger(analysis)\"\r\n >\r\n <mat-icon>edit</mat-icon>\r\n </button>\r\n <button\r\n qms-btn-icon\r\n color=\"light\"\r\n qms-tool-tip=\"Caption\"\r\n mode=\"dark\"\r\n (click)=\"removeDanger(analysis.id)\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n <div\r\n class=\"list-risk__body-child\"\r\n *ngFor=\"let danger of analysis.dangers | slice: 0:analysis.show\"\r\n >\r\n <div class=\"default\">\r\n <div class=\"title\">{{ danger.dangerName }}</div>\r\n <div class=\"group-button\">\r\n <label\r\n class=\"label-red cursor\"\r\n *ngIf=\"danger.red > 0\"\r\n (click)=\"dangerDetail(danger)\"\r\n >{{ danger.red }}</label\r\n >\r\n <label\r\n class=\"label-yellow cursor\"\r\n *ngIf=\"danger.yellow > 0\"\r\n (click)=\"dangerDetail(danger)\"\r\n >{{ danger.yellow }}</label\r\n >\r\n <label\r\n class=\"label-green cursor\"\r\n *ngIf=\"danger.green > 0\"\r\n (click)=\"dangerDetail(danger)\"\r\n >{{ danger.green }}</label\r\n >\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"remain\" *ngIf=\"analysis.remain > 0\">\r\n <span class=\"title cursor\" (click)=\"increaseShow(analysis.id)\"\r\n >+ {{ analysis.remain }}</span\r\n >\r\n </div>\r\n </div>\r\n</div>\r\n",
7693
+ template: "<div class=\"container list-risk\">\r\n <div class=\"list-risk__title\">\r\n <strong>{{ title }}</strong>\r\n </div>\r\n <div class=\"list-risk__body\" *ngFor=\"let analysis of analysisDanger\">\r\n <div class=\"list-risk__body-parent\">\r\n <div class=\"block\">\r\n <mat-icon class=\"material-icons-outlined mat-icon\">border_all</mat-icon>\r\n <div class=\"title\">{{ analysis.name }}</div>\r\n </div>\r\n <div class=\"block\">\r\n <span class=\"label-archived\" *ngIf=\"analysis.folderId == -1 && (!isNotEditedItem || enableArchive)\">\r\n {{ LANG.ARCHIVED }}</span\r\n >\r\n <button\r\n *ngIf=\"analysis.folderId !== -1 && !isNotEditedItem\"\r\n qms-btn-icon\r\n color=\"light\"\r\n qms-tool-tip=\"Caption\"\r\n mode=\"dark\"\r\n (click)=\"editDanger(analysis)\"\r\n >\r\n <mat-icon>edit</mat-icon>\r\n </button>\r\n <button\r\n *ngIf=\"!isNotEditedItem\"\r\n qms-btn-icon\r\n color=\"light\"\r\n qms-tool-tip=\"Caption\"\r\n mode=\"dark\"\r\n (click)=\"removeDanger(analysis.id)\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n <div\r\n class=\"list-risk__body-child\"\r\n *ngFor=\"let danger of analysis.dangers | slice: 0:analysis.show\"\r\n >\r\n <div class=\"default\">\r\n <div class=\"title\">{{ danger.dangerName }}</div>\r\n <div class=\"group-button\">\r\n <label\r\n class=\"label-red cursor\"\r\n *ngIf=\"danger.red > 0\"\r\n (click)=\"dangerDetail(danger)\"\r\n >{{ danger.red }}</label\r\n >\r\n <label\r\n class=\"label-yellow cursor\"\r\n *ngIf=\"danger.yellow > 0\"\r\n (click)=\"dangerDetail(danger)\"\r\n >{{ danger.yellow }}</label\r\n >\r\n <label\r\n class=\"label-green cursor\"\r\n *ngIf=\"danger.green > 0\"\r\n (click)=\"dangerDetail(danger)\"\r\n >{{ danger.green }}</label\r\n >\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"remain\" *ngIf=\"analysis.remain > 0\">\r\n <span class=\"title cursor\" (click)=\"increaseShow(analysis.id)\"\r\n >+ {{ analysis.remain }}</span\r\n >\r\n </div>\r\n </div>\r\n</div>\r\n",
7623
7694
  styles: [".list-risk{font-family:Open Sans;font-style:normal;font-weight:400;color:var(--default-color)}.list-risk .list-risk__title{font-weight:600;font-size:.875rem;line-height:22px;margin-bottom:1rem}.list-risk .list-risk__body .list-risk__body-parent{min-height:48px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #ddd}.list-risk .list-risk__body .list-risk__body-parent .block{font-weight:400;font-size:1rem;line-height:28px;display:flex;align-items:center}.list-risk .list-risk__body .list-risk__body-parent .block .title{margin-left:1.5rem;padding-top:5px;padding-bottom:5px}.list-risk .list-risk__body .list-risk__body-parent .block mat-icon{color:rgba(0,0,0,.6)}.list-risk .list-risk__body .list-risk__body-parent .block button.qms-btn-icon{width:40px;height:40px;line-height:40px}.list-risk .list-risk__body .list-risk__body-parent .block .label-archived{font-weight:600;font-size:.875rem;line-height:1rem;color:#525252;padding:5px;background:linear-gradient(0deg,rgba(0,0,0,.1),rgba(0,0,0,.1)),#fff;border-radius:2px}.list-risk .list-risk__body .list-risk__body-child{font-weight:400;font-size:.875rem;line-height:22px}.list-risk .list-risk__body .list-risk__body-child .default{min-height:48px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #ddd}.list-risk .list-risk__body .list-risk__body-child .default .title{margin-left:3rem}.list-risk .list-risk__body .list-risk__body-child .default .group-button{margin-right:2rem;display:flex}.list-risk .list-risk__body .remain{font-weight:600;font-size:.875rem;line-height:22px;display:flex;align-items:center;justify-content:space-between;background-color:#fafafa;color:var(--primary);min-height:48px;border-bottom:1px solid #ddd}.list-risk .list-risk__body .remain .title{margin-left:3rem}.label-green,.label-red,.label-yellow{font-family:Open Sans;font-style:normal;font-weight:600;display:inline-block;text-align:center;margin-left:1rem;width:24px;height:24px;font-size:.75rem;border-radius:1px}.label-red{background-color:var(--secondary);color:#fff}.label-yellow{background-color:var(--risk-yellow);color:rgba(0,0,0,.87)}.label-green{background-color:var(--risk-green);color:#fff}.cursor{cursor:pointer}"]
7624
7695
  },] }
7625
7696
  ];
@@ -7790,6 +7861,7 @@ class RiskDanger {
7790
7861
  this.data = [];
7791
7862
  this.numRow = 5;
7792
7863
  this.isNotEditedItem = false;
7864
+ this.enableArchive = false;
7793
7865
  }
7794
7866
  }
7795
7867
 
@@ -8542,59 +8614,17 @@ class QMSCKEditorRelatedComponent extends QMSCKEditorBaseComponent {
8542
8614
  this.selectedNode.id = id;
8543
8615
  this.selectedNode.type = QMSCKEditorDocumentType.folder;
8544
8616
  }
8545
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
8546
- isMatchTrue(arr, arr2) {
8547
- return arr.every((i) => {
8548
- return arr2.includes(i);
8549
- });
8550
- }
8551
8617
  onSearchRelated(_val) {
8552
8618
  const arr = [];
8553
8619
  let data = [];
8554
- if (typeof _val !== 'string') {
8555
- return arr;
8556
- }
8557
- const val = _val
8558
- .trim()
8559
- .split(' ')
8560
- .map((v) => {
8561
- return v.toLowerCase();
8562
- });
8563
- if (!val || val.length === 0) {
8620
+ if (typeof _val !== 'string' || !(_val === null || _val === void 0 ? void 0 : _val.trim().length)) {
8564
8621
  return arr;
8565
8622
  }
8623
+ let val = _val.trim().toLowerCase();
8566
8624
  if (!this.isOnlyDocument) {
8567
- data = this.processData.filter((item) => {
8568
- const tempArr = item.childName.split(' ').map((v) => {
8569
- return v.toLowerCase();
8570
- });
8571
- return this.isMatchTrue(val, tempArr);
8572
- });
8573
- if (data) {
8574
- data.forEach((element) => {
8575
- arr.push({
8576
- id: element.childId,
8577
- name: element.childName,
8578
- type: 2
8579
- });
8580
- });
8581
- }
8582
- }
8583
- data = this.documentData.filter((item) => {
8584
- const tempArr = item.childName.split(' ').map((v) => {
8585
- return v.toLowerCase();
8586
- });
8587
- return this.isMatchTrue(val, tempArr);
8588
- });
8589
- if (data) {
8590
- data.forEach((element) => {
8591
- arr.push({
8592
- id: element.childId,
8593
- name: element.childName,
8594
- type: 1
8595
- });
8596
- });
8625
+ this.createSearchItem(arr, this.processData, QMSCKEditorDocumentType.process, val);
8597
8626
  }
8627
+ this.createSearchItem(arr, this.documentData, QMSCKEditorDocumentType.document, val);
8598
8628
  this.setResultHeight(arr);
8599
8629
  return arr;
8600
8630
  }
@@ -8645,6 +8675,18 @@ class QMSCKEditorRelatedComponent extends QMSCKEditorBaseComponent {
8645
8675
  }
8646
8676
  }
8647
8677
  }
8678
+ createSearchItem(result, data, documentType, searchKey) {
8679
+ data.forEach((item) => {
8680
+ if (item.childName.toLowerCase().includes(searchKey) || item.displayId.toString().includes(searchKey)) {
8681
+ result.push({
8682
+ id: item.childId,
8683
+ name: item.childName,
8684
+ type: documentType
8685
+ });
8686
+ }
8687
+ ;
8688
+ });
8689
+ }
8648
8690
  }
8649
8691
  QMSCKEditorRelatedComponent.decorators = [
8650
8692
  { type: Component, args: [{
@@ -9081,11 +9123,18 @@ class QMSCKEditorLinkComponent extends QMSCKEditorBaseComponent {
9081
9123
  getProtocolName() {
9082
9124
  return ProtocolTypeName[ProtocolType[this.selectedProtocol]];
9083
9125
  }
9126
+ setLinkUrlType($event) {
9127
+ if ($event)
9128
+ $event.preventDefault();
9129
+ if (this.linkFormGroup.invalid)
9130
+ return;
9131
+ this.setLink();
9132
+ }
9084
9133
  }
9085
9134
  QMSCKEditorLinkComponent.decorators = [
9086
9135
  { type: Component, args: [{
9087
9136
  selector: "qms-ckeditor-link",
9088
- template: "<div id=\"qmsckeditor_link\" class=\"qmsckeditor qmsckeditor__link__container\">\r\n <div id=\"qmsckeditor_link_header\">\r\n <span id=\"qmsckeditor_link_header_001\" mat-icon-button class=\"qmsckeditor button__close\" (click)=\"onCloseDialog()\">\r\n <mat-icon>close</mat-icon>\r\n </span>\r\n <div id=\"qmsckeditor_link_header_002\" mat-dialog-content>\r\n <h2 id=\"qmsckeditor_link_header_001\">\r\n {{ LANG.QMSCKEDITOR.LINK }}\r\n </h2>\r\n </div>\r\n </div>\r\n <div id=\"qmsckeditor_link_type\" class=\"row\">\r\n <mat-form-field appearance=\"fill\" class=\"col-12 pl-3 pr-3 ps-3 pe-3\">\r\n <mat-label>{{ LANG.QMSCKEDITOR.LINK_TYPE }}</mat-label>\r\n <mat-select disableOptionCentering name=\"linkTypeList\" [(ngModel)]=\"selectedLinkType\"\r\n (ngModelChange)=\"onSelectedLinkType()\">\r\n <mat-option *ngFor=\"let link of linkTypes\" [value]=\"link.id\">\r\n {{ link.name }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n\r\n <div id=\"qmsckeditor_link_content\">\r\n <form [formGroup]=\"linkFormGroup\" class=\"qmsckeditor link__content height row\"\r\n *ngIf=\"selectedLinkType == LinkType.url\">\r\n <div id=\"qmsckeditor_link_url\" class=\"col-12 mt-1 pl-3 pr-3 ps-3 pe-3\">\r\n <mat-expansion-panel id=\"qmsckeditor_link_url_panel\" [expanded]=\"isExpanded\" (opened)=\"isExpanded = true\"\r\n (closed)=\"isExpanded = false\">\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n {{ LANG.QMSCKEDITOR.URL_HEADER }}\r\n </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <div id=\"qmsckeditor_link_url_001\" class=\"row mt-2\">\r\n <mat-form-field appearance=\"fill\" class=\"col-12 pl-3 pr-3 ps-3 pe-3\">\r\n <mat-label>{{ LANG.QMSCKEDITOR.TARGET }}</mat-label>\r\n <mat-select [(ngModel)]=\"selectedTarget\" formControlName=\"targetList\" disableOptionCentering>\r\n <mat-option *ngFor=\"let target of targets\" [value]=\"target.id\">\r\n {{ target.name }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n <div id=\"qmsckeditor_link_url_002\" class=\"row\">\r\n <mat-form-field appearance=\"fill\" class=\"col-12 pl-3 pr-3 ps-3 pe-3\">\r\n <mat-label>{{ LANG.QMSCKEDITOR.PROTOCOL }}</mat-label>\r\n <mat-select [(ngModel)]=\"selectedProtocol\" formControlName=\"protocolList\" disableOptionCentering>\r\n <mat-option *ngFor=\"let protocol of protocols\" [value]=\"protocol.id\">\r\n {{ protocol.name }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n <div id=\"qmsckeditor_link_url_003\" class=\"row\">\r\n <mat-form-field class=\"col-12 pl-3 pr-3 ps-3 pe-3\" appearance=\"fill\">\r\n <mat-label>{{ LANG.QMSCKEDITOR.LINK_URL }}</mat-label>\r\n <input matInput [(ngModel)]=\"url\" name=\"url\" formControlName=\"url\"\r\n (ngModelChange)=\"getUrlToSetProtocol()\" />\r\n <mat-error *ngIf=\"linkFormGroup.get('url').hasError('required')\" class=\"mt5\">\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n <div id=\"qmsckeditor_link_url_004\" class=\"row\">\r\n <mat-form-field class=\"col-12 pl-3 pr-3 ps-3 pe-3\" appearance=\"fill\">\r\n <mat-label>{{ LANG.QMSCKEDITOR.TITLE }}</mat-label>\r\n <input matInput [(ngModel)]=\"advisoryTitle\" formControlName=\"advisoryTitle\" />\r\n <mat-error *ngIf=\"linkFormGroup.get('advisoryTitle').hasError('required')\" class=\"mt5\">\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n <div id=\"qmsckeditor_link_url_005\" class=\"qmsckeditor button__groups row\">\r\n <div class=\"col-6 pl-3 ps-3\">\r\n <button class=\"save\" mat-flat-button (click)=\"eHandbook(false, false)\">\r\n {{ LANG.QMSCKEDITOR.DOCUMENT_PROCESS }}\r\n </button>\r\n </div>\r\n <div class=\"col-6 pr-3 pe-3\">\r\n <button class=\"save\" mat-flat-button (click)=\"attachment()\">\r\n {{ LANG.QMSCKEDITOR.ATTACHMENT }}\r\n </button>\r\n </div>\r\n </div>\r\n </mat-expansion-panel>\r\n </div>\r\n </form>\r\n\r\n <form [formGroup]=\"anchorTextFormGroup\" class=\"qmsckeditor link__content height row\"\r\n *ngIf=\"selectedLinkType == LinkType.anchorText\">\r\n <div id=\"qmsckeditor_link_anchor_text\" class=\"col-12 mt-1 pl-3 pr-3 ps-3 pe-3\">\r\n <mat-expansion-panel id=\"qmsckeditor_link_anchor_text_panel\" [expanded]=\"isExpanded\"\r\n (opened)=\"isExpanded = true\" (closed)=\"isExpanded = false\">\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n {{ LANG.QMSCKEDITOR.ANCHOR_TEXT_HEADER }}\r\n </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <div id=\"qmsckeditor_link_anchor_text_001\" class=\"row mt-2\">\r\n <mat-form-field appearance=\"fill\" class=\"col-12 pl-3 pr-3 ps-3 pe-3\">\r\n <mat-label>{{ LANG.QMSCKEDITOR.ANCHOR_BY_NAME }}</mat-label>\r\n <mat-select [(ngModel)]=\"anchorText\" formControlName=\"anchorText\">\r\n <mat-option *ngFor=\"let editorAnchor of editorAnchors\" [value]=\"editorAnchor.anchorValue\"\r\n disableOptionCentering>\r\n {{ editorAnchor.viewValue }}\r\n </mat-option>\r\n </mat-select>\r\n <mat-error *ngIf=\"\r\n anchorTextFormGroup.get('anchorText').hasError('required')\r\n \" class=\"mt5\">\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n </mat-expansion-panel>\r\n </div>\r\n </form>\r\n\r\n <form [formGroup]=\"emailFormGroup\" class=\"qmsckeditor link__content height row\"\r\n *ngIf=\"selectedLinkType == LinkType.email\">\r\n <div id=\"qmsckeditor_link_email\" class=\"col-12 mt-1 pl-3 pr-3 ps-3 pe-3\">\r\n <mat-expansion-panel id=\"qmsckeditor_link_email_panel\" [expanded]=\"isExpanded\" (opened)=\"isExpanded = true\"\r\n (closed)=\"isExpanded = false\">\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n {{ LANG.QMSCKEDITOR.EMAIL_HEADER }}\r\n </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <div id=\"qmsckeditor_link_email_001\" class=\"row\">\r\n <mat-form-field class=\"col-12 pl-3 pr-3 ps-3 pe-3\" appearance=\"fill\">\r\n <mat-label>{{ LANG.QMSCKEDITOR.EMAIL_ADDRESS }}</mat-label>\r\n <input matInput [(ngModel)]=\"emailAddress\" formControlName=\"emailAddress\" />\r\n <mat-error *ngIf=\"emailFormGroup.get('emailAddress').hasError('required')\" class=\"mt5\">\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n <div id=\"qmsckeditor_link_email_002\" class=\"row\">\r\n <mat-form-field class=\"col-12 pl-3 pr-3 ps-3 pe-3\" appearance=\"fill\">\r\n <mat-label>{{ LANG.QMSCKEDITOR.EMAIL_SUBJECT }}</mat-label>\r\n <input matInput [(ngModel)]=\"emailSubject\" formControlName=\"emailSubject\" />\r\n <mat-error *ngIf=\"emailFormGroup.get('emailSubject').hasError('required')\" class=\"mt5\">\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n <div id=\"qmsckeditor_link_email_003\" class=\"row\">\r\n <mat-form-field class=\"col-12 pl-3 pr-3 ps-3 pe-3\" appearance=\"fill\">\r\n <mat-label>{{ LANG.QMSCKEDITOR.EMAIL_BODY }}</mat-label>\r\n <textarea matInput [(ngModel)]=\"emailBody\" formControlName=\"emailBody\"></textarea>\r\n <mat-error *ngIf=\"emailFormGroup.get('emailBody').hasError('required')\" class=\"mt5\">\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n </mat-expansion-panel>\r\n </div>\r\n </form>\r\n\r\n <form [formGroup]=\"anchorDocFormGroup\" class=\"qmsckeditor link__content height row\"\r\n *ngIf=\"selectedLinkType == LinkType.anchorDocument\">\r\n <div id=\"qmsckeditor_link_anchor_doc\" class=\"col-12 mt-1 pl-3 pr-3 ps-3 pe-3\">\r\n <mat-expansion-panel id=\"qmsckeditor_link_email_panel\" [expanded]=\"isExpanded\" (opened)=\"isExpanded = true\"\r\n (closed)=\"isExpanded = false\">\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n {{ LANG.QMSCKEDITOR.DOCUMENT_HEADER }}\r\n </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <div id=\"qmsckeditor_link_anchor_doc_001\" class=\"qmsckeditor button__groups row\">\r\n <div class=\"col-6 pl-3 ps-3\">\r\n <button class=\"cancel\" mat-flat-button (click)=\"eHandbook(true, true)\">\r\n {{ LANG.QMSCKEDITOR.DOCUMENT }}\r\n </button>\r\n </div>\r\n </div>\r\n <div id=\"qmsckeditor_link_anchor_doc_002\" class=\"row mt-4\">\r\n <mat-form-field class=\"col-12 pl-3 pr-3 ps-3 pe-3\" appearance=\"fill\">\r\n <mat-label>{{ LANG.QMSCKEDITOR.DOCUMENT }}</mat-label>\r\n <input matInput [(ngModel)]=\"anchorTitle\" formControlName=\"anchorTitle\" />\r\n <mat-error *ngIf=\"\r\n anchorDocFormGroup.get('anchorTitle').hasError('required')\r\n \" class=\"mt5\">\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n <div id=\"qmsckeditor_link_anchor_doc_003\" class=\"row mt-2\">\r\n <mat-form-field appearance=\"fill\" class=\"col-12 pl-3 pr-3 ps-3 pe-3\">\r\n <mat-label>{{ LANG.QMSCKEDITOR.ANCHOR_BY_NAME }}</mat-label>\r\n <mat-select [(ngModel)]=\"anchorByName\" formControlName=\"anchorByName\" disableOptionCentering>\r\n <mat-option *ngFor=\"let docAnchor of documentAnchors\" [value]=\"docAnchor.anchorValue\">\r\n {{ docAnchor.viewValue }}\r\n </mat-option>\r\n </mat-select>\r\n <mat-error *ngIf=\"\r\n anchorDocFormGroup.get('anchorByName').hasError('required')\r\n \" class=\"mt5\">\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n </mat-expansion-panel>\r\n </div>\r\n </form>\r\n </div>\r\n\r\n <div id=\"qmsckeditor_link_footer\" class=\"qmsckeditor button__groups row\">\r\n <div class=\"col-12 mt-3 pl-3 pr-3 ps-3 pe-3\">\r\n <button class=\"save\" mat-flat-button (click)=\"setLink()\" [disabled]=\"disableOkButton()\">\r\n {{ LANG.QMSCKEDITOR.OK }}\r\n </button>\r\n </div>\r\n </div>\r\n</div>",
9137
+ template: "<div id=\"qmsckeditor_link\" class=\"qmsckeditor qmsckeditor__link__container\">\r\n <div id=\"qmsckeditor_link_header\">\r\n <span id=\"qmsckeditor_link_header_001\" mat-icon-button class=\"qmsckeditor button__close\" (click)=\"onCloseDialog()\">\r\n <mat-icon>close</mat-icon>\r\n </span>\r\n <div id=\"qmsckeditor_link_header_002\" mat-dialog-content>\r\n <h2 id=\"qmsckeditor_link_header_001\">\r\n {{ LANG.QMSCKEDITOR.LINK }}\r\n </h2>\r\n </div>\r\n </div>\r\n <div id=\"qmsckeditor_link_type\" class=\"row\">\r\n <mat-form-field appearance=\"fill\" class=\"col-12 pl-3 pr-3 ps-3 pe-3\">\r\n <mat-label>{{ LANG.QMSCKEDITOR.LINK_TYPE }}</mat-label>\r\n <mat-select disableOptionCentering name=\"linkTypeList\" [(ngModel)]=\"selectedLinkType\"\r\n (ngModelChange)=\"onSelectedLinkType()\">\r\n <mat-option *ngFor=\"let link of linkTypes\" [value]=\"link.id\">\r\n {{ link.name }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n\r\n <div id=\"qmsckeditor_link_content\">\r\n <form [formGroup]=\"linkFormGroup\" class=\"qmsckeditor link__content height row\"\r\n *ngIf=\"selectedLinkType == LinkType.url\">\r\n <div id=\"qmsckeditor_link_url\" class=\"col-12 mt-1 pl-3 pr-3 ps-3 pe-3\">\r\n <mat-expansion-panel id=\"qmsckeditor_link_url_panel\" [expanded]=\"isExpanded\" (opened)=\"isExpanded = true\"\r\n (closed)=\"isExpanded = false\">\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n {{ LANG.QMSCKEDITOR.URL_HEADER }}\r\n </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <div id=\"qmsckeditor_link_url_001\" class=\"row mt-2\">\r\n <mat-form-field appearance=\"fill\" class=\"col-12 pl-3 pr-3 ps-3 pe-3\">\r\n <mat-label>{{ LANG.QMSCKEDITOR.TARGET }}</mat-label>\r\n <mat-select [(ngModel)]=\"selectedTarget\" formControlName=\"targetList\" disableOptionCentering>\r\n <mat-option *ngFor=\"let target of targets\" [value]=\"target.id\">\r\n {{ target.name }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n <div id=\"qmsckeditor_link_url_002\" class=\"row\">\r\n <mat-form-field appearance=\"fill\" class=\"col-12 pl-3 pr-3 ps-3 pe-3\">\r\n <mat-label>{{ LANG.QMSCKEDITOR.PROTOCOL }}</mat-label>\r\n <mat-select [(ngModel)]=\"selectedProtocol\" formControlName=\"protocolList\" disableOptionCentering>\r\n <mat-option *ngFor=\"let protocol of protocols\" [value]=\"protocol.id\">\r\n {{ protocol.name }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n <div id=\"qmsckeditor_link_url_003\" class=\"row\">\r\n <mat-form-field class=\"col-12 pl-3 pr-3 ps-3 pe-3\" appearance=\"fill\">\r\n <mat-label>{{ LANG.QMSCKEDITOR.LINK_URL }}</mat-label>\r\n <input matInput [(ngModel)]=\"url\" name=\"url\" formControlName=\"url\"\r\n (ngModelChange)=\"getUrlToSetProtocol()\" (keydown.enter)=\"setLinkUrlType($event)\" />\r\n <mat-error *ngIf=\"linkFormGroup.get('url').hasError('required')\" class=\"mt5\">\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n <div id=\"qmsckeditor_link_url_004\" class=\"row\">\r\n <mat-form-field class=\"col-12 pl-3 pr-3 ps-3 pe-3\" appearance=\"fill\">\r\n <mat-label>{{ LANG.QMSCKEDITOR.TITLE }}</mat-label>\r\n <input matInput [(ngModel)]=\"advisoryTitle\" formControlName=\"advisoryTitle\" />\r\n <mat-error *ngIf=\"linkFormGroup.get('advisoryTitle').hasError('required')\" class=\"mt5\">\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n <div id=\"qmsckeditor_link_url_005\" class=\"qmsckeditor button__groups row\">\r\n <div class=\"col-6 pl-3 ps-3\">\r\n <button class=\"save\" mat-flat-button (click)=\"eHandbook(false, false)\">\r\n {{ LANG.QMSCKEDITOR.DOCUMENT_PROCESS }}\r\n </button>\r\n </div>\r\n <div class=\"col-6 pr-3 pe-3\">\r\n <button class=\"save\" mat-flat-button (click)=\"attachment()\">\r\n {{ LANG.QMSCKEDITOR.ATTACHMENT }}\r\n </button>\r\n </div>\r\n </div>\r\n </mat-expansion-panel>\r\n </div>\r\n </form>\r\n\r\n <form [formGroup]=\"anchorTextFormGroup\" class=\"qmsckeditor link__content height row\"\r\n *ngIf=\"selectedLinkType == LinkType.anchorText\">\r\n <div id=\"qmsckeditor_link_anchor_text\" class=\"col-12 mt-1 pl-3 pr-3 ps-3 pe-3\">\r\n <mat-expansion-panel id=\"qmsckeditor_link_anchor_text_panel\" [expanded]=\"isExpanded\"\r\n (opened)=\"isExpanded = true\" (closed)=\"isExpanded = false\">\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n {{ LANG.QMSCKEDITOR.ANCHOR_TEXT_HEADER }}\r\n </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <div id=\"qmsckeditor_link_anchor_text_001\" class=\"row mt-2\">\r\n <mat-form-field appearance=\"fill\" class=\"col-12 pl-3 pr-3 ps-3 pe-3\">\r\n <mat-label>{{ LANG.QMSCKEDITOR.ANCHOR_BY_NAME }}</mat-label>\r\n <mat-select [(ngModel)]=\"anchorText\" formControlName=\"anchorText\">\r\n <mat-option *ngFor=\"let editorAnchor of editorAnchors\" [value]=\"editorAnchor.anchorValue\"\r\n disableOptionCentering>\r\n {{ editorAnchor.viewValue }}\r\n </mat-option>\r\n </mat-select>\r\n <mat-error *ngIf=\"\r\n anchorTextFormGroup.get('anchorText').hasError('required')\r\n \" class=\"mt5\">\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n </mat-expansion-panel>\r\n </div>\r\n </form>\r\n\r\n <form [formGroup]=\"emailFormGroup\" class=\"qmsckeditor link__content height row\"\r\n *ngIf=\"selectedLinkType == LinkType.email\">\r\n <div id=\"qmsckeditor_link_email\" class=\"col-12 mt-1 pl-3 pr-3 ps-3 pe-3\">\r\n <mat-expansion-panel id=\"qmsckeditor_link_email_panel\" [expanded]=\"isExpanded\" (opened)=\"isExpanded = true\"\r\n (closed)=\"isExpanded = false\">\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n {{ LANG.QMSCKEDITOR.EMAIL_HEADER }}\r\n </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <div id=\"qmsckeditor_link_email_001\" class=\"row\">\r\n <mat-form-field class=\"col-12 pl-3 pr-3 ps-3 pe-3\" appearance=\"fill\">\r\n <mat-label>{{ LANG.QMSCKEDITOR.EMAIL_ADDRESS }}</mat-label>\r\n <input matInput [(ngModel)]=\"emailAddress\" formControlName=\"emailAddress\" />\r\n <mat-error *ngIf=\"emailFormGroup.get('emailAddress').hasError('required')\" class=\"mt5\">\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n <div id=\"qmsckeditor_link_email_002\" class=\"row\">\r\n <mat-form-field class=\"col-12 pl-3 pr-3 ps-3 pe-3\" appearance=\"fill\">\r\n <mat-label>{{ LANG.QMSCKEDITOR.EMAIL_SUBJECT }}</mat-label>\r\n <input matInput [(ngModel)]=\"emailSubject\" formControlName=\"emailSubject\" />\r\n <mat-error *ngIf=\"emailFormGroup.get('emailSubject').hasError('required')\" class=\"mt5\">\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n <div id=\"qmsckeditor_link_email_003\" class=\"row\">\r\n <mat-form-field class=\"col-12 pl-3 pr-3 ps-3 pe-3\" appearance=\"fill\">\r\n <mat-label>{{ LANG.QMSCKEDITOR.EMAIL_BODY }}</mat-label>\r\n <textarea matInput [(ngModel)]=\"emailBody\" formControlName=\"emailBody\"></textarea>\r\n <mat-error *ngIf=\"emailFormGroup.get('emailBody').hasError('required')\" class=\"mt5\">\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n </mat-expansion-panel>\r\n </div>\r\n </form>\r\n\r\n <form [formGroup]=\"anchorDocFormGroup\" class=\"qmsckeditor link__content height row\"\r\n *ngIf=\"selectedLinkType == LinkType.anchorDocument\">\r\n <div id=\"qmsckeditor_link_anchor_doc\" class=\"col-12 mt-1 pl-3 pr-3 ps-3 pe-3\">\r\n <mat-expansion-panel id=\"qmsckeditor_link_email_panel\" [expanded]=\"isExpanded\" (opened)=\"isExpanded = true\"\r\n (closed)=\"isExpanded = false\">\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n {{ LANG.QMSCKEDITOR.DOCUMENT_HEADER }}\r\n </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <div id=\"qmsckeditor_link_anchor_doc_001\" class=\"qmsckeditor button__groups row\">\r\n <div class=\"col-6 pl-3 ps-3\">\r\n <button class=\"cancel\" mat-flat-button (click)=\"eHandbook(true, true)\">\r\n {{ LANG.QMSCKEDITOR.DOCUMENT }}\r\n </button>\r\n </div>\r\n </div>\r\n <div id=\"qmsckeditor_link_anchor_doc_002\" class=\"row mt-4\">\r\n <mat-form-field class=\"col-12 pl-3 pr-3 ps-3 pe-3\" appearance=\"fill\">\r\n <mat-label>{{ LANG.QMSCKEDITOR.DOCUMENT }}</mat-label>\r\n <input matInput [(ngModel)]=\"anchorTitle\" formControlName=\"anchorTitle\" />\r\n <mat-error *ngIf=\"\r\n anchorDocFormGroup.get('anchorTitle').hasError('required')\r\n \" class=\"mt5\">\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n <div id=\"qmsckeditor_link_anchor_doc_003\" class=\"row mt-2\">\r\n <mat-form-field appearance=\"fill\" class=\"col-12 pl-3 pr-3 ps-3 pe-3\">\r\n <mat-label>{{ LANG.QMSCKEDITOR.ANCHOR_BY_NAME }}</mat-label>\r\n <mat-select [(ngModel)]=\"anchorByName\" formControlName=\"anchorByName\" disableOptionCentering>\r\n <mat-option *ngFor=\"let docAnchor of documentAnchors\" [value]=\"docAnchor.anchorValue\">\r\n {{ docAnchor.viewValue }}\r\n </mat-option>\r\n </mat-select>\r\n <mat-error *ngIf=\"\r\n anchorDocFormGroup.get('anchorByName').hasError('required')\r\n \" class=\"mt5\">\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n </mat-expansion-panel>\r\n </div>\r\n </form>\r\n </div>\r\n\r\n <div id=\"qmsckeditor_link_footer\" class=\"qmsckeditor button__groups row\">\r\n <div class=\"col-12 mt-3 pl-3 pr-3 ps-3 pe-3\">\r\n <button class=\"save\" mat-flat-button (click)=\"setLink()\" [disabled]=\"disableOkButton()\">\r\n {{ LANG.QMSCKEDITOR.OK }}\r\n </button>\r\n </div>\r\n </div>\r\n</div>",
9089
9138
  styles: [".mt5{margin-top:5px!important}.mt10{margin-top:10px!important}.mt7{margin-top:7px!important}.mt15{margin-top:15px!important}.mt20{margin-top:20px!important}.mt30{margin-top:30px!important}.mt40{margin-top:40px!important}.ml2{margin-left:2px!important}.ml3{margin-left:3px!important}.ml5{margin-left:5px!important}.ml15{margin-left:15px!important}.ml10{margin-left:10px!important}.ml12{margin-left:12px!important}.ml16{margin-left:16px!important}.ml-auto{margin-left:auto!important}.ml-25{margin-left:-25px!important}.mr5{margin-right:5px!important}.mr12{margin-right:12px!important}.mr15{margin-right:15px!important}.mb5{margin-bottom:5px!important}.mb10{margin-bottom:10px!important}.mb15{margin-bottom:15px!important}.pt8{padding-top:8px!important}.pt10{padding-top:10px!important}.pt15{padding-top:15px!important}.pt16{padding-top:16px!important}.pl15{padding-left:15px!important}.pl0{padding-left:0!important}.pr0{padding-right:0!important}.pr15{padding-right:15px!important}.fs12{font-size:12px}.fs14{font-size:14px!important}.fs16{font-size:16px!important}.fs22{font-size:22px!important}.fw500{font-weight:500!important}.italic-text{font-style:italic}.display-flex{display:flex}.qmsckeditor{font-family:Roboto,Helvetica Neue,sans-serif;font-size:14px;font-weight:400}.qmsckeditor h2{font-size:20px;font-weight:400}.qmsckeditor .mat-dialog-content{padding:0}.qmsckeditor .mat-icon{color:#909497}.qmsckeditor__fullscreen{position:fixed;top:0;left:0;right:0;bottom:0;background:#fff;overflow-y:auto;max-height:100vh;overflow-x:hidden}.qmsckeditor__cursor{cursor:pointer}.qmsckeditor__notallowed{cursor:not-allowed}.qmsckeditor.button__close,.qmsckeditor.button__done{float:right;top:-24px;right:-24px;cursor:pointer}.qmsckeditor.button__done{margin-right:20px}.qmsckeditor.button__done .mat-icon{color:#28a745;font-weight:700}.qmsckeditor.button__groups button{min-height:40px;width:100%;border-radius:4px;border:1px solid #c5c5c5;font-family:Open Sans;font-weight:600;font-size:14px;letter-spacing:1px;line-height:16px}.qmsckeditor.button__groups .save{background:#f8f9f9}.qmsckeditor.button__groups .save:hover{background:#e5e7e9}.qmsckeditor.button__groups .save:disabled{cursor:not-allowed}.qmsckeditor.button__groups .cancel{background:#f8f9f9}.qmsckeditor.button__groups .cancel:hover{background:#e5e7e9}.qmsckeditor.button__groups .cancel:disabled{cursor:not-allowed}.qmsckeditor.button__groups .delete{background:#f8f9f9}.qmsckeditor.button__groups .delete:hover{background:#e5e7e9}.qmsckeditor.button__groups .delete:disabled{cursor:not-allowed}.qmsckeditor.confirm__button__groups button{min-height:36px;border-radius:4px;width:auto;border:1px solid #c5c5c5;font-family:Open Sans;font-weight:600;font-size:14px;letter-spacing:1px;line-height:16px;padding-left:15px;padding-right:15px}.qmsckeditor.confirm__button__groups .confirm{background:#f8f9f9}.qmsckeditor.confirm__button__groups .confirm:hover{background:#e5e7e9}.qmsckeditor.confirm__button__groups .cancel{background:#f8f9f9}.qmsckeditor.confirm__button__groups .cancel:hover{background:#e5e7e9}.qmsckeditor.template-content.height{min-height:420px;max-height:520px;overflow:auto}.qmsckeditor.template-content.title{margin-left:-9px}.qmsckeditor.link__content.height{min-height:400px;max-height:520px}.qmsckeditor.card{margin-bottom:10px;min-height:60px;box-shadow:none;border:1px solid #e5e5e5}.qmsckeditor.card .title{font-weight:700}.qmsckeditor.card .content{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.qmsckeditor.card .material-icons{font-size:20px}.qmsckeditor.tooltip-content.height{min-height:400px;max-height:472px;overflow:auto}.qmsckeditor.save__as__template.height{height:125px}.ck-content .ck-horizontal-line,.ck-content .page-break{width:100%}.ck-content hr{background:#ccc}.ck-font-size-dropdown .ck-dropdown__panel ul{max-height:320px;overflow-y:auto}.ck-font-size-dropdown .ck-dropdown__panel ul li .ck-fontsize-option .ck-button__label{line-height:50px}.qmsckeditor__link__container textarea.mat-input-element{min-height:130px}"]
9090
9139
  },] }
9091
9140
  ];
@@ -9176,7 +9225,8 @@ class QMSCKEditorTemplate {
9176
9225
  this.id = 0;
9177
9226
  this.title = '';
9178
9227
  this.description = '';
9179
- this.content = '';
9228
+ this.html = '';
9229
+ this.imageId = 0;
9180
9230
  this.deleted = false;
9181
9231
  this.createdBy = 0;
9182
9232
  this.edit = false;
@@ -9184,14 +9234,17 @@ class QMSCKEditorTemplate {
9184
9234
  }
9185
9235
 
9186
9236
  class QMSCKEditorTemplateService extends QMSCKEditorBaseService {
9187
- deleteTemplate(id) {
9188
- return this.delete('ckeditorTemplate/DeleteTemplate', { id });
9237
+ deleteTemplate(ids) {
9238
+ return this.post('EditorTemplate/Delete', ids);
9189
9239
  }
9190
9240
  getTemplate() {
9191
- return this.get('ckeditorTemplate/GetTemplateList');
9241
+ return this.get('EditorTemplate/GetAll');
9192
9242
  }
9193
9243
  modifyTemplate(template) {
9194
- return this.post('ckeditorTemplate/ModifyTemplate', template);
9244
+ return this.post('EditorTemplate/Save', template);
9245
+ }
9246
+ getImageIdByExtraId(extraId) {
9247
+ return this.get('File/GetImageIdByExtraId', { extraId });
9195
9248
  }
9196
9249
  }
9197
9250
  QMSCKEditorTemplateService.ɵprov = i0.ɵɵdefineInjectable({ factory: function QMSCKEditorTemplateService_Factory() { return new QMSCKEditorTemplateService(i0.ɵɵinject(i1$1.HttpClient), i0.ɵɵinject(QMSCKEditorGlobalService)); }, token: QMSCKEditorTemplateService, providedIn: "root" });
@@ -9202,7 +9255,7 @@ QMSCKEditorTemplateService.decorators = [
9202
9255
  ];
9203
9256
 
9204
9257
  class QMSCKEditorTemplateComponent extends QMSCKEditorBaseComponent {
9205
- constructor(cdr, dialog, translate, templateService, commonService, dialogRef, data) {
9258
+ constructor(cdr, dialog, translate, templateService, commonService, dialogRef, iconRegistry, sanitizer, uploadService, data) {
9206
9259
  super();
9207
9260
  this.cdr = cdr;
9208
9261
  this.dialog = dialog;
@@ -9210,11 +9263,18 @@ class QMSCKEditorTemplateComponent extends QMSCKEditorBaseComponent {
9210
9263
  this.templateService = templateService;
9211
9264
  this.commonService = commonService;
9212
9265
  this.dialogRef = dialogRef;
9266
+ this.iconRegistry = iconRegistry;
9267
+ this.sanitizer = sanitizer;
9268
+ this.uploadService = uploadService;
9213
9269
  this.data = data;
9214
9270
  this.templateFormGroup = new FormGroup({
9215
9271
  templateList: new FormControl(),
9216
9272
  title: new FormControl('', [Validators.required]),
9217
- description: new FormControl('', [Validators.required])
9273
+ description: new FormControl('', [Validators.required]),
9274
+ imageAcceptType: new FormControl('', [
9275
+ requiredFileType(['pjp', 'jpg', 'pjpeg', 'jpeg', 'jfif', 'png', 'gif', 'bmp', 'webp', 'tif', 'tiff'])
9276
+ ]),
9277
+ imageInfo: new FormControl()
9218
9278
  });
9219
9279
  this.isExpanded = true;
9220
9280
  this.templateList = [];
@@ -9222,9 +9282,13 @@ class QMSCKEditorTemplateComponent extends QMSCKEditorBaseComponent {
9222
9282
  this.template = new QMSCKEditorTemplate();
9223
9283
  this.selectedId = 0;
9224
9284
  this.isEdit = false;
9225
- this.content = data.content;
9285
+ this.qmsInputImageFile = null;
9286
+ this.isLoadingImageFile = false;
9287
+ this.imageUpload = new Image();
9288
+ this.content = data.html;
9226
9289
  this.selectedId = data.id;
9227
9290
  this.isEdit = data.edit;
9291
+ this.iconRegistry.addSvgIconLiteral('upload', this.sanitizer.bypassSecurityTrustHtml(IconSvg.UPLOAD_ICON));
9228
9292
  }
9229
9293
  ngOnInit() {
9230
9294
  this.translate.getLanguageSubject$.pipe(takeUntil(this.ngUnsubcribe)).subscribe((res) => {
@@ -9278,7 +9342,7 @@ class QMSCKEditorTemplateComponent extends QMSCKEditorBaseComponent {
9278
9342
  this.template.id = this.selectedId;
9279
9343
  this.template.title = '';
9280
9344
  this.template.description = '';
9281
- this.template.content = this.content;
9345
+ this.template.html = this.content;
9282
9346
  this.template.deleted = false;
9283
9347
  this.template.createdBy = 0;
9284
9348
  }
@@ -9289,7 +9353,7 @@ class QMSCKEditorTemplateComponent extends QMSCKEditorBaseComponent {
9289
9353
  this.template.id = this.templateList[index].id;
9290
9354
  this.template.title = this.templateList[index].title;
9291
9355
  this.template.description = this.templateList[index].description;
9292
- this.template.content = this.templateList[index].content;
9356
+ this.template.html = this.templateList[index].html;
9293
9357
  this.template.deleted = this.templateList[index].deleted;
9294
9358
  this.template.createdBy = this.templateList[index].createdBy;
9295
9359
  }
@@ -9309,7 +9373,7 @@ class QMSCKEditorTemplateComponent extends QMSCKEditorBaseComponent {
9309
9373
  .subscribe((result) => {
9310
9374
  if (result) {
9311
9375
  this.templateService
9312
- .deleteTemplate(this.selectedId)
9376
+ .deleteTemplate([this.selectedId])
9313
9377
  .pipe(takeUntil(this.ngUnsubcribe))
9314
9378
  .subscribe((response) => {
9315
9379
  if (response) {
@@ -9331,26 +9395,36 @@ class QMSCKEditorTemplateComponent extends QMSCKEditorBaseComponent {
9331
9395
  });
9332
9396
  }
9333
9397
  saveTemplate() {
9334
- if (this.selectedId === 0) {
9335
- this.template.content = this.content;
9336
- }
9337
- this.templateService
9338
- .modifyTemplate(this.template)
9339
- .pipe(takeUntil(this.ngUnsubcribe))
9340
- .subscribe((result) => {
9341
- if (result) {
9342
- const index = this.templates.findIndex((x) => {
9343
- return x.id === this.selectedId;
9344
- });
9345
- if (index >= 0 && this.selectedId !== 0) {
9346
- this.templates[index].title = this.template.title;
9347
- }
9348
- QMSCKEditorToastService.success(this.LANG.QMSCKEDITOR.SAVED);
9349
- this.dialogRef.close();
9398
+ return __awaiter(this, void 0, void 0, function* () {
9399
+ if (this.selectedId === 0) {
9400
+ this.template.html = this.content;
9350
9401
  }
9351
- else {
9352
- QMSCKEditorToastService.error(this.LANG.QMSCKEDITOR.SAVE_FAILED);
9402
+ if (this.qmsInputImageFile) {
9403
+ var imageExtraId = yield this.uploadService.uploadImage(this.qmsInputImageFile.file, this.imageUpload.height, this.imageUpload.width, this.imageInfo).toPromise();
9404
+ imageExtraId = imageExtraId === null || imageExtraId === void 0 ? void 0 : imageExtraId.replace('/stream_image.aspx?iEntityId=', '');
9405
+ if (imageExtraId.length) {
9406
+ var imageId = yield this.templateService.getImageIdByExtraId(imageExtraId).toPromise();
9407
+ this.template.imageId = imageId ? imageId : 0;
9408
+ }
9353
9409
  }
9410
+ this.templateService
9411
+ .modifyTemplate(this.template)
9412
+ .pipe(takeUntil(this.ngUnsubcribe))
9413
+ .subscribe((result) => {
9414
+ if (result) {
9415
+ const index = this.templates.findIndex((x) => {
9416
+ return x.id === this.selectedId;
9417
+ });
9418
+ if (index >= 0 && this.selectedId !== 0) {
9419
+ this.templates[index].title = this.template.title;
9420
+ }
9421
+ QMSCKEditorToastService.success(this.LANG.QMSCKEDITOR.SAVED);
9422
+ this.dialogRef.close();
9423
+ }
9424
+ else {
9425
+ QMSCKEditorToastService.error(this.LANG.QMSCKEDITOR.SAVE_FAILED);
9426
+ }
9427
+ });
9354
9428
  });
9355
9429
  }
9356
9430
  cancelTemplate() {
@@ -9390,12 +9464,22 @@ class QMSCKEditorTemplateComponent extends QMSCKEditorBaseComponent {
9390
9464
  }
9391
9465
  });
9392
9466
  }
9467
+ clearQMSInputImageFile() {
9468
+ this.qmsInputImageFile = null;
9469
+ }
9470
+ onChangeImage(event) {
9471
+ const readerImage = new FileReader();
9472
+ readerImage.readAsDataURL(this.qmsInputImageFile.file);
9473
+ readerImage.onload = (event) => __awaiter(this, void 0, void 0, function* () {
9474
+ this.imageUpload.src = event.target.result.toString();
9475
+ });
9476
+ }
9393
9477
  }
9394
9478
  QMSCKEditorTemplateComponent.decorators = [
9395
9479
  { type: Component, args: [{
9396
9480
  selector: 'app-qmsck-template',
9397
- template: "<div\r\n id=\"qmsckeditor-template\"\r\n class=\"qmsckeditor qmsckeditor__template__container\"\r\n>\r\n <div id=\"qmsckeditor-template-header\">\r\n <span\r\n id=\"qmsckeditor-template-header_001\"\r\n mat-icon-button\r\n class=\"qmsckeditor button__close\"\r\n (click)=\"onCloseDialog()\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </span>\r\n <div\r\n id=\"qmsckeditor-template-header_002\"\r\n mat-dialog-content\r\n *ngIf=\"!isEdit\"\r\n >\r\n <h2 id=\"qmsckeditor-template_002_001\">\r\n {{ LANG.QMSCKEDITOR.CREATE_NEW_TEMPLATE }}\r\n </h2>\r\n </div>\r\n <div id=\"qmsckeditor-template-header_002\" mat-dialog-content *ngIf=\"isEdit\">\r\n <h2 id=\"qmsckeditor-template_002_001\">\r\n {{ LANG.QMSCKEDITOR.UPDATE_TEMPLATE }}\r\n </h2>\r\n </div>\r\n </div>\r\n\r\n <form [formGroup]=\"templateFormGroup\">\r\n <div\r\n id=\"qmsckeditor-template-content\"\r\n class=\"qmsckeditor template-content height\"\r\n >\r\n <div id=\"qmsckeditor-template-content_001\" class=\"col-12 mt-1 pl-2 pr-2 ps-2 pe-2\">\r\n <mat-expansion-panel\r\n id=\"qmsckeditor-template-panel\"\r\n [expanded]=\"isExpanded\"\r\n (opened)=\"isExpanded = true\"\r\n (closed)=\"isExpanded = false\"\r\n >\r\n <div id=\"qmsckeditor-template-panel_001\">\r\n <div id=\"qmsckeditor-template-panel_001_000\" class=\"mt-2\">\r\n <mat-form-field appearance=\"fill\">\r\n <mat-label>{{ LANG.QMSCKEDITOR.TEMPLATE }}</mat-label>\r\n <mat-select\r\n formControlName=\"templateList\"\r\n [(ngModel)]=\"selectedId\"\r\n (ngModelChange)=\"onSelectChange()\"\r\n [disabled]=\"isEdit\"\r\n >\r\n <mat-option\r\n *ngFor=\"let template of templates\"\r\n [value]=\"template.id\"\r\n >\r\n {{ template.title }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n <div id=\"qmsckeditor-template-panel_001_001\">\r\n <mat-form-field class=\"col-12 pl-0 pr-0 ps-0 pe-0\" appearance=\"fill\">\r\n <mat-label>{{ LANG.QMSCKEDITOR.TITLE }}</mat-label>\r\n <input\r\n matInput\r\n [(ngModel)]=\"template.title\"\r\n formControlName=\"title\"\r\n />\r\n <mat-error\r\n *ngIf=\"templateFormGroup.get('title').hasError('required')\"\r\n class=\"mt5\"\r\n >\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n <div id=\"qmsckeditor-template-panel_001_002\">\r\n <mat-form-field class=\"col-12 pl-0 pr-0 ps-0 pe-0\" appearance=\"fill\">\r\n <mat-label>{{ LANG.QMSCKEDITOR.DESCRIPTION }}</mat-label>\r\n <textarea\r\n matInput\r\n [(ngModel)]=\"template.description\"\r\n formControlName=\"description\"\r\n ></textarea>\r\n <mat-error\r\n *ngIf=\"\r\n templateFormGroup.get('description').hasError('required')\r\n \"\r\n class=\"mt5\"\r\n >\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n <div\r\n id=\"qmsckeditor-template-panel_001_003\"\r\n class=\"qmsckeditor button__groups row mr-0 ml-0 ms-0 me-0\"\r\n >\r\n <div class=\"col-6 pl-0 ps-0\" *ngIf=\"!isEdit\">\r\n <button\r\n class=\"delete\"\r\n mat-flat-button\r\n (click)=\"deleteTemplate()\"\r\n [disabled]=\"selectedId === 0\"\r\n >\r\n {{ LANG.QMSCKEDITOR.DELETE }}\r\n </button>\r\n </div>\r\n <div class=\"col-6 pr-0 pe-0\" *ngIf=\"!isEdit && selectedId === 0\">\r\n <button\r\n class=\"save\"\r\n mat-flat-button\r\n (click)=\"saveTemplate()\"\r\n [disabled]=\"templateFormGroup.invalid\"\r\n >\r\n {{ LANG.QMSCKEDITOR.SAVE }}\r\n </button>\r\n </div>\r\n <div class=\"col-6 pl-0 ps-0\" *ngIf=\"isEdit\">\r\n <button\r\n class=\"cancel\"\r\n mat-flat-button\r\n (click)=\"cancelTemplate()\"\r\n [disabled]=\"selectedId === 0\"\r\n >\r\n {{ LANG.QMSCKEDITOR.CANCEL }}\r\n </button>\r\n </div>\r\n <div class=\"col-6 pr-0 pe-0\" *ngIf=\"isEdit || selectedId !== 0\">\r\n <button\r\n class=\"save\"\r\n mat-flat-button\r\n (click)=\"updateTemplate()\"\r\n [disabled]=\"templateFormGroup.invalid\"\r\n >\r\n {{ LANG.QMSCKEDITOR.UPDATE }}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </mat-expansion-panel>\r\n </div>\r\n </div>\r\n </form>\r\n</div>\r\n",
9398
- styles: [".mt5{margin-top:5px!important}.mt10{margin-top:10px!important}.mt7{margin-top:7px!important}.mt15{margin-top:15px!important}.mt20{margin-top:20px!important}.mt30{margin-top:30px!important}.mt40{margin-top:40px!important}.ml2{margin-left:2px!important}.ml3{margin-left:3px!important}.ml5{margin-left:5px!important}.ml15{margin-left:15px!important}.ml10{margin-left:10px!important}.ml12{margin-left:12px!important}.ml16{margin-left:16px!important}.ml-auto{margin-left:auto!important}.ml-25{margin-left:-25px!important}.mr5{margin-right:5px!important}.mr12{margin-right:12px!important}.mr15{margin-right:15px!important}.mb5{margin-bottom:5px!important}.mb10{margin-bottom:10px!important}.mb15{margin-bottom:15px!important}.pt8{padding-top:8px!important}.pt10{padding-top:10px!important}.pt15{padding-top:15px!important}.pt16{padding-top:16px!important}.pl15{padding-left:15px!important}.pl0{padding-left:0!important}.pr0{padding-right:0!important}.pr15{padding-right:15px!important}.fs12{font-size:12px}.fs14{font-size:14px!important}.fs16{font-size:16px!important}.fs22{font-size:22px!important}.fw500{font-weight:500!important}.italic-text{font-style:italic}.display-flex{display:flex}.qmsckeditor{font-family:Roboto,Helvetica Neue,sans-serif;font-size:14px;font-weight:400}.qmsckeditor h2{font-size:20px;font-weight:400}.qmsckeditor .mat-dialog-content{padding:0}.qmsckeditor .mat-icon{color:#909497}.qmsckeditor__fullscreen{position:fixed;top:0;left:0;right:0;bottom:0;background:#fff;overflow-y:auto;max-height:100vh;overflow-x:hidden}.qmsckeditor__cursor{cursor:pointer}.qmsckeditor__notallowed{cursor:not-allowed}.qmsckeditor.button__close,.qmsckeditor.button__done{float:right;top:-24px;right:-24px;cursor:pointer}.qmsckeditor.button__done{margin-right:20px}.qmsckeditor.button__done .mat-icon{color:#28a745;font-weight:700}.qmsckeditor.button__groups button{min-height:40px;width:100%;border-radius:4px;border:1px solid #c5c5c5;font-family:Open Sans;font-weight:600;font-size:14px;letter-spacing:1px;line-height:16px}.qmsckeditor.button__groups .save{background:#f8f9f9}.qmsckeditor.button__groups .save:hover{background:#e5e7e9}.qmsckeditor.button__groups .save:disabled{cursor:not-allowed}.qmsckeditor.button__groups .cancel{background:#f8f9f9}.qmsckeditor.button__groups .cancel:hover{background:#e5e7e9}.qmsckeditor.button__groups .cancel:disabled{cursor:not-allowed}.qmsckeditor.button__groups .delete{background:#f8f9f9}.qmsckeditor.button__groups .delete:hover{background:#e5e7e9}.qmsckeditor.button__groups .delete:disabled{cursor:not-allowed}.qmsckeditor.confirm__button__groups button{min-height:36px;border-radius:4px;width:auto;border:1px solid #c5c5c5;font-family:Open Sans;font-weight:600;font-size:14px;letter-spacing:1px;line-height:16px;padding-left:15px;padding-right:15px}.qmsckeditor.confirm__button__groups .confirm{background:#f8f9f9}.qmsckeditor.confirm__button__groups .confirm:hover{background:#e5e7e9}.qmsckeditor.confirm__button__groups .cancel{background:#f8f9f9}.qmsckeditor.confirm__button__groups .cancel:hover{background:#e5e7e9}.qmsckeditor.template-content.height{min-height:420px;max-height:520px;overflow:auto}.qmsckeditor.template-content.title{margin-left:-9px}.qmsckeditor.link__content.height{min-height:400px;max-height:520px}.qmsckeditor.card{margin-bottom:10px;min-height:60px;box-shadow:none;border:1px solid #e5e5e5}.qmsckeditor.card .title{font-weight:700}.qmsckeditor.card .content{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.qmsckeditor.card .material-icons{font-size:20px}.qmsckeditor.tooltip-content.height{min-height:400px;max-height:472px;overflow:auto}.qmsckeditor.save__as__template.height{height:125px}.ck-content .ck-horizontal-line,.ck-content .page-break{width:100%}.ck-content hr{background:#ccc}.ck-font-size-dropdown .ck-dropdown__panel ul{max-height:320px;overflow-y:auto}.ck-font-size-dropdown .ck-dropdown__panel ul li .ck-fontsize-option .ck-button__label{line-height:50px}.qmsckeditor__template__container .mat-form-field{width:100%}.qmsckeditor__template__container textarea.mat-input-element{min-height:150px}.qmsckeditor__template__container .template-checkbox{padding-top:20px}"]
9481
+ template: "<div\r\n id=\"qmsckeditor-template\"\r\n class=\"qmsckeditor qmsckeditor__template__container\"\r\n>\r\n <div id=\"qmsckeditor-template-header\">\r\n <span\r\n id=\"qmsckeditor-template-header_001\"\r\n mat-icon-button\r\n class=\"qmsckeditor button__close\"\r\n (click)=\"onCloseDialog()\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </span>\r\n <div\r\n id=\"qmsckeditor-template-header_002\"\r\n mat-dialog-content\r\n *ngIf=\"!isEdit\"\r\n >\r\n <h2 id=\"qmsckeditor-template_002_001\">\r\n {{ LANG.QMSCKEDITOR.CREATE_NEW_TEMPLATE }}\r\n </h2>\r\n </div>\r\n <div id=\"qmsckeditor-template-header_002\" mat-dialog-content *ngIf=\"isEdit\">\r\n <h2 id=\"qmsckeditor-template_002_001\">\r\n {{ LANG.QMSCKEDITOR.UPDATE_TEMPLATE }}\r\n </h2>\r\n </div>\r\n </div>\r\n\r\n <form [formGroup]=\"templateFormGroup\">\r\n <div\r\n id=\"qmsckeditor-template-content\"\r\n class=\"qmsckeditor template-content height form-content-height\"\r\n >\r\n <div id=\"qmsckeditor-template-content_001\" class=\"col-12 mt-1 pl-2 pr-2 ps-2 pe-2\">\r\n <mat-expansion-panel\r\n id=\"qmsckeditor-template-panel\"\r\n [expanded]=\"isExpanded\"\r\n (opened)=\"isExpanded = true\"\r\n (closed)=\"isExpanded = false\"\r\n >\r\n <div id=\"qmsckeditor-template-panel_001\">\r\n <div id=\"qmsckeditor-template-panel_001_000\" class=\"mt-2\">\r\n <mat-form-field appearance=\"fill\">\r\n <mat-label>{{ LANG.QMSCKEDITOR.TEMPLATE }}</mat-label>\r\n <mat-select\r\n formControlName=\"templateList\"\r\n [(ngModel)]=\"selectedId\"\r\n (ngModelChange)=\"onSelectChange()\"\r\n [disabled]=\"isEdit\"\r\n >\r\n <mat-option\r\n *ngFor=\"let template of templates\"\r\n [value]=\"template.id\"\r\n >\r\n {{ template.title }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n <div id=\"qmsckeditor-template-panel_001_001\">\r\n <mat-form-field class=\"col-12 pl-0 pr-0 ps-0 pe-0\" appearance=\"fill\">\r\n <mat-label>{{ LANG.QMSCKEDITOR.TITLE }}</mat-label>\r\n <input\r\n matInput\r\n [(ngModel)]=\"template.title\"\r\n formControlName=\"title\"\r\n />\r\n <mat-error\r\n *ngIf=\"templateFormGroup.get('title').hasError('required')\"\r\n class=\"mt5\"\r\n >\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n <div id=\"qmsckeditor-template-panel_001_002\">\r\n <mat-form-field class=\"col-12 pl-0 pr-0 ps-0 pe-0\" appearance=\"fill\">\r\n <mat-label>{{ LANG.QMSCKEDITOR.DESCRIPTION }}</mat-label>\r\n <textarea\r\n matInput\r\n [(ngModel)]=\"template.description\"\r\n formControlName=\"description\"\r\n ></textarea>\r\n <mat-error\r\n *ngIf=\"\r\n templateFormGroup.get('description').hasError('required')\r\n \"\r\n class=\"mt5\"\r\n >\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n <div id=\"qmsckeditor-template-panel_001_003\" class=\"selected-image\">\r\n <mat-form-field qms-form qms-file-upload appearance=\"fill\" class=\"example-width input-upload\">\r\n <mat-icon matPrefix svgIcon=\"upload\"></mat-icon>\r\n <input matInput placeholder=\"{{ LANG.QMSCKEDITOR.ADD_IMAGE }}\" formControlName=\"imageAcceptType\" [readOnly]=\"true\" qms-file-upload-display\r\n #fileDisplay value=\"{{qmsInputImageFile? qmsInputImageFile.fileName : ''}}\"\r\n [attr.disabled]=\"isLoadingImageFile ? 'disabled' : null\">\r\n <input hidden type=\"file\" [(inputFile)]=\"qmsInputImageFile\" qms-file-upload-selector #fileSelector\r\n accept=\".pjp, .jpg, .pjpeg, .jpeg, .jfif, .png, .gif, .bmp, .webp, .tif, .tiff\"\r\n (change)=\"onChangeImage($event)\">\r\n \r\n <mat-progress-spinner matSuffix mode=\"indeterminate\" diameter='20' *ngIf=\"isLoadingImageFile\"></mat-progress-spinner>\r\n <div matSuffix qms-input-clear *ngIf=\"qmsInputImageFile && qmsInputImageFile.fileName\">\r\n <button qms-btn-icon color=\"light\" (click)=\"clearQMSInputImageFile()\" [disabled]=\"isLoadingImageFile\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </div>\r\n </mat-form-field>\r\n </div>\r\n\r\n <div id=\"qmsckeditor-template-panel_001_004\" *ngIf=\"qmsInputImageFile\">\r\n <mat-form-field class=\"col-12 pl-0 pr-0 ps-0 pe-0\" appearance=\"fill\">\r\n <mat-label>{{ LANG.QMSCKEDITOR.IMAGE_INFO }}</mat-label>\r\n <textarea matInput [(ngModel)]=\"imageInfo\" formControlName=\"imageInfo\"></textarea>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n </mat-expansion-panel>\r\n </div>\r\n </div>\r\n </form>\r\n <div id=\"qmsckeditor-template-panel_001_005\" class=\"qmsckeditor button__groups template-button-group row mr-0 ml-0 ms-0 me-0\">\r\n <div class=\"col-6 pl-0 ps-0\" *ngIf=\"!isEdit\">\r\n <button class=\"delete\" mat-flat-button (click)=\"deleteTemplate()\" [disabled]=\"selectedId === 0\">\r\n {{ LANG.QMSCKEDITOR.DELETE }}\r\n </button>\r\n </div>\r\n <div class=\"col-6 pr-0 pe-0\" *ngIf=\"!isEdit && selectedId === 0\">\r\n <button class=\"save\" mat-flat-button (click)=\"saveTemplate()\" [disabled]=\"templateFormGroup.invalid\">\r\n {{ LANG.QMSCKEDITOR.SAVE }}\r\n </button>\r\n </div>\r\n <div class=\"col-6 pl-0 ps-0\" *ngIf=\"isEdit\">\r\n <button class=\"cancel\" mat-flat-button (click)=\"cancelTemplate()\" [disabled]=\"selectedId === 0\">\r\n {{ LANG.QMSCKEDITOR.CANCEL }}\r\n </button>\r\n </div>\r\n <div class=\"col-6 pr-0 pe-0\" *ngIf=\"isEdit || selectedId !== 0\">\r\n <button class=\"save\" mat-flat-button (click)=\"updateTemplate()\" [disabled]=\"templateFormGroup.invalid\">\r\n {{ LANG.QMSCKEDITOR.UPDATE }}\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n",
9482
+ styles: [".mt5{margin-top:5px!important}.mt10{margin-top:10px!important}.mt7{margin-top:7px!important}.mt15{margin-top:15px!important}.mt20{margin-top:20px!important}.mt30{margin-top:30px!important}.mt40{margin-top:40px!important}.ml2{margin-left:2px!important}.ml3{margin-left:3px!important}.ml5{margin-left:5px!important}.ml15{margin-left:15px!important}.ml10{margin-left:10px!important}.ml12{margin-left:12px!important}.ml16{margin-left:16px!important}.ml-auto{margin-left:auto!important}.ml-25{margin-left:-25px!important}.mr5{margin-right:5px!important}.mr12{margin-right:12px!important}.mr15{margin-right:15px!important}.mb5{margin-bottom:5px!important}.mb10{margin-bottom:10px!important}.mb15{margin-bottom:15px!important}.pt8{padding-top:8px!important}.pt10{padding-top:10px!important}.pt15{padding-top:15px!important}.pt16{padding-top:16px!important}.pl15{padding-left:15px!important}.pl0{padding-left:0!important}.pr0{padding-right:0!important}.pr15{padding-right:15px!important}.fs12{font-size:12px}.fs14{font-size:14px!important}.fs16{font-size:16px!important}.fs22{font-size:22px!important}.fw500{font-weight:500!important}.italic-text{font-style:italic}.display-flex{display:flex}.qmsckeditor{font-family:Roboto,Helvetica Neue,sans-serif;font-size:14px;font-weight:400}.qmsckeditor h2{font-size:20px;font-weight:400}.qmsckeditor .mat-dialog-content{padding:0}.qmsckeditor .mat-icon{color:#909497}.qmsckeditor__fullscreen{position:fixed;top:0;left:0;right:0;bottom:0;background:#fff;overflow-y:auto;max-height:100vh;overflow-x:hidden}.qmsckeditor__cursor{cursor:pointer}.qmsckeditor__notallowed{cursor:not-allowed}.qmsckeditor.button__close,.qmsckeditor.button__done{float:right;top:-24px;right:-24px;cursor:pointer}.qmsckeditor.button__done{margin-right:20px}.qmsckeditor.button__done .mat-icon{color:#28a745;font-weight:700}.qmsckeditor.button__groups button{min-height:40px;width:100%;border-radius:4px;border:1px solid #c5c5c5;font-family:Open Sans;font-weight:600;font-size:14px;letter-spacing:1px;line-height:16px}.qmsckeditor.button__groups .save{background:#f8f9f9}.qmsckeditor.button__groups .save:hover{background:#e5e7e9}.qmsckeditor.button__groups .save:disabled{cursor:not-allowed}.qmsckeditor.button__groups .cancel{background:#f8f9f9}.qmsckeditor.button__groups .cancel:hover{background:#e5e7e9}.qmsckeditor.button__groups .cancel:disabled{cursor:not-allowed}.qmsckeditor.button__groups .delete{background:#f8f9f9}.qmsckeditor.button__groups .delete:hover{background:#e5e7e9}.qmsckeditor.button__groups .delete:disabled{cursor:not-allowed}.qmsckeditor.confirm__button__groups button{min-height:36px;border-radius:4px;width:auto;border:1px solid #c5c5c5;font-family:Open Sans;font-weight:600;font-size:14px;letter-spacing:1px;line-height:16px;padding-left:15px;padding-right:15px}.qmsckeditor.confirm__button__groups .confirm{background:#f8f9f9}.qmsckeditor.confirm__button__groups .confirm:hover{background:#e5e7e9}.qmsckeditor.confirm__button__groups .cancel{background:#f8f9f9}.qmsckeditor.confirm__button__groups .cancel:hover{background:#e5e7e9}.qmsckeditor.template-content.height{min-height:420px;max-height:520px;overflow:auto}.qmsckeditor.template-content.title{margin-left:-9px}.qmsckeditor.link__content.height{min-height:400px;max-height:520px}.qmsckeditor.card{margin-bottom:10px;min-height:60px;box-shadow:none;border:1px solid #e5e5e5}.qmsckeditor.card .title{font-weight:700}.qmsckeditor.card .content{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.qmsckeditor.card .material-icons{font-size:20px}.qmsckeditor.tooltip-content.height{min-height:400px;max-height:472px;overflow:auto}.qmsckeditor.save__as__template.height{height:125px}.ck-content .ck-horizontal-line,.ck-content .page-break{width:100%}.ck-content hr{background:#ccc}.ck-font-size-dropdown .ck-dropdown__panel ul{max-height:320px;overflow-y:auto}.ck-font-size-dropdown .ck-dropdown__panel ul li .ck-fontsize-option .ck-button__label{line-height:50px}.qmsckeditor__template__container .mat-form-field{width:100%}.qmsckeditor__template__container textarea.mat-input-element{min-height:150px}.qmsckeditor__template__container .template-checkbox{padding-top:20px}.qmsckeditor__template__container .selected-image{display:flex;align-items:center;padding-bottom:10px}.qmsckeditor__template__container .selected-image .input-upload{height:60px}.qmsckeditor__template__container .form-content-height{min-height:350px;max-height:410px}.qmsckeditor__template__container .template-button-group{padding-top:10px;padding-right:.5rem;padding-left:.5rem}"]
9399
9483
  },] }
9400
9484
  ];
9401
9485
  QMSCKEditorTemplateComponent.ctorParameters = () => [
@@ -9405,7 +9489,10 @@ QMSCKEditorTemplateComponent.ctorParameters = () => [
9405
9489
  { type: QMSCKEditorTemplateService },
9406
9490
  { type: QMSCKEditorCommonService },
9407
9491
  { type: MatDialogRef },
9408
- { type: QMSCKEditorTemplate, decorators: [{ type: Inject, args: [MAT_DIALOG_DATA,] }] }
9492
+ { type: MatIconRegistry },
9493
+ { type: DomSanitizer },
9494
+ { type: QMSCKEditorUploadService },
9495
+ { type: undefined, decorators: [{ type: Inject, args: [MAT_DIALOG_DATA,] }] }
9409
9496
  ];
9410
9497
  QMSCKEditorTemplateComponent.propDecorators = {
9411
9498
  ckEditor: [{ type: Input }]
@@ -9422,6 +9509,8 @@ class QMSCKEditorLoadTemplateComponent extends QMSCKEditorBaseComponent {
9422
9509
  this.data = data;
9423
9510
  this.templates = [];
9424
9511
  this.isReplace = false;
9512
+ this.stream_image = "/stream_image.aspx?iEntityId=";
9513
+ this.enableEditTemplate = data.enableEditTemplate;
9425
9514
  }
9426
9515
  ngOnInit() {
9427
9516
  this.translate.getLanguageSubject$.pipe(takeUntil(this.ngUnsubcribe)).subscribe((res) => {
@@ -9443,6 +9532,9 @@ class QMSCKEditorLoadTemplateComponent extends QMSCKEditorBaseComponent {
9443
9532
  .subscribe((response) => {
9444
9533
  if (response) {
9445
9534
  this.templates = response;
9535
+ this.templates.forEach((item) => {
9536
+ item.imageUrl = this.stream_image + (item.imageId > 0 ? item.imageId.toString() : '0');
9537
+ });
9446
9538
  }
9447
9539
  });
9448
9540
  }
@@ -9463,7 +9555,7 @@ class QMSCKEditorLoadTemplateComponent extends QMSCKEditorBaseComponent {
9463
9555
  const index = this.templates.findIndex((x) => {
9464
9556
  return x.id === id;
9465
9557
  });
9466
- const content = this.templates[index].content;
9558
+ const content = this.templates[index].html;
9467
9559
  const detail = {
9468
9560
  content: content,
9469
9561
  isReplace: this.isReplace,
@@ -9480,12 +9572,12 @@ class QMSCKEditorLoadTemplateComponent extends QMSCKEditorBaseComponent {
9480
9572
  });
9481
9573
  const data = new QMSCKEditorTemplate();
9482
9574
  data.id = this.templates[index].id;
9483
- data.content = this.templates[index].content;
9575
+ data.html = this.templates[index].html;
9484
9576
  data.edit = true;
9485
9577
  const dialogTemplate = this.dialog.open(QMSCKEditorTemplateComponent, {
9486
9578
  width: '650px',
9487
- height: '500px',
9488
- data,
9579
+ height: '540px',
9580
+ data: { template: data },
9489
9581
  disableClose: true
9490
9582
  });
9491
9583
  dialogTemplate.componentInstance.ckEditor = this.ckEditor;
@@ -9514,7 +9606,7 @@ class QMSCKEditorLoadTemplateComponent extends QMSCKEditorBaseComponent {
9514
9606
  .subscribe((result) => {
9515
9607
  if (result) {
9516
9608
  this.templateService
9517
- .deleteTemplate(id)
9609
+ .deleteTemplate([id])
9518
9610
  .pipe(takeUntil(this.ngUnsubcribe))
9519
9611
  .subscribe((response) => {
9520
9612
  if (response) {
@@ -9537,8 +9629,8 @@ class QMSCKEditorLoadTemplateComponent extends QMSCKEditorBaseComponent {
9537
9629
  QMSCKEditorLoadTemplateComponent.decorators = [
9538
9630
  { type: Component, args: [{
9539
9631
  selector: 'app-qmsck-load-template',
9540
- template: "<div id=\"qmsckeditor-load-template\" class=\"qmsckeditor qmsckeditor__loadtemplate__container\">\r\n <div id=\"qmsckeditor-load-template-header\">\r\n <span id=\"qmsckeditor-load-template-header_001\" mat-icon-button class=\"qmsckeditor button__close\"\r\n (click)=\"onCloseDialog()\">\r\n <mat-icon>close</mat-icon>\r\n </span>\r\n <div id=\"qmsckeditor-load-template-header_002\" mat-dialog-content>\r\n <h2 id=\"qmsckeditor-template_002_001\">\r\n {{ LANG.QMSCKEDITOR.CONTENT_TEMPLATE }}\r\n </h2>\r\n </div>\r\n </div>\r\n <div id=\"load-template_002\">\r\n <div id=\"load-template_002_001\" class=\"title col-12 mt-3\">\r\n <h2 id=\"load-template_002_001_001\">\r\n {{ LANG.QMSCKEDITOR.CHOOSE_TEMPLATE }}\r\n </h2>\r\n </div>\r\n </div>\r\n <div id=\"qmsckeditor-load-template-content\" class=\"qmsckeditor template-content height\">\r\n <div id=\"qmsckeditor-load-template-content_003\" class=\"mt-1 pl-2 pr-2 ps-2 pe-2\">\r\n <mat-card class=\"qmsckeditor card col-12\" *ngFor=\"let template of templates\">\r\n <div class=\"row\">\r\n <div class=\"qmsckeditor__cursor col-10\" (click)=\"onSelectTemplate(template.id)\">\r\n <div class=\"col-12 pl-0 ps-0 title\">\r\n <span>{{ template.title }}</span>\r\n </div>\r\n <div class=\"col-12 pl-0 ps-0 content\">\r\n <span>{{ template.description }}</span>\r\n </div>\r\n </div>\r\n <div class=\"qmsckeditor__cursor col-1\">\r\n <mat-icon (click)=\"onEditTemplate(template.id)\">edit</mat-icon>\r\n </div>\r\n <div class=\"qmsckeditor__cursor col-1\">\r\n <mat-icon (click)=\"onDeleteTemplate(template.id)\">delete</mat-icon>\r\n </div>\r\n </div>\r\n </mat-card>\r\n </div>\r\n </div>\r\n <div class=\"option\">\r\n <mat-checkbox qms-group-options [(ngModel)]=\"isReplace\" color=\"primary\">\r\n {{ LANG.QMSCKEDITOR.REPLACE_CONTENT }}\r\n </mat-checkbox>\r\n </div>\r\n</div>",
9541
- styles: [".mt5{margin-top:5px!important}.mt10{margin-top:10px!important}.mt7{margin-top:7px!important}.mt15{margin-top:15px!important}.mt20{margin-top:20px!important}.mt30{margin-top:30px!important}.mt40{margin-top:40px!important}.ml2{margin-left:2px!important}.ml3{margin-left:3px!important}.ml5{margin-left:5px!important}.ml15{margin-left:15px!important}.ml10{margin-left:10px!important}.ml12{margin-left:12px!important}.ml16{margin-left:16px!important}.ml-auto{margin-left:auto!important}.ml-25{margin-left:-25px!important}.mr5{margin-right:5px!important}.mr12{margin-right:12px!important}.mr15{margin-right:15px!important}.mb5{margin-bottom:5px!important}.mb10{margin-bottom:10px!important}.mb15{margin-bottom:15px!important}.pt8{padding-top:8px!important}.pt10{padding-top:10px!important}.pt15{padding-top:15px!important}.pt16{padding-top:16px!important}.pl15{padding-left:15px!important}.pl0{padding-left:0!important}.pr0{padding-right:0!important}.pr15{padding-right:15px!important}.fs12{font-size:12px}.fs14{font-size:14px!important}.fs16{font-size:16px!important}.fs22{font-size:22px!important}.fw500{font-weight:500!important}.italic-text{font-style:italic}.display-flex{display:flex}.qmsckeditor{font-family:Roboto,Helvetica Neue,sans-serif;font-size:14px;font-weight:400}.qmsckeditor h2{font-size:20px;font-weight:400}.qmsckeditor .mat-dialog-content{padding:0}.qmsckeditor .mat-icon{color:#909497}.qmsckeditor__fullscreen{position:fixed;top:0;left:0;right:0;bottom:0;background:#fff;overflow-y:auto;max-height:100vh;overflow-x:hidden}.qmsckeditor__cursor{cursor:pointer}.qmsckeditor__notallowed{cursor:not-allowed}.qmsckeditor.button__close,.qmsckeditor.button__done{float:right;top:-24px;right:-24px;cursor:pointer}.qmsckeditor.button__done{margin-right:20px}.qmsckeditor.button__done .mat-icon{color:#28a745;font-weight:700}.qmsckeditor.button__groups button{min-height:40px;width:100%;border-radius:4px;border:1px solid #c5c5c5;font-family:Open Sans;font-weight:600;font-size:14px;letter-spacing:1px;line-height:16px}.qmsckeditor.button__groups .save{background:#f8f9f9}.qmsckeditor.button__groups .save:hover{background:#e5e7e9}.qmsckeditor.button__groups .save:disabled{cursor:not-allowed}.qmsckeditor.button__groups .cancel{background:#f8f9f9}.qmsckeditor.button__groups .cancel:hover{background:#e5e7e9}.qmsckeditor.button__groups .cancel:disabled{cursor:not-allowed}.qmsckeditor.button__groups .delete{background:#f8f9f9}.qmsckeditor.button__groups .delete:hover{background:#e5e7e9}.qmsckeditor.button__groups .delete:disabled{cursor:not-allowed}.qmsckeditor.confirm__button__groups button{min-height:36px;border-radius:4px;width:auto;border:1px solid #c5c5c5;font-family:Open Sans;font-weight:600;font-size:14px;letter-spacing:1px;line-height:16px;padding-left:15px;padding-right:15px}.qmsckeditor.confirm__button__groups .confirm{background:#f8f9f9}.qmsckeditor.confirm__button__groups .confirm:hover{background:#e5e7e9}.qmsckeditor.confirm__button__groups .cancel{background:#f8f9f9}.qmsckeditor.confirm__button__groups .cancel:hover{background:#e5e7e9}.qmsckeditor.template-content.height{min-height:420px;max-height:520px;overflow:auto}.qmsckeditor.template-content.title{margin-left:-9px}.qmsckeditor.link__content.height{min-height:400px;max-height:520px}.qmsckeditor.card{margin-bottom:10px;min-height:60px;box-shadow:none;border:1px solid #e5e5e5}.qmsckeditor.card .title{font-weight:700}.qmsckeditor.card .content{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.qmsckeditor.card .material-icons{font-size:20px}.qmsckeditor.tooltip-content.height{min-height:400px;max-height:472px;overflow:auto}.qmsckeditor.save__as__template.height{height:125px}.ck-content .ck-horizontal-line,.ck-content .page-break{width:100%}.ck-content hr{background:#ccc}.ck-font-size-dropdown .ck-dropdown__panel ul{max-height:320px;overflow-y:auto}.ck-font-size-dropdown .ck-dropdown__panel ul li .ck-fontsize-option .ck-button__label{line-height:50px}.qmsckeditor__loadtemplate__container .template-checkbox{padding-top:20px}.qmsckeditor__loadtemplate__container .option{padding-left:15px}"]
9632
+ template: "<div id=\"qmsckeditor-load-template\" class=\"qmsckeditor qmsckeditor__loadtemplate__container\">\r\n <div id=\"qmsckeditor-load-template-header\">\r\n <span id=\"qmsckeditor-load-template-header_001\" mat-icon-button class=\"qmsckeditor button__close\"\r\n (click)=\"onCloseDialog()\">\r\n <mat-icon>close</mat-icon>\r\n </span>\r\n <div id=\"qmsckeditor-load-template-header_002\" mat-dialog-content>\r\n <h2 id=\"qmsckeditor-template_002_001\">\r\n {{ LANG.QMSCKEDITOR.CONTENT_TEMPLATE }}\r\n </h2>\r\n </div>\r\n </div>\r\n <div id=\"load-template_002\">\r\n <div id=\"load-template_002_001\" class=\"title col-12 mt-3\">\r\n <h2 id=\"load-template_002_001_001\">\r\n {{ LANG.QMSCKEDITOR.CHOOSE_TEMPLATE }}\r\n </h2>\r\n </div>\r\n </div>\r\n <div id=\"qmsckeditor-load-template-content\" class=\"qmsckeditor template-content height\">\r\n <div id=\"qmsckeditor-load-template-content_003\" class=\"mt-1 pl-2 pr-2 ps-2 pe-2\">\r\n <mat-card class=\"qmsckeditor card col-12\" *ngFor=\"let template of templates\">\r\n <div class=\"row\">\r\n <div class=\"qmsckeditor__cursor col-2\"> \r\n <img class=\"image-template\" src=\"{{template.imageUrl}}\">\r\n </div>\r\n <div class=\"qmsckeditor__cursor col-8\" (click)=\"onSelectTemplate(template.id)\">\r\n <div class=\"col-12 pl-0 ps-0 title\">\r\n <span>{{ template.title }}</span>\r\n </div>\r\n <div class=\"col-12 pl-0 ps-0 content\">\r\n <span>{{ template.description }}</span>\r\n </div>\r\n </div>\r\n <div *ngIf=\"enableEditTemplate\" class=\"qmsckeditor__cursor col-1\">\r\n <mat-icon (click)=\"onEditTemplate(template.id)\">edit</mat-icon>\r\n </div>\r\n <div *ngIf=\"enableEditTemplate\" class=\"qmsckeditor__cursor col-1\">\r\n <mat-icon (click)=\"onDeleteTemplate(template.id)\">delete</mat-icon>\r\n </div>\r\n </div>\r\n </mat-card>\r\n </div>\r\n </div>\r\n <div class=\"option\">\r\n <mat-checkbox qms-group-options [(ngModel)]=\"isReplace\" color=\"primary\">\r\n {{ LANG.QMSCKEDITOR.REPLACE_CONTENT }}\r\n </mat-checkbox>\r\n </div>\r\n</div>",
9633
+ styles: [".mt5{margin-top:5px!important}.mt10{margin-top:10px!important}.mt7{margin-top:7px!important}.mt15{margin-top:15px!important}.mt20{margin-top:20px!important}.mt30{margin-top:30px!important}.mt40{margin-top:40px!important}.ml2{margin-left:2px!important}.ml3{margin-left:3px!important}.ml5{margin-left:5px!important}.ml15{margin-left:15px!important}.ml10{margin-left:10px!important}.ml12{margin-left:12px!important}.ml16{margin-left:16px!important}.ml-auto{margin-left:auto!important}.ml-25{margin-left:-25px!important}.mr5{margin-right:5px!important}.mr12{margin-right:12px!important}.mr15{margin-right:15px!important}.mb5{margin-bottom:5px!important}.mb10{margin-bottom:10px!important}.mb15{margin-bottom:15px!important}.pt8{padding-top:8px!important}.pt10{padding-top:10px!important}.pt15{padding-top:15px!important}.pt16{padding-top:16px!important}.pl15{padding-left:15px!important}.pl0{padding-left:0!important}.pr0{padding-right:0!important}.pr15{padding-right:15px!important}.fs12{font-size:12px}.fs14{font-size:14px!important}.fs16{font-size:16px!important}.fs22{font-size:22px!important}.fw500{font-weight:500!important}.italic-text{font-style:italic}.display-flex{display:flex}.qmsckeditor{font-family:Roboto,Helvetica Neue,sans-serif;font-size:14px;font-weight:400}.qmsckeditor h2{font-size:20px;font-weight:400}.qmsckeditor .mat-dialog-content{padding:0}.qmsckeditor .mat-icon{color:#909497}.qmsckeditor__fullscreen{position:fixed;top:0;left:0;right:0;bottom:0;background:#fff;overflow-y:auto;max-height:100vh;overflow-x:hidden}.qmsckeditor__cursor{cursor:pointer}.qmsckeditor__notallowed{cursor:not-allowed}.qmsckeditor.button__close,.qmsckeditor.button__done{float:right;top:-24px;right:-24px;cursor:pointer}.qmsckeditor.button__done{margin-right:20px}.qmsckeditor.button__done .mat-icon{color:#28a745;font-weight:700}.qmsckeditor.button__groups button{min-height:40px;width:100%;border-radius:4px;border:1px solid #c5c5c5;font-family:Open Sans;font-weight:600;font-size:14px;letter-spacing:1px;line-height:16px}.qmsckeditor.button__groups .save{background:#f8f9f9}.qmsckeditor.button__groups .save:hover{background:#e5e7e9}.qmsckeditor.button__groups .save:disabled{cursor:not-allowed}.qmsckeditor.button__groups .cancel{background:#f8f9f9}.qmsckeditor.button__groups .cancel:hover{background:#e5e7e9}.qmsckeditor.button__groups .cancel:disabled{cursor:not-allowed}.qmsckeditor.button__groups .delete{background:#f8f9f9}.qmsckeditor.button__groups .delete:hover{background:#e5e7e9}.qmsckeditor.button__groups .delete:disabled{cursor:not-allowed}.qmsckeditor.confirm__button__groups button{min-height:36px;border-radius:4px;width:auto;border:1px solid #c5c5c5;font-family:Open Sans;font-weight:600;font-size:14px;letter-spacing:1px;line-height:16px;padding-left:15px;padding-right:15px}.qmsckeditor.confirm__button__groups .confirm{background:#f8f9f9}.qmsckeditor.confirm__button__groups .confirm:hover{background:#e5e7e9}.qmsckeditor.confirm__button__groups .cancel{background:#f8f9f9}.qmsckeditor.confirm__button__groups .cancel:hover{background:#e5e7e9}.qmsckeditor.template-content.height{min-height:420px;max-height:520px;overflow:auto}.qmsckeditor.template-content.title{margin-left:-9px}.qmsckeditor.link__content.height{min-height:400px;max-height:520px}.qmsckeditor.card{margin-bottom:10px;min-height:60px;box-shadow:none;border:1px solid #e5e5e5}.qmsckeditor.card .title{font-weight:700}.qmsckeditor.card .content{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.qmsckeditor.card .material-icons{font-size:20px}.qmsckeditor.tooltip-content.height{min-height:400px;max-height:472px;overflow:auto}.qmsckeditor.save__as__template.height{height:125px}.ck-content .ck-horizontal-line,.ck-content .page-break{width:100%}.ck-content hr{background:#ccc}.ck-font-size-dropdown .ck-dropdown__panel ul{max-height:320px;overflow-y:auto}.ck-font-size-dropdown .ck-dropdown__panel ul li .ck-fontsize-option .ck-button__label{line-height:50px}.qmsckeditor__loadtemplate__container .template-checkbox{padding-top:20px}.qmsckeditor__loadtemplate__container .option{padding-left:15px}.qmsckeditor__loadtemplate__container .image-template{width:100%;height:100%}"]
9542
9634
  },] }
9543
9635
  ];
9544
9636
  QMSCKEditorLoadTemplateComponent.ctorParameters = () => [
@@ -9547,7 +9639,7 @@ QMSCKEditorLoadTemplateComponent.ctorParameters = () => [
9547
9639
  { type: QMSCKEditorTemplateService },
9548
9640
  { type: QMSCKEditorCommonService },
9549
9641
  { type: MatDialogRef },
9550
- { type: String, decorators: [{ type: Inject, args: [MAT_DIALOG_DATA,] }] }
9642
+ { type: undefined, decorators: [{ type: Inject, args: [MAT_DIALOG_DATA,] }] }
9551
9643
  ];
9552
9644
  QMSCKEditorLoadTemplateComponent.propDecorators = {
9553
9645
  ckEditor: [{ type: Input }]
@@ -9557,7 +9649,6 @@ class QmsUploadAdapter {
9557
9649
  constructor(loader, config) {
9558
9650
  this.loader = loader;
9559
9651
  this.config = config;
9560
- this.config.maxFileSizeMB = this.config.maxFileSizeMB || 2;
9561
9652
  }
9562
9653
  abort() {
9563
9654
  if (this.xhr) {
@@ -9628,9 +9719,6 @@ class QmsUploadAdapter {
9628
9719
  readerArrayBuffer.onload = () => {
9629
9720
  const fileExtension = this._getExtension(file);
9630
9721
  if (this.config.imageUploadTypes.indexOf(fileExtension) > -1) {
9631
- if (file.size > (this.config.maxFileSizeMB * 1024 * 1024)) {
9632
- reject(`${this.config.LANG.QMSCKEDITOR.UPLOAD_FILE_OVERSIZE}`.replace('{0}', this.config.maxFileSizeMB.toString()));
9633
- }
9634
9722
  this._initRequest();
9635
9723
  this._initListeners(resolve, reject, file.name);
9636
9724
  this._sendRequest(file, imageHeight, imageWidth);
@@ -14621,8 +14709,8 @@ class QMSCKEditorBpmnComponent extends QMSCKEditorBaseComponent {
14621
14709
  QMSCKEditorBpmnComponent.decorators = [
14622
14710
  { type: Component, args: [{
14623
14711
  selector: 'qms-bpmn',
14624
- template: "<div id=\"qmsckeditor-bpmn\" class=\"qmsckeditor qmsckeditor__bpmn__container\">\r\n <div id=\"qmsckeditor-load-template-header\">\r\n <span\r\n id=\"qmsckeditor-bpmn-header_001\"\r\n mat-icon-button\r\n class=\"qmsckeditor button__close\"\r\n (click)=\"onCloseDialog()\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </span>\r\n <span\r\n id=\"qmsckeditor-bpmn-header_002\"\r\n mat-icon-button\r\n class=\"qmsckeditor button__done\"\r\n (click)=\"onInsertImage()\"\r\n >\r\n <mat-icon>done</mat-icon>\r\n </span>\r\n <div id=\"qmsckeditor-load-template-header_002\" mat-dialog-content>\r\n <h2 id=\"qmsckeditor-template_002_001\">\r\n {{ LANG.BPMN.BUSINESS_PROCESS_MODEL_AND_NOTATION }}\r\n </h2>\r\n </div>\r\n </div>\r\n\r\n <div id=\"bpmn\" class=\"bpmn__editor\">\r\n <div id=\"toolbarpanel\">\r\n <div id=\"toolbar-container\"></div>\r\n </div>\r\n <div id=\"leftpanel\">\r\n <div id=\"paperpanel\">\r\n <div id=\"paper-container\"></div>\r\n </div>\r\n <div id=\"stencilpanel\">\r\n <mat-expansion-panel\r\n id=\"panel-stencil-container\"\r\n [expanded]=\"expandedPanel\"\r\n (click)=\"expandPanel()\"\r\n >\r\n <mat-expansion-panel-header>\r\n <mat-panel-title> </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <div id=\"stencil-container\"></div>\r\n </mat-expansion-panel>\r\n <!-- <div id=\"stencil-container\"></div> -->\r\n </div>\r\n </div>\r\n <div id=\"rightpanel\">\r\n <mat-tab-group\r\n mat-stretch-tabs\r\n mat-align-tabs=\"center\"\r\n (selectedTabChange)=\"onTabChange($event)\"\r\n >\r\n <mat-tab\r\n [label]=\"LANG.BPMN.PROPERTIES\"\r\n id=\"qmsckeditor_bpmn_properties\"\r\n >\r\n <div id=\"inspector-container\"></div>\r\n <!-- <div class=\"about\" *ngIf=\"!selectedCellView\">\r\n <h1>{{ LANG.BPMN.BUSINESS_PROCESS_MODEL_AND_NOTATION }}</h1>\r\n </div> -->\r\n </mat-tab>\r\n <mat-tab\r\n [label]=\"LANG.BPMN.CONNECTION\"\r\n id=\"qmsckeditor_bpmn_connection\"\r\n >\r\n <!-- <div class=\"about\" *ngIf=\"!selectedCellView\">\r\n <h1>{{ LANG.BPMN.BUSINESS_PROCESS_MODEL_AND_NOTATION }}</h1>\r\n </div> -->\r\n <mat-expansion-panel\r\n id=\"qmsckeditor_bpmn_connection_panel\"\r\n [expanded]=\"true\"\r\n (opened)=\"(true)\"\r\n (closed)=\"(false)\"\r\n hideToggle\r\n *ngIf=\"!!selectedCellView\"\r\n >\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n {{ LANG.BPMN.CONNECTION }}\r\n </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <div id=\"qmsckeditor_bpmn_connection_panel_001\" class=\"col-12 mt8\">\r\n <mat-form-field appearance=\"fill\" class=\"col-12 pl-3 ps-3\">\r\n <mat-label>{{ LANG.QMSCKEDITOR.ANCHOR_BY_NAME }}</mat-label>\r\n <mat-select\r\n [(ngModel)]=\"connectionType\"\r\n name=\"connectionType\"\r\n (ngModelChange)=\"onConnectionTypeChange()\"\r\n >\r\n <mat-option\r\n *ngFor=\"let item of connectionTypes\"\r\n [value]=\"item.id\"\r\n disableOptionCentering\r\n >\r\n {{ item.name }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n <div\r\n id=\"qmsckeditor_bpmn_connection_panel_002\"\r\n class=\"col-12 mt8\"\r\n *ngIf=\"!!link\"\r\n >\r\n <mat-card>\r\n <div class=\"row\">\r\n <div class=\"col-1 mt-n4\">\r\n <mat-icon aria-hidden=\"true\" class=\"fs32\">{{\r\n link.icon\r\n }}</mat-icon>\r\n </div>\r\n <div class=\"col-10\">\r\n <mat-card-title class=\"fs16\">{{\r\n link.title\r\n }}</mat-card-title>\r\n <mat-card-subtitle>{{ link.content }}</mat-card-subtitle>\r\n </div>\r\n <div class=\"col-1 pa0 mt-n4\">\r\n <button mat-icon-button>\r\n <mat-icon (click)=\"removeLink()\">close</mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n </mat-card>\r\n </div>\r\n <div\r\n id=\"qmsckeditor_bpmn_connection_panel_003\"\r\n class=\"col-12 mt24\"\r\n *ngIf=\"!!link && link.documentType === 1\"\r\n >\r\n <div class=\"row\">\r\n <div class=\"col-10\">\r\n <mat-form-field appearance=\"fill\" class=\"col-12\">\r\n <mat-label>{{\r\n LANG.BPMN.CHOOSE_ANCHOR_IN_TEXT_OPTIONAL\r\n }}</mat-label>\r\n <mat-label *ngIf=\"isLoadingDocumentAnchor\">\r\n <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\r\n </mat-label>\r\n <mat-select\r\n [(ngModel)]=\"anchorByName\"\r\n name=\"anchorByName\"\r\n (ngModelChange)=\"onAnchorByNameChange()\"\r\n disableOptionCentering\r\n >\r\n <mat-option\r\n *ngIf=\"\r\n documentAnchors === null ||\r\n documentAnchors.length == 0\r\n \"\r\n disabled\r\n ></mat-option>\r\n <mat-option\r\n *ngFor=\"let docAnchor of documentAnchors\"\r\n [value]=\"docAnchor.anchorValue\"\r\n >\r\n {{ docAnchor.viewValue }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-2 mt8 pa0\">\r\n <button\r\n mat-raised-button\r\n [matTooltip]=\"LANG.BPMN.RELOAD_ANCHORS\"\r\n (click)=\"reloadAnchors()\"\r\n [disabled]=\"isLoadingDocumentAnchor\"\r\n >\r\n <mat-icon>autorenew</mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div\r\n id=\"qmsckeditor_bpmn_connection_panel_004\"\r\n class=\"col-12 mt8\"\r\n *ngIf=\"!!link\"\r\n >\r\n <mat-form-field appearance=\"fill\" class=\"col-12\">\r\n <mat-label>{{ LANG.QMSCKEDITOR.TARGET }}</mat-label>\r\n <mat-select\r\n [(ngModel)]=\"selectedTarget\"\r\n name=\"selectedTarget\"\r\n disableOptionCentering\r\n >\r\n <mat-option\r\n *ngFor=\"let target of targets\"\r\n [value]=\"target.id\"\r\n >\r\n {{ target.name }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n </mat-expansion-panel>\r\n </mat-tab>\r\n </mat-tab-group>\r\n </div>\r\n </div>\r\n</div>\r\n",
14625
- styles: [":host ::ng-deep .qmsckeditor__bpmn__container .bpmn__editor{width:100%;height:600px}:host ::ng-deep .qmsckeditor__bpmn__container #leftpanel{float:left;width:70%;height:550px}:host ::ng-deep .qmsckeditor__bpmn__container #rightpanel{float:right;width:30%;height:550px;border:solid;border-width:0 1px 1px 0;overflow-y:auto}:host ::ng-deep .qmsckeditor__bpmn__container #toolbarpanel{position:relative;top:0;bottom:0;left:0;right:0;margin-bottom:16px;height:50px;width:100%}:host ::ng-deep .qmsckeditor__bpmn__container #paperpanel{position:relative;top:0;bottom:0;left:0;right:0;height:400px;width:100%}:host ::ng-deep .qmsckeditor__bpmn__container #stencilpanel{position:relative;top:0;bottom:0;left:0;right:0;height:150px;width:100%}:host ::ng-deep .qmsckeditor__bpmn__container #toolbar-container{position:relative;top:0;bottom:0;left:0;right:0;width:100%;height:100%}:host ::ng-deep .qmsckeditor__bpmn__container #paper-container{position:relative;top:0;bottom:0;left:0;right:0;width:100%;height:inherit}:host ::ng-deep .qmsckeditor__bpmn__container #inspector-container{position:relative;top:0;right:0;bottom:0;width:100%;background:#fff}:host ::ng-deep .qmsckeditor__bpmn__container #stencil-container{position:absolute;top:0;bottom:0;left:0;right:0;width:1174px;height:inherit}:host ::ng-deep .qmsckeditor__bpmn__container #statusbar-container{position:absolute;left:0;right:0;bottom:0;height:25px}:host ::ng-deep .qmsckeditor__bpmn__container #panel-stencil-container{position:absolute;left:0;right:0;bottom:0;height:150px;overflow-x:auto;overflow-y:hidden;background-image:url(\"data:image/png;base64,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\");background-repeat:repeat;transition:all .5s ease-in-out 0s}:host ::ng-deep .qmsckeditor__bpmn__container #panel-stencil-container .mat-expansion-panel-header-title{color:#fff}:host ::ng-deep .qmsckeditor__bpmn__container #panel-stencil-container .joint-theme-default{background:none}:host ::ng-deep .qmsckeditor__bpmn__container #panel-stencil-container .mat-expansion-indicator:after{color:#fff;transform:rotate(-135deg)}:host ::ng-deep .qmsckeditor__bpmn__container #panel-stencil-container .mat-expansion-panel-header{min-width:1224px;max-width:100%}:host ::ng-deep .qmsckeditor__bpmn__container #panel-stencil-container .joint-stencil>.content{width:1200px}:host ::ng-deep .qmsckeditor__bpmn__container .joint-inspector.joint-theme-bpmn .list-item .input-wrapper input{width:70%;float:none}:host ::ng-deep .qmsckeditor__bpmn__container .object-property[data-property$=\"/fill\"]{width:100%}:host ::ng-deep .qmsckeditor__bpmn__container .object-property[data-property$=\"/stroke\"]{width:100%}:host ::ng-deep .qmsckeditor__bpmn__container .field[data-field$=\"/fill\"]{width:100%}:host ::ng-deep .qmsckeditor__bpmn__container .field[data-field$=\"/stroke\"]{width:100%}:host ::ng-deep .qmsckeditor__bpmn__container .joint-inspector.joint-theme-bpmn .list-item:nth-child(odd){background:#ecefff;background:-webkit-gradient(left,#ecefff 0,#fafafa 100%);background:linear-gradient(270deg,#91a1c9 0,#fafafa);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#ECEFFF\",endColorstr=\"#3571b0\",GradientType=0)}:host ::ng-deep .qmsckeditor__bpmn__container .joint-inspector.joint-theme-bpmn .list-item:nth-child(2n){background:#ecefff;background:-webkit-gradient(left,#ecefff 0,#fafafa 100%);background:linear-gradient(270deg,#91a1c9 0,#fafafa);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#ECEFFF\",endColorstr=\"#3571b0\",GradientType=0)}:host ::ng-deep .qmsckeditor__bpmn__container .joint-inspector.joint-theme-bpmn .list-item .list-item:nth-child(odd){background:#eceff7;background:-webkit-gradient(left,#eceff7 0,#eceff7 100%);background:linear-gradient(270deg,#eceff7 0,#eceff7);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#eceff7\",endColorstr=\"#eceff7\",GradientType=0)}:host ::ng-deep .qmsckeditor__bpmn__container .joint-inspector.joint-theme-bpmn .list-item .list-item:nth-child(2n){background:#eceff7;background:-webkit-gradient(left,#eceff7 0,#eceff7 100%);background:linear-gradient(270deg,#eceff7 0,#eceff7);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#eceff7\",endColorstr=\"#eceff7\",GradientType=0)}:host ::ng-deep .qmsckeditor__bpmn__container .joint-inspector.joint-theme-bpmn .list-item{border-radius:10px;box-shadow:0 1px 1px 1px rgba(0,0,0,.2)}"]
14712
+ template: "<div id=\"qmsckeditor-bpmn\" class=\"qmsckeditor qmsckeditor__bpmn__container\">\r\n <div id=\"qmsckeditor-load-template-header\">\r\n <span\r\n id=\"qmsckeditor-bpmn-header_001\"\r\n mat-icon-button\r\n class=\"qmsckeditor button__close\"\r\n (click)=\"onCloseDialog()\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </span>\r\n <span\r\n id=\"qmsckeditor-bpmn-header_002\"\r\n mat-icon-button\r\n class=\"qmsckeditor button__done\"\r\n (click)=\"onInsertImage()\"\r\n >\r\n <mat-icon>done</mat-icon>\r\n </span>\r\n <div id=\"qmsckeditor-load-template-header_002\" mat-dialog-content>\r\n <h2 id=\"qmsckeditor-template_002_001\">\r\n {{ LANG.BPMN.BUSINESS_PROCESS_MODEL_AND_NOTATION }}\r\n </h2>\r\n </div>\r\n </div>\r\n\r\n <div id=\"bpmn\" class=\"bpmn__editor\">\r\n <div id=\"toolbarpanel\">\r\n <div id=\"toolbar-container\"></div>\r\n </div>\r\n <div id=\"leftpanel\">\r\n <div id=\"paperpanel\">\r\n <div id=\"paper-container\"></div>\r\n </div>\r\n <div id=\"stencilpanel\">\r\n <mat-expansion-panel\r\n id=\"panel-stencil-container\"\r\n [expanded]=\"expandedPanel\"\r\n (click)=\"expandPanel()\"\r\n >\r\n <mat-expansion-panel-header>\r\n <mat-panel-title> </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <div id=\"stencil-container\"></div>\r\n </mat-expansion-panel>\r\n <!-- <div id=\"stencil-container\"></div> -->\r\n </div>\r\n </div>\r\n <div id=\"rightpanel\">\r\n <mat-tab-group\r\n mat-stretch-tabs\r\n mat-align-tabs=\"center\"\r\n (selectedTabChange)=\"onTabChange($event)\"\r\n >\r\n <mat-tab\r\n [label]=\"LANG.BPMN.PROPERTIES\"\r\n id=\"qmsckeditor_bpmn_properties\"\r\n >\r\n <div id=\"inspector-container\"></div>\r\n <!-- <div class=\"about\" *ngIf=\"!selectedCellView\">\r\n <h1>{{ LANG.BPMN.BUSINESS_PROCESS_MODEL_AND_NOTATION }}</h1>\r\n </div> -->\r\n </mat-tab>\r\n <mat-tab\r\n [label]=\"LANG.BPMN.CONNECTION\"\r\n id=\"qmsckeditor_bpmn_connection\"\r\n >\r\n <!-- <div class=\"about\" *ngIf=\"!selectedCellView\">\r\n <h1>{{ LANG.BPMN.BUSINESS_PROCESS_MODEL_AND_NOTATION }}</h1>\r\n </div> -->\r\n <mat-expansion-panel\r\n id=\"qmsckeditor_bpmn_connection_panel\"\r\n [expanded]=\"true\"\r\n (opened)=\"(true)\"\r\n (closed)=\"(false)\"\r\n hideToggle\r\n *ngIf=\"!!selectedCellView\"\r\n >\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n {{ LANG.BPMN.CONNECTION }}\r\n </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <div id=\"qmsckeditor_bpmn_connection_panel_001\" class=\"col-12 mt8\">\r\n <mat-form-field appearance=\"fill\" class=\"col-12 pl-3\">\r\n <mat-label>{{ LANG.QMSCKEDITOR.ANCHOR_BY_NAME }}</mat-label>\r\n <mat-select\r\n [(ngModel)]=\"connectionType\"\r\n name=\"connectionType\"\r\n (ngModelChange)=\"onConnectionTypeChange()\"\r\n >\r\n <mat-option\r\n *ngFor=\"let item of connectionTypes\"\r\n [value]=\"item.id\"\r\n disableOptionCentering\r\n >\r\n {{ item.name }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n <div\r\n id=\"qmsckeditor_bpmn_connection_panel_002\"\r\n class=\"col-12 mt8 connection-wrapper\"\r\n *ngIf=\"!!link\"\r\n >\r\n <mat-card class=\"mat-card-wrapper\">\r\n <div class=\"row\">\r\n <div class=\"col-1 mt-n4\">\r\n <mat-icon aria-hidden=\"true\" class=\"fs32\">{{\r\n link.icon\r\n }}</mat-icon>\r\n </div>\r\n <div class=\"col-11 connection-content\">\r\n <div>\r\n <mat-card-title class=\"fs16\">{{\r\n link.title\r\n }}</mat-card-title>\r\n <mat-card-subtitle>{{ link.content }}</mat-card-subtitle>\r\n </div>\r\n <button mat-icon-button>\r\n <mat-icon (click)=\"removeLink()\">close</mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n </mat-card>\r\n </div>\r\n <div\r\n id=\"qmsckeditor_bpmn_connection_panel_003\"\r\n class=\"col-12 mt24\"\r\n *ngIf=\"!!link && link.documentType === 1\"\r\n >\r\n <div class=\"row\">\r\n <div class=\"col-10\">\r\n <mat-form-field appearance=\"fill\" class=\"col-12\">\r\n <mat-label>{{\r\n LANG.BPMN.CHOOSE_ANCHOR_IN_TEXT_OPTIONAL\r\n }}</mat-label>\r\n <mat-label *ngIf=\"isLoadingDocumentAnchor\">\r\n <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\r\n </mat-label>\r\n <mat-select\r\n [(ngModel)]=\"anchorByName\"\r\n name=\"anchorByName\"\r\n (ngModelChange)=\"onAnchorByNameChange()\"\r\n disableOptionCentering\r\n >\r\n <mat-option\r\n *ngIf=\"\r\n documentAnchors === null ||\r\n documentAnchors.length == 0\r\n \"\r\n disabled\r\n ></mat-option>\r\n <mat-option\r\n *ngFor=\"let docAnchor of documentAnchors\"\r\n [value]=\"docAnchor.anchorValue\"\r\n >\r\n {{ docAnchor.viewValue }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-2 mt8 pa0\">\r\n <button\r\n mat-raised-button\r\n [matTooltip]=\"LANG.BPMN.RELOAD_ANCHORS\"\r\n (click)=\"reloadAnchors()\"\r\n [disabled]=\"isLoadingDocumentAnchor\"\r\n >\r\n <mat-icon>autorenew</mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div\r\n id=\"qmsckeditor_bpmn_connection_panel_004\"\r\n class=\"col-12 mt8\"\r\n *ngIf=\"!!link\"\r\n >\r\n <mat-form-field appearance=\"fill\" class=\"col-12\">\r\n <mat-label>{{ LANG.QMSCKEDITOR.TARGET }}</mat-label>\r\n <mat-select\r\n [(ngModel)]=\"selectedTarget\"\r\n name=\"selectedTarget\"\r\n disableOptionCentering\r\n >\r\n <mat-option\r\n *ngFor=\"let target of targets\"\r\n [value]=\"target.id\"\r\n >\r\n {{ target.name }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n </mat-expansion-panel>\r\n </mat-tab>\r\n </mat-tab-group>\r\n </div>\r\n </div>\r\n</div>\r\n",
14713
+ styles: [":host ::ng-deep .qmsckeditor__bpmn__container .bpmn__editor{width:100%;height:600px}:host ::ng-deep .qmsckeditor__bpmn__container #leftpanel{float:left;width:70%;height:550px}:host ::ng-deep .qmsckeditor__bpmn__container #rightpanel{float:right;width:30%;height:550px;border:solid;border-width:0 1px 1px 0;overflow-y:auto}:host ::ng-deep .qmsckeditor__bpmn__container #rightpanel .textarea-field{display:flex;justify-content:space-between}:host ::ng-deep .qmsckeditor__bpmn__container #rightpanel .range-field{height:40px;margin-bottom:15px}:host ::ng-deep .qmsckeditor__bpmn__container #rightpanel .units{font-size:12px}:host ::ng-deep .qmsckeditor__bpmn__container #rightpanel .connection-wrapper{padding-bottom:1.34375em}:host ::ng-deep .qmsckeditor__bpmn__container #rightpanel .connection-wrapper .mat-card-wrapper{padding-right:0}:host ::ng-deep .qmsckeditor__bpmn__container #rightpanel .connection-wrapper .connection-content{display:flex;justify-content:space-between}:host ::ng-deep .qmsckeditor__bpmn__container #toolbarpanel{position:relative;top:0;bottom:0;left:0;right:0;margin-bottom:16px;height:50px;width:100%}:host ::ng-deep .qmsckeditor__bpmn__container #paperpanel{position:relative;top:0;bottom:0;left:0;right:0;height:400px;width:100%}:host ::ng-deep .qmsckeditor__bpmn__container #stencilpanel{position:relative;top:0;bottom:0;left:0;right:0;height:150px;width:100%}:host ::ng-deep .qmsckeditor__bpmn__container #toolbar-container{position:relative;top:0;bottom:0;left:0;right:0;width:100%;height:100%}:host ::ng-deep .qmsckeditor__bpmn__container #paper-container{position:relative;top:0;bottom:0;left:0;right:0;width:100%;height:inherit}:host ::ng-deep .qmsckeditor__bpmn__container #inspector-container{position:relative;top:0;right:0;bottom:0;width:100%;background:#fff}:host ::ng-deep .qmsckeditor__bpmn__container #stencil-container{position:absolute;top:0;bottom:0;left:0;right:0;width:1174px;height:inherit}:host ::ng-deep .qmsckeditor__bpmn__container #statusbar-container{position:absolute;left:0;right:0;bottom:0;height:25px}:host ::ng-deep .qmsckeditor__bpmn__container #panel-stencil-container{position:absolute;left:0;right:0;bottom:0;height:150px;overflow-x:auto;overflow-y:hidden;background-image:url(\"data:image/png;base64,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\");background-repeat:repeat;transition:all .5s ease-in-out 0s}:host ::ng-deep .qmsckeditor__bpmn__container #panel-stencil-container .mat-expansion-panel-header-title{color:#fff}:host ::ng-deep .qmsckeditor__bpmn__container #panel-stencil-container .joint-theme-default{background:none}:host ::ng-deep .qmsckeditor__bpmn__container #panel-stencil-container .mat-expansion-indicator:after{color:#fff;transform:rotate(-135deg)}:host ::ng-deep .qmsckeditor__bpmn__container #panel-stencil-container .mat-expansion-panel-header{min-width:1224px;max-width:100%}:host ::ng-deep .qmsckeditor__bpmn__container #panel-stencil-container .joint-stencil>.content{width:1200px}:host ::ng-deep .qmsckeditor__bpmn__container .joint-inspector.joint-theme-bpmn .list-item .input-wrapper input{width:70%;float:none}:host ::ng-deep .qmsckeditor__bpmn__container .object-property[data-property$=\"/fill\"]{width:100%}:host ::ng-deep .qmsckeditor__bpmn__container .object-property[data-property$=\"/stroke\"]{width:100%}:host ::ng-deep .qmsckeditor__bpmn__container .field[data-field$=\"/fill\"]{width:100%}:host ::ng-deep .qmsckeditor__bpmn__container .field[data-field$=\"/stroke\"]{width:100%}:host ::ng-deep .qmsckeditor__bpmn__container .joint-inspector.joint-theme-bpmn .list-item:nth-child(odd){background:#ecefff;background:-webkit-gradient(left,#ecefff 0,#fafafa 100%);background:linear-gradient(270deg,#91a1c9 0,#fafafa);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#ECEFFF\",endColorstr=\"#3571b0\",GradientType=0)}:host ::ng-deep .qmsckeditor__bpmn__container .joint-inspector.joint-theme-bpmn .list-item:nth-child(2n){background:#ecefff;background:-webkit-gradient(left,#ecefff 0,#fafafa 100%);background:linear-gradient(270deg,#91a1c9 0,#fafafa);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#ECEFFF\",endColorstr=\"#3571b0\",GradientType=0)}:host ::ng-deep .qmsckeditor__bpmn__container .joint-inspector.joint-theme-bpmn .list-item .list-item:nth-child(odd){background:#eceff7;background:-webkit-gradient(left,#eceff7 0,#eceff7 100%);background:linear-gradient(270deg,#eceff7 0,#eceff7);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#eceff7\",endColorstr=\"#eceff7\",GradientType=0)}:host ::ng-deep .qmsckeditor__bpmn__container .joint-inspector.joint-theme-bpmn .list-item .list-item:nth-child(2n){background:#eceff7;background:-webkit-gradient(left,#eceff7 0,#eceff7 100%);background:linear-gradient(270deg,#eceff7 0,#eceff7);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#eceff7\",endColorstr=\"#eceff7\",GradientType=0)}:host ::ng-deep .qmsckeditor__bpmn__container .joint-inspector.joint-theme-bpmn .list-item{border-radius:10px;box-shadow:0 1px 1px 1px rgba(0,0,0,.2)}"]
14626
14714
  },] }
14627
14715
  ];
14628
14716
  QMSCKEditorBpmnComponent.ctorParameters = () => [
@@ -14672,14 +14760,6 @@ var ImageModeName;
14672
14760
  ImageModeName["Remove"] = "remove";
14673
14761
  })(ImageModeName || (ImageModeName = {}));
14674
14762
 
14675
- class IconSvg {
14676
- }
14677
- IconSvg.VECTOR_POINTER = `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="24" height="24" viewBox="0 0 24 24"><path fill="#000000" d="M13.75,10.19L14.38,10.32L18.55,12.4C19.25,12.63 19.71,13.32 19.65,14.06V14.19L19.65,14.32L18.75,20.44C18.69,20.87 18.5,21.27 18.15,21.55C17.84,21.85 17.43,22 17,22H10.12C9.63,22 9.18,21.82 8.85,21.47L2.86,15.5L3.76,14.5C4,14.25 4.38,14.11 4.74,14.13H5.03L9,15V4.5A2,2 0 0,1 11,2.5A2,2 0 0,1 13,4.5V10.19H13.75Z" /></svg>`;
14678
- IconSvg.VECTOR_RECTANGLE = `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="24" height="24" viewBox="0 0 24 24"><path fill="#000000" d="M2,2H8V4H16V2H22V8H20V16H22V22H16V20H8V22H2V16H4V8H2V2M16,8V6H8V8H6V16H8V18H16V16H18V8H16M4,4V6H6V4H4M18,4V6H20V4H18M4,18V20H6V18H4M18,18V20H20V18H18Z" /></svg>`;
14679
- IconSvg.VECTOR_CIRCLE = `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="24" height="24" viewBox="0 0 24 24"><path fill="#000000" d="M9,2V4.06C6.72,4.92 4.92,6.72 4.05,9H2V15H4.06C4.92,17.28 6.72,19.09 9,19.95V22H15V19.94C17.28,19.08 19.09,17.28 19.95,15H22V9H19.94C19.08,6.72 17.28,4.92 15,4.05V2M11,4H13V6H11M9,6.25V8H15V6.25C16.18,6.86 17.14,7.82 17.75,9H16V15H17.75C17.14,16.18 16.18,17.14 15,17.75V16H9V17.75C7.82,17.14 6.86,16.18 6.25,15H8V9H6.25C6.86,7.82 7.82,6.86 9,6.25M4,11H6V13H4M18,11H20V13H18M11,18H13V20H11" /></svg>`;
14680
- IconSvg.VECTOR_POLYGON = `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="24" height="24" viewBox="0 0 24 24"><path fill="#000000" d="M2,2V8H4.28L5.57,16H4V22H10V20.06L15,20.05V22H21V16H19.17L20,9H22V3H16V6.53L14.8,8H9.59L8,5.82V2M4,4H6V6H4M18,5H20V7H18M6.31,8H7.11L9,10.59V14H15V10.91L16.57,9H18L17.16,16H15V18.06H10V16H7.6M11,10H13V12H11M6,18H8V20H6M17,18H19V20H17" /></svg>`;
14681
- IconSvg.VECTOR_REMOVE = `<svg width="24px" height="24px" viewBox="0 0 24 24" role="img" xmlns="http://www.w3.org/2000/svg" stroke="#000000" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" fill="none" color="#000000"><path fill="#000000" d="M17,12 L7,12"/> <circle cx="12" cy="12" r="10"/> </svg>`;
14682
-
14683
14763
  /**
14684
14764
  * Image Map Editor (imgmap) - in-browser imagemap editor
14685
14765
  * Copyright (C) 2006 - 2008 Adam Maschek (adam.maschek @ gmail.com)
@@ -23645,6 +23725,7 @@ class QmsCkeditorLinkSimpleComponent extends QMSCKEditorBaseComponent {
23645
23725
  const link = new QMSCKEditorLink();
23646
23726
  link.targetId = TargetType.new;
23647
23727
  link.url = `${LinkType.url}${ProtocolType.http}${this.url}`;
23728
+ link.title = this.url;
23648
23729
  const scrollTop = this.commonService.getScrollTopCkeditor(this.ckEditor);
23649
23730
  this.dialogRef.close(link);
23650
23731
  this.commonService.setScrollTopEditorContainer(this.ckEditor, scrollTop);
@@ -23744,6 +23825,9 @@ class QMSCKEditorComponent extends QMSCKEditorBaseComponent {
23744
23825
  let toolbarItems = this.qmsckPlugin.itemToolbar;
23745
23826
  if (this.isEnabledToggleToolbar() && this.qmsckData.toggledToolbarItems) {
23746
23827
  let strToolbars = this.qmsckData.toggledToolbarItems.replace(/qmsFlowchart,/g, "");
23828
+ if (!this.qmsckData.enableTemplate) {
23829
+ strToolbars = strToolbars.replace(/qmsTemplate,/g, ""); // disable qmsTemplate if user don't have handbookAdmin Role
23830
+ }
23747
23831
  toolbarItems += ',' + strToolbars; // disable qmsFlowchart until NK-440 done
23748
23832
  }
23749
23833
  this.ckeditorConfig = CKEditorCommonFunctions.getCKEditorConfiguration(toolbarItems);
@@ -23924,12 +24008,10 @@ class QMSCKEditorComponent extends QMSCKEditorBaseComponent {
23924
24008
  }
23925
24009
  initEditor(editor) {
23926
24010
  const imageUploadTypes = CKEditorImageUploadTypeConst.QMSCK_IMAGE_TYPES_SUPPORT_DEFAULT;
23927
- const maxFileSizeMB = this.qmsckData.maxFileSizeMB;
23928
24011
  const config = {
23929
24012
  apiUrl: this.qmsckData.apiUrl,
23930
24013
  LANG: this.LANG,
23931
- imageUploadTypes,
23932
- maxFileSizeMB,
24014
+ imageUploadTypes
23933
24015
  };
23934
24016
  editor.plugins.get("FileRepository").createUploadAdapter = (loader) => {
23935
24017
  return new QmsUploadAdapter(loader, config);
@@ -23953,13 +24035,13 @@ class QMSCKEditorComponent extends QMSCKEditorBaseComponent {
23953
24035
  templateEventHandling() {
23954
24036
  const data = new QMSCKEditorTemplate();
23955
24037
  data.id = 0;
23956
- data.content = this.qmsckContentInput;
24038
+ data.html = this.qmsckContentInput;
23957
24039
  data.edit = false;
23958
24040
  const dialogTemplate = this.dialog.open(QMSCKEditorTemplateComponent, {
23959
24041
  width: "650px",
23960
- height: "520px",
24042
+ height: "540px",
23961
24043
  data,
23962
- disableClose: true,
24044
+ disableClose: true
23963
24045
  });
23964
24046
  dialogTemplate.componentInstance.ckEditor = this.editorInstance;
23965
24047
  dialogTemplate
@@ -23978,7 +24060,7 @@ class QMSCKEditorComponent extends QMSCKEditorBaseComponent {
23978
24060
  const dialogTemplate = this.dialog.open(QMSCKEditorLoadTemplateComponent, {
23979
24061
  width: "650px",
23980
24062
  height: "700px",
23981
- data: this.qmsckContentInput,
24063
+ data: { enableEditTemplate: this.qmsckData.enableTemplate },
23982
24064
  disableClose: true,
23983
24065
  });
23984
24066
  dialogTemplate.componentInstance.ckEditor = this.editorInstance;
@@ -24259,6 +24341,7 @@ class QMSCKEditorComponent extends QMSCKEditorBaseComponent {
24259
24341
  data.treeData2 = [];
24260
24342
  data.treeConfig1 = config;
24261
24343
  data.canUploadImage = videos.length ? true : false;
24344
+ data.maxVideoThumbnailSizeKB = this.qmsckData.maxVideoThumbnailSizeKB;
24262
24345
  const dialogRef = this.dialog.open(RelatedPopupComponent, {
24263
24346
  minWidth: "450px",
24264
24347
  maxWidth: "800px",
@@ -24405,6 +24488,7 @@ QMSCKEditorModule.decorators = [
24405
24488
  MatProgressBarModule,
24406
24489
  QMSButtonModule,
24407
24490
  SharedModule,
24491
+ QmsAngularModule
24408
24492
  ],
24409
24493
  providers: [],
24410
24494
  exports: [QMSCKEditorComponent],
@@ -25180,6 +25264,13 @@ class QMSTreeModel {
25180
25264
  }
25181
25265
  }
25182
25266
 
25267
+ var DocumentFieldStatus;
25268
+ (function (DocumentFieldStatus) {
25269
+ DocumentFieldStatus[DocumentFieldStatus["Normal"] = 1] = "Normal";
25270
+ DocumentFieldStatus[DocumentFieldStatus["Mandatory"] = 2] = "Mandatory";
25271
+ DocumentFieldStatus[DocumentFieldStatus["Deleted"] = 3] = "Deleted";
25272
+ })(DocumentFieldStatus || (DocumentFieldStatus = {}));
25273
+
25183
25274
  /* eslint-disable @typescript-eslint/explicit-module-boundary-types */
25184
25275
  class QmsStepperComponent {
25185
25276
  constructor(changeDetector) {
@@ -25189,6 +25280,7 @@ class QmsStepperComponent {
25189
25280
  this.currentStep = 0;
25190
25281
  this.labelPosition = 'end';
25191
25282
  this.selectionChangeEvent = new EventEmitter();
25283
+ this.documentFieldStatus = DocumentFieldStatus;
25192
25284
  }
25193
25285
  ngOnInit() {
25194
25286
  }
@@ -25201,8 +25293,8 @@ QmsStepperComponent.decorators = [
25201
25293
  { type: Component, args: [{
25202
25294
  changeDetection: ChangeDetectionStrategy.OnPush,
25203
25295
  selector: 'app-qms-stepper',
25204
- template: "<div class=\"qms-stepper-container\">\r\n <div *ngIf=\"isHorizontal\">\r\n <mat-horizontal-stepper [style.width.px]=\"width\" labelPosition=\"{{labelPosition}}\" #stepper\r\n (selectionChange)=\"changeStep($event.selectedIndex)\" class=\"overflow-auto\" [selectedIndex]=\"currentStep\">\r\n <mat-step *ngFor=\"let step of steps; let i = index;\" [completed]=\"false\"\r\n [aria-labelledby]=\"step.disabled ? 'disabled' : 'step-item'\">\r\n <ng-template matStepLabel>\r\n <span tabindex=\"0\" (keydown.enter)=\"changeStep(i)\" class=\"title-step\"><span *ngIf=\"step.isMandatory\" class=\"is-mandatory-field\">(*) </span>{{step.name}}</span>\r\n </ng-template>\r\n <ng-template matStepContent>\r\n </ng-template>\r\n </mat-step>\r\n <ng-template matStepperIcon=\"edit\">\r\n {{stepper.selectedIndex + 1}}\r\n </ng-template>\r\n </mat-horizontal-stepper>\r\n </div>\r\n <div *ngIf=\"!isHorizontal\">\r\n <mat-vertical-stepper [style.height.px]=\"height\" #stepper (selectionChange)=\"changeStep($event.selectedIndex)\"\r\n [selectedIndex]=\"currentStep\" class=\"overflow-auto\">\r\n <mat-step *ngFor=\"let step of steps; let i = index;\" [completed]=\"false\"\r\n [aria-labelledby]=\"step.disabled ? 'disabled' : 'step-item'\">\r\n <ng-template matStepLabel>\r\n <span tabindex=\"0\" (keydown.enter)=\"changeStep(i)\" class=\"title-step\"><span *ngIf=\"step.isMandatory\" class=\"is-mandatory-field\">(*) </span>{{step.name}}</span>\r\n </ng-template>\r\n <ng-template matStepContent>\r\n </ng-template>\r\n </mat-step>\r\n <ng-template matStepperIcon=\"edit\">\r\n <span>{{stepper.selectedIndex + 1}}</span>\r\n </ng-template>\r\n </mat-vertical-stepper>\r\n </div>\r\n</div>",
25205
- styles: [".qms-stepper-container ::ng-deep .mat-step-header[aria-labelledby=step-item]{height:22px!important;padding:8px 12px;left:0;top:0;border-radius:4px;color:#fff}.qms-stepper-container ::ng-deep .mat-step-header[aria-labelledby=step-item].mat-horizontal-stepper-header{min-width:-webkit-fit-content;min-width:-moz-fit-content;min-width:fit-content}.qms-stepper-container ::ng-deep .mat-step-header[aria-labelledby=step-item].mat-vertical-stepper-header{width:156px}.qms-stepper-container ::ng-deep .mat-step-header .mat-step-icon{background:rgba(0,0,0,.6);margin-right:14px}.qms-stepper-container ::ng-deep .mat-step-header .mat-step-icon-selected{background-color:#1954a9!important;color:#fff}.qms-stepper-container ::ng-deep .mat-step-header[aria-selected=true] .title-step{font-weight:600!important;outline:none!important;-webkit-font-smoothing:antialiased!important}.qms-stepper-container ::ng-deep mat-step-header:active{background:#e5eefb}.qms-stepper-container ::ng-deep mat-step-header:active mat-step-label{color:#fff}.qms-stepper-container ::ng-deep mat-step-header:active mat-step-icon{color:#323232;background:rgba(0,0,0,.6)}.qms-stepper-container ::ng-deep mat-step-header .mat-ripple-element{background-color:rgba(229,238,251,.3)}.qms-stepper-container ::ng-deep mat-step-header:hover{background:#f2f7fd}.qms-stepper-container ::ng-deep mat-step-header:hover mat-step-label{color:#fff}.qms-stepper-container ::ng-deep mat-step-header:hover mat-step-icon{color:#323232;background:rgba(0,0,0,.6)}.qms-stepper-container ::ng-deep .mat-step-header[aria-labelledby=disabled]{pointer-events:none!important;cursor:not-allowed;opacity:.6;height:22px!important;width:156px;left:0;top:0;border-radius:4px;padding:8px 12px}.qms-stepper-container ::ng-deep mat-step-header:focus{border:2px solid #1954a9}.qms-stepper-container ::ng-deep mat-step-header:focus mat-step-label{color:#fff}.qms-stepper-container ::ng-deep mat-step-header:focus mat-step-icon{color:#323232;background:rgba(0,0,0,.6)}.qms-stepper-container ::ng-deep mat-step-header.mat-step-header.cdk-keyboard-focused,.qms-stepper-container ::ng-deep mat-step-header.mat-step-header.cdk-program-focused{border:3px solid #1954a9;background:#fff}.qms-stepper-container ::ng-deep mat-step-header:focus:not(:focus-visible){border:none}.qms-stepper-container ::ng-deep .mat-step-header[aria-labelledby=active]{pointer-events:none!important;cursor:not-allowed;opacity:.6}.qms-stepper-container .title-step{font-family:Open Sans;font-size:14px;font-style:normal;font-weight:400;letter-spacing:0;text-align:center;color:#323232;outline:none!important}.qms-stepper-container ::ng-deep .mat-step-icon{width:24px;height:24px}.qms-stepper-container ::ng-deep .mat-step-icon .mat-step-icon-content{font-family:Open Sans;font-size:14px;font-style:normal;font-weight:400;letter-spacing:0;text-align:center;color:#fff;padding-top:1px}.qms-stepper-container ::ng-deep .mat-stepper-vertical-line:before{border-left-width:0;border-right-width:0}.qms-stepper-container ::ng-deep .mat-stepper-vertical-line{margin-left:23px;background:#0000001f;height:30px;width:1px}.qms-stepper-container ::ng-deep .mat-stepper-horizontal-line{height:1px;width:22px!important;left:0;top:18px;border-radius:0;margin:8px;background:#0000001f;max-width:22px!important}.qms-stepper-container .is-mandatory-field{color:#ef1d34!important}"]
25296
+ template: "<div class=\"qms-stepper-container\">\r\n <div *ngIf=\"isHorizontal\">\r\n <mat-horizontal-stepper [style.width.px]=\"width\" labelPosition=\"{{labelPosition}}\" #stepper\r\n (selectionChange)=\"changeStep($event.selectedIndex)\" class=\"overflow-auto\" [selectedIndex]=\"currentStep\">\r\n <mat-step *ngFor=\"let step of steps; let i = index;\" [completed]=\"false\"\r\n [aria-labelledby]=\"step.disabled ? 'disabled' : 'step-item'\">\r\n <ng-template matStepLabel>\r\n <span tabindex=\"0\" (keydown.enter)=\"changeStep(i)\" class=\"title-step\" \r\n [ngClass]=\"{ 'is-deleted-field': step.documentFieldStatus === documentFieldStatus.Deleted }\"\r\n >{{step.name}}<span *ngIf=\"step.documentFieldStatus === documentFieldStatus.Mandatory\" class=\"is-mandatory-field\"> *</span></span>\r\n </ng-template>\r\n <ng-template matStepContent>\r\n </ng-template>\r\n </mat-step>\r\n <ng-template matStepperIcon=\"edit\">\r\n {{stepper.selectedIndex + 1}}\r\n </ng-template>\r\n </mat-horizontal-stepper>\r\n </div>\r\n <div *ngIf=\"!isHorizontal\">\r\n <mat-vertical-stepper [style.height.px]=\"height\" #stepper (selectionChange)=\"changeStep($event.selectedIndex)\"\r\n [selectedIndex]=\"currentStep\" class=\"overflow-auto\">\r\n <mat-step *ngFor=\"let step of steps; let i = index;\" [completed]=\"false\"\r\n [aria-labelledby]=\"step.disabled ? 'disabled' : 'step-item'\">\r\n <ng-template matStepLabel>\r\n <span tabindex=\"0\" (keydown.enter)=\"changeStep(i)\" class=\"title-step\"\r\n [ngClass]=\"{ 'is-deleted-field': step.documentFieldStatus === documentFieldStatus.Deleted }\"\r\n >{{step.name}}<span *ngIf=\"step.documentFieldStatus === documentFieldStatus.Mandatory\" class=\"is-mandatory-field\"> *</span></span>\r\n </ng-template>\r\n <ng-template matStepContent>\r\n </ng-template>\r\n </mat-step>\r\n <ng-template matStepperIcon=\"edit\">\r\n <span>{{stepper.selectedIndex + 1}}</span>\r\n </ng-template>\r\n </mat-vertical-stepper>\r\n </div>\r\n</div>",
25297
+ styles: [".qms-stepper-container ::ng-deep .mat-step-header[aria-labelledby=step-item]{height:22px!important;padding:8px 12px;left:0;top:0;border-radius:4px;color:#fff}.qms-stepper-container ::ng-deep .mat-step-header[aria-labelledby=step-item].mat-horizontal-stepper-header{min-width:-webkit-fit-content;min-width:-moz-fit-content;min-width:fit-content}.qms-stepper-container ::ng-deep .mat-step-header[aria-labelledby=step-item].mat-vertical-stepper-header{width:156px}.qms-stepper-container ::ng-deep .mat-step-header .mat-step-icon{background:rgba(0,0,0,.6);margin-right:14px}.qms-stepper-container ::ng-deep .mat-step-header .mat-step-icon-selected{background-color:#1954a9!important;color:#fff}.qms-stepper-container ::ng-deep .mat-step-header[aria-selected=true] .title-step{font-weight:600!important;outline:none!important;-webkit-font-smoothing:antialiased!important}.qms-stepper-container ::ng-deep mat-step-header:active{background:#e5eefb}.qms-stepper-container ::ng-deep mat-step-header:active mat-step-label{color:#fff}.qms-stepper-container ::ng-deep mat-step-header:active mat-step-icon{color:#323232;background:rgba(0,0,0,.6)}.qms-stepper-container ::ng-deep mat-step-header .mat-ripple-element{background-color:rgba(229,238,251,.3)}.qms-stepper-container ::ng-deep mat-step-header:hover{background:#f2f7fd}.qms-stepper-container ::ng-deep mat-step-header:hover mat-step-label{color:#fff}.qms-stepper-container ::ng-deep mat-step-header:hover mat-step-icon{color:#323232;background:rgba(0,0,0,.6)}.qms-stepper-container ::ng-deep .mat-step-header[aria-labelledby=disabled]{pointer-events:none!important;cursor:not-allowed;opacity:.6;height:22px!important;width:156px;left:0;top:0;border-radius:4px;padding:8px 12px}.qms-stepper-container ::ng-deep mat-step-header:focus{border:2px solid #1954a9}.qms-stepper-container ::ng-deep mat-step-header:focus mat-step-label{color:#fff}.qms-stepper-container ::ng-deep mat-step-header:focus mat-step-icon{color:#323232;background:rgba(0,0,0,.6)}.qms-stepper-container ::ng-deep mat-step-header.mat-step-header.cdk-keyboard-focused,.qms-stepper-container ::ng-deep mat-step-header.mat-step-header.cdk-program-focused{border:3px solid #1954a9;background:#fff}.qms-stepper-container ::ng-deep mat-step-header:focus:not(:focus-visible){border:none}.qms-stepper-container ::ng-deep .mat-step-header[aria-labelledby=active]{pointer-events:none!important;cursor:not-allowed;opacity:.6}.qms-stepper-container .title-step{font-family:Open Sans;font-size:14px;font-style:normal;font-weight:400;letter-spacing:0;text-align:center;color:#323232;outline:none!important}.qms-stepper-container ::ng-deep .mat-step-icon{width:24px;height:24px}.qms-stepper-container ::ng-deep .mat-step-icon .mat-step-icon-content{font-family:Open Sans;font-size:14px;font-style:normal;font-weight:400;letter-spacing:0;text-align:center;color:#fff;padding-top:1px}.qms-stepper-container ::ng-deep .mat-stepper-vertical-line:before{border-left-width:0;border-right-width:0}.qms-stepper-container ::ng-deep .mat-stepper-vertical-line{margin-left:23px;background:#0000001f;height:30px;width:1px}.qms-stepper-container ::ng-deep .mat-stepper-horizontal-line{height:1px;width:22px!important;left:0;top:18px;border-radius:0;margin:8px;background:#0000001f;max-width:22px!important}.qms-stepper-container .is-mandatory-field{color:#002e68!important}.qms-stepper-container .is-deleted-field{color:#ef1d34!important}"]
25206
25298
  },] }
25207
25299
  ];
25208
25300
  QmsStepperComponent.ctorParameters = () => [
@@ -28585,7 +28677,7 @@ SelectProcessDocumentPopupComponent.decorators = [
28585
28677
  selector: 'qms-select-process-document',
28586
28678
  template: "<div id=\"qmslib_related_popup\" class=\"qmslib__related__popup__container\">\r\n <div id=\"qmslib_related_popup_header\">\r\n <span mat-icon-button class=\"button__close\" (click)=\"onCloseClick()\">\r\n <mat-icon mat-icon>close</mat-icon>\r\n </span>\r\n <div id=\"qmslib_related_popup_header_001\" mat-dialog-content>\r\n <span>{{ moduleName | uppercase }}</span>\r\n </div>\r\n </div>\r\n\r\n <div id=\"qmslib_related_popup_search\" class=\"input__field\">\r\n <input\r\n type=\"text\"\r\n placeholder=\"{{ LANG.SEARCH }}\"\r\n matInput\r\n [formControl]=\"myControl\"\r\n [matAutocomplete]=\"auto\"\r\n />\r\n <mat-icon>search</mat-icon>\r\n </div>\r\n\r\n <mat-autocomplete\r\n #auto=\"matAutocomplete\"\r\n class=\"mat-autocomplete_related-viewport\"\r\n (optionSelected)=\"selectRelated($event.option.value)\"\r\n [displayWith]=\"displayWhenSelectRelatedOption\"\r\n >\r\n <cdk-virtual-scroll-viewport\r\n qms-scrollbar\r\n itemSize=\"10\"\r\n [class.related-viewport]=\"isInputValue\"\r\n *ngIf=\"filteredOptions.length\"\r\n >\r\n <ng-container *ngFor=\"let type of searchOrder\">\r\n <div\r\n class=\"search__module-result\"\r\n *ngIf=\"canShowSearchOption(type.value)\"\r\n >\r\n <span class=\"search__module-title\">{{ getTitle(type.value) }}</span>\r\n <mat-option\r\n class=\"search__option\"\r\n *ngFor=\"let option of getModuleFilteredOptions(type.value)\"\r\n [value]=\"option\"\r\n [disabled]=\"option.disabled\"\r\n >\r\n <qms-list-item type=\"image-square\">\r\n <mat-icon\r\n leading-icon\r\n type=\"image-square\"\r\n [svgIcon]=\"getNodeIcon(option)\"\r\n ></mat-icon>\r\n <div qms-list-header>\r\n <div qms-line type=\"subtitle\" class=\"search__option-name\">\r\n {{ option.itemName }}\r\n </div>\r\n <div\r\n class=\"caption\"\r\n *ngIf=\"option.breadcumbs && option.breadcumbs.length\"\r\n >\r\n <qms-breadcrumb\r\n class=\"breadcrumb-container\"\r\n type=\"table\"\r\n numDisplayItem=\"1\"\r\n [nodes]=\"option.breadcumbs\"\r\n >\r\n </qms-breadcrumb>\r\n </div>\r\n </div>\r\n <div qms-line color=\"default-subtitle\" *ngIf=\"getItemId(option)\">\r\n <span>\r\n <mat-icon\r\n class=\"material-icons-outlined search__description-icon\"\r\n >local_offer</mat-icon\r\n >\r\n </span>\r\n {{ getItemId(option) }}\r\n </div>\r\n </qms-list-item>\r\n </mat-option>\r\n </div>\r\n </ng-container>\r\n </cdk-virtual-scroll-viewport>\r\n </mat-autocomplete>\r\n\r\n <div class=\"row\">\r\n <div\r\n class=\"qms-scrollbar qmslib_related_popup_content\"\r\n [ngClass]=\"{\r\n panel__content_item: checkedNodeList.length,\r\n panel__content: !checkedNodeList.length,\r\n 'col-6': splitView,\r\n 'col-12': !splitView\r\n }\"\r\n >\r\n <ng-container *ngIf=\"treeData1.length > 0\">\r\n <div\r\n *ngIf=\"moduleId === module.documentProcess\"\r\n class=\"line__divider\"\r\n ></div>\r\n <mat-expansion-panel\r\n hideToggle\r\n id=\"qmslib_related_popup_common_001\"\r\n [expanded]=\"isCommonExpanded\"\r\n (opened)=\"isCommonExpanded = true\"\r\n (closed)=\"isCommonExpanded = false\"\r\n class=\"panel-tree\"\r\n >\r\n <mat-expansion-panel-header class=\"padding-5\">\r\n <mat-panel-title *ngIf=\"moduleId === module.documentProcess\">\r\n {{ LANG.PROCESSES | uppercase }}\r\n </mat-panel-title>\r\n <button qms-btn-icon class=\"related_popup_toggle-btn\">\r\n <mat-icon>\r\n {{\r\n isCommonExpanded ? \"keyboard_arrow_up\" : \"keyboard_arrow_down\"\r\n }}\r\n </mat-icon>\r\n </button>\r\n </mat-expansion-panel-header>\r\n <div id=\"qmslib_related_popup_common_002\">\r\n <qms-tree-new\r\n [treeData]=\"treeData1\"\r\n [treeConfig]=\"treeConfig1\"\r\n [selectedData]=\"selectedData\"\r\n [selectedRiskData]=\"selectedRiskData\"\r\n [disabledList]=\"disabledList\"\r\n (nodeExpandEvent)=\"getChildrenOfFolder($event, dataType.area)\"\r\n (selectNodeEvent)=\"selectNodeTreeEvent($event)\"\r\n (getChildNodeSelectOne)=\"getChildNodeSelectOne($event)\"\r\n (selectFolderEvent)=\"getItemOfFolder($event, dataType.area)\"\r\n [expandOnTitleClick]=\"!splitView\"\r\n [parentNodeOnClick]=\"parentNodeSelected\"\r\n (treeControlNodes)=\"selectTreeControlNodeProcess($event)\"\r\n >\r\n </qms-tree-new>\r\n </div>\r\n </mat-expansion-panel>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"treeData2.length > 0\">\r\n <div\r\n *ngIf=\"moduleId === module.documentProcess\"\r\n class=\"line__divider\"\r\n ></div>\r\n\r\n <mat-expansion-panel\r\n hideToggle\r\n *ngIf=\"moduleId === module.documentProcess\"\r\n id=\"qmslib_related_popup_document_001\"\r\n [expanded]=\"isDocumentExpanded\"\r\n (opened)=\"isDocumentExpanded = true\"\r\n (closed)=\"isDocumentExpanded = false\"\r\n class=\"panel-tree\"\r\n >\r\n <mat-expansion-panel-header class=\"padding-5\">\r\n <mat-panel-title>\r\n {{ LANG.DOCUMENTS | uppercase }}\r\n </mat-panel-title>\r\n <button qms-btn-icon class=\"related_popup_toggle-btn\">\r\n <mat-icon>\r\n {{\r\n isDocumentExpanded\r\n ? \"keyboard_arrow_up\"\r\n : \"keyboard_arrow_down\"\r\n }}\r\n </mat-icon>\r\n </button>\r\n </mat-expansion-panel-header>\r\n <div id=\"qmslib_related_popup_document_002\">\r\n <qms-tree-new\r\n [treeData]=\"treeData2\"\r\n [treeConfig]=\"treeConfig2\"\r\n [selectedData]=\"selectedData2\"\r\n [disabledList]=\"disabledList2\"\r\n (nodeExpandEvent)=\"getChildrenOfFolder($event, dataType.folder)\"\r\n (selectNodeEvent)=\"selectNodeTreeEvent($event)\"\r\n (getChildNodeSelectOne)=\"getChildNodeSelectOne($event)\"\r\n (selectFolderEvent)=\"getItemOfFolder($event, dataType.folder)\"\r\n [expandOnTitleClick]=\"!splitView\"\r\n [parentNodeOnClick]=\"parentNodeSelected\"\r\n (treeControlNodes)=\"selectTreeControlNodeDocument($event)\"\r\n >\r\n </qms-tree-new>\r\n </div>\r\n </mat-expansion-panel>\r\n </ng-container>\r\n </div>\r\n <div\r\n *ngIf=\"splitView\"\r\n class=\"qms-scrollbar qmslib-related-popup-splitview qmslib_related_popup_content col-6\"\r\n [ngClass]=\"{\r\n panel__content_item: checkedNodeList.length,\r\n panel__content: !checkedNodeList.length\r\n }\"\r\n >\r\n <div class=\"splitview-header\" *ngIf=\"selectedFolder\">\r\n {{ splitViewTitle }}\r\n </div>\r\n <div class=\"expand-node\" *ngFor=\"let node of itemInSplitview\">\r\n <mat-checkbox\r\n qms-group-options\r\n [disabled]=\"node.disabled\"\r\n color=\"default\"\r\n [checked]=\"isNodeSelected(node)\"\r\n (change)=\"toggleSelectItem(node)\"\r\n *ngIf=\"!hideSplitviewCheckbox\"\r\n >\r\n </mat-checkbox>\r\n <button\r\n class=\"button-boder\"\r\n mat-icon-button\r\n [disableRipple]=\"true\"\r\n (click)=\"toggleSelectItem(node)\"\r\n *ngIf=\"node.itemName\"\r\n >\r\n <mat-icon\r\n class=\"mat-icon-rtl-mirror material-icons-outlined\"\r\n [svgIcon]=\"getNodeIcon(node)\"\r\n >\r\n </mat-icon>\r\n </button>\r\n <span\r\n class=\"text-node-item\"\r\n style=\"cursor: pointer\"\r\n (click)=\"toggleSelectItem(node)\"\r\n [class.bgSelected]=\"\r\n isSelectOne &&\r\n idCheckIconSplitView == idToCheckSelectOne(node.id, node.parentId)\r\n \"\r\n >\r\n <span\r\n class=\"text-node\"\r\n [class.select-one-checked]=\"\r\n isSelectOne &&\r\n idCheckIconSplitView == idToCheckSelectOne(node.id, node.parentId)\r\n \"\r\n >{{ node.itemName }}</span\r\n >\r\n <mat-icon\r\n class=\"select-one-checked\"\r\n *ngIf=\"\r\n isSelectOne &&\r\n idCheckIconSplitView == idToCheckSelectOne(node.id, node.parentId)\r\n \"\r\n >\r\n done\r\n </mat-icon>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"checkedNodeList.length\" class=\"line__divider\"></div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-12\">\r\n <div *ngIf=\"checkedNodeList.length\" class=\"panel__item qms-scrollbar\">\r\n <div class=\"related__item__inline\" *ngFor=\"let item of checkedNodeList\">\r\n <button\r\n *ngIf=\"item.itemName\"\r\n mat-button\r\n class=\"related__item__content\"\r\n qms-tool-tip=\"{{\r\n isEllipsisActive(itemName) ? getItemChipName(item) : ''\r\n }}\"\r\n mode=\"dark\"\r\n >\r\n <span class=\"related__item__content_name\" #itemName>{{\r\n getItemChipName(item)\r\n }}</span>\r\n <mat-icon\r\n *ngIf=\"!(treeConfig1?.selectOne || treeConfig2?.selectOne)\"\r\n (click)=\"removeCheckedNodeList(item)\"\r\n >\r\n cancel</mat-icon\r\n >\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"line__divider\"></div>\r\n\r\n <div class=\"confirm__button__groups\">\r\n <button\r\n *ngIf=\"!checkedNodeList.length\"\r\n qms-btn\r\n style=\"margin-top: 7px\"\r\n (click)=\"onAddClick()\"\r\n >\r\n {{ LANG.ADD }}\r\n </button>\r\n <button\r\n *ngIf=\"checkedNodeList.length\"\r\n qms-btn\r\n style=\"margin-top: 0px\"\r\n (click)=\"onAddClick()\"\r\n >\r\n {{ LANG.ADD }} ({{ checkedNodeList.length }})\r\n </button>\r\n <button\r\n qms-btn-text\r\n [ngStyle]=\"{ 'margin-top': checkedNodeList.length ? '0px' : '7px' }\"\r\n (click)=\"onCloseClick()\"\r\n >\r\n {{ LANG.CANCEL }}\r\n </button>\r\n </div>\r\n</div>\r\n",
28587
28679
  encapsulation: ViewEncapsulation.None,
28588
- styles: ["::-webkit-scrollbar{width:12px}::-webkit-scrollbar-track{background:rgba(0,0,0,.12);background-clip:content-box}::-webkit-scrollbar-thumb{background:rgba(0,0,0,.38);border-radius:20px;width:4px;border:4px solid transparent;background-clip:content-box}::-webkit-scrollbar-thumb:hover{background:rgba(0,0,0,.5);background-clip:content-box;border:4px solid transparent}.qms__popup .button__close{float:right;top:-24px;right:-24px;cursor:pointer}.qms__danger button{border:none;color:var(--text-white);padding:0;text-align:center;text-decoration:none;display:inline-block;cursor:pointer;height:20px;width:20px;font-family:Open Sans;font-size:12px;font-weight:600;font-style:normal;line-height:16px}.qms__danger .red{background-color:var(--button-red-background);margin-left:10px}.qms__danger .yellow{background-color:var(--button-yellow-background);margin-left:10px;color:var(--popup-title-color)}.qms__danger .green{background-color:var(--button-green-background);margin-left:10px}.confirm__button__groups{margin-top:11px}.confirm__button__groups button{min-height:36px;width:auto;font-family:Open Sans;font-weight:500;font-size:14px;letter-spacing:1px;line-height:16px;padding-left:15px;padding-right:15px;margin-right:5px;float:right}.confirm__button__groups .confirm{background:var(--button-background)}.confirm__button__groups .confirm:hover{background:var(--primary-button-background-color);color:var(--primary-button-text-color)}.confirm__button__groups .confirm:disabled{cursor:not-allowed}.confirm__button__groups .cancel{background:var(--button-background)}.confirm__button__groups .cancel:hover{background:var(--primary-button-background-color);color:var(--primary-button-text-color)}.qmslib__related__popup__container .input__field{display:flex;align-items:center}.qmslib__related__popup__container .input__field input{width:100%;padding:10px;outline:none;border:none;background:var(--background-input-text)}.qmslib__related__popup__container .input__field .mat-icon{margin-left:-30px;cursor:pointer;vertical-align:middle}.qmslib__related__popup__container .line__divider{border-bottom:1px solid #ccc;height:1px;margin-top:10px;min-width:300px;max-width:100%}.qmslib__related__popup__container .button__close{float:right;top:-24px;right:-24px;cursor:pointer}.qmslib__related__popup__container .panel__content{height:450px;overflow:auto;margin-top:12px}.qmslib__related__popup__container .panel__content_item{height:350px;overflow:auto;margin-top:12px}.qmslib__related__popup__container .panel-tree .mat-expansion-panel-body{padding:0 12px 12px}.qmslib__related__popup__container .mat-expansion-panel-header{height:30px;font-size:12px;letter-spacing:1px;font-family:Raleway;font-weight:600;padding:0}.qmslib__related__popup__container .mat-expansion-panel-header .mat-expansion-panel-header-title{align-items:center;margin-left:12px}.qmslib__related__popup__container .mat-expansion-panel-header .related_popup_toggle-btn{width:1.5rem;height:1.5rem;line-height:1.5rem}.qmslib__related__popup__container .mat-expansion-panel:not([class*=mat-elevation-z]){box-shadow:none}.qmslib__related__popup__container .panel__item{height:100px;margin-top:12px;overflow-x:hidden;overflow-y:auto;padding-right:5px;width:100%;max-width:100%;display:flex;flex-wrap:wrap;align-content:flex-start}.qmslib__related__popup__container .panel__item .related__item__inline{max-width:100%}.qmslib__related__popup__container .panel__item .related__item__content{height:32px;line-height:32px;background-color:var(--related-item-background);max-width:100%;margin-bottom:5px;margin-left:2.5px;margin-right:2.5px}.qmslib__related__popup__container .panel__item .related__item__content .mat-icon{color:var(--related-mat-icon-color);font-size:24px}.qmslib__related__popup__container .panel__item .related__item__content span.related__item__content_name{display:inline-block;min-width:calc(100% - 13px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:278px}.qmslib__related__popup__container .qmslib-related-popup-splitview{background-color:#fff;border-left:1px solid #ccc;height:450px;overflow-y:auto;margin-top:12px}.qmslib__related__popup__container .qmslib-related-popup-splitview.panel__content{height:450px;overflow:auto;margin-top:12px}.qmslib__related__popup__container .qmslib-related-popup-splitview.panel__content_item{height:350px;overflow:auto;margin-top:12px}.qmslib__related__popup__container .qmslib-related-popup-splitview .splitview-header{font-size:12px;letter-spacing:1px;font-family:RALEWAY;font-weight:600;display:flex;align-items:center}.qmslib__related__popup__container .qmslib-related-popup-splitview .mat-checkbox.qms-group-options{padding:0}.qmslib__related__popup__container .qmslib-related-popup-splitview .mat-checkbox.qms-group-options .mat-checkbox-inner-container{margin-right:11px}.qmslib__related__popup__container .qmslib-related-popup-splitview .mat-checkbox.qms-group-options.mat-checkbox-checked{background:transparent!important}.qmslib__related__popup__container .qmslib-related-popup-splitview .expand-node{margin-left:8px;display:flex;align-items:center;min-height:40px}.qmslib__related__popup__container .qmslib-related-popup-splitview .expand-node .mat-icon{color:rgba(0,0,0,.6);margin-right:17px;min-width:-webkit-fit-content;min-width:-moz-fit-content;min-width:fit-content}.qmslib__related__popup__container .qmslib-related-popup-splitview .expand-node .mat-icon svg{display:block;min-width:-webkit-fit-content;min-width:-moz-fit-content;min-width:fit-content}.qmslib__related__popup__container .qmslib-related-popup-splitview .expand-node .text-node-item{margin-left:8px;display:flex;align-items:center;min-height:32px;justify-content:space-between;width:100%}.qmslib__related__popup__container .qmslib-related-popup-splitview .expand-node .text-node-item .select-one-checked{color:var(--primary)}cdk-virtual-scroll-viewport{overflow-x:hidden}cdk-virtual-scroll-viewport .search__module-result{margin:1.5rem;padding:0 0 .5rem}cdk-virtual-scroll-viewport .search__module-result .search__module-title{font-size:14px;font-weight:600}cdk-virtual-scroll-viewport .search__module-result .search__option{height:auto;line-height:normal;padding:8px 0;border-bottom:1px solid #e0e0e0}cdk-virtual-scroll-viewport .search__module-result .search__option .qms-list-item.mat-2-line.image-item{height:auto}cdk-virtual-scroll-viewport .search__module-result .search__option .qms-list-item-content{margin:0;border-bottom:none}cdk-virtual-scroll-viewport .search__module-result .search__option .qms-list-item-content .wrap-image.image-square{width:2.5rem;height:100%;background:transparent;align-self:center;margin-right:0}cdk-virtual-scroll-viewport .search__module-result .search__option .qms-list-item-content .wrap-image.image-square img{width:24px;height:24px}cdk-virtual-scroll-viewport .search__module-result .search__option .qms-list-item-content .material-icons-outlined.leading-icon,cdk-virtual-scroll-viewport .search__module-result .search__option .qms-list-item-content mat-icon.leading-icon{padding:4px 0 4px 4px}cdk-virtual-scroll-viewport .search__module-result .search__option .qms-list-item-content .subtitle{font-weight:400}cdk-virtual-scroll-viewport .search__module-result .search__option .qms-list-item-content .caption{overflow:hidden;line-height:normal;white-space:normal;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;padding:0;margin:0}cdk-virtual-scroll-viewport .search__module-result .search__option .qms-list-item-content .caption span.search__result__parent-name{display:inline-block;width:auto;width:calc(100% - 13px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}cdk-virtual-scroll-viewport .search__module-result .search__option .qms-list-item-content .default-subtitle{color:rgba(0,0,0,.38)}cdk-virtual-scroll-viewport .search__module-result .search__option .qms-list-item-content .search__description-icon{margin-right:0;width:12px;height:12px;font-size:12px}cdk-virtual-scroll-viewport .search__module-result .search__option .qms-list-item-content .qms-list-text{border-bottom:none}cdk-virtual-scroll-viewport .search__module-result .search__option .qms-list-item-content .breadcrumb-container .qms-breadcrumb-item .mat-icon{font-size:16px!important;padding-bottom:1px}cdk-virtual-scroll-viewport .search__module-result svg{display:block}#qmslib_related_popup_header_001{margin-bottom:20px;padding:0;font-weight:600;font-family:Raleway}.padding-5{padding:5px}.mat-autocomplete_related-viewport{height:100%;max-height:100%!important}.mat-autocomplete_related-viewport .cdk-virtual-scroll-content-wrapper{width:100%}.mat-autocomplete_related-viewport .related-viewport{min-height:300px}"]
28680
+ styles: ["::-webkit-scrollbar{width:12px}::-webkit-scrollbar-track{background:rgba(0,0,0,.12);background-clip:content-box}::-webkit-scrollbar-thumb{background:rgba(0,0,0,.38);border-radius:20px;width:4px;border:4px solid transparent;background-clip:content-box}::-webkit-scrollbar-thumb:hover{background:rgba(0,0,0,.5);background-clip:content-box;border:4px solid transparent}.qms__popup .button__close{float:right;top:-24px;right:-24px;cursor:pointer}.qms__danger button{border:none;color:var(--text-white);padding:0;text-align:center;text-decoration:none;display:inline-block;cursor:pointer;height:20px;width:20px;font-family:Open Sans;font-size:12px;font-weight:600;font-style:normal;line-height:16px}.qms__danger .red{background-color:var(--button-red-background);margin-left:10px}.qms__danger .yellow{background-color:var(--button-yellow-background);margin-left:10px;color:var(--popup-title-color)}.qms__danger .green{background-color:var(--button-green-background);margin-left:10px}.confirm__button__groups{margin-top:11px}.confirm__button__groups button{min-height:36px;width:auto;font-family:Open Sans;font-weight:500;font-size:14px;letter-spacing:1px;line-height:16px;padding-left:15px;padding-right:15px;margin-right:5px;float:right}.confirm__button__groups .confirm{background:var(--button-background)}.confirm__button__groups .confirm:hover{background:var(--primary-button-background-color);color:var(--primary-button-text-color)}.confirm__button__groups .confirm:disabled{cursor:not-allowed}.confirm__button__groups .cancel{background:var(--button-background)}.confirm__button__groups .cancel:hover{background:var(--primary-button-background-color);color:var(--primary-button-text-color)}.qmslib__related__popup__container .input__field{display:flex;align-items:center}.qmslib__related__popup__container .input__field input{width:100%;padding:10px;outline:none;border:none;background:var(--background-input-text)}.qmslib__related__popup__container .input__field .mat-icon{margin-left:-30px;cursor:pointer;vertical-align:middle}.qmslib__related__popup__container .line__divider{border-bottom:1px solid #ccc;height:1px;margin-top:10px;min-width:300px;max-width:100%}.qmslib__related__popup__container .button__close{float:right;top:-24px;right:-24px;cursor:pointer}.qmslib__related__popup__container .panel__content{height:450px;overflow:auto;margin-top:12px}.qmslib__related__popup__container .panel__content_item{height:350px;overflow:auto;margin-top:12px}.qmslib__related__popup__container .panel-tree{overflow:auto;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.qmslib__related__popup__container .panel-tree .mat-expansion-panel-body{padding:0 12px 12px}.qmslib__related__popup__container .mat-expansion-panel-header{height:30px;font-size:12px;letter-spacing:1px;font-family:Raleway;font-weight:600;padding:0}.qmslib__related__popup__container .mat-expansion-panel-header .mat-expansion-panel-header-title{align-items:center;margin-left:12px}.qmslib__related__popup__container .mat-expansion-panel-header .related_popup_toggle-btn{width:1.5rem;height:1.5rem;line-height:1.5rem}.qmslib__related__popup__container .mat-expansion-panel:not([class*=mat-elevation-z]){box-shadow:none}.qmslib__related__popup__container .panel__item{height:100px;margin-top:12px;overflow-x:hidden;overflow-y:auto;padding-right:5px;width:100%;max-width:100%;display:flex;flex-wrap:wrap;align-content:flex-start}.qmslib__related__popup__container .panel__item .related__item__inline{max-width:100%}.qmslib__related__popup__container .panel__item .related__item__content{height:32px;line-height:32px;background-color:var(--related-item-background);max-width:100%;margin-bottom:5px;margin-left:2.5px;margin-right:2.5px}.qmslib__related__popup__container .panel__item .related__item__content .mat-icon{color:var(--related-mat-icon-color);font-size:24px}.qmslib__related__popup__container .panel__item .related__item__content span.related__item__content_name{display:inline-block;min-width:calc(100% - 13px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:278px}.qmslib__related__popup__container .qmslib-related-popup-splitview{background-color:#fff;border-left:1px solid #ccc;height:450px;overflow-y:auto;margin-top:12px}.qmslib__related__popup__container .qmslib-related-popup-splitview.panel__content{height:450px;overflow:auto;margin-top:12px}.qmslib__related__popup__container .qmslib-related-popup-splitview.panel__content_item{height:350px;overflow:auto;margin-top:12px}.qmslib__related__popup__container .qmslib-related-popup-splitview .splitview-header{font-size:12px;letter-spacing:1px;font-family:RALEWAY;font-weight:600;display:flex;align-items:center}.qmslib__related__popup__container .qmslib-related-popup-splitview .mat-checkbox.qms-group-options{padding:0}.qmslib__related__popup__container .qmslib-related-popup-splitview .mat-checkbox.qms-group-options .mat-checkbox-inner-container{margin-right:11px}.qmslib__related__popup__container .qmslib-related-popup-splitview .mat-checkbox.qms-group-options.mat-checkbox-checked{background:transparent!important}.qmslib__related__popup__container .qmslib-related-popup-splitview .expand-node{margin-left:8px;display:flex;align-items:center;min-height:40px}.qmslib__related__popup__container .qmslib-related-popup-splitview .expand-node .mat-icon{color:rgba(0,0,0,.6);margin-right:17px;min-width:-webkit-fit-content;min-width:-moz-fit-content;min-width:fit-content}.qmslib__related__popup__container .qmslib-related-popup-splitview .expand-node .mat-icon svg{display:block;min-width:-webkit-fit-content;min-width:-moz-fit-content;min-width:fit-content}.qmslib__related__popup__container .qmslib-related-popup-splitview .expand-node .text-node-item{margin-left:8px;display:flex;align-items:center;min-height:32px;justify-content:space-between;width:100%}.qmslib__related__popup__container .qmslib-related-popup-splitview .expand-node .text-node-item .select-one-checked{color:var(--primary)}cdk-virtual-scroll-viewport{overflow-x:hidden}cdk-virtual-scroll-viewport .search__module-result{margin:1.5rem;padding:0 0 .5rem}cdk-virtual-scroll-viewport .search__module-result .search__module-title{font-size:14px;font-weight:600}cdk-virtual-scroll-viewport .search__module-result .search__option{height:auto;line-height:normal;padding:8px 0;border-bottom:1px solid #e0e0e0}cdk-virtual-scroll-viewport .search__module-result .search__option .qms-list-item.mat-2-line.image-item{height:auto}cdk-virtual-scroll-viewport .search__module-result .search__option .qms-list-item-content{margin:0;border-bottom:none}cdk-virtual-scroll-viewport .search__module-result .search__option .qms-list-item-content .wrap-image.image-square{width:2.5rem;height:100%;background:transparent;align-self:center;margin-right:0}cdk-virtual-scroll-viewport .search__module-result .search__option .qms-list-item-content .wrap-image.image-square img{width:24px;height:24px}cdk-virtual-scroll-viewport .search__module-result .search__option .qms-list-item-content .material-icons-outlined.leading-icon,cdk-virtual-scroll-viewport .search__module-result .search__option .qms-list-item-content mat-icon.leading-icon{padding:4px 0 4px 4px}cdk-virtual-scroll-viewport .search__module-result .search__option .qms-list-item-content .subtitle{font-weight:400}cdk-virtual-scroll-viewport .search__module-result .search__option .qms-list-item-content .caption{overflow:hidden;line-height:normal;white-space:normal;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;padding:0;margin:0}cdk-virtual-scroll-viewport .search__module-result .search__option .qms-list-item-content .caption span.search__result__parent-name{display:inline-block;width:auto;width:calc(100% - 13px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}cdk-virtual-scroll-viewport .search__module-result .search__option .qms-list-item-content .default-subtitle{color:rgba(0,0,0,.38)}cdk-virtual-scroll-viewport .search__module-result .search__option .qms-list-item-content .search__description-icon{margin-right:0;width:12px;height:12px;font-size:12px}cdk-virtual-scroll-viewport .search__module-result .search__option .qms-list-item-content .qms-list-text{border-bottom:none}cdk-virtual-scroll-viewport .search__module-result .search__option .qms-list-item-content .breadcrumb-container .qms-breadcrumb-item .mat-icon{font-size:16px!important;padding-bottom:1px}cdk-virtual-scroll-viewport .search__module-result svg{display:block}#qmslib_related_popup_header_001{margin-bottom:20px;padding:0;font-weight:600;font-family:Raleway}.padding-5{padding:5px}.mat-autocomplete_related-viewport{height:100%;max-height:100%!important}.mat-autocomplete_related-viewport .cdk-virtual-scroll-content-wrapper{width:100%}.mat-autocomplete_related-viewport .related-viewport{min-height:300px}"]
28589
28681
  },] }
28590
28682
  ];
28591
28683
  SelectProcessDocumentPopupComponent.ctorParameters = () => [
@@ -29480,6 +29572,10 @@ class QMSSelectDepartmentTreeConfig {
29480
29572
  this.activeSelectAllNode = false;
29481
29573
  this.isMobile = false;
29482
29574
  this.lazy = false;
29575
+ this.resetToggleIncludeChildWhenChangeView = true;
29576
+ this.isIncludeChildren = false;
29577
+ this.tooltipIncludeLabel = '';
29578
+ this.canAddNullResult = false;
29483
29579
  }
29484
29580
  }
29485
29581
 
@@ -29617,6 +29713,7 @@ class SelectDepartmentTreeComponent {
29617
29713
  this.overlay = overlay;
29618
29714
  this.viewContainerRef = viewContainerRef;
29619
29715
  this.treeDepartmentService = treeDepartmentService;
29716
+ this.spinnerArr = new Array(12).fill(0);
29620
29717
  this.arrSkeleton = new Array(6).fill(0);
29621
29718
  this.height = '50vh';
29622
29719
  this.config = new QMSSelectDepartmentTreeConfig();
@@ -29630,6 +29727,7 @@ class SelectDepartmentTreeComponent {
29630
29727
  this.onLoadMoreEvent = new EventEmitter();
29631
29728
  this.onCheckItemSearchEvent = new EventEmitter();
29632
29729
  this.onCheckAllItemSearchEvent = new EventEmitter();
29730
+ this.toggleIncludeChildEvent = new EventEmitter();
29633
29731
  this.MODE_VIEW_ENUM = ModeDepartmentTreeeViewEnum;
29634
29732
  this.ITEM_SIZE = 50;
29635
29733
  this.ngUnsubscribe = new Subject();
@@ -29674,6 +29772,9 @@ class SelectDepartmentTreeComponent {
29674
29772
  flatNode.groupId = node.groupId;
29675
29773
  flatNode.externalName = node.externalName;
29676
29774
  flatNode.childCount = node.childCount;
29775
+ flatNode.selectedChildCount = node.selectedChildCount;
29776
+ flatNode.markedGetChildCountRecurrsive = node.markedGetChildCountRecurrsive;
29777
+ flatNode.isIncludeChildWhenChecked = node.isIncludeChildWhenChecked;
29677
29778
  this.flatTreeNodeMap.set(flatNode, node);
29678
29779
  this.nestedTreeNodeMap.set(node, flatNode);
29679
29780
  return flatNode;
@@ -29769,6 +29870,7 @@ class SelectDepartmentTreeComponent {
29769
29870
  this.cdRef.detectChanges();
29770
29871
  }
29771
29872
  ngOnInit() {
29873
+ this.isIncludeChildren = this.config.isIncludeChildren;
29772
29874
  this._initTreeData();
29773
29875
  if (!this.config.lazy) {
29774
29876
  this._handleListSelected();
@@ -30114,16 +30216,17 @@ class SelectDepartmentTreeComponent {
30114
30216
  }
30115
30217
  });
30116
30218
  }
30117
- onCheckNode(node) {
30219
+ onCheckNode(node, fireEventCheckNode = true) {
30118
30220
  if (!node)
30119
30221
  return;
30120
- this.onCheckNodeEvent.emit(node);
30222
+ if (fireEventCheckNode)
30223
+ this.onCheckNodeEvent.emit(node);
30121
30224
  this.checkListSelection.toggle(node);
30122
30225
  if (this.config.isSelectOne) {
30123
30226
  this._handleSelectOne(node);
30124
30227
  return;
30125
30228
  }
30126
- if (this.config.lazy && node.expandable && !node.markedGetChildren) {
30229
+ if (this.config.lazy && node.expandable && !node.markedGetChildren && fireEventCheckNode) {
30127
30230
  if (!this._handlingLazyObject.checkNode) {
30128
30231
  this.handleCheckNode(node);
30129
30232
  return;
@@ -30150,8 +30253,8 @@ class SelectDepartmentTreeComponent {
30150
30253
  const parents = this.getAllParentNode(node);
30151
30254
  if (parents === null || parents === void 0 ? void 0 : parents.length) {
30152
30255
  parents.forEach(parent => {
30153
- // this.treeControl.expand(parent);
30154
- this.onExpandNode(parent);
30256
+ if (!this.treeControl.isExpanded(parent))
30257
+ this.onExpandNode(parent);
30155
30258
  });
30156
30259
  }
30157
30260
  }
@@ -30242,6 +30345,8 @@ class SelectDepartmentTreeComponent {
30242
30345
  const deselectNodes = (this.isIncludeChildren || nestedNode.isGroup) ? childSelected : [node];
30243
30346
  this.checkListSelection.deselect(...deselectNodes);
30244
30347
  nestedNode.isGroup = false;
30348
+ this.updateDataTree(this.currentTreeData);
30349
+ return;
30245
30350
  }
30246
30351
  resetNode(node) {
30247
30352
  node.isGroup = false;
@@ -30474,7 +30579,7 @@ class SelectDepartmentTreeComponent {
30474
30579
  this.scrollToNodeEvent$.next(nodeId);
30475
30580
  }
30476
30581
  setIndexView(index) {
30477
- if (index === 1) {
30582
+ if (index === 1 && this.config.resetToggleIncludeChildWhenChangeView) {
30478
30583
  this.isIncludeChildren = false;
30479
30584
  }
30480
30585
  this.getIndexView$.next(index);
@@ -30586,11 +30691,38 @@ class SelectDepartmentTreeComponent {
30586
30691
  this.updateDataTree(this.currentTreeData);
30587
30692
  this.selectedListAfterDataNodeChange$.next(data);
30588
30693
  }
30694
+ getCheckedStatusNode(node) {
30695
+ return this.isSelectedNode(node);
30696
+ }
30697
+ updateNodeInformation(node) {
30698
+ let nestedNode = this.convertToNestedNode(node);
30699
+ if (!nestedNode) {
30700
+ return;
30701
+ }
30702
+ nestedNode.childCount = node.childCount;
30703
+ nestedNode.name = node.name;
30704
+ nestedNode.itemIcon = node.itemIcon;
30705
+ nestedNode.itemIconSvg = node.itemIconSvg;
30706
+ nestedNode.selectedChildCount = node.selectedChildCount;
30707
+ nestedNode.markedGetChildCountRecurrsive = node.markedGetChildCountRecurrsive;
30708
+ nestedNode.isIncludeChildWhenChecked = node.isIncludeChildWhenChecked;
30709
+ }
30710
+ updateSelectedResultData(node) {
30711
+ const nodeResult = this.resultSelected.find((x) => x.id === node.id);
30712
+ if (nodeResult) {
30713
+ nodeResult.childCount = node.childCount;
30714
+ nodeResult.selectedChildCount = node.selectedChildCount;
30715
+ }
30716
+ }
30717
+ callCheckNodeOutside(node) {
30718
+ this.checkListSelection.toggle(node);
30719
+ //this.handleCheckNode(node);
30720
+ }
30589
30721
  }
30590
30722
  SelectDepartmentTreeComponent.decorators = [
30591
30723
  { type: Component, args: [{
30592
30724
  selector: 'qms-select-department-tree',
30593
- template: "<div [ngClass]=\"['qms-select-department-tree-container', (config.customClass || '')]\">\r\n <div class=\"input-select-department\">\r\n <form (ngSubmit)=\"!getLoading$.value && onSearch()\" *ngIf=\"config.enableTreeSearch\" class=\"input-field\">\r\n <mat-form-field class=\"w100\" qms-form qms-search-field>\r\n <input [formControl]=\"formSearchControl\" type=\"text\" placeholder=\"Search\" matInput />\r\n <button *ngIf=\"!getLoading$.value\" type=\"submit\" qms-btn-icon color=\"light\" matSuffix>\r\n <mat-icon>search</mat-icon>\r\n </button>\r\n <mat-progress-spinner [@inOutAnimation] matSuffix mode=\"indeterminate\" diameter=\"20\"\r\n *ngIf=\"getLoading$.value\"></mat-progress-spinner>\r\n <div *ngIf=\"!!formSearchControl.value && !getLoading$.value\" qms-input-clear matSuffix>\r\n <button qms-btn-icon color=\"light\" [@inOutAnimation] aria-label=\"Clear\" (click)=\"formSearchControl.reset()\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </div>\r\n </mat-form-field>\r\n </form>\r\n <div [@inOutAnimation] *ngIf=\"(getIndexView$ | async) === 1 && (textSearchSubject$ | async)\"\r\n class=\"sub-text ms-1 fw500\">\r\n {{LANG.RESULT_SEARCH_FOR}}<i><b>\"{{textSearchSubject$ | async}}\"</b></i>\r\n </div>\r\n <div [class.justify-content-between]=\"config.enableIncludeChild && !config.isSelectOne\"\r\n class=\"select__toggle-include toggle-include-child my-1 d-flex justify-content-end align-items-center\">\r\n <mat-slide-toggle *ngIf=\"config.enableIncludeChild && !config.isSelectOne\"\r\n [disabled]=\"(getIndexView$ | async) === 1\" [(ngModel)]=\"isIncludeChildren\" color=\"default\" qms-group-options>\r\n <span class=\"text-label\">{{config.selectIncludeLabel || LANG.SELECT_INCLUDE_CHILD}}</span>\r\n </mat-slide-toggle>\r\n <button class=\"btn-arrow\" [@inOutAnimation] *ngIf=\"(getIndexView$ | async) === 1 && config.enableTreeSearch\"\r\n (click)=\"setIndexView(0)\" qms-btn-icon color=\"light\" [qms-tool-tip]=\"LANG.BACK_TO_TREE\" mode=\"dark\"\r\n position=\"top\">\r\n <mat-icon>arrow_back</mat-icon>\r\n </button>\r\n <button class=\"btn-arrow\" [@inOutAnimation]\r\n *ngIf=\"(getIndexView$ | async) === 0 && config.enableTreeSearch && (textSearchSubject$ | async)\"\r\n (click)=\"setIndexView(1)\" qms-btn-icon color=\"light\" [qms-tool-tip]=\"LANG.GOTO_SEACH_RESULT\" mode=\"dark\"\r\n position=\"top\">\r\n <mat-icon>arrow_forward</mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n <div [@inOutAnimation]\r\n *ngIf=\"(getIndexView$ | async) === 0 && config.modeView === MODE_VIEW_ENUM.ExternalView && !!config.headerName\"\r\n class=\"header-view-tree\">\r\n <div class=\"header-view header-title\">\r\n {{config.headerName.treeName}}\r\n </div>\r\n <div class=\"header-view header-title\">\r\n {{config.headerName.externalName}}\r\n </div>\r\n </div>\r\n <mat-divider class=\"mx-auto\"></mat-divider>\r\n <div [@animateSlideView]=\"(getIndexView$ | async)\" [ngStyle]=\"{\r\n minHeight: height\r\n }\" class=\"tree-department-wrapper\">\r\n <div *ngIf=\"(getIndexView$ | async) === 0\" class=\"tree-view w100 h100\">\r\n <div class=\"tree-view-main h100\">\r\n <div *ngIf=\"!config.isSelectOne && !!treeControl.dataNodes && config.activeSelectAllNode\"\r\n class=\"checkbox-all-tree\" [class.sticky-position]=\"config.modeView === MODE_VIEW_ENUM.ExternalView\">\r\n <!-- Checkbox all root node -->\r\n <mat-checkbox [@inOutAnimation] (click)=\"onCheckAllRootTreeNode()\"\r\n [indeterminate]=\"isIndeterminateCheckboxAllTree\" [checked]=\"isAllDepartmentSelected\" qms-group-options\r\n color=\"default\" label=\"none\" class=\"checkbox-all\">\r\n <span class=\"text-label \">{{LANG.CHOOSE_ALL}}</span>\r\n <span>(<b>{{treeControl.dataNodes.length}}</b>)</span>\r\n </mat-checkbox>\r\n <mat-divider class=\"mx-auto\"></mat-divider>\r\n </div>\r\n <cdk-virtual-scroll-viewport *ngIf=\"dataSource.data\" [ngClass]=\"{\r\n 'has-checkbox-all': !config.isSelectOne && config.modeView === MODE_VIEW_ENUM.Basic,\r\n 'select-department-tree': true\r\n }\" [itemSize]=\"ITEM_SIZE\" [ngStyle]=\"{height: height}\">\r\n <ng-container *cdkVirtualFor=\"let node of dataSource; trackBy: trackBy\">\r\n <div class=\"qms-tree-node mt-1\" [style.padding-left]=\"node.level * (config.isMobile ? 12 :24) + 'px'\"\r\n [attr.data-id]=\"node.id\" [id]=\"'mat-node-'+node.id\" [@triggerColor]=\"activeNode == node.id\" [ngClass]=\"{\r\n 'mat-tree-node-disabled-all': node.disabled,\r\n 'w-100': config.isSelectOne,\r\n 'selected-theme': this.checkListSelection.isSelected(node) && config.isSelectOne,\r\n 'expand-node': treeControl.isExpandable(node) && treeControl.isExpanded(node),\r\n 'active-external-view': config.modeView === MODE_VIEW_ENUM.ExternalView,\r\n 'node-loading': node.isLoading\r\n }\">\r\n <div class=\"node-expand-area\">\r\n <button class=\"btn-toggle\" qms-btn-icon color=\"light\" (click)=\"onExpandNode(node)\"\r\n *ngIf=\"treeControl.isExpandable(node) && !node.isLoading\">\r\n <mat-icon>\r\n {{ treeControl.isExpanded(node) ? \"expand_more\" : \"chevron_right\" }}\r\n </mat-icon>\r\n </button>\r\n <ng-container *ngIf=\"node.isLoading; then loadingSpinner\"></ng-container>\r\n </div>\r\n <ng-container [ngTemplateOutlet]=\"config.isSelectOne ? nodeWithoutCheckboxTemplate : showCheckboxTemplate\"\r\n [ngTemplateOutletContext]=\"{ node: node }\"></ng-container>\r\n <div *ngIf=\"config.modeView === MODE_VIEW_ENUM.ExternalView\" class=\"external-view-node\">\r\n <span class=\"node-external\" qms-elipsify position=\"top\" mode=\"dark\">\r\n {{node.externalName || ''}}\r\n </span>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </cdk-virtual-scroll-viewport>\r\n <ng-container [@inOutAnimation] *ngIf=\"getLoadingMore$| async ;then maskOverlay\">\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div *ngIf=\"(getIndexView$ | async) === 1\" [ngStyle]=\"{\r\n height: height\r\n }\" class=\"qms-view-search-result\">\r\n <div *ngIf=\"config.modeView === MODE_VIEW_ENUM.ExternalView\"\r\n class=\"qms-view-search-result__header d-flex align-items-center justify-content-between\">\r\n <div class=\"header-title\">\r\n <span qms-elipsify mode=\"dark\" position=\"top\">\r\n {{config.headerName.resultSearchName}}\r\n </span>\r\n </div>\r\n <div class=\"header-title\">\r\n <span qms-elipsify mode=\"dark\" position=\"top\">\r\n {{config.headerName.externalName}}\r\n </span>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"getLoading$.value; then loading\"></ng-container>\r\n <div class=\"qms-view-search-result__wrapper\"\r\n [class.active-external]=\"config.modeView === MODE_VIEW_ENUM.ExternalView\"\r\n *ngIf=\"!!resultSearch.length && !getLoading$.value\">\r\n <div class=\"\">\r\n <mat-checkbox [@inOutAnimation]\r\n [disabled]=\"!resultSearch.length || config.isSelectOne || isDisableChecboxAllSearch()\" #checkAllSearch\r\n [indeterminate]=\"indeterminateSearchResult\" [checked]=\"isSelectAllResultSearch\" qms-group-options\r\n color=\"default\" label=\"none\" class=\"checkbox-all\"\r\n (click)=\"!config.isSelectOne && onSelectAllSearchResult(checkAllSearch.checked)\">\r\n <span class=\"text-label header-title\">{{LANG.CHOOSE_ALL}}</span>\r\n <span>(<b>{{resultSearch.length}}</b>)</span>\r\n </mat-checkbox>\r\n </div>\r\n <div [@inOutAnimation] [@listAnimation]\r\n [class.active-paging]=\"searchDepartment$.value.length > 10 && config.enablePagingSearch\" class=\"result\">\r\n <div [qms-tool-tip]=\"!canHandleItemSearchResult(item) ? LANG.ITEM_NOT_MATCH_TO_TREE : ''\" mode=\"dark\"\r\n position=\"top\" *ngFor=\"let item of resultSearch\"\r\n (click)=\"$event.stopImmediatePropagation(); !item.disabled && onCheckItemSearchResult(item)\"\r\n [class.active]=\"checkListSelectionSearch.isSelected(item)\" class=\"result-item user-select-none\" matRipple>\r\n <mat-checkbox [@inOutAnimation] *ngIf=\"!item.isLoading\" [disabled]=\"item.disabled\"\r\n (click)=\"$event.stopImmediatePropagation(); !item.disabled && onCheckItemSearchResult(item)\"\r\n [checked]=\"checkListSelectionSearch.isSelected(item)\" qms-group-options color=\"default\" label=\"none\">\r\n </mat-checkbox>\r\n <div *ngIf=\"item.isLoading\" [@inOutAnimation] class=\"position-relative\">\r\n <ng-container *ngIf=\"item.isLoading; then loadingSpinner\"></ng-container>\r\n </div>\r\n <div class=\"result-item__content\">\r\n <div class=\"item-result-content-wraper\">\r\n <div class=\"text-gray fw-bold fs-base mb0\">{{item.name}}</div>\r\n <qms-breadcrumb *ngIf=\"item.location?.length > 1\" [type]=\"config.isMobile ? 'mobile': ''\"\r\n [numDisplayItem]=\"6\" (onItemClick)=\"$event.stopImmediatePropagation()\" class=\"breadcrumb-container\"\r\n [nodes]=\"item.location\">\r\n </qms-breadcrumb>\r\n <div *ngIf=\"item.location?.length === 1\" class=\"d-flex align-items-center\">\r\n <span qms-elipsify mode=\"dark\" position=\"top\"\r\n class=\"item-breadcrumb-disable d-block\">{{item.location[0].name}}</span>\r\n </div>\r\n </div>\r\n <div *ngIf=\"config.modeView === MODE_VIEW_ENUM.ExternalView\" class=\"external-name\">\r\n <span qms-elipsify mode=\"dark\" position=\"top\" class=\"text-gray fs-base mb0\">{{item.externalName}}\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div [@inOutAnimation] *ngIf=\"!resultSearch.length && !getLoading$.value\" class=\"result no-result\">\r\n <ng-container *ngTemplateOutlet=\"noResult\"></ng-container>\r\n </div>\r\n <mat-divider *ngIf=\"searchDepartment$.value.length > 10 && config.enablePagingSearch\"\r\n class=\"mx-auto\"></mat-divider>\r\n <qms-paginator #paginatorSearch *ngIf=\"searchDepartment$.value.length > 10 && config.enablePagingSearch \"\r\n [length]=\"searchDepartment$.value.length\" [numHidden]=\"0\" [pageSize]=\"CURRENT_PAGESIZE\"\r\n [pageSizeOptions]=\"PAGE_SIZE_OPTION\" (page)='onPagingSearchResult($event)'\r\n [size]='config.isMobile ? PAGINATION_SIZE.small : PAGINATION_SIZE.medium'>\r\n </qms-paginator>\r\n </div>\r\n </div>\r\n\r\n <!-- Template for Checkbox -->\r\n <ng-template #showCheckboxTemplate let-node=\"node\">\r\n <mat-checkbox [id]=\"'node-'+node.id\" qms-group-options color=\"default\" label=\"none\" class=\"flex-direction-row\"\r\n [disabled]=\"node.isLoading\" [checked]=\"checkListSelection.isSelected(node)\"\r\n (click)=\"!node.isLoading && onCheckNode(node)\" [attr.disabled]=\"node.disabled || node.isLoading\">\r\n <img [title]=\"node.itemIconSvg\" *ngIf=\"node.itemIconSvg\" class=\"material-icons type-icon\"\r\n [src]=\"node.itemIconSvg\" />\r\n <span *ngIf=\"node.itemIcon\" [class]=\"node.itemIcon\" [qmsTransformIcon]=\"node.itemIcon\"\r\n class=\"material-icons-outlined type-icon\"></span>\r\n <span *ngIf=\"node.itemMatIcon\" class=\"material-icons-outlined type-icon\">{{\r\n node.itemMatIcon }}\r\n </span>\r\n <span class=\"text-name cursor-pointer ml5 123\" [ngClass]=\"{ disabled: node.disabled }\">{{ node.name}}\r\n </span>\r\n </mat-checkbox>\r\n </ng-template>\r\n\r\n <!-- Template node without checkbox -->\r\n <ng-template #nodeWithoutCheckboxTemplate let-node=\"node\">\r\n <div [id]=\"'node-'+node.id\" (click)=\"onCheckNode(node)\" class=\"node-without-checkbox\">\r\n <div class=\"node-info\">\r\n <span *ngIf=\"node.itemIcon\" [class]=\"node.itemIcon\" [qmsTransformIcon]=\"node.itemIcon\"\r\n class=\"material-icons-outlined type-icon\"></span>\r\n <span *ngIf=\"node.itemMatIcon\" class=\"material-icons-outlined type-icon\">{{\r\n node.itemMatIcon }}\r\n </span>\r\n <span class=\"text-name cursor-pointer pl-10 123\" [ngClass]=\"{ disabled: node.disabled }\">{{ node.name }}</span>\r\n </div>\r\n <div class=\"node-state\">\r\n <mat-icon *ngIf=\"checkListSelection.isSelected(node)\">check</mat-icon>\r\n </div>\r\n </div>\r\n </ng-template>\r\n</div>\r\n\r\n<ng-template #noResult>\r\n <svg width=\"89\" height=\"130\" viewBox=\"0 0 89 88\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"0.5\" width=\"88\" height=\"88\" rx=\"44\" fill=\"white\" />\r\n <rect x=\"0.5\" width=\"88\" height=\"88\" rx=\"44\" fill=\"#0163B2\" fill-opacity=\"0.12\" />\r\n <path\r\n d=\"M44.5 56.6936L58.096 64.8996L54.488 49.4336L66.5 39.0276L50.682 37.6856L44.5 23.0996L38.318 37.6856L22.5 39.0276L34.512 49.4336L30.904 64.8996L44.5 56.6936Z\"\r\n fill=\"#0163B3\" />\r\n <text x=\"10\" y=\"105\" fill=\"#0163B2\">{{LANG.NO_RESULT}}</text>\r\n </svg>\r\n</ng-template>\r\n\r\n<!-- Template loading -->\r\n<ng-template #loading>\r\n <div [ngStyle]=\"{\r\n 'height': searchDepartment$.value.length ? (config.modeView === MODE_VIEW_ENUM.ExternalView ? 'calc(100% - 90px)' : 'calc(100% - 50px)' ) : height\r\n }\" class=\"qms-loading-container\">\r\n <div class=\"qms-loader\" *ngFor=\"let item of arrSkeleton\">\r\n <div class=\"qms-loader__wrapper\">\r\n <div class=\"row-loader\">\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<!-- Template mask overlay -->\r\n<ng-template #maskOverlay>\r\n <div class=\"mask-overlay\">\r\n <mat-spinner [diameter]=\"50\" [strokeWidth]=\"5\"></mat-spinner>\r\n </div>\r\n</ng-template>\r\n\r\n<!-- Loading spinner -->\r\n<ng-template #loadingSpinner>\r\n <div class=\"qms-spinner center\">\r\n <mat-spinner [diameter]=\"20\" [strokeWidth]=\"2\"></mat-spinner>\r\n </div>\r\n</ng-template>\r\n",
30725
+ template: "<div [ngClass]=\"['qms-select-department-tree-container', (config.customClass || '')]\">\r\n <div class=\"input-select-department\">\r\n <form (ngSubmit)=\"!getLoading$.value && onSearch()\" *ngIf=\"config.enableTreeSearch\" class=\"input-field\">\r\n <mat-form-field class=\"w100\" qms-form qms-search-field>\r\n <input [formControl]=\"formSearchControl\" type=\"text\" placeholder=\"Search\" matInput />\r\n <button *ngIf=\"!getLoading$.value\" type=\"submit\" qms-btn-icon color=\"light\" matSuffix>\r\n <mat-icon>search</mat-icon>\r\n </button>\r\n <mat-progress-spinner [@inOutAnimation] matSuffix mode=\"indeterminate\" diameter=\"20\"\r\n *ngIf=\"getLoading$.value\"></mat-progress-spinner>\r\n <div *ngIf=\"!!formSearchControl.value && !getLoading$.value\" qms-input-clear matSuffix>\r\n <button qms-btn-icon color=\"light\" [@inOutAnimation] aria-label=\"Clear\" (click)=\"formSearchControl.reset()\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </div>\r\n </mat-form-field>\r\n </form>\r\n <div [@inOutAnimation] *ngIf=\"(getIndexView$ | async) === 1 && (textSearchSubject$ | async)\"\r\n class=\"sub-text ms-1 fw500\">\r\n {{LANG.RESULT_SEARCH_FOR}}<i><b>\"{{textSearchSubject$ | async}}\"</b></i>\r\n </div>\r\n <div [class.justify-content-between]=\"config.enableIncludeChild && !config.isSelectOne\"\r\n class=\"select__toggle-include toggle-include-child my-1 d-flex justify-content-end align-items-center\">\r\n <mat-slide-toggle *ngIf=\"config.enableIncludeChild && !config.isSelectOne\"\r\n [disabled]=\"(getIndexView$ | async) === 1\" [(ngModel)]=\"isIncludeChildren\"\r\n (ngModelChange)=\"toggleIncludeChildEvent.emit($event)\" color=\"default\" qms-group-options>\r\n <span class=\"text-label\">{{config.selectIncludeLabel || LANG.SELECT_INCLUDE_CHILD}}</span>\r\n </mat-slide-toggle>\r\n <button class=\"btn-arrow\" [@inOutAnimation] *ngIf=\"(getIndexView$ | async) === 1 && config.enableTreeSearch\"\r\n (click)=\"setIndexView(0)\" qms-btn-icon color=\"light\" [qms-tool-tip]=\"LANG.BACK_TO_TREE\" mode=\"dark\"\r\n position=\"top\">\r\n <mat-icon>arrow_back</mat-icon>\r\n </button>\r\n <button class=\"btn-arrow\" [@inOutAnimation]\r\n *ngIf=\"(getIndexView$ | async) === 0 && config.enableTreeSearch && (textSearchSubject$ | async)\"\r\n (click)=\"setIndexView(1)\" qms-btn-icon color=\"light\" [qms-tool-tip]=\"LANG.GOTO_SEACH_RESULT\" mode=\"dark\"\r\n position=\"top\">\r\n <mat-icon>arrow_forward</mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n <div [@inOutAnimation]\r\n *ngIf=\"(getIndexView$ | async) === 0 && config.modeView === MODE_VIEW_ENUM.ExternalView && !!config.headerName\"\r\n class=\"header-view-tree\">\r\n <div class=\"header-view header-title\">\r\n {{config.headerName.treeName}}\r\n </div>\r\n <div class=\"header-view header-title\">\r\n {{config.headerName.externalName}}\r\n </div>\r\n </div>\r\n <mat-divider class=\"mx-auto\"></mat-divider>\r\n <div [@animateSlideView]=\"(getIndexView$ | async)\" [ngStyle]=\"{\r\n minHeight: height\r\n }\" class=\"tree-department-wrapper\">\r\n <div *ngIf=\"(getIndexView$ | async) === 0\" class=\"tree-view w100 h100\">\r\n <div class=\"tree-view-main h100\">\r\n <div *ngIf=\"!config.isSelectOne && !!treeControl.dataNodes && config.activeSelectAllNode\"\r\n class=\"checkbox-all-tree\" [class.sticky-position]=\"config.modeView === MODE_VIEW_ENUM.ExternalView\">\r\n <!-- Checkbox all root node -->\r\n <mat-checkbox [@inOutAnimation] (click)=\"onCheckAllRootTreeNode()\"\r\n [indeterminate]=\"isIndeterminateCheckboxAllTree\" [checked]=\"isAllDepartmentSelected\" qms-group-options\r\n color=\"default\" label=\"none\" class=\"checkbox-all\">\r\n <span class=\"text-label \">{{LANG.CHOOSE_ALL}}</span>\r\n <span>(<b>{{treeControl.dataNodes.length}}</b>)</span>\r\n </mat-checkbox>\r\n <mat-divider class=\"mx-auto\"></mat-divider>\r\n </div>\r\n <cdk-virtual-scroll-viewport *ngIf=\"dataSource.data\" [ngClass]=\"{\r\n 'has-checkbox-all': !config.isSelectOne && config.modeView === MODE_VIEW_ENUM.Basic,\r\n 'select-department-tree': true\r\n }\" [itemSize]=\"ITEM_SIZE\" [ngStyle]=\"{height: height}\">\r\n <ng-container *cdkVirtualFor=\"let node of dataSource; trackBy: trackBy\">\r\n <div class=\"qms-tree-node mt-1\" [style.padding-left]=\"node.level * (config.isMobile ? 12 :24) + 'px'\"\r\n [attr.data-id]=\"node.id\" [id]=\"'mat-node-'+node.id\" [@triggerColor]=\"activeNode == node.id\" [ngClass]=\"{\r\n 'mat-tree-node-disabled-all': node.disabled,\r\n 'w-100': config.isSelectOne,\r\n 'selected-theme': this.checkListSelection.isSelected(node) && config.isSelectOne,\r\n 'expand-node': treeControl.isExpandable(node) && treeControl.isExpanded(node),\r\n 'active-external-view': config.modeView === MODE_VIEW_ENUM.ExternalView,\r\n 'node-loading': node.isLoading\r\n }\">\r\n <div class=\"node-expand-area\">\r\n <button class=\"btn-toggle\" qms-btn-icon color=\"light\" (click)=\"onExpandNode(node)\"\r\n *ngIf=\"treeControl.isExpandable(node) && !node.isLoading\">\r\n <mat-icon>\r\n {{ treeControl.isExpanded(node) ? \"expand_more\" : \"chevron_right\" }}\r\n </mat-icon>\r\n </button>\r\n <ng-container *ngIf=\"node.isLoading; then loadingSpinner\"></ng-container>\r\n </div>\r\n <ng-container [ngTemplateOutlet]=\"config.isSelectOne ? nodeWithoutCheckboxTemplate : showCheckboxTemplate\"\r\n [ngTemplateOutletContext]=\"{ node: node }\"></ng-container>\r\n <div *ngIf=\"config.modeView === MODE_VIEW_ENUM.ExternalView\" class=\"external-view-node\">\r\n <span class=\"node-external\" qms-elipsify position=\"top\" mode=\"dark\">\r\n {{node.externalName || ''}}\r\n </span>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </cdk-virtual-scroll-viewport>\r\n <ng-container [@inOutAnimation] *ngIf=\"getLoadingMore$| async ;then maskOverlay\">\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div *ngIf=\"(getIndexView$ | async) === 1\" [ngStyle]=\"{\r\n height: height\r\n }\" class=\"qms-view-search-result\">\r\n <div *ngIf=\"config.modeView === MODE_VIEW_ENUM.ExternalView\"\r\n class=\"qms-view-search-result__header d-flex align-items-center justify-content-between\">\r\n <div class=\"header-title\">\r\n <span qms-elipsify mode=\"dark\" position=\"top\">\r\n {{config.headerName.resultSearchName}}\r\n </span>\r\n </div>\r\n <div class=\"header-title\">\r\n <span qms-elipsify mode=\"dark\" position=\"top\">\r\n {{config.headerName.externalName}}\r\n </span>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"getLoading$.value; then loading\"></ng-container>\r\n <div class=\"qms-view-search-result__wrapper\"\r\n [class.active-external]=\"config.modeView === MODE_VIEW_ENUM.ExternalView\"\r\n *ngIf=\"!!resultSearch.length && !getLoading$.value\">\r\n <div class=\"\">\r\n <mat-checkbox [@inOutAnimation]\r\n [disabled]=\"!resultSearch.length || config.isSelectOne || isDisableChecboxAllSearch()\" #checkAllSearch\r\n [indeterminate]=\"indeterminateSearchResult\" [checked]=\"isSelectAllResultSearch\" qms-group-options\r\n color=\"default\" label=\"none\" class=\"checkbox-all\"\r\n (click)=\"!config.isSelectOne && onSelectAllSearchResult(checkAllSearch.checked)\">\r\n <span class=\"text-label header-title\">{{LANG.CHOOSE_ALL}}</span>\r\n <span>(<b>{{resultSearch.length}}</b>)</span>\r\n </mat-checkbox>\r\n </div>\r\n <div [@inOutAnimation] [@listAnimation]\r\n [class.active-paging]=\"searchDepartment$.value.length > 10 && config.enablePagingSearch\" class=\"result\">\r\n <div [qms-tool-tip]=\"!canHandleItemSearchResult(item) ? LANG.ITEM_NOT_MATCH_TO_TREE : ''\" mode=\"dark\"\r\n position=\"top\" *ngFor=\"let item of resultSearch\"\r\n (click)=\"$event.stopImmediatePropagation(); !item.disabled && onCheckItemSearchResult(item)\"\r\n [class.active]=\"checkListSelectionSearch.isSelected(item)\" class=\"result-item user-select-none\" matRipple>\r\n <mat-checkbox [@inOutAnimation] *ngIf=\"!item.isLoading\" [disabled]=\"item.disabled\"\r\n (click)=\"$event.stopImmediatePropagation(); !item.disabled && onCheckItemSearchResult(item)\"\r\n [checked]=\"checkListSelectionSearch.isSelected(item)\" qms-group-options color=\"default\" label=\"none\">\r\n </mat-checkbox>\r\n <div *ngIf=\"item.isLoading\" [@inOutAnimation] class=\"position-relative\">\r\n <ng-container *ngIf=\"item.isLoading; then loadingSpinner\"></ng-container>\r\n </div>\r\n <div class=\"result-item__content\">\r\n <div class=\"item-result-content-wraper\">\r\n <div class=\"text-gray fw-bold fs-base mb0\">{{item.name}}</div>\r\n <qms-breadcrumb *ngIf=\"item.location?.length > 1\" [type]=\"config.isMobile ? 'mobile': ''\"\r\n [numDisplayItem]=\"6\" (onItemClick)=\"$event.stopImmediatePropagation()\" class=\"breadcrumb-container\"\r\n [nodes]=\"item.location\">\r\n </qms-breadcrumb>\r\n <div *ngIf=\"item.location?.length === 1\" class=\"d-flex align-items-center\">\r\n <span qms-elipsify mode=\"dark\" position=\"top\"\r\n class=\"item-breadcrumb-disable d-block\">{{item.location[0].name}}</span>\r\n </div>\r\n </div>\r\n <div *ngIf=\"config.modeView === MODE_VIEW_ENUM.ExternalView\" class=\"external-name\">\r\n <span qms-elipsify mode=\"dark\" position=\"top\" class=\"text-gray fs-base mb0\">{{item.externalName}}\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div [@inOutAnimation] *ngIf=\"!resultSearch.length && !getLoading$.value\" class=\"result no-result\">\r\n <ng-container *ngTemplateOutlet=\"noResult\"></ng-container>\r\n </div>\r\n <mat-divider *ngIf=\"searchDepartment$.value.length > 10 && config.enablePagingSearch\"\r\n class=\"mx-auto\"></mat-divider>\r\n <qms-paginator #paginatorSearch *ngIf=\"searchDepartment$.value.length > 10 && config.enablePagingSearch \"\r\n [length]=\"searchDepartment$.value.length\" [numHidden]=\"0\" [pageSize]=\"CURRENT_PAGESIZE\"\r\n [pageSizeOptions]=\"PAGE_SIZE_OPTION\" (page)='onPagingSearchResult($event)'\r\n [size]='config.isMobile ? PAGINATION_SIZE.small : PAGINATION_SIZE.medium'>\r\n </qms-paginator>\r\n </div>\r\n </div>\r\n\r\n <!-- Template for Checkbox -->\r\n <ng-template #showCheckboxTemplate let-node=\"node\">\r\n <mat-checkbox [id]=\"'node-'+node.id\" qms-group-options color=\"default\" label=\"none\" class=\"flex-direction-row\"\r\n [disabled]=\"node.isLoading\" [checked]=\"checkListSelection.isSelected(node)\"\r\n (click)=\"!node.isLoading && onCheckNode(node)\" [attr.disabled]=\"node.disabled || node.isLoading\">\r\n <img [title]=\"node.itemIconSvg\" *ngIf=\"node.itemIconSvg\" class=\"material-icons type-icon\"\r\n [src]=\"node.itemIconSvg\" />\r\n <span *ngIf=\"node.itemIcon\" [class]=\"node.itemIcon\" [qmsTransformIcon]=\"node.itemIcon\"\r\n class=\"material-icons-outlined type-icon\"></span>\r\n <span *ngIf=\"node.itemMatIcon\" class=\"material-icons-outlined type-icon\">{{\r\n node.itemMatIcon }}\r\n </span>\r\n <span class=\"text-name cursor-pointer ml5 123\" [ngClass]=\"{ disabled: node.disabled }\">{{ node.name}}\r\n </span>\r\n </mat-checkbox>\r\n </ng-template>\r\n\r\n <!-- Template node without checkbox -->\r\n <ng-template #nodeWithoutCheckboxTemplate let-node=\"node\">\r\n <div [id]=\"'node-'+node.id\" (click)=\"onCheckNode(node)\" class=\"node-without-checkbox\">\r\n <div class=\"node-info\">\r\n <span *ngIf=\"node.itemIcon\" [class]=\"node.itemIcon\" [qmsTransformIcon]=\"node.itemIcon\"\r\n class=\"material-icons-outlined type-icon\"></span>\r\n <span *ngIf=\"node.itemMatIcon\" class=\"material-icons-outlined type-icon\">{{\r\n node.itemMatIcon }}\r\n </span>\r\n <span class=\"text-name cursor-pointer pl-10 123\" [ngClass]=\"{ disabled: node.disabled }\">{{ node.name }}</span>\r\n </div>\r\n <div class=\"node-state\">\r\n <mat-icon *ngIf=\"checkListSelection.isSelected(node)\">check</mat-icon>\r\n </div>\r\n </div>\r\n </ng-template>\r\n</div>\r\n\r\n<ng-template #noResult>\r\n <svg width=\"89\" height=\"130\" viewBox=\"0 0 89 88\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"0.5\" width=\"88\" height=\"88\" rx=\"44\" fill=\"white\" />\r\n <rect x=\"0.5\" width=\"88\" height=\"88\" rx=\"44\" fill=\"#0163B2\" fill-opacity=\"0.12\" />\r\n <path\r\n d=\"M44.5 56.6936L58.096 64.8996L54.488 49.4336L66.5 39.0276L50.682 37.6856L44.5 23.0996L38.318 37.6856L22.5 39.0276L34.512 49.4336L30.904 64.8996L44.5 56.6936Z\"\r\n fill=\"#0163B3\" />\r\n <text x=\"10\" y=\"105\" fill=\"#0163B2\">{{LANG.NO_RESULT}}</text>\r\n </svg>\r\n</ng-template>\r\n\r\n<!-- Template loading -->\r\n<ng-template #loading>\r\n <div [ngStyle]=\"{\r\n 'height': searchDepartment$.value.length ? (config.modeView === MODE_VIEW_ENUM.ExternalView ? 'calc(100% - 90px)' : 'calc(100% - 50px)' ) : height\r\n }\" class=\"qms-loading-container\">\r\n <div class=\"qms-loader\" *ngFor=\"let item of arrSkeleton\">\r\n <div class=\"qms-loader__wrapper\">\r\n <div class=\"row-loader\">\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<!-- Template mask overlay -->\r\n<ng-template #maskOverlay>\r\n <div class=\"mask-overlay\">\r\n <mat-spinner [diameter]=\"50\" [strokeWidth]=\"5\"></mat-spinner>\r\n </div>\r\n</ng-template>\r\n\r\n<!-- Loading spinner -->\r\n<ng-template #loadingSpinner>\r\n <div class=\"qms-spinner center\">\r\n <mat-spinner [diameter]=\"20\" [strokeWidth]=\"2\"></mat-spinner>\r\n </div>\r\n</ng-template>",
30594
30726
  animations: [
30595
30727
  AnimationTreeDepartment
30596
30728
  ],
@@ -30622,6 +30754,7 @@ SelectDepartmentTreeComponent.propDecorators = {
30622
30754
  onLoadMoreEvent: [{ type: Output }],
30623
30755
  onCheckItemSearchEvent: [{ type: Output }],
30624
30756
  onCheckAllItemSearchEvent: [{ type: Output }],
30757
+ toggleIncludeChildEvent: [{ type: Output }],
30625
30758
  cdkVirtualScrollViewport: [{ type: ViewChild, args: [CdkVirtualScrollViewport,] }],
30626
30759
  paginatorSearch: [{ type: ViewChild, args: ['paginatorSearch',] }]
30627
30760
  };
@@ -30749,6 +30882,7 @@ class SelectDepartmentComponent {
30749
30882
  this.onLoadMoreEvent = new EventEmitter();
30750
30883
  this.onCheckItemSearchEvent = new EventEmitter();
30751
30884
  this.onCheckAllItemSearchEvent = new EventEmitter();
30885
+ this.toggleIncludeChildEvent = new EventEmitter();
30752
30886
  this.resultSearch = [];
30753
30887
  this.isActiveViewSearch = false;
30754
30888
  this.trans.getLanguageSubject$.pipe(takeUntil(this.ngUnsubscribe)).subscribe((res) => {
@@ -30794,12 +30928,14 @@ class SelectDepartmentComponent {
30794
30928
  }
30795
30929
  onResultDepartmentChange(data) {
30796
30930
  this.resultSelected = data.map(item => {
30797
- var _a;
30798
- return Object.assign(Object.assign({}, item), { tooltip: ((_a = item.children) === null || _a === void 0 ? void 0 : _a.length) ? this.formatString(this.LANG.TOOLTIP_INCLUDE_SUB_DEPARTMENT, item.name, item.children.length.toString()) : item.name });
30931
+ return Object.assign(Object.assign({}, item), { tooltip: this.generateTootip(item) });
30799
30932
  });
30800
30933
  }
30934
+ defaultFormatTooltipNode(node) {
30935
+ return node.isGroup ? this.formatString(this.popupData.config.tooltipIncludeLabel ? this.popupData.config.tooltipIncludeLabel : this.LANG.TOOLTIP_INCLUDE_SUB_DEPARTMENT, node.name, node.children.length.toString()) : node.name;
30936
+ }
30801
30937
  generateTootip(node) {
30802
- return node.isGroup ? this.formatString(this.LANG.TOOLTIP_INCLUDE_SUB_DEPARTMENT, node.name, node.children.length.toString()) : node.name;
30938
+ return !!this.popupData.formatTooltipItemResult ? this.popupData.formatTooltipItemResult(node) : this.defaultFormatTooltipNode(node);
30803
30939
  }
30804
30940
  updateResultSearch(data) {
30805
30941
  if (!this.treeDepartment)
@@ -30833,7 +30969,7 @@ class SelectDepartmentComponent {
30833
30969
  * @returns
30834
30970
  */
30835
30971
  onBeforeCheckNode(node, callback) {
30836
- this.treeDepartment.onBeforeCheckNode(node, callback);
30972
+ return this.treeDepartment.onBeforeCheckNode(node, callback);
30837
30973
  }
30838
30974
  handleCheckNode(node) {
30839
30975
  if (!this.treeDepartment)
@@ -30936,6 +31072,24 @@ class SelectDepartmentComponent {
30936
31072
  onDestroyLoadMore() {
30937
31073
  this.treeDepartment.onDestroyLoadMore();
30938
31074
  }
31075
+ setSelectedListData(data) {
31076
+ this.popupData.config.selectedList = data;
31077
+ }
31078
+ getCheckedStatusNode(node) {
31079
+ return this.treeDepartment.getCheckedStatusNode(node);
31080
+ }
31081
+ updateNodeInformation(node) {
31082
+ return this.treeDepartment.updateNodeInformation(node);
31083
+ }
31084
+ updateSelectedResultData(node) {
31085
+ return this.treeDepartment.updateSelectedResultData(node);
31086
+ }
31087
+ getAllParentNode(node) {
31088
+ return this.treeDepartment.getAllParentNode(node);
31089
+ }
31090
+ onCheckNode(node, fireEventCheckNode = true) {
31091
+ return this.treeDepartment.onCheckNode(node, fireEventCheckNode);
31092
+ }
30939
31093
  getChildrenSelected(node) {
30940
31094
  return this.treeDepartment.getChildrenSelected(node);
30941
31095
  }
@@ -30943,7 +31097,7 @@ class SelectDepartmentComponent {
30943
31097
  SelectDepartmentComponent.decorators = [
30944
31098
  { type: Component, args: [{
30945
31099
  selector: 'qms-select-department',
30946
- template: "<div class=\"qms-select-department\">\r\n <div class=\"header-dialog mb-2\">\r\n <span>{{popupData.headerName}}</span>\r\n <button matDialogClose class=\"btn-close-dialog\" color=\"light\" qms-btn-icon>\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </div>\r\n <div>\r\n <div class=\"qms-scrollbar\">\r\n <div>\r\n <qms-select-department-tree #treeDepartment customClass=\"custom-department-tree\"\r\n [height]=\"popupData.config.isMobile ? '38vh' : '50vh'\" [rowsSkeleton]=\"9\" [config]=\"popupData.config\"\r\n (onSearchEvent)=\"onSearchEvent.emit($event)\" (onValueChangeEvent)=\"onResultDepartmentChange($event)\"\r\n (onPagingSearchEvent)=\"onPagingEvent.emit($event)\" (onCheckNodeEvent)=\"onCheckNodeEvent.emit($event)\"\r\n (onExpandNodeEvent)=\"onExpandNodeEvent.emit($event)\" (onLoadMoreEvent)=\"onLoadMoreEvent.emit()\"\r\n (onCheckAllItemSearchEvent)=\"onCheckAllItemSearchEvent.emit($event)\"\r\n (onCheckItemSearchEvent)=\"onCheckItemSearchEvent.emit($event)\">\r\n </qms-select-department-tree>\r\n </div>\r\n </div>\r\n <div class=\"line__divider\"></div>\r\n <div [@heightAnimation] *ngIf=\"treeDepartment && !!treeDepartment.resultSelected.length\" class=\" pr-0 pe-0\">\r\n <div class=\"header-title\">{{LANG.RESULTS}}</div>\r\n <div class=\"result-content pr-0 pe-0\">\r\n <mat-chip-list class=\"panel__item qms-scrollbar\">\r\n <div [@inOutAnimation_2] [id]=\"'item-result-'+item.id\" *ngFor=\"let item of treeDepartment.resultSelected\">\r\n <mat-chip [@updateItemAnimation] *qmsContentChanges=\"item.children?.length\"\r\n [qms-tool-tip]=\"generateTootip(item)\" position=\"top\" mode=\"dark\" qms-chip [removable]=\"true\">\r\n <span (click)=\"onScrollToNode(item)\" qms-chip-body>\r\n <span class=\"related__item__content_name\" #itemName>\r\n <span>{{item.name}}</span>\r\n <span class=\"select__include-children__count\" *ngIf=\"!!item?.isGroup\">\r\n {{item.children.length}}/{{item.childCount}}\r\n </span>\r\n </span>\r\n </span>\r\n <mat-icon *ngIf=\"!isNodeLoading(item.id); else loadingSpinner\"\r\n (click)=\"onRemoveNode(item)\">cancel</mat-icon>\r\n </mat-chip>\r\n </div>\r\n </mat-chip-list>\r\n </div>\r\n </div>\r\n <mat-divider *ngIf=\"treeDepartment && !!treeDepartment.resultSelected.length\" class=\"mx-auto\"></mat-divider>\r\n <div class=\"confirm__button__groups\">\r\n <button (click)=\"onCloseDialog()\" class=\"btn-add\" [disabled]=\"!resultSelected.length\"\r\n [class.qms-btn-disabled]=\"!resultSelected.length\" qms-btn>\r\n <span>{{LANG.ADD}}</span>\r\n <span>\r\n ({{treeDepartment.resultSelected.length}})\r\n </span>\r\n </button>\r\n <button qms-btn-text mat-dialog-close>\r\n Cancel\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<!-- Loading spinner -->\r\n<ng-template #loadingSpinner>\r\n <div class=\"qms-spinner-wrapper\">\r\n <div class=\"qms-spinner center\">\r\n <mat-spinner [diameter]=\"20\" [strokeWidth]=\"2\"></mat-spinner>\r\n </div>\r\n </div>\r\n</ng-template>",
31100
+ template: "<div class=\"qms-select-department\">\r\n <div class=\"header-dialog mb-2\">\r\n <span>{{popupData.headerName}}</span>\r\n <button matDialogClose class=\"btn-close-dialog\" color=\"light\" qms-btn-icon>\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </div>\r\n <div>\r\n <div class=\"qms-scrollbar\">\r\n <div>\r\n <qms-select-department-tree #treeDepartment customClass=\"custom-department-tree\"\r\n [height]=\"popupData.config.isMobile ? '38vh' : '50vh'\" [rowsSkeleton]=\"9\" [config]=\"popupData.config\"\r\n (onSearchEvent)=\"onSearchEvent.emit($event)\" (onValueChangeEvent)=\"onResultDepartmentChange($event)\"\r\n (onPagingSearchEvent)=\"onPagingEvent.emit($event)\" (onCheckNodeEvent)=\"onCheckNodeEvent.emit($event)\"\r\n (onExpandNodeEvent)=\"onExpandNodeEvent.emit($event)\" (onLoadMoreEvent)=\"onLoadMoreEvent.emit()\"\r\n (onCheckAllItemSearchEvent)=\"onCheckAllItemSearchEvent.emit($event)\"\r\n (onCheckItemSearchEvent)=\"onCheckItemSearchEvent.emit($event)\"\r\n (toggleIncludeChildEvent)=\"toggleIncludeChildEvent.emit($event)\">\r\n </qms-select-department-tree>\r\n </div>\r\n </div>\r\n <div class=\"line__divider\"></div>\r\n <div [@heightAnimation] *ngIf=\"treeDepartment && !!treeDepartment.resultSelected.length\" class=\" pr-0 pe-0\">\r\n <div class=\"header-title\">{{LANG.RESULTS}}</div>\r\n <div class=\"result-content pr-0 pe-0\">\r\n <mat-chip-list class=\"panel__item qms-scrollbar\">\r\n <div [@inOutAnimation_2] [id]=\"'item-result-'+item.id\" *ngFor=\"let item of treeDepartment.resultSelected\">\r\n <mat-chip [@updateItemAnimation] *qmsContentChanges=\"item.children?.length\"\r\n [qms-tool-tip]=\"generateTootip(item)\" position=\"top\" mode=\"dark\" qms-chip [removable]=\"true\">\r\n <span (click)=\"onScrollToNode(item)\" qms-chip-body>\r\n <span class=\"related__item__content_name\" #itemName>\r\n <span>{{item.name}}</span>\r\n <span class=\"select__include-children__count\" *ngIf=\"!!item?.isGroup && !popupData.config.lazy\">\r\n {{item.children.length}}/{{item.childCount}}\r\n </span>\r\n <span class=\"select__include-children__count\" *ngIf=\"!!item?.isGroup && popupData.config.lazy\">\r\n {{item.selectedChildCount}}/{{item.childCount}}\r\n </span>\r\n </span>\r\n </span>\r\n <mat-icon *ngIf=\"!isNodeLoading(item.id); else loadingSpinner\"\r\n (click)=\"onRemoveNode(item)\">cancel</mat-icon>\r\n </mat-chip>\r\n </div>\r\n </mat-chip-list>\r\n </div>\r\n </div>\r\n <mat-divider *ngIf=\"treeDepartment && !!treeDepartment.resultSelected.length\" class=\"mx-auto\"></mat-divider>\r\n <div class=\"confirm__button__groups\">\r\n <button (click)=\"onCloseDialog()\" class=\"btn-add\"\r\n [disabled]=\"!resultSelected.length && !popupData.config.canAddNullResult\"\r\n [class.qms-btn-disabled]=\"!resultSelected.length && !popupData.config.canAddNullResult\" qms-btn>\r\n <span>{{LANG.ADD}}</span>\r\n <span>\r\n ({{treeDepartment.resultSelected.length}})\r\n </span>\r\n </button>\r\n <button qms-btn-text mat-dialog-close>\r\n Cancel\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<!-- Loading spinner -->\r\n<ng-template #loadingSpinner>\r\n <div class=\"qms-spinner-wrapper\">\r\n <div class=\"qms-spinner center\">\r\n <mat-spinner [diameter]=\"20\" [strokeWidth]=\"2\"></mat-spinner>\r\n </div>\r\n </div>\r\n</ng-template>",
30947
31101
  providers: [
30948
31102
  {
30949
31103
  provide: MAT_CHECKBOX_DEFAULT_OPTIONS,
@@ -30968,7 +31122,8 @@ SelectDepartmentComponent.propDecorators = {
30968
31122
  onExpandNodeEvent: [{ type: Output }],
30969
31123
  onLoadMoreEvent: [{ type: Output }],
30970
31124
  onCheckItemSearchEvent: [{ type: Output }],
30971
- onCheckAllItemSearchEvent: [{ type: Output }]
31125
+ onCheckAllItemSearchEvent: [{ type: Output }],
31126
+ toggleIncludeChildEvent: [{ type: Output }]
30972
31127
  };
30973
31128
 
30974
31129
  class QMSSelectDepartmentModule {