x-tql-component 1.19.4

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 (92) hide show
  1. package/README.md +24 -0
  2. package/fesm2022/x-tql-component.mjs +5224 -0
  3. package/fesm2022/x-tql-component.mjs.map +1 -0
  4. package/index.d.ts +5 -0
  5. package/lib/components/basic/basic.module.d.ts +19 -0
  6. package/lib/components/basic/tql-collapse/tql-collapse.component.d.ts +39 -0
  7. package/lib/components/basic/tql-input/tql-input.component.d.ts +106 -0
  8. package/lib/components/basic/tql-loading-bar/tql-loading-bar.component.d.ts +13 -0
  9. package/lib/components/basic/tql-resizable/tql-resizable.component.d.ts +35 -0
  10. package/lib/components/basic/tql-select/tql-select.component.d.ts +66 -0
  11. package/lib/components/basic/tql-spinner/tql-spinner.component.d.ts +10 -0
  12. package/lib/components/basic/tql-tab/tql-tab.component.d.ts +14 -0
  13. package/lib/components/basic/tql-table-filter-widget/tql-table-filter-widget.component.d.ts +85 -0
  14. package/lib/components/components.module.d.ts +10 -0
  15. package/lib/components/layouts/index.d.ts +5 -0
  16. package/lib/components/layouts/layouts.module.d.ts +15 -0
  17. package/lib/components/layouts/tql-empty-layout/tql-empty-layout.component.d.ts +8 -0
  18. package/lib/components/layouts/tql-header-layout/tql-header-layout.component.d.ts +11 -0
  19. package/lib/components/layouts/tql-main-layout/tql-main-layout.component.d.ts +8 -0
  20. package/lib/components/layouts/tql-navbar-layout/tql-navbar-layout.component.d.ts +27 -0
  21. package/lib/components/template/index.d.ts +22 -0
  22. package/lib/components/template/template.module.d.ts +35 -0
  23. package/lib/components/template/tql-action-bar/tql-action-bar.component.d.ts +27 -0
  24. package/lib/components/template/tql-action-bar-menu/tql-action-bar-menu.component.d.ts +12 -0
  25. package/lib/components/template/tql-action-drawer/tql-action-drawer.component.d.ts +30 -0
  26. package/lib/components/template/tql-breadcrumb/tql-breadcrumb.component.d.ts +26 -0
  27. package/lib/components/template/tql-code-editor/tql-code-editor.component.d.ts +79 -0
  28. package/lib/components/template/tql-collapse-group/tql-collapse-group.component.d.ts +27 -0
  29. package/lib/components/template/tql-dynamic-component/tql-dynamic-component.component.d.ts +19 -0
  30. package/lib/components/template/tql-header/tql-header.component.d.ts +8 -0
  31. package/lib/components/template/tql-highlight-list/tql-highlight-list.component.d.ts +8 -0
  32. package/lib/components/template/tql-image-card/tql-image-card.component.d.ts +18 -0
  33. package/lib/components/template/tql-listed-tree/tql-listed-tree.component.d.ts +73 -0
  34. package/lib/components/template/tql-navbar/index.d.ts +4 -0
  35. package/lib/components/template/tql-navbar/tql-navbar/tql-navbar.component.d.ts +68 -0
  36. package/lib/components/template/tql-navbar/tql-navbar-logo/tql-navbar-logo.component.d.ts +13 -0
  37. package/lib/components/template/tql-navbar/tql-navbar-title/tql-navbar-title.component.d.ts +15 -0
  38. package/lib/components/template/tql-navbar/tql-navbar.module.d.ts +14 -0
  39. package/lib/components/template/tql-nested-list/tql-nested-list.component.d.ts +52 -0
  40. package/lib/components/template/tql-panel/tql-panel.component.d.ts +52 -0
  41. package/lib/components/template/tql-progress-list/tql-progress-list.component.d.ts +36 -0
  42. package/lib/components/template/tql-simple-card/tql-simple-card.component.d.ts +11 -0
  43. package/lib/components/template/tql-simple-list/tql-simple-list.component.d.ts +66 -0
  44. package/lib/components/template/tql-spin/tql-spin.component.d.ts +16 -0
  45. package/lib/components/template/tql-status-list/tql-status-list.component.d.ts +13 -0
  46. package/lib/components/template/tql-table/tql-table.component.d.ts +8 -0
  47. package/lib/components/template/tql-tabs-header/tql-tabs-header.component.d.ts +13 -0
  48. package/lib/components/template/tql-tree/tql-tree.component.d.ts +122 -0
  49. package/lib/constants/error-type.constant.d.ts +12 -0
  50. package/lib/constants/index.d.ts +4 -0
  51. package/lib/constants/interface/i-breadcrumb.d.ts +4 -0
  52. package/lib/constants/interface/i-dynamic-component.d.ts +6 -0
  53. package/lib/constants/interface/i-dynamic-item.d.ts +6 -0
  54. package/lib/constants/interface/i-list-item-option.d.ts +19 -0
  55. package/lib/constants/interface/i-list-item.d.ts +39 -0
  56. package/lib/constants/interface/i-navbar-component.d.ts +3 -0
  57. package/lib/constants/interface/i-router-data.d.ts +23 -0
  58. package/lib/constants/interface/index.d.ts +7 -0
  59. package/lib/constants/models/code-editor.model.d.ts +85 -0
  60. package/lib/constants/models/index.d.ts +1 -0
  61. package/lib/constants/values/actions.constant.d.ts +28 -0
  62. package/lib/constants/values/index.d.ts +2 -0
  63. package/lib/constants/values/mics.constant.d.ts +7 -0
  64. package/lib/controllers/index.d.ts +4 -0
  65. package/lib/controllers/tql-collapse/tql-collapse-controller.service.d.ts +19 -0
  66. package/lib/controllers/tql-dynamic-component/tql-dynamic-controller.service.d.ts +11 -0
  67. package/lib/controllers/tql-header/tql-header-controller.service.d.ts +11 -0
  68. package/lib/controllers/tql-helper/tql-helper.service.d.ts +11 -0
  69. package/lib/controllers/tql-navbar/tql-navbar-controller.service.d.ts +24 -0
  70. package/lib/directives/directives.module.d.ts +16 -0
  71. package/lib/directives/ng-var/ng-var.directive.d.ts +12 -0
  72. package/lib/directives/tql-click-outside/tql-click-outside.directive.d.ts +40 -0
  73. package/lib/directives/tql-collapse/tql-collapse.directive.d.ts +53 -0
  74. package/lib/directives/tql-dynamic-component-host/tql-dynamic-component-host.directive.d.ts +8 -0
  75. package/lib/directives/tql-hover-class/tql-hover-class.directive.d.ts +11 -0
  76. package/lib/directives/tql-resizable/tql-resizable.directive.d.ts +22 -0
  77. package/lib/directives/tql-resized/tql-resized.directive.d.ts +16 -0
  78. package/lib/directives/tql-resized/tql-resized.event.d.ts +6 -0
  79. package/lib/directives/tql-spin/tql-spin.directive.d.ts +34 -0
  80. package/lib/directives/tql-table-filter-widget/tql-table-filter-widget.directive.d.ts +53 -0
  81. package/lib/pipes/pipes.module.d.ts +11 -0
  82. package/lib/pipes/tql-highlight/tql-highlight.pipe.d.ts +8 -0
  83. package/lib/pipes/tql-key-value-order/tql-key-value-order.pipe.d.ts +8 -0
  84. package/lib/pipes/tql-order-by/tql-order-by.pipe.d.ts +7 -0
  85. package/lib/pipes/tql-url-safe/tql-url-safe.pipe.d.ts +10 -0
  86. package/lib/tql-component.module.d.ts +9 -0
  87. package/lib/validators/email.validator.d.ts +2 -0
  88. package/lib/validators/funtions.d.ts +2 -0
  89. package/lib/validators/index.d.ts +3 -0
  90. package/lib/validators/no-white-space.validator.d.ts +2 -0
  91. package/package.json +23 -0
  92. package/public-api.d.ts +31 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"x-tql-component.mjs","sources":["../../../projects/tql-component/src/lib/pipes/tql-url-safe/tql-url-safe.pipe.ts","../../../projects/tql-component/src/lib/pipes/tql-highlight/tql-highlight.pipe.ts","../../../projects/tql-component/src/lib/pipes/tql-order-by/tql-order-by.pipe.ts","../../../projects/tql-component/src/lib/pipes/tql-key-value-order/tql-key-value-order.pipe.ts","../../../projects/tql-component/src/lib/pipes/pipes.module.ts","../../../projects/tql-component/src/lib/constants/error-type.constant.ts","../../../projects/tql-component/src/lib/constants/interface/i-router-data.ts","../../../projects/tql-component/src/lib/constants/values/actions.constant.ts","../../../projects/tql-component/src/lib/constants/values/mics.constant.ts","../../../projects/tql-component/src/lib/constants/models/code-editor.model.ts","../../../projects/tql-component/src/lib/components/basic/tql-input/tql-input.component.ts","../../../projects/tql-component/src/lib/components/basic/tql-input/tql-input.component.html","../../../projects/tql-component/src/lib/components/basic/tql-select/tql-select.component.ts","../../../projects/tql-component/src/lib/components/basic/tql-select/tql-select.component.html","../../../projects/tql-component/src/lib/controllers/tql-header/tql-header-controller.service.ts","../../../projects/tql-component/src/lib/controllers/tql-navbar/tql-navbar-controller.service.ts","../../../projects/tql-component/src/lib/controllers/tql-collapse/tql-collapse-controller.service.ts","../../../projects/tql-component/src/lib/controllers/tql-dynamic-component/tql-dynamic-controller.service.ts","../../../projects/tql-component/src/lib/components/basic/tql-collapse/tql-collapse.component.ts","../../../projects/tql-component/src/lib/components/basic/tql-collapse/tql-collapse.component.html","../../../projects/tql-component/src/lib/components/basic/tql-loading-bar/tql-loading-bar.component.ts","../../../projects/tql-component/src/lib/components/basic/tql-loading-bar/tql-loading-bar.component.html","../../../projects/tql-component/src/lib/components/basic/tql-tab/tql-tab.component.ts","../../../projects/tql-component/src/lib/components/basic/tql-tab/tql-tab.component.html","../../../projects/tql-component/src/lib/components/basic/tql-resizable/tql-resizable.component.ts","../../../projects/tql-component/src/lib/components/basic/tql-resizable/tql-resizable.component.html","../../../projects/tql-component/src/lib/components/basic/tql-spinner/tql-spinner.component.ts","../../../projects/tql-component/src/lib/components/basic/tql-spinner/tql-spinner.component.html","../../../projects/tql-component/src/lib/components/basic/tql-table-filter-widget/tql-table-filter-widget.component.ts","../../../projects/tql-component/src/lib/components/basic/tql-table-filter-widget/tql-table-filter-widget.component.html","../../../projects/tql-component/src/lib/components/basic/basic.module.ts","../../../projects/tql-component/src/lib/directives/ng-var/ng-var.directive.ts","../../../projects/tql-component/src/lib/controllers/tql-helper/tql-helper.service.ts","../../../projects/tql-component/src/lib/components/template/tql-action-bar-menu/tql-action-bar-menu.component.ts","../../../projects/tql-component/src/lib/components/template/tql-action-bar-menu/tql-action-bar-menu.component.html","../../../projects/tql-component/src/lib/components/template/tql-action-bar/tql-action-bar.component.ts","../../../projects/tql-component/src/lib/components/template/tql-action-bar/tql-action-bar.component.html","../../../projects/tql-component/src/lib/components/template/tql-simple-list/tql-simple-list.component.ts","../../../projects/tql-component/src/lib/components/template/tql-simple-list/tql-simple-list.component.html","../../../projects/tql-component/src/lib/directives/tql-collapse/tql-collapse.directive.ts","../../../projects/tql-component/src/lib/directives/tql-resizable/tql-resizable.directive.ts","../../../projects/tql-component/src/lib/components/template/tql-action-drawer/tql-action-drawer.component.ts","../../../projects/tql-component/src/lib/components/template/tql-action-drawer/tql-action-drawer.component.html","../../../projects/tql-component/src/lib/components/template/tql-panel/tql-panel.component.ts","../../../projects/tql-component/src/lib/components/template/tql-panel/tql-panel.component.html","../../../projects/tql-component/src/lib/components/template/tql-breadcrumb/tql-breadcrumb.component.ts","../../../projects/tql-component/src/lib/components/template/tql-breadcrumb/tql-breadcrumb.component.html","../../../projects/tql-component/src/lib/directives/tql-click-outside/tql-click-outside.directive.ts","../../../projects/tql-component/src/lib/components/template/tql-navbar/tql-navbar/tql-navbar.component.ts","../../../projects/tql-component/src/lib/components/template/tql-navbar/tql-navbar/tql-navbar.component.html","../../../projects/tql-component/src/lib/components/template/tql-navbar/tql-navbar-logo/tql-navbar-logo.component.ts","../../../projects/tql-component/src/lib/components/template/tql-navbar/tql-navbar-logo/tql-navbar-logo.component.html","../../../projects/tql-component/src/lib/components/template/tql-navbar/tql-navbar-title/tql-navbar-title.component.ts","../../../projects/tql-component/src/lib/components/template/tql-navbar/tql-navbar-title/tql-navbar-title.component.html","../../../projects/tql-component/src/lib/directives/tql-dynamic-component-host/tql-dynamic-component-host.directive.ts","../../../projects/tql-component/src/lib/directives/tql-hover-class/tql-hover-class.directive.ts","../../../projects/tql-component/src/lib/directives/tql-table-filter-widget/tql-table-filter-widget.directive.ts","../../../projects/tql-component/src/lib/directives/tql-resized/tql-resized.event.ts","../../../projects/tql-component/src/lib/directives/tql-resized/tql-resized.directive.ts","../../../projects/tql-component/src/lib/components/template/tql-simple-card/tql-simple-card.component.ts","../../../projects/tql-component/src/lib/components/template/tql-simple-card/tql-simple-card.component.html","../../../projects/tql-component/src/lib/components/template/tql-header/tql-header.component.ts","../../../projects/tql-component/src/lib/components/template/tql-header/tql-header.component.html","../../../projects/tql-component/src/lib/components/template/tql-collapse-group/tql-collapse-group.component.ts","../../../projects/tql-component/src/lib/components/template/tql-collapse-group/tql-collapse-group.component.html","../../../projects/tql-component/src/lib/components/template/tql-highlight-list/tql-highlight-list.component.ts","../../../projects/tql-component/src/lib/components/template/tql-highlight-list/tql-highlight-list.component.html","../../../projects/tql-component/src/lib/components/template/tql-status-list/tql-status-list.component.ts","../../../projects/tql-component/src/lib/components/template/tql-status-list/tql-status-list.component.html","../../../projects/tql-component/src/lib/components/template/tql-tree/tql-tree.component.ts","../../../projects/tql-component/src/lib/components/template/tql-tree/tql-tree.component.html","../../../projects/tql-component/src/lib/components/template/tql-image-card/tql-image-card.component.ts","../../../projects/tql-component/src/lib/components/template/tql-image-card/tql-image-card.component.html","../../../projects/tql-component/src/lib/components/template/tql-tabs-header/tql-tabs-header.component.ts","../../../projects/tql-component/src/lib/components/template/tql-tabs-header/tql-tabs-header.component.html","../../../projects/tql-component/src/lib/components/template/tql-code-editor/tql-code-editor.component.ts","../../../projects/tql-component/src/lib/components/template/tql-code-editor/tql-code-editor.component.html","../../../projects/tql-component/src/lib/components/template/tql-nested-list/tql-nested-list.component.ts","../../../projects/tql-component/src/lib/components/template/tql-nested-list/tql-nested-list.component.html","../../../projects/tql-component/src/lib/components/template/tql-dynamic-component/tql-dynamic-component.component.ts","../../../projects/tql-component/src/lib/components/template/tql-dynamic-component/tql-dynamic-component.component.html","../../../projects/tql-component/src/lib/components/template/tql-progress-list/tql-progress-list.component.ts","../../../projects/tql-component/src/lib/components/template/tql-progress-list/tql-progress-list.component.html","../../../projects/tql-component/src/lib/components/template/tql-table/tql-table.component.ts","../../../projects/tql-component/src/lib/components/template/tql-table/tql-table.component.html","../../../projects/tql-component/src/lib/components/template/tql-listed-tree/tql-listed-tree.component.ts","../../../projects/tql-component/src/lib/components/template/tql-listed-tree/tql-listed-tree.component.html","../../../projects/tql-component/src/lib/components/template/tql-spin/tql-spin.component.ts","../../../projects/tql-component/src/lib/components/template/tql-spin/tql-spin.component.html","../../../projects/tql-component/src/lib/directives/tql-spin/tql-spin.directive.ts","../../../projects/tql-component/src/lib/directives/directives.module.ts","../../../projects/tql-component/src/lib/components/template/tql-navbar/tql-navbar.module.ts","../../../projects/tql-component/src/lib/components/template/template.module.ts","../../../projects/tql-component/src/lib/components/layouts/tql-empty-layout/tql-empty-layout.component.ts","../../../projects/tql-component/src/lib/components/layouts/tql-empty-layout/tql-empty-layout.component.html","../../../projects/tql-component/src/lib/components/layouts/tql-header-layout/tql-header-layout.component.ts","../../../projects/tql-component/src/lib/components/layouts/tql-header-layout/tql-header-layout.component.html","../../../projects/tql-component/src/lib/components/layouts/tql-navbar-layout/tql-navbar-layout.component.ts","../../../projects/tql-component/src/lib/components/layouts/tql-navbar-layout/tql-navbar-layout.component.html","../../../projects/tql-component/src/lib/components/layouts/tql-main-layout/tql-main-layout.component.ts","../../../projects/tql-component/src/lib/components/layouts/tql-main-layout/tql-main-layout.component.html","../../../projects/tql-component/src/lib/components/layouts/layouts.module.ts","../../../projects/tql-component/src/lib/components/components.module.ts","../../../projects/tql-component/src/lib/tql-component.module.ts","../../../projects/tql-component/src/lib/validators/funtions.ts","../../../projects/tql-component/src/lib/validators/email.validator.ts","../../../projects/tql-component/src/lib/validators/no-white-space.validator.ts","../../../projects/tql-component/src/public-api.ts","../../../projects/tql-component/src/x-tql-component.ts"],"sourcesContent":["import {Pipe, PipeTransform} from '@angular/core';\nimport {DomSanitizer} from '@angular/platform-browser';\n\n@Pipe({\n name: 'tqlUrlSafe',\n standalone: false,\n})\nexport class TqlUrlSafePipe implements PipeTransform {\n\n constructor(private sanitizer: DomSanitizer) {\n }\n\n transform(url) {\n return this.sanitizer.bypassSecurityTrustResourceUrl(url);\n }\n\n}\n","import {Pipe, PipeTransform} from '@angular/core';\n\n@Pipe({\n name: 'tqlHighlight',\n standalone: false,\n})\nexport class TqlHighlightPipe implements PipeTransform {\n\n transform(value: any, args: any, position: any): any {\n console.log(value, args);\n\n if (!args) {\n return value;\n }\n\n if (position === -1) {\n return this.replaceLast(value, args, '<mark>$&</mark>');\n }\n let re = new RegExp(args, 'gi'); //'gi' for case insensitive and can use 'g' if you want the search to be case sensitive.\n // console.log(re);\n return value.replace(re, '<mark>$&</mark>');\n }\n\n replaceLast(value, search, replace) {\n /**\n * @author harry\n * @description fix can't highlight text contain especial character\n */\n return value.replace(value === search ? value : new RegExp(search + '(?!.*' + search + ')'), replace);\n }\n\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport _ from 'lodash';\nimport { TqlUtilsService } from 'x-tql-service';\n\n@Pipe({\n name: 'tqlOrderBy',\n standalone: false,\n})\nexport class TqlOrderByPipe implements PipeTransform {\n transform(value: any[], key: string | string[]): any[] {\n return _.orderBy(value, TqlUtilsService.toArray(key));\n }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\nimport * as _ from 'lodash';\n\n@Pipe({\n name: 'tqlKeyValueOrder',\n standalone: false,\n})\nexport class TqlKeyValueOrderPipe implements PipeTransform {\n\n transform(value: any, excludes: string[] = [], topProps: string[] = [], isOrderByValue: boolean = false, orderBy: string = ''): any {\n if (!value) {\n return;\n }\n\n let values: any[] = [];\n let objectKeys = Object.keys(value);\n let referenceValue = this.createReferenceValue(value);\n\n excludes.map((el, index) => {\n excludes[index] = el.toLowerCase();\n });\n\n topProps.map((el, index) => {\n let lowerCaseElement = el.toLowerCase();\n topProps[index] = lowerCaseElement;\n if (referenceValue[lowerCaseElement]) {\n values.push({key: referenceValue[lowerCaseElement], value: value[referenceValue[lowerCaseElement]]});\n }\n });\n\n objectKeys.sort().forEach(e => {\n if (topProps.indexOf(e.toLowerCase()) < 0) {\n if (!excludes.length || excludes.indexOf(e.toLowerCase()) < 0) {\n values.push({key: e, value: value[e], keys: objectKeys});\n }\n }\n });\n\n if (isOrderByValue) {\n values = _.orderBy(values, (el) => el.value);\n }\n\n if (orderBy) {\n values = _.orderBy(values, (el) => el.value[orderBy]);\n }\n return values;\n }\n\n createReferenceValue(obj: object): any {\n let objects = Object.keys(obj).map(function (key) {\n return [key.toLowerCase(), key];\n });\n return objects.reduce((obj: any, item) => {\n obj[item[0]] = item[1];\n return obj;\n }, {});\n }\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {TqlUrlSafePipe} from './tql-url-safe/tql-url-safe.pipe';\nimport {TqlHighlightPipe} from './tql-highlight/tql-highlight.pipe';\nimport {TqlOrderByPipe} from './tql-order-by/tql-order-by.pipe';\nimport {TqlKeyValueOrderPipe} from './tql-key-value-order/tql-key-value-order.pipe';\n\n\n@NgModule({\n declarations: [\n TqlUrlSafePipe,\n TqlHighlightPipe,\n TqlOrderByPipe,\n TqlKeyValueOrderPipe\n ],\n imports: [\n CommonModule\n ],\n exports: [\n TqlUrlSafePipe,\n TqlHighlightPipe,\n TqlOrderByPipe,\n TqlKeyValueOrderPipe\n ]\n})\nexport class PipesModule {\n}\n","export enum ENUM_ERROR_TYPES {\n REQUIRED = 'required',\n WHITESPACE = 'whitespace',\n EMAIL_ERROR = 'email',\n}\n\nexport const ERROR_INFO = {\n [ENUM_ERROR_TYPES.REQUIRED]: 'Field is required!',\n [ENUM_ERROR_TYPES.EMAIL_ERROR]: 'Email is invalid',\n [ENUM_ERROR_TYPES.WHITESPACE]: \"Can't contain whitespace\",\n max(value: number) {\n return 'Max value: ' + value;\n },\n min(value: number) {\n return 'Min value: ' + value;\n },\n};\n","import {Component} from '@angular/core';\n\nexport interface IRouterData {\n [ENUM_ROUTER_KEYS.BREADCRUMB]?: string;\n [ENUM_ROUTER_KEYS.BREADCRUMB_PARAM]?: string | string[];\n [ENUM_ROUTER_KEYS.NAV_COMPONENT]?: Component;\n [ENUM_ROUTER_KEYS.HEADER_COMPONENT]?: Component;\n [ENUM_ROUTER_KEYS.DYNAMIC_COMPONENTS]?: Map<string, Component>;\n}\n\nexport enum ENUM_ROUTER_KEYS {\n BREADCRUMB = 'BREADCRUMB',\n BREADCRUMB_PARAM = 'BREADCRUMB_PARAM',\n BREADCRUMB_STORE_TOKEN = 'BREADCRUMB_STORE_TOKEN',\n BREADCRUMB_STORE_SELECTOR = 'BREADCRUMB_STORE_SELECTOR',\n BREADCRUMB_KEY = 'BREADCRUMB_KEY',\n NAV_COMPONENT = 'NAV_COMPONENT',\n SUB_MENU_NAVBAR = 'SUB_MENU_NAVBAR',\n NAV_RESOLVER = 'NAV_RESOLVER',\n HEADER_COMPONENT = 'HEADER_COMPONENT',\n HEADER_RESOLVER = 'HEADER_RESOLVER',\n DYNAMIC_COMPONENTS = 'DYNAMIC_COMPONENTS',\n DYNAMIC_RESOLVER = 'DYNAMIC_RESOLVER',\n CHILDREN = 'children',\n}\n","import {IListItemOption} from '../interface/i-list-item-option';\n\nexport enum ENUM_ACTION_KEYS {\n COLLAPSE_ALL = 'Collapse All',\n EXPAND_ALL = 'Expand All',\n COLLAPSE = 'Collapse',\n EXPAND = 'Expand',\n REFRESH = 'Refresh',\n REPLACE = 'Replace',\n UPLOAD = 'Upload',\n DOWNLOAD = 'Download',\n DUPLICATE = 'Duplicate',\n DELETE = 'Delete',\n HIDE = 'Hide',\n SHOW = 'Show',\n NEW = 'New',\n NEW_FILE = 'New File',\n NEW_FOLDER = 'New Folder',\n MORE = 'More',\n INFO = 'More Information',\n SAVE = 'Save',\n FORMAT = 'Format',\n CLOSE = 'Close',\n EDIT = 'Edit',\n PARSE = 'Parse',\n}\n\nexport const ActionsConstant: { [key in ENUM_ACTION_KEYS]: IListItemOption } = {\n [ENUM_ACTION_KEYS.COLLAPSE_ALL]: {\n name: ENUM_ACTION_KEYS.COLLAPSE_ALL,\n iconClassName: 'fal fa-angle-double-up',\n onClick: () => {\n }\n },\n [ENUM_ACTION_KEYS.EXPAND_ALL]: {\n name: ENUM_ACTION_KEYS.EXPAND_ALL,\n iconClassName: 'fal fa-angle-double-down',\n onClick: () => {\n }\n },\n [ENUM_ACTION_KEYS.COLLAPSE]: {\n name: ENUM_ACTION_KEYS.COLLAPSE,\n iconClassName: 'fal fa-angle-up',\n onClick: () => {\n }\n },\n [ENUM_ACTION_KEYS.EXPAND]: {\n name: ENUM_ACTION_KEYS.EXPAND,\n iconClassName: 'fal fa-angle-down',\n onClick: () => {\n }\n },\n [ENUM_ACTION_KEYS.REFRESH]: {\n name: ENUM_ACTION_KEYS.REFRESH,\n iconClassName: 'fal fa-sync',\n onClick: () => {\n }\n },\n [ENUM_ACTION_KEYS.REPLACE]: {\n name: ENUM_ACTION_KEYS.REPLACE,\n iconClassName: 'fal fa-retweet-alt',\n onClick: () => {\n }\n },\n [ENUM_ACTION_KEYS.UPLOAD]: {\n name: 'Upload',\n iconClassName: 'fal fa-upload',\n onClick: () => {\n }\n },\n [ENUM_ACTION_KEYS.DOWNLOAD]: {},\n [ENUM_ACTION_KEYS.DUPLICATE]: {\n name: ENUM_ACTION_KEYS.DUPLICATE,\n iconClassName: 'fal fa-copy',\n onClick: () => {\n }\n },\n [ENUM_ACTION_KEYS.DELETE]: {\n name: ENUM_ACTION_KEYS.DELETE,\n iconClassName: 'fal fa-trash-alt',\n onClick: () => {\n }\n },\n [ENUM_ACTION_KEYS.HIDE]: {},\n [ENUM_ACTION_KEYS.SHOW]: {},\n [ENUM_ACTION_KEYS.NEW]: {},\n [ENUM_ACTION_KEYS.NEW_FILE]: {\n name: 'New',\n iconClassName: 'fal fa-file-plus',\n onClick: () => {\n }\n },\n [ENUM_ACTION_KEYS.NEW_FOLDER]: {},\n [ENUM_ACTION_KEYS.MORE]: {\n name: ENUM_ACTION_KEYS.MORE,\n iconClassName: 'fal fa-ellipsis-v',\n showWhenHover: true,\n onClick: () => {\n }\n },\n [ENUM_ACTION_KEYS.INFO]: {\n name: ENUM_ACTION_KEYS.INFO,\n iconClassName: 'fas fa-info-circle',\n onClick: () => {\n }\n },\n [ENUM_ACTION_KEYS.SAVE]: {\n name: ENUM_ACTION_KEYS.SAVE,\n iconClassName: 'fal fa-save',\n onClick: () => {\n }\n },\n [ENUM_ACTION_KEYS.FORMAT]: {\n name: ENUM_ACTION_KEYS.FORMAT,\n iconClassName: 'fal fa-align-left',\n onClick: () => {\n }\n },\n [ENUM_ACTION_KEYS.CLOSE]: {\n name: ENUM_ACTION_KEYS.CLOSE,\n iconClassName: 'fal fa-times',\n onClick: () => {\n }\n },\n [ENUM_ACTION_KEYS.EDIT]: {\n name: ENUM_ACTION_KEYS.EDIT,\n iconClassName: 'fal fa-pen',\n onClick: () => {\n }\n },\n [ENUM_ACTION_KEYS.PARSE]: {\n name: ENUM_ACTION_KEYS.PARSE,\n iconClassName: 'fal fa-window-maximize',\n onClick: () => {\n }\n },\n};\n","export namespace MicsConstant {\n export const EMPTY_FUNCTION: Function = () => {};\n export const COLLAPSE_EXPAND_FUNCTION: Function = () => {\n console.log('collapse expand');\n };\n\n export enum ENUM_TYPES {\n COLLAPSE_EXPAND = 'Collapse Expand',\n }\n}\n","import { FormControl } from '@angular/forms';\nimport { TemplateRef } from '@angular/core';\nimport { DefaultModel, TqlUtilsService } from 'x-tql-service';\nimport { Subscription } from 'rxjs';\nimport { v4 as uuidv4 } from 'uuid';\nimport { CodemirrorComponent } from '@ctrl/ngx-codemirror';\nimport CodeMirror from 'codemirror';\n\nexport class CodeEditorModel extends DefaultModel {\n name: string;\n\n /**\n * language mode of editor\n * @param v\n */\n _mode: CodeEditorModel.ENUM_MODES;\n set mode(v: CodeEditorModel.ENUM_MODES) {\n this._mode = v;\n const self = this;\n const key = TqlUtilsService.getEnumKeyByEnumValue(CodeEditorModel.ENUM_MODES, this._mode) || '';\n this.editorOptions['mode'] = key\n ? CodeEditorModel.ENUM_CODEMIRROR_MODES[key]\n : CodeEditorModel.ENUM_CODEMIRROR_MODES.NONE;\n }\n\n get mode() {\n return this._mode;\n }\n\n /**\n * content of editor\n * @param v\n */\n _content: FormControl;\n content$: Subscription;\n contentData: any;\n\n set content(v: FormControl) {\n if (!!v) {\n // fix if content has \\r\n // https://codemirror.net/6/docs/ref/#state.EditorState^lineSeparator\n this._content = v;\n this._content?.setValue(TqlUtilsService.clearLineBreakR(this._content.value));\n this.contentData = this._content.value;\n if (this.content$) {\n this.content$.unsubscribe();\n }\n this.content$ = this._content.valueChanges.subscribe((rs) => {\n if (this.content?.dirty) {\n if (this.contentData.toString() === rs.toString()) {\n this.content.markAsPristine();\n }\n }\n });\n }\n }\n\n get content() {\n return this._content;\n }\n\n /**\n * custom template for editor\n * @type {TemplateRef<any>}\n */\n template?: TemplateRef<any>;\n\n /**\n * specific data\n * @type {any}\n */\n data: any;\n\n /**\n * editor\n * @param v\n */\n editorOptions: any = {\n mode: '',\n\n // indent\n tabSize: 4,\n indentUnit: 4,\n indentWithTabs: true,\n\n // match highlight\n highlightSelectionMatches: { showToken: /\\w/, annotateScrollbar: true },\n\n // match tag\n matchTags: { bothTags: true },\n\n // placeholder\n placeholder: 'Code goes here...',\n\n lineNumbers: true,\n lineWrapping: true,\n styleActiveLine: true,\n matchBrackets: true,\n theme: CodeEditorModel.ENUM_THEMES.DARK,\n autoCloseBrackets: true,\n autoCloseTags: true,\n foldGutter: true,\n gutters: ['CodeMirror-linenumbers', 'CodeMirror-foldgutter'],\n extraKeys: {\n 'Ctrl-Space': 'autocomplete',\n 'Ctrl-J': 'toMatchingTag',\n 'Ctrl-Q': function (cm: any) {\n cm.foldCode(cm.getCursor());\n },\n },\n readOnly: null,\n hintOptions: {},\n };\n _editorComponent: CodemirrorComponent;\n set editorComponent(v: CodemirrorComponent) {\n this._editorComponent = v;\n }\n\n get editorComponent() {\n return this._editorComponent;\n }\n\n /**\n * set read only\n * @param v\n */\n set readOnly(v: boolean) {\n this.editorOptions['readOnly'] = v;\n }\n\n _saveFn: Function;\n set saveFn(v: ($event: CodeEditorModel) => Promise<boolean>) {\n this._saveFn = () => {\n v(this).then((flag) => {\n if (flag) {\n this._setSaved();\n }\n });\n };\n }\n\n constructor(_data: any = {}) {\n super(_data, 'id');\n this.setId(uuidv4());\n this.name = this.getValue('name');\n this.content = this.getValue('content');\n this.mode = this.getValue('mode');\n this.data = this.getValue('data');\n this.template = this.getValue('template');\n this.saveFn = this.getValue('saveFn');\n }\n\n hasUnsaved() {\n return this.content && this.content.dirty;\n }\n\n isEmpty() {\n return this.content?.value?.trim() === '';\n }\n\n save() {\n if (!!this._saveFn) {\n this._saveFn();\n }\n }\n\n _setSaved() {\n this.content.markAsPristine();\n this.contentData = this.content.value;\n }\n\n format() {\n if (this.editorComponent?.codeMirror) {\n const first = CodeMirror.Pos(this.editorComponent?.codeMirror?.firstLine());\n const last = CodeMirror.Pos(this.editorComponent?.codeMirror?.lastLine());\n // @ts-ignore\n this.editorComponent?.codeMirror?.autoFormatRange(first, last);\n }\n }\n\n setName(name: string) {\n this.name = name;\n }\n\n setData(data: any) {\n this.data = data;\n }\n\n setMode(mode: CodeEditorModel.ENUM_MODES) {\n this.mode = mode;\n }\n}\n\nexport namespace CodeEditorModel {\n export enum ENUM_MODES {\n NONE = '',\n HTML = 'html',\n JSON = 'json',\n XML = 'xml',\n JS = 'js',\n BML = 'bml',\n IMAGE = 'image',\n CDM = 'cdm',\n TCL = 'tcl',\n }\n\n export enum ENUM_CODEMIRROR_MODES {\n NONE = 'text/webassembly',\n HTML = 'text/html',\n JSON = 'application/ld+json',\n XML = 'application/xml',\n JS = 'application/javascript',\n BML = 'text/x-yaml',\n IMAGE = '',\n CDM = 'text/x-yaml',\n TCL = 'text/x-tcl',\n }\n\n export enum ENUM_THEMES {\n DARK = 'ayu-dark custom',\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output, TemplateRef } from '@angular/core';\nimport { AbstractControl, FormControl } from '@angular/forms';\nimport * as _ from 'lodash';\nimport { ENUM_ERROR_TYPES, ERROR_INFO, IListItem } from '../../../constants';\n\n@Component({\n selector: 'tql-input',\n standalone: false,\n templateUrl: './tql-input.component.html',\n styleUrls: ['./tql-input.component.scss'],\n})\nexport class TqlInputComponent implements OnInit {\n @Input() icon: string;\n @Input() readonly: boolean = false;\n @Input() placeholder: string = '';\n @Input() className: string;\n @Input() wrapperClassName: string = 'w-100';\n @Input() inputWrapperClassName: string = 'flex-grow-1';\n @Input() type: string = TqlInputComponent.TYPE.TEXT;\n @Input() theme: TqlInputComponent.THEME = TqlInputComponent.THEME.NORMAL;\n @Input() disabled: boolean = false;\n @Input() checkError: boolean = true;\n\n // label\n @Input() label: string;\n @Input() labelClassName: string = 'font-weight-medium ';\n @Input() labelCustomTemplate: TemplateRef<any>;\n\n // file\n @Input() fileContentFC: FormControl | null = null;\n @Input() fileAccepts: string[] = [];\n @Input() filePreviewTemplate: TemplateRef<any>;\n @Input() isShowPreview: boolean = true;\n @Output() onFileContentChange: EventEmitter<string> = new EventEmitter<string>();\n @Output() onFileChange: EventEmitter<File> = new EventEmitter<File>();\n @Output() blur: EventEmitter<any> = new EventEmitter<any>();\n\n // checkbox\n @Input() checkboxLabel: string;\n\n // Radio button\n @Input() radioItems: IListItem[];\n @Input() templateRadio: TemplateRef<any>;\n\n // number\n @Input() min: number;\n @Input() max: number;\n\n // Area\n @Input() isAreaNonResize: boolean = false;\n\n @Input() isPreventPaste: boolean = false;\n\n // direction\n private _direction: TqlInputComponent.DIRECTIONS = TqlInputComponent.DIRECTIONS.VERTICAL;\n directionClassName: string = 'flex-column';\n\n @Input()\n set direction(v: TqlInputComponent.DIRECTIONS) {\n this._direction = v;\n switch (this._direction) {\n case TqlInputComponent.DIRECTIONS.VERTICAL:\n this.directionClassName = 'flex-column';\n break;\n case TqlInputComponent.DIRECTIONS.HORIZONTAL:\n this.directionClassName = 'flex-row flex-gap-3';\n break;\n }\n }\n\n readonly TYPES: typeof TqlInputComponent.TYPE = TqlInputComponent.TYPE;\n readonly THEMES: typeof TqlInputComponent.THEME = TqlInputComponent.THEME;\n\n /**\n * input data\n * @type {FormControl | null}\n * @private\n */\n @Output() changed: EventEmitter<any> = new EventEmitter<any>();\n _input: FormControl = new FormControl('');\n\n @Input()\n set input(value: AbstractControl | undefined) {\n this._input = !!value ? (value as FormControl) : new FormControl('');\n }\n\n constructor() {}\n\n ngOnInit(): void {}\n\n /**\n * get error list from input\n * @returns {string[]}\n */\n getError() {\n return _.keys(this._input?.errors);\n }\n\n /**\n * check if input is required\n * @returns {boolean}\n */\n get isRequired() {\n if (!!this._input && _.isFunction(this._input!.validator)) {\n return _.includes(_.keys(this._input!.validator('' as any)), ENUM_ERROR_TYPES.REQUIRED);\n }\n return false;\n }\n\n /**\n * get error message\n * @returns {any}\n */\n getErrorMessage(): string {\n const key: string = _.keys(this._input!.errors).shift() as string;\n // console.log(this._input!.errors);\n return (\n _.get(ERROR_INFO, key) ||\n (typeof this._input!.errors?.[key] === 'string' ? this._input!.errors?.[key] : key)\n );\n }\n\n /**\n * handle browsing file\n * @param $event\n */\n onBrowseFile($event: Event) {\n if ($event?.target && $event?.target['files'] && $event?.target['files'].length) {\n const file = $event?.target['files'][0];\n this._input?.setValue(file.name);\n // TODO check extension\n\n this.readFileContent(file);\n this.onFileChange.emit(file);\n // const extension = _.last(_.split(file.name, '.'));\n // if (extension.toLowerCase() === 'zip') {\n // this.file = file;\n // const path = this.URL_LOCAL_PREFIX + file.name;\n // this.setImportForm(file.name, path, file.name);\n // } else {\n // // error\n // console.error('only support zip file');\n // this._ToastService.openError('only support zip file');\n // this.setImportForm();\n // }\n }\n }\n\n /**\n *\n * @param file\n * @returns {Promise<unknown>}\n */\n readFileContent(file: File) {\n const self = this;\n this.fileContentFC = null;\n return new Promise((resolve) => {\n const reader = new FileReader();\n // const start = 0;\n // const stop = file.size - 1;\n reader.onloadend = function (evt) {\n if (evt?.target?.readyState == FileReader.DONE) {\n // DONE == 2\n let content: string = evt.target.result as string;\n const maxLine = 10;\n const totalLines = _.split(content, '\\n').length;\n let previewContent = content;\n if (totalLines > maxLine) {\n previewContent = _.split(previewContent, '\\n', 10).join('\\n');\n previewContent += `\\n... ${totalLines - maxLine} more line${\n totalLines - maxLine > 1 ? 's' : ''\n }`;\n }\n self.fileContentFC = new FormControl(previewContent);\n self.onFileContentChange.emit(content);\n }\n };\n reader.readAsBinaryString(file);\n });\n }\n\n /**\n *\n * @returns {boolean}\n */\n noPaste() {\n return !this.isPreventPaste;\n }\n\n onDataChanged($event: any) {\n this.changed.emit($event);\n }\n}\n\nexport namespace TqlInputComponent {\n export enum TYPE {\n TEXT = 'text',\n NUMBER = 'number',\n PASSWORD = 'password',\n TEXT_AREA = 'textarea',\n FILE_BROWSE = 'browseFile',\n RADIO = 'radio',\n DROPDOWN = 'dropdown',\n CHECKBOX = 'checkbox',\n }\n\n export enum THEME {\n NORMAL = 'normal',\n DARK = 'dark',\n DARKER = 'darker',\n }\n\n export enum STYLES {\n SMALL = 'small',\n }\n\n export enum DIRECTIONS {\n VERTICAL = 'vertical',\n HORIZONTAL = 'horizontal',\n }\n}\n","<div class=\" tql-input-wrapper d-flex flex-gap-2 {{directionClassName}} {{wrapperClassName}}\" [attr.type]=\"type\">\n <ng-container *ngIf=\"label\">\n <ng-container *ngTemplateOutlet=\"labelTemplate\"></ng-container>\n </ng-container>\n <div #ref [class.d-none]=\"ref?.childNodes?.length == 0\">\n <ng-content></ng-content>\n </div>\n <ng-container [ngSwitch]=\"type\" *ngIf=\"ref?.childNodes?.length == 0\">\n <div class=\"input-wrapper {{inputWrapperClassName}}\">\n <ng-container *ngSwitchCase=\"[TYPES.TEXT, TYPES.PASSWORD].includes(type) ? type : null\">\n <ng-container *ngTemplateOutlet=\"defaultType\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"TYPES.NUMBER === type ? type : null\">\n <ng-container *ngTemplateOutlet=\"numberType\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"TYPES.TEXT_AREA === type ? type : null\">\n <ng-container *ngTemplateOutlet=\"textarea\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"TYPES.FILE_BROWSE === type ? type : null\">\n <ng-container *ngTemplateOutlet=\"browseFile\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"TYPES.CHECKBOX === type ? type : null\">\n <ng-container *ngTemplateOutlet=\"checkbox\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"TYPES.RADIO === type ? type : null\">\n <ng-container *ngTemplateOutlet=\"radio\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchDefault>\n <ng-container *ngTemplateOutlet=\"defaultType\"></ng-container>\n </ng-container>\n </div>\n </ng-container>\n <ng-container *ngIf=\"_input && _input?.invalid && _input?.touched && checkError\">\n <div class=\"font-size-12px text-left text-error\">{{ getErrorMessage() }}</div>\n </ng-container>\n</div>\n<ng-template #labelTemplate>\n <ng-container *ngIf=\"labelCustomTemplate\">\n <ng-container\n *ngTemplateOutlet=\"labelCustomTemplate;context:{label:label,isRequired:isRequired}\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"!labelCustomTemplate\">\n <div class=\"label text-nowrap {{labelClassName}}\">{{ label }}<span\n class=\"ml-1 color-radical-red\">{{ isRequired ? '*' : '' }}</span>\n </div>\n </ng-container>\n</ng-template>\n<ng-template #defaultType>\n <input [type]=\"type\" [placeholder]=\"placeholder\" [formControl]=\"_input\" [class.disabled-half]=\"disabled\"\n [class.has-icon]=\"icon\" [class.error]=\"_input?.invalid && _input?.touched\"\n class=\"w-100 font-size-14px {{ className }} {{theme}}\" (paste)=\"noPaste()\" (drop)=\"noPaste()\"\n (ngModelChange)=\"onDataChanged($event)\"\n (blur)=\"blur.emit($event)\" autocomplete=\"{{!isPreventPaste?'on':'off'}}/\" [readonly]=\"readonly\" />\n <ng-container *ngIf=\"icon\">\n <i class=\"icon {{ icon }}\"></i>\n </ng-container>\n</ng-template>\n<ng-template #numberType>\n <input [type]=\"type\" [placeholder]=\"placeholder\" [formControl]=\"_input\" [class.disabled-half]=\"disabled\"\n [class.has-icon]=\"icon\" [class.error]=\"_input?.invalid && _input?.touched\"\n class=\"w-100 font-size-14px {{ className }} {{theme}}\" (paste)=\"noPaste()\" (drop)=\"noPaste()\"\n (ngModelChange)=\"onDataChanged($event)\"\n (blur)=\"blur.emit($event)\"\n autocomplete=\"{{!isPreventPaste?'on':'off'}}/\"\n [min]=\"min\"\n [max]=\"max\" [readonly]=\"readonly\" />\n <ng-container *ngIf=\"icon\">\n <i class=\"icon {{ icon }}\"></i>\n </ng-container>\n</ng-template>\n<ng-template #browseFile>\n <div (click)=\"fileInput.value = null; fileInput.click()\" class=\"cursor-pointer\">\n <input [type]=\"type\" [placeholder]=\"placeholder\" [formControl]=\"_input\" [class.disabled-half]=\"disabled\"\n [class.has-icon]=\"true\" [class.error]=\"_input?.invalid && _input?.touched\" (blur)=\"blur.emit($event)\"\n class=\"w-100 font-size-14px pointer-events-none {{ className }} {{theme}}\"\n (ngModelChange)=\"onDataChanged($event)\" [readonly]=\"readonly\" />\n <ng-container>\n <i class=\"icon {{ icon || 'fal fa-upload'}}\"></i>\n </ng-container>\n </div>\n <div *ngIf=\"!filePreviewTemplate && isShowPreview\">\n <textarea *ngIf=\"fileContentFC\" [formControl]=\"fileContentFC\" class=\"w-100 font-size-14px mt-3 {{theme}}\"\n readonly></textarea>\n </div>\n <div *ngIf=\"filePreviewTemplate && isShowPreview\">\n <ng-container *ngTemplateOutlet=\"filePreviewTemplate\"></ng-container>\n </div>\n <input type=\"file\" #fileInput (change)=\"onBrowseFile($event)\" accept=\"{{fileAccepts?.join('|')}}\" />\n</ng-template>\n<ng-template #textarea>\n <textarea [placeholder]=\"placeholder\" [formControl]=\"_input\" [class.disabled-half]=\"disabled\"\n [class.error]=\"_input?.invalid && _input?.touched\" [class.textarea--resize-none]=\"isAreaNonResize\"\n (blur)=\"blur.emit($event)\"\n (ngModelChange)=\"onDataChanged($event)\"\n class=\"w-100 font-size-14px {{ className }} {{theme}}\" [readonly]=\"readonly\"></textarea>\n</ng-template>\n<ng-template #checkbox>\n <mat-checkbox [formControl]=\"_input\" [class.disabled-half]=\"disabled\"\n [class.error]=\"_input?.invalid && _input?.touched\"\n (ngModelChange)=\"onDataChanged($event)\"\n (blur)=\"blur.emit($event)\">{{checkboxLabel}}</mat-checkbox>\n</ng-template>\n\n<ng-template #radio>\n <mat-radio-group [formControl]=\"_input\" [class.disabled-half]=\"disabled\"\n (ngModelChange)=\"onDataChanged($event)\"\n [class.error]=\"_input?.invalid && _input?.touched\" (change)=\"blur.emit($event?.value)\">\n <mat-radio-button class=\"mr-2\" [value]=\"item?.data\" *ngFor=\"let item of radioItems\">\n <ng-container *ngIf=\"item?.template\">\n <ng-container *ngTemplateOutlet=\"item?.template;context:{item:item}\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"!item?.template\">\n {{item?.name}}\n </ng-container>\n </mat-radio-button>\n </mat-radio-group>\n</ng-template>\n","import {\n ChangeDetectorRef,\n Component,\n ContentChild,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport { AbstractControl, FormControl } from '@angular/forms';\nimport * as _ from 'lodash';\nimport { ENUM_ERROR_TYPES, ERROR_INFO, IListItem } from '../../../constants';\nimport { DefaultComponent, TqlUtilsService } from 'x-tql-service';\nimport { pairwise, startWith } from 'rxjs/operators';\nimport { MatMenuTrigger } from '@angular/material/menu';\n\n@Component({\n selector: 'tql-select',\n standalone: false,\n templateUrl: './tql-select.component.html',\n styleUrls: ['./tql-select.component.scss'],\n})\nexport class TqlSelectComponent extends DefaultComponent implements OnInit, OnChanges {\n @ViewChild(MatMenuTrigger) matMenuTrigger: MatMenuTrigger;\n\n @Input() mappingName: string;\n @Input() mappingValue: string;\n @Input() disabled: boolean = false;\n @Input() className: string;\n @Input() placeholder: string;\n @Input() icon: string;\n\n _multiple: boolean = false;\n @Input() set multiple(v: boolean) {\n this._multiple = _.toString(v) === 'true';\n if (this._multiple) {\n this._originalInputValue = [];\n } else {\n this._originalInputValue = null;\n }\n // console.log(this._multiple);\n // console.log(!this._multiple);\n // console.log(this._originalInputValue);\n }\n\n get multiple() {\n return this._multiple;\n }\n\n /**\n * options for selections\n * @type {any[]}\n * @private\n */\n _options: any[] = [];\n _optionsRaw: any[] = [];\n\n @Input()\n set options(list: any[]) {\n this._optionsRaw = list;\n }\n\n get options() {\n return this._options;\n }\n\n _originalInputValue: any = null;\n _input: FormControl | null = null;\n\n @Input()\n set input(value: AbstractControl | undefined) {\n this._input = !!value ? (value as FormControl) : null;\n // console.log(value);\n // console.log(this._input);\n }\n\n @Output() inputValueChanged: EventEmitter<any> = new EventEmitter<any>();\n\n constructor(private _ChangeDetectorRef: ChangeDetectorRef) {\n super();\n }\n\n ngOnInit(): void {}\n\n ngOnChanges(changes: SimpleChanges) {\n this.generateOptions();\n }\n\n generateOptions() {\n if (this._optionsRaw) {\n if (this.mappingName) {\n this._options = _.map(this._optionsRaw, (item) => {\n const value: any = this.mappingValue ? _.get(item, this.mappingValue) : item;\n return new TqlSelectComponent.SelectOption(\n _.get(item, this.mappingName),\n value,\n value === this._input?.value,\n item?.disabled,\n item,\n );\n });\n } else {\n this._options = _.map(this._optionsRaw, (item) => new TqlSelectComponent.SelectOption(item, item));\n }\n // console.log(this._optionsRaw);\n // console.log(this.options);\n }\n if (this._options?.length && this._input) {\n // clear all saved observable\n this.unsubscribeAll();\n this.listenInputChange();\n\n this.select(\n true,\n _.filter(this.options, (item) => TqlUtilsService.toArray(this._input?.value).includes(item?.value)),\n true,\n );\n\n // this.select(true, _.find(this.options, item => item?.value === this._input?.value), true);\n // _.map(this.options, x => {\n // console.log(x);\n // if (TqlUtilsService.toArray(this._input?.value).includes(x.value)) {\n // this.select(true, x, true);\n // }\n // });\n }\n }\n\n listenInputChange() {\n if (this._input) {\n this.addSubscribes(\n // subscribe value change from input\n this._input.valueChanges\n // pairwise to get the previous and next values in the subscription\n .pipe(startWith(null), pairwise())\n .subscribe(([prev, next]: [any, any]) => {\n // console.log(prev, next);\n if (!_.isEqual(prev, next)) {\n this.select(\n true,\n _.filter(this.options, (item) =>\n TqlUtilsService.toArray(this._input?.value).includes(item?.value),\n ),\n );\n }\n }),\n );\n }\n }\n\n get isRequired() {\n if (_.isFunction(this._input!.validator)) {\n return _.includes(_.keys(this._input!.validator('' as any)), ENUM_ERROR_TYPES.REQUIRED);\n }\n return false;\n }\n\n /**\n * get error message\n * @returns {any}\n */\n getErrorMessage(): string {\n return _.get(ERROR_INFO, _.keys(this._input!.errors).shift() as string);\n }\n\n // getErrorMessage(): string {\n // // TODO support custom error message\n // return _.get(ERROR_INFO, _.keys(this.input!.errors).shift() as string);\n // }\n\n // openMenu(event: Event = null as any) {\n // // stop event default\n // if (event) {\n // event.stopPropagation();\n // }\n //\n // // resize panel width to parent\n // if (document.getElementById(this.id)) {\n // const width = document.getElementById(this.id)!.offsetWidth;\n // const elems = document.getElementsByClassName('mat-menu-panel');\n // for (let i = 0; i < elems.length; i++) {\n // elems[i]['style'].width = width + 'px';\n // }\n // }\n // }\n\n // @HostListener('window:resize', ['$event'])\n // onResize(event) {\n // this.openMenu();\n // }\n\n /**\n * select item\n * @param status\n * @param items\n * @param isFirst\n */\n select(status: boolean, items: TqlSelectComponent.SelectOption[], isFirst: boolean = false) {\n // prevent loop\n this.unsubscribeAll();\n\n if (!this.multiple) {\n // single select\n for (const i of this.options) {\n i.changeCheck(false);\n }\n\n if (!!items && items[0]) {\n items[0].changeCheck(true);\n this._input?.setValue(items[0].value);\n } else {\n this._input?.setValue('');\n }\n\n setTimeout(() => {\n this.matMenuTrigger.closeMenu();\n });\n } else {\n // multi select\n if (items?.length) {\n _.map(items, (x) => x.changeCheck(status));\n this._input?.setValue(\n _.map(\n _.filter(this.options, (x) => x.isChecked),\n (x) => x.value,\n ),\n );\n } else {\n this._input?.setValue([]);\n }\n }\n\n if (\n this._originalInputValue === null ||\n this._originalInputValue?.toString() !== this._input?.value.toString()\n ) {\n // no original value or value change\n this._input?.markAsDirty();\n } else {\n this._input?.markAsPristine();\n this._originalInputValue = this._input?.value;\n }\n\n // window.dispatchEvent(new Event('resize'));\n this.listenInputChange();\n }\n\n get value() {\n return _.join(\n _.map(\n _.filter(this.options, (item) => item.isChecked),\n 'label',\n ),\n ', ',\n );\n }\n\n onClosed($event: any) {\n // console.log(this._input?.dirty);\n if (this._input?.dirty) {\n this.inputValueChanged.emit(this._input?.value);\n this._input.markAsPristine();\n this._originalInputValue = this._input?.value;\n }\n }\n\n onOpened() {\n this._input?.markAsTouched();\n }\n\n // @ContentChild(SelectItemTemplateDirective, {read: TemplateRef})\n // itemTemplate: TemplateRef<any>;\n // @ContentChild(EmptyTemplateDirective, {read: TemplateRef})\n // emptyTemplate: TemplateRef<any>;\n\n // @Input() items: any[] = [];\n // // 'simpleArray': array simple ['a', 'b']\n // // default: object station...\n // @Input() type: string;\n // @Input() color: string;\n // @Input() default: string;\n // @Input() titleOfAll: string;\n // @Input() bindLabel: string = '';\n // @Input() placeHolder: string = 'Select';\n // @Input() bindValue: string = '';\n // @Input() classes: string = '';\n // @Input() noMappingLabel: boolean = false;\n // @Input() multiple: boolean = false;\n // @Input() multipleSelect: boolean = true;\n // @Input() border: boolean = false;\n // @Input() disabled: boolean = false;\n // @Input() icon: string;\n // @Output() clearSearch: any = new EventEmitter();\n // @Output() change = new EventEmitter<any>();\n\n // selected: any;\n // internalItems: any[] = [];\n // private _hasChanged: boolean;\n // private _value: any;\n\n // searchControl: FormControl = new FormControl('');\n\n // // multiSelectInterval: any;\n\n // constructor(\n // public _changeDetector: ChangeDetectorRef,\n // // private _MappingLabelPipe: MappingLabelPipe,\n // // public _LoadingBarService: LoadingBarService\n // ) {\n // super();\n // }\n\n // ngOnInit() {\n // this.clearSearch.next(() => {\n // this.searchControl.setValue('');\n // });\n // }\n\n // writeValue(value: string | string[]): void {\n // this._value = value;\n // this._findSelectedItem(this._value);\n // this.updateInternalValue();\n // this._changeDetector.markForCheck();\n // }\n\n // ngOnChanges(changes: SimpleChanges) {\n // const {items} = changes;\n // if (!!items && !!items.currentValue) {\n // this.updateInternalValue();\n // if (this.default == 'first') {\n // this.selected = this.internalItems[0].label;\n // }\n // }\n // }\n\n // updateInternalValue() {\n // if (this.items) {\n // if (this.type === 'simpleArray') {\n // this.internalItems = this.items.map(item => ({\n // label: item,\n // value: item,\n // checked: this.multiple ? false : undefined,\n // isHidden: item.isHidden\n // }));\n // } else {\n // this.internalItems = this.items.map(item => {\n // return {\n // label: this.bindLabel ? this._parseItemProp(item, this.bindLabel) : item,\n // value: this.bindValue ? this._parseItemProp(item, this.bindValue) : item,\n // checked: this.multiple ? false : undefined,\n // item: item,\n // isHidden: item.isHidden\n // };\n // });\n // }\n // this._findSelectedItem(this._value);\n // }\n // }\n\n // private _findSelectedItem(value: any) {\n // if (this.multiple) {\n // if (Array.isArray(value)) {\n // this.selected = value.reduce((values, v) => {\n // const found = this.internalItems.find(i => i.value.toString().toLocaleLowerCase() === v.toString().toLocaleLowerCase());\n // if (!!found) {\n // values.push(found.label);\n // found.checked = true;\n // }\n // return values;\n // }, []);\n // } else {\n // this.selected = null;\n // }\n // } else {\n // if (!!value && !!this.internalItems) {\n // const found = this.internalItems.find(\n // i => i.value.toString().toLocaleLowerCase() === value.toString().toLocaleLowerCase()\n // );\n // if (!!found) {\n // this.selected = found.label;\n // } else {\n // this.selected = null;\n // }\n // } else {\n // this.selected = null;\n // }\n // }\n // }\n\n // registerOnChange(fn: any): void {\n // }\n\n // registerOnTouched(fn: any): void {\n // }\n\n // setDisabledState?(isDisabled: boolean): void {\n // }\n\n // onChange(item) {\n // this.selected = item.label;\n // this.change.emit(item);\n // }\n\n // onItemCheck($event, item) {\n // $event.stopPropagation();\n // item.checked = !item.checked;\n // this.emitWhenSelect();\n // }\n\n // emitWhenSelect() {\n // const selectedItems = this.internalItems.filter(i => i.checked);\n // this.selected = selectedItems.map(s => s.label);\n // this._hasChanged = true;\n\n // // clearTimeout(this.multiSelectInterval);\n // // this.multiSelectInterval = setTimeout(() => {\n // // this.change.emit(selectedItems.map(s => s.value));\n // // }, 500);\n // }\n\n // stopPropagation(event) {\n // event.stopPropagation();\n // }\n\n // get selectedLabel(): string | null {\n // return this._parseItemProp(this.selected, this.bindLabel);\n // }\n\n // private _parseItemProp(item: any, prop: string): string | null {\n // if (prop.includes('_data')) {\n // prop = prop.toLowerCase();\n // }\n // const props = prop.split('.');\n // if (item) {\n // const result = props.reduce((label, prop) => {\n // if (typeof label[prop] != undefined) {\n // label = label[prop];\n // }\n // return label;\n // }, item);\n // return result;\n // }\n // return null;\n // }\n\n // selectAll($event: MouseEvent) {\n // if ($event) {\n // $event.stopPropagation();\n // }\n // this.internalItems.map(i => (i.checked = true));\n // this.searchControl.setValue('');\n // this.emitWhenSelect();\n // }\n\n // clearAll($event: MouseEvent) {\n // if ($event) {\n // $event.stopPropagation();\n // }\n // this.searchControl.setValue('');\n // }\n\n // unSelectAll($event: MouseEvent) {\n // if ($event) {\n // $event.stopPropagation();\n // }\n // this.internalItems.map(i => (i.checked = false));\n // this.emitWhenSelect();\n // }\n\n // onClose($event: void | 'click' | 'keydown' | 'tab') {\n // // console.log($event);\n // if (this.multiple && this._hasChanged) {\n // const selectedItems = this.internalItems.filter(i => i.checked);\n // this.change.emit(selectedItems.map(s => s.value));\n // }\n // }\n\n // menuOpened() {\n // this._hasChanged = false;\n // // console.log('open');\n // }\n\n // generatePlaceholder() {\n // if (!!this.selected && this.selected.length > 0) {\n // if (this.selected.length === this.internalItems.length) {\n // return !!this.titleOfAll ? `All of ${this.titleOfAll}` : 'All';\n // } else {\n // return this.selected.join(', ');\n // }\n // }\n // return this.placeHolder;\n // }\n}\n\nexport namespace TqlSelectComponent {\n export class SelectOption implements IListItem {\n value: any;\n label: string;\n isChecked: boolean;\n data: any;\n disabled: boolean;\n\n constructor(label: string, value: any, isChecked: boolean = false, disabled = false, data?: any) {\n this.value = value;\n this.label = label;\n this.isChecked = isChecked;\n this.data = data;\n this.disabled = disabled;\n }\n\n changeCheck(status: boolean) {\n this.isChecked = status;\n }\n }\n}\n\nfunction EmptyTemplateDirective(EmptyTemplateDirective: any, arg1: { read: typeof TemplateRef }) {\n throw new Error('Function not implemented.');\n}\n\nfunction SelectItemTemplateDirective(SelectItemTemplateDirective: any, arg1: { read: typeof TemplateRef }) {\n throw new Error('Function not implemented.');\n}\n","<div class=\"select-box-container w-100\"\n matTooltip=\"No Data\"\n [matTooltipDisabled]=\"options?.length > 0\"\n>\n <div\n class=\"w-100 select-box pl-10px pr-10px align-items-center d-flex cursor-pointer {{className}}\"\n [class.disabled-half]=\"disabled || !options?.length\"\n [class.error]=\"_input?.invalid && _input?.touched\"\n [matMenuTriggerFor]=\"menu\"\n (menuOpened)=\"onOpened()\"\n >\n <div *ngIf=\"!!icon\" class=\"input-icon mr-10px d-flex align-items-center\">\n <i [class]=\"icon\"></i>\n <div class=\"line ml-10px\"></div>\n </div>\n <div\n class=\"d-flex flex-shrink-1 flex-grow-1 flex-gap-3 justify-content-between align-items-center overflow-hidden\">\n <div class=\" color-soft-blue text-truncate\" *ngIf=\"value; else placeholderTemplate\"\n [title]=\"value\"\n [innerHTML]=\"value\"></div>\n <i class=\"fas fa-caret-down color-soft-blue\"></i>\n </div>\n </div>\n <mat-menu #menu=\"matMenu\" backdropClass=\"select-box-panel\" class=\"tql-select-menu-wrapper\"\n (closed)=\"onClosed($event)\">\n <button mat-menu-item *ngFor=\"let item of options\"\n [disabled]=\"disabled || item?.disabled\"\n [class.disabled-half]=\"disabled || item?.disabled\"\n (click)=\"$event.stopPropagation();select(!item.isChecked, [item])\">\n <div class=\"d-flex\">\n <div class=\"color-soft-blue text-truncate\"\n [title]=\"item.label\"\n [innerHTML]=\"item.label\"></div>\n <div class=\"flex-grow-1\"></div>\n <div *ngIf=\"item?.isChecked\">\n <i class=\"fal fa-check font-size-16px color-white ml-3\"></i>\n </div>\n </div>\n </button>\n </mat-menu>\n <ng-template #placeholderTemplate>\n <span class=\" text-placeholder font-italic\">{{ placeholder }}</span>\n </ng-template>\n <ng-container *ngIf=\"_input && _input?.invalid && _input?.touched\">\n <div class=\"font-size-12px mt-1 text-left text-error\">{{ getErrorMessage() }}</div>\n </ng-container>\n</div>\n\n\n<!-- <div class=\"select-box d-flex justify-content-between align-items-center\" [ngClass]=\"classes\"\n *ngIf=\"!icon\"\n [matMenuTriggerFor]=\"menu\"\n (menuOpened)=\"menuOpened()\"\n [class.placeholder]=\"!selected || !selected.length\" [class.theme-blue]=\"color == 'blue'\"\n [class.border-box]=\"border\">\n <span class=\"selected-text\">\n <ng-container *ngIf=\"!multiple\">{{ selected ? selected : placeHolder }}</ng-container>\n <ng-container\n *ngIf=\"multiple\">{{generatePlaceholder()}}</ng-container>\n </span>\n <i class=\"fa fa-chevron-down ml-3 icon mr-n2\"></i>\n</div>\n<ng-container *ngIf=\"icon\">\n <button class=\"\" mat-icon-button [matMenuTriggerFor]=\"menu\"\n (menuOpened)=\"menuOpened()\">\n <i class=\"{{icon}}\"></i>\n </button>\n</ng-container>\n<mat-menu #menu=\"matMenu\" class=\"select-box-menu mat-elevation-z2\" (closed)=\"onClose($event)\">\n <ng-template [ngTemplateOutlet]=\"itemList\"></ng-template>\n</mat-menu>\n\n<ng-template #itemList>\n <ng-container *ngIf=\"internalItems?.length >= 5\">\n <div (click)=\"stopPropagation($event)\" class=\"input-search\" [class.disabled-half]=\"disabled\">\n <input autofocus type=\"text\" [formControl]=\"searchControl\" (click)=\"stopPropagation($event)\"\n placeholder=\"Type to search\"/>\n </div>\n <div class=\"actions-group d-flex\" *ngIf=\"multiple && multipleSelect && internalItems.length > 1\"\n [class.disabled-half]=\"disabled\">\n <div class=\"action\" (click)=\"selectAll($event)\">\n Select all\n </div>\n <div class=\"mx-1\">|</div>\n <div class=\"action\" (click)=\"unSelectAll($event)\">\n UnSelect all\n </div>\n <div class=\"flex-grow-1\"></div>\n <div class=\"action\" (click)=\"clearAll($event)\" [class.disabled-half]=\"searchControl.value.length === 0\">\n Clear\n </div>\n </div>\n <div class=\"divider\"></div>\n </ng-container>\n <div class=\"item-list\" [class.disabled-half]=\"disabled\">\n <ng-container *ngFor=\"let item of internalItems | searchBy: searchControl.value:'label'\">\n <ng-template\n [ngTemplateOutlet]=\"multiple ? defaultMultipleSelectTemplate : itemTemplate || defaultItemTemplate\"\n [ngTemplateOutletContext]=\"{ item: item }\">\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"internalItems?.length == 0\">\n <ng-template [ngTemplateOutlet]=\"emptyTemplate || defaultEmptyTemplate\"></ng-template>\n </ng-container>\n <ng-container\n *ngIf=\"internalItems?.length != 0 && (internalItems | searchBy: searchControl.value:'label')?.length == 0\">\n <ng-template [ngTemplateOutlet]=\"emptyTemplate || noSearchResultTemplate\"></ng-template>\n </ng-container>\n </div>\n</ng-template>\n<ng-template #defaultItemTemplate let-item=\"item\">\n <div class=\"d-flex align-items-center pl-0 pr-10\" [class.d-none]=\"item?.isHidden\" mat-menu-item>\n <button class=\"item bg-transparent\" (click)=\"onChange(item)\" mat-menu-item>\n <span class=\"text\"\n title=\"{{ item.label }}\">{{ noMappingLabel ? item.label : (item.label | mappingLabel) }}</span>\n </button>\n <span class=\"item-check\" [class.disable]>\n <i *ngIf=\"item.label == selected\" class=\"fal fa-check\"></i>\n </span>\n </div>\n</ng-template>\n\n<ng-template #defaultMultipleSelectTemplate let-item=\"item\">\n <button mat-menu-item class=\"item d-flex justify-content-between\" (click)=\"onItemCheck($event, item)\">\n <span class=\"text\"\n title=\"{{ item.label }}\">{{ noMappingLabel ? item.label : (item.label | mappingLabel) }}</span>\n <span class=\"item-check\">\n <i *ngIf=\"item.checked\" class=\"fal fa-check\"></i>\n </span>\n </button>\n</ng-template>\n\n<ng-template #defaultEmptyTemplate let-item=\"item\">\n <button mat-menu-item class=\"disabled\">No Item Available</button>\n</ng-template>\n\n<ng-template #noSearchResultTemplate let-item=\"item\">\n <button mat-menu-item class=\"disabled\">No result for '{{searchControl.value}}'</button>\n</ng-template> -->\n","import {Component, Injectable} from '@angular/core';\nimport { ActivatedRouteSnapshot } from '@angular/router';\nimport {BehaviorSubject, Observable, of} from 'rxjs';\nimport {ENUM_ROUTER_KEYS, IRouterData} from '../../constants/interface';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TqlHeaderControllerService {\n _Observable_Current_Header_Component: BehaviorSubject<Component | null> = new BehaviorSubject<Component | null>(null);\n\n constructor() {\n }\n\n resolve(__ActivatedRouteSnapshot: ActivatedRouteSnapshot): Observable<any> {\n\n const data: IRouterData = __ActivatedRouteSnapshot.data as IRouterData;\n\n // check data\n const componentKey = ENUM_ROUTER_KEYS.HEADER_COMPONENT;\n if (!data[componentKey]) {\n console.error(`[${this.constructor.name}] missing ${componentKey}`);\n return of(false);\n }\n\n // check component, if different, trigger next\n if (this._Observable_Current_Header_Component.getValue() !== data[componentKey]) {\n this._Observable_Current_Header_Component.next(data[componentKey] as Component);\n }\n\n return of(new Date());\n }\n}\n","import { Component, Injectable, TemplateRef } from '@angular/core';\nimport { ActivatedRouteSnapshot } from '@angular/router';\nimport { BehaviorSubject, Observable, of } from 'rxjs';\nimport { ENUM_ROUTER_KEYS, IListItem, IRouterData } from '../../constants/interface';\nimport { delay, map, take } from 'rxjs/operators';\n\nexport class NavbarPreview {\n id?: string;\n template: TemplateRef<any>;\n element: Element;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TqlNavbarControllerService {\n _Observable_Current_Nav_Component: BehaviorSubject<Component | null> = new BehaviorSubject<Component | null>(null);\n _Observable_Current_Sub_Menu_Navbar: BehaviorSubject<IListItem[] | null> = new BehaviorSubject<IListItem[] | null>(\n null,\n );\n _Observable_Current_Preview_Item: BehaviorSubject<NavbarPreview | null> = new BehaviorSubject<NavbarPreview | null>(\n null,\n );\n\n constructor() {}\n\n /**\n *\n * @param __ActivatedRouteSnapshot\n * @returns {Observable<boolean> | Observable<Date>}\n */\n resolve(__ActivatedRouteSnapshot: ActivatedRouteSnapshot): Observable<any> {\n const data: IRouterData = __ActivatedRouteSnapshot.data as IRouterData;\n // console.log('navbar', data);\n // check data\n const componentKey = ENUM_ROUTER_KEYS.NAV_COMPONENT;\n const subMenuNavbar = ENUM_ROUTER_KEYS.SUB_MENU_NAVBAR;\n\n // TODO: Harry - Hard code for UM\n if (!!data[subMenuNavbar] && this._Observable_Current_Sub_Menu_Navbar.getValue() !== data[subMenuNavbar]) {\n this._Observable_Current_Sub_Menu_Navbar.next(data[subMenuNavbar] as IListItem[]);\n }\n\n if (!data[componentKey]) {\n console.error(`[${this.constructor.name}] missing ${componentKey}`);\n return of(false);\n }\n\n if (this._Observable_Current_Nav_Component.getValue() !== data[componentKey]) {\n this._Observable_Current_Nav_Component.next(data[componentKey] as Component);\n }\n\n return this._Observable_Current_Nav_Component.pipe(\n take(1),\n map((old) => {\n // console.log(old);\n // check component, if different, trigger next\n\n if (old !== data[componentKey]) {\n this._Observable_Current_Nav_Component.next(data[componentKey] as Component);\n }\n }),\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TqlCollapseControllerService {\n toggleByName$: BehaviorSubject<{ name: string; status: TqlCollapseControllerService.ENUM_COLLAPSE_STATUS }> =\n new BehaviorSubject<{\n name: string;\n status: TqlCollapseControllerService.ENUM_COLLAPSE_STATUS;\n }>({\n name: '',\n status: TqlCollapseControllerService.ENUM_COLLAPSE_STATUS.COLLAPSE,\n });\n\n constructor() {}\n\n collapseByName(name: string = '') {\n this.toggleByName$.next({\n name: name,\n status: TqlCollapseControllerService.ENUM_COLLAPSE_STATUS.COLLAPSE,\n });\n }\n\n expandByName(name: string = '') {\n this.toggleByName$.next({\n name: name,\n status: TqlCollapseControllerService.ENUM_COLLAPSE_STATUS.EXPAND,\n });\n }\n}\n\nexport namespace TqlCollapseControllerService {\n export enum ENUM_COLLAPSE_STATUS {\n COLLAPSE,\n EXPAND,\n }\n}\n","import {Component, Injectable} from '@angular/core';\nimport { ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';\nimport {BehaviorSubject, Observable, of} from 'rxjs';\nimport {ENUM_ROUTER_KEYS, IRouterData} from '../../constants/interface';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TqlDynamicControllerService {\n\n _Observable_Current_Dynamic_Components: BehaviorSubject<Map<string, Component> | null> = new BehaviorSubject<Map<string, Component> | null>(new Map());\n\n constructor() {\n }\n\n resolve(__ActivatedRouteSnapshot: ActivatedRouteSnapshot, __RouterStateSnapshot: RouterStateSnapshot,\n inputData?: Map<string, Component>): Observable<any> {\n\n if (!inputData) {\n const data: IRouterData = __ActivatedRouteSnapshot.data as IRouterData;\n\n // check data\n const componentKey = ENUM_ROUTER_KEYS.DYNAMIC_COMPONENTS;\n if (!data[componentKey]) {\n console.error(`[${this.constructor.name}] missing ${componentKey}`);\n return of(false);\n }\n inputData = data[componentKey];\n }\n\n\n // check component, if different, trigger next\n if (this._Observable_Current_Dynamic_Components.getValue() !== inputData) {\n this._Observable_Current_Dynamic_Components.next(inputData as Map<string, Component>);\n }\n\n return of(new Date());\n }\n}\n","import { Component, EventEmitter, HostBinding, Input, OnInit, Output } from '@angular/core';\nimport { DefaultComponent } from 'x-tql-service';\nimport { IDynamicComponent } from '../../../constants';\nimport { TqlCollapseControllerService } from '../../../controllers';\n\n@Component({\n selector: 'tql-collapse',\n standalone: false,\n templateUrl: './tql-collapse.component.html',\n styleUrls: ['./tql-collapse.component.scss'],\n})\nexport class TqlCollapseComponent extends DefaultComponent implements OnInit, IDynamicComponent {\n @Input() name: string;\n @Input() label: string;\n @Input() labelClassName: string;\n @Input() hasLine: boolean = true;\n @Input() hideIconWhenCollapsed: boolean = false;\n @Input() hideIcon: boolean = false;\n @Input() isCollapse: any = false;\n @Input() offset = 50;\n @Input() direction: string | TqlCollapseComponent.ENUM_DIRECTION = TqlCollapseComponent.ENUM_DIRECTION.RIGHT;\n @Output() event = new EventEmitter();\n\n readonly directions: typeof TqlCollapseComponent.ENUM_DIRECTION = TqlCollapseComponent.ENUM_DIRECTION;\n\n @HostBinding('class.tql-collapse-wrapper') get initializeClass() {\n return true;\n }\n\n data: any;\n\n constructor(private _TqlCollapseControllerService: TqlCollapseControllerService) {\n super();\n this.addSubscribes(\n this._TqlCollapseControllerService.toggleByName$.subscribe((rs) => {\n if (rs?.name === this.name) {\n this.toggleCollapse(rs?.status === TqlCollapseControllerService.ENUM_COLLAPSE_STATUS.COLLAPSE);\n }\n }),\n );\n }\n\n ngOnInit(): void {}\n\n onDataChange() {}\n\n /**\n * toggle collapse\n */\n toggleCollapse(isCollapsed: any = !this.isCollapse) {\n this.isCollapse = isCollapsed;\n this.event.emit(this.isCollapse);\n }\n\n generateOffset() {\n let style = '';\n switch (this.direction) {\n case this.directions.LEFT:\n case this.directions.RIGHT:\n if (this.offset > 0) {\n style = `top:${this.offset}px`;\n } else {\n style = `bottom:${-this.offset}px`;\n }\n break;\n case this.directions.TOP:\n case this.directions.BOTTOM:\n if (this.offset > 0) {\n style = `right:${this.offset}px`;\n } else {\n style = `left:${-this.offset}px`;\n }\n\n break;\n }\n return style;\n }\n}\n\nexport namespace TqlCollapseComponent {\n export enum ENUM_DIRECTION {\n TOP = 'top',\n BOTTOM = 'bottom',\n RIGHT = 'right',\n LEFT = 'left',\n }\n}\n","<div class=\"d-flex collapse-icon align-items-center flex-gap-2 cursor-pointer\" matRipple\n (click)=\"toggleCollapse();$event.stopPropagation();\"\n *ngIf=\"!hideIcon\"\n [class.hide-on-collapsed]=\"hideIconWhenCollapsed\"\n [style]=\"generateOffset()\"\n [class.px-2]=\"label\">\n <div class=\"d-flex align-items-center justify-content-center\">\n <ng-container [ngSwitch]=\"direction\">\n <i *ngSwitchCase=\"directions.RIGHT\"\n class=\"fal icon font-18 {{ isCollapse ? 'fa-angle-right' : 'fa-angle-left' }}\"></i>\n <i *ngSwitchCase=\"directions.LEFT\"\n class=\"fal icon font-18 {{ isCollapse ? 'fa-angle-left' : 'fa-angle-right' }}\"></i>\n <i *ngSwitchCase=\"directions.TOP\"\n class=\"fal icon font-18 {{ isCollapse ? 'fa-angle-up' : 'fa-angle-down' }}\"></i>\n <i *ngSwitchCase=\"directions.BOTTOM\"\n class=\"fal icon font-18 {{ isCollapse ? 'fa-angle-down' : 'fa-angle-up' }}\"></i>\n </ng-container>\n </div>\n <div class=\"{{labelClassName}}\" *ngIf=\"label\">{{label}}</div>\n</div>\n<div class=\"line\" *ngIf=\"hasLine\"></div>\n","import {Component, Input, OnInit} from '@angular/core';\nimport {THEME_KEYS_ENUM, ThemeControllerService} from 'x-tql-theme';\n\n@Component({\n selector: 'tql-loading-bar',\n standalone: false,\n templateUrl: './tql-loading-bar.component.html',\n styleUrls: ['./tql-loading-bar.component.scss']\n})\nexport class TqlLoadingBarComponent implements OnInit {\n @Input() color: string;\n @Input() hasSpinner: boolean = false;\n @Input() isFixed: boolean = true;\n\n constructor(private _ThemeControllerService: ThemeControllerService) {\n this._ThemeControllerService._Observable_theme.subscribe(() => {\n this.color = this._ThemeControllerService.getColorOf(THEME_KEYS_ENUM.LOADING_BAR);\n });\n }\n\n ngOnInit(): void {\n }\n\n}\n","<ngx-loading-bar [includeSpinner]=\"hasSpinner\" [color]=\"color\" height=\"3px\" [fixed]=\"isFixed\"></ngx-loading-bar>\n\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n EventEmitter,\n OnInit,\n Output,\n QueryList,\n ViewChild,\n} from '@angular/core';\nimport * as _ from 'lodash';\nimport { MatTab, MatTabGroup } from '@angular/material/tabs';\n\n@Component({\n selector: 'tql-tab',\n standalone: false,\n templateUrl: './tql-tab.component.html',\n styleUrls: ['./tql-tab.component.scss'],\n})\nexport class TqlTabComponent implements OnInit, AfterViewInit {\n @ViewChild(MatTabGroup, { static: true }) tabGroup: MatTabGroup;\n @ContentChildren(MatTab) tabContent: QueryList<MatTab>;\n @Output() selectedTabChange: EventEmitter<number> = new EventEmitter<number>();\n\n constructor(private _ChangeDetectorRef: ChangeDetectorRef) {}\n\n ngOnInit(): void {}\n\n ngAfterViewInit() {\n this.tabGroup._tabs = _.cloneDeep(this.tabContent);\n this._ChangeDetectorRef.detectChanges();\n }\n}\n","<mat-tab-group class=\"tql-tab\" (selectedIndexChange)=\"selectedTabChange.emit($event)\">\n <ng-content></ng-content>\n</mat-tab-group>\n","import { Component, ElementRef, HostBinding, HostListener, Input, OnInit, Renderer2 } from '@angular/core';\n\n@Component({\n selector: 'tql-resizable',\n standalone: false,\n templateUrl: './tql-resizable.component.html',\n styleUrls: ['./tql-resizable.component.scss'],\n})\nexport class TqlResizableComponent implements OnInit {\n @Input() parentElement: ElementRef;\n private _directions: (string | TqlResizableComponent.ENUM_DIRECTIONS)[];\n @Input()\n set directions(v: (string | TqlResizableComponent.ENUM_DIRECTIONS)[]) {\n this._directions = v;\n }\n\n get directions() {\n return this._directions;\n }\n\n @HostBinding('class.resizable-group') get initializeClass() {\n return true;\n }\n\n @HostListener('window:mousemove', ['$event']) resize($event) {\n if (this.direction) {\n this.onResize($event);\n $event.preventDefault();\n }\n }\n\n @HostListener('window:mouseup', ['$event']) stopResize($event) {\n if (this.direction) {\n this.onResizeEnd($event);\n $event.preventDefault();\n }\n }\n\n private direction: TqlResizableComponent.ENUM_DIRECTIONS | null;\n private start: number;\n private width: number;\n private height: number;\n\n constructor(private renderer: Renderer2) {}\n\n ngOnInit(): void {}\n\n onResizeStart($event: MouseEvent, direction: TqlResizableComponent.ENUM_DIRECTIONS) {\n this.direction = direction;\n this.start = this.isHorizontalResize(this.direction) ? this.getClientX($event) : this.getClientY($event);\n this.width = this.parentElement.nativeElement.clientWidth;\n this.height = this.parentElement.nativeElement.clientHeight;\n if ($event.stopPropagation) {\n $event.stopPropagation();\n }\n if ($event.preventDefault) {\n $event.preventDefault();\n }\n $event.cancelBubble = true;\n $event.returnValue = false;\n\n // stop transition\n this.renderer.addClass(this.parentElement.nativeElement, 'resizing');\n }\n\n private onResizeEnd($event: MouseEvent) {\n // console.log('onResizeEnd');\n if (this.direction) {\n this.direction = null;\n this.start = 0;\n }\n this.renderer.removeClass(this.parentElement.nativeElement, 'resizing');\n this.direction = null;\n }\n\n private onResize($event: MouseEvent) {\n // console.log('onResize');\n if (this.direction) {\n const offset = this.isHorizontalResize(this.direction)\n ? this.start - this.getClientX($event)\n : this.start - this.getClientY($event);\n switch (this.direction) {\n case TqlResizableComponent.ENUM_DIRECTIONS.TOP:\n this.renderer.setStyle(this.parentElement.nativeElement, 'min-height', this.height + offset + 'px');\n this.renderer.setStyle(this.parentElement.nativeElement, 'max-height', this.height + offset + 'px');\n break;\n case TqlResizableComponent.ENUM_DIRECTIONS.BOTTOM:\n this.renderer.setStyle(this.parentElement.nativeElement, 'min-height', this.height - offset + 'px');\n this.renderer.setStyle(this.parentElement.nativeElement, 'max-height', this.height - offset + 'px');\n break;\n case TqlResizableComponent.ENUM_DIRECTIONS.LEFT:\n this.renderer.setStyle(this.parentElement.nativeElement, 'min-width', this.width + offset + 'px');\n // this.renderer.setStyle(this.parentElement.nativeElement, 'width', this.width + offset + 'px');\n this.renderer.setStyle(this.parentElement.nativeElement, 'max-width', this.width + offset + 'px');\n break;\n case TqlResizableComponent.ENUM_DIRECTIONS.RIGHT:\n this.renderer.setStyle(this.parentElement.nativeElement, 'min-width', this.width - offset + 'px');\n // this.renderer.setStyle(this.parentElement.nativeElement, 'width', this.width - offset + 'px');\n this.renderer.setStyle(this.parentElement.nativeElement, 'max-width', this.width - offset + 'px');\n break;\n }\n }\n }\n\n private isHorizontalResize(direction: String) {\n return direction === 'left' || direction === 'right';\n }\n\n private getClientX($event: MouseEvent | TouchEvent) {\n if ($event instanceof TouchEvent) {\n return (<TouchEvent>$event).touches[0].clientX;\n } else {\n return (<MouseEvent>$event).clientX;\n }\n }\n\n private getClientY($event: MouseEvent | TouchEvent) {\n if ($event instanceof TouchEvent) {\n return (<TouchEvent>$event).touches[0].clientY;\n } else {\n return (<MouseEvent>$event).clientY;\n }\n }\n}\n\nexport namespace TqlResizableComponent {\n export enum ENUM_DIRECTIONS {\n NONE = 'none',\n TOP = 'top',\n BOTTOM = 'bottom',\n LEFT = 'left',\n RIGHT = 'right',\n }\n}\n","<div *ngFor=\"let dir of directions\" class=\"resizable-bar {{dir}}\">\n <div class=\"resizable-line\" (mousedown)=\"onResizeStart($event,dir)\"></div>\n</div>\n","import { Component, Input, OnInit, TemplateRef } from '@angular/core';\n\n@Component({\n selector: 'tql-spinner',\n standalone: false,\n templateUrl: './tql-spinner.component.html',\n styleUrls: ['./tql-spinner.component.scss'],\n})\nexport class TqlSpinnerComponent implements OnInit {\n @Input() color: string;\n @Input() diameter: string | number = 10;\n\n constructor() {}\n\n ngOnInit(): void {}\n}\n","<div class=\"tql-spinner\" [class.tql-spinner-customClr]=\"color\" style=\"--clr:{{color}}\">\n <mat-spinner [diameter]=\"diameter\"></mat-spinner>\n</div>\n","import { AfterViewInit, Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { IDynamicComponent } from '../../../constants';\nimport _ from 'lodash';\nimport { FormControl } from '@angular/forms';\nimport { DefaultComponent, TqlTableControllerService } from 'x-tql-service';\n\n@Component({\n selector: 'lib-tql-table-filter-widget',\n standalone: false,\n templateUrl: './tql-table-filter-widget.component.html',\n styleUrls: ['./tql-table-filter-widget.component.scss'],\n})\nexport class TqlTableFilterWidgetComponent\n extends DefaultComponent\n implements OnInit, AfterViewInit, IDynamicComponent\n{\n @Output() event = new EventEmitter<TqlTableFilterWidgetComponent.IFilter>();\n @Input() hasSort: boolean = true;\n @Input() filterKey: string;\n @Input() iconClassName: string = 'fa-light fa-ellipsis font-size-16px';\n @Input() emptyLabel: string = '';\n\n /**\n * list of data\n * @type {{label: any, value: any}[]}\n * @private\n */\n private _list: { label: any; value: any[] }[] = [];\n @Input()\n set list(v: { label: any; value: any[] }[]) {\n this._list = v;\n this.displayedList = [...this.list];\n }\n\n get list(): { label: any; value: any[] }[] {\n return this._list;\n }\n\n sort: TqlTableFilterWidgetComponent.ENUM_SORT_DIRECTION = TqlTableFilterWidgetComponent.ENUM_SORT_DIRECTION.RD;\n sortDirections: typeof TqlTableFilterWidgetComponent.ENUM_SORT_DIRECTION =\n TqlTableFilterWidgetComponent.ENUM_SORT_DIRECTION;\n displayedList: { label: any; value: any[] }[] = [];\n selectedList: { label: any; value: any[] }[] = [];\n searchFC: FormControl = new FormControl('');\n\n isOpened: boolean = false;\n\n filter: TqlTableFilterWidgetComponent.IFilter = {};\n\n constructor(private _TqlTableControllerService: TqlTableControllerService) {\n super();\n }\n\n ngOnInit(): void {}\n\n ngAfterViewInit() {}\n\n onDataChange() {\n setTimeout(() => {\n if (this.filter['_id']) {\n this.unsubscribeAll();\n this.addSubscribes(\n this._TqlTableControllerService.getFilter(this.filter['_id'])?.onUpdateUI$?.subscribe((x) => {\n // console.log(x);\n // console.log(this.filter);\n this.reset();\n const filter: TqlTableFilterWidgetComponent.IFilter = this.filter[this.filterKey];\n if (!!filter) {\n // console.log(filter);\n this.selectedList = this.displayedList.filter(\n (x) => !!(filter.data || [])?.find((y) => y.value.toString() === x.value.toString()),\n );\n // this.selectedList = [...(filter.data || [])];\n // console.log(this.displayedList);\n // console.log(this.selectedList);\n // if (!!filter.sort && filter.sort !== TqlTableFilterWidgetComponent.ENUM_SORT_DIRECTION.RD) {\n // this.toggleSort(filter.sort);\n // }\n this.toggleSort(filter.sort as TqlTableFilterWidgetComponent.ENUM_SORT_DIRECTION);\n // this.onChanged();\n }\n }),\n );\n }\n });\n }\n\n reset() {\n //reset\n this.sort = TqlTableFilterWidgetComponent.ENUM_SORT_DIRECTION.RD;\n this.selectedList = [...this.list];\n this.displayedList = [...this.list];\n this.emptyLabel = '';\n }\n\n checkFilter() {\n this.reset();\n const filter: TqlTableFilterWidgetComponent.IFilter = this.filter[this.filterKey];\n if (!!filter) {\n if (!!filter.sort && filter.sort !== TqlTableFilterWidgetComponent.ENUM_SORT_DIRECTION.RD) {\n this.toggleSort(filter.sort);\n }\n }\n }\n\n toggleSort(direction: TqlTableFilterWidgetComponent.ENUM_SORT_DIRECTION, isCallEvent: boolean = true) {\n if (this.sort === direction) {\n this.sort = TqlTableFilterWidgetComponent.ENUM_SORT_DIRECTION.RD;\n } else {\n this.sort = direction;\n }\n if (isCallEvent) {\n this.onChanged({ sort: true });\n }\n }\n\n toggleFilter(items: any[], isCallEvent: boolean = true) {\n _.forEach(items, (item) => {\n if (this.isFilterSelected(item)) {\n _.remove(this.selectedList, (x) => this.isFilterSelected(item, [x]));\n } else {\n this.selectedList.push(item);\n }\n });\n if (isCallEvent) {\n this.onChanged({ select: true });\n }\n }\n\n selectAll($event: MouseEvent) {\n this.selectedList = [...this.list];\n this.onChanged({ select: true });\n }\n\n unSelectAll($event: MouseEvent) {\n this.selectedList = [];\n this.onChanged({ select: true });\n }\n\n hasFilter() {\n return (\n this.filterKey &&\n (this.sort !== TqlTableFilterWidgetComponent.ENUM_SORT_DIRECTION.RD ||\n this.selectedList?.length !== this.list?.length)\n );\n }\n\n clearSearch() {\n this.searchFC.setValue('');\n }\n\n onChanged(filter: any = { sort: false }) {\n this.event.emit({\n key: this.filterKey,\n sort: this.sort,\n data: [...this.selectedList],\n filteredKeys: [...this.sortDisplayedList()],\n control: {\n resetSort: () => {\n this.sort = TqlTableFilterWidgetComponent.ENUM_SORT_DIRECTION.RD;\n },\n },\n _filter: filter,\n });\n }\n\n isFilterSelected(item: { label: any; value: any[] }, list: { label: any; value: any[] }[] = this.selectedList) {\n return !!_.find(list, (x) => x.value === item.value);\n }\n\n onSearchChanged($event: any) {\n // console.log($event);\n if ($event) {\n this.displayedList = _.filter(this.list, (x) =>\n _.toString(x.label).toLowerCase().includes(_.toString($event).toLowerCase()),\n ) as {\n label: any;\n value: any[];\n }[];\n // console.log(this.displayedList);\n } else {\n this.displayedList = [...this.list];\n }\n }\n\n sortDisplayedList() {\n return _.orderBy(this.displayedList, (x) => x.label);\n }\n\n onOpened() {\n this.isOpened = true;\n console.log('open');\n }\n\n onClosed() {\n this.isOpened = false;\n console.log('close');\n }\n}\n\nexport namespace TqlTableFilterWidgetComponent {\n export enum ENUM_SORT_DIRECTION {\n ASC = 'asc',\n DES = 'desc',\n RD = 'random',\n }\n\n export interface IFilter {\n _id?: string;\n key?: string;\n sort?: TqlTableFilterWidgetComponent.ENUM_SORT_DIRECTION;\n data?: any[];\n _filter?: any;\n control?: any;\n filteredKeys?: any[];\n }\n}\n","<button mat-icon-button class=\"small icon\" [matMenuTriggerFor]=\"filterMenu\" [class.showed]=\"hasFilter() || isOpened\"\n (menuOpened)=\"onOpened()\"\n (menuClosed)=\"onClosed()\">\n <i class=\"fa-light fa-filter font-size-12px filtered\" *ngIf=\"hasFilter()\" matTooltip=\"filtered\"></i>\n <i class=\"{{iconClassName}} \" *ngIf=\"!hasFilter()\"></i>\n</button>\n<mat-menu #filterMenu=\"matMenu\" backdropClass=\"table-filter-menu-wrapper\">\n <div class=\"d-flex flex-column overflow-hidden h-100\" (click)=\"$event.stopPropagation();\">\n <div class=\"d-flex flex-column sort-group\" *ngIf=\"hasSort\">\n <div class=\"px-3 py-2 cursor-pointer\" matRipple\n [class.selected]=\"sortDirections.ASC === sort\"\n (click)=\"toggleSort(sortDirections.ASC)\">Sort <span class=\"font-weight-bold\">A - Z</span></div>\n <div class=\"px-3 py-2 cursor-pointer\" matRipple\n [class.selected]=\"sortDirections.DES === sort\"\n (click)=\"toggleSort(sortDirections.DES)\">Sort <span class=\"font-weight-bold\">Z - A</span></div>\n </div>\n <div class=\"filter-group d-flex flex-column overflow-hidden\">\n <div class=\"px-3 mt-2\">\n <tql-input icon=\"fa-light fa-magnifying-glass\" class=\"search-box\" placeholder=\"Search\"\n (changed)=\"onSearchChanged($event)\"\n [input]=\"searchFC\"></tql-input>\n </div>\n <div class=\"d-flex px-3 py-2\">\n <div class=\"flex-grow-1\"></div>\n <div class=\"d-flex flex-gap-1\">\n <div class=\"action cursor-pointer\"\n [class.disabled-half]=\"list?.length <= 0 || selectedList?.length === list?.length\"\n (click)=\"selectAll($event)\">\n Select all\n </div>\n <div class=\"mx-1\">|</div>\n <div class=\"action cursor-pointer\"\n [class.disabled-half]=\"list?.length <= 0 || selectedList?.length === 0\"\n (click)=\"unSelectAll($event)\">\n Clear\n </div>\n </div>\n </div>\n <div class=\"px-3 pb-2\">\n <hr>\n </div>\n <div class=\"flex-grow-1 overflow-hidden\">\n <div class=\"d-flex flex-column h-100 overflow-y-auto\">\n <div *ngFor=\"let item of sortDisplayedList()\"\n class=\"item d-flex flex-gap-2 px-3 py-2 align-items-center cursor-pointer\"\n [class.selected]=\"selectedList?.includes(item)\"\n (click)=\"toggleFilter([item])\"\n matRipple>\n <div class=\"flex-grow-1 text-truncate\">\n <ng-container *ngTemplateOutlet=\"labelTemp;context:{label:item?.label}\"></ng-container>\n </div>\n <div class=\"icon\">\n <i class=\"fa-light fa-check\"></i>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</mat-menu>\n\n<ng-template #labelTemp let-label=\"label\">\n <span\n [title]=\"(emptyLabel && (label === null || label === undefined)) ? emptyLabel : label\">\n {{(emptyLabel && (label === null || label === undefined)) ? emptyLabel : label}}\n </span>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TqlInputComponent } from './tql-input/tql-input.component';\nimport { TqlSelectComponent } from './tql-select/tql-select.component';\nimport { MaterialsModule } from 'x-tql-theme';\nimport { LoadingBarHttpClientModule } from '@ngx-loading-bar/http-client';\nimport { LoadingBarModule } from '@ngx-loading-bar/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { TqlCollapseComponent } from './tql-collapse/tql-collapse.component';\nimport { TqlLoadingBarComponent } from './tql-loading-bar/tql-loading-bar.component';\nimport { TqlTabComponent } from './tql-tab/tql-tab.component';\nimport { TqlResizableComponent } from './tql-resizable/tql-resizable.component';\nimport { TqlSpinnerComponent } from './tql-spinner/tql-spinner.component';\nimport { TqlTableFilterWidgetComponent } from './tql-table-filter-widget/tql-table-filter-widget.component';\n\n@NgModule({\n declarations: [\n TqlInputComponent,\n TqlSelectComponent,\n TqlCollapseComponent,\n TqlLoadingBarComponent,\n TqlTabComponent,\n TqlResizableComponent,\n TqlSpinnerComponent,\n TqlTableFilterWidgetComponent,\n ],\n imports: [CommonModule, MaterialsModule, LoadingBarHttpClientModule, LoadingBarModule, ReactiveFormsModule],\n exports: [\n TqlInputComponent,\n TqlSelectComponent,\n TqlCollapseComponent,\n TqlLoadingBarComponent,\n TqlTabComponent,\n TqlResizableComponent,\n TqlSpinnerComponent,\n TqlTableFilterWidgetComponent,\n ],\n})\nexport class BasicModule {}\n","import { Directive, Input, TemplateRef, ViewContainerRef } from '@angular/core';\n/*\n * *ngVar=\"{isCollapsed:false} as vars\"}\n * */\n@Directive({\n selector: '[ngVar]',\n standalone: false,\n})\nexport class NgVarDirective {\n @Input()\n set ngVar(context: unknown) {\n this.context.$implicit = this.context.ngVar = context;\n\n if (!this.hasView) {\n this.vcRef.createEmbeddedView(this.templateRef, this.context);\n this.hasView = true;\n }\n }\n\n private context: {\n $implicit: unknown;\n ngVar: unknown;\n } = {\n $implicit: null,\n ngVar: null,\n };\n\n private hasView: boolean = false;\n\n constructor(private templateRef: TemplateRef<any>, private vcRef: ViewContainerRef) {}\n}\n","import {Injectable} from '@angular/core';\nimport {IListItemOption} from '../../constants';\nimport _ from 'lodash';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TqlHelperService {\n\n constructor() {\n }\n\n static getActionCompressGroup(actions: IListItemOption[], notCompressMin: number = 0): { compressed: IListItemOption[], uncompressed: IListItemOption[] } {\n let notCompressGroup: IListItemOption[] = [];\n let compressGroup: IListItemOption[] = [];\n if (actions.length === 1) {\n notCompressGroup = actions;\n } else if (actions.length <= notCompressMin) {\n notCompressGroup = actions;\n } else {\n notCompressGroup = _.filter(actions, x => x.isNotCompressed === true);\n compressGroup = _.difference(actions, notCompressGroup);\n if (notCompressGroup.length <= notCompressMin) {\n notCompressGroup = _.concat(notCompressGroup, _.take(compressGroup, notCompressMin - notCompressGroup.length));\n compressGroup = _.difference(actions, notCompressGroup);\n }\n }\n return {compressed: compressGroup, uncompressed: notCompressGroup};\n }\n\n\n}\n","import { Component, Input } from '@angular/core';\nimport { IListItemOption } from '../../../constants';\n\n@Component({\n selector: 'tql-action-bar-menu',\n standalone: false,\n templateUrl: './tql-action-bar-menu.component.html',\n styleUrls: ['./tql-action-bar-menu.component.scss'],\n})\nexport class TqlActionBarMenuComponent {\n @Input() item: IListItemOption;\n @Input() data: any;\n nestedArrowIcon = 'fa-solid fa-chevron-right pl-3';\n timedOutCloser: any;\n\n mouseEnter(trigger: any) {\n if (this.timedOutCloser) {\n clearTimeout(this.timedOutCloser);\n }\n trigger.openMenu();\n }\n\n mouseLeave(trigger: any) {\n this.timedOutCloser = setTimeout(() => {\n trigger.closeMenu();\n }, 50);\n }\n}\n","<ng-template #itemTemp let-item=\"item\">\n <ng-container *ngIf=\"item?.template\">\n <ng-container *ngTemplateOutlet=\"item.template;context:{item:item}\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"!item?.template\">\n <i *ngIf=\"item?.iconClassName\" class=\"{{ item?.iconClassName }}\"></i>\n <div class=\"got-14 font-weight-normal ml-2 flex-grow-1\">{{ item?.name }}</div>\n </ng-container>\n</ng-template>\n<ng-template #menuItem>\n <button mat-menu-item\n class=\"{{item?.className}}\"\n *ngIf=\"item?.hidden !== true\"\n (click)=\"item?.onClick(data)\"\n [class.disabled-half]=\"item?.disabled\">\n <div class=\"d-flex align-items-center\">\n <ng-container *ngTemplateOutlet=\"itemTemp; context: {item: item}\"></ng-container>\n </div>\n </button>\n</ng-template>\n<ng-container *ngIf=\"item?.children?.length > 0;else menuItem\">\n <button mat-menu-item\n class=\"{{item?.className}}\"\n *ngIf=\"item?.hidden !== true\"\n [matMenuTriggerFor]=\"submenu\"\n #menuTrigger=\"matMenuTrigger\"\n (mouseenter)=\"mouseEnter(menuTrigger)\" (mouseleave)=\"mouseLeave(menuTrigger)\"\n [class.disabled-half]=\"item?.disabled\">\n <div class=\"d-flex align-items-center\">\n <ng-container *ngTemplateOutlet=\"itemTemp; context: {item: item}\"></ng-container>\n </div>\n <mat-menu #submenu=\"matMenu\">\n <div (mouseenter)=\"mouseEnter(menuTrigger)\" (mouseleave)=\"mouseLeave(menuTrigger)\">\n <ng-container *ngFor=\"let subItem of item?.children\">\n <tql-action-bar-menu [item]=\"subItem\"></tql-action-bar-menu>\n </ng-container>\n </div>\n </mat-menu>\n </button>\n\n</ng-container>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { IListItemOption } from '../../../constants/interface/i-list-item-option';\nimport { TqlHelperService } from '../../../controllers/tql-helper/tql-helper.service';\nimport { ActionsConstant, ENUM_ACTION_KEYS } from '../../../constants/values/actions.constant';\nimport _ from 'lodash';\n\n@Component({\n selector: 'tql-action-bar',\n standalone: false,\n templateUrl: './tql-action-bar.component.html',\n styleUrls: ['./tql-action-bar.component.scss'],\n})\nexport class TqlActionBarComponent implements OnInit {\n @Input() data: any;\n @Input() notCompressMin: number = 0;\n @Input() action: IListItemOption = _.cloneDeep(ActionsConstant[ENUM_ACTION_KEYS.MORE]);\n @Input() listStyle: TqlActionBarComponent.ENUM_STYLE | string = TqlActionBarComponent.ENUM_STYLE.NORMAL;\n ENUM_STYLE: typeof TqlActionBarComponent.ENUM_STYLE = TqlActionBarComponent.ENUM_STYLE;\n\n compressedGroup: IListItemOption[] = [];\n unCompressedGroup: IListItemOption[] = [];\n\n _list: IListItemOption[] = [];\n nestedArrowIcon = 'fa-solid fa-chevron-right pl-3';\n @Input()\n set list(list: IListItemOption[]) {\n this._list = [];\n setTimeout(() => {\n this._list = list;\n this.convertActionGroup(this.list);\n });\n }\n\n get list() {\n return this._list;\n }\n\n constructor() {}\n\n ngOnInit(): void {}\n\n convertActionGroup(options: IListItemOption[]) {\n const newGroup = TqlHelperService.getActionCompressGroup(options, this.notCompressMin);\n this.compressedGroup = newGroup.compressed;\n this.unCompressedGroup = newGroup.uncompressed;\n }\n}\n\nexport namespace TqlActionBarComponent {\n export enum ENUM_STYLE {\n NORMAL = 'normal',\n SMALL = 'small',\n }\n}\n","<div class=\"d-flex align-items-center\" *ngIf=\"list?.length\">\n <!--unCompressedGroup-->\n <ng-container *ngFor=\"let item of unCompressedGroup\">\n <button mat-icon-button\n *ngIf=\"item?.hidden !== true\"\n class=\"{{item?.className}}\"\n [class.small]=\"listStyle === ENUM_STYLE.SMALL\"\n [class.disabled-half]=\"item?.disabled\"\n (click)=\"$event.stopPropagation();item?.onClick(data)\"\n [matTooltip]=\"item?.name\">\n <i class=\"{{item?.iconClassName}}\"></i>\n </button>\n </ng-container>\n <!--compressedGroup-->\n <button mat-icon-button\n class=\"{{action?.className}}\"\n *ngIf=\"compressedGroup?.length\"\n [matMenuTriggerFor]=\"toggleMenus\"\n (click)=\"$event.stopPropagation()\"\n #self=\"matMenuTrigger\"\n [class.showed]=\"self?.menuOpen || !action?.showWhenHover\"\n [class.small]=\"listStyle === ENUM_STYLE.SMALL\"\n [matTooltip]=\"action?.name\">\n <i class=\"{{action?.iconClassName}} \"></i>\n </button>\n <mat-menu #toggleMenus=\"matMenu\" class=\"min-w-200px\" backdropClass=\"mat-menu-default\">\n <ng-container *ngFor=\"let item of compressedGroup\">\n <tql-action-bar-menu [item]=\"item\" [data]=\"data\"></tql-action-bar-menu>\n </ng-container>\n </mat-menu>\n</div>\n","import { Component, EventEmitter, Input, OnInit, Output, TemplateRef, ViewChild } from '@angular/core';\nimport { IListItem, IListItemOption } from '../../../constants/interface';\nimport { CdkDragDrop } from '@angular/cdk/drag-drop';\nimport { DefaultComponent } from 'x-tql-service';\nimport _ from 'lodash';\nimport { ActionsConstant, ENUM_ACTION_KEYS, MicsConstant } from '../../../constants';\nimport { MatRipple } from '@angular/material/core';\n\n@Component({\n selector: 'tql-simple-list',\n standalone: false,\n templateUrl: './tql-simple-list.component.html',\n styleUrls: ['./tql-simple-list.component.scss'],\n})\nexport class TqlSimpleListComponent extends DefaultComponent implements OnInit {\n @ViewChild(MatRipple) ripple: MatRipple;\n @ViewChild('contentTemplate') contentTemplate: TemplateRef<any>;\n @Input() nameTemplate: TemplateRef<any>;\n @Input() listStyle: TqlSimpleListComponent.ENUM_STYLE = TqlSimpleListComponent.ENUM_STYLE.NORMAL;\n ENUM_STYLE: typeof TqlSimpleListComponent.ENUM_STYLE = TqlSimpleListComponent.ENUM_STYLE;\n\n @Input() hasConnectedLines: boolean = false;\n @Input() level: number;\n\n /*items*/\n _items: IListItem[];\n @Input()\n set items(v: IListItem[]) {\n _.map(v, (x) => {\n x.optionsOnlyCollapse = this.filterOptions(x.options, { type: MicsConstant.ENUM_TYPES.COLLAPSE_EXPAND });\n x.optionsWithoutCollapse = this.filterOptions(\n x.options,\n { type: MicsConstant.ENUM_TYPES.COLLAPSE_EXPAND },\n true,\n );\n });\n this._items = v;\n }\n\n get items(): IListItem[] {\n return this._items;\n }\n\n @Input() theme: TqlSimpleListComponent.ENUM_THEMES = TqlSimpleListComponent.ENUM_THEMES.LIGHT;\n @Input() noActive: boolean = false;\n @Input() activeClassName: string = '';\n @Input() hasBorderBottom: boolean = false;\n @Input() collapsingIconPosition: string = TqlSimpleListComponent.ENUM_HANDLER_POSITION.RIGHT;\n\n // drag & drop\n @Input() draggable: boolean = false;\n @Input() dragHandlerPosition: string = TqlSimpleListComponent.ENUM_HANDLER_POSITION.RIGHT;\n @Input() dropIds: string[] = [];\n @Output() onDragStart: EventEmitter<any> = new EventEmitter<any>();\n @Output() onDragEnd: EventEmitter<any> = new EventEmitter<any>();\n\n // navbar\n @Input() inNavbar: boolean = false;\n @Input() navbarClass: string = 'pt-0 pr-15px pb-0 pl-30px';\n\n ENUM_HANDLER_POSITION: typeof TqlSimpleListComponent.ENUM_HANDLER_POSITION =\n TqlSimpleListComponent.ENUM_HANDLER_POSITION;\n DEFAULT_ITEM_HEIGHT: number = 40;\n DEFAULT_ITEM__SMALL_HEIGHT: number = 32;\n dragging: boolean = false;\n\n // style\n @Input() itemStyle: string = '';\n\n // actions\n @Input()\n moreAction: IListItemOption = _.cloneDeep(ActionsConstant[ENUM_ACTION_KEYS.MORE]);\n\n constructor() {\n super();\n }\n\n ngOnInit(): void {\n setTimeout(() => {\n this.moreAction.className += ' action';\n this.moreAction.iconClassName += ' font-size-18px';\n if (this.moreAction?.showWhenHover) {\n this.moreAction.className += ' show-on-hover';\n }\n // console.log(this.ripple);\n });\n }\n\n onDrop($event: CdkDragDrop<any, any>) {}\n\n onDragMove() {\n console.log('move');\n }\n\n dragHover(node: any) {}\n\n dragStart(item: IListItem) {\n this.onDragStart.emit(item?.data);\n this.dragging = true;\n }\n\n dragHoverEnd() {\n this.dragging = false;\n }\n\n dragEnd() {\n console.log('drag end');\n this.onDragEnd.emit();\n }\n\n filterOptions(options: IListItemOption[] = [], filter: any = {}, isRevert: boolean = false) {\n const filteredData = _.filter(options, filter);\n return !isRevert ? filteredData : _.difference(options, filteredData);\n }\n\n calculateConnectedLinesHeight(item: any) {\n let height: number = this.calculateNestedConnectedLinesHeight(item);\n return `${height > 0 ? height - this.getDefaultItemHeight() / 2 : 0}px`;\n }\n\n calculateNestedConnectedLinesHeight(item: any, isInit: boolean = true): number {\n let height: number =\n !item?.isCollapsed && item?.children?.length ? item?.children?.length * this.getDefaultItemHeight() : 0;\n if (!item.isCollapsed) {\n for (let i = 0; i < item?.children?.length; i++) {\n if (isInit && i === item?.children?.length - 1) {\n // do nothing\n } else {\n height += this.calculateNestedConnectedLinesHeight(item?.children[i], false);\n }\n }\n }\n\n return height;\n }\n\n calculateConnectedLinesTop() {\n return `${this.getDefaultItemHeight()}px`;\n }\n\n calculateConnectedNodTop() {\n return `${this.getDefaultItemHeight() / 2}px`;\n }\n\n getDefaultItemHeight() {\n return this.listStyle === TqlSimpleListComponent.ENUM_STYLE.SMALL\n ? this.DEFAULT_ITEM__SMALL_HEIGHT\n : this.DEFAULT_ITEM_HEIGHT;\n }\n}\n\nexport namespace TqlSimpleListComponent {\n export enum ENUM_STYLE {\n NORMAL = 'normal',\n SMALL = 'small',\n }\n\n export enum ENUM_THEMES {\n DARK = 'dark',\n LIGHT = 'light',\n }\n\n export enum ENUM_HANDLER_POSITION {\n LEFT = 'left',\n RIGHT = 'right',\n }\n}\n","<!------RENDER------>\n<div class=\"simple-list-wrapper {{theme}}\"\n matRipple\n [class.draggable]=\"draggable\"\n [class.dragging]=\"dragging\"\n cdkDropList\n [cdkDropListSortingDisabled]=\"true\"\n [cdkDropListConnectedTo]=\"dropIds\"\n (cdkDropListDropped)=\"onDrop($event)\">\n\n <!--Template for each ITEM-->\n <ng-template #itemTemplate let-item=\"item\">\n <!-- if route or onclick-->\n <ng-template #routeOrClick>\n <ng-container\n *ngTemplateOutlet=\"item?.route?.length?itemRouteNavTemplate:itemOnClickNavTemplate; context: {item: item}\"></ng-container>\n </ng-template>\n\n <!-- if menu or other-->\n <ng-container\n *ngTemplateOutlet=\"item?.route?.length || item?.onClick ? routeOrClick:itemMenuNavTemplate; context: {item: item}\"></ng-container>\n\n </ng-template>\n\n <!--Template for ITEM-MENU-->\n\n <ng-template #itemMenuTemplate let-item=\"item\">\n <!--toggle menus-->\n <mat-menu #toggleMenus=\"matMenu\" class=\"menu-default min-w-200px\">\n <button mat-menu-item *ngFor=\"let child of item?.children\"\n [class.disabled-half]=\"child?.disabled\"\n (click)=\"child?.onClick()\">\n <div class=\"d-flex align-items-center \">\n <i *ngIf=\"child?.iconClassName\" class=\"{{ child?.iconClassName }}\"></i>\n <span class=\"got-14 font-weight-normal ml-2\">{{ child?.name }}</span>\n </div>\n </button>\n </mat-menu>\n <div\n class=\"d-flex item cursor-pointer align-items-center {{item?.className || ''}} {{inNavbar?navbarClass:''}}\"\n [class.small]=\"listStyle === ENUM_STYLE.SMALL\"\n style=\"{{itemStyle}}\"\n [class.disabled-half]=\"item?.disabled\"\n [class.border-bottom]=\"hasBorderBottom\"\n [matMenuTriggerFor]=\"toggleMenus\"\n >\n <ng-container\n *ngTemplateOutlet=\"optionTemplate;context:{options:collapsingIconPosition === ENUM_HANDLER_POSITION.LEFT?item?.optionsOnlyCollapse:[], item:item}\"></ng-container>\n <div [class.has-connected-lines]=\"hasConnectedLines\" class=\"w-100\">\n <ng-container *ngTemplateOutlet=\"linesTemplate;context:{item:item}\">\n </ng-container>\n <div class=\"d-flex flex-gap-2 align-items-center flex-grow-1 overflow-hidden\" >\n <ng-container *ngTemplateOutlet=\"iconTemplate;context:{item:item}\"></ng-container>\n <ng-container *ngTemplateOutlet=\"itemCustomNameTemplate;context:{item:item}\"></ng-container>\n <ng-container\n *ngTemplateOutlet=\"optionTemplate;context:{options:collapsingIconPosition === ENUM_HANDLER_POSITION.LEFT?item?.optionsWithoutCollapse:item?.options, item:item}\"></ng-container>\n </div>\n </div>\n </div>\n </ng-template>\n <ng-template #itemMenuNavTemplate let-item=\"item\">\n\n <!--not in navbar-->\n <ng-container *ngIf=\"!inNavbar\">\n <ng-container *ngTemplateOutlet=\"itemMenuTemplate; context: { item: item }\"></ng-container>\n </ng-container>\n\n <!--in navbar-->\n <ng-container *ngIf=\"inNavbar\">\n\n <!--in navbar-->\n <div class=\"hide-on-collapsed\">\n <ng-container *ngTemplateOutlet=\"itemMenuTemplate; context: { item: item }\"></ng-container>\n </div>\n <div class=\"show-on-collapsed\" [class.disabled-half]=\"item?.disabled\">\n <!--toggle menus-->\n <mat-menu #toggleMenus=\"matMenu\" class=\"menu-default min-w-200px\">\n <button mat-menu-item *ngFor=\"let child of item?.children\"\n [class.disabled-half]=\"child?.disabled\"\n (click)=\"child?.onClick()\">\n <div class=\"d-flex align-items-center \">\n <i *ngIf=\"child?.iconClassName\" class=\"{{ child?.iconClassName }}\"></i>\n <span class=\"got-14 font-weight-normal ml-2\">{{ child?.name }}</span>\n </div>\n </button>\n </mat-menu>\n <div class=\"d-flex align-items-center justify-content-center parent p-0 cursor-pointer item\"\n [matTooltip]=\"item?.name\"\n [matMenuTriggerFor]=\"toggleMenus\">\n <i class=\"{{item?.iconClassName || 'far fa-circle'}}\"></i>\n </div>\n </div>\n </ng-container>\n </ng-template>\n\n <!--Template for ITEM-ROUTE-->\n <ng-template #itemRouteTemplate let-item=\"item\">\n <div *ngVar=\"{activeClass:item?.activeClassName || activeClassName || 'active'} as vars\"\n class=\"d-flex item cursor-pointer align-items-center {{item?.className || ''}} {{inNavbar?navbarClass:''}}\"\n [class.small]=\"listStyle === ENUM_STYLE.SMALL\"\n style=\"{{itemStyle}}\"\n [routerLink]=\"item.route\"\n [routerLinkActive]=\"noActive?'': vars.activeClass\"\n [routerLinkActiveOptions]=\"item?.routerActiveOptions || {exact: false}\"\n [queryParams]=\"item?.routeQueryParams || {}\"\n [queryParamsHandling]=\"item?.queryParamsHandling || ''\"\n [class.disabled-half]=\"item?.disabled\"\n [class.border-bottom]=\"hasBorderBottom\"\n >\n <ng-container\n *ngTemplateOutlet=\"optionTemplate;context:{options:collapsingIconPosition === ENUM_HANDLER_POSITION.LEFT?item?.optionsOnlyCollapse:[], item:item}\"></ng-container>\n <div [class.has-connected-lines]=\"hasConnectedLines\" class=\"w-100\">\n <ng-container *ngTemplateOutlet=\"linesTemplate;context:{item:item}\">\n </ng-container>\n <div class=\"d-flex flex-gap-2 align-items-center flex-grow-1 overflow-hidden\" >\n <ng-container *ngTemplateOutlet=\"iconTemplate;context:{item:item}\"></ng-container>\n <ng-container *ngTemplateOutlet=\"itemCustomNameTemplate;context:{item:item}\"></ng-container>\n <ng-container\n *ngTemplateOutlet=\"optionTemplate;context:{options:collapsingIconPosition === ENUM_HANDLER_POSITION.LEFT?item?.optionsWithoutCollapse:item?.options, item:item}\"></ng-container>\n </div>\n </div>\n </div>\n </ng-template>\n <ng-template #itemRouteNavTemplate let-item=\"item\">\n <!--not in navbar-->\n <ng-container *ngIf=\"!inNavbar\">\n <ng-container *ngTemplateOutlet=\"itemRouteTemplate; context: { item: item }\"></ng-container>\n </ng-container>\n\n <!--in navbar-->\n <ng-container *ngIf=\"inNavbar\">\n\n <!--in navbar-->\n <div class=\"hide-on-collapsed\">\n <ng-container *ngTemplateOutlet=\"itemRouteTemplate; context: { item: item }\"></ng-container>\n </div>\n <div class=\"show-on-collapsed\" [class.disabled-half]=\"item?.disabled\">\n <div class=\"d-flex align-items-center justify-content-center parent p-0 cursor-pointer item\"\n\n [matTooltip]=\"item?.name\"\n [routerLink]=\"item.route\"\n [routerLinkActive]=\"noActive?'':(activeClassName?activeClassName:'active')\"\n [routerLinkActiveOptions]=\"item?.routerActiveOptions || {exact: false}\"\n [queryParams]=\"item?.routeQueryParams || {}\">\n <i class=\"{{item?.iconClassName || 'far fa-circle'}}\"></i>\n </div>\n </div>\n </ng-container>\n </ng-template>\n\n <!--Template for ITEM-ONCLICK-->\n <ng-template #itemOnClickTemplate let-item=\"item\">\n <div\n class=\"d-flex item cursor-pointer align-items-center {{item?.className || ''}} {{inNavbar?navbarClass:''}}\"\n [class.small]=\"listStyle === ENUM_STYLE.SMALL\"\n style=\"{{itemStyle}}\"\n (click)=\"item.onClick(item)\"\n [class.disabled-half]=\"item?.disabled\"\n [class.border-bottom]=\"hasBorderBottom\"\n [class.active]=\"item?.active\"\n cdkDrag\n [cdkDragData]=\"item\"\n (cdkDragMoved)=\"onDragMove()\"\n [cdkDragDisabled]=\"!draggable || (item?.disabled === true)\"\n (mouseenter)=\"dragHover(item)\" (mouseleave)=\"dragHoverEnd()\"\n (cdkDragStarted)=\"dragStart(item)\" (cdkDragReleased)=\"dragEnd()\"\n >\n <ng-container\n *ngTemplateOutlet=\"optionTemplate;context:{options:collapsingIconPosition === ENUM_HANDLER_POSITION.LEFT?item?.optionsOnlyCollapse:[], item:item}\"></ng-container>\n <div [class.has-connected-lines]=\"hasConnectedLines\" class=\"w-100\">\n <ng-container *ngTemplateOutlet=\"linesTemplate;context:{item:item}\">\n </ng-container>\n <div class=\"d-flex flex-gap-2 align-items-center flex-grow-1 overflow-hidden\" >\n <div class=\"draggable-icon\"\n *ngIf=\"draggable && dragHandlerPosition == ENUM_HANDLER_POSITION.LEFT\"\n matTooltip=\"Draggable\">\n <i class=\"icon fal fa-grip-lines-vertical\"></i>\n </div>\n\n <ng-container *ngTemplateOutlet=\"iconTemplate;context:{item:item}\"></ng-container>\n <ng-container *ngTemplateOutlet=\"itemCustomNameTemplate;context:{item:item}\"></ng-container>\n <div *cdkDragPreview\n class=\"ml-2 p-2 color-white tql-simple-list-drag-preview-wrapper d-flex flex-gap-3\">\n <div class=\"text-truncate flex-grow-1\" [title]=\"item?.name\">{{ item?.name }}</div>\n <i class=\"fal fa-grip-lines-vertical\"></i>\n </div>\n <ng-container\n *ngTemplateOutlet=\"optionTemplate;context:{options:collapsingIconPosition === ENUM_HANDLER_POSITION.LEFT?item?.optionsWithoutCollapse:item?.options}\"></ng-container>\n <div class=\"draggable-icon pr-3\"\n matTooltip=\"Draggable\"\n *ngIf=\"draggable && dragHandlerPosition == ENUM_HANDLER_POSITION.RIGHT\">\n <i class=\"icon fal fa-grip-lines-vertical\"></i>\n </div>\n </div>\n </div>\n </div>\n </ng-template>\n <ng-template #itemOnClickNavTemplate let-item=\"item\">\n <!--not in navbar-->\n <ng-container *ngIf=\"!inNavbar\">\n <ng-container *ngTemplateOutlet=\"itemOnClickTemplate; context: { item: item }\"></ng-container>\n </ng-container>\n\n <!--in navbar-->\n <ng-container *ngIf=\"inNavbar\">\n\n <!--in navbar-->\n <div class=\"hide-on-collapsed\">\n <ng-container *ngTemplateOutlet=\"itemOnClickTemplate; context: { item: item }\"></ng-container>\n </div>\n <div class=\"show-on-collapsed\" [class.disabled-half]=\"item?.disabled\">\n <div class=\"d-flex align-items-center justify-content-center parent p-0 cursor-pointer item\"\n [matTooltip]=\"item?.name\"\n (click)=\"item?.onClick()\">\n <i class=\"{{item?.iconClassName || 'far fa-circle'}}\"></i>\n </div>\n </div>\n </ng-container>\n </ng-template>\n\n <!--Template for ITEM_CUSTOM-NAME-->\n <ng-template #itemCustomNameTemplate let-item=\"item\">\n <div class=\"flex-grow-1 text-truncate {{item?.labelClassName || ''}}\"\n *ngVar=\"{template:nameTemplate || item?.template} as vars\">\n <ng-container *ngIf=\"vars?.template\">\n <ng-container\n *ngTemplateOutlet=\"vars?.template;context:{item:item}\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"!vars?.template\">\n {{ item?.name }}\n </ng-container>\n </div>\n </ng-template>\n\n <ng-container *ngFor=\"let item of items\">\n <!--loop-->\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: {item: item}\"></ng-container>\n </ng-container>\n</div>\n\n<!------TEMPLATE------>\n<!--Template for lines-->\n<ng-template #linesTemplate let-item=\"item\">\n <div class=\"connected-lines\" *ngIf=\"hasConnectedLines\"\n [style.top]=\"calculateConnectedLinesTop()\"\n [style.height]=\"calculateConnectedLinesHeight(item)\"></div>\n <div class=\"connected-nod\" *ngIf=\"hasConnectedLines && level > 0\"\n [style.top]=\"calculateConnectedNodTop()\"></div>\n</ng-template>\n<!--Template for ICON-->\n<ng-template #iconTemplate let-item=\"item\">\n <div class=\" d-flex align-items-center justify-content-center icon-wrapper m-auto\" *ngIf=\"item?.iconClassName\">\n <i class=\"icon {{item?.iconClassName}}\"></i>\n </div>\n</ng-template>\n\n<!--Template for OPTIONS-->\n<ng-template #optionTemplate let-options=\"options\" let-item=\"item\">\n <!-- <div class=\"d-flex align-items-center\">-->\n <!-- <button mat-icon-button *ngFor=\"let item of options\" class=\"{{item?.className || ''}}\"-->\n <!-- [matTooltip]=\"item?.name\"-->\n <!-- (click)=\"$event.stopPropagation();item?.onClick(item)\">-->\n <!-- <i class=\"{{item?.iconClassName}}\"></i>-->\n <!-- </button>-->\n <!-- -->\n <!-- </div>-->\n <div class=\"actions-group\">\n <tql-action-bar [list]=\"options\" [action]=\"moreAction\" *ngIf=\"options?.length\" [data]=\"item\"\n [listStyle]=\"listStyle\"></tql-action-bar>\n </div>\n</ng-template>\n\n\n","import {\n AfterViewInit,\n ApplicationRef,\n Directive,\n EmbeddedViewRef,\n EventEmitter,\n HostListener,\n Injector,\n Input,\n OnInit,\n Output,\n ViewContainerRef,\n} from '@angular/core';\nimport { TqlCollapseComponent } from '../../components/basic/tql-collapse/tql-collapse.component';\nimport _ from 'lodash';\nimport { BehaviorSubject, debounce, timer } from 'rxjs';\n\n@Directive({\n selector: '[tqlCollapse]',\n standalone: false,\n})\nexport class TqlCollapseDirective implements OnInit, AfterViewInit {\n @Input() name: string;\n @Input() label: string;\n @Input() labelClassName: string = '';\n @Input() collapsedClassName: string = '';\n @Input() hasLine: boolean = true;\n @Input() hasShadow: boolean = true;\n @Input() alwaysShowIcon: boolean = false;\n @Input() collapseTrigger: EventEmitter<boolean>;\n @Input() offset: number = 50;\n @Input() hideIconWhenCollapsed: boolean = false;\n @Input() hideIcon: boolean = false;\n @Input() direction: string = 'right';\n @Output() init: EventEmitter<any> = new EventEmitter();\n @Output() onChangeCollapse: EventEmitter<boolean> = new EventEmitter();\n private instance: TqlCollapseComponent | null = null;\n private parentDom: any;\n private _collapse: any = false;\n private _alwaysCollapse: any = false;\n\n @Input()\n set alwaysCollapsed(value: boolean) {\n this._alwaysCollapse = value;\n this.toggleCollapse(this._alwaysCollapse);\n }\n\n @Input()\n set initialCollapsed(value: boolean) {\n setTimeout(() => {\n this.toggleCollapse(value, false);\n });\n }\n\n private resize$: BehaviorSubject<number> = new BehaviorSubject<number>(0);\n\n @HostListener('window:resize', ['$event'])\n onResize(event) {\n const contentDOM = this.parentDom?.querySelector('.content');\n if (!!contentDOM) {\n // set overflow\n contentDOM.classList.add('overflow-hidden');\n this.resize$.next(new Date().getTime());\n }\n }\n\n constructor(\n private _ViewContainerRef: ViewContainerRef,\n private _ApplicationRef: ApplicationRef,\n private _Injector: Injector,\n ) {\n this.resize$.pipe(debounce(() => timer(500))).subscribe(() => {\n // console.log('resize');\n if (!this._collapse) {\n const contentDOM = this.parentDom?.querySelector('.content');\n if (!!contentDOM) {\n // set overflow\n contentDOM.classList.remove('overflow-hidden');\n }\n }\n\n this.checkMinHeight(true);\n });\n }\n\n ngOnInit() {\n this.addComponent();\n }\n\n ngAfterViewInit() {\n if (!!this.collapseTrigger) {\n this.collapseTrigger.subscribe((event) => {\n console.log('trigger', event);\n this.toggleCollapse(event);\n });\n }\n this.init.emit({\n toggleCollapse: (event) => {\n this.toggleCollapse(event);\n },\n });\n }\n\n /**\n * toggle collapse\n * @param status\n */\n toggleCollapse(status: boolean = false, hasAnimation: boolean = true) {\n if (!!this.parentDom) {\n if (hasAnimation) {\n this.parentDom.classList.add('animation');\n } else {\n this.parentDom.classList.remove('animation');\n }\n this.toggleCollapseEvent(status);\n }\n }\n\n private toggleCollapseEvent(status: boolean = false) {\n if (!!this.parentDom) {\n const collapsedClasses: string[] = _.split(this.collapsedClassName, ' ');\n const contentDOM = this.parentDom.querySelector('.content');\n\n if (!!contentDOM) {\n if (status || this._alwaysCollapse) {\n // set overflow\n contentDOM.classList.add('overflow-hidden');\n\n // collapse\n this.parentDom.classList.add('collapsed');\n _.map(collapsedClasses, (x) => (x ? this.parentDom.classList.add(x) : null));\n } else {\n // remove overflow\n setTimeout(() => {\n contentDOM.classList.remove('overflow-hidden');\n }, 500);\n\n // collapse\n this.parentDom.classList.remove('collapsed');\n _.map(collapsedClasses, (x) => (x ? this.parentDom.classList.remove(x) : null));\n }\n }\n }\n // emit\n this.onChangeCollapse.emit(status);\n\n // update instance's data\n this._collapse = status;\n this.updateInstance();\n\n // check min height for animation\n this.checkMinHeight();\n }\n\n private checkMinHeight(isReset: boolean = false) {\n if (!!this.parentDom) {\n // make sure not conflict\n if (isReset) {\n this.parentDom.style['min-width'] = null;\n this.parentDom.style['max-width'] = null;\n this.parentDom.style['height'] = null;\n this.parentDom.style['min-height'] = null;\n this.parentDom.style['max-height'] = null;\n }\n if (!this._collapse) {\n setTimeout(() => {\n if (this.parentDom.clientHeight > 0) {\n this.parentDom.style['min-height'] = this.parentDom.clientHeight + 'px';\n this.parentDom.style['height'] = this.parentDom.clientHeight + 'px';\n }\n }, 500);\n }\n }\n }\n\n /**\n * add dom\n */\n private addComponent() {\n if (!this.instance) {\n this.parentDom = this._ViewContainerRef.element.nativeElement;\n\n // === collapse ===\n // add collapse component\n const componentRef = this._ViewContainerRef.createComponent(TqlCollapseComponent, {\n injector: this._Injector,\n });\n this.instance = componentRef.instance as TqlCollapseComponent;\n this.updateInstance();\n\n // listen collapse action\n this.instance.event.subscribe((event: any) => {\n // console.log('instance', event);\n this.toggleCollapse(event);\n });\n\n // append dom to parent\n const childDom = (componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\n const divWrapper = document.createElement('div');\n divWrapper.classList.add('content');\n // divWrapper.classList.add('overflow-hidden');\n divWrapper.classList.add('w-100');\n divWrapper.classList.add('h-100');\n while (this.parentDom.childNodes.length > 0) {\n divWrapper.appendChild(this.parentDom.childNodes[0]);\n }\n // divWrapper.append(this.parentDom.childNodes);\n this.parentDom.appendChild(divWrapper);\n this.parentDom.appendChild(childDom);\n // console.log(collapseDom);\n // console.log(this.parentDom);\n\n // set position relative\n this.parentDom.classList.add('position-relative');\n this.parentDom.classList.add('tql-collapse-container');\n this.parentDom.classList.add('animation');\n\n // direction\n this.parentDom.classList.add(this.direction);\n\n // shadow\n if (this.hasShadow) this.parentDom.classList.add('mat-elevation-z2');\n\n // always show icon\n if (this.alwaysShowIcon) this.parentDom.classList.add('always-icon');\n\n // check min height for animation\n this.checkMinHeight();\n }\n }\n\n /**\n * update instance's data\n */\n private updateInstance() {\n if (this.instance) {\n this.instance.isCollapse = this._collapse;\n this.instance.hasLine = this.hasLine;\n this.instance.offset = this.offset;\n this.instance.hideIconWhenCollapsed = this.hideIconWhenCollapsed;\n this.instance.hideIcon = this.hideIcon || this._alwaysCollapse;\n this.instance.direction = this.direction;\n this.instance.name = this.name;\n this.instance.label = this.label;\n this.instance.labelClassName = this.labelClassName;\n this.instance.onDataChange();\n }\n }\n\n /**\n * clear dom\n */\n private clear() {\n if (this.instance) {\n this._ViewContainerRef.clear();\n this.instance = null;\n }\n }\n}\n","import {\n ApplicationRef,\n ComponentFactoryResolver,\n Directive,\n EmbeddedViewRef,\n Injector,\n Input,\n ViewContainerRef,\n} from '@angular/core';\nimport { TqlResizableComponent } from '../../components/basic/tql-resizable/tql-resizable.component';\n\n@Directive({\n selector: '[tqlResizable]',\n standalone: false,\n})\nexport class TqlResizableDirective {\n @Input() resizable: (string | TqlResizableComponent.ENUM_DIRECTIONS)[] = [\n TqlResizableComponent.ENUM_DIRECTIONS.RIGHT,\n ];\n instance: TqlResizableComponent | null;\n\n constructor(\n private _ViewContainerRef: ViewContainerRef,\n private _ApplicationRef: ApplicationRef,\n private _Injector: Injector,\n private _ComponentFactoryResolver: ComponentFactoryResolver,\n ) {\n setTimeout(() => {\n this.add();\n });\n }\n\n /**\n * add dom\n */\n add() {\n if (!this.instance) {\n const parentDom = this._ViewContainerRef.element.nativeElement;\n\n // === resizable ===\n // add resizable component\n const resizableComponentRef = this._ComponentFactoryResolver\n .resolveComponentFactory(TqlResizableComponent)\n .create(this._Injector);\n this.instance = resizableComponentRef.instance as TqlResizableComponent;\n this.instance.parentElement = this._ViewContainerRef.element;\n this.instance.directions = this.resizable;\n\n // add to appRef to make sure controller working\n this._ApplicationRef.attachView(resizableComponentRef.hostView);\n\n // append dom to parent\n const dom = (resizableComponentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\n // console.log(dom);\n // console.log(parentDom);\n // console.log(parentDom.innerHTML);\n parentDom.appendChild(dom);\n\n // set position relative\n parentDom.classList.add('position-relative');\n parentDom.classList.add('resizable-container');\n }\n }\n\n /**\n * clear dom\n */\n clear() {\n if (this.instance) {\n this._ViewContainerRef.clear();\n this.instance = null;\n }\n }\n}\n","import {Component, Input, OnInit} from '@angular/core';\nimport {IListItemOption} from '../../../constants/interface/i-list-item-option';\nimport _ from 'lodash';\nimport {ActionsConstant, ENUM_ACTION_KEYS} from '../../../constants/values/actions.constant';\nimport {IListItem} from '../../../constants/interface/i-list-item';\n\n@Component({\n selector: 'tql-action-drawer',\n standalone: false,\n templateUrl: './tql-action-drawer.component.html',\n styleUrls: ['./tql-action-drawer.component.scss']\n})\nexport class TqlActionDrawerComponent implements OnInit {\n /*in pixel*/\n @Input() width: number = 300;\n @Input() isResizable: boolean = false;\n\n _leftActions: IListItem[];\n @Input()\n set leftActions(v: IListItem[]) {\n this._leftActions = v;\n _.map(this._leftActions, x => {\n x.iconClassName += ' icon';\n });\n };\n\n _rightActions: IListItem[] = [];\n @Input()\n set rightActions(v: IListItem[]) {\n this._rightActions = v;\n _.map(this._rightActions, x => {\n x.iconClassName += ' icon';\n });\n };\n\n @Input() headingClass: string = '';\n\n moreAction: IListItemOption = _.cloneDeep(ActionsConstant[ENUM_ACTION_KEYS.MORE]);\n\n constructor() {\n this.moreAction.iconClassName += ' icon';\n this._leftActions = [\n // TqlActionDrawerComponent.ACTION_ICONS.REFRESH,\n // TqlActionDrawerComponent.ACTION_ICONS.SEARCH\n ];\n this._rightActions = [\n // TqlActionDrawerComponent.ACTION_ICONS.COLLAPSE_ALL,\n // TqlActionDrawerComponent.ACTION_ICONS.EXPAND_ALL\n ];\n }\n\n ngOnInit(): void {\n\n }\n\n triggerAction(item: IListItem) {\n if (!!item.onClick) {\n item.onClick();\n }\n }\n}\n\nexport namespace TqlActionDrawerComponent {\n export enum ENUM_ACTIONS {\n REFRESH = 'REFRESH',\n SEARCH = 'SEARCH',\n COLLAPSE_ALL = 'COLLAPSE_ALL',\n EXPAND_ALL = 'EXPAND_ALL'\n }\n\n export const ACTION_ICONS: { [key in TqlActionDrawerComponent.ENUM_ACTIONS]: IListItem } = {\n [TqlActionDrawerComponent.ENUM_ACTIONS.REFRESH]: {\n name: 'Refresh',\n iconClassName: 'fal fa-sync',\n onClick: () => {\n }\n },\n [TqlActionDrawerComponent.ENUM_ACTIONS.SEARCH]: {\n name: 'Search',\n iconClassName: 'fal fa-search',\n onClick: () => {\n }\n },\n [TqlActionDrawerComponent.ENUM_ACTIONS.COLLAPSE_ALL]: {\n name: 'Collapse All',\n iconClassName: 'fal fa-angle-double-up',\n onClick: () => {\n }\n },\n [TqlActionDrawerComponent.ENUM_ACTIONS.EXPAND_ALL]: {\n name: 'Expand All',\n iconClassName: 'fal fa-angle-double-down',\n onClick: () => {\n }\n },\n };\n}\n","<ng-container [ngSwitch]=\"isResizable\">\n <ng-container *ngSwitchCase=\"true\">\n <div class=\"tql-drawer-wrapper h-100 {{headingClass}}\" [style.width]=\"width+'px'\" tqlCollapse tqlResizable>\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"false\">\n <div class=\"tql-drawer-wrapper h-100 {{headingClass}}\" [style.width]=\"width+'px'\" tqlCollapse>\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n </div>\n </ng-container>\n</ng-container>\n<ng-template #contentTemplate>\n <div class=\" d-flex flex-column overflow-hidden h-100 w-100\">\n <div class=\"action-group d-flex\">\n <ng-container *ngFor=\"let item of _leftActions\">\n <ng-container *ngTemplateOutlet=\"itemTemplate; context:{item:item}\"></ng-container>\n </ng-container>\n <div class=\"flex-grow-1\"></div>\n <tql-action-bar [list]=\"_rightActions\" [notCompressMin]=\"2\" [action]=\"moreAction\"></tql-action-bar>\n </div>\n <div class=\"flex-grow-1 overflow-auto\">\n <ng-content></ng-content>\n </div>\n </div>\n</ng-template>\n<ng-template #itemTemplate let-item=\"item\">\n <ng-container *ngIf=\"item?.template; else noTemplate\">\n <ng-container *ngTemplateOutlet=\"item?.template; context:{item:item}\"></ng-container>\n </ng-container>\n <ng-template #noTemplate>\n <button mat-icon-button\n [class.disabled-half]=\"item?.disabled\"\n [matTooltip]=\"item?.name\" (click)=\"triggerAction(item)\">\n <i class=\"{{item?.iconClassName}}\"></i>\n </button>\n </ng-template>\n</ng-template>\n","import { Component, Input, OnInit, TemplateRef } from '@angular/core';\nimport { IListItem, IListItemOption } from '../../../constants/interface';\nimport _ from 'lodash';\nimport { MatMenu } from '@angular/material/menu';\n\n@Component({\n selector: 'tql-panel',\n standalone: false,\n templateUrl: './tql-panel.component.html',\n styleUrls: ['./tql-panel.component.scss'],\n})\nexport class TqlPanelComponent implements OnInit {\n @Input() panelTitle: string | null = null;\n @Input() panelTitleTemplate: TemplateRef<any>;\n @Input() data: IListItem = {};\n @Input() theme: TqlPanelComponent.THEMES = TqlPanelComponent.THEMES.NORMAL;\n @Input() style: TqlPanelComponent.STYLES = TqlPanelComponent.STYLES.NORMAL;\n @Input() headingClassName: string;\n @Input() contentClassName: string;\n @Input() hasBorder: boolean;\n @Input() hasFullScreen: boolean = false;\n @Input() hasCollapse: boolean = false;\n @Input() hasOverflowXAuto: boolean = true;\n @Input() hasOverflowYAuto: boolean = true;\n @Input() hasAction: boolean = true;\n @Input() isCollapsed: boolean = false;\n @Input() hintMenu: MatMenu;\n\n readonly THEMES: typeof TqlPanelComponent.THEMES = TqlPanelComponent.THEMES;\n readonly STYLES: typeof TqlPanelComponent.STYLES = TqlPanelComponent.STYLES;\n\n isFullScreen: boolean = false;\n\n constructor() {}\n\n ngOnInit(): void {}\n\n toggleFullScreen() {\n this.isFullScreen = !this.isFullScreen;\n }\n\n triggerAction(item: IListItemOption) {\n if (!!item.onClick) {\n item.onClick();\n }\n }\n\n toggleCollapse() {\n this.isCollapsed = !this.isCollapsed;\n }\n\n hasTitle() {\n return this.panelTitle !== null || !_.isEmpty(this.data) || !!this.panelTitleTemplate;\n }\n}\n\nexport namespace TqlPanelComponent {\n export enum THEMES {\n NORMAL = 'normal',\n BLACK = 'black',\n BLACK_BLUE = 'black-blue',\n }\n\n export enum STYLES {\n NORMAL = 'normal',\n SMALL = 'small',\n }\n\n export enum DEFAULT_OPTIONS_KEYS {\n FULL_SCREEN,\n }\n\n export const DEFAULT_OPTIONS = {\n [DEFAULT_OPTIONS_KEYS.FULL_SCREEN]: {\n name: '',\n iconClassName: '',\n },\n };\n}\n","<div class=\"tql-panel-wrapper h-100 {{style}} {{theme}}\"\n [class.full]=\"isFullScreen\"\n [class.no-title]=\"!hasTitle()\"\n [class.bordered]=\"hasBorder\">\n <div class=\"heading d-flex flex-gap-3 d-flex align-items-center {{headingClassName}}\"\n *ngIf=\"hasTitle()\">\n <div class=\"color-white text-truncate flex-grow-1 pl-3 {{data?.className}}\" [title]=\"panelTitle || data?.name\"\n *ngIf=\"!panelTitleTemplate; else titleTemplate\">\n {{panelTitle || data?.name}}\n </div>\n <ng-template #titleTemplate>\n <div class=\"flex-grow-1 overflow-hidden\">\n <ng-container *ngTemplateOutlet=\"panelTitleTemplate\"></ng-container>\n </div>\n </ng-template>\n <div class=\"d-flex align-items-center\" *ngIf=\"hasAction\">\n <ng-container *ngFor=\"let item of data?.options\">\n <button mat-icon-button\n *ngIf=\"!!item?.iconClassName; else regularBtn\"\n class=\"{{item?.className}}\"\n [class.disabled-half]=\"item.disabled\"\n [matTooltip]=\"item?.name\" (click)=\"triggerAction(item)\">\n <i class=\"{{item?.iconClassName}}\"></i>\n </button>\n <ng-template #regularBtn>\n <button mat-button\n class=\"{{item?.className}}\"\n [class.disabled-half]=\"item.disabled\"\n (click)=\"triggerAction(item)\">\n {{ item?.name }}\n </button>\n </ng-template>\n </ng-container>\n <button mat-icon-button *ngIf=\"hasCollapse\" (click)=\"toggleCollapse()\"\n [matTooltip]=\"!isFullScreen?'Expand':'Compress'\">\n <i class=\"fal text-white\"\n [class.fa-angle-down]=\"!isCollapsed\"\n [class.fa-angle-up]=\"isCollapsed\"></i>\n </button>\n <button mat-icon-button *ngIf=\"hintMenu\" [matMenuTriggerFor]=\"hintMenu\" matTooltip=\"Hint\">\n <i class=\"fas fa-info-circle text-white font-size-18px\"></i>\n </button>\n <button mat-icon-button *ngIf=\"hasFullScreen\" (click)=\"toggleFullScreen()\"\n [matTooltip]=\"!isFullScreen?'Expand':'Compress'\">\n <i class=\"fal text-white\"\n [class.fa-expand]=\"!isFullScreen\"\n [class.fa-compress]=\"isFullScreen\"></i>\n </button>\n </div>\n </div>\n <div class=\"content {{contentClassName}}\"\n [class.overflow-x-auto]=\"hasOverflowXAuto\"\n [class.overflow-y-auto]=\"hasOverflowYAuto\"\n *ngIf=\"!isCollapsed\">\n <ng-content></ng-content>\n </div>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { ActivatedRoute, NavigationEnd, Router } from '@angular/router';\nimport { filter, first } from 'rxjs/operators';\nimport { TqlUtilsService } from 'x-tql-service';\nimport { ENUM_ROUTER_KEYS, IBreadcrumb, IRouterData } from '../../../constants/interface';\nimport _ from 'lodash';\n\n@Component({\n selector: 'tql-breadcrumb',\n standalone: false,\n templateUrl: './tql-breadcrumb.component.html',\n styleUrls: ['./tql-breadcrumb.component.scss'],\n})\nexport class TqlBreadcrumbComponent implements OnInit {\n @Input() hasPrefix: boolean = false;\n @Input() noTranslate: boolean = true;\n breadcrumbList: IBreadcrumb[] = [];\n _selector;\n\n constructor(\n private _Router: Router,\n private _ActivatedRoute: ActivatedRoute, // , private _Store: Store\n ) {\n this._Router.events.pipe(filter((event) => event instanceof NavigationEnd)).subscribe(async () => {\n this.breadcrumbList = await this.createBreadcrumbs(this._ActivatedRoute.root);\n });\n }\n\n ngOnInit(): void {}\n\n /**\n * source\n * https://github.com/piotrkorlaga/demo-angular-breadcrumb/blob/master/src/app/breadcrumb/breadcrumb.component.ts\n * @param route\n * @param url\n * @param breadcrumbs\n * @returns {IBreadcrumb[]}\n */\n private async createBreadcrumbs(\n route: ActivatedRoute,\n url: string = '#',\n breadcrumbs: IBreadcrumb[] = [],\n ): Promise<IBreadcrumb[]> {\n const children: ActivatedRoute[] = route.children;\n\n if (!!children && children.length > 0) {\n for (const child of children) {\n const routeURL: string = child.snapshot.url.map((segment) => segment.path).join('/');\n if (routeURL !== '') {\n url += `/${routeURL}`;\n }\n\n const data: IRouterData = child.snapshot.data;\n if (!!data[ENUM_ROUTER_KEYS.BREADCRUMB]) {\n let label = data[ENUM_ROUTER_KEYS.BREADCRUMB] as string;\n if (data[ENUM_ROUTER_KEYS.BREADCRUMB]) {\n const params = TqlUtilsService.toArray(data[ENUM_ROUTER_KEYS.BREADCRUMB_PARAM]);\n // if (data[ENUM_ROUTER_KEYS.BREADCRUMB_STORE_SELECTOR]) {\n // const d = await Promise.all(\n // _.map(params, (x) => {\n // // TODO\n // return this._Store\n // .pipe(\n // select(data[ENUM_ROUTER_KEYS.BREADCRUMB_STORE_SELECTOR]),\n // filter((item) => !!item),\n // first(),\n // )\n // .toPromise();\n // }),\n // );\n // _.each(\n // d,\n // (item: any) =>\n // (label = data[ENUM_ROUTER_KEYS.BREADCRUMB_KEY]\n // ? item[data[ENUM_ROUTER_KEYS.BREADCRUMB_KEY]]\n // : item),\n // );\n // } else {\n _.map(params, (x) => {\n label = TqlUtilsService.replaceAll(label, `{${x}}`, child.snapshot.params[x]);\n });\n // }\n }\n breadcrumbs.push({ label: label, url });\n }\n\n return await this.createBreadcrumbs(child, url, breadcrumbs);\n }\n }\n\n return _.uniqBy(breadcrumbs, (x: any) => x.url);\n }\n\n goTo(url: string | undefined) {\n this._Router.navigateByUrl(url as string);\n }\n}\n","<div class=\"d-flex align-items-center flex-gap-3 breadcrumb-wrapper\">\n <div *ngIf=\"breadcrumbList && breadcrumbList.length && hasPrefix\"><i class=\"fal fa-long-arrow-right\"></i></div>\n <ng-container *ngFor=\"let breadcrumb of breadcrumbList; let $last = last;\">\n <div class=\"cursor-pointer\" [class.current]=\"$last\"\n [routerLink]=\"breadcrumb?.url.substring(1)\">\n <ng-container *ngIf=\"!noTranslate\">{{breadcrumb?.label | translate}}</ng-container>\n <ng-container *ngIf=\"noTranslate\">{{breadcrumb?.label}}</ng-container>\n </div>\n <div *ngIf=\"!$last\"><i class=\"fal fa-long-arrow-right\"></i></div>\n </ng-container>\n</div>\n","import {\n Directive,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n NgZone,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n PLATFORM_ID,\n SimpleChanges,\n} from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\n\n@Directive({\n selector: '[clickOutside]',\n standalone: false,\n})\nexport class TqlClickOutsideDirective implements OnInit, OnChanges, OnDestroy {\n @Input() clickOutsideEnabled: boolean = true;\n\n @Input() attachOutsideOnClick: boolean = false;\n @Input() delayClickOutsideInit: boolean = false;\n @Input() emitOnBlur: boolean = false;\n\n @Input() exclude: string = '';\n @Input() excludeBeforeClick: boolean = false;\n\n @Input() clickOutsideEvents: string = '';\n\n @Output() clickOutside: EventEmitter<Event> = new EventEmitter<Event>();\n\n private _nodesExcluded: Array<HTMLElement> = [];\n private _events: Array<string> = ['click'];\n\n constructor(private _el: ElementRef, private _ngZone: NgZone, @Inject(PLATFORM_ID) private platformId: Object) {\n this._initOnClickBody = this._initOnClickBody.bind(this);\n this._onClickBody = this._onClickBody.bind(this);\n this._onWindowBlur = this._onWindowBlur.bind(this);\n }\n\n ngOnInit() {\n if (!isPlatformBrowser(this.platformId)) {\n return;\n }\n\n this._init();\n }\n\n ngOnDestroy() {\n if (!isPlatformBrowser(this.platformId)) {\n return;\n }\n\n this._removeClickOutsideListener();\n this._removeAttachOutsideOnClickListener();\n this._removeWindowBlurListener();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (!isPlatformBrowser(this.platformId)) {\n return;\n }\n\n if (changes['attachOutsideOnClick'] || changes['exclude'] || changes['emitOnBlur']) {\n this._init();\n }\n }\n\n private _init() {\n if (this.clickOutsideEvents !== '') {\n this._events = this.clickOutsideEvents.split(',').map((e) => e.trim());\n }\n\n this._excludeCheck();\n\n if (this.attachOutsideOnClick) {\n this._initAttachOutsideOnClickListener();\n } else {\n this._initOnClickBody();\n }\n\n if (this.emitOnBlur) {\n this._initWindowBlurListener();\n }\n }\n\n private _initOnClickBody() {\n if (this.delayClickOutsideInit) {\n setTimeout(this._initClickOutsideListener.bind(this));\n } else {\n this._initClickOutsideListener();\n }\n }\n\n private _excludeCheck() {\n if (this.exclude) {\n try {\n const nodes = Array.from(document.querySelectorAll(this.exclude)) as Array<HTMLElement>;\n if (nodes) {\n this._nodesExcluded = nodes;\n }\n } catch (err) {\n console.error('[ng-click-outside] Check your exclude selector syntax.', err);\n }\n }\n }\n\n private _onClickBody(ev: Event) {\n if (!this.clickOutsideEnabled) {\n return;\n }\n\n if (this.excludeBeforeClick) {\n this._excludeCheck();\n }\n\n if (!this._el.nativeElement.contains(ev.target) && !this._shouldExclude(ev.target)) {\n this._emit(ev);\n\n if (this.attachOutsideOnClick) {\n this._removeClickOutsideListener();\n }\n }\n }\n\n /**\n * Resolves problem with outside click on iframe\n * @see https://github.com/arkon/ng-click-outside/issues/32\n */\n private _onWindowBlur(ev: Event) {\n setTimeout(() => {\n if (!document.hidden) {\n this._emit(ev);\n }\n });\n }\n\n private _emit(ev: Event) {\n if (!this.clickOutsideEnabled) {\n return;\n }\n\n this._ngZone.run(() => this.clickOutside.emit(ev));\n }\n\n private _shouldExclude(target): boolean {\n for (let excludedNode of this._nodesExcluded) {\n if (excludedNode.contains(target)) {\n return true;\n }\n }\n\n return false;\n }\n\n private _initClickOutsideListener() {\n this._ngZone.runOutsideAngular(() => {\n this._events.forEach((e) => document.addEventListener(e, this._onClickBody));\n });\n }\n\n private _removeClickOutsideListener() {\n this._ngZone.runOutsideAngular(() => {\n this._events.forEach((e) => document.removeEventListener(e, this._onClickBody));\n });\n }\n\n private _initAttachOutsideOnClickListener() {\n this._ngZone.runOutsideAngular(() => {\n this._events.forEach((e) => this._el.nativeElement.addEventListener(e, this._initOnClickBody));\n });\n }\n\n private _removeAttachOutsideOnClickListener() {\n this._ngZone.runOutsideAngular(() => {\n this._events.forEach((e) => this._el.nativeElement.removeEventListener(e, this._initOnClickBody));\n });\n }\n\n private _initWindowBlurListener() {\n this._ngZone.runOutsideAngular(() => {\n window.addEventListener('blur', this._onWindowBlur);\n });\n }\n\n private _removeWindowBlurListener() {\n this._ngZone.runOutsideAngular(() => {\n window.removeEventListener('blur', this._onWindowBlur);\n });\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ComponentFactoryResolver,\n EventEmitter,\n HostBinding,\n Input,\n OnInit,\n TemplateRef,\n Type,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport { Router } from '@angular/router';\nimport { NavbarPreview, TqlNavbarControllerService } from '../../../../controllers';\nimport { DefaultComponent } from 'x-tql-service';\nimport { v4 as uuidv4 } from 'uuid';\nimport { TqlResizableComponent } from '../../../basic/tql-resizable/tql-resizable.component';\n\n@Component({\n selector: 'tql-navbar',\n standalone: false,\n templateUrl: './tql-navbar.component.html',\n styleUrls: ['./tql-navbar.component.scss'],\n})\nexport class TqlNavbarComponent extends DefaultComponent implements OnInit, AfterViewInit {\n @HostBinding('class.overlapped') @Input() isOverlappedStyle: boolean = false;\n @ViewChild('tqlNavbar', { read: ViewContainerRef }) tqlNavbar: ViewContainerRef;\n @Input() hiddenWhenCollapse: boolean = false;\n @Input() resizable: boolean = false;\n @Input() initialCollapsed: boolean = false;\n @Input() expandWhenHover: boolean = false;\n @Input() IconOffsetTop: number = 50;\n\n readonly smallScreenSize: number = 768;\n\n resizableDirections: typeof TqlResizableComponent.ENUM_DIRECTIONS = TqlResizableComponent.ENUM_DIRECTIONS;\n\n _collapse = false;\n _alwaysCollapse: any = false;\n\n collapseEmit: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n navBarPreview: NavbarPreview | null;\n navBarPreviewTop: string;\n\n @Input()\n set collapse(value: boolean) {\n setTimeout(() => {\n this._collapse = value;\n }, 100);\n }\n\n @Input()\n set alwaysCollapsed(value: boolean) {\n setTimeout(() => {\n this._alwaysCollapse = value;\n }, 100);\n }\n\n id: string = uuidv4();\n\n constructor(\n private _Router: Router,\n private _ChangeDetectorRef: ChangeDetectorRef,\n private _ComponentFactoryResolver: ComponentFactoryResolver,\n private _TqlNavbarControllerService: TqlNavbarControllerService,\n ) {\n super();\n this.addSubscribes(\n this._TqlNavbarControllerService._Observable_Current_Preview_Item.subscribe((rs) => {\n this.renderPreview(rs);\n // console.log(rs);\n }),\n );\n }\n\n ngOnInit(): void {}\n\n ngAfterViewInit() {\n // trigger resize event to check if it needs to collapse\n window.dispatchEvent(new Event('resize'));\n }\n\n /**\n * render preview template\n * @param preview\n */\n renderPreview(preview: NavbarPreview | null = null) {\n if (!preview) {\n this.navBarPreview = preview;\n return;\n }\n let hasElement = false;\n let parent = preview?.element;\n // check if has element\n while (parent?.parentElement) {\n parent = parent?.parentElement;\n if (parent?.id === this.tqlNavbar.element.nativeElement.id) {\n hasElement = true;\n break;\n }\n }\n if (hasElement) {\n this.navBarPreview = preview;\n\n // calculate preview top\n const parentTop = this.tqlNavbar.element.nativeElement.getClientRects()[0].top;\n const childTop = this.navBarPreview?.element?.getClientRects()[0].top || 0;\n this.navBarPreviewTop = childTop - parentTop + 'px';\n }\n }\n\n /**\n * toggle left menu\n * @param status: open is expand else collapse\n */\n toggleCollapse(status: boolean = !this._collapse) {\n if (status !== this._collapse) {\n this.collapseEmit.emit(status);\n }\n }\n\n /**\n * resize screen\n * @param $event\n */\n onResize($event: any) {\n console.log('resize');\n if (!this.initialCollapsed) {\n this.toggleCollapse($event.target.innerWidth <= this.smallScreenSize);\n }\n }\n\n /**\n * for mobile and tablet, if click outside left menu then collapse it\n * @param e\n */\n onClickedOutside(e: Event | null = null) {\n if (window.innerWidth <= this.smallScreenSize) {\n console.log('click out');\n this.toggleCollapse(true);\n }\n }\n\n /**\n * for mobile and tablet, if click inside left menu then expand it\n */\n onClickedInside() {\n if (window.innerWidth <= this.smallScreenSize) {\n console.log('click in');\n this.toggleCollapse(false);\n }\n }\n\n /**\n * check collapse change\n * @param $event\n */\n onChangeCollapse($event: boolean) {\n this._collapse = $event;\n this.onClosePreview();\n }\n\n /**\n * when preview is closed, send null to preview item observable\n */\n onClosePreview() {\n if (!!this.navBarPreview) {\n this.navBarPreview = null;\n this._TqlNavbarControllerService._Observable_Current_Preview_Item.next(null);\n }\n }\n\n onHover(isHovered: boolean) {\n if (this.expandWhenHover) {\n this.toggleCollapse(!isHovered);\n }\n }\n}\n","<div #tqlNavbar\n [id]=\"id\"\n class=\"nav-layout-container d-flex flex-column tql-navbar-wrapper\"\n (window:resize)=\"onResize($event)\"\n (clickOutside)=\"onClickedOutside($event)\"\n (click)=\"onClickedInside();$event.stopPropagation();\"\n [hasLine]=\"false\"\n [collapseTrigger]=\"collapseEmit\"\n [hideIconWhenCollapsed]=\"true\"\n (onChangeCollapse)=\"onChangeCollapse($event)\"\n [offset]=\"IconOffsetTop\"\n [alwaysCollapsed]=\"_alwaysCollapse\"\n [initialCollapsed]=\"initialCollapsed\"\n [hideIcon]=\"expandWhenHover\"\n (mouseenter)=\"onHover(true)\" (mouseleave)=\"onHover(false)\"\n tqlCollapse>\n\n <div class=\"preview-wrapper mat-elevation-z8\" [style.top]=\"navBarPreviewTop\" (clickOutside)=\"onClosePreview()\">\n <ng-container [ngTemplateOutlet]=\"navBarPreview.template\" *ngIf=\"navBarPreview\"></ng-container>\n </div>\n\n <div class=\"flex-grow-1 w-100 h-100 overflow-hidden\" *ngIf=\"!(_collapse && hiddenWhenCollapse)\">\n <ng-content></ng-content>\n </div>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'tql-navbar-logo',\n standalone: false,\n templateUrl: './tql-navbar-logo.component.html',\n styleUrls: ['./tql-navbar-logo.component.scss'],\n})\nexport class TqlNavbarLogoComponent implements OnInit {\n @Input() logo: string;\n @Input() logoRoute: string[];\n @Input() collapseLogo: string;\n @Input() width: string;\n @Input() height: string;\n\n constructor() {}\n\n ngOnInit(): void {}\n}\n","<div [routerLink]=\"logoRoute\" class=\"w-100 logo d-flex align-items-center side-padding cursor-pointer\">\n <img class=\"logo collapse-hide\" [style.width]=\"width\" [style.height]=\"height\" [src]=\"logo\" alt=\"Atomiton Icon\"/>\n <img class=\"logo collapse-show\" [style.width]=\"width\" [style.height]=\"height\" [src]=\"collapseLogo\" alt=\"Atomiton Icon\"/>\n</div>\n","import {Component, Input, OnInit} from '@angular/core';\nimport {IListItem, IListItemOption} from '../../../../constants/interface';\n\n@Component({\n selector: 'tql-navbar-title',\n standalone: false,\n templateUrl: './tql-navbar-title.component.html',\n styleUrls: ['./tql-navbar-title.component.scss']\n})\nexport class TqlNavbarTitleComponent implements OnInit {\n private _title: IListItem;\n private _options: IListItemOption[];\n\n @Input()\n set data(v: IListItem) {\n this._title = v;\n this._options = v.options || [];\n console.log(this.options);\n };\n\n get title() {\n return this._title;\n }\n\n get options(): IListItemOption[] {\n return this._options;\n }\n\n constructor() {\n }\n\n ngOnInit(): void {\n }\n\n onClick() {\n if (this.title.onClick) {\n this.title.onClick();\n }\n }\n}\n","<div class=\"title-group d-flex flex-gap-2 side-padding pt-1 pb-2 align-items-center\"\n *ngIf=\"title\">\n <div class=\"title text-truncate font-weight-light collapse-hide cursor-pointer {{title?.className}}\"\n [routerLink]=\"title?.route\"\n [title]=\"title?.name\">{{title?.name}}</div>\n <div class=\"flex-grow-1 d-flex justify-content-end\">\n <ng-container *ngIf=\"title?.onClick; else optionTemplate\">\n <ng-container *ngTemplateOutlet=\"onCLickTemplate\"></ng-container>\n </ng-container>\n </div>\n</div>\n<!-- on-click template-->\n<ng-template #onCLickTemplate>\n <div class=\"settings cursor-pointer\" (click)=\"onClick()\"\n [class.disabled-half]=\"!title?.onClick || title.disabled\">\n <i class=\"icon {{title?.iconClassName}}\"></i>\n </div>\n</ng-template>\n<!-- option template-->\n<ng-template #optionTemplate>\n <div class=\"settings cursor-pointer\" [matMenuTriggerFor]=\"menu\"\n [class.disabled-half]=\"title.disabled\">\n <i class=\"icon {{title?.iconClassName}}\"></i>\n </div>\n <mat-menu #menu=\"matMenu\" backdropClass=\"mat-menu-default\">\n <button mat-menu-item *ngFor=\"let item of options\"\n [disabled]=\"item?.disabled\"\n [class.disabled-half]=\" item?.disabled\">\n <div class=\"d-flex flex-gap-2\"\n [routerLink]=\"item?.route\">\n <i *ngIf=\"item?.iconClassName\" class=\"{{item?.iconClassName}}\"></i>\n <div class=\"color-soft-blue text-truncate\"\n [title]=\"item?.name\">\n {{item?.name}}\n </div>\n </div>\n </button>\n </mat-menu>\n</ng-template>\n","import {Directive, ViewContainerRef} from '@angular/core';\n\n@Directive({\n selector: '[libTqlDynamicComponentHost]',\n standalone: false,\n})\nexport class TqlDynamicComponentHostDirective {\n\n constructor(public _ViewContainerRef: ViewContainerRef) {\n }\n\n}\n","import { Directive, ElementRef, HostListener, Input } from '@angular/core';\n\n@Directive({\n selector: '[tql-hover-class]',\n standalone: false,\n})\nexport class TqlHoverClassDirective {\n constructor(public elementRef: ElementRef) {}\n\n @Input('tql-hover-class') hoverClass: any;\n\n @HostListener('mouseenter') onMouseEnter() {\n this.elementRef.nativeElement.classList.add(this.hoverClass);\n }\n\n @HostListener('mouseleave') onMouseLeave() {\n this.elementRef.nativeElement.classList.remove(this.hoverClass);\n }\n}\n","import {\n ApplicationRef,\n Directive,\n EmbeddedViewRef,\n EventEmitter,\n Injector,\n Input,\n Output,\n ViewContainerRef,\n} from '@angular/core';\nimport { BehaviorSubject, debounce, timer } from 'rxjs';\nimport { TqlTableFilterWidgetComponent } from '../../components/basic/tql-table-filter-widget/tql-table-filter-widget.component';\nimport _ from 'lodash';\nimport { DefaultComponent, TqlTableControllerService } from 'x-tql-service';\nimport { v4 as uuidv4 } from 'uuid';\n\n@Directive({\n selector: '[tqlTableFilterWidget]',\n standalone: false,\n})\nexport class TqlTableFilterWidgetDirective extends DefaultComponent {\n @Input() emptyLabel: string = '';\n @Input() singleSort: boolean = true;\n @Input() hasSort: boolean = true;\n @Input() defaultSort: TqlTableFilterWidgetComponent.ENUM_SORT_DIRECTION =\n TqlTableFilterWidgetComponent.ENUM_SORT_DIRECTION.RD;\n\n /**\n *\n * @type {any}\n */\n _filter: { [key: string]: TqlTableFilterWidgetComponent.IFilter | any };\n @Input()\n set filter(v: any) {\n // console.log('new filter');\n this._filter = v || {};\n // console.log(this._filter);\n if (_.isUndefined(this._filter['_id'])) {\n this._filter['_id'] = uuidv4();\n this._TqlTableControllerService.generateFilter(this._filter['_id']);\n if (!!this._TqlTableControllerService.getFilter(this._filter['_id'])) {\n this.addSubscribes(\n this._TqlTableControllerService.getFilter(this._filter['_id'])?.onUpdate$?.subscribe((x) => {\n // console.log(x);\n this._TqlTableControllerService.getFilter(this._filter['_id'])?.onUpdateUI$?.next(x);\n // this.updateFilterData();\n }),\n );\n }\n }\n setTimeout(() => {\n if (this._filterKeys) {\n if (!this.labelKey) {\n this.labelKey = _.join(this._filterKeys, '.');\n }\n }\n this.updateInstance$.next(new Date().getTime());\n }, 100);\n }\n\n @Output() filterChange: EventEmitter<TqlTableFilterWidgetComponent.IFilter> =\n new EventEmitter<TqlTableFilterWidgetComponent.IFilter>();\n\n private _filterKeys: string[] = [];\n\n @Input() set filterKey(v: string) {\n this._filterKeys = _.split(v, '.');\n }\n\n get filterKey() {\n return _.join(this._filterKeys, '.');\n }\n\n // get filterKey(): string[] {\n // return this._filterKey;\n // }\n\n @Input() iconClassName: string;\n\n @Input() labelKey: string;\n // TODO\n // @Input() valueKey: string;\n\n /**\n *\n * @param v\n */\n private _data: any[] = [];\n @Input()\n set data(v: any[]) {\n this._data = v;\n this.updateInstance$.next(new Date().getTime());\n }\n\n @Input() filterChanged$: BehaviorSubject<any> = new BehaviorSubject<any>(null);\n\n /**\n * filter value, if exist, it will replace keys from data\n * @param v\n */\n private _filterValues: any[] = [];\n @Input()\n set filterValues(v: any[]) {\n this._filterValues = v;\n this.updateInstance$.next(new Date().getTime());\n }\n\n private instance: TqlTableFilterWidgetComponent | null = null;\n private parentDom: any;\n\n updateInstance$: BehaviorSubject<number> = new BehaviorSubject<number>(0);\n\n constructor(\n private _ViewContainerRef: ViewContainerRef,\n private _ApplicationRef: ApplicationRef,\n private _Injector: Injector,\n private _TqlTableControllerService: TqlTableControllerService,\n ) {\n super();\n }\n\n ngOnInit() {\n this.addSubscribes(\n this.updateInstance$.pipe(debounce(() => timer(500))).subscribe((_) => {\n this.updateInstance();\n }),\n this.filterChanged$.subscribe((rs) => {\n if (rs) {\n // disable to prevent default sort loop, not sure if this line needs for?\n // this.updateInstance$.next(new Date().getTime());\n }\n }),\n );\n this.addComponent();\n }\n\n private addComponent() {\n if (!this.instance) {\n this.parentDom = this._ViewContainerRef.element.nativeElement;\n\n // === collapse ===\n // add collapse component\n const componentRef = this._ViewContainerRef.createComponent(TqlTableFilterWidgetComponent, {\n injector: this._Injector,\n });\n this.instance = componentRef.instance as TqlTableFilterWidgetComponent;\n this.updateInstance$.next(new Date().getTime());\n\n // listen event\n this.instance.event.subscribe(($event: any) => {\n // console.log('instance', $event);\n this.eventChanged($event);\n });\n\n // // append dom to parent\n const childDom = (componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\n const divParentWrapper = document.createElement('div');\n divParentWrapper.classList.add('content');\n divParentWrapper.classList.add('d-flex');\n divParentWrapper.classList.add('align-items-center');\n\n const div1Wrapper = document.createElement('div');\n div1Wrapper.classList.add('flex-grow-1');\n\n while (this.parentDom.childNodes.length > 0) {\n div1Wrapper.appendChild(this.parentDom.childNodes[0]);\n }\n\n const div2Wrapper = document.createElement('div');\n div2Wrapper.appendChild(childDom);\n\n //\n divParentWrapper.appendChild(div1Wrapper);\n divParentWrapper.appendChild(div2Wrapper);\n this.parentDom.appendChild(divParentWrapper);\n\n //\n this.parentDom.classList.add('tql-table-filter-widget-wrapper');\n this.parentDom.classList.add('pr-0');\n }\n }\n\n private updateInstance() {\n if (this.instance && this._data?.length) {\n // filter data\n let filteredData = _.cloneDeep(this._data);\n // TODO tmp disable\n // _.map(this.filterChanged$?.value || {}, (x, k) => {\n // if (!['control', '_id', 'data', this.filterKey].includes(k)) {\n // filteredData = _.filter(\n // filteredData,\n // (y) => !!_.find(x?.data, (z) => z?.value.includes(_.get(y, x?.key))),\n // );\n // }\n // });\n\n // generate data list\n\n let list: { label: any; value: any }[] = [];\n if (this._filterValues?.length) {\n // use filter values\n list = _.map(this._filterValues, (x) => ({ label: x, value: x }));\n } else {\n list = _.map(filteredData, (x) => ({\n label: _.get(x, this.labelKey),\n value: _.get(x, this.filterKey),\n }));\n }\n\n this.instance.hasSort = this.hasSort;\n // this.instance.list = _.uniqBy(list, (x) => x.label);\n this.instance.list = _.map(\n _.groupBy(list, (x) => {\n return x?.label === null || x?.label === undefined ? null : x?.label;\n }),\n (x, k) => ({\n label: k === 'null' || k === 'undefined' ? null : k,\n value: _.uniq(_.map(x, (y) => y?.value)),\n }),\n );\n\n this.instance.filterKey = this.filterKey;\n this.instance.filter = this._filter;\n if (!!this.iconClassName) this.instance.iconClassName = this.iconClassName;\n\n // reset\n // if (!!this._filter && _.isUndefined(_.get(this._filter, this.filterKey))) {\n // this.instance.reset();\n // }\n\n // default sort\n setTimeout(() => {\n // if (this.defaultSort !== TqlTableFilterWidgetComponent.ENUM_SORT_DIRECTION.RD) {\n // this?.instance?.toggleSort(this.defaultSort);\n // }\n this?.instance?.checkFilter();\n\n // empty label\n if (this.instance) {\n this.instance.emptyLabel = this.emptyLabel;\n }\n }, 100);\n\n this.instance.onDataChange();\n }\n }\n\n private eventChanged($event) {\n if (this.singleSort) {\n // single sort\n _.forEach(this._filter, (x) => {\n if (x?.sort && x?.key !== $event?.key) {\n x.sort = TqlTableFilterWidgetComponent.ENUM_SORT_DIRECTION.RD;\n x?.control?.resetSort();\n }\n });\n }\n this._filter[$event?.key] = $event;\n this._filter['data'] = this.onFilterData(this._filter);\n\n this.filterChange.emit(this._filter);\n this.filterChanged$.next({\n ...this._filter,\n control: {\n triggerFilter: () => {\n this._TqlTableControllerService\n .getFilter(this._filter['_id'])\n ?.onUpdate$?.next(new Date().getTime());\n },\n },\n });\n }\n\n private onFilterData(filters: any) {\n let filterData = [...this._data];\n filters = _.cloneDeep(filters);\n delete filters['_id'];\n delete filters['data'];\n // sort\n const sorts: any = _.filter(\n _.map(filters, (x, key) => ({\n key: key,\n sort: x?.sort,\n })),\n (x) => x.sort !== TqlTableFilterWidgetComponent.ENUM_SORT_DIRECTION.RD,\n );\n filterData = _.orderBy(\n filterData,\n _.map(sorts, (x) => x.key),\n _.map(sorts, (x) => x.sort),\n );\n\n // filters\n _.map(filters, (filter) => {\n filterData = _.filter(\n filterData,\n (x) => !!_.find(filter?.data, (y) => y?.value.includes(_.get(x, filter?.key))),\n );\n });\n\n return filterData;\n }\n\n // updateFilterData() {\n // console.log(this.filter);\n // console.log(this.onFilterData(this._filter));\n // }\n}\n","export class TqlResizedEvent {\n public newRect: DOMRectReadOnly;\n public oldRect?: DOMRectReadOnly;\n public isFirst: boolean;\n\n public constructor(newRect: DOMRectReadOnly, oldRect: DOMRectReadOnly | undefined) {\n this.newRect = newRect;\n this.oldRect = oldRect;\n this.isFirst = oldRect == null;\n }\n}\n","/*\n * Credit to\n * https://github.com/vdolek/angular-resize-event\n * */\nimport { Directive, ElementRef, EventEmitter, NgZone, OnDestroy, OnInit, Output } from '@angular/core';\nimport { TqlResizedEvent } from './tql-resized.event';\nimport { DefaultComponent } from 'x-tql-service';\n\n@Directive({\n selector: '[tqlResized]',\n standalone: false,\n})\nexport class TqlResizedDirective extends DefaultComponent implements OnInit, OnDestroy {\n private observer: ResizeObserver;\n private oldRect?: DOMRectReadOnly;\n\n @Output()\n public readonly resized;\n\n public constructor(private readonly element: ElementRef, private readonly zone: NgZone) {\n super();\n this.resized = new EventEmitter<TqlResizedEvent>();\n this.observer = new ResizeObserver((entries) => this.zone.run(() => this.observe(entries)));\n }\n\n public ngOnInit(): void {\n this.observer.observe(this.element.nativeElement);\n }\n\n public override ngOnDestroy(): void {\n super.ngOnDestroy();\n this.observer.disconnect();\n }\n\n private observe(entries: ResizeObserverEntry[]): void {\n const domSize = entries[0];\n const resizedEvent = new TqlResizedEvent(domSize.contentRect, this.oldRect);\n this.oldRect = domSize.contentRect;\n this.resized.emit(resizedEvent);\n }\n}\n","import {Component, Input, OnInit} from '@angular/core';\nimport {IListItem} from '../../../constants/interface';\n\n@Component({\n selector: 'tql-simple-card',\n standalone: false,\n templateUrl: './tql-simple-card.component.html',\n styleUrls: ['./tql-simple-card.component.scss']\n})\nexport class TqlSimpleCardComponent implements OnInit {\n @Input() item: IListItem;\n @Input() class: string;\n\n constructor() {\n }\n\n ngOnInit(): void {\n }\n\n}\n","<div class=\"card-simple-wrapper d-flex flex-column {{class}}\">\n <div class=\"d-flex justify-content-end\">\n <ng-container *ngTemplateOutlet=\"moreOptionTemplate;context:{array:item?.children}\">\n </ng-container>\n </div>\n <div class=\"d-flex flex-column align-items-center flex-grow-1\">\n <i class=\"{{ item?.iconClassName }} font-size-36px primary-icon-theme mb-15px\"></i>\n <div class=\"font-size-20px text-white mb-10px text-center text-truncate w-100\">{{ item?.name }}</div>\n <div class=\"color-soft-blue text-center mb-20px flex-grow-1\">{{ item?.description }}</div>\n <ng-container *ngIf=\"item.route\">\n <a mat-button class=\"w-100 {{ item?.className }}\"\n [routerLink]=\"item.route\"\n [class.disabled-half]=\"item?.disabled\">\n <span class=\"font-weight-medium text-white\">{{item?.actionName}}</span>\n </a>\n </ng-container>\n <ng-container *ngIf=\"item.onClick\">\n <a mat-button class=\"w-100 {{ item?.className }}\"\n (click)=\"item?.onClick()\"\n [class.disabled-half]=\"item?.disabled\">\n <span class=\"font-weight-medium text-white\">{{item?.actionName}}</span>\n </a>\n </ng-container>\n\n </div>\n</div>\n\n<ng-template #moreOptionTemplate let-array=\"array\">\n <button mat-icon-button class=\"mr-n3 mt-n2\"\n [class.disabled-half]=\"!array || !array.length\"\n [matMenuTriggerFor]=\"tqlConsoleMenu\">\n <i class=\"fal fa-ellipsis-v font-size-21px color-soft-blue\"></i>\n </button>\n <mat-menu #tqlConsoleMenu=\"matMenu\" class=\"menu-default\">\n <button mat-menu-item *ngFor=\"let item of array\"\n [routerLink]=\"item?.route\">\n <div class=\"d-flex align-items-center\">\n <i class=\"{{item?.iconClass}} font-size-18px\"></i>\n <span class=\" ml-2\">{{item?.label}}</span>\n </div>\n </button>\n </mat-menu>\n</ng-template>\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'tql-header',\n standalone: false,\n templateUrl: './tql-header.component.html',\n styleUrls: ['./tql-header.component.scss']\n})\nexport class TqlHeaderComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","<div></div>\n<ng-content></ng-content>\n","import { AfterViewInit, Component, Input, OnInit, TemplateRef, ViewChild } from '@angular/core';\nimport { IListItem } from '../../../constants';\nimport { NavbarPreview, TqlNavbarControllerService } from '../../../controllers';\nimport { DefaultComponent } from 'x-tql-service';\nimport { v4 as uuidv4 } from 'uuid';\n\n@Component({\n selector: 'tql-collapse-group',\n standalone: false,\n templateUrl: './tql-collapse-group.component.html',\n styleUrls: ['./tql-collapse-group.component.scss'],\n})\nexport class TqlCollapseGroupComponent extends DefaultComponent implements OnInit, AfterViewInit {\n @ViewChild('contentTemplate') contentTemplate: TemplateRef<any>;\n @Input() headingClassName: string;\n @Input() data: IListItem;\n @Input() inNavbar: boolean = false;\n @Input() navbarClass: string = 'pl-0 pr-15px pb-0 pl-30px';\n\n /**\n *\n * @type {boolean}\n */\n isCollapse = false;\n\n navBarPreview: NavbarPreview | null;\n showNavBarPreview: NavbarPreview | null;\n\n id: string = uuidv4();\n\n constructor(private _TqlNavbarControllerService: TqlNavbarControllerService) {\n super();\n this.addSubscribes(\n this._TqlNavbarControllerService._Observable_Current_Preview_Item.subscribe((rs) => {\n // console.log(rs);\n if (!rs || rs?.id !== this.id) {\n this.showNavBarPreview = this.navBarPreview;\n } else {\n this.showNavBarPreview = null;\n }\n }),\n );\n }\n\n ngOnInit(): void {}\n\n ngAfterViewInit() {\n // console.log(this.contentTemplate);\n // TODO\n setTimeout(() => {\n this.navBarPreview = {\n id: this.id,\n template: this.contentTemplate,\n element: this.contentTemplate.elementRef.nativeElement,\n };\n this.showNavBarPreview = this.navBarPreview;\n });\n }\n\n onShowContent($event: MouseEvent) {\n if (this.inNavbar) {\n if (this.navBarPreview) {\n this.navBarPreview.element = ($event.target as Element)?.parentElement as Element;\n }\n this._TqlNavbarControllerService._Observable_Current_Preview_Item.next(this.navBarPreview);\n }\n }\n}\n","<!--not in navbar-->\n<ng-container *ngIf=\"!inNavbar\">\n <ng-container [ngTemplateOutlet]=\"showNavBarPreview.template\" *ngIf=\"showNavBarPreview\"></ng-container>\n</ng-container>\n<!--in navbar-->\n<ng-container *ngIf=\"inNavbar\">\n <div class=\"hide-on-collapsed\">\n <ng-container [ngTemplateOutlet]=\"showNavBarPreview.template\" *ngIf=\"showNavBarPreview\"></ng-container>\n </div>\n <div class=\"show-on-collapsed\">\n <div class=\"d-flex align-items-center justify-content-center h-40px parent p-0 cursor-pointer\" matRipple\n [matTooltip]=\"data?.name\"\n (click)=\"onShowContent($event)\">\n <i class=\"{{data?.iconClassName || 'far fa-circle'}}\"></i>\n <div class=\"d-flex has-group-hint align-items-center\">\n <i class=\"fal fa-angle-right font-size-12px \"></i>\n </div>\n </div>\n </div>\n</ng-container>\n<ng-template #contentTemplate>\n <div class=\"tql-collapse-group-wrapper\" *ngIf=\"data\">\n <div\n class=\"d-flex flex-gap-3 align-items-center justify-content-center cursor-pointer parent {{headingClassName}} {{inNavbar?navbarClass:''}}\"\n matRipple\n (click)=\"isCollapse = !isCollapse\">\n <ng-container *ngIf=\"data?.template; else noTemplate\">\n <ng-container *ngTemplateOutlet=\"data?.template\"></ng-container>\n </ng-container>\n <ng-template #noTemplate>\n <div class=\"d-flex align-items-center overflow-hidden\">\n <div class=\"parent-icon\"><i class=\"{{data?.iconClassName}}\"></i></div>\n <div class=\"title flex-shrink-1 flex-grow-1 flex-basis-0 text-truncate {{data?.className}}\"\n [title]=\"data?.name\">{{data?.name}}</div>\n </div>\n <div class=\"flex-grow-1\"></div>\n <div class=\"px-3\">\n <i class=\"fal \" [class.fa-angle-down]=\"!isCollapse\" [class.fa-angle-up]=\"isCollapse\"></i>\n </div>\n </ng-template>\n </div>\n\n <div [class.collapsed]=\"isCollapse\" class=\"d-flex flex-column children-group\">\n <ng-content></ng-content>\n </div>\n </div>\n</ng-template>\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'lib-tql-highlight-list',\n standalone: false,\n templateUrl: './tql-highlight-list.component.html',\n styleUrls: ['./tql-highlight-list.component.scss']\n})\nexport class TqlHighlightListComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","<p>tql-highlight-list works!</p>\n","import {Component, EventEmitter, Input, OnInit, Output} from '@angular/core';\nimport {IListItem} from '../../../constants';\n\n@Component({\n selector: 'tql-status-list',\n standalone: false,\n templateUrl: './tql-status-list.component.html',\n styleUrls: ['./tql-status-list.component.scss']\n})\nexport class TqlStatusListComponent implements OnInit {\n @Input() items: IListItem[];\n @Output() onChange: EventEmitter<IListItem> = new EventEmitter<IListItem>();\n selectedItem: IListItem;\n\n constructor() {\n }\n\n ngOnInit(): void {\n }\n\n onSelect(item: IListItem) {\n this.selectedItem = item;\n this.onChange.emit(this.selectedItem);\n }\n}\n","<div class=\"status-list-wrapper\">\n <ng-container *ngFor=\"let item of items\">\n <ng-container\n *ngIf=\"item?.route; then routerLinkList else defaultList\"></ng-container>\n <ng-template #routerLinkList>\n <div class=\"d-flex side-padding item cursor-pointer align-items-center\"\n matRipple\n [routerLink]=\"item?.route\"\n [routerLinkActive]=\"'selected'\">\n <div class=\"d-flex align-items-center justify-content-center selected-icon\"><i\n class=\" fas fa-circle font-size-7px\"></i></div>\n <div class=\"text-truncate\">{{item?.name}}</div>\n <div class=\"flex-grow-1\"></div>\n <div class=\"status-icon px-3 font-size-8px\">\n <i class=\"fal fa-circle\"></i>\n </div>\n </div>\n </ng-template>\n <ng-template #defaultList>\n <div class=\"d-flex side-padding item cursor-pointer align-items-center\"\n matRipple\n [class.selected]=\"selectedItem === item\"\n (click)=\"onSelect(item)\">\n <div class=\"d-flex align-items-center justify-content-center selected-icon\"><i\n class=\" fas fa-circle font-size-7px\"></i></div>\n <div class=\"text-truncate\">{{item?.name}}</div>\n <div class=\"flex-grow-1\"></div>\n <div class=\"status-icon px-3 font-size-8px\">\n <i class=\"fal fa-circle\"></i>\n </div>\n </div>\n </ng-template>\n </ng-container>\n</div>\n","import { AfterViewInit, Component, Directive, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { NestedTreeControl } from '@angular/cdk/tree';\nimport { MatTreeNestedDataSource } from '@angular/material/tree';\nimport { Router } from '@angular/router';\nimport _ from 'lodash';\nimport { IListItem, IListItemOption } from '../../../constants/interface';\nimport { ActionsConstant, ENUM_ACTION_KEYS } from '../../../constants/values/actions.constant';\nimport { MicsConstant } from '../../../constants';\nimport { BehaviorSubject, skipWhile, Subject } from 'rxjs';\nimport { first } from 'rxjs/operators';\nimport { CdkDragDrop } from '@angular/cdk/drag-drop';\n\n@Directive({\n standalone: false,\n})\nexport class TqlTreeCore implements OnInit, AfterViewInit {\n @Output() init: EventEmitter<NestedTreeControl<IListItem>> = new EventEmitter<NestedTreeControl<IListItem>>();\n\n @Input() id: string;\n\n /*===CUSTOM COLLAPSE ICON===*/\n @Input() collapseClassName: string = 'fal fa-angle-right';\n @Input() expandClassName: string = 'fal fa-angle-down';\n @Input() alwaysShowExpandCollapseIcon: boolean = false;\n\n /*===STYLE===*/\n @Input() styles: TqlTreeCore.STYLES[] = [];\n STYLES: typeof TqlTreeCore.STYLES = TqlTreeCore.STYLES;\n\n /*===DATA===*/\n treeControl = new NestedTreeControl<IListItem>((node) => node.children);\n dataSource = new MatTreeNestedDataSource<IListItem>();\n\n dropOnItem$ = new BehaviorSubject<IListItem | null>(null);\n\n /**\n * single level tree will not display collapse/expand icon\n * @type {boolean}\n */\n isSingleLevelTree: boolean = true;\n\n _data: IListItem[];\n @Input()\n set data(v: IListItem[]) {\n this._data = v;\n // check single level tree\n this.isSingleLevelTree = _.every(this._data, (x: IListItem) => !x.children || !x?.children.length);\n\n // render\n setTimeout(() => {\n this.render();\n });\n }\n\n get data() {\n return this._data;\n }\n\n // selectable\n _selectable: boolean = true;\n _readonly: boolean = false;\n\n @Input()\n set readonly(v: boolean) {\n this._readonly = v;\n this._selectable = !v;\n }\n\n get readonly() {\n return this._readonly;\n }\n\n @Input()\n set selectable(v: boolean) {\n this._selectable = v;\n }\n\n get selectable() {\n return this._selectable;\n }\n\n // select toggle\n @Input() isToggleSelect: boolean = false;\n\n /*===DRAG & DROP===*/\n @Input() draggable: boolean = false;\n @Input() dropIds: string[];\n dragging: boolean = false;\n\n // event\n @Output() onEventChange: EventEmitter<TqlTreeCore.IEvent> = new EventEmitter<TqlTreeCore.IEvent>();\n @Output() onSwapChange: EventEmitter<TqlTreeCore.ISwap> = new EventEmitter<TqlTreeCore.ISwap>();\n\n nodeList: IListItem[] = [];\n moreAction: IListItemOption = _.cloneDeep(ActionsConstant[ENUM_ACTION_KEYS.MORE]);\n\n readonly treeTypes: typeof TqlTreeCore.ENUM_TYPES = TqlTreeCore.ENUM_TYPES;\n treeType: TqlTreeCore.ENUM_TYPES = TqlTreeCore.ENUM_TYPES.DEFAULT;\n\n constructor(private _Router: Router) {\n this.moreAction.className += ' action show-on-hover small';\n this.moreAction.iconClassName += ' font-size-18px';\n }\n\n ngOnInit() {}\n\n ngAfterViewInit() {\n setTimeout(() => {\n // console.log('init');\n this.generateTreeEvent();\n this.init.emit(this.treeControl);\n });\n }\n\n private generateTreeEvent() {\n this.treeControl.expandAll = () => {\n _.map(this.nodeList, (x) => {\n this.treeControl.expand(x);\n x.isExpanded = true;\n });\n };\n }\n\n /**\n * render node\n */\n private render() {\n this.nodeList = [];\n this.massageNode(this._data);\n this.dataSource.data = this._data;\n this.treeControl.dataNodes = this._data;\n\n // generate expand/collapse node\n _.map(this.nodeList, (x) => {\n if (!x.isExpanded) {\n this.treeControl.collapse(x);\n } else {\n this.treeControl.expand(x);\n }\n });\n }\n\n /**\n * check if node has child\n * @param _\n * @param node\n * @returns {boolean}\n */\n hasChild = (_: number, node: IListItem) => !!node.children && node.children.length > 0;\n\n /**\n * on select node\n * @param node\n */\n onSelectNode(node: IListItem) {}\n\n /**\n * add level to each node\n * @param data\n * @param level\n * @param parent\n */\n massageNode(data: IListItem[], level: number = -1, parent: IListItem | null = null) {\n level++;\n _.map(data, (x: IListItem) => {\n x.level = level;\n this.nodeList.push(x);\n // set parent\n x.parent = parent;\n\n // actions\n _.map(x?.options, (y) => {\n y.className += ' action';\n if (y.showWhenHover) {\n y.className += ' show-on-hover';\n }\n });\n // set isExpanded\n if (_.isUndefined(x.isExpanded)) {\n x.isExpanded = false;\n }\n // set draggable\n if (this.draggable) {\n if (_.isUndefined(x.draggable)) {\n x.draggable = true;\n }\n }\n // selectable\n if (this.selectable) {\n if (_.isUndefined(x.selectable)) {\n x.selectable = true;\n }\n }\n if (x?.children?.length) {\n this.massageNode(x?.children, level, x);\n }\n if (!!x.onClick && x.onClick === MicsConstant.COLLAPSE_EXPAND_FUNCTION) {\n x.onClick = () => {\n this.toggleCollapseExpand(x);\n };\n }\n });\n }\n\n /*===DRAG & DROP EVENTS===*/\n drop($event: CdkDragDrop<any, any>) {\n // console.log('drop');\n // console.log(this.id);\n // console.log($event);\n if ($event.container.id !== $event.previousContainer.id) {\n // this.dropOnItem$.next($event?.item?.data);\n const releaseData = $event?.item?.data;\n let subscription = this.dropOnItem$\n .pipe(\n skipWhile((x) => !x),\n first(),\n )\n .subscribe((rs) => {\n // console.log(rs);\n if (rs && releaseData && rs !== releaseData) {\n this.onSwapChange.emit({\n source: releaseData,\n destination: rs,\n });\n }\n });\n setTimeout(() => {\n subscription.unsubscribe();\n this.dropOnItem$.next(null);\n }, 1000);\n }\n }\n\n dropOnItem($event: any) {\n // console.log('drop on item');\n // console.log(this.id);\n // console.log($event);\n this.dropOnItem$.next($event);\n }\n\n dragHover(node) {\n // console.log('dragHover');\n }\n\n dragHoverEnd() {\n // console.log('dragHoverEnd');\n }\n\n dragStart() {\n console.log('dragStart');\n this.dragging = true;\n }\n\n dragEnd($event) {\n console.log('dragEnd');\n // console.log($event);\n this.dragging = false;\n }\n\n dragRelease($event) {\n console.log('dragRelease');\n // console.log(this.id);\n // console.log($event);\n const releaseData = $event.source.data;\n let subscription = this.dropOnItem$\n .pipe(\n skipWhile((x) => !x),\n first(),\n )\n .subscribe((rs) => {\n // console.log(rs);\n if (rs && releaseData && rs !== releaseData) {\n this.onSwapChange.emit({\n source: releaseData,\n destination: rs,\n });\n }\n });\n setTimeout(() => {\n subscription.unsubscribe();\n this.dropOnItem$.next(null);\n }, 1000);\n }\n\n onDragMove() {\n // console.log('move');\n }\n\n onEmitEvent(eventClass: TqlTreeCore.EventType, object: Object) {\n const event = new eventClass();\n _.map(object, (x, k) => {\n event[k] = x;\n });\n this.onEventChange.emit(event);\n }\n\n toggleCollapseExpand(node) {\n if (this.treeControl.isExpanded(node)) {\n this.treeControl.collapse(node);\n node.isExpanded = false;\n this.onEmitEvent(TqlTreeCore.CollapseEvent, { node: node });\n } else {\n this.treeControl.expand(node);\n node.isExpanded = true;\n this.onEmitEvent(TqlTreeCore.ExpandEvent, { node: node });\n }\n }\n}\n\nexport namespace TqlTreeCore {\n export enum STYLES {\n ROW_HIGHLIGHT_WHEN_SELECT,\n }\n\n export enum ENUM_TYPES {\n ROUTE = 'route',\n DEFAULT = 'default',\n }\n\n export type EventType = new () => IEvent;\n\n export interface IEvent {\n node: IListItem;\n }\n\n export interface ISwap {\n source: IListItem;\n destination: IListItem;\n }\n\n export class ExpandEvent implements IEvent {\n node: IListItem;\n }\n\n export class CollapseEvent implements IEvent {\n node: IListItem;\n }\n}\n\n@Component({\n selector: 'tql-tree',\n standalone: false,\n templateUrl: './tql-tree.component.html',\n styleUrls: ['./tql-tree.component.scss'],\n})\nexport class TqlTreeComponent extends TqlTreeCore {\n /*===SELECT===*/\n @Output() selectedChanged: EventEmitter<IListItem | null> = new EventEmitter<IListItem | null>();\n _selected: IListItem | null;\n @Input()\n set selected(v: IListItem | null) {\n if (!_.isEqual(this._selected, v)) {\n this._selected = v;\n }\n }\n\n get selected() {\n return this._selected;\n }\n\n constructor(_Router: Router) {\n super(_Router);\n this.treeType = TqlTreeCore.ENUM_TYPES.DEFAULT;\n }\n\n override onSelectNode(node: IListItem) {\n if (node.selectable) {\n if (this.isToggleSelect) {\n this.selected = this.selected !== node ? node : null;\n } else {\n this.selected = node;\n }\n }\n // console.log(this.selected);\n this.selectedChanged.emit(this.selected);\n if (node?.onClick) {\n node?.onClick(this.selected);\n }\n }\n}\n\n@Component({\n selector: 'tql-route-tree',\n standalone: false,\n templateUrl: './tql-tree.component.html',\n styleUrls: ['./tql-tree.component.scss'],\n})\nexport class TqlRouteTreeComponent extends TqlTreeCore {\n constructor(_Router: Router) {\n super(_Router);\n this.treeType = TqlTreeCore.ENUM_TYPES.ROUTE;\n }\n}\n","<div class=\"w-100 overflow-auto tql-tree-wrapper\"\n [class.dragging]=\"dragging\"\n [id]=\"id\"\n cdkDropList\n [cdkDropListSortingDisabled]=\"true\"\n [cdkDropListConnectedTo]=\"dropIds\"\n (cdkDropListDropped)=\"drop($event)\">\n <mat-tree [dataSource]=\"dataSource\" [treeControl]=\"treeControl\" class=\"\"\n [class.row-highlight-when-select]=\"styles.includes(STYLES.ROW_HIGHLIGHT_WHEN_SELECT)\">\n <!-- This is the tree node template for leaf nodes -->\n <!-- There is inline padding applied to this node using styles.\n This padding value depends on the mat-icon-button width. -->\n <mat-tree-node *matTreeNodeDef=\"let node\" matTreeNodeToggle\n [class.cursor-move]=\"node?.draggable && !node?.disabled\"\n cdkDrag\n [cdkDragData]=\"node\"\n (cdkDragMoved)=\"onDragMove()\"\n [cdkDragDisabled]=\"!node?.draggable || node?.disabled\"\n (mouseenter)=\"dragHover(node)\"\n (mouseleave)=\"dragHoverEnd()\"\n (cdkDragStarted)=\"dragStart()\"\n (cdkDragReleased)=\"dragRelease($event)\"\n (mouseup)=\"dropOnItem(node)\"\n >\n <div *cdkDragPreview\n class=\"ml-2 p-2 color-white tql-tree-drag-preview-wrapper d-flex flex-gap-3 align-items-center mat-elevation-z2\">\n <div class=\"d-flex flex-gap-2 align-items-center flex-grow-1 overflow-hidden\">\n <div class=\"icon d-flex align-items-center\" *ngIf=\"node?.iconClassName\">\n <i class=\"{{node?.iconClassName}}\"></i>\n </div>\n <div class=\"text-truncate flex-grow-1\" [title]=\"node?.name\">{{node?.name}}</div>\n </div>\n <i class=\"fal fa-grip-lines-vertical\"></i>\n </div>\n <ng-container *ngTemplateOutlet=\"nodeTypeTemplate; context:{node:node,isLeaf:true};\"></ng-container>\n </mat-tree-node>\n\n <!-- This is the tree node template for expandable nodes -->\n <mat-nested-tree-node *matTreeNodeDef=\"let node; when: hasChild\"\n [class.cursor-move]=\"node?.draggable && !node?.disabled\"\n cdkDrag\n [cdkDragData]=\"node\"\n (cdkDragMoved)=\"onDragMove()\"\n [cdkDragDisabled]=\"!node?.draggable || node?.disabled\"\n (mouseenter)=\"dragHover(node)\"\n (mouseleave)=\"dragHoverEnd()\"\n (cdkDragStarted)=\"dragStart()\"\n (cdkDragReleased)=\"dragRelease($event)\"\n (mouseup)=\"dropOnItem(node)\">\n <div *cdkDragPreview\n class=\"ml-2 p-2 color-white tql-tree-drag-preview-wrapper d-flex flex-gap-3 align-items-center mat-elevation-z2 multiple \">\n <div class=\"d-flex flex-gap-2 align-items-center flex-grow-1 overflow-hidden\">\n <div class=\"icon d-flex align-items-center\" *ngIf=\"node?.iconClassName\">\n <i class=\"{{node?.iconClassName}}\"></i>\n </div>\n <div class=\"text-truncate flex-grow-1\" [title]=\"node?.name\">{{node?.name}}</div>\n </div>\n <i class=\"fal fa-grip-lines-vertical\"></i>\n </div>\n <div class=\"mat-tree-node\" matRipple\n [class.disabled-half]=\"node?.disabled\"\n [class.selected]=\"selected === node\"\n >\n <div class=\"d-flex align-items-center w-100\">\n <div class=\"collapse-icon d-flex align-items-center cursor-pointer pl-2 pr-2\"\n [class.ml-2]=\"node?.level === 0\"\n (click)=\"toggleCollapseExpand(node)\">\n <i class=\"{{treeControl.isExpanded(node)?expandClassName:collapseClassName}}\"></i>\n </div>\n <ng-container\n *ngTemplateOutlet=\"nodeTypeTemplate; context:{node:node,isLeaf:false};\"></ng-container>\n </div>\n </div>\n <!-- There is inline padding applied to this div using styles.\n This padding value depends on the mat-icon-button width. -->\n <div [class.d-none]=\"!treeControl.isExpanded(node)\"\n [class.disabled-half]=\"node?.disabled\"\n class=\"branch\">\n <ng-container matTreeNodeOutlet></ng-container>\n </div>\n </mat-nested-tree-node>\n </mat-tree>\n\n <ng-template #optionsTemplate let-node=\"node\">\n <div class=\"actions-group\" *ngIf=\"node?.options?.length\">\n <tql-action-bar [list]=\"node?.options\" [action]=\"moreAction\" [data]=\"node\"></tql-action-bar>\n </div>\n </ng-template>\n <ng-template #draggableTemplate let-node=\"node\">\n <div *ngIf=\"!readonly && node?.draggable && !node?.disabled\"\n class=\"action drag-icon\"\n [class.show-on-hover]=\"true\"\n >\n <button mat-icon-button\n class=\"small\"\n [matTooltip]=\"'Draggable'\">\n <i class=\"fal fa-grip-lines-vertical\"></i>\n </button>\n </div>\n </ng-template>\n <ng-template #nodeTypeTemplate let-node=\"node\" let-isLeaf=\"isLeaf\">\n <ng-container [ngSwitch]=\"true\">\n <ng-container *ngSwitchCase=\"treeType === treeTypes.ROUTE\">\n <div class=\"mat-tree-node\" matRipple\n [class.leaf]=\"isLeaf\"\n [class.cursor-pointer]=\"node?.route\"\n [class.clickable]=\"node?.route\"\n [class.disabled-half]=\"node?.disabled\"\n [routerLink]=\"node?.route\"\n [routerLinkActive]=\"node?.route?'selected':''\"\n [state]=\"node?.routeState\"\n [routerLinkActiveOptions]=\"node?.routerActiveOptions || {exact: false}\">\n <ng-container\n *ngTemplateOutlet=\"nodeTemplate; context:{node:node,isLeaf:isLeaf};\"></ng-container>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"treeType === treeTypes.DEFAULT\">\n <div class=\"mat-tree-node\" matRipple\n [class.leaf]=\"isLeaf\"\n [class.selected]=\"selected === node && node?.selectable\"\n [class.cursor-pointer]=\"node?.selectable || node?.onClick\"\n [class.clickable]=\"node?.selectable || node?.onClick\"\n (click)=\"onSelectNode(node)\"\n [class.disabled-half]=\"node?.disabled\">\n <ng-container\n *ngTemplateOutlet=\"nodeTemplate; context:{node:node,isLeaf:isLeaf};\"></ng-container>\n </div>\n </ng-container>\n </ng-container>\n </ng-template>\n\n</div>\n\n<ng-template #nodeTemplate let-node=\"node\" let-isLeaf=\"isLeaf\">\n <!-- <ng-container [ngSwitch]=\"true\">-->\n <div class=\"d-flex align-items-center w-100 h-100\"\n >\n <div\n class=\"collapse-icon d-flex align-items-center cursor-pointer opacity-30 {{isLeaf?'ml-2 pl-2 pr-2':''}}\"\n *ngIf=\"isLeaf && node?.level === 0 && !(isSingleLevelTree && !alwaysShowExpandCollapseIcon)\">\n <i class=\"{{collapseClassName}}\"></i>\n </div>\n <div *ngIf=\"isLeaf && node?.level === 0 && (isSingleLevelTree && !alwaysShowExpandCollapseIcon)\"\n class=\"ml-2 pl-2 \">\n </div>\n\n <div class=\"d-flex align-items-center w-100 h-100 flex-gap-2\">\n <div class=\"icon d-flex align-items-center\" *ngIf=\"node?.iconClassName\">\n <i class=\"{{node?.iconClassName}}\"></i>\n </div>\n <div class=\"title\" *ngIf=\"node?.title\">{{node?.title}}</div>\n <div class=\"text-truncate name {{node?.className}}\"\n [title]=\"node?.name\"\n [innerHTML]=\"node?.name\">\n </div>\n <div class=\"flex-grow-1\"></div>\n <div class=\"d-flex actions-group align-items-center\">\n <ng-container *ngTemplateOutlet=\"draggableTemplate; context:{node:node}\"></ng-container>\n <ng-container *ngTemplateOutlet=\"optionsTemplate; context:{node:node}\"></ng-container>\n </div>\n </div>\n </div>\n <!-- </ng-container>-->\n</ng-template>\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\n\n@Component({\n selector: 'tql-image-card',\n standalone: false,\n templateUrl: './tql-image-card.component.html',\n styleUrls: ['./tql-image-card.component.scss'],\n})\nexport class TqlImageCardComponent implements OnInit {\n @Input() urlImage: string = '';\n @Input() titleString: string = '';\n @Input() description: string = '';\n @Input() isSelected: boolean = false;\n @Output() isSelectedChange: EventEmitter<boolean> = new EventEmitter<boolean>(null as any);\n @Output() onDetailClicked: EventEmitter<any> = new EventEmitter<any>(null as any);\n @Output() onLivePreviewClicked: EventEmitter<any> = new EventEmitter<any>(null as any);\n\n constructor() {}\n\n ngOnInit(): void {}\n\n toggleSelect() {\n if (!this.isSelected) {\n this.isSelected = true;\n this.isSelectedChange.emit(this.isSelected)\n }\n }\n\n onDetailClick() {\n this.onDetailClicked.emit(true);\n }\n\n onLivePreviewClick() {\n this.onLivePreviewClicked.emit(true);\n }\n}\n","<div class=\"image-card\">\n <div class=\"img\" [ngStyle]=\"{ 'background-image': 'url(' + urlImage + ')'}\">\n <div class=\"image-card-btn-group w-100 h-100 d-flex justify-content-center align-items-center\">\n <button mat-button class=\"btn btn-sky-blue text-white\" (click)=\"onDetailClick()\">\n <span class=\"font-size-14px\">Detail</span>\n </button>\n <button mat-button class=\"btn ml-20px btn-live-preview\" (click)=\"onLivePreviewClick()\">\n <span class=\"font-size-14px\">Live Preview</span>\n </button>\n </div>\n </div>\n <div class=\"highlight-box pl-20px pr-20px pb-20px\">\n <div class=\"highlight-header d-flex justify-content-between align-items-center\">\n <div class=\"font-size-20px color-sky-blue text-capitalize\">{{ titleString }}</div>\n <i class=\"fad fa-check-circle font-size-18px tick cursor-pointer\" (click)=\"toggleSelect()\" [class.active]=\"isSelected\"></i>\n </div>\n <div class=\"font-size-14px color-soft-blue font-weight-light highlight-des\">{{ description }}</div>\n </div>\n</div>\n","import {Component, EventEmitter, Input, OnInit, Output} from '@angular/core';\nimport {IListItem} from '../../../constants';\n\n@Component({\n selector: 'tql-tabs-header',\n standalone: false,\n templateUrl: './tql-tabs-header.component.html',\n styleUrls: ['./tql-tabs-header.component.scss']\n})\nexport class TqlTabsHeaderComponent implements OnInit {\n @Input() list: IListItem[] = [];\n @Input() activeItem: IListItem;\n @Output() activeItemChange = new EventEmitter();\n\n constructor() {\n }\n\n ngOnInit(): void {\n }\n\n onChangeTab(item: IListItem) {\n this.activeItem = item;\n if (item?.onClick) {\n item?.onClick();\n }\n this.activeItemChange.emit(this.activeItem);\n }\n}\n","<nav mat-tab-nav-bar class=\"tql-tabs-header-wrapper d-flex\">\n <a mat-tab-link *ngFor=\"let item of list\"\n class=\"flex-grow-1\"\n (click)=\"onChangeTab(item)\"\n [active]=\"activeItem == item\"> {{item?.name}} </a>\n</nav>\n","import {\n AfterViewInit,\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n QueryList,\n TemplateRef,\n ViewChildren,\n} from '@angular/core';\nimport { CodemirrorComponent } from '@ctrl/ngx-codemirror';\nimport { ActionsConstant, CodeEditorModel, ENUM_ACTION_KEYS, IListItemOption } from '../../../constants';\nimport * as _ from 'lodash';\nimport { TqlHelperService } from '../../../controllers/tql-helper/tql-helper.service';\n\n@Component({\n selector: 'tql-code-editor',\n standalone: false,\n templateUrl: './tql-code-editor.component.html',\n styleUrls: ['./tql-code-editor.component.scss'],\n})\nexport class TqlCodeEditorComponent implements OnInit, AfterViewInit {\n // actions\n _closeActions: IListItemOption[] = [\n {\n name: 'Close',\n onClick: () => {\n this.onCloseItems(this.selected ? [this.selected] : []);\n },\n },\n {\n name: 'Close All',\n onClick: () => {\n this.onCloseItems(this.data);\n },\n },\n {\n name: 'Close Others',\n onClick: () => {\n this.onCloseItemOthers(this.selected);\n },\n },\n ];\n _actions: IListItemOption[] = [];\n @Input()\n set actions(v: IListItemOption[]) {\n // console.log(TqlHelperService.getActionCompressGroup(v));\n this._actions = v;\n }\n\n get actions() {\n return TqlHelperService.getActionCompressGroup(this._actions)?.uncompressed;\n }\n\n get moreActions() {\n return [...this._closeActions, ...TqlHelperService.getActionCompressGroup(this._actions)?.compressed];\n }\n\n @Input() hideDefaultActions: boolean = false;\n\n @ViewChildren(CodemirrorComponent) editors: QueryList<CodemirrorComponent>;\n @Input() saveAction: ($event: CodeEditorModel) => Promise<boolean>;\n\n // TODO: harry - only show tab bar\n @Input() showTabOnly: boolean = false;\n\n _data: CodeEditorModel[];\n /**\n * list of code editors\n * @param v\n */\n @Output() dataChange: EventEmitter<any> = new EventEmitter<any>();\n\n @Input()\n set data(v: CodeEditorModel[]) {\n this._data = v;\n this.setReadOnlyForTabs();\n }\n\n get data() {\n return this._data;\n }\n\n @Input() hasHeading: boolean = true;\n @Input() headingClassName: string;\n @Input() multiple: boolean = false;\n @Input() hintMenuTemplate: TemplateRef<any>;\n\n // set true when websocket response\n @Input() scrollToBottomWhenUpdate: boolean = false;\n\n @Output() onChange: EventEmitter<any> = new EventEmitter<any>();\n @Output() onInit: EventEmitter<void> = new EventEmitter<void>();\n\n _readOnly: boolean;\n /**\n * set readonly\n * @param v\n */\n @Input()\n set readOnly(v: boolean) {\n this._readOnly = v;\n this.setReadOnlyForTabs();\n }\n\n get readOnly() {\n return this._readOnly;\n }\n\n _selected: CodeEditorModel | null;\n @Input()\n set selected(value) {\n const self = this;\n this._selected = value;\n\n // need this one to make sure editor has component\n this.massageEditor();\n\n // scroll bottom when websocket message updated\n if (this.scrollToBottomWhenUpdate) {\n setTimeout(() => {\n self._selected?.editorComponent?.codeMirror?.focus();\n self._selected?.editorComponent?.codeMirror?.setCursor(\n self._selected?.editorComponent?.codeMirror?.lineCount(),\n 0,\n );\n });\n } else {\n // set old cursor\n setTimeout(() => {\n self._selected?.editorComponent?.codeMirror?.focus();\n self._selected?.editorComponent?.codeMirror?.setCursor(\n self._selected?.editorComponent?.codeMirror?.getCursor(),\n );\n });\n }\n }\n\n get selected() {\n return this._selected;\n }\n\n questionIcon: IListItemOption = _.cloneDeep(ActionsConstant[ENUM_ACTION_KEYS.INFO]);\n saveIcon: IListItemOption = _.cloneDeep(ActionsConstant[ENUM_ACTION_KEYS.SAVE]);\n formatIcon: IListItemOption = _.cloneDeep(ActionsConstant[ENUM_ACTION_KEYS.FORMAT]);\n moreIcon: IListItemOption = _.cloneDeep(ActionsConstant[ENUM_ACTION_KEYS.MORE]);\n closeIcon: IListItemOption = _.cloneDeep(ActionsConstant[ENUM_ACTION_KEYS.CLOSE]);\n unsavedIcon: IListItemOption = _.cloneDeep(ActionsConstant[ENUM_ACTION_KEYS.EDIT]);\n\n _mode: string;\n @Input()\n set mode(v: string) {\n // this._mode = v;\n // this.optionCodeMirror.mode = this._mode;\n }\n\n constructor() {\n this.questionIcon.iconClassName += ' font-size-18px color-white';\n this.saveIcon.iconClassName += ' font-size-18px color-white';\n this.saveIcon.onClick = () => {\n if (!!this.selected) {\n this.selected.save();\n }\n this.emitEvent(TqlCodeEditorComponent.SaveEvent);\n };\n this.formatIcon.iconClassName += ' font-size-18px color-white';\n this.formatIcon.onClick = () => {\n this.onFormat();\n };\n this.moreIcon.iconClassName += ' font-size-18px color-white';\n this.closeIcon.iconClassName += ' font-size-12px color-soft-blue';\n this.closeIcon.className += ' small';\n this.closeIcon.onClick = (item: CodeEditorModel) => {\n this.onCloseItems([item]);\n };\n\n // unsaved\n this.unsavedIcon.name = 'Un-saved';\n this.unsavedIcon.iconClassName += ' font-size-10px color-soft-blue';\n this.unsavedIcon.className += ' small';\n }\n\n ngOnInit(): void {}\n\n ngAfterViewInit() {\n setTimeout(() => {\n this.massageEditor();\n this.onInit.emit();\n }, 150);\n }\n\n private setReadOnlyForTabs() {\n _.map(this.data, (x) => {\n x.readOnly = this.readOnly;\n });\n }\n\n massageEditor() {\n if (!!this.editors) {\n this.editors.forEach((x) => {\n const found = _.find(this.data, (y) => y.getId() === x.name);\n if (!!found) {\n x!.codeMirror!.refresh();\n found.editorComponent = x;\n }\n });\n }\n }\n\n codemirrorChange(text: string) {\n this.emitEvent(TqlCodeEditorComponent.ContentChangeEvent);\n }\n\n onSelectTab(item: CodeEditorModel) {\n this.selected = item;\n this.emitEvent(TqlCodeEditorComponent.EditorChangeEvent);\n }\n\n onFormat() {\n if (this.selected) {\n this.selected.format();\n }\n }\n\n emitEvent(eventClass: TqlCodeEditorComponent.EventType) {\n const event = new eventClass();\n if (this.selected) {\n event.editor = this.selected as CodeEditorModel;\n }\n this.onChange.emit(event);\n }\n\n onCloseItems(codeEditorModels: CodeEditorModel[]) {\n console.log('close');\n _.remove(this._data as CodeEditorModel[], (x) => codeEditorModels.includes(x));\n if (this.selected && codeEditorModels.includes(this.selected)) {\n if (this._data?.length) {\n this.selected = this._data[0];\n } else {\n this.selected = null;\n }\n this.dataChange.emit(this.data);\n }\n\n this.emitEvent(TqlCodeEditorComponent.CloseEvent);\n }\n\n onCloseItemOthers(codeEditorModel: CodeEditorModel | null) {\n if (codeEditorModel) {\n this.onCloseItems(_.filter(this._data, (x) => x !== codeEditorModel));\n }\n }\n}\n\nexport namespace TqlCodeEditorComponent {\n export type EventType = new () => IEvent;\n\n export interface IEvent {\n editor: CodeEditorModel;\n }\n\n export class CloseEvent implements IEvent {\n editor: CodeEditorModel;\n }\n\n export class SaveEvent implements IEvent {\n editor: CodeEditorModel;\n }\n\n export class EditorChangeEvent implements IEvent {\n editor: CodeEditorModel;\n }\n\n export class ContentChangeEvent implements IEvent {\n editor: CodeEditorModel;\n }\n}\n","<div class=\"w-100 h-100 tql-code-editor-wrapper\"\n [class.has-heading]=\"hasHeading\">\n <div class=\"heading d-flex align-items-center {{headingClassName}}\" *ngIf=\"hasHeading\">\n <div class=\"flex-grow-1 tab-group d-flex overflow-hidden\">\n <nav mat-tab-nav-bar class=\"w-100\">\n <a mat-tab-link\n class=\"d-flex tab align-items-center flex-gap-1\"\n *ngFor=\"let item of _data\"\n (click)=\"onSelectTab(item)\"\n [active]=\"selected === item\">\n <div class=\"px-2 code-mode text-uppercase {{item?.mode}}\">{{item?.mode}}</div>\n <div class=\"text-truncate flex-grow-1\">{{item?.name}}</div>\n <div class=\"d-flex align-items-center\">\n <div\n *ngIf=\"item?.hasUnsaved()\"\n [matTooltip]=\"unsavedIcon?.name\"\n class=\"px-1\">\n <i class=\"{{unsavedIcon?.iconClassName}}\"></i>\n </div>\n <button mat-icon-button\n (click)=\"closeIcon.onClick(item);$event.stopPropagation();\"\n [matTooltip]=\"closeIcon?.name\"\n class=\"{{closeIcon?.className}}\">\n <i class=\"{{closeIcon?.iconClassName}}\"></i>\n </button>\n </div>\n </a>\n </nav>\n </div>\n <div class=\"d-flex\">\n <div class=\"d-flex\">\n <button mat-icon-button *ngFor=\"let item of actions\"\n (click)=\"item?.onClick()\"\n [matTooltip]=\"item?.name\"\n class=\"{{item?.className}}\">\n <i class=\"{{item?.iconClassName}}\"></i>\n </button>\n <button mat-icon-button\n [matMenuTriggerFor]=\"moreMenu\"\n [matTooltip]=\"moreIcon?.name\"\n class=\"{{moreIcon?.className}}\">\n <i class=\"{{moreIcon?.iconClassName}}\"></i>\n </button>\n <mat-menu #moreMenu=\"matMenu\" backdropClass=\"mat-menu-default\">\n <button mat-menu-item *ngFor=\"let item of moreActions\"\n (click)=\"item?.onClick()\"\n [class.disabled-half]=\"!selected\">\n <i *ngIf=\"item?.iconClassName\" class=\"{{item?.iconClassName}}\"></i>\n <span>{{item?.name}}</span>\n </button>\n </mat-menu>\n <div class=\"divider pr-2\"></div>\n </div>\n <div class=\"d-flex\" *ngIf=\"!selected?.template && !hideDefaultActions\">\n <ng-container>\n <button mat-icon-button *ngFor=\"let item of [saveIcon]\"\n [class.d-none]=\"!selected\"\n [class.disabled-half]=\"!selected?.hasUnsaved()\"\n (click)=\"item?.onClick()\"\n [matTooltip]=\"item?.name\"\n class=\"{{item?.className}}\">\n <i class=\"{{item?.iconClassName}}\"></i>\n </button>\n <button mat-icon-button\n (click)=\"formatIcon?.onClick()\"\n [class.d-none]=\"!selected\"\n [class.disabled-half]=\"selected?.isEmpty()\"\n [matTooltip]=\"formatIcon?.name\"\n class=\"{{formatIcon?.className}} disabled-half\">\n <i class=\"{{formatIcon?.iconClassName}}\"></i>\n </button>\n </ng-container>\n <ng-container *ngIf=\"hintMenuTemplate\">\n <button mat-icon-button\n (click)=\"questionIcon?.onClick()\"\n [class.d-none]=\"!selected\"\n [class.disabled-half]=\"selected?.isEmpty() && !hintMenu\"\n [matTooltip]=\"questionIcon?.name\"\n [matMenuTriggerFor]=\"hintMenu\"\n class=\"{{questionIcon?.className}}\">\n <i class=\"{{questionIcon?.iconClassName}}\"></i>\n </button>\n <mat-menu #hintMenu=\"matMenu\" backdropClass=\"mat-menu-hint\">\n <ng-container *ngTemplateOutlet=\"hintMenuTemplate\"></ng-container>\n </mat-menu>\n </ng-container>\n </div>\n </div>\n </div>\n <div class=\"content\" *ngIf=\"!showTabOnly\">\n <ng-container *ngIf=\"_data?.length; else noData\">\n <div *ngFor=\"let item of _data\" class=\"h-100\"\n [class.d-none]=\"item !== selected\">\n <ng-container *ngIf=\"!item?.template\">\n <ngx-codemirror\n [name]=\"item?.getId()\"\n class=\"w-100 h-100\"\n [formControl]=\"item?.content\"\n [options]=\"item?.editorOptions\"\n (ngModelChange)=\"codemirrorChange($event)\"\n ></ngx-codemirror>\n </ng-container>\n <ng-container *ngIf=\"item?.template && item === selected\">\n <ng-container\n *ngTemplateOutlet=\"item?.template;context:{item:selected}\"></ng-container>\n </ng-container>\n </div>\n </ng-container>\n <ng-template #noData>\n <div class=\"d-flex justify-content-center align-items-center h-100 font-size-100px\">\n <i class=\"fad fa-code empty-icon\"></i>\n </div>\n </ng-template>\n </div>\n</div>\n","import {\n AfterViewInit,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnInit,\n Output,\n QueryList,\n TemplateRef,\n ViewChild,\n ViewChildren,\n} from '@angular/core';\nimport { DefaultComponent, TqlUtilsService } from 'x-tql-service';\nimport { ActionsConstant, ENUM_ACTION_KEYS, IListItem, IListItemOption, MicsConstant } from '../../../constants';\nimport _ from 'lodash';\nimport { NavbarPreview, TqlNavbarControllerService } from '../../../controllers';\nimport { TqlSimpleListComponent } from '../tql-simple-list/tql-simple-list.component';\nimport { v4 as uuidv4 } from 'uuid';\n\n@Component({\n selector: 'tql-nested-list',\n standalone: false,\n templateUrl: './tql-nested-list.component.html',\n styleUrls: ['./tql-nested-list.component.scss'],\n})\nexport class TqlNestedListComponent extends DefaultComponent implements OnInit, AfterViewInit {\n @ViewChildren('myItems') elements: QueryList<ElementRef>;\n @ViewChildren('contentTemplate') contentTemplate: QueryList<TemplateRef<any>>;\n @Input() nameTemplate: TemplateRef<any>;\n @Input() collapsingIconPosition: string = TqlSimpleListComponent.ENUM_HANDLER_POSITION.RIGHT;\n @Input() listStyle: TqlSimpleListComponent.ENUM_STYLE = TqlSimpleListComponent.ENUM_STYLE.NORMAL;\n @Input() hasConnectedLines: boolean = false;\n private _list: IListItem[] = [];\n @Input()\n set list(v: IListItem[]) {\n setTimeout(() => {\n this.massageList(v);\n });\n }\n\n get list(): IListItem[] {\n return this._list;\n }\n\n @Output() init: EventEmitter<TqlNestedListComponent.IControl> = new EventEmitter<TqlNestedListComponent.IControl>();\n\n // @Input() level: number = 1000;\n @Input() activeClassName: string = '';\n @Input() deepLevel: number = 0;\n @Input() nestedLeftPadding: number = 30;\n\n @Input() inNavbar: boolean = false;\n\n @Input() offsetInNavbar: number = 30;\n @Input() offsetNotInNavbar: number = 16;\n\n // actions\n @Input()\n moreAction: IListItemOption = _.cloneDeep(ActionsConstant[ENUM_ACTION_KEYS.MORE]);\n\n navBarPreview: NavbarPreview | null;\n showNavBarPreview: NavbarPreview | null;\n // leftOffset: number = 0;\n\n ENUM_HANDLER_POSITION: typeof TqlSimpleListComponent.ENUM_HANDLER_POSITION =\n TqlSimpleListComponent.ENUM_HANDLER_POSITION;\n\n selectedNode: IListItem;\n\n constructor(private _TqlNavbarControllerService: TqlNavbarControllerService) {\n super();\n this.addSubscribes(\n this._TqlNavbarControllerService._Observable_Current_Preview_Item.subscribe((rs) => {\n // console.log(rs);\n // if (!rs) {\n // this.showNavBarPreview = this.navBarPreview;\n // } else {\n // this.showNavBarPreview = null;\n // }\n }),\n );\n }\n\n ngOnInit(): void {}\n\n ngAfterViewInit() {\n // console.log(this.contentTemplate);\n // TODO\n setTimeout(() => {\n // this.navBarPreview = {\n // template: this.contentTemplate,\n // element: this.contentTemplate.elementRef.nativeElement\n // };\n // this.showNavBarPreview = this.navBarPreview;\n });\n }\n\n massageList(v: IListItem[]) {\n const data = v;\n _.map(data || [], (x: IListItem) => {\n // id\n x.id = uuidv4();\n\n if (_.isUndefined(x.isCollapsed)) {\n x.isCollapsed = false;\n }\n if (x?.children?.length && !x?.hideExpandedChildren) {\n const option = {\n name: 'Collapse',\n type: MicsConstant.ENUM_TYPES.COLLAPSE_EXPAND,\n iconClassName:\n 'fal fa-angle-up' +\n (this.listStyle === TqlSimpleListComponent.ENUM_STYLE.SMALL\n ? ' ' + TqlNestedListComponent.ENUM_CSS_CLASS.SMALL_ICON_SIZE\n : ''),\n isNotCompressed: true,\n onClick: () => {\n this.toggleCollapse(x, option);\n },\n };\n\n if (\n !x.options?.length ||\n x.options?.filter((x) => x?.type === MicsConstant.ENUM_TYPES.COLLAPSE_EXPAND)?.length === 0\n ) {\n x.options = [...(x.options || []), option];\n }\n\n // if onclick is MicsConstant.COLLAPSE_EXPAND_FUNCTION, change it to toggleCollapse action\n if (!!x.onClick && x.onClick === MicsConstant.COLLAPSE_EXPAND_FUNCTION) {\n x.onClick = () => {\n this.toggleCollapse(x, option);\n };\n }\n\n this.toggleCollapse(x, option, x.isCollapsed);\n }\n\n // left padding\n x.leftPadding = !!x.leftPadding\n ? x.leftPadding\n : (this.inNavbar\n ? this.offsetInNavbar\n : this.offsetNotInNavbar + this.nestedLeftPadding * this.deepLevel) +\n (this.deepLevel !== 0 &&\n !x?.children?.length &&\n this.collapsingIconPosition === this.ENUM_HANDLER_POSITION.LEFT\n ? this.nestedLeftPadding\n : 0);\n });\n\n this._list = data;\n\n this.init.emit({\n list: this._list,\n collapseAll: () => {\n this.collapseAll();\n },\n expandAll: () => {\n this.expandAll();\n },\n select: (node: IListItem) => {\n this.select(node);\n },\n });\n\n // offset\n // setTimeout(() => {\n // this.leftOffset = this.getOffset() + this.nestedLeftPadding * this.deepLevel;\n // });\n }\n\n select(node: IListItem) {\n if (this.selectedNode) {\n this.selectedNode.active = false;\n }\n this.selectedNode = node;\n this.selectedNode.active = true;\n }\n\n collapseAll() {\n TqlUtilsService.traversalTree(this._list, (x) => {\n if (x?.children?.length) {\n const collapseOption = _.find(x.options, (y) => y?.type === MicsConstant.ENUM_TYPES.COLLAPSE_EXPAND);\n if (!!collapseOption) {\n this.toggleCollapse(x, collapseOption, true);\n }\n }\n });\n }\n\n expandAll() {\n TqlUtilsService.traversalTree(this._list, (x) => {\n if (x?.children?.length) {\n const collapseOption = _.find(x.options, (y) => y?.type === MicsConstant.ENUM_TYPES.COLLAPSE_EXPAND);\n if (!!collapseOption) {\n this.toggleCollapse(x, collapseOption, false);\n }\n }\n });\n }\n\n toggleCollapse(item: IListItem, option: IListItem, isCollapsed?: boolean) {\n if (typeof isCollapsed == 'boolean') {\n item.isCollapsed = isCollapsed;\n } else {\n item.isCollapsed = !item.isCollapsed;\n }\n option.name = item.isCollapsed ? 'Expand' : 'Collapse';\n option.iconClassName = TqlUtilsService.replaceAll(option.iconClassName, 'fal fa-angle-down', '').trim();\n option.iconClassName = TqlUtilsService.replaceAll(option.iconClassName, 'fal fa-angle-up', '').trim();\n option.iconClassName += item.isCollapsed ? ' fal fa-angle-down' : ' fal fa-angle-up';\n }\n\n // getOffset() {\n // return this.inNavbar ? this.offsetInNavbar : this.offsetNotInNavbar;\n // }\n\n onShowContent($event: MouseEvent, index: number) {\n // console.log($event);\n // console.log(($event.target as Element)?.parentElement);\n // console.log(this.elements);\n // console.log(this.elements.get(index));\n const element = this.elements.get(index);\n const template = this.contentTemplate.get(index);\n // console.log(element, template);\n // if (this.inNavbar && !!newElement) {\n // if (this.navBarPreview) {\n // this.navBarPreview.element = newElement?.nativeElement as unknown as Element;\n // }\n this.navBarPreview = {\n template: template as unknown as TemplateRef<any>,\n element: element?.nativeElement as unknown as Element,\n };\n this._TqlNavbarControllerService._Observable_Current_Preview_Item.next(this.navBarPreview);\n // }\n }\n}\n\nexport namespace TqlNestedListComponent {\n export interface IControl {\n list: IListItem[];\n collapseAll: Function;\n expandAll: Function;\n select: Function;\n }\n\n export enum ENUM_CSS_CLASS {\n SMALL_ICON_SIZE = 'font-size-10px',\n }\n}\n","<!--<ng-container [ngSwitch]=\"level\">-->\n<!-- <ng-container *ngSwitchCase=\"1\">-->\n<!-- <div *ngFor=\"let item of list\">-->\n<!-- <tql-simple-list-->\n<!-- class=\"level-{{deepLevel}}\"-->\n<!-- [listStyle]=\"listStyle\"-->\n<!-- [items]=\"[item]\"-->\n<!-- [collapsingIconPosition]=\"collapsingIconPosition\"-->\n<!-- [inNavbar]=\"inNavbar\"-->\n<!-- [itemStyle]=\"'padding-left:'+item?.leftPadding+'px !important'\"-->\n<!-- [nameTemplate]=\"nameTemplate\"></tql-simple-list>-->\n<!-- </div>-->\n<!-- </ng-container>-->\n<!-- <ng-container *ngSwitchDefault>-->\n<div *ngFor=\"let item of list;let $index=index;\">\n <!--not in navbar-->\n <ng-container *ngIf=\"!inNavbar\">\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n </ng-container>\n <!--in navbar-->\n <ng-container *ngIf=\"inNavbar\">\n <div class=\"show-on-collapsed\">\n <div *ngIf=\"item?.children?.length\"\n (click)=\"onShowContent($event,$index)\"\n #myItems>\n <tql-simple-list\n class=\"level-{{deepLevel}}\"\n [activeClassName]=\"activeClassName\"\n [level]=\"deepLevel\"\n [listStyle]=\"listStyle\"\n [items]=\"[item]\"\n [collapsingIconPosition]=\"collapsingIconPosition\"\n [inNavbar]=\"inNavbar\"\n [itemStyle]=\"'padding-left:'+item?.leftPadding+'px !important'\"\n [moreAction]=\"moreAction\"\n [hasConnectedLines]=\"hasConnectedLines\"\n [nameTemplate]=\"nameTemplate\"></tql-simple-list>\n <div class=\"d-flex has-group-hint align-items-center\">\n <i class=\"fal fa-angle-right font-size-12px \"></i>\n </div>\n </div>\n <div *ngIf=\"!item?.children?.length\">\n <tql-simple-list\n class=\"level-{{deepLevel}}\"\n [activeClassName]=\"activeClassName\"\n [level]=\"deepLevel\"\n [listStyle]=\"listStyle\"\n [items]=\"[item]\"\n [collapsingIconPosition]=\"collapsingIconPosition\"\n [inNavbar]=\"inNavbar\"\n [itemStyle]=\"'padding-left:'+item?.leftPadding+'px !important'\"\n [moreAction]=\"moreAction\"\n [hasConnectedLines]=\"hasConnectedLines\"\n [nameTemplate]=\"nameTemplate\"></tql-simple-list>\n </div>\n </div>\n <div class=\"hide-on-collapsed\">\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n </div>\n </ng-container>\n <ng-template #contentTemplate>\n <tql-simple-list\n class=\"level-{{deepLevel}}\"\n [activeClassName]=\"activeClassName\"\n [level]=\"deepLevel\"\n [listStyle]=\"listStyle\"\n [items]=\"[item]\"\n [collapsingIconPosition]=\"collapsingIconPosition\"\n [itemStyle]=\"'padding-left:'+item?.leftPadding+'px !important'\"\n [moreAction]=\"moreAction\"\n [hasConnectedLines]=\"hasConnectedLines\"\n [nameTemplate]=\"nameTemplate\"></tql-simple-list>\n <tql-nested-list\n *ngIf=\"item?.children?.length\"\n [listStyle]=\"listStyle\"\n [collapsingIconPosition]=\"collapsingIconPosition\"\n [nestedLeftPadding]=\"nestedLeftPadding\"\n [class.d-none]=\"!(item?.children && !item?.isCollapsed && !item?.hideExpandedChildren)\"\n [list]=\"item?.children\"\n [deepLevel]=\"deepLevel + 1\"\n [moreAction]=\"moreAction\"\n [hasConnectedLines]=\"hasConnectedLines\"\n [nameTemplate]=\"nameTemplate\"></tql-nested-list>\n </ng-template>\n</div>\n<!-- </ng-container>-->\n<!--</ng-container>-->\n\n","import {\n Component,\n ComponentFactoryResolver,\n EventEmitter,\n Injector,\n Input,\n OnInit,\n Output,\n Type,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport { TqlDynamicComponentHostDirective } from '../../../directives/tql-dynamic-component-host/tql-dynamic-component-host.directive';\nimport { IDynamicComponent, IDynamicItem } from '../../../constants';\nimport _ from 'lodash';\nimport { timer } from 'rxjs';\n\n@Component({\n selector: 'tql-dynamic-component',\n standalone: false,\n templateUrl: './tql-dynamic-component.component.html',\n styleUrls: ['./tql-dynamic-component.component.scss'],\n})\nexport class TqlDynamicComponentComponent implements OnInit {\n @ViewChild(TqlDynamicComponentHostDirective) viewHost: TqlDynamicComponentHostDirective;\n\n // item\n private _item: IDynamicItem;\n @Input()\n set item(v: IDynamicItem) {\n this._item = v;\n setTimeout(() => {\n this.addComponent();\n });\n }\n\n get item() {\n return this._item;\n }\n\n @Output() eventChanged: EventEmitter<any> = new EventEmitter<any>();\n\n constructor(\n private _ViewContainerRef: ViewContainerRef,\n private _Injector: Injector,\n private _ComponentFactoryResolver: ComponentFactoryResolver,\n ) {}\n\n ngOnInit(): void {}\n\n addComponent() {\n if (this.item && this.viewHost) {\n const componentFactory = this._ComponentFactoryResolver.resolveComponentFactory(this.item.component);\n\n const viewContainerRef = this.viewHost._ViewContainerRef;\n viewContainerRef.clear();\n\n const componentRef = viewContainerRef.createComponent(componentFactory);\n\n // update data for instance\n const instance = <IDynamicComponent>componentRef.instance;\n\n _.map(this.item.data, (x, k) => {\n (instance as Record<string, unknown>)[k] = x;\n });\n\n if (instance.onDataChange) {\n instance.onDataChange();\n }\n\n if (instance.eventChanged) {\n instance.eventChanged.subscribe((rs) => {\n // console.log(rs);\n this.eventChanged.emit(rs);\n });\n }\n }\n }\n}\n","<ng-template libTqlDynamicComponentHost></ng-template>\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { IListItem } from '../../../constants';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { take } from 'rxjs/operators';\nimport { DefaultComponent } from 'x-tql-service';\n\n@Component({\n selector: 'tql-progress-list',\n standalone: false,\n templateUrl: './tql-progress-list.component.html',\n styleUrls: ['./tql-progress-list.component.scss'],\n})\nexport class TqlProgressListComponent extends DefaultComponent implements OnInit {\n @Input() inNavbar: boolean = false;\n private _title: IListItem;\n private _children: IListItem[];\n\n @Input()\n set data(v: IListItem) {\n if (!!v) {\n this._title = v;\n this.idleClass = this._title?.iconClassName || '';\n this.generateStatusClass();\n this._children = v?.children || [];\n }\n }\n\n get title(): IListItem {\n return this._title;\n }\n\n get children(): IListItem[] {\n return this._children;\n }\n\n progressStatus: TqlProgressListComponent.ProgressStatus = new TqlProgressListComponent.ProgressStatus();\n\n @Output() init: EventEmitter<TqlProgressListComponent.ProgressStatus> =\n new EventEmitter<TqlProgressListComponent.ProgressStatus>();\n\n currentClass: string = '';\n idleClass: string = '';\n pendingClass: string = 'fa-spinner fal fa-pulse font-size-16px';\n completedClass: string = 'fas fa-box-check font-size-16px color-shamrock';\n\n constructor() {\n super();\n }\n\n ngOnInit(): void {\n this.init.emit(this.progressStatus);\n this.addSubscribes(\n this.progressStatus.progress$.subscribe((rs) => {\n this.generateStatusClass();\n }),\n );\n }\n\n generateStatusClass() {\n let statusClass = '';\n switch (this.progressStatus.progress$.value) {\n case TqlProgressListComponent.ENUM_STATUSES.IDLE:\n statusClass = this.idleClass;\n break;\n case TqlProgressListComponent.ENUM_STATUSES.PENDING:\n statusClass = this.pendingClass;\n break;\n case TqlProgressListComponent.ENUM_STATUSES.COMPLETED:\n statusClass = this.completedClass;\n break;\n }\n if (this.title?.iconClassName) {\n this.title.iconClassName = statusClass;\n }\n }\n}\n\nexport namespace TqlProgressListComponent {\n export enum ENUM_STATUSES {\n IDLE,\n PENDING,\n COMPLETED,\n }\n\n export class ProgressStatus {\n progress$: BehaviorSubject<ENUM_STATUSES> = new BehaviorSubject<ENUM_STATUSES>(ENUM_STATUSES.IDLE);\n\n constructor() {}\n\n setProgress(observable: Observable<any>) {\n this.progress$.next(ENUM_STATUSES.PENDING);\n observable.pipe(take(1)).subscribe((rs) => {\n this.progress$.next(rs ? ENUM_STATUSES.COMPLETED : ENUM_STATUSES.IDLE);\n });\n }\n }\n}\n","<tql-collapse-group [data]=\"title\" [inNavbar]=\"inNavbar\">\n <div class=\"d-flex flex-column w-100 progress-list-wrapper\"\n [class.in-navbar]=\"inNavbar\">\n <div *ngFor=\"let item of children; let $last = last\" class=\"position-relative w-100 progress-item\"\n routerLinkActive=\"active\"\n [routerLink]=\"item?.route\"\n [queryParams]=\"item?.routeQueryParams || {}\"\n [class.completed]=\"item?.active\">\n <div matRipple class=\"d-flex flex-gap-3 align-items-center h-100 cursor-pointer\">\n <div class=\"{{inNavbar?'pl-30px':'pl-2'}}\"><i class=\"{{item?.active?'fas':'fal'}} fa-arrow-circle-right icon\"></i>\n </div>\n <div class=\"flex-grow-1 text\">{{item?.name}}</div>\n </div>\n <ng-container *ngIf=\"!$last\">\n <ng-container *ngTemplateOutlet=\"dotLineTemplate\"></ng-container>\n </ng-container>\n </div>\n </div>\n</tql-collapse-group>\n\n<ng-template #dotLineTemplate>\n <div class=\"line\">\n <svg width=\"10px\" height=\"30px\" viewBox=\"0 0 10 30\">\n <line x1=\"5\" y1=\"5\" x2=\"5\" y2=\"40\" stroke=\"#5184AF\" stroke-width=\"2\"\n stroke-linecap=\"round\" stroke-dasharray=\"0, 7\"></line>\n </svg>\n </div>\n</ng-template>\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'tql-table',\n standalone: false,\n templateUrl: './tql-table.component.html',\n styleUrls: ['./tql-table.component.scss'],\n})\nexport class TqlTableComponent implements OnInit {\n constructor() {}\n\n ngOnInit(): void {}\n}\n","<p>tql-table works!</p>\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { ActionsConstant, ENUM_ACTION_KEYS, IListItem, IListItemOption, MicsConstant } from '../../../constants';\nimport _ from 'lodash';\nimport { v4 as uuidv4 } from 'uuid';\n\n@Component({\n selector: 'tql-listed-tree',\n standalone: false,\n templateUrl: './tql-listed-tree.component.html',\n styleUrls: ['./tql-listed-tree.component.scss'],\n})\nexport class TqlListedTreeComponent implements OnInit {\n @Output() init: EventEmitter<TqlListedTreeComponent.ITreeControl> =\n new EventEmitter<TqlListedTreeComponent.ITreeControl>();\n\n @Input() id: string;\n\n /*===DRAG & DROP===*/\n @Input() draggable: boolean = false;\n @Input() dropIds: string[];\n dragging: boolean = false;\n\n nodeList: IListItem[] = [];\n\n /**\n * offset for each level\n * @type {number}\n */\n @Input() levelOffset: number = 30;\n\n /**\n * selectable\n * @param v\n */\n _selectable: boolean = true;\n @Input()\n set selectable(v: boolean) {\n this._selectable = v;\n }\n\n get selectable() {\n return this._selectable;\n }\n\n /**\n * tree's nodes\n * @type {IListItem[]}\n * @private\n */\n _data: IListItem[];\n isSingleLevelTree: boolean = true;\n\n @Input()\n set data(v: IListItem[]) {\n this._data = v;\n // empty\n if (!this._data?.length) {\n this.init.emit(this.toTreeControl());\n return;\n }\n // check single level tree\n this.isSingleLevelTree = _.every(this._data, (x: IListItem) => !x.children || !x?.children.length);\n\n // massage node\n this.massageNode(this._data);\n\n // render\n setTimeout(() => {\n this.render();\n this.init.emit(this.toTreeControl());\n });\n }\n\n get data() {\n return this._data;\n }\n\n /*===SELECT===*/\n @Input() selectedClassName: string = 'color-white';\n @Output() selectedChanged: EventEmitter<IListItem | null> = new EventEmitter<IListItem | null>();\n _selected: IListItem | null;\n @Input()\n set selected(v: IListItem | null) {\n // console.log('selected: ', v);\n if (v && !this.isSelectedNode(v)) {\n this._selected = v;\n }\n }\n\n get selected() {\n return this._selected;\n }\n\n /*===NAME===*/\n @Input() hoverNameClassName: string = '';\n\n /*===CUSTOM COLLAPSE ICON===*/\n @Input() collapseClassName: string = 'fal fa-angle-right font-size-16px';\n @Input() expandClassName: string = 'fal fa-angle-down font-size-16px';\n @Input() hoverCollapseIconClassName: string = 'color-white';\n @Input() alwaysShowExpandCollapseIcon: boolean = true;\n\n // actions\n moreAction: IListItemOption = _.cloneDeep(ActionsConstant[ENUM_ACTION_KEYS.MORE]);\n\n constructor() {\n this.moreAction.className += ' action show-on-hover small';\n this.moreAction.iconClassName += ' font-size-18px';\n }\n\n ngOnInit(): void {}\n\n private render() {}\n\n /**\n *\n * @param level\n */\n calculatePaddingLeft(level: number) {\n return level * this.levelOffset + 'px';\n }\n\n /**\n * add level to each node\n * @param data\n * @param level\n * @param parent\n */\n massageNode(data: IListItem[], level: number = -1, parent: IListItem | null = null) {\n level++;\n _.map(data, (x: IListItem) => {\n x.level = level;\n this.nodeList.push(x);\n\n // set id\n if (!x?.id) {\n x.id = uuidv4();\n }\n // set parent\n x.parent = parent;\n\n // actions\n _.map(x?.options, (y) => {\n y.className += ' action';\n if (y.showWhenHover) {\n y.className += ' show-on-hover';\n }\n });\n // set isExpanded\n if (_.isUndefined(x.isExpanded)) {\n x.isExpanded = false;\n }\n // set draggable\n if (this.draggable) {\n if (_.isUndefined(x.draggable)) {\n x.draggable = true;\n }\n }\n // selectable\n if (this.selectable) {\n if (_.isUndefined(x.selectable)) {\n x.selectable = true;\n }\n }\n if (x?.children?.length) {\n this.massageNode(x?.children, level, x);\n }\n if (!!x.onClick && x.onClick === MicsConstant.COLLAPSE_EXPAND_FUNCTION) {\n x.onClick = () => {\n this.toggleCollapseExpand(x);\n };\n }\n });\n }\n\n toggleCollapseExpand(node: IListItem) {\n node.isExpanded = !node?.isExpanded;\n // if (this.treeControl.isExpanded(node)) {\n // this.treeControl.collapse(node);\n // node.isExpanded = false;\n // this.onEmitEvent(TqlTreeCore.CollapseEvent, { node: node });\n // } else {\n // this.treeControl.expand(node);\n // node.isExpanded = true;\n // this.onEmitEvent(TqlTreeCore.ExpandEvent, { node: node });\n // }\n }\n\n isSelectedNode(node: IListItem) {\n return this.selected?.id === node?.id;\n }\n\n onClick(node: IListItem) {\n this.selected = node;\n this.selectedChanged.emit(this.selected);\n }\n\n toTreeControl(): TqlListedTreeComponent.ITreeControl {\n return {\n data: this.data,\n collapseAll: this.collapseAll,\n expandAll: this.expandAll,\n };\n }\n\n collapseAll() {\n _.map(this.nodeList, (x) => {\n x.isExpanded = false;\n });\n }\n\n expandAll() {\n _.map(this.nodeList, (x) => {\n x.isExpanded = true;\n });\n }\n}\n\nexport namespace TqlListedTreeComponent {\n export interface ITreeControl {\n data: IListItem[];\n collapseAll: Function;\n expandAll: Function;\n }\n}\n","<!--\n<div *ngFor=\"let item of list;let $index=index;\">\n &lt;!&ndash;not in navbar&ndash;&gt;\n <ng-container *ngIf=\"!inNavbar\">\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n </ng-container>\n &lt;!&ndash;in navbar&ndash;&gt;\n <ng-container *ngIf=\"inNavbar\">\n <div class=\"show-on-collapsed\">\n <div *ngIf=\"item?.children?.length\"\n (click)=\"onShowContent($event,$index)\"\n #myItems>\n <tql-simple-list\n class=\"level-{{deepLevel}}\"\n [items]=\"[item]\"\n [inNavbar]=\"inNavbar\"\n [itemStyle]=\"'padding-left:'+(getOffset()+nestedLeftPadding*deepLevel)+'px !important'\"\n [nameTemplate]=\"nameTemplate\"></tql-simple-list>\n <div class=\"d-flex has-group-hint align-items-center\">\n <i class=\"fal fa-angle-right font-size-12px \"></i>\n </div>\n </div>\n <div *ngIf=\"!item?.children?.length\">\n <tql-simple-list\n class=\"level-{{deepLevel}}\"\n [items]=\"[item]\"\n [inNavbar]=\"inNavbar\"\n [itemStyle]=\"'padding-left:'+(getOffset()+nestedLeftPadding*deepLevel)+'px !important'\"\n [nameTemplate]=\"nameTemplate\"></tql-simple-list>\n </div>\n\n </div>\n <div class=\"hide-on-collapsed\">\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n </div>\n </ng-container>\n <ng-template #contentTemplate>\n <tql-simple-list\n class=\"level-{{deepLevel}}\"\n [items]=\"[item]\"\n [itemStyle]=\"'padding-left:'+(getOffset()+nestedLeftPadding*deepLevel)+'px !important'\"\n [nameTemplate]=\"nameTemplate\"></tql-simple-list>\n <tql-nested-list\n [nestedLeftPadding]=\"nestedLeftPadding\"\n [class.d-none]=\"!(item?.children && !item?.isCollapsed)\"\n [list]=\"item?.children\" [level]=\"level - 1\"\n [deepLevel]=\"deepLevel + 1\"\n [nameTemplate]=\"nameTemplate\"></tql-nested-list>\n </ng-template>\n</div>\n\n-->\n<div class=\"tql-listed-tree-wrapper w-100 overflow-auto\">\n <ng-container *ngIf=\"!data?.length\">\n Tree is empty\n </ng-container>\n <ng-container *ngIf=\"data?.length\">\n <div *ngFor=\"let item of data;let $index=index;\">\n <ng-container *ngTemplateOutlet=\"branchTemplate; context:{node:item}\"></ng-container>\n </div>\n </ng-container>\n</div>\n\n<ng-template #branchTemplate let-node=\"node\">\n <ng-container *ngTemplateOutlet=\"nodeTemplate; context:{node:node, hasChild:node?.children?.length}\"></ng-container>\n <ng-container *ngIf=\"node?.children?.length\">\n <div *ngFor=\"let item of node?.children;let $index=index;\"\n [class.d-none]=\"!node?.isExpanded\">\n <ng-container *ngTemplateOutlet=\"branchTemplate; context:{node:item}\"></ng-container>\n </div>\n </ng-container>\n</ng-template>\n<ng-template #nodeTemplate let-node=\"node\" let-hasChild=\"hasChild\">\n <div class=\"node pl-3 cursor-pointer {{isSelectedNode(node)?selectedClassName:''}}\"\n [id]=\"node?.id\"\n [class.selected]=\"isSelectedNode(node)\"\n matRipple\n (click)=\"onClick(node)\">\n <div class=\"d-flex align-items-center\" [style.padding-left]=\"calculatePaddingLeft(node?.level)\">\n <div class=\"collapse-icon d-flex align-items-center cursor-pointer\"\n tql-hover-class=\"{{hoverCollapseIconClassName}}\"\n [class.invisible]=\"!hasChild && node?.level !== 0\"\n [class.disabled-half]=\"!hasChild\"\n [class.opacity-30]=\"!hasChild\"\n *ngIf=\"alwaysShowExpandCollapseIcon\"\n (click)=\"toggleCollapseExpand(node);$event.stopPropagation();\">\n <i class=\"{{node?.isExpanded?expandClassName:collapseClassName}}\"></i>\n </div>\n <ng-container *ngTemplateOutlet=\"nameTemplate; context:{node:node}\"></ng-container>\n <div class=\"flex-grow-1\"></div>\n <div class=\"d-flex actions-group align-items-center\">\n <!-- <ng-container *ngTemplateOutlet=\"draggableTemplate; context:{node:node}\"></ng-container>-->\n <!-- {{node?.options | json}}-->\n <ng-container *ngTemplateOutlet=\"optionsTemplate; context:{node:node}\"></ng-container>\n </div>\n </div>\n </div>\n</ng-template>\n\n<ng-template #nameTemplate let-node=\"node\">\n <div class=\"d-flex align-items-center flex-gap-2 name-group\" tql-hover-class=\"{{hoverNameClassName}}\">\n <div class=\"icon\" *ngIf=\"node?.iconClassName\">\n <i class=\"{{node?.iconClassName}}\"></i>\n </div>\n <div>{{node?.name}}</div>\n </div>\n</ng-template>\n\n<ng-template #optionsTemplate let-node=\"node\">\n <div class=\"actions-group\" *ngIf=\"node?.options?.length\">\n <tql-action-bar [list]=\"node?.options\" [action]=\"moreAction\" [data]=\"node\"></tql-action-bar>\n </div>\n</ng-template>\n","import {\n AfterViewInit,\n Component,\n EmbeddedViewRef,\n Injector,\n Input,\n TemplateRef,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport { TqlGlobalConfigService } from 'x-tql-service';\n\n@Component({\n selector: 'lib-tql-spin',\n standalone: false,\n templateUrl: './tql-spin.component.html',\n styleUrls: ['./tql-spin.component.scss'],\n})\nexport class TqlSpinComponent implements AfterViewInit {\n @ViewChild('container', { read: ViewContainerRef, static: false }) container: ViewContainerRef;\n\n @Input() opacity: number = 1;\n @Input() backgroundColor: string = '#FFF';\n @Input() spinTemplate: TemplateRef<any>;\n\n constructor(\n private _ViewContainerRef: ViewContainerRef,\n private _TqlGlobalConfigService: TqlGlobalConfigService,\n private _Injector: Injector,\n ) {}\n\n ngAfterViewInit() {\n const config = this._TqlGlobalConfigService.getConfig();\n if (!this.spinTemplate && config?.spinTemplate) {\n const parentDom = this.container.element.nativeElement;\n\n const componentRef = this.container.createComponent(this._TqlGlobalConfigService.getConfig().spinTemplate, {\n injector: this._Injector,\n });\n // clean\n parentDom.innerHTML = '';\n parentDom.appendChild((componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement);\n }\n }\n}\n","<div #container class=\"w-100 h-100 d-flex align-items-center justify-content-center tql-spin-content\"\n [style.background-color]=\"backgroundColor\"\n [style.opacity]=\"opacity\">\n <ng-container *ngIf=\"spinTemplate;else defaultTmp\">\n <ng-container *ngTemplateOutlet=\"spinTemplate\"></ng-container>\n </ng-container>\n <ng-template #defaultTmp>\n <mat-spinner [diameter]=\"50\"></mat-spinner>\n </ng-template>\n</div>\n","import {\n AfterViewInit,\n ApplicationRef,\n Directive,\n EmbeddedViewRef,\n Injector,\n Input,\n OnInit,\n TemplateRef,\n ViewContainerRef,\n} from '@angular/core';\nimport { TqlSpinComponent } from '../../components/template';\nimport { BehaviorSubject } from 'rxjs';\nimport { DefaultDirective } from 'x-tql-service';\n\n@Directive({\n selector: '[tqlSpin]',\n standalone: false,\n})\nexport class TqlSpinDirective extends DefaultDirective implements OnInit, AfterViewInit {\n @Input() opacity: number = 1;\n @Input() backgroundColor: string = '#FFF';\n @Input() delay: number = 0;\n @Input() spinTemplate: TemplateRef<any>;\n\n private _spinning: boolean = false;\n @Input() set spinning(v: boolean) {\n this._spinning = v;\n this.spin$.next(this._spinning);\n }\n\n get spinning() {\n return this._spinning;\n }\n\n private instance: TqlSpinComponent | null = null;\n private parentDom: any;\n private childDom: any;\n\n spin$: BehaviorSubject<boolean> = new BehaviorSubject(false);\n\n constructor(\n private _ViewContainerRef: ViewContainerRef,\n private _ApplicationRef: ApplicationRef,\n private _Injector: Injector,\n ) {\n super();\n }\n\n ngOnInit() {\n this.addComponent();\n this.addSubscribes(\n this.spin$.subscribe((spinning) => {\n this.toggleSpinning(spinning);\n }),\n );\n }\n\n ngAfterViewInit() {}\n\n /**\n * add dom\n */\n private addComponent() {\n if (!this.instance) {\n this.parentDom = this._ViewContainerRef.element.nativeElement;\n\n // === collapse ===\n // add collapse component\n const componentRef = this._ViewContainerRef.createComponent(TqlSpinComponent, {\n injector: this._Injector,\n });\n this.instance = componentRef.instance as TqlSpinComponent;\n this.updateInstance();\n\n // append dom to parent\n this.childDom = (componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\n // const divWrapper = document.createElement('div');\n // divWrapper.classList.add('content');\n // // // divWrapper.classList.add('overflow-hidden');\n // divWrapper.classList.add('w-100');\n // divWrapper.classList.add('h-100');\n // while (this.parentDom.childNodes.length > 0) {\n // divWrapper.appendChild(this.parentDom.childNodes[0]);\n // }\n // // divWrapper.append(this.parentDom.childNodes);\n // this.parentDom.appendChild(divWrapper);\n this.parentDom.appendChild(this.childDom);\n // set position relative\n this.parentDom.classList.add('tql-spin-wrapper');\n }\n }\n\n /**\n * update instance's data\n */\n private updateInstance() {\n if (this.instance) {\n this.instance.opacity = this.opacity;\n this.instance.backgroundColor = this.backgroundColor;\n this.instance.spinTemplate = this.spinTemplate;\n }\n }\n\n private toggleSpinning(spinning: boolean) {\n this.updateInstance();\n if (spinning) {\n this.parentDom.classList.add('spinning');\n } else {\n setTimeout(() => {\n this.parentDom.classList.remove('spinning');\n }, this.delay);\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TqlCollapseDirective } from './tql-collapse/tql-collapse.directive';\nimport { NgVarDirective } from './ng-var/ng-var.directive';\nimport { TqlDynamicComponentHostDirective } from './tql-dynamic-component-host/tql-dynamic-component-host.directive';\nimport { TqlResizableDirective } from './tql-resizable/tql-resizable.directive';\nimport { TqlHoverClassDirective } from './tql-hover-class/tql-hover-class.directive';\nimport { TqlTableFilterWidgetDirective } from './tql-table-filter-widget/tql-table-filter-widget.directive';\nimport { TqlResizedDirective } from './tql-resized/tql-resized.directive';\nimport { TqlSpinDirective } from './tql-spin/tql-spin.directive';\nimport { TqlClickOutsideDirective } from './tql-click-outside/tql-click-outside.directive';\n\n@NgModule({\n declarations: [\n TqlCollapseDirective,\n NgVarDirective,\n TqlDynamicComponentHostDirective,\n TqlResizableDirective,\n TqlHoverClassDirective,\n TqlTableFilterWidgetDirective,\n TqlResizedDirective,\n TqlSpinDirective,\n TqlClickOutsideDirective,\n ],\n exports: [\n TqlCollapseDirective,\n NgVarDirective,\n TqlDynamicComponentHostDirective,\n TqlResizableDirective,\n TqlHoverClassDirective,\n TqlTableFilterWidgetDirective,\n TqlResizedDirective,\n TqlSpinDirective,\n TqlClickOutsideDirective,\n ],\n imports: [CommonModule],\n})\nexport class DirectivesModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TqlNavbarComponent } from './tql-navbar/tql-navbar.component';\nimport { MaterialsModule } from 'x-tql-theme';\nimport { TqlNavbarLogoComponent } from './tql-navbar-logo/tql-navbar-logo.component';\nimport { TqlNavbarTitleComponent } from './tql-navbar-title/tql-navbar-title.component';\nimport { RouterModule } from '@angular/router';\nimport { BasicModule } from '../../basic/basic.module';\nimport { DirectivesModule } from '../../../directives/directives.module';\n\n@NgModule({\n declarations: [TqlNavbarComponent, TqlNavbarLogoComponent, TqlNavbarTitleComponent],\n imports: [CommonModule, RouterModule, MaterialsModule, BasicModule, DirectivesModule],\n exports: [TqlNavbarComponent, TqlNavbarLogoComponent, TqlNavbarTitleComponent],\n})\nexport class TqlNavbarModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MaterialsModule } from 'x-tql-theme';\nimport { TqlSimpleListComponent } from './tql-simple-list/tql-simple-list.component';\nimport { TqlActionDrawerComponent } from './tql-action-drawer/tql-action-drawer.component';\nimport { TqlPanelComponent } from './tql-panel/tql-panel.component';\nimport { TqlBreadcrumbComponent } from './tql-breadcrumb/tql-breadcrumb.component';\nimport { TqlNavbarModule } from './tql-navbar';\nimport { TqlHeaderComponent } from './tql-header/tql-header.component';\nimport { TqlCollapseGroupComponent } from './tql-collapse-group/tql-collapse-group.component';\nimport { TqlStatusListComponent } from './tql-status-list/tql-status-list.component';\nimport { TqlHighlightListComponent } from './tql-highlight-list/tql-highlight-list.component';\nimport { TqlImageCardComponent } from './tql-image-card/tql-image-card.component';\nimport { TqlSimpleCardComponent } from './tql-simple-card/tql-simple-card.component';\nimport { TqlRouteTreeComponent, TqlTreeComponent } from './tql-tree/tql-tree.component';\nimport { RouterModule } from '@angular/router';\nimport { DirectivesModule } from '../../directives/directives.module';\nimport { TqlActionBarComponent } from './tql-action-bar/tql-action-bar.component';\nimport { TqlTabsHeaderComponent } from './tql-tabs-header/tql-tabs-header.component';\nimport { CodemirrorModule } from '@ctrl/ngx-codemirror';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { TqlNestedListComponent } from './tql-nested-list/tql-nested-list.component';\nimport { TqlDynamicComponentComponent } from './tql-dynamic-component/tql-dynamic-component.component';\nimport { TqlProgressListComponent } from './tql-progress-list/tql-progress-list.component';\nimport { TqlTableComponent } from './tql-table/tql-table.component';\nimport { TqlListedTreeComponent } from './tql-listed-tree/tql-listed-tree.component';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { TqlSpinComponent } from './tql-spin/tql-spin.component';\nimport { TqlActionBarMenuComponent } from './tql-action-bar-menu/tql-action-bar-menu.component';\nimport { TqlCodeEditorComponent } from './tql-code-editor/tql-code-editor.component';\n\n@NgModule({\n declarations: [\n TqlSimpleListComponent,\n TqlActionDrawerComponent,\n TqlPanelComponent,\n TqlBreadcrumbComponent,\n TqlHeaderComponent,\n TqlCollapseGroupComponent,\n TqlStatusListComponent,\n TqlHighlightListComponent,\n TqlImageCardComponent,\n TqlSimpleCardComponent,\n TqlTreeComponent,\n TqlRouteTreeComponent,\n TqlTabsHeaderComponent,\n TqlActionBarComponent,\n TqlNestedListComponent,\n TqlDynamicComponentComponent,\n TqlProgressListComponent,\n TqlTableComponent,\n TqlListedTreeComponent,\n TqlSpinComponent,\n TqlActionBarMenuComponent,\n TqlCodeEditorComponent,\n ],\n imports: [\n CommonModule,\n MaterialsModule,\n TqlNavbarModule,\n DirectivesModule,\n RouterModule,\n CodemirrorModule,\n ReactiveFormsModule,\n TranslateModule,\n ],\n exports: [\n TqlSimpleListComponent,\n TqlActionDrawerComponent,\n TqlPanelComponent,\n TqlBreadcrumbComponent,\n TqlHeaderComponent,\n TqlCollapseGroupComponent,\n TqlStatusListComponent,\n TqlHighlightListComponent,\n TqlImageCardComponent,\n TqlSimpleCardComponent,\n TqlTreeComponent,\n TqlRouteTreeComponent,\n TqlNavbarModule,\n TqlTabsHeaderComponent,\n TqlActionBarComponent,\n TqlNestedListComponent,\n TqlDynamicComponentComponent,\n TqlProgressListComponent,\n TqlTableComponent,\n TqlListedTreeComponent,\n TqlSpinComponent,\n TqlCodeEditorComponent,\n ],\n})\nexport class TemplateModule {}\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'lib-tql-empty-layout',\n standalone: false,\n templateUrl: './tql-empty-layout.component.html',\n styleUrls: ['./tql-empty-layout.component.scss']\n})\nexport class TqlEmptyLayoutComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","<p>tql-empty-layout works!</p>\n","import { Component, OnInit } from '@angular/core';\nimport { TqlHeaderControllerService } from '../../../controllers';\n\n@Component({\n selector: 'tql-header-layout',\n standalone: false,\n templateUrl: './tql-header-layout.component.html',\n styleUrls: ['./tql-header-layout.component.scss'],\n})\nexport class TqlHeaderLayoutComponent implements OnInit {\n contentComponent: any;\n\n constructor(private _TqlHeaderControllerService: TqlHeaderControllerService) {}\n\n ngOnInit(): void {\n this._TqlHeaderControllerService._Observable_Current_Header_Component.subscribe((rs) => {\n if (rs) {\n this.contentComponent = rs;\n }\n });\n }\n}\n","<tql-header>\n <div class=\"main-wrapper\">\n <div class=\"top-bar d-flex align-items-center flex-gap-3\">\n <div *ngIf=\"contentComponent\" class=\"overflow-auto\">\n <ng-container *ngComponentOutlet=\"contentComponent\"></ng-container>\n </div>\n <tql-breadcrumb [hasPrefix]=\"true\"></tql-breadcrumb>\n <div class=\"flex-grow-1\"></div>\n <div>\n <i class=\"fal fa-search font-size-21px color-soft-blue disabled-half\"></i>\n </div>\n </div>\n </div>\n</tql-header>\n\n\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ComponentFactoryResolver,\n Injector,\n Input,\n OnInit,\n Type,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { DynamicDataModel, DefaultComponent } from 'x-tql-service';\nimport { IListItem, INavbarComponent } from '../../../constants/interface';\nimport { TqlNavbarControllerService } from '../../../controllers/tql-navbar/tql-navbar-controller.service';\nimport { combineLatest } from 'rxjs';\n\n@Component({\n selector: 'tql-navbar-layout',\n standalone: false,\n templateUrl: './tql-navbar-layout.component.html',\n styleUrls: ['./tql-navbar-layout.component.scss'],\n})\nexport class TqlNavbarLayoutComponent extends DefaultComponent implements OnInit, AfterViewInit {\n @ViewChild('dynamicElement', { read: ViewContainerRef }) dynamicElement: ViewContainerRef;\n subMenus: IListItem[] = [\n {\n name: 'Switch Dashboard',\n iconClassName: 'fal fa-grip-horizontal font-size-18px',\n disabled: true,\n className: 'side-padding',\n children: [\n {\n name: 'Demos Dashboard',\n route: ['/', 'dashboards', 'demos'],\n iconClassName: 'fad fa-vial',\n className: 'btn-blue',\n actionName: 'Go to dashboard',\n children: [],\n },\n {\n name: 'UI Components Dashboard',\n route: ['/', 'dashboards', 'ui-components'],\n iconClassName: 'fad fa-game-board-alt',\n className: 'btn-blue',\n actionName: 'Go to dashboard',\n children: [],\n },\n ],\n },\n {\n name: 'Notifications',\n iconClassName: 'fal fa-bell font-size-18px',\n disabled: true,\n className: 'side-padding',\n },\n ];\n\n contentComponent: any;\n menuComponent: DynamicDataModel;\n instance: INavbarComponent;\n navbarComponent: Component | null;\n\n constructor(\n private _Router: Router,\n private _Injector: Injector,\n private _ComponentFactoryResolver: ComponentFactoryResolver,\n private _TqlNavbarControllerService: TqlNavbarControllerService,\n private _ChangeDetectorRef: ChangeDetectorRef,\n ) {\n super();\n this.addSubscribes(\n combineLatest([\n this._Router.events,\n this._TqlNavbarControllerService._Observable_Current_Nav_Component,\n ]).subscribe(([events, navbar]) => {\n if (events instanceof NavigationEnd) {\n setTimeout(() => {\n console.log(navbar);\n if (this.navbarComponent !== navbar) {\n this.navbarComponent = navbar;\n this.addComponent(this.navbarComponent);\n }\n });\n }\n }),\n );\n }\n\n ngOnInit(): void {}\n\n ngAfterViewInit() {\n // this._TqlNavbarControllerService._Observable_Current_Nav_Component\n // .subscribe((rs) => {\n // // console.log(rs);\n // this.addComponent(rs);\n // });\n\n // TODO: Harry - Hard code for UM\n this._TqlNavbarControllerService._Observable_Current_Sub_Menu_Navbar.subscribe((rs) => {\n if (!!rs) {\n this.subMenus = rs as IListItem[];\n this._ChangeDetectorRef.detectChanges();\n }\n });\n }\n\n addComponent(component: Component | null) {\n console.log('New NAVBAR');\n if (this.instance) {\n try {\n this.instance.reset();\n } catch (e) {}\n }\n if (component) {\n const componentFactory = this._ComponentFactoryResolver.resolveComponentFactory(component as Type<unknown>);\n\n const viewContainerRef = this.dynamicElement;\n viewContainerRef.clear();\n\n const componentRef = viewContainerRef.createComponent(componentFactory);\n\n this.instance = <INavbarComponent>componentRef.instance;\n this._TqlNavbarControllerService._Observable_Current_Preview_Item.next(null);\n }\n }\n\n logout() {\n localStorage.removeItem('login');\n this._Router.navigate(['/', 'auth', 'log-out']);\n }\n\n goToProfile() {\n this._Router.navigate(['/', 'dashboards', 'account', 'profile']);\n }\n}\n","<tql-navbar>\n <div class=\" w-100 h-100 d-flex flex-column overflow-hidden\">\n <!--logo-->\n <tql-navbar-logo\n [logoRoute]=\"['/']\"\n [logo]=\"'assets/images/logo/atomiton-icon.png'\"\n [collapseLogo]=\"'assets/images/icons/logo-mobile.png'\"></tql-navbar-logo>\n <hr>\n\n <!--dynamic content-->\n <div class=\"overflow-y-auto\">\n <ng-container #dynamicElement></ng-container>\n </div>\n <div class=\"flex-grow-1\"></div>\n <hr *ngIf=\"subMenus?.length\">\n <div>\n <tql-simple-list [items]=\"subMenus\" [inNavbar]=\"true\"></tql-simple-list>\n </div>\n <hr>\n <div class=\"account cursor-pointer d-flex side-padding align-items-center flex-gap-3\" mat-ripple\n [matMenuTriggerFor]=\"accountMenu\">\n <img src=\"assets/images/icons/avatar.jpg\" class=\"m-auto\" alt=\"avatar\"/>\n <span\n class=\"collapse-hide color-soft-blue flex-grow-1 text-truncate\">User</span>\n </div>\n <mat-menu #accountMenu=\"matMenu\">\n <button mat-menu-item (click)=\"logout()\">Logout</button>\n <button mat-menu-item (click)=\"goToProfile()\">Profile</button>\n </mat-menu>\n </div>\n</tql-navbar>\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'tql-main-layout',\n standalone: false,\n templateUrl: './tql-main-layout.component.html',\n styleUrls: ['./tql-main-layout.component.scss']\n})\nexport class TqlMainLayoutComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","<mat-sidenav-container>\n <mat-sidenav-content>\n <div class=\"dashboards-wrapper d-flex\">\n <!-- Start Navigation Layout -->\n <div>\n <tql-navbar-layout></tql-navbar-layout>\n </div>\n <!-- End Navigation Layout -->\n\n <div class=\"flex-grow-1 flex-shrink-1 overflow-auto d-flex flex-column\">\n <div class=\"flex-grow-1 flex-shrink-1 d-flex flex-column overflow-hidden\">\n\n <!-- Start Header Layout -->\n <div>\n <tql-header-layout></tql-header-layout>\n </div>\n <!-- End Header Layout -->\n\n <div class=\"d-flex flex-grow-1 flex-shrink-1 overflow-auto\">\n <!--TODO-->\n\n <!-- Start Content -->\n <div class=\"flex-shrink-1 flex-grow-1 overflow-y-auto \">\n <router-outlet></router-outlet>\n </div>\n <!-- End Content -->\n\n <!-- Start Dynamic Right Side -->\n <!-- <div>-->\n <!-- <div *ngIf=\"dynamicDataComponent\" class=\"dynamic-box h-100\">-->\n <!-- <app-dc-main [data]=\"dynamicDataComponent\"></app-dc-main>-->\n <!-- </div>-->\n <!-- </div>-->\n <!-- End Dynamic Right Side -->\n\n </div>\n </div>\n\n <!-- Start Footer Layout -->\n<!-- <div>-->\n<!-- <tql-footer-layout></tql-footer-layout>-->\n<!-- </div>-->\n <!-- End Footer Layout -->\n\n </div>\n </div>\n </mat-sidenav-content>\n\n <!-- Start A-stack logs -->\n <!--TODO-->\n <!-- <mat-sidenav position=\"end\" mode=\"over\" [(opened)]=\"isOpenLog\" (closed)=\"closeSideNav()\">-->\n <!-- <ng-container *ngComponentOutlet=\"logComponent\"></ng-container>-->\n <!-- </mat-sidenav>-->\n <!-- End A-stack logs -->\n</mat-sidenav-container>\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {TqlEmptyLayoutComponent} from './tql-empty-layout/tql-empty-layout.component';\nimport {TqlHeaderLayoutComponent} from './tql-header-layout/tql-header-layout.component';\nimport {TqlMainLayoutComponent} from './tql-main-layout/tql-main-layout.component';\nimport {TqlNavbarLayoutComponent} from './tql-navbar-layout/tql-navbar-layout.component';\nimport {RouterModule} from '@angular/router';\nimport {MaterialsModule} from 'x-tql-theme';\nimport {TemplateModule} from '../template/template.module';\nimport {TqlNavbarModule} from '../template/tql-navbar/tql-navbar.module';\n\n\n@NgModule({\n declarations: [\n TqlEmptyLayoutComponent,\n TqlHeaderLayoutComponent,\n TqlMainLayoutComponent,\n TqlNavbarLayoutComponent,\n ],\n imports: [\n CommonModule,\n RouterModule,\n MaterialsModule,\n TemplateModule,\n TqlNavbarModule\n ],\n exports: [\n TqlEmptyLayoutComponent,\n TqlHeaderLayoutComponent,\n TqlMainLayoutComponent,\n TqlNavbarLayoutComponent,\n ]\n})\nexport class LayoutsModule {\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {BasicModule} from './basic/basic.module';\nimport {TemplateModule} from './template/template.module';\nimport {LayoutsModule} from './layouts/layouts.module';\n\n\n@NgModule({\n declarations: [],\n imports: [\n CommonModule\n ],\n exports: [BasicModule, TemplateModule, LayoutsModule]\n})\nexport class ComponentsModule {\n}\n","import { NgModule } from '@angular/core';\nimport { PipesModule } from './pipes/pipes.module';\nimport { ComponentsModule } from './components/components.module';\nimport { DirectivesModule } from './directives/directives.module';\n\n@NgModule({\n declarations: [],\n imports: [PipesModule, ComponentsModule, DirectivesModule],\n exports: [PipesModule, ComponentsModule, DirectivesModule],\n})\nexport class TqlComponentModule {}\n","import { AbstractControl, ValidatorFn } from '@angular/forms';\n\nexport const customPatternValid = (config: any): ValidatorFn => {\n return (control: AbstractControl) => {\n let urlRegEx: RegExp = config.pattern;\n if (control.value && !control.value.match(urlRegEx)) {\n return {\n [config?.key]: config?.message || true,\n };\n } else {\n return null;\n }\n };\n};\n","import { ValidatorFn } from '@angular/forms';\nimport { customPatternValid } from './funtions';\n\nexport const emailValidator: ValidatorFn = customPatternValid({\n pattern: /^[\\w-\\.]+@([\\w-]+\\.)+[\\w-]{2,4}$/g,\n key: 'email',\n});\n","import { AbstractControl, FormControl, ValidatorFn } from '@angular/forms';\n\nexport const noWhitespaceValidator: ValidatorFn = (control: AbstractControl) => {\n return control.value && (typeof control.value === 'string' ? control.value!.trim() : control.value) !== ''\n ? null\n : { whitespace: true };\n};\n","/*\n * Public API Surface of tql-component\n */\n\nexport * from './lib/tql-component.module';\n\n/*pipe*/\nexport * from './lib/pipes/pipes.module';\nexport * from './lib/pipes/tql-url-safe/tql-url-safe.pipe';\nexport * from './lib/pipes/tql-highlight/tql-highlight.pipe';\nexport * from './lib/pipes/tql-order-by/tql-order-by.pipe';\nexport * from './lib/pipes/tql-key-value-order/tql-key-value-order.pipe';\n\n/*validators*/\nexport * from './lib/validators';\n\n/*components*/\nexport * from './lib/components/components.module';\n\n// basic\nexport * from './lib/components/basic/basic.module';\nexport * from './lib/components/basic/tql-input/tql-input.component';\nexport * from './lib/components/basic/tql-select/tql-select.component';\nexport * from './lib/components/basic/tql-collapse/tql-collapse.component';\nexport * from './lib/components/basic/tql-loading-bar/tql-loading-bar.component';\nexport * from './lib/components/basic/tql-tab/tql-tab.component';\nexport * from './lib/components/basic/tql-resizable/tql-resizable.component';\nexport * from './lib/components/basic/tql-spinner/tql-spinner.component';\nexport * from './lib/components/basic/tql-table-filter-widget/tql-table-filter-widget.component';\n\n// template\nexport * from './lib/components/template';\n\n// layout\nexport * from './lib/components/layouts';\n\n/* directives */\nexport * from './lib/directives/directives.module';\nexport * from './lib/directives/tql-collapse/tql-collapse.directive';\nexport * from './lib/directives/ng-var/ng-var.directive';\nexport * from './lib/directives/tql-dynamic-component-host/tql-dynamic-component-host.directive';\nexport * from './lib/directives/tql-resizable/tql-resizable.directive';\nexport * from './lib/directives/tql-hover-class/tql-hover-class.directive';\nexport * from './lib/directives/tql-table-filter-widget/tql-table-filter-widget.directive';\nexport * from './lib/directives/tql-resized/tql-resized.directive';\nexport * from './lib/directives/tql-spin/tql-spin.directive';\nexport * from './lib/directives/tql-click-outside/tql-click-outside.directive';\n\n/* constant */\nexport * from './lib/constants';\n\n/* controller */\nexport * from './lib/controllers';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["_","uuidv4","i1","i2","i3","i1.TqlCollapseControllerService","i4","i5","i7.TqlInputComponent","i5.TqlActionBarMenuComponent","i6.NgVarDirective","i7","i8.TqlActionBarComponent","i4.TqlCollapseDirective","i5.TqlResizableDirective","i6.TqlActionBarComponent","i2.TqlNavbarControllerService","i5.TqlClickOutsideDirective","i1.TqlNavbarControllerService","i6","i3.TqlSimpleListComponent","i1.TqlDynamicComponentHostDirective","i4.TqlCollapseGroupComponent","i3.TqlHoverClassDirective","i4.TqlActionBarComponent","i1.TqlHeaderControllerService","i3.TqlBreadcrumbComponent","i4.TqlHeaderComponent","i6.TqlSimpleListComponent","i7.TqlNavbarComponent","i8.TqlNavbarLogoComponent","i3.TqlHeaderLayoutComponent","i4.TqlNavbarLayoutComponent"],"mappings":"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"}