ng-tailwind 6.0.1 → 6.0.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 (165) hide show
  1. package/components/ngt-action/ngt-action.component.d.ts +1 -1
  2. package/components/ngt-button/ngt-button.component.d.ts +1 -1
  3. package/components/ngt-checkbox/ngt-checkbox.component.d.ts +1 -1
  4. package/components/ngt-content/ngt-content.component.d.ts +1 -1
  5. package/components/ngt-context-menu/ngt-context-menu.directive.d.ts +1 -1
  6. package/components/ngt-datatable/ngt-datatable.component.d.ts +1 -1
  7. package/components/ngt-datatable/ngt-td-check/ngt-td-check.component.d.ts +1 -1
  8. package/components/ngt-datatable/ngt-th/ngt-th.component.d.ts +1 -1
  9. package/components/ngt-datatable/ngt-tr/ngt-tr.component.d.ts +1 -1
  10. package/components/ngt-date/ngt-date.component.d.ts +3 -6
  11. package/components/ngt-date/ngt-date.module.d.ts +4 -5
  12. package/components/ngt-dropdown/ngt-dropdown.component.d.ts +1 -1
  13. package/components/ngt-dropzone/ngt-dropzone-file-viewer/ngt-dropzone-file-viewer.component.d.ts +1 -3
  14. package/components/ngt-dropzone/ngt-dropzone-view/ngt-dropzone-view.component.d.ts +1 -1
  15. package/components/ngt-dropzone/ngt-dropzone.component.d.ts +1 -1
  16. package/components/ngt-dropzone/ngt-dropzone.module.d.ts +2 -3
  17. package/components/ngt-floating-button/ngt-floating-button.component.d.ts +1 -1
  18. package/components/ngt-form/ngt-form-validation-message/ngt-form-validation-message.component.d.ts +1 -1
  19. package/components/ngt-form/ngt-form.component.d.ts +1 -1
  20. package/components/ngt-header-nav/ngt-header-nav.component.d.ts +1 -1
  21. package/components/ngt-helper/ngt-helper.component.d.ts +1 -1
  22. package/components/ngt-input/ngt-input.component.d.ts +1 -1
  23. package/components/ngt-modal/ngt-modal-body/ngt-modal-body.component.d.ts +1 -1
  24. package/components/ngt-modal/ngt-modal-footer/ngt-modal-footer.component.d.ts +1 -1
  25. package/components/ngt-modal/ngt-modal-header/ngt-modal-header.component.d.ts +1 -1
  26. package/components/ngt-modal/ngt-modal.component.d.ts +1 -1
  27. package/components/ngt-multi-select/ngt-multi-select.component.d.ts +1 -1
  28. package/components/ngt-pagination/ngt-pagination.component.d.ts +1 -1
  29. package/components/ngt-popover/ngt-popover.component.d.ts +1 -1
  30. package/components/ngt-popover/ngt-popover.directive.d.ts +1 -1
  31. package/components/ngt-portlet/ngt-portlet-header/ngt-portlet-header.component.d.ts +1 -1
  32. package/components/ngt-portlet/ngt-portlet.component.d.ts +1 -1
  33. package/components/ngt-radio-button/ngt-radio-button.component.d.ts +1 -1
  34. package/components/ngt-section/ngt-section.component.d.ts +1 -1
  35. package/components/ngt-select/ngt-select.component.d.ts +1 -1
  36. package/components/ngt-shining/ngt-shining.component.d.ts +1 -1
  37. package/components/ngt-sidenav/ngt-sidenav.component.d.ts +1 -1
  38. package/components/ngt-slider/ngt-slider.component.d.ts +1 -1
  39. package/components/ngt-svg/ngt-svg.component.d.ts +1 -1
  40. package/components/ngt-tag/ngt-tag.component.d.ts +1 -1
  41. package/components/ngt-textarea/ngt-textarea.component.d.ts +1 -1
  42. package/components/ngt-validation/ngt-validation.component.d.ts +1 -1
  43. package/directives/ngt-stylizable/ngt-stylizable.directive.d.ts +1 -1
  44. package/{esm2020 → esm2022}/components/ngt-action/ngt-action.component.mjs +4 -4
  45. package/{esm2020 → esm2022}/components/ngt-action/ngt-action.module.mjs +9 -9
  46. package/{esm2020 → esm2022}/components/ngt-button/ngt-button.component.mjs +4 -4
  47. package/{esm2020 → esm2022}/components/ngt-button/ngt-button.module.mjs +9 -9
  48. package/esm2022/components/ngt-checkbox/ngt-checkbox.component.mjs +192 -0
  49. package/{esm2020 → esm2022}/components/ngt-checkbox/ngt-checkbox.module.mjs +9 -9
  50. package/{esm2020 → esm2022}/components/ngt-content/ngt-content.component.mjs +4 -4
  51. package/{esm2020 → esm2022}/components/ngt-content/ngt-content.module.mjs +5 -5
  52. package/{esm2020 → esm2022}/components/ngt-context-menu/ngt-context-menu.component.mjs +4 -4
  53. package/{esm2020 → esm2022}/components/ngt-context-menu/ngt-context-menu.directive.mjs +4 -4
  54. package/{esm2020 → esm2022}/components/ngt-context-menu/ngt-context-menu.module.mjs +9 -9
  55. package/{esm2020 → esm2022}/components/ngt-datatable/ngt-datatable.component.mjs +4 -4
  56. package/{esm2020 → esm2022}/components/ngt-datatable/ngt-datatable.module.mjs +39 -39
  57. package/{esm2020 → esm2022}/components/ngt-datatable/ngt-tbody/ngt-tbody.component.mjs +4 -4
  58. package/{esm2020 → esm2022}/components/ngt-datatable/ngt-td/ngt-td.component.mjs +4 -4
  59. package/{esm2020 → esm2022}/components/ngt-datatable/ngt-td-check/ngt-td-check.component.mjs +4 -4
  60. package/{esm2020 → esm2022}/components/ngt-datatable/ngt-th/ngt-th.component.mjs +4 -4
  61. package/{esm2020 → esm2022}/components/ngt-datatable/ngt-th-check/ngt-th-check.component.mjs +4 -4
  62. package/{esm2020 → esm2022}/components/ngt-datatable/ngt-thead/ngt-thead.component.mjs +4 -4
  63. package/{esm2020 → esm2022}/components/ngt-datatable/ngt-tr/ngt-tr.component.mjs +5 -5
  64. package/esm2022/components/ngt-date/ngt-date.component.mjs +425 -0
  65. package/esm2022/components/ngt-date/ngt-date.module.mjs +36 -0
  66. package/{esm2020 → esm2022}/components/ngt-dropdown/ngt-dropdown-container/ngt-dropdown-container.component.mjs +4 -4
  67. package/esm2022/components/ngt-dropdown/ngt-dropdown.component.mjs +205 -0
  68. package/{esm2020 → esm2022}/components/ngt-dropdown/ngt-dropdown.module.mjs +5 -5
  69. package/esm2022/components/ngt-dropzone/custom-dropzone-preview/custom-dropzone-preview.component.mjs +54 -0
  70. package/esm2022/components/ngt-dropzone/ngt-dropzone-file-viewer/ngt-dropzone-file-viewer.component.mjs +61 -0
  71. package/{esm2020 → esm2022}/components/ngt-dropzone/ngt-dropzone-view/ngt-dropzone-view.component.mjs +4 -4
  72. package/{esm2020 → esm2022}/components/ngt-dropzone/ngt-dropzone.component.mjs +8 -8
  73. package/esm2022/components/ngt-dropzone/ngt-dropzone.module.mjs +55 -0
  74. package/esm2022/components/ngt-floating-button/ngt-floating-button.component.mjs +119 -0
  75. package/{esm2020 → esm2022}/components/ngt-floating-button/ngt-floating-button.module.mjs +9 -9
  76. package/{esm2020 → esm2022}/components/ngt-form/ngt-form-validation-message/ngt-form-validation-message.component.mjs +4 -4
  77. package/esm2022/components/ngt-form/ngt-form.component.mjs +207 -0
  78. package/{esm2020 → esm2022}/components/ngt-form/ngt-form.module.mjs +7 -7
  79. package/{esm2020 → esm2022}/components/ngt-header-nav/ngt-header-nav.component.mjs +4 -4
  80. package/{esm2020 → esm2022}/components/ngt-header-nav/ngt-header-nav.module.mjs +5 -5
  81. package/{esm2020 → esm2022}/components/ngt-helper/ngt-helper.component.mjs +4 -4
  82. package/{esm2020 → esm2022}/components/ngt-helper/ngt-helper.module.mjs +9 -9
  83. package/{esm2020 → esm2022}/components/ngt-input/ngt-input.component.mjs +8 -8
  84. package/{esm2020 → esm2022}/components/ngt-input/ngt-input.module.mjs +19 -19
  85. package/{esm2020 → esm2022}/components/ngt-modal/ngt-modal-body/ngt-modal-body.component.mjs +4 -4
  86. package/{esm2020 → esm2022}/components/ngt-modal/ngt-modal-footer/ngt-modal-footer.component.mjs +4 -4
  87. package/{esm2020 → esm2022}/components/ngt-modal/ngt-modal-header/ngt-modal-header.component.mjs +5 -5
  88. package/esm2022/components/ngt-modal/ngt-modal.component.mjs +122 -0
  89. package/{esm2020 → esm2022}/components/ngt-modal/ngt-modal.module.mjs +11 -11
  90. package/{esm2020 → esm2022}/components/ngt-multi-select/ngt-multi-select.component.mjs +8 -8
  91. package/{esm2020 → esm2022}/components/ngt-multi-select/ngt-multi-select.module.mjs +19 -19
  92. package/{esm2020 → esm2022}/components/ngt-pagination/ngt-pagination.component.mjs +4 -4
  93. package/{esm2020 → esm2022}/components/ngt-pagination/ngt-pagination.module.mjs +13 -13
  94. package/esm2022/components/ngt-popover/ngt-popover-tooltip/ngt-popover-tooltip.component.mjs +59 -0
  95. package/{esm2020 → esm2022}/components/ngt-popover/ngt-popover.component.mjs +4 -4
  96. package/{esm2020 → esm2022}/components/ngt-popover/ngt-popover.directive.mjs +4 -4
  97. package/{esm2020 → esm2022}/components/ngt-popover/ngt-popover.module.mjs +10 -10
  98. package/{esm2020 → esm2022}/components/ngt-portlet/ngt-portlet-body/ngt-portlet-body.component.mjs +4 -4
  99. package/{esm2020 → esm2022}/components/ngt-portlet/ngt-portlet-footer/ngt-portlet-footer.component.mjs +4 -4
  100. package/{esm2020 → esm2022}/components/ngt-portlet/ngt-portlet-header/ngt-portlet-header.component.mjs +4 -4
  101. package/esm2022/components/ngt-portlet/ngt-portlet.component.mjs +74 -0
  102. package/{esm2020 → esm2022}/components/ngt-portlet/ngt-portlet.module.mjs +15 -15
  103. package/{esm2020 → esm2022}/components/ngt-radio-button/ngt-radio-button-container/ngt-radio-button-container.component.mjs +4 -4
  104. package/{esm2020 → esm2022}/components/ngt-radio-button/ngt-radio-button.component.mjs +8 -8
  105. package/{esm2020 → esm2022}/components/ngt-radio-button/ngt-radio-button.module.mjs +9 -9
  106. package/esm2022/components/ngt-section/ngt-section.component.mjs +151 -0
  107. package/{esm2020 → esm2022}/components/ngt-section/ngt-section.module.mjs +11 -11
  108. package/{esm2020 → esm2022}/components/ngt-select/ngt-select.component.mjs +8 -8
  109. package/{esm2020 → esm2022}/components/ngt-select/ngt-select.directive.mjs +10 -10
  110. package/{esm2020 → esm2022}/components/ngt-select/ngt-select.module.mjs +25 -25
  111. package/{esm2020 → esm2022}/components/ngt-shining/ngt-shining.component.mjs +5 -5
  112. package/{esm2020 → esm2022}/components/ngt-shining/ngt-shining.module.mjs +5 -5
  113. package/{esm2020 → esm2022}/components/ngt-sidenav/ngt-sidenav.component.mjs +6 -6
  114. package/{esm2020 → esm2022}/components/ngt-sidenav/ngt-sidenav.module.mjs +5 -5
  115. package/{esm2020 → esm2022}/components/ngt-slider/ngt-slider.component.mjs +9 -9
  116. package/{esm2020 → esm2022}/components/ngt-slider/ngt-slider.module.mjs +7 -7
  117. package/{esm2020 → esm2022}/components/ngt-svg/ngt-svg.component.mjs +4 -4
  118. package/{esm2020 → esm2022}/components/ngt-svg/ngt-svg.module.mjs +8 -8
  119. package/{esm2020 → esm2022}/components/ngt-tag/ngt-tag.component.mjs +4 -4
  120. package/{esm2020 → esm2022}/components/ngt-tag/ngt-tag.module.mjs +7 -7
  121. package/{esm2020 → esm2022}/components/ngt-textarea/ngt-textarea.component.mjs +8 -8
  122. package/{esm2020 → esm2022}/components/ngt-textarea/ngt-textarea.module.mjs +17 -17
  123. package/{esm2020 → esm2022}/components/ngt-validation/ngt-validation.component.mjs +4 -4
  124. package/{esm2020 → esm2022}/components/ngt-validation/ngt-validation.module.mjs +5 -5
  125. package/{esm2020 → esm2022}/directives/ngt-stylizable/ngt-stylizable.directive.mjs +4 -4
  126. package/{esm2020 → esm2022}/directives/ngt-stylizable/ngt-stylizable.module.mjs +5 -5
  127. package/{fesm2020 → fesm2022}/ng-tailwind.mjs +631 -644
  128. package/fesm2022/ng-tailwind.mjs.map +1 -0
  129. package/package.json +6 -15
  130. package/esm2020/components/ngt-checkbox/ngt-checkbox.component.mjs +0 -192
  131. package/esm2020/components/ngt-date/ngt-date.component.mjs +0 -435
  132. package/esm2020/components/ngt-date/ngt-date.module.mjs +0 -40
  133. package/esm2020/components/ngt-dropdown/ngt-dropdown.component.mjs +0 -205
  134. package/esm2020/components/ngt-dropzone/custom-dropzone-preview/custom-dropzone-preview.component.mjs +0 -54
  135. package/esm2020/components/ngt-dropzone/ngt-dropzone-file-viewer/ngt-dropzone-file-viewer.component.mjs +0 -66
  136. package/esm2020/components/ngt-dropzone/ngt-dropzone.module.mjs +0 -55
  137. package/esm2020/components/ngt-floating-button/ngt-floating-button.component.mjs +0 -119
  138. package/esm2020/components/ngt-form/ngt-form.component.mjs +0 -207
  139. package/esm2020/components/ngt-modal/ngt-modal.component.mjs +0 -122
  140. package/esm2020/components/ngt-popover/ngt-popover-tooltip/ngt-popover-tooltip.component.mjs +0 -59
  141. package/esm2020/components/ngt-portlet/ngt-portlet.component.mjs +0 -74
  142. package/esm2020/components/ngt-section/ngt-section.component.mjs +0 -151
  143. package/fesm2015/ng-tailwind.mjs +0 -8913
  144. package/fesm2015/ng-tailwind.mjs.map +0 -1
  145. package/fesm2020/ng-tailwind.mjs.map +0 -1
  146. /package/{esm2020 → esm2022}/animations/ngt-angular-animations.mjs +0 -0
  147. /package/{esm2020 → esm2022}/base/ngt-base-ng-model.mjs +0 -0
  148. /package/{esm2020 → esm2022}/components/ngt-dropzone/ngt-dropzone.meta.mjs +0 -0
  149. /package/{esm2020 → esm2022}/enums/size.enum.mjs +0 -0
  150. /package/{esm2020 → esm2022}/helpers/enum/enum.mjs +0 -0
  151. /package/{esm2020 → esm2022}/helpers/form/form.mjs +0 -0
  152. /package/{esm2020 → esm2022}/helpers/input-mask/input-mask.helper.mjs +0 -0
  153. /package/{esm2020 → esm2022}/helpers/promise/promise-helper.mjs +0 -0
  154. /package/{esm2020 → esm2022}/helpers/routing/route.mjs +0 -0
  155. /package/{esm2020 → esm2022}/helpers/uuid.mjs +0 -0
  156. /package/{esm2020 → esm2022}/ng-tailwind.mjs +0 -0
  157. /package/{esm2020 → esm2022}/public-api.mjs +0 -0
  158. /package/{esm2020 → esm2022}/services/http/ngt-attachment-http.service.mjs +0 -0
  159. /package/{esm2020 → esm2022}/services/http/ngt-http-form.service.mjs +0 -0
  160. /package/{esm2020 → esm2022}/services/http/ngt-http-resource.service.mjs +0 -0
  161. /package/{esm2020 → esm2022}/services/http/ngt-http-validation.service.mjs +0 -0
  162. /package/{esm2020 → esm2022}/services/http/ngt-http.service.mjs +0 -0
  163. /package/{esm2020 → esm2022}/services/http/ngt-translate.service.mjs +0 -0
  164. /package/{esm2020 → esm2022}/services/ngt-stylizable/ngt-stylizable.service.mjs +0 -0
  165. /package/{esm2020 → esm2022}/services/validation/ngt-ability-validation.service.mjs +0 -0
@@ -0,0 +1,205 @@
1
+ import { animate, state, style, transition, trigger } from '@angular/animations';
2
+ import { Component, EventEmitter, Input, Optional, Output, SkipSelf, ViewChild, } from '@angular/core';
3
+ import { getEnumFromString } from '../../helpers/enum/enum';
4
+ import { uuid } from '../../helpers/uuid';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "./ngt-dropdown-container/ngt-dropdown-container.component";
7
+ import * as i2 from "@angular/common";
8
+ export class NgtDropdownComponent {
9
+ constructor(ngtDropdownContainer, changeDetector) {
10
+ this.ngtDropdownContainer = ngtDropdownContainer;
11
+ this.changeDetector = changeDetector;
12
+ this.autoYReverse = true;
13
+ this.closeTimeout = 1000;
14
+ this.openMethod = NgtDropdownOpenMethod.HOVER;
15
+ this.onToggle = new EventEmitter();
16
+ this.onHostClick = new EventEmitter();
17
+ this.name = uuid();
18
+ this.isBindingYPosition = true;
19
+ this.isBindingXPosition = true;
20
+ this.subscriptions = [];
21
+ if (this.ngtDropdownContainer) {
22
+ this.subscriptions.push(this.ngtDropdownContainer.onActiveDropdownChange.subscribe((activeDropdown) => {
23
+ this.isOpen = (activeDropdown.name === this.name);
24
+ }));
25
+ }
26
+ }
27
+ ngOnChanges(changes) {
28
+ if (changes.openMethod) {
29
+ this.openMethod = getEnumFromString(changes.openMethod.currentValue, NgtDropdownOpenMethod);
30
+ }
31
+ }
32
+ ngOnDestroy() {
33
+ this.destroySubscriptions();
34
+ }
35
+ open() {
36
+ this.isOpen = true;
37
+ this.ngtDropdownContainer?.setActiveDropdown(this);
38
+ this.changeDetector.detectChanges();
39
+ this.bindContainerXPosition();
40
+ this.bindContainerYPosition();
41
+ this.onToggle.emit(this.isOpen);
42
+ }
43
+ closeOnSelectOption() {
44
+ if (this.closeOnClick) {
45
+ this.close();
46
+ }
47
+ }
48
+ close() {
49
+ this.isOpen = false;
50
+ this.containerXPosition = null;
51
+ this.containerYPosition = null;
52
+ this.onToggle.emit(this.isOpen);
53
+ }
54
+ toggle() {
55
+ setTimeout(() => {
56
+ if (this.isOpen) {
57
+ this.close();
58
+ }
59
+ else {
60
+ this.open();
61
+ }
62
+ });
63
+ }
64
+ onHover(host, container) {
65
+ if (this.openMethod == NgtDropdownOpenMethod.HOVER && host && container) {
66
+ this.open();
67
+ this.watchHover(host, container);
68
+ }
69
+ }
70
+ onClick(event, host, container) {
71
+ this.onHostClick?.emit();
72
+ if (this.isClickMethod()) {
73
+ event.preventDefault();
74
+ event.stopPropagation();
75
+ this.toggle();
76
+ }
77
+ if (this.openMethod == NgtDropdownOpenMethod.POPOVER_CLICK) {
78
+ this.watchHover(host, container);
79
+ }
80
+ }
81
+ onRightClick(event) {
82
+ if (this.openMethod == NgtDropdownOpenMethod.RIGHT_CLICK) {
83
+ event.preventDefault();
84
+ event.stopPropagation();
85
+ this.toggle();
86
+ }
87
+ }
88
+ shouldReverseXPosition() {
89
+ if (!this.autoXReverse || this.reverseXPosition !== undefined) {
90
+ return this.reverseXPosition;
91
+ }
92
+ if (this.isOpen && !this.isBindingXPosition) {
93
+ this.isXPositionReversed = !(this.containerXPosition > document.documentElement.clientWidth);
94
+ return this.isXPositionReversed;
95
+ }
96
+ }
97
+ shouldReverseYPosition() {
98
+ if (!this.autoYReverse || this.reverseYPosition !== undefined) {
99
+ return this.reverseYPosition;
100
+ }
101
+ if (this.isOpen && !this.isBindingYPosition) {
102
+ this.isYPositionReversed = this.containerYPosition > (document.documentElement.clientHeight * 0.9);
103
+ return this.isYPositionReversed;
104
+ }
105
+ }
106
+ bindContainerXPosition() {
107
+ if (!this.containerXPosition && this.containerRef.nativeElement.offsetWidth) {
108
+ this.isBindingXPosition = true;
109
+ setTimeout(() => {
110
+ this.containerXPosition = this.containerRef.nativeElement.getBoundingClientRect().x
111
+ + this.containerRef.nativeElement.offsetWidth;
112
+ this.isBindingXPosition = false;
113
+ this.changeDetector.detectChanges();
114
+ });
115
+ }
116
+ }
117
+ bindContainerYPosition() {
118
+ if (!this.containerYPosition && this.containerRef?.nativeElement.offsetHeight) {
119
+ this.isBindingYPosition = true;
120
+ setTimeout(() => {
121
+ this.containerYPosition = this.containerRef.nativeElement.getBoundingClientRect().y
122
+ + this.containerRef.nativeElement.offsetHeight;
123
+ this.isBindingYPosition = false;
124
+ this.changeDetector.detectChanges();
125
+ });
126
+ }
127
+ }
128
+ watchHover(host, container) {
129
+ const interval = setInterval(() => {
130
+ if (!host || !container || !this.isInHover(host, container)) {
131
+ this.close();
132
+ clearInterval(interval);
133
+ }
134
+ }, this.closeTimeout);
135
+ }
136
+ isInHover(host, container) {
137
+ return host.parentElement.querySelector(':hover') == host ||
138
+ container.parentElement.querySelector(':hover') == container;
139
+ }
140
+ destroySubscriptions() {
141
+ this.subscriptions.forEach(subscription => subscription.unsubscribe());
142
+ this.subscriptions = [];
143
+ }
144
+ isClickMethod() {
145
+ return this.openMethod == NgtDropdownOpenMethod.CLICK
146
+ || this.openMethod == NgtDropdownOpenMethod.POPOVER_CLICK;
147
+ }
148
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgtDropdownComponent, deps: [{ token: i1.NgtDropdownContainerComponent, optional: true, skipSelf: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
149
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: NgtDropdownComponent, selector: "ngt-dropdown", inputs: { scrollable: "scrollable", autoXReverse: "autoXReverse", autoYReverse: "autoYReverse", reverseXPosition: "reverseXPosition", reverseYPosition: "reverseYPosition", closeOnClick: "closeOnClick", closeTimeout: "closeTimeout", openMethod: "openMethod" }, outputs: { onToggle: "onToggle", onHostClick: "onHostClick" }, viewQueries: [{ propertyName: "containerRef", first: true, predicate: ["container"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"sm:relative\">\n <div (mouseenter)=\"onHover(host, container)\" (click)=\"onClick($event, host, container)\"\n (contextmenu)=\"onRightClick($event)\" #host>\n <ng-content select='[host]'></ng-content>\n </div>\n\n <div [hidden]='!isOpen'\n class=\"{{ shouldReverseYPosition() ? 'mb-12 bottom-0' : 'mt-4' }} {{ shouldReverseXPosition() ? 'left-0': 'right-0' }} ngt-dropdown-container sm:mr-0 mr-3 max-w-xs absolute\"\n [@openClose]=\"isOpen ? 'open' : 'closed'\" (mouseenter)=\"onHover(host, container)\"\n (click)='closeOnSelectOption()' style=\"z-index: 1100 !important;\" #container>\n\n <div *ngIf=\"isOpen\" class=\"flex flex-col\" [ngClass]=\"{ 'h-52 overflow-auto':scrollable }\">\n <ng-content select='[container]'></ng-content>\n </div>\n </div>\n</div>\n\n<button *ngIf=\"isOpen && openMethod != 'HOVER'\" type=\"button\"\n class=\"fixed z-40 inset-0 h-full w-full opacity-0 cursor-default\" (click)='toggle()'>\n</button>", styles: [".ngt-dropdown-container{max-height:30rem;width:max-content}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], animations: [
150
+ trigger('openClose', [
151
+ state('open', style({ opacity: 1, transform: 'translateY(0px)' })),
152
+ state('closed', style({ opacity: 0, transform: 'translateY(-10px)' })),
153
+ transition('closed => open', [
154
+ animate(300)
155
+ ]),
156
+ ]),
157
+ ] }); }
158
+ }
159
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgtDropdownComponent, decorators: [{
160
+ type: Component,
161
+ args: [{ selector: 'ngt-dropdown', animations: [
162
+ trigger('openClose', [
163
+ state('open', style({ opacity: 1, transform: 'translateY(0px)' })),
164
+ state('closed', style({ opacity: 0, transform: 'translateY(-10px)' })),
165
+ transition('closed => open', [
166
+ animate(300)
167
+ ]),
168
+ ]),
169
+ ], template: "<div class=\"sm:relative\">\n <div (mouseenter)=\"onHover(host, container)\" (click)=\"onClick($event, host, container)\"\n (contextmenu)=\"onRightClick($event)\" #host>\n <ng-content select='[host]'></ng-content>\n </div>\n\n <div [hidden]='!isOpen'\n class=\"{{ shouldReverseYPosition() ? 'mb-12 bottom-0' : 'mt-4' }} {{ shouldReverseXPosition() ? 'left-0': 'right-0' }} ngt-dropdown-container sm:mr-0 mr-3 max-w-xs absolute\"\n [@openClose]=\"isOpen ? 'open' : 'closed'\" (mouseenter)=\"onHover(host, container)\"\n (click)='closeOnSelectOption()' style=\"z-index: 1100 !important;\" #container>\n\n <div *ngIf=\"isOpen\" class=\"flex flex-col\" [ngClass]=\"{ 'h-52 overflow-auto':scrollable }\">\n <ng-content select='[container]'></ng-content>\n </div>\n </div>\n</div>\n\n<button *ngIf=\"isOpen && openMethod != 'HOVER'\" type=\"button\"\n class=\"fixed z-40 inset-0 h-full w-full opacity-0 cursor-default\" (click)='toggle()'>\n</button>", styles: [".ngt-dropdown-container{max-height:30rem;width:max-content}\n"] }]
170
+ }], ctorParameters: function () { return [{ type: i1.NgtDropdownContainerComponent, decorators: [{
171
+ type: Optional
172
+ }, {
173
+ type: SkipSelf
174
+ }] }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { containerRef: [{
175
+ type: ViewChild,
176
+ args: ['container', { static: true }]
177
+ }], scrollable: [{
178
+ type: Input
179
+ }], autoXReverse: [{
180
+ type: Input
181
+ }], autoYReverse: [{
182
+ type: Input
183
+ }], reverseXPosition: [{
184
+ type: Input
185
+ }], reverseYPosition: [{
186
+ type: Input
187
+ }], closeOnClick: [{
188
+ type: Input
189
+ }], closeTimeout: [{
190
+ type: Input
191
+ }], openMethod: [{
192
+ type: Input
193
+ }], onToggle: [{
194
+ type: Output
195
+ }], onHostClick: [{
196
+ type: Output
197
+ }] } });
198
+ export var NgtDropdownOpenMethod;
199
+ (function (NgtDropdownOpenMethod) {
200
+ NgtDropdownOpenMethod["CLICK"] = "CLICK";
201
+ NgtDropdownOpenMethod["POPOVER_CLICK"] = "POPOVER_CLICK";
202
+ NgtDropdownOpenMethod["RIGHT_CLICK"] = "RIGHT_CLICK";
203
+ NgtDropdownOpenMethod["HOVER"] = "HOVER";
204
+ })(NgtDropdownOpenMethod || (NgtDropdownOpenMethod = {}));
205
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd0LWRyb3Bkb3duLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXRhaWx3aW5kL3NyYy9jb21wb25lbnRzL25ndC1kcm9wZG93bi9uZ3QtZHJvcGRvd24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctdGFpbHdpbmQvc3JjL2NvbXBvbmVudHMvbmd0LWRyb3Bkb3duL25ndC1kcm9wZG93bi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pGLE9BQU8sRUFFSCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFFTCxRQUFRLEVBQ1IsTUFBTSxFQUVOLFFBQVEsRUFDUixTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDNUQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7O0FBaUIxQyxNQUFNLE9BQU8sb0JBQW9CO0lBMEI3QixZQUVZLG9CQUFtRCxFQUNuRCxjQUFpQztRQURqQyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQStCO1FBQ25ELG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQXhCN0IsaUJBQVksR0FBWSxJQUFJLENBQUM7UUFJN0IsaUJBQVksR0FBVyxJQUFJLENBQUM7UUFDNUIsZUFBVSxHQUEwQixxQkFBcUIsQ0FBQyxLQUFLLENBQUM7UUFFL0QsYUFBUSxHQUEwQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3JELGdCQUFXLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFFOUQsU0FBSSxHQUFXLElBQUksRUFBRSxDQUFDO1FBSXRCLHVCQUFrQixHQUFZLElBQUksQ0FB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LGNBR1o7d0JBQ1IsT0FBTyxDQUFDLFdBQVcsRUFBRTs0QkFDakIsS0FBSyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxDQUFDLENBQUM7NEJBQ2xFLEtBQUssQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDOzRCQUN0RSxVQUFVLENBQUMsZ0JBQWdCLEVBQUU7Z0NBQ3pCLE9BQU8sQ0FBQyxHQUFHLENBQUM7NkJBQ2YsQ0FBQzt5QkFDTCxDQUFDO3FCQUNMOzswQkE2QkksUUFBUTs7MEJBQUksUUFBUTs0RUExQndCLFlBQVk7c0JBQTVELFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFFeEIsVUFBVTtzQkFBekIsS0FBSztnQkFDVSxZQUFZO3NCQUEzQixLQUFLO2dCQUNVLFlBQVk7c0JBQTNCLEtBQUs7Z0JBQ1UsZ0JBQWdCO3NCQUEvQixLQUFLO2dCQUNVLGdCQUFnQjtzQkFBL0IsS0FBSztnQkFDVSxZQUFZO3NCQUEzQixLQUFLO2dCQUNVLFlBQVk7c0JBQTNCLEtBQUs7Z0JBQ1UsVUFBVTtzQkFBekIsS0FBSztnQkFFVyxRQUFRO3NCQUF4QixNQUFNO2dCQUNVLFdBQVc7c0JBQTNCLE1BQU07O0FBc0xYLE1BQU0sQ0FBTixJQUFZLHFCQUtYO0FBTEQsV0FBWSxxQkFBcUI7SUFDN0Isd0NBQWUsQ0FBQTtJQUNmLHdEQUErQixDQUFBO0lBQy9CLG9EQUEyQixDQUFBO0lBQzNCLHdDQUFlLENBQUE7QUFDbkIsQ0FBQyxFQUxXLHFCQUFxQixLQUFyQixxQkFBcUIsUUFLaEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhbmltYXRlLCBzdGF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIHRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPcHRpb25hbCxcbiAgICBPdXRwdXQsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBTa2lwU2VsZixcbiAgICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IGdldEVudW1Gcm9tU3RyaW5nIH0gZnJvbSAnLi4vLi4vaGVscGVycy9lbnVtL2VudW0nO1xuaW1wb3J0IHsgdXVpZCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvdXVpZCc7XG5pbXBvcnQgeyBOZ3REcm9wZG93bkNvbnRhaW5lckNvbXBvbmVudCB9IGZyb20gJy4vbmd0LWRyb3Bkb3duLWNvbnRhaW5lci9uZ3QtZHJvcGRvd24tY29udGFpbmVyLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbmd0LWRyb3Bkb3duJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vbmd0LWRyb3Bkb3duLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9uZ3QtZHJvcGRvd24uY29tcG9uZW50LmNzcyddLFxuICAgIGFuaW1hdGlvbnM6IFtcbiAgICAgICAgdHJpZ2dlcignb3BlbkNsb3NlJywgW1xuICAgICAgICAgICAgc3RhdGUoJ29wZW4nLCBzdHlsZSh7IG9wYWNpdHk6IDEsIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoMHB4KScgfSkpLFxuICAgICAgICAgICAgc3RhdGUoJ2Nsb3NlZCcsIHN0eWxlKHsgb3BhY2l0eTogMCwgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgtMTBweCknIH0pKSxcbiAgICAgICAgICAgIHRyYW5zaXRpb24oJ2Nsb3NlZCA9PiBvcGVuJywgW1xuICAgICAgICAgICAgICAgIGFuaW1hdGUoMzAwKVxuICAgICAgICAgICAgXSksXG4gICAgICAgIF0pLFxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgTmd0RHJvcGRvd25Db21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAgIEBWaWV3Q2hpbGQoJ2NvbnRhaW5lcicsIHsgc3RhdGljOiB0cnVlIH0pIHB1YmxpYyBjb250YWluZXJSZWY6IEVsZW1lbnRSZWY7XG5cbiAgICBASW5wdXQoKSBwdWJsaWMgc2Nyb2xsYWJsZTogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBwdWJsaWMgYXV0b1hSZXZlcnNlOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBhdXRvWVJldmVyc2U6IGJvb2xlYW4gPSB0cnVlO1xuICAgIEBJbnB1dCgpIHB1YmxpYyByZXZlcnNlWFBvc2l0aW9uOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIHB1YmxpYyByZXZlcnNlWVBvc2l0aW9uOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBjbG9zZU9uQ2xpY2s6IGJvb2xlYW47XG4gICAgQElucHV0KCkgcHVibGljIGNsb3NlVGltZW91dDogbnVtYmVyID0gMTAwMDtcbiAgICBASW5wdXQoKSBwdWJsaWMgb3Blbk1ldGhvZDogTmd0RHJvcGRvd25PcGVuTWV0aG9kID0gTmd0RHJvcGRvd25PcGVuTWV0aG9kLkhPVkVSO1xuXG4gICAgQE91dHB1dCgpIHB1YmxpYyBvblRvZ2dsZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIEBPdXRwdXQoKSBwdWJsaWMgb25Ib3N0Q2xpY2s6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgcHVibGljIG5hbWU6IHN0cmluZyA9IHV1aWQoKTtcbiAgICBwdWJsaWMgaXNPcGVuOiBib29sZWFuO1xuICAgIHB1YmxpYyBpc1lQb3NpdGlvblJldmVyc2VkOiBib29sZWFuO1xuICAgIHB1YmxpYyBpc1hQb3NpdGlvblJldmVyc2VkOiBib29sZWFuO1xuICAgIHB1YmxpYyBpc0JpbmRpbmdZUG9zaXRpb246IGJvb2xlYW4gPSB0cnVlO1xuICAgIHB1YmxpYyBpc0JpbmRpbmdYUG9zaXRpb246IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zOiBBcnJheTxTdWJzY3JpcHRpb24+ID0gW107XG4gICAgcHJpdmF0ZSBjb250YWluZXJYUG9zaXRpb246IG51bWJlcjtcbiAgICBwcml2YXRlIGNvbnRhaW5lcllQb3NpdGlvbjogbnVtYmVyO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgICBAT3B0aW9uYWwoKSBAU2tpcFNlbGYoKVxuICAgICAgICBwcml2YXRlIG5ndERyb3Bkb3duQ29udGFpbmVyOiBOZ3REcm9wZG93bkNvbnRhaW5lckNvbXBvbmVudCxcbiAgICAgICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgICApIHtcbiAgICAgICAgaWYgKHRoaXMubmd0RHJvcGRvd25Db250YWluZXIpIHtcbiAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgICAgICAgICAgIHRoaXMubmd0RHJvcGRvd25Db250YWluZXIub25BY3RpdmVEcm9wZG93bkNoYW5nZS5zdWJzY3JpYmUoKGFjdGl2ZURyb3Bkb3duOiBOZ3REcm9wZG93bkNvbXBvbmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzT3BlbiA9IChhY3RpdmVEcm9wZG93bi5uYW1lID09PSB0aGlzLm5hbWUpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKGNoYW5nZXMub3Blbk1ldGhvZCkge1xuICAgICAgICAgICAgdGhpcy5vcGVuTWV0aG9kID0gZ2V0RW51bUZyb21TdHJpbmcoY2hhbmdlcy5vcGVuTWV0aG9kLmN1cnJlbnRWYWx1ZSwgTmd0RHJvcGRvd25PcGVuTWV0aG9kKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kZXN0cm95U3Vic2NyaXB0aW9ucygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvcGVuKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlzT3BlbiA9IHRydWU7XG4gICAgICAgIHRoaXMubmd0RHJvcGRvd25Db250YWluZXI/LnNldEFjdGl2ZURyb3Bkb3duKHRoaXMpO1xuXG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgICAgIHRoaXMuYmluZENvbnRhaW5lclhQb3NpdGlvbigpO1xuICAgICAgICB0aGlzLmJpbmRDb250YWluZXJZUG9zaXRpb24oKTtcblxuICAgICAgICB0aGlzLm9uVG9nZ2xlLmVtaXQodGhpcy5pc09wZW4pO1xuICAgIH1cblxuICAgIHB1YmxpYyBjbG9zZU9uU2VsZWN0T3B0aW9uKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5jbG9zZU9uQ2xpY2spIHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBjbG9zZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc09wZW4gPSBmYWxzZTtcbiAgICAgICAgdGhpcy5jb250YWluZXJYUG9zaXRpb24gPSBudWxsO1xuICAgICAgICB0aGlzLmNvbnRhaW5lcllQb3NpdGlvbiA9IG51bGw7XG5cbiAgICAgICAgdGhpcy5vblRvZ2dsZS5lbWl0KHRoaXMuaXNPcGVuKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdG9nZ2xlKCk6IHZvaWQge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzT3Blbikge1xuICAgICAgICAgICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vcGVuKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkhvdmVyKGhvc3Q6IGFueSwgY29udGFpbmVyOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMub3Blbk1ldGhvZCA9PSBOZ3REcm9wZG93bk9wZW5NZXRob2QuSE9WRVIgJiYgaG9zdCAmJiBjb250YWluZXIpIHtcbiAgICAgICAgICAgIHRoaXMub3BlbigpO1xuICAgICAgICAgICAgdGhpcy53YXRjaEhvdmVyKGhvc3QsIGNvbnRhaW5lcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25DbGljayhldmVudDogRXZlbnQsIGhvc3Q6IGFueSwgY29udGFpbmVyOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkhvc3RDbGljaz8uZW1pdCgpO1xuXG4gICAgICAgIGlmICh0aGlzLmlzQ2xpY2tNZXRob2QoKSkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgICAgICAgICB0aGlzLnRvZ2dsZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMub3Blbk1ldGhvZCA9PSBOZ3REcm9wZG93bk9wZW5NZXRob2QuUE9QT1ZFUl9DTElDSykge1xuICAgICAgICAgICAgdGhpcy53YXRjaEhvdmVyKGhvc3QsIGNvbnRhaW5lcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25SaWdodENsaWNrKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5vcGVuTWV0aG9kID09IE5ndERyb3Bkb3duT3Blbk1ldGhvZC5SSUdIVF9DTElDSykge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgdGhpcy50b2dnbGUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzaG91bGRSZXZlcnNlWFBvc2l0aW9uKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIXRoaXMuYXV0b1hSZXZlcnNlIHx8IHRoaXMucmV2ZXJzZVhQb3NpdGlvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZXZlcnNlWFBvc2l0aW9uO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaXNPcGVuICYmICF0aGlzLmlzQmluZGluZ1hQb3NpdGlvbikge1xuICAgICAgICAgICAgdGhpcy5pc1hQb3NpdGlvblJldmVyc2VkID0gISh0aGlzLmNvbnRhaW5lclhQb3NpdGlvbiA+IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aCk7XG5cbiAgICAgICAgICAgIHJldHVybiB0aGlzLmlzWFBvc2l0aW9uUmV2ZXJzZWQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc2hvdWxkUmV2ZXJzZVlQb3NpdGlvbigpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKCF0aGlzLmF1dG9ZUmV2ZXJzZSB8fCB0aGlzLnJldmVyc2VZUG9zaXRpb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucmV2ZXJzZVlQb3NpdGlvbjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmlzT3BlbiAmJiAhdGhpcy5pc0JpbmRpbmdZUG9zaXRpb24pIHtcbiAgICAgICAgICAgIHRoaXMuaXNZUG9zaXRpb25SZXZlcnNlZCA9IHRoaXMuY29udGFpbmVyWVBvc2l0aW9uID4gKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQgKiAwLjkpO1xuXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5pc1lQb3NpdGlvblJldmVyc2VkO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBiaW5kQ29udGFpbmVyWFBvc2l0aW9uKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuY29udGFpbmVyWFBvc2l0aW9uICYmIHRoaXMuY29udGFpbmVyUmVmLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGgpIHtcbiAgICAgICAgICAgIHRoaXMuaXNCaW5kaW5nWFBvc2l0aW9uID0gdHJ1ZTtcblxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb250YWluZXJYUG9zaXRpb24gPSB0aGlzLmNvbnRhaW5lclJlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnhcbiAgICAgICAgICAgICAgICAgICAgKyB0aGlzLmNvbnRhaW5lclJlZi5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5pc0JpbmRpbmdYUG9zaXRpb24gPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGJpbmRDb250YWluZXJZUG9zaXRpb24oKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5jb250YWluZXJZUG9zaXRpb24gJiYgdGhpcy5jb250YWluZXJSZWY/Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0KSB7XG4gICAgICAgICAgICB0aGlzLmlzQmluZGluZ1lQb3NpdGlvbiA9IHRydWU7XG5cbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY29udGFpbmVyWVBvc2l0aW9uID0gdGhpcy5jb250YWluZXJSZWYubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS55XG4gICAgICAgICAgICAgICAgICAgICsgdGhpcy5jb250YWluZXJSZWYubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQ7XG5cbiAgICAgICAgICAgICAgICB0aGlzLmlzQmluZGluZ1lQb3NpdGlvbiA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgd2F0Y2hIb3Zlcihob3N0OiBhbnksIGNvbnRhaW5lcjogYW55KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKCFob3N0IHx8ICFjb250YWluZXIgfHwgIXRoaXMuaXNJbkhvdmVyKGhvc3QsIGNvbnRhaW5lcikpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIHRoaXMuY2xvc2VUaW1lb3V0KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzSW5Ib3Zlcihob3N0OiBhbnksIGNvbnRhaW5lcjogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBob3N0LnBhcmVudEVsZW1lbnQucXVlcnlTZWxlY3RvcignOmhvdmVyJykgPT0gaG9zdCB8fFxuICAgICAgICAgICAgY29udGFpbmVyLnBhcmVudEVsZW1lbnQucXVlcnlTZWxlY3RvcignOmhvdmVyJykgPT0gY29udGFpbmVyO1xuICAgIH1cblxuICAgIHByaXZhdGUgZGVzdHJveVN1YnNjcmlwdGlvbnMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKHN1YnNjcmlwdGlvbiA9PiBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSk7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucyA9IFtdO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNDbGlja01ldGhvZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3Blbk1ldGhvZCA9PSBOZ3REcm9wZG93bk9wZW5NZXRob2QuQ0xJQ0tcbiAgICAgICAgICAgIHx8IHRoaXMub3Blbk1ldGhvZCA9PSBOZ3REcm9wZG93bk9wZW5NZXRob2QuUE9QT1ZFUl9DTElDSztcbiAgICB9XG59XG5cbmV4cG9ydCBlbnVtIE5ndERyb3Bkb3duT3Blbk1ldGhvZCB7XG4gICAgQ0xJQ0sgPSAnQ0xJQ0snLFxuICAgIFBPUE9WRVJfQ0xJQ0sgPSAnUE9QT1ZFUl9DTElDSycsXG4gICAgUklHSFRfQ0xJQ0sgPSAnUklHSFRfQ0xJQ0snLFxuICAgIEhPVkVSID0gJ0hPVkVSJ1xufVxuIiwiPGRpdiBjbGFzcz1cInNtOnJlbGF0aXZlXCI+XG4gICAgPGRpdiAobW91c2VlbnRlcik9XCJvbkhvdmVyKGhvc3QsIGNvbnRhaW5lcilcIiAoY2xpY2spPVwib25DbGljaygkZXZlbnQsIGhvc3QsIGNvbnRhaW5lcilcIlxuICAgICAgICAoY29udGV4dG1lbnUpPVwib25SaWdodENsaWNrKCRldmVudClcIiAjaG9zdD5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PSdbaG9zdF0nPjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgW2hpZGRlbl09JyFpc09wZW4nXG4gICAgICAgIGNsYXNzPVwie3sgc2hvdWxkUmV2ZXJzZVlQb3NpdGlvbigpID8gJ21iLTEyIGJvdHRvbS0wJyA6ICdtdC00JyB9fSB7eyBzaG91bGRSZXZlcnNlWFBvc2l0aW9uKCkgPyAnbGVmdC0wJzogJ3JpZ2h0LTAnIH19IG5ndC1kcm9wZG93bi1jb250YWluZXIgc206bXItMCBtci0zIG1heC13LXhzIGFic29sdXRlXCJcbiAgICAgICAgW0BvcGVuQ2xvc2VdPVwiaXNPcGVuID8gJ29wZW4nIDogJ2Nsb3NlZCdcIiAobW91c2VlbnRlcik9XCJvbkhvdmVyKGhvc3QsIGNvbnRhaW5lcilcIlxuICAgICAgICAoY2xpY2spPSdjbG9zZU9uU2VsZWN0T3B0aW9uKCknIHN0eWxlPVwiei1pbmRleDogMTEwMCAhaW1wb3J0YW50O1wiICNjb250YWluZXI+XG5cbiAgICAgICAgPGRpdiAqbmdJZj1cImlzT3BlblwiIGNsYXNzPVwiZmxleCBmbGV4LWNvbFwiIFtuZ0NsYXNzXT1cInsgJ2gtNTIgb3ZlcmZsb3ctYXV0byc6c2Nyb2xsYWJsZSB9XCI+XG4gICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9J1tjb250YWluZXJdJz48L25nLWNvbnRlbnQ+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG5cbjxidXR0b24gKm5nSWY9XCJpc09wZW4gJiYgb3Blbk1ldGhvZCAhPSAnSE9WRVInXCIgdHlwZT1cImJ1dHRvblwiXG4gICAgY2xhc3M9XCJmaXhlZCB6LTQwIGluc2V0LTAgaC1mdWxsIHctZnVsbCBvcGFjaXR5LTAgY3Vyc29yLWRlZmF1bHRcIiAoY2xpY2spPSd0b2dnbGUoKSc+XG48L2J1dHRvbj4iXX0=
@@ -4,11 +4,11 @@ import { NgtDropdownContainerComponent } from './ngt-dropdown-container/ngt-drop
4
4
  import { NgtDropdownComponent } from './ngt-dropdown.component';
5
5
  import * as i0 from "@angular/core";
6
6
  export class NgtDropdownModule {
7
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgtDropdownModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
8
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: NgtDropdownModule, declarations: [NgtDropdownComponent, NgtDropdownContainerComponent], imports: [CommonModule], exports: [NgtDropdownComponent, NgtDropdownContainerComponent] }); }
9
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgtDropdownModule, imports: [CommonModule] }); }
7
10
  }
8
- NgtDropdownModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: NgtDropdownModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
9
- NgtDropdownModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.8", ngImport: i0, type: NgtDropdownModule, declarations: [NgtDropdownComponent, NgtDropdownContainerComponent], imports: [CommonModule], exports: [NgtDropdownComponent, NgtDropdownContainerComponent] });
10
- NgtDropdownModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: NgtDropdownModule, imports: [CommonModule] });
11
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: NgtDropdownModule, decorators: [{
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgtDropdownModule, decorators: [{
12
12
  type: NgModule,
13
13
  args: [{
14
14
  declarations: [NgtDropdownComponent, NgtDropdownContainerComponent],
@@ -18,4 +18,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImpor
18
18
  ]
19
19
  }]
20
20
  }] });
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd0LWRyb3Bkb3duLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXRhaWx3aW5kL3NyYy9jb21wb25lbnRzL25ndC1kcm9wZG93bi9uZ3QtZHJvcGRvd24ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBQzFHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDOztBQVNoRSxNQUFNLE9BQU8saUJBQWlCOzs4R0FBakIsaUJBQWlCOytHQUFqQixpQkFBaUIsaUJBTlgsb0JBQW9CLEVBQUUsNkJBQTZCLGFBRzlELFlBQVksYUFGTixvQkFBb0IsRUFBRSw2QkFBNkI7K0dBS3BELGlCQUFpQixZQUh0QixZQUFZOzJGQUdQLGlCQUFpQjtrQkFQN0IsUUFBUTttQkFBQztvQkFDTixZQUFZLEVBQUUsQ0FBQyxvQkFBb0IsRUFBRSw2QkFBNkIsQ0FBQztvQkFDbkUsT0FBTyxFQUFFLENBQUMsb0JBQW9CLEVBQUUsNkJBQTZCLENBQUM7b0JBQzlELE9BQU8sRUFBRTt3QkFDTCxZQUFZO3FCQUNmO2lCQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE5ndERyb3Bkb3duQ29udGFpbmVyQ29tcG9uZW50IH0gZnJvbSAnLi9uZ3QtZHJvcGRvd24tY29udGFpbmVyL25ndC1kcm9wZG93bi1jb250YWluZXIuY29tcG9uZW50JztcbmltcG9ydCB7IE5ndERyb3Bkb3duQ29tcG9uZW50IH0gZnJvbSAnLi9uZ3QtZHJvcGRvd24uY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgICBkZWNsYXJhdGlvbnM6IFtOZ3REcm9wZG93bkNvbXBvbmVudCwgTmd0RHJvcGRvd25Db250YWluZXJDb21wb25lbnRdLFxuICAgIGV4cG9ydHM6IFtOZ3REcm9wZG93bkNvbXBvbmVudCwgTmd0RHJvcGRvd25Db250YWluZXJDb21wb25lbnRdLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ29tbW9uTW9kdWxlXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBOZ3REcm9wZG93bk1vZHVsZSB7IH1cbiJdfQ==
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd0LWRyb3Bkb3duLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXRhaWx3aW5kL3NyYy9jb21wb25lbnRzL25ndC1kcm9wZG93bi9uZ3QtZHJvcGRvd24ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBQzFHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDOztBQVNoRSxNQUFNLE9BQU8saUJBQWlCOytHQUFqQixpQkFBaUI7Z0hBQWpCLGlCQUFpQixpQkFOWCxvQkFBb0IsRUFBRSw2QkFBNkIsYUFHOUQsWUFBWSxhQUZOLG9CQUFvQixFQUFFLDZCQUE2QjtnSEFLcEQsaUJBQWlCLFlBSHRCLFlBQVk7OzRGQUdQLGlCQUFpQjtrQkFQN0IsUUFBUTttQkFBQztvQkFDTixZQUFZLEVBQUUsQ0FBQyxvQkFBb0IsRUFBRSw2QkFBNkIsQ0FBQztvQkFDbkUsT0FBTyxFQUFFLENBQUMsb0JBQW9CLEVBQUUsNkJBQTZCLENBQUM7b0JBQzlELE9BQU8sRUFBRTt3QkFDTCxZQUFZO3FCQUNmO2lCQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE5ndERyb3Bkb3duQ29udGFpbmVyQ29tcG9uZW50IH0gZnJvbSAnLi9uZ3QtZHJvcGRvd24tY29udGFpbmVyL25ndC1kcm9wZG93bi1jb250YWluZXIuY29tcG9uZW50JztcbmltcG9ydCB7IE5ndERyb3Bkb3duQ29tcG9uZW50IH0gZnJvbSAnLi9uZ3QtZHJvcGRvd24uY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgICBkZWNsYXJhdGlvbnM6IFtOZ3REcm9wZG93bkNvbXBvbmVudCwgTmd0RHJvcGRvd25Db250YWluZXJDb21wb25lbnRdLFxuICAgIGV4cG9ydHM6IFtOZ3REcm9wZG93bkNvbXBvbmVudCwgTmd0RHJvcGRvd25Db250YWluZXJDb21wb25lbnRdLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ29tbW9uTW9kdWxlXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBOZ3REcm9wZG93bk1vZHVsZSB7IH1cbiJdfQ==
@@ -0,0 +1,54 @@
1
+ import { Component } from '@angular/core';
2
+ import { NgxDropzonePreviewComponent } from 'ngx-dropzone';
3
+ import { NgtDropzoneFileTypeEnum } from '../ngt-dropzone.meta';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/platform-browser";
6
+ import * as i2 from "@angular/common";
7
+ import * as i3 from "ngx-dropzone";
8
+ export class CustomDropzonePreviewComponent extends NgxDropzonePreviewComponent {
9
+ constructor(sanitizer) {
10
+ super(sanitizer);
11
+ this.sanitizer = sanitizer;
12
+ }
13
+ ngOnInit() {
14
+ if (!this.file) {
15
+ console.error('No file to read. Please provide a file using the [file] Input property.');
16
+ return;
17
+ }
18
+ this.bindFileType();
19
+ }
20
+ bindFileType() {
21
+ if (this.file.type.includes('.sheet')) {
22
+ this.fileType = NgtDropzoneFileTypeEnum.XLS;
23
+ }
24
+ else if (this.file.type.includes('pdf')) {
25
+ this.fileType = NgtDropzoneFileTypeEnum.PDF;
26
+ }
27
+ else if (this.file.type.includes('.document')) {
28
+ this.fileType = NgtDropzoneFileTypeEnum.DOC;
29
+ }
30
+ else if (this.file.type.includes('.dwg')) {
31
+ this.fileType = NgtDropzoneFileTypeEnum.DWG;
32
+ }
33
+ else {
34
+ this.fileType = NgtDropzoneFileTypeEnum.OTHER;
35
+ }
36
+ }
37
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CustomDropzonePreviewComponent, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component }); }
38
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CustomDropzonePreviewComponent, selector: "custom-dropzone-preview", providers: [
39
+ {
40
+ provide: NgxDropzonePreviewComponent,
41
+ useExisting: CustomDropzonePreviewComponent
42
+ }
43
+ ], usesInheritance: true, ngImport: i0, template: "<div class=\"flex flex-col items-center w-48 cursor-pointer hover:opacity-75\">\n <div class=\"w-full flex justify-center border-2 rounded py-4 text-6xl\">\n <svg *ngIf=\"fileType == 'OTHER'\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n <path class=\"heroicon-ui\" fill=\"#4a5568\"\n d=\"M6 2h9a1 1 0 0 1 .7.3l4 4a1 1 0 0 1 .3.7v13a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4c0-1.1.9-2 2-2zm9 2.41V7h2.59L15 4.41zM18 9h-3a2 2 0 0 1-2-2V4H6v16h12V9zm-2 7a1 1 0 0 1-1 1H9a1 1 0 0 1 0-2h6a1 1 0 0 1 1 1zm0-4a1 1 0 0 1-1 1H9a1 1 0 0 1 0-2h6a1 1 0 0 1 1 1zm-5-4a1 1 0 0 1-1 1H9a1 1 0 1 1 0-2h1a1 1 0 0 1 1 1z\" />\n </svg>\n\n <svg *ngIf=\"fileType == 'DOC'\" fill=\"#4a5568\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n <path\n d=\"M14.4 0l-9.6 0c-1.33,0 -2.4,1.08 -2.4,2.4l0 19.2c0,1.33 1.07,2.4 2.4,2.4l14.4 0c1.33,0 2.4,-1.07 2.4,-2.4l0 -14.4 -7.2 -7.2 0 0zm4.8 21.6l-14.4 0 0 -19.2 8.4 0 0 6 6 0 0 13.2 0 0zm-0.78 -12l-2.52 10.8 -1.68 0 -2.16 -8.15 -2.16 8.15 -1.68 0 -2.64 -10.8 1.8 0 1.68 8.17 2.16 -8.17 1.56 0 2.16 8.17 1.68 -8.17 1.8 0z\" />\n </svg>\n\n <svg *ngIf=\"fileType == 'XLS'\" fill=\"#4a5568\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n <path\n d=\"M14.4 0l-9.6 0c-1.33,0 -2.4,1.08 -2.4,2.4l0 19.2c0,1.33 1.07,2.4 2.4,2.4l14.4 0c1.33,0 2.4,-1.07 2.4,-2.4l0 -14.4 -7.2 -7.2 0 0zm4.8 21.6l-14.4 0 0 -19.2 8.4 0 0 6 6 0 0 13.2 0 0zm-6.12 -6.6l3.48 5.4 -2.16 0 -2.4 -4.08 -2.4 4.08 -2.16 0 3.48 -5.4 -3.48 -5.4 2.16 0 2.4 4.08 2.4 -4.08 2.16 0 -3.48 5.4z\" />\n </svg>\n\n <svg *ngIf=\"fileType == 'PDF'\" fill=\"#4a5568\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n <path\n d=\"M14.4 0l7.2 7.2 0 14.4c0,1.32 -1.08,2.4 -2.4,2.4l-14.4 0c-1.32,0 -2.4,-1.08 -2.4,-2.4l0 -19.2c0,-1.32 1.08,-2.4 2.4,-2.4l9.6 0 0 0zm4.8 21.6l0 -13.2 -6 0 0 -6 -8.4 0 0 19.2 14.4 0 0 0zm-8.5 -9.23c-0.28,-0.92 -0.92,-3.87 0.76,-3.92 1.68,-0.05 0.58,3.74 0.58,3.74 0.46,1.79 2.42,3.07 2.42,3.07 0.6,-0.18 4.02,-0.57 3.54,1.21 -0.52,1.77 -4.2,0.1 -4.2,0.1 -2.34,0.17 -4.09,0.8 -4.09,0.8 -1.36,2.53 -2.94,3.63 -3.59,2.56 -0.8,-1.33 2.56,-3.04 2.56,-3.04 1.74,-2.83 2,-4.47 2.02,-4.52l0 0zm0.78 1.01c-0.48,1.56 -1.44,3.23 -1.44,3.23 1.02,-0.41 3.26,-0.88 3.26,-0.88 -1.37,-1.2 -1.79,-2.34 -1.82,-2.35l0 0zm3.77 2.6c0,0 2.1,0.79 2.15,0.47 0.08,-0.32 -1.6,-0.61 -2.15,-0.47l0 0zm-6.79 1.79c-0.93,0.36 -1.81,1.9 -1.6,1.9 0.22,0.01 1.1,-0.72 1.6,-1.9l0 0zm3.02 -6.66c0,-0.06 0.52,-2.01 0,-2.07 -0.36,-0.04 -0.01,2.02 0,2.07z\" />\n </svg>\n\n <svg *ngIf=\"fileType == 'DWG'\" version=\"1.0\" xmlns=\"http://www.w3.org/2000/svg\" width=\"512.000000pt\" height=\"512.000000pt\"\n viewBox=\"0 0 512.000000 512.000000\" preserveAspectRatio=\"xMidYMid meet\">\n <g transform=\"translate(0.000000,512.000000) scale(0.100000,-0.100000)\" fill=\"#4a5568\" stroke=\"none\">\n <path\n d=\"M830 5104 c-42 -18 -86 -58 -108 -99 -15 -27 -17 -109 -20 -871 l-3 -842 -92 -4 c-112 -5 -179 -32 -235 -92 -81 -88 -77 -39 -77 -946 0 -801 0 -805 21 -851 54 -116 140 -169 291 -177 l92 -5 3 -536 c3 -588 1 -562 65 -623 65 -62 -61 -58 1793 -58 1854 0 1728 -4 1793 58 64 61 62 35 65 623 l3 536 92 5 c151 8 237 61 291 177 21 46 21 50 21 851 0 907 4 858 -77 946 -56 60 -123 87 -235 92 l-93 4 -1 302 c-1 165 -4 312 -8 326 -8 30 -994 1160 -1033 1184 -24 15 -138 16 -1270 16 -1088 -1 -1247 -3 -1278 -16z m2400 -714 l0 -530 29 -32 29 -33 466 -3 466 -3 0 -249 0 -250 -1660 0 -1660 0 0 815 0 815 1165 0 1165 0 0 -530z m1093 -1516 c87 -16 127 -32 127 -48 -1 -17 -48 -197 -54 -203 -2 -3 -27 2 -54 11 -131 44 -323 40 -429 -9 -72 -33 -146 -110 -174 -182 -27 -72 -36 -204 -19 -282 26 -120 110 -221 217 -261 70 -26 193 -36 251 -21 l42 12 0 124 0 125 -95 0 -95 0 0 110 0 110 230 0 230 0 0 -320 0 -320 -27 -11 c-16 -6 -71 -20 -123 -32 -129 -29 -401 -31 -500 -4 -116 33 -189 74 -266 151 -114 114 -164 244 -164 426 0 265 115 460 331 563 52 25 117 50 144 57 122 30 283 31 428 4z m-3042 -12 c304 -82 457 -320 419 -653 -35 -312 -215 -491 -545 -544 -94 -16 -317 -20 -448 -9 l-77 7 0 602 0 603 83 10 c45 6 174 9 287 7 170 -2 218 -6 281 -23z m808 -34 c16 -81 96 -524 127 -705 15 -90 29 -161 31 -160 2 2 14 66 28 143 20 116 101 518 145 722 l12 52 147 0 147 0 28 -147 c67 -356 104 -564 116 -648 13 -92 29 -144 30 -95 0 42 47 310 107 608 l56 282 138 0 c77 0 139 -3 139 -7 0 -5 -217 -853 -301 -1175 l-10 -38 -149 0 c-133 0 -149 2 -154 18 -13 44 -127 653 -141 759 -9 65 -18 119 -19 120 -1 2 -12 -55 -24 -125 -13 -70 -55 -272 -94 -449 l-71 -323 -152 0 -151 0 -142 598 c-78 328 -142 603 -142 610 0 9 36 12 144 12 l145 0 10 -52z m2131 -2088 l0 -480 -1660 0 -1660 0 0 480 0 480 1660 0 1660 0 0 -480z\" />\n\n <path\n d=\"M923 2673 l-23 -4 0 -399 0 -399 43 -6 c60 -9 200 12 261 39 140 63 212 207 204 411 -3 86 -8 109 -34 165 -51 108 -128 167 -249 189 -57 11 -157 13 -202 4z\" />\n </g>\n </svg>\n </div>\n</div>\n\n<ngx-dropzone-remove-badge *ngIf=\"removable\" (click)=\"_remove($event)\" style=\"top: -15px !important;\">\n</ngx-dropzone-remove-badge>", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.NgxDropzoneRemoveBadgeComponent, selector: "ngx-dropzone-remove-badge" }] }); }
44
+ }
45
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CustomDropzonePreviewComponent, decorators: [{
46
+ type: Component,
47
+ args: [{ selector: 'custom-dropzone-preview', providers: [
48
+ {
49
+ provide: NgxDropzonePreviewComponent,
50
+ useExisting: CustomDropzonePreviewComponent
51
+ }
52
+ ], template: "<div class=\"flex flex-col items-center w-48 cursor-pointer hover:opacity-75\">\n <div class=\"w-full flex justify-center border-2 rounded py-4 text-6xl\">\n <svg *ngIf=\"fileType == 'OTHER'\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n <path class=\"heroicon-ui\" fill=\"#4a5568\"\n d=\"M6 2h9a1 1 0 0 1 .7.3l4 4a1 1 0 0 1 .3.7v13a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4c0-1.1.9-2 2-2zm9 2.41V7h2.59L15 4.41zM18 9h-3a2 2 0 0 1-2-2V4H6v16h12V9zm-2 7a1 1 0 0 1-1 1H9a1 1 0 0 1 0-2h6a1 1 0 0 1 1 1zm0-4a1 1 0 0 1-1 1H9a1 1 0 0 1 0-2h6a1 1 0 0 1 1 1zm-5-4a1 1 0 0 1-1 1H9a1 1 0 1 1 0-2h1a1 1 0 0 1 1 1z\" />\n </svg>\n\n <svg *ngIf=\"fileType == 'DOC'\" fill=\"#4a5568\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n <path\n d=\"M14.4 0l-9.6 0c-1.33,0 -2.4,1.08 -2.4,2.4l0 19.2c0,1.33 1.07,2.4 2.4,2.4l14.4 0c1.33,0 2.4,-1.07 2.4,-2.4l0 -14.4 -7.2 -7.2 0 0zm4.8 21.6l-14.4 0 0 -19.2 8.4 0 0 6 6 0 0 13.2 0 0zm-0.78 -12l-2.52 10.8 -1.68 0 -2.16 -8.15 -2.16 8.15 -1.68 0 -2.64 -10.8 1.8 0 1.68 8.17 2.16 -8.17 1.56 0 2.16 8.17 1.68 -8.17 1.8 0z\" />\n </svg>\n\n <svg *ngIf=\"fileType == 'XLS'\" fill=\"#4a5568\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n <path\n d=\"M14.4 0l-9.6 0c-1.33,0 -2.4,1.08 -2.4,2.4l0 19.2c0,1.33 1.07,2.4 2.4,2.4l14.4 0c1.33,0 2.4,-1.07 2.4,-2.4l0 -14.4 -7.2 -7.2 0 0zm4.8 21.6l-14.4 0 0 -19.2 8.4 0 0 6 6 0 0 13.2 0 0zm-6.12 -6.6l3.48 5.4 -2.16 0 -2.4 -4.08 -2.4 4.08 -2.16 0 3.48 -5.4 -3.48 -5.4 2.16 0 2.4 4.08 2.4 -4.08 2.16 0 -3.48 5.4z\" />\n </svg>\n\n <svg *ngIf=\"fileType == 'PDF'\" fill=\"#4a5568\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n <path\n d=\"M14.4 0l7.2 7.2 0 14.4c0,1.32 -1.08,2.4 -2.4,2.4l-14.4 0c-1.32,0 -2.4,-1.08 -2.4,-2.4l0 -19.2c0,-1.32 1.08,-2.4 2.4,-2.4l9.6 0 0 0zm4.8 21.6l0 -13.2 -6 0 0 -6 -8.4 0 0 19.2 14.4 0 0 0zm-8.5 -9.23c-0.28,-0.92 -0.92,-3.87 0.76,-3.92 1.68,-0.05 0.58,3.74 0.58,3.74 0.46,1.79 2.42,3.07 2.42,3.07 0.6,-0.18 4.02,-0.57 3.54,1.21 -0.52,1.77 -4.2,0.1 -4.2,0.1 -2.34,0.17 -4.09,0.8 -4.09,0.8 -1.36,2.53 -2.94,3.63 -3.59,2.56 -0.8,-1.33 2.56,-3.04 2.56,-3.04 1.74,-2.83 2,-4.47 2.02,-4.52l0 0zm0.78 1.01c-0.48,1.56 -1.44,3.23 -1.44,3.23 1.02,-0.41 3.26,-0.88 3.26,-0.88 -1.37,-1.2 -1.79,-2.34 -1.82,-2.35l0 0zm3.77 2.6c0,0 2.1,0.79 2.15,0.47 0.08,-0.32 -1.6,-0.61 -2.15,-0.47l0 0zm-6.79 1.79c-0.93,0.36 -1.81,1.9 -1.6,1.9 0.22,0.01 1.1,-0.72 1.6,-1.9l0 0zm3.02 -6.66c0,-0.06 0.52,-2.01 0,-2.07 -0.36,-0.04 -0.01,2.02 0,2.07z\" />\n </svg>\n\n <svg *ngIf=\"fileType == 'DWG'\" version=\"1.0\" xmlns=\"http://www.w3.org/2000/svg\" width=\"512.000000pt\" height=\"512.000000pt\"\n viewBox=\"0 0 512.000000 512.000000\" preserveAspectRatio=\"xMidYMid meet\">\n <g transform=\"translate(0.000000,512.000000) scale(0.100000,-0.100000)\" fill=\"#4a5568\" stroke=\"none\">\n <path\n d=\"M830 5104 c-42 -18 -86 -58 -108 -99 -15 -27 -17 -109 -20 -871 l-3 -842 -92 -4 c-112 -5 -179 -32 -235 -92 -81 -88 -77 -39 -77 -946 0 -801 0 -805 21 -851 54 -116 140 -169 291 -177 l92 -5 3 -536 c3 -588 1 -562 65 -623 65 -62 -61 -58 1793 -58 1854 0 1728 -4 1793 58 64 61 62 35 65 623 l3 536 92 5 c151 8 237 61 291 177 21 46 21 50 21 851 0 907 4 858 -77 946 -56 60 -123 87 -235 92 l-93 4 -1 302 c-1 165 -4 312 -8 326 -8 30 -994 1160 -1033 1184 -24 15 -138 16 -1270 16 -1088 -1 -1247 -3 -1278 -16z m2400 -714 l0 -530 29 -32 29 -33 466 -3 466 -3 0 -249 0 -250 -1660 0 -1660 0 0 815 0 815 1165 0 1165 0 0 -530z m1093 -1516 c87 -16 127 -32 127 -48 -1 -17 -48 -197 -54 -203 -2 -3 -27 2 -54 11 -131 44 -323 40 -429 -9 -72 -33 -146 -110 -174 -182 -27 -72 -36 -204 -19 -282 26 -120 110 -221 217 -261 70 -26 193 -36 251 -21 l42 12 0 124 0 125 -95 0 -95 0 0 110 0 110 230 0 230 0 0 -320 0 -320 -27 -11 c-16 -6 -71 -20 -123 -32 -129 -29 -401 -31 -500 -4 -116 33 -189 74 -266 151 -114 114 -164 244 -164 426 0 265 115 460 331 563 52 25 117 50 144 57 122 30 283 31 428 4z m-3042 -12 c304 -82 457 -320 419 -653 -35 -312 -215 -491 -545 -544 -94 -16 -317 -20 -448 -9 l-77 7 0 602 0 603 83 10 c45 6 174 9 287 7 170 -2 218 -6 281 -23z m808 -34 c16 -81 96 -524 127 -705 15 -90 29 -161 31 -160 2 2 14 66 28 143 20 116 101 518 145 722 l12 52 147 0 147 0 28 -147 c67 -356 104 -564 116 -648 13 -92 29 -144 30 -95 0 42 47 310 107 608 l56 282 138 0 c77 0 139 -3 139 -7 0 -5 -217 -853 -301 -1175 l-10 -38 -149 0 c-133 0 -149 2 -154 18 -13 44 -127 653 -141 759 -9 65 -18 119 -19 120 -1 2 -12 -55 -24 -125 -13 -70 -55 -272 -94 -449 l-71 -323 -152 0 -151 0 -142 598 c-78 328 -142 603 -142 610 0 9 36 12 144 12 l145 0 10 -52z m2131 -2088 l0 -480 -1660 0 -1660 0 0 480 0 480 1660 0 1660 0 0 -480z\" />\n\n <path\n d=\"M923 2673 l-23 -4 0 -399 0 -399 43 -6 c60 -9 200 12 261 39 140 63 212 207 204 411 -3 86 -8 109 -34 165 -51 108 -128 167 -249 189 -57 11 -157 13 -202 4z\" />\n </g>\n </svg>\n </div>\n</div>\n\n<ngx-dropzone-remove-badge *ngIf=\"removable\" (click)=\"_remove($event)\" style=\"top: -15px !important;\">\n</ngx-dropzone-remove-badge>" }]
53
+ }], ctorParameters: function () { return [{ type: i1.DomSanitizer }]; } });
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLWRyb3B6b25lLXByZXZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctdGFpbHdpbmQvc3JjL2NvbXBvbmVudHMvbmd0LWRyb3B6b25lL2N1c3RvbS1kcm9wem9uZS1wcmV2aWV3L2N1c3RvbS1kcm9wem9uZS1wcmV2aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXRhaWx3aW5kL3NyYy9jb21wb25lbnRzL25ndC1kcm9wem9uZS9jdXN0b20tZHJvcHpvbmUtcHJldmlldy9jdXN0b20tZHJvcHpvbmUtcHJldmlldy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRWxELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUUzRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7QUFZL0QsTUFBTSxPQUFPLDhCQUErQixTQUFRLDJCQUEyQjtJQUczRSxZQUEwQixTQUF1QjtRQUM3QyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7UUFESyxjQUFTLEdBQVQsU0FBUyxDQUFjO0lBRWpELENBQUM7SUFFTSxRQUFRO1FBQ1gsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDWixPQUFPLENBQUMsS0FBSyxDQUFDLHlFQUF5RSxDQUFDLENBQUM7WUFFekYsT0FBTztTQUNWO1FBRUQsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFTyxZQUFZO1FBQ2hCLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ25DLElBQUksQ0FBQyxRQUFRLEdBQUcsdUJBQXVCLENBQUMsR0FBRyxDQUFDO1NBQy9DO2FBQU0sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDdkMsSUFBSSxDQUFDLFFBQVEsR0FBRyx1QkFBdUIsQ0FBQyxHQUFHLENBQUM7U0FDL0M7YUFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsRUFBRTtZQUM3QyxJQUFJLENBQUMsUUFBUSxHQUFHLHVCQUF1QixDQUFDLEdBQUcsQ0FBQztTQUMvQzthQUFNLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3hDLElBQUksQ0FBQyxRQUFRLEdBQUcsdUJBQXVCLENBQUMsR0FBRyxDQUFDO1NBQy9DO2FBQU07WUFDSCxJQUFJLENBQUMsUUFBUSxHQUFHLHVCQUF1QixDQUFDLEtBQUssQ0FBQztTQUNqRDtJQUNMLENBQUM7K0dBN0JRLDhCQUE4QjttR0FBOUIsOEJBQThCLGtEQVA1QjtZQUNQO2dCQUNJLE9BQU8sRUFBRSwyQkFBMkI7Z0JBQ3BDLFdBQVcsRUFBRSw4QkFBOEI7YUFDOUM7U0FDSixpRENkTCxpbUtBb0M0Qjs7NEZEcEJmLDhCQUE4QjtrQkFWMUMsU0FBUzsrQkFDSSx5QkFBeUIsYUFFeEI7d0JBQ1A7NEJBQ0ksT0FBTyxFQUFFLDJCQUEyQjs0QkFDcEMsV0FBVyxnQ0FBZ0M7eUJBQzlDO3FCQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgTmd4RHJvcHpvbmVQcmV2aWV3Q29tcG9uZW50IH0gZnJvbSAnbmd4LWRyb3B6b25lJztcblxuaW1wb3J0IHsgTmd0RHJvcHpvbmVGaWxlVHlwZUVudW0gfSBmcm9tICcuLi9uZ3QtZHJvcHpvbmUubWV0YSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnY3VzdG9tLWRyb3B6b25lLXByZXZpZXcnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9jdXN0b20tZHJvcHpvbmUtcHJldmlldy5jb21wb25lbnQuaHRtbCcsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IE5neERyb3B6b25lUHJldmlld0NvbXBvbmVudCxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBDdXN0b21Ecm9wem9uZVByZXZpZXdDb21wb25lbnRcbiAgICAgICAgfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgQ3VzdG9tRHJvcHpvbmVQcmV2aWV3Q29tcG9uZW50IGV4dGVuZHMgTmd4RHJvcHpvbmVQcmV2aWV3Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBwdWJsaWMgZmlsZVR5cGU6IE5ndERyb3B6b25lRmlsZVR5cGVFbnVtO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKHB1YmxpYyBzYW5pdGl6ZXI6IERvbVNhbml0aXplcikge1xuICAgICAgICBzdXBlcihzYW5pdGl6ZXIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmZpbGUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ05vIGZpbGUgdG8gcmVhZC4gUGxlYXNlIHByb3ZpZGUgYSBmaWxlIHVzaW5nIHRoZSBbZmlsZV0gSW5wdXQgcHJvcGVydHkuJyk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYmluZEZpbGVUeXBlKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBiaW5kRmlsZVR5cGUoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmZpbGUudHlwZS5pbmNsdWRlcygnLnNoZWV0JykpIHtcbiAgICAgICAgICAgIHRoaXMuZmlsZVR5cGUgPSBOZ3REcm9wem9uZUZpbGVUeXBlRW51bS5YTFM7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5maWxlLnR5cGUuaW5jbHVkZXMoJ3BkZicpKSB7XG4gICAgICAgICAgICB0aGlzLmZpbGVUeXBlID0gTmd0RHJvcHpvbmVGaWxlVHlwZUVudW0uUERGO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZmlsZS50eXBlLmluY2x1ZGVzKCcuZG9jdW1lbnQnKSkge1xuICAgICAgICAgICAgdGhpcy5maWxlVHlwZSA9IE5ndERyb3B6b25lRmlsZVR5cGVFbnVtLkRPQztcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmZpbGUudHlwZS5pbmNsdWRlcygnLmR3ZycpKSB7XG4gICAgICAgICAgICB0aGlzLmZpbGVUeXBlID0gTmd0RHJvcHpvbmVGaWxlVHlwZUVudW0uRFdHO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5maWxlVHlwZSA9IE5ndERyb3B6b25lRmlsZVR5cGVFbnVtLk9USEVSO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgaXRlbXMtY2VudGVyIHctNDggY3Vyc29yLXBvaW50ZXIgaG92ZXI6b3BhY2l0eS03NVwiPlxuICAgIDxkaXYgY2xhc3M9XCJ3LWZ1bGwgZmxleCBqdXN0aWZ5LWNlbnRlciBib3JkZXItMiByb3VuZGVkIHB5LTQgdGV4dC02eGxcIj5cbiAgICAgICAgPHN2ZyAqbmdJZj1cImZpbGVUeXBlID09ICdPVEhFUidcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9XCJoZXJvaWNvbi11aVwiIGZpbGw9XCIjNGE1NTY4XCJcbiAgICAgICAgICAgICAgICBkPVwiTTYgMmg5YTEgMSAwIDAgMSAuNy4zbDQgNGExIDEgMCAwIDEgLjMuN3YxM2EyIDIgMCAwIDEtMiAySDZhMiAyIDAgMCAxLTItMlY0YzAtMS4xLjktMiAyLTJ6bTkgMi40MVY3aDIuNTlMMTUgNC40MXpNMTggOWgtM2EyIDIgMCAwIDEtMi0yVjRINnYxNmgxMlY5em0tMiA3YTEgMSAwIDAgMS0xIDFIOWExIDEgMCAwIDEgMC0yaDZhMSAxIDAgMCAxIDEgMXptMC00YTEgMSAwIDAgMS0xIDFIOWExIDEgMCAwIDEgMC0yaDZhMSAxIDAgMCAxIDEgMXptLTUtNGExIDEgMCAwIDEtMSAxSDlhMSAxIDAgMSAxIDAtMmgxYTEgMSAwIDAgMSAxIDF6XCIgLz5cbiAgICAgICAgPC9zdmc+XG5cbiAgICAgICAgPHN2ZyAqbmdJZj1cImZpbGVUeXBlID09ICdET0MnXCIgZmlsbD1cIiM0YTU1NjhcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICBkPVwiTTE0LjQgMGwtOS42IDBjLTEuMzMsMCAtMi40LDEuMDggLTIuNCwyLjRsMCAxOS4yYzAsMS4zMyAxLjA3LDIuNCAyLjQsMi40bDE0LjQgMGMxLjMzLDAgMi40LC0xLjA3IDIuNCwtMi40bDAgLTE0LjQgLTcuMiAtNy4yIDAgMHptNC44IDIxLjZsLTE0LjQgMCAwIC0xOS4yIDguNCAwIDAgNiA2IDAgMCAxMy4yIDAgMHptLTAuNzggLTEybC0yLjUyIDEwLjggLTEuNjggMCAtMi4xNiAtOC4xNSAtMi4xNiA4LjE1IC0xLjY4IDAgLTIuNjQgLTEwLjggMS44IDAgMS42OCA4LjE3IDIuMTYgLTguMTcgMS41NiAwIDIuMTYgOC4xNyAxLjY4IC04LjE3IDEuOCAwelwiIC8+XG4gICAgICAgIDwvc3ZnPlxuXG4gICAgICAgIDxzdmcgKm5nSWY9XCJmaWxlVHlwZSA9PSAnWExTJ1wiIGZpbGw9XCIjNGE1NTY4XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgZD1cIk0xNC40IDBsLTkuNiAwYy0xLjMzLDAgLTIuNCwxLjA4IC0yLjQsMi40bDAgMTkuMmMwLDEuMzMgMS4wNywyLjQgMi40LDIuNGwxNC40IDBjMS4zMywwIDIuNCwtMS4wNyAyLjQsLTIuNGwwIC0xNC40IC03LjIgLTcuMiAwIDB6bTQuOCAyMS42bC0xNC40IDAgMCAtMTkuMiA4LjQgMCAwIDYgNiAwIDAgMTMuMiAwIDB6bS02LjEyIC02LjZsMy40OCA1LjQgLTIuMTYgMCAtMi40IC00LjA4IC0yLjQgNC4wOCAtMi4xNiAwIDMuNDggLTUuNCAtMy40OCAtNS40IDIuMTYgMCAyLjQgNC4wOCAyLjQgLTQuMDggMi4xNiAwIC0zLjQ4IDUuNHpcIiAvPlxuICAgICAgICA8L3N2Zz5cblxuICAgICAgICA8c3ZnICpuZ0lmPVwiZmlsZVR5cGUgPT0gJ1BERidcIiBmaWxsPVwiIzRhNTU2OFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgIGQ9XCJNMTQuNCAwbDcuMiA3LjIgMCAxNC40YzAsMS4zMiAtMS4wOCwyLjQgLTIuNCwyLjRsLTE0LjQgMGMtMS4zMiwwIC0yLjQsLTEuMDggLTIuNCwtMi40bDAgLTE5LjJjMCwtMS4zMiAxLjA4LC0yLjQgMi40LC0yLjRsOS42IDAgMCAwem00LjggMjEuNmwwIC0xMy4yIC02IDAgMCAtNiAtOC40IDAgMCAxOS4yIDE0LjQgMCAwIDB6bS04LjUgLTkuMjNjLTAuMjgsLTAuOTIgLTAuOTIsLTMuODcgMC43NiwtMy45MiAxLjY4LC0wLjA1IDAuNTgsMy43NCAwLjU4LDMuNzQgMC40NiwxLjc5IDIuNDIsMy4wNyAyLjQyLDMuMDcgMC42LC0wLjE4IDQuMDIsLTAuNTcgMy41NCwxLjIxIC0wLjUyLDEuNzcgLTQuMiwwLjEgLTQuMiwwLjEgLTIuMzQsMC4xNyAtNC4wOSwwLjggLTQuMDksMC44IC0xLjM2LDIuNTMgLTIuOTQsMy42MyAtMy41OSwyLjU2IC0wLjgsLTEuMzMgMi41NiwtMy4wNCAyLjU2LC0zLjA0IDEuNzQsLTIuODMgMiwtNC40NyAyLjAyLC00LjUybDAgMHptMC43OCAxLjAxYy0wLjQ4LDEuNTYgLTEuNDQsMy4yMyAtMS40NCwzLjIzIDEuMDIsLTAuNDEgMy4yNiwtMC44OCAzLjI2LC0wLjg4IC0xLjM3LC0xLjIgLTEuNzksLTIuMzQgLTEuODIsLTIuMzVsMCAwem0zLjc3IDIuNmMwLDAgMi4xLDAuNzkgMi4xNSwwLjQ3IDAuMDgsLTAuMzIgLTEuNiwtMC42MSAtMi4xNSwtMC40N2wwIDB6bS02Ljc5IDEuNzljLTAuOTMsMC4zNiAtMS44MSwxLjkgLTEuNiwxLjkgMC4yMiwwLjAxIDEuMSwtMC43MiAxLjYsLTEuOWwwIDB6bTMuMDIgLTYuNjZjMCwtMC4wNiAwLjUyLC0yLjAxIDAsLTIuMDcgLTAuMzYsLTAuMDQgLTAuMDEsMi4wMiAwLDIuMDd6XCIgLz5cbiAgICAgICAgPC9zdmc+XG5cbiAgICAgICAgPHN2ZyAqbmdJZj1cImZpbGVUeXBlID09ICdEV0cnXCIgdmVyc2lvbj1cIjEuMFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjUxMi4wMDAwMDBwdFwiIGhlaWdodD1cIjUxMi4wMDAwMDBwdFwiXG4gICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDUxMi4wMDAwMDAgNTEyLjAwMDAwMFwiIHByZXNlcnZlQXNwZWN0UmF0aW89XCJ4TWlkWU1pZCBtZWV0XCI+XG4gICAgICAgICAgICA8ZyB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMC4wMDAwMDAsNTEyLjAwMDAwMCkgc2NhbGUoMC4xMDAwMDAsLTAuMTAwMDAwKVwiIGZpbGw9XCIjNGE1NTY4XCIgc3Ryb2tlPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgIGQ9XCJNODMwIDUxMDQgYy00MiAtMTggLTg2IC01OCAtMTA4IC05OSAtMTUgLTI3IC0xNyAtMTA5IC0yMCAtODcxIGwtMyAtODQyIC05MiAtNCBjLTExMiAtNSAtMTc5IC0zMiAtMjM1IC05MiAtODEgLTg4IC03NyAtMzkgLTc3IC05NDYgMCAtODAxIDAgLTgwNSAyMSAtODUxIDU0IC0xMTYgMTQwIC0xNjkgMjkxIC0xNzcgbDkyIC01IDMgLTUzNiBjMyAtNTg4IDEgLTU2MiA2NSAtNjIzIDY1IC02MiAtNjEgLTU4IDE3OTMgLTU4IDE4NTQgMCAxNzI4IC00IDE3OTMgNTggNjQgNjEgNjIgMzUgNjUgNjIzIGwzIDUzNiA5MiA1IGMxNTEgOCAyMzcgNjEgMjkxIDE3NyAyMSA0NiAyMSA1MCAyMSA4NTEgMCA5MDcgNCA4NTggLTc3IDk0NiAtNTYgNjAgLTEyMyA4NyAtMjM1IDkyIGwtOTMgNCAtMSAzMDIgYy0xIDE2NSAtNCAzMTIgLTggMzI2IC04IDMwIC05OTQgMTE2MCAtMTAzMyAxMTg0IC0yNCAxNSAtMTM4IDE2IC0xMjcwIDE2IC0xMDg4IC0xIC0xMjQ3IC0zIC0xMjc4IC0xNnogbTI0MDAgLTcxNCBsMCAtNTMwIDI5IC0zMiAyOSAtMzMgNDY2IC0zIDQ2NiAtMyAwIC0yNDkgMCAtMjUwIC0xNjYwIDAgLTE2NjAgMCAwIDgxNSAwIDgxNSAxMTY1IDAgMTE2NSAwIDAgLTUzMHogbTEwOTMgLTE1MTYgYzg3IC0xNiAxMjcgLTMyIDEyNyAtNDggLTEgLTE3IC00OCAtMTk3IC01NCAtMjAzIC0yIC0zIC0yNyAyIC01NCAxMSAtMTMxIDQ0IC0zMjMgNDAgLTQyOSAtOSAtNzIgLTMzIC0xNDYgLTExMCAtMTc0IC0xODIgLTI3IC03MiAtMzYgLTIwNCAtMTkgLTI4MiAyNiAtMTIwIDExMCAtMjIxIDIxNyAtMjYxIDcwIC0yNiAxOTMgLTM2IDI1MSAtMjEgbDQyIDEyIDAgMTI0IDAgMTI1IC05NSAwIC05NSAwIDAgMTEwIDAgMTEwIDIzMCAwIDIzMCAwIDAgLTMyMCAwIC0zMjAgLTI3IC0xMSBjLTE2IC02IC03MSAtMjAgLTEyMyAtMzIgLTEyOSAtMjkgLTQwMSAtMzEgLTUwMCAtNCAtMTE2IDMzIC0xODkgNzQgLTI2NiAxNTEgLTExNCAxMTQgLTE2NCAyNDQgLTE2NCA0MjYgMCAyNjUgMTE1IDQ2MCAzMzEgNTYzIDUyIDI1IDExNyA1MCAxNDQgNTcgMTIyIDMwIDI4MyAzMSA0MjggNHogbS0zMDQyIC0xMiBjMzA0IC04MiA0NTcgLTMyMCA0MTkgLTY1MyAtMzUgLTMxMiAtMjE1IC00OTEgLTU0NSAtNTQ0IC05NCAtMTYgLTMxNyAtMjAgLTQ0OCAtOSBsLTc3IDcgMCA2MDIgMCA2MDMgODMgMTAgYzQ1IDYgMTc0IDkgMjg3IDcgMTcwIC0yIDIxOCAtNiAyODEgLTIzeiBtODA4IC0zNCBjMTYgLTgxIDk2IC01MjQgMTI3IC03MDUgMTUgLTkwIDI5IC0xNjEgMzEgLTE2MCAyIDIgMTQgNjYgMjggMTQzIDIwIDExNiAxMDEgNTE4IDE0NSA3MjIgbDEyIDUyIDE0NyAwIDE0NyAwIDI4IC0xNDcgYzY3IC0zNTYgMTA0IC01NjQgMTE2IC02NDggMTMgLTkyIDI5IC0xNDQgMzAgLTk1IDAgNDIgNDcgMzEwIDEwNyA2MDggbDU2IDI4MiAxMzggMCBjNzcgMCAxMzkgLTMgMTM5IC03IDAgLTUgLTIxNyAtODUzIC0zMDEgLTExNzUgbC0xMCAtMzggLTE0OSAwIGMtMTMzIDAgLTE0OSAyIC0xNTQgMTggLTEzIDQ0IC0xMjcgNjUzIC0xNDEgNzU5IC05IDY1IC0xOCAxMTkgLTE5IDEyMCAtMSAyIC0xMiAtNTUgLTI0IC0xMjUgLTEzIC03MCAtNTUgLTI3MiAtOTQgLTQ0OSBsLTcxIC0zMjMgLTE1MiAwIC0xNTEgMCAtMTQyIDU5OCBjLTc4IDMyOCAtMTQyIDYwMyAtMTQyIDYxMCAwIDkgMzYgMTIgMTQ0IDEyIGwxNDUgMCAxMCAtNTJ6IG0yMTMxIC0yMDg4IGwwIC00ODAgLTE2NjAgMCAtMTY2MCAwIDAgNDgwIDAgNDgwIDE2NjAgMCAxNjYwIDAgMCAtNDgwelwiIC8+XG5cbiAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICBkPVwiTTkyMyAyNjczIGwtMjMgLTQgMCAtMzk5IDAgLTM5OSA0MyAtNiBjNjAgLTkgMjAwIDEyIDI2MSAzOSAxNDAgNjMgMjEyIDIwNyAyMDQgNDExIC0zIDg2IC04IDEwOSAtMzQgMTY1IC01MSAxMDggLTEyOCAxNjcgLTI0OSAxODkgLTU3IDExIC0xNTcgMTMgLTIwMiA0elwiIC8+XG4gICAgICAgICAgICA8L2c+XG4gICAgICAgIDwvc3ZnPlxuICAgIDwvZGl2PlxuPC9kaXY+XG5cbjxuZ3gtZHJvcHpvbmUtcmVtb3ZlLWJhZGdlICpuZ0lmPVwicmVtb3ZhYmxlXCIgKGNsaWNrKT1cIl9yZW1vdmUoJGV2ZW50KVwiIHN0eWxlPVwidG9wOiAtMTVweCAhaW1wb3J0YW50O1wiPlxuPC9uZ3gtZHJvcHpvbmUtcmVtb3ZlLWJhZGdlPiJdfQ==
@@ -0,0 +1,61 @@
1
+ import { Component, EventEmitter, HostListener, Input, Output } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "../../../services/http/ngt-translate.service";
4
+ import * as i2 from "@angular/common";
5
+ export class NgtDropzoneFileViewerComponent {
6
+ constructor(ngtTranslateService) {
7
+ this.ngtTranslateService = ngtTranslateService;
8
+ this.disableContent = 'none';
9
+ this.canDownloadFile = true;
10
+ this.onClose = new EventEmitter();
11
+ this.maxFileSize = 30000000; /** 30 MB */
12
+ }
13
+ keyEvent(event) {
14
+ if (event.code == 'Escape') {
15
+ this.canShowViewer = false;
16
+ setTimeout(() => this.onClose.emit(), 500);
17
+ }
18
+ }
19
+ init() {
20
+ if (this.fileSize < this.maxFileSize) {
21
+ this.loading = true;
22
+ this.canShowViewer = true;
23
+ }
24
+ }
25
+ close() {
26
+ this.canShowViewer = false;
27
+ this.onClose.emit();
28
+ }
29
+ handleClose() {
30
+ this.onClose.emit();
31
+ }
32
+ downloadFile() {
33
+ let file = document.createElement("a");
34
+ file.target = '_blank';
35
+ file.href = this.url;
36
+ file.setAttribute("download", this.fileName);
37
+ file.click();
38
+ }
39
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgtDropzoneFileViewerComponent, deps: [{ token: i1.NgtTranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
40
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: NgtDropzoneFileViewerComponent, selector: "ngt-dropzone-file-viewer", inputs: { url: "url", fileName: "fileName", fileSize: "fileSize", disableContent: "disableContent", canDownloadFile: "canDownloadFile" }, outputs: { onClose: "onClose" }, host: { listeners: { "window:keydown": "keyEvent($event)" } }, ngImport: i0, template: "<div style=\"width:100%; height: 100%;\">\n <div style=\"width:100%; height: 100%;\">\n <div class=\"w-full py-5 pr-10\">\n <div class=\"w-full flex justify-end text-2xl\">\n <div *ngIf=\"canDownloadFile\" class=\"cursor-pointer\" (click)=\"downloadFile()\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\">\n <path fill=\"#fff\" d=\"M13 8V2H7v6H2l8 8 8-8h-5zM0 18h20v2H0v-2z\" />\n </svg>\n </div>\n\n &nbsp;&nbsp;&nbsp;\n\n <div class=\"cursor-pointer\" (click)=\"close()\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n <path fill=\"#fff\"\n d=\"M24 2.42l-2.42 -2.42 -9.58 9.58 -9.58 -9.58 -2.42 2.42 9.58 9.58 -9.58 9.58 2.42 2.42 9.58 -9.58 9.58 9.58 2.42 -2.42 -9.58 -9.58 9.58 -9.58z\" />\n </svg>\n </div>\n\n </div>\n\n <div class=\"w-full justify-center text-center text-2xl font-mono text-white\">\n {{ fileName }}\n </div>\n </div>\n\n <div *ngIf=\"fileSize > maxFileSize\" class=\"flex w-full h-full justify-center items-center\">\n <div class=\"flex flex-col w-auto bg-gray-700 rounded-lg p-6\" style=\"max-width: 80%;\">\n <p class=\"text-white font-medium text-center w-full\">\n {{\n canDownloadFile\n ? ngtTranslateService.ngtFileTooLargeForPreview\n : ngtTranslateService.ngtFileTooLargeForPreviewNoDownloadPermission\n }}\n </p>\n\n <div *ngIf=\"canDownloadFile\" class=\"cursor-pointer mt-5 text-2xl self-center border rounded p-2\"\n (click)=\"downloadFile()\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\">\n <path fill=\"#fff\" d=\"M13 8V2H7v6H2l8 8 8-8h-5zM0 18h20v2H0v-2z\" />\n </svg>\n </div>\n </div>\n </div>\n\n <div class=\"px-10\" style=\"width:100%; height: 83%;\" *ngIf=\"canShowViewer\">\n <!-- <eloverde-doc-viewer class=\"h-full w-full flex justify-center\" [url]=\"url\" [disableContent]=\"disableContent\"\n (loaded)=\"loading = false\" (onClose)=\"handleClose()\">\n </eloverde-doc-viewer> -->\n </div>\n </div>\n</div>\n\n<div *ngIf=\"loading\" class=\"flex fixed inset-0 justify-center items-center w-full h-full cursor-wait z-50\">\n <div class=\"div-loader\"></div>\n</div>", styles: [":host{background:#00000080;color:#fff;position:fixed;top:0;left:0;width:100vw;height:100vh;z-index:10000000}.div-loader{width:5rem;height:5rem;border:5px solid #89C43F38;border-top-color:#89c43f;border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
41
+ }
42
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgtDropzoneFileViewerComponent, decorators: [{
43
+ type: Component,
44
+ args: [{ selector: 'ngt-dropzone-file-viewer', template: "<div style=\"width:100%; height: 100%;\">\n <div style=\"width:100%; height: 100%;\">\n <div class=\"w-full py-5 pr-10\">\n <div class=\"w-full flex justify-end text-2xl\">\n <div *ngIf=\"canDownloadFile\" class=\"cursor-pointer\" (click)=\"downloadFile()\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\">\n <path fill=\"#fff\" d=\"M13 8V2H7v6H2l8 8 8-8h-5zM0 18h20v2H0v-2z\" />\n </svg>\n </div>\n\n &nbsp;&nbsp;&nbsp;\n\n <div class=\"cursor-pointer\" (click)=\"close()\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n <path fill=\"#fff\"\n d=\"M24 2.42l-2.42 -2.42 -9.58 9.58 -9.58 -9.58 -2.42 2.42 9.58 9.58 -9.58 9.58 2.42 2.42 9.58 -9.58 9.58 9.58 2.42 -2.42 -9.58 -9.58 9.58 -9.58z\" />\n </svg>\n </div>\n\n </div>\n\n <div class=\"w-full justify-center text-center text-2xl font-mono text-white\">\n {{ fileName }}\n </div>\n </div>\n\n <div *ngIf=\"fileSize > maxFileSize\" class=\"flex w-full h-full justify-center items-center\">\n <div class=\"flex flex-col w-auto bg-gray-700 rounded-lg p-6\" style=\"max-width: 80%;\">\n <p class=\"text-white font-medium text-center w-full\">\n {{\n canDownloadFile\n ? ngtTranslateService.ngtFileTooLargeForPreview\n : ngtTranslateService.ngtFileTooLargeForPreviewNoDownloadPermission\n }}\n </p>\n\n <div *ngIf=\"canDownloadFile\" class=\"cursor-pointer mt-5 text-2xl self-center border rounded p-2\"\n (click)=\"downloadFile()\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\">\n <path fill=\"#fff\" d=\"M13 8V2H7v6H2l8 8 8-8h-5zM0 18h20v2H0v-2z\" />\n </svg>\n </div>\n </div>\n </div>\n\n <div class=\"px-10\" style=\"width:100%; height: 83%;\" *ngIf=\"canShowViewer\">\n <!-- <eloverde-doc-viewer class=\"h-full w-full flex justify-center\" [url]=\"url\" [disableContent]=\"disableContent\"\n (loaded)=\"loading = false\" (onClose)=\"handleClose()\">\n </eloverde-doc-viewer> -->\n </div>\n </div>\n</div>\n\n<div *ngIf=\"loading\" class=\"flex fixed inset-0 justify-center items-center w-full h-full cursor-wait z-50\">\n <div class=\"div-loader\"></div>\n</div>", styles: [":host{background:#00000080;color:#fff;position:fixed;top:0;left:0;width:100vw;height:100vh;z-index:10000000}.div-loader{width:5rem;height:5rem;border:5px solid #89C43F38;border-top-color:#89c43f;border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}\n"] }]
45
+ }], ctorParameters: function () { return [{ type: i1.NgtTranslateService }]; }, propDecorators: { url: [{
46
+ type: Input
47
+ }], fileName: [{
48
+ type: Input
49
+ }], fileSize: [{
50
+ type: Input
51
+ }], disableContent: [{
52
+ type: Input
53
+ }], canDownloadFile: [{
54
+ type: Input
55
+ }], onClose: [{
56
+ type: Output
57
+ }], keyEvent: [{
58
+ type: HostListener,
59
+ args: ['window:keydown', ['$event']]
60
+ }] } });
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd0LWRyb3B6b25lLWZpbGUtdmlld2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXRhaWx3aW5kL3NyYy9jb21wb25lbnRzL25ndC1kcm9wem9uZS9uZ3QtZHJvcHpvbmUtZmlsZS12aWV3ZXIvbmd0LWRyb3B6b25lLWZpbGUtdmlld2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXRhaWx3aW5kL3NyYy9jb21wb25lbnRzL25ndC1kcm9wem9uZS9uZ3QtZHJvcHpvbmUtZmlsZS12aWV3ZXIvbmd0LWRyb3B6b25lLWZpbGUtdmlld2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFhLE1BQU0sZUFBZSxDQUFDOzs7O0FBVWhHLE1BQU0sT0FBTyw4QkFBOEI7SUFldkMsWUFDVyxtQkFBd0M7UUFBeEMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQVZuQyxtQkFBYyxHQUFXLE1BQU0sQ0FBQztRQUNoQyxvQkFBZSxHQUFZLElBQUksQ0FBQztRQUUvQixZQUFPLEdBQXVCLElBQUksWUFBWSxFQUFFLENBQUM7UUFJM0QsZ0JBQVcsR0FBVyxRQUFRLENBQUMsQ0FBQyxZQUFZO0lBSS9DLENBQUM7SUFHRSxRQUFRLENBQUMsS0FBb0I7UUFDaEMsSUFBSSxLQUFLLENBQUMsSUFBSSxJQUFJLFFBQVEsRUFBRTtZQUN4QixJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztZQUUzQixVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQztTQUM5QztJQUNMLENBQUM7SUFFTSxJQUFJO1FBQ1AsSUFBSSxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDbEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7WUFDcEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7U0FDN0I7SUFDTCxDQUFDO0lBRU0sS0FBSztRQUNSLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO1FBQzNCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVNLFdBQVc7UUFDZCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFTSxZQUFZO1FBQ2YsSUFBSSxJQUFJLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUV2QyxJQUFJLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQztRQUN2QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUM7UUFDckIsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzdDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNqQixDQUFDOytHQW5EUSw4QkFBOEI7bUdBQTlCLDhCQUE4QiwwU0NWM0Msc3BGQXVETTs7NEZEN0NPLDhCQUE4QjtrQkFMMUMsU0FBUzsrQkFDSSwwQkFBMEI7MEdBT3BCLEdBQUc7c0JBQWxCLEtBQUs7Z0JBQ1UsUUFBUTtzQkFBdkIsS0FBSztnQkFDVSxRQUFRO3NCQUF2QixLQUFLO2dCQUNVLGNBQWM7c0JBQTdCLEtBQUs7Z0JBQ1UsZUFBZTtzQkFBOUIsS0FBSztnQkFFVyxPQUFPO3NCQUF2QixNQUFNO2dCQVdBLFFBQVE7c0JBRGQsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuLy8gaW1wb3J0IHsgRWxvdmVyZGVEb2NWaWV3ZXJDb21wb25lbnQgfSBmcm9tICdlbG92ZXJkZS1kb2Mtdmlld2VyJztcblxuaW1wb3J0IHsgTmd0VHJhbnNsYXRlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2h0dHAvbmd0LXRyYW5zbGF0ZS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduZ3QtZHJvcHpvbmUtZmlsZS12aWV3ZXInLFxuICAgIHN0eWxlVXJsczogWycuL25ndC1kcm9wem9uZS1maWxlLXZpZXdlci5jb21wb25lbnQuY3NzJ10sXG4gICAgdGVtcGxhdGVVcmw6ICcuL25ndC1kcm9wem9uZS1maWxlLXZpZXdlci5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgTmd0RHJvcHpvbmVGaWxlVmlld2VyQ29tcG9uZW50IHtcbiAgICAvLyBAVmlld0NoaWxkKEVsb3ZlcmRlRG9jVmlld2VyQ29tcG9uZW50KSBwdWJsaWMgZWxvdmVyZGVEb2NWaWV3ZXI6IEVsb3ZlcmRlRG9jVmlld2VyQ29tcG9uZW50O1xuXG4gICAgQElucHV0KCkgcHVibGljIHVybDogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBmaWxlTmFtZTogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBmaWxlU2l6ZTogbnVtYmVyO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBkaXNhYmxlQ29udGVudDogc3RyaW5nID0gJ25vbmUnO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBjYW5Eb3dubG9hZEZpbGU6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgQE91dHB1dCgpIHB1YmxpYyBvbkNsb3NlOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBwdWJsaWMgY2FuU2hvd1ZpZXdlcjogYm9vbGVhbjtcbiAgICBwdWJsaWMgbG9hZGluZzogYm9vbGVhbjtcbiAgICBwdWJsaWMgbWF4RmlsZVNpemU6IG51bWJlciA9IDMwMDAwMDAwOyAvKiogMzAgTUIgKi9cblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIG5ndFRyYW5zbGF0ZVNlcnZpY2U6IE5ndFRyYW5zbGF0ZVNlcnZpY2VcbiAgICApIHsgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignd2luZG93OmtleWRvd24nLCBbJyRldmVudCddKVxuICAgIHB1YmxpYyBrZXlFdmVudChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBpZiAoZXZlbnQuY29kZSA9PSAnRXNjYXBlJykge1xuICAgICAgICAgICAgdGhpcy5jYW5TaG93Vmlld2VyID0gZmFsc2U7XG5cbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5vbkNsb3NlLmVtaXQoKSwgNTAwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBpbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5maWxlU2l6ZSA8IHRoaXMubWF4RmlsZVNpemUpIHtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmNhblNob3dWaWV3ZXIgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGNsb3NlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNhblNob3dWaWV3ZXIgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5vbkNsb3NlLmVtaXQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaGFuZGxlQ2xvc2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25DbG9zZS5lbWl0KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGRvd25sb2FkRmlsZSgpOiB2b2lkIHtcbiAgICAgICAgbGV0IGZpbGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiYVwiKTtcblxuICAgICAgICBmaWxlLnRhcmdldCA9ICdfYmxhbmsnO1xuICAgICAgICBmaWxlLmhyZWYgPSB0aGlzLnVybDtcbiAgICAgICAgZmlsZS5zZXRBdHRyaWJ1dGUoXCJkb3dubG9hZFwiLCB0aGlzLmZpbGVOYW1lKTtcbiAgICAgICAgZmlsZS5jbGljaygpO1xuICAgIH1cbn1cbiIsIjxkaXYgc3R5bGU9XCJ3aWR0aDoxMDAlOyBoZWlnaHQ6IDEwMCU7XCI+XG4gICAgPGRpdiBzdHlsZT1cIndpZHRoOjEwMCU7IGhlaWdodDogMTAwJTtcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInctZnVsbCBweS01IHByLTEwXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy1mdWxsIGZsZXgganVzdGlmeS1lbmQgdGV4dC0yeGxcIj5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY2FuRG93bmxvYWRGaWxlXCIgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJkb3dubG9hZEZpbGUoKVwiPlxuICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsPVwiI2ZmZlwiIGQ9XCJNMTMgOFYySDd2NkgybDggOCA4LThoLTV6TTAgMThoMjB2Mkgwdi0yelwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgJm5ic3A7Jm5ic3A7Jm5ic3A7XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwiY2xvc2UoKVwiPlxuICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsPVwiI2ZmZlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0yNCAyLjQybC0yLjQyIC0yLjQyIC05LjU4IDkuNTggLTkuNTggLTkuNTggLTIuNDIgMi40MiA5LjU4IDkuNTggLTkuNTggOS41OCAyLjQyIDIuNDIgOS41OCAtOS41OCA5LjU4IDkuNTggMi40MiAtMi40MiAtOS41OCAtOS41OCA5LjU4IC05LjU4elwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctZnVsbCBqdXN0aWZ5LWNlbnRlciB0ZXh0LWNlbnRlciB0ZXh0LTJ4bCBmb250LW1vbm8gdGV4dC13aGl0ZVwiPlxuICAgICAgICAgICAgICAgIHt7IGZpbGVOYW1lIH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiAqbmdJZj1cImZpbGVTaXplID4gbWF4RmlsZVNpemVcIiBjbGFzcz1cImZsZXggdy1mdWxsIGgtZnVsbCBqdXN0aWZ5LWNlbnRlciBpdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIHctYXV0byBiZy1ncmF5LTcwMCByb3VuZGVkLWxnIHAtNlwiIHN0eWxlPVwibWF4LXdpZHRoOiA4MCU7XCI+XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LXdoaXRlIGZvbnQtbWVkaXVtIHRleHQtY2VudGVyIHctZnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICBjYW5Eb3dubG9hZEZpbGVcbiAgICAgICAgICAgICAgICAgICAgPyBuZ3RUcmFuc2xhdGVTZXJ2aWNlLm5ndEZpbGVUb29MYXJnZUZvclByZXZpZXdcbiAgICAgICAgICAgICAgICAgICAgOiBuZ3RUcmFuc2xhdGVTZXJ2aWNlLm5ndEZpbGVUb29MYXJnZUZvclByZXZpZXdOb0Rvd25sb2FkUGVybWlzc2lvblxuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIDwvcD5cblxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJjYW5Eb3dubG9hZEZpbGVcIiBjbGFzcz1cImN1cnNvci1wb2ludGVyIG10LTUgdGV4dC0yeGwgc2VsZi1jZW50ZXIgYm9yZGVyIHJvdW5kZWQgcC0yXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRvd25sb2FkRmlsZSgpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGw9XCIjZmZmXCIgZD1cIk0xMyA4VjJIN3Y2SDJsOCA4IDgtOGgtNXpNMCAxOGgyMHYySDB2LTJ6XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cInB4LTEwXCIgc3R5bGU9XCJ3aWR0aDoxMDAlOyBoZWlnaHQ6IDgzJTtcIiAqbmdJZj1cImNhblNob3dWaWV3ZXJcIj5cbiAgICAgICAgICAgIDwhLS0gPGVsb3ZlcmRlLWRvYy12aWV3ZXIgY2xhc3M9XCJoLWZ1bGwgdy1mdWxsIGZsZXgganVzdGlmeS1jZW50ZXJcIiBbdXJsXT1cInVybFwiIFtkaXNhYmxlQ29udGVudF09XCJkaXNhYmxlQ29udGVudFwiXG4gICAgICAgICAgICAgICAgKGxvYWRlZCk9XCJsb2FkaW5nID0gZmFsc2VcIiAob25DbG9zZSk9XCJoYW5kbGVDbG9zZSgpXCI+XG4gICAgICAgICAgICA8L2Vsb3ZlcmRlLWRvYy12aWV3ZXI+IC0tPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2ICpuZ0lmPVwibG9hZGluZ1wiIGNsYXNzPVwiZmxleCBmaXhlZCBpbnNldC0wIGp1c3RpZnktY2VudGVyIGl0ZW1zLWNlbnRlciB3LWZ1bGwgaC1mdWxsIGN1cnNvci13YWl0IHotNTBcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZGl2LWxvYWRlclwiPjwvZGl2PlxuPC9kaXY+Il19