@tetacom/ng-components 1.4.22 → 1.5.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 (324) hide show
  1. package/.eslintrc.json +3 -5
  2. package/component/dropdown/dropdown-base.d.ts +1 -1
  3. package/directive/dynamic-content-base.directive.d.ts +1 -1
  4. package/fesm2022/tetacom-ng-components.mjs +515 -489
  5. package/fesm2022/tetacom-ng-components.mjs.map +1 -1
  6. package/package.json +3 -5
  7. package/pipe/prepend-zero/prepend-zero.pipe.d.ts +7 -0
  8. package/pipe/prepend-zero/public-api.d.ts +1 -0
  9. package/pipe/public-api.d.ts +1 -0
  10. package/style/badge.scss +6 -4
  11. package/style/checkbox.scss +3 -1
  12. package/style/chips.scss +3 -1
  13. package/style/icon.scss +3 -1
  14. package/style/message.scss +3 -1
  15. package/style/navigation.scss +3 -1
  16. package/style/presets/view-types.scss +3 -1
  17. package/style/toggle.scss +3 -1
  18. package/style/toolbar.scss +3 -1
  19. package/esm2022/common/contract/auto-close-ignore-case.mjs +0 -2
  20. package/esm2022/common/contract/constructor-type.mjs +0 -2
  21. package/esm2022/common/contract/dynamic-data.mjs +0 -10
  22. package/esm2022/common/contract/i-dictionary.mjs +0 -2
  23. package/esm2022/common/contract/i-id-name.mjs +0 -2
  24. package/esm2022/common/contract/i-id.mjs +0 -2
  25. package/esm2022/common/contract/i-rect.mjs +0 -2
  26. package/esm2022/common/contract/i-tree-data.mjs +0 -2
  27. package/esm2022/common/contract/public-api.mjs +0 -10
  28. package/esm2022/common/contract/teta-content-ref.mjs +0 -8
  29. package/esm2022/common/enum/align.enum.mjs +0 -13
  30. package/esm2022/common/enum/public-api.mjs +0 -4
  31. package/esm2022/common/enum/teta-size.enum.mjs +0 -9
  32. package/esm2022/common/enum/vertical-align.enum.mjs +0 -11
  33. package/esm2022/common/model/public-api.mjs +0 -2
  34. package/esm2022/common/model/view-type.model.mjs +0 -2
  35. package/esm2022/common/public-api.mjs +0 -6
  36. package/esm2022/common/service/click.service.mjs +0 -23
  37. package/esm2022/common/service/dynamic-component.service.mjs +0 -93
  38. package/esm2022/common/service/overlay-container.service.mjs +0 -41
  39. package/esm2022/common/service/public-api.mjs +0 -4
  40. package/esm2022/common/util/array-util.mjs +0 -121
  41. package/esm2022/common/util/dom-util.mjs +0 -19
  42. package/esm2022/common/util/position-util.mjs +0 -136
  43. package/esm2022/common/util/public-api.mjs +0 -4
  44. package/esm2022/component/accordion/accordion/accordion.component.mjs +0 -17
  45. package/esm2022/component/accordion/accordion-content.directive.mjs +0 -17
  46. package/esm2022/component/accordion/accordion-head/accordion-head.component.mjs +0 -51
  47. package/esm2022/component/accordion/accordion-item/accordion-item.component.mjs +0 -62
  48. package/esm2022/component/accordion/public-api.mjs +0 -5
  49. package/esm2022/component/autocomplete/autocomplete/autocomplete.component.mjs +0 -13
  50. package/esm2022/component/autocomplete/public-api.mjs +0 -2
  51. package/esm2022/component/avatar/avatar/avatar.component.mjs +0 -55
  52. package/esm2022/component/avatar/model/avatar-color.enum.mjs +0 -22
  53. package/esm2022/component/avatar/public-api.mjs +0 -2
  54. package/esm2022/component/button/button/button.component.mjs +0 -67
  55. package/esm2022/component/button/public-api.mjs +0 -2
  56. package/esm2022/component/chart-3d/chart3d/chart3d.component.mjs +0 -241
  57. package/esm2022/component/chart-3d/model/base-3d-point.mjs +0 -2
  58. package/esm2022/component/chart-3d/model/chart-3d-options.mjs +0 -7
  59. package/esm2022/component/chart-3d/model/public-api.mjs +0 -3
  60. package/esm2022/component/chart-3d/model/series-3d.mjs +0 -7
  61. package/esm2022/component/chart-3d/public-api.mjs +0 -3
  62. package/esm2022/component/checkbox/checkbox/checkbox.component.mjs +0 -137
  63. package/esm2022/component/checkbox/public-api.mjs +0 -2
  64. package/esm2022/component/date-picker/base-calendar.mjs +0 -121
  65. package/esm2022/component/date-picker/base-picker.mjs +0 -109
  66. package/esm2022/component/date-picker/date-picker/date-calendar/date-calendar.component.mjs +0 -50
  67. package/esm2022/component/date-picker/date-picker/date-picker.component.mjs +0 -228
  68. package/esm2022/component/date-picker/date-range/date-range.component.mjs +0 -233
  69. package/esm2022/component/date-picker/date-range/range-calendar/range-calendar.component.mjs +0 -118
  70. package/esm2022/component/date-picker/day-picker/day-item/day-item.component.mjs +0 -15
  71. package/esm2022/component/date-picker/day-picker/day-picker.component.mjs +0 -118
  72. package/esm2022/component/date-picker/model/date-period.mjs +0 -7
  73. package/esm2022/component/date-picker/model/date-picker-mode.enum.mjs +0 -7
  74. package/esm2022/component/date-picker/model/day-model.mjs +0 -13
  75. package/esm2022/component/date-picker/model/from-to.model.mjs +0 -2
  76. package/esm2022/component/date-picker/model/min-max-date.model.mjs +0 -2
  77. package/esm2022/component/date-picker/model/public-api.mjs +0 -6
  78. package/esm2022/component/date-picker/month-picker/month-picker.component.mjs +0 -47
  79. package/esm2022/component/date-picker/public-api.mjs +0 -6
  80. package/esm2022/component/date-picker/year-picker/scroll-to-selected-year.directive.mjs +0 -27
  81. package/esm2022/component/date-picker/year-picker/year-picker.component.mjs +0 -48
  82. package/esm2022/component/delimiter/delimiter/delimiter.component.mjs +0 -63
  83. package/esm2022/component/delimiter/public-api.mjs +0 -2
  84. package/esm2022/component/divider/divider/divider.component.mjs +0 -18
  85. package/esm2022/component/divider/public-api.mjs +0 -2
  86. package/esm2022/component/dropdown/dropdown/dropdown.component.mjs +0 -30
  87. package/esm2022/component/dropdown/dropdown-base.mjs +0 -224
  88. package/esm2022/component/dropdown/dropdown-content.directive.mjs +0 -18
  89. package/esm2022/component/dropdown/dropdown-head.directive.mjs +0 -19
  90. package/esm2022/component/dropdown/dropdown.directive.mjs +0 -38
  91. package/esm2022/component/dropdown/public-api.mjs +0 -5
  92. package/esm2022/component/dynamic-component/popup-content/popup-content.component.mjs +0 -53
  93. package/esm2022/component/dynamic-component/public-api.mjs +0 -2
  94. package/esm2022/component/expand-card/expand-card/expand-card.component.mjs +0 -34
  95. package/esm2022/component/expand-card/expand-item/expand-item.component.mjs +0 -25
  96. package/esm2022/component/expand-card/public-api.mjs +0 -3
  97. package/esm2022/component/expand-panel/expand-panel/expand-panel.component.mjs +0 -65
  98. package/esm2022/component/expand-panel/expand-panel-content.directive.mjs +0 -17
  99. package/esm2022/component/expand-panel/expand-panel-head.directive.mjs +0 -17
  100. package/esm2022/component/expand-panel/public-api.mjs +0 -4
  101. package/esm2022/component/file-upload/file-item/file-item.component.mjs +0 -13
  102. package/esm2022/component/file-upload/file-upload-area/file-upload-area.component.mjs +0 -87
  103. package/esm2022/component/file-upload/public-api.mjs +0 -3
  104. package/esm2022/component/filter/base/filter-base.mjs +0 -10
  105. package/esm2022/component/filter/base/filter-component-base.mjs +0 -3
  106. package/esm2022/component/filter/boolean-filter/boolean-filter.component.mjs +0 -63
  107. package/esm2022/component/filter/contarct/boolean-filter.mjs +0 -8
  108. package/esm2022/component/filter/contarct/date-filter-value.mjs +0 -9
  109. package/esm2022/component/filter/contarct/date-filter.mjs +0 -11
  110. package/esm2022/component/filter/contarct/filter-component-map.mjs +0 -15
  111. package/esm2022/component/filter/contarct/filter-item.mjs +0 -34
  112. package/esm2022/component/filter/contarct/filter-state.mjs +0 -145
  113. package/esm2022/component/filter/contarct/i-filter.mjs +0 -2
  114. package/esm2022/component/filter/contarct/list-filter.mjs +0 -12
  115. package/esm2022/component/filter/contarct/numeric-filter-value.mjs +0 -10
  116. package/esm2022/component/filter/contarct/numeric-filter.mjs +0 -9
  117. package/esm2022/component/filter/contarct/sort-param.mjs +0 -14
  118. package/esm2022/component/filter/contarct/string-filter.mjs +0 -12
  119. package/esm2022/component/filter/date-filter/date-filter.component.mjs +0 -64
  120. package/esm2022/component/filter/enum/filter-type.enum.mjs +0 -10
  121. package/esm2022/component/filter/enum/list-filter-type.enum.mjs +0 -6
  122. package/esm2022/component/filter/enum/string-filter-type.enum.mjs +0 -20
  123. package/esm2022/component/filter/filter-host/filter-host.component.mjs +0 -79
  124. package/esm2022/component/filter/list-filter/list-filter.component.mjs +0 -96
  125. package/esm2022/component/filter/numeric-filter/numeric-filter.component.mjs +0 -64
  126. package/esm2022/component/filter/public-api.mjs +0 -23
  127. package/esm2022/component/filter/string-filter/string-filter.component.mjs +0 -64
  128. package/esm2022/component/icon/icon/icon.component.mjs +0 -54
  129. package/esm2022/component/icon/icon-file/icon-file.component.mjs +0 -27
  130. package/esm2022/component/icon/icon-sprite.directive.mjs +0 -34
  131. package/esm2022/component/icon/icon.service.mjs +0 -58
  132. package/esm2022/component/icon/public-api.mjs +0 -5
  133. package/esm2022/component/input/color-input/color-input.component.mjs +0 -71
  134. package/esm2022/component/input/form-group-title/form-group-title.component.mjs +0 -18
  135. package/esm2022/component/input/input/input.component.mjs +0 -38
  136. package/esm2022/component/input/public-api.mjs +0 -6
  137. package/esm2022/component/input/text-field/text-field.component.mjs +0 -94
  138. package/esm2022/component/message/message/message.component.mjs +0 -76
  139. package/esm2022/component/message/message-host/message-host.component.mjs +0 -84
  140. package/esm2022/component/message/message.service.mjs +0 -35
  141. package/esm2022/component/message/model/message.mjs +0 -23
  142. package/esm2022/component/message/public-api.mjs +0 -5
  143. package/esm2022/component/modal/dialog/dialog.component.mjs +0 -46
  144. package/esm2022/component/modal/dialog.service.mjs +0 -40
  145. package/esm2022/component/modal/modal-container/modal-container.component.mjs +0 -77
  146. package/esm2022/component/modal/modal.module.mjs +0 -32
  147. package/esm2022/component/modal/modal.service.mjs +0 -122
  148. package/esm2022/component/modal/model/current-modal.mjs +0 -3
  149. package/esm2022/component/modal/model/i-modal-config.mjs +0 -2
  150. package/esm2022/component/modal/model/i-modal-result.mjs +0 -2
  151. package/esm2022/component/modal/model/modal-close-reason.enum.mjs +0 -8
  152. package/esm2022/component/modal/model/modal-instance.mjs +0 -34
  153. package/esm2022/component/modal/public-api.mjs +0 -11
  154. package/esm2022/component/pager/model/pager-state.mjs +0 -51
  155. package/esm2022/component/pager/pager/pager.component.mjs +0 -13
  156. package/esm2022/component/pager/public-api.mjs +0 -4
  157. package/esm2022/component/pager/util/pager-util.mjs +0 -6
  158. package/esm2022/component/panel/panel/panel.component.mjs +0 -45
  159. package/esm2022/component/panel/public-api.mjs +0 -2
  160. package/esm2022/component/progress-bar/progress-bar/progress-bar.component.mjs +0 -130
  161. package/esm2022/component/progress-bar/public-api.mjs +0 -2
  162. package/esm2022/component/property-grid/property-grid/property-grid-group/property-grid-group.component.mjs +0 -24
  163. package/esm2022/component/property-grid/property-grid/property-grid-item/property-grid-item.component.mjs +0 -133
  164. package/esm2022/component/property-grid/property-grid/property-grid-item-description.directive.mjs +0 -20
  165. package/esm2022/component/property-grid/property-grid/property-grid.component.mjs +0 -97
  166. package/esm2022/component/property-grid/public-api.mjs +0 -4
  167. package/esm2022/component/public-api.mjs +0 -72
  168. package/esm2022/component/radio/public-api.mjs +0 -3
  169. package/esm2022/component/radio/radio/radio.component.mjs +0 -240
  170. package/esm2022/component/radio/radio-button/radio-button.component.mjs +0 -63
  171. package/esm2022/component/resize-panel/public-api.mjs +0 -2
  172. package/esm2022/component/resize-panel/resize-panel/resize-panel.component.mjs +0 -166
  173. package/esm2022/component/select/public-api.mjs +0 -4
  174. package/esm2022/component/select/select/select.component.mjs +0 -272
  175. package/esm2022/component/select/select-option.directive.mjs +0 -17
  176. package/esm2022/component/select/select-value.directive.mjs +0 -17
  177. package/esm2022/component/sidebar/public-api.mjs +0 -3
  178. package/esm2022/component/sidebar/sidebar/sidebar.component.mjs +0 -48
  179. package/esm2022/component/sidebar/sidebar-position.enum.mjs +0 -8
  180. package/esm2022/component/stepper/public-api.mjs +0 -2
  181. package/esm2022/component/stepper/stepper/stepper.component.mjs +0 -16
  182. package/esm2022/component/switch/public-api.mjs +0 -3
  183. package/esm2022/component/switch/switch/switch.component.mjs +0 -61
  184. package/esm2022/component/switch/switch-button/switch-button.component.mjs +0 -47
  185. package/esm2022/component/switch/switch.service.mjs +0 -21
  186. package/esm2022/component/table/base/cell-component-base.mjs +0 -158
  187. package/esm2022/component/table/base/detail-component-base.mjs +0 -3
  188. package/esm2022/component/table/base/head-cell-component-base.mjs +0 -18
  189. package/esm2022/component/table/cell/cell.component.mjs +0 -28
  190. package/esm2022/component/table/cell-host/cell-host.component.mjs +0 -56
  191. package/esm2022/component/table/contract/cell-components-map.mjs +0 -15
  192. package/esm2022/component/table/contract/column-reorder-event.mjs +0 -7
  193. package/esm2022/component/table/contract/column-resize-event.mjs +0 -7
  194. package/esm2022/component/table/contract/head-dropdown-tab.mjs +0 -2
  195. package/esm2022/component/table/contract/i-cell-coordinates.mjs +0 -2
  196. package/esm2022/component/table/contract/i-cell-event.mjs +0 -2
  197. package/esm2022/component/table/contract/i-cell-instance.mjs +0 -2
  198. package/esm2022/component/table/contract/i-cell-value.mjs +0 -2
  199. package/esm2022/component/table/contract/public-api.mjs +0 -13
  200. package/esm2022/component/table/contract/sort-event.mjs +0 -7
  201. package/esm2022/component/table/contract/table-column-store.mjs +0 -12
  202. package/esm2022/component/table/contract/table-column.mjs +0 -44
  203. package/esm2022/component/table/contract/table-row.mjs +0 -7
  204. package/esm2022/component/table/default/boolean-cell/boolean-cell.component.mjs +0 -39
  205. package/esm2022/component/table/default/date-cell/date-cell.component.mjs +0 -40
  206. package/esm2022/component/table/default/date-time-cell/date-time-cell.component.mjs +0 -40
  207. package/esm2022/component/table/default/default-head-cell/default-head-cell.component.mjs +0 -49
  208. package/esm2022/component/table/default/list-cell/list-cell.component.mjs +0 -60
  209. package/esm2022/component/table/default/numeric-cell/numeric-cell.component.mjs +0 -39
  210. package/esm2022/component/table/default/string-cell/string-cell.component.mjs +0 -40
  211. package/esm2022/component/table/enum/aggregation-type.enum.mjs +0 -9
  212. package/esm2022/component/table/enum/edit-event.enum.mjs +0 -7
  213. package/esm2022/component/table/enum/edit-type.enum.mjs +0 -7
  214. package/esm2022/component/table/enum/public-api.mjs +0 -5
  215. package/esm2022/component/table/enum/select-type.enum.mjs +0 -7
  216. package/esm2022/component/table/head-cell/head-cell.component.mjs +0 -204
  217. package/esm2022/component/table/head-cell-dropdown/head-cell-dropdown.component.mjs +0 -50
  218. package/esm2022/component/table/head-cell-host/head-cell-host.component.mjs +0 -60
  219. package/esm2022/component/table/public-api.mjs +0 -42
  220. package/esm2022/component/table/selection-cell/selection-cell.component.mjs +0 -46
  221. package/esm2022/component/table/selection-head-cell/selection-head-cell.component.mjs +0 -45
  222. package/esm2022/component/table/service/table.service.mjs +0 -650
  223. package/esm2022/component/table/table/table.component.mjs +0 -470
  224. package/esm2022/component/table/table-body/table-body.component.mjs +0 -210
  225. package/esm2022/component/table/table-head/filter-dropdown-tab/filter-dropdown-tab.component.mjs +0 -57
  226. package/esm2022/component/table/table-head/main-dropdown-tab/main-dropdown-tab.component.mjs +0 -89
  227. package/esm2022/component/table/table-head/table-head.component.mjs +0 -76
  228. package/esm2022/component/table/table-head/visibility-dropdown-tab/visibility-dropdown-tab.component.mjs +0 -154
  229. package/esm2022/component/table/table-head-group/table-head-group.component.mjs +0 -72
  230. package/esm2022/component/table/table-row/table-row.component.mjs +0 -42
  231. package/esm2022/component/table/util/public-api.mjs +0 -3
  232. package/esm2022/component/table/util/state-util.mjs +0 -146
  233. package/esm2022/component/table/util/table-util.mjs +0 -133
  234. package/esm2022/component/tabs/public-api.mjs +0 -11
  235. package/esm2022/component/tabs/tab/tab.component.mjs +0 -42
  236. package/esm2022/component/tabs/tab-content.directive.mjs +0 -17
  237. package/esm2022/component/tabs/tab-title.directive.mjs +0 -17
  238. package/esm2022/component/tabs/tabs/tabs.component.mjs +0 -82
  239. package/esm2022/component/theme-switch/public-api.mjs +0 -3
  240. package/esm2022/component/theme-switch/theme-switch/theme-switch.component.mjs +0 -30
  241. package/esm2022/component/theme-switch/theme-switch.service.mjs +0 -34
  242. package/esm2022/component/toggle/public-api.mjs +0 -2
  243. package/esm2022/component/toggle/toggle/toggle.component.mjs +0 -79
  244. package/esm2022/component/toolbar/public-api.mjs +0 -5
  245. package/esm2022/component/toolbar/toolbar/toolbar.component.mjs +0 -26
  246. package/esm2022/component/tree/public-api.mjs +0 -4
  247. package/esm2022/component/tree/tree/tree.component.mjs +0 -143
  248. package/esm2022/component/tree/tree-item/tree-item.component.mjs +0 -75
  249. package/esm2022/component/tree/tree-item-toggle/tree-item-toggle.component.mjs +0 -28
  250. package/esm2022/component/tree/tree.service.mjs +0 -40
  251. package/esm2022/directive/auto-position/auto-position.directive.mjs +0 -71
  252. package/esm2022/directive/auto-position/public-api.mjs +0 -2
  253. package/esm2022/directive/click-outside/click-outside.directive.mjs +0 -66
  254. package/esm2022/directive/click-outside/public-api.mjs +0 -2
  255. package/esm2022/directive/context-menu/context-menu.directive.mjs +0 -119
  256. package/esm2022/directive/context-menu/public-api.mjs +0 -2
  257. package/esm2022/directive/disable-control/disable-control.directive.mjs +0 -35
  258. package/esm2022/directive/disable-control/public-api.mjs +0 -2
  259. package/esm2022/directive/drag-drop/drag-container.directive.mjs +0 -92
  260. package/esm2022/directive/drag-drop/drag-drop.service.mjs +0 -145
  261. package/esm2022/directive/drag-drop/drag-placeholder.directive.mjs +0 -15
  262. package/esm2022/directive/drag-drop/drag-preview.directive.mjs +0 -17
  263. package/esm2022/directive/drag-drop/drag.directive.mjs +0 -138
  264. package/esm2022/directive/drag-drop/model/drag-container-instance.mjs +0 -8
  265. package/esm2022/directive/drag-drop/model/drag-instance.mjs +0 -7
  266. package/esm2022/directive/drag-drop/model/drag-process.mjs +0 -2
  267. package/esm2022/directive/drag-drop/model/drag-selection.mjs +0 -2
  268. package/esm2022/directive/drag-drop/model/drop-event.mjs +0 -2
  269. package/esm2022/directive/drag-drop/model/drop-target.mjs +0 -2
  270. package/esm2022/directive/drag-drop/model/point.mjs +0 -2
  271. package/esm2022/directive/drag-drop/model/public-api.mjs +0 -8
  272. package/esm2022/directive/drag-drop/public-api.mjs +0 -7
  273. package/esm2022/directive/drag-sort/drag-sort-container.directive.mjs +0 -65
  274. package/esm2022/directive/drag-sort/drag-sort-event.mjs +0 -2
  275. package/esm2022/directive/drag-sort/drag-sort-item.directive.mjs +0 -111
  276. package/esm2022/directive/drag-sort/public-api.mjs +0 -4
  277. package/esm2022/directive/dynamic-content-base.directive.mjs +0 -80
  278. package/esm2022/directive/highlight/highlight.directive.mjs +0 -72
  279. package/esm2022/directive/highlight/public-api.mjs +0 -2
  280. package/esm2022/directive/hint/hint.directive.mjs +0 -102
  281. package/esm2022/directive/hint/public-api.mjs +0 -2
  282. package/esm2022/directive/let/let.directive.mjs +0 -39
  283. package/esm2022/directive/let/public-api.mjs +0 -2
  284. package/esm2022/directive/loader/loader.directive.mjs +0 -85
  285. package/esm2022/directive/loader/public-api.mjs +0 -2
  286. package/esm2022/directive/no-autofill/no-autofill.directive.mjs +0 -31
  287. package/esm2022/directive/no-autofill/public-api.mjs +0 -2
  288. package/esm2022/directive/only-number/only-number.directive.mjs +0 -184
  289. package/esm2022/directive/only-number/public-api.mjs +0 -2
  290. package/esm2022/directive/public-api.mjs +0 -19
  291. package/esm2022/directive/resize-drag/public-api.mjs +0 -2
  292. package/esm2022/directive/resize-drag/resize-drag.directive.mjs +0 -72
  293. package/esm2022/directive/scroll-into-view/public-api.mjs +0 -2
  294. package/esm2022/directive/scroll-into-view/scroll-into-view.directive.mjs +0 -41
  295. package/esm2022/directive/scrollable/public-api.mjs +0 -3
  296. package/esm2022/directive/scrollable/scrollable/scrollable.component.mjs +0 -98
  297. package/esm2022/directive/scrollable/scrollable.directive.mjs +0 -20
  298. package/esm2022/directive/teta-template/public-api.mjs +0 -2
  299. package/esm2022/directive/teta-template/teta-template.directive.mjs +0 -23
  300. package/esm2022/directive/tooltip/public-api.mjs +0 -2
  301. package/esm2022/directive/tooltip/tooltip.directive.mjs +0 -81
  302. package/esm2022/index.mjs +0 -22
  303. package/esm2022/locale/en.mjs +0 -50
  304. package/esm2022/locale/public-api.mjs +0 -5
  305. package/esm2022/locale/ru.mjs +0 -50
  306. package/esm2022/locale/teta-config.service.mjs +0 -28
  307. package/esm2022/locale/teta-localisation.mjs +0 -2
  308. package/esm2022/observable/animation-frame.mjs +0 -30
  309. package/esm2022/observable/public-api.mjs +0 -3
  310. package/esm2022/observable/zone-observable.mjs +0 -15
  311. package/esm2022/pipe/date-pipe/public-api.mjs +0 -2
  312. package/esm2022/pipe/date-pipe/teta-date.pipe.mjs +0 -43
  313. package/esm2022/pipe/number-pipe/number.pipe.mjs +0 -28
  314. package/esm2022/pipe/number-pipe/public-api.mjs +0 -2
  315. package/esm2022/pipe/public-api.mjs +0 -4
  316. package/esm2022/pipe/util/number-helper.mjs +0 -25
  317. package/esm2022/tetacom-ng-components.mjs +0 -5
  318. package/esm2022/util/bool-or-func.mjs +0 -13
  319. package/esm2022/util/date-util.mjs +0 -231
  320. package/esm2022/util/export-dom-image.mjs +0 -22
  321. package/esm2022/util/forms-util.mjs +0 -85
  322. package/esm2022/util/is-function.mjs +0 -4
  323. package/esm2022/util/public-api.mjs +0 -7
  324. package/esm2022/util/string-util.mjs +0 -9
@@ -1,154 +0,0 @@
1
- import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, Input } from '@angular/core';
2
- import { map, takeWhile } from 'rxjs/operators';
3
- import { ArrayUtil } from '../../../../common/util/array-util';
4
- import { TetaConfigService } from '../../../../locale/teta-config.service';
5
- import { FilterState } from '../../../filter/contarct/filter-state';
6
- import { TableColumn } from '../../contract/table-column';
7
- import { TableService } from '../../service/table.service';
8
- import { AsyncPipe } from '@angular/common';
9
- import { ButtonComponent } from '../../../button/button/button.component';
10
- import { ToolbarComponent } from '../../../toolbar/toolbar/toolbar.component';
11
- import { TreeItemToggleComponent } from '../../../tree/tree-item-toggle/tree-item-toggle.component';
12
- import { TetaTemplateDirective } from '../../../../directive/teta-template/teta-template.directive';
13
- import { TreeComponent } from '../../../tree/tree/tree.component';
14
- import { ScrollableComponent } from '../../../../directive/scrollable/scrollable/scrollable.component';
15
- import { FormsModule } from '@angular/forms';
16
- import { CheckboxComponent } from '../../../checkbox/checkbox/checkbox.component';
17
- import * as i0 from "@angular/core";
18
- import * as i1 from "../../service/table.service";
19
- import * as i2 from "../../../../locale/teta-config.service";
20
- import * as i3 from "@angular/forms";
21
- export class VisibilityDropdownTabComponent {
22
- get openItems() {
23
- if (this._openItems == null) {
24
- this._openItems = this.columns.map((_) => _);
25
- }
26
- return this._openItems;
27
- }
28
- set openItems(openItems) {
29
- this._openItems = openItems;
30
- }
31
- get childMode() {
32
- return this.columns.find((_) => _.columns?.length > 0);
33
- }
34
- constructor(_svc, _config, _elementRef, _cdr) {
35
- this._svc = _svc;
36
- this._config = _config;
37
- this._elementRef = _elementRef;
38
- this._cdr = _cdr;
39
- this._alive = true;
40
- this.compareItems = (item) => item.name;
41
- this.setChildrenVisibility = (column, visible, hiddenColumns) => {
42
- if (visible) {
43
- this.showColumn(column, hiddenColumns);
44
- }
45
- else {
46
- this.hideColumn(column, hiddenColumns);
47
- }
48
- if (column.columns) {
49
- column.columns.forEach((x) => {
50
- this.setChildrenVisibility(x, visible, hiddenColumns);
51
- });
52
- }
53
- };
54
- this.setParentsVisibility = (column, visible, hiddenColumns) => {
55
- if (!visible) {
56
- this.hideParents(column, hiddenColumns);
57
- }
58
- else {
59
- this.showParents(column, hiddenColumns);
60
- }
61
- };
62
- this.locale = this._config.locale;
63
- this._svc.hiddenColumns
64
- .pipe(takeWhile((_) => this._alive), map((_) => [..._]))
65
- .subscribe((_) => {
66
- this.hiddenColumns = _;
67
- });
68
- }
69
- columnIsHidden(column) {
70
- return this.hiddenColumns.indexOf(column.name) >= 0;
71
- }
72
- allColumnsVisible() {
73
- if (this.hiddenColumns?.length <= 0) {
74
- return true;
75
- }
76
- const columns = ArrayUtil.flatten(this.columns, 'columns');
77
- const notHidden = columns.find((_) => this.hiddenColumns.indexOf(_.name) < 0);
78
- if (!notHidden) {
79
- return false;
80
- }
81
- return null;
82
- }
83
- setAllColumns(value) {
84
- if (value) {
85
- this.hiddenColumns = [];
86
- }
87
- else {
88
- this.hiddenColumns = ArrayUtil.flatten(this.columns, 'columns').map((_) => _.name);
89
- }
90
- }
91
- setColumnsVisibility() {
92
- this._svc.setHiddenColumns(this.hiddenColumns);
93
- }
94
- setColumnVisibility(item, visible) {
95
- this.setChildrenVisibility(item, visible, this.hiddenColumns);
96
- this.setParentsVisibility(item, visible, this.hiddenColumns);
97
- }
98
- showParents(column, hiddenColumns) {
99
- const parent = this.findParentColumn(column, this.columns);
100
- if (parent && this.columnIsHidden(parent)) {
101
- this.showColumn(parent, hiddenColumns);
102
- this.showParents(parent, hiddenColumns);
103
- }
104
- }
105
- hideParents(column, hiddenColumns) {
106
- const parent = this.findParentColumn(column, this.columns);
107
- if (parent &&
108
- !this.columnIsHidden(parent) &&
109
- parent.columns &&
110
- parent.columns.every((_) => this.columnIsHidden(_))) {
111
- this.hideColumn(parent, hiddenColumns);
112
- this.hideParents(parent, hiddenColumns);
113
- }
114
- }
115
- hideColumn(column, hiddenColumns) {
116
- hiddenColumns.push(column.name);
117
- }
118
- showColumn(column, hiddenColumns) {
119
- hiddenColumns.splice(hiddenColumns.indexOf(column.name), 1);
120
- }
121
- findParentColumn(column, columns) {
122
- return ArrayUtil.findRecursive(columns, (iterableNode) => iterableNode.columns?.indexOf(column) >= 0, 'columns');
123
- }
124
- ngOnDestroy() {
125
- this._alive = false;
126
- }
127
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.1", ngImport: i0, type: VisibilityDropdownTabComponent, deps: [{ token: i1.TableService }, { token: i2.TetaConfigService }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
128
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.1", type: VisibilityDropdownTabComponent, isStandalone: true, selector: "teta-visibility-dropdown-tab", inputs: { columns: "columns", column: "column", state: "state", data: "data", close: "close" }, ngImport: i0, template: "@if (locale | async; as loc) {\n <div class=\"list-item padding-left-6 padding-top-2\" [class.padding-left-9]=\"childMode\">\n <teta-checkbox\n [binary]=\"true\"\n [allowNull]=\"true\"\n [ngModel]=\"allColumnsVisible()\"\n (ngModelChange)=\"setAllColumns($event)\"\n >\n {{ loc.all }}\n </teta-checkbox>\n </div>\n <div class=\"list-divider\"></div>\n <teta-scrollable class=\"padding-v-2 column column_auto\">\n <teta-tree\n [data]=\"columns\"\n [openItems]=\"openItems\"\n (openItemsChange)=\"openItems = $event\"\n [childNodeName]=\"'columns'\"\n [compareItems]=\"compareItems\"\n >\n <ng-template tetaTemplate let-item>\n <div class=\"tree__item\" style=\"align-items: unset\">\n @if (item.columns?.length > 0) {\n <teta-tree-item-toggle [item]=\"item\"></teta-tree-item-toggle>\n }\n <teta-checkbox\n style=\"flex-grow: 1\"\n [ngModel]=\"!columnIsHidden(item)\"\n (ngModelChange)=\"setColumnVisibility(item, $event)\"\n (click)=\"$event.stopPropagation()\"\n [binary]=\"true\"\n >\n {{ item.caption }}\n </teta-checkbox>\n </div>\n </ng-template>\n </teta-tree>\n </teta-scrollable>\n <teta-toolbar class=\"justify-content-end\">\n <button\n type=\"button\"\n teta-button\n [disabled]=\"allColumnsVisible() === false\"\n [palette]=\"'primary'\"\n (click)=\"setColumnsVisibility()\"\n >\n {{ loc.apply }}\n </button>\n </teta-toolbar>\n}\n", styles: [":host{display:flex;flex-direction:column;flex-grow:1;min-height:0}\n"], dependencies: [{ kind: "component", type: CheckboxComponent, selector: "teta-checkbox", inputs: ["class", "palette", "noLabel", "disabled", "value", "binary", "labelPosition", "allowNull"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: ScrollableComponent, selector: "teta-scrollable", inputs: ["direction", "showScrollbars", "contentClass"], outputs: ["scroll"] }, { kind: "component", type: TreeComponent, selector: "teta-tree", inputs: ["data", "padding", "childNodeName", "virtual", "height", "openItems", "compareItems"], outputs: ["service", "openItemsChange"] }, { kind: "directive", type: TetaTemplateDirective, selector: "[tetaTemplate]", inputs: ["tetaTemplate"] }, { kind: "component", type: TreeItemToggleComponent, selector: "teta-tree-item-toggle", inputs: ["item"] }, { kind: "component", type: ToolbarComponent, selector: "teta-toolbar", inputs: ["palette", "class"] }, { kind: "component", type: ButtonComponent, selector: "button[teta-button], teta-button", inputs: ["palette", "class", "view", "square", "viewType", "size"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
129
- }
130
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.1", ngImport: i0, type: VisibilityDropdownTabComponent, decorators: [{
131
- type: Component,
132
- args: [{ selector: 'teta-visibility-dropdown-tab', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
133
- CheckboxComponent,
134
- FormsModule,
135
- ScrollableComponent,
136
- TreeComponent,
137
- TetaTemplateDirective,
138
- TreeItemToggleComponent,
139
- ToolbarComponent,
140
- ButtonComponent,
141
- AsyncPipe,
142
- ], template: "@if (locale | async; as loc) {\n <div class=\"list-item padding-left-6 padding-top-2\" [class.padding-left-9]=\"childMode\">\n <teta-checkbox\n [binary]=\"true\"\n [allowNull]=\"true\"\n [ngModel]=\"allColumnsVisible()\"\n (ngModelChange)=\"setAllColumns($event)\"\n >\n {{ loc.all }}\n </teta-checkbox>\n </div>\n <div class=\"list-divider\"></div>\n <teta-scrollable class=\"padding-v-2 column column_auto\">\n <teta-tree\n [data]=\"columns\"\n [openItems]=\"openItems\"\n (openItemsChange)=\"openItems = $event\"\n [childNodeName]=\"'columns'\"\n [compareItems]=\"compareItems\"\n >\n <ng-template tetaTemplate let-item>\n <div class=\"tree__item\" style=\"align-items: unset\">\n @if (item.columns?.length > 0) {\n <teta-tree-item-toggle [item]=\"item\"></teta-tree-item-toggle>\n }\n <teta-checkbox\n style=\"flex-grow: 1\"\n [ngModel]=\"!columnIsHidden(item)\"\n (ngModelChange)=\"setColumnVisibility(item, $event)\"\n (click)=\"$event.stopPropagation()\"\n [binary]=\"true\"\n >\n {{ item.caption }}\n </teta-checkbox>\n </div>\n </ng-template>\n </teta-tree>\n </teta-scrollable>\n <teta-toolbar class=\"justify-content-end\">\n <button\n type=\"button\"\n teta-button\n [disabled]=\"allColumnsVisible() === false\"\n [palette]=\"'primary'\"\n (click)=\"setColumnsVisibility()\"\n >\n {{ loc.apply }}\n </button>\n </teta-toolbar>\n}\n", styles: [":host{display:flex;flex-direction:column;flex-grow:1;min-height:0}\n"] }]
143
- }], ctorParameters: () => [{ type: i1.TableService }, { type: i2.TetaConfigService }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }], propDecorators: { columns: [{
144
- type: Input
145
- }], column: [{
146
- type: Input
147
- }], state: [{
148
- type: Input
149
- }], data: [{
150
- type: Input
151
- }], close: [{
152
- type: Input
153
- }] } });
154
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlzaWJpbGl0eS1kcm9wZG93bi10YWIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudC90YWJsZS90YWJsZS1oZWFkL3Zpc2liaWxpdHktZHJvcGRvd24tdGFiL3Zpc2liaWxpdHktZHJvcGRvd24tdGFiLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnQvdGFibGUvdGFibGUtaGVhZC92aXNpYmlsaXR5LWRyb3Bkb3duLXRhYi92aXNpYmlsaXR5LWRyb3Bkb3duLXRhYi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFFcEgsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUdoRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDL0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFFM0UsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwyREFBMkQsQ0FBQztBQUNwRyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw2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SztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbnB1dCwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIHRha2VXaGlsZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgSVRyZWVEYXRhIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29tbW9uL2NvbnRyYWN0L2ktdHJlZS1kYXRhJztcbmltcG9ydCB7IEFycmF5VXRpbCB9IGZyb20gJy4uLy4uLy4uLy4uL2NvbW1vbi91dGlsL2FycmF5LXV0aWwnO1xuaW1wb3J0IHsgVGV0YUNvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9sb2NhbGUvdGV0YS1jb25maWcuc2VydmljZSc7XG5pbXBvcnQgeyBUZXRhTG9jYWxpc2F0aW9uIH0gZnJvbSAnLi4vLi4vLi4vLi4vbG9jYWxlL3RldGEtbG9jYWxpc2F0aW9uJztcbmltcG9ydCB7IEZpbHRlclN0YXRlIH0gZnJvbSAnLi4vLi4vLi4vZmlsdGVyL2NvbnRhcmN0L2ZpbHRlci1zdGF0ZSc7XG5pbXBvcnQgeyBUYWJsZUNvbHVtbiB9IGZyb20gJy4uLy4uL2NvbnRyYWN0L3RhYmxlLWNvbHVtbic7XG5pbXBvcnQgeyBUYWJsZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlL3RhYmxlLnNlcnZpY2UnO1xuaW1wb3J0IHsgQXN5bmNQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2J1dHRvbi9idXR0b24vYnV0dG9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUb29sYmFyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vdG9vbGJhci90b29sYmFyL3Rvb2xiYXIuY29tcG9uZW50JztcbmltcG9ydCB7IFRyZWVJdGVtVG9nZ2xlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vdHJlZS90cmVlLWl0ZW0tdG9nZ2xlL3RyZWUtaXRlbS10b2dnbGUuY29tcG9uZW50JztcbmltcG9ydCB7IFRldGFUZW1wbGF0ZURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uLy4uL2RpcmVjdGl2ZS90ZXRhLXRlbXBsYXRlL3RldGEtdGVtcGxhdGUuZGlyZWN0aXZlJztcbmltcG9ydCB7IFRyZWVDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi90cmVlL3RyZWUvdHJlZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2Nyb2xsYWJsZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uLy4uL2RpcmVjdGl2ZS9zY3JvbGxhYmxlL3Njcm9sbGFibGUvc2Nyb2xsYWJsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDaGVja2JveENvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2NoZWNrYm94L2NoZWNrYm94L2NoZWNrYm94LmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RldGEtdmlzaWJpbGl0eS1kcm9wZG93bi10YWInLFxuICB0ZW1wbGF0ZVVybDogJy4vdmlzaWJpbGl0eS1kcm9wZG93bi10YWIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi92aXNpYmlsaXR5LWRyb3Bkb3duLXRhYi5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENoZWNrYm94Q29tcG9uZW50LFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIFNjcm9sbGFibGVDb21wb25lbnQsXG4gICAgVHJlZUNvbXBvbmVudCxcbiAgICBUZXRhVGVtcGxhdGVEaXJlY3RpdmUsXG4gICAgVHJlZUl0ZW1Ub2dnbGVDb21wb25lbnQsXG4gICAgVG9vbGJhckNvbXBvbmVudCxcbiAgICBCdXR0b25Db21wb25lbnQsXG4gICAgQXN5bmNQaXBlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBWaXNpYmlsaXR5RHJvcGRvd25UYWJDb21wb25lbnQ8VD4gaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBjb2x1bW5zOiBJVHJlZURhdGFbXTtcbiAgQElucHV0KCkgY29sdW1uOiBUYWJsZUNvbHVtbjtcbiAgQElucHV0KCkgc3RhdGU6IEZpbHRlclN0YXRlO1xuICBASW5wdXQoKSBkYXRhOiBUW107XG4gIEBJbnB1dCgpIGNsb3NlOiAoKSA9PiB2b2lkO1xuXG4gIGxvY2FsZTogT2JzZXJ2YWJsZTxUZXRhTG9jYWxpc2F0aW9uPjtcbiAgaGlkZGVuQ29sdW1uczogc3RyaW5nW107XG5cbiAgZ2V0IG9wZW5JdGVtcygpIHtcbiAgICBpZiAodGhpcy5fb3Blbkl0ZW1zID09IG51bGwpIHtcbiAgICAgIHRoaXMuX29wZW5JdGVtcyA9IHRoaXMuY29sdW1ucy5tYXAoKF8pID0+IF8pO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fb3Blbkl0ZW1zO1xuICB9XG5cbiAgc2V0IG9wZW5JdGVtcyhvcGVuSXRlbXM6IElUcmVlRGF0YVtdKSB7XG4gICAgdGhpcy5fb3Blbkl0ZW1zID0gb3Blbkl0ZW1zO1xuICB9XG5cbiAgZ2V0IGNoaWxkTW9kZSgpIHtcbiAgICByZXR1cm4gdGhpcy5jb2x1bW5zLmZpbmQoKF86IGFueSkgPT4gXy5jb2x1bW5zPy5sZW5ndGggPiAwKTtcbiAgfVxuXG4gIHByaXZhdGUgX29wZW5JdGVtczogSVRyZWVEYXRhW107XG4gIHByaXZhdGUgX2FsaXZlID0gdHJ1ZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9zdmM6IFRhYmxlU2VydmljZTxUPixcbiAgICBwcml2YXRlIF9jb25maWc6IFRldGFDb25maWdTZXJ2aWNlLFxuICAgIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBfY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgKSB7XG4gICAgdGhpcy5sb2NhbGUgPSB0aGlzLl9jb25maWcubG9jYWxlO1xuICAgIHRoaXMuX3N2Yy5oaWRkZW5Db2x1bW5zXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVdoaWxlKChfKSA9PiB0aGlzLl9hbGl2ZSksXG4gICAgICAgIG1hcCgoXykgPT4gWy4uLl9dKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKF8pID0+IHtcbiAgICAgICAgdGhpcy5oaWRkZW5Db2x1bW5zID0gXztcbiAgICAgIH0pO1xuICB9XG5cbiAgY29sdW1uSXNIaWRkZW4oY29sdW1uOiBUYWJsZUNvbHVtbikge1xuICAgIHJldHVybiB0aGlzLmhpZGRlbkNvbHVtbnMuaW5kZXhPZihjb2x1bW4ubmFtZSkgPj0gMDtcbiAgfVxuXG4gIGFsbENvbHVtbnNWaXNpYmxlKCkge1xuICAgIGlmICh0aGlzLmhpZGRlbkNvbHVtbnM/Lmxlbmd0aCA8PSAwKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgY29uc3QgY29sdW1ucyA9IEFycmF5VXRpbC5mbGF0dGVuKHRoaXMuY29sdW1ucywgJ2NvbHVtbnMnKTtcbiAgICBjb25zdCBub3RIaWRkZW4gPSBjb2x1bW5zLmZpbmQoKF8pID0+IHRoaXMuaGlkZGVuQ29sdW1ucy5pbmRleE9mKF8ubmFtZSkgPCAwKTtcbiAgICBpZiAoIW5vdEhpZGRlbikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHNldEFsbENvbHVtbnModmFsdWU6IGJvb2xlYW4pIHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuaGlkZGVuQ29sdW1ucyA9IFtdO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmhpZGRlbkNvbHVtbnMgPSBBcnJheVV0aWwuZmxhdHRlbih0aGlzLmNvbHVtbnMsICdjb2x1bW5zJykubWFwKChfKSA9PiBfLm5hbWUpO1xuICAgIH1cbiAgfVxuXG4gIHNldENvbHVtbnNWaXNpYmlsaXR5KCkge1xuICAgIHRoaXMuX3N2Yy5zZXRIaWRkZW5Db2x1bW5zKHRoaXMuaGlkZGVuQ29sdW1ucyk7XG4gIH1cblxuICBjb21wYXJlSXRlbXMgPSAoaXRlbTogYW55KSA9PiBpdGVtLm5hbWU7XG5cbiAgc2V0Q29sdW1uVmlzaWJpbGl0eShpdGVtOiBUYWJsZUNvbHVtbiwgdmlzaWJsZTogYm9vbGVhbikge1xuICAgIHRoaXMuc2V0Q2hpbGRyZW5WaXNpYmlsaXR5KGl0ZW0sIHZpc2libGUsIHRoaXMuaGlkZGVuQ29sdW1ucyk7XG4gICAgdGhpcy5zZXRQYXJlbnRzVmlzaWJpbGl0eShpdGVtLCB2aXNpYmxlLCB0aGlzLmhpZGRlbkNvbHVtbnMpO1xuICB9XG5cbiAgc2V0Q2hpbGRyZW5WaXNpYmlsaXR5ID0gKGNvbHVtbjogVGFibGVDb2x1bW4sIHZpc2libGU6IGJvb2xlYW4sIGhpZGRlbkNvbHVtbnM6IHN0cmluZ1tdKSA9PiB7XG4gICAgaWYgKHZpc2libGUpIHtcbiAgICAgIHRoaXMuc2hvd0NvbHVtbihjb2x1bW4sIGhpZGRlbkNvbHVtbnMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmhpZGVDb2x1bW4oY29sdW1uLCBoaWRkZW5Db2x1bW5zKTtcbiAgICB9XG4gICAgaWYgKGNvbHVtbi5jb2x1bW5zKSB7XG4gICAgICBjb2x1bW4uY29sdW1ucy5mb3JFYWNoKCh4KSA9PiB7XG4gICAgICAgIHRoaXMuc2V0Q2hpbGRyZW5WaXNpYmlsaXR5KHgsIHZpc2libGUsIGhpZGRlbkNvbHVtbnMpO1xuICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIHNldFBhcmVudHNWaXNpYmlsaXR5ID0gKGNvbHVtbjogVGFibGVDb2x1bW4sIHZpc2libGU6IGJvb2xlYW4sIGhpZGRlbkNvbHVtbnM6IHN0cmluZ1tdKSA9PiB7XG4gICAgaWYgKCF2aXNpYmxlKSB7XG4gICAgICB0aGlzLmhpZGVQYXJlbnRzKGNvbHVtbiwgaGlkZGVuQ29sdW1ucyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2hvd1BhcmVudHMoY29sdW1uLCBoaWRkZW5Db2x1bW5zKTtcbiAgICB9XG4gIH07XG5cbiAgc2hvd1BhcmVudHMoY29sdW1uOiBUYWJsZUNvbHVtbiwgaGlkZGVuQ29sdW1uczogc3RyaW5nW10pIHtcbiAgICBjb25zdCBwYXJlbnQgPSB0aGlzLmZpbmRQYXJlbnRDb2x1bW4oY29sdW1uLCB0aGlzLmNvbHVtbnMgYXMgVGFibGVDb2x1bW5bXSk7XG4gICAgaWYgKHBhcmVudCAmJiB0aGlzLmNvbHVtbklzSGlkZGVuKHBhcmVudCkpIHtcbiAgICAgIHRoaXMuc2hvd0NvbHVtbihwYXJlbnQsIGhpZGRlbkNvbHVtbnMpO1xuICAgICAgdGhpcy5zaG93UGFyZW50cyhwYXJlbnQsIGhpZGRlbkNvbHVtbnMpO1xuICAgIH1cbiAgfVxuXG4gIGhpZGVQYXJlbnRzKGNvbHVtbjogVGFibGVDb2x1bW4sIGhpZGRlbkNvbHVtbnM6IHN0cmluZ1tdKSB7XG4gICAgY29uc3QgcGFyZW50ID0gdGhpcy5maW5kUGFyZW50Q29sdW1uKGNvbHVtbiwgdGhpcy5jb2x1bW5zIGFzIFRhYmxlQ29sdW1uW10pO1xuICAgIGlmIChcbiAgICAgIHBhcmVudCAmJlxuICAgICAgIXRoaXMuY29sdW1uSXNIaWRkZW4ocGFyZW50KSAmJlxuICAgICAgcGFyZW50LmNvbHVtbnMgJiZcbiAgICAgIHBhcmVudC5jb2x1bW5zLmV2ZXJ5KChfKSA9PiB0aGlzLmNvbHVtbklzSGlkZGVuKF8pKVxuICAgICkge1xuICAgICAgdGhpcy5oaWRlQ29sdW1uKHBhcmVudCwgaGlkZGVuQ29sdW1ucyk7XG4gICAgICB0aGlzLmhpZGVQYXJlbnRzKHBhcmVudCwgaGlkZGVuQ29sdW1ucyk7XG4gICAgfVxuICB9XG5cbiAgaGlkZUNvbHVtbihjb2x1bW46IFRhYmxlQ29sdW1uLCBoaWRkZW5Db2x1bW5zOiBzdHJpbmdbXSkge1xuICAgIGhpZGRlbkNvbHVtbnMucHVzaChjb2x1bW4ubmFtZSk7XG4gIH1cblxuICBzaG93Q29sdW1uKGNvbHVtbjogVGFibGVDb2x1bW4sIGhpZGRlbkNvbHVtbnM6IHN0cmluZ1tdKSB7XG4gICAgaGlkZGVuQ29sdW1ucy5zcGxpY2UoaGlkZGVuQ29sdW1ucy5pbmRleE9mKGNvbHVtbi5uYW1lKSwgMSk7XG4gIH1cblxuICBwcml2YXRlIGZpbmRQYXJlbnRDb2x1bW4oY29sdW1uOiBUYWJsZUNvbHVtbiwgY29sdW1uczogVGFibGVDb2x1bW5bXSk6IFRhYmxlQ29sdW1uIHwgbnVsbCB7XG4gICAgcmV0dXJuIEFycmF5VXRpbC5maW5kUmVjdXJzaXZlKGNvbHVtbnMsIChpdGVyYWJsZU5vZGUpID0+IGl0ZXJhYmxlTm9kZS5jb2x1bW5zPy5pbmRleE9mKGNvbHVtbikgPj0gMCwgJ2NvbHVtbnMnKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX2FsaXZlID0gZmFsc2U7XG4gIH1cbn1cbiIsIkBpZiAobG9jYWxlIHwgYXN5bmM7IGFzIGxvYykge1xuICA8ZGl2IGNsYXNzPVwibGlzdC1pdGVtIHBhZGRpbmctbGVmdC02IHBhZGRpbmctdG9wLTJcIiBbY2xhc3MucGFkZGluZy1sZWZ0LTldPVwiY2hpbGRNb2RlXCI+XG4gICAgPHRldGEtY2hlY2tib3hcbiAgICAgIFtiaW5hcnldPVwidHJ1ZVwiXG4gICAgICBbYWxsb3dOdWxsXT1cInRydWVcIlxuICAgICAgW25nTW9kZWxdPVwiYWxsQ29sdW1uc1Zpc2libGUoKVwiXG4gICAgICAobmdNb2RlbENoYW5nZSk9XCJzZXRBbGxDb2x1bW5zKCRldmVudClcIlxuICAgID5cbiAgICAgIHt7IGxvYy5hbGwgfX1cbiAgICA8L3RldGEtY2hlY2tib3g+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwibGlzdC1kaXZpZGVyXCI+PC9kaXY+XG4gIDx0ZXRhLXNjcm9sbGFibGUgY2xhc3M9XCJwYWRkaW5nLXYtMiBjb2x1bW4gY29sdW1uX2F1dG9cIj5cbiAgICA8dGV0YS10cmVlXG4gICAgICBbZGF0YV09XCJjb2x1bW5zXCJcbiAgICAgIFtvcGVuSXRlbXNdPVwib3Blbkl0ZW1zXCJcbiAgICAgIChvcGVuSXRlbXNDaGFuZ2UpPVwib3Blbkl0ZW1zID0gJGV2ZW50XCJcbiAgICAgIFtjaGlsZE5vZGVOYW1lXT1cIidjb2x1bW5zJ1wiXG4gICAgICBbY29tcGFyZUl0ZW1zXT1cImNvbXBhcmVJdGVtc1wiXG4gICAgPlxuICAgICAgPG5nLXRlbXBsYXRlIHRldGFUZW1wbGF0ZSBsZXQtaXRlbT5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRyZWVfX2l0ZW1cIiBzdHlsZT1cImFsaWduLWl0ZW1zOiB1bnNldFwiPlxuICAgICAgICAgIEBpZiAoaXRlbS5jb2x1bW5zPy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICA8dGV0YS10cmVlLWl0ZW0tdG9nZ2xlIFtpdGVtXT1cIml0ZW1cIj48L3RldGEtdHJlZS1pdGVtLXRvZ2dsZT5cbiAgICAgICAgICB9XG4gICAgICAgICAgPHRldGEtY2hlY2tib3hcbiAgICAgICAgICAgIHN0eWxlPVwiZmxleC1ncm93OiAxXCJcbiAgICAgICAgICAgIFtuZ01vZGVsXT1cIiFjb2x1bW5Jc0hpZGRlbihpdGVtKVwiXG4gICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJzZXRDb2x1bW5WaXNpYmlsaXR5KGl0ZW0sICRldmVudClcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICBbYmluYXJ5XT1cInRydWVcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IGl0ZW0uY2FwdGlvbiB9fVxuICAgICAgICAgIDwvdGV0YS1jaGVja2JveD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvdGV0YS10cmVlPlxuICA8L3RldGEtc2Nyb2xsYWJsZT5cbiAgPHRldGEtdG9vbGJhciBjbGFzcz1cImp1c3RpZnktY29udGVudC1lbmRcIj5cbiAgICA8YnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIHRldGEtYnV0dG9uXG4gICAgICBbZGlzYWJsZWRdPVwiYWxsQ29sdW1uc1Zpc2libGUoKSA9PT0gZmFsc2VcIlxuICAgICAgW3BhbGV0dGVdPVwiJ3ByaW1hcnknXCJcbiAgICAgIChjbGljayk9XCJzZXRDb2x1bW5zVmlzaWJpbGl0eSgpXCJcbiAgICA+XG4gICAgICB7eyBsb2MuYXBwbHkgfX1cbiAgICA8L2J1dHRvbj5cbiAgPC90ZXRhLXRvb2xiYXI+XG59XG4iXX0=
@@ -1,72 +0,0 @@
1
- import { ChangeDetectionStrategy, ChangeDetectorRef, Component, HostBinding, Input, } from '@angular/core';
2
- import { TableColumn } from '../contract/table-column';
3
- import { TableUtil } from '../util/table-util';
4
- import { TableService } from '../service/table.service';
5
- import { takeWhile } from 'rxjs/operators';
6
- import { ArrayUtil } from '../../../common/util/array-util';
7
- import { HeadCellComponent } from '../head-cell/head-cell.component';
8
- import * as i0 from "@angular/core";
9
- import * as i1 from "../service/table.service";
10
- export class TableHeadGroupComponent {
11
- set column(column) {
12
- this._column = column;
13
- }
14
- get column() {
15
- return this._column;
16
- }
17
- get flexGrow() {
18
- if (this.column?.columns?.length > 0) {
19
- const flat = ArrayUtil.flatten(this.column?.columns, 'columns', true).filter((_) => this._hiddenColumns.indexOf(_.name) < 0);
20
- return flat?.reduce((prev, curr) => prev + curr.flex, 0);
21
- }
22
- return this.column.flex;
23
- }
24
- get flexBasis() {
25
- if (this.column?.columns?.length > 0) {
26
- const flat = ArrayUtil.flatten(this.column?.columns, 'columns', true).filter((_) => this._hiddenColumns.indexOf(_.name) < 0);
27
- return flat?.reduce((prev, curr) => prev + curr.width, 0);
28
- }
29
- return this.column.width;
30
- }
31
- get _leaves() {
32
- return TableUtil.getColumnLeaves(this._column)?.filter((_) => this._hiddenColumns.indexOf(_.name) < 0);
33
- }
34
- constructor(_svc, _cdr) {
35
- this._svc = _svc;
36
- this._cdr = _cdr;
37
- this._alive = true;
38
- this._svc.hiddenColumns.pipe(takeWhile((_) => this._alive)).subscribe((_) => {
39
- this._hiddenColumns = _;
40
- this._cdr.markForCheck();
41
- });
42
- }
43
- columnIsHidden(column) {
44
- return this._svc.columnIsHidden(column);
45
- }
46
- ngOnInit() { }
47
- ngOnDestroy() {
48
- this._alive = false;
49
- }
50
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.1", ngImport: i0, type: TableHeadGroupComponent, deps: [{ token: i1.TableService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
51
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.1", type: TableHeadGroupComponent, isStandalone: true, selector: "teta-table-head-group", inputs: { showHeadCellMenu: "showHeadCellMenu", data: "data", column: "column" }, host: { properties: { "style.flex-grow": "this.flexGrow", "style.min-width.px": "this.flexBasis", "style.flex-basis.px": "this.flexBasis" } }, ngImport: i0, template: "@if (column.columns && column.columns.length > 0) {\n <div class=\"table-head__group__container\">\n <div class=\"table-head__group__caption\">\n {{ column.caption }}\n </div>\n <div class=\"table-head__group__children\">\n @for (col of column.columns; track col) {\n @if (!columnIsHidden(col)) {\n <teta-table-head-group\n class=\"table-head__group\"\n [data]=\"data\"\n [showHeadCellMenu]=\"showHeadCellMenu\"\n [column]=\"col\"\n ></teta-table-head-group>\n }\n }\n </div>\n </div>\n}\n@if (!column.columns || column.columns.length === 0) {\n @if (!columnIsHidden(column)) {\n <teta-head-cell\n class=\"table-head__cell\"\n [data]=\"data\"\n [showHeadCellMenu]=\"showHeadCellMenu\"\n [attr.data-column]=\"column.name\"\n [column]=\"column\"\n ></teta-head-cell>\n }\n}\n", styles: [""], dependencies: [{ kind: "component", type: TableHeadGroupComponent, selector: "teta-table-head-group", inputs: ["showHeadCellMenu", "data", "column"] }, { kind: "component", type: HeadCellComponent, selector: "teta-head-cell", inputs: ["column", "showHeadCellMenu", "data"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
52
- }
53
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.1", ngImport: i0, type: TableHeadGroupComponent, decorators: [{
54
- type: Component,
55
- args: [{ selector: 'teta-table-head-group', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [HeadCellComponent], template: "@if (column.columns && column.columns.length > 0) {\n <div class=\"table-head__group__container\">\n <div class=\"table-head__group__caption\">\n {{ column.caption }}\n </div>\n <div class=\"table-head__group__children\">\n @for (col of column.columns; track col) {\n @if (!columnIsHidden(col)) {\n <teta-table-head-group\n class=\"table-head__group\"\n [data]=\"data\"\n [showHeadCellMenu]=\"showHeadCellMenu\"\n [column]=\"col\"\n ></teta-table-head-group>\n }\n }\n </div>\n </div>\n}\n@if (!column.columns || column.columns.length === 0) {\n @if (!columnIsHidden(column)) {\n <teta-head-cell\n class=\"table-head__cell\"\n [data]=\"data\"\n [showHeadCellMenu]=\"showHeadCellMenu\"\n [attr.data-column]=\"column.name\"\n [column]=\"column\"\n ></teta-head-cell>\n }\n}\n" }]
56
- }], ctorParameters: () => [{ type: i1.TableService }, { type: i0.ChangeDetectorRef }], propDecorators: { showHeadCellMenu: [{
57
- type: Input
58
- }], data: [{
59
- type: Input
60
- }], column: [{
61
- type: Input
62
- }], flexGrow: [{
63
- type: HostBinding,
64
- args: ['style.flex-grow']
65
- }], flexBasis: [{
66
- type: HostBinding,
67
- args: ['style.min-width.px']
68
- }, {
69
- type: HostBinding,
70
- args: ['style.flex-basis.px']
71
- }] } });
72
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtaGVhZC1ncm91cC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50L3RhYmxlL3RhYmxlLWhlYWQtZ3JvdXAvdGFibGUtaGVhZC1ncm91cC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50L3RhYmxlL3RhYmxlLWhlYWQtZ3JvdXAvdGFibGUtaGVhZC1ncm91cC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsV0FBVyxFQUNYLEtBQUssR0FHTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzVELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7QUFVckUsTUFBTSxPQUFPLHVCQUF1QjtJQUlsQyxJQUNJLE1BQU0sQ0FBQyxNQUFtQjtRQUM1QixJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztJQUN4QixDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxJQUFvQyxRQUFRO1FBQzFDLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3JDLE1BQU0sSUFBSSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFB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QkFBb0I7O3NCQUNoQyxXQUFXO3VCQUFDLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBIb3N0QmluZGluZyxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRhYmxlQ29sdW1uIH0gZnJvbSAnLi4vY29udHJhY3QvdGFibGUtY29sdW1uJztcbmltcG9ydCB7IFRhYmxlVXRpbCB9IGZyb20gJy4uL3V0aWwvdGFibGUtdXRpbCc7XG5pbXBvcnQgeyBUYWJsZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlL3RhYmxlLnNlcnZpY2UnO1xuaW1wb3J0IHsgdGFrZVdoaWxlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQXJyYXlVdGlsIH0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL3V0aWwvYXJyYXktdXRpbCc7XG5pbXBvcnQgeyBIZWFkQ2VsbENvbXBvbmVudCB9IGZyb20gJy4uL2hlYWQtY2VsbC9oZWFkLWNlbGwuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndGV0YS10YWJsZS1oZWFkLWdyb3VwJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RhYmxlLWhlYWQtZ3JvdXAuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90YWJsZS1oZWFkLWdyb3VwLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbSGVhZENlbGxDb21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBUYWJsZUhlYWRHcm91cENvbXBvbmVudDxUPiBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgc2hvd0hlYWRDZWxsTWVudTogYm9vbGVhbjtcbiAgQElucHV0KCkgZGF0YTogVFtdO1xuXG4gIEBJbnB1dCgpXG4gIHNldCBjb2x1bW4oY29sdW1uOiBUYWJsZUNvbHVtbikge1xuICAgIHRoaXMuX2NvbHVtbiA9IGNvbHVtbjtcbiAgfVxuXG4gIGdldCBjb2x1bW4oKTogVGFibGVDb2x1bW4ge1xuICAgIHJldHVybiB0aGlzLl9jb2x1bW47XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ3N0eWxlLmZsZXgtZ3JvdycpIGdldCBmbGV4R3JvdygpIHtcbiAgICBpZiAodGhpcy5jb2x1bW4/LmNvbHVtbnM/Lmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGZsYXQgPSBBcnJheVV0aWwuZmxhdHRlbih0aGlzLmNvbHVtbj8uY29sdW1ucywgJ2NvbHVtbnMnLCB0cnVlKS5maWx0ZXIoXG4gICAgICAgIChfKSA9PiB0aGlzLl9oaWRkZW5Db2x1bW5zLmluZGV4T2YoXy5uYW1lKSA8IDAsXG4gICAgICApO1xuICAgICAgcmV0dXJuIGZsYXQ/LnJlZHVjZSgocHJldiwgY3VycikgPT4gcHJldiArIGN1cnIuZmxleCwgMCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmNvbHVtbi5mbGV4O1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS5taW4td2lkdGgucHgnKVxuICBASG9zdEJpbmRpbmcoJ3N0eWxlLmZsZXgtYmFzaXMucHgnKVxuICBnZXQgZmxleEJhc2lzKCkge1xuICAgIGlmICh0aGlzLmNvbHVtbj8uY29sdW1ucz8ubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgZmxhdCA9IEFycmF5VXRpbC5mbGF0dGVuKHRoaXMuY29sdW1uPy5jb2x1bW5zLCAnY29sdW1ucycsIHRydWUpLmZpbHRlcihcbiAgICAgICAgKF8pID0+IHRoaXMuX2hpZGRlbkNvbHVtbnMuaW5kZXhPZihfLm5hbWUpIDwgMCxcbiAgICAgICk7XG4gICAgICByZXR1cm4gZmxhdD8ucmVkdWNlKChwcmV2LCBjdXJyKSA9PiBwcmV2ICsgY3Vyci53aWR0aCwgMCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmNvbHVtbi53aWR0aDtcbiAgfVxuXG4gIHByaXZhdGUgX2FsaXZlID0gdHJ1ZTtcbiAgcHJpdmF0ZSBfY29sdW1uOiBUYWJsZUNvbHVtbjtcbiAgcHJpdmF0ZSBfaGlkZGVuQ29sdW1uczogc3RyaW5nW107XG5cbiAgcHJpdmF0ZSBnZXQgX2xlYXZlcygpIHtcbiAgICByZXR1cm4gVGFibGVVdGlsLmdldENvbHVtbkxlYXZlcyh0aGlzLl9jb2x1bW4pPy5maWx0ZXIoKF8pID0+IHRoaXMuX2hpZGRlbkNvbHVtbnMuaW5kZXhPZihfLm5hbWUpIDwgMCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9zdmM6IFRhYmxlU2VydmljZTxUPixcbiAgICBwcml2YXRlIF9jZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICApIHtcbiAgICB0aGlzLl9zdmMuaGlkZGVuQ29sdW1ucy5waXBlKHRha2VXaGlsZSgoXykgPT4gdGhpcy5fYWxpdmUpKS5zdWJzY3JpYmUoKF8pID0+IHtcbiAgICAgIHRoaXMuX2hpZGRlbkNvbHVtbnMgPSBfO1xuICAgICAgdGhpcy5fY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH0pO1xuICB9XG5cbiAgY29sdW1uSXNIaWRkZW4oY29sdW1uOiBUYWJsZUNvbHVtbikge1xuICAgIHJldHVybiB0aGlzLl9zdmMuY29sdW1uSXNIaWRkZW4oY29sdW1uKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge31cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9hbGl2ZSA9IGZhbHNlO1xuICB9XG59XG4iLCJAaWYgKGNvbHVtbi5jb2x1bW5zICYmIGNvbHVtbi5jb2x1bW5zLmxlbmd0aCA+IDApIHtcbiAgPGRpdiBjbGFzcz1cInRhYmxlLWhlYWRfX2dyb3VwX19jb250YWluZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwidGFibGUtaGVhZF9fZ3JvdXBfX2NhcHRpb25cIj5cbiAgICAgIHt7IGNvbHVtbi5jYXB0aW9uIH19XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInRhYmxlLWhlYWRfX2dyb3VwX19jaGlsZHJlblwiPlxuICAgICAgQGZvciAoY29sIG9mIGNvbHVtbi5jb2x1bW5zOyB0cmFjayBjb2wpIHtcbiAgICAgICAgQGlmICghY29sdW1uSXNIaWRkZW4oY29sKSkge1xuICAgICAgICAgIDx0ZXRhLXRhYmxlLWhlYWQtZ3JvdXBcbiAgICAgICAgICAgIGNsYXNzPVwidGFibGUtaGVhZF9fZ3JvdXBcIlxuICAgICAgICAgICAgW2RhdGFdPVwiZGF0YVwiXG4gICAgICAgICAgICBbc2hvd0hlYWRDZWxsTWVudV09XCJzaG93SGVhZENlbGxNZW51XCJcbiAgICAgICAgICAgIFtjb2x1bW5dPVwiY29sXCJcbiAgICAgICAgICA+PC90ZXRhLXRhYmxlLWhlYWQtZ3JvdXA+XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG59XG5AaWYgKCFjb2x1bW4uY29sdW1ucyB8fCBjb2x1bW4uY29sdW1ucy5sZW5ndGggPT09IDApIHtcbiAgQGlmICghY29sdW1uSXNIaWRkZW4oY29sdW1uKSkge1xuICAgIDx0ZXRhLWhlYWQtY2VsbFxuICAgICAgY2xhc3M9XCJ0YWJsZS1oZWFkX19jZWxsXCJcbiAgICAgIFtkYXRhXT1cImRhdGFcIlxuICAgICAgW3Nob3dIZWFkQ2VsbE1lbnVdPVwic2hvd0hlYWRDZWxsTWVudVwiXG4gICAgICBbYXR0ci5kYXRhLWNvbHVtbl09XCJjb2x1bW4ubmFtZVwiXG4gICAgICBbY29sdW1uXT1cImNvbHVtblwiXG4gICAgPjwvdGV0YS1oZWFkLWNlbGw+XG4gIH1cbn1cbiJdfQ==
@@ -1,42 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, inject, Input } from '@angular/core';
2
- import { ControlContainer, FormGroup, NgForm, UntypedFormControl } from '@angular/forms';
3
- import { TableRow } from '../contract/table-row';
4
- import * as i0 from "@angular/core";
5
- export class TableRowComponent {
6
- get control() {
7
- return this.formGroup?.get('id');
8
- }
9
- get formGroup() {
10
- if (this._formGroup instanceof FormGroup) {
11
- return this._formGroup;
12
- }
13
- if (this._formGroup instanceof NgForm) {
14
- return this._formGroup.form;
15
- }
16
- return null;
17
- }
18
- constructor() {
19
- this._formGroup = inject(ControlContainer, {
20
- optional: true,
21
- });
22
- }
23
- ngOnChanges(changes) {
24
- if (!this.control) {
25
- this.formGroup.registerControl('id', new UntypedFormControl(this.row?.data['id']));
26
- }
27
- else {
28
- this.control.patchValue(this.row?.data['id'], {
29
- emitEvent: false,
30
- });
31
- }
32
- }
33
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.1", ngImport: i0, type: TableRowComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
34
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.1", type: TableRowComponent, isStandalone: true, selector: "teta-table-row", inputs: { row: "row" }, usesOnChanges: true, ngImport: i0, template: "<ng-content></ng-content>\n", styles: [""], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
35
- }
36
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.1", ngImport: i0, type: TableRowComponent, decorators: [{
37
- type: Component,
38
- args: [{ selector: 'teta-table-row', standalone: true, imports: [], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-content></ng-content>\n" }]
39
- }], ctorParameters: () => [], propDecorators: { row: [{
40
- type: Input
41
- }] } });
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtcm93LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnQvdGFibGUvdGFibGUtcm93L3RhYmxlLXJvdy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50L3RhYmxlL3RhYmxlLXJvdy90YWJsZS1yb3cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUE0QixNQUFNLGVBQWUsQ0FBQztBQUM1RyxPQUFPLEVBQUUsZ0JBQWdCLEVBQWUsU0FBUyxFQUFFLE1BQU0sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RHLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFVakQsTUFBTSxPQUFPLGlCQUFpQjtJQU81QixJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxTQUFTLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBZ0IsQ0FBQztJQUNsRCxDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1gsSUFBSSxJQUFJLENBQUMsVUFBVSxZQUFZLFNBQVMsRUFBRSxDQUFDO1lBQ3pDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUN6QixDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsVUFBVSxZQUFZLE1BQU0sRUFBRSxDQUFDO1lBQ3RDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7UUFDOUIsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEO1FBbEJRLGVBQVUsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLEVBQUU7WUFDNUMsUUFBUSxFQUFFLElBQUk7U0FDZixDQUFDLENBQUM7SUFnQlksQ0FBQztJQUVoQixXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDckYsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDNUMsU0FBUyxFQUFFLEtBQUs7YUFDakIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7OEdBL0JVLGlCQUFpQjtrR0FBakIsaUJBQWlCLHVIQ1o5Qiw2QkFDQTs7MkZEV2EsaUJBQWlCO2tCQVI3QixTQUFTOytCQUNFLGdCQUFnQixjQUNkLElBQUksV0FDUCxFQUFFLG1CQUdNLHVCQUF1QixDQUFDLE1BQU07d0RBR3RDLEdBQUc7c0JBQVgsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGluamVjdCwgSW5wdXQsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbENvbnRhaW5lciwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgTmdGb3JtLCBVbnR5cGVkRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBUYWJsZVJvdyB9IGZyb20gJy4uL2NvbnRyYWN0L3RhYmxlLXJvdyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RldGEtdGFibGUtcm93JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW10sXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJsZS1yb3cuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vdGFibGUtcm93LmNvbXBvbmVudC5jc3MnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgVGFibGVSb3dDb21wb25lbnQ8VD4gaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICBASW5wdXQoKSByb3c6IFRhYmxlUm93PFQ+O1xuXG4gIHByaXZhdGUgX2Zvcm1Hcm91cCA9IGluamVjdChDb250cm9sQ29udGFpbmVyLCB7XG4gICAgb3B0aW9uYWw6IHRydWUsXG4gIH0pO1xuXG4gIGdldCBjb250cm9sKCk6IEZvcm1Db250cm9sIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtR3JvdXA/LmdldCgnaWQnKSBhcyBGb3JtQ29udHJvbDtcbiAgfVxuXG4gIGdldCBmb3JtR3JvdXAoKTogRm9ybUdyb3VwIHtcbiAgICBpZiAodGhpcy5fZm9ybUdyb3VwIGluc3RhbmNlb2YgRm9ybUdyb3VwKSB7XG4gICAgICByZXR1cm4gdGhpcy5fZm9ybUdyb3VwO1xuICAgIH1cbiAgICBpZiAodGhpcy5fZm9ybUdyb3VwIGluc3RhbmNlb2YgTmdGb3JtKSB7XG4gICAgICByZXR1cm4gdGhpcy5fZm9ybUdyb3VwLmZvcm07XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoIXRoaXMuY29udHJvbCkge1xuICAgICAgdGhpcy5mb3JtR3JvdXAucmVnaXN0ZXJDb250cm9sKCdpZCcsIG5ldyBVbnR5cGVkRm9ybUNvbnRyb2wodGhpcy5yb3c/LmRhdGFbJ2lkJ10pKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jb250cm9sLnBhdGNoVmFsdWUodGhpcy5yb3c/LmRhdGFbJ2lkJ10sIHtcbiAgICAgICAgZW1pdEV2ZW50OiBmYWxzZSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIiwiPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuIl19
@@ -1,3 +0,0 @@
1
- export * from './state-util';
2
- export * from './table-util';
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnQvdGFibGUvdXRpbC9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9zdGF0ZS11dGlsJztcbmV4cG9ydCAqIGZyb20gJy4vdGFibGUtdXRpbCc7XG4iXX0=
@@ -1,146 +0,0 @@
1
- import { FilterState } from '../../filter/contarct/filter-state';
2
- import { SortParam } from '../../filter/contarct/sort-param';
3
- import { FilterType } from '../../filter/enum/filter-type.enum';
4
- export class StateUtil {
5
- static hasSortedColumns(state) {
6
- return state.sortParams && state.sortParams.length > 0;
7
- }
8
- static hasFilteredColumns(state) {
9
- let hasFilters = false;
10
- if (state.stringFilters && state.stringFilters.some((filter) => filter.value && filter.value.length)) {
11
- hasFilters = true;
12
- }
13
- if (state.listFilters && state.listFilters.some((filter) => filter.value && filter.value.length)) {
14
- hasFilters = true;
15
- }
16
- if (state.numericFilters &&
17
- state.numericFilters.some((filter) => filter &&
18
- filter.value &&
19
- ((filter.value.lessThan !== null && filter.value.lessThan !== undefined) ||
20
- (filter.value.greaterThan !== null && filter.value.greaterThan !== undefined) ||
21
- (filter.value.equalsTo !== null && filter.value.equalsTo !== undefined)))) {
22
- hasFilters = true;
23
- }
24
- if (state.dateFilters &&
25
- state.dateFilters.some((filter) => filter &&
26
- filter.value &&
27
- ((filter.value.lessThan !== null && filter.value.lessThan !== undefined) ||
28
- (filter.value.greaterThan !== null && filter.value.greaterThan !== undefined)))) {
29
- hasFilters = true;
30
- }
31
- return hasFilters;
32
- }
33
- static getSortState(state, column) {
34
- if (state?.sortParams && state.sortParams.length) {
35
- const param = state.sortParams.find((x) => x.field === column.sortField);
36
- if (param) {
37
- return param;
38
- }
39
- }
40
- return null;
41
- }
42
- static isColumnFiltered(state, column) {
43
- if (!column.filterable) {
44
- return false;
45
- }
46
- let filtered = false;
47
- switch (column.filterType) {
48
- case FilterType.string:
49
- if (state?.stringFilters) {
50
- const filter = state.stringFilters.find((x) => x.field === column.filterField);
51
- if (filter && filter.value && filter.value.length) {
52
- filtered = true;
53
- }
54
- }
55
- break;
56
- case FilterType.list:
57
- if (state?.listFilters) {
58
- const filter = state.listFilters.find((x) => x.field === column.filterField);
59
- if (filter && filter.value && filter.value.length) {
60
- filtered = true;
61
- }
62
- }
63
- break;
64
- case FilterType.number:
65
- if (state?.numericFilters) {
66
- const filter = state.numericFilters.find((x) => x.field === column.filterField);
67
- if (filter &&
68
- filter.value &&
69
- ((filter.value.lessThan !== null && filter.value.lessThan !== undefined) ||
70
- (filter.value.greaterThan !== null && filter.value.greaterThan !== undefined) ||
71
- (filter.value.equalsTo !== null && filter.value.equalsTo !== undefined))) {
72
- filtered = true;
73
- }
74
- }
75
- break;
76
- case FilterType.date:
77
- if (state?.dateFilters) {
78
- const filter = state.dateFilters.find((x) => x.field === column.filterField);
79
- if (filter &&
80
- filter.value &&
81
- ((filter.value.lessThan !== null && filter.value.lessThan !== undefined) ||
82
- (filter.value.greaterThan !== null && filter.value.greaterThan !== undefined))) {
83
- filtered = true;
84
- }
85
- }
86
- break;
87
- }
88
- return filtered;
89
- }
90
- static sortColumn(sortEvent, state) {
91
- const column = sortEvent.column;
92
- const shiftKey = sortEvent.shiftKey;
93
- const sort = state.sortParams.find((sortParam) => sortParam.field === column.sortField);
94
- if (sort === null || sort === undefined) {
95
- if (!shiftKey) {
96
- state.sortParams.length = 0;
97
- }
98
- state.sortParams.push(new SortParam({ field: column.sortField, asc: true, order: 0 }));
99
- }
100
- else {
101
- if (!sort.asc) {
102
- state.sortParams = StateUtil.clearSortParam(sort, state.sortParams);
103
- }
104
- else {
105
- sort.asc = !sort.asc;
106
- if (!shiftKey) {
107
- state.sortParams = [sort];
108
- }
109
- }
110
- }
111
- return new FilterState(state);
112
- }
113
- static sortAsc(sortEvent, state) {
114
- return StateUtil.sort(sortEvent, state, true);
115
- }
116
- static sortDesc(sortEvent, state) {
117
- return StateUtil.sort(sortEvent, state, false);
118
- }
119
- static sort(sortEvent, state, asc) {
120
- const column = sortEvent.column;
121
- const shiftKey = sortEvent.shiftKey;
122
- const sort = state.sortParams.find((sortParam) => sortParam.field === column.sortField);
123
- if (sort) {
124
- state.sortParams = StateUtil.clearSortParam(sort, state.sortParams);
125
- }
126
- if (!shiftKey) {
127
- state.sortParams.length = 0;
128
- }
129
- state.sortParams.push(new SortParam({ field: column.sortField, asc: asc, order: 0 }));
130
- return new FilterState(state);
131
- }
132
- static clearSortParam(sort, sortParams) {
133
- const index = sortParams.indexOf(sort);
134
- sortParams.splice(index, 1);
135
- return sortParams;
136
- }
137
- static clearSort(column, state) {
138
- state.sortParams = state.sortParams.filter((_) => _.field !== column.sortField);
139
- return new FilterState(state);
140
- }
141
- static clearAllSort(state) {
142
- state.sortParams = [];
143
- return new FilterState(state);
144
- }
145
- }
146
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGUtdXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnQvdGFibGUvdXRpbC9zdGF0ZS11dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUVqRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDN0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBR2hFLE1BQU0sT0FBTyxTQUFTO0lBQ3BCLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFrQjtRQUN4QyxPQUFPLEtBQUssQ0FBQyxVQUFVLElBQUksS0FBSyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRCxNQUFNLENBQUMsa0JBQWtCLENBQUMsS0FBa0I7UUFDMUMsSUFBSSxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLElBQUksS0FBSyxDQUFDLGFBQWEsSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDckcsVUFBVSxHQUFHLElBQUksQ0FBQztRQUNwQixDQUFDO1FBQ0QsSUFBSSxLQUFLLENBQUMsV0FBVyxJQUFJLEtBQUssQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUNqRyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLENBQUM7UUFDRCxJQUNFLEtBQUssQ0FBQyxjQUFjO1lBQ3BCLEtBQUssQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUN2QixD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ICcuLi8uLi9maWx0ZXIvY29udGFyY3QvZmlsdGVyLXN0YXRlJztcbmltcG9ydCB7IFRhYmxlQ29sdW1uIH0gZnJvbSAnLi4vY29udHJhY3QvdGFibGUtY29sdW1uJztcbmltcG9ydCB7IFNvcnRQYXJhbSB9IGZyb20gJy4uLy4uL2ZpbHRlci9jb250YXJjdC9zb3J0LXBhcmFtJztcbmltcG9ydCB7IEZpbHRlclR5cGUgfSBmcm9tICcuLi8uLi9maWx0ZXIvZW51bS9maWx0ZXItdHlwZS5lbnVtJztcbmltcG9ydCB7IFNvcnRFdmVudCB9IGZyb20gJy4uL2NvbnRyYWN0L3NvcnQtZXZlbnQnO1xuXG5leHBvcnQgY2xhc3MgU3RhdGVVdGlsIHtcbiAgc3RhdGljIGhhc1NvcnRlZENvbHVtbnMoc3RhdGU6IEZpbHRlclN0YXRlKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHN0YXRlLnNvcnRQYXJhbXMgJiYgc3RhdGUuc29ydFBhcmFtcy5sZW5ndGggPiAwO1xuICB9XG5cbiAgc3RhdGljIGhhc0ZpbHRlcmVkQ29sdW1ucyhzdGF0ZTogRmlsdGVyU3RhdGUpOiBib29sZWFuIHtcbiAgICBsZXQgaGFzRmlsdGVycyA9IGZhbHNlO1xuICAgIGlmIChzdGF0ZS5zdHJpbmdGaWx0ZXJzICYmIHN0YXRlLnN0cmluZ0ZpbHRlcnMuc29tZSgoZmlsdGVyKSA9PiBmaWx0ZXIudmFsdWUgJiYgZmlsdGVyLnZhbHVlLmxlbmd0aCkpIHtcbiAgICAgIGhhc0ZpbHRlcnMgPSB0cnVlO1xuICAgIH1cbiAgICBpZiAoc3RhdGUubGlzdEZpbHRlcnMgJiYgc3RhdGUubGlzdEZpbHRlcnMuc29tZSgoZmlsdGVyKSA9PiBmaWx0ZXIudmFsdWUgJiYgZmlsdGVyLnZhbHVlLmxlbmd0aCkpIHtcbiAgICAgIGhhc0ZpbHRlcnMgPSB0cnVlO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICBzdGF0ZS5udW1lcmljRmlsdGVycyAmJlxuICAgICAgc3RhdGUubnVtZXJpY0ZpbHRlcnMuc29tZShcbiAgICAgICAgKGZpbHRlcikgPT5cbiAgICAgICAgICBmaWx0ZXIgJiZcbiAgICAgICAgICBmaWx0ZXIudmFsdWUgJiZcbiAgICAgICAgICAoKGZpbHRlci52YWx1ZS5sZXNzVGhhbiAhPT0gbnVsbCAmJiBmaWx0ZXIudmFsdWUubGVzc1RoYW4gIT09IHVuZGVmaW5lZCkgfHxcbiAgICAgICAgICAgIChmaWx0ZXIudmFsdWUuZ3JlYXRlclRoYW4gIT09IG51bGwgJiYgZmlsdGVyLnZhbHVlLmdyZWF0ZXJUaGFuICE9PSB1bmRlZmluZWQpIHx8XG4gICAgICAgICAgICAoZmlsdGVyLnZhbHVlLmVxdWFsc1RvICE9PSBudWxsICYmIGZpbHRlci52YWx1ZS5lcXVhbHNUbyAhPT0gdW5kZWZpbmVkKSksXG4gICAgICApXG4gICAgKSB7XG4gICAgICBoYXNGaWx0ZXJzID0gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgc3RhdGUuZGF0ZUZpbHRlcnMgJiZcbiAgICAgIHN0YXRlLmRhdGVGaWx0ZXJzLnNvbWUoXG4gICAgICAgIChmaWx0ZXIpID0+XG4gICAgICAgICAgZmlsdGVyICYmXG4gICAgICAgICAgZmlsdGVyLnZhbHVlICYmXG4gICAgICAgICAgKChmaWx0ZXIudmFsdWUubGVzc1RoYW4gIT09IG51bGwgJiYgZmlsdGVyLnZhbHVlLmxlc3NUaGFuICE9PSB1bmRlZmluZWQpIHx8XG4gICAgICAgICAgICAoZmlsdGVyLnZhbHVlLmdyZWF0ZXJUaGFuICE9PSBudWxsICYmIGZpbHRlci52YWx1ZS5ncmVhdGVyVGhhbiAhPT0gdW5kZWZpbmVkKSksXG4gICAgICApXG4gICAgKSB7XG4gICAgICBoYXNGaWx0ZXJzID0gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gaGFzRmlsdGVycztcbiAgfVxuXG4gIHN0YXRpYyBnZXRTb3J0U3RhdGUoc3RhdGU6IEZpbHRlclN0YXRlLCBjb2x1bW46IFRhYmxlQ29sdW1uKTogU29ydFBhcmFtIHwgbnVsbCB7XG4gICAgaWYgKHN0YXRlPy5zb3J0UGFyYW1zICYmIHN0YXRlLnNvcnRQYXJhbXMubGVuZ3RoKSB7XG4gICAgICBjb25zdCBwYXJhbSA9IHN0YXRlLnNvcnRQYXJhbXMuZmluZCgoeCkgPT4geC5maWVsZCA9PT0gY29sdW1uLnNvcnRGaWVsZCk7XG4gICAgICBpZiAocGFyYW0pIHtcbiAgICAgICAgcmV0dXJuIHBhcmFtO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHN0YXRpYyBpc0NvbHVtbkZpbHRlcmVkKHN0YXRlOiBGaWx0ZXJTdGF0ZSwgY29sdW1uOiBUYWJsZUNvbHVtbik6IGJvb2xlYW4ge1xuICAgIGlmICghY29sdW1uLmZpbHRlcmFibGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgbGV0IGZpbHRlcmVkID0gZmFsc2U7XG4gICAgc3dpdGNoIChjb2x1bW4uZmlsdGVyVHlwZSkge1xuICAgICAgY2FzZSBGaWx0ZXJUeXBlLnN0cmluZzpcbiAgICAgICAgaWYgKHN0YXRlPy5zdHJpbmdGaWx0ZXJzKSB7XG4gICAgICAgICAgY29uc3QgZmlsdGVyID0gc3RhdGUuc3RyaW5nRmlsdGVycy5maW5kKCh4KSA9PiB4LmZpZWxkID09PSBjb2x1bW4uZmlsdGVyRmllbGQpO1xuICAgICAgICAgIGlmIChmaWx0ZXIgJiYgZmlsdGVyLnZhbHVlICYmIGZpbHRlci52YWx1ZS5sZW5ndGgpIHtcbiAgICAgICAgICAgIGZpbHRlcmVkID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIEZpbHRlclR5cGUubGlzdDpcbiAgICAgICAgaWYgKHN0YXRlPy5saXN0RmlsdGVycykge1xuICAgICAgICAgIGNvbnN0IGZpbHRlciA9IHN0YXRlLmxpc3RGaWx0ZXJzLmZpbmQoKHgpID0+IHguZmllbGQgPT09IGNvbHVtbi5maWx0ZXJGaWVsZCk7XG4gICAgICAgICAgaWYgKGZpbHRlciAmJiBmaWx0ZXIudmFsdWUgJiYgZmlsdGVyLnZhbHVlLmxlbmd0aCkge1xuICAgICAgICAgICAgZmlsdGVyZWQgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgRmlsdGVyVHlwZS5udW1iZXI6XG4gICAgICAgIGlmIChzdGF0ZT8ubnVtZXJpY0ZpbHRlcnMpIHtcbiAgICAgICAgICBjb25zdCBmaWx0ZXIgPSBzdGF0ZS5udW1lcmljRmlsdGVycy5maW5kKCh4KSA9PiB4LmZpZWxkID09PSBjb2x1bW4uZmlsdGVyRmllbGQpO1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGZpbHRlciAmJlxuICAgICAgICAgICAgZmlsdGVyLnZhbHVlICYmXG4gICAgICAgICAgICAoKGZpbHRlci52YWx1ZS5sZXNzVGhhbiAhPT0gbnVsbCAmJiBmaWx0ZXIudmFsdWUubGVzc1RoYW4gIT09IHVuZGVmaW5lZCkgfHxcbiAgICAgICAgICAgICAgKGZpbHRlci52YWx1ZS5ncmVhdGVyVGhhbiAhPT0gbnVsbCAmJiBmaWx0ZXIudmFsdWUuZ3JlYXRlclRoYW4gIT09IHVuZGVmaW5lZCkgfHxcbiAgICAgICAgICAgICAgKGZpbHRlci52YWx1ZS5lcXVhbHNUbyAhPT0gbnVsbCAmJiBmaWx0ZXIudmFsdWUuZXF1YWxzVG8gIT09IHVuZGVmaW5lZCkpXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBmaWx0ZXJlZCA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBGaWx0ZXJUeXBlLmRhdGU6XG4gICAgICAgIGlmIChzdGF0ZT8uZGF0ZUZpbHRlcnMpIHtcbiAgICAgICAgICBjb25zdCBmaWx0ZXIgPSBzdGF0ZS5kYXRlRmlsdGVycy5maW5kKCh4KSA9PiB4LmZpZWxkID09PSBjb2x1bW4uZmlsdGVyRmllbGQpO1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGZpbHRlciAmJlxuICAgICAgICAgICAgZmlsdGVyLnZhbHVlICYmXG4gICAgICAgICAgICAoKGZpbHRlci52YWx1ZS5sZXNzVGhhbiAhPT0gbnVsbCAmJiBmaWx0ZXIudmFsdWUubGVzc1RoYW4gIT09IHVuZGVmaW5lZCkgfHxcbiAgICAgICAgICAgICAgKGZpbHRlci52YWx1ZS5ncmVhdGVyVGhhbiAhPT0gbnVsbCAmJiBmaWx0ZXIudmFsdWUuZ3JlYXRlclRoYW4gIT09IHVuZGVmaW5lZCkpXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBmaWx0ZXJlZCA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm4gZmlsdGVyZWQ7XG4gIH1cblxuICBzdGF0aWMgc29ydENvbHVtbihzb3J0RXZlbnQ6IFNvcnRFdmVudCwgc3RhdGU6IEZpbHRlclN0YXRlKTogRmlsdGVyU3RhdGUge1xuICAgIGNvbnN0IGNvbHVtbiA9IHNvcnRFdmVudC5jb2x1bW47XG4gICAgY29uc3Qgc2hpZnRLZXkgPSBzb3J0RXZlbnQuc2hpZnRLZXk7XG4gICAgY29uc3Qgc29ydCA9IHN0YXRlLnNvcnRQYXJhbXMuZmluZCgoc29ydFBhcmFtOiBTb3J0UGFyYW0pID0+IHNvcnRQYXJhbS5maWVsZCA9PT0gY29sdW1uLnNvcnRGaWVsZCk7XG4gICAgaWYgKHNvcnQgPT09IG51bGwgfHwgc29ydCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAoIXNoaWZ0S2V5KSB7XG4gICAgICAgIHN0YXRlLnNvcnRQYXJhbXMubGVuZ3RoID0gMDtcbiAgICAgIH1cbiAgICAgIHN0YXRlLnNvcnRQYXJhbXMucHVzaChuZXcgU29ydFBhcmFtKHsgZmllbGQ6IGNvbHVtbi5zb3J0RmllbGQsIGFzYzogdHJ1ZSwgb3JkZXI6IDAgfSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIXNvcnQuYXNjKSB7XG4gICAgICAgIHN0YXRlLnNvcnRQYXJhbXMgPSBTdGF0ZVV0aWwuY2xlYXJTb3J0UGFyYW0oc29ydCwgc3RhdGUuc29ydFBhcmFtcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzb3J0LmFzYyA9ICFzb3J0LmFzYztcbiAgICAgICAgaWYgKCFzaGlmdEtleSkge1xuICAgICAgICAgIHN0YXRlLnNvcnRQYXJhbXMgPSBbc29ydF07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5ldyBGaWx0ZXJTdGF0ZShzdGF0ZSk7XG4gIH1cblxuICBzdGF0aWMgc29ydEFzYyhzb3J0RXZlbnQ6IFNvcnRFdmVudCwgc3RhdGU6IEZpbHRlclN0YXRlKTogRmlsdGVyU3RhdGUge1xuICAgIHJldHVybiBTdGF0ZVV0aWwuc29ydChzb3J0RXZlbnQsIHN0YXRlLCB0cnVlKTtcbiAgfVxuXG4gIHN0YXRpYyBzb3J0RGVzYyhzb3J0RXZlbnQ6IFNvcnRFdmVudCwgc3RhdGU6IEZpbHRlclN0YXRlKTogRmlsdGVyU3RhdGUge1xuICAgIHJldHVybiBTdGF0ZVV0aWwuc29ydChzb3J0RXZlbnQsIHN0YXRlLCBmYWxzZSk7XG4gIH1cblxuICBzdGF0aWMgc29ydChzb3J0RXZlbnQ6IFNvcnRFdmVudCwgc3RhdGU6IEZpbHRlclN0YXRlLCBhc2M6IGJvb2xlYW4pIHtcbiAgICBjb25zdCBjb2x1bW4gPSBzb3J0RXZlbnQuY29sdW1uO1xuICAgIGNvbnN0IHNoaWZ0S2V5ID0gc29ydEV2ZW50LnNoaWZ0S2V5O1xuICAgIGNvbnN0IHNvcnQgPSBzdGF0ZS5zb3J0UGFyYW1zLmZpbmQoKHNvcnRQYXJhbTogU29ydFBhcmFtKSA9PiBzb3J0UGFyYW0uZmllbGQgPT09IGNvbHVtbi5zb3J0RmllbGQpO1xuICAgIGlmIChzb3J0KSB7XG4gICAgICBzdGF0ZS5zb3J0UGFyYW1zID0gU3RhdGVVdGlsLmNsZWFyU29ydFBhcmFtKHNvcnQsIHN0YXRlLnNvcnRQYXJhbXMpO1xuICAgIH1cbiAgICBpZiAoIXNoaWZ0S2V5KSB7XG4gICAgICBzdGF0ZS5zb3J0UGFyYW1zLmxlbmd0aCA9IDA7XG4gICAgfVxuICAgIHN0YXRlLnNvcnRQYXJhbXMucHVzaChuZXcgU29ydFBhcmFtKHsgZmllbGQ6IGNvbHVtbi5zb3J0RmllbGQsIGFzYzogYXNjLCBvcmRlcjogMCB9KSk7XG4gICAgcmV0dXJuIG5ldyBGaWx0ZXJTdGF0ZShzdGF0ZSk7XG4gIH1cblxuICBzdGF0aWMgY2xlYXJTb3J0UGFyYW0oc29ydDogU29ydFBhcmFtLCBzb3J0UGFyYW1zOiBTb3J0UGFyYW1bXSkge1xuICAgIGNvbnN0IGluZGV4ID0gc29ydFBhcmFtcy5pbmRleE9mKHNvcnQpO1xuICAgIHNvcnRQYXJhbXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICByZXR1cm4gc29ydFBhcmFtcztcbiAgfVxuXG4gIHN0YXRpYyBjbGVhclNvcnQoY29sdW1uOiBUYWJsZUNvbHVtbiwgc3RhdGU6IEZpbHRlclN0YXRlKTogRmlsdGVyU3RhdGUge1xuICAgIHN0YXRlLnNvcnRQYXJhbXMgPSBzdGF0ZS5zb3J0UGFyYW1zLmZpbHRlcigoXykgPT4gXy5maWVsZCAhPT0gY29sdW1uLnNvcnRGaWVsZCk7XG4gICAgcmV0dXJuIG5ldyBGaWx0ZXJTdGF0ZShzdGF0ZSk7XG4gIH1cblxuICBzdGF0aWMgY2xlYXJBbGxTb3J0KHN0YXRlOiBGaWx0ZXJTdGF0ZSk6IEZpbHRlclN0YXRlIHtcbiAgICBzdGF0ZS5zb3J0UGFyYW1zID0gW107XG4gICAgcmV0dXJuIG5ldyBGaWx0ZXJTdGF0ZShzdGF0ZSk7XG4gIH1cbn1cbiJdfQ==