@acorex/components 6.5.91 → 6.6.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 (544) hide show
  1. package/README.md +7 -3
  2. package/esm2022/acorex-components.mjs +5 -0
  3. package/esm2022/index.mjs +158 -0
  4. package/esm2022/lib/accordion/accordion.component.mjs +45 -0
  5. package/esm2022/lib/accordion/accordion.module.mjs +20 -0
  6. package/esm2022/lib/base/base-page.class.mjs +97 -0
  7. package/esm2022/lib/base/components.class.mjs +17 -0
  8. package/esm2022/lib/base/element.class.mjs +301 -0
  9. package/esm2022/lib/base/events.class.mjs +17 -0
  10. package/esm2022/lib/button/button.component.mjs +74 -0
  11. package/esm2022/lib/button/button.module.mjs +21 -0
  12. package/esm2022/lib/calendar/calendar-box/calendar-box.component.mjs +426 -0
  13. package/esm2022/lib/calendar/calendar-box/calendar-box.module.mjs +22 -0
  14. package/esm2022/lib/calendar/scheduler/scheduler-views.property.mjs +59 -0
  15. package/esm2022/lib/calendar/scheduler/scheduler.class.mjs +16 -0
  16. package/esm2022/lib/calendar/scheduler/scheduler.component.mjs +226 -0
  17. package/esm2022/lib/calendar/scheduler/scheduler.module.mjs +68 -0
  18. package/esm2022/lib/calendar/scheduler/toolbars/scheduler-toolbar-navigator.mjs +136 -0
  19. package/esm2022/lib/calendar/scheduler/toolbars/scheduler-toolbar-views.mjs +37 -0
  20. package/esm2022/lib/calendar/scheduler/views/agenda/scheduler-agenda-view.component.mjs +49 -0
  21. package/esm2022/lib/calendar/scheduler/views/daytime/scheduler-daytime-view.component.mjs +102 -0
  22. package/esm2022/lib/calendar/scheduler/views/month/scheduler-month-view.component.mjs +214 -0
  23. package/esm2022/lib/calendar/scheduler/views/scheduler-view.component.mjs +99 -0
  24. package/esm2022/lib/calendar/scheduler/views/timeline/scheduler-timeline-view.component.mjs +85 -0
  25. package/esm2022/lib/checkbox/checkbox.component.mjs +102 -0
  26. package/esm2022/lib/checkbox/checkbox.module.mjs +20 -0
  27. package/esm2022/lib/color-picker/color-box/color-box.component.mjs +423 -0
  28. package/esm2022/lib/color-picker/color-picker.component.mjs +89 -0
  29. package/esm2022/lib/color-picker/color-picker.module.mjs +24 -0
  30. package/esm2022/lib/context-menu/context-menu.component.mjs +68 -0
  31. package/esm2022/lib/context-menu/context-menu.directive.mjs +146 -0
  32. package/esm2022/lib/context-menu/context-menu.module.mjs +20 -0
  33. package/esm2022/lib/data-filter/columns/filter-column-date.component.mjs +140 -0
  34. package/esm2022/lib/data-filter/columns/filter-column-number.component.mjs +119 -0
  35. package/esm2022/lib/data-filter/columns/filter-column-selection.component.mjs +75 -0
  36. package/esm2022/lib/data-filter/columns/filter-column-string.component.mjs +119 -0
  37. package/esm2022/lib/data-filter/filter-panel/filter-panel.component.mjs +267 -0
  38. package/esm2022/lib/data-filter/filter.class.mjs +46 -0
  39. package/esm2022/lib/data-filter/filter.module.mjs +88 -0
  40. package/esm2022/lib/data-filter/toolbar/filter-toolbar.component.mjs +168 -0
  41. package/esm2022/lib/data-list/core/data-list.component.mjs +37 -0
  42. package/esm2022/lib/data-list/list/list.component.mjs +134 -0
  43. package/esm2022/lib/data-list/list/list.module.mjs +22 -0
  44. package/esm2022/lib/data-list/list/toolbar-list-view.component.mjs +84 -0
  45. package/esm2022/lib/data-source/datasource.component.mjs +47 -0
  46. package/esm2022/lib/data-source/datasource.module.mjs +18 -0
  47. package/esm2022/lib/data-source/read-param.mjs +7 -0
  48. package/esm2022/lib/date-picker/date-picker.component.mjs +1093 -0
  49. package/esm2022/lib/date-picker/date-picker.module.mjs +49 -0
  50. package/esm2022/lib/dialog/dialog.component.mjs +26 -0
  51. package/esm2022/lib/dialog/dialog.module.mjs +21 -0
  52. package/esm2022/lib/dialog/dialog.service.mjs +160 -0
  53. package/esm2022/lib/drawer/content.component.mjs +18 -0
  54. package/esm2022/lib/drawer/drawer-container.component.mjs +38 -0
  55. package/esm2022/lib/drawer/drawer.component.mjs +146 -0
  56. package/esm2022/lib/drawer/drawer.module.mjs +23 -0
  57. package/esm2022/lib/dropdown/dropdown.component.mjs +186 -0
  58. package/esm2022/lib/dropdown/dropdown.module.mjs +26 -0
  59. package/esm2022/lib/fieldset/fieldset.component.mjs +57 -0
  60. package/esm2022/lib/fieldset/fieldset.module.mjs +19 -0
  61. package/esm2022/lib/form-group/form-group.component.mjs +37 -0
  62. package/esm2022/lib/form-group/form-group.module.mjs +21 -0
  63. package/esm2022/lib/label/label.component.mjs +19 -0
  64. package/esm2022/lib/label/label.module.mjs +21 -0
  65. package/esm2022/lib/loading/loading-indicator.component.mjs +18 -0
  66. package/esm2022/lib/loading/loading-panel.component.mjs +45 -0
  67. package/esm2022/lib/loading/loading.module.mjs +21 -0
  68. package/esm2022/lib/loading/loading.service.mjs +47 -0
  69. package/esm2022/lib/menu/menu-item.component.mjs +50 -0
  70. package/esm2022/lib/menu/menu.component.mjs +98 -0
  71. package/esm2022/lib/menu/menu.module.mjs +22 -0
  72. package/esm2022/lib/menu/menu2.component.mjs +100 -0
  73. package/esm2022/lib/number-box/number-box.component.mjs +628 -0
  74. package/esm2022/lib/number-box/number-box.module.mjs +21 -0
  75. package/esm2022/lib/page/content.component.mjs +27 -0
  76. package/esm2022/lib/page/footer.component.mjs +19 -0
  77. package/esm2022/lib/page/page.component.mjs +57 -0
  78. package/esm2022/lib/page/page.module.mjs +22 -0
  79. package/esm2022/lib/panel-box/panel-box.component.mjs +87 -0
  80. package/esm2022/lib/panel-box/panel-box.module.mjs +19 -0
  81. package/esm2022/lib/password-box/password-box.component.mjs +32 -0
  82. package/esm2022/lib/password-box/password-box.module.mjs +23 -0
  83. package/esm2022/lib/popover/custom-cdk-overlay.service.mjs +50 -0
  84. package/esm2022/lib/popover/overlay.service.mjs +94 -0
  85. package/esm2022/lib/popover/popover.component.mjs +145 -0
  86. package/esm2022/lib/popover/popover.module.mjs +19 -0
  87. package/esm2022/lib/popup/popup.component.mjs +160 -0
  88. package/esm2022/lib/popup/popup.module.mjs +25 -0
  89. package/esm2022/lib/popup/popup.service.mjs +94 -0
  90. package/esm2022/lib/progress-bar/progress-bar.component.mjs +16 -0
  91. package/esm2022/lib/progress-bar/progress-bar.module.mjs +19 -0
  92. package/esm2022/lib/property-editor/editors/check-editor/check-editor.mjs +65 -0
  93. package/esm2022/lib/property-editor/editors/check-editor/check.module.mjs +22 -0
  94. package/esm2022/lib/property-editor/editors/color-editor/color.editor.mjs +41 -0
  95. package/esm2022/lib/property-editor/editors/color-editor/color.module.mjs +24 -0
  96. package/esm2022/lib/property-editor/editors/column-editor/column.editor.mjs +118 -0
  97. package/esm2022/lib/property-editor/editors/column-editor/column.module.mjs +32 -0
  98. package/esm2022/lib/property-editor/editors/conditional-color-editor/conditional-color.editor.mjs +216 -0
  99. package/esm2022/lib/property-editor/editors/conditional-color-editor/conditional-color.module.mjs +76 -0
  100. package/esm2022/lib/property-editor/editors/date-editor/date.editor.mjs +87 -0
  101. package/esm2022/lib/property-editor/editors/date-editor/date.module.mjs +24 -0
  102. package/esm2022/lib/property-editor/editors/number-editor/number.editor.mjs +69 -0
  103. package/esm2022/lib/property-editor/editors/number-editor/number.module.mjs +24 -0
  104. package/esm2022/lib/property-editor/editors/range-editor/range.editor.mjs +145 -0
  105. package/esm2022/lib/property-editor/editors/range-editor/range.module.mjs +59 -0
  106. package/esm2022/lib/property-editor/editors/searchbar-selectbox-editor/searchbar-selectbox-editor.mjs +76 -0
  107. package/esm2022/lib/property-editor/editors/selectbox-editor/selectbox.editor.mjs +75 -0
  108. package/esm2022/lib/property-editor/editors/selectbox-editor/selectbox.module.mjs +25 -0
  109. package/esm2022/lib/property-editor/editors/selection-editor/selection-editor.mjs +73 -0
  110. package/esm2022/lib/property-editor/editors/selection-editor/selection.module.mjs +22 -0
  111. package/esm2022/lib/property-editor/editors/switch-editor/number.editor.mjs +30 -0
  112. package/esm2022/lib/property-editor/editors/switch-editor/number.module.mjs +25 -0
  113. package/esm2022/lib/property-editor/editors/text-editor/text.editor.mjs +36 -0
  114. package/esm2022/lib/property-editor/editors/text-editor/text.module.mjs +24 -0
  115. package/esm2022/lib/property-editor/editors/textarea-editor/textarea.editor.mjs +35 -0
  116. package/esm2022/lib/property-editor/editors/textarea-editor/textarea.module.mjs +24 -0
  117. package/esm2022/lib/property-editor/editors/time-editor/time.editor.mjs +47 -0
  118. package/esm2022/lib/property-editor/editors/time-editor/time.module.mjs +24 -0
  119. package/esm2022/lib/property-editor/property-editor-renderer.directive.mjs +167 -0
  120. package/esm2022/lib/property-editor/property-editor.class.mjs +108 -0
  121. package/esm2022/lib/property-editor/property-editor.module.mjs +194 -0
  122. package/esm2022/lib/query-builder/query-builder-group.component.mjs +129 -0
  123. package/esm2022/lib/query-builder/query-builder-popup/query-builder-popup.component.mjs +177 -0
  124. package/esm2022/lib/query-builder/query-builder-rule.component.mjs +428 -0
  125. package/esm2022/lib/query-builder/query-builder.class.mjs +42 -0
  126. package/esm2022/lib/query-builder/query-builder.component.mjs +92 -0
  127. package/esm2022/lib/query-builder/query-builder.module.mjs +62 -0
  128. package/esm2022/lib/query-builder/query-builder.service.mjs +199 -0
  129. package/esm2022/lib/search-bar/search-bar.component.mjs +293 -0
  130. package/esm2022/lib/search-bar/search-bar.module.mjs +61 -0
  131. package/esm2022/lib/searchbox/searchbox.component.mjs +106 -0
  132. package/esm2022/lib/searchbox/searchbox.module.mjs +24 -0
  133. package/esm2022/lib/selectbox/selectbox.component.mjs +1134 -0
  134. package/esm2022/lib/selectbox/selectbox.module.mjs +44 -0
  135. package/esm2022/lib/selectbox/selectbox2.component.mjs +617 -0
  136. package/esm2022/lib/selection-list/selection-list.component.mjs +113 -0
  137. package/esm2022/lib/selection-list/selection-list.module.mjs +21 -0
  138. package/esm2022/lib/switch/switch.component.mjs +55 -0
  139. package/esm2022/lib/switch/switch.module.mjs +20 -0
  140. package/esm2022/lib/tab-page/tab-page-Renderer.component.mjs +75 -0
  141. package/esm2022/lib/tab-page/tab-page-host.component.mjs +124 -0
  142. package/esm2022/lib/tab-page/tab-page.module.mjs +21 -0
  143. package/esm2022/lib/tab-page/tab-page.service.mjs +159 -0
  144. package/esm2022/lib/tab-strip/tab-strip.component.mjs +38 -0
  145. package/esm2022/lib/tab-strip/tab-strip.module.mjs +19 -0
  146. package/esm2022/lib/tab-view/dynamic-tabs.directive.mjs +25 -0
  147. package/esm2022/lib/tab-view/tab-view.component.mjs +110 -0
  148. package/esm2022/lib/tab-view/tab-view.module.mjs +21 -0
  149. package/esm2022/lib/tab-view/tab.component.mjs +33 -0
  150. package/esm2022/lib/textarea/textarea.component.mjs +27 -0
  151. package/esm2022/lib/textarea/textarea.module.mjs +21 -0
  152. package/esm2022/lib/textbox/textbox.component.mjs +42 -0
  153. package/esm2022/lib/textbox/textbox.module.mjs +36 -0
  154. package/esm2022/lib/time-picker/time-picker.component.mjs +1107 -0
  155. package/esm2022/lib/time-picker/time-picker.module.mjs +34 -0
  156. package/esm2022/lib/toast/toast-message/toast-message.component.mjs +76 -0
  157. package/esm2022/lib/toast/toast-wrapper/toast-wrapper.component.mjs +13 -0
  158. package/esm2022/lib/toast/toast.module.mjs +21 -0
  159. package/esm2022/lib/toast/toast.service.mjs +45 -0
  160. package/esm2022/lib/toolbar/group-button/toolbar-group-button.component.mjs +77 -0
  161. package/esm2022/lib/toolbar/menu/toolbar-menu.component.mjs +62 -0
  162. package/esm2022/lib/toolbar/search/toolbar-search.component.mjs +56 -0
  163. package/esm2022/lib/toolbar/title/toolbar-title.component.mjs +37 -0
  164. package/esm2022/lib/toolbar/toolbar-item.mjs +4 -0
  165. package/esm2022/lib/toolbar/toolbar.component.mjs +13 -0
  166. package/esm2022/lib/toolbar/toolbar.module.mjs +40 -0
  167. package/esm2022/lib/tooltip/tooltip.directive.mjs +104 -0
  168. package/esm2022/lib/tooltip/tooltip.module.mjs +19 -0
  169. package/esm2022/lib/tree-side-menu/tree-side-menu.component.mjs +697 -0
  170. package/esm2022/lib/tree-side-menu/tree-side-menu.module.mjs +33 -0
  171. package/esm2022/lib/tree-view/tree-view.component.mjs +854 -0
  172. package/esm2022/lib/tree-view/tree-view.module.mjs +22 -0
  173. package/esm2022/lib/upload-file/upload-file.component.mjs +226 -0
  174. package/esm2022/lib/upload-file/upload-file.events.mjs +2 -0
  175. package/esm2022/lib/upload-file/upload-file.module.mjs +24 -0
  176. package/esm2022/lib/validation/validation-form.component.mjs +68 -0
  177. package/esm2022/lib/validation/validation-rule.widget.mjs +114 -0
  178. package/esm2022/lib/validation/validation.class.mjs +2 -0
  179. package/esm2022/lib/validation/validation.component.mjs +89 -0
  180. package/esm2022/lib/validation/validation.module.mjs +34 -0
  181. package/{fesm2020 → fesm2022}/acorex-components.mjs +17004 -15581
  182. package/fesm2022/acorex-components.mjs.map +1 -0
  183. package/{public-api.d.ts → index.d.ts} +155 -155
  184. package/lib/accordion/accordion.component.d.ts +13 -13
  185. package/lib/accordion/accordion.module.d.ts +9 -9
  186. package/lib/base/base-page.class.d.ts +46 -46
  187. package/lib/base/components.class.d.ts +10 -10
  188. package/lib/base/element.class.d.ts +106 -106
  189. package/lib/base/events.class.d.ts +18 -18
  190. package/lib/button/button.component.d.ts +21 -21
  191. package/lib/button/button.module.d.ts +8 -8
  192. package/lib/calendar/calendar-box/calendar-box.component.d.ts +81 -81
  193. package/lib/calendar/calendar-box/calendar-box.module.d.ts +11 -11
  194. package/lib/calendar/scheduler/scheduler-views.property.d.ts +19 -19
  195. package/lib/calendar/scheduler/scheduler.class.d.ts +36 -36
  196. package/lib/calendar/scheduler/scheduler.component.d.ts +39 -39
  197. package/lib/calendar/scheduler/scheduler.module.d.ts +21 -21
  198. package/lib/calendar/scheduler/toolbars/scheduler-toolbar-navigator.d.ts +25 -25
  199. package/lib/calendar/scheduler/toolbars/scheduler-toolbar-views.d.ts +14 -14
  200. package/lib/calendar/scheduler/views/agenda/scheduler-agenda-view.component.d.ts +16 -16
  201. package/lib/calendar/scheduler/views/daytime/scheduler-daytime-view.component.d.ts +26 -26
  202. package/lib/calendar/scheduler/views/month/scheduler-month-view.component.d.ts +37 -37
  203. package/lib/calendar/scheduler/views/scheduler-view.component.d.ts +28 -28
  204. package/lib/calendar/scheduler/views/timeline/scheduler-timeline-view.component.d.ts +24 -24
  205. package/lib/checkbox/checkbox.component.d.ts +30 -30
  206. package/lib/checkbox/checkbox.module.d.ts +9 -9
  207. package/lib/color-picker/color-box/color-box.component.d.ts +25 -25
  208. package/lib/color-picker/color-picker.component.d.ts +30 -30
  209. package/lib/color-picker/color-picker.module.d.ts +13 -13
  210. package/lib/context-menu/context-menu.component.d.ts +22 -22
  211. package/lib/context-menu/context-menu.directive.d.ts +38 -38
  212. package/lib/context-menu/context-menu.module.d.ts +9 -9
  213. package/lib/data-filter/columns/filter-column-date.component.d.ts +22 -22
  214. package/lib/data-filter/columns/filter-column-number.component.d.ts +15 -15
  215. package/lib/data-filter/columns/filter-column-selection.component.d.ts +18 -18
  216. package/lib/data-filter/columns/filter-column-string.component.d.ts +15 -15
  217. package/lib/data-filter/filter-panel/filter-panel.component.d.ts +45 -45
  218. package/lib/data-filter/filter.class.d.ts +40 -40
  219. package/lib/data-filter/filter.module.d.ts +24 -24
  220. package/lib/data-filter/toolbar/filter-toolbar.component.d.ts +25 -25
  221. package/lib/data-list/core/data-list.component.d.ts +15 -15
  222. package/lib/data-list/list/list.component.d.ts +40 -40
  223. package/lib/data-list/list/list.module.d.ts +11 -11
  224. package/lib/data-list/list/toolbar-list-view.component.d.ts +17 -17
  225. package/lib/data-source/datasource.component.d.ts +16 -16
  226. package/lib/data-source/datasource.module.d.ts +7 -7
  227. package/lib/data-source/read-param.d.ts +40 -40
  228. package/lib/date-picker/date-picker.component.d.ts +81 -81
  229. package/lib/date-picker/date-picker.module.d.ts +14 -14
  230. package/lib/dialog/dialog.component.d.ts +14 -14
  231. package/lib/dialog/dialog.module.d.ts +10 -10
  232. package/lib/dialog/dialog.service.d.ts +36 -36
  233. package/lib/drawer/content.component.d.ts +7 -7
  234. package/lib/drawer/drawer-container.component.d.ts +10 -10
  235. package/lib/drawer/drawer.component.d.ts +34 -34
  236. package/lib/drawer/drawer.module.d.ts +10 -10
  237. package/lib/dropdown/dropdown.component.d.ts +38 -38
  238. package/lib/dropdown/dropdown.module.d.ts +13 -13
  239. package/lib/fieldset/fieldset.component.d.ts +11 -11
  240. package/lib/fieldset/fieldset.module.d.ts +8 -8
  241. package/lib/form-group/form-group.component.d.ts +14 -14
  242. package/lib/form-group/form-group.module.d.ts +8 -8
  243. package/lib/label/label.component.d.ts +9 -9
  244. package/lib/label/label.module.d.ts +8 -8
  245. package/lib/loading/loading-indicator.component.d.ts +9 -9
  246. package/lib/loading/loading-panel.component.d.ts +13 -13
  247. package/lib/loading/loading.module.d.ts +10 -10
  248. package/lib/loading/loading.service.d.ts +13 -13
  249. package/lib/menu/menu-item.component.d.ts +18 -18
  250. package/lib/menu/menu.component.d.ts +35 -35
  251. package/lib/menu/menu.module.d.ts +11 -11
  252. package/lib/menu/menu2.component.d.ts +21 -21
  253. package/lib/number-box/number-box.component.d.ts +52 -52
  254. package/lib/number-box/number-box.module.d.ts +10 -10
  255. package/lib/page/content.component.d.ts +8 -8
  256. package/lib/page/footer.component.d.ts +5 -5
  257. package/lib/page/page.component.d.ts +16 -16
  258. package/lib/page/page.module.d.ts +11 -11
  259. package/lib/panel-box/panel-box.component.d.ts +19 -19
  260. package/lib/panel-box/panel-box.module.d.ts +8 -8
  261. package/lib/password-box/password-box.component.d.ts +12 -12
  262. package/lib/password-box/password-box.module.d.ts +10 -10
  263. package/lib/popover/custom-cdk-overlay.service.d.ts +19 -19
  264. package/lib/popover/overlay.service.d.ts +32 -32
  265. package/lib/popover/popover.component.d.ts +35 -35
  266. package/lib/popover/popover.module.d.ts +8 -8
  267. package/lib/popup/popup.component.d.ts +40 -40
  268. package/lib/popup/popup.module.d.ts +13 -13
  269. package/lib/popup/popup.service.d.ts +22 -22
  270. package/lib/progress-bar/progress-bar.component.d.ts +7 -7
  271. package/lib/progress-bar/progress-bar.module.d.ts +8 -8
  272. package/lib/property-editor/editors/check-editor/check-editor.d.ts +19 -19
  273. package/lib/property-editor/editors/check-editor/check.module.d.ts +11 -11
  274. package/lib/property-editor/editors/color-editor/color.editor.d.ts +13 -13
  275. package/lib/property-editor/editors/color-editor/color.module.d.ts +12 -12
  276. package/lib/property-editor/editors/column-editor/column.editor.d.ts +34 -34
  277. package/lib/property-editor/editors/column-editor/column.module.d.ts +20 -20
  278. package/lib/property-editor/editors/conditional-color-editor/conditional-color.editor.d.ts +44 -44
  279. package/lib/property-editor/editors/conditional-color-editor/conditional-color.module.d.ts +19 -19
  280. package/lib/property-editor/editors/date-editor/date.editor.d.ts +28 -28
  281. package/lib/property-editor/editors/date-editor/date.module.d.ts +12 -12
  282. package/lib/property-editor/editors/number-editor/number.editor.d.ts +21 -20
  283. package/lib/property-editor/editors/number-editor/number.module.d.ts +12 -12
  284. package/lib/property-editor/editors/range-editor/range.editor.d.ts +29 -29
  285. package/lib/property-editor/editors/range-editor/range.module.d.ts +18 -18
  286. package/lib/property-editor/editors/searchbar-selectbox-editor/searchbar-selectbox-editor.d.ts +29 -29
  287. package/lib/property-editor/editors/selectbox-editor/selectbox.editor.d.ts +28 -28
  288. package/lib/property-editor/editors/selectbox-editor/selectbox.module.d.ts +14 -14
  289. package/lib/property-editor/editors/selection-editor/selection-editor.d.ts +25 -25
  290. package/lib/property-editor/editors/selection-editor/selection.module.d.ts +11 -11
  291. package/lib/property-editor/editors/switch-editor/number.editor.d.ts +11 -11
  292. package/lib/property-editor/editors/switch-editor/number.module.d.ts +13 -13
  293. package/lib/property-editor/editors/text-editor/text.editor.d.ts +18 -18
  294. package/lib/property-editor/editors/text-editor/text.module.d.ts +12 -12
  295. package/lib/property-editor/editors/textarea-editor/textarea.editor.d.ts +17 -17
  296. package/lib/property-editor/editors/textarea-editor/textarea.module.d.ts +12 -12
  297. package/lib/property-editor/editors/time-editor/time.editor.d.ts +17 -17
  298. package/lib/property-editor/editors/time-editor/time.module.d.ts +12 -12
  299. package/lib/property-editor/property-editor-renderer.directive.d.ts +31 -31
  300. package/lib/property-editor/property-editor.class.d.ts +93 -93
  301. package/lib/property-editor/property-editor.module.d.ts +21 -21
  302. package/lib/query-builder/query-builder-group.component.d.ts +33 -33
  303. package/lib/query-builder/query-builder-popup/query-builder-popup.component.d.ts +35 -35
  304. package/lib/query-builder/query-builder-rule.component.d.ts +45 -45
  305. package/lib/query-builder/query-builder.class.d.ts +45 -45
  306. package/lib/query-builder/query-builder.component.d.ts +29 -29
  307. package/lib/query-builder/query-builder.module.d.ts +23 -23
  308. package/lib/query-builder/query-builder.service.d.ts +18 -18
  309. package/lib/search-bar/search-bar.component.d.ts +62 -62
  310. package/lib/search-bar/search-bar.module.d.ts +18 -18
  311. package/lib/searchbox/searchbox.component.d.ts +23 -22
  312. package/lib/searchbox/searchbox.module.d.ts +13 -13
  313. package/lib/selectbox/selectbox.component.d.ts +149 -118
  314. package/lib/selectbox/selectbox.module.d.ts +15 -15
  315. package/lib/selectbox/selectbox2.component.d.ts +103 -103
  316. package/lib/selection-list/selection-list.component.d.ts +32 -32
  317. package/lib/selection-list/selection-list.module.d.ts +10 -10
  318. package/lib/switch/switch.component.d.ts +20 -20
  319. package/lib/switch/switch.module.d.ts +9 -9
  320. package/lib/tab-page/tab-page-Renderer.component.d.ts +16 -16
  321. package/lib/tab-page/tab-page-host.component.d.ts +24 -24
  322. package/lib/tab-page/tab-page.module.d.ts +10 -10
  323. package/lib/tab-page/tab-page.service.d.ts +30 -30
  324. package/lib/tab-strip/tab-strip.component.d.ts +28 -28
  325. package/lib/tab-strip/tab-strip.module.d.ts +8 -8
  326. package/lib/tab-view/dynamic-tabs.directive.d.ts +16 -16
  327. package/lib/tab-view/tab-view.component.d.ts +26 -26
  328. package/lib/tab-view/tab-view.module.d.ts +10 -10
  329. package/lib/tab-view/tab.component.d.ts +12 -12
  330. package/lib/textarea/textarea.component.d.ts +12 -12
  331. package/lib/textarea/textarea.module.d.ts +8 -8
  332. package/lib/textbox/textbox.component.d.ts +16 -16
  333. package/lib/textbox/textbox.module.d.ts +11 -11
  334. package/lib/time-picker/time-picker.component.d.ts +53 -52
  335. package/lib/time-picker/time-picker.module.d.ts +11 -11
  336. package/lib/toast/toast-message/toast-message.component.d.ts +18 -18
  337. package/lib/toast/toast-wrapper/toast-wrapper.component.d.ts +8 -8
  338. package/lib/toast/toast.module.d.ts +9 -9
  339. package/lib/toast/toast.service.d.ts +18 -18
  340. package/lib/toolbar/group-button/toolbar-group-button.component.d.ts +12 -12
  341. package/lib/toolbar/menu/toolbar-menu.component.d.ts +24 -24
  342. package/lib/toolbar/search/toolbar-search.component.d.ts +16 -16
  343. package/lib/toolbar/title/toolbar-title.component.d.ts +9 -9
  344. package/lib/toolbar/toolbar-item.d.ts +3 -3
  345. package/lib/toolbar/toolbar.component.d.ts +8 -8
  346. package/lib/toolbar/toolbar.module.d.ts +14 -14
  347. package/lib/tooltip/tooltip.directive.d.ts +21 -21
  348. package/lib/tooltip/tooltip.module.d.ts +8 -8
  349. package/lib/tree-side-menu/tree-side-menu.component.d.ts +111 -111
  350. package/lib/tree-side-menu/tree-side-menu.module.d.ts +11 -11
  351. package/lib/tree-view/tree-view.component.d.ts +121 -121
  352. package/lib/tree-view/tree-view.module.d.ts +11 -11
  353. package/lib/upload-file/upload-file.component.d.ts +42 -42
  354. package/lib/upload-file/upload-file.events.d.ts +10 -10
  355. package/lib/upload-file/upload-file.module.d.ts +13 -13
  356. package/lib/validation/validation-form.component.d.ts +19 -19
  357. package/lib/validation/validation-rule.widget.d.ts +23 -23
  358. package/lib/validation/validation.class.d.ts +16 -16
  359. package/lib/validation/validation.component.d.ts +25 -25
  360. package/lib/validation/validation.module.d.ts +11 -11
  361. package/package.json +15 -20
  362. package/acorex-components.d.ts +0 -5
  363. package/esm2020/acorex-components.mjs +0 -5
  364. package/esm2020/lib/accordion/accordion.component.mjs +0 -44
  365. package/esm2020/lib/accordion/accordion.module.mjs +0 -20
  366. package/esm2020/lib/base/base-page.class.mjs +0 -94
  367. package/esm2020/lib/base/components.class.mjs +0 -17
  368. package/esm2020/lib/base/element.class.mjs +0 -294
  369. package/esm2020/lib/base/events.class.mjs +0 -11
  370. package/esm2020/lib/button/button.component.mjs +0 -71
  371. package/esm2020/lib/button/button.module.mjs +0 -21
  372. package/esm2020/lib/calendar/calendar-box/calendar-box.component.mjs +0 -413
  373. package/esm2020/lib/calendar/calendar-box/calendar-box.module.mjs +0 -22
  374. package/esm2020/lib/calendar/scheduler/scheduler-views.property.mjs +0 -54
  375. package/esm2020/lib/calendar/scheduler/scheduler.class.mjs +0 -18
  376. package/esm2020/lib/calendar/scheduler/scheduler.component.mjs +0 -213
  377. package/esm2020/lib/calendar/scheduler/scheduler.module.mjs +0 -68
  378. package/esm2020/lib/calendar/scheduler/toolbars/scheduler-toolbar-navigator.mjs +0 -132
  379. package/esm2020/lib/calendar/scheduler/toolbars/scheduler-toolbar-views.mjs +0 -37
  380. package/esm2020/lib/calendar/scheduler/views/agenda/scheduler-agenda-view.component.mjs +0 -47
  381. package/esm2020/lib/calendar/scheduler/views/daytime/scheduler-daytime-view.component.mjs +0 -95
  382. package/esm2020/lib/calendar/scheduler/views/month/scheduler-month-view.component.mjs +0 -204
  383. package/esm2020/lib/calendar/scheduler/views/scheduler-view.component.mjs +0 -99
  384. package/esm2020/lib/calendar/scheduler/views/timeline/scheduler-timeline-view.component.mjs +0 -77
  385. package/esm2020/lib/checkbox/checkbox.component.mjs +0 -98
  386. package/esm2020/lib/checkbox/checkbox.module.mjs +0 -20
  387. package/esm2020/lib/color-picker/color-box/color-box.component.mjs +0 -422
  388. package/esm2020/lib/color-picker/color-picker.component.mjs +0 -82
  389. package/esm2020/lib/color-picker/color-picker.module.mjs +0 -24
  390. package/esm2020/lib/context-menu/context-menu.component.mjs +0 -65
  391. package/esm2020/lib/context-menu/context-menu.directive.mjs +0 -135
  392. package/esm2020/lib/context-menu/context-menu.module.mjs +0 -20
  393. package/esm2020/lib/data-filter/columns/filter-column-date.component.mjs +0 -138
  394. package/esm2020/lib/data-filter/columns/filter-column-number.component.mjs +0 -117
  395. package/esm2020/lib/data-filter/columns/filter-column-selection.component.mjs +0 -74
  396. package/esm2020/lib/data-filter/columns/filter-column-string.component.mjs +0 -117
  397. package/esm2020/lib/data-filter/filter-panel/filter-panel.component.mjs +0 -258
  398. package/esm2020/lib/data-filter/filter.class.mjs +0 -44
  399. package/esm2020/lib/data-filter/filter.module.mjs +0 -90
  400. package/esm2020/lib/data-filter/toolbar/filter-toolbar.component.mjs +0 -166
  401. package/esm2020/lib/data-list/core/data-list.component.mjs +0 -40
  402. package/esm2020/lib/data-list/list/list.component.mjs +0 -124
  403. package/esm2020/lib/data-list/list/list.module.mjs +0 -22
  404. package/esm2020/lib/data-list/list/toolbar-list-view.component.mjs +0 -85
  405. package/esm2020/lib/data-source/datasource.component.mjs +0 -47
  406. package/esm2020/lib/data-source/datasource.module.mjs +0 -18
  407. package/esm2020/lib/data-source/read-param.mjs +0 -5
  408. package/esm2020/lib/date-picker/date-picker.component.mjs +0 -702
  409. package/esm2020/lib/date-picker/date-picker.module.mjs +0 -25
  410. package/esm2020/lib/dialog/dialog.component.mjs +0 -24
  411. package/esm2020/lib/dialog/dialog.module.mjs +0 -21
  412. package/esm2020/lib/dialog/dialog.service.mjs +0 -150
  413. package/esm2020/lib/drawer/content.component.mjs +0 -18
  414. package/esm2020/lib/drawer/drawer-container.component.mjs +0 -36
  415. package/esm2020/lib/drawer/drawer.component.mjs +0 -142
  416. package/esm2020/lib/drawer/drawer.module.mjs +0 -23
  417. package/esm2020/lib/dropdown/dropdown.component.mjs +0 -176
  418. package/esm2020/lib/dropdown/dropdown.module.mjs +0 -26
  419. package/esm2020/lib/fieldset/fieldset.component.mjs +0 -59
  420. package/esm2020/lib/fieldset/fieldset.module.mjs +0 -19
  421. package/esm2020/lib/form-group/form-group.component.mjs +0 -34
  422. package/esm2020/lib/form-group/form-group.module.mjs +0 -21
  423. package/esm2020/lib/label/label.component.mjs +0 -19
  424. package/esm2020/lib/label/label.module.mjs +0 -21
  425. package/esm2020/lib/loading/loading-indicator.component.mjs +0 -17
  426. package/esm2020/lib/loading/loading-panel.component.mjs +0 -44
  427. package/esm2020/lib/loading/loading.module.mjs +0 -21
  428. package/esm2020/lib/loading/loading.service.mjs +0 -45
  429. package/esm2020/lib/menu/menu-item.component.mjs +0 -47
  430. package/esm2020/lib/menu/menu.component.mjs +0 -86
  431. package/esm2020/lib/menu/menu.module.mjs +0 -22
  432. package/esm2020/lib/menu/menu2.component.mjs +0 -96
  433. package/esm2020/lib/number-box/number-box.component.mjs +0 -622
  434. package/esm2020/lib/number-box/number-box.module.mjs +0 -21
  435. package/esm2020/lib/page/content.component.mjs +0 -32
  436. package/esm2020/lib/page/footer.component.mjs +0 -19
  437. package/esm2020/lib/page/page.component.mjs +0 -53
  438. package/esm2020/lib/page/page.module.mjs +0 -22
  439. package/esm2020/lib/panel-box/panel-box.component.mjs +0 -88
  440. package/esm2020/lib/panel-box/panel-box.module.mjs +0 -19
  441. package/esm2020/lib/password-box/password-box.component.mjs +0 -31
  442. package/esm2020/lib/password-box/password-box.module.mjs +0 -23
  443. package/esm2020/lib/popover/custom-cdk-overlay.service.mjs +0 -48
  444. package/esm2020/lib/popover/overlay.service.mjs +0 -91
  445. package/esm2020/lib/popover/popover.component.mjs +0 -133
  446. package/esm2020/lib/popover/popover.module.mjs +0 -19
  447. package/esm2020/lib/popup/popup.component.mjs +0 -147
  448. package/esm2020/lib/popup/popup.module.mjs +0 -25
  449. package/esm2020/lib/popup/popup.service.mjs +0 -93
  450. package/esm2020/lib/progress-bar/progress-bar.component.mjs +0 -19
  451. package/esm2020/lib/progress-bar/progress-bar.module.mjs +0 -19
  452. package/esm2020/lib/property-editor/editors/check-editor/check-editor.mjs +0 -61
  453. package/esm2020/lib/property-editor/editors/check-editor/check.module.mjs +0 -22
  454. package/esm2020/lib/property-editor/editors/color-editor/color.editor.mjs +0 -38
  455. package/esm2020/lib/property-editor/editors/color-editor/color.module.mjs +0 -24
  456. package/esm2020/lib/property-editor/editors/column-editor/column.editor.mjs +0 -115
  457. package/esm2020/lib/property-editor/editors/column-editor/column.module.mjs +0 -32
  458. package/esm2020/lib/property-editor/editors/conditional-color-editor/conditional-color.editor.mjs +0 -211
  459. package/esm2020/lib/property-editor/editors/conditional-color-editor/conditional-color.module.mjs +0 -78
  460. package/esm2020/lib/property-editor/editors/date-editor/date.editor.mjs +0 -51
  461. package/esm2020/lib/property-editor/editors/date-editor/date.module.mjs +0 -24
  462. package/esm2020/lib/property-editor/editors/number-editor/number.editor.mjs +0 -63
  463. package/esm2020/lib/property-editor/editors/number-editor/number.module.mjs +0 -24
  464. package/esm2020/lib/property-editor/editors/range-editor/range.editor.mjs +0 -140
  465. package/esm2020/lib/property-editor/editors/range-editor/range.module.mjs +0 -61
  466. package/esm2020/lib/property-editor/editors/searchbar-selectbox-editor/searchbar-selectbox-editor.mjs +0 -72
  467. package/esm2020/lib/property-editor/editors/selectbox-editor/selectbox.editor.mjs +0 -71
  468. package/esm2020/lib/property-editor/editors/selectbox-editor/selectbox.module.mjs +0 -25
  469. package/esm2020/lib/property-editor/editors/selection-editor/selection-editor.mjs +0 -69
  470. package/esm2020/lib/property-editor/editors/selection-editor/selection.module.mjs +0 -22
  471. package/esm2020/lib/property-editor/editors/switch-editor/number.editor.mjs +0 -29
  472. package/esm2020/lib/property-editor/editors/switch-editor/number.module.mjs +0 -25
  473. package/esm2020/lib/property-editor/editors/text-editor/text.editor.mjs +0 -32
  474. package/esm2020/lib/property-editor/editors/text-editor/text.module.mjs +0 -24
  475. package/esm2020/lib/property-editor/editors/textarea-editor/textarea.editor.mjs +0 -32
  476. package/esm2020/lib/property-editor/editors/textarea-editor/textarea.module.mjs +0 -24
  477. package/esm2020/lib/property-editor/editors/time-editor/time.editor.mjs +0 -43
  478. package/esm2020/lib/property-editor/editors/time-editor/time.module.mjs +0 -24
  479. package/esm2020/lib/property-editor/property-editor-renderer.directive.mjs +0 -157
  480. package/esm2020/lib/property-editor/property-editor.class.mjs +0 -102
  481. package/esm2020/lib/property-editor/property-editor.module.mjs +0 -196
  482. package/esm2020/lib/query-builder/query-builder-group.component.mjs +0 -124
  483. package/esm2020/lib/query-builder/query-builder-popup/query-builder-popup.component.mjs +0 -172
  484. package/esm2020/lib/query-builder/query-builder-rule.component.mjs +0 -399
  485. package/esm2020/lib/query-builder/query-builder.class.mjs +0 -20
  486. package/esm2020/lib/query-builder/query-builder.component.mjs +0 -87
  487. package/esm2020/lib/query-builder/query-builder.module.mjs +0 -62
  488. package/esm2020/lib/query-builder/query-builder.service.mjs +0 -197
  489. package/esm2020/lib/search-bar/search-bar.component.mjs +0 -286
  490. package/esm2020/lib/search-bar/search-bar.module.mjs +0 -63
  491. package/esm2020/lib/searchbox/searchbox.component.mjs +0 -81
  492. package/esm2020/lib/searchbox/searchbox.module.mjs +0 -24
  493. package/esm2020/lib/selectbox/selectbox.component.mjs +0 -961
  494. package/esm2020/lib/selectbox/selectbox.module.mjs +0 -44
  495. package/esm2020/lib/selectbox/selectbox2.component.mjs +0 -574
  496. package/esm2020/lib/selection-list/selection-list.component.mjs +0 -108
  497. package/esm2020/lib/selection-list/selection-list.module.mjs +0 -21
  498. package/esm2020/lib/switch/switch.component.mjs +0 -51
  499. package/esm2020/lib/switch/switch.module.mjs +0 -20
  500. package/esm2020/lib/tab-page/tab-page-Renderer.component.mjs +0 -71
  501. package/esm2020/lib/tab-page/tab-page-host.component.mjs +0 -114
  502. package/esm2020/lib/tab-page/tab-page.module.mjs +0 -21
  503. package/esm2020/lib/tab-page/tab-page.service.mjs +0 -160
  504. package/esm2020/lib/tab-strip/tab-strip.component.mjs +0 -36
  505. package/esm2020/lib/tab-strip/tab-strip.module.mjs +0 -19
  506. package/esm2020/lib/tab-view/dynamic-tabs.directive.mjs +0 -24
  507. package/esm2020/lib/tab-view/tab-view.component.mjs +0 -105
  508. package/esm2020/lib/tab-view/tab-view.module.mjs +0 -21
  509. package/esm2020/lib/tab-view/tab.component.mjs +0 -30
  510. package/esm2020/lib/textarea/textarea.component.mjs +0 -26
  511. package/esm2020/lib/textarea/textarea.module.mjs +0 -21
  512. package/esm2020/lib/textbox/textbox.component.mjs +0 -39
  513. package/esm2020/lib/textbox/textbox.module.mjs +0 -24
  514. package/esm2020/lib/time-picker/time-picker.component.mjs +0 -943
  515. package/esm2020/lib/time-picker/time-picker.module.mjs +0 -22
  516. package/esm2020/lib/toast/toast-message/toast-message.component.mjs +0 -74
  517. package/esm2020/lib/toast/toast-wrapper/toast-wrapper.component.mjs +0 -13
  518. package/esm2020/lib/toast/toast.module.mjs +0 -21
  519. package/esm2020/lib/toast/toast.service.mjs +0 -44
  520. package/esm2020/lib/toolbar/group-button/toolbar-group-button.component.mjs +0 -78
  521. package/esm2020/lib/toolbar/menu/toolbar-menu.component.mjs +0 -57
  522. package/esm2020/lib/toolbar/search/toolbar-search.component.mjs +0 -54
  523. package/esm2020/lib/toolbar/title/toolbar-title.component.mjs +0 -47
  524. package/esm2020/lib/toolbar/toolbar-item.mjs +0 -6
  525. package/esm2020/lib/toolbar/toolbar.component.mjs +0 -13
  526. package/esm2020/lib/toolbar/toolbar.module.mjs +0 -40
  527. package/esm2020/lib/tooltip/tooltip.directive.mjs +0 -100
  528. package/esm2020/lib/tooltip/tooltip.module.mjs +0 -19
  529. package/esm2020/lib/tree-side-menu/tree-side-menu.component.mjs +0 -646
  530. package/esm2020/lib/tree-side-menu/tree-side-menu.module.mjs +0 -35
  531. package/esm2020/lib/tree-view/tree-view.component.mjs +0 -775
  532. package/esm2020/lib/tree-view/tree-view.module.mjs +0 -22
  533. package/esm2020/lib/upload-file/upload-file.component.mjs +0 -208
  534. package/esm2020/lib/upload-file/upload-file.events.mjs +0 -2
  535. package/esm2020/lib/upload-file/upload-file.module.mjs +0 -24
  536. package/esm2020/lib/validation/validation-form.component.mjs +0 -65
  537. package/esm2020/lib/validation/validation-rule.widget.mjs +0 -111
  538. package/esm2020/lib/validation/validation.class.mjs +0 -2
  539. package/esm2020/lib/validation/validation.component.mjs +0 -89
  540. package/esm2020/lib/validation/validation.module.mjs +0 -34
  541. package/esm2020/public-api.mjs +0 -158
  542. package/fesm2015/acorex-components.mjs +0 -16013
  543. package/fesm2015/acorex-components.mjs.map +0 -1
  544. package/fesm2020/acorex-components.mjs.map +0 -1
@@ -0,0 +1,75 @@
1
+ import { Component, Input, ChangeDetectorRef, ChangeDetectionStrategy } from '@angular/core';
2
+ import { AXFilterColumnComponent } from '../filter.class';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "../../selection-list/selection-list.component";
5
+ export class AXFilterColumnSelectionComponent extends AXFilterColumnComponent {
6
+ cdr;
7
+ selectedItems = [];
8
+ items = [];
9
+ mode = 'single';
10
+ dataType = 'number';
11
+ constructor(cdr) {
12
+ super(cdr);
13
+ this.cdr = cdr;
14
+ }
15
+ get condition() {
16
+ const values = this.selectedItems.map(c => c.value);
17
+ if (values.length === 0) {
18
+ return null;
19
+ }
20
+ return {
21
+ condition: this.mode === 'single' ? 'equal' : 'contains',
22
+ field: this.field,
23
+ dataType: this.dataType,
24
+ value: this.mode === 'single' ? values[0] : values
25
+ };
26
+ }
27
+ clear() {
28
+ this.selectedItems = [];
29
+ super.clear();
30
+ }
31
+ onSelectChange(e) {
32
+ this.valueChange.emit();
33
+ }
34
+ setFilter(value, operator) {
35
+ if (value instanceof Array) {
36
+ this.selectedItems = this.items.filter(c => value.some(z => z === c.value));
37
+ }
38
+ else {
39
+ this.selectedItems = [this.items.find(c => c.value === value)];
40
+ }
41
+ super.setFilter(value, operator);
42
+ }
43
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AXFilterColumnSelectionComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
44
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AXFilterColumnSelectionComponent, selector: "ax-filter-column-selection", inputs: { items: "items", mode: "mode", dataType: "dataType" }, providers: [
45
+ { provide: AXFilterColumnComponent, useExisting: AXFilterColumnSelectionComponent }
46
+ ], usesInheritance: true, ngImport: i0, template: `
47
+ <div class="ax-filter-section">
48
+ <ax-selection-list [items]="items" (selectedItemsChange)="onSelectChange($event)" [mode]="mode" direction="vertical" [(selectedItems)]="selectedItems">
49
+ </ax-selection-list>
50
+ </div>
51
+ `, isInline: true, dependencies: [{ kind: "component", type: i1.AXSelectionListComponent, selector: "ax-selection-list", inputs: ["readonly", "value", "disabled", "size", "direction", "items", "mode", "textField", "valueField", "selectedItems", "selectedValues"], outputs: ["selectionChanged", "selectedItemsChange", "selectedValuesChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
52
+ }
53
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AXFilterColumnSelectionComponent, decorators: [{
54
+ type: Component,
55
+ args: [{
56
+ selector: 'ax-filter-column-selection',
57
+ template: `
58
+ <div class="ax-filter-section">
59
+ <ax-selection-list [items]="items" (selectedItemsChange)="onSelectChange($event)" [mode]="mode" direction="vertical" [(selectedItems)]="selectedItems">
60
+ </ax-selection-list>
61
+ </div>
62
+ `,
63
+ providers: [
64
+ { provide: AXFilterColumnComponent, useExisting: AXFilterColumnSelectionComponent }
65
+ ],
66
+ changeDetection: ChangeDetectionStrategy.OnPush
67
+ }]
68
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { items: [{
69
+ type: Input
70
+ }], mode: [{
71
+ type: Input
72
+ }], dataType: [{
73
+ type: Input
74
+ }] } });
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLWNvbHVtbi1zZWxlY3Rpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3NyYy9saWIvZGF0YS1maWx0ZXIvY29sdW1ucy9maWx0ZXItY29sdW1uLXNlbGVjdGlvbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0YsT0FBTyxFQUFxQix1QkFBdUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7QUFnQjdFLE1BQU0sT0FBTyxnQ0FBaUMsU0FBUSx1QkFBdUI7SUFnQm5EO0lBYnRCLGFBQWEsR0FBVSxFQUFFLENBQUM7SUFHMUIsS0FBSyxHQUFrQixFQUFFLENBQUM7SUFHMUIsSUFBSSxHQUFHLFFBQVEsQ0FBQztJQUdoQixRQUFRLEdBQVEsUUFBUSxDQUFDO0lBSXpCLFlBQXNCLEdBQXNCO1FBQ3hDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQURPLFFBQUcsR0FBSCxHQUFHLENBQW1CO0lBRTVDLENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDVCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwRCxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ3JCLE9BQU8sSUFBSSxDQUFDO1NBRWY7UUFDRCxPQUFPO1lBQ0gsU0FBUyxFQUFFLElBQUksQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFVBQVU7WUFDeEQsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1lBQ2pCLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtZQUN2QixLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTTtTQUNyRCxDQUFBO0lBQ0wsQ0FBQztJQUNELEtBQUs7UUFDRCxJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztRQUN4QixLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDbEIsQ0FBQztJQUNELGNBQWMsQ0FBQyxDQUFDO1FBQ1osSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUU1QixDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQVUsRUFBRSxRQUFnQjtRQUNsQyxJQUFJLEtBQUssWUFBWSxLQUFLLEVBQUU7WUFDeEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7U0FDL0U7YUFDSTtZQUNELElBQUksQ0FBQyxhQUFhLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQztTQUNsRTtRQUNELEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7d0dBbERRLGdDQUFnQzs0RkFBaEMsZ0NBQWdDLHFIQUw5QjtZQUNQLEVBQUUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFdBQVcsRUFBRSxnQ0FBZ0MsRUFBRTtTQUN0RixpREFSUzs7Ozs7S0FLVDs7NEZBTVEsZ0NBQWdDO2tCQWI1QyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSw0QkFBNEI7b0JBQ3RDLFFBQVEsRUFBRTs7Ozs7S0FLVDtvQkFDRCxTQUFTLEVBQUU7d0JBQ1AsRUFBRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsV0FBVyxrQ0FBa0MsRUFBRTtxQkFDdEY7b0JBQ0QsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07aUJBQ2xEO3dHQU9HLEtBQUs7c0JBREosS0FBSztnQkFJTixJQUFJO3NCQURILEtBQUs7Z0JBSU4sUUFBUTtzQkFEUCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWEZpbHRlckNvbmRpdGlvbiwgQVhGaWx0ZXJDb2x1bW5Db21wb25lbnQgfSBmcm9tICcuLi9maWx0ZXIuY2xhc3MnO1xuaW1wb3J0IHsgQVhDaGVja0l0ZW0gfSBmcm9tICdAYWNvcmV4L2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2F4LWZpbHRlci1jb2x1bW4tc2VsZWN0aW9uJyxcbiAgICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJheC1maWx0ZXItc2VjdGlvblwiPlxuICAgIDxheC1zZWxlY3Rpb24tbGlzdCAgW2l0ZW1zXT1cIml0ZW1zXCIgKHNlbGVjdGVkSXRlbXNDaGFuZ2UpPVwib25TZWxlY3RDaGFuZ2UoJGV2ZW50KVwiIFttb2RlXT1cIm1vZGVcIiBkaXJlY3Rpb249XCJ2ZXJ0aWNhbFwiIFsoc2VsZWN0ZWRJdGVtcyldPVwic2VsZWN0ZWRJdGVtc1wiPlxuICAgIDwvYXgtc2VsZWN0aW9uLWxpc3Q+XG4gPC9kaXY+XG4gICAgYCxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgeyBwcm92aWRlOiBBWEZpbHRlckNvbHVtbkNvbXBvbmVudCwgdXNlRXhpc3Rpbmc6IEFYRmlsdGVyQ29sdW1uU2VsZWN0aW9uQ29tcG9uZW50IH1cbiAgICBdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEFYRmlsdGVyQ29sdW1uU2VsZWN0aW9uQ29tcG9uZW50IGV4dGVuZHMgQVhGaWx0ZXJDb2x1bW5Db21wb25lbnQge1xuXG5cbiAgICBzZWxlY3RlZEl0ZW1zOiBhbnlbXSA9IFtdO1xuXG4gICAgQElucHV0KClcbiAgICBpdGVtczogQVhDaGVja0l0ZW1bXSA9IFtdO1xuXG4gICAgQElucHV0KClcbiAgICBtb2RlID0gJ3NpbmdsZSc7XG5cbiAgICBASW5wdXQoKVxuICAgIGRhdGFUeXBlOiBhbnkgPSAnbnVtYmVyJztcblxuXG5cbiAgICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge1xuICAgICAgICBzdXBlcihjZHIpO1xuICAgIH1cblxuICAgIGdldCBjb25kaXRpb24oKTogQVhGaWx0ZXJDb25kaXRpb24ge1xuICAgICAgICBjb25zdCB2YWx1ZXMgPSB0aGlzLnNlbGVjdGVkSXRlbXMubWFwKGMgPT4gYy52YWx1ZSk7XG4gICAgICAgIGlmICh2YWx1ZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcblxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjb25kaXRpb246IHRoaXMubW9kZSA9PT0gJ3NpbmdsZScgPyAnZXF1YWwnIDogJ2NvbnRhaW5zJyxcbiAgICAgICAgICAgIGZpZWxkOiB0aGlzLmZpZWxkLFxuICAgICAgICAgICAgZGF0YVR5cGU6IHRoaXMuZGF0YVR5cGUsXG4gICAgICAgICAgICB2YWx1ZTogdGhpcy5tb2RlID09PSAnc2luZ2xlJyA/IHZhbHVlc1swXSA6IHZhbHVlc1xuICAgICAgICB9XG4gICAgfVxuICAgIGNsZWFyKCkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBbXTtcbiAgICAgICAgc3VwZXIuY2xlYXIoKTtcbiAgICB9XG4gICAgb25TZWxlY3RDaGFuZ2UoZSkge1xuICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQoKTtcblxuICAgIH1cblxuICAgIHNldEZpbHRlcih2YWx1ZTogYW55LCBvcGVyYXRvcjogc3RyaW5nKSB7XG4gICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSB0aGlzLml0ZW1zLmZpbHRlcihjID0+IHZhbHVlLnNvbWUoeiA9PiB6ID09PSBjLnZhbHVlKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBbdGhpcy5pdGVtcy5maW5kKGMgPT4gYy52YWx1ZSA9PT0gdmFsdWUpXTtcbiAgICAgICAgfVxuICAgICAgICBzdXBlci5zZXRGaWx0ZXIodmFsdWUsIG9wZXJhdG9yKTtcbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,119 @@
1
+ import { Component, ChangeDetectorRef } from '@angular/core';
2
+ import { AXFilterColumnComponent } from '../filter.class';
3
+ import { debounceTime, distinctUntilChanged } from 'rxjs/operators';
4
+ import { Observable } from 'rxjs';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/common";
7
+ import * as i2 from "@angular/forms";
8
+ import * as i3 from "../../textbox/textbox.component";
9
+ export class AXFilterColumnStringComponent extends AXFilterColumnComponent {
10
+ cdr;
11
+ operator = 'contains';
12
+ operators = [
13
+ {
14
+ title: 'is',
15
+ value: 'equal'
16
+ },
17
+ {
18
+ title: `isn't`,
19
+ value: 'not-equal'
20
+ },
21
+ {
22
+ title: 'contains',
23
+ value: 'contains'
24
+ },
25
+ {
26
+ title: 'not contains',
27
+ value: 'not-contains'
28
+ },
29
+ {
30
+ title: 'start with',
31
+ value: 'start-with'
32
+ },
33
+ {
34
+ title: 'end with',
35
+ value: 'end-with'
36
+ },
37
+ {
38
+ title: 'is empty',
39
+ value: 'is-empty'
40
+ },
41
+ {
42
+ title: `isn't empty`,
43
+ value: 'is-not-empty'
44
+ }
45
+ ];
46
+ constructor(cdr) {
47
+ super(cdr);
48
+ this.cdr = cdr;
49
+ }
50
+ searchChangeObserver;
51
+ onOperatorChange(e) {
52
+ this.valueChange.emit();
53
+ }
54
+ // TODO: Check this method work correctly
55
+ onTextChange(e) {
56
+ if (!this.searchChangeObserver) {
57
+ return new Observable(observer => {
58
+ this.searchChangeObserver = observer;
59
+ })
60
+ .pipe(debounceTime(500))
61
+ .pipe(distinctUntilChanged())
62
+ .subscribe(c => {
63
+ this.valueChange.emit();
64
+ });
65
+ }
66
+ this.searchChangeObserver.next(e);
67
+ }
68
+ get condition() {
69
+ return {
70
+ condition: this.operator,
71
+ field: this.field,
72
+ dataType: 'string',
73
+ value: this.value
74
+ };
75
+ }
76
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AXFilterColumnStringComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
77
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AXFilterColumnStringComponent, selector: "ax-filter-column-string", providers: [
78
+ { provide: AXFilterColumnComponent, useExisting: AXFilterColumnStringComponent }
79
+ ], usesInheritance: true, ngImport: i0, template: `
80
+ <div class="ax-filter-section">
81
+ <div>
82
+ <select (ngModelChange)="onOperatorChange($event)" class="form-control form-control-sm" [(ngModel)]="operator">
83
+ <option *ngFor="let o of operators" value="{{o.value}}">
84
+ {{o.title}}
85
+ </option>
86
+ </select>
87
+ </div>
88
+ <div>
89
+ <ax-text-box placeholder="Type here" (textChange)="onTextChange($event)" [(value)]="value" *ngIf="operator!='is-not-empty' && operator!='is-empty'">
90
+ </ax-text-box>
91
+ </div>
92
+ </div>
93
+ `, isInline: true, 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.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.AXTextBoxComponent, selector: "ax-text-box", inputs: ["mask", "showMask", "type", "maxLength", "maskGuid", "maskPlaceholder", "maskKeepCharPositions"] }] });
94
+ }
95
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AXFilterColumnStringComponent, decorators: [{
96
+ type: Component,
97
+ args: [{
98
+ selector: 'ax-filter-column-string',
99
+ template: `
100
+ <div class="ax-filter-section">
101
+ <div>
102
+ <select (ngModelChange)="onOperatorChange($event)" class="form-control form-control-sm" [(ngModel)]="operator">
103
+ <option *ngFor="let o of operators" value="{{o.value}}">
104
+ {{o.title}}
105
+ </option>
106
+ </select>
107
+ </div>
108
+ <div>
109
+ <ax-text-box placeholder="Type here" (textChange)="onTextChange($event)" [(value)]="value" *ngIf="operator!='is-not-empty' && operator!='is-empty'">
110
+ </ax-text-box>
111
+ </div>
112
+ </div>
113
+ `,
114
+ providers: [
115
+ { provide: AXFilterColumnComponent, useExisting: AXFilterColumnStringComponent }
116
+ ]
117
+ }]
118
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; } });
119
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLWNvbHVtbi1zdHJpbmcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3NyYy9saWIvZGF0YS1maWx0ZXIvY29sdW1ucy9maWx0ZXItY29sdW1uLXN0cmluZy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBQyxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1RCxPQUFPLEVBQXFCLHVCQUF1QixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDN0UsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7O0FBc0JsQyxNQUFNLE9BQU8sNkJBQThCLFNBQVEsdUJBQXVCO0lBdUNoRDtJQXBDdEIsUUFBUSxHQUFXLFVBQVUsQ0FBQztJQUM5QixTQUFTLEdBQVU7UUFDZjtZQUNJLEtBQUssRUFBRSxJQUFJO1lBQ1gsS0FBSyxFQUFFLE9BQU87U0FDakI7UUFDRDtZQUNJLEtBQUssRUFBRSxPQUFPO1lBQ2QsS0FBSyxFQUFFLFdBQVc7U0FDckI7UUFDRDtZQUNJLEtBQUssRUFBRSxVQUFVO1lBQ2pCLEtBQUssRUFBRSxVQUFVO1NBQ3BCO1FBQ0Q7WUFDSSxLQUFLLEVBQUUsY0FBYztZQUNyQixLQUFLLEVBQUUsY0FBYztTQUN4QjtRQUNEO1lBQ0ksS0FBSyxFQUFFLFlBQVk7WUFDbkIsS0FBSyxFQUFFLFlBQVk7U0FDdEI7UUFDRDtZQUNJLEtBQUssRUFBRSxVQUFVO1lBQ2pCLEtBQUssRUFBRSxVQUFVO1NBQ3BCO1FBQ0Q7WUFDSSxLQUFLLEVBQUUsVUFBVTtZQUNqQixLQUFLLEVBQUUsVUFBVTtTQUNwQjtRQUNEO1lBQ0ksS0FBSyxFQUFFLGFBQWE7WUFDcEIsS0FBSyxFQUFFLGNBQWM7U0FDeEI7S0FDSixDQUFDO0lBRUYsWUFBc0IsR0FBc0I7UUFDeEMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRE8sUUFBRyxHQUFILEdBQUcsQ0FBbUI7SUFFNUMsQ0FBQztJQUVPLG9CQUFvQixDQUFNO0lBRWxDLGdCQUFnQixDQUFDLENBQUM7UUFFZCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO0lBRTVCLENBQUM7SUFFRCx5Q0FBeUM7SUFDekMsWUFBWSxDQUFDLENBQUM7UUFDVixJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFO1lBQzVCLE9BQU8sSUFBSSxVQUFVLENBQUMsUUFBUSxDQUFDLEVBQUU7Z0JBQzdCLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxRQUFRLENBQUM7WUFDekMsQ0FBQyxDQUFDO2lCQUNHLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7aUJBQ3ZCLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO2lCQUM1QixTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ1gsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUM1QixDQUFDLENBQUMsQ0FBQztTQUNWO1FBQ0QsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1QsT0FBTztZQUNILFNBQVMsRUFBRSxJQUFJLENBQUMsUUFBUTtZQUN4QixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7WUFDakIsUUFBUSxFQUFFLFFBQVE7WUFDbEIsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1NBQ3BCLENBQUE7SUFDTCxDQUFDO3dHQXpFUSw2QkFBNkI7NEZBQTdCLDZCQUE2QixrREFKM0I7WUFDUCxFQUFFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxXQUFXLEVBQUUsNkJBQTZCLEVBQUU7U0FDbkYsaURBakJTOzs7Ozs7Ozs7Ozs7OztLQWNUOzs0RkFLUSw2QkFBNkI7a0JBckJ6QyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSx5QkFBeUI7b0JBQ25DLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7S0FjVDtvQkFDRCxTQUFTLEVBQUU7d0JBQ1AsRUFBRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsV0FBVywrQkFBK0IsRUFBRTtxQkFDbkY7aUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsQ2hhbmdlRGV0ZWN0b3JSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYRmlsdGVyQ29uZGl0aW9uLCBBWEZpbHRlckNvbHVtbkNvbXBvbmVudCB9IGZyb20gJy4uL2ZpbHRlci5jbGFzcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdheC1maWx0ZXItY29sdW1uLXN0cmluZycsXG4gICAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwiYXgtZmlsdGVyLXNlY3Rpb25cIj5cbiAgICA8ZGl2PlxuICAgICAgICA8c2VsZWN0IChuZ01vZGVsQ2hhbmdlKT1cIm9uT3BlcmF0b3JDaGFuZ2UoJGV2ZW50KVwiIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiICBbKG5nTW9kZWwpXT1cIm9wZXJhdG9yXCI+XG4gICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBvIG9mIG9wZXJhdG9yc1wiIHZhbHVlPVwie3tvLnZhbHVlfX1cIj5cbiAgICAgICAgICAgICAgICB7e28udGl0bGV9fVxuICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgIDwvc2VsZWN0PlxuICAgIDwvZGl2PlxuICAgIDxkaXY+XG4gICAgICAgIDxheC10ZXh0LWJveCBwbGFjZWhvbGRlcj1cIlR5cGUgaGVyZVwiICh0ZXh0Q2hhbmdlKT1cIm9uVGV4dENoYW5nZSgkZXZlbnQpXCIgWyh2YWx1ZSldPVwidmFsdWVcIiAqbmdJZj1cIm9wZXJhdG9yIT0naXMtbm90LWVtcHR5JyAmJiBvcGVyYXRvciE9J2lzLWVtcHR5J1wiPlxuICAgICAgICA8L2F4LXRleHQtYm94PlxuICAgIDwvZGl2PlxuPC9kaXY+XG4gICAgYCxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgeyBwcm92aWRlOiBBWEZpbHRlckNvbHVtbkNvbXBvbmVudCwgdXNlRXhpc3Rpbmc6IEFYRmlsdGVyQ29sdW1uU3RyaW5nQ29tcG9uZW50IH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIEFYRmlsdGVyQ29sdW1uU3RyaW5nQ29tcG9uZW50IGV4dGVuZHMgQVhGaWx0ZXJDb2x1bW5Db21wb25lbnQge1xuXG5cbiAgICBvcGVyYXRvcjogc3RyaW5nID0gJ2NvbnRhaW5zJztcbiAgICBvcGVyYXRvcnM6IGFueVtdID0gW1xuICAgICAgICB7XG4gICAgICAgICAgICB0aXRsZTogJ2lzJyxcbiAgICAgICAgICAgIHZhbHVlOiAnZXF1YWwnXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIHRpdGxlOiBgaXNuJ3RgLFxuICAgICAgICAgICAgdmFsdWU6ICdub3QtZXF1YWwnXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIHRpdGxlOiAnY29udGFpbnMnLFxuICAgICAgICAgICAgdmFsdWU6ICdjb250YWlucydcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgdGl0bGU6ICdub3QgY29udGFpbnMnLFxuICAgICAgICAgICAgdmFsdWU6ICdub3QtY29udGFpbnMnXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIHRpdGxlOiAnc3RhcnQgd2l0aCcsXG4gICAgICAgICAgICB2YWx1ZTogJ3N0YXJ0LXdpdGgnXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIHRpdGxlOiAnZW5kIHdpdGgnLFxuICAgICAgICAgICAgdmFsdWU6ICdlbmQtd2l0aCdcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgdGl0bGU6ICdpcyBlbXB0eScsXG4gICAgICAgICAgICB2YWx1ZTogJ2lzLWVtcHR5J1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICB0aXRsZTogYGlzbid0IGVtcHR5YCxcbiAgICAgICAgICAgIHZhbHVlOiAnaXMtbm90LWVtcHR5J1xuICAgICAgICB9XG4gICAgXTtcblxuICAgIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gICAgICAgIHN1cGVyKGNkcik7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZWFyY2hDaGFuZ2VPYnNlcnZlcjogYW55O1xuXG4gICAgb25PcGVyYXRvckNoYW5nZShlKSB7XG5cbiAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KCk7XG5cbiAgICB9XG5cbiAgICAvLyBUT0RPOiBDaGVjayB0aGlzIG1ldGhvZCB3b3JrIGNvcnJlY3RseVxuICAgIG9uVGV4dENoYW5nZShlKSB7XG4gICAgICAgIGlmICghdGhpcy5zZWFyY2hDaGFuZ2VPYnNlcnZlcikge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKG9ic2VydmVyID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaENoYW5nZU9ic2VydmVyID0gb2JzZXJ2ZXI7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5waXBlKGRlYm91bmNlVGltZSg1MDApKVxuICAgICAgICAgICAgICAgIC5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZShjID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZWFyY2hDaGFuZ2VPYnNlcnZlci5uZXh0KGUpO1xuICAgIH1cblxuICAgIGdldCBjb25kaXRpb24oKTogQVhGaWx0ZXJDb25kaXRpb24ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY29uZGl0aW9uOiB0aGlzLm9wZXJhdG9yLFxuICAgICAgICAgICAgZmllbGQ6IHRoaXMuZmllbGQsXG4gICAgICAgICAgICBkYXRhVHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICB2YWx1ZTogdGhpcy52YWx1ZVxuICAgICAgICB9XG4gICAgfVxufVxuIl19
@@ -0,0 +1,267 @@
1
+ import { Component, Input, ViewChild, ViewChildren, QueryList, ViewEncapsulation, ChangeDetectionStrategy, Output, EventEmitter, ChangeDetectorRef, ElementRef } from '@angular/core';
2
+ import { AXFilterColumnComponent } from '../filter.class';
3
+ import { AXHtmlUtil } from '@acorex/core';
4
+ import { AXMenuComponent } from '../../menu/menu.component';
5
+ import { AXTextBoxComponent } from '../../textbox/textbox.component';
6
+ import { AXToastService } from '../../toast/toast.service';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "../../toast/toast.service";
9
+ import * as i2 from "@angular/common";
10
+ import * as i3 from "../../panel-box/panel-box.component";
11
+ import * as i4 from "../../checkbox/checkbox.component";
12
+ import * as i5 from "../../textbox/textbox.component";
13
+ import * as i6 from "../../validation/validation.component";
14
+ import * as i7 from "../../validation/validation-rule.widget";
15
+ import * as i8 from "../../toolbar/toolbar.component";
16
+ import * as i9 from "../../toolbar/menu/toolbar-menu.component";
17
+ import * as i10 from "../../toolbar/title/toolbar-title.component";
18
+ import * as i11 from "../../button/button.component";
19
+ import * as i12 from "../columns/filter-column-string.component";
20
+ import * as i13 from "../columns/filter-column-selection.component";
21
+ import * as i14 from "../columns/filter-column-date.component";
22
+ import * as i15 from "../columns/filter-column-number.component";
23
+ export class AXFilterPanelComponent {
24
+ cdr;
25
+ toast;
26
+ panel;
27
+ footer;
28
+ savedList;
29
+ body;
30
+ menu;
31
+ tbxName;
32
+ filters;
33
+ groups = [];
34
+ predefinedFilters = [];
35
+ mode = 'click';
36
+ saveItems = [
37
+ {
38
+ name: 'saveAs',
39
+ text: 'Save',
40
+ startIcon: 'fas fa-save',
41
+ items: [
42
+ {
43
+ name: 'save',
44
+ text: 'Save current'
45
+ },
46
+ {
47
+ name: 'saveAs',
48
+ text: 'Save as New'
49
+ }
50
+ ]
51
+ },
52
+ ];
53
+ filterChange = new EventEmitter();
54
+ constructor(cdr, toast) {
55
+ this.cdr = cdr;
56
+ this.toast = toast;
57
+ }
58
+ apply() {
59
+ this.filterChange.emit(this.value);
60
+ this.updateMenu();
61
+ }
62
+ clear() {
63
+ this.filters.forEach(e => {
64
+ e.clear();
65
+ });
66
+ this.predefinedFilters.forEach(c => {
67
+ c.selected = false;
68
+ });
69
+ this.filterChange.emit(this.value);
70
+ this.updateMenu();
71
+ }
72
+ onValueChange(e) {
73
+ if (this.mode === 'immediate') {
74
+ setTimeout(() => {
75
+ this.filterChange.emit(this.value);
76
+ this.updateMenu();
77
+ }, 50);
78
+ }
79
+ }
80
+ onCheckValueChange(v, e) {
81
+ if (!e.value && this.mode === 'immediate') {
82
+ this.filters.forEach(c => {
83
+ if (c.field === v.field) {
84
+ c.clear();
85
+ }
86
+ });
87
+ setTimeout(() => {
88
+ this.filterChange.emit(this.value.filter(c => c.field !== v.field));
89
+ this.updateMenu();
90
+ }, 50);
91
+ }
92
+ }
93
+ get value() {
94
+ const con = [];
95
+ if (this.filters) {
96
+ this.filters.forEach(e => {
97
+ if (e.active && e.condition && ((e.condition.value != null) || (e.condition.value == null && (e.condition.condition === 'is-empty' || e.condition.condition === 'is-not-empty')))) {
98
+ con.push(e.condition);
99
+ }
100
+ });
101
+ }
102
+ return con;
103
+ }
104
+ load(filters) {
105
+ this.filters.forEach(e => {
106
+ e.clear();
107
+ });
108
+ this.cancelSaveFilter();
109
+ filters.forEach(f => {
110
+ const col = this.filters.find(c => c.field === f.field);
111
+ if (col) {
112
+ col.setFilter(f.value, f.condition);
113
+ }
114
+ });
115
+ this.filterChange.emit(this.value);
116
+ this.updateMenu();
117
+ }
118
+ ngAfterViewInit() {
119
+ const footer = this.panel.nativeElement.querySelector('.footer');
120
+ if (!footer) {
121
+ this.body.nativeElement.style.height = 'calc(100% - 110px)';
122
+ }
123
+ setTimeout(() => {
124
+ if (this.predefinedFilters) {
125
+ this.setFilterByIndex(0);
126
+ }
127
+ else {
128
+ this.clear();
129
+ }
130
+ }, 100);
131
+ this.applySize();
132
+ }
133
+ setFilterByIndex(index) {
134
+ const f = this.predefinedFilters[index];
135
+ if (f) {
136
+ this.setFilterByName(f.name);
137
+ }
138
+ }
139
+ setFilterByName(name) {
140
+ const f = this.predefinedFilters.find(c => c.name === name);
141
+ if (f) {
142
+ this.load(f.value);
143
+ this.predefinedFilters.forEach(c => {
144
+ c.selected = false;
145
+ });
146
+ f.selected = true;
147
+ }
148
+ }
149
+ removeFilter(f) {
150
+ this.predefinedFilters = this.predefinedFilters.filter(c => c.name != f.name);
151
+ this.updateMenu();
152
+ }
153
+ get currentFilter() {
154
+ return this.predefinedFilters.find(c => c.selected);
155
+ }
156
+ applySize() {
157
+ let h = 0;
158
+ h += this.footer.nativeElement.getBoundingClientRect().height;
159
+ h += this.savedList.nativeElement.getBoundingClientRect().height;
160
+ h += 10;
161
+ this.body.nativeElement.style.height = `calc(100% - ${h}px)`;
162
+ }
163
+ // SAVE FILTERS
164
+ updateMenu() {
165
+ setTimeout(() => {
166
+ this.saveItems[0].items[0].visible = this.currentFilter != null;
167
+ this.saveItems[0].items[1].visible = this.currentFilter != null;
168
+ // this.menu.update();
169
+ }, 100);
170
+ }
171
+ applySaveFilter() {
172
+ const f = this.currentFilter;
173
+ if (f) {
174
+ // TODO
175
+ // this.tbxName.validate().then(c => {
176
+ // if (c.result) {
177
+ // f.value = this.value;
178
+ // (f as any).isInEdit = false;
179
+ // (f as any).isNew = false;
180
+ // f.title = this.tbxName.value;
181
+ // this.toast.success('Filter saved successfully.');
182
+ // this.updateMenu();
183
+ // }
184
+ // });
185
+ }
186
+ }
187
+ cancelSaveFilter() {
188
+ const f = this.currentFilter;
189
+ if (f) {
190
+ if (f.isNew) {
191
+ this.removeFilter(f);
192
+ }
193
+ else {
194
+ f.isInEdit = false;
195
+ }
196
+ }
197
+ this.updateMenu();
198
+ }
199
+ onMenuItemClick(e) {
200
+ if (e.name === 'save') {
201
+ this.applySaveFilter();
202
+ }
203
+ if (e.name === 'saveAs') {
204
+ const f = {
205
+ name: AXHtmlUtil.getUID(),
206
+ title: '',
207
+ value: this.value
208
+ };
209
+ this.predefinedFilters.push(f);
210
+ f.isNew = true;
211
+ this.setFilterByName(f.name);
212
+ this.handleRenameClick(f);
213
+ }
214
+ }
215
+ tbxNameOnKey(e) {
216
+ if (e.type === 'keyup' && e.key === 'Enter') {
217
+ this.applySaveFilter();
218
+ }
219
+ if (e.type === 'keyup' && e.key === 'Escape') {
220
+ this.cancelSaveFilter();
221
+ }
222
+ }
223
+ handleRenameClick(f) {
224
+ f.isInEdit = true;
225
+ this.cdr.detectChanges();
226
+ setTimeout(() => {
227
+ this.tbxName.value = f.title;
228
+ this.tbxName.focus();
229
+ }, 50);
230
+ }
231
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AXFilterPanelComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.AXToastService }], target: i0.ɵɵFactoryTarget.Component });
232
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AXFilterPanelComponent, selector: "ax-filter-panel", inputs: { groups: "groups", predefinedFilters: "predefinedFilters", mode: "mode" }, outputs: { filterChange: "filterChange" }, viewQueries: [{ propertyName: "panel", first: true, predicate: ["panel"], descendants: true, static: true }, { propertyName: "footer", first: true, predicate: ["footer"], descendants: true, static: true }, { propertyName: "savedList", first: true, predicate: ["savedList"], descendants: true, static: true }, { propertyName: "body", first: true, predicate: ["body"], descendants: true, static: true }, { propertyName: "menu", first: true, predicate: ["menu"], descendants: true }, { propertyName: "tbxName", first: true, predicate: ["tbxName"], descendants: true, static: true }, { propertyName: "filters", predicate: AXFilterColumnComponent, descendants: true }], ngImport: i0, template: "<div class=\"ax-filter-panel\" #panel>\n <div class=\"saved-list\" #savedList>\n <ax-panel-box #fb>\n <ng-template #header>\n <div class=\"group-header\" (click)=\"fb.toggle()\">\n <ax-toolbar>\n <ax-toolbar-title>\n <div>\n <i class=\"far fa-filter\"></i>\n <span>SAVED FILTERS</span>\n </div>\n </ax-toolbar-title>\n <ax-toolbar-menu #menu [items]=\"saveItems\" (onItemClick)=\"onMenuItemClick($event)\">\n </ax-toolbar-menu>\n </ax-toolbar>\n </div>\n </ng-template>\n\n <div class=\"list\">\n <ng-container *ngIf=\"predefinedFilters && predefinedFilters.length; else emptyList\">\n <ul>\n <ng-container *ngFor=\"let f of predefinedFilters\">\n <ng-container *ngIf=\"!f.isInEdit; else editMode\">\n <li (click)=\"setFilterByName(f.name)\">\n <div class=\"item-line\" [class.selected]=\"f.selected\">\n <span class=\"title\"><i class=\"far fa-check\"></i> {{f.title}}</span>\n <span class=\"tools\"><i class=\"far fa-pen text-primary\" title=\"Rename\"\n (click)=\"handleRenameClick(f)\"></i>&nbsp;<i\n class=\"far fa-times text-danger\" title=\"Remove\"\n (click)=\"removeFilter(f)\"></i></span>\n </div>\n </li>\n </ng-container>\n <ng-template #editMode>\n <li>\n <ax-text-box #tbxName placeholder=\"Enter filter's title here\"\n (onKey)=\"tbxNameOnKey($event)\">\n <ax-button title=\"Save\" type=\"primary\" (onClick)=\"applySaveFilter()\">\n <i class=\"far fa-check\"></i>\n </ax-button>\n <ax-button title=\"Cancel\" type=\"danger\" (onClick)=\"cancelSaveFilter()\">\n <i class=\"far fa-times\"></i>\n </ax-button>\n <ax-validation>\n <ax-validation-rule type=\"required\" message=\"this field is required\">\n </ax-validation-rule>\n </ax-validation>\n </ax-text-box>\n </li>\n </ng-template>\n </ng-container>\n </ul>\n </ng-container>\n <ng-template #emptyList>\n <div class=\"empty-list\">\n Empty\n </div>\n </ng-template>\n </div>\n </ax-panel-box>\n </div>\n <div class=\"body\" #body>\n <ng-container *ngFor=\"let g of groups\">\n <ax-panel-box #fb>\n <ng-template #header>\n <div class=\"group-header\" *ngIf=\"g.caption\" (click)=\"fb.toggle()\">\n <i\n [ngClass]=\"{ 'far fa-minus-square' : !fb.collapsed ,'fas fa-plus-square' : fb.collapsed }\"></i>\n <span>{{g.caption}}</span>\n </div>\n </ng-template>\n <ng-container *ngFor=\"let c of g.columns\">\n <div class=\"ax-filter-item-header\" [style.margin-bottom.px]=\"c.active ? 0 : 2\">\n <ax-check-box (onValueChanged)=\"onCheckValueChange(c,$event)\" [label]=\"c.caption\"\n [(value)]=\"c.active\">\n </ax-check-box>\n </div>\n <div [hidden]=\"!c.active\">\n <ng-container [ngSwitch]=\"c.type\">\n <ng-container *ngSwitchCase=\"'selection'\">\n <ax-filter-column-selection (valueChange)=\"onValueChange($event)\" [field]=\"c.field\"\n [(active)]=\"c.active\" [mode]=\"c.options.mode\" [items]=\"c.options.items\"\n [dataType]=\"c.options.dataType\">\n </ax-filter-column-selection>\n </ng-container>\n <ng-container *ngSwitchCase=\"'date'\">\n <ax-filter-column-date (valueChange)=\"onValueChange($event)\" [field]=\"c.field\"\n [(active)]=\"c.active\">\n </ax-filter-column-date>\n </ng-container>\n <ng-container *ngSwitchCase=\"'number'\">\n <ax-filter-column-number (valueChange)=\"onValueChange($event)\" [field]=\"c.field\"\n [(active)]=\"c.active\">\n </ax-filter-column-number>\n </ng-container>\n <ng-container *ngSwitchDefault>\n <ax-filter-column-string (valueChange)=\"onValueChange($event)\" [field]=\"c.field\"\n [(active)]=\"c.active\">\n </ax-filter-column-string>\n </ng-container>\n </ng-container>\n </div>\n </ng-container>\n </ax-panel-box>\n </ng-container>\n </div>\n\n <div *ngIf=\"mode=='click'\" class=\"footer\" #footer>\n <div class=\"filter-panel\">\n <ax-button (onClick)=\"apply()\" type=\"success\" size=\"sm\">\n <i class=\"far fa-filter\"></i>\n Apply Filter\n </ax-button>\n <ax-button (onClick)=\"clear();\" type=\"light \" size=\"sm\">\n <i class=\"far fa-eraser\"></i>\n Clear\n </ax-button>\n </div>\n </div>\n</div>", styles: [".ax-filter-panel{padding:2px;position:relative;height:100%;font-size:var(--font-md-size)}.ax-filter-panel .empty-list{text-align:center;padding:var(--sp-sm-size);color:var(--gray)}.ax-filter-panel .saved-list{border-bottom:1px solid var(--border-color)}.ax-filter-panel .saved-list .list ul{list-style-type:none;display:flex;flex-direction:column;padding:0;margin-bottom:var(--sp-md-size)}.ax-filter-panel .saved-list .list ul li .item-line{cursor:pointer;display:flex;flex-direction:row;justify-content:space-between}.ax-filter-panel .saved-list .list ul li .item-line .title i{opacity:.1}.ax-filter-panel .saved-list .list ul li .item-line .tools{display:inline}.ax-filter-panel .saved-list .list ul li .item-line .tools i{opacity:.2;cursor:pointer}.ax-filter-panel .saved-list .list ul li .item-line .tools i:hover{opacity:1}.ax-filter-panel .saved-list .list ul li .item-line.selected{font-weight:700}.ax-filter-panel .saved-list .list ul li .item-line.selected .title i{opacity:1}.ax-filter-panel .body{overflow-y:auto;overflow-x:hidden;height:calc(100% - 150px)}.ax-filter-panel .body .form-inline{justify-content:space-between}.ax-filter-panel .group-header{background:var(--white-color);display:flex;align-items:center;padding:var(--sp-sm-size) var(--sp-md-size);border-bottom:1px solid var(--border-color);background:var(--gray-dark-color);color:var(--gray-dark)}.ax-filter-panel .group-header i{margin-right:var(--sp-sm-size)}.ax-filter-panel .ax-filter-item-header{height:var(--el-md-size);display:flex;align-items:center}.ax-filter-panel .footer{width:100%;position:absolute;background-color:var(--white-color);bottom:0;padding:var(--sp-sm-size);border-top:1px solid var(--border-color)}.ax-filter-panel .footer .filter-panel{display:flex;align-items:center}.ax-filter-panel .footer .filter-panel ax-button{margin:0 2px}.ax-filter-panel .ax-filter-section{padding:var(--sp-md-size) var(--sp-lg-size);display:flex;justify-content:space-between;align-items:center}.ax-filter-panel .ax-filter-section>div{flex:1}.ax-filter-panel .ax-filter-section-value{padding:0px var(--sp-md-size) var(--sp-md-size) var(--sp-md-size);display:flex;justify-content:space-between;align-items:center}.ax-filter-panel .ax-filter-section-value>*{margin:0 3px}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i2.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "component", type: i3.AXPanelBoxComponent, selector: "ax-panel-box", inputs: ["size", "type", "caption", "collapsed", "allowCollapse"], outputs: ["collapsedChange"] }, { kind: "component", type: i4.AXCheckBoxComponent, selector: "ax-check-box", inputs: ["readonly", "disabled", "size", "label", "tabIndex", "indeterminate", "value"], outputs: ["onValueChanged", "valueChange", "onClick"] }, { kind: "component", type: i5.AXTextBoxComponent, selector: "ax-text-box", inputs: ["mask", "showMask", "type", "maxLength", "maskGuid", "maskPlaceholder", "maskKeepCharPositions"] }, { kind: "component", type: i6.AXValidationComponent, selector: "ax-validation", inputs: ["rules", "validateOn"], outputs: ["rulesChange", "showMessage"] }, { kind: "component", type: i7.AXValidationRuleComponent, selector: "ax-validation-rule", inputs: ["type", "message", "value", "enabled"] }, { kind: "component", type: i8.AXToolbarComponent, selector: "ax-toolbar" }, { kind: "component", type: i9.AXToolbarMenuComponent, selector: "ax-toolbar-menu", inputs: ["menuTemplate", "selection", "items"], outputs: ["onItemClick"] }, { kind: "component", type: i10.AXToolbarTitleComponent, selector: "ax-toolbar-title", inputs: ["text"] }, { kind: "component", type: i11.AXButtonComponent, selector: "ax-button", inputs: ["type", "icon", "submitBehavior", "cancelBehavior", "block", "loading", "selected"] }, { kind: "component", type: i12.AXFilterColumnStringComponent, selector: "ax-filter-column-string" }, { kind: "component", type: i13.AXFilterColumnSelectionComponent, selector: "ax-filter-column-selection", inputs: ["items", "mode", "dataType"] }, { kind: "component", type: i14.AXFilterColumnDateComponent, selector: "ax-filter-column-date" }, { kind: "component", type: i15.AXFilterColumnNumberComponent, selector: "ax-filter-column-number" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
233
+ }
234
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AXFilterPanelComponent, decorators: [{
235
+ type: Component,
236
+ args: [{ selector: 'ax-filter-panel', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"ax-filter-panel\" #panel>\n <div class=\"saved-list\" #savedList>\n <ax-panel-box #fb>\n <ng-template #header>\n <div class=\"group-header\" (click)=\"fb.toggle()\">\n <ax-toolbar>\n <ax-toolbar-title>\n <div>\n <i class=\"far fa-filter\"></i>\n <span>SAVED FILTERS</span>\n </div>\n </ax-toolbar-title>\n <ax-toolbar-menu #menu [items]=\"saveItems\" (onItemClick)=\"onMenuItemClick($event)\">\n </ax-toolbar-menu>\n </ax-toolbar>\n </div>\n </ng-template>\n\n <div class=\"list\">\n <ng-container *ngIf=\"predefinedFilters && predefinedFilters.length; else emptyList\">\n <ul>\n <ng-container *ngFor=\"let f of predefinedFilters\">\n <ng-container *ngIf=\"!f.isInEdit; else editMode\">\n <li (click)=\"setFilterByName(f.name)\">\n <div class=\"item-line\" [class.selected]=\"f.selected\">\n <span class=\"title\"><i class=\"far fa-check\"></i> {{f.title}}</span>\n <span class=\"tools\"><i class=\"far fa-pen text-primary\" title=\"Rename\"\n (click)=\"handleRenameClick(f)\"></i>&nbsp;<i\n class=\"far fa-times text-danger\" title=\"Remove\"\n (click)=\"removeFilter(f)\"></i></span>\n </div>\n </li>\n </ng-container>\n <ng-template #editMode>\n <li>\n <ax-text-box #tbxName placeholder=\"Enter filter's title here\"\n (onKey)=\"tbxNameOnKey($event)\">\n <ax-button title=\"Save\" type=\"primary\" (onClick)=\"applySaveFilter()\">\n <i class=\"far fa-check\"></i>\n </ax-button>\n <ax-button title=\"Cancel\" type=\"danger\" (onClick)=\"cancelSaveFilter()\">\n <i class=\"far fa-times\"></i>\n </ax-button>\n <ax-validation>\n <ax-validation-rule type=\"required\" message=\"this field is required\">\n </ax-validation-rule>\n </ax-validation>\n </ax-text-box>\n </li>\n </ng-template>\n </ng-container>\n </ul>\n </ng-container>\n <ng-template #emptyList>\n <div class=\"empty-list\">\n Empty\n </div>\n </ng-template>\n </div>\n </ax-panel-box>\n </div>\n <div class=\"body\" #body>\n <ng-container *ngFor=\"let g of groups\">\n <ax-panel-box #fb>\n <ng-template #header>\n <div class=\"group-header\" *ngIf=\"g.caption\" (click)=\"fb.toggle()\">\n <i\n [ngClass]=\"{ 'far fa-minus-square' : !fb.collapsed ,'fas fa-plus-square' : fb.collapsed }\"></i>\n <span>{{g.caption}}</span>\n </div>\n </ng-template>\n <ng-container *ngFor=\"let c of g.columns\">\n <div class=\"ax-filter-item-header\" [style.margin-bottom.px]=\"c.active ? 0 : 2\">\n <ax-check-box (onValueChanged)=\"onCheckValueChange(c,$event)\" [label]=\"c.caption\"\n [(value)]=\"c.active\">\n </ax-check-box>\n </div>\n <div [hidden]=\"!c.active\">\n <ng-container [ngSwitch]=\"c.type\">\n <ng-container *ngSwitchCase=\"'selection'\">\n <ax-filter-column-selection (valueChange)=\"onValueChange($event)\" [field]=\"c.field\"\n [(active)]=\"c.active\" [mode]=\"c.options.mode\" [items]=\"c.options.items\"\n [dataType]=\"c.options.dataType\">\n </ax-filter-column-selection>\n </ng-container>\n <ng-container *ngSwitchCase=\"'date'\">\n <ax-filter-column-date (valueChange)=\"onValueChange($event)\" [field]=\"c.field\"\n [(active)]=\"c.active\">\n </ax-filter-column-date>\n </ng-container>\n <ng-container *ngSwitchCase=\"'number'\">\n <ax-filter-column-number (valueChange)=\"onValueChange($event)\" [field]=\"c.field\"\n [(active)]=\"c.active\">\n </ax-filter-column-number>\n </ng-container>\n <ng-container *ngSwitchDefault>\n <ax-filter-column-string (valueChange)=\"onValueChange($event)\" [field]=\"c.field\"\n [(active)]=\"c.active\">\n </ax-filter-column-string>\n </ng-container>\n </ng-container>\n </div>\n </ng-container>\n </ax-panel-box>\n </ng-container>\n </div>\n\n <div *ngIf=\"mode=='click'\" class=\"footer\" #footer>\n <div class=\"filter-panel\">\n <ax-button (onClick)=\"apply()\" type=\"success\" size=\"sm\">\n <i class=\"far fa-filter\"></i>\n Apply Filter\n </ax-button>\n <ax-button (onClick)=\"clear();\" type=\"light \" size=\"sm\">\n <i class=\"far fa-eraser\"></i>\n Clear\n </ax-button>\n </div>\n </div>\n</div>", styles: [".ax-filter-panel{padding:2px;position:relative;height:100%;font-size:var(--font-md-size)}.ax-filter-panel .empty-list{text-align:center;padding:var(--sp-sm-size);color:var(--gray)}.ax-filter-panel .saved-list{border-bottom:1px solid var(--border-color)}.ax-filter-panel .saved-list .list ul{list-style-type:none;display:flex;flex-direction:column;padding:0;margin-bottom:var(--sp-md-size)}.ax-filter-panel .saved-list .list ul li .item-line{cursor:pointer;display:flex;flex-direction:row;justify-content:space-between}.ax-filter-panel .saved-list .list ul li .item-line .title i{opacity:.1}.ax-filter-panel .saved-list .list ul li .item-line .tools{display:inline}.ax-filter-panel .saved-list .list ul li .item-line .tools i{opacity:.2;cursor:pointer}.ax-filter-panel .saved-list .list ul li .item-line .tools i:hover{opacity:1}.ax-filter-panel .saved-list .list ul li .item-line.selected{font-weight:700}.ax-filter-panel .saved-list .list ul li .item-line.selected .title i{opacity:1}.ax-filter-panel .body{overflow-y:auto;overflow-x:hidden;height:calc(100% - 150px)}.ax-filter-panel .body .form-inline{justify-content:space-between}.ax-filter-panel .group-header{background:var(--white-color);display:flex;align-items:center;padding:var(--sp-sm-size) var(--sp-md-size);border-bottom:1px solid var(--border-color);background:var(--gray-dark-color);color:var(--gray-dark)}.ax-filter-panel .group-header i{margin-right:var(--sp-sm-size)}.ax-filter-panel .ax-filter-item-header{height:var(--el-md-size);display:flex;align-items:center}.ax-filter-panel .footer{width:100%;position:absolute;background-color:var(--white-color);bottom:0;padding:var(--sp-sm-size);border-top:1px solid var(--border-color)}.ax-filter-panel .footer .filter-panel{display:flex;align-items:center}.ax-filter-panel .footer .filter-panel ax-button{margin:0 2px}.ax-filter-panel .ax-filter-section{padding:var(--sp-md-size) var(--sp-lg-size);display:flex;justify-content:space-between;align-items:center}.ax-filter-panel .ax-filter-section>div{flex:1}.ax-filter-panel .ax-filter-section-value{padding:0px var(--sp-md-size) var(--sp-md-size) var(--sp-md-size);display:flex;justify-content:space-between;align-items:center}.ax-filter-panel .ax-filter-section-value>*{margin:0 3px}\n"] }]
237
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.AXToastService }]; }, propDecorators: { panel: [{
238
+ type: ViewChild,
239
+ args: ['panel', { static: true }]
240
+ }], footer: [{
241
+ type: ViewChild,
242
+ args: ['footer', { static: true }]
243
+ }], savedList: [{
244
+ type: ViewChild,
245
+ args: ['savedList', { static: true }]
246
+ }], body: [{
247
+ type: ViewChild,
248
+ args: ['body', { static: true }]
249
+ }], menu: [{
250
+ type: ViewChild,
251
+ args: ['menu', { static: false }]
252
+ }], tbxName: [{
253
+ type: ViewChild,
254
+ args: ['tbxName', { static: true }]
255
+ }], filters: [{
256
+ type: ViewChildren,
257
+ args: [AXFilterColumnComponent]
258
+ }], groups: [{
259
+ type: Input
260
+ }], predefinedFilters: [{
261
+ type: Input
262
+ }], mode: [{
263
+ type: Input
264
+ }], filterChange: [{
265
+ type: Output
266
+ }] } });
267
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLXBhbmVsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9zcmMvbGliL2RhdGEtZmlsdGVyL2ZpbHRlci1wYW5lbC9maWx0ZXItcGFuZWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3NyYy9saWIvZGF0YS1maWx0ZXIvZmlsdGVyLXBhbmVsL2ZpbHRlci1wYW5lbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLFVBQVUsRUFBb0IsTUFBTSxlQUFlLENBQUM7QUFDeE0sT0FBTyxFQUF1Qix1QkFBdUIsRUFBeUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN0SCxPQUFPLEVBQWMsVUFBVSxFQUFtQixNQUFNLGNBQWMsQ0FBQztBQUN2RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDckUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7OztBQWEzRCxNQUFNLE9BQU8sc0JBQXNCO0lBMENYO0lBQWdDO0lBeENkLEtBQUssQ0FBNkI7SUFDakMsTUFBTSxDQUE2QjtJQUNoQyxTQUFTLENBQTZCO0lBQzNDLElBQUksQ0FBNkI7SUFDaEMsSUFBSSxDQUFrQjtJQUNwQixPQUFPLENBQXFCO0lBRTdCLE9BQU8sQ0FBcUM7SUFHbkYsTUFBTSxHQUEwQixFQUFFLENBQUM7SUFHbkMsaUJBQWlCLEdBQXlCLEVBQUUsQ0FBQztJQUc3QyxJQUFJ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QkFDSSxPQUFPO3NCQUE5QyxTQUFTO3VCQUFDLFNBQVMsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBRUMsT0FBTztzQkFBN0MsWUFBWTt1QkFBQyx1QkFBdUI7Z0JBR3JDLE1BQU07c0JBREwsS0FBSztnQkFJTixpQkFBaUI7c0JBRGhCLEtBQUs7Z0JBSU4sSUFBSTtzQkFESCxLQUFLO2dCQXVCTixZQUFZO3NCQURYLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBWaWV3Q2hpbGQsIFZpZXdDaGlsZHJlbiwgUXVlcnlMaXN0LCBWaWV3RW5jYXBzdWxhdGlvbiwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBDaGFuZ2VEZXRlY3RvclJlZiwgRWxlbWVudFJlZiwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhGaWx0ZXJDb2x1bW5Hcm91cCwgQVhGaWx0ZXJDb2x1bW5Db21wb25lbnQsIEFYRmlsdGVyQ29uZGl0aW9uLCBBWEZpbHRlclByZWRlZmluZWQgfSBmcm9tICcuLi9maWx0ZXIuY2xhc3MnO1xuaW1wb3J0IHsgQVhNZW51SXRlbSwgQVhIdG1sVXRpbCwgQVhLZXlib2FyZEV2ZW50IH0gZnJvbSAnQGFjb3JleC9jb3JlJztcbmltcG9ydCB7IEFYTWVudUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL21lbnUvbWVudS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQVhUZXh0Qm94Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vdGV4dGJveC90ZXh0Ym94LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBWFRvYXN0U2VydmljZSB9IGZyb20gJy4uLy4uL3RvYXN0L3RvYXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgQVhWYWx1ZUV2ZW50IH0gZnJvbSAnLi4vLi4vYmFzZS9ldmVudHMuY2xhc3MnO1xuXG5cblxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2F4LWZpbHRlci1wYW5lbCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2ZpbHRlci1wYW5lbC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZmlsdGVyLXBhbmVsLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBBWEZpbHRlclBhbmVsQ29tcG9uZW50IHtcblxuICAgIEBWaWV3Q2hpbGQoJ3BhbmVsJywgeyBzdGF0aWM6IHRydWUgfSkgcGFuZWw6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuICAgIEBWaWV3Q2hpbGQoJ2Zvb3RlcicsIHsgc3RhdGljOiB0cnVlIH0pIGZvb3RlcjogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XG4gICAgQFZpZXdDaGlsZCgnc2F2ZWRMaXN0JywgeyBzdGF0aWM6IHRydWUgfSkgc2F2ZWRMaXN0OiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcbiAgICBAVmlld0NoaWxkKCdib2R5JywgeyBzdGF0aWM6IHRydWUgfSkgYm9keTogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XG4gICAgQFZpZXdDaGlsZCgnbWVudScsIHsgc3RhdGljOiBmYWxzZSB9KSBtZW51OiBBWE1lbnVDb21wb25lbnQ7XG4gICAgQFZpZXdDaGlsZCgndGJ4TmFtZScsIHsgc3RhdGljOiB0cnVlIH0pIHRieE5hbWU6IEFYVGV4dEJveENvbXBvbmVudDtcblxuICAgIEBWaWV3Q2hpbGRyZW4oQVhGaWx0ZXJDb2x1bW5Db21wb25lbnQpIGZpbHRlcnM6IFF1ZXJ5TGlzdDxBWEZpbHRlckNvbHVtbkNvbXBvbmVudD47XG5cbiAgICBASW5wdXQoKVxuICAgIGdyb3VwczogQVhGaWx0ZXJDb2x1bW5Hcm91cFtdID0gW107XG5cbiAgICBASW5wdXQoKVxuICAgIHByZWRlZmluZWRGaWx0ZXJzOiBBWEZpbHRlclByZWRlZmluZWRbXSA9IFtdO1xuXG4gICAgQElucHV0KClcbiAgICBtb2RlOiAnY2xpY2snIHwgJ2ltbWVkaWF0ZScgPSAnY2xpY2snO1xuXG4gICAgc2F2ZUl0ZW1zOiBBWE1lbnVJdGVtW10gPSBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdzYXZlQXMnLFxuICAgICAgICAgICAgdGV4dDogJ1NhdmUnLFxuICAgICAgICAgICAgc3RhcnRJY29uOiAnZmFzIGZhLXNhdmUnLFxuICAgICAgICAgICAgaXRlbXM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6ICdzYXZlJyxcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogJ1NhdmUgY3VycmVudCdcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3NhdmVBcycsXG4gICAgICAgICAgICAgICAgICAgIHRleHQ6ICdTYXZlIGFzIE5ldydcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH0sXG5cbiAgICBdO1xuXG4gICAgQE91dHB1dCgpXG4gICAgZmlsdGVyQ2hhbmdlOiBFdmVudEVtaXR0ZXI8QVhGaWx0ZXJDb25kaXRpb25bXT4gPSBuZXcgRXZlbnRFbWl0dGVyPEFYRmlsdGVyQ29uZGl0aW9uW10+KCk7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByaXZhdGUgdG9hc3Q6IEFYVG9hc3RTZXJ2aWNlKSB7IH1cblxuICAgIGFwcGx5KCkge1xuICAgICAgICB0aGlzLmZpbHRlckNoYW5nZS5lbWl0KHRoaXMudmFsdWUpO1xuICAgICAgICB0aGlzLnVwZGF0ZU1lbnUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2xlYXIoKSB7XG4gICAgICAgIHRoaXMuZmlsdGVycy5mb3JFYWNoKGUgPT4ge1xuICAgICAgICAgICAgZS5jbGVhcigpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5wcmVkZWZpbmVkRmlsdGVycy5mb3JFYWNoKGMgPT4ge1xuICAgICAgICAgICAgKGMgYXMgYW55KS5zZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5maWx0ZXJDaGFuZ2UuZW1pdCh0aGlzLnZhbHVlKTtcbiAgICAgICAgdGhpcy51cGRhdGVNZW51KCk7XG4gICAgfVxuXG4gICAgb25WYWx1ZUNoYW5nZShlKSB7XG4gICAgICAgIGlmICh0aGlzLm1vZGUgPT09ICdpbW1lZGlhdGUnKSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbHRlckNoYW5nZS5lbWl0KHRoaXMudmFsdWUpO1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlTWVudSgpO1xuICAgICAgICAgICAgfSwgNTApO1xuXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkNoZWNrVmFsdWVDaGFuZ2UodiwgZTogQVhWYWx1ZUV2ZW50PGJvb2xlYW4+KSB7XG5cblxuICAgICAgICBpZiAoIWUudmFsdWUgJiYgdGhpcy5tb2RlID09PSAnaW1tZWRpYXRlJykge1xuICAgICAgICAgICAgdGhpcy5maWx0ZXJzLmZvckVhY2goYyA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGMuZmllbGQgPT09IHYuZmllbGQpIHtcbiAgICAgICAgICAgICAgICAgICAgYy5jbGVhcigpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbHRlckNoYW5nZS5lbWl0KHRoaXMudmFsdWUuZmlsdGVyKGMgPT4gYy5maWVsZCAhPT0gdi5maWVsZCkpO1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlTWVudSgpO1xuICAgICAgICAgICAgfSwgNTApO1xuXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXQgdmFsdWUoKTogQVhGaWx0ZXJDb25kaXRpb25bXSB7XG4gICAgICAgIGNvbnN0IGNvbjogQVhGaWx0ZXJDb25kaXRpb25bXSA9IFtdO1xuICAgICAgICBpZiAodGhpcy5maWx0ZXJzKSB7XG4gICAgICAgICAgICB0aGlzLmZpbHRlcnMuZm9yRWFjaChlID0+IHtcblxuICAgICAgICAgICAgICAgIGlmIChlLmFjdGl2ZSAmJiBlLmNvbmRpdGlvbiAmJiAoKGUuY29uZGl0aW9uLnZhbHVlICE9IG51bGwpIHx8IChlLmNvbmRpdGlvbi52YWx1ZSA9PSBudWxsICYmIChlLmNvbmRpdGlvbi5jb25kaXRpb24gPT09ICdpcy1lbXB0eScgfHwgZS5jb25kaXRpb24uY29uZGl0aW9uID09PSAnaXMtbm90LWVtcHR5JykpKSkge1xuICAgICAgICAgICAgICAgICAgICBjb24ucHVzaChlLmNvbmRpdGlvbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvbjtcbiAgICB9XG5cblxuXG4gICAgcHVibGljIGxvYWQoZmlsdGVyczogQVhGaWx0ZXJDb25kaXRpb25bXSk6IHZvaWQge1xuICAgICAgICB0aGlzLmZpbHRlcnMuZm9yRWFjaChlID0+IHtcbiAgICAgICAgICAgIGUuY2xlYXIoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuY2FuY2VsU2F2ZUZpbHRlcigpO1xuICAgICAgICBmaWx0ZXJzLmZvckVhY2goZiA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb2wgPSB0aGlzLmZpbHRlcnMuZmluZChjID0+IGMuZmllbGQgPT09IGYuZmllbGQpO1xuICAgICAgICAgICAgaWYgKGNvbCkge1xuICAgICAgICAgICAgICAgIGNvbC5zZXRGaWx0ZXIoZi52YWx1ZSwgZi5jb25kaXRpb24pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmZpbHRlckNoYW5nZS5lbWl0KHRoaXMudmFsdWUpO1xuICAgICAgICB0aGlzLnVwZGF0ZU1lbnUoKTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGZvb3RlciA9IHRoaXMucGFuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuZm9vdGVyJyk7XG4gICAgICAgIGlmICghZm9vdGVyKSB7XG4gICAgICAgICAgICB0aGlzLmJvZHkubmF0aXZlRWxlbWVudC5zdHlsZS5oZWlnaHQgPSAnY2FsYygxMDAlIC0gMTEwcHgpJztcbiAgICAgICAgfVxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLnByZWRlZmluZWRGaWx0ZXJzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRGaWx0ZXJCeUluZGV4KDApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jbGVhcigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCAxMDApO1xuICAgICAgICB0aGlzLmFwcGx5U2l6ZSgpO1xuICAgIH1cblxuICAgIHNldEZpbHRlckJ5SW5kZXgoaW5kZXg6IG51bWJlcikge1xuICAgICAgICBjb25zdCBmID0gdGhpcy5wcmVkZWZpbmVkRmlsdGVyc1tpbmRleF07XG4gICAgICAgIGlmIChmKSB7XG4gICAgICAgICAgICB0aGlzLnNldEZpbHRlckJ5TmFtZShmLm5hbWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2V0RmlsdGVyQnlOYW1lKG5hbWU6IHN0cmluZykge1xuICAgICAgICBjb25zdCBmID0gdGhpcy5wcmVkZWZpbmVkRmlsdGVycy5maW5kKGMgPT4gYy5uYW1lID09PSBuYW1lKTtcbiAgICAgICAgaWYgKGYpIHtcbiAgICAgICAgICAgIHRoaXMubG9hZChmLnZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMucHJlZGVmaW5lZEZpbHRlcnMuZm9yRWFjaChjID0+IHtcbiAgICAgICAgICAgICAgICAoYyBhcyBhbnkpLnNlbGVjdGVkID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIChmIGFzIGFueSkuc2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG5cblxuICAgIHJlbW92ZUZpbHRlcihmOiBBWEZpbHRlclByZWRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5wcmVkZWZpbmVkRmlsdGVycyA9IHRoaXMucHJlZGVmaW5lZEZpbHRlcnMuZmlsdGVyKGMgPT4gYy5uYW1lICE9IGYubmFtZSk7XG4gICAgICAgIHRoaXMudXBkYXRlTWVudSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0XG4gICAgICAgIGN1cnJlbnRGaWx0ZXIoKTogQVhGaWx0ZXJQcmVkZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJlZGVmaW5lZEZpbHRlcnMuZmluZChjID0+IChjIGFzIGFueSkuc2VsZWN0ZWQpO1xuICAgIH1cblxuXG4gICAgcHJpdmF0ZSBhcHBseVNpemUoKSB7XG4gICAgICAgIGxldCBoID0gMDtcbiAgICAgICAgaCArPSB0aGlzLmZvb3Rlci5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodDtcbiAgICAgICAgaCArPSB0aGlzLnNhdmVkTGlzdC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodDtcbiAgICAgICAgaCArPSAxMDtcbiAgICAgICAgdGhpcy5ib2R5Lm5hdGl2ZUVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gYGNhbGMoMTAwJSAtICR7aH1weClgO1xuICAgIH1cblxuICAgIC8vIFNBVkUgRklMVEVSU1xuXG4gICAgcHJpdmF0ZSB1cGRhdGVNZW51KCk6IHZvaWQge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2F2ZUl0ZW1zWzBdLml0ZW1zWzBdLnZpc2libGUgPSB0aGlzLmN1cnJlbnRGaWx0ZXIgIT0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMuc2F2ZUl0ZW1zWzBdLml0ZW1zWzFdLnZpc2libGUgPSB0aGlzLmN1cnJlbnRGaWx0ZXIgIT0gbnVsbDtcbiAgICAgICAgICAgIC8vIHRoaXMubWVudS51cGRhdGUoKTtcbiAgICAgICAgfSwgMTAwKTtcbiAgICB9XG5cbiAgICBhcHBseVNhdmVGaWx0ZXIoKSB7XG4gICAgICAgIGNvbnN0IGYgPSB0aGlzLmN1cnJlbnRGaWx0ZXI7XG4gICAgICAgIGlmIChmKSB7XG4gICAgICAgICAgICAvLyBUT0RPXG4gICAgICAgICAgICAvLyB0aGlzLnRieE5hbWUudmFsaWRhdGUoKS50aGVuKGMgPT4ge1xuICAgICAgICAgICAgLy8gICAgIGlmIChjLnJlc3VsdCkge1xuICAgICAgICAgICAgLy8gICAgICAgICBmLnZhbHVlID0gdGhpcy52YWx1ZTtcbiAgICAgICAgICAgIC8vICAgICAgICAgKGYgYXMgYW55KS5pc0luRWRpdCA9IGZhbHNlO1xuICAgICAgICAgICAgLy8gICAgICAgICAoZiBhcyBhbnkpLmlzTmV3ID0gZmFsc2U7XG4gICAgICAgICAgICAvLyAgICAgICAgIGYudGl0bGUgPSB0aGlzLnRieE5hbWUudmFsdWU7XG4gICAgICAgICAgICAvLyAgICAgICAgIHRoaXMudG9hc3Quc3VjY2VzcygnRmlsdGVyIHNhdmVkIHN1Y2Nlc3NmdWxseS4nKTtcbiAgICAgICAgICAgIC8vICAgICAgICAgdGhpcy51cGRhdGVNZW51KCk7XG4gICAgICAgICAgICAvLyAgICAgfVxuICAgICAgICAgICAgLy8gfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjYW5jZWxTYXZlRmlsdGVyKCkge1xuICAgICAgICBjb25zdCBmID0gdGhpcy5jdXJyZW50RmlsdGVyO1xuICAgICAgICBpZiAoZikge1xuICAgICAgICAgICAgaWYgKChmIGFzIGFueSkuaXNOZXcpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZUZpbHRlcihmKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIChmIGFzIGFueSkuaXNJbkVkaXQgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLnVwZGF0ZU1lbnUoKTtcbiAgICB9XG5cbiAgICBvbk1lbnVJdGVtQ2xpY2soZTogQVhNZW51SXRlbSkge1xuICAgICAgICBpZiAoZS5uYW1lID09PSAnc2F2ZScpIHtcbiAgICAgICAgICAgIHRoaXMuYXBwbHlTYXZlRmlsdGVyKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGUubmFtZSA9PT0gJ3NhdmVBcycpIHtcbiAgICAgICAgICAgIGNvbnN0IGYgPSB7XG4gICAgICAgICAgICAgICAgbmFtZTogQVhIdG1sVXRpbC5nZXRVSUQoKSxcbiAgICAgICAgICAgICAgICB0aXRsZTogJycsXG4gICAgICAgICAgICAgICAgdmFsdWU6IHRoaXMudmFsdWVcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB0aGlzLnByZWRlZmluZWRGaWx0ZXJzLnB1c2goZik7XG4gICAgICAgICAgICAoZiBhcyBhbnkpLmlzTmV3ID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuc2V0RmlsdGVyQnlOYW1lKGYubmFtZSk7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZVJlbmFtZUNsaWNrKGYpXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0YnhOYW1lT25LZXkoZTogQVhLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIGlmIChlLnR5cGUgPT09ICdrZXl1cCcgJiYgZS5rZXkgPT09ICdFbnRlcicpIHtcbiAgICAgICAgICAgIHRoaXMuYXBwbHlTYXZlRmlsdGVyKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGUudHlwZSA9PT0gJ2tleXVwJyAmJiBlLmtleSA9PT0gJ0VzY2FwZScpIHtcbiAgICAgICAgICAgIHRoaXMuY2FuY2VsU2F2ZUZpbHRlcigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaGFuZGxlUmVuYW1lQ2xpY2soZjogQVhGaWx0ZXJQcmVkZWZpbmVkKSB7XG4gICAgICAgIChmIGFzIGFueSkuaXNJbkVkaXQgPSB0cnVlO1xuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy50YnhOYW1lLnZhbHVlID0gZi50aXRsZTtcbiAgICAgICAgICAgIHRoaXMudGJ4TmFtZS5mb2N1cygpO1xuICAgICAgICB9LCA1MCk7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImF4LWZpbHRlci1wYW5lbFwiICNwYW5lbD5cbiAgICA8ZGl2IGNsYXNzPVwic2F2ZWQtbGlzdFwiICNzYXZlZExpc3Q+XG4gICAgICAgIDxheC1wYW5lbC1ib3ggI2ZiPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNoZWFkZXI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyb3VwLWhlYWRlclwiIChjbGljayk9XCJmYi50b2dnbGUoKVwiPlxuICAgICAgICAgICAgICAgICAgICA8YXgtdG9vbGJhcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxheC10b29sYmFyLXRpdGxlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFyIGZhLWZpbHRlclwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+U0FWRUQgRklMVEVSUzwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYXgtdG9vbGJhci10aXRsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxheC10b29sYmFyLW1lbnUgI21lbnUgW2l0ZW1zXT1cInNhdmVJdGVtc1wiIChvbkl0ZW1DbGljayk9XCJvbk1lbnVJdGVtQ2xpY2soJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9heC10b29sYmFyLW1lbnU+XG4gICAgICAgICAgICAgICAgICAgIDwvYXgtdG9vbGJhcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsaXN0XCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInByZWRlZmluZWRGaWx0ZXJzICYmIHByZWRlZmluZWRGaWx0ZXJzLmxlbmd0aDsgZWxzZSBlbXB0eUxpc3RcIj5cbiAgICAgICAgICAgICAgICAgICAgPHVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZiBvZiBwcmVkZWZpbmVkRmlsdGVyc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZi5pc0luRWRpdDsgZWxzZSBlZGl0TW9kZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgKGNsaWNrKT1cInNldEZpbHRlckJ5TmFtZShmLm5hbWUpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbS1saW5lXCIgW2NsYXNzLnNlbGVjdGVkXT1cImYuc2VsZWN0ZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRpdGxlXCI+PGkgY2xhc3M9XCJmYXIgZmEtY2hlY2tcIj48L2k+IHt7Zi50aXRsZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidG9vbHNcIj48aSBjbGFzcz1cImZhciBmYS1wZW4gdGV4dC1wcmltYXJ5XCIgdGl0bGU9XCJSZW5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImhhbmRsZVJlbmFtZUNsaWNrKGYpXCI+PC9pPiZuYnNwOzxpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZhciBmYS10aW1lcyB0ZXh0LWRhbmdlclwiIHRpdGxlPVwiUmVtb3ZlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVGaWx0ZXIoZilcIj48L2k+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNlZGl0TW9kZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGF4LXRleHQtYm94ICN0YnhOYW1lIHBsYWNlaG9sZGVyPVwiRW50ZXIgZmlsdGVyJ3MgdGl0bGUgaGVyZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uS2V5KT1cInRieE5hbWVPbktleSgkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGF4LWJ1dHRvbiB0aXRsZT1cIlNhdmVcIiB0eXBlPVwicHJpbWFyeVwiIChvbkNsaWNrKT1cImFwcGx5U2F2ZUZpbHRlcigpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFyIGZhLWNoZWNrXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXgtYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxheC1idXR0b24gdGl0bGU9XCJDYW5jZWxcIiB0eXBlPVwiZGFuZ2VyXCIgKG9uQ2xpY2spPVwiY2FuY2VsU2F2ZUZpbHRlcigpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFyIGZhLXRpbWVzXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXgtYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxheC12YWxpZGF0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXgtdmFsaWRhdGlvbi1ydWxlIHR5cGU9XCJyZXF1aXJlZFwiIG1lc3NhZ2U9XCJ0aGlzIGZpZWxkIGlzIHJlcXVpcmVkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXgtdmFsaWRhdGlvbi1ydWxlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXgtdmFsaWRhdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXgtdGV4dC1ib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZW1wdHlMaXN0PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZW1wdHktbGlzdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHlcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2F4LXBhbmVsLWJveD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiYm9keVwiICNib2R5PlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBnIG9mIGdyb3Vwc1wiPlxuICAgICAgICAgICAgPGF4LXBhbmVsLWJveCAjZmI+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNoZWFkZXI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncm91cC1oZWFkZXJcIiAqbmdJZj1cImcuY2FwdGlvblwiIChjbGljayk9XCJmYi50b2dnbGUoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdmYXIgZmEtbWludXMtc3F1YXJlJyA6ICFmYi5jb2xsYXBzZWQgLCdmYXMgZmEtcGx1cy1zcXVhcmUnIDogZmIuY29sbGFwc2VkIH1cIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e2cuY2FwdGlvbn19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGMgb2YgZy5jb2x1bW5zXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1maWx0ZXItaXRlbS1oZWFkZXJcIiBbc3R5bGUubWFyZ2luLWJvdHRvbS5weF09XCJjLmFjdGl2ZSA/IDAgOiAyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YXgtY2hlY2stYm94IChvblZhbHVlQ2hhbmdlZCk9XCJvbkNoZWNrVmFsdWVDaGFuZ2UoYywkZXZlbnQpXCIgW2xhYmVsXT1cImMuY2FwdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgWyh2YWx1ZSldPVwiYy5hY3RpdmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYXgtY2hlY2stYm94PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBbaGlkZGVuXT1cIiFjLmFjdGl2ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwiYy50eXBlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3NlbGVjdGlvbidcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGF4LWZpbHRlci1jb2x1bW4tc2VsZWN0aW9uICh2YWx1ZUNoYW5nZSk9XCJvblZhbHVlQ2hhbmdlKCRldmVudClcIiBbZmllbGRdPVwiYy5maWVsZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKGFjdGl2ZSldPVwiYy5hY3RpdmVcIiBbbW9kZV09XCJjLm9wdGlvbnMubW9kZVwiIFtpdGVtc109XCJjLm9wdGlvbnMuaXRlbXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2RhdGFUeXBlXT1cImMub3B0aW9ucy5kYXRhVHlwZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2F4LWZpbHRlci1jb2x1bW4tc2VsZWN0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidkYXRlJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXgtZmlsdGVyLWNvbHVtbi1kYXRlICh2YWx1ZUNoYW5nZSk9XCJvblZhbHVlQ2hhbmdlKCRldmVudClcIiBbZmllbGRdPVwiYy5maWVsZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKGFjdGl2ZSldPVwiYy5hY3RpdmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9heC1maWx0ZXItY29sdW1uLWRhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ251bWJlcidcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGF4LWZpbHRlci1jb2x1bW4tbnVtYmVyICh2YWx1ZUNoYW5nZSk9XCJvblZhbHVlQ2hhbmdlKCRldmVudClcIiBbZmllbGRdPVwiYy5maWVsZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKGFjdGl2ZSldPVwiYy5hY3RpdmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9heC1maWx0ZXItY29sdW1uLW51bWJlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaERlZmF1bHQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxheC1maWx0ZXItY29sdW1uLXN0cmluZyAodmFsdWVDaGFuZ2UpPVwib25WYWx1ZUNoYW5nZSgkZXZlbnQpXCIgW2ZpZWxkXT1cImMuZmllbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhhY3RpdmUpXT1cImMuYWN0aXZlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXgtZmlsdGVyLWNvbHVtbi1zdHJpbmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2F4LXBhbmVsLWJveD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2ICpuZ0lmPVwibW9kZT09J2NsaWNrJ1wiIGNsYXNzPVwiZm9vdGVyXCIgI2Zvb3Rlcj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZpbHRlci1wYW5lbFwiPlxuICAgICAgICAgICAgPGF4LWJ1dHRvbiAob25DbGljayk9XCJhcHBseSgpXCIgdHlwZT1cInN1Y2Nlc3NcIiBzaXplPVwic21cIj5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhciBmYS1maWx0ZXJcIj48L2k+XG4gICAgICAgICAgICAgICAgQXBwbHkgRmlsdGVyXG4gICAgICAgICAgICA8L2F4LWJ1dHRvbj5cbiAgICAgICAgICAgIDxheC1idXR0b24gKG9uQ2xpY2spPVwiY2xlYXIoKTtcIiB0eXBlPVwibGlnaHQgXCIgc2l6ZT1cInNtXCI+XG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXIgZmEtZXJhc2VyXCI+PC9pPlxuICAgICAgICAgICAgICAgIENsZWFyXG4gICAgICAgICAgICA8L2F4LWJ1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj4iXX0=