ngx-sp-infra 0.0.0

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 (200) hide show
  1. package/.angular/cache/16.2.0/ng-packagr/content-v2/sha512/2a/a3/eba6ea21e2e566c49202226aa3c1a4d439fa0a2c077374e48d864f20f5f804dbd931f042ddaa359fd35903a0bd3663a223e24dc11e1ec44501cc688a0a9c +1 -0
  2. package/.angular/cache/16.2.0/ng-packagr/content-v2/sha512/46/44/91b55887c08130e8014b3dbe56b69c0c29f4e127bceafcd610165f4c8e77fefa799ab68c415c1b45cc4fa114565650f3fc3c258e1dc7b792935cbee43fa7 +1 -0
  3. package/.angular/cache/16.2.0/ng-packagr/content-v2/sha512/7e/62/f8e6238b8f05aeaee2346bcaeda2226be7ab048d3b15e3dbbdf37170d9d7fade0fdfc6cc265d1ecc1b47509c962115d0d4b9a503907d6790c632e191001b +1 -0
  4. package/.angular/cache/16.2.0/ng-packagr/content-v2/sha512/8d/53/ad58764bc240411378ae1c47c0c20525da378a3b143795a11bc3fdbf6c9cde6fb2de6c3947d673d5872b9ce205d6274114b3b4dfd27609a636df7fd0b600 +1 -0
  5. package/.angular/cache/16.2.0/ng-packagr/content-v2/sha512/9e/70/9fc33090191a9df303901910a34f5d1cc7ea38ac92e21006bf923a814a4dffe9ad5b7357989f95d4e371cd00318c29339ec3e935832e84f3571ba0ed5f25 +1 -0
  6. package/.angular/cache/16.2.0/ng-packagr/content-v2/sha512/a1/3a/6a6f351adef4b7c8b7d643b092ca26e0ceeb2a285456285f866504493c9c7db8d420d3a4f282c699a11f2f9933c828c8f8388f28e96372408d7b456f32a1 +1 -0
  7. package/.angular/cache/16.2.0/ng-packagr/content-v2/sha512/d3/e3/2852d10551b620a4dfaabb1268bf0ac681e206bfb66451e18ac43a2e5c7cdc8a75291e3a1a4038129f3e40cc11317edffe8434d7110d9579585a25843e15 +1 -0
  8. package/.angular/cache/16.2.0/ng-packagr/content-v2/sha512/f2/ee/05ff4c2260f161b6295a8507440a1b86c0f666f313866e5bf1de6829ae5fe384d6612d732d09c815fe515bd3d6379ed5f8136cf4a4e228b322309840240e +1 -0
  9. package/.angular/cache/16.2.0/ng-packagr/content-v2/sha512/fe/15/fb0370939f075c14617e0d5fd8411f76edb53e439e19683e5c4554ae7cabd0387c922f6ec6893ced3321ed77df2c851b82eea6a70b38b7396f68493eea19 +1 -0
  10. package/.angular/cache/16.2.0/ng-packagr/index-v5/10/17/ae308ad3e0cad0afd27bf9eafe0177fdb23b463e70e0dd30d23c117517f6 +2 -0
  11. package/.angular/cache/16.2.0/ng-packagr/index-v5/14/18/88eabde022c32e7a38011f4ab6f7945e52f018be1abbe6a96864f8f9e22c +2 -0
  12. package/.angular/cache/16.2.0/ng-packagr/index-v5/1c/b7/dcd00bf2f1de70eab7d9e1d9601fbd87f49d46c7b49671d81ccd4b20b3f1 +2 -0
  13. package/.angular/cache/16.2.0/ng-packagr/index-v5/4b/31/217b5311dae6305f9b5dc82062276c77f272d61fc3e27c2df5eb0d6b1fb7 +2 -0
  14. package/.angular/cache/16.2.0/ng-packagr/index-v5/6a/b0/e5091f9ee02b3fcac9821e92cc5113d6b0593bd8bacfb5cbac7dfca306c3 +2 -0
  15. package/.angular/cache/16.2.0/ng-packagr/index-v5/9b/66/70a7c5990683795072c8b98eb25407b36f55f8efa8d2e0bdef67a8e989ab +2 -0
  16. package/.angular/cache/16.2.0/ng-packagr/index-v5/a6/8b/af2670adca8f5d06d3d9577ffad4449e4897eaf85de2f4e7f43f93934a16 +2 -0
  17. package/.angular/cache/16.2.0/ng-packagr/index-v5/da/da/502cfd37a0e9e7f413a569ccf28dc682f9e942ec5e460c93c1dd7c4e531f +3 -0
  18. package/.angular/cache/16.2.0/ng-packagr/index-v5/f3/8b/4e00bb8eddd473ae09b0b5dee39fa8416aee7b659a770d18c767e5027992 +2 -0
  19. package/.editorconfig +16 -0
  20. package/README.md +27 -0
  21. package/angular.json +41 -0
  22. package/dist/ngx-sp-infra/README.md +12 -0
  23. package/dist/ngx-sp-infra/esm2022/lib/infra.module.mjs +137 -0
  24. package/dist/ngx-sp-infra/esm2022/lib/message/alert/alert.component.mjs +32 -0
  25. package/dist/ngx-sp-infra/esm2022/lib/message/confirm/confirm.component.mjs +52 -0
  26. package/dist/ngx-sp-infra/esm2022/lib/message/confirm-modal/confirm-modal.component.mjs +72 -0
  27. package/dist/ngx-sp-infra/esm2022/lib/message/message-enum.mjs +23 -0
  28. package/dist/ngx-sp-infra/esm2022/lib/message/message.service.mjs +132 -0
  29. package/dist/ngx-sp-infra/esm2022/lib/message/save/save.component.mjs +46 -0
  30. package/dist/ngx-sp-infra/esm2022/lib/models/DownloadArquivos.mjs +3 -0
  31. package/dist/ngx-sp-infra/esm2022/lib/models/email-model.mjs +35 -0
  32. package/dist/ngx-sp-infra/esm2022/lib/models/ierror.mjs +2 -0
  33. package/dist/ngx-sp-infra/esm2022/lib/models/ipagination.mjs +2 -0
  34. package/dist/ngx-sp-infra/esm2022/lib/models/report-file.mjs +7 -0
  35. package/dist/ngx-sp-infra/esm2022/lib/models/ret-error.mjs +3 -0
  36. package/dist/ngx-sp-infra/esm2022/lib/models/ret-feedback-message.mjs +7 -0
  37. package/dist/ngx-sp-infra/esm2022/lib/models/ret-report-file.mjs +3 -0
  38. package/dist/ngx-sp-infra/esm2022/lib/pipes/cpf-cnpj.pipe.mjs +23 -0
  39. package/dist/ngx-sp-infra/esm2022/lib/pipes/currency.pipe.mjs +16 -0
  40. package/dist/ngx-sp-infra/esm2022/lib/pipes/to-url.pipe.mjs +32 -0
  41. package/dist/ngx-sp-infra/esm2022/lib/utils/check-url-and-method.service.mjs +70 -0
  42. package/dist/ngx-sp-infra/esm2022/lib/utils/form-utils.mjs +38 -0
  43. package/dist/ngx-sp-infra/esm2022/lib/utils/ip-service.service.mjs +22 -0
  44. package/dist/ngx-sp-infra/esm2022/lib/utils/settings.service.mjs +32 -0
  45. package/dist/ngx-sp-infra/esm2022/lib/utils/utils.mjs +335 -0
  46. package/dist/ngx-sp-infra/esm2022/lib/validators/cpf-cnpj.validator.directive.mjs +24 -0
  47. package/dist/ngx-sp-infra/esm2022/lib/validators/cpf-cnpj.validator.mjs +54 -0
  48. package/dist/ngx-sp-infra/esm2022/lib/widgets/breadcrumb/infra-breadcrumb/infra-breadcrumb.component.mjs +35 -0
  49. package/dist/ngx-sp-infra/esm2022/lib/widgets/breadcrumb/infra-breadcrumb-item/infra-breadcrumb-item.component.mjs +28 -0
  50. package/dist/ngx-sp-infra/esm2022/lib/widgets/breadcrumb/portalrh-breadcrumb/breadcrumb.component.mjs +21 -0
  51. package/dist/ngx-sp-infra/esm2022/lib/widgets/click-outside/clickoutside.directive.mjs +167 -0
  52. package/dist/ngx-sp-infra/esm2022/lib/widgets/combobox/combobox.component.mjs +545 -0
  53. package/dist/ngx-sp-infra/esm2022/lib/widgets/combobox/pipes/filter-by.pipe.mjs +44 -0
  54. package/dist/ngx-sp-infra/esm2022/lib/widgets/combobox/pipes/limit-to.pipe.mjs +19 -0
  55. package/dist/ngx-sp-infra/esm2022/lib/widgets/field-control-error/field-control-error.component.mjs +23 -0
  56. package/dist/ngx-sp-infra/esm2022/lib/widgets/field-error-message/field-error-message.component.mjs +33 -0
  57. package/dist/ngx-sp-infra/esm2022/lib/widgets/loading/loading.component.mjs +12 -0
  58. package/dist/ngx-sp-infra/esm2022/lib/widgets/loading-button/loading-button.component.mjs +15 -0
  59. package/dist/ngx-sp-infra/esm2022/lib/widgets/ordering/ordering.component.mjs +56 -0
  60. package/dist/ngx-sp-infra/esm2022/lib/widgets/svg-storage/svg-storage.component.mjs +94 -0
  61. package/dist/ngx-sp-infra/esm2022/lib/widgets/tree/models/ret-tree.mjs +3 -0
  62. package/dist/ngx-sp-infra/esm2022/lib/widgets/tree/models/tree-item.mjs +7 -0
  63. package/dist/ngx-sp-infra/esm2022/lib/widgets/tree/pipes/search-tree.pipe.mjs +17 -0
  64. package/dist/ngx-sp-infra/esm2022/lib/widgets/tree/tree.component.mjs +91 -0
  65. package/dist/ngx-sp-infra/esm2022/ngx-sp-infra.mjs +5 -0
  66. package/dist/ngx-sp-infra/esm2022/public-api.mjs +51 -0
  67. package/dist/ngx-sp-infra/fesm2022/ngx-sp-infra.mjs +2313 -0
  68. package/dist/ngx-sp-infra/fesm2022/ngx-sp-infra.mjs.map +1 -0
  69. package/dist/ngx-sp-infra/index.d.ts +5 -0
  70. package/dist/ngx-sp-infra/lib/infra.module.d.ts +32 -0
  71. package/dist/ngx-sp-infra/lib/message/alert/alert.component.d.ts +14 -0
  72. package/dist/ngx-sp-infra/lib/message/confirm/confirm.component.d.ts +22 -0
  73. package/dist/ngx-sp-infra/lib/message/confirm-modal/confirm-modal.component.d.ts +33 -0
  74. package/dist/ngx-sp-infra/lib/message/message-enum.d.ts +20 -0
  75. package/dist/ngx-sp-infra/lib/message/message.service.d.ts +31 -0
  76. package/dist/ngx-sp-infra/lib/message/save/save.component.d.ts +21 -0
  77. package/dist/ngx-sp-infra/lib/models/DownloadArquivos.d.ts +11 -0
  78. package/dist/ngx-sp-infra/lib/models/email-model.d.ts +30 -0
  79. package/dist/ngx-sp-infra/lib/models/ierror.d.ts +4 -0
  80. package/dist/ngx-sp-infra/lib/models/ipagination.d.ts +5 -0
  81. package/dist/ngx-sp-infra/lib/models/report-file.d.ts +4 -0
  82. package/dist/ngx-sp-infra/lib/models/ret-error.d.ts +5 -0
  83. package/dist/ngx-sp-infra/lib/models/ret-feedback-message.d.ts +7 -0
  84. package/dist/ngx-sp-infra/lib/models/ret-report-file.d.ts +7 -0
  85. package/dist/ngx-sp-infra/lib/pipes/cpf-cnpj.pipe.d.ts +7 -0
  86. package/dist/ngx-sp-infra/lib/pipes/currency.pipe.d.ts +7 -0
  87. package/dist/ngx-sp-infra/lib/pipes/to-url.pipe.d.ts +16 -0
  88. package/dist/ngx-sp-infra/lib/utils/check-url-and-method.service.d.ts +35 -0
  89. package/dist/ngx-sp-infra/lib/utils/form-utils.d.ts +7 -0
  90. package/dist/ngx-sp-infra/lib/utils/ip-service.service.d.ts +9 -0
  91. package/dist/ngx-sp-infra/lib/utils/settings.service.d.ts +9 -0
  92. package/dist/ngx-sp-infra/lib/utils/utils.d.ts +58 -0
  93. package/dist/ngx-sp-infra/lib/validators/cpf-cnpj.validator.d.ts +18 -0
  94. package/dist/ngx-sp-infra/lib/validators/cpf-cnpj.validator.directive.d.ts +7 -0
  95. package/dist/ngx-sp-infra/lib/widgets/breadcrumb/infra-breadcrumb/infra-breadcrumb.component.d.ts +29 -0
  96. package/dist/ngx-sp-infra/lib/widgets/breadcrumb/infra-breadcrumb-item/infra-breadcrumb-item.component.d.ts +14 -0
  97. package/dist/ngx-sp-infra/lib/widgets/breadcrumb/portalrh-breadcrumb/breadcrumb.component.d.ts +10 -0
  98. package/dist/ngx-sp-infra/lib/widgets/click-outside/clickoutside.directive.d.ts +40 -0
  99. package/dist/ngx-sp-infra/lib/widgets/combobox/combobox.component.d.ts +174 -0
  100. package/dist/ngx-sp-infra/lib/widgets/combobox/pipes/filter-by.pipe.d.ts +10 -0
  101. package/dist/ngx-sp-infra/lib/widgets/combobox/pipes/limit-to.pipe.d.ts +7 -0
  102. package/dist/ngx-sp-infra/lib/widgets/field-control-error/field-control-error.component.d.ts +12 -0
  103. package/dist/ngx-sp-infra/lib/widgets/field-error-message/field-error-message.component.d.ts +14 -0
  104. package/dist/ngx-sp-infra/lib/widgets/loading/loading.component.d.ts +6 -0
  105. package/dist/ngx-sp-infra/lib/widgets/loading-button/loading-button.component.d.ts +7 -0
  106. package/dist/ngx-sp-infra/lib/widgets/ordering/ordering.component.d.ts +18 -0
  107. package/dist/ngx-sp-infra/lib/widgets/svg-storage/svg-storage.component.d.ts +16 -0
  108. package/dist/ngx-sp-infra/lib/widgets/tree/models/ret-tree.d.ts +7 -0
  109. package/dist/ngx-sp-infra/lib/widgets/tree/models/tree-item.d.ts +11 -0
  110. package/dist/ngx-sp-infra/lib/widgets/tree/pipes/search-tree.pipe.d.ts +8 -0
  111. package/dist/ngx-sp-infra/lib/widgets/tree/tree.component.d.ts +20 -0
  112. package/dist/ngx-sp-infra/package.json +37 -0
  113. package/dist/ngx-sp-infra/public-api.d.ts +47 -0
  114. package/package.json +43 -0
  115. package/projects/ngx-sp-infra/README.md +12 -0
  116. package/projects/ngx-sp-infra/karma.conf.js +44 -0
  117. package/projects/ngx-sp-infra/ng-package.json +7 -0
  118. package/projects/ngx-sp-infra/package-lock.json +225 -0
  119. package/projects/ngx-sp-infra/package.json +18 -0
  120. package/projects/ngx-sp-infra/src/lib/infra.module.ts +85 -0
  121. package/projects/ngx-sp-infra/src/lib/message/alert/alert.component.html +6 -0
  122. package/projects/ngx-sp-infra/src/lib/message/alert/alert.component.scss +5 -0
  123. package/projects/ngx-sp-infra/src/lib/message/alert/alert.component.ts +39 -0
  124. package/projects/ngx-sp-infra/src/lib/message/confirm/confirm.component.html +15 -0
  125. package/projects/ngx-sp-infra/src/lib/message/confirm/confirm.component.scss +0 -0
  126. package/projects/ngx-sp-infra/src/lib/message/confirm/confirm.component.ts +52 -0
  127. package/projects/ngx-sp-infra/src/lib/message/confirm-modal/confirm-modal.component.html +39 -0
  128. package/projects/ngx-sp-infra/src/lib/message/confirm-modal/confirm-modal.component.scss +0 -0
  129. package/projects/ngx-sp-infra/src/lib/message/confirm-modal/confirm-modal.component.ts +73 -0
  130. package/projects/ngx-sp-infra/src/lib/message/message-enum.ts +21 -0
  131. package/projects/ngx-sp-infra/src/lib/message/message.service.ts +169 -0
  132. package/projects/ngx-sp-infra/src/lib/message/save/save.component.html +35 -0
  133. package/projects/ngx-sp-infra/src/lib/message/save/save.component.scss +110 -0
  134. package/projects/ngx-sp-infra/src/lib/message/save/save.component.ts +44 -0
  135. package/projects/ngx-sp-infra/src/lib/models/DownloadArquivos.ts +12 -0
  136. package/projects/ngx-sp-infra/src/lib/models/email-model.ts +33 -0
  137. package/projects/ngx-sp-infra/src/lib/models/ierror.ts +4 -0
  138. package/projects/ngx-sp-infra/src/lib/models/ipagination.ts +5 -0
  139. package/projects/ngx-sp-infra/src/lib/models/report-file.ts +4 -0
  140. package/projects/ngx-sp-infra/src/lib/models/ret-error.ts +6 -0
  141. package/projects/ngx-sp-infra/src/lib/models/ret-feedback-message.ts +8 -0
  142. package/projects/ngx-sp-infra/src/lib/models/ret-report-file.ts +8 -0
  143. package/projects/ngx-sp-infra/src/lib/pipes/cpf-cnpj.pipe.ts +21 -0
  144. package/projects/ngx-sp-infra/src/lib/pipes/currency.pipe.ts +13 -0
  145. package/projects/ngx-sp-infra/src/lib/pipes/to-url.pipe.ts +33 -0
  146. package/projects/ngx-sp-infra/src/lib/utils/check-url-and-method.service.ts +84 -0
  147. package/projects/ngx-sp-infra/src/lib/utils/form-utils.ts +50 -0
  148. package/projects/ngx-sp-infra/src/lib/utils/ip-service.service.ts +22 -0
  149. package/projects/ngx-sp-infra/src/lib/utils/settings.service.ts +32 -0
  150. package/projects/ngx-sp-infra/src/lib/utils/utils.ts +427 -0
  151. package/projects/ngx-sp-infra/src/lib/validators/cpf-cnpj.validator.directive.ts +14 -0
  152. package/projects/ngx-sp-infra/src/lib/validators/cpf-cnpj.validator.ts +74 -0
  153. package/projects/ngx-sp-infra/src/lib/widgets/breadcrumb/infra-breadcrumb/infra-breadcrumb.component.css +0 -0
  154. package/projects/ngx-sp-infra/src/lib/widgets/breadcrumb/infra-breadcrumb/infra-breadcrumb.component.html +3 -0
  155. package/projects/ngx-sp-infra/src/lib/widgets/breadcrumb/infra-breadcrumb/infra-breadcrumb.component.ts +34 -0
  156. package/projects/ngx-sp-infra/src/lib/widgets/breadcrumb/infra-breadcrumb-item/infra-breadcrumb-item.component.css +0 -0
  157. package/projects/ngx-sp-infra/src/lib/widgets/breadcrumb/infra-breadcrumb-item/infra-breadcrumb-item.component.html +1 -0
  158. package/projects/ngx-sp-infra/src/lib/widgets/breadcrumb/infra-breadcrumb-item/infra-breadcrumb-item.component.ts +29 -0
  159. package/projects/ngx-sp-infra/src/lib/widgets/breadcrumb/portalrh-breadcrumb/breadcrumb.component.css +0 -0
  160. package/projects/ngx-sp-infra/src/lib/widgets/breadcrumb/portalrh-breadcrumb/breadcrumb.component.html +5 -0
  161. package/projects/ngx-sp-infra/src/lib/widgets/breadcrumb/portalrh-breadcrumb/breadcrumb.component.ts +18 -0
  162. package/projects/ngx-sp-infra/src/lib/widgets/click-outside/clickoutside.directive.ts +183 -0
  163. package/projects/ngx-sp-infra/src/lib/widgets/combobox/combobox.component.html +40 -0
  164. package/projects/ngx-sp-infra/src/lib/widgets/combobox/combobox.component.scss +185 -0
  165. package/projects/ngx-sp-infra/src/lib/widgets/combobox/combobox.component.ts +637 -0
  166. package/projects/ngx-sp-infra/src/lib/widgets/combobox/combobox.service.ts +15 -0
  167. package/projects/ngx-sp-infra/src/lib/widgets/combobox/pipes/filter-by.pipe.ts +38 -0
  168. package/projects/ngx-sp-infra/src/lib/widgets/combobox/pipes/limit-to.pipe.ts +13 -0
  169. package/projects/ngx-sp-infra/src/lib/widgets/field-control-error/field-control-error.component.css +0 -0
  170. package/projects/ngx-sp-infra/src/lib/widgets/field-control-error/field-control-error.component.html +4 -0
  171. package/projects/ngx-sp-infra/src/lib/widgets/field-control-error/field-control-error.component.ts +18 -0
  172. package/projects/ngx-sp-infra/src/lib/widgets/field-error-message/field-error-message.component.css +0 -0
  173. package/projects/ngx-sp-infra/src/lib/widgets/field-error-message/field-error-message.component.html +4 -0
  174. package/projects/ngx-sp-infra/src/lib/widgets/field-error-message/field-error-message.component.ts +35 -0
  175. package/projects/ngx-sp-infra/src/lib/widgets/loading/loading.component.css +7 -0
  176. package/projects/ngx-sp-infra/src/lib/widgets/loading/loading.component.html +4 -0
  177. package/projects/ngx-sp-infra/src/lib/widgets/loading/loading.component.ts +12 -0
  178. package/projects/ngx-sp-infra/src/lib/widgets/loading-button/loading-button.component.css +3 -0
  179. package/projects/ngx-sp-infra/src/lib/widgets/loading-button/loading-button.component.html +2 -0
  180. package/projects/ngx-sp-infra/src/lib/widgets/loading-button/loading-button.component.ts +13 -0
  181. package/projects/ngx-sp-infra/src/lib/widgets/ordering/ordering.component.html +23 -0
  182. package/projects/ngx-sp-infra/src/lib/widgets/ordering/ordering.component.scss +0 -0
  183. package/projects/ngx-sp-infra/src/lib/widgets/ordering/ordering.component.ts +50 -0
  184. package/projects/ngx-sp-infra/src/lib/widgets/svg-storage/svg-storage.component.html +728 -0
  185. package/projects/ngx-sp-infra/src/lib/widgets/svg-storage/svg-storage.component.scss +0 -0
  186. package/projects/ngx-sp-infra/src/lib/widgets/svg-storage/svg-storage.component.ts +105 -0
  187. package/projects/ngx-sp-infra/src/lib/widgets/tree/README.md +33 -0
  188. package/projects/ngx-sp-infra/src/lib/widgets/tree/models/ret-tree.ts +8 -0
  189. package/projects/ngx-sp-infra/src/lib/widgets/tree/models/tree-item.ts +11 -0
  190. package/projects/ngx-sp-infra/src/lib/widgets/tree/pipes/search-tree.pipe.ts +15 -0
  191. package/projects/ngx-sp-infra/src/lib/widgets/tree/tree.component.html +51 -0
  192. package/projects/ngx-sp-infra/src/lib/widgets/tree/tree.component.scss +57 -0
  193. package/projects/ngx-sp-infra/src/lib/widgets/tree/tree.component.ts +88 -0
  194. package/projects/ngx-sp-infra/src/public-api.ts +58 -0
  195. package/projects/ngx-sp-infra/src/test.ts +15 -0
  196. package/projects/ngx-sp-infra/tsconfig.lib.json +15 -0
  197. package/projects/ngx-sp-infra/tsconfig.lib.prod.json +10 -0
  198. package/projects/ngx-sp-infra/tsconfig.spec.json +17 -0
  199. package/sp-ng-infra-0.0.0.tgz +0 -0
  200. package/tsconfig.json +42 -0
@@ -0,0 +1,183 @@
1
+ import {
2
+ Directive,
3
+ ElementRef,
4
+ EventEmitter,
5
+ Inject,
6
+ Input,
7
+ NgZone,
8
+ OnChanges,
9
+ OnDestroy,
10
+ OnInit,
11
+ Output,
12
+ SimpleChanges,
13
+ } from '@angular/core';
14
+ import {DOCUMENT} from '@angular/common';
15
+
16
+ @Directive({selector: '[clickOutside]'})
17
+ export class ClickOutsideDirective implements OnInit, OnChanges, OnDestroy {
18
+
19
+ @Input() clickOutsideEnabled = true;
20
+
21
+ @Input() attachOutsideOnClick = false;
22
+ @Input() delayClickOutsideInit = false;
23
+ @Input() emitOnBlur = false;
24
+
25
+ @Input() exclude = '';
26
+ @Input() excludeBeforeClick = false;
27
+
28
+ @Input() clickOutsideEvents = '';
29
+
30
+ @Output() clickOutside: EventEmitter<Event> = new EventEmitter<Event>();
31
+
32
+ private _nodesExcluded: Array<HTMLElement> = [];
33
+ private _events: Array<string> = ['click'];
34
+
35
+ constructor(
36
+ private _el: ElementRef,
37
+ private _ngZone: NgZone,
38
+ @Inject(DOCUMENT) private document: Document) {
39
+ this._initOnClickBody = this._initOnClickBody.bind(this);
40
+ this._onClickBody = this._onClickBody.bind(this);
41
+ this._onWindowBlur = this._onWindowBlur.bind(this);
42
+ }
43
+
44
+ ngOnInit() {
45
+ this._init();
46
+ }
47
+
48
+ ngOnDestroy() {
49
+ this._removeClickOutsideListener();
50
+ this._removeAttachOutsideOnClickListener();
51
+ this._removeWindowBlurListener();
52
+ }
53
+
54
+ ngOnChanges(changes: SimpleChanges) {
55
+ if (changes['attachOutsideOnClick'] || changes['exclude'] || changes['emitOnBlur']) {
56
+ this._init();
57
+ }
58
+ }
59
+
60
+ private _init() {
61
+ if (this.clickOutsideEvents !== '') {
62
+ this._events = this.clickOutsideEvents.split(',').map(e => e.trim());
63
+ }
64
+
65
+ this._excludeCheck();
66
+
67
+ if (this.attachOutsideOnClick) {
68
+ this._initAttachOutsideOnClickListener();
69
+ } else {
70
+ this._initOnClickBody();
71
+ }
72
+
73
+ if (this.emitOnBlur) {
74
+ this._initWindowBlurListener();
75
+ }
76
+ }
77
+
78
+ private _initOnClickBody() {
79
+ if (this.delayClickOutsideInit) {
80
+ setTimeout(this._initClickOutsideListener.bind(this));
81
+ } else {
82
+ this._initClickOutsideListener();
83
+ }
84
+ }
85
+
86
+ private _excludeCheck() {
87
+ if (this.exclude) {
88
+ try {
89
+ const nodes = Array.from(this.document.querySelectorAll(this.exclude)) as Array<HTMLElement>;
90
+ if (nodes) {
91
+ this._nodesExcluded = nodes;
92
+ }
93
+ } catch (err) {
94
+ console.error('[ng-click-outside] Check your exclude selector syntax.', err);
95
+ }
96
+ }
97
+ }
98
+
99
+ private _onClickBody(ev: Event) {
100
+ if (!this.clickOutsideEnabled) {
101
+ return;
102
+ }
103
+
104
+ if (this.excludeBeforeClick) {
105
+ this._excludeCheck();
106
+ }
107
+
108
+ if (!this._el.nativeElement.contains(ev.target) && !this._shouldExclude(ev.target)) {
109
+ this._emit(ev);
110
+
111
+ if (this.attachOutsideOnClick) {
112
+ this._removeClickOutsideListener();
113
+ }
114
+ }
115
+ }
116
+
117
+ /**
118
+ * Resolves problem with outside click on iframe
119
+ * @see https://github.com/arkon/ng-click-outside/issues/32
120
+ */
121
+ private _onWindowBlur(ev: Event) {
122
+ setTimeout(() => {
123
+ if (!this.document.hidden) {
124
+ this._emit(ev);
125
+ }
126
+ });
127
+ }
128
+
129
+ private _emit(ev: Event) {
130
+ if (!this.clickOutsideEnabled) {
131
+ return;
132
+ }
133
+
134
+ this._ngZone.run(() => this.clickOutside.emit(ev));
135
+ }
136
+
137
+ private _shouldExclude(target: any): boolean {
138
+ for (let excludedNode of this._nodesExcluded) {
139
+ if (excludedNode.contains(target)) {
140
+ return true;
141
+ }
142
+ }
143
+
144
+ return false;
145
+ }
146
+
147
+ private _initClickOutsideListener() {
148
+ this._ngZone.runOutsideAngular(() => {
149
+ this._events.forEach(e => this.document.addEventListener(e, this._onClickBody));
150
+ });
151
+ }
152
+
153
+ private _removeClickOutsideListener() {
154
+ this._ngZone.runOutsideAngular(() => {
155
+ this._events.forEach(e => this.document.removeEventListener(e, this._onClickBody));
156
+ });
157
+ }
158
+
159
+ private _initAttachOutsideOnClickListener() {
160
+ this._ngZone.runOutsideAngular(() => {
161
+ this._events.forEach(e => this._el.nativeElement.addEventListener(e, this._initOnClickBody));
162
+ });
163
+ }
164
+
165
+ private _removeAttachOutsideOnClickListener() {
166
+ this._ngZone.runOutsideAngular(() => {
167
+ this._events.forEach(e => this._el.nativeElement.removeEventListener(e, this._initOnClickBody));
168
+ });
169
+ }
170
+
171
+ private _initWindowBlurListener() {
172
+ this._ngZone.runOutsideAngular(() => {
173
+ window.addEventListener('blur', this._onWindowBlur);
174
+ });
175
+ }
176
+
177
+ private _removeWindowBlurListener() {
178
+ this._ngZone.runOutsideAngular(() => {
179
+ window.removeEventListener('blur', this._onWindowBlur);
180
+ });
181
+ }
182
+
183
+ }
@@ -0,0 +1,40 @@
1
+ <div class="ngx-dropdown-container" tabindex="0">
2
+ <button type="button" tabindex="-1" class="ngx-dropdown-button" [ngClass]="{ 'ngx-disabled': disabled }"
3
+ [disabled]="disabled" (click)="toggleSelectDropdown()">
4
+ <span class="display-text">{{ selectedDisplayText }} </span>
5
+ <span class="nsdicon-angle-down"></span>
6
+ </button>
7
+ <div class="ngx-dropdown-list-container scroll-y" *ngIf="toggleDropdown" [style.maxHeight]="config.height">
8
+ <div class="search-container d-flex justify-content-between" *ngIf="config.search">
9
+ <input (change)="changeSearchText($event)" [style.direction]="config.inputDirection" name="search-text"
10
+ (input)="searchTextChanged()" [(ngModel)]="searchText" tabindex="-1" autocomplete="off" />
11
+ <label [ngClass]="{ active: searchText }">
12
+ <span class="nsdicon-search"></span>
13
+ {{ config.searchPlaceholder }}</label>
14
+ </div>
15
+ <ul class="selected-items">
16
+ <li class="d-flex flex-row" tabindex="-1" *ngFor="let selected of selectedItems; let i = index"
17
+ (click)="deselectItem(selected, i)">
18
+ <input type="checkbox" class="form-check nsdicon-close me-2" checked="true">
19
+ <div style="margin-top: 2px;">{{
20
+ config.displayFn
21
+ ? config.displayFn(selected)
22
+ : selected[config.displayKey] || selected
23
+ }}</div>
24
+ </li>
25
+ </ul>
26
+ <hr *ngIf="selectedItems.length > 0 && availableItems.length > 0" />
27
+ <ul class="available-items">
28
+ <li class="d-flex flex-row" #availableOption *ngFor="let item of availableItems | filterBy: searchText: config.searchOnKey
29
+ | limitTo: config.limitTo; let i = index" tabindex="-1"
30
+ [ngClass]="{ active: focusedItemIndex == i && !item.disabled, disabled: item.disabled }"
31
+ (click)="selectItem(item, i)">
32
+ <input type="checkbox" class="form-check nsdicon-close me-2">
33
+ <div style="margin-top: 2px;">
34
+ {{ config.displayFn ? config.displayFn(item) : item[config.displayKey] || item }}
35
+ </div>
36
+ </li>
37
+ <li *ngIf="showNotFound">{{ config.noResultsFound }}</li>
38
+ </ul>
39
+ </div>
40
+ </div>
@@ -0,0 +1,185 @@
1
+ .ngx-dropdown-container {
2
+ width: 100%;
3
+ position: relative;
4
+
5
+ button {
6
+ display: inline-block;
7
+ margin-bottom: 0;
8
+ font-weight: 400;
9
+ line-height: 1.42857143;
10
+ vertical-align: middle;
11
+ touch-action: manipulation;
12
+ cursor: pointer;
13
+ user-select: none;
14
+ border: 1px solid #ccc;
15
+ border-radius: 4px;
16
+ color: #333;
17
+ background-color: #fff;
18
+ white-space: nowrap;
19
+ overflow-x: hidden;
20
+ text-overflow: ellipsis;
21
+ text-align: left;
22
+
23
+ span {
24
+ display: inline;
25
+ vertical-align: middle;
26
+ }
27
+
28
+ .nsdicon-angle-down {
29
+ right: 5px;
30
+
31
+ &::before {
32
+ border-style: solid;
33
+ border-width: 0.1em 0.1em 0 0;
34
+ content: "";
35
+ display: inline-block;
36
+ height: 10px;
37
+ position: relative;
38
+ vertical-align: text-top;
39
+ width: 10px;
40
+ top: 0;
41
+ transform: rotate(135deg);
42
+ }
43
+
44
+ position: relative;
45
+ float: right;
46
+ }
47
+ }
48
+
49
+ .ngx-dropdown-button {
50
+ width: 100%;
51
+ min-height: 30px;
52
+ padding: 5px 10px 5px 10px;
53
+ background-color: white;
54
+
55
+ .display-text {
56
+ display: inline-block;
57
+ width: calc(100% - 20px);
58
+ }
59
+ }
60
+
61
+ .ngx-dropdown-list-container {
62
+ box-sizing: border-box;
63
+ border: 1px solid rgba(0, 0, 0, 0.15);
64
+ border-radius: 4px;
65
+ padding-left: 10px;
66
+ padding-right: 10px;
67
+ z-index: 999999999;
68
+ width: 100%;
69
+ background-clip: padding-box;
70
+ background: white;
71
+ position: absolute;
72
+ -webkit-box-shadow: 5px 5px 5px 0px rgba(0, 0, 0, 0.21);
73
+ -moz-box-shadow: 5px 5px 5px 0px rgba(0, 0, 0, 0.21);
74
+ box-shadow: 5px 5px 5px 0px rgba(0, 0, 0, 0.21);
75
+ overflow-y: auto;
76
+
77
+ .search-container {
78
+ position: relative;
79
+ padding-top: 10px;
80
+ margin-top: 5px;
81
+
82
+ input {
83
+ background-color: transparent;
84
+ border: none;
85
+ border-bottom: 1px solid #9e9e9e;
86
+ border-radius: 0;
87
+ outline: none;
88
+ height: 2rem;
89
+ width: 100%;
90
+ font-size: 13px;
91
+ margin: 0;
92
+ padding: 0;
93
+ box-shadow: none;
94
+ box-sizing: content-box;
95
+ transition: all 0.3s;
96
+
97
+ &:focus {
98
+ border-bottom: 1px solid #007bff;
99
+ }
100
+
101
+ &:focus+label {
102
+ transform: translateY(-2px) scale(0.8);
103
+ transform-origin: 0 0;
104
+ }
105
+ }
106
+
107
+ label {
108
+ color: #9e9e9e;
109
+ position: absolute;
110
+ top: 0;
111
+ left: 0;
112
+ height: 100%;
113
+ font-size: 1rem;
114
+ cursor: text;
115
+ -webkit-transition: -webkit-transform 0.2s ease-out;
116
+ transition: -webkit-transform 0.2s ease-out;
117
+ transition: transform 0.2s ease-out;
118
+ transition: transform 0.2s ease-out, -webkit-transform 0.2s ease-out;
119
+ -webkit-transform-origin: 0% 100%;
120
+ transform-origin: 0% 100%;
121
+ text-align: initial;
122
+ transform: translateY(12px);
123
+ pointer-events: none;
124
+
125
+ &.active {
126
+ transform: translateY(-2px) scale(0.8);
127
+ transform-origin: 0 0;
128
+ }
129
+ }
130
+ }
131
+
132
+ ul {
133
+ margin-top: 1rem;
134
+ margin-bottom: 1rem;
135
+ list-style-type: none;
136
+ padding-left: 0px;
137
+
138
+ &.selected-items {
139
+ li {
140
+ /* background-color: #337ab7; */
141
+ /* color: white; */
142
+ margin-bottom: 2px;
143
+
144
+ .nsdicon-close {
145
+ accent-color: #007bff;
146
+ font-weight: bold;
147
+ font-size: large;
148
+ }
149
+ }
150
+ }
151
+
152
+ &.available-items {
153
+ li.active {
154
+
155
+ background-color: #337ab7;
156
+ color: #ffff;
157
+ }
158
+ }
159
+
160
+ li {
161
+ font-size: inherit;
162
+ cursor: pointer;
163
+ display: block;
164
+ /* padding: 3px 20px; */
165
+ clear: both;
166
+ font-weight: 400;
167
+ line-height: 1.42857143;
168
+ color: #333;
169
+ white-space: normal;
170
+ }
171
+ }
172
+ }
173
+
174
+ .ngx-disabled {
175
+ pointer-events: none;
176
+ background-color: #e9ecef;
177
+ opacity: 1;
178
+ cursor: no-drop;
179
+ }
180
+ }
181
+
182
+ .scroll-y
183
+ {
184
+ max-width: 300px; overflow-y: scroll; overflow-x: hidden;
185
+ }