qms-angular 1.1.34 → 1.1.36

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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 {