@inobeta/ui 18.0.1-build.1722007687

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 (369) hide show
  1. package/README.md +1 -0
  2. package/_index.scss +1 -0
  3. package/esm2022/inobeta-ui.mjs +5 -0
  4. package/esm2022/public_api.mjs +17 -0
  5. package/esm2022/src/app/inobeta-ui/core/filter.pipe.mjs +23 -0
  6. package/esm2022/src/app/inobeta-ui/core/index.mjs +2 -0
  7. package/esm2022/src/app/inobeta-ui/http/auth/guard.service.mjs +157 -0
  8. package/esm2022/src/app/inobeta-ui/http/auth/login.service.mjs +137 -0
  9. package/esm2022/src/app/inobeta-ui/http/auth/login.service.stub.spec.mjs +20 -0
  10. package/esm2022/src/app/inobeta-ui/http/auth/session.model.mjs +16 -0
  11. package/esm2022/src/app/inobeta-ui/http/http/auth.interceptor.mjs +79 -0
  12. package/esm2022/src/app/inobeta-ui/http/http/error.interceptor.mjs +76 -0
  13. package/esm2022/src/app/inobeta-ui/http/http/loader.interceptor.mjs +45 -0
  14. package/esm2022/src/app/inobeta-ui/http/http/loading-skeleton-container.component.mjs +36 -0
  15. package/esm2022/src/app/inobeta-ui/http/http/loading-skeleton.component.mjs +34 -0
  16. package/esm2022/src/app/inobeta-ui/http/http/loading-skeleton.directive.mjs +66 -0
  17. package/esm2022/src/app/inobeta-ui/http/http/loading-skeleton.directive.stub.spec.mjs +22 -0
  18. package/esm2022/src/app/inobeta-ui/http/http/messages.decorator.mjs +42 -0
  19. package/esm2022/src/app/inobeta-ui/http/http/role-check.directive.mjs +45 -0
  20. package/esm2022/src/app/inobeta-ui/http/http/spinner-loading.component.mjs +28 -0
  21. package/esm2022/src/app/inobeta-ui/http/http/spinner-loading.stub.spec.mjs +15 -0
  22. package/esm2022/src/app/inobeta-ui/http/http-test.module.mjs +35 -0
  23. package/esm2022/src/app/inobeta-ui/http/http.module.mjs +178 -0
  24. package/esm2022/src/app/inobeta-ui/http/index.mjs +26 -0
  25. package/esm2022/src/app/inobeta-ui/http/store/index.mjs +11 -0
  26. package/esm2022/src/app/inobeta-ui/http/store/loader/actions.mjs +7 -0
  27. package/esm2022/src/app/inobeta-ui/http/store/loader/interfaces.mjs +2 -0
  28. package/esm2022/src/app/inobeta-ui/http/store/loader/reducers.mjs +35 -0
  29. package/esm2022/src/app/inobeta-ui/http/store/loader/selectors.mjs +9 -0
  30. package/esm2022/src/app/inobeta-ui/http/store/session/actions.mjs +17 -0
  31. package/esm2022/src/app/inobeta-ui/http/store/session/effects.mjs +50 -0
  32. package/esm2022/src/app/inobeta-ui/http/store/session/interfaces.mjs +2 -0
  33. package/esm2022/src/app/inobeta-ui/http/store/session/reducers.mjs +12 -0
  34. package/esm2022/src/app/inobeta-ui/http/store/session/selectors.mjs +22 -0
  35. package/esm2022/src/app/inobeta-ui/http/translations.mjs +13 -0
  36. package/esm2022/src/app/inobeta-ui/hydration/actions.mjs +3 -0
  37. package/esm2022/src/app/inobeta-ui/hydration/effects.mjs +45 -0
  38. package/esm2022/src/app/inobeta-ui/hydration/index.mjs +21 -0
  39. package/esm2022/src/app/inobeta-ui/hydration/reducer.mjs +36 -0
  40. package/esm2022/src/app/inobeta-ui/storage/index.mjs +4 -0
  41. package/esm2022/src/app/inobeta-ui/storage/storage-test.module.mjs +23 -0
  42. package/esm2022/src/app/inobeta-ui/storage/storage.module.mjs +22 -0
  43. package/esm2022/src/app/inobeta-ui/storage/storage.service.mjs +105 -0
  44. package/esm2022/src/app/inobeta-ui/storage/storage.stub.spec.mjs +8 -0
  45. package/esm2022/src/app/inobeta-ui/translate/index.mjs +2 -0
  46. package/esm2022/src/app/inobeta-ui/translate/translate-loader.service.mjs +37 -0
  47. package/esm2022/src/app/inobeta-ui/ui/breadcrumb/breadcrumb.component.mjs +63 -0
  48. package/esm2022/src/app/inobeta-ui/ui/breadcrumb/breadcrumb.module.mjs +44 -0
  49. package/esm2022/src/app/inobeta-ui/ui/breadcrumb/index.mjs +4 -0
  50. package/esm2022/src/app/inobeta-ui/ui/breadcrumb/material-breadcrumb/material-breadcrumb.component.mjs +16 -0
  51. package/esm2022/src/app/inobeta-ui/ui/data-export/data-export.module.mjs +92 -0
  52. package/esm2022/src/app/inobeta-ui/ui/data-export/data-export.service.mjs +83 -0
  53. package/esm2022/src/app/inobeta-ui/ui/data-export/formats/csv-export.service.mjs +42 -0
  54. package/esm2022/src/app/inobeta-ui/ui/data-export/formats/pdf-export.service.mjs +66 -0
  55. package/esm2022/src/app/inobeta-ui/ui/data-export/formats/xlsx-export.service.mjs +26 -0
  56. package/esm2022/src/app/inobeta-ui/ui/data-export/index.mjs +10 -0
  57. package/esm2022/src/app/inobeta-ui/ui/data-export/provider.mjs +3 -0
  58. package/esm2022/src/app/inobeta-ui/ui/data-export/table-data-export-dialog.component.mjs +113 -0
  59. package/esm2022/src/app/inobeta-ui/ui/data-export/table-data-export.component.mjs +58 -0
  60. package/esm2022/src/app/inobeta-ui/ui/data-export/transformer.mjs +68 -0
  61. package/esm2022/src/app/inobeta-ui/ui/forms/array/array.mjs +26 -0
  62. package/esm2022/src/app/inobeta-ui/ui/forms/controls/checkbox.mjs +5 -0
  63. package/esm2022/src/app/inobeta-ui/ui/forms/controls/dropdown.mjs +5 -0
  64. package/esm2022/src/app/inobeta-ui/ui/forms/controls/form-control-base.mjs +80 -0
  65. package/esm2022/src/app/inobeta-ui/ui/forms/controls/radio.mjs +5 -0
  66. package/esm2022/src/app/inobeta-ui/ui/forms/controls/textbox.mjs +5 -0
  67. package/esm2022/src/app/inobeta-ui/ui/forms/dynamic-form/dynamic-form.component.mjs +118 -0
  68. package/esm2022/src/app/inobeta-ui/ui/forms/dynamic-form-array/dynamic-form-array.component.mjs +46 -0
  69. package/esm2022/src/app/inobeta-ui/ui/forms/dynamic-form-control/dynamic-form-control.component.mjs +28 -0
  70. package/esm2022/src/app/inobeta-ui/ui/forms/form-control.service.mjs +57 -0
  71. package/esm2022/src/app/inobeta-ui/ui/forms/forms.module.mjs +36 -0
  72. package/esm2022/src/app/inobeta-ui/ui/forms/forms.pipes.mjs +41 -0
  73. package/esm2022/src/app/inobeta-ui/ui/forms/forms.types.mjs +2 -0
  74. package/esm2022/src/app/inobeta-ui/ui/forms/index.mjs +12 -0
  75. package/esm2022/src/app/inobeta-ui/ui/kai-filter/filter-button/filter-action-group.component.mjs +14 -0
  76. package/esm2022/src/app/inobeta-ui/ui/kai-filter/filter-button/filter-button.component.mjs +31 -0
  77. package/esm2022/src/app/inobeta-ui/ui/kai-filter/filter.component.mjs +149 -0
  78. package/esm2022/src/app/inobeta-ui/ui/kai-filter/filter.types.mjs +30 -0
  79. package/esm2022/src/app/inobeta-ui/ui/kai-filter/filters/base/filter-base.mjs +83 -0
  80. package/esm2022/src/app/inobeta-ui/ui/kai-filter/filters/boolean/boolean-filter.component.mjs +48 -0
  81. package/esm2022/src/app/inobeta-ui/ui/kai-filter/filters/date/filter-date.component.mjs +284 -0
  82. package/esm2022/src/app/inobeta-ui/ui/kai-filter/filters/number/filter-number.component.mjs +111 -0
  83. package/esm2022/src/app/inobeta-ui/ui/kai-filter/filters/search-bar/search-bar.component.mjs +99 -0
  84. package/esm2022/src/app/inobeta-ui/ui/kai-filter/filters/tag/filter-tag.component.mjs +106 -0
  85. package/esm2022/src/app/inobeta-ui/ui/kai-filter/filters/text/filter-text.component.mjs +98 -0
  86. package/esm2022/src/app/inobeta-ui/ui/kai-filter/filters.mjs +109 -0
  87. package/esm2022/src/app/inobeta-ui/ui/kai-filter/filters.module.mjs +175 -0
  88. package/esm2022/src/app/inobeta-ui/ui/kai-filter/index.mjs +14 -0
  89. package/esm2022/src/app/inobeta-ui/ui/kai-filter/tokens.mjs +3 -0
  90. package/esm2022/src/app/inobeta-ui/ui/kai-filter/translations.mjs +51 -0
  91. package/esm2022/src/app/inobeta-ui/ui/kai-table/action.mjs +48 -0
  92. package/esm2022/src/app/inobeta-ui/ui/kai-table/cells.mjs +212 -0
  93. package/esm2022/src/app/inobeta-ui/ui/kai-table/columns/action-column.mjs +23 -0
  94. package/esm2022/src/app/inobeta-ui/ui/kai-table/columns/column.mjs +260 -0
  95. package/esm2022/src/app/inobeta-ui/ui/kai-table/columns/date-column.mjs +93 -0
  96. package/esm2022/src/app/inobeta-ui/ui/kai-table/columns/index.mjs +7 -0
  97. package/esm2022/src/app/inobeta-ui/ui/kai-table/columns/number-column.mjs +112 -0
  98. package/esm2022/src/app/inobeta-ui/ui/kai-table/columns/selection-column.mjs +149 -0
  99. package/esm2022/src/app/inobeta-ui/ui/kai-table/columns/text-column.mjs +90 -0
  100. package/esm2022/src/app/inobeta-ui/ui/kai-table/index.mjs +13 -0
  101. package/esm2022/src/app/inobeta-ui/ui/kai-table/paginator-intl.mjs +53 -0
  102. package/esm2022/src/app/inobeta-ui/ui/kai-table/remote-data-source.mjs +73 -0
  103. package/esm2022/src/app/inobeta-ui/ui/kai-table/rowgroup.mjs +17 -0
  104. package/esm2022/src/app/inobeta-ui/ui/kai-table/sort-header.mjs +37 -0
  105. package/esm2022/src/app/inobeta-ui/ui/kai-table/store/const.mjs +2 -0
  106. package/esm2022/src/app/inobeta-ui/ui/kai-table/store/index.mjs +9 -0
  107. package/esm2022/src/app/inobeta-ui/ui/kai-table/store/url-state/actions.mjs +13 -0
  108. package/esm2022/src/app/inobeta-ui/ui/kai-table/store/url-state/effects.mjs +47 -0
  109. package/esm2022/src/app/inobeta-ui/ui/kai-table/store/url-state/interfaces.mjs +2 -0
  110. package/esm2022/src/app/inobeta-ui/ui/kai-table/store/url-state/reducers.mjs +56 -0
  111. package/esm2022/src/app/inobeta-ui/ui/kai-table/store/url-state/selectors.mjs +19 -0
  112. package/esm2022/src/app/inobeta-ui/ui/kai-table/table-data-source.mjs +450 -0
  113. package/esm2022/src/app/inobeta-ui/ui/kai-table/table-url.service.mjs +129 -0
  114. package/esm2022/src/app/inobeta-ui/ui/kai-table/table.component.mjs +260 -0
  115. package/esm2022/src/app/inobeta-ui/ui/kai-table/table.module.mjs +150 -0
  116. package/esm2022/src/app/inobeta-ui/ui/kai-table/table.types.mjs +2 -0
  117. package/esm2022/src/app/inobeta-ui/ui/kai-table/tokens.mjs +13 -0
  118. package/esm2022/src/app/inobeta-ui/ui/kai-table/translations.mjs +41 -0
  119. package/esm2022/src/app/inobeta-ui/ui/main-menu/components/main-menu-bar/main-menu-bar.component.mjs +120 -0
  120. package/esm2022/src/app/inobeta-ui/ui/main-menu/components/main-menu-bar/main-menu-bar.stub.spec.mjs +38 -0
  121. package/esm2022/src/app/inobeta-ui/ui/main-menu/components/main-menu-dialog/main-menu-dialog.component.mjs +48 -0
  122. package/esm2022/src/app/inobeta-ui/ui/main-menu/components/main-menu-expanded/header-footer-buttons.component.mjs +139 -0
  123. package/esm2022/src/app/inobeta-ui/ui/main-menu/components/main-menu-expanded/main-menu-expanded.component.mjs +41 -0
  124. package/esm2022/src/app/inobeta-ui/ui/main-menu/index.mjs +13 -0
  125. package/esm2022/src/app/inobeta-ui/ui/main-menu/main-menu-test.module.mjs +24 -0
  126. package/esm2022/src/app/inobeta-ui/ui/main-menu/main-menu.module.mjs +63 -0
  127. package/esm2022/src/app/inobeta-ui/ui/main-menu/models/main-menu-button.model.mjs +2 -0
  128. package/esm2022/src/app/inobeta-ui/ui/main-menu/models/main-menu-data-set.model.mjs +2 -0
  129. package/esm2022/src/app/inobeta-ui/ui/main-menu/models/main-menu-data.model.mjs +2 -0
  130. package/esm2022/src/app/inobeta-ui/ui/material-forms/controls/autocomplete.mjs +108 -0
  131. package/esm2022/src/app/inobeta-ui/ui/material-forms/controls/button.mjs +80 -0
  132. package/esm2022/src/app/inobeta-ui/ui/material-forms/controls/checkbox.mjs +54 -0
  133. package/esm2022/src/app/inobeta-ui/ui/material-forms/controls/datepicker.mjs +96 -0
  134. package/esm2022/src/app/inobeta-ui/ui/material-forms/controls/dropdown.mjs +149 -0
  135. package/esm2022/src/app/inobeta-ui/ui/material-forms/controls/label.mjs +50 -0
  136. package/esm2022/src/app/inobeta-ui/ui/material-forms/controls/padding.mjs +26 -0
  137. package/esm2022/src/app/inobeta-ui/ui/material-forms/controls/radio.mjs +61 -0
  138. package/esm2022/src/app/inobeta-ui/ui/material-forms/controls/slide-toggle.mjs +62 -0
  139. package/esm2022/src/app/inobeta-ui/ui/material-forms/controls/textarea.mjs +63 -0
  140. package/esm2022/src/app/inobeta-ui/ui/material-forms/controls/textbox.mjs +205 -0
  141. package/esm2022/src/app/inobeta-ui/ui/material-forms/index.mjs +18 -0
  142. package/esm2022/src/app/inobeta-ui/ui/material-forms/intl/datepicker.intl.mjs +73 -0
  143. package/esm2022/src/app/inobeta-ui/ui/material-forms/material-form/material-form.component.mjs +48 -0
  144. package/esm2022/src/app/inobeta-ui/ui/material-forms/material-form/material-form.stub.spec.mjs +65 -0
  145. package/esm2022/src/app/inobeta-ui/ui/material-forms/material-form-array/material-form-array.component.mjs +18 -0
  146. package/esm2022/src/app/inobeta-ui/ui/material-forms/material-form-control/material-form-control.component.mjs +64 -0
  147. package/esm2022/src/app/inobeta-ui/ui/material-forms/material-form-test.module.mjs +32 -0
  148. package/esm2022/src/app/inobeta-ui/ui/material-forms/material-form.module.mjs +168 -0
  149. package/esm2022/src/app/inobeta-ui/ui/material-forms/translations.mjs +26 -0
  150. package/esm2022/src/app/inobeta-ui/ui/modal/index.mjs +7 -0
  151. package/esm2022/src/app/inobeta-ui/ui/modal/modal-message.component.mjs +76 -0
  152. package/esm2022/src/app/inobeta-ui/ui/modal/modal-message.model.mjs +2 -0
  153. package/esm2022/src/app/inobeta-ui/ui/modal/modal-message.service.mjs +64 -0
  154. package/esm2022/src/app/inobeta-ui/ui/modal/modal-message.service.stub.spec.mjs +15 -0
  155. package/esm2022/src/app/inobeta-ui/ui/modal/modal-test.module.mjs +26 -0
  156. package/esm2022/src/app/inobeta-ui/ui/modal/modal.module.mjs +46 -0
  157. package/esm2022/src/app/inobeta-ui/ui/modal/translations.mjs +10 -0
  158. package/esm2022/src/app/inobeta-ui/ui/toast/index.mjs +5 -0
  159. package/esm2022/src/app/inobeta-ui/ui/toast/toast-test.module.mjs +23 -0
  160. package/esm2022/src/app/inobeta-ui/ui/toast/toast.module.mjs +21 -0
  161. package/esm2022/src/app/inobeta-ui/ui/toast/toast.service.mjs +54 -0
  162. package/esm2022/src/app/inobeta-ui/ui/toast/toast.service.stub.spec.mjs +4 -0
  163. package/esm2022/src/app/inobeta-ui/ui/uploader/index.mjs +3 -0
  164. package/esm2022/src/app/inobeta-ui/ui/uploader/uploader.component.mjs +41 -0
  165. package/esm2022/src/app/inobeta-ui/ui/uploader/uploader.module.mjs +42 -0
  166. package/esm2022/src/app/inobeta-ui/ui/views/components/default-table-view/default-table-view.component.mjs +20 -0
  167. package/esm2022/src/app/inobeta-ui/ui/views/components/index.mjs +6 -0
  168. package/esm2022/src/app/inobeta-ui/ui/views/components/table-view/table-view.component.mjs +37 -0
  169. package/esm2022/src/app/inobeta-ui/ui/views/components/table-view-group/table-view-group.component.mjs +186 -0
  170. package/esm2022/src/app/inobeta-ui/ui/views/components/view-dialog/view-dialog.component.mjs +110 -0
  171. package/esm2022/src/app/inobeta-ui/ui/views/components/view-list/view-list.component.mjs +43 -0
  172. package/esm2022/src/app/inobeta-ui/ui/views/index.mjs +5 -0
  173. package/esm2022/src/app/inobeta-ui/ui/views/store/actions.mjs +11 -0
  174. package/esm2022/src/app/inobeta-ui/ui/views/store/index.mjs +3 -0
  175. package/esm2022/src/app/inobeta-ui/ui/views/store/reducer.mjs +5 -0
  176. package/esm2022/src/app/inobeta-ui/ui/views/store/views/index.mjs +4 -0
  177. package/esm2022/src/app/inobeta-ui/ui/views/store/views/reducer.mjs +19 -0
  178. package/esm2022/src/app/inobeta-ui/ui/views/store/views/selectors.mjs +5 -0
  179. package/esm2022/src/app/inobeta-ui/ui/views/store/views/table-view.mjs +13 -0
  180. package/esm2022/src/app/inobeta-ui/ui/views/translations.mjs +34 -0
  181. package/esm2022/src/app/inobeta-ui/ui/views/view.module.mjs +98 -0
  182. package/esm2022/src/app/inobeta-ui/ui/views/view.service.mjs +137 -0
  183. package/fesm2022/inobeta-ui.mjs +8610 -0
  184. package/fesm2022/inobeta-ui.mjs.map +1 -0
  185. package/index.d.ts +5 -0
  186. package/package.json +55 -0
  187. package/public_api.d.ts +16 -0
  188. package/src/app/inobeta-ui/core/filter.pipe.d.ts +7 -0
  189. package/src/app/inobeta-ui/core/index.d.ts +1 -0
  190. package/src/app/inobeta-ui/http/auth/guard.service.d.ts +96 -0
  191. package/src/app/inobeta-ui/http/auth/login.service.d.ts +63 -0
  192. package/src/app/inobeta-ui/http/auth/login.service.stub.spec.d.ts +9 -0
  193. package/src/app/inobeta-ui/http/auth/session.model.d.ts +18 -0
  194. package/src/app/inobeta-ui/http/http/auth.interceptor.d.ts +21 -0
  195. package/src/app/inobeta-ui/http/http/error.interceptor.d.ts +18 -0
  196. package/src/app/inobeta-ui/http/http/loader.interceptor.d.ts +17 -0
  197. package/src/app/inobeta-ui/http/http/loading-skeleton-container.component.d.ts +13 -0
  198. package/src/app/inobeta-ui/http/http/loading-skeleton.component.d.ts +12 -0
  199. package/src/app/inobeta-ui/http/http/loading-skeleton.directive.d.ts +27 -0
  200. package/src/app/inobeta-ui/http/http/loading-skeleton.directive.stub.spec.d.ts +13 -0
  201. package/src/app/inobeta-ui/http/http/messages.decorator.d.ts +18 -0
  202. package/src/app/inobeta-ui/http/http/role-check.directive.d.ts +17 -0
  203. package/src/app/inobeta-ui/http/http/spinner-loading.component.d.ts +9 -0
  204. package/src/app/inobeta-ui/http/http/spinner-loading.stub.spec.d.ts +5 -0
  205. package/src/app/inobeta-ui/http/http-test.module.d.ts +8 -0
  206. package/src/app/inobeta-ui/http/http.module.d.ts +20 -0
  207. package/src/app/inobeta-ui/http/index.d.ts +23 -0
  208. package/src/app/inobeta-ui/http/store/index.d.ts +10 -0
  209. package/src/app/inobeta-ui/http/store/loader/actions.d.ts +17 -0
  210. package/src/app/inobeta-ui/http/store/loader/interfaces.d.ts +8 -0
  211. package/src/app/inobeta-ui/http/store/loader/reducers.d.ts +3 -0
  212. package/src/app/inobeta-ui/http/store/loader/selectors.d.ts +5 -0
  213. package/src/app/inobeta-ui/http/store/session/actions.d.ts +20 -0
  214. package/src/app/inobeta-ui/http/store/session/effects.d.ts +16 -0
  215. package/src/app/inobeta-ui/http/store/session/interfaces.d.ts +4 -0
  216. package/src/app/inobeta-ui/http/store/session/reducers.d.ts +3 -0
  217. package/src/app/inobeta-ui/http/store/session/selectors.d.ts +4 -0
  218. package/src/app/inobeta-ui/http/translations.d.ts +12 -0
  219. package/src/app/inobeta-ui/hydration/actions.d.ts +1 -0
  220. package/src/app/inobeta-ui/hydration/effects.d.ts +13 -0
  221. package/src/app/inobeta-ui/hydration/index.d.ts +13 -0
  222. package/src/app/inobeta-ui/hydration/reducer.d.ts +2 -0
  223. package/src/app/inobeta-ui/storage/index.d.ts +3 -0
  224. package/src/app/inobeta-ui/storage/storage-test.module.d.ts +6 -0
  225. package/src/app/inobeta-ui/storage/storage.module.d.ts +6 -0
  226. package/src/app/inobeta-ui/storage/storage.service.d.ts +62 -0
  227. package/src/app/inobeta-ui/storage/storage.stub.spec.d.ts +5 -0
  228. package/src/app/inobeta-ui/translate/index.d.ts +1 -0
  229. package/src/app/inobeta-ui/translate/translate-loader.service.d.ts +11 -0
  230. package/src/app/inobeta-ui/ui/_index.scss +87 -0
  231. package/src/app/inobeta-ui/ui/breadcrumb/breadcrumb.component.d.ts +28 -0
  232. package/src/app/inobeta-ui/ui/breadcrumb/breadcrumb.module.d.ts +12 -0
  233. package/src/app/inobeta-ui/ui/breadcrumb/index.d.ts +3 -0
  234. package/src/app/inobeta-ui/ui/breadcrumb/material-breadcrumb/material-breadcrumb.component.d.ts +6 -0
  235. package/src/app/inobeta-ui/ui/data-export/data-export.module.d.ts +20 -0
  236. package/src/app/inobeta-ui/ui/data-export/data-export.service.d.ts +35 -0
  237. package/src/app/inobeta-ui/ui/data-export/formats/csv-export.service.d.ts +19 -0
  238. package/src/app/inobeta-ui/ui/data-export/formats/pdf-export.service.d.ts +20 -0
  239. package/src/app/inobeta-ui/ui/data-export/formats/xlsx-export.service.d.ts +14 -0
  240. package/src/app/inobeta-ui/ui/data-export/index.d.ts +9 -0
  241. package/src/app/inobeta-ui/ui/data-export/provider.d.ts +15 -0
  242. package/src/app/inobeta-ui/ui/data-export/table-data-export-dialog.component.d.ts +23 -0
  243. package/src/app/inobeta-ui/ui/data-export/table-data-export.component.d.ts +13 -0
  244. package/src/app/inobeta-ui/ui/data-export/transformer.d.ts +50 -0
  245. package/src/app/inobeta-ui/ui/forms/array/array.d.ts +32 -0
  246. package/src/app/inobeta-ui/ui/forms/controls/checkbox.d.ts +4 -0
  247. package/src/app/inobeta-ui/ui/forms/controls/dropdown.d.ts +4 -0
  248. package/src/app/inobeta-ui/ui/forms/controls/form-control-base.d.ts +88 -0
  249. package/src/app/inobeta-ui/ui/forms/controls/radio.d.ts +4 -0
  250. package/src/app/inobeta-ui/ui/forms/controls/textbox.d.ts +4 -0
  251. package/src/app/inobeta-ui/ui/forms/dynamic-form/dynamic-form.component.d.ts +50 -0
  252. package/src/app/inobeta-ui/ui/forms/dynamic-form-array/dynamic-form-array.component.d.ts +18 -0
  253. package/src/app/inobeta-ui/ui/forms/dynamic-form-control/dynamic-form-control.component.d.ts +11 -0
  254. package/src/app/inobeta-ui/ui/forms/form-control.service.d.ts +13 -0
  255. package/src/app/inobeta-ui/ui/forms/forms.module.d.ts +12 -0
  256. package/src/app/inobeta-ui/ui/forms/forms.pipes.d.ts +20 -0
  257. package/src/app/inobeta-ui/ui/forms/forms.types.d.ts +3 -0
  258. package/src/app/inobeta-ui/ui/forms/index.d.ts +11 -0
  259. package/src/app/inobeta-ui/ui/kai-filter/filter-button/filter-action-group.component.d.ts +5 -0
  260. package/src/app/inobeta-ui/ui/kai-filter/filter-button/filter-button.component.d.ts +8 -0
  261. package/src/app/inobeta-ui/ui/kai-filter/filter.component.d.ts +41 -0
  262. package/src/app/inobeta-ui/ui/kai-filter/filter.types.d.ts +141 -0
  263. package/src/app/inobeta-ui/ui/kai-filter/filters/base/filter-base.d.ts +42 -0
  264. package/src/app/inobeta-ui/ui/kai-filter/filters/boolean/boolean-filter.component.d.ts +12 -0
  265. package/src/app/inobeta-ui/ui/kai-filter/filters/date/filter-date.component.d.ts +56 -0
  266. package/src/app/inobeta-ui/ui/kai-filter/filters/number/filter-number.component.d.ts +27 -0
  267. package/src/app/inobeta-ui/ui/kai-filter/filters/search-bar/search-bar.component.d.ts +16 -0
  268. package/src/app/inobeta-ui/ui/kai-filter/filters/tag/filter-tag.component.d.ts +28 -0
  269. package/src/app/inobeta-ui/ui/kai-filter/filters/text/filter-text.component.d.ts +21 -0
  270. package/src/app/inobeta-ui/ui/kai-filter/filters.d.ts +16 -0
  271. package/src/app/inobeta-ui/ui/kai-filter/filters.module.d.ts +35 -0
  272. package/src/app/inobeta-ui/ui/kai-filter/index.d.ts +13 -0
  273. package/src/app/inobeta-ui/ui/kai-filter/tokens.d.ts +2 -0
  274. package/src/app/inobeta-ui/ui/kai-filter/translations.d.ts +50 -0
  275. package/src/app/inobeta-ui/ui/kai-table/_table-theme.scss +123 -0
  276. package/src/app/inobeta-ui/ui/kai-table/action.d.ts +19 -0
  277. package/src/app/inobeta-ui/ui/kai-table/cells.d.ts +88 -0
  278. package/src/app/inobeta-ui/ui/kai-table/columns/action-column.d.ts +9 -0
  279. package/src/app/inobeta-ui/ui/kai-table/columns/column.d.ts +87 -0
  280. package/src/app/inobeta-ui/ui/kai-table/columns/date-column.d.ts +21 -0
  281. package/src/app/inobeta-ui/ui/kai-table/columns/index.d.ts +6 -0
  282. package/src/app/inobeta-ui/ui/kai-table/columns/number-column.d.ts +16 -0
  283. package/src/app/inobeta-ui/ui/kai-table/columns/selection-column.d.ts +26 -0
  284. package/src/app/inobeta-ui/ui/kai-table/columns/text-column.d.ts +16 -0
  285. package/src/app/inobeta-ui/ui/kai-table/index.d.ts +12 -0
  286. package/src/app/inobeta-ui/ui/kai-table/paginator-intl.d.ts +18 -0
  287. package/src/app/inobeta-ui/ui/kai-table/remote-data-source.d.ts +60 -0
  288. package/src/app/inobeta-ui/ui/kai-table/rowgroup.d.ts +8 -0
  289. package/src/app/inobeta-ui/ui/kai-table/sort-header.d.ts +20 -0
  290. package/src/app/inobeta-ui/ui/kai-table/store/const.d.ts +1 -0
  291. package/src/app/inobeta-ui/ui/kai-table/store/index.d.ts +8 -0
  292. package/src/app/inobeta-ui/ui/kai-table/store/url-state/actions.d.ts +59 -0
  293. package/src/app/inobeta-ui/ui/kai-table/store/url-state/effects.d.ts +15 -0
  294. package/src/app/inobeta-ui/ui/kai-table/store/url-state/interfaces.d.ts +16 -0
  295. package/src/app/inobeta-ui/ui/kai-table/store/url-state/reducers.d.ts +2 -0
  296. package/src/app/inobeta-ui/ui/kai-table/store/url-state/selectors.d.ts +3 -0
  297. package/src/app/inobeta-ui/ui/kai-table/table-data-source.d.ts +164 -0
  298. package/src/app/inobeta-ui/ui/kai-table/table-url.service.d.ts +51 -0
  299. package/src/app/inobeta-ui/ui/kai-table/table.component.d.ts +79 -0
  300. package/src/app/inobeta-ui/ui/kai-table/table.module.d.ts +30 -0
  301. package/src/app/inobeta-ui/ui/kai-table/table.types.d.ts +21 -0
  302. package/src/app/inobeta-ui/ui/kai-table/tokens.d.ts +22 -0
  303. package/src/app/inobeta-ui/ui/kai-table/translations.d.ts +40 -0
  304. package/src/app/inobeta-ui/ui/main-menu/_main-menu-theme.scss +226 -0
  305. package/src/app/inobeta-ui/ui/main-menu/components/main-menu-bar/main-menu-bar.component.d.ts +56 -0
  306. package/src/app/inobeta-ui/ui/main-menu/components/main-menu-bar/main-menu-bar.stub.spec.d.ts +18 -0
  307. package/src/app/inobeta-ui/ui/main-menu/components/main-menu-dialog/main-menu-dialog.component.d.ts +13 -0
  308. package/src/app/inobeta-ui/ui/main-menu/components/main-menu-expanded/header-footer-buttons.component.d.ts +9 -0
  309. package/src/app/inobeta-ui/ui/main-menu/components/main-menu-expanded/main-menu-expanded.component.d.ts +16 -0
  310. package/src/app/inobeta-ui/ui/main-menu/index.d.ts +10 -0
  311. package/src/app/inobeta-ui/ui/main-menu/main-menu-test.module.d.ts +8 -0
  312. package/src/app/inobeta-ui/ui/main-menu/main-menu.module.d.ts +16 -0
  313. package/src/app/inobeta-ui/ui/main-menu/models/main-menu-button.model.d.ts +8 -0
  314. package/src/app/inobeta-ui/ui/main-menu/models/main-menu-data-set.model.d.ts +14 -0
  315. package/src/app/inobeta-ui/ui/main-menu/models/main-menu-data.model.d.ts +4 -0
  316. package/src/app/inobeta-ui/ui/material-forms/controls/autocomplete.d.ts +14 -0
  317. package/src/app/inobeta-ui/ui/material-forms/controls/button.d.ts +28 -0
  318. package/src/app/inobeta-ui/ui/material-forms/controls/checkbox.d.ts +10 -0
  319. package/src/app/inobeta-ui/ui/material-forms/controls/datepicker.d.ts +17 -0
  320. package/src/app/inobeta-ui/ui/material-forms/controls/dropdown.d.ts +29 -0
  321. package/src/app/inobeta-ui/ui/material-forms/controls/label.d.ts +10 -0
  322. package/src/app/inobeta-ui/ui/material-forms/controls/padding.d.ts +10 -0
  323. package/src/app/inobeta-ui/ui/material-forms/controls/radio.d.ts +10 -0
  324. package/src/app/inobeta-ui/ui/material-forms/controls/slide-toggle.d.ts +10 -0
  325. package/src/app/inobeta-ui/ui/material-forms/controls/textarea.d.ts +17 -0
  326. package/src/app/inobeta-ui/ui/material-forms/controls/textbox.d.ts +21 -0
  327. package/src/app/inobeta-ui/ui/material-forms/index.d.ts +17 -0
  328. package/src/app/inobeta-ui/ui/material-forms/intl/datepicker.intl.d.ts +25 -0
  329. package/src/app/inobeta-ui/ui/material-forms/material-form/material-form.component.d.ts +26 -0
  330. package/src/app/inobeta-ui/ui/material-forms/material-form/material-form.stub.spec.d.ts +21 -0
  331. package/src/app/inobeta-ui/ui/material-forms/material-form-array/material-form-array.component.d.ts +6 -0
  332. package/src/app/inobeta-ui/ui/material-forms/material-form-control/material-form-control.component.d.ts +19 -0
  333. package/src/app/inobeta-ui/ui/material-forms/material-form-test.module.d.ts +9 -0
  334. package/src/app/inobeta-ui/ui/material-forms/material-form.module.d.ts +49 -0
  335. package/src/app/inobeta-ui/ui/material-forms/translations.d.ts +25 -0
  336. package/src/app/inobeta-ui/ui/modal/index.d.ts +6 -0
  337. package/src/app/inobeta-ui/ui/modal/modal-message.component.d.ts +10 -0
  338. package/src/app/inobeta-ui/ui/modal/modal-message.model.d.ts +32 -0
  339. package/src/app/inobeta-ui/ui/modal/modal-message.service.d.ts +49 -0
  340. package/src/app/inobeta-ui/ui/modal/modal-message.service.stub.spec.d.ts +6 -0
  341. package/src/app/inobeta-ui/ui/modal/modal-test.module.d.ts +7 -0
  342. package/src/app/inobeta-ui/ui/modal/modal.module.d.ts +11 -0
  343. package/src/app/inobeta-ui/ui/modal/translations.d.ts +9 -0
  344. package/src/app/inobeta-ui/ui/toast/_toast-theme.scss +56 -0
  345. package/src/app/inobeta-ui/ui/toast/index.d.ts +4 -0
  346. package/src/app/inobeta-ui/ui/toast/toast-test.module.d.ts +6 -0
  347. package/src/app/inobeta-ui/ui/toast/toast.module.d.ts +7 -0
  348. package/src/app/inobeta-ui/ui/toast/toast.service.d.ts +36 -0
  349. package/src/app/inobeta-ui/ui/toast/toast.service.stub.spec.d.ts +3 -0
  350. package/src/app/inobeta-ui/ui/uploader/index.d.ts +2 -0
  351. package/src/app/inobeta-ui/ui/uploader/uploader.component.d.ts +12 -0
  352. package/src/app/inobeta-ui/ui/uploader/uploader.module.d.ts +10 -0
  353. package/src/app/inobeta-ui/ui/views/components/default-table-view/default-table-view.component.d.ts +8 -0
  354. package/src/app/inobeta-ui/ui/views/components/index.d.ts +5 -0
  355. package/src/app/inobeta-ui/ui/views/components/table-view/table-view.component.d.ts +14 -0
  356. package/src/app/inobeta-ui/ui/views/components/table-view-group/table-view-group.component.d.ts +45 -0
  357. package/src/app/inobeta-ui/ui/views/components/view-dialog/view-dialog.component.d.ts +22 -0
  358. package/src/app/inobeta-ui/ui/views/components/view-list/view-list.component.d.ts +16 -0
  359. package/src/app/inobeta-ui/ui/views/index.d.ts +4 -0
  360. package/src/app/inobeta-ui/ui/views/store/actions.d.ts +27 -0
  361. package/src/app/inobeta-ui/ui/views/store/index.d.ts +2 -0
  362. package/src/app/inobeta-ui/ui/views/store/reducer.d.ts +7 -0
  363. package/src/app/inobeta-ui/ui/views/store/views/index.d.ts +3 -0
  364. package/src/app/inobeta-ui/ui/views/store/views/reducer.d.ts +3 -0
  365. package/src/app/inobeta-ui/ui/views/store/views/selectors.d.ts +4 -0
  366. package/src/app/inobeta-ui/ui/views/store/views/table-view.d.ts +22 -0
  367. package/src/app/inobeta-ui/ui/views/translations.d.ts +33 -0
  368. package/src/app/inobeta-ui/ui/views/view.module.d.ts +23 -0
  369. package/src/app/inobeta-ui/ui/views/view.service.d.ts +40 -0
@@ -0,0 +1,99 @@
1
+ import { Component, Input, booleanAttribute } from "@angular/core";
2
+ import { FormControl } from "@angular/forms";
3
+ import { debounceTime } from "rxjs";
4
+ import { IbFilterOperator } from "../../filter.types";
5
+ import { contains, none } from "../../filters";
6
+ import { IbFilterBase } from "../base/filter-base";
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@angular/common";
9
+ import * as i2 from "@angular/forms";
10
+ import * as i3 from "@angular/material/input";
11
+ import * as i4 from "@angular/material/form-field";
12
+ import * as i5 from "@angular/material/button";
13
+ import * as i6 from "@angular/material/icon";
14
+ import * as i7 from "@ngx-translate/core";
15
+ export class IbSearchBar extends IbFilterBase {
16
+ name = "ibSearchBar";
17
+ searchCriteria = new FormControl("", { nonNullable: true });
18
+ debounceTime = 0;
19
+ set async(value) {
20
+ if (value) {
21
+ this.debounceTime = 300;
22
+ }
23
+ else {
24
+ this.debounceTime = 0;
25
+ }
26
+ }
27
+ ngOnInit() {
28
+ super.ngOnInit();
29
+ this.searchCriteria.valueChanges
30
+ .pipe(debounceTime(this.debounceTime))
31
+ .subscribe(() => {
32
+ this.applyFilter();
33
+ });
34
+ }
35
+ build = () => this.searchCriteria.value ? contains(this.searchCriteria.value) : none();
36
+ toQuery() {
37
+ if (!this.searchCriteria.value) {
38
+ return;
39
+ }
40
+ return {
41
+ regex: `.*${this.searchCriteria.value}.*`,
42
+ like: `%${this.searchCriteria.value}%`,
43
+ condition: IbFilterOperator.CONTAINS,
44
+ text: this.searchCriteria.value,
45
+ };
46
+ }
47
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: IbSearchBar, deps: null, target: i0.ɵɵFactoryTarget.Component });
48
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.1.1", type: IbSearchBar, selector: "ib-search-bar", inputs: { async: ["async", "async", booleanAttribute] }, providers: [{ provide: IbFilterBase, useExisting: IbSearchBar }], usesInheritance: true, ngImport: i0, template: `<mat-form-field
49
+ [formGroup]="filter?.form"
50
+ subscriptSizing="dynamic"
51
+ style="width: 100%; padding-bottom: 0"
52
+ >
53
+ <mat-icon matPrefix>search</mat-icon>
54
+ <input
55
+ matInput
56
+ [formControlName]="name"
57
+ [placeholder]="'shared.ibFilter.search' | translate"
58
+ />
59
+ <button
60
+ *ngIf="searchCriteria.value"
61
+ matSuffix
62
+ mat-icon-button
63
+ (click)="clear()"
64
+ >
65
+ <mat-icon>close</mat-icon>
66
+ </button>
67
+ </mat-form-field>`, isInline: true, dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i4.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }] });
68
+ }
69
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: IbSearchBar, decorators: [{
70
+ type: Component,
71
+ args: [{
72
+ selector: "ib-search-bar",
73
+ template: `<mat-form-field
74
+ [formGroup]="filter?.form"
75
+ subscriptSizing="dynamic"
76
+ style="width: 100%; padding-bottom: 0"
77
+ >
78
+ <mat-icon matPrefix>search</mat-icon>
79
+ <input
80
+ matInput
81
+ [formControlName]="name"
82
+ [placeholder]="'shared.ibFilter.search' | translate"
83
+ />
84
+ <button
85
+ *ngIf="searchCriteria.value"
86
+ matSuffix
87
+ mat-icon-button
88
+ (click)="clear()"
89
+ >
90
+ <mat-icon>close</mat-icon>
91
+ </button>
92
+ </mat-form-field>`,
93
+ providers: [{ provide: IbFilterBase, useExisting: IbSearchBar }],
94
+ }]
95
+ }], propDecorators: { async: [{
96
+ type: Input,
97
+ args: [{ transform: booleanAttribute }]
98
+ }] } });
99
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2lub2JldGEtdWkvdWkva2FpLWZpbHRlci9maWx0ZXJzL3NlYXJjaC1iYXIvc2VhcmNoLWJhci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLGdCQUFnQixFQUFlLE1BQU0sb0JBQW9CLENBQUM7QUFDbkUsT0FBTyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7Ozs7Ozs7QUEwQm5ELE1BQU0sT0FBTyxXQUFZLFNBQVEsWUFBWTtJQUMzQyxJQUFJLEdBQUcsYUFBYSxDQUFDO0lBQ3JCLGNBQWMsR0FBRyxJQUFJLFdBQVcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNwRCxZQUFZLEdBQUcsQ0FBQyxDQUFDO0lBRXpCLElBQ0ksS0FBSyxDQUFDLEtBQWM7UUFDdEIsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLElBQUksQ0FBQyxZQUFZLEdBQUcsR0FBRyxDQUFDO1FBQzFCLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUM7UUFDeEIsQ0FBQztJQUNILENBQUM7SUFFRCxRQUFRO1FBQ04sS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWTthQUM3QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQzthQUNyQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3JCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELEtBQUssR0FBRyxHQUFHLEVBQUUsQ0FDWCxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBRTNFLE9BQU87UUFDTCxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUMvQixPQUFPO1FBQ1QsQ0FBQztRQUVELE9BQU87WUFDTCxLQUFLLEVBQUUsS0FBSyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssSUFBSTtZQUN6QyxJQUFJLEVBQUUsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssR0FBRztZQUN0QyxTQUFTLEVBQUUsZ0JBQWdCLENBQUMsUUFBUTtZQUNwQyxJQUFJLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLO1NBQ2hDLENBQUM7SUFDSixDQUFDO3VHQXJDVSxXQUFXOzJGQUFYLFdBQVcsaUVBS0YsZ0JBQWdCLGdCQVB6QixDQUFDLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLENBQUMsaURBcEJ0RDs7Ozs7Ozs7Ozs7Ozs7Ozs7OztvQkFtQlE7OzJGQUdQLFdBQVc7a0JBeEJ2QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxlQUFlO29CQUN6QixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7b0JBbUJRO29CQUNsQixTQUFTLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsV0FBVyxhQUFhLEVBQUUsQ0FBQztpQkFDakU7OEJBT0ssS0FBSztzQkFEUixLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgYm9vbGVhbkF0dHJpYnV0ZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lIH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IEliRmlsdGVyT3BlcmF0b3IsIEliVGV4dFF1ZXJ5IH0gZnJvbSBcIi4uLy4uL2ZpbHRlci50eXBlc1wiO1xuaW1wb3J0IHsgY29udGFpbnMsIG5vbmUgfSBmcm9tIFwiLi4vLi4vZmlsdGVyc1wiO1xuaW1wb3J0IHsgSWJGaWx0ZXJCYXNlIH0gZnJvbSBcIi4uL2Jhc2UvZmlsdGVyLWJhc2VcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcImliLXNlYXJjaC1iYXJcIixcbiAgdGVtcGxhdGU6IGA8bWF0LWZvcm0tZmllbGRcbiAgICBbZm9ybUdyb3VwXT1cImZpbHRlcj8uZm9ybVwiXG4gICAgc3Vic2NyaXB0U2l6aW5nPVwiZHluYW1pY1wiXG4gICAgc3R5bGU9XCJ3aWR0aDogMTAwJTsgcGFkZGluZy1ib3R0b206IDBcIlxuICA+XG4gICAgPG1hdC1pY29uIG1hdFByZWZpeD5zZWFyY2g8L21hdC1pY29uPlxuICAgIDxpbnB1dFxuICAgICAgbWF0SW5wdXRcbiAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwibmFtZVwiXG4gICAgICBbcGxhY2Vob2xkZXJdPVwiJ3NoYXJlZC5pYkZpbHRlci5zZWFyY2gnIHwgdHJhbnNsYXRlXCJcbiAgICAvPlxuICAgIDxidXR0b25cbiAgICAgICpuZ0lmPVwic2VhcmNoQ3JpdGVyaWEudmFsdWVcIlxuICAgICAgbWF0U3VmZml4XG4gICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgIChjbGljayk9XCJjbGVhcigpXCJcbiAgICA+XG4gICAgICA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxuICAgIDwvYnV0dG9uPlxuICA8L21hdC1mb3JtLWZpZWxkPmAsXG4gIHByb3ZpZGVyczogW3sgcHJvdmlkZTogSWJGaWx0ZXJCYXNlLCB1c2VFeGlzdGluZzogSWJTZWFyY2hCYXIgfV0sXG59KVxuZXhwb3J0IGNsYXNzIEliU2VhcmNoQmFyIGV4dGVuZHMgSWJGaWx0ZXJCYXNlIHtcbiAgbmFtZSA9IFwiaWJTZWFyY2hCYXJcIjtcbiAgc2VhcmNoQ3JpdGVyaWEgPSBuZXcgRm9ybUNvbnRyb2woXCJcIiwgeyBub25OdWxsYWJsZTogdHJ1ZSB9KTtcbiAgcHJpdmF0ZSBkZWJvdW5jZVRpbWUgPSAwO1xuXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICBzZXQgYXN5bmModmFsdWU6IGJvb2xlYW4pIHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuZGVib3VuY2VUaW1lID0gMzAwO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRlYm91bmNlVGltZSA9IDA7XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICB0aGlzLnNlYXJjaENyaXRlcmlhLnZhbHVlQ2hhbmdlc1xuICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKHRoaXMuZGVib3VuY2VUaW1lKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmFwcGx5RmlsdGVyKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIGJ1aWxkID0gKCkgPT5cbiAgICB0aGlzLnNlYXJjaENyaXRlcmlhLnZhbHVlID8gY29udGFpbnModGhpcy5zZWFyY2hDcml0ZXJpYS52YWx1ZSkgOiBub25lKCk7XG5cbiAgdG9RdWVyeSgpOiBJYlRleHRRdWVyeSB7XG4gICAgaWYgKCF0aGlzLnNlYXJjaENyaXRlcmlhLnZhbHVlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHJlZ2V4OiBgLioke3RoaXMuc2VhcmNoQ3JpdGVyaWEudmFsdWV9LipgLFxuICAgICAgbGlrZTogYCUke3RoaXMuc2VhcmNoQ3JpdGVyaWEudmFsdWV9JWAsXG4gICAgICBjb25kaXRpb246IEliRmlsdGVyT3BlcmF0b3IuQ09OVEFJTlMsXG4gICAgICB0ZXh0OiB0aGlzLnNlYXJjaENyaXRlcmlhLnZhbHVlLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,106 @@
1
+ import { Component, Input, ViewEncapsulation } from "@angular/core";
2
+ import { FormControl } from "@angular/forms";
3
+ import { eq, none, or } from "../../filters";
4
+ import { IbFilterBase } from "../base/filter-base";
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/forms";
7
+ import * as i2 from "@angular/material/input";
8
+ import * as i3 from "@angular/material/form-field";
9
+ import * as i4 from "@angular/material/button";
10
+ import * as i5 from "@angular/material/list";
11
+ import * as i6 from "../../filter-button/filter-button.component";
12
+ import * as i7 from "../../filter-button/filter-action-group.component";
13
+ import * as i8 from "@ngx-translate/core";
14
+ import * as i9 from "../../../../core/filter.pipe";
15
+ export class IbTagFilter extends IbFilterBase {
16
+ searchCriteria = new FormControl([], { nonNullable: true });
17
+ multiple = true;
18
+ set options(value) {
19
+ this.isSetByUser = true;
20
+ this.setOptions(value);
21
+ }
22
+ get options() {
23
+ return Array.from(this._options);
24
+ }
25
+ _options = new Set();
26
+ isSetByUser = false;
27
+ hasNullishValues = false;
28
+ query = new FormControl("", { nonNullable: true });
29
+ get displayLabel() {
30
+ if (this.rawValue?.length == 1) {
31
+ if (this.rawValue[0] === "__empty") {
32
+ return "shared.ibFilter.label.tag.empty";
33
+ }
34
+ return "shared.ibFilter.label.tag.singleItem";
35
+ }
36
+ if (this.rawValue?.length > 1) {
37
+ return "shared.ibFilter.label.tag.multipleItems";
38
+ }
39
+ return "";
40
+ }
41
+ get displayLabelParams() {
42
+ return {
43
+ item: this.displayValue,
44
+ length: this.rawValue?.length - 1,
45
+ };
46
+ }
47
+ get displayValue() {
48
+ if (!Array.isArray(this.rawValue)) {
49
+ return "";
50
+ }
51
+ return this.rawValue[0] === "__empty" ? this.rawValue[1] : this.rawValue[0];
52
+ }
53
+ initializeFromColumn(data) {
54
+ if (!this.isSetByUser) {
55
+ this.setOptions(data.map((x) => x[this.name]));
56
+ }
57
+ }
58
+ setOptions(options) {
59
+ this.hasNullishValues = options.some((a) => !a);
60
+ this._options = new Set(options
61
+ .map((a) => a)
62
+ .filter((a) => a)
63
+ .sort((a, b) => (a.toLowerCase() > b.toLowerCase() ? 1 : -1)));
64
+ }
65
+ applyFilter() {
66
+ this.filter.update();
67
+ this.button.closeMenu();
68
+ this.query.setValue("");
69
+ }
70
+ revertFilter() {
71
+ this.query.setValue("");
72
+ super.revertFilter();
73
+ }
74
+ build = () => {
75
+ if (!this.searchCriteria?.value.length) {
76
+ return none();
77
+ }
78
+ let items = this.searchCriteria.value
79
+ .filter((s) => s != "__empty")
80
+ .map((s) => eq(s));
81
+ if (this.searchCriteria.value.includes("__empty")) {
82
+ items = [...items, eq(null), eq(undefined), eq("")];
83
+ }
84
+ return or(items);
85
+ };
86
+ toQuery() {
87
+ const items = this.searchCriteria?.value
88
+ ? this.searchCriteria?.value.filter((s) => s != "__empty").map((s) => s)
89
+ : [];
90
+ return {
91
+ items,
92
+ joined: items.join(","),
93
+ };
94
+ }
95
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: IbTagFilter, deps: null, target: i0.ɵɵFactoryTarget.Component });
96
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.1", type: IbTagFilter, selector: "ib-tag-filter", inputs: { multiple: "multiple", options: "options" }, providers: [{ provide: IbFilterBase, useExisting: IbTagFilter }], usesInheritance: true, ngImport: i0, template: "<ib-filter-button [attr.data-cy]=\"'ib-tag-filter-' + name\">\n <span ib-filter-name><ng-content></ng-content></span>\n <span ib-filter-value>\n {{ displayLabel | translate : displayLabelParams }}\n </span>\n\n <mat-form-field class=\"ib-tag-filter-search\" subscriptSizing=\"dynamic\">\n <input matInput [formControl]=\"query\" [placeholder]=\"'shared.ibFilter.search' | translate\"/>\n </mat-form-field>\n <section [formGroup]=\"filter?.form\">\n <section class=\"ib-tag-filter\">\n <mat-selection-list\n [multiple]=\"multiple\"\n [formControlName]=\"name\"\n disableRipple=\"true\"\n [attr.data-cy]=\"'ib-tag-filter-' + name + '-options'\"\n >\n @if (hasNullishValues) {\n <mat-list-option\n togglePosition=\"before\"\n [value]=\"'__empty'\"\n >\n {{ 'shared.ibFilter.includeEmpty' | translate }}\n </mat-list-option>\n }\n @for (option of options | filterBy: query.value; track option) {\n <mat-list-option\n togglePosition=\"before\"\n [value]=\"option\"\n >\n {{ option }}\n </mat-list-option>\n } @empty {\n <mat-list-item disabled>{{ 'shared.ibFilter.noItems' | translate }}</mat-list-item>\n }\n </mat-selection-list>\n </section>\n </section>\n\n <ib-filter-action-group>\n <button mat-button (click)=\"clear()\" [disabled]=\"!isDirty\" [attr.data-cy]=\"'ib-filter-clear'\">\n {{ \"shared.ibFilter.clear\" | translate }}\n </button>\n <button mat-button color=\"primary\" (click)=\"applyFilter()\" [attr.data-cy]=\"'ib-filter-update'\">\n {{ \"shared.ibFilter.update\" | translate }}\n </button>\n </ib-filter-action-group>\n</ib-filter-button>\n", styles: ["section.ib-tag-filter{overflow-y:auto;min-height:40px;max-height:300px;--mdc-list-list-item-one-line-container-height: 32px;--mdc-list-list-item-two-line-container-height: 48px;--mdc-list-list-item-three-line-container-height: 72px;--mat-list-list-item-leading-icon-start-space: 16px;--mat-list-list-item-leading-icon-end-space: 32px}section.ib-tag-filter .mdc-list-item__start,section.ib-tag-filter .mdc-list-item__end{--mdc-radio-state-layer-size: 28px}section.ib-tag-filter .mat-mdc-list-item.mdc-list-item--with-leading-avatar.mdc-list-item--with-one-line,section.ib-tag-filter .mat-mdc-list-item.mdc-list-item--with-leading-checkbox.mdc-list-item--with-one-line,section.ib-tag-filter .mat-mdc-list-item.mdc-list-item--with-leading-icon.mdc-list-item--with-one-line{height:40px}section.ib-tag-filter .mat-mdc-list-item.mdc-list-item--with-leading-avatar.mdc-list-item--with-two-lines,section.ib-tag-filter .mat-mdc-list-item.mdc-list-item--with-leading-checkbox.mdc-list-item--with-two-lines,section.ib-tag-filter .mat-mdc-list-item.mdc-list-item--with-leading-icon.mdc-list-item--with-two-lines{height:56px}.ib-tag-filter-search{margin-top:-8px;--mat-form-field-container-height: 40px;--mat-form-field-filled-label-display: none;--mat-form-field-container-vertical-padding: 8px;--mat-form-field-filled-with-label-container-padding-top: 8px;--mat-form-field-filled-with-label-container-padding-bottom: 8px}span.ib-filter-value{display:table-cell;max-width:32ch;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.ib-tag-filter-name-hidden{display:none}\n"], dependencies: [{ kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i5.MatSelectionList, selector: "mat-selection-list", inputs: ["color", "compareWith", "multiple", "hideSingleSelectionIndicator", "disabled"], outputs: ["selectionChange"], exportAs: ["matSelectionList"] }, { kind: "component", type: i5.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "component", type: i5.MatListOption, selector: "mat-list-option", inputs: ["togglePosition", "checkboxPosition", "color", "value", "selected"], outputs: ["selectedChange"], exportAs: ["matListOption"] }, { kind: "component", type: i6.IbFilterButton, selector: "ib-filter-button" }, { kind: "directive", type: i7.IbFilterActionGroup, selector: "ib-filter-action-group" }, { kind: "pipe", type: i8.TranslatePipe, name: "translate" }, { kind: "pipe", type: i9.IbFilterPipe, name: "filterBy" }], encapsulation: i0.ViewEncapsulation.None });
97
+ }
98
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: IbTagFilter, decorators: [{
99
+ type: Component,
100
+ args: [{ selector: "ib-tag-filter", providers: [{ provide: IbFilterBase, useExisting: IbTagFilter }], encapsulation: ViewEncapsulation.None, template: "<ib-filter-button [attr.data-cy]=\"'ib-tag-filter-' + name\">\n <span ib-filter-name><ng-content></ng-content></span>\n <span ib-filter-value>\n {{ displayLabel | translate : displayLabelParams }}\n </span>\n\n <mat-form-field class=\"ib-tag-filter-search\" subscriptSizing=\"dynamic\">\n <input matInput [formControl]=\"query\" [placeholder]=\"'shared.ibFilter.search' | translate\"/>\n </mat-form-field>\n <section [formGroup]=\"filter?.form\">\n <section class=\"ib-tag-filter\">\n <mat-selection-list\n [multiple]=\"multiple\"\n [formControlName]=\"name\"\n disableRipple=\"true\"\n [attr.data-cy]=\"'ib-tag-filter-' + name + '-options'\"\n >\n @if (hasNullishValues) {\n <mat-list-option\n togglePosition=\"before\"\n [value]=\"'__empty'\"\n >\n {{ 'shared.ibFilter.includeEmpty' | translate }}\n </mat-list-option>\n }\n @for (option of options | filterBy: query.value; track option) {\n <mat-list-option\n togglePosition=\"before\"\n [value]=\"option\"\n >\n {{ option }}\n </mat-list-option>\n } @empty {\n <mat-list-item disabled>{{ 'shared.ibFilter.noItems' | translate }}</mat-list-item>\n }\n </mat-selection-list>\n </section>\n </section>\n\n <ib-filter-action-group>\n <button mat-button (click)=\"clear()\" [disabled]=\"!isDirty\" [attr.data-cy]=\"'ib-filter-clear'\">\n {{ \"shared.ibFilter.clear\" | translate }}\n </button>\n <button mat-button color=\"primary\" (click)=\"applyFilter()\" [attr.data-cy]=\"'ib-filter-update'\">\n {{ \"shared.ibFilter.update\" | translate }}\n </button>\n </ib-filter-action-group>\n</ib-filter-button>\n", styles: ["section.ib-tag-filter{overflow-y:auto;min-height:40px;max-height:300px;--mdc-list-list-item-one-line-container-height: 32px;--mdc-list-list-item-two-line-container-height: 48px;--mdc-list-list-item-three-line-container-height: 72px;--mat-list-list-item-leading-icon-start-space: 16px;--mat-list-list-item-leading-icon-end-space: 32px}section.ib-tag-filter .mdc-list-item__start,section.ib-tag-filter .mdc-list-item__end{--mdc-radio-state-layer-size: 28px}section.ib-tag-filter .mat-mdc-list-item.mdc-list-item--with-leading-avatar.mdc-list-item--with-one-line,section.ib-tag-filter .mat-mdc-list-item.mdc-list-item--with-leading-checkbox.mdc-list-item--with-one-line,section.ib-tag-filter .mat-mdc-list-item.mdc-list-item--with-leading-icon.mdc-list-item--with-one-line{height:40px}section.ib-tag-filter .mat-mdc-list-item.mdc-list-item--with-leading-avatar.mdc-list-item--with-two-lines,section.ib-tag-filter .mat-mdc-list-item.mdc-list-item--with-leading-checkbox.mdc-list-item--with-two-lines,section.ib-tag-filter .mat-mdc-list-item.mdc-list-item--with-leading-icon.mdc-list-item--with-two-lines{height:56px}.ib-tag-filter-search{margin-top:-8px;--mat-form-field-container-height: 40px;--mat-form-field-filled-label-display: none;--mat-form-field-container-vertical-padding: 8px;--mat-form-field-filled-with-label-container-padding-top: 8px;--mat-form-field-filled-with-label-container-padding-bottom: 8px}span.ib-filter-value{display:table-cell;max-width:32ch;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.ib-tag-filter-name-hidden{display:none}\n"] }]
101
+ }], propDecorators: { multiple: [{
102
+ type: Input
103
+ }], options: [{
104
+ type: Input
105
+ }] } });
106
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLXRhZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2lub2JldGEtdWkvdWkva2FpLWZpbHRlci9maWx0ZXJzL3RhZy9maWx0ZXItdGFnLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvaW5vYmV0YS11aS91aS9rYWktZmlsdGVyL2ZpbHRlcnMvdGFnL2ZpbHRlci10YWcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7Ozs7Ozs7O0FBU25ELE1BQU0sT0FBTyxXQUFZLFNBQVEsWUFBWTtJQUMzQyxjQUFjLEdBQUcsSUFBSSxXQUFXLENBQUMsRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFFbkQsUUFBUSxHQUFHLElBQUksQ0FBQztJQUN6QixJQUNJLE9BQU8sQ0FBQyxLQUFlO1FBQ3pCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUNELElBQUksT0FBTztRQUNULE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUNPLFFBQVEsR0FBZ0IsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUNsQyxXQUFXLEdBQUcsS0FBSyxD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UHZCLFNBQVM7K0JBQ0UsZUFBZSxhQUdkLENBQUMsRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLFdBQVcsYUFBYSxFQUFFLENBQUMsaUJBQ2pELGlCQUFpQixDQUFDLElBQUk7OEJBSzVCLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUYsT0FBTztzQkFEVixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7IEliRmlsdGVyRGVmLCBJYlRhZ1F1ZXJ5IH0gZnJvbSBcIi4uLy4uL2ZpbHRlci50eXBlc1wiO1xuaW1wb3J0IHsgZXEsIG5vbmUsIG9yIH0gZnJvbSBcIi4uLy4uL2ZpbHRlcnNcIjtcbmltcG9ydCB7IEliRmlsdGVyQmFzZSB9IGZyb20gXCIuLi9iYXNlL2ZpbHRlci1iYXNlXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJpYi10YWctZmlsdGVyXCIsXG4gIHRlbXBsYXRlVXJsOiBcIi4vZmlsdGVyLXRhZy5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZVVybHM6IFtcIi4vZmlsdGVyLXRhZy5jb21wb25lbnQuc2Nzc1wiXSxcbiAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBJYkZpbHRlckJhc2UsIHVzZUV4aXN0aW5nOiBJYlRhZ0ZpbHRlciB9XSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgSWJUYWdGaWx0ZXIgZXh0ZW5kcyBJYkZpbHRlckJhc2Uge1xuICBzZWFyY2hDcml0ZXJpYSA9IG5ldyBGb3JtQ29udHJvbChbXSwgeyBub25OdWxsYWJsZTogdHJ1ZSB9KTtcblxuICBASW5wdXQoKSBtdWx0aXBsZSA9IHRydWU7XG4gIEBJbnB1dCgpXG4gIHNldCBvcHRpb25zKHZhbHVlOiBzdHJpbmdbXSkge1xuICAgIHRoaXMuaXNTZXRCeVVzZXIgPSB0cnVlO1xuICAgIHRoaXMuc2V0T3B0aW9ucyh2YWx1ZSk7XG4gIH1cbiAgZ2V0IG9wdGlvbnMoKSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5fb3B0aW9ucyk7XG4gIH1cbiAgcHJpdmF0ZSBfb3B0aW9uczogU2V0PHN0cmluZz4gPSBuZXcgU2V0KCk7XG4gIHByaXZhdGUgaXNTZXRCeVVzZXIgPSBmYWxzZTtcblxuICBoYXNOdWxsaXNoVmFsdWVzID0gZmFsc2U7XG4gIHF1ZXJ5ID0gbmV3IEZvcm1Db250cm9sKFwiXCIsIHsgbm9uTnVsbGFibGU6IHRydWUgfSk7XG5cbiAgZ2V0IGRpc3BsYXlMYWJlbCgpIHtcbiAgICBpZiAodGhpcy5yYXdWYWx1ZT8ubGVuZ3RoID09IDEpIHtcbiAgICAgIGlmICh0aGlzLnJhd1ZhbHVlWzBdID09PSBcIl9fZW1wdHlcIikge1xuICAgICAgICByZXR1cm4gXCJzaGFyZWQuaWJGaWx0ZXIubGFiZWwudGFnLmVtcHR5XCI7XG4gICAgICB9XG4gICAgICByZXR1cm4gXCJzaGFyZWQuaWJGaWx0ZXIubGFiZWwudGFnLnNpbmdsZUl0ZW1cIjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5yYXdWYWx1ZT8ubGVuZ3RoID4gMSkge1xuICAgICAgcmV0dXJuIFwic2hhcmVkLmliRmlsdGVyLmxhYmVsLnRhZy5tdWx0aXBsZUl0ZW1zXCI7XG4gICAgfVxuXG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cblxuICBnZXQgZGlzcGxheUxhYmVsUGFyYW1zKCkge1xuICAgIHJldHVybiB7XG4gICAgICBpdGVtOiB0aGlzLmRpc3BsYXlWYWx1ZSxcbiAgICAgIGxlbmd0aDogdGhpcy5yYXdWYWx1ZT8ubGVuZ3RoIC0gMSxcbiAgICB9O1xuICB9XG5cbiAgZ2V0IGRpc3BsYXlWYWx1ZSgpIHtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkodGhpcy5yYXdWYWx1ZSkpIHtcbiAgICAgIHJldHVybiBcIlwiO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5yYXdWYWx1ZVswXSA9PT0gXCJfX2VtcHR5XCIgPyB0aGlzLnJhd1ZhbHVlWzFdIDogdGhpcy5yYXdWYWx1ZVswXTtcbiAgfVxuXG4gIGluaXRpYWxpemVGcm9tQ29sdW1uKGRhdGE6IGFueVtdKSB7XG4gICAgaWYgKCF0aGlzLmlzU2V0QnlVc2VyKSB7XG4gICAgICB0aGlzLnNldE9wdGlvbnMoZGF0YS5tYXAoKHgpID0+IHhbdGhpcy5uYW1lXSkpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0T3B0aW9ucyhvcHRpb25zOiBzdHJpbmdbXSkge1xuICAgIHRoaXMuaGFzTnVsbGlzaFZhbHVlcyA9IG9wdGlvbnMuc29tZSgoYSkgPT4gIWEpO1xuICAgIHRoaXMuX29wdGlvbnMgPSBuZXcgU2V0KFxuICAgICAgb3B0aW9uc1xuICAgICAgICAubWFwKChhKSA9PiBhKVxuICAgICAgICAuZmlsdGVyKChhKSA9PiBhKVxuICAgICAgICAuc29ydCgoYSwgYikgPT4gKGEudG9Mb3dlckNhc2UoKSA+IGIudG9Mb3dlckNhc2UoKSA/IDEgOiAtMSkpXG4gICAgKTtcbiAgfVxuXG4gIGFwcGx5RmlsdGVyKCkge1xuICAgIHRoaXMuZmlsdGVyLnVwZGF0ZSgpO1xuICAgIHRoaXMuYnV0dG9uLmNsb3NlTWVudSgpO1xuICAgIHRoaXMucXVlcnkuc2V0VmFsdWUoXCJcIik7XG4gIH1cblxuICByZXZlcnRGaWx0ZXIoKTogdm9pZCB7XG4gICAgdGhpcy5xdWVyeS5zZXRWYWx1ZShcIlwiKTtcbiAgICBzdXBlci5yZXZlcnRGaWx0ZXIoKTtcbiAgfVxuXG4gIGJ1aWxkID0gKCk6IEliRmlsdGVyRGVmID0+IHtcbiAgICBpZiAoIXRoaXMuc2VhcmNoQ3JpdGVyaWE/LnZhbHVlLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIG5vbmUoKTtcbiAgICB9XG5cbiAgICBsZXQgaXRlbXMgPSB0aGlzLnNlYXJjaENyaXRlcmlhLnZhbHVlXG4gICAgICAuZmlsdGVyKChzKSA9PiBzICE9IFwiX19lbXB0eVwiKVxuICAgICAgLm1hcCgocykgPT4gZXEocykpO1xuXG4gICAgaWYgKHRoaXMuc2VhcmNoQ3JpdGVyaWEudmFsdWUuaW5jbHVkZXMoXCJfX2VtcHR5XCIpKSB7XG4gICAgICBpdGVtcyA9IFsuLi5pdGVtcywgZXEobnVsbCksIGVxKHVuZGVmaW5lZCksIGVxKFwiXCIpXTtcbiAgICB9XG5cbiAgICByZXR1cm4gb3IoaXRlbXMpO1xuICB9O1xuXG4gIHRvUXVlcnkoKTogSWJUYWdRdWVyeSB7XG4gICAgY29uc3QgaXRlbXMgPSB0aGlzLnNlYXJjaENyaXRlcmlhPy52YWx1ZVxuICAgICAgPyB0aGlzLnNlYXJjaENyaXRlcmlhPy52YWx1ZS5maWx0ZXIoKHMpID0+IHMgIT0gXCJfX2VtcHR5XCIpLm1hcCgocykgPT4gcylcbiAgICAgIDogW107XG4gICAgcmV0dXJuIHtcbiAgICAgIGl0ZW1zLFxuICAgICAgam9pbmVkOiBpdGVtcy5qb2luKFwiLFwiKSxcbiAgICB9O1xuICB9XG59XG4iLCI8aWItZmlsdGVyLWJ1dHRvbiBbYXR0ci5kYXRhLWN5XT1cIidpYi10YWctZmlsdGVyLScgKyBuYW1lXCI+XG4gIDxzcGFuIGliLWZpbHRlci1uYW1lPjxuZy1jb250ZW50PjwvbmctY29udGVudD48L3NwYW4+XG4gIDxzcGFuIGliLWZpbHRlci12YWx1ZT5cbiAgICB7eyBkaXNwbGF5TGFiZWwgfCB0cmFuc2xhdGUgOiBkaXNwbGF5TGFiZWxQYXJhbXMgfX1cbiAgPC9zcGFuPlxuXG4gIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImliLXRhZy1maWx0ZXItc2VhcmNoXCIgc3Vic2NyaXB0U2l6aW5nPVwiZHluYW1pY1wiPlxuICAgIDxpbnB1dCBtYXRJbnB1dCBbZm9ybUNvbnRyb2xdPVwicXVlcnlcIiBbcGxhY2Vob2xkZXJdPVwiJ3NoYXJlZC5pYkZpbHRlci5zZWFyY2gnIHwgdHJhbnNsYXRlXCIvPlxuICA8L21hdC1mb3JtLWZpZWxkPlxuICA8c2VjdGlvbiBbZm9ybUdyb3VwXT1cImZpbHRlcj8uZm9ybVwiPlxuICAgIDxzZWN0aW9uIGNsYXNzPVwiaWItdGFnLWZpbHRlclwiPlxuICAgICAgPG1hdC1zZWxlY3Rpb24tbGlzdFxuICAgICAgICBbbXVsdGlwbGVdPVwibXVsdGlwbGVcIlxuICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cIm5hbWVcIlxuICAgICAgICBkaXNhYmxlUmlwcGxlPVwidHJ1ZVwiXG4gICAgICAgIFthdHRyLmRhdGEtY3ldPVwiJ2liLXRhZy1maWx0ZXItJyArIG5hbWUgKyAnLW9wdGlvbnMnXCJcbiAgICAgID5cbiAgICAgICAgQGlmIChoYXNOdWxsaXNoVmFsdWVzKSB7XG4gICAgICAgICAgPG1hdC1saXN0LW9wdGlvblxuICAgICAgICAgICAgdG9nZ2xlUG9zaXRpb249XCJiZWZvcmVcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cIidfX2VtcHR5J1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgJ3NoYXJlZC5pYkZpbHRlci5pbmNsdWRlRW1wdHknIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9tYXQtbGlzdC1vcHRpb24+XG4gICAgICAgIH1cbiAgICAgICAgQGZvciAob3B0aW9uIG9mIG9wdGlvbnMgfCBmaWx0ZXJCeTogcXVlcnkudmFsdWU7IHRyYWNrIG9wdGlvbikge1xuICAgICAgICAgIDxtYXQtbGlzdC1vcHRpb25cbiAgICAgICAgICAgIHRvZ2dsZVBvc2l0aW9uPVwiYmVmb3JlXCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJvcHRpb25cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IG9wdGlvbiB9fVxuICAgICAgICAgIDwvbWF0LWxpc3Qtb3B0aW9uPlxuICAgICAgICB9IEBlbXB0eSB7XG4gICAgICAgICAgPG1hdC1saXN0LWl0ZW0gZGlzYWJsZWQ+e3sgJ3NoYXJlZC5pYkZpbHRlci5ub0l0ZW1zJyB8IHRyYW5zbGF0ZSB9fTwvbWF0LWxpc3QtaXRlbT5cbiAgICAgICAgfVxuICAgICAgPC9tYXQtc2VsZWN0aW9uLWxpc3Q+XG4gICAgPC9zZWN0aW9uPlxuICA8L3NlY3Rpb24+XG5cbiAgPGliLWZpbHRlci1hY3Rpb24tZ3JvdXA+XG4gICAgPGJ1dHRvbiBtYXQtYnV0dG9uIChjbGljayk9XCJjbGVhcigpXCIgW2Rpc2FibGVkXT1cIiFpc0RpcnR5XCIgW2F0dHIuZGF0YS1jeV09XCInaWItZmlsdGVyLWNsZWFyJ1wiPlxuICAgICAge3sgXCJzaGFyZWQuaWJGaWx0ZXIuY2xlYXJcIiB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b24gbWF0LWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwiYXBwbHlGaWx0ZXIoKVwiIFthdHRyLmRhdGEtY3ldPVwiJ2liLWZpbHRlci11cGRhdGUnXCI+XG4gICAgICB7eyBcInNoYXJlZC5pYkZpbHRlci51cGRhdGVcIiB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvYnV0dG9uPlxuICA8L2liLWZpbHRlci1hY3Rpb24tZ3JvdXA+XG48L2liLWZpbHRlci1idXR0b24+XG4iXX0=
@@ -0,0 +1,98 @@
1
+ import { Component } from "@angular/core";
2
+ import { FormControl, FormGroup, Validators } from "@angular/forms";
3
+ import { IbFilterOperator } from "../../filter.types";
4
+ import { none } from "../../filters";
5
+ import { IbFilterBase } from "../base/filter-base";
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@angular/common";
8
+ import * as i2 from "@angular/forms";
9
+ import * as i3 from "@angular/material/input";
10
+ import * as i4 from "@angular/material/form-field";
11
+ import * as i5 from "@angular/material/button";
12
+ import * as i6 from "@angular/material/select";
13
+ import * as i7 from "@angular/material/core";
14
+ import * as i8 from "../../filter-button/filter-button.component";
15
+ import * as i9 from "../../filter-button/filter-action-group.component";
16
+ import * as i10 from "@ngx-translate/core";
17
+ export class IbTextFilter extends IbFilterBase {
18
+ searchCriteria = new FormGroup({
19
+ operator: new FormControl(IbFilterOperator.CONTAINS, {
20
+ validators: [Validators.required],
21
+ nonNullable: true,
22
+ }),
23
+ value: new FormControl(null, { nonNullable: true }),
24
+ });
25
+ operators = [
26
+ {
27
+ value: IbFilterOperator.EQUALS,
28
+ displayValue: "shared.ibFilter.eq",
29
+ },
30
+ {
31
+ value: IbFilterOperator.CONTAINS,
32
+ displayValue: "shared.ibFilter.contains",
33
+ },
34
+ {
35
+ value: IbFilterOperator.STARTS_WITH,
36
+ displayValue: "shared.ibFilter.startsWith",
37
+ },
38
+ {
39
+ value: IbFilterOperator.ENDS_WITH,
40
+ displayValue: "shared.ibFilter.endsWith",
41
+ },
42
+ ];
43
+ get displayCondition() {
44
+ const operator = this.rawValue.operator;
45
+ return this.operators.find((o) => o.value === operator)?.displayValue;
46
+ }
47
+ get displayValue() {
48
+ return this.rawValue.value;
49
+ }
50
+ clear() {
51
+ this.searchCriteria.setValue({
52
+ operator: IbFilterOperator.CONTAINS,
53
+ value: "",
54
+ });
55
+ this.filter?.update();
56
+ }
57
+ build() {
58
+ if (!this.searchCriteria.value.value) {
59
+ return none();
60
+ }
61
+ return {
62
+ operator: this.searchCriteria.value.operator,
63
+ value: this.searchCriteria.value.value,
64
+ };
65
+ }
66
+ toQuery() {
67
+ const text = this.searchCriteria.value.value;
68
+ if (!text) {
69
+ return;
70
+ }
71
+ let regex, like;
72
+ const condition = this.searchCriteria.value.operator;
73
+ if (condition == IbFilterOperator.CONTAINS) {
74
+ regex = `.*${text}.*`;
75
+ like = `%${text}%`;
76
+ }
77
+ if (condition == IbFilterOperator.STARTS_WITH) {
78
+ regex = `^${text}.*`;
79
+ like = `${text}%`;
80
+ }
81
+ if (condition == IbFilterOperator.ENDS_WITH) {
82
+ regex = `.*${text}$`;
83
+ like = `%${text}`;
84
+ }
85
+ if (condition == IbFilterOperator.EQUALS) {
86
+ regex = `^${text}$`;
87
+ like = text;
88
+ }
89
+ return { regex, like, condition, text };
90
+ }
91
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: IbTextFilter, deps: null, target: i0.ɵɵFactoryTarget.Component });
92
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.1", type: IbTextFilter, selector: "ib-text-filter", providers: [{ provide: IbFilterBase, useExisting: IbTextFilter }], usesInheritance: true, ngImport: i0, template: "<ib-filter-button [attr.data-cy]=\"'ib-text-filter-' + name\">\n <span ib-filter-name><ng-content></ng-content></span>\n <span ib-filter-value *ngIf=\"isDirty\">\n {{ displayCondition | translate | lowercase }} \"{{ displayValue }}\"\n </span>\n\n <section [formGroup]=\"filter?.form\" style=\"padding: 0.5em 1em 0 1em\">\n <section [formGroupName]=\"name\">\n <mat-form-field style=\"width: 100%\">\n <mat-label>{{ \"shared.ibFilter.condition\" | translate }}</mat-label>\n <mat-select formControlName=\"operator\" [attr.data-cy]=\"'ib-text-filter-' + name + '-condition'\">\n <mat-option *ngFor=\"let operator of operators\" [value]=\"operator.value\">\n {{ operator.displayValue | translate }}\n </mat-option>\n </mat-select>\n <mat-error>{{ \"shared.ibFilter.condition\" | translate }}\n {{ \"shared.ibKaiFilter.required\" | translate }}</mat-error>\n </mat-form-field>\n <mat-form-field style=\"width: 100%\">\n <mat-label>{{ \"shared.ibFilter.value\" | translate }}</mat-label>\n <input matInput formControlName=\"value\" [attr.data-cy]=\"'ib-text-filter-' + name + '-value'\" />\n <mat-error>{{ \"shared.ibFilter.value\" | translate }}\n {{ \"shared.ibKaiFilter.required\" | translate }}</mat-error>\n </mat-form-field>\n </section>\n </section>\n\n <ib-filter-action-group>\n <button mat-button (click)=\"clear()\" [disabled]=\"!isDirty\" [attr.data-cy]=\"'ib-filter-clear'\">\n {{ \"shared.ibFilter.clear\" | translate }}\n </button>\n <button mat-button color=\"primary\" (click)=\"applyFilter()\" [attr.data-cy]=\"'ib-filter-update'\">\n {{ \"shared.ibFilter.update\" | translate }}\n </button>\n </ib-filter-action-group>\n</ib-filter-button>", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i2.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "directive", type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i6.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i7.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i8.IbFilterButton, selector: "ib-filter-button" }, { kind: "directive", type: i9.IbFilterActionGroup, selector: "ib-filter-action-group" }, { kind: "pipe", type: i1.LowerCasePipe, name: "lowercase" }, { kind: "pipe", type: i10.TranslatePipe, name: "translate" }] });
93
+ }
94
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: IbTextFilter, decorators: [{
95
+ type: Component,
96
+ args: [{ selector: "ib-text-filter", providers: [{ provide: IbFilterBase, useExisting: IbTextFilter }], template: "<ib-filter-button [attr.data-cy]=\"'ib-text-filter-' + name\">\n <span ib-filter-name><ng-content></ng-content></span>\n <span ib-filter-value *ngIf=\"isDirty\">\n {{ displayCondition | translate | lowercase }} \"{{ displayValue }}\"\n </span>\n\n <section [formGroup]=\"filter?.form\" style=\"padding: 0.5em 1em 0 1em\">\n <section [formGroupName]=\"name\">\n <mat-form-field style=\"width: 100%\">\n <mat-label>{{ \"shared.ibFilter.condition\" | translate }}</mat-label>\n <mat-select formControlName=\"operator\" [attr.data-cy]=\"'ib-text-filter-' + name + '-condition'\">\n <mat-option *ngFor=\"let operator of operators\" [value]=\"operator.value\">\n {{ operator.displayValue | translate }}\n </mat-option>\n </mat-select>\n <mat-error>{{ \"shared.ibFilter.condition\" | translate }}\n {{ \"shared.ibKaiFilter.required\" | translate }}</mat-error>\n </mat-form-field>\n <mat-form-field style=\"width: 100%\">\n <mat-label>{{ \"shared.ibFilter.value\" | translate }}</mat-label>\n <input matInput formControlName=\"value\" [attr.data-cy]=\"'ib-text-filter-' + name + '-value'\" />\n <mat-error>{{ \"shared.ibFilter.value\" | translate }}\n {{ \"shared.ibKaiFilter.required\" | translate }}</mat-error>\n </mat-form-field>\n </section>\n </section>\n\n <ib-filter-action-group>\n <button mat-button (click)=\"clear()\" [disabled]=\"!isDirty\" [attr.data-cy]=\"'ib-filter-clear'\">\n {{ \"shared.ibFilter.clear\" | translate }}\n </button>\n <button mat-button color=\"primary\" (click)=\"applyFilter()\" [attr.data-cy]=\"'ib-filter-update'\">\n {{ \"shared.ibFilter.update\" | translate }}\n </button>\n </ib-filter-action-group>\n</ib-filter-button>" }]
97
+ }] });
98
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLXRleHQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9pbm9iZXRhLXVpL3VpL2thaS1maWx0ZXIvZmlsdGVycy90ZXh0L2ZpbHRlci10ZXh0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvaW5vYmV0YS11aS91aS9rYWktZmlsdGVyL2ZpbHRlcnMvdGV4dC9maWx0ZXItdGV4dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BFLE9BQU8sRUFBZSxnQkFBZ0IsRUFBZSxNQUFNLG9CQUFvQixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7Ozs7Ozs7Ozs7QUFPbkQsTUFBTSxPQUFPLFlBQWEsU0FBUSxZQUFZO0lBQzVDLGNBQWMsR0FBRyxJQUFJLFNBQVMsQ0FBQztRQUM3QixRQUFRLEVBQUUsSUFBSSxXQUFXLENBQW1CLGdCQUFnQixDQUFDLFFBQVEsRUFBRTtZQUNyRSxVQUFVLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDO1lBQ2pDLFdBQVcsRUFBRSxJQUFJO1NBQ2xCLENBQUM7UUFDRixLQUFLLEVBQUUsSUFBSSxXQUFXLENBQUMsSUFBSSxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxDQUFDO0tBQ3BELENBQUMsQ0FBQztJQUVILFNBQVMsR0FBRztRQUNWO1lBQ0UsS0FBSyxFQUFFLGdCQUFnQixDQUFDLE1BQU07WUFDOUIsWUFBWSxFQUFFLG9CQUFvQjtTQUNuQztR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RWYsQ0FBQyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsV0FBVyxjQUFjLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5pbXBvcnQgeyBJYkZpbHRlckRlZiwgSWJGaWx0ZXJPcGVyYXRvciwgSWJUZXh0UXVlcnkgfSBmcm9tIFwiLi4vLi4vZmlsdGVyLnR5cGVzXCI7XG5pbXBvcnQgeyBub25lIH0gZnJvbSBcIi4uLy4uL2ZpbHRlcnNcIjtcbmltcG9ydCB7IEliRmlsdGVyQmFzZSB9IGZyb20gXCIuLi9iYXNlL2ZpbHRlci1iYXNlXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJpYi10ZXh0LWZpbHRlclwiLFxuICB0ZW1wbGF0ZVVybDogXCJmaWx0ZXItdGV4dC5jb21wb25lbnQuaHRtbFwiLFxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IEliRmlsdGVyQmFzZSwgdXNlRXhpc3Rpbmc6IEliVGV4dEZpbHRlciB9XSxcbn0pXG5leHBvcnQgY2xhc3MgSWJUZXh0RmlsdGVyIGV4dGVuZHMgSWJGaWx0ZXJCYXNlIHtcbiAgc2VhcmNoQ3JpdGVyaWEgPSBuZXcgRm9ybUdyb3VwKHtcbiAgICBvcGVyYXRvcjogbmV3IEZvcm1Db250cm9sPEliRmlsdGVyT3BlcmF0b3I+KEliRmlsdGVyT3BlcmF0b3IuQ09OVEFJTlMsIHtcbiAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgIG5vbk51bGxhYmxlOiB0cnVlLFxuICAgIH0pLFxuICAgIHZhbHVlOiBuZXcgRm9ybUNvbnRyb2wobnVsbCwgeyBub25OdWxsYWJsZTogdHJ1ZSB9KSxcbiAgfSk7XG5cbiAgb3BlcmF0b3JzID0gW1xuICAgIHtcbiAgICAgIHZhbHVlOiBJYkZpbHRlck9wZXJhdG9yLkVRVUFMUyxcbiAgICAgIGRpc3BsYXlWYWx1ZTogXCJzaGFyZWQuaWJGaWx0ZXIuZXFcIixcbiAgICB9LFxuICAgIHtcbiAgICAgIHZhbHVlOiBJYkZpbHRlck9wZXJhdG9yLkNPTlRBSU5TLFxuICAgICAgZGlzcGxheVZhbHVlOiBcInNoYXJlZC5pYkZpbHRlci5jb250YWluc1wiLFxuICAgIH0sXG4gICAge1xuICAgICAgdmFsdWU6IEliRmlsdGVyT3BlcmF0b3IuU1RBUlRTX1dJVEgsXG4gICAgICBkaXNwbGF5VmFsdWU6IFwic2hhcmVkLmliRmlsdGVyLnN0YXJ0c1dpdGhcIixcbiAgICB9LFxuICAgIHtcbiAgICAgIHZhbHVlOiBJYkZpbHRlck9wZXJhdG9yLkVORFNfV0lUSCxcbiAgICAgIGRpc3BsYXlWYWx1ZTogXCJzaGFyZWQuaWJGaWx0ZXIuZW5kc1dpdGhcIixcbiAgICB9LFxuICBdO1xuXG4gIGdldCBkaXNwbGF5Q29uZGl0aW9uKCkge1xuICAgIGNvbnN0IG9wZXJhdG9yID0gdGhpcy5yYXdWYWx1ZS5vcGVyYXRvcjtcbiAgICByZXR1cm4gdGhpcy5vcGVyYXRvcnMuZmluZCgobykgPT4gby52YWx1ZSA9PT0gb3BlcmF0b3IpPy5kaXNwbGF5VmFsdWU7XG4gIH1cblxuICBnZXQgZGlzcGxheVZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLnJhd1ZhbHVlLnZhbHVlO1xuICB9XG5cbiAgY2xlYXIoKTogdm9pZCB7XG4gICAgdGhpcy5zZWFyY2hDcml0ZXJpYS5zZXRWYWx1ZSh7XG4gICAgICBvcGVyYXRvcjogSWJGaWx0ZXJPcGVyYXRvci5DT05UQUlOUyxcbiAgICAgIHZhbHVlOiBcIlwiLFxuICAgIH0pO1xuICAgIHRoaXMuZmlsdGVyPy51cGRhdGUoKTtcbiAgfVxuXG4gIGJ1aWxkKCk6IEliRmlsdGVyRGVmIHtcbiAgICBpZiAoIXRoaXMuc2VhcmNoQ3JpdGVyaWEudmFsdWUudmFsdWUpIHtcbiAgICAgIHJldHVybiBub25lKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIG9wZXJhdG9yOiB0aGlzLnNlYXJjaENyaXRlcmlhLnZhbHVlLm9wZXJhdG9yLFxuICAgICAgdmFsdWU6IHRoaXMuc2VhcmNoQ3JpdGVyaWEudmFsdWUudmFsdWUsXG4gICAgfTtcbiAgfVxuXG4gIHRvUXVlcnkoKTogSWJUZXh0UXVlcnkge1xuICAgIGNvbnN0IHRleHQgPSB0aGlzLnNlYXJjaENyaXRlcmlhLnZhbHVlLnZhbHVlO1xuICAgIGlmICghdGV4dCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCByZWdleDogc3RyaW5nLCBsaWtlOiBzdHJpbmc7XG4gICAgY29uc3QgY29uZGl0aW9uID0gdGhpcy5zZWFyY2hDcml0ZXJpYS52YWx1ZS5vcGVyYXRvcjtcbiAgICBpZiAoY29uZGl0aW9uID09IEliRmlsdGVyT3BlcmF0b3IuQ09OVEFJTlMpIHtcbiAgICAgIHJlZ2V4ID0gYC4qJHt0ZXh0fS4qYDtcbiAgICAgIGxpa2UgPSBgJSR7dGV4dH0lYDtcbiAgICB9XG5cbiAgICBpZiAoY29uZGl0aW9uID09IEliRmlsdGVyT3BlcmF0b3IuU1RBUlRTX1dJVEgpIHtcbiAgICAgIHJlZ2V4ID0gYF4ke3RleHR9LipgO1xuICAgICAgbGlrZSA9IGAke3RleHR9JWA7XG4gICAgfVxuXG4gICAgaWYgKGNvbmRpdGlvbiA9PSBJYkZpbHRlck9wZXJhdG9yLkVORFNfV0lUSCkge1xuICAgICAgcmVnZXggPSBgLioke3RleHR9JGA7XG4gICAgICBsaWtlID0gYCUke3RleHR9YDtcbiAgICB9XG5cbiAgICBpZiAoY29uZGl0aW9uID09IEliRmlsdGVyT3BlcmF0b3IuRVFVQUxTKSB7XG4gICAgICByZWdleCA9IGBeJHt0ZXh0fSRgO1xuICAgICAgbGlrZSA9IHRleHQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgcmVnZXgsIGxpa2UsIGNvbmRpdGlvbiwgdGV4dCB9O1xuICB9XG59XG4iLCI8aWItZmlsdGVyLWJ1dHRvbiBbYXR0ci5kYXRhLWN5XT1cIidpYi10ZXh0LWZpbHRlci0nICsgbmFtZVwiPlxuICA8c3BhbiBpYi1maWx0ZXItbmFtZT48bmctY29udGVudD48L25nLWNvbnRlbnQ+PC9zcGFuPlxuICA8c3BhbiBpYi1maWx0ZXItdmFsdWUgKm5nSWY9XCJpc0RpcnR5XCI+XG4gICAge3sgZGlzcGxheUNvbmRpdGlvbiB8IHRyYW5zbGF0ZSB8IGxvd2VyY2FzZSB9fSBcInt7IGRpc3BsYXlWYWx1ZSB9fVwiXG4gIDwvc3Bhbj5cblxuICA8c2VjdGlvbiBbZm9ybUdyb3VwXT1cImZpbHRlcj8uZm9ybVwiIHN0eWxlPVwicGFkZGluZzogMC41ZW0gMWVtIDAgMWVtXCI+XG4gICAgPHNlY3Rpb24gW2Zvcm1Hcm91cE5hbWVdPVwibmFtZVwiPlxuICAgICAgPG1hdC1mb3JtLWZpZWxkIHN0eWxlPVwid2lkdGg6IDEwMCVcIj5cbiAgICAgICAgPG1hdC1sYWJlbD57eyBcInNoYXJlZC5pYkZpbHRlci5jb25kaXRpb25cIiB8IHRyYW5zbGF0ZSB9fTwvbWF0LWxhYmVsPlxuICAgICAgICA8bWF0LXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJvcGVyYXRvclwiIFthdHRyLmRhdGEtY3ldPVwiJ2liLXRleHQtZmlsdGVyLScgKyBuYW1lICsgJy1jb25kaXRpb24nXCI+XG4gICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IG9wZXJhdG9yIG9mIG9wZXJhdG9yc1wiIFt2YWx1ZV09XCJvcGVyYXRvci52YWx1ZVwiPlxuICAgICAgICAgICAge3sgb3BlcmF0b3IuZGlzcGxheVZhbHVlIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgIDxtYXQtZXJyb3I+e3sgXCJzaGFyZWQuaWJGaWx0ZXIuY29uZGl0aW9uXCIgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICB7eyBcInNoYXJlZC5pYkthaUZpbHRlci5yZXF1aXJlZFwiIHwgdHJhbnNsYXRlIH19PC9tYXQtZXJyb3I+XG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgPG1hdC1mb3JtLWZpZWxkIHN0eWxlPVwid2lkdGg6IDEwMCVcIj5cbiAgICAgICAgPG1hdC1sYWJlbD57eyBcInNoYXJlZC5pYkZpbHRlci52YWx1ZVwiIHwgdHJhbnNsYXRlIH19PC9tYXQtbGFiZWw+XG4gICAgICAgIDxpbnB1dCBtYXRJbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJ2YWx1ZVwiIFthdHRyLmRhdGEtY3ldPVwiJ2liLXRleHQtZmlsdGVyLScgKyBuYW1lICsgJy12YWx1ZSdcIiAvPlxuICAgICAgICA8bWF0LWVycm9yPnt7IFwic2hhcmVkLmliRmlsdGVyLnZhbHVlXCIgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICB7eyBcInNoYXJlZC5pYkthaUZpbHRlci5yZXF1aXJlZFwiIHwgdHJhbnNsYXRlIH19PC9tYXQtZXJyb3I+XG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgIDwvc2VjdGlvbj5cbiAgPC9zZWN0aW9uPlxuXG4gIDxpYi1maWx0ZXItYWN0aW9uLWdyb3VwPlxuICAgIDxidXR0b24gbWF0LWJ1dHRvbiAoY2xpY2spPVwiY2xlYXIoKVwiIFtkaXNhYmxlZF09XCIhaXNEaXJ0eVwiIFthdHRyLmRhdGEtY3ldPVwiJ2liLWZpbHRlci1jbGVhcidcIj5cbiAgICAgIHt7IFwic2hhcmVkLmliRmlsdGVyLmNsZWFyXCIgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uIG1hdC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cImFwcGx5RmlsdGVyKClcIiBbYXR0ci5kYXRhLWN5XT1cIidpYi1maWx0ZXItdXBkYXRlJ1wiPlxuICAgICAge3sgXCJzaGFyZWQuaWJGaWx0ZXIudXBkYXRlXCIgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2J1dHRvbj5cbiAgPC9pYi1maWx0ZXItYWN0aW9uLWdyb3VwPlxuPC9pYi1maWx0ZXItYnV0dG9uPiJdfQ==
@@ -0,0 +1,109 @@
1
+ import { IbFilterOperator } from "./filter.types";
2
+ export const eq = (value) => ({
3
+ operator: IbFilterOperator.EQUALS,
4
+ value,
5
+ });
6
+ export const neq = (value) => ({
7
+ operator: IbFilterOperator.NOT_EQUALS,
8
+ value,
9
+ });
10
+ export const gt = (value) => ({
11
+ operator: IbFilterOperator.GREATER_THAN,
12
+ value,
13
+ });
14
+ export const gte = (value) => ({
15
+ operator: IbFilterOperator.GREATER_THAN_EQUALS,
16
+ value,
17
+ });
18
+ export const lt = (value) => ({
19
+ operator: IbFilterOperator.LESS_THAN,
20
+ value,
21
+ });
22
+ export const lte = (value) => ({
23
+ operator: IbFilterOperator.LESS_THAN_EQUALS,
24
+ value,
25
+ });
26
+ export const contains = (value) => ({
27
+ operator: IbFilterOperator.CONTAINS,
28
+ value,
29
+ });
30
+ export const ncontains = (value) => ({
31
+ operator: IbFilterOperator.NOT_CONTAINS,
32
+ value,
33
+ });
34
+ export const startsWith = (value) => ({
35
+ operator: IbFilterOperator.STARTS_WITH,
36
+ value,
37
+ });
38
+ export const endsWith = (value) => ({
39
+ operator: IbFilterOperator.ENDS_WITH,
40
+ value,
41
+ });
42
+ export const and = (value) => ({
43
+ operator: IbFilterOperator.AND,
44
+ value,
45
+ });
46
+ export const or = (value) => ({
47
+ operator: IbFilterOperator.OR,
48
+ value,
49
+ });
50
+ export const none = () => ({
51
+ operator: IbFilterOperator.NONE,
52
+ value: null,
53
+ });
54
+ export function applyFilter(filter, filterValue) {
55
+ if (!filter) {
56
+ return true;
57
+ }
58
+ if (!filter.operator) {
59
+ return true;
60
+ }
61
+ if (filter.operator === IbFilterOperator.OR) {
62
+ return filter.value.some((subFilter) => applyFilter(subFilter, filterValue));
63
+ }
64
+ if (filter.operator === IbFilterOperator.AND) {
65
+ return filter.value.every((subFilter) => applyFilter(subFilter, filterValue));
66
+ }
67
+ return evalOperation(filter.operator, filter.value, filterValue);
68
+ }
69
+ export function evalOperation(operation, value, filterValue) {
70
+ const valueType = typeof value;
71
+ const filterValueType = typeof filterValue;
72
+ if (filterValue instanceof Date) {
73
+ filterValue = filterValue.toISOString();
74
+ }
75
+ if (valueType == "string") {
76
+ value = value.trim().toLowerCase();
77
+ }
78
+ if (filterValueType == "string") {
79
+ filterValue = filterValue.trim().toLowerCase();
80
+ if (operation === IbFilterOperator.CONTAINS) {
81
+ return filterValue.indexOf(value) != -1;
82
+ }
83
+ if (operation === IbFilterOperator.NOT_CONTAINS) {
84
+ return filterValue.indexOf(value) === -1;
85
+ }
86
+ if (operation === IbFilterOperator.STARTS_WITH) {
87
+ return filterValue.startsWith(value);
88
+ }
89
+ if (operation === IbFilterOperator.ENDS_WITH) {
90
+ return filterValue.endsWith(value);
91
+ }
92
+ }
93
+ if (operation === IbFilterOperator.EQUALS) {
94
+ return filterValue === value;
95
+ }
96
+ if (operation === IbFilterOperator.GREATER_THAN) {
97
+ return filterValue > value;
98
+ }
99
+ if (operation === IbFilterOperator.GREATER_THAN_EQUALS) {
100
+ return filterValue >= value;
101
+ }
102
+ if (operation === IbFilterOperator.LESS_THAN) {
103
+ return filterValue < value;
104
+ }
105
+ if (operation === IbFilterOperator.LESS_THAN_EQUALS) {
106
+ return filterValue <= value;
107
+ }
108
+ }
109
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvaW5vYmV0YS11aS91aS9rYWktZmlsdGVyL2ZpbHRlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFlLGdCQUFnQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFL0QsTUFBTSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsS0FBSyxFQUFlLEVBQUUsQ0FBQyxDQUFDO0lBQ3pDLFFBQVEsRUFBRSxnQkFBZ0IsQ0FBQyxNQUFNO0lBQ2pDLEtBQUs7Q0FDTixDQUFDLENBQUM7QUFDSCxNQUFNLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxLQUFLLEVBQWUsRUFBRSxDQUFDLENBQUM7SUFDMUMsUUFBUSxFQUFFLGdCQUFnQixDQUFDLFVBQVU7SUFDckMsS0FBSztDQUNOLENBQUMsQ0FBQztBQUNILE1BQU0sQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLEtBQUssRUFBZSxFQUFFLENBQUMsQ0FBQztJQUN6QyxRQUFRLEVBQUUsZ0JBQWdCLENBQUMsWUFBWTtJQUN2QyxLQUFLO0NBQ04sQ0FBQyxDQUFDO0FBQ0gsTUFBTSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsS0FBSyxFQUFlLEVBQUUsQ0FBQyxDQUFDO0lBQzFDLFFBQVEsRUFBRSxnQkFBZ0IsQ0FBQyxtQkFBbUI7SUFDOUMsS0FBSztDQUNOLENBQUMsQ0FBQztBQUNILE1BQU0sQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLEtBQUssRUFBZSxFQUFFLENBQUMsQ0FBQztJQUN6QyxRQUFRLEVBQUUsZ0JBQWdCLENBQUMsU0FBUztJQUNwQyxLQUFLO0NBQ04sQ0FBQyxDQUFDO0FBQ0gsTUFBTSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsS0FBSyxFQUFlLEVBQUUsQ0FBQyxDQUFDO0lBQzFDLFFBQVEsRUFBRSxnQkFBZ0IsQ0FBQyxnQkFBZ0I7SUFDM0MsS0FBSztD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QUFLLGdCQUFnQixDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDcEQsT0FBTyxXQUFXLElBQUksS0FBSyxDQUFDO0lBQzlCLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSWJGaWx0ZXJEZWYsIEliRmlsdGVyT3BlcmF0b3IgfSBmcm9tIFwiLi9maWx0ZXIudHlwZXNcIjtcblxuZXhwb3J0IGNvbnN0IGVxID0gKHZhbHVlKTogSWJGaWx0ZXJEZWYgPT4gKHtcbiAgb3BlcmF0b3I6IEliRmlsdGVyT3BlcmF0b3IuRVFVQUxTLFxuICB2YWx1ZSxcbn0pO1xuZXhwb3J0IGNvbnN0IG5lcSA9ICh2YWx1ZSk6IEliRmlsdGVyRGVmID0+ICh7XG4gIG9wZXJhdG9yOiBJYkZpbHRlck9wZXJhdG9yLk5PVF9FUVVBTFMsXG4gIHZhbHVlLFxufSk7XG5leHBvcnQgY29uc3QgZ3QgPSAodmFsdWUpOiBJYkZpbHRlckRlZiA9PiAoe1xuICBvcGVyYXRvcjogSWJGaWx0ZXJPcGVyYXRvci5HUkVBVEVSX1RIQU4sXG4gIHZhbHVlLFxufSk7XG5leHBvcnQgY29uc3QgZ3RlID0gKHZhbHVlKTogSWJGaWx0ZXJEZWYgPT4gKHtcbiAgb3BlcmF0b3I6IEliRmlsdGVyT3BlcmF0b3IuR1JFQVRFUl9USEFOX0VRVUFMUyxcbiAgdmFsdWUsXG59KTtcbmV4cG9ydCBjb25zdCBsdCA9ICh2YWx1ZSk6IEliRmlsdGVyRGVmID0+ICh7XG4gIG9wZXJhdG9yOiBJYkZpbHRlck9wZXJhdG9yLkxFU1NfVEhBTixcbiAgdmFsdWUsXG59KTtcbmV4cG9ydCBjb25zdCBsdGUgPSAodmFsdWUpOiBJYkZpbHRlckRlZiA9PiAoe1xuICBvcGVyYXRvcjogSWJGaWx0ZXJPcGVyYXRvci5MRVNTX1RIQU5fRVFVQUxTLFxuICB2YWx1ZSxcbn0pO1xuZXhwb3J0IGNvbnN0IGNvbnRhaW5zID0gKHZhbHVlKTogSWJGaWx0ZXJEZWYgPT4gKHtcbiAgb3BlcmF0b3I6IEliRmlsdGVyT3BlcmF0b3IuQ09OVEFJTlMsXG4gIHZhbHVlLFxufSk7XG5leHBvcnQgY29uc3QgbmNvbnRhaW5zID0gKHZhbHVlKTogSWJGaWx0ZXJEZWYgPT4gKHtcbiAgb3BlcmF0b3I6IEliRmlsdGVyT3BlcmF0b3IuTk9UX0NPTlRBSU5TLFxuICB2YWx1ZSxcbn0pO1xuZXhwb3J0IGNvbnN0IHN0YXJ0c1dpdGggPSAodmFsdWUpOiBJYkZpbHRlckRlZiA9PiAoe1xuICBvcGVyYXRvcjogSWJGaWx0ZXJPcGVyYXRvci5TVEFSVFNfV0lUSCxcbiAgdmFsdWUsXG59KTtcbmV4cG9ydCBjb25zdCBlbmRzV2l0aCA9ICh2YWx1ZSk6IEliRmlsdGVyRGVmID0+ICh7XG4gIG9wZXJhdG9yOiBJYkZpbHRlck9wZXJhdG9yLkVORFNfV0lUSCxcbiAgdmFsdWUsXG59KTtcblxuZXhwb3J0IGNvbnN0IGFuZCA9ICh2YWx1ZSk6IEliRmlsdGVyRGVmID0+ICh7XG4gIG9wZXJhdG9yOiBJYkZpbHRlck9wZXJhdG9yLkFORCxcbiAgdmFsdWUsXG59KTtcbmV4cG9ydCBjb25zdCBvciA9ICh2YWx1ZSk6IEliRmlsdGVyRGVmID0+ICh7XG4gIG9wZXJhdG9yOiBJYkZpbHRlck9wZXJhdG9yLk9SLFxuICB2YWx1ZSxcbn0pO1xuXG5leHBvcnQgY29uc3Qgbm9uZSA9ICgpOiBJYkZpbHRlckRlZiA9PiAoe1xuICBvcGVyYXRvcjogSWJGaWx0ZXJPcGVyYXRvci5OT05FLFxuICB2YWx1ZTogbnVsbCxcbn0pO1xuXG5leHBvcnQgZnVuY3Rpb24gYXBwbHlGaWx0ZXIoZmlsdGVyOiBJYkZpbHRlckRlZiwgZmlsdGVyVmFsdWU6IGFueSkge1xuICBpZiAoIWZpbHRlcikge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgaWYgKCFmaWx0ZXIub3BlcmF0b3IpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGlmIChmaWx0ZXIub3BlcmF0b3IgPT09IEliRmlsdGVyT3BlcmF0b3IuT1IpIHtcbiAgICByZXR1cm4gKGZpbHRlci52YWx1ZSBhcyBJYkZpbHRlckRlZltdKS5zb21lKChzdWJGaWx0ZXIpID0+XG4gICAgICBhcHBseUZpbHRlcihzdWJGaWx0ZXIsIGZpbHRlclZhbHVlKVxuICAgICk7XG4gIH1cblxuICBpZiAoZmlsdGVyLm9wZXJhdG9yID09PSBJYkZpbHRlck9wZXJhdG9yLkFORCkge1xuICAgIHJldHVybiAoZmlsdGVyLnZhbHVlIGFzIEliRmlsdGVyRGVmW10pLmV2ZXJ5KChzdWJGaWx0ZXIpID0+XG4gICAgICBhcHBseUZpbHRlcihzdWJGaWx0ZXIsIGZpbHRlclZhbHVlKVxuICAgICk7XG4gIH1cblxuICByZXR1cm4gZXZhbE9wZXJhdGlvbihmaWx0ZXIub3BlcmF0b3IsIGZpbHRlci52YWx1ZSwgZmlsdGVyVmFsdWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXZhbE9wZXJhdGlvbihcbiAgb3BlcmF0aW9uOiBJYkZpbHRlck9wZXJhdG9yLFxuICB2YWx1ZTogYW55LFxuICBmaWx0ZXJWYWx1ZTogYW55XG4pIHtcbiAgY29uc3QgdmFsdWVUeXBlID0gdHlwZW9mIHZhbHVlO1xuICBjb25zdCBmaWx0ZXJWYWx1ZVR5cGUgPSB0eXBlb2YgZmlsdGVyVmFsdWU7XG5cbiAgaWYgKGZpbHRlclZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgIGZpbHRlclZhbHVlID0gZmlsdGVyVmFsdWUudG9JU09TdHJpbmcoKTtcbiAgfVxuXG4gIGlmICh2YWx1ZVR5cGUgPT0gXCJzdHJpbmdcIikge1xuICAgIHZhbHVlID0gKHZhbHVlIGFzIHN0cmluZykudHJpbSgpLnRvTG93ZXJDYXNlKCk7XG4gIH1cblxuICBpZiAoZmlsdGVyVmFsdWVUeXBlID09IFwic3RyaW5nXCIpIHtcbiAgICBmaWx0ZXJWYWx1ZSA9IChmaWx0ZXJWYWx1ZSBhcyBzdHJpbmcpLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgaWYgKG9wZXJhdGlvbiA9PT0gSWJGaWx0ZXJPcGVyYXRvci5DT05UQUlOUykge1xuICAgICAgcmV0dXJuIGZpbHRlclZhbHVlLmluZGV4T2YodmFsdWUpICE9IC0xO1xuICAgIH1cblxuICAgIGlmIChvcGVyYXRpb24gPT09IEliRmlsdGVyT3BlcmF0b3IuTk9UX0NPTlRBSU5TKSB7XG4gICAgICByZXR1cm4gZmlsdGVyVmFsdWUuaW5kZXhPZih2YWx1ZSkgPT09IC0xO1xuICAgIH1cblxuICAgIGlmIChvcGVyYXRpb24gPT09IEliRmlsdGVyT3BlcmF0b3IuU1RBUlRTX1dJVEgpIHtcbiAgICAgIHJldHVybiBmaWx0ZXJWYWx1ZS5zdGFydHNXaXRoKHZhbHVlKTtcbiAgICB9XG5cbiAgICBpZiAob3BlcmF0aW9uID09PSBJYkZpbHRlck9wZXJhdG9yLkVORFNfV0lUSCkge1xuICAgICAgcmV0dXJuIGZpbHRlclZhbHVlLmVuZHNXaXRoKHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBpZiAob3BlcmF0aW9uID09PSBJYkZpbHRlck9wZXJhdG9yLkVRVUFMUykge1xuICAgIHJldHVybiBmaWx0ZXJWYWx1ZSA9PT0gdmFsdWU7XG4gIH1cblxuICBpZiAob3BlcmF0aW9uID09PSBJYkZpbHRlck9wZXJhdG9yLkdSRUFURVJfVEhBTikge1xuICAgIHJldHVybiBmaWx0ZXJWYWx1ZSA+IHZhbHVlO1xuICB9XG5cbiAgaWYgKG9wZXJhdGlvbiA9PT0gSWJGaWx0ZXJPcGVyYXRvci5HUkVBVEVSX1RIQU5fRVFVQUxTKSB7XG4gICAgcmV0dXJuIGZpbHRlclZhbHVlID49IHZhbHVlO1xuICB9XG5cbiAgaWYgKG9wZXJhdGlvbiA9PT0gSWJGaWx0ZXJPcGVyYXRvci5MRVNTX1RIQU4pIHtcbiAgICByZXR1cm4gZmlsdGVyVmFsdWUgPCB2YWx1ZTtcbiAgfVxuXG4gIGlmIChvcGVyYXRpb24gPT09IEliRmlsdGVyT3BlcmF0b3IuTEVTU19USEFOX0VRVUFMUykge1xuICAgIHJldHVybiBmaWx0ZXJWYWx1ZSA8PSB2YWx1ZTtcbiAgfVxufVxuIl19