@acorex/components 4.1.6 → 4.2.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 (599) hide show
  1. package/karma.conf.js +32 -0
  2. package/ng-package.json +10 -0
  3. package/package.json +13 -33
  4. package/src/lib/accordion/accordion.component.ts +43 -0
  5. package/src/lib/accordion/accordion.module.ts +11 -0
  6. package/src/lib/accordion/api.ts +2 -0
  7. package/src/lib/base/base-page.class.ts +115 -0
  8. package/src/lib/base/element.class.ts +344 -0
  9. package/src/lib/base/events.class.ts +32 -0
  10. package/src/lib/button/button.component.html +17 -0
  11. package/src/lib/button/button.component.ts +72 -0
  12. package/src/lib/button/button.module.ts +14 -0
  13. package/src/lib/calendar/calendar-box/calendar-box.component.html +68 -0
  14. package/src/lib/calendar/calendar-box/calendar-box.component.ts +461 -0
  15. package/src/lib/calendar/calendar-box/calendar-box.module.ts +16 -0
  16. package/src/lib/calendar/scheduler/scheduler-views.property.ts +38 -0
  17. package/{lib/calendar/scheduler/scheduler.class.d.ts → src/lib/calendar/scheduler/scheduler.class.ts} +20 -6
  18. package/src/lib/calendar/scheduler/scheduler.component.html +9 -0
  19. package/src/lib/calendar/scheduler/scheduler.component.scss +181 -0
  20. package/src/lib/calendar/scheduler/scheduler.component.ts +249 -0
  21. package/src/lib/calendar/scheduler/scheduler.module.ts +45 -0
  22. package/src/lib/calendar/scheduler/toolbars/scheduler-toolbar-navigator.ts +133 -0
  23. package/src/lib/calendar/scheduler/toolbars/scheduler-toolbar-views.ts +33 -0
  24. package/src/lib/calendar/scheduler/views/agenda/scheduler-agenda-view.component.html +43 -0
  25. package/src/lib/calendar/scheduler/views/agenda/scheduler-agenda-view.component.scss +66 -0
  26. package/src/lib/calendar/scheduler/views/agenda/scheduler-agenda-view.component.ts +50 -0
  27. package/src/lib/calendar/scheduler/views/daytime/scheduler-daytime-view.component.html +45 -0
  28. package/src/lib/calendar/scheduler/views/daytime/scheduler-daytime-view.component.scss +19 -0
  29. package/src/lib/calendar/scheduler/views/daytime/scheduler-daytime-view.component.ts +103 -0
  30. package/src/lib/calendar/scheduler/views/month/scheduler-month-view.component.html +39 -0
  31. package/src/lib/calendar/scheduler/views/month/scheduler-month-view.component.scss +55 -0
  32. package/src/lib/calendar/scheduler/views/month/scheduler-month-view.component.ts +233 -0
  33. package/src/lib/calendar/scheduler/views/scheduler-view.component.ts +124 -0
  34. package/src/lib/calendar/scheduler/views/timeline/scheduler-timeline-view.component.html +50 -0
  35. package/src/lib/calendar/scheduler/views/timeline/scheduler-timeline-view.component.scss +4 -0
  36. package/src/lib/calendar/scheduler/views/timeline/scheduler-timeline-view.component.ts +92 -0
  37. package/src/lib/checkbox/checkbox.component.html +22 -0
  38. package/src/lib/checkbox/checkbox.component.ts +106 -0
  39. package/src/lib/checkbox/checkbox.module.ts +11 -0
  40. package/src/lib/color-picker/color-box/color-box.component.html +37 -0
  41. package/src/lib/color-picker/color-box/color-box.component.scss +60 -0
  42. package/src/lib/color-picker/color-box/color-box.component.ts +438 -0
  43. package/src/lib/color-picker/color-picker.component.html +31 -0
  44. package/src/lib/color-picker/color-picker.component.ts +87 -0
  45. package/src/lib/color-picker/color-picker.module.ts +16 -0
  46. package/src/lib/context-menu/context-menu.component.html +42 -0
  47. package/src/lib/context-menu/context-menu.component.ts +78 -0
  48. package/src/lib/context-menu/context-menu.directive.ts +159 -0
  49. package/src/lib/context-menu/context-menu.module.ts +15 -0
  50. package/src/lib/data-filter/columns/filter-column-date.component.ts +123 -0
  51. package/src/lib/data-filter/columns/filter-column-number.component.ts +100 -0
  52. package/src/lib/data-filter/columns/filter-column-selection.component.ts +69 -0
  53. package/src/lib/data-filter/columns/filter-column-string.component.ts +100 -0
  54. package/src/lib/data-filter/filter-panel/filter-panel.component.html +120 -0
  55. package/src/lib/data-filter/filter-panel/filter-panel.component.scss +143 -0
  56. package/src/lib/data-filter/filter-panel/filter-panel.component.ts +266 -0
  57. package/src/lib/data-filter/filter.class.ts +73 -0
  58. package/src/lib/data-filter/filter.module.ts +52 -0
  59. package/src/lib/data-filter/toolbar/filter-toolbar.component.html +5 -0
  60. package/src/lib/data-filter/toolbar/filter-toolbar.component.scss +17 -0
  61. package/src/lib/data-filter/toolbar/filter-toolbar.component.ts +179 -0
  62. package/src/lib/data-list/core/data-list.component.ts +62 -0
  63. package/src/lib/data-list/list/list.component.html +32 -0
  64. package/src/lib/data-list/list/list.component.scss +64 -0
  65. package/src/lib/data-list/list/list.component.ts +149 -0
  66. package/src/lib/data-list/list/list.module.ts +14 -0
  67. package/src/lib/data-list/list/toolbar-list-view.component.ts +63 -0
  68. package/src/lib/data-source/datasource.component.ts +50 -0
  69. package/src/lib/data-source/datasource.module.ts +11 -0
  70. package/{lib/data-source/read-param.d.ts → src/lib/data-source/read-param.ts} +13 -3
  71. package/src/lib/date-picker/date-picker.component.html +30 -0
  72. package/src/lib/date-picker/date-picker.component.scss +5 -0
  73. package/src/lib/date-picker/date-picker.component.ts +723 -0
  74. package/src/lib/date-picker/date-picker.module.ts +17 -0
  75. package/src/lib/dialog/dialog.component.html +5 -0
  76. package/src/lib/dialog/dialog.component.scss +32 -0
  77. package/src/lib/dialog/dialog.component.ts +32 -0
  78. package/src/lib/dialog/dialog.module.ts +13 -0
  79. package/src/lib/dialog/dialog.service.ts +178 -0
  80. package/src/lib/drawer/drawer.component.html +5 -0
  81. package/src/lib/drawer/drawer.component.ts +53 -0
  82. package/src/lib/drawer/drawer.module.ts +11 -0
  83. package/src/lib/dropdown/dropdown.component.html +25 -0
  84. package/src/lib/dropdown/dropdown.component.scss +9 -0
  85. package/src/lib/dropdown/dropdown.component.ts +200 -0
  86. package/src/lib/dropdown/dropdown.module.ts +19 -0
  87. package/src/lib/fieldset/fieldset.component.html +6 -0
  88. package/src/lib/fieldset/fieldset.component.ts +49 -0
  89. package/src/lib/fieldset/fieldset.module.ts +11 -0
  90. package/src/lib/form-group/form-group.component.html +15 -0
  91. package/src/lib/form-group/form-group.component.ts +39 -0
  92. package/src/lib/form-group/form-group.module.ts +14 -0
  93. package/src/lib/label/label.component.html +5 -0
  94. package/src/lib/label/label.component.ts +18 -0
  95. package/src/lib/label/label.module.ts +14 -0
  96. package/src/lib/loading/loading-indicator.component.html +27 -0
  97. package/src/lib/loading/loading-indicator.component.ts +16 -0
  98. package/src/lib/loading/loading-panel.component.ts +37 -0
  99. package/src/lib/loading/loading.module.ts +13 -0
  100. package/src/lib/loading/loading.service.ts +44 -0
  101. package/src/lib/menu/menu-item.component.ts +41 -0
  102. package/src/lib/menu/menu.component.html +65 -0
  103. package/src/lib/menu/menu.component.ts +111 -0
  104. package/src/lib/menu/menu.module.ts +13 -0
  105. package/src/lib/menu/menu2.component.scss +59 -0
  106. package/src/lib/menu/menu2.component.ts +98 -0
  107. package/src/lib/number-box/number-box.component.html +32 -0
  108. package/src/lib/number-box/number-box.component.ts +641 -0
  109. package/src/lib/number-box/number-box.module.ts +13 -0
  110. package/src/lib/page/content.component.ts +18 -0
  111. package/src/lib/page/footer.component.ts +13 -0
  112. package/src/lib/page/page.component.ts +43 -0
  113. package/src/lib/page/page.module.ts +14 -0
  114. package/src/lib/panel-box/panel-box.component.html +19 -0
  115. package/src/lib/panel-box/panel-box.component.scss +25 -0
  116. package/src/lib/panel-box/panel-box.component.ts +87 -0
  117. package/src/lib/panel-box/panel-box.module.ts +10 -0
  118. package/src/lib/password-box/password-box.component.html +22 -0
  119. package/src/lib/password-box/password-box.component.ts +30 -0
  120. package/src/lib/password-box/password-box.module.ts +16 -0
  121. package/src/lib/popover/custom-cdk-overlay.service.ts +82 -0
  122. package/src/lib/popover/overlay.service.ts +110 -0
  123. package/src/lib/popover/popover.component.html +5 -0
  124. package/src/lib/popover/popover.component.scss +9 -0
  125. package/src/lib/popover/popover.component.ts +117 -0
  126. package/src/lib/popover/popover.module.ts +11 -0
  127. package/src/lib/popup/popup.component.html +33 -0
  128. package/src/lib/popup/popup.component.scss +173 -0
  129. package/src/lib/popup/popup.component.ts +182 -0
  130. package/src/lib/popup/popup.module.ts +16 -0
  131. package/src/lib/popup/popup.service.ts +103 -0
  132. package/src/lib/progress-bar/progress-bar.component.html +5 -0
  133. package/src/lib/progress-bar/progress-bar.component.ts +10 -0
  134. package/src/lib/progress-bar/progress-bar.module.ts +11 -0
  135. package/src/lib/property-editor/editors/color-editor/color.editor.ts +30 -0
  136. package/src/lib/property-editor/editors/color-editor/color.module.ts +20 -0
  137. package/src/lib/property-editor/editors/column-editor/column.editor.html +75 -0
  138. package/src/lib/property-editor/editors/column-editor/column.editor.scss +193 -0
  139. package/src/lib/property-editor/editors/column-editor/column.editor.ts +124 -0
  140. package/src/lib/property-editor/editors/column-editor/column.module.ts +28 -0
  141. package/src/lib/property-editor/editors/conditional-color-editor/conditional-color.editor.html +80 -0
  142. package/src/lib/property-editor/editors/conditional-color-editor/conditional-color.editor.scss +71 -0
  143. package/src/lib/property-editor/editors/conditional-color-editor/conditional-color.editor.ts +232 -0
  144. package/src/lib/property-editor/editors/conditional-color-editor/conditional-color.module.ts +52 -0
  145. package/src/lib/property-editor/editors/date-editor/date.editor.ts +49 -0
  146. package/src/lib/property-editor/editors/date-editor/date.module.ts +20 -0
  147. package/src/lib/property-editor/editors/number-editor/number.editor.ts +47 -0
  148. package/src/lib/property-editor/editors/number-editor/number.module.ts +20 -0
  149. package/src/lib/property-editor/editors/range-editor/range.editor.html +67 -0
  150. package/src/lib/property-editor/editors/range-editor/range.editor.scss +68 -0
  151. package/src/lib/property-editor/editors/range-editor/range.editor.ts +153 -0
  152. package/src/lib/property-editor/editors/range-editor/range.module.ts +37 -0
  153. package/src/lib/property-editor/editors/selectbox-editor/selectbox.editor.html +15 -0
  154. package/src/lib/property-editor/editors/selectbox-editor/selectbox.editor.ts +77 -0
  155. package/src/lib/property-editor/editors/selectbox-editor/selectbox.module.ts +21 -0
  156. package/src/lib/property-editor/editors/switch-editor/number.editor.ts +26 -0
  157. package/src/lib/property-editor/editors/switch-editor/number.module.ts +21 -0
  158. package/src/lib/property-editor/editors/text-editor/text.editor.html +4 -0
  159. package/src/lib/property-editor/editors/text-editor/text.editor.ts +35 -0
  160. package/src/lib/property-editor/editors/text-editor/text.module.ts +20 -0
  161. package/src/lib/property-editor/editors/textarea-editor/textarea.editor.html +9 -0
  162. package/src/lib/property-editor/editors/textarea-editor/textarea.editor.ts +37 -0
  163. package/src/lib/property-editor/editors/textarea-editor/textarea.module.ts +20 -0
  164. package/src/lib/property-editor/editors/time-editor/time.editor.ts +38 -0
  165. package/src/lib/property-editor/editors/time-editor/time.module.ts +20 -0
  166. package/src/lib/property-editor/property-editor-renderer.directive.ts +181 -0
  167. package/src/lib/property-editor/property-editor.class.ts +178 -0
  168. package/src/lib/property-editor/property-editor.module.ts +97 -0
  169. package/src/lib/query-builder/query-builder-group.component.html +68 -0
  170. package/src/lib/query-builder/query-builder-group.component.ts +122 -0
  171. package/src/lib/query-builder/query-builder-popup/query-builder-popup.component.html +82 -0
  172. package/src/lib/query-builder/query-builder-popup/query-builder-popup.component.ts +178 -0
  173. package/src/lib/query-builder/query-builder-rule.component.html +134 -0
  174. package/src/lib/query-builder/query-builder-rule.component.ts +353 -0
  175. package/src/lib/query-builder/query-builder.class.ts +53 -0
  176. package/src/lib/query-builder/query-builder.component.html +3 -0
  177. package/src/lib/query-builder/query-builder.component.scss +286 -0
  178. package/src/lib/query-builder/query-builder.component.ts +220 -0
  179. package/src/lib/query-builder/query-builder.module.ts +42 -0
  180. package/src/lib/query-builder/query-builder.service.ts +181 -0
  181. package/src/lib/searchbox/searchbox.component.html +25 -0
  182. package/src/lib/searchbox/searchbox.component.ts +85 -0
  183. package/src/lib/searchbox/searchbox.module.ts +17 -0
  184. package/src/lib/selectbox/selectbox.component.html +98 -0
  185. package/src/lib/selectbox/selectbox.component.ts +980 -0
  186. package/src/lib/selectbox/selectbox.module.ts +31 -0
  187. package/src/lib/selectbox/selectbox2.component.html +78 -0
  188. package/src/lib/selectbox/selectbox2.component.ts +603 -0
  189. package/src/lib/selection-list/selection-list.component.html +21 -0
  190. package/src/lib/selection-list/selection-list.component.ts +103 -0
  191. package/src/lib/selection-list/selection-list.module.ts +13 -0
  192. package/src/lib/switch/switch.component.html +4 -0
  193. package/src/lib/switch/switch.component.scss +65 -0
  194. package/src/lib/switch/switch.component.ts +57 -0
  195. package/src/lib/switch/switch.module.ts +14 -0
  196. package/src/lib/tab-page/tab-page-Renderer.component.ts +68 -0
  197. package/src/lib/tab-page/tab-page-host.component.ts +103 -0
  198. package/src/lib/tab-page/tab-page.module.ts +13 -0
  199. package/src/lib/tab-page/tab-page.service.ts +176 -0
  200. package/src/lib/tab-strip/tab-strip.component.html +6 -0
  201. package/src/lib/tab-strip/tab-strip.component.ts +47 -0
  202. package/src/lib/tab-strip/tab-strip.module.ts +11 -0
  203. package/src/lib/tab-view/dynamic-tabs.directive.ts +17 -0
  204. package/src/lib/tab-view/tab-view.component.html +33 -0
  205. package/src/lib/tab-view/tab-view.component.scss +0 -0
  206. package/src/lib/tab-view/tab-view.component.ts +129 -0
  207. package/src/lib/tab-view/tab-view.module.ts +12 -0
  208. package/src/lib/tab-view/tab.component.html +8 -0
  209. package/src/lib/tab-view/tab.component.ts +15 -0
  210. package/src/lib/textarea/textarea.component.html +13 -0
  211. package/src/lib/textarea/textarea.component.ts +24 -0
  212. package/src/lib/textarea/textarea.module.ts +14 -0
  213. package/src/lib/textbox/textbox.component.html +22 -0
  214. package/src/lib/textbox/textbox.component.ts +38 -0
  215. package/src/lib/textbox/textbox.module.ts +16 -0
  216. package/src/lib/time-picker/time-picker.component.html +21 -0
  217. package/src/lib/time-picker/time-picker.component.ts +1003 -0
  218. package/src/lib/time-picker/time-picker.module.ts +15 -0
  219. package/src/lib/toast/toast-message/toast-message.component.html +17 -0
  220. package/src/lib/toast/toast-message/toast-message.component.scss +75 -0
  221. package/src/lib/toast/toast-message/toast-message.component.ts +64 -0
  222. package/src/lib/toast/toast-wrapper/toast-wrapper.component.scss +15 -0
  223. package/src/lib/toast/toast-wrapper/toast-wrapper.component.ts +13 -0
  224. package/src/lib/toast/toast.module.ts +12 -0
  225. package/src/lib/toast/toast.service.ts +64 -0
  226. package/src/lib/toolbar/group-button/toolbar-group-button.component.ts +54 -0
  227. package/src/lib/toolbar/menu/toolbar-menu.component.html +4 -0
  228. package/src/lib/toolbar/menu/toolbar-menu.component.ts +81 -0
  229. package/src/lib/toolbar/search/toolbar-search.component.html +4 -0
  230. package/src/lib/toolbar/search/toolbar-search.component.scss +24 -0
  231. package/src/lib/toolbar/search/toolbar-search.component.ts +61 -0
  232. package/src/lib/toolbar/title/toolbar-title.component.ts +35 -0
  233. package/src/lib/toolbar/toolbar-item.ts +4 -0
  234. package/src/lib/toolbar/toolbar.component.html +4 -0
  235. package/src/lib/toolbar/toolbar.component.scss +9 -0
  236. package/src/lib/toolbar/toolbar.component.ts +16 -0
  237. package/src/lib/toolbar/toolbar.module.ts +25 -0
  238. package/src/lib/tooltip/tooltip.directive.ts +101 -0
  239. package/src/lib/tooltip/tooltip.module.ts +11 -0
  240. package/src/lib/tree-side-menu/tree-side-menu.component.html +43 -0
  241. package/src/lib/tree-side-menu/tree-side-menu.component.ts +698 -0
  242. package/src/lib/tree-side-menu/tree-side-menu.module.ts +19 -0
  243. package/src/lib/tree-view/tree-view.component.html +45 -0
  244. package/src/lib/tree-view/tree-view.component.ts +781 -0
  245. package/src/lib/tree-view/tree-view.module.ts +16 -0
  246. package/src/lib/upload-file/upload-file.component.html +16 -0
  247. package/src/lib/upload-file/upload-file.component.ts +189 -0
  248. package/src/lib/upload-file/upload-file.events.ts +11 -0
  249. package/src/lib/upload-file/upload-file.module.ts +16 -0
  250. package/src/lib/validation/validation-form.component.ts +77 -0
  251. package/src/lib/validation/validation-rule.widget.ts +112 -0
  252. package/src/lib/validation/validation.class.ts +22 -0
  253. package/src/lib/validation/validation.component.ts +92 -0
  254. package/src/lib/validation/validation.module.ts +28 -0
  255. package/{public-api.d.ts → src/public-api.ts} +61 -2
  256. package/src/test.ts +28 -0
  257. package/tsconfig.lib.json +25 -0
  258. package/tsconfig.lib.prod.json +6 -0
  259. package/tsconfig.spec.json +17 -0
  260. package/tslint.json +17 -0
  261. package/acorex-components.d.ts +0 -5
  262. package/esm2020/acorex-components.mjs +0 -5
  263. package/esm2020/lib/accordion/accordion.component.mjs +0 -44
  264. package/esm2020/lib/accordion/accordion.module.mjs +0 -20
  265. package/esm2020/lib/base/base-page.class.mjs +0 -92
  266. package/esm2020/lib/base/element.class.mjs +0 -294
  267. package/esm2020/lib/base/events.class.mjs +0 -11
  268. package/esm2020/lib/button/button.component.mjs +0 -71
  269. package/esm2020/lib/button/button.module.mjs +0 -21
  270. package/esm2020/lib/calendar/calendar-box/calendar-box.component.mjs +0 -413
  271. package/esm2020/lib/calendar/calendar-box/calendar-box.module.mjs +0 -22
  272. package/esm2020/lib/calendar/scheduler/scheduler-views.property.mjs +0 -54
  273. package/esm2020/lib/calendar/scheduler/scheduler.class.mjs +0 -18
  274. package/esm2020/lib/calendar/scheduler/scheduler.component.mjs +0 -213
  275. package/esm2020/lib/calendar/scheduler/scheduler.module.mjs +0 -68
  276. package/esm2020/lib/calendar/scheduler/toolbars/scheduler-toolbar-navigator.mjs +0 -132
  277. package/esm2020/lib/calendar/scheduler/toolbars/scheduler-toolbar-views.mjs +0 -37
  278. package/esm2020/lib/calendar/scheduler/views/agenda/scheduler-agenda-view.component.mjs +0 -47
  279. package/esm2020/lib/calendar/scheduler/views/daytime/scheduler-daytime-view.component.mjs +0 -95
  280. package/esm2020/lib/calendar/scheduler/views/month/scheduler-month-view.component.mjs +0 -204
  281. package/esm2020/lib/calendar/scheduler/views/scheduler-view.component.mjs +0 -99
  282. package/esm2020/lib/calendar/scheduler/views/timeline/scheduler-timeline-view.component.mjs +0 -77
  283. package/esm2020/lib/checkbox/checkbox.component.mjs +0 -98
  284. package/esm2020/lib/checkbox/checkbox.module.mjs +0 -20
  285. package/esm2020/lib/color-picker/color-box/color-box.component.mjs +0 -422
  286. package/esm2020/lib/color-picker/color-picker.component.mjs +0 -82
  287. package/esm2020/lib/color-picker/color-picker.module.mjs +0 -24
  288. package/esm2020/lib/context-menu/context-menu.component.mjs +0 -65
  289. package/esm2020/lib/context-menu/context-menu.directive.mjs +0 -135
  290. package/esm2020/lib/context-menu/context-menu.module.mjs +0 -20
  291. package/esm2020/lib/data-filter/columns/filter-column-date.component.mjs +0 -138
  292. package/esm2020/lib/data-filter/columns/filter-column-number.component.mjs +0 -117
  293. package/esm2020/lib/data-filter/columns/filter-column-selection.component.mjs +0 -74
  294. package/esm2020/lib/data-filter/columns/filter-column-string.component.mjs +0 -117
  295. package/esm2020/lib/data-filter/filter-panel/filter-panel.component.mjs +0 -258
  296. package/esm2020/lib/data-filter/filter.class.mjs +0 -44
  297. package/esm2020/lib/data-filter/filter.module.mjs +0 -90
  298. package/esm2020/lib/data-filter/toolbar/filter-toolbar.component.mjs +0 -166
  299. package/esm2020/lib/data-list/core/data-list.component.mjs +0 -40
  300. package/esm2020/lib/data-list/list/list.component.mjs +0 -124
  301. package/esm2020/lib/data-list/list/list.module.mjs +0 -22
  302. package/esm2020/lib/data-list/list/toolbar-list-view.component.mjs +0 -85
  303. package/esm2020/lib/data-source/datasource.component.mjs +0 -47
  304. package/esm2020/lib/data-source/datasource.module.mjs +0 -18
  305. package/esm2020/lib/data-source/read-param.mjs +0 -5
  306. package/esm2020/lib/date-picker/date-picker.component.mjs +0 -705
  307. package/esm2020/lib/date-picker/date-picker.module.mjs +0 -25
  308. package/esm2020/lib/dialog/dialog.component.mjs +0 -24
  309. package/esm2020/lib/dialog/dialog.module.mjs +0 -21
  310. package/esm2020/lib/dialog/dialog.service.mjs +0 -150
  311. package/esm2020/lib/drawer/drawer.component.mjs +0 -54
  312. package/esm2020/lib/drawer/drawer.module.mjs +0 -20
  313. package/esm2020/lib/dropdown/dropdown.component.mjs +0 -177
  314. package/esm2020/lib/dropdown/dropdown.module.mjs +0 -26
  315. package/esm2020/lib/fieldset/fieldset.component.mjs +0 -59
  316. package/esm2020/lib/fieldset/fieldset.module.mjs +0 -19
  317. package/esm2020/lib/form-group/form-group.component.mjs +0 -33
  318. package/esm2020/lib/form-group/form-group.module.mjs +0 -21
  319. package/esm2020/lib/label/label.component.mjs +0 -19
  320. package/esm2020/lib/label/label.module.mjs +0 -21
  321. package/esm2020/lib/loading/loading-indicator.component.mjs +0 -17
  322. package/esm2020/lib/loading/loading-panel.component.mjs +0 -44
  323. package/esm2020/lib/loading/loading.module.mjs +0 -21
  324. package/esm2020/lib/loading/loading.service.mjs +0 -45
  325. package/esm2020/lib/menu/menu-item.component.mjs +0 -47
  326. package/esm2020/lib/menu/menu.component.mjs +0 -86
  327. package/esm2020/lib/menu/menu.module.mjs +0 -22
  328. package/esm2020/lib/menu/menu2.component.mjs +0 -96
  329. package/esm2020/lib/number-box/number-box.component.mjs +0 -622
  330. package/esm2020/lib/number-box/number-box.module.mjs +0 -21
  331. package/esm2020/lib/page/content.component.mjs +0 -32
  332. package/esm2020/lib/page/footer.component.mjs +0 -19
  333. package/esm2020/lib/page/page.component.mjs +0 -53
  334. package/esm2020/lib/page/page.module.mjs +0 -22
  335. package/esm2020/lib/panel-box/panel-box.component.mjs +0 -88
  336. package/esm2020/lib/panel-box/panel-box.module.mjs +0 -19
  337. package/esm2020/lib/password-box/password-box.component.mjs +0 -31
  338. package/esm2020/lib/password-box/password-box.module.mjs +0 -23
  339. package/esm2020/lib/popover/custom-cdk-overlay.service.mjs +0 -48
  340. package/esm2020/lib/popover/overlay.service.mjs +0 -87
  341. package/esm2020/lib/popover/popover.component.mjs +0 -115
  342. package/esm2020/lib/popover/popover.module.mjs +0 -19
  343. package/esm2020/lib/popup/popup.component.mjs +0 -146
  344. package/esm2020/lib/popup/popup.module.mjs +0 -25
  345. package/esm2020/lib/popup/popup.service.mjs +0 -93
  346. package/esm2020/lib/progress-bar/progress-bar.component.mjs +0 -19
  347. package/esm2020/lib/progress-bar/progress-bar.module.mjs +0 -19
  348. package/esm2020/lib/property-editor/editors/color-editor/color.editor.mjs +0 -38
  349. package/esm2020/lib/property-editor/editors/color-editor/color.module.mjs +0 -24
  350. package/esm2020/lib/property-editor/editors/column-editor/column.editor.mjs +0 -115
  351. package/esm2020/lib/property-editor/editors/column-editor/column.module.mjs +0 -32
  352. package/esm2020/lib/property-editor/editors/conditional-color-editor/conditional-color.editor.mjs +0 -211
  353. package/esm2020/lib/property-editor/editors/conditional-color-editor/conditional-color.module.mjs +0 -78
  354. package/esm2020/lib/property-editor/editors/date-editor/date.editor.mjs +0 -51
  355. package/esm2020/lib/property-editor/editors/date-editor/date.module.mjs +0 -24
  356. package/esm2020/lib/property-editor/editors/number-editor/number.editor.mjs +0 -60
  357. package/esm2020/lib/property-editor/editors/number-editor/number.module.mjs +0 -24
  358. package/esm2020/lib/property-editor/editors/range-editor/range.editor.mjs +0 -140
  359. package/esm2020/lib/property-editor/editors/range-editor/range.module.mjs +0 -61
  360. package/esm2020/lib/property-editor/editors/selectbox-editor/selectbox.editor.mjs +0 -71
  361. package/esm2020/lib/property-editor/editors/selectbox-editor/selectbox.module.mjs +0 -25
  362. package/esm2020/lib/property-editor/editors/switch-editor/number.editor.mjs +0 -29
  363. package/esm2020/lib/property-editor/editors/switch-editor/number.module.mjs +0 -25
  364. package/esm2020/lib/property-editor/editors/text-editor/text.editor.mjs +0 -30
  365. package/esm2020/lib/property-editor/editors/text-editor/text.module.mjs +0 -24
  366. package/esm2020/lib/property-editor/editors/textarea-editor/textarea.editor.mjs +0 -32
  367. package/esm2020/lib/property-editor/editors/textarea-editor/textarea.module.mjs +0 -24
  368. package/esm2020/lib/property-editor/editors/time-editor/time.editor.mjs +0 -43
  369. package/esm2020/lib/property-editor/editors/time-editor/time.module.mjs +0 -24
  370. package/esm2020/lib/property-editor/property-editor-renderer.directive.mjs +0 -152
  371. package/esm2020/lib/property-editor/property-editor.class.mjs +0 -101
  372. package/esm2020/lib/property-editor/property-editor.module.mjs +0 -161
  373. package/esm2020/lib/query-builder/query-builder-group.component.mjs +0 -124
  374. package/esm2020/lib/query-builder/query-builder-popup/query-builder-popup.component.mjs +0 -171
  375. package/esm2020/lib/query-builder/query-builder-rule.component.mjs +0 -357
  376. package/esm2020/lib/query-builder/query-builder.class.mjs +0 -20
  377. package/esm2020/lib/query-builder/query-builder.component.mjs +0 -82
  378. package/esm2020/lib/query-builder/query-builder.module.mjs +0 -59
  379. package/esm2020/lib/query-builder/query-builder.service.mjs +0 -191
  380. package/esm2020/lib/searchbox/searchbox.component.mjs +0 -79
  381. package/esm2020/lib/searchbox/searchbox.module.mjs +0 -24
  382. package/esm2020/lib/selectbox/selectbox.component.mjs +0 -955
  383. package/esm2020/lib/selectbox/selectbox.module.mjs +0 -44
  384. package/esm2020/lib/selectbox/selectbox2.component.mjs +0 -574
  385. package/esm2020/lib/selection-list/selection-list.component.mjs +0 -101
  386. package/esm2020/lib/selection-list/selection-list.module.mjs +0 -21
  387. package/esm2020/lib/switch/switch.component.mjs +0 -51
  388. package/esm2020/lib/switch/switch.module.mjs +0 -20
  389. package/esm2020/lib/tab-page/tab-page-Renderer.component.mjs +0 -69
  390. package/esm2020/lib/tab-page/tab-page-host.component.mjs +0 -109
  391. package/esm2020/lib/tab-page/tab-page.module.mjs +0 -21
  392. package/esm2020/lib/tab-page/tab-page.service.mjs +0 -156
  393. package/esm2020/lib/tab-strip/tab-strip.component.mjs +0 -36
  394. package/esm2020/lib/tab-strip/tab-strip.module.mjs +0 -19
  395. package/esm2020/lib/tab-view/dynamic-tabs.directive.mjs +0 -24
  396. package/esm2020/lib/tab-view/tab-view.component.mjs +0 -105
  397. package/esm2020/lib/tab-view/tab-view.module.mjs +0 -21
  398. package/esm2020/lib/tab-view/tab.component.mjs +0 -30
  399. package/esm2020/lib/textarea/textarea.component.mjs +0 -26
  400. package/esm2020/lib/textarea/textarea.module.mjs +0 -21
  401. package/esm2020/lib/textbox/textbox.component.mjs +0 -39
  402. package/esm2020/lib/textbox/textbox.module.mjs +0 -24
  403. package/esm2020/lib/time-picker/time-picker.component.mjs +0 -943
  404. package/esm2020/lib/time-picker/time-picker.module.mjs +0 -22
  405. package/esm2020/lib/toast/toast-message/toast-message.component.mjs +0 -74
  406. package/esm2020/lib/toast/toast-wrapper/toast-wrapper.component.mjs +0 -13
  407. package/esm2020/lib/toast/toast.module.mjs +0 -21
  408. package/esm2020/lib/toast/toast.service.mjs +0 -44
  409. package/esm2020/lib/toolbar/group-button/toolbar-group-button.component.mjs +0 -78
  410. package/esm2020/lib/toolbar/menu/toolbar-menu.component.mjs +0 -57
  411. package/esm2020/lib/toolbar/search/toolbar-search.component.mjs +0 -54
  412. package/esm2020/lib/toolbar/title/toolbar-title.component.mjs +0 -47
  413. package/esm2020/lib/toolbar/toolbar-item.mjs +0 -6
  414. package/esm2020/lib/toolbar/toolbar.component.mjs +0 -13
  415. package/esm2020/lib/toolbar/toolbar.module.mjs +0 -40
  416. package/esm2020/lib/tooltip/tooltip.directive.mjs +0 -100
  417. package/esm2020/lib/tooltip/tooltip.module.mjs +0 -19
  418. package/esm2020/lib/tree-side-menu/tree-side-menu.component.mjs +0 -646
  419. package/esm2020/lib/tree-side-menu/tree-side-menu.module.mjs +0 -35
  420. package/esm2020/lib/tree-view/tree-view.component.mjs +0 -726
  421. package/esm2020/lib/tree-view/tree-view.module.mjs +0 -22
  422. package/esm2020/lib/upload-file/upload-file.component.mjs +0 -170
  423. package/esm2020/lib/upload-file/upload-file.events.mjs +0 -2
  424. package/esm2020/lib/upload-file/upload-file.module.mjs +0 -24
  425. package/esm2020/lib/validation/validation-form.component.mjs +0 -64
  426. package/esm2020/lib/validation/validation-rule.widget.mjs +0 -111
  427. package/esm2020/lib/validation/validation.class.mjs +0 -2
  428. package/esm2020/lib/validation/validation.component.mjs +0 -89
  429. package/esm2020/lib/validation/validation.module.mjs +0 -34
  430. package/esm2020/public-api.mjs +0 -154
  431. package/fesm2015/acorex-components.mjs +0 -15087
  432. package/fesm2015/acorex-components.mjs.map +0 -1
  433. package/fesm2020/acorex-components.mjs +0 -15034
  434. package/fesm2020/acorex-components.mjs.map +0 -1
  435. package/lib/accordion/accordion.component.d.ts +0 -13
  436. package/lib/accordion/accordion.module.d.ts +0 -9
  437. package/lib/base/base-page.class.d.ts +0 -45
  438. package/lib/base/element.class.d.ts +0 -106
  439. package/lib/base/events.class.d.ts +0 -18
  440. package/lib/button/button.component.d.ts +0 -21
  441. package/lib/button/button.module.d.ts +0 -8
  442. package/lib/calendar/calendar-box/calendar-box.component.d.ts +0 -81
  443. package/lib/calendar/calendar-box/calendar-box.module.d.ts +0 -11
  444. package/lib/calendar/scheduler/scheduler-views.property.d.ts +0 -19
  445. package/lib/calendar/scheduler/scheduler.component.d.ts +0 -39
  446. package/lib/calendar/scheduler/scheduler.module.d.ts +0 -21
  447. package/lib/calendar/scheduler/toolbars/scheduler-toolbar-navigator.d.ts +0 -25
  448. package/lib/calendar/scheduler/toolbars/scheduler-toolbar-views.d.ts +0 -14
  449. package/lib/calendar/scheduler/views/agenda/scheduler-agenda-view.component.d.ts +0 -16
  450. package/lib/calendar/scheduler/views/daytime/scheduler-daytime-view.component.d.ts +0 -26
  451. package/lib/calendar/scheduler/views/month/scheduler-month-view.component.d.ts +0 -37
  452. package/lib/calendar/scheduler/views/scheduler-view.component.d.ts +0 -28
  453. package/lib/calendar/scheduler/views/timeline/scheduler-timeline-view.component.d.ts +0 -24
  454. package/lib/checkbox/checkbox.component.d.ts +0 -30
  455. package/lib/checkbox/checkbox.module.d.ts +0 -9
  456. package/lib/color-picker/color-box/color-box.component.d.ts +0 -25
  457. package/lib/color-picker/color-picker.component.d.ts +0 -30
  458. package/lib/color-picker/color-picker.module.d.ts +0 -13
  459. package/lib/context-menu/context-menu.component.d.ts +0 -22
  460. package/lib/context-menu/context-menu.directive.d.ts +0 -38
  461. package/lib/context-menu/context-menu.module.d.ts +0 -9
  462. package/lib/data-filter/columns/filter-column-date.component.d.ts +0 -22
  463. package/lib/data-filter/columns/filter-column-number.component.d.ts +0 -15
  464. package/lib/data-filter/columns/filter-column-selection.component.d.ts +0 -18
  465. package/lib/data-filter/columns/filter-column-string.component.d.ts +0 -15
  466. package/lib/data-filter/filter-panel/filter-panel.component.d.ts +0 -45
  467. package/lib/data-filter/filter.class.d.ts +0 -40
  468. package/lib/data-filter/filter.module.d.ts +0 -24
  469. package/lib/data-filter/toolbar/filter-toolbar.component.d.ts +0 -25
  470. package/lib/data-list/core/data-list.component.d.ts +0 -15
  471. package/lib/data-list/list/list.component.d.ts +0 -40
  472. package/lib/data-list/list/list.module.d.ts +0 -11
  473. package/lib/data-list/list/toolbar-list-view.component.d.ts +0 -17
  474. package/lib/data-source/datasource.component.d.ts +0 -16
  475. package/lib/data-source/datasource.module.d.ts +0 -7
  476. package/lib/date-picker/date-picker.component.d.ts +0 -81
  477. package/lib/date-picker/date-picker.module.d.ts +0 -14
  478. package/lib/dialog/dialog.component.d.ts +0 -14
  479. package/lib/dialog/dialog.module.d.ts +0 -10
  480. package/lib/dialog/dialog.service.d.ts +0 -36
  481. package/lib/drawer/drawer.component.d.ts +0 -10
  482. package/lib/drawer/drawer.module.d.ts +0 -9
  483. package/lib/dropdown/dropdown.component.d.ts +0 -38
  484. package/lib/dropdown/dropdown.module.d.ts +0 -13
  485. package/lib/fieldset/fieldset.component.d.ts +0 -11
  486. package/lib/fieldset/fieldset.module.d.ts +0 -8
  487. package/lib/form-group/form-group.component.d.ts +0 -14
  488. package/lib/form-group/form-group.module.d.ts +0 -8
  489. package/lib/label/label.component.d.ts +0 -9
  490. package/lib/label/label.module.d.ts +0 -8
  491. package/lib/loading/loading-indicator.component.d.ts +0 -9
  492. package/lib/loading/loading-panel.component.d.ts +0 -13
  493. package/lib/loading/loading.module.d.ts +0 -10
  494. package/lib/loading/loading.service.d.ts +0 -13
  495. package/lib/menu/menu-item.component.d.ts +0 -18
  496. package/lib/menu/menu.component.d.ts +0 -35
  497. package/lib/menu/menu.module.d.ts +0 -11
  498. package/lib/menu/menu2.component.d.ts +0 -21
  499. package/lib/number-box/number-box.component.d.ts +0 -52
  500. package/lib/number-box/number-box.module.d.ts +0 -10
  501. package/lib/page/content.component.d.ts +0 -8
  502. package/lib/page/footer.component.d.ts +0 -5
  503. package/lib/page/page.component.d.ts +0 -16
  504. package/lib/page/page.module.d.ts +0 -11
  505. package/lib/panel-box/panel-box.component.d.ts +0 -19
  506. package/lib/panel-box/panel-box.module.d.ts +0 -8
  507. package/lib/password-box/password-box.component.d.ts +0 -12
  508. package/lib/password-box/password-box.module.d.ts +0 -10
  509. package/lib/popover/custom-cdk-overlay.service.d.ts +0 -19
  510. package/lib/popover/overlay.service.d.ts +0 -30
  511. package/lib/popover/popover.component.d.ts +0 -30
  512. package/lib/popover/popover.module.d.ts +0 -8
  513. package/lib/popup/popup.component.d.ts +0 -39
  514. package/lib/popup/popup.module.d.ts +0 -13
  515. package/lib/popup/popup.service.d.ts +0 -22
  516. package/lib/progress-bar/progress-bar.component.d.ts +0 -7
  517. package/lib/progress-bar/progress-bar.module.d.ts +0 -8
  518. package/lib/property-editor/editors/color-editor/color.editor.d.ts +0 -13
  519. package/lib/property-editor/editors/color-editor/color.module.d.ts +0 -12
  520. package/lib/property-editor/editors/column-editor/column.editor.d.ts +0 -34
  521. package/lib/property-editor/editors/column-editor/column.module.d.ts +0 -20
  522. package/lib/property-editor/editors/conditional-color-editor/conditional-color.editor.d.ts +0 -44
  523. package/lib/property-editor/editors/conditional-color-editor/conditional-color.module.d.ts +0 -19
  524. package/lib/property-editor/editors/date-editor/date.editor.d.ts +0 -28
  525. package/lib/property-editor/editors/date-editor/date.module.d.ts +0 -12
  526. package/lib/property-editor/editors/number-editor/number.editor.d.ts +0 -19
  527. package/lib/property-editor/editors/number-editor/number.module.d.ts +0 -12
  528. package/lib/property-editor/editors/range-editor/range.editor.d.ts +0 -29
  529. package/lib/property-editor/editors/range-editor/range.module.d.ts +0 -18
  530. package/lib/property-editor/editors/selectbox-editor/selectbox.editor.d.ts +0 -28
  531. package/lib/property-editor/editors/selectbox-editor/selectbox.module.d.ts +0 -13
  532. package/lib/property-editor/editors/switch-editor/number.editor.d.ts +0 -11
  533. package/lib/property-editor/editors/switch-editor/number.module.d.ts +0 -13
  534. package/lib/property-editor/editors/text-editor/text.editor.d.ts +0 -15
  535. package/lib/property-editor/editors/text-editor/text.module.d.ts +0 -12
  536. package/lib/property-editor/editors/textarea-editor/textarea.editor.d.ts +0 -17
  537. package/lib/property-editor/editors/textarea-editor/textarea.module.d.ts +0 -12
  538. package/lib/property-editor/editors/time-editor/time.editor.d.ts +0 -17
  539. package/lib/property-editor/editors/time-editor/time.module.d.ts +0 -12
  540. package/lib/property-editor/property-editor-renderer.directive.d.ts +0 -30
  541. package/lib/property-editor/property-editor.class.d.ts +0 -67
  542. package/lib/property-editor/property-editor.module.d.ts +0 -19
  543. package/lib/query-builder/query-builder-group.component.d.ts +0 -33
  544. package/lib/query-builder/query-builder-popup/query-builder-popup.component.d.ts +0 -35
  545. package/lib/query-builder/query-builder-rule.component.d.ts +0 -45
  546. package/lib/query-builder/query-builder.class.d.ts +0 -45
  547. package/lib/query-builder/query-builder.component.d.ts +0 -27
  548. package/lib/query-builder/query-builder.module.d.ts +0 -22
  549. package/lib/query-builder/query-builder.service.d.ts +0 -18
  550. package/lib/searchbox/searchbox.component.d.ts +0 -22
  551. package/lib/searchbox/searchbox.module.d.ts +0 -13
  552. package/lib/selectbox/selectbox.component.d.ts +0 -116
  553. package/lib/selectbox/selectbox.module.d.ts +0 -15
  554. package/lib/selectbox/selectbox2.component.d.ts +0 -103
  555. package/lib/selection-list/selection-list.component.d.ts +0 -30
  556. package/lib/selection-list/selection-list.module.d.ts +0 -10
  557. package/lib/switch/switch.component.d.ts +0 -20
  558. package/lib/switch/switch.module.d.ts +0 -9
  559. package/lib/tab-page/tab-page-Renderer.component.d.ts +0 -16
  560. package/lib/tab-page/tab-page-host.component.d.ts +0 -26
  561. package/lib/tab-page/tab-page.module.d.ts +0 -10
  562. package/lib/tab-page/tab-page.service.d.ts +0 -30
  563. package/lib/tab-strip/tab-strip.component.d.ts +0 -28
  564. package/lib/tab-strip/tab-strip.module.d.ts +0 -8
  565. package/lib/tab-view/dynamic-tabs.directive.d.ts +0 -16
  566. package/lib/tab-view/tab-view.component.d.ts +0 -26
  567. package/lib/tab-view/tab-view.module.d.ts +0 -10
  568. package/lib/tab-view/tab.component.d.ts +0 -12
  569. package/lib/textarea/textarea.component.d.ts +0 -12
  570. package/lib/textarea/textarea.module.d.ts +0 -8
  571. package/lib/textbox/textbox.component.d.ts +0 -16
  572. package/lib/textbox/textbox.module.d.ts +0 -11
  573. package/lib/time-picker/time-picker.component.d.ts +0 -52
  574. package/lib/time-picker/time-picker.module.d.ts +0 -11
  575. package/lib/toast/toast-message/toast-message.component.d.ts +0 -18
  576. package/lib/toast/toast-wrapper/toast-wrapper.component.d.ts +0 -8
  577. package/lib/toast/toast.module.d.ts +0 -9
  578. package/lib/toast/toast.service.d.ts +0 -18
  579. package/lib/toolbar/group-button/toolbar-group-button.component.d.ts +0 -12
  580. package/lib/toolbar/menu/toolbar-menu.component.d.ts +0 -24
  581. package/lib/toolbar/search/toolbar-search.component.d.ts +0 -16
  582. package/lib/toolbar/title/toolbar-title.component.d.ts +0 -9
  583. package/lib/toolbar/toolbar-item.d.ts +0 -3
  584. package/lib/toolbar/toolbar.component.d.ts +0 -8
  585. package/lib/toolbar/toolbar.module.d.ts +0 -14
  586. package/lib/tooltip/tooltip.directive.d.ts +0 -21
  587. package/lib/tooltip/tooltip.module.d.ts +0 -8
  588. package/lib/tree-side-menu/tree-side-menu.component.d.ts +0 -111
  589. package/lib/tree-side-menu/tree-side-menu.module.d.ts +0 -11
  590. package/lib/tree-view/tree-view.component.d.ts +0 -117
  591. package/lib/tree-view/tree-view.module.d.ts +0 -11
  592. package/lib/upload-file/upload-file.component.d.ts +0 -38
  593. package/lib/upload-file/upload-file.events.d.ts +0 -10
  594. package/lib/upload-file/upload-file.module.d.ts +0 -13
  595. package/lib/validation/validation-form.component.d.ts +0 -19
  596. package/lib/validation/validation-rule.widget.d.ts +0 -23
  597. package/lib/validation/validation.class.d.ts +0 -16
  598. package/lib/validation/validation.component.d.ts +0 -25
  599. package/lib/validation/validation.module.d.ts +0 -11
@@ -0,0 +1,980 @@
1
+ import {
2
+ Component,
3
+ ViewEncapsulation,
4
+ ChangeDetectionStrategy,
5
+ Input,
6
+ EventEmitter,
7
+ Output,
8
+ ViewChild,
9
+ ChangeDetectorRef,
10
+ ElementRef,
11
+ ContentChild,
12
+ NgZone,
13
+ QueryList,
14
+ ContentChildren,
15
+ TemplateRef
16
+ } from '@angular/core';
17
+ import { Observable } from 'rxjs';
18
+ import { debounceTime, distinctUntilChanged } from 'rxjs/operators';
19
+ import { AXTextBoxComponent } from '../textbox/textbox.component';
20
+ import { AXDropdownComponent } from '../dropdown/dropdown.component';
21
+ import { AXBaseSizableComponent, AXBaseInputComponent, AXElementSize, AXValidatableComponent } from '../base/element.class';
22
+ import { AXDataSourceComponent } from '../data-source/datasource.component';
23
+ import { AXValidation } from '../validation/validation.component';
24
+ import { AXDataSourceReadParams } from '../data-source/read-param';
25
+ import { AXBaseEvent } from '../base/events.class';
26
+ import { AXSearchBoxComponent } from '../searchbox/searchbox.component';
27
+ import { AXConfig } from '@acorex/core';
28
+ import { differenceBy } from 'lodash';
29
+ export class AXSelectBoxSelectionChangedEvent extends AXBaseEvent {
30
+ constructor(component: any, public selectedItems: any[], public selectedValues: any[] | any) {
31
+ super();
32
+ this.component = component;
33
+ }
34
+ }
35
+
36
+ @Component({
37
+ selector: 'ax-select-box',
38
+ templateUrl: './selectbox.component.html',
39
+ encapsulation: ViewEncapsulation.None,
40
+ changeDetection: ChangeDetectionStrategy.OnPush,
41
+ host: { style: 'width: 100%' },
42
+ providers: [{ provide: AXValidatableComponent, useExisting: AXSelectBoxComponent }]
43
+ })
44
+ export class AXSelectBoxComponent extends AXValidatableComponent implements AXBaseSizableComponent, AXBaseInputComponent {
45
+ @Input() showDropDownButton: boolean = true;
46
+
47
+ @ContentChild(TemplateRef, { static: true })
48
+ rowTemplate: TemplateRef<any>;
49
+
50
+ @Input()
51
+ rowInputTemplate: TemplateRef<any>;
52
+ @ViewChild(AXTextBoxComponent, { static: true })
53
+ span: ElementRef<HTMLElement>;
54
+
55
+ @ViewChild(AXTextBoxComponent, { static: true })
56
+ textbox: AXTextBoxComponent;
57
+
58
+ @ViewChild('listContainer', { static: true })
59
+ listContainer: ElementRef<HTMLDivElement>;
60
+
61
+ @ViewChild('serchBox', { static: false })
62
+ serchBox: AXSearchBoxComponent;
63
+
64
+ @ViewChild('textBoxSelectBox', { static: true })
65
+ textBoxSelectBox: AXTextBoxComponent;
66
+
67
+ @Input() showCheckBox: boolean = true;
68
+
69
+ @Input() readonly: boolean = false;
70
+
71
+ @Input() rtl: boolean = AXConfig.get('layout.rtl');
72
+
73
+ @Input() disabled: boolean = false;
74
+
75
+ @Input() placeholder: string;
76
+
77
+ @Input() size: AXElementSize = 'md';
78
+
79
+ @Input() allowNull: boolean = true;
80
+
81
+ @Input() textAlign: 'right' | 'left' | null = null;
82
+
83
+ @Input() bufferSize: number = 20;
84
+
85
+ @Input() remoteOperation: boolean = false;
86
+
87
+ @Output()
88
+ dropdownToggle: EventEmitter<any> = new EventEmitter<any>();
89
+ // this input is Private and only use in LOV
90
+
91
+ currentfocusedIndex: number = -1;
92
+ showLoading: boolean = false;
93
+
94
+ skip: number = -1;
95
+ searchText: string = '';
96
+ // @Input()
97
+ // chipsWidth: string = '';
98
+
99
+ text: string = '';
100
+ totalCount: number = 0;
101
+
102
+ @ContentChild(AXDataSourceComponent, { static: true })
103
+ private _contentDataSource: AXDataSourceComponent;
104
+
105
+ private _dataSource: AXDataSourceComponent;
106
+
107
+ @Input()
108
+ public get dataSource(): AXDataSourceComponent {
109
+ return this._dataSource ? this._dataSource : this._contentDataSource;
110
+ }
111
+
112
+ public set dataSource(v: AXDataSourceComponent) {
113
+ this._dataSource = v;
114
+ }
115
+
116
+ @ContentChild(AXValidation, { static: true })
117
+ private _contentValidation: AXValidation;
118
+
119
+ private _validation: AXValidation;
120
+
121
+ @Input()
122
+ public get validation(): AXValidation {
123
+ return this._validation ? this._validation : this._contentValidation;
124
+ }
125
+
126
+ public set validation(v: AXValidation) {
127
+ this._validation = v;
128
+ }
129
+
130
+ constructor(private cdr: ChangeDetectorRef, private ref: ElementRef, private zone: NgZone) {
131
+ super();
132
+ }
133
+
134
+ @ViewChild('d', { static: true })
135
+ dropdown: AXDropdownComponent;
136
+
137
+ @Input() disabledCallback: (e: { item: any; index: number }) => boolean;
138
+
139
+ @Input() allowSearch: boolean = true;
140
+ @Input() textField: string = 'text';
141
+ @Input() valueField: string = 'value';
142
+ @Input() disabledField: string = 'disabled';
143
+ @Input() mode: 'single' | 'multiple' = 'single';
144
+ itemRemove: boolean = false;
145
+ @Output() itemsChange: EventEmitter<any[]> = new EventEmitter<any[]>();
146
+
147
+ @Output() onBlur: EventEmitter<any> = new EventEmitter<any>();
148
+
149
+ @Output() onFocus: EventEmitter<any> = new EventEmitter<any>();
150
+
151
+ private _items: any[] = [];
152
+ @Input()
153
+ public get items(): any[] {
154
+ return this._items;
155
+ }
156
+ public set items(v: any[]) {
157
+ this._items = v;
158
+ if (this.itemsChange) {
159
+ this.itemsChange.emit(v);
160
+ }
161
+ if (this.itemsStatusObserver) {
162
+ this.itemsStatusObserver.next(this.items.length);
163
+ }
164
+ }
165
+
166
+ hasSelectedValue: boolean = false;
167
+ itemsFiltered: any[] = [];
168
+
169
+ // #endregion
170
+
171
+ dropDownDisabled: boolean = false;
172
+
173
+ @Output()
174
+ selectionChanged: EventEmitter<AXSelectBoxSelectionChangedEvent> = new EventEmitter<AXSelectBoxSelectionChangedEvent>();
175
+
176
+ @Output()
177
+ selectedItemsChange: EventEmitter<any[]> = new EventEmitter<any[]>();
178
+
179
+ private _selectedItems: any[] = [];
180
+ @Input()
181
+ public get selectedItems(): any[] {
182
+ return this._selectedItems || [];
183
+ }
184
+ public set selectedItems(v: any[]) {
185
+ this.setSelectedItemsChange(v);
186
+ // if (!v) {
187
+ // v = [];
188
+ // }
189
+
190
+ // const old = this.selectedItems;
191
+ // if (JSON.stringify(old) !== JSON.stringify(v)) {
192
+ // this._selectedItems = this.mode == 'single' ? v.slice(0, 1) : [...new Set(v)]; //[...new Set(v[0])] : [...new Set(v)];
193
+ // this._selectedItems.forEach((c) => (c.selected = true));
194
+ // this.selectedItemsChange.emit(this._selectedItems);
195
+ // this.selectedValuesChange.emit(this.selectedValues);
196
+ // this.clearValidationStyle(this.ref.nativeElement);
197
+ // this.waitForData(() => {
198
+ // if (this._selectedItems) {
199
+ // this.items.forEach((c) => (c.selected = this._selectedItems.some((i) => i[this.valueField] == c[this.valueField])));
200
+ // }
201
+ // });
202
+ // }
203
+ }
204
+
205
+ setSelectedItemsChange(v: any[], old: any[] = this.selectedItems) {
206
+ if (!v) {
207
+ v = [];
208
+ }
209
+ // const old = this.selectedItems;
210
+ var f = differenceBy(old, v, this.valueField);
211
+ var s = differenceBy(v, old, this.valueField);
212
+ // if (JSON.stringify(old) !== JSON.stringify(v)) {
213
+ if (f.length != 0 || s.length != 0) {
214
+ this._selectedItems = this.mode == 'single' ? v.slice(0, 1) : [...new Set(v)]; //[...new Set(v[0])] : [...new Set(v)];
215
+ this._selectedItems.forEach((c) => (c.selected = true));
216
+ this.selectedItemsChange.emit(this._selectedItems);
217
+ this.selectedValuesChange.emit(this.selectedValues);
218
+ this.clearValidationStyle(this.ref.nativeElement);
219
+ this.waitForData(() => {
220
+ if (this._selectedItems) {
221
+ this.items.forEach((c) => (c.selected = this._selectedItems.some((i) => i[this.valueField] == c[this.valueField])));
222
+ }
223
+ });
224
+ }
225
+ }
226
+
227
+ ngOnInit() {
228
+ if (this.rowTemplate === undefined && this.rowInputTemplate != undefined) {
229
+ this.rowTemplate = this.rowInputTemplate;
230
+ }
231
+ if (this.rtl == null) {
232
+ this.rtl = window.getComputedStyle(this.ref.nativeElement, null).getPropertyValue('direction') === 'rtl';
233
+ }
234
+ }
235
+
236
+ scrolled(e) {
237
+ if (
238
+ this.remoteOperation &&
239
+ this.totalCount > this.items.length &&
240
+ this.listContainer.nativeElement.scrollHeight != 0 &&
241
+ this.listContainer.nativeElement.scrollHeight - this.listContainer.nativeElement.scrollTop - 300 < 50
242
+ ) {
243
+ if (this.skip !== this.items.length) {
244
+ this.showLoading = true;
245
+ this.skip = this.items.length;
246
+ const params: AXDataSourceReadParams = {};
247
+ params.skip = this.items.length;
248
+ params.take = this.bufferSize; //* (Math.floor(this.items.length / this.bufferSize) + 1);
249
+ if (this.textbox) {
250
+ params.searchText = this.text;
251
+ } else {
252
+ params.searchText = null;
253
+ }
254
+ this.fetch(params);
255
+ }
256
+ }
257
+ }
258
+ private setSelectedItems(v: any[], isUserInput: boolean) {
259
+ let changed = false;
260
+ if (isUserInput) {
261
+ changed = JSON.stringify(v) !== JSON.stringify(this.selectedItems);
262
+ }
263
+ this.selectedItems = v;
264
+ this.setSelectedIndex();
265
+ if (isUserInput && changed) {
266
+ this.emitSelectionChangedEvent();
267
+ }
268
+ }
269
+
270
+ private searchChangeObserver: any;
271
+
272
+ delay: number = 500;
273
+
274
+ textChanged(e) {
275
+ if ((e.value === null || e.value === undefined || e.value === '') && (e.oldValue === null || e.oldValue === undefined || e.oldValue === '')) {
276
+ } else {
277
+ this.currentfocusedIndex = -1;
278
+ if (this.remoteOperation) {
279
+ this.searchText = this.text;
280
+ // this.searchText = e.value;
281
+ // this.text = e.value;
282
+ // this.items = [];
283
+ if (this.items) {
284
+ let t = this.items.length;
285
+ for (let i = 0; i < t; i++) {
286
+ this.items.pop();
287
+ }
288
+ }
289
+
290
+ // this.items.forEach((element) => {
291
+ // this.items.pop();
292
+ // });
293
+ const params: AXDataSourceReadParams = {};
294
+ params.searchText = this.text;
295
+ // params.searchText = e.value;
296
+ params.skip = 0;
297
+ params.take = this.bufferSize;
298
+ this.fetch(params);
299
+ }
300
+ }
301
+ }
302
+
303
+ isItemDisabled(item: any): boolean {
304
+ if (item[this.disabledField] == true) {
305
+ return true;
306
+ } else if (this.disabledCallback) {
307
+ return this.disabledCallback({ item, index: -1 });
308
+ } else {
309
+ return false;
310
+ }
311
+ }
312
+
313
+ onButtonClick(e) {
314
+ }
315
+
316
+ private setSelectedIndex(sign: -1 | 1 | null = null): void {
317
+ if (sign == null) {
318
+ if (!this.remoteOperation && this.text && this.text !== '') {
319
+ this.currentfocusedIndex = this.items
320
+ .filter((c) => (c[this.textField] as string).toLowerCase().includes(this.text.toLowerCase()))
321
+ .indexOf(this.selectedItems[this.selectedItems.length - 1]);
322
+ } else {
323
+ this.currentfocusedIndex = this.items.indexOf(this.selectedItems[this.selectedItems.length - 1]);
324
+ }
325
+ } else {
326
+ sign === -1 ? this.currentfocusedIndex-- : this.currentfocusedIndex++;
327
+ }
328
+
329
+ if (this.remoteOperation) {
330
+ this.itemsFiltered = this.items;
331
+ } else {
332
+ this.itemsFiltered = this.text
333
+ ? this.items.filter((c) => (c[this.textField] as string).toLowerCase().includes(this.text.toLowerCase()))
334
+ : this.items;
335
+ }
336
+
337
+ this.currentfocusedIndex =
338
+ this.currentfocusedIndex < 0
339
+ ? 0
340
+ : this.currentfocusedIndex >= this.itemsFiltered.length
341
+ ? this.itemsFiltered.length - 1
342
+ : this.currentfocusedIndex;
343
+ //
344
+ // set scroll
345
+ if (this.listContainer) {
346
+ this.zone.runOutsideAngular(() => {
347
+ const itemDiv = this.listContainer.nativeElement.querySelector(`.list-item:nth-child(${this.currentfocusedIndex})`);
348
+ if (itemDiv) {
349
+ itemDiv.scrollIntoView({ behavior: 'smooth' });
350
+ }
351
+ });
352
+ }
353
+ }
354
+
355
+ @Output()
356
+ selectedValuesChange: EventEmitter<any[] | any> = new EventEmitter<any[] | any>();
357
+
358
+ @Input()
359
+ public get selectedValues(): any[] | any {
360
+ if (this.mode === 'single') {
361
+ return this._selectedItems.map((c) => c[this.valueField])[0];
362
+ } else {
363
+ return this._selectedItems.map((c) => c[this.valueField]) || [];
364
+ }
365
+ }
366
+
367
+ public set selectedValues(v: any[] | any) {
368
+ if (this.compareSelectedValues(v)) {
369
+ return;
370
+ }
371
+ if (v == null) {
372
+ this.selectedItems = [];
373
+ } else {
374
+ if (v !== undefined) {
375
+ if (v != [] && v != '' && v != null) {
376
+ this.hasSelectedValue = true;
377
+ }
378
+
379
+ this.waitForData(() => {
380
+ if (this.mode === 'single') {
381
+ if (this.items.filter((c) => v == c[this.valueField])) {
382
+ this.selectedItems = this.items.filter((c) => v == c[this.valueField]);
383
+ } else {
384
+ this.selectedItems = [];
385
+ }
386
+ } else {
387
+ if (Array.isArray(v)) {
388
+ if (this.selectedItems.length > v.length) {
389
+ this.selectedItems = this.selectedItems.filter((c) => v.includes(c[this.valueField]));
390
+ } else {
391
+ let addId = [];
392
+ v.forEach((vId) => {
393
+ addId.push({
394
+ [this.valueField]: vId
395
+ });
396
+ });
397
+
398
+ let newId = differenceBy(addId, this.selectedItems, this.valueField);
399
+ let vv = [];
400
+ newId.forEach((rc) => {
401
+ vv.push(rc[this.valueField]);
402
+ });
403
+ this.items
404
+ .filter((c) => vv.includes(c[this.valueField]))
405
+ .forEach((res) => {
406
+ this.selectedItems.push(res);
407
+ });
408
+ // this.selectedItems.push(this.items.filter((c) => vv.includes(c[this.valueField])));
409
+ this.setSelectedItemsChange(this.selectedItems, vv.length > 0 ? [1] : this.selectedItems);
410
+ }
411
+
412
+ // this.selectedItems = this.items.filter((c) => v.includes(c[this.valueField]));
413
+ } else if (v) {
414
+ this.selectedItems = this.items.filter((c) => v === c[this.valueField]);
415
+ } else {
416
+ this.selectedItems = [];
417
+ }
418
+ }
419
+ this.selectedValuesChange.emit(this.selectedValues);
420
+ this.cdr.markForCheck();
421
+ this.cdr.detectChanges();
422
+ });
423
+ }
424
+ }
425
+ }
426
+
427
+ private compareSelectedValues(newValue: any[] | any) {
428
+ const currentValue = this.selectedValues;
429
+ return (currentValue == null && newValue == null) || JSON.stringify(currentValue) === JSON.stringify(newValue);
430
+ }
431
+
432
+ private setSelectedValues(v: any[] | any, isUserInput: boolean) {
433
+ const changed = isUserInput ? !this.compareSelectedValues(v) : false;
434
+ this.selectedValues = v;
435
+ if (isUserInput && changed) {
436
+ this.emitSelectionChangedEvent();
437
+ }
438
+ }
439
+
440
+ private emitSelectionChangedEvent() {
441
+ this.selectedValuesChange.emit(this.selectedValues);
442
+ this.selectionChanged.emit(new AXSelectBoxSelectionChangedEvent(this, this.selectedItems, this.selectedValues));
443
+ }
444
+
445
+ ngAfterViewInit(): void {
446
+ if (this.bufferSize < 10) {
447
+ this.bufferSize = 10;
448
+ }
449
+ if (this.mode == 'single') {
450
+ this.showCheckBox = false;
451
+ } else {
452
+ this.showCheckBox = true;
453
+ }
454
+ if (!this.remoteOperation || (this.remoteOperation && this.hasSelectedValue)) {
455
+ this.refresh();
456
+ }
457
+ }
458
+ dropdownToggleSelecBox(e) {
459
+ this.text = '';
460
+ if (this.dropdown.isOpen) {
461
+ this.refresh();
462
+ setTimeout(() => {
463
+ if (this.serchBox) {
464
+ this.serchBox.focus();
465
+ }
466
+ }, 1);
467
+ } else {
468
+ // this.refresh();
469
+ }
470
+ this.dropdownToggle.emit(e);
471
+ }
472
+
473
+ ngAfterContentInit() {
474
+ // if (!this.allowSearch) {
475
+ // if (this.readonly == false) {
476
+ // this.itemRemove = true;
477
+ // this.readonly = true;
478
+ // }
479
+ // }
480
+ this.initValidation(this.ref, 'selectedItems', this.validation);
481
+ if (this.dataSource) {
482
+ // if (this.allowSearch == false) {
483
+ // this.fetch();
484
+ // }
485
+ this.dataSource.onDataReceived.subscribe((c) => {
486
+ this.showLoading = false;
487
+ this.dataReceived(c.data.result);
488
+ });
489
+ }
490
+ this.cdr.markForCheck();
491
+ this.cdr.detectChanges();
492
+ }
493
+
494
+ private dataReceived(data: any) {
495
+ if (this.remoteOperation) {
496
+ if (this.searchText && this.searchText != null && this.searchText !== '') {
497
+ if (data.totalCount) {
498
+ if (this.items.length == 0) {
499
+ //this.items = data.items;
500
+ data.items.forEach((item) => {
501
+ this.items.push(item);
502
+ });
503
+ } else {
504
+ data.items.forEach((item) => {
505
+ this.items.push(item);
506
+ });
507
+ // if (this.itemsStatusObserver) {
508
+ // this.itemsStatusObserver.next(this.items.length);
509
+ // }
510
+ }
511
+
512
+ this.totalCount = data.totalCount;
513
+ } else {
514
+ if (this.items.length == 0) {
515
+ this.items = data.items;
516
+ } else {
517
+ data.items.forEach((item) => {
518
+ this.items.push(item);
519
+ });
520
+ // if (this.itemsStatusObserver) {
521
+ // this.itemsStatusObserver.next(this.items.length);
522
+ // }
523
+ }
524
+ this.totalCount = data.items == undefined ? 0 : data.items.length;
525
+ }
526
+ } else if (data.items && data.items.length === data.totalCount) {
527
+ this.items = data.items;
528
+ this.totalCount = data.items.length;
529
+ } else if (data.totalCount) {
530
+ data.items.forEach((elm) => {
531
+ this.items.push(elm);
532
+ });
533
+ // if (this.itemsStatusObserver) {
534
+ // this.itemsStatusObserver.next(this.items.length);
535
+ // }
536
+ this.totalCount = data.totalCount;
537
+ } else {
538
+ data.forEach((elm) => {
539
+ this.items.push(elm);
540
+ // if (this.itemsStatusObserver) {
541
+ // this.itemsStatusObserver.next(this.items.length);
542
+ // }
543
+ });
544
+ this.totalCount = data.length;
545
+ }
546
+ } else {
547
+ this.items = data;
548
+ }
549
+
550
+ this.cdr.markForCheck();
551
+ this.cdr.detectChanges();
552
+
553
+ this.dropdown.updatePosition();
554
+ }
555
+
556
+ // private params: AXDataSourceReadParams = {};
557
+
558
+ fetch(params: AXDataSourceReadParams = {}) {
559
+ // this.params = params;
560
+ if (this.dataSource) {
561
+ this.showLoading = true;
562
+ this.dataSource.fetch(params);
563
+ }
564
+ }
565
+
566
+ refresh() {
567
+ const params: AXDataSourceReadParams = {};
568
+ if (this.remoteOperation) {
569
+ params.skip = 0;
570
+ this.skip = 0;
571
+ params.take = this.bufferSize;
572
+ }
573
+ if (this.dataSource != undefined) {
574
+ // this.items = [];
575
+ // this.items.forEach((element) => {
576
+ // this.items.pop();
577
+ // });
578
+
579
+ if (this.items) {
580
+ let t = this.items.length;
581
+ for (let i = 0; i < t; i++) {
582
+ this.items.pop();
583
+ }
584
+ }
585
+
586
+ this.fetch(params);
587
+ }
588
+ }
589
+
590
+ handleItemRemoveClick(item) {
591
+ if (this.mode === 'single') {
592
+ // this.selectedItems = null;
593
+ this.setSelectedValues(null, true);
594
+ // this.selectedItemsChange.emit(this._selectedItems);
595
+ // this.clearValidationStyle(this.ref.nativeElement);
596
+ } else {
597
+ // this.selectedItems = this.selectedItems.filter((c) => c !== item);
598
+ this.setSelectedItems(
599
+ this.selectedItems.filter((c) => c[this.valueField] !== item[this.valueField]),
600
+ true
601
+ );
602
+ // this._selectedItems = this._selectedItems.filter(c => c !== item);
603
+ // this.selectedItemsChange.emit(this._selectedItems);
604
+ // this.clearValidationStyle(this.ref.nativeElement);
605
+ }
606
+ // this.text = '';
607
+ this.validate();
608
+ this.cdr.markForCheck();
609
+ }
610
+
611
+ onFocusTextBox(e) {}
612
+
613
+ onTextBoxClick(e) {
614
+ if (this.disabled == false && this.readonly == false) {
615
+ this.dropdown.open();
616
+ }
617
+ }
618
+
619
+ handleItemClick(e: MouseEvent, item: any) {
620
+ if (this.isItemDisabled(item) == false) {
621
+ const value = item[this.valueField];
622
+
623
+ if (this.mode === 'single') {
624
+ // this.selectedValues = value;
625
+ this.setSelectedValues(value, true);
626
+ } else {
627
+ const exists = this.selectedValues.slice(0);
628
+ if (exists.includes(value)) {
629
+ if (this.allowNull == true || (this.allowNull == false && this.selectedItems.length > 1)) {
630
+ this.handleItemRemoveClick(item);
631
+ }
632
+ } else {
633
+ exists.push(value);
634
+ // this.selectedValues = exists;
635
+ this.setSelectedValues(exists, true);
636
+ }
637
+ }
638
+
639
+ if (this.mode == 'single') {
640
+ this.text = '';
641
+ this.dropdown.close();
642
+ this.cdr.markForCheck();
643
+ }
644
+ // if (e.stopPropagation() == undefined) {
645
+ // e.stopPropagation();
646
+ // }
647
+ setTimeout(() => {
648
+ if (this.serchBox) {
649
+ this.serchBox.focus();
650
+ }
651
+ }, 0);
652
+ }
653
+
654
+ e.stopPropagation();
655
+ }
656
+
657
+ handleKeyEventSearch(e: KeyboardEvent) {
658
+ if (this.disabled || this.readonly) {
659
+ this.dropdown.close();
660
+ setTimeout(() => {
661
+ this.textBoxSelectBox.focus();
662
+ }, 0);
663
+ return false;
664
+ }
665
+ if (e.key === 'Escape') {
666
+ this.text = null;
667
+ setTimeout(() => {
668
+ this.textBoxSelectBox.focus();
669
+ }, 0);
670
+ }
671
+ if ((e.key === 'ArrowDown' || e.key === 'ArrowUp') && this.getItems().length > 0 && e.type === 'keydown') {
672
+ if (this.mode === 'single') {
673
+ this.currentfocusedIndex = this.currentfocusedIndex + (e.key === 'ArrowDown' ? 1 : -1);
674
+ this.selectedItemByIndex(this.currentfocusedIndex);
675
+ } else {
676
+ if (this.dropdown.isOpen) {
677
+ this.setSelectedIndex(e.key === 'ArrowDown' ? 1 : -1);
678
+ } else {
679
+ this.dropdown.open();
680
+ setTimeout(() => {
681
+ if (this.serchBox) {
682
+ this.serchBox.focus();
683
+ }
684
+ }, 0);
685
+ }
686
+ }
687
+ }
688
+ // if (e.key == 'Enter' && this.dropdown.isOpen && this.mode == 'single') {
689
+ // this.dropdown.close();
690
+ // setTimeout(() => {
691
+ // this.dropdown.focus();
692
+ // }, 0);
693
+ // }
694
+ //e.stopPropagation();
695
+ //e.preventDefault();
696
+ e.stopImmediatePropagation();
697
+ if (e.type === 'keydown' && e.key == 'Enter' && this.dropdown.isOpen) {
698
+ if (!this.remoteOperation && this.text && this.text !== '') {
699
+ this.itemsFiltered = this.items.filter((c) => (c[this.textField] as string).toLowerCase().includes(this.text.toLowerCase()));
700
+ if (this.itemsFiltered.length === 1) {
701
+ this.currentfocusedIndex = 0;
702
+ }
703
+ } else {
704
+ this.itemsFiltered = this.items;
705
+ }
706
+
707
+ if (
708
+ this.selectedItems.filter((c) => c[this.valueField] === this.itemsFiltered[this.currentfocusedIndex][this.valueField]).length > 0 &&
709
+ this.mode == 'multiple'
710
+ ) {
711
+ if (this.allowNull == true || (this.allowNull == false && this.selectedItems.length > 1)) {
712
+ if (!this.remoteOperation && this.text && this.text !== '') {
713
+ this.selectedItems = this.selectedItems.filter(
714
+ (c) =>
715
+ c !==
716
+ this.items.filter((c) => (c[this.textField] as string).toLowerCase().includes(this.text.toLowerCase()))[this.currentfocusedIndex]
717
+ );
718
+ } else {
719
+ this.selectedItems = this.selectedItems.filter((c) => c[this.valueField] !== this.items[this.currentfocusedIndex][this.valueField]);
720
+ }
721
+ this.emitSelectionChangedEvent();
722
+ }
723
+ } else {
724
+ if (this.mode == 'multiple') {
725
+ if (this.currentfocusedIndex != -1) {
726
+ if (!this.remoteOperation && this.text && this.text !== '') {
727
+ if (this.itemsFiltered.length === 1) {
728
+ this.selectedItems.push(this.itemsFiltered[0]);
729
+ } else {
730
+ this.selectedItems.push(this.itemsFiltered[this.currentfocusedIndex]);
731
+ }
732
+ } else {
733
+ this.selectedItems.push(this.items[this.currentfocusedIndex]);
734
+ }
735
+ this.emitSelectionChangedEvent();
736
+ }
737
+ } else {
738
+ if (this.text && this.itemsFiltered?.length === 1) {
739
+ this.setSelectedItems(this.itemsFiltered, true);
740
+ }
741
+ if (this.mode == 'single') {
742
+ this.dropdown.close();
743
+ setTimeout(() => {
744
+ this.textBoxSelectBox.focus();
745
+ }, 0);
746
+ }
747
+ }
748
+ }
749
+ e.stopPropagation();
750
+ e.preventDefault();
751
+ e.stopImmediatePropagation();
752
+ }
753
+ this.cdr.markForCheck();
754
+ }
755
+
756
+ isChar(str: string) {
757
+ if (
758
+ str.includes('Shift') ||
759
+ str.includes('Tab') ||
760
+ str.includes('Control') ||
761
+ str.includes('Alt') ||
762
+ str.includes('CapsLock') ||
763
+ str.includes('Meta') ||
764
+ str.includes('ContextMenu') ||
765
+ str.includes('Enter') ||
766
+ str.includes('Backspace') ||
767
+ str.includes('PrintScreen') ||
768
+ str.includes('ScrollLock') ||
769
+ str.includes('Pause') ||
770
+ str.includes('Home') ||
771
+ str.includes('End') ||
772
+ str.includes('Insert') ||
773
+ str.includes('PageUp') ||
774
+ str.includes('Delete') ||
775
+ str.includes('PageDown') ||
776
+ str.includes('NumLock') ||
777
+ str.includes('Escape') ||
778
+ str.includes('Arrow') ||
779
+ str.includes('ّF1') ||
780
+ str.includes('F2') ||
781
+ str.includes('F3') ||
782
+ str.includes('F4') ||
783
+ str.includes('F5') ||
784
+ str.includes('F6') ||
785
+ str.includes('F7') ||
786
+ str.includes('F8') ||
787
+ str.includes('F9') ||
788
+ str.includes('F10') ||
789
+ str.includes('F11') ||
790
+ str.includes('F12')
791
+ ) {
792
+ return false;
793
+ } else {
794
+ return true;
795
+ }
796
+ }
797
+
798
+ handleKeyEvent(e: any) {
799
+ // const NumberMinusPattern = /[a-zA-Z0-9\-]/g;
800
+ // const Farsi = /[پچجحخهعغفقثصضشسیبلاتنمکگوئدذرزطظژؤإأءًٌٍَُِّ\s]+$/;
801
+ // const inputChar = String.fromCharCode(e.charCode);
802
+ // const patternEn = /^[a-zA-Z0-9]*$/;
803
+ // const pattern = /^[\u0600-\u06FF\s]+$/;
804
+ const inputChar = e.key;
805
+ if (
806
+ (inputChar != 'Backspace' &&
807
+ inputChar != 'Backspace' &&
808
+ inputChar != 'Tab' &&
809
+ inputChar != 'Enter' &&
810
+ inputChar != 'Escape' &&
811
+ inputChar != 'ArrowDown' &&
812
+ inputChar != 'ArrowUp') ||
813
+ e.code === 'Space' ||
814
+ e.ctrlKey == true
815
+ ) {
816
+ e.preventDefault();
817
+ }
818
+ if (
819
+ e.key === 'Backspace' &&
820
+ e.type === 'keydown' &&
821
+ ((this.allowNull === true && this.selectedItems.length > 0) || (this.allowNull === false && this.selectedItems.length > 1))
822
+ ) {
823
+ this.selectedItems.pop();
824
+ this.emitSelectionChangedEvent();
825
+ }
826
+ if (this.disabled || this.readonly) {
827
+ this.dropdown.close();
828
+ setTimeout(() => {
829
+ this.textBoxSelectBox.focus();
830
+ }, 0);
831
+ return false;
832
+ }
833
+ const INPUT = String.fromCharCode(e.keyCode);
834
+ if (this.isChar(e.key) && this.allowSearch && e.ctrlKey == false) {
835
+ this.dropdown.open();
836
+ setTimeout(() => {
837
+ if (this.serchBox) {
838
+ this.serchBox.focus();
839
+ }
840
+ }, 0);
841
+ this.text = e.key;
842
+ }
843
+
844
+ if (e.key === 'Escape') {
845
+ this.text = null;
846
+ this.dropdown.close();
847
+ setTimeout(() => {
848
+ this.textBoxSelectBox.focus();
849
+ }, 0);
850
+ }
851
+ if ((e.key === 'ArrowDown' || e.key === 'ArrowUp') && this.getItems().length > 0 && e.type === 'keydown') {
852
+ if (this.mode === 'single') {
853
+ this.selectedItemByIndex(this.currentfocusedIndex + (e.key === 'ArrowDown' ? 1 : -1));
854
+ } else {
855
+ if (this.dropdown.isOpen) {
856
+ // this.setSelectedIndex((e.key === 'ArrowDown' ? 1 : -1));
857
+ if (this.allowSearch == false) {
858
+ this.setSelectedIndex(e.key === 'ArrowDown' ? 1 : -1);
859
+ } else {
860
+ setTimeout(() => {
861
+ if (this.serchBox) {
862
+ this.serchBox.focus();
863
+ }
864
+ }, 0);
865
+ }
866
+ } else {
867
+ this.dropdown.open();
868
+ if (this.allowSearch == true) {
869
+ setTimeout(() => {
870
+ if (this.serchBox) {
871
+ this.serchBox.focus();
872
+ }
873
+ }, 0);
874
+ }
875
+ }
876
+ }
877
+ }
878
+
879
+ if (this.allowSearch === false) {
880
+ if (e.type === 'keydown' && e.key == 'Enter' && this.dropdown.isOpen) {
881
+ e.stopImmediatePropagation();
882
+ if (
883
+ this.selectedItems.filter((c) => c[this.valueField] === this.itemsFiltered[this.currentfocusedIndex][this.valueField]).length > 0 &&
884
+ this.mode == 'multiple'
885
+ ) {
886
+ if (this.allowNull == true || (this.allowNull == false && this.selectedItems.length > 1)) {
887
+ if (!this.remoteOperation && this.text && this.text !== '') {
888
+ this.selectedItems = this.selectedItems.filter(
889
+ (c) =>
890
+ c !==
891
+ this.items.filter((c) => (c[this.textField] as string).toLowerCase().includes(this.text.toLowerCase()))[this.currentfocusedIndex]
892
+ );
893
+ } else {
894
+ this.selectedItems = this.selectedItems.filter((c) => c[this.valueField] !== this.items[this.currentfocusedIndex][this.valueField]);
895
+ }
896
+ this.emitSelectionChangedEvent();
897
+ }
898
+ } else {
899
+ if (this.mode == 'multiple') {
900
+ if (this.currentfocusedIndex != -1) {
901
+ if (!this.remoteOperation && this.text && this.text !== '') {
902
+ if (this.itemsFiltered.length === 1) {
903
+ this.selectedItems.push(this.itemsFiltered[0]);
904
+ } else {
905
+ this.selectedItems.push(this.itemsFiltered[this.currentfocusedIndex]);
906
+ }
907
+ } else {
908
+ this.selectedItems.push(this.items[this.currentfocusedIndex]);
909
+ }
910
+ this.emitSelectionChangedEvent();
911
+ }
912
+ } else {
913
+ if (this.text && this.itemsFiltered.length === 1) {
914
+ this.setSelectedItems(this.itemsFiltered, true);
915
+ }
916
+ if (this.mode == 'single') {
917
+ this.dropdown.close();
918
+ setTimeout(() => {
919
+ this.textBoxSelectBox.focus();
920
+ }, 0);
921
+ }
922
+ }
923
+ }
924
+ }
925
+ }
926
+
927
+ this.cdr.markForCheck();
928
+ }
929
+
930
+ focus(): void {
931
+ this.textbox.focus();
932
+ }
933
+
934
+ selectedItemByIndex(index: number) {
935
+ let item = [];
936
+ if (!this.remoteOperation && this.text && this.text !== '') {
937
+ this.itemsFiltered = this.items.filter((c) => (c[this.textField] as string).toLowerCase().includes(this.text.toLowerCase()));
938
+
939
+ item = this.itemsFiltered[index];
940
+ } else {
941
+ item = this.items[index];
942
+ }
943
+ //
944
+ // const item = this.text ? this.items.filter((c) => (c[this.textField] as string).toLowerCase().includes(this.text.toLowerCase()))[index] : this.items[index];
945
+ if (item) {
946
+ this.setSelectedItems([item], true);
947
+ }
948
+
949
+ this.setSelectedIndex();
950
+ }
951
+
952
+ getItems(): any[] {
953
+ if (this.items == null) {
954
+ return [];
955
+ }
956
+ return !this.remoteOperation && this.text && this.text !== ''
957
+ ? this.items.filter((c) => (c[this.textField] as string).toLowerCase().includes(this.text.toLowerCase()))
958
+ : this.items;
959
+ }
960
+
961
+ isItemSelected(item: any): boolean {
962
+ return this.selectedItems && this.selectedItems.filter((c) => c[this.valueField] === item[this.valueField]).length > 0;
963
+ }
964
+
965
+ private itemsStatusObserver: any;
966
+ private waitForData(callbackfn: () => void) {
967
+ if (this.items && this.items.length) {
968
+ callbackfn();
969
+ } else if (!this.itemsStatusObserver) {
970
+ Observable.create((observer) => {
971
+ this.itemsStatusObserver = observer;
972
+ })
973
+ .pipe(debounceTime(100))
974
+ .pipe(distinctUntilChanged())
975
+ .subscribe((c) => {
976
+ callbackfn();
977
+ });
978
+ }
979
+ }
980
+ }