ng-tailwind 2.24.331 → 2.24.332

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 (193) hide show
  1. package/README.md +24 -24
  2. package/animations/ngt-angular-animations.d.ts +5 -5
  3. package/base/ngt-base-ng-model.d.ts +32 -32
  4. package/bundles/ng-tailwind.umd.js +7385 -7383
  5. package/bundles/ng-tailwind.umd.js.map +1 -1
  6. package/components/ngt-action/ngt-action.component.d.ts +13 -13
  7. package/components/ngt-action/ngt-action.module.d.ts +2 -2
  8. package/components/ngt-button/ngt-button.component.d.ts +22 -22
  9. package/components/ngt-button/ngt-button.module.d.ts +2 -2
  10. package/components/ngt-checkbox/ngt-checkbox.component.d.ts +41 -41
  11. package/components/ngt-checkbox/ngt-checkbox.module.d.ts +2 -2
  12. package/components/ngt-content/ngt-content.component.d.ts +9 -9
  13. package/components/ngt-content/ngt-content.module.d.ts +2 -2
  14. package/components/ngt-datatable/ngt-datatable.component.d.ts +112 -112
  15. package/components/ngt-datatable/ngt-datatable.module.d.ts +2 -2
  16. package/components/ngt-datatable/ngt-tbody/ngt-tbody.component.d.ts +11 -11
  17. package/components/ngt-datatable/ngt-td/ngt-td.component.d.ts +11 -11
  18. package/components/ngt-datatable/ngt-td-check/ngt-td-check.component.d.ts +24 -24
  19. package/components/ngt-datatable/ngt-th/ngt-th.component.d.ts +47 -47
  20. package/components/ngt-datatable/ngt-th-check/ngt-th-check.component.d.ts +19 -19
  21. package/components/ngt-datatable/ngt-thead/ngt-thead.component.d.ts +10 -10
  22. package/components/ngt-datatable/ngt-tr/ngt-tr.component.d.ts +17 -17
  23. package/components/ngt-date/ngt-date.component.d.ts +72 -72
  24. package/components/ngt-date/ngt-date.module.d.ts +2 -2
  25. package/components/ngt-dropdown/ngt-dropdown-container/ngt-dropdown-container.component.d.ts +5 -5
  26. package/components/ngt-dropdown/ngt-dropdown.component.d.ts +44 -44
  27. package/components/ngt-dropdown/ngt-dropdown.module.d.ts +2 -2
  28. package/components/ngt-dropzone/custom-dropzone-preview/custom-dropzone-preview.component.d.ts +11 -11
  29. package/components/ngt-dropzone/ngt-dropzone-file-viewer/ngt-dropzone-file-viewer.component.d.ts +15 -15
  30. package/components/ngt-dropzone/ngt-dropzone-view/ngt-dropzone-view.component.d.ts +21 -21
  31. package/components/ngt-dropzone/ngt-dropzone.component.d.ts +103 -103
  32. package/components/ngt-dropzone/ngt-dropzone.module.d.ts +2 -2
  33. package/components/ngt-floating-button/ngt-floating-button.component.d.ts +32 -32
  34. package/components/ngt-floating-button/ngt-floating-button.module.d.ts +2 -2
  35. package/components/ngt-form/ngt-form-validation-message/ngt-form-validation-message.component.d.ts +7 -7
  36. package/components/ngt-form/ngt-form-validation-message/ngt-form-validation-message.module.d.ts +2 -2
  37. package/components/ngt-form/ngt-form.component.d.ts +52 -52
  38. package/components/ngt-form/ngt-form.module.d.ts +2 -2
  39. package/components/ngt-header-nav/ngt-header-nav.component.d.ts +11 -11
  40. package/components/ngt-header-nav/ngt-header-nav.module.d.ts +2 -2
  41. package/components/ngt-helper/ngt-helper.component.d.ts +19 -18
  42. package/components/ngt-helper/ngt-helper.module.d.ts +2 -2
  43. package/components/ngt-input/ngt-input.component.d.ts +105 -105
  44. package/components/ngt-input/ngt-input.module.d.ts +2 -2
  45. package/components/ngt-modal/ngt-modal-body/ngt-modal-body.component.d.ts +2 -2
  46. package/components/ngt-modal/ngt-modal-footer/ngt-modal-footer.component.d.ts +2 -2
  47. package/components/ngt-modal/ngt-modal-header/ngt-modal-header.component.d.ts +12 -12
  48. package/components/ngt-modal/ngt-modal.component.d.ts +19 -19
  49. package/components/ngt-modal/ngt-modal.module.d.ts +2 -2
  50. package/components/ngt-multi-select/ngt-multi-select.component.d.ts +97 -97
  51. package/components/ngt-multi-select/ngt-multi-select.module.d.ts +2 -2
  52. package/components/ngt-pagination/ngt-pagination.component.d.ts +40 -40
  53. package/components/ngt-pagination/ngt-pagination.module.d.ts +2 -2
  54. package/components/ngt-portlet/ngt-portlet-body/ngt-portlet-body.component.d.ts +9 -9
  55. package/components/ngt-portlet/ngt-portlet-footer/ngt-portlet-footer.component.d.ts +9 -9
  56. package/components/ngt-portlet/ngt-portlet-header/ngt-portlet-header.component.d.ts +14 -14
  57. package/components/ngt-portlet/ngt-portlet.component.d.ts +17 -17
  58. package/components/ngt-portlet/ngt-portlet.module.d.ts +2 -2
  59. package/components/ngt-radio-button/ngt-radio-button-container/ngt-radio-button-container.component.d.ts +6 -6
  60. package/components/ngt-radio-button/ngt-radio-button.component.d.ts +29 -29
  61. package/components/ngt-radio-button/ngt-radio-button.module.d.ts +2 -2
  62. package/components/ngt-section/ngt-section.component.d.ts +26 -26
  63. package/components/ngt-section/ngt-section.module.d.ts +2 -2
  64. package/components/ngt-select/ngt-select.component.d.ts +123 -123
  65. package/components/ngt-select/ngt-select.directive.d.ts +13 -13
  66. package/components/ngt-select/ngt-select.module.d.ts +2 -2
  67. package/components/ngt-shining/ngt-shining.component.d.ts +16 -16
  68. package/components/ngt-shining/ngt-shining.module.d.ts +2 -2
  69. package/components/ngt-sidenav/ngt-sidenav.component.d.ts +29 -29
  70. package/components/ngt-sidenav/ngt-sidenav.module.d.ts +2 -2
  71. package/components/ngt-slider/ngt-slider.component.d.ts +31 -31
  72. package/components/ngt-slider/ngt-slider.module.d.ts +2 -2
  73. package/components/ngt-svg/ngt-svg.component.d.ts +10 -10
  74. package/components/ngt-svg/ngt-svg.module.d.ts +2 -2
  75. package/components/ngt-tag/ngt-tag.component.d.ts +10 -10
  76. package/components/ngt-tag/ngt-tag.module.d.ts +2 -2
  77. package/components/ngt-textarea/ngt-textarea.component.d.ts +46 -46
  78. package/components/ngt-textarea/ngt-textarea.module.d.ts +2 -2
  79. package/components/ngt-validation/ngt-validation.component.d.ts +10 -10
  80. package/components/ngt-validation/ngt-validation.module.d.ts +2 -2
  81. package/directives/ngt-stylizable/ngt-stylizable.directive.d.ts +65 -65
  82. package/directives/ngt-stylizable/ngt-stylizable.module.d.ts +2 -2
  83. package/enums/size.enum.d.ts +8 -8
  84. package/esm2015/animations/ngt-angular-animations.js +34 -34
  85. package/esm2015/base/ngt-base-ng-model.js +90 -90
  86. package/esm2015/components/ngt-action/ngt-action.component.js +49 -49
  87. package/esm2015/components/ngt-action/ngt-action.module.js +19 -19
  88. package/esm2015/components/ngt-button/ngt-button.component.js +106 -106
  89. package/esm2015/components/ngt-button/ngt-button.module.js +19 -19
  90. package/esm2015/components/ngt-checkbox/ngt-checkbox.component.js +139 -139
  91. package/esm2015/components/ngt-checkbox/ngt-checkbox.module.js +19 -19
  92. package/esm2015/components/ngt-content/ngt-content.component.js +33 -33
  93. package/esm2015/components/ngt-content/ngt-content.module.js +15 -15
  94. package/esm2015/components/ngt-datatable/ngt-datatable.component.js +400 -400
  95. package/esm2015/components/ngt-datatable/ngt-datatable.module.js +58 -58
  96. package/esm2015/components/ngt-datatable/ngt-tbody/ngt-tbody.component.js +58 -58
  97. package/esm2015/components/ngt-datatable/ngt-td/ngt-td.component.js +63 -63
  98. package/esm2015/components/ngt-datatable/ngt-td-check/ngt-td-check.component.js +102 -102
  99. package/esm2015/components/ngt-datatable/ngt-th/ngt-th.component.js +192 -192
  100. package/esm2015/components/ngt-datatable/ngt-th-check/ngt-th-check.component.js +87 -87
  101. package/esm2015/components/ngt-datatable/ngt-thead/ngt-thead.component.js +56 -56
  102. package/esm2015/components/ngt-datatable/ngt-tr/ngt-tr.component.js +76 -76
  103. package/esm2015/components/ngt-date/ngt-date.component.js +359 -359
  104. package/esm2015/components/ngt-date/ngt-date.module.js +25 -25
  105. package/esm2015/components/ngt-dropdown/ngt-dropdown-container/ngt-dropdown-container.component.js +20 -20
  106. package/esm2015/components/ngt-dropdown/ngt-dropdown.component.js +171 -171
  107. package/esm2015/components/ngt-dropdown/ngt-dropdown.module.js +16 -16
  108. package/esm2015/components/ngt-dropzone/custom-dropzone-preview/custom-dropzone-preview.component.js +47 -47
  109. package/esm2015/components/ngt-dropzone/ngt-dropzone-file-viewer/ngt-dropzone-file-viewer.component.js +60 -60
  110. package/esm2015/components/ngt-dropzone/ngt-dropzone-view/ngt-dropzone-view.component.js +67 -67
  111. package/esm2015/components/ngt-dropzone/ngt-dropzone.component.js +411 -411
  112. package/esm2015/components/ngt-dropzone/ngt-dropzone.module.js +37 -37
  113. package/esm2015/components/ngt-floating-button/ngt-floating-button.component.js +94 -94
  114. package/esm2015/components/ngt-floating-button/ngt-floating-button.module.js +19 -19
  115. package/esm2015/components/ngt-form/ngt-form-validation-message/ngt-form-validation-message.component.js +23 -23
  116. package/esm2015/components/ngt-form/ngt-form-validation-message/ngt-form-validation-message.module.js +15 -15
  117. package/esm2015/components/ngt-form/ngt-form.component.js +181 -181
  118. package/esm2015/components/ngt-form/ngt-form.module.js +17 -17
  119. package/esm2015/components/ngt-header-nav/ngt-header-nav.component.js +38 -38
  120. package/esm2015/components/ngt-header-nav/ngt-header-nav.module.js +15 -15
  121. package/esm2015/components/ngt-helper/ngt-helper.component.js +49 -47
  122. package/esm2015/components/ngt-helper/ngt-helper.module.js +19 -19
  123. package/esm2015/components/ngt-input/ngt-input.component.js +635 -635
  124. package/esm2015/components/ngt-input/ngt-input.module.js +28 -28
  125. package/esm2015/components/ngt-modal/ngt-modal-body/ngt-modal-body.component.js +11 -11
  126. package/esm2015/components/ngt-modal/ngt-modal-footer/ngt-modal-footer.component.js +11 -11
  127. package/esm2015/components/ngt-modal/ngt-modal-header/ngt-modal-header.component.js +40 -40
  128. package/esm2015/components/ngt-modal/ngt-modal.component.js +79 -79
  129. package/esm2015/components/ngt-modal/ngt-modal.module.js +28 -28
  130. package/esm2015/components/ngt-multi-select/ngt-multi-select.component.js +394 -394
  131. package/esm2015/components/ngt-multi-select/ngt-multi-select.module.js +33 -33
  132. package/esm2015/components/ngt-pagination/ngt-pagination.component.js +172 -172
  133. package/esm2015/components/ngt-pagination/ngt-pagination.module.js +23 -23
  134. package/esm2015/components/ngt-portlet/ngt-portlet-body/ngt-portlet-body.component.js +32 -32
  135. package/esm2015/components/ngt-portlet/ngt-portlet-footer/ngt-portlet-footer.component.js +33 -33
  136. package/esm2015/components/ngt-portlet/ngt-portlet-header/ngt-portlet-header.component.js +47 -47
  137. package/esm2015/components/ngt-portlet/ngt-portlet.component.js +58 -58
  138. package/esm2015/components/ngt-portlet/ngt-portlet.module.js +32 -32
  139. package/esm2015/components/ngt-radio-button/ngt-radio-button-container/ngt-radio-button-container.component.js +19 -19
  140. package/esm2015/components/ngt-radio-button/ngt-radio-button.component.js +99 -99
  141. package/esm2015/components/ngt-radio-button/ngt-radio-button.module.js +18 -18
  142. package/esm2015/components/ngt-section/ngt-section.component.js +101 -101
  143. package/esm2015/components/ngt-section/ngt-section.module.js +21 -21
  144. package/esm2015/components/ngt-select/ngt-select.component.js +469 -469
  145. package/esm2015/components/ngt-select/ngt-select.directive.js +35 -35
  146. package/esm2015/components/ngt-select/ngt-select.module.js +40 -40
  147. package/esm2015/components/ngt-shining/ngt-shining.component.js +41 -41
  148. package/esm2015/components/ngt-shining/ngt-shining.module.js +15 -15
  149. package/esm2015/components/ngt-sidenav/ngt-sidenav.component.js +123 -123
  150. package/esm2015/components/ngt-sidenav/ngt-sidenav.module.js +15 -15
  151. package/esm2015/components/ngt-slider/ngt-slider.component.js +82 -82
  152. package/esm2015/components/ngt-slider/ngt-slider.module.js +17 -17
  153. package/esm2015/components/ngt-svg/ngt-svg.component.js +52 -52
  154. package/esm2015/components/ngt-svg/ngt-svg.module.js +19 -19
  155. package/esm2015/components/ngt-tag/ngt-tag.component.js +36 -36
  156. package/esm2015/components/ngt-tag/ngt-tag.module.js +17 -17
  157. package/esm2015/components/ngt-textarea/ngt-textarea.component.js +211 -211
  158. package/esm2015/components/ngt-textarea/ngt-textarea.module.js +24 -24
  159. package/esm2015/components/ngt-validation/ngt-validation.component.js +24 -24
  160. package/esm2015/components/ngt-validation/ngt-validation.module.js +15 -15
  161. package/esm2015/directives/ngt-stylizable/ngt-stylizable.directive.js +227 -227
  162. package/esm2015/directives/ngt-stylizable/ngt-stylizable.module.js +15 -15
  163. package/esm2015/enums/size.enum.js +11 -11
  164. package/esm2015/helpers/enum/enum.js +7 -7
  165. package/esm2015/helpers/form/form.js +14 -14
  166. package/esm2015/helpers/routing/route.js +11 -11
  167. package/esm2015/helpers/uuid.js +10 -10
  168. package/esm2015/ng-tailwind.js +10 -10
  169. package/esm2015/public-api.js +117 -117
  170. package/esm2015/services/http/ngt-attachment-http.service.js +3 -3
  171. package/esm2015/services/http/ngt-http-form.service.js +3 -3
  172. package/esm2015/services/http/ngt-http-resource.service.js +3 -3
  173. package/esm2015/services/http/ngt-http-validation.service.js +4 -4
  174. package/esm2015/services/http/ngt-http.service.js +3 -3
  175. package/esm2015/services/http/ngt-translate.service.js +3 -3
  176. package/esm2015/services/ngt-stylizable/ngt-stylizable.service.js +273 -273
  177. package/fesm2015/ng-tailwind.js +6469 -6467
  178. package/fesm2015/ng-tailwind.js.map +1 -1
  179. package/helpers/enum/enum.d.ts +1 -1
  180. package/helpers/form/form.d.ts +4 -4
  181. package/helpers/routing/route.d.ts +2 -2
  182. package/helpers/uuid.d.ts +1 -1
  183. package/ng-tailwind.d.ts +10 -10
  184. package/ng-tailwind.metadata.json +1 -1
  185. package/package.json +1 -1
  186. package/public-api.d.ts +80 -80
  187. package/services/http/ngt-attachment-http.service.d.ts +10 -10
  188. package/services/http/ngt-http-form.service.d.ts +5 -5
  189. package/services/http/ngt-http-resource.service.d.ts +12 -12
  190. package/services/http/ngt-http-validation.service.d.ts +10 -10
  191. package/services/http/ngt-http.service.d.ts +27 -27
  192. package/services/http/ngt-translate.service.d.ts +27 -27
  193. package/services/ngt-stylizable/ngt-stylizable.service.d.ts +96 -96
@@ -1,25 +1,25 @@
1
- import { CommonModule } from '@angular/common';
2
- import { NgModule } from '@angular/core';
3
- import { FormsModule } from '@angular/forms';
4
- import { Ng2FlatpickrModule } from 'ng2-flatpickr';
5
- import { NgtHelperModule } from '../ngt-helper/ngt-helper.module';
6
- import { NgtShiningModule } from '../ngt-shining/ngt-shining.module';
7
- import { NgtValidationModule } from '../ngt-validation/ngt-validation.module';
8
- import { NgtDateComponent } from './ngt-date.component';
9
- export class NgtDateModule {
10
- }
11
- NgtDateModule.decorators = [
12
- { type: NgModule, args: [{
13
- declarations: [NgtDateComponent],
14
- exports: [NgtDateComponent],
15
- imports: [
16
- CommonModule,
17
- FormsModule,
18
- Ng2FlatpickrModule,
19
- NgtValidationModule,
20
- NgtShiningModule,
21
- NgtHelperModule,
22
- ]
23
- },] }
24
- ];
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd0LWRhdGUubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctdGFpbHdpbmQvc3JjL2NvbXBvbmVudHMvbmd0LWRhdGUvbmd0LWRhdGUubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBY3hELE1BQU0sT0FBTyxhQUFhOzs7WUFaekIsUUFBUSxTQUFDO2dCQUNOLFlBQVksRUFBRSxDQUFDLGdCQUFnQixDQUFDO2dCQUNoQyxPQUFPLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztnQkFDM0IsT0FBTyxFQUFFO29CQUNMLFlBQVk7b0JBQ1osV0FBVztvQkFDWCxrQkFBa0I7b0JBQ2xCLG1CQUFtQjtvQkFDbkIsZ0JBQWdCO29CQUNoQixlQUFlO2lCQUNsQjthQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE5nMkZsYXRwaWNrck1vZHVsZSB9IGZyb20gJ25nMi1mbGF0cGlja3InO1xuXG5pbXBvcnQgeyBOZ3RIZWxwZXJNb2R1bGUgfSBmcm9tICcuLi9uZ3QtaGVscGVyL25ndC1oZWxwZXIubW9kdWxlJztcbmltcG9ydCB7IE5ndFNoaW5pbmdNb2R1bGUgfSBmcm9tICcuLi9uZ3Qtc2hpbmluZy9uZ3Qtc2hpbmluZy5tb2R1bGUnO1xuaW1wb3J0IHsgTmd0VmFsaWRhdGlvbk1vZHVsZSB9IGZyb20gJy4uL25ndC12YWxpZGF0aW9uL25ndC12YWxpZGF0aW9uLm1vZHVsZSc7XG5pbXBvcnQgeyBOZ3REYXRlQ29tcG9uZW50IH0gZnJvbSAnLi9uZ3QtZGF0ZS5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICAgIGRlY2xhcmF0aW9uczogW05ndERhdGVDb21wb25lbnRdLFxuICAgIGV4cG9ydHM6IFtOZ3REYXRlQ29tcG9uZW50XSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICAgIE5nMkZsYXRwaWNrck1vZHVsZSxcbiAgICAgICAgTmd0VmFsaWRhdGlvbk1vZHVsZSxcbiAgICAgICAgTmd0U2hpbmluZ01vZHVsZSxcbiAgICAgICAgTmd0SGVscGVyTW9kdWxlLFxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgTmd0RGF0ZU1vZHVsZSB7IH1cbiJdfQ==
1
+ import { CommonModule } from '@angular/common';
2
+ import { NgModule } from '@angular/core';
3
+ import { FormsModule } from '@angular/forms';
4
+ import { Ng2FlatpickrModule } from 'ng2-flatpickr';
5
+ import { NgtHelperModule } from '../ngt-helper/ngt-helper.module';
6
+ import { NgtShiningModule } from '../ngt-shining/ngt-shining.module';
7
+ import { NgtValidationModule } from '../ngt-validation/ngt-validation.module';
8
+ import { NgtDateComponent } from './ngt-date.component';
9
+ export class NgtDateModule {
10
+ }
11
+ NgtDateModule.decorators = [
12
+ { type: NgModule, args: [{
13
+ declarations: [NgtDateComponent],
14
+ exports: [NgtDateComponent],
15
+ imports: [
16
+ CommonModule,
17
+ FormsModule,
18
+ Ng2FlatpickrModule,
19
+ NgtValidationModule,
20
+ NgtShiningModule,
21
+ NgtHelperModule,
22
+ ]
23
+ },] }
24
+ ];
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd0LWRhdGUubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctdGFpbHdpbmQvc3JjL2NvbXBvbmVudHMvbmd0LWRhdGUvbmd0LWRhdGUubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBY3hELE1BQU0sT0FBTyxhQUFhOzs7WUFaekIsUUFBUSxTQUFDO2dCQUNOLFlBQVksRUFBRSxDQUFDLGdCQUFnQixDQUFDO2dCQUNoQyxPQUFPLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztnQkFDM0IsT0FBTyxFQUFFO29CQUNMLFlBQVk7b0JBQ1osV0FBVztvQkFDWCxrQkFBa0I7b0JBQ2xCLG1CQUFtQjtvQkFDbkIsZ0JBQWdCO29CQUNoQixlQUFlO2lCQUNsQjthQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE5nMkZsYXRwaWNrck1vZHVsZSB9IGZyb20gJ25nMi1mbGF0cGlja3InO1xyXG5cclxuaW1wb3J0IHsgTmd0SGVscGVyTW9kdWxlIH0gZnJvbSAnLi4vbmd0LWhlbHBlci9uZ3QtaGVscGVyLm1vZHVsZSc7XHJcbmltcG9ydCB7IE5ndFNoaW5pbmdNb2R1bGUgfSBmcm9tICcuLi9uZ3Qtc2hpbmluZy9uZ3Qtc2hpbmluZy5tb2R1bGUnO1xyXG5pbXBvcnQgeyBOZ3RWYWxpZGF0aW9uTW9kdWxlIH0gZnJvbSAnLi4vbmd0LXZhbGlkYXRpb24vbmd0LXZhbGlkYXRpb24ubW9kdWxlJztcclxuaW1wb3J0IHsgTmd0RGF0ZUNvbXBvbmVudCB9IGZyb20gJy4vbmd0LWRhdGUuY29tcG9uZW50JztcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgICBkZWNsYXJhdGlvbnM6IFtOZ3REYXRlQ29tcG9uZW50XSxcclxuICAgIGV4cG9ydHM6IFtOZ3REYXRlQ29tcG9uZW50XSxcclxuICAgIGltcG9ydHM6IFtcclxuICAgICAgICBDb21tb25Nb2R1bGUsXHJcbiAgICAgICAgRm9ybXNNb2R1bGUsXHJcbiAgICAgICAgTmcyRmxhdHBpY2tyTW9kdWxlLFxyXG4gICAgICAgIE5ndFZhbGlkYXRpb25Nb2R1bGUsXHJcbiAgICAgICAgTmd0U2hpbmluZ01vZHVsZSxcclxuICAgICAgICBOZ3RIZWxwZXJNb2R1bGUsXHJcbiAgICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOZ3REYXRlTW9kdWxlIHsgfVxyXG4iXX0=
@@ -1,20 +1,20 @@
1
- import { Component, EventEmitter, Output } from '@angular/core';
2
- export class NgtDropdownContainerComponent {
3
- constructor() {
4
- this.onActiveDropdownChange = new EventEmitter();
5
- }
6
- setActiveDropdown(activeDropdown) {
7
- this.onActiveDropdownChange.emit(activeDropdown);
8
- }
9
- }
10
- NgtDropdownContainerComponent.decorators = [
11
- { type: Component, args: [{
12
- selector: '[ngt-dropdown-container]',
13
- template: "<ng-content></ng-content>",
14
- styles: [""]
15
- },] }
16
- ];
17
- NgtDropdownContainerComponent.propDecorators = {
18
- onActiveDropdownChange: [{ type: Output }]
19
- };
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd0LWRyb3Bkb3duLWNvbnRhaW5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy10YWlsd2luZC9zcmMvY29tcG9uZW50cy9uZ3QtZHJvcGRvd24vbmd0LWRyb3Bkb3duLWNvbnRhaW5lci9uZ3QtZHJvcGRvd24tY29udGFpbmVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFPaEUsTUFBTSxPQUFPLDZCQUE2QjtJQUwxQztRQU1xQiwyQkFBc0IsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBS2pFLENBQUM7SUFIVSxpQkFBaUIsQ0FBQyxjQUFjO1FBQ25DLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDckQsQ0FBQzs7O1lBVkosU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSwwQkFBMEI7Z0JBQ3BDLHFDQUFzRDs7YUFFekQ7OztxQ0FFSSxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ1tuZ3QtZHJvcGRvd24tY29udGFpbmVyXScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL25ndC1kcm9wZG93bi1jb250YWluZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL25ndC1kcm9wZG93bi1jb250YWluZXIuY29tcG9uZW50LmNzcyddXG59KVxuZXhwb3J0IGNsYXNzIE5ndERyb3Bkb3duQ29udGFpbmVyQ29tcG9uZW50IHtcbiAgICBAT3V0cHV0KCkgcHVibGljIG9uQWN0aXZlRHJvcGRvd25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBwdWJsaWMgc2V0QWN0aXZlRHJvcGRvd24oYWN0aXZlRHJvcGRvd24pIHtcbiAgICAgICAgdGhpcy5vbkFjdGl2ZURyb3Bkb3duQ2hhbmdlLmVtaXQoYWN0aXZlRHJvcGRvd24pO1xuICAgIH1cbn1cbiJdfQ==
1
+ import { Component, EventEmitter, Output } from '@angular/core';
2
+ export class NgtDropdownContainerComponent {
3
+ constructor() {
4
+ this.onActiveDropdownChange = new EventEmitter();
5
+ }
6
+ setActiveDropdown(activeDropdown) {
7
+ this.onActiveDropdownChange.emit(activeDropdown);
8
+ }
9
+ }
10
+ NgtDropdownContainerComponent.decorators = [
11
+ { type: Component, args: [{
12
+ selector: '[ngt-dropdown-container]',
13
+ template: "<ng-content></ng-content>",
14
+ styles: [""]
15
+ },] }
16
+ ];
17
+ NgtDropdownContainerComponent.propDecorators = {
18
+ onActiveDropdownChange: [{ type: Output }]
19
+ };
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd0LWRyb3Bkb3duLWNvbnRhaW5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy10YWlsd2luZC9zcmMvY29tcG9uZW50cy9uZ3QtZHJvcGRvd24vbmd0LWRyb3Bkb3duLWNvbnRhaW5lci9uZ3QtZHJvcGRvd24tY29udGFpbmVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFPaEUsTUFBTSxPQUFPLDZCQUE2QjtJQUwxQztRQU1xQiwyQkFBc0IsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBS2pFLENBQUM7SUFIVSxpQkFBaUIsQ0FBQyxjQUFjO1FBQ25DLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDckQsQ0FBQzs7O1lBVkosU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSwwQkFBMEI7Z0JBQ3BDLHFDQUFzRDs7YUFFekQ7OztxQ0FFSSxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ1tuZ3QtZHJvcGRvd24tY29udGFpbmVyXScsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vbmd0LWRyb3Bkb3duLWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9uZ3QtZHJvcGRvd24tY29udGFpbmVyLmNvbXBvbmVudC5jc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTmd0RHJvcGRvd25Db250YWluZXJDb21wb25lbnQge1xyXG4gICAgQE91dHB1dCgpIHB1YmxpYyBvbkFjdGl2ZURyb3Bkb3duQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICAgIHB1YmxpYyBzZXRBY3RpdmVEcm9wZG93bihhY3RpdmVEcm9wZG93bikge1xyXG4gICAgICAgIHRoaXMub25BY3RpdmVEcm9wZG93bkNoYW5nZS5lbWl0KGFjdGl2ZURyb3Bkb3duKTtcclxuICAgIH1cclxufVxyXG4iXX0=
@@ -1,171 +1,171 @@
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 { NgtDropdownContainerComponent } from './ngt-dropdown-container/ngt-dropdown-container.component';
6
- export class NgtDropdownComponent {
7
- constructor(ngtDropdownContainer) {
8
- this.ngtDropdownContainer = ngtDropdownContainer;
9
- this.autoYReverse = true;
10
- this.openMethod = NgtDropdownOpenMethod.HOVER;
11
- this.onToggle = new EventEmitter();
12
- this.name = uuid();
13
- this.isYPositionReversed = false;
14
- this.isXPositionReversed = false;
15
- this.isBindingYPosition = true;
16
- this.isBindingXPosition = true;
17
- this.subscriptions = [];
18
- if (this.ngtDropdownContainer) {
19
- this.subscriptions.push(this.ngtDropdownContainer.onActiveDropdownChange.subscribe((activeDropdown) => {
20
- this.isOpen = (activeDropdown.name === this.name);
21
- }));
22
- }
23
- }
24
- ngOnChanges(changes) {
25
- if (changes.openMethod) {
26
- this.openMethod = getEnumFromString(changes.openMethod.currentValue, NgtDropdownOpenMethod);
27
- }
28
- }
29
- ngOnDestroy() {
30
- this.destroySubscriptions();
31
- }
32
- open() {
33
- var _a;
34
- this.isOpen = true;
35
- (_a = this.ngtDropdownContainer) === null || _a === void 0 ? void 0 : _a.setActiveDropdown(this);
36
- }
37
- closeOnSelectOption() {
38
- if (this.closeOnClick) {
39
- this.close();
40
- }
41
- }
42
- close() {
43
- this.isOpen = false;
44
- this.containerXPosition = null;
45
- this.containerYPosition = null;
46
- }
47
- toggle() {
48
- setTimeout(() => {
49
- if (this.isOpen) {
50
- this.close();
51
- }
52
- else {
53
- this.open();
54
- }
55
- this.onToggle.emit(this.isOpen);
56
- });
57
- }
58
- onHover(host, container) {
59
- if (this.openMethod == NgtDropdownOpenMethod.HOVER && host && container) {
60
- this.open();
61
- this.watchHover(host, container);
62
- }
63
- }
64
- onClick(event) {
65
- if (this.openMethod == NgtDropdownOpenMethod.CLICK) {
66
- event.preventDefault();
67
- event.stopPropagation();
68
- this.toggle();
69
- }
70
- }
71
- onRightClick(event) {
72
- if (this.openMethod == NgtDropdownOpenMethod.RIGHT_CLICK) {
73
- event.preventDefault();
74
- event.stopPropagation();
75
- this.toggle();
76
- }
77
- }
78
- shouldReverseXPosition() {
79
- if (!this.autoXReverse || this.reverseXPosition !== undefined) {
80
- return this.reverseXPosition;
81
- }
82
- if (this.isOpen) {
83
- this.bindContainerXPosition();
84
- this.isXPositionReversed = !(this.containerXPosition > document.documentElement.clientWidth);
85
- return !this.isBindingXPosition && this.isXPositionReversed;
86
- }
87
- }
88
- shouldReverseYPosition() {
89
- if (!this.autoYReverse || this.reverseYPosition !== undefined) {
90
- return this.reverseYPosition;
91
- }
92
- if (this.isOpen) {
93
- this.bindContainerYPosition();
94
- this.isYPositionReversed = this.containerYPosition > (document.documentElement.clientHeight * 0.9);
95
- return !this.isBindingYPosition && this.isYPositionReversed;
96
- }
97
- }
98
- bindContainerXPosition() {
99
- if (!this.containerXPosition && this.containerRef.nativeElement.offsetWidth) {
100
- this.isBindingXPosition = true;
101
- setTimeout(() => {
102
- this.containerXPosition = this.containerRef.nativeElement.getBoundingClientRect().x
103
- + this.containerRef.nativeElement.offsetWidth;
104
- this.isBindingXPosition = false;
105
- });
106
- }
107
- }
108
- bindContainerYPosition() {
109
- var _a;
110
- if (!this.containerYPosition && ((_a = this.containerRef) === null || _a === void 0 ? void 0 : _a.nativeElement.offsetHeight)) {
111
- this.isBindingYPosition = true;
112
- setTimeout(() => {
113
- this.containerYPosition = this.containerRef.nativeElement.getBoundingClientRect().y
114
- + this.containerRef.nativeElement.offsetHeight;
115
- this.isBindingYPosition = false;
116
- });
117
- }
118
- }
119
- watchHover(host, container) {
120
- const interval = setInterval(() => {
121
- if (!host || !container || !this.isInHover(host, container)) {
122
- this.close();
123
- clearInterval(interval);
124
- }
125
- }, 1000);
126
- }
127
- isInHover(host, container) {
128
- return host.parentElement.querySelector(':hover') == host ||
129
- container.parentElement.querySelector(':hover') == container;
130
- }
131
- destroySubscriptions() {
132
- this.subscriptions.forEach(subscription => subscription.unsubscribe());
133
- this.subscriptions = [];
134
- }
135
- }
136
- NgtDropdownComponent.decorators = [
137
- { type: Component, args: [{
138
- selector: 'ngt-dropdown',
139
- template: "<div class=\"sm:relative\">\n <div (mouseenter)=\"onHover(host, container)\" (click)=\"onClick($event)\" (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 <ng-content select='[container]'></ng-content>\n </div>\n</div>\n\n<button *ngIf=\"isOpen && openMethod != 'HOVER'\" class=\"fixed z-40 inset-0 h-full w-full opacity-0 cursor-default\"\n (click)='toggle()'>\n</button>",
140
- animations: [
141
- trigger('openClose', [
142
- state('open', style({ opacity: 1, transform: 'translateY(0px)' })),
143
- state('closed', style({ opacity: 0, transform: 'translateY(-10px)' })),
144
- transition('closed => open', [
145
- animate(300)
146
- ]),
147
- ]),
148
- ],
149
- styles: [".ngt-dropdown-container{max-height:30rem;width:-webkit-max-content;width:-moz-max-content;width:max-content}"]
150
- },] }
151
- ];
152
- NgtDropdownComponent.ctorParameters = () => [
153
- { type: NgtDropdownContainerComponent, decorators: [{ type: Optional }, { type: SkipSelf }] }
154
- ];
155
- NgtDropdownComponent.propDecorators = {
156
- containerRef: [{ type: ViewChild, args: ['container', { static: true },] }],
157
- autoXReverse: [{ type: Input }],
158
- autoYReverse: [{ type: Input }],
159
- reverseXPosition: [{ type: Input }],
160
- reverseYPosition: [{ type: Input }],
161
- closeOnClick: [{ type: Input }],
162
- openMethod: [{ type: Input }],
163
- onToggle: [{ type: Output }]
164
- };
165
- export var NgtDropdownOpenMethod;
166
- (function (NgtDropdownOpenMethod) {
167
- NgtDropdownOpenMethod["CLICK"] = "CLICK";
168
- NgtDropdownOpenMethod["RIGHT_CLICK"] = "RIGHT_CLICK";
169
- NgtDropdownOpenMethod["HOVER"] = "HOVER";
170
- })(NgtDropdownOpenMethod || (NgtDropdownOpenMethod = {}));
171
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd0LWRyb3Bkb3duLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXRhaWx3aW5kL3NyYy9jb21wb25lbnRzL25ndC1kcm9wZG93bi9uZ3QtZHJvcGRvd24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakYsT0FBTyxFQUNILFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUVMLFFBQVEsRUFDUixNQUFNLEVBRU4sUUFBUSxFQUNSLFNBQVMsR0FDWixNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDMUMsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sMkRBQTJELENBQUM7QUFnQjFHLE1BQU0sT0FBTyxvQkFBb0I7SUF1QjdCLFlBRVksb0JBQW1EO1FBQW5ELHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBK0I7UUFyQi9DLGlCQUFZLEdBQVksSUFBSSxDQUFDO1FBSTdCLGVBQVUsR0FBMEIscUJBQXFCLENBQUMsS0FBSyxDQUFDO1FBRS9ELGFBQVEsR0FBMEIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUUvRCxTQUFJLEdBQVcsSUFBSSxFQUFFLENBQUM7UUFFdEIsd0JBQW1CLEdBQVksS0FBSyxDQUFDO1FBQ3JDLHdCQUFtQixHQUFZLEtBQUssQ0FBQztRQUNyQyx1QkFBa0IsR0FBWSxJQUFJLENBQUM7UUFDbkMsdUJBQWtCLEdBQVksSUFBSSxDQUFDO1FBRWxDLGtCQUFhLEdBQXdCLEVBQUUsQ0FBQztRQVE1QyxJQUFJLElBQUksQ0FBQyxvQkFBb0IsRUFBRTtZQUMzQixJQUFJ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LGNBQWM7Z0JBQ3hCLCsxQkFBNEM7Z0JBRTVDLFVBQVUsRUFBRTtvQkFDUixPQUFPLENBQUMsV0FBVyxFQUFFO3dCQUNqQixLQUFLLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLENBQUMsQ0FBQzt3QkFDbEUsS0FBSyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxtQkFBbUIsRUFBRSxDQUFDLENBQUM7d0JBQ3RFLFVBQVUsQ0FBQyxnQkFBZ0IsRUFBRTs0QkFDekIsT0FBTyxDQUFDLEdBQUcsQ0FBQzt5QkFDZixDQUFDO3FCQUNMLENBQUM7aUJBQ0w7O2FBQ0o7OztZQWZRLDZCQUE2Qix1QkF3QzdCLFFBQVEsWUFBSSxRQUFROzs7MkJBdkJ4QixTQUFTLFNBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTsyQkFFdkMsS0FBSzsyQkFDTCxLQUFLOytCQUNMLEtBQUs7K0JBQ0wsS0FBSzsyQkFDTCxLQUFLO3lCQUNMLEtBQUs7dUJBRUwsTUFBTTs7QUFtS1gsTUFBTSxDQUFOLElBQVkscUJBSVg7QUFKRCxXQUFZLHFCQUFxQjtJQUM3Qix3Q0FBZSxDQUFBO0lBQ2Ysb0RBQTJCLENBQUE7SUFDM0Isd0NBQWUsQ0FBQTtBQUNuQixDQUFDLEVBSlcscUJBQXFCLEtBQXJCLHFCQUFxQixRQUloQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFuaW1hdGUsIHN0YXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5wdXQsXG4gICAgT25EZXN0cm95LFxuICAgIE9wdGlvbmFsLFxuICAgIE91dHB1dCxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFNraXBTZWxmLFxuICAgIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgZ2V0RW51bUZyb21TdHJpbmcgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2VudW0vZW51bSc7XG5pbXBvcnQgeyB1dWlkIH0gZnJvbSAnLi4vLi4vaGVscGVycy91dWlkJztcbmltcG9ydCB7IE5ndERyb3Bkb3duQ29udGFpbmVyQ29tcG9uZW50IH0gZnJvbSAnLi9uZ3QtZHJvcGRvd24tY29udGFpbmVyL25ndC1kcm9wZG93bi1jb250YWluZXIuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduZ3QtZHJvcGRvd24nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9uZ3QtZHJvcGRvd24uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL25ndC1kcm9wZG93bi5jb21wb25lbnQuY3NzJ10sXG4gICAgYW5pbWF0aW9uczogW1xuICAgICAgICB0cmlnZ2VyKCdvcGVuQ2xvc2UnLCBbXG4gICAgICAgICAgICBzdGF0ZSgnb3BlbicsIHN0eWxlKHsgb3BhY2l0eTogMSwgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgwcHgpJyB9KSksXG4gICAgICAgICAgICBzdGF0ZSgnY2xvc2VkJywgc3R5bGUoeyBvcGFjaXR5OiAwLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKC0xMHB4KScgfSkpLFxuICAgICAgICAgICAgdHJhbnNpdGlvbignY2xvc2VkID0+IG9wZW4nLCBbXG4gICAgICAgICAgICAgICAgYW5pbWF0ZSgzMDApXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgXSksXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBOZ3REcm9wZG93bkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gICAgQFZpZXdDaGlsZCgnY29udGFpbmVyJywgeyBzdGF0aWM6IHRydWUgfSkgcHVibGljIGNvbnRhaW5lclJlZjogRWxlbWVudFJlZjtcblxuICAgIEBJbnB1dCgpIHB1YmxpYyBhdXRvWFJldmVyc2U6IGJvb2xlYW47XG4gICAgQElucHV0KCkgcHVibGljIGF1dG9ZUmV2ZXJzZTogYm9vbGVhbiA9IHRydWU7XG4gICAgQElucHV0KCkgcHVibGljIHJldmVyc2VYUG9zaXRpb246IGJvb2xlYW47XG4gICAgQElucHV0KCkgcHVibGljIHJldmVyc2VZUG9zaXRpb246IGJvb2xlYW47XG4gICAgQElucHV0KCkgcHVibGljIGNsb3NlT25DbGljazogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBwdWJsaWMgb3Blbk1ldGhvZDogTmd0RHJvcGRvd25PcGVuTWV0aG9kID0gTmd0RHJvcGRvd25PcGVuTWV0aG9kLkhPVkVSO1xuXG4gICAgQE91dHB1dCgpIHB1YmxpYyBvblRvZ2dsZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgcHVibGljIG5hbWU6IHN0cmluZyA9IHV1aWQoKTtcbiAgICBwdWJsaWMgaXNPcGVuOiBib29sZWFuO1xuICAgIHB1YmxpYyBpc1lQb3NpdGlvblJldmVyc2VkOiBib29sZWFuID0gZmFsc2U7XG4gICAgcHVibGljIGlzWFBvc2l0aW9uUmV2ZXJzZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBwdWJsaWMgaXNCaW5kaW5nWVBvc2l0aW9uOiBib29sZWFuID0gdHJ1ZTtcbiAgICBwdWJsaWMgaXNCaW5kaW5nWFBvc2l0aW9uOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIHByaXZhdGUgc3Vic2NyaXB0aW9uczogQXJyYXk8U3Vic2NyaXB0aW9uPiA9IFtdO1xuICAgIHByaXZhdGUgY29udGFpbmVyWFBvc2l0aW9uOiBudW1iZXI7XG4gICAgcHJpdmF0ZSBjb250YWluZXJZUG9zaXRpb246IG51bWJlcjtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAgICAgQE9wdGlvbmFsKCkgQFNraXBTZWxmKClcbiAgICAgICAgcHJpdmF0ZSBuZ3REcm9wZG93bkNvbnRhaW5lcjogTmd0RHJvcGRvd25Db250YWluZXJDb21wb25lbnRcbiAgICApIHtcbiAgICAgICAgaWYgKHRoaXMubmd0RHJvcGRvd25Db250YWluZXIpIHtcbiAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgICAgICAgICAgIHRoaXMubmd0RHJvcGRvd25Db250YWluZXIub25BY3RpdmVEcm9wZG93bkNoYW5nZS5zdWJzY3JpYmUoKGFjdGl2ZURyb3Bkb3duOiBOZ3REcm9wZG93bkNvbXBvbmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzT3BlbiA9IChhY3RpdmVEcm9wZG93bi5uYW1lID09PSB0aGlzLm5hbWUpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKGNoYW5nZXMub3Blbk1ldGhvZCkge1xuICAgICAgICAgICAgdGhpcy5vcGVuTWV0aG9kID0gZ2V0RW51bUZyb21TdHJpbmcoY2hhbmdlcy5vcGVuTWV0aG9kLmN1cnJlbnRWYWx1ZSwgTmd0RHJvcGRvd25PcGVuTWV0aG9kKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kZXN0cm95U3Vic2NyaXB0aW9ucygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvcGVuKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlzT3BlbiA9IHRydWU7XG4gICAgICAgIHRoaXMubmd0RHJvcGRvd25Db250YWluZXI/LnNldEFjdGl2ZURyb3Bkb3duKHRoaXMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjbG9zZU9uU2VsZWN0T3B0aW9uKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5jbG9zZU9uQ2xpY2spIHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBjbG9zZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc09wZW4gPSBmYWxzZTtcblxuICAgICAgICB0aGlzLmNvbnRhaW5lclhQb3NpdGlvbiA9IG51bGw7XG4gICAgICAgIHRoaXMuY29udGFpbmVyWVBvc2l0aW9uID0gbnVsbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgdG9nZ2xlKCk6IHZvaWQge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzT3Blbikge1xuICAgICAgICAgICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vcGVuKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMub25Ub2dnbGUuZW1pdCh0aGlzLmlzT3Blbik7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkhvdmVyKGhvc3Q6IGFueSwgY29udGFpbmVyOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMub3Blbk1ldGhvZCA9PSBOZ3REcm9wZG93bk9wZW5NZXRob2QuSE9WRVIgJiYgaG9zdCAmJiBjb250YWluZXIpIHtcbiAgICAgICAgICAgIHRoaXMub3BlbigpO1xuICAgICAgICAgICAgdGhpcy53YXRjaEhvdmVyKGhvc3QsIGNvbnRhaW5lcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25DbGljayhldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMub3Blbk1ldGhvZCA9PSBOZ3REcm9wZG93bk9wZW5NZXRob2QuQ0xJQ0spIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIHRoaXMudG9nZ2xlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25SaWdodENsaWNrKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5vcGVuTWV0aG9kID09IE5ndERyb3Bkb3duT3Blbk1ldGhvZC5SSUdIVF9DTElDSykge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgdGhpcy50b2dnbGUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzaG91bGRSZXZlcnNlWFBvc2l0aW9uKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIXRoaXMuYXV0b1hSZXZlcnNlIHx8IHRoaXMucmV2ZXJzZVhQb3NpdGlvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZXZlcnNlWFBvc2l0aW9uO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaXNPcGVuKSB7XG4gICAgICAgICAgICB0aGlzLmJpbmRDb250YWluZXJYUG9zaXRpb24oKTtcblxuICAgICAgICAgICAgdGhpcy5pc1hQb3NpdGlvblJldmVyc2VkID0gISh0aGlzLmNvbnRhaW5lclhQb3NpdGlvbiA+IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aCk7XG5cbiAgICAgICAgICAgIHJldHVybiAhdGhpcy5pc0JpbmRpbmdYUG9zaXRpb24gJiYgdGhpcy5pc1hQb3NpdGlvblJldmVyc2VkO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHNob3VsZFJldmVyc2VZUG9zaXRpb24oKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghdGhpcy5hdXRvWVJldmVyc2UgfHwgdGhpcy5yZXZlcnNlWVBvc2l0aW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJldmVyc2VZUG9zaXRpb247XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5pc09wZW4pIHtcbiAgICAgICAgICAgIHRoaXMuYmluZENvbnRhaW5lcllQb3NpdGlvbigpO1xuXG4gICAgICAgICAgICB0aGlzLmlzWVBvc2l0aW9uUmV2ZXJzZWQgPSB0aGlzLmNvbnRhaW5lcllQb3NpdGlvbiA+IChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0ICogMC45KTtcblxuICAgICAgICAgICAgcmV0dXJuICF0aGlzLmlzQmluZGluZ1lQb3NpdGlvbiAmJiB0aGlzLmlzWVBvc2l0aW9uUmV2ZXJzZWQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGJpbmRDb250YWluZXJYUG9zaXRpb24oKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5jb250YWluZXJYUG9zaXRpb24gJiYgdGhpcy5jb250YWluZXJSZWYubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCkge1xuICAgICAgICAgICAgdGhpcy5pc0JpbmRpbmdYUG9zaXRpb24gPSB0cnVlO1xuXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRhaW5lclhQb3NpdGlvbiA9IHRoaXMuY29udGFpbmVyUmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkueFxuICAgICAgICAgICAgICAgICAgICArIHRoaXMuY29udGFpbmVyUmVmLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGg7XG5cbiAgICAgICAgICAgICAgICB0aGlzLmlzQmluZGluZ1hQb3NpdGlvbiA9IGZhbHNlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGJpbmRDb250YWluZXJZUG9zaXRpb24oKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5jb250YWluZXJZUG9zaXRpb24gJiYgdGhpcy5jb250YWluZXJSZWY/Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0KSB7XG4gICAgICAgICAgICB0aGlzLmlzQmluZGluZ1lQb3NpdGlvbiA9IHRydWU7XG5cbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY29udGFpbmVyWVBvc2l0aW9uID0gdGhpcy5jb250YWluZXJSZWYubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS55XG4gICAgICAgICAgICAgICAgICAgICsgdGhpcy5jb250YWluZXJSZWYubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQ7XG5cbiAgICAgICAgICAgICAgICB0aGlzLmlzQmluZGluZ1lQb3NpdGlvbiA9IGZhbHNlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHdhdGNoSG92ZXIoaG9zdDogYW55LCBjb250YWluZXI6IGFueSk6IHZvaWQge1xuICAgICAgICBjb25zdCBpbnRlcnZhbCA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICAgICAgICAgIGlmICghaG9zdCB8fCAhY29udGFpbmVyIHx8ICF0aGlzLmlzSW5Ib3Zlcihob3N0LCBjb250YWluZXIpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCAxMDAwKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzSW5Ib3Zlcihob3N0OiBhbnksIGNvbnRhaW5lcjogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBob3N0LnBhcmVudEVsZW1lbnQucXVlcnlTZWxlY3RvcignOmhvdmVyJykgPT0gaG9zdCB8fFxuICAgICAgICAgICAgY29udGFpbmVyLnBhcmVudEVsZW1lbnQucXVlcnlTZWxlY3RvcignOmhvdmVyJykgPT0gY29udGFpbmVyO1xuICAgIH1cblxuICAgIHByaXZhdGUgZGVzdHJveVN1YnNjcmlwdGlvbnMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKHN1YnNjcmlwdGlvbiA9PiBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSk7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucyA9IFtdO1xuICAgIH1cbn1cblxuZXhwb3J0IGVudW0gTmd0RHJvcGRvd25PcGVuTWV0aG9kIHtcbiAgICBDTElDSyA9ICdDTElDSycsXG4gICAgUklHSFRfQ0xJQ0sgPSAnUklHSFRfQ0xJQ0snLFxuICAgIEhPVkVSID0gJ0hPVkVSJ1xufVxuIl19
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 { NgtDropdownContainerComponent } from './ngt-dropdown-container/ngt-dropdown-container.component';
6
+ export class NgtDropdownComponent {
7
+ constructor(ngtDropdownContainer) {
8
+ this.ngtDropdownContainer = ngtDropdownContainer;
9
+ this.autoYReverse = true;
10
+ this.openMethod = NgtDropdownOpenMethod.HOVER;
11
+ this.onToggle = new EventEmitter();
12
+ this.name = uuid();
13
+ this.isYPositionReversed = false;
14
+ this.isXPositionReversed = false;
15
+ this.isBindingYPosition = true;
16
+ this.isBindingXPosition = true;
17
+ this.subscriptions = [];
18
+ if (this.ngtDropdownContainer) {
19
+ this.subscriptions.push(this.ngtDropdownContainer.onActiveDropdownChange.subscribe((activeDropdown) => {
20
+ this.isOpen = (activeDropdown.name === this.name);
21
+ }));
22
+ }
23
+ }
24
+ ngOnChanges(changes) {
25
+ if (changes.openMethod) {
26
+ this.openMethod = getEnumFromString(changes.openMethod.currentValue, NgtDropdownOpenMethod);
27
+ }
28
+ }
29
+ ngOnDestroy() {
30
+ this.destroySubscriptions();
31
+ }
32
+ open() {
33
+ var _a;
34
+ this.isOpen = true;
35
+ (_a = this.ngtDropdownContainer) === null || _a === void 0 ? void 0 : _a.setActiveDropdown(this);
36
+ }
37
+ closeOnSelectOption() {
38
+ if (this.closeOnClick) {
39
+ this.close();
40
+ }
41
+ }
42
+ close() {
43
+ this.isOpen = false;
44
+ this.containerXPosition = null;
45
+ this.containerYPosition = null;
46
+ }
47
+ toggle() {
48
+ setTimeout(() => {
49
+ if (this.isOpen) {
50
+ this.close();
51
+ }
52
+ else {
53
+ this.open();
54
+ }
55
+ this.onToggle.emit(this.isOpen);
56
+ });
57
+ }
58
+ onHover(host, container) {
59
+ if (this.openMethod == NgtDropdownOpenMethod.HOVER && host && container) {
60
+ this.open();
61
+ this.watchHover(host, container);
62
+ }
63
+ }
64
+ onClick(event) {
65
+ if (this.openMethod == NgtDropdownOpenMethod.CLICK) {
66
+ event.preventDefault();
67
+ event.stopPropagation();
68
+ this.toggle();
69
+ }
70
+ }
71
+ onRightClick(event) {
72
+ if (this.openMethod == NgtDropdownOpenMethod.RIGHT_CLICK) {
73
+ event.preventDefault();
74
+ event.stopPropagation();
75
+ this.toggle();
76
+ }
77
+ }
78
+ shouldReverseXPosition() {
79
+ if (!this.autoXReverse || this.reverseXPosition !== undefined) {
80
+ return this.reverseXPosition;
81
+ }
82
+ if (this.isOpen) {
83
+ this.bindContainerXPosition();
84
+ this.isXPositionReversed = !(this.containerXPosition > document.documentElement.clientWidth);
85
+ return !this.isBindingXPosition && this.isXPositionReversed;
86
+ }
87
+ }
88
+ shouldReverseYPosition() {
89
+ if (!this.autoYReverse || this.reverseYPosition !== undefined) {
90
+ return this.reverseYPosition;
91
+ }
92
+ if (this.isOpen) {
93
+ this.bindContainerYPosition();
94
+ this.isYPositionReversed = this.containerYPosition > (document.documentElement.clientHeight * 0.9);
95
+ return !this.isBindingYPosition && this.isYPositionReversed;
96
+ }
97
+ }
98
+ bindContainerXPosition() {
99
+ if (!this.containerXPosition && this.containerRef.nativeElement.offsetWidth) {
100
+ this.isBindingXPosition = true;
101
+ setTimeout(() => {
102
+ this.containerXPosition = this.containerRef.nativeElement.getBoundingClientRect().x
103
+ + this.containerRef.nativeElement.offsetWidth;
104
+ this.isBindingXPosition = false;
105
+ });
106
+ }
107
+ }
108
+ bindContainerYPosition() {
109
+ var _a;
110
+ if (!this.containerYPosition && ((_a = this.containerRef) === null || _a === void 0 ? void 0 : _a.nativeElement.offsetHeight)) {
111
+ this.isBindingYPosition = true;
112
+ setTimeout(() => {
113
+ this.containerYPosition = this.containerRef.nativeElement.getBoundingClientRect().y
114
+ + this.containerRef.nativeElement.offsetHeight;
115
+ this.isBindingYPosition = false;
116
+ });
117
+ }
118
+ }
119
+ watchHover(host, container) {
120
+ const interval = setInterval(() => {
121
+ if (!host || !container || !this.isInHover(host, container)) {
122
+ this.close();
123
+ clearInterval(interval);
124
+ }
125
+ }, 1000);
126
+ }
127
+ isInHover(host, container) {
128
+ return host.parentElement.querySelector(':hover') == host ||
129
+ container.parentElement.querySelector(':hover') == container;
130
+ }
131
+ destroySubscriptions() {
132
+ this.subscriptions.forEach(subscription => subscription.unsubscribe());
133
+ this.subscriptions = [];
134
+ }
135
+ }
136
+ NgtDropdownComponent.decorators = [
137
+ { type: Component, args: [{
138
+ selector: 'ngt-dropdown',
139
+ template: "<div class=\"sm:relative\">\r\n <div (mouseenter)=\"onHover(host, container)\" (click)=\"onClick($event)\" (contextmenu)=\"onRightClick($event)\" #host>\r\n <ng-content select='[host]'></ng-content>\r\n </div>\r\n\r\n <div [hidden]='!isOpen'\r\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\"\r\n [@openClose]=\"isOpen ? 'open' : 'closed'\" (mouseenter)=\"onHover(host, container)\"\r\n (click)='closeOnSelectOption()' style=\"z-index: 1100 !important;\" #container>\r\n\r\n <ng-content select='[container]'></ng-content>\r\n </div>\r\n</div>\r\n\r\n<button *ngIf=\"isOpen && openMethod != 'HOVER'\" class=\"fixed z-40 inset-0 h-full w-full opacity-0 cursor-default\"\r\n (click)='toggle()'>\r\n</button>",
140
+ animations: [
141
+ trigger('openClose', [
142
+ state('open', style({ opacity: 1, transform: 'translateY(0px)' })),
143
+ state('closed', style({ opacity: 0, transform: 'translateY(-10px)' })),
144
+ transition('closed => open', [
145
+ animate(300)
146
+ ]),
147
+ ]),
148
+ ],
149
+ styles: [".ngt-dropdown-container{max-height:30rem;width:-webkit-max-content;width:-moz-max-content;width:max-content}"]
150
+ },] }
151
+ ];
152
+ NgtDropdownComponent.ctorParameters = () => [
153
+ { type: NgtDropdownContainerComponent, decorators: [{ type: Optional }, { type: SkipSelf }] }
154
+ ];
155
+ NgtDropdownComponent.propDecorators = {
156
+ containerRef: [{ type: ViewChild, args: ['container', { static: true },] }],
157
+ autoXReverse: [{ type: Input }],
158
+ autoYReverse: [{ type: Input }],
159
+ reverseXPosition: [{ type: Input }],
160
+ reverseYPosition: [{ type: Input }],
161
+ closeOnClick: [{ type: Input }],
162
+ openMethod: [{ type: Input }],
163
+ onToggle: [{ type: Output }]
164
+ };
165
+ export var NgtDropdownOpenMethod;
166
+ (function (NgtDropdownOpenMethod) {
167
+ NgtDropdownOpenMethod["CLICK"] = "CLICK";
168
+ NgtDropdownOpenMethod["RIGHT_CLICK"] = "RIGHT_CLICK";
169
+ NgtDropdownOpenMethod["HOVER"] = "HOVER";
170
+ })(NgtDropdownOpenMethod || (NgtDropdownOpenMethod = {}));
171
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd0LWRyb3Bkb3duLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXRhaWx3aW5kL3NyYy9jb21wb25lbnRzL25ndC1kcm9wZG93bi9uZ3QtZHJvcGRvd24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakYsT0FBTyxFQUNILFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUVMLFFBQVEsRUFDUixNQUFNLEVBRU4sUUFBUSxFQUNSLFNBQVMsR0FDWixNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDMUMsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sMkRBQTJELENBQUM7QUFnQjFHLE1BQU0sT0FBTyxvQkFBb0I7SUF1QjdCLFlBRVksb0JBQW1EO1FBQW5ELHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBK0I7UUFyQi9DLGlCQUFZLEdBQVksSUFBSSxDQUFDO1FBSTdCLGVBQVUsR0FBMEIscUJBQXFCLENBQUMsS0FBSyxDQUFDO1FBRS9ELGFBQVEsR0FBMEIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUUvRCxTQUFJLEdBQVcsSUFBSSxFQUFFLENBQUM7UUFFdEIsd0JBQW1CLEdBQVksS0FBSyxDQUFDO1FBQ3JDLHdCQUFtQixHQUFZLEtBQUssQ0FBQztRQUNyQyx1QkFBa0IsR0FBWSxJQUFJLENBQUM7UUFDbkMsdUJBQWtCLEdBQVksSUFBSSxDQUFDO1FBRWxDLGtCQUFhLEdBQXdCLEVBQUUsQ0FBQztRQVE1QyxJQUFJLElBQUksQ0FBQyxvQkFBb0IsRUFBRTtZQUMzQixJQUFJ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LGNBQWM7Z0JBQ3hCLCszQkFBNEM7Z0JBRTVDLFVBQVUsRUFBRTtvQkFDUixPQUFPLENBQUMsV0FBVyxFQUFFO3dCQUNqQixLQUFLLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLENBQUMsQ0FBQzt3QkFDbEUsS0FBSyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxtQkFBbUIsRUFBRSxDQUFDLENBQUM7d0JBQ3RFLFVBQVUsQ0FBQyxnQkFBZ0IsRUFBRTs0QkFDekIsT0FBTyxDQUFDLEdBQUcsQ0FBQzt5QkFDZixDQUFDO3FCQUNMLENBQUM7aUJBQ0w7O2FBQ0o7OztZQWZRLDZCQUE2Qix1QkF3QzdCLFFBQVEsWUFBSSxRQUFROzs7MkJBdkJ4QixTQUFTLFNBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTsyQkFFdkMsS0FBSzsyQkFDTCxLQUFLOytCQUNMLEtBQUs7K0JBQ0wsS0FBSzsyQkFDTCxLQUFLO3lCQUNMLEtBQUs7dUJBRUwsTUFBTTs7QUFtS1gsTUFBTSxDQUFOLElBQVkscUJBSVg7QUFKRCxXQUFZLHFCQUFxQjtJQUM3Qix3Q0FBZSxDQUFBO0lBQ2Ysb0RBQTJCLENBQUE7SUFDM0Isd0NBQWUsQ0FBQTtBQUNuQixDQUFDLEVBSlcscUJBQXFCLEtBQXJCLHFCQUFxQixRQUloQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFuaW1hdGUsIHN0YXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xyXG5pbXBvcnQge1xyXG4gICAgQ29tcG9uZW50LFxyXG4gICAgRWxlbWVudFJlZixcclxuICAgIEV2ZW50RW1pdHRlcixcclxuICAgIElucHV0LFxyXG4gICAgT25EZXN0cm95LFxyXG4gICAgT3B0aW9uYWwsXHJcbiAgICBPdXRwdXQsXHJcbiAgICBTaW1wbGVDaGFuZ2VzLFxyXG4gICAgU2tpcFNlbGYsXHJcbiAgICBWaWV3Q2hpbGQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5cclxuaW1wb3J0IHsgZ2V0RW51bUZyb21TdHJpbmcgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2VudW0vZW51bSc7XHJcbmltcG9ydCB7IHV1aWQgfSBmcm9tICcuLi8uLi9oZWxwZXJzL3V1aWQnO1xyXG5pbXBvcnQgeyBOZ3REcm9wZG93bkNvbnRhaW5lckNvbXBvbmVudCB9IGZyb20gJy4vbmd0LWRyb3Bkb3duLWNvbnRhaW5lci9uZ3QtZHJvcGRvd24tY29udGFpbmVyLmNvbXBvbmVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnbmd0LWRyb3Bkb3duJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9uZ3QtZHJvcGRvd24uY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vbmd0LWRyb3Bkb3duLmNvbXBvbmVudC5jc3MnXSxcclxuICAgIGFuaW1hdGlvbnM6IFtcclxuICAgICAgICB0cmlnZ2VyKCdvcGVuQ2xvc2UnLCBbXHJcbiAgICAgICAgICAgIHN0YXRlKCdvcGVuJywgc3R5bGUoeyBvcGFjaXR5OiAxLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKDBweCknIH0pKSxcclxuICAgICAgICAgICAgc3RhdGUoJ2Nsb3NlZCcsIHN0eWxlKHsgb3BhY2l0eTogMCwgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgtMTBweCknIH0pKSxcclxuICAgICAgICAgICAgdHJhbnNpdGlvbignY2xvc2VkID0+IG9wZW4nLCBbXHJcbiAgICAgICAgICAgICAgICBhbmltYXRlKDMwMClcclxuICAgICAgICAgICAgXSksXHJcbiAgICAgICAgXSksXHJcbiAgICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOZ3REcm9wZG93bkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcbiAgICBAVmlld0NoaWxkKCdjb250YWluZXInLCB7IHN0YXRpYzogdHJ1ZSB9KSBwdWJsaWMgY29udGFpbmVyUmVmOiBFbGVtZW50UmVmO1xyXG5cclxuICAgIEBJbnB1dCgpIHB1YmxpYyBhdXRvWFJldmVyc2U6IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSBwdWJsaWMgYXV0b1lSZXZlcnNlOiBib29sZWFuID0gdHJ1ZTtcclxuICAgIEBJbnB1dCgpIHB1YmxpYyByZXZlcnNlWFBvc2l0aW9uOiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgcHVibGljIHJldmVyc2VZUG9zaXRpb246IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSBwdWJsaWMgY2xvc2VPbkNsaWNrOiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgcHVibGljIG9wZW5NZXRob2Q6IE5ndERyb3Bkb3duT3Blbk1ldGhvZCA9IE5ndERyb3Bkb3duT3Blbk1ldGhvZC5IT1ZFUjtcclxuXHJcbiAgICBAT3V0cHV0KCkgcHVibGljIG9uVG9nZ2xlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gICAgcHVibGljIG5hbWU6IHN0cmluZyA9IHV1aWQoKTtcclxuICAgIHB1YmxpYyBpc09wZW46IGJvb2xlYW47XHJcbiAgICBwdWJsaWMgaXNZUG9zaXRpb25SZXZlcnNlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHVibGljIGlzWFBvc2l0aW9uUmV2ZXJzZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHB1YmxpYyBpc0JpbmRpbmdZUG9zaXRpb246IGJvb2xlYW4gPSB0cnVlO1xyXG4gICAgcHVibGljIGlzQmluZGluZ1hQb3NpdGlvbjogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gICAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zOiBBcnJheTxTdWJzY3JpcHRpb24+ID0gW107XHJcbiAgICBwcml2YXRlIGNvbnRhaW5lclhQb3NpdGlvbjogbnVtYmVyO1xyXG4gICAgcHJpdmF0ZSBjb250YWluZXJZUG9zaXRpb246IG51bWJlcjtcclxuXHJcbiAgICBwdWJsaWMgY29uc3RydWN0b3IoXHJcbiAgICAgICAgQE9wdGlvbmFsKCkgQFNraXBTZWxmKClcclxuICAgICAgICBwcml2YXRlIG5ndERyb3Bkb3duQ29udGFpbmVyOiBOZ3REcm9wZG93bkNvbnRhaW5lckNvbXBvbmVudFxyXG4gICAgKSB7XHJcbiAgICAgICAgaWYgKHRoaXMubmd0RHJvcGRvd25Db250YWluZXIpIHtcclxuICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgICAgICAgICB0aGlzLm5ndERyb3Bkb3duQ29udGFpbmVyLm9uQWN0aXZlRHJvcGRvd25DaGFuZ2Uuc3Vic2NyaWJlKChhY3RpdmVEcm9wZG93bjogTmd0RHJvcGRvd25Db21wb25lbnQpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzT3BlbiA9IChhY3RpdmVEcm9wZG93bi5uYW1lID09PSB0aGlzLm5hbWUpO1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgICAgICBpZiAoY2hhbmdlcy5vcGVuTWV0aG9kKSB7XHJcbiAgICAgICAgICAgIHRoaXMub3Blbk1ldGhvZCA9IGdldEVudW1Gcm9tU3RyaW5nKGNoYW5nZXMub3Blbk1ldGhvZC5jdXJyZW50VmFsdWUsIE5ndERyb3Bkb3duT3Blbk1ldGhvZCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmRlc3Ryb3lTdWJzY3JpcHRpb25zKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG9wZW4oKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5pc09wZW4gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMubmd0RHJvcGRvd25Db250YWluZXI/LnNldEFjdGl2ZURyb3Bkb3duKHRoaXMpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBjbG9zZU9uU2VsZWN0T3B0aW9uKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLmNsb3NlT25DbGljaykge1xyXG4gICAgICAgICAgICB0aGlzLmNsb3NlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBjbG9zZSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmlzT3BlbiA9IGZhbHNlO1xyXG5cclxuICAgICAgICB0aGlzLmNvbnRhaW5lclhQb3NpdGlvbiA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5jb250YWluZXJZUG9zaXRpb24gPSBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyB0b2dnbGUoKTogdm9pZCB7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmlzT3Blbikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jbG9zZSgpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vcGVuKCk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMub25Ub2dnbGUuZW1pdCh0aGlzLmlzT3Blbik7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG9uSG92ZXIoaG9zdDogYW55LCBjb250YWluZXI6IGFueSk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLm9wZW5NZXRob2QgPT0gTmd0RHJvcGRvd25PcGVuTWV0aG9kLkhPVkVSICYmIGhvc3QgJiYgY29udGFpbmVyKSB7XHJcbiAgICAgICAgICAgIHRoaXMub3BlbigpO1xyXG4gICAgICAgICAgICB0aGlzLndhdGNoSG92ZXIoaG9zdCwgY29udGFpbmVyKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG9uQ2xpY2soZXZlbnQ6IEV2ZW50KTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMub3Blbk1ldGhvZCA9PSBOZ3REcm9wZG93bk9wZW5NZXRob2QuQ0xJQ0spIHtcclxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgIHRoaXMudG9nZ2xlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBvblJpZ2h0Q2xpY2soZXZlbnQ6IEV2ZW50KTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMub3Blbk1ldGhvZCA9PSBOZ3REcm9wZG93bk9wZW5NZXRob2QuUklHSFRfQ0xJQ0spIHtcclxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgIHRoaXMudG9nZ2xlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzaG91bGRSZXZlcnNlWFBvc2l0aW9uKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmICghdGhpcy5hdXRvWFJldmVyc2UgfHwgdGhpcy5yZXZlcnNlWFBvc2l0aW9uICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMucmV2ZXJzZVhQb3NpdGlvbjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmlzT3Blbikge1xyXG4gICAgICAgICAgICB0aGlzLmJpbmRDb250YWluZXJYUG9zaXRpb24oKTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuaXNYUG9zaXRpb25SZXZlcnNlZCA9ICEodGhpcy5jb250YWluZXJYUG9zaXRpb24gPiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGgpO1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuICF0aGlzLmlzQmluZGluZ1hQb3NpdGlvbiAmJiB0aGlzLmlzWFBvc2l0aW9uUmV2ZXJzZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzaG91bGRSZXZlcnNlWVBvc2l0aW9uKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmICghdGhpcy5hdXRvWVJldmVyc2UgfHwgdGhpcy5yZXZlcnNlWVBvc2l0aW9uICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMucmV2ZXJzZVlQb3NpdGlvbjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmlzT3Blbikge1xyXG4gICAgICAgICAgICB0aGlzLmJpbmRDb250YWluZXJZUG9zaXRpb24oKTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuaXNZUG9zaXRpb25SZXZlcnNlZCA9IHRoaXMuY29udGFpbmVyWVBvc2l0aW9uID4gKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQgKiAwLjkpO1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuICF0aGlzLmlzQmluZGluZ1lQb3NpdGlvbiAmJiB0aGlzLmlzWVBvc2l0aW9uUmV2ZXJzZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgYmluZENvbnRhaW5lclhQb3NpdGlvbigpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIXRoaXMuY29udGFpbmVyWFBvc2l0aW9uICYmIHRoaXMuY29udGFpbmVyUmVmLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGgpIHtcclxuICAgICAgICAgICAgdGhpcy5pc0JpbmRpbmdYUG9zaXRpb24gPSB0cnVlO1xyXG5cclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRhaW5lclhQb3NpdGlvbiA9IHRoaXMuY29udGFpbmVyUmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkueFxyXG4gICAgICAgICAgICAgICAgICAgICsgdGhpcy5jb250YWluZXJSZWYubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aDtcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLmlzQmluZGluZ1hQb3NpdGlvbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBiaW5kQ29udGFpbmVyWVBvc2l0aW9uKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICghdGhpcy5jb250YWluZXJZUG9zaXRpb24gJiYgdGhpcy5jb250YWluZXJSZWY/Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuaXNCaW5kaW5nWVBvc2l0aW9uID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb250YWluZXJZUG9zaXRpb24gPSB0aGlzLmNvbnRhaW5lclJlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnlcclxuICAgICAgICAgICAgICAgICAgICArIHRoaXMuY29udGFpbmVyUmVmLm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0O1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuaXNCaW5kaW5nWVBvc2l0aW9uID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHdhdGNoSG92ZXIoaG9zdDogYW55LCBjb250YWluZXI6IGFueSk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIWhvc3QgfHwgIWNvbnRhaW5lciB8fCAhdGhpcy5pc0luSG92ZXIoaG9zdCwgY29udGFpbmVyKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jbG9zZSgpO1xyXG4gICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LCAxMDAwKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGlzSW5Ib3Zlcihob3N0OiBhbnksIGNvbnRhaW5lcjogYW55KTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIGhvc3QucGFyZW50RWxlbWVudC5xdWVyeVNlbGVjdG9yKCc6aG92ZXInKSA9PSBob3N0IHx8XHJcbiAgICAgICAgICAgIGNvbnRhaW5lci5wYXJlbnRFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJzpob3ZlcicpID09IGNvbnRhaW5lcjtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGRlc3Ryb3lTdWJzY3JpcHRpb25zKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKHN1YnNjcmlwdGlvbiA9PiBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSk7XHJcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zID0gW107XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIE5ndERyb3Bkb3duT3Blbk1ldGhvZCB7XHJcbiAgICBDTElDSyA9ICdDTElDSycsXHJcbiAgICBSSUdIVF9DTElDSyA9ICdSSUdIVF9DTElDSycsXHJcbiAgICBIT1ZFUiA9ICdIT1ZFUidcclxufVxyXG4iXX0=
@@ -1,16 +1,16 @@
1
- import { NgModule } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
3
- import { NgtDropdownComponent } from './ngt-dropdown.component';
4
- import { NgtDropdownContainerComponent } from './ngt-dropdown-container/ngt-dropdown-container.component';
5
- export class NgtDropdownModule {
6
- }
7
- NgtDropdownModule.decorators = [
8
- { type: NgModule, args: [{
9
- declarations: [NgtDropdownComponent, NgtDropdownContainerComponent],
10
- exports: [NgtDropdownComponent, NgtDropdownContainerComponent],
11
- imports: [
12
- CommonModule
13
- ]
14
- },] }
15
- ];
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd0LWRyb3Bkb3duLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXRhaWx3aW5kL3NyYy9jb21wb25lbnRzL25ndC1kcm9wZG93bi9uZ3QtZHJvcGRvd24ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBUzFHLE1BQU0sT0FBTyxpQkFBaUI7OztZQVA3QixRQUFRLFNBQUM7Z0JBQ04sWUFBWSxFQUFFLENBQUMsb0JBQW9CLEVBQUUsNkJBQTZCLENBQUM7Z0JBQ25FLE9BQU8sRUFBRSxDQUFDLG9CQUFvQixFQUFFLDZCQUE2QixDQUFDO2dCQUM5RCxPQUFPLEVBQUU7b0JBQ0wsWUFBWTtpQkFDZjthQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ3REcm9wZG93bkNvbXBvbmVudCB9IGZyb20gJy4vbmd0LWRyb3Bkb3duLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOZ3REcm9wZG93bkNvbnRhaW5lckNvbXBvbmVudCB9IGZyb20gJy4vbmd0LWRyb3Bkb3duLWNvbnRhaW5lci9uZ3QtZHJvcGRvd24tY29udGFpbmVyLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gICAgZGVjbGFyYXRpb25zOiBbTmd0RHJvcGRvd25Db21wb25lbnQsIE5ndERyb3Bkb3duQ29udGFpbmVyQ29tcG9uZW50XSxcbiAgICBleHBvcnRzOiBbTmd0RHJvcGRvd25Db21wb25lbnQsIE5ndERyb3Bkb3duQ29udGFpbmVyQ29tcG9uZW50XSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgTmd0RHJvcGRvd25Nb2R1bGUgeyB9XG4iXX0=
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { NgtDropdownComponent } from './ngt-dropdown.component';
4
+ import { NgtDropdownContainerComponent } from './ngt-dropdown-container/ngt-dropdown-container.component';
5
+ export class NgtDropdownModule {
6
+ }
7
+ NgtDropdownModule.decorators = [
8
+ { type: NgModule, args: [{
9
+ declarations: [NgtDropdownComponent, NgtDropdownContainerComponent],
10
+ exports: [NgtDropdownComponent, NgtDropdownContainerComponent],
11
+ imports: [
12
+ CommonModule
13
+ ]
14
+ },] }
15
+ ];
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd0LWRyb3Bkb3duLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXRhaWx3aW5kL3NyYy9jb21wb25lbnRzL25ndC1kcm9wZG93bi9uZ3QtZHJvcGRvd24ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBUzFHLE1BQU0sT0FBTyxpQkFBaUI7OztZQVA3QixRQUFRLFNBQUM7Z0JBQ04sWUFBWSxFQUFFLENBQUMsb0JBQW9CLEVBQUUsNkJBQTZCLENBQUM7Z0JBQ25FLE9BQU8sRUFBRSxDQUFDLG9CQUFvQixFQUFFLDZCQUE2QixDQUFDO2dCQUM5RCxPQUFPLEVBQUU7b0JBQ0wsWUFBWTtpQkFDZjthQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgTmd0RHJvcGRvd25Db21wb25lbnQgfSBmcm9tICcuL25ndC1kcm9wZG93bi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBOZ3REcm9wZG93bkNvbnRhaW5lckNvbXBvbmVudCB9IGZyb20gJy4vbmd0LWRyb3Bkb3duLWNvbnRhaW5lci9uZ3QtZHJvcGRvd24tY29udGFpbmVyLmNvbXBvbmVudCc7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gICAgZGVjbGFyYXRpb25zOiBbTmd0RHJvcGRvd25Db21wb25lbnQsIE5ndERyb3Bkb3duQ29udGFpbmVyQ29tcG9uZW50XSxcclxuICAgIGV4cG9ydHM6IFtOZ3REcm9wZG93bkNvbXBvbmVudCwgTmd0RHJvcGRvd25Db250YWluZXJDb21wb25lbnRdLFxyXG4gICAgaW1wb3J0czogW1xyXG4gICAgICAgIENvbW1vbk1vZHVsZVxyXG4gICAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTmd0RHJvcGRvd25Nb2R1bGUgeyB9XHJcbiJdfQ==