nuxeo-development-framework 4.3.0 → 4.3.2

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 (216) hide show
  1. package/bundles/nuxeo-development-framework.umd.js +4364 -3036
  2. package/bundles/nuxeo-development-framework.umd.js.map +1 -1
  3. package/esm2015/lib/components/charts/chart.const.js +3 -0
  4. package/esm2015/lib/components/charts/chart.token.js +3 -0
  5. package/esm2015/lib/components/charts/charts.module.js +19 -0
  6. package/esm2015/lib/components/charts/components/base-chart.component.js +44 -0
  7. package/esm2015/lib/components/charts/components/chart.component.js +135 -0
  8. package/esm2015/lib/components/charts/components/data-chart.component.js +169 -0
  9. package/esm2015/lib/components/charts/components/index.js +4 -0
  10. package/esm2015/lib/components/charts/defaults/bar.js +18 -0
  11. package/esm2015/lib/components/charts/defaults/doughnut.js +18 -0
  12. package/esm2015/lib/components/charts/defaults/index.js +5 -0
  13. package/esm2015/lib/components/charts/defaults/line.js +36 -0
  14. package/esm2015/lib/components/charts/defaults/pie.js +20 -0
  15. package/esm2015/lib/components/charts/index.js +10 -0
  16. package/esm2015/lib/components/charts/models/index.js +5 -0
  17. package/esm2015/lib/components/charts/models/options.js +2 -0
  18. package/esm2015/lib/components/charts/models/plugins-options.js +2 -0
  19. package/esm2015/lib/components/charts/models/response.js +2 -0
  20. package/esm2015/lib/components/charts/models/statistic-request-config.js +2 -0
  21. package/esm2015/lib/components/charts/plugins/doughnut-center-text.js +25 -0
  22. package/esm2015/lib/components/charts/plugins/doughnut-empty-state.js +34 -0
  23. package/esm2015/lib/components/charts/plugins/index.js +4 -0
  24. package/esm2015/lib/components/charts/plugins/legend-margin.js +16 -0
  25. package/esm2015/lib/components/charts/services/index.js +2 -0
  26. package/esm2015/lib/components/charts/services/statistic.service.js +75 -0
  27. package/esm2015/lib/components/charts/utility/colors.js +79 -0
  28. package/esm2015/lib/components/charts/utility/common.js +7 -0
  29. package/esm2015/lib/components/charts/utility/index.js +3 -0
  30. package/esm2015/lib/components/comments/comments.module.js +9 -5
  31. package/esm2015/lib/components/comments/components/comment-item/comment-item.component.js +30 -23
  32. package/esm2015/lib/components/comments/components/edit-delete-modal/edit-delete-modal.component.js +28 -34
  33. package/esm2015/lib/components/correspondence-relation/components/correspondence-relation/correspondence-relation.component.js +22 -22
  34. package/esm2015/lib/components/correspondence-relation/components/correspondence-relation-create-form/correspondence-relation-create-form.component.js +16 -18
  35. package/esm2015/lib/components/correspondence-relation/components/correspondence-relation-list/correspondence-relation-list.component.js +6 -6
  36. package/esm2015/lib/components/correspondence-relation/components/versions/versions.component.js +3 -2
  37. package/esm2015/lib/components/correspondence-relation/correspondence-relation.module.js +33 -29
  38. package/esm2015/lib/components/correspondence-relation/services/correspondence-realation.service.js +32 -24
  39. package/esm2015/lib/components/diagrams/components/connection-label.component.js +1 -1
  40. package/esm2015/lib/components/diagrams/directive/diagram.directive.js +2 -3
  41. package/esm2015/lib/components/diagrams/editor/customize.js +11 -14
  42. package/esm2015/lib/components/diagrams/editor/overrides/connection-path.transformers.js +21 -34
  43. package/esm2015/lib/components/diagrams/editor/path-plugin.js +11 -10
  44. package/esm2015/lib/components/diagrams/models/base-node.model.js +2 -1
  45. package/esm2015/lib/components/diagrams/models/connection.model.js +1 -1
  46. package/esm2015/lib/components/diagrams/types/common.type.js +1 -1
  47. package/esm2015/lib/components/diagrams/types/diagram-config.type.js +1 -1
  48. package/esm2015/lib/components/diagrams/types/node-definition.js +1 -1
  49. package/esm2015/lib/components/diagrams/utilities/random.js +9 -3
  50. package/esm2015/lib/components/documents/components/document-list/documents-list.component.js +9 -11
  51. package/esm2015/lib/components/dynamic-chart/dynamic-chart/dynamic-chart.component.js +45 -40
  52. package/esm2015/lib/components/dynamic-chart/dynamic-chart.module.js +21 -17
  53. package/esm2015/lib/components/dynamic-chart/services/chart-data.service.js +98 -92
  54. package/esm2015/lib/components/dynamic-fields-renderer/dynamic-fields-renderer/dynamic-fields-renderer.component.js +22 -10
  55. package/esm2015/lib/components/dynamic-fields-renderer/dynamic-fields-renderer.module.js +8 -4
  56. package/esm2015/lib/components/dynamic-form/components/department-form/department-form.component.js +28 -29
  57. package/esm2015/lib/components/dynamic-form/components/dynamic-form-department/dynamic-form-department.component.js +16 -3
  58. package/esm2015/lib/components/dynamic-form/components/dynamic-form-department/services/department-management.service.js +26 -18
  59. package/esm2015/lib/components/dynamic-form/components/dynamic-form-textarea/dynamic-form-textarea.component.js +2 -2
  60. package/esm2015/lib/components/dynamic-form/components/dynamic-form-treeview-select/dropdown-treeview-select.component.js +4 -2
  61. package/esm2015/lib/components/dynamic-form/dynamic-form.module.js +13 -10
  62. package/esm2015/lib/components/dynamic-search/dynamic-search/dynamic-search.component.js +3 -3
  63. package/esm2015/lib/components/dynamic-table/dynamic-table/dynamic-table.component.js +68 -29
  64. package/esm2015/lib/components/file-manger/components/add-to-collection/add-to-collection.component.js +60 -42
  65. package/esm2015/lib/components/file-manger/components/copy/copy.component.js +66 -36
  66. package/esm2015/lib/components/file-manger/components/create-directory/create-directory.component.js +40 -13
  67. package/esm2015/lib/components/file-manger/components/create-modal/create-modal.component.js +238 -200
  68. package/esm2015/lib/components/file-manger/components/creation-type/creation-type.component.js +14 -12
  69. package/esm2015/lib/components/file-manger/components/delete/delete.component.js +49 -20
  70. package/esm2015/lib/components/file-manger/components/folder-modal/folder-modal.component.js +45 -43
  71. package/esm2015/lib/components/file-manger/components/loan-request/loan-request.component.js +63 -36
  72. package/esm2015/lib/components/file-manger/components/move/move.component.js +61 -31
  73. package/esm2015/lib/components/file-manger/components/publish-dialog/publish-dialog.component.js +81 -81
  74. package/esm2015/lib/components/file-manger/components/rename/rename.component.js +58 -30
  75. package/esm2015/lib/components/file-manger/components/scan-modal/scan-modal.component.js +99 -66
  76. package/esm2015/lib/components/file-manger/components/share-dialog/share-dialog.component.js +95 -75
  77. package/esm2015/lib/components/file-manger/components/template-modal/template-modal.component.js +15 -11
  78. package/esm2015/lib/components/file-manger/components/transfer-doc/transfer-doc.component.js +54 -23
  79. package/esm2015/lib/components/file-manger/components/update-modal/update-modal.component.js +24 -24
  80. package/esm2015/lib/components/file-manger/file-manager.abstract.js +266 -264
  81. package/esm2015/lib/components/file-manger/file-manger.module.js +39 -35
  82. package/esm2015/lib/components/filter/filter/filter.component.js +1 -1
  83. package/esm2015/lib/components/notifications/components/base-notifications.component.js +2 -16
  84. package/esm2015/lib/components/notifications/components/notification-item/notification-item.component.js +3 -3
  85. package/esm2015/lib/components/notifications/components/notifications-button/notifications-button.component.js +24 -4
  86. package/esm2015/lib/components/notifications/containers/notifications-settings-container/notifications-settings-container.component.js +3 -2
  87. package/esm2015/lib/components/notifications/models/notification-message.mode.js +1 -1
  88. package/esm2015/lib/components/notifications/models/notifications-list-options.js +1 -1
  89. package/esm2015/lib/components/notifications/services/notifications.service.js +23 -17
  90. package/esm2015/lib/components/notifications/services/socket.service.js +13 -5
  91. package/esm2015/lib/components/permissions/add-permissions-dialog/add-permissions-dialog.component.js +107 -90
  92. package/esm2015/lib/components/permissions/permissions/permissions.component.js +100 -57
  93. package/esm2015/lib/components/permissions/permissions-template/permissions-template.component.js +36 -52
  94. package/esm2015/lib/components/permissions/permissions.module.js +23 -7
  95. package/esm2015/lib/components/select-users-by-department/select-users-by-departments/select-users-by-departments.component.js +1 -1
  96. package/esm2015/lib/components/spell-checker-field/spell-checker-field.module.js +37 -0
  97. package/esm2015/lib/components/spell-checker-field/spell-checker-text-field/spell-checker-text-field.component.js +88 -0
  98. package/esm2015/lib/components/table/dynamic-component.js +59 -0
  99. package/esm2015/lib/components/table/page-sizes-list/page-sizes-list.component.js +38 -0
  100. package/esm2015/lib/components/table/table/table.component.js +39 -21
  101. package/esm2015/lib/components/table/table.module.js +22 -18
  102. package/esm2015/lib/components/vocabulary/services/vocabulary-api.service.js +11 -6
  103. package/esm2015/lib/configuration/app-config.service.js +7 -6
  104. package/esm2015/lib/core/core.module.js +4 -2
  105. package/esm2015/lib/core/env/env-manager.js +9 -1
  106. package/esm2015/lib/core/services/callApi/call-api.service.js +23 -6
  107. package/esm2015/lib/shared/components/base/base-selector.component.js +1 -1
  108. package/esm2015/lib/shared/components/base/base.component.js +5 -5
  109. package/esm2015/lib/shared/components/nuxeo-dialog/confirmation/ndf-confirmation-dialog.component.js +1 -1
  110. package/esm2015/lib/shared/components/nuxeo-dialog/nuxeo-dialog.module.js +8 -4
  111. package/esm2015/lib/shared/components/nuxeo-dialog/nuxeo.dialog.js +11 -7
  112. package/esm2015/lib/shared/services/base/http-base.service.js +10 -19
  113. package/esm2015/lib/shared-services/dialog-mangment.service.js +66 -21
  114. package/esm2015/lib/shared-services/shared-docs.service.js +20 -26
  115. package/esm2015/public-api.js +8 -2
  116. package/fesm2015/nuxeo-development-framework.js +3560 -2282
  117. package/fesm2015/nuxeo-development-framework.js.map +1 -1
  118. package/lib/components/charts/chart.const.d.ts +2 -0
  119. package/lib/components/charts/chart.token.d.ts +8 -0
  120. package/lib/components/charts/charts.module.d.ts +9 -0
  121. package/lib/components/charts/components/base-chart.component.d.ts +21 -0
  122. package/lib/components/charts/components/chart.component.d.ts +28 -0
  123. package/lib/components/charts/components/data-chart.component.d.ts +39 -0
  124. package/lib/components/charts/components/index.d.ts +3 -0
  125. package/lib/components/charts/defaults/bar.d.ts +2 -0
  126. package/lib/components/charts/defaults/doughnut.d.ts +2 -0
  127. package/lib/components/charts/defaults/index.d.ts +4 -0
  128. package/lib/components/charts/defaults/line.d.ts +2 -0
  129. package/lib/components/charts/defaults/pie.d.ts +2 -0
  130. package/lib/components/charts/index.d.ts +9 -0
  131. package/lib/components/charts/models/index.d.ts +4 -0
  132. package/lib/components/charts/models/options.d.ts +12 -0
  133. package/lib/components/charts/models/plugins-options.d.ts +18 -0
  134. package/lib/components/charts/models/response.d.ts +5 -0
  135. package/lib/components/charts/models/statistic-request-config.d.ts +30 -0
  136. package/lib/components/charts/plugins/doughnut-center-text.d.ts +2 -0
  137. package/lib/components/charts/plugins/doughnut-empty-state.d.ts +2 -0
  138. package/lib/components/charts/plugins/index.d.ts +3 -0
  139. package/lib/components/charts/plugins/legend-margin.d.ts +2 -0
  140. package/lib/components/charts/services/index.d.ts +1 -0
  141. package/lib/components/charts/services/statistic.service.d.ts +23 -0
  142. package/lib/components/charts/utility/colors.d.ts +11 -0
  143. package/lib/components/charts/utility/common.d.ts +4 -0
  144. package/lib/components/charts/utility/index.d.ts +2 -0
  145. package/lib/components/comments/comments.module.d.ts +2 -1
  146. package/lib/components/comments/components/comment-item/comment-item.component.d.ts +3 -1
  147. package/lib/components/comments/components/edit-delete-modal/edit-delete-modal.component.d.ts +8 -5
  148. package/lib/components/correspondence-relation/components/correspondence-relation/correspondence-relation.component.d.ts +8 -8
  149. package/lib/components/correspondence-relation/components/correspondence-relation-create-form/correspondence-relation-create-form.component.d.ts +5 -5
  150. package/lib/components/correspondence-relation/correspondence-relation.module.d.ts +3 -2
  151. package/lib/components/diagrams/editor/customize.d.ts +7 -7
  152. package/lib/components/diagrams/editor/overrides/connection-path.transformers.d.ts +2 -5
  153. package/lib/components/diagrams/models/base-node.model.d.ts +1 -1
  154. package/lib/components/diagrams/models/connection.model.d.ts +2 -1
  155. package/lib/components/diagrams/types/common.type.d.ts +4 -0
  156. package/lib/components/diagrams/types/diagram-config.type.d.ts +7 -7
  157. package/lib/components/diagrams/types/node-definition.d.ts +1 -0
  158. package/lib/components/diagrams/utilities/random.d.ts +1 -1
  159. package/lib/components/dynamic-chart/dynamic-chart/dynamic-chart.component.d.ts +11 -10
  160. package/lib/components/dynamic-chart/dynamic-chart.module.d.ts +5 -6
  161. package/lib/components/dynamic-fields-renderer/dynamic-fields-renderer/dynamic-fields-renderer.component.d.ts +6 -2
  162. package/lib/components/dynamic-fields-renderer/dynamic-fields-renderer.module.d.ts +2 -1
  163. package/lib/components/dynamic-form/components/department-form/department-form.component.d.ts +4 -4
  164. package/lib/components/dynamic-form/components/dynamic-form-department/dynamic-form-department.component.d.ts +5 -1
  165. package/lib/components/dynamic-form/components/dynamic-form-department/services/department-management.service.d.ts +3 -1
  166. package/lib/components/dynamic-form/components/dynamic-form-treeview-select/dropdown-treeview-select.component.d.ts +5 -1
  167. package/lib/components/dynamic-form/dynamic-form.module.d.ts +2 -1
  168. package/lib/components/dynamic-table/dynamic-table/dynamic-table.component.d.ts +29 -11
  169. package/lib/components/file-manger/components/add-to-collection/add-to-collection.component.d.ts +11 -5
  170. package/lib/components/file-manger/components/copy/copy.component.d.ts +11 -4
  171. package/lib/components/file-manger/components/create-directory/create-directory.component.d.ts +9 -4
  172. package/lib/components/file-manger/components/create-modal/create-modal.component.d.ts +13 -19
  173. package/lib/components/file-manger/components/creation-type/creation-type.component.d.ts +6 -4
  174. package/lib/components/file-manger/components/delete/delete.component.d.ts +11 -4
  175. package/lib/components/file-manger/components/folder-modal/folder-modal.component.d.ts +9 -11
  176. package/lib/components/file-manger/components/loan-request/loan-request.component.d.ts +11 -5
  177. package/lib/components/file-manger/components/move/move.component.d.ts +11 -4
  178. package/lib/components/file-manger/components/publish-dialog/publish-dialog.component.d.ts +12 -10
  179. package/lib/components/file-manger/components/rename/rename.component.d.ts +11 -5
  180. package/lib/components/file-manger/components/scan-modal/scan-modal.component.d.ts +9 -8
  181. package/lib/components/file-manger/components/share-dialog/share-dialog.component.d.ts +6 -7
  182. package/lib/components/file-manger/components/template-modal/template-modal.component.d.ts +4 -3
  183. package/lib/components/file-manger/components/transfer-doc/transfer-doc.component.d.ts +11 -4
  184. package/lib/components/file-manger/components/update-modal/update-modal.component.d.ts +9 -8
  185. package/lib/components/file-manger/file-manager.abstract.d.ts +24 -22
  186. package/lib/components/file-manger/file-manger.module.d.ts +2 -1
  187. package/lib/components/notifications/components/base-notifications.component.d.ts +2 -8
  188. package/lib/components/notifications/components/notification-item/notification-item.component.d.ts +1 -1
  189. package/lib/components/notifications/components/notifications-button/notifications-button.component.d.ts +4 -1
  190. package/lib/components/notifications/models/notification-message.mode.d.ts +1 -0
  191. package/lib/components/notifications/models/notifications-list-options.d.ts +4 -0
  192. package/lib/components/permissions/add-permissions-dialog/add-permissions-dialog.component.d.ts +8 -6
  193. package/lib/components/permissions/permissions/permissions.component.d.ts +3 -1
  194. package/lib/components/permissions/permissions-template/permissions-template.component.d.ts +3 -3
  195. package/lib/components/permissions/permissions.module.d.ts +2 -1
  196. package/lib/components/spell-checker-field/spell-checker-field.module.d.ts +10 -0
  197. package/lib/components/spell-checker-field/spell-checker-text-field/spell-checker-text-field.component.d.ts +24 -0
  198. package/lib/components/table/dynamic-component.d.ts +20 -0
  199. package/lib/components/table/page-sizes-list/page-sizes-list.component.d.ts +15 -0
  200. package/lib/components/table/table/table.component.d.ts +15 -6
  201. package/lib/components/table/table.module.d.ts +14 -10
  202. package/lib/components/vocabulary/services/vocabulary-api.service.d.ts +2 -2
  203. package/lib/core/core.module.d.ts +1 -1
  204. package/lib/core/env/env-manager.d.ts +2 -0
  205. package/lib/core/services/callApi/call-api.service.d.ts +8 -1
  206. package/lib/shared/components/base/base-selector.component.d.ts +4 -4
  207. package/lib/shared/components/base/base.component.d.ts +5 -5
  208. package/lib/shared/components/nuxeo-dialog/nuxeo-dialog.module.d.ts +2 -1
  209. package/lib/shared/components/nuxeo-dialog/nuxeo.dialog.d.ts +2 -1
  210. package/lib/shared/services/base/http-base.service.d.ts +3 -1
  211. package/lib/shared-services/dialog-mangment.service.d.ts +5 -1
  212. package/lib/shared-services/shared-docs.service.d.ts +3 -1
  213. package/package.json +3 -4
  214. package/public-api.d.ts +7 -1
  215. package/esm2015/lib/components/dynamic-chart/dynamic-single-chart/dynamic-single-chart.component.js +0 -164
  216. package/lib/components/dynamic-chart/dynamic-single-chart/dynamic-single-chart.component.d.ts +0 -33
@@ -0,0 +1,24 @@
1
+ import { ElementRef, EventEmitter, Injector } from '@angular/core';
2
+ import { AbstractControl, NgControl, ValidationErrors } from '@angular/forms';
3
+ import { BaseSelector } from '../../../shared/components/base';
4
+ import * as i0 from "@angular/core";
5
+ export declare class SpellCheckerTextFieldComponent extends BaseSelector {
6
+ control: NgControl;
7
+ id: string;
8
+ placeholder: string;
9
+ fieldType: 'text' | 'textarea';
10
+ label: string;
11
+ spellCheckerField: ElementRef<HTMLDivElement>;
12
+ enteredText: string;
13
+ trackChange: boolean;
14
+ checkFromText: EventEmitter<boolean>;
15
+ constructor(injector: Injector, control: NgControl);
16
+ ngOnInit(): void;
17
+ onInput(): void;
18
+ onBlur(): void;
19
+ setDisabledState?(isDisabled: boolean): void;
20
+ writeValue(value: string): void;
21
+ validate(control: AbstractControl): ValidationErrors;
22
+ static ɵfac: i0.ɵɵFactoryDeclaration<SpellCheckerTextFieldComponent, never>;
23
+ static ɵcmp: i0.ɵɵComponentDeclaration<SpellCheckerTextFieldComponent, "ndf-spell-checker-text-field", never, { "id": "id"; "placeholder": "placeholder"; "fieldType": "fieldType"; "label": "label"; }, { "checkFromText": "checkFromText"; }, never, never>;
24
+ }
@@ -0,0 +1,20 @@
1
+ import { ComponentFactoryResolver, EventEmitter, OnChanges, OnDestroy, OnInit, SimpleChanges } from '@angular/core';
2
+ import { ExtensionService } from '../../core/services/extension/extension.service';
3
+ import * as i0 from "@angular/core";
4
+ export declare class DynamicCustomComponent implements OnInit, OnChanges, OnDestroy {
5
+ private _extensions;
6
+ private _factoryResolver;
7
+ private _vcr;
8
+ componentName: string;
9
+ row: Record<string, any>;
10
+ rowAction: EventEmitter<any>;
11
+ onClick: EventEmitter<any>;
12
+ private _componentRef;
13
+ constructor(_extensions: ExtensionService, _factoryResolver: ComponentFactoryResolver);
14
+ ngOnInit(): void;
15
+ ngOnChanges(changes: SimpleChanges): void;
16
+ private updateInstance;
17
+ ngOnDestroy(): void;
18
+ static ɵfac: i0.ɵɵFactoryDeclaration<DynamicCustomComponent, never>;
19
+ static ɵcmp: i0.ɵɵComponentDeclaration<DynamicCustomComponent, "app-dynamic-component", never, { "componentName": "componentName"; "row": "row"; "rowAction": "rowAction"; "onClick": "onClick"; }, {}, never, never>;
20
+ }
@@ -0,0 +1,15 @@
1
+ import { EventEmitter, OnChanges, SimpleChanges } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export declare class PageSizesListComponent implements OnChanges {
4
+ pageSizes: Array<{
5
+ label: string;
6
+ size: number;
7
+ }>;
8
+ selectedPageSize: number;
9
+ onChangePageSize: EventEmitter<number>;
10
+ constructor();
11
+ ngOnChanges(changes: SimpleChanges): void;
12
+ changePageSize(): void;
13
+ static ɵfac: i0.ɵɵFactoryDeclaration<PageSizesListComponent, never>;
14
+ static ɵcmp: i0.ɵɵComponentDeclaration<PageSizesListComponent, "ndf-page-sizes-list", never, { "pageSizes": "pageSizes"; "selectedPageSize": "selectedPageSize"; }, { "onChangePageSize": "onChangePageSize"; }, never, never>;
15
+ }
@@ -1,5 +1,5 @@
1
- import { EventEmitter, OnInit } from '@angular/core';
2
- import { Subscription } from 'rxjs';
1
+ import { EventEmitter, OnChanges, OnInit, SimpleChanges } from '@angular/core';
2
+ import { BehaviorSubject, Subscription } from 'rxjs';
3
3
  import { AppConfigService } from '../../../configuration/app-config.service';
4
4
  import { NuxeoService } from '../../../core/services/nuxeo/nuxeo.service';
5
5
  import { TranslationService } from '../../../core/services/translation/translation.service';
@@ -37,7 +37,7 @@ import * as i0 from "@angular/core";
37
37
  * ></cts-table>
38
38
  *
39
39
  */
40
- export declare class TableComponent implements OnInit {
40
+ export declare class TableComponent implements OnInit, OnChanges {
41
41
  nuxeoService: NuxeoService;
42
42
  private appConfig;
43
43
  private translation;
@@ -73,8 +73,14 @@ export declare class TableComponent implements OnInit {
73
73
  fullWidth: string;
74
74
  /** Vocabulary Translation prefix */
75
75
  vocItemTranslationPrefix: any;
76
- /** Table Mode: list | card */
76
+ tableModes: {
77
+ readonly list: "list";
78
+ readonly card: "card";
79
+ readonly dynamicCard: "dynamicCard";
80
+ readonly custom: "custom";
81
+ };
77
82
  tableMode: string;
83
+ componentName: string;
78
84
  /** action to be in card mode */
79
85
  tableActions: any;
80
86
  format: string;
@@ -90,7 +96,9 @@ export declare class TableComponent implements OnInit {
90
96
  disabledActions: boolean;
91
97
  isArabic: boolean;
92
98
  tableWidth: string;
93
- tableColumns: any[];
99
+ tableColumnsSub: BehaviorSubject<any[]>;
100
+ tableColumns$: import("rxjs").Observable<any[]>;
101
+ get tableColumns(): any[];
94
102
  currentRow: any;
95
103
  selected: any[];
96
104
  pageNumber: number;
@@ -98,6 +106,7 @@ export declare class TableComponent implements OnInit {
98
106
  statusIcons: {};
99
107
  directionIcons: {};
100
108
  constructor(nuxeoService: NuxeoService, appConfig: AppConfigService, translation: TranslationService);
109
+ ngOnChanges(changes: SimpleChanges): void;
101
110
  ngOnInit(): void;
102
111
  rowDetails(event: any): void;
103
112
  iconSelected(event: MouseEvent, row: any): void;
@@ -109,5 +118,5 @@ export declare class TableComponent implements OnInit {
109
118
  cardSelected(card: any): void;
110
119
  cardFocused(index: any): void;
111
120
  static ɵfac: i0.ɵɵFactoryDeclaration<TableComponent, never>;
112
- static ɵcmp: i0.ɵɵComponentDeclaration<TableComponent, "cts-table", never, { "rows": "rows"; "columns": "columns"; "responsiveColumns": "responsiveColumns"; "entityType": "entityType"; "prefix": "prefix"; "pageCount": "pageCount"; "totalRecords": "totalRecords"; "rowCursor": "rowCursor"; "fullWidth": "fullWidth"; "vocItemTranslationPrefix": "vocItemTranslationPrefix"; "tableMode": "tableMode"; "tableActions": "tableActions"; "format": "format"; "defultSort": "defultSort"; "highlightSelectedCard": "highlightSelectedCard"; "multiSelectRows": "multiSelectRows"; "customFirstRow": "customFirstRow"; "showActionsAsMenu": "showActionsAsMenu"; }, { "onRowSelected": "onRowSelected"; "onRowIndexSelected": "onRowIndexSelected"; "onIconSelected": "onIconSelected"; "actionOnRow": "actionOnRow"; "onSorting": "onSorting"; "onMultiRowSelected": "onMultiRowSelected"; }, never, never>;
121
+ static ɵcmp: i0.ɵɵComponentDeclaration<TableComponent, "cts-table", never, { "rows": "rows"; "columns": "columns"; "responsiveColumns": "responsiveColumns"; "entityType": "entityType"; "prefix": "prefix"; "pageCount": "pageCount"; "totalRecords": "totalRecords"; "rowCursor": "rowCursor"; "fullWidth": "fullWidth"; "vocItemTranslationPrefix": "vocItemTranslationPrefix"; "tableMode": "tableMode"; "componentName": "componentName"; "tableActions": "tableActions"; "format": "format"; "defultSort": "defultSort"; "highlightSelectedCard": "highlightSelectedCard"; "multiSelectRows": "multiSelectRows"; "customFirstRow": "customFirstRow"; "showActionsAsMenu": "showActionsAsMenu"; }, { "onRowSelected": "onRowSelected"; "onRowIndexSelected": "onRowIndexSelected"; "onIconSelected": "onIconSelected"; "actionOnRow": "actionOnRow"; "onSorting": "onSorting"; "onMultiRowSelected": "onMultiRowSelected"; }, never, never>;
113
122
  }
@@ -1,21 +1,25 @@
1
1
  import * as i0 from "@angular/core";
2
2
  import * as i1 from "./table/table.component";
3
3
  import * as i2 from "./dynamic-column/dynamic-column.component";
4
- import * as i3 from "@angular/common";
5
- import * as i4 from "@swimlane/ngx-datatable";
6
- import * as i5 from "../../pipes/pipes.module";
7
- import * as i6 from "@ngx-translate/core";
8
- import * as i7 from "@angular/material/tooltip";
9
- import * as i8 from "../../directive/directive.module";
10
- import * as i9 from "../dynamic-view/dynamic-view.module";
11
- import * as i10 from "@angular/material/checkbox";
12
- import * as i11 from "@angular/material/menu";
4
+ import * as i3 from "./page-sizes-list/page-sizes-list.component";
5
+ import * as i4 from "./dynamic-component";
6
+ import * as i5 from "@angular/common";
7
+ import * as i6 from "@swimlane/ngx-datatable";
8
+ import * as i7 from "../../pipes/pipes.module";
9
+ import * as i8 from "@ngx-translate/core";
10
+ import * as i9 from "@angular/material/tooltip";
11
+ import * as i10 from "../../directive/directive.module";
12
+ import * as i11 from "../dynamic-view/dynamic-view.module";
13
+ import * as i12 from "@angular/material/checkbox";
14
+ import * as i13 from "@angular/material/menu";
15
+ import * as i14 from "@ng-select/ng-select";
16
+ import * as i15 from "@angular/forms";
13
17
  /**
14
18
  * @title
15
19
  * Table Module
16
20
  */
17
21
  export declare class TableModule {
18
22
  static ɵfac: i0.ɵɵFactoryDeclaration<TableModule, never>;
19
- static ɵmod: i0.ɵɵNgModuleDeclaration<TableModule, [typeof i1.TableComponent, typeof i2.DynamicColumnComponent], [typeof i3.CommonModule, typeof i4.NgxDatatableModule, typeof i5.PipesModule, typeof i6.TranslateModule, typeof i7.MatTooltipModule, typeof i8.DirectiveModule, typeof i9.DynamicViewModule, typeof i10.MatCheckboxModule, typeof i11.MatMenuModule], [typeof i1.TableComponent, typeof i2.DynamicColumnComponent, typeof i4.NgxDatatableModule]>;
23
+ static ɵmod: i0.ɵɵNgModuleDeclaration<TableModule, [typeof i1.TableComponent, typeof i2.DynamicColumnComponent, typeof i3.PageSizesListComponent, typeof i4.DynamicCustomComponent], [typeof i5.CommonModule, typeof i6.NgxDatatableModule, typeof i7.PipesModule, typeof i8.TranslateModule, typeof i9.MatTooltipModule, typeof i10.DirectiveModule, typeof i11.DynamicViewModule, typeof i12.MatCheckboxModule, typeof i13.MatMenuModule, typeof i14.NgSelectModule, typeof i15.FormsModule], [typeof i1.TableComponent, typeof i2.DynamicColumnComponent, typeof i6.NgxDatatableModule, typeof i3.PageSizesListComponent, typeof i4.DynamicCustomComponent]>;
20
24
  static ɵinj: i0.ɵɵInjectorDeclaration<TableModule>;
21
25
  }
@@ -1,8 +1,8 @@
1
1
  import { Injector } from '@angular/core';
2
2
  import { Observable } from 'rxjs';
3
3
  import { NuxeoService } from '../../../core/services/nuxeo/nuxeo.service';
4
- import { opType } from '../interfaces/op-type.interface';
5
4
  import { BaseService } from '../../../shared/services/base/base.service';
5
+ import { opType } from '../interfaces/op-type.interface';
6
6
  import * as i0 from "@angular/core";
7
7
  export declare class VocabularyApiService extends BaseService {
8
8
  private nuxeoService;
@@ -11,7 +11,7 @@ export declare class VocabularyApiService extends BaseService {
11
11
  constructor(nuxeoService: NuxeoService, injector: Injector);
12
12
  getVocabularyList(listName: any): Observable<any>;
13
13
  getVocabularyListByFilters(listName: any, params?: {}, filter?: {}, fullText?: any): Observable<any>;
14
- actualGetVocabularyList(listName: any, extraParams?: {}): Observable<any>;
14
+ actualGetVocabularyList(params: Record<string, any>): Observable<any>;
15
15
  vocabularyOperations(opName: opType, body: any): Observable<unknown>;
16
16
  getVocListByVocName(vocName: any): Observable<any>;
17
17
  static ɵfac: i0.ɵɵFactoryDeclaration<VocabularyApiService, never>;
@@ -10,7 +10,7 @@ import * as i6 from "keycloak-angular";
10
10
  import * as i7 from "@rxweb/reactive-form-validators";
11
11
  /** @ignore */
12
12
  export declare class NuxeoCoreModule {
13
- static register(environment: Environment): ModuleWithProviders<NuxeoCoreModule>;
13
+ static register(environment: Environment, configuration?: Record<string, any>, conditons?: Record<string, any>): ModuleWithProviders<NuxeoCoreModule>;
14
14
  static ɵfac: i0.ɵɵFactoryDeclaration<NuxeoCoreModule, never>;
15
15
  static ɵmod: i0.ɵɵNgModuleDeclaration<NuxeoCoreModule, never, [typeof i1.CommonModule, typeof i2.TreeviewModule, typeof i3.HttpClientModule, typeof i4.TranslateModule, typeof i5.ToastrModule, typeof i6.KeycloakAngularModule, typeof i7.RxReactiveFormsModule], [typeof i6.KeycloakAngularModule, typeof i4.TranslateModule, typeof i2.TreeviewModule, typeof i5.ToastrModule, typeof i7.RxReactiveFormsModule]>;
16
16
  static ɵinj: i0.ɵɵInjectorDeclaration<NuxeoCoreModule>;
@@ -47,5 +47,7 @@ export interface Environment {
47
47
  }
48
48
  export declare class EnvManager {
49
49
  static environment: Environment;
50
+ static configuration: Record<string, any>;
51
+ static conditons: Record<string, any>;
50
52
  static initialize(values: Partial<Environment>): void;
51
53
  }
@@ -1,11 +1,18 @@
1
+ import { HttpClient } from '@angular/common/http';
1
2
  import { Observable } from 'rxjs';
2
3
  import { NuxeoService } from '../nuxeo/nuxeo.service';
3
4
  import * as i0 from "@angular/core";
4
5
  export declare class CallApiService {
5
6
  private nuxeoService;
6
- constructor(nuxeoService: NuxeoService);
7
+ private http;
8
+ private environment;
9
+ constructor(nuxeoService: NuxeoService, http: HttpClient, environment: any);
7
10
  query(queryOptions: any, options: any): Observable<any>;
8
11
  private inerQuery;
12
+ customQuery(query: {
13
+ url: string;
14
+ method: 'POST' | 'GET';
15
+ }, params: Record<string, any>, headers?: Record<string, any>, body?: Record<string, any>): Observable<any>;
9
16
  static ɵfac: i0.ɵɵFactoryDeclaration<CallApiService, never>;
10
17
  static ɵprov: i0.ɵɵInjectableDeclaration<CallApiService>;
11
18
  }
@@ -3,7 +3,7 @@ import { AbstractControl, ControlValueAccessor, ValidationErrors, Validator } fr
3
3
  import { Observable } from 'rxjs';
4
4
  import { BaseComponent } from './base.component';
5
5
  import * as i0 from "@angular/core";
6
- export declare abstract class BaseSelector<T = any> extends BaseComponent implements ControlValueAccessor, Validator {
6
+ export declare abstract class BaseSelector<T = any, TValue = any> extends BaseComponent implements ControlValueAccessor, Validator {
7
7
  #private;
8
8
  static ngAcceptInputType_multiple: BooleanInput;
9
9
  static ngAcceptInputType_required: BooleanInput;
@@ -13,7 +13,7 @@ export declare abstract class BaseSelector<T = any> extends BaseComponent implem
13
13
  onChange: any;
14
14
  onTouch: any;
15
15
  onValidationChange: any;
16
- abstract writeValue(obj: T): void;
16
+ abstract writeValue(obj: TValue): void;
17
17
  abstract validate(control: AbstractControl): ValidationErrors;
18
18
  readonly: boolean;
19
19
  disabled: boolean;
@@ -38,6 +38,6 @@ export declare abstract class BaseSelector<T = any> extends BaseComponent implem
38
38
  registerOnTouched(fn: any): void;
39
39
  registerOnValidatorChange?(fn: () => void): void;
40
40
  setDisabledState?(isDisabled: boolean): void;
41
- static ɵfac: i0.ɵɵFactoryDeclaration<BaseSelector<any>, never>;
42
- static ɵdir: i0.ɵɵDirectiveDeclaration<BaseSelector<any>, never, never, { "readonly": "readonly"; "disabled": "disabled"; "disableOptionFn": "disableOptionFn"; "styleClass": "styleClass"; "valueType": "valueType"; "bindValue": "bindValue"; "bindLabel": "bindLabel"; "label": "label"; "selectedFields": "selectedFields"; "emptyPlaceholder": "emptyPlaceholder"; "emptyMessage": "emptyMessage"; "multiple": "multiple"; "required": "required"; "hideLabel": "hideLabel"; "selectAllOption": "selectAllOption"; }, {}, never>;
41
+ static ɵfac: i0.ɵɵFactoryDeclaration<BaseSelector<any, any>, never>;
42
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BaseSelector<any, any>, never, never, { "readonly": "readonly"; "disabled": "disabled"; "disableOptionFn": "disableOptionFn"; "styleClass": "styleClass"; "valueType": "valueType"; "bindValue": "bindValue"; "bindLabel": "bindLabel"; "label": "label"; "selectedFields": "selectedFields"; "emptyPlaceholder": "emptyPlaceholder"; "emptyMessage": "emptyMessage"; "multiple": "multiple"; "required": "required"; "hideLabel": "hideLabel"; "selectAllOption": "selectAllOption"; }, {}, never>;
43
43
  }
@@ -1,14 +1,14 @@
1
+ import { Direction } from '@angular/cdk/bidi';
1
2
  import { ChangeDetectorRef, Injector } from '@angular/core';
2
- import { DestroySubject } from './destroy.subject';
3
+ import { FormBuilder } from '@angular/forms';
3
4
  import { ActivatedRoute, Router } from '@angular/router';
4
5
  import { TranslateService } from '@ngx-translate/core';
5
- import { Direction } from '@angular/cdk/bidi';
6
- import { FormBuilder } from '@angular/forms';
7
6
  import { CustomToastrService } from '../../../components/custom-toastr/services/custom-toastr.service';
8
- import { MainfolderService } from '../../../shared-services/mainfolder.service';
9
- import { UserPreferencesService } from '../../../core/services/user/user-preferences.service';
10
7
  import { AppConfigService } from '../../../configuration/app-config.service';
11
8
  import { AdapterService } from '../../../core/adapters/adapter.service';
9
+ import { UserPreferencesService } from '../../../core/services/user/user-preferences.service';
10
+ import { MainfolderService } from '../../../shared-services/mainfolder.service';
11
+ import { DestroySubject } from './destroy.subject';
12
12
  import * as i0 from "@angular/core";
13
13
  export declare abstract class BaseComponent extends DestroySubject {
14
14
  #private;
@@ -7,8 +7,9 @@ import * as i5 from "@angular/material/icon";
7
7
  import * as i6 from "@angular/material/dialog";
8
8
  import * as i7 from "@angular/material/tooltip";
9
9
  import * as i8 from "../../../directive/directive.module";
10
+ import * as i9 from "@angular/material/progress-spinner";
10
11
  export declare class NuxeoDialogModule {
11
12
  static ɵfac: i0.ɵɵFactoryDeclaration<NuxeoDialogModule, never>;
12
- static ɵmod: i0.ɵɵNgModuleDeclaration<NuxeoDialogModule, [typeof i1.NdfNuxeoDialog, typeof i2.NdfConfirmationDialogComponent], [typeof i3.CommonModule, typeof i4.TranslateModule, typeof i5.MatIconModule, typeof i6.MatDialogModule, typeof i7.MatTooltipModule, typeof i8.DirectiveModule], [typeof i1.NdfNuxeoDialog, typeof i2.NdfConfirmationDialogComponent]>;
13
+ static ɵmod: i0.ɵɵNgModuleDeclaration<NuxeoDialogModule, [typeof i1.NdfNuxeoDialog, typeof i2.NdfConfirmationDialogComponent], [typeof i3.CommonModule, typeof i4.TranslateModule, typeof i5.MatIconModule, typeof i6.MatDialogModule, typeof i7.MatTooltipModule, typeof i8.DirectiveModule, typeof i9.MatProgressSpinnerModule], [typeof i1.NdfNuxeoDialog, typeof i2.NdfConfirmationDialogComponent]>;
13
14
  static ɵinj: i0.ɵɵInjectorDeclaration<NuxeoDialogModule>;
14
15
  }
@@ -6,6 +6,7 @@ import * as i0 from "@angular/core";
6
6
  export declare class NdfNuxeoDialog<TData = any> extends BaseComponent {
7
7
  dialogTitle: string;
8
8
  subTitle: string;
9
+ panelClass: string;
9
10
  loaderMode: 'spinner' | 'progressBar';
10
11
  contentTemplate: any;
11
12
  actionsTemplate: any;
@@ -18,5 +19,5 @@ export declare class NdfNuxeoDialog<TData = any> extends BaseComponent {
18
19
  isArrowFunction(fn: Function): boolean;
19
20
  onClose(): void;
20
21
  static ɵfac: i0.ɵɵFactoryDeclaration<NdfNuxeoDialog<any>, never>;
21
- static ɵcmp: i0.ɵɵComponentDeclaration<NdfNuxeoDialog<any>, "ndf-nuxeo-dialog", never, { "dialogTitle": "dialogTitle"; "subTitle": "subTitle"; "loaderMode": "loaderMode"; }, {}, ["contentTemplate", "actionsTemplate"], never>;
22
+ static ɵcmp: i0.ɵɵComponentDeclaration<NdfNuxeoDialog<any>, "ndf-nuxeo-dialog", never, { "dialogTitle": "dialogTitle"; "subTitle": "subTitle"; "panelClass": "panelClass"; "loaderMode": "loaderMode"; }, {}, ["contentTemplate", "actionsTemplate"], never>;
22
23
  }
@@ -1,10 +1,12 @@
1
+ import { HttpRequest } from '@angular/common/http';
1
2
  import { Injector } from '@angular/core';
2
- import { HttpOptions } from './models';
3
3
  import { Observable, OperatorFunction } from 'rxjs';
4
+ import { HttpOptions } from './models';
4
5
  export declare abstract class HttpBaseService {
5
6
  #private;
6
7
  get environment(): import("../../../core/env/env-manager").Environment;
7
8
  constructor(injector: Injector);
9
+ protected httpRequest<TBody, TResponse>(req: HttpRequest<TBody>): Observable<import("@angular/common/http").HttpEvent<TResponse>>;
8
10
  protected get<TResponse>(endpointOrOptions: string | HttpOptions, params?: any, headers?: any, responseType?: any): Observable<TResponse>;
9
11
  protected post<TResponse>(endpointOrOptions: string | HttpOptions, payload?: any, params?: any, headers?: any, responseType?: any): Observable<TResponse>;
10
12
  protected put<TResponse>(endpointOrOptions: string | HttpOptions, payload?: any, params?: any, headers?: any, responseType?: any): Observable<TResponse>;
@@ -1,13 +1,17 @@
1
+ import { NuxeoDialogService } from '../shared/components/nuxeo-dialog/services/nuxeo-dialog.service';
1
2
  import { MatDialog } from '@angular/material/dialog';
2
3
  import * as i0 from "@angular/core";
3
4
  export declare class DialogMangmentService {
4
5
  private dialog;
6
+ nuxeoDialogService: NuxeoDialogService;
5
7
  minizedModal: boolean;
6
8
  creationMode: string;
7
9
  fileType: string;
8
10
  addingFrom: string;
9
11
  storedDynamicForm: string;
10
- constructor(dialog: MatDialog);
12
+ constructor(dialog: MatDialog, nuxeoDialogService: NuxeoDialogService);
13
+ openModalV2(component: any, type: any, creationMode: any, source: any, width: any, height: any, data?: {}): void;
14
+ openMinimzedModalV2(component: any, width: any, height: any, data?: {}): void;
11
15
  openModal(component: any, type: any, creationMode: any, source: any, width: any, height: any, data?: {}): void;
12
16
  openMinimzedModal(component: any, width: any, height: any, data?: {}): void;
13
17
  static ɵfac: i0.ɵɵFactoryDeclaration<DialogMangmentService, never>;
@@ -2,12 +2,14 @@ import { MatDialog } from '@angular/material/dialog';
2
2
  import { Observable } from 'rxjs';
3
3
  import { NuxeoService } from '../core/services/nuxeo/nuxeo.service';
4
4
  import { AdapterService } from '../core/adapters/adapter.service';
5
+ import { NuxeoDialogService } from '../shared/components/nuxeo-dialog/services/nuxeo-dialog.service';
5
6
  import * as i0 from "@angular/core";
6
7
  export declare class SharedDocsService {
7
8
  private nuxeoService;
8
9
  private dialog;
9
10
  private adapter;
10
- constructor(nuxeoService: NuxeoService, dialog: MatDialog, adapter: AdapterService);
11
+ nuxeoDialogService: NuxeoDialogService;
12
+ constructor(nuxeoService: NuxeoService, dialog: MatDialog, adapter: AdapterService, nuxeoDialogService: NuxeoDialogService);
11
13
  shareDocumentWithUser(context: any, DocId: any): Observable<any>;
12
14
  removeAllSharesforDocs(DocId: any): Observable<any>;
13
15
  getSharesWithMe(sortObj: any): Observable<any>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nuxeo-development-framework",
3
- "version": "4.3.0",
3
+ "version": "4.3.2",
4
4
  "peerDependencies": {
5
5
  "@angular/animations": "12.2.3",
6
6
  "@angular/common": "12.2.3",
@@ -35,9 +35,8 @@
35
35
  "angular-ng-autocomplete": "^2.0.5",
36
36
  "bootstrap": "^4.6.0",
37
37
  "bootstrap-icons": "^1.5.0",
38
- "chart.js": "^2.9.4",
39
- "chartjs-plugin-labels": "^1.1.0",
40
- "chartjs-plugin-piechart-outlabels": "^0.1.4",
38
+ "chart.js": "^4.4.7",
39
+ "chartjs-adapter-moment": "^1.0.1",
41
40
  "dwt": "^17.1.1",
42
41
  "keycloak-angular": "^8.1.0",
43
42
  "keycloak-js": "^12.0.4",
package/public-api.d.ts CHANGED
@@ -10,11 +10,13 @@ export * from './lib/components/card/card.component';
10
10
  export * from './lib/components/card/card.module';
11
11
  export * from './lib/components/comments/comments.module';
12
12
  export * from './lib/components/comments/components/comments-dashlet/comments-dashlet.component';
13
+ export * from './lib/components/comments/components/edit-delete-modal/edit-delete-modal.component';
13
14
  export * from './lib/components/confirm-caller/confirm-caller.dialog';
14
15
  export * from './lib/components/confirm-caller/confirm-caller.module';
15
16
  export * from './lib/components/confirm-caller/confirm-dialog/confirm-dialog.component';
16
17
  export * from './lib/components/confirmation-dialog/confirmation-dialog/confirmation-dialog.component';
17
18
  export * from './lib/components/correspondence-relation/components/correspondence-relation/correspondence-relation.component';
19
+ export * from './lib/components/correspondence-relation/components/correspondence-relation-create-form/correspondence-relation-create-form.component';
18
20
  export * from './lib/components/correspondence-relation/components/versions/versions.component';
19
21
  export * from './lib/components/correspondence-relation/correspondence-relation.module';
20
22
  export * from './lib/components/correspondence-relation/services/correspondence-realation.service';
@@ -40,7 +42,6 @@ export * from './lib/components/documents/services/document-templates.service';
40
42
  export * from './lib/components/documents/services/documents.service';
41
43
  export * from './lib/components/dynamic-chart/dynamic-chart.module';
42
44
  export * from './lib/components/dynamic-chart/dynamic-chart/dynamic-chart.component';
43
- export * from './lib/components/dynamic-chart/dynamic-single-chart/dynamic-single-chart.component';
44
45
  export * from './lib/components/dynamic-chart/services/chart-data.service';
45
46
  export * from './lib/components/dynamic-filter/dynamic-filter.module';
46
47
  export * from './lib/components/dynamic-filter/dynamic-filter/dynamic-filter.component';
@@ -125,6 +126,8 @@ export * from './lib/components/pdf-tron/pdftron/pdftron.service';
125
126
  export * from './lib/components/select/select.module';
126
127
  export * from './lib/components/select/select/select.component';
127
128
  export * from './lib/components/table/dynamic-column/dynamic-column.component';
129
+ export * from './lib/components/table/dynamic-component';
130
+ export * from './lib/components/table/page-sizes-list/page-sizes-list.component';
128
131
  export * from './lib/components/table/table.module';
129
132
  export * from './lib/components/table/table/table.component';
130
133
  export * from './lib/components/users-card/users-card.component';
@@ -146,6 +149,8 @@ export * from './lib/components/attachment-item/attachment-item/attachment-item.
146
149
  export * from './lib/components/select-users-by-department/select-users-by-department.module';
147
150
  export * from './lib/components/select-users-by-department/select-users-by-departments/department-management.service';
148
151
  export * from './lib/components/select-users-by-department/select-users-by-departments/select-users-by-departments.component';
152
+ export * from './lib/components/spell-checker-field/spell-checker-field.module';
153
+ export * from './lib/components/spell-checker-field/spell-checker-text-field/spell-checker-text-field.component';
149
154
  export * from './lib/shared-services/dialog-mangment.service';
150
155
  export * from './lib/shared-services/dynamic-form.service';
151
156
  export * from './lib/shared-services/file-manager.service';
@@ -228,3 +233,4 @@ export * from './lib/configuration/app-config.service';
228
233
  export * from './lib/configuration/helpers/app-initializer';
229
234
  export * from './lib/directive/permissions/evaluators.service';
230
235
  export * from './lib/components/comments/services/comment-api.service';
236
+ export * from './lib/components/charts';
@@ -1,164 +0,0 @@
1
- import { Component, Input, ViewChild } from '@angular/core';
2
- import { Chart } from 'chart.js';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "@ngx-translate/core";
5
- /**
6
- * A UI doughnut chart component
7
- *
8
- * ![Screenshot-1](../screenshots/singleChart.png)
9
- * @title
10
- * doughnut chart
11
- *
12
- * @example
13
- * <cts-dynamic-single-chart
14
- * [totalItems]="totalItems"
15
- * [label]="label"
16
- * [count]="count"
17
- * [colorCode]="arrayOfColors"
18
- * ></cts-dynamic-single-chart>
19
- */
20
- export class DynamicSingleChartComponent {
21
- constructor() {
22
- /** array of color codes for chart */
23
- this.colorCode = [];
24
- }
25
- ngOnInit() { }
26
- ngAfterViewInit() {
27
- setTimeout(() => {
28
- const ctx = this.chart.nativeElement.getContext('2d');
29
- let myChart = new Chart(ctx, {
30
- type: 'doughnut',
31
- data: {
32
- datasets: [
33
- {
34
- label: '# of Votes',
35
- data: [this.count, this.totalItems],
36
- backgroundColor: this.colorCode,
37
- },
38
- ],
39
- },
40
- plugins: [
41
- {
42
- beforeDraw: function (chart) {
43
- if (chart.config.options.elements.center) {
44
- // Get ctx from string
45
- var ctx = chart.chart.ctx;
46
- // Get options from the center object in options
47
- var centerConfig = chart.config.options.elements.center;
48
- var fontStyle = centerConfig.fontStyle || 'Arial';
49
- var txt = centerConfig.text;
50
- var color = centerConfig.color || '#000';
51
- var maxFontSize = centerConfig.maxFontSize || 75;
52
- var sidePadding = centerConfig.sidePadding || 20;
53
- var sidePaddingCalculated = (sidePadding / 100) * (chart.innerRadius * 2);
54
- // Start with a base font of 30px
55
- ctx.font = '30px ' + fontStyle;
56
- // Get the width of the string and also the width of the element minus 10 to give it 5px side padding
57
- var stringWidth = ctx.measureText(txt).width;
58
- var elementWidth = chart.innerRadius * 2 - sidePaddingCalculated;
59
- // Find out how much the font can grow in width.
60
- var widthRatio = elementWidth / stringWidth;
61
- var newFontSize = Math.floor(30 * widthRatio);
62
- var elementHeight = chart.innerRadius * 2;
63
- // Pick a new font size so it will not be larger than the height of label.
64
- var fontSizeToUse = Math.min(newFontSize, elementHeight, maxFontSize);
65
- var minFontSize = centerConfig.minFontSize;
66
- var lineHeight = centerConfig.lineHeight || 25;
67
- var wrapText = false;
68
- if (minFontSize === undefined) {
69
- minFontSize = 20;
70
- }
71
- if (minFontSize && fontSizeToUse < minFontSize) {
72
- fontSizeToUse = minFontSize;
73
- wrapText = true;
74
- }
75
- // Set font settings to draw it correctly.
76
- ctx.textAlign = 'center';
77
- ctx.textBaseline = 'middle';
78
- var centerX = (chart.chartArea.left + chart.chartArea.right) / 1.97;
79
- var centerY = (chart.chartArea.top + chart.chartArea.bottom) / 2;
80
- ctx.font = '14' + 'px ' + fontStyle;
81
- ctx.fillStyle = color;
82
- if (!wrapText) {
83
- ctx.fillText(txt, centerX, centerY);
84
- return;
85
- }
86
- var words = txt.split(' ');
87
- var line = '';
88
- var lines = [];
89
- // Break words up into multiple lines if necessary
90
- for (var n = 0; n < words.length; n++) {
91
- var testLine = line + words[n] + ' ';
92
- var metrics = ctx.measureText(testLine);
93
- var testWidth = metrics.width;
94
- if (testWidth > elementWidth && n > 0) {
95
- lines.push(line);
96
- line = words[n] + ' ';
97
- }
98
- else {
99
- line = testLine;
100
- }
101
- }
102
- // Move the center up depending on line height and number of lines
103
- centerY -= (lines.length / 2) * lineHeight;
104
- for (var n = 0; n < lines.length; n++) {
105
- ctx.fillText(lines[n], centerX, centerY);
106
- centerY += lineHeight;
107
- }
108
- //Draw text in center
109
- ctx.fillText(line, centerX, centerY);
110
- }
111
- },
112
- },
113
- ],
114
- options: {
115
- responsive: true,
116
- outlabels: {
117
- display: false,
118
- },
119
- plugins: {
120
- outlabels: {
121
- display: false,
122
- },
123
- labels: false
124
- },
125
- tooltips: { enabled: false },
126
- elements: {
127
- center: {
128
- text: `${this.count >= 1000
129
- ? parseFloat((this.count / 1000).toFixed(2)) + 'K'
130
- : this.count}`,
131
- color: '#596973',
132
- fontStyle: 'Arial',
133
- sidePadding: 20,
134
- minFontSize: 20,
135
- lineHeight: 25, // Default is 25 (in px), used for when text wraps
136
- },
137
- },
138
- },
139
- });
140
- }, 200);
141
- }
142
- }
143
- DynamicSingleChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DynamicSingleChartComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
144
- DynamicSingleChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: DynamicSingleChartComponent, selector: "cts-dynamic-single-chart", inputs: { totalItems: "totalItems", count: "count", label: "label", colorCode: "colorCode" }, viewQueries: [{ propertyName: "chart", first: true, predicate: ["myChart"], descendants: true }], ngImport: i0, template: "<div class=\"chart\">\r\n <canvas width=\"70\" height=\"70\" #myChart></canvas>\r\n <label class=\"chart-lable\">{{ \"STATS.\" + label | translate }}</label>\r\n</div>\r\n", styles: [".chart{display:flex;flex-direction:column;justify-content:center;text-align:center}.chart .chart-lable{color:#596973;font-size:12px;margin-top:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}\n"], pipes: { "translate": i1.TranslatePipe } });
145
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DynamicSingleChartComponent, decorators: [{
146
- type: Component,
147
- args: [{
148
- selector: 'cts-dynamic-single-chart',
149
- templateUrl: './dynamic-single-chart.component.html',
150
- styleUrls: ['./dynamic-single-chart.component.scss'],
151
- }]
152
- }], ctorParameters: function () { return []; }, propDecorators: { totalItems: [{
153
- type: Input
154
- }], count: [{
155
- type: Input
156
- }], label: [{
157
- type: Input
158
- }], colorCode: [{
159
- type: Input
160
- }], chart: [{
161
- type: ViewChild,
162
- args: ['myChart']
163
- }] } });
164
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1zaW5nbGUtY2hhcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvY29tcG9uZW50cy9keW5hbWljLWNoYXJ0L2R5bmFtaWMtc2luZ2xlLWNoYXJ0L2R5bmFtaWMtc2luZ2xlLWNoYXJ0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL2NvbXBvbmVudHMvZHluYW1pYy1jaGFydC9keW5hbWljLXNpbmdsZS1jaGFydC9keW5hbWljLXNpbmdsZS1jaGFydC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLEtBQUssRUFBVSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEYsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFVBQVUsQ0FBQzs7O0FBQ2pDOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBTUgsTUFBTSxPQUFPLDJCQUEyQjtJQWV0QztRQUxBLHFDQUFxQztRQUVyQyxjQUFTLEdBQUcsRUFBRSxDQUFDO0lBR0MsQ0FBQztJQUVqQixRQUFRLEtBQVcsQ0FBQztJQUVwQixlQUFlO1FBQ2IsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUVkLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN0RCxJQUFJLE9BQU8sR0FBRyxJQUFJLEtBQUssQ0FBQyxHQUFHLEVBQUU7Z0JBQzNCLElBQUksRUFBRSxVQUFVO2dCQUNoQixJQUFJLEVBQUU7b0JBQ0osUUFBUSxFQUFFO3dCQUNSOzRCQUNFLEtBQUssRUFBRSxZQUFZOzRCQUNuQixJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMs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LFFBQVEsRUFBRSwwQkFBMEI7b0JBQ3BDLFdBQVcsRUFBRSx1Q0FBdUM7b0JBQ3BELFNBQVMsRUFBRSxDQUFDLHVDQUF1QyxDQUFDO2lCQUNyRDswRUFJQyxVQUFVO3NCQURULEtBQUs7Z0JBSU4sS0FBSztzQkFESixLQUFLO2dCQUlOLEtBQUs7c0JBREosS0FBSztnQkFJTixTQUFTO3NCQURSLEtBQUs7Z0JBRWdCLEtBQUs7c0JBQTFCLFNBQVM7dUJBQUMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENoYXJ0IH0gZnJvbSAnY2hhcnQuanMnO1xyXG4vKipcclxuICogQSBVSSBkb3VnaG51dCBjaGFydCBjb21wb25lbnRcclxuICpcclxuICogIVtTY3JlZW5zaG90LTFdKC4uL3NjcmVlbnNob3RzL3NpbmdsZUNoYXJ0LnBuZylcclxuICogQHRpdGxlXHJcbiAqIGRvdWdobnV0IGNoYXJ0XHJcbiAqXHJcbiAqIEBleGFtcGxlXHJcbiAqIDxjdHMtZHluYW1pYy1zaW5nbGUtY2hhcnRcclxuICogICBbdG90YWxJdGVtc109XCJ0b3RhbEl0ZW1zXCJcclxuICogICBbbGFiZWxdPVwibGFiZWxcIlxyXG4gKiAgIFtjb3VudF09XCJjb3VudFwiXHJcbiAqICAgW2NvbG9yQ29kZV09XCJhcnJheU9mQ29sb3JzXCJcclxuICogPjwvY3RzLWR5bmFtaWMtc2luZ2xlLWNoYXJ0PlxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjdHMtZHluYW1pYy1zaW5nbGUtY2hhcnQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9keW5hbWljLXNpbmdsZS1jaGFydC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZHluYW1pYy1zaW5nbGUtY2hhcnQuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIER5bmFtaWNTaW5nbGVDaGFydENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgLyoqIFRvdGFsIEl0ZW1zICovXHJcbiAgQElucHV0KClcclxuICB0b3RhbEl0ZW1zO1xyXG4gIC8qKiBDaGFydCBjb3VudCAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgY291bnQ7XHJcbiAgLyoqIENoYXJ0IGxhYmVsICovXHJcbiAgQElucHV0KClcclxuICBsYWJlbDogc3RyaW5nO1xyXG4gIC8qKiBhcnJheSBvZiBjb2xvciBjb2RlcyBmb3IgY2hhcnQgKi9cclxuICBASW5wdXQoKVxyXG4gIGNvbG9yQ29kZSA9IFtdO1xyXG4gIEBWaWV3Q2hpbGQoJ215Q2hhcnQnKSBjaGFydDogRWxlbWVudFJlZjtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7IH1cclxuICBcclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuXHJcbiAgICAgIGNvbnN0IGN0eCA9IHRoaXMuY2hhcnQubmF0aXZlRWxlbWVudC5nZXRDb250ZXh0KCcyZCcpO1xyXG4gICAgICBsZXQgbXlDaGFydCA9IG5ldyBDaGFydChjdHgsIHtcclxuICAgICAgICB0eXBlOiAnZG91Z2hudXQnLFxyXG4gICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgIGRhdGFzZXRzOiBbXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBsYWJlbDogJyMgb2YgVm90ZXMnLFxyXG4gICAgICAgICAgICAgIGRhdGE6IFt0aGlzLmNvdW50LCB0aGlzLnRvdGFsSXRlbXNdLFxyXG4gICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogdGhpcy5jb2xvckNvZGUsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICBdLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcGx1Z2luczogW1xyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBiZWZvcmVEcmF3OiBmdW5jdGlvbiAoY2hhcnQpIHtcclxuICAgICAgICAgICAgICBpZiAoY2hhcnQuY29uZmlnLm9wdGlvbnMuZWxlbWVudHMuY2VudGVyKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBHZXQgY3R4IGZyb20gc3RyaW5nXHJcbiAgICAgICAgICAgICAgICB2YXIgY3R4ID0gY2hhcnQuY2hhcnQuY3R4O1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIEdldCBvcHRpb25zIGZyb20gdGhlIGNlbnRlciBvYmplY3QgaW4gb3B0aW9uc1xyXG4gICAgICAgICAgICAgICAgdmFyIGNlbnRlckNvbmZpZyA9IGNoYXJ0LmNvbmZpZy5vcHRpb25zLmVsZW1lbnRzLmNlbnRlcjtcclxuICAgICAgICAgICAgICAgIHZhciBmb250U3R5bGUgPSBjZW50ZXJDb25maWcuZm9udFN0eWxlIHx8ICdBcmlhbCc7XHJcbiAgICAgICAgICAgICAgICB2YXIgdHh0ID0gY2VudGVyQ29uZmlnLnRleHQ7XHJcbiAgICAgICAgICAgICAgICB2YXIgY29sb3IgPSBjZW50ZXJDb25maWcuY29sb3IgfHwgJyMwMDAnO1xyXG4gICAgICAgICAgICAgICAgdmFyIG1heEZvbnRTaXplID0gY2VudGVyQ29uZmlnLm1heEZvbnRTaXplIHx8IDc1O1xyXG4gICAgICAgICAgICAgICAgdmFyIHNpZGVQYWRkaW5nID0gY2VudGVyQ29uZmlnLnNpZGVQYWRkaW5nIHx8IDIwO1xyXG4gICAgICAgICAgICAgICAgdmFyIHNpZGVQYWRkaW5nQ2FsY3VsYXRlZCA9XHJcbiAgICAgICAgICAgICAgICAgIChzaWRlUGFkZGluZyAvIDEwMCkgKiAoY2hhcnQuaW5uZXJSYWRpdXMgKiAyKTtcclxuICAgICAgICAgICAgICAgIC8vIFN0YXJ0IHdpdGggYSBiYXNlIGZvbnQgb2YgMzBweFxyXG4gICAgICAgICAgICAgICAgY3R4LmZvbnQgPSAnMzBweCAnICsgZm9udFN0eWxlO1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIEdldCB0aGUgd2lkdGggb2YgdGhlIHN0cmluZyBhbmQgYWxzbyB0aGUgd2lkdGggb2YgdGhlIGVsZW1lbnQgbWludXMgMTAgdG8gZ2l2ZSBpdCA1cHggc2lkZSBwYWRkaW5nXHJcbiAgICAgICAgICAgICAgICB2YXIgc3RyaW5nV2lkdGggPSBjdHgubWVhc3VyZVRleHQodHh0KS53aWR0aDtcclxuICAgICAgICAgICAgICAgIHZhciBlbGVtZW50V2lkdGggPSBjaGFydC5pbm5lclJhZGl1cyAqIDIgLSBzaWRlUGFkZGluZ0NhbGN1bGF0ZWQ7XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gRmluZCBvdXQgaG93IG11Y2ggdGhlIGZvbnQgY2FuIGdyb3cgaW4gd2lkdGguXHJcbiAgICAgICAgICAgICAgICB2YXIgd2lkdGhSYXRpbyA9IGVsZW1lbnRXaWR0aCAvIHN0cmluZ1dpZHRoO1xyXG4gICAgICAgICAgICAgICAgdmFyIG5ld0ZvbnRTaXplID0gTWF0aC5mbG9vcigzMCAqIHdpZHRoUmF0aW8pO1xyXG4gICAgICAgICAgICAgICAgdmFyIGVsZW1lbnRIZWlnaHQgPSBjaGFydC5pbm5lclJhZGl1cyAqIDI7XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gUGljayBhIG5ldyBmb250IHNpemUgc28gaXQgd2lsbCBub3QgYmUgbGFyZ2VyIHRoYW4gdGhlIGhlaWdodCBvZiBsYWJlbC5cclxuICAgICAgICAgICAgICAgIHZhciBmb250U2l6ZVRvVXNlID0gTWF0aC5taW4oXHJcbiAgICAgICAgICAgICAgICAgIG5ld0ZvbnRTaXplLFxyXG4gICAgICAgICAgICAgICAgICBlbGVtZW50SGVpZ2h0LFxyXG4gICAgICAgICAgICAgICAgICBtYXhGb250U2l6ZVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIHZhciBtaW5Gb250U2l6ZSA9IGNlbnRlckNvbmZpZy5taW5Gb250U2l6ZTtcclxuICAgICAgICAgICAgICAgIHZhciBsaW5lSGVpZ2h0ID0gY2VudGVyQ29uZmlnLmxpbmVIZWlnaHQgfHwgMjU7XHJcbiAgICAgICAgICAgICAgICB2YXIgd3JhcFRleHQgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAobWluRm9udFNpemUgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgICBtaW5Gb250U2l6ZSA9IDIwO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlmIChtaW5Gb250U2l6ZSAmJiBmb250U2l6ZVRvVXNlIDwgbWluRm9udFNpemUpIHtcclxuICAgICAgICAgICAgICAgICAgZm9udFNpemVUb1VzZSA9IG1pbkZvbnRTaXplO1xyXG4gICAgICAgICAgICAgICAgICB3cmFwVGV4dCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gU2V0IGZvbnQgc2V0dGluZ3MgdG8gZHJhdyBpdCBjb3JyZWN0bHkuXHJcbiAgICAgICAgICAgICAgICBjdHgudGV4dEFsaWduID0gJ2NlbnRlcic7XHJcbiAgICAgICAgICAgICAgICBjdHgudGV4dEJhc2VsaW5lID0gJ21pZGRsZSc7XHJcbiAgICAgICAgICAgICAgICB2YXIgY2VudGVyWCA9XHJcbiAgICAgICAgICAgICAgICAgIChjaGFydC5jaGFydEFyZWEubGVmdCArIGNoYXJ0LmNoYXJ0QXJlYS5yaWdodCkgLyAxLjk3O1xyXG4gICAgICAgICAgICAgICAgdmFyIGNlbnRlclkgPSAoY2hhcnQuY2hhcnRBcmVhLnRvcCArIGNoYXJ0LmNoYXJ0QXJlYS5ib3R0b20pIC8gMjtcclxuICAgICAgICAgICAgICAgIGN0eC5mb250ID0gJzE0JyArICdweCAnICsgZm9udFN0eWxlO1xyXG4gICAgICAgICAgICAgICAgY3R4LmZpbGxTdHlsZSA9IGNvbG9yO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmICghd3JhcFRleHQpIHtcclxuICAgICAgICAgICAgICAgICAgY3R4LmZpbGxUZXh0KHR4dCwgY2VudGVyWCwgY2VudGVyWSk7XHJcbiAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICB2YXIgd29yZHMgPSB0eHQuc3BsaXQoJyAnKTtcclxuICAgICAgICAgICAgICAgIHZhciBsaW5lID0gJyc7XHJcbiAgICAgICAgICAgICAgICB2YXIgbGluZXMgPSBbXTtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBCcmVhayB3b3JkcyB1cCBpbnRvIG11bHRpcGxlIGxpbmVzIGlmIG5lY2Vzc2FyeVxyXG4gICAgICAgICAgICAgICAgZm9yICh2YXIgbiA9IDA7IG4gPCB3b3Jkcy5sZW5ndGg7IG4rKykge1xyXG4gICAgICAgICAgICAgICAgICB2YXIgdGVzdExpbmUgPSBsaW5lICsgd29yZHNbbl0gKyAnICc7XHJcbiAgICAgICAgICAgICAgICAgIHZhciBtZXRyaWNzID0gY3R4Lm1lYXN1cmVUZXh0KHRlc3RMaW5lKTtcclxuICAgICAgICAgICAgICAgICAgdmFyIHRlc3RXaWR0aCA9IG1ldHJpY3Mud2lkdGg7XHJcbiAgICAgICAgICAgICAgICAgIGlmICh0ZXN0V2lkdGggPiBlbGVtZW50V2lkdGggJiYgbiA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICBsaW5lcy5wdXNoKGxpbmUpO1xyXG4gICAgICAgICAgICAgICAgICAgIGxpbmUgPSB3b3Jkc1tuXSArICcgJztcclxuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBsaW5lID0gdGVzdExpbmU7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAvLyBNb3ZlIHRoZSBjZW50ZXIgdXAgZGVwZW5kaW5nIG9uIGxpbmUgaGVpZ2h0IGFuZCBudW1iZXIgb2YgbGluZXNcclxuICAgICAgICAgICAgICAgIGNlbnRlclkgLT0gKGxpbmVzLmxlbmd0aCAvIDIpICogbGluZUhlaWdodDtcclxuXHJcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBuID0gMDsgbiA8IGxpbmVzLmxlbmd0aDsgbisrKSB7XHJcbiAgICAgICAgICAgICAgICAgIGN0eC5maWxsVGV4dChsaW5lc1tuXSwgY2VudGVyWCwgY2VudGVyWSk7XHJcbiAgICAgICAgICAgICAgICAgIGNlbnRlclkgKz0gbGluZUhlaWdodDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vRHJhdyB0ZXh0IGluIGNlbnRlclxyXG4gICAgICAgICAgICAgICAgY3R4LmZpbGxUZXh0KGxpbmUsIGNlbnRlclgsIGNlbnRlclkpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgXSxcclxuICAgICAgICBvcHRpb25zOiB7XHJcbiAgICAgICAgICByZXNwb25zaXZlOiB0cnVlLFxyXG4gICAgICAgICAgb3V0bGFiZWxzOiB7XHJcbiAgICAgICAgICAgIGRpc3BsYXk6IGZhbHNlLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHBsdWdpbnM6IHtcclxuICAgICAgICAgICAgb3V0bGFiZWxzOiB7XHJcbiAgICAgICAgICAgICAgZGlzcGxheTogZmFsc2UsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGxhYmVsczogZmFsc2VcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB0b29sdGlwczogeyBlbmFibGVkOiBmYWxzZSB9LFxyXG4gICAgICAgICAgZWxlbWVudHM6IHtcclxuICAgICAgICAgICAgY2VudGVyOiB7XHJcbiAgICAgICAgICAgICAgdGV4dDogYCR7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvdW50ID49IDEwMDBcclxuICAgICAgICAgICAgICAgICAgPyBwYXJzZUZsb2F0KCh0aGlzLmNvdW50IC8gMTAwMCkudG9GaXhlZCgyKSkgKyAnSydcclxuICAgICAgICAgICAgICAgICAgOiB0aGlzLmNvdW50XHJcbiAgICAgICAgICAgICAgfWAsXHJcbiAgICAgICAgICAgICAgY29sb3I6ICcjNTk2OTczJywgLy8gRGVmYXVsdCBpcyAjMDAwMDAwXHJcbiAgICAgICAgICAgICAgZm9udFN0eWxlOiAnQXJpYWwnLCAvLyBEZWZhdWx0IGlzIEFyaWFsXHJcbiAgICAgICAgICAgICAgc2lkZVBhZGRpbmc6IDIwLCAvLyBEZWZhdWx0IGlzIDIwIChhcyBhIHBlcmNlbnRhZ2UpXHJcbiAgICAgICAgICAgICAgbWluRm9udFNpemU6IDIwLCAvLyBEZWZhdWx0IGlzIDIwIChpbiBweCksIHNldCB0byBmYWxzZSBhbmQgdGV4dCB3aWxsIG5vdCB3cmFwLlxyXG4gICAgICAgICAgICAgIGxpbmVIZWlnaHQ6IDI1LCAvLyBEZWZhdWx0IGlzIDI1IChpbiBweCksIHVzZWQgZm9yIHdoZW4gdGV4dCB3cmFwc1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICAgIH0sIDIwMCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJjaGFydFwiPlxyXG4gIDxjYW52YXMgd2lkdGg9XCI3MFwiIGhlaWdodD1cIjcwXCIgI215Q2hhcnQ+PC9jYW52YXM+XHJcbiAgPGxhYmVsIGNsYXNzPVwiY2hhcnQtbGFibGVcIj57eyBcIlNUQVRTLlwiICsgbGFiZWwgfCB0cmFuc2xhdGUgfX08L2xhYmVsPlxyXG48L2Rpdj5cclxuIl19