@tetacom/ng-components 1.0.23 → 1.0.27

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 (355) hide show
  1. package/.browserslistrc +16 -0
  2. package/component/chart/core/axis-creator.d.ts +2 -1
  3. package/component/chart/model/enum/scale-type.d.ts +2 -1
  4. package/component/chart/model/series.d.ts +2 -2
  5. package/component/table/contract/table-column.d.ts +9 -2
  6. package/component/table/head-cell-dropdown/head-cell-dropdown.component.d.ts +2 -1
  7. package/component/table/service/table.service.d.ts +0 -1
  8. package/component/table/table/table.component.d.ts +1 -2
  9. package/directive/click-outside/click-outside.directive.d.ts +3 -2
  10. package/esm2020/common/contract/auto-close-ignore-case.mjs +1 -1
  11. package/esm2020/common/contract/constructor-type.mjs +1 -1
  12. package/esm2020/common/contract/dynamic-data.mjs +1 -1
  13. package/esm2020/common/contract/i-dictionary.mjs +1 -1
  14. package/esm2020/common/contract/i-id-name.mjs +1 -1
  15. package/esm2020/common/contract/i-rect.mjs +1 -1
  16. package/esm2020/common/contract/i-tree-data.mjs +1 -1
  17. package/esm2020/common/contract/public-api.mjs +1 -1
  18. package/esm2020/common/contract/teta-content-ref.mjs +1 -1
  19. package/esm2020/common/enum/align.enum.mjs +1 -1
  20. package/esm2020/common/enum/public-api.mjs +1 -1
  21. package/esm2020/common/enum/teta-size.enum.mjs +1 -1
  22. package/esm2020/common/enum/vertical-align.enum.mjs +1 -1
  23. package/esm2020/common/public-api.mjs +1 -1
  24. package/esm2020/common/service/click.service.mjs +1 -1
  25. package/esm2020/common/service/dynamic-component.service.mjs +1 -1
  26. package/esm2020/common/service/overlay-container.service.mjs +1 -1
  27. package/esm2020/common/service/public-api.mjs +1 -1
  28. package/esm2020/common/util/array-util.mjs +1 -1
  29. package/esm2020/common/util/dom-util.mjs +1 -1
  30. package/esm2020/common/util/position-util.mjs +1 -1
  31. package/esm2020/common/util/public-api.mjs +1 -1
  32. package/esm2020/component/accordion/accordion/accordion.component.mjs +1 -1
  33. package/esm2020/component/accordion/accordion-content.directive.mjs +1 -1
  34. package/esm2020/component/accordion/accordion-head/accordion-head.component.mjs +1 -1
  35. package/esm2020/component/accordion/accordion-item/accordion-item.component.mjs +1 -1
  36. package/esm2020/component/accordion/accordion.module.mjs +1 -1
  37. package/esm2020/component/accordion/public-api.mjs +1 -1
  38. package/esm2020/component/button/button/button.component.mjs +1 -1
  39. package/esm2020/component/button/button.module.mjs +1 -1
  40. package/esm2020/component/button/public-api.mjs +1 -1
  41. package/esm2020/component/chart/chart/chart.component.mjs +1 -1
  42. package/esm2020/component/chart/chart.module.mjs +1 -1
  43. package/esm2020/component/chart/core/axis-creator.mjs +1 -1
  44. package/esm2020/component/chart/core/chart.mjs +1 -1
  45. package/esm2020/component/chart/core/public-api.mjs +1 -1
  46. package/esm2020/component/chart/drawer/area-drawer.mjs +1 -1
  47. package/esm2020/component/chart/drawer/bar-drawer.mjs +1 -1
  48. package/esm2020/component/chart/drawer/contour-drawer.mjs +1 -1
  49. package/esm2020/component/chart/drawer/default-drawer-mapping.mjs +1 -1
  50. package/esm2020/component/chart/drawer/line-drawer.mjs +1 -1
  51. package/esm2020/component/chart/drawer/pie-drawer.mjs +1 -1
  52. package/esm2020/component/chart/drawer/public-api.mjs +1 -1
  53. package/esm2020/component/chart/drawer/scatter-drawer.mjs +1 -1
  54. package/esm2020/component/chart/drawer/spline-drawer.mjs +1 -1
  55. package/esm2020/component/chart/legend-drawer/default-drawer-legend-mapping.mjs +1 -1
  56. package/esm2020/component/chart/legend-drawer/gradient-drawer.mjs +1 -1
  57. package/esm2020/component/chart/legend-drawer/swatch-drawer.mjs +1 -1
  58. package/esm2020/component/chart/model/annotation.mjs +1 -1
  59. package/esm2020/component/chart/model/axis-options.mjs +1 -1
  60. package/esm2020/component/chart/model/chart-bounds.mjs +1 -1
  61. package/esm2020/component/chart/model/chart-options.mjs +1 -1
  62. package/esm2020/component/chart/model/enum/axis-type.mjs +1 -1
  63. package/esm2020/component/chart/model/enum/dispatch-type.mjs +1 -1
  64. package/esm2020/component/chart/model/enum/drag-point-type.mjs +1 -1
  65. package/esm2020/component/chart/model/enum/legend-type.mjs +1 -1
  66. package/esm2020/component/chart/model/enum/public-api.mjs +1 -1
  67. package/esm2020/component/chart/model/enum/scale-type.mjs +2 -1
  68. package/esm2020/component/chart/model/enum/scale.mjs +1 -1
  69. package/esm2020/component/chart/model/enum/series-type.mjs +1 -1
  70. package/esm2020/component/chart/model/enum/zoom-type.mjs +1 -1
  71. package/esm2020/component/chart/model/i-drag-event.mjs +1 -1
  72. package/esm2020/component/chart/model/i-drawer-legend.mjs +1 -1
  73. package/esm2020/component/chart/model/i-drawer.mjs +1 -1
  74. package/esm2020/component/chart/model/i-zoom-event.mjs +1 -1
  75. package/esm2020/component/chart/model/plot-band.mjs +1 -1
  76. package/esm2020/component/chart/model/plot-line.mjs +1 -1
  77. package/esm2020/component/chart/model/point/bar-point.mjs +1 -1
  78. package/esm2020/component/chart/model/point/base-point.mjs +1 -1
  79. package/esm2020/component/chart/model/point/contour-point.mjs +1 -1
  80. package/esm2020/component/chart/model/point/marker-options.mjs +1 -1
  81. package/esm2020/component/chart/model/point/public-api.mjs +1 -1
  82. package/esm2020/component/chart/model/point/scatter-point.mjs +1 -1
  83. package/esm2020/component/chart/model/public-api.mjs +1 -1
  84. package/esm2020/component/chart/model/series.mjs +1 -1
  85. package/esm2020/component/chart/model/tooltip-options.mjs +1 -1
  86. package/esm2020/component/chart/public-api.mjs +1 -1
  87. package/esm2020/component/chart-3d/chart-3d.module.mjs +1 -1
  88. package/esm2020/component/chart-3d/chart3d/chart3d.component.mjs +4 -4
  89. package/esm2020/component/chart-3d/model/base-3d-point.mjs +1 -1
  90. package/esm2020/component/chart-3d/model/chart-3d-options.mjs +1 -1
  91. package/esm2020/component/chart-3d/model/public-api.mjs +1 -1
  92. package/esm2020/component/chart-3d/model/series-3d.mjs +1 -1
  93. package/esm2020/component/chart-3d/public-api.mjs +1 -1
  94. package/esm2020/component/checkbox/checkbox/checkbox.component.mjs +1 -1
  95. package/esm2020/component/checkbox/checkbox.module.mjs +1 -1
  96. package/esm2020/component/checkbox/public-api.mjs +1 -1
  97. package/esm2020/component/date-picker/date-picker/date-picker.component.mjs +1 -1
  98. package/esm2020/component/date-picker/date-picker.module.mjs +1 -1
  99. package/esm2020/component/date-picker/day-select/day-select.component.mjs +1 -1
  100. package/esm2020/component/date-picker/model/date-period.mjs +1 -1
  101. package/esm2020/component/date-picker/model/date-picker-mode.enum.mjs +1 -1
  102. package/esm2020/component/date-picker/model/day-model.mjs +1 -1
  103. package/esm2020/component/date-picker/model/picker-locale-model.mjs +1 -1
  104. package/esm2020/component/date-picker/month-picker/month-picker.component.mjs +1 -1
  105. package/esm2020/component/date-picker/month-select/month-select.component.mjs +1 -1
  106. package/esm2020/component/date-picker/public-api.mjs +1 -1
  107. package/esm2020/component/date-picker/service/picker-locale.service.mjs +1 -1
  108. package/esm2020/component/date-picker/service/picker-touch.service.mjs +1 -1
  109. package/esm2020/component/date-picker/time-part-control/time-part-control.component.mjs +1 -1
  110. package/esm2020/component/date-picker/util/date-picker-util.mjs +1 -1
  111. package/esm2020/component/date-picker/year-select/year-select.component.mjs +1 -1
  112. package/esm2020/component/delimiter/delimiter/delimiter.component.mjs +1 -1
  113. package/esm2020/component/delimiter/delimiter.module.mjs +1 -1
  114. package/esm2020/component/delimiter/public-api.mjs +1 -1
  115. package/esm2020/component/dropdown/dropdown/dropdown.component.mjs +1 -1
  116. package/esm2020/component/dropdown/dropdown-base.mjs +1 -1
  117. package/esm2020/component/dropdown/dropdown-content.directive.mjs +1 -1
  118. package/esm2020/component/dropdown/dropdown-head.directive.mjs +1 -1
  119. package/esm2020/component/dropdown/dropdown.directive.mjs +1 -1
  120. package/esm2020/component/dropdown/dropdown.module.mjs +1 -1
  121. package/esm2020/component/dropdown/public-api.mjs +1 -1
  122. package/esm2020/component/dynamic-component/dynamic-component.module.mjs +1 -1
  123. package/esm2020/component/dynamic-component/popup-content/popup-content.component.mjs +1 -1
  124. package/esm2020/component/dynamic-component/public-api.mjs +1 -1
  125. package/esm2020/component/expand-panel/expand-panel/expand-panel.component.mjs +1 -1
  126. package/esm2020/component/expand-panel/expand-panel-content.directive.mjs +1 -1
  127. package/esm2020/component/expand-panel/expand-panel-head.directive.mjs +1 -1
  128. package/esm2020/component/expand-panel/expand-panel.module.mjs +1 -1
  129. package/esm2020/component/expand-panel/public-api.mjs +1 -1
  130. package/esm2020/component/file-upload/file-item/file-item.component.mjs +4 -4
  131. package/esm2020/component/file-upload/file-upload-area/file-upload-area.component.mjs +1 -1
  132. package/esm2020/component/file-upload/file-upload.module.mjs +1 -1
  133. package/esm2020/component/file-upload/public-api.mjs +1 -1
  134. package/esm2020/component/filter/base/filter-base.mjs +1 -1
  135. package/esm2020/component/filter/base/filter-component-base.mjs +1 -1
  136. package/esm2020/component/filter/boolean-filter/boolean-filter.component.mjs +1 -1
  137. package/esm2020/component/filter/contarct/boolean-filter.mjs +1 -1
  138. package/esm2020/component/filter/contarct/date-filter-value.mjs +1 -1
  139. package/esm2020/component/filter/contarct/date-filter.mjs +1 -1
  140. package/esm2020/component/filter/contarct/filter-component-map.mjs +1 -1
  141. package/esm2020/component/filter/contarct/filter-item.mjs +1 -1
  142. package/esm2020/component/filter/contarct/filter-state.mjs +1 -1
  143. package/esm2020/component/filter/contarct/i-filter.mjs +1 -1
  144. package/esm2020/component/filter/contarct/list-filter.mjs +1 -1
  145. package/esm2020/component/filter/contarct/numeric-filter-value.mjs +1 -1
  146. package/esm2020/component/filter/contarct/numeric-filter.mjs +1 -1
  147. package/esm2020/component/filter/contarct/sort-param.mjs +1 -1
  148. package/esm2020/component/filter/contarct/string-filter.mjs +1 -1
  149. package/esm2020/component/filter/date-filter/date-filter.component.mjs +1 -1
  150. package/esm2020/component/filter/enum/filter-type.enum.mjs +1 -1
  151. package/esm2020/component/filter/enum/list-filter-type.enum.mjs +1 -1
  152. package/esm2020/component/filter/enum/string-filter-type.enum.mjs +1 -1
  153. package/esm2020/component/filter/filter-host/filter-host.component.mjs +1 -1
  154. package/esm2020/component/filter/filter-panel/filter-panel.component.mjs +1 -1
  155. package/esm2020/component/filter/filter.module.mjs +1 -1
  156. package/esm2020/component/filter/list-filter/list-filter.component.mjs +1 -1
  157. package/esm2020/component/filter/numeric-filter/numeric-filter.component.mjs +1 -1
  158. package/esm2020/component/filter/public-api.mjs +1 -1
  159. package/esm2020/component/filter/string-filter/string-filter.component.mjs +1 -1
  160. package/esm2020/component/icon/icon/icon.component.mjs +1 -1
  161. package/esm2020/component/icon/icon-sprite.directive.mjs +1 -1
  162. package/esm2020/component/icon/icon.module.mjs +1 -1
  163. package/esm2020/component/icon/icon.service.mjs +1 -1
  164. package/esm2020/component/icon/public-api.mjs +1 -1
  165. package/esm2020/component/input/form-group-title/form-group-title.component.mjs +1 -1
  166. package/esm2020/component/input/input/input.component.mjs +1 -1
  167. package/esm2020/component/input/input.module.mjs +1 -1
  168. package/esm2020/component/input/public-api.mjs +1 -1
  169. package/esm2020/component/input/text-field/text-field.component.mjs +1 -1
  170. package/esm2020/component/message/message/message.component.mjs +1 -1
  171. package/esm2020/component/message/message-host/message-host.component.mjs +1 -1
  172. package/esm2020/component/message/message.module.mjs +1 -1
  173. package/esm2020/component/message/message.service.mjs +1 -1
  174. package/esm2020/component/message/model/message.mjs +1 -1
  175. package/esm2020/component/message/public-api.mjs +1 -1
  176. package/esm2020/component/modal/dialog/dialog.component.mjs +1 -1
  177. package/esm2020/component/modal/dialog.service.mjs +1 -1
  178. package/esm2020/component/modal/modal-container/modal-container.component.mjs +1 -1
  179. package/esm2020/component/modal/modal.module.mjs +1 -1
  180. package/esm2020/component/modal/modal.service.mjs +1 -1
  181. package/esm2020/component/modal/model/current-modal.mjs +1 -1
  182. package/esm2020/component/modal/model/i-modal-config.mjs +1 -1
  183. package/esm2020/component/modal/model/i-modal-result.mjs +1 -1
  184. package/esm2020/component/modal/model/modal-close-reason.enum.mjs +1 -1
  185. package/esm2020/component/modal/model/modal-instance.mjs +1 -1
  186. package/esm2020/component/modal/public-api.mjs +1 -1
  187. package/esm2020/component/pager/model/pager-state.mjs +1 -1
  188. package/esm2020/component/pager/pager/pager.component.mjs +1 -1
  189. package/esm2020/component/pager/pager.module.mjs +1 -1
  190. package/esm2020/component/pager/public-api.mjs +1 -1
  191. package/esm2020/component/pager/util/pager-util.mjs +1 -1
  192. package/esm2020/component/panel/panel/panel.component.mjs +1 -1
  193. package/esm2020/component/panel/panel.module.mjs +1 -1
  194. package/esm2020/component/panel/public-api.mjs +1 -1
  195. package/esm2020/component/progress-bar/progress-bar/progress-bar.component.mjs +1 -1
  196. package/esm2020/component/progress-bar/progress-bar.module.mjs +1 -1
  197. package/esm2020/component/progress-bar/public-api.mjs +1 -1
  198. package/esm2020/component/property-grid/default/date-item-default/date-item-default.component.mjs +1 -1
  199. package/esm2020/component/property-grid/default/list-item-default/list-item-default.component.mjs +1 -1
  200. package/esm2020/component/property-grid/default/numeric-item-default/numeric-item-default.component.mjs +1 -1
  201. package/esm2020/component/property-grid/default/string-item-default/string-item-default.component.mjs +1 -1
  202. package/esm2020/component/property-grid/property-grid/property-grid-group/property-grid-group.component.mjs +1 -1
  203. package/esm2020/component/property-grid/property-grid/property-grid-item/property-grid-item.component.mjs +1 -1
  204. package/esm2020/component/property-grid/property-grid/property-grid.component.mjs +1 -1
  205. package/esm2020/component/property-grid/property-grid.module.mjs +1 -1
  206. package/esm2020/component/property-grid/public-api.mjs +1 -1
  207. package/esm2020/component/public-api.mjs +1 -1
  208. package/esm2020/component/radio/public-api.mjs +1 -1
  209. package/esm2020/component/radio/radio/radio.component.mjs +1 -1
  210. package/esm2020/component/radio/radio-button/radio-button.component.mjs +1 -1
  211. package/esm2020/component/radio/radio.module.mjs +1 -1
  212. package/esm2020/component/resize-panel/public-api.mjs +1 -1
  213. package/esm2020/component/resize-panel/resize-panel/resize-panel.component.mjs +1 -1
  214. package/esm2020/component/resize-panel/resize-panel.module.mjs +1 -1
  215. package/esm2020/component/select/public-api.mjs +1 -1
  216. package/esm2020/component/select/select/select.component.mjs +1 -1
  217. package/esm2020/component/select/select-option.directive.mjs +1 -1
  218. package/esm2020/component/select/select-value.directive.mjs +1 -1
  219. package/esm2020/component/select/select.module.mjs +1 -1
  220. package/esm2020/component/sidebar/public-api.mjs +1 -1
  221. package/esm2020/component/sidebar/sidebar/sidebar.component.mjs +1 -1
  222. package/esm2020/component/sidebar/sidebar-position.enum.mjs +1 -1
  223. package/esm2020/component/sidebar/sidebar.module.mjs +1 -1
  224. package/esm2020/component/switch/public-api.mjs +1 -1
  225. package/esm2020/component/switch/switch/switch.component.mjs +1 -1
  226. package/esm2020/component/switch/switch-button/switch-button.component.mjs +1 -1
  227. package/esm2020/component/switch/switch.module.mjs +1 -1
  228. package/esm2020/component/switch/switch.service.mjs +1 -1
  229. package/esm2020/component/table/base/cell-component-base.mjs +21 -12
  230. package/esm2020/component/table/base/detail-component-base.mjs +1 -1
  231. package/esm2020/component/table/base/group-row-component-base.mjs +1 -1
  232. package/esm2020/component/table/base/head-cell-component-base.mjs +1 -1
  233. package/esm2020/component/table/cell/cell.component.mjs +1 -1
  234. package/esm2020/component/table/cell-host/cell-host.component.mjs +1 -1
  235. package/esm2020/component/table/contract/cell-components-map.mjs +1 -1
  236. package/esm2020/component/table/contract/column-reorder-event.mjs +1 -1
  237. package/esm2020/component/table/contract/column-resize-event.mjs +1 -1
  238. package/esm2020/component/table/contract/i-cell-coordinates.mjs +1 -1
  239. package/esm2020/component/table/contract/i-cell-event.mjs +1 -1
  240. package/esm2020/component/table/contract/i-cell-value.mjs +1 -1
  241. package/esm2020/component/table/contract/public-api.mjs +1 -1
  242. package/esm2020/component/table/contract/sort-event.mjs +1 -1
  243. package/esm2020/component/table/contract/table-column-store.mjs +1 -1
  244. package/esm2020/component/table/contract/table-column.mjs +2 -1
  245. package/esm2020/component/table/contract/table-context-menu-config.mjs +1 -1
  246. package/esm2020/component/table/contract/table-row.mjs +1 -1
  247. package/esm2020/component/table/default/boolean-cell/boolean-cell.component.mjs +1 -1
  248. package/esm2020/component/table/default/date-cell/date-cell.component.mjs +1 -1
  249. package/esm2020/component/table/default/date-time-cell/date-time-cell.component.mjs +1 -1
  250. package/esm2020/component/table/default/default-head-cell/default-head-cell.component.mjs +1 -1
  251. package/esm2020/component/table/default/group-row/group-row.component.mjs +1 -1
  252. package/esm2020/component/table/default/list-cell/list-cell.component.mjs +1 -1
  253. package/esm2020/component/table/default/numeric-cell/numeric-cell.component.mjs +2 -1
  254. package/esm2020/component/table/default/string-cell/string-cell.component.mjs +3 -2
  255. package/esm2020/component/table/enum/aggregation-type.enum.mjs +1 -1
  256. package/esm2020/component/table/enum/edit-event.enum.mjs +1 -1
  257. package/esm2020/component/table/enum/edit-type.enum.mjs +1 -1
  258. package/esm2020/component/table/enum/public-api.mjs +1 -1
  259. package/esm2020/component/table/enum/select-type.enum.mjs +1 -1
  260. package/esm2020/component/table/head-cell/head-cell.component.mjs +1 -1
  261. package/esm2020/component/table/head-cell-dropdown/head-cell-dropdown.component.mjs +3 -3
  262. package/esm2020/component/table/head-cell-host/head-cell-host.component.mjs +1 -1
  263. package/esm2020/component/table/public-api.mjs +1 -1
  264. package/esm2020/component/table/selection-cell/selection-cell.component.mjs +1 -1
  265. package/esm2020/component/table/selection-head-cell/selection-head-cell.component.mjs +1 -1
  266. package/esm2020/component/table/service/table.service.mjs +9 -4
  267. package/esm2020/component/table/table/table.component.mjs +5 -8
  268. package/esm2020/component/table/table-body/table-body.component.mjs +1 -1
  269. package/esm2020/component/table/table-head/table-head.component.mjs +1 -1
  270. package/esm2020/component/table/table-head-group/table-head-group.component.mjs +1 -1
  271. package/esm2020/component/table/table.module.mjs +1 -1
  272. package/esm2020/component/table/util/public-api.mjs +1 -1
  273. package/esm2020/component/table/util/state-util.mjs +1 -1
  274. package/esm2020/component/table/util/table-util.mjs +1 -1
  275. package/esm2020/component/tabs/public-api.mjs +1 -1
  276. package/esm2020/component/tabs/tab/tab.component.mjs +1 -1
  277. package/esm2020/component/tabs/tab-content.directive.mjs +1 -1
  278. package/esm2020/component/tabs/tab-title.directive.mjs +1 -1
  279. package/esm2020/component/tabs/tabs/tabs.component.mjs +1 -1
  280. package/esm2020/component/tabs/tabs.module.mjs +1 -1
  281. package/esm2020/component/theme-switch/public-api.mjs +1 -1
  282. package/esm2020/component/theme-switch/theme-switch/theme-switch.component.mjs +1 -1
  283. package/esm2020/component/theme-switch/theme-switch.module.mjs +1 -1
  284. package/esm2020/component/theme-switch/theme-switch.service.mjs +1 -1
  285. package/esm2020/component/toggle/public-api.mjs +1 -1
  286. package/esm2020/component/toggle/toggle/toggle.component.mjs +1 -1
  287. package/esm2020/component/toggle/toggle.module.mjs +1 -1
  288. package/esm2020/component/toolbar/public-api.mjs +1 -1
  289. package/esm2020/component/toolbar/toolbar/toolbar.component.mjs +1 -1
  290. package/esm2020/component/toolbar/toolbar.module.mjs +1 -1
  291. package/esm2020/component/tree/public-api.mjs +1 -1
  292. package/esm2020/component/tree/tree/tree.component.mjs +1 -1
  293. package/esm2020/component/tree/tree-item/tree-item.component.mjs +1 -1
  294. package/esm2020/component/tree/tree-item-toggle/tree-item-toggle.component.mjs +1 -1
  295. package/esm2020/component/tree/tree.module.mjs +1 -1
  296. package/esm2020/component/tree/tree.service.mjs +1 -1
  297. package/esm2020/directive/click-outside/click-outside.directive.mjs +12 -5
  298. package/esm2020/directive/click-outside/click-outside.module.mjs +1 -1
  299. package/esm2020/directive/click-outside/public-api.mjs +1 -1
  300. package/esm2020/directive/context-menu/context-menu.directive.mjs +1 -1
  301. package/esm2020/directive/context-menu/context-menu.module.mjs +1 -1
  302. package/esm2020/directive/context-menu/public-api.mjs +1 -1
  303. package/esm2020/directive/disable-control/disable-control.directive.mjs +1 -1
  304. package/esm2020/directive/disable-control/disable-control.module.mjs +1 -1
  305. package/esm2020/directive/disable-control/public-api.mjs +1 -1
  306. package/esm2020/directive/drag-sort/drag-sort-container.directive.mjs +1 -1
  307. package/esm2020/directive/drag-sort/drag-sort-event.mjs +1 -1
  308. package/esm2020/directive/drag-sort/drag-sort-item.directive.mjs +1 -1
  309. package/esm2020/directive/drag-sort/drag-sort.module.mjs +1 -1
  310. package/esm2020/directive/drag-sort/public-api.mjs +1 -1
  311. package/esm2020/directive/dynamic-content-base.directive.mjs +1 -1
  312. package/esm2020/directive/highlight/highlight.directive.mjs +1 -1
  313. package/esm2020/directive/highlight/highlight.module.mjs +1 -1
  314. package/esm2020/directive/highlight/public-api.mjs +1 -1
  315. package/esm2020/directive/hint/hint.directive.mjs +1 -1
  316. package/esm2020/directive/hint/hint.module.mjs +1 -1
  317. package/esm2020/directive/hint/public-api.mjs +1 -1
  318. package/esm2020/directive/loader/loader.directive.mjs +1 -1
  319. package/esm2020/directive/loader/loader.module.mjs +1 -1
  320. package/esm2020/directive/loader/public-api.mjs +1 -1
  321. package/esm2020/directive/no-autofill/no-autofill.directive.mjs +1 -1
  322. package/esm2020/directive/no-autofill/no-autofill.module.mjs +1 -1
  323. package/esm2020/directive/no-autofill/public-api.mjs +1 -1
  324. package/esm2020/directive/only-number/only-number.directive.mjs +1 -1
  325. package/esm2020/directive/only-number/only-number.module.mjs +1 -1
  326. package/esm2020/directive/only-number/public-api.mjs +1 -1
  327. package/esm2020/directive/public-api.mjs +1 -1
  328. package/esm2020/directive/resize-drag/public-api.mjs +1 -1
  329. package/esm2020/directive/resize-drag/resize-drag.directive.mjs +1 -1
  330. package/esm2020/directive/resize-drag/resize-drag.module.mjs +1 -1
  331. package/esm2020/directive/teta-template/public-api.mjs +1 -1
  332. package/esm2020/directive/teta-template/teta-template.directive.mjs +1 -1
  333. package/esm2020/directive/teta-template/teta-template.module.mjs +1 -1
  334. package/esm2020/directive/tooltip/public-api.mjs +1 -1
  335. package/esm2020/directive/tooltip/tooltip.directive.mjs +1 -1
  336. package/esm2020/directive/tooltip/tooltip.module.mjs +1 -1
  337. package/esm2020/pipe/number-pipe/number-pipe.module.mjs +1 -1
  338. package/esm2020/pipe/number-pipe/number.pipe.mjs +1 -1
  339. package/esm2020/pipe/number-pipe/public-api.mjs +1 -1
  340. package/esm2020/pipe/prepend-zero/prepend-zero.module.mjs +1 -1
  341. package/esm2020/pipe/prepend-zero/prepend-zero.pipe.mjs +1 -1
  342. package/esm2020/pipe/public-api.mjs +1 -1
  343. package/esm2020/pipe/util/number-helper.mjs +1 -1
  344. package/esm2020/public-api.mjs +1 -1
  345. package/esm2020/tetacom-ng-components.mjs +1 -1
  346. package/esm2020/util/date-util.mjs +1 -1
  347. package/esm2020/util/forms-util.mjs +1 -1
  348. package/esm2020/util/public-api.mjs +1 -1
  349. package/esm2020/util/string-util.mjs +1 -1
  350. package/fesm2015/tetacom-ng-components.mjs +55 -31
  351. package/fesm2015/tetacom-ng-components.mjs.map +1 -1
  352. package/fesm2020/tetacom-ng-components.mjs +53 -30
  353. package/fesm2020/tetacom-ng-components.mjs.map +1 -1
  354. package/package.json +1 -1
  355. package/style/tabs.scss +1 -1
@@ -14,6 +14,7 @@ import { ScrollingModule, CdkVirtualScrollViewport } from '@angular/cdk/scrollin
14
14
  import * as i1$1 from '@ngneat/transloco';
15
15
  import { TranslocoModule, TRANSLOCO_SCOPE } from '@ngneat/transloco';
16
16
  import * as hash from 'object-hash';
17
+ import hash__default from 'object-hash';
17
18
  import { SizeStrategy, Datasource, UiScrollModule } from 'ngx-ui-scroll';
18
19
  import * as d3 from 'd3';
19
20
  import { zoomIdentity } from 'd3';
@@ -2478,8 +2479,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImpor
2478
2479
  }] });
2479
2480
 
2480
2481
  class ClickOutsideDirective {
2481
- constructor(_elementRef) {
2482
+ constructor(_elementRef, _ngZone) {
2482
2483
  this._elementRef = _elementRef;
2484
+ this._ngZone = _ngZone;
2483
2485
  this.clickOutside = new EventEmitter();
2484
2486
  this.rightClick = false;
2485
2487
  this._handleEvents = false;
@@ -2489,6 +2491,7 @@ class ClickOutsideDirective {
2489
2491
  }
2490
2492
  const clickedInside = DomUtil.clickedInside(this._elementRef.nativeElement, click);
2491
2493
  if (!clickedInside) {
2494
+ console.log('clickedInside', clickedInside);
2492
2495
  this.clickOutside.emit(click);
2493
2496
  }
2494
2497
  };
@@ -2496,7 +2499,11 @@ class ClickOutsideDirective {
2496
2499
  set tetaClickOutside(val) {
2497
2500
  this._handleEvents = val;
2498
2501
  if (this._handleEvents) {
2499
- this.addListener(this.rightClick);
2502
+ this._ngZone.runOutsideAngular(() => {
2503
+ setTimeout(() => {
2504
+ this.addListener(this.rightClick);
2505
+ });
2506
+ });
2500
2507
  }
2501
2508
  else {
2502
2509
  this.removeListener();
@@ -2510,6 +2517,7 @@ class ClickOutsideDirective {
2510
2517
  }
2511
2518
  addListener(handleRightClick) {
2512
2519
  window.addEventListener('click', this.listener);
2520
+ console.log('handleRightClick', handleRightClick);
2513
2521
  if (handleRightClick) {
2514
2522
  window.addEventListener('contextmenu', this.listener);
2515
2523
  }
@@ -2519,14 +2527,14 @@ class ClickOutsideDirective {
2519
2527
  window.removeEventListener('contextmenu', this.listener);
2520
2528
  }
2521
2529
  }
2522
- ClickOutsideDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: ClickOutsideDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
2530
+ ClickOutsideDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: ClickOutsideDirective, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
2523
2531
  ClickOutsideDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.1", type: ClickOutsideDirective, selector: "[tetaClickOutside]", inputs: { rightClick: "rightClick", tetaClickOutside: "tetaClickOutside" }, outputs: { clickOutside: "clickOutside" }, ngImport: i0 });
2524
2532
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: ClickOutsideDirective, decorators: [{
2525
2533
  type: Directive,
2526
2534
  args: [{
2527
2535
  selector: '[tetaClickOutside]',
2528
2536
  }]
2529
- }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { clickOutside: [{
2537
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { clickOutside: [{
2530
2538
  type: Output
2531
2539
  }], rightClick: [{
2532
2540
  type: Input
@@ -3328,10 +3336,10 @@ class FileItemComponent {
3328
3336
  ngOnInit() { }
3329
3337
  }
3330
3338
  FileItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: FileItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3331
- FileItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.1", type: FileItemComponent, selector: "teta-file-item", ngImport: i0, template: "<p>file-item works!</p>\n", styles: [""] });
3339
+ FileItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.1", type: FileItemComponent, selector: "teta-file-item", ngImport: i0, template: "<p>file-item works!</p>\n", styles: [""], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3332
3340
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: FileItemComponent, decorators: [{
3333
3341
  type: Component,
3334
- args: [{ selector: 'teta-file-item', template: "<p>file-item works!</p>\n", styles: [""] }]
3342
+ args: [{ selector: 'teta-file-item', changeDetection: ChangeDetectionStrategy.OnPush, template: "<p>file-item works!</p>\n", styles: [""] }]
3335
3343
  }], ctorParameters: function () { return []; } });
3336
3344
 
3337
3345
  class FileUploadModule {
@@ -6801,6 +6809,7 @@ class TableColumn extends FilterItem {
6801
6809
  this.groupingOrder = options?.groupingOrder ?? 0;
6802
6810
  this.groupByFn = options?.groupByFn;
6803
6811
  this.headCellComponent = options?.headCellComponent;
6812
+ this.headDropdownTemplate = options?.headDropdownTemplate;
6804
6813
  this.cellComponent = options?.cellComponent;
6805
6814
  this.aggregate = options?.aggregate;
6806
6815
  this.defaultValue = options?.defaultValue;
@@ -7013,6 +7022,7 @@ class TableService {
7013
7022
  this.hiddenColumns = this._hiddenColumns.asObservable();
7014
7023
  this.scrollIndex = this._scrollIndex.asObservable();
7015
7024
  }
7025
+ // cellEditable: boolean | ((row: ICellCoordinates<T>) => boolean);
7016
7026
  get dragSource() {
7017
7027
  return this._dragSource;
7018
7028
  }
@@ -7025,7 +7035,11 @@ class TableService {
7025
7035
  }
7026
7036
  setColumns(columns) {
7027
7037
  this.initialColumns = columns ? columns.map((_) => new TableColumn(_)) : [];
7028
- this.initialColumnsHash = hash.sha1(this.initialColumns);
7038
+ this.initialColumnsHash = hash__default(this.initialColumns, {
7039
+ algorithm: 'sha1',
7040
+ ignoreUnknown: true,
7041
+ excludeKeys: key => key === 'headDropdownTemplate',
7042
+ });
7029
7043
  const restored = this.restoreColumns();
7030
7044
  if (restored) {
7031
7045
  this.setDisplayColumns(restored);
@@ -7249,7 +7263,7 @@ class TableService {
7249
7263
  if (this._currentEditCell != null) {
7250
7264
  this._editCellStop.next(this._currentEditCell);
7251
7265
  }
7252
- if (this.boolOrFuncCallback(this.cellEditable)(cellCoordinates)) {
7266
+ if (this.boolOrFuncCallback(cellCoordinates.column.editable)(cellCoordinates)) {
7253
7267
  this._editCellStart.next(cellCoordinates);
7254
7268
  this._currentEditCell = cellCoordinates;
7255
7269
  }
@@ -8181,10 +8195,10 @@ class HeadCellDropdownComponent {
8181
8195
  }
8182
8196
  }
8183
8197
  HeadCellDropdownComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: HeadCellDropdownComponent, deps: [{ token: TableService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
8184
- HeadCellDropdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.1", type: HeadCellDropdownComponent, selector: "teta-head-cell-dropdown", inputs: { columns: "columns", column: "column", state: "state", dropDownOpen: "dropDownOpen" }, outputs: { dropDownOpenChange: "dropDownOpenChange", autosize: "autosize", autosizeAll: "autosizeAll" }, host: { properties: { "class.shadow-2": "this.shadow", "class.bg-background-50": "this.bg" } }, ngImport: i0, template: "<teta-tabs class=\"column_auto\">\n <teta-tab *ngIf=\"column.filterable\">\n <ng-template tetaTabTitle>\n <teta-icon [name]=\"'filter'\"></teta-icon>\n </ng-template>\n <ng-template tetaTabContent>\n <teta-filter-host [column]=\"column\" [state]=\"state\"\n *ngIf=\"dict | async as d\"\n [filterOptions]=\"d[column.name]\"></teta-filter-host>\n <teta-toolbar class=\"justify-content-between\">\n <button teta-button [palette]=\"'text'\" [view]=\"'ghost'\" (click)=\"clearFilter()\">\n \u041E\u0447\u0438\u0441\u0442\u0438\u0442\u044C\n </button>\n <button teta-button [palette]=\"'primary'\" (click)=\"applyFilter()\">\n <teta-icon [name]=\"'tick'\"></teta-icon>\n \u041F\u0440\u0438\u043C\u0435\u043D\u0438\u0442\u044C\n </button>\n </teta-toolbar>\n </ng-template>\n </teta-tab>\n <teta-tab>\n <ng-template tetaTabTitle>\n <teta-icon [name]=\"'menu'\"></teta-icon>\n </ng-template>\n <ng-template tetaTabContent>\n <div class=\"list column_auto\">\n <div class=\"list-item list-item_interactive\" (click)=\"pinColumn()\">\n <teta-icon [palette]=\"'text'\"\n [name]=\"column.locked ? 'unpin' : 'pin'\"\n class=\"margin-right-2\"></teta-icon>\n {{column.locked ? '\u041E\u0442\u043A\u0440\u0435\u043F\u0438\u0442\u044C' : '\u0417\u0430\u043A\u0440\u0435\u043F\u0438\u0442\u044C'}}\n </div>\n <div class=\"list-divider\"></div>\n <ng-container *ngIf=\"hasSortedColumns()\">\n <div class=\"list-item list-item_interactive\"\n *ngIf=\"sortParam\"\n (click)=\"clearSort()\">\n <teta-icon [palette]=\"'text'\"\n [name]=\"'pin'\" class=\"margin-right-2\"></teta-icon>\n \u0421\u0431\u0440\u043E\u0441\u0438\u0442\u044C \u0441\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u043A\u0443\n </div>\n <div class=\"list-item list-item_interactive\"\n (click)=\"clearAllSort()\">\n <teta-icon [palette]=\"'text'\"\n [name]=\"'pin'\"\n class=\"margin-right-2\"></teta-icon>\n \u0421\u0431\u0440\u043E\u0441\u0438\u0442\u044C \u0432\u0441\u0435 \u0441\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u043A\u0438\n </div>\n <div class=\"list-divider\"></div>\n </ng-container>\n <ng-container *ngIf=\"hasFilteredColumns()\">\n <div class=\"list-item list-item_interactive\"\n *ngIf=\"filtered\"\n (click)=\"clearFilter()\">\n <teta-icon [palette]=\"'text'\"\n [name]=\"'pin'\"\n class=\"margin-right-2\"></teta-icon>\n \u041E\u0447\u0438\u0441\u0442\u0438\u0442\u044C \u0444\u0438\u043B\u044C\u0442\u0440\n </div>\n <div class=\"list-item list-item_interactive\"\n (click)=\"clearAllFilters()\">\n <teta-icon [palette]=\"'text'\"\n [name]=\"'pin'\"\n class=\"margin-right-2\"></teta-icon>\n \u041E\u0447\u0438\u0441\u0442\u0438\u0442\u044C \u0432\u0441\u0435 \u0444\u0438\u043B\u044C\u0442\u0440\u044B\n </div>\n <div class=\"list-divider\"></div>\n </ng-container>\n <div class=\"list-item list-item_interactive\" (click)=\"autosize.emit()\">\n <teta-icon [palette]=\"'text'\"\n [name]=\"'autoSize'\"\n class=\"margin-right-2\"></teta-icon>\n \u0410\u0432\u0442\u043E\u0440\u0430\u0437\u043C\u0435\u0440 \u043A\u043E\u043B\u043E\u043D\u043A\u0438\n </div>\n <div class=\"list-item list-item_interactive\" (click)=\"autosizeAll.emit()\">\n <teta-icon [palette]=\"'text'\"\n [name]=\"'autoSizeAll'\"\n class=\"margin-right-2\"></teta-icon>\n \u0410\u0432\u0442\u043E\u0440\u0430\u0437\u043C\u0435\u0440 \u0432\u0441\u0435\u0445 \u043A\u043E\u043B\u043E\u043D\u043E\u043A\n </div>\n <div class=\"list-divider\"></div>\n <div class=\"list-item list-item_interactive\" (click)=\"restoreDefaultColumns()\">\n <teta-icon [palette]=\"'text'\"\n [name]=\"'undo'\"\n class=\"margin-right-2\"></teta-icon>\n \u041E\u0442\u043C\u0435\u043D\u0438\u0442\u044C \u0432\u0441\u0435 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F\n </div>\n </div>\n </ng-template>\n </teta-tab>\n <teta-tab>\n <ng-template tetaTabTitle>\n <teta-icon [name]=\"'eye'\"></teta-icon>\n </ng-template>\n <ng-template tetaTabContent>\n <div class=\"list-item padding-left-6 padding-top-2\" [class.padding-left-9]=\"childMode\">\n <teta-checkbox [binary]=\"true\"\n [allowNull]=\"true\"\n [ngModel]=\"allColumnsVisible()\"\n (ngModelChange)=\"setAllColumns($event)\">\n \u0412\u0441\u0435\n </teta-checkbox>\n </div>\n <div class=\"list-divider\"></div>\n <div class=\"padding-v-2 column column_auto scrollable\">\n <teta-tree [data]=\"columns\"\n [openItems]=\"openItems\"\n (openItemsChange)=\"openItems = $event\"\n [childNodeName]=\"'columns'\"\n [compareItems]=\"compareItems\">\n <ng-template tetaTemplate let-item>\n <div class=\"tree__item\">\n <teta-tree-item-toggle [item]=\"item\" *ngIf=\"item.columns?.length > 0\"></teta-tree-item-toggle>\n <teta-checkbox\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 </div>\n <teta-toolbar class=\"justify-content-end\">\n <button teta-button\n [disabled]=\"allColumnsVisible() === false\"\n [palette]=\"'primary'\"\n (click)=\"setColumnsVisibility()\">\n \u041F\u0440\u0438\u043C\u0435\u043D\u0438\u0442\u044C\n </button>\n </teta-toolbar>\n </ng-template>\n </teta-tab>\n</teta-tabs>\n", styles: [":host{display:flex;flex-grow:1;min-height:0;width:250px}\n"], components: [{ type: TabsComponent, selector: "teta-tabs", inputs: ["activeId", "destroyOnHide"], outputs: ["tabChange"] }, { type: TabComponent, selector: "teta-tab", inputs: ["id", "title", "disabled"] }, { type: IconComponent, selector: "teta-icon", inputs: ["name", "size", "palette", "class"] }, { type: FilterHostComponent, selector: "teta-filter-host", inputs: ["column", "state", "filterOptions"], outputs: ["filterChanged"] }, { type: ToolbarComponent, selector: "teta-toolbar", inputs: ["palette", "class"] }, { type: ButtonComponent, selector: "button[teta-button], teta-button", inputs: ["palette", "class", "view", "square"] }, { type: CheckboxComponent, selector: "teta-checkbox", inputs: ["class", "palette", "noLabel", "disabled", "value", "binary", "allowNull"] }, { type: TreeComponent, selector: "teta-tree", inputs: ["data", "class", "padding", "childNodeName", "openItems", "compareItems"], outputs: ["service", "openItemsChange"] }, { type: TreeItemToggleComponent, selector: "teta-tree-item-toggle", inputs: ["item"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: TabTitleDirective, selector: "[tetaTabTitle]" }, { type: TabContentDirective, selector: "[tetaTabContent]" }, { type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: TetaTemplateDirective, selector: "[tetaTemplate]", inputs: ["tetaTemplate"] }], pipes: { "async": i2.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
8198
+ HeadCellDropdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.1", type: HeadCellDropdownComponent, selector: "teta-head-cell-dropdown", inputs: { columns: "columns", column: "column", state: "state", dropDownOpen: "dropDownOpen" }, outputs: { dropDownOpenChange: "dropDownOpenChange", autosize: "autosize", autosizeAll: "autosizeAll" }, host: { properties: { "class.shadow-2": "this.shadow", "class.bg-background-50": "this.bg" } }, ngImport: i0, template: "<teta-tabs class=\"column_auto\">\n <teta-tab *ngIf=\"column.filterable\">\n <ng-template tetaTabTitle>\n <teta-icon [name]=\"'filter'\"></teta-icon>\n </ng-template>\n <ng-template tetaTabContent>\n <teta-filter-host [column]=\"column\" [state]=\"state\"\n *ngIf=\"dict | async as d\"\n [filterOptions]=\"d[column.name]\"></teta-filter-host>\n <teta-toolbar class=\"justify-content-between\">\n <button teta-button [palette]=\"'text'\" [view]=\"'ghost'\" (click)=\"clearFilter()\">\n \u041E\u0447\u0438\u0441\u0442\u0438\u0442\u044C\n </button>\n <button teta-button [palette]=\"'primary'\" (click)=\"applyFilter()\">\n <teta-icon [name]=\"'tick'\"></teta-icon>\n \u041F\u0440\u0438\u043C\u0435\u043D\u0438\u0442\u044C\n </button>\n </teta-toolbar>\n </ng-template>\n </teta-tab>\n <teta-tab *ngIf=\"column.headDropdownTemplate\">\n <ng-template tetaTabTitle>\n <teta-icon [name]=\"'measurement'\"></teta-icon>\n </ng-template>\n <ng-template tetaTabContent>\n <ng-container\n *ngTemplateOutlet=\"column.headDropdownTemplate; context: {$implicit: column, column: column}\"></ng-container>\n </ng-template>\n </teta-tab>\n <teta-tab>\n <ng-template tetaTabTitle>\n <teta-icon [name]=\"'menu'\"></teta-icon>\n </ng-template>\n <ng-template tetaTabContent>\n <div class=\"list column_auto\">\n <div class=\"list-item list-item_interactive\" (click)=\"pinColumn()\">\n <teta-icon [palette]=\"'text'\"\n [name]=\"column.locked ? 'unpin' : 'pin'\"\n class=\"margin-right-2\"></teta-icon>\n {{column.locked ? '\u041E\u0442\u043A\u0440\u0435\u043F\u0438\u0442\u044C' : '\u0417\u0430\u043A\u0440\u0435\u043F\u0438\u0442\u044C'}}\n </div>\n <div class=\"list-divider\"></div>\n <ng-container *ngIf=\"hasSortedColumns()\">\n <div class=\"list-item list-item_interactive\"\n *ngIf=\"sortParam\"\n (click)=\"clearSort()\">\n <teta-icon [palette]=\"'text'\"\n [name]=\"'pin'\" class=\"margin-right-2\"></teta-icon>\n \u0421\u0431\u0440\u043E\u0441\u0438\u0442\u044C \u0441\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u043A\u0443\n </div>\n <div class=\"list-item list-item_interactive\"\n (click)=\"clearAllSort()\">\n <teta-icon [palette]=\"'text'\"\n [name]=\"'pin'\"\n class=\"margin-right-2\"></teta-icon>\n \u0421\u0431\u0440\u043E\u0441\u0438\u0442\u044C \u0432\u0441\u0435 \u0441\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u043A\u0438\n </div>\n <div class=\"list-divider\"></div>\n </ng-container>\n <ng-container *ngIf=\"hasFilteredColumns()\">\n <div class=\"list-item list-item_interactive\"\n *ngIf=\"filtered\"\n (click)=\"clearFilter()\">\n <teta-icon [palette]=\"'text'\"\n [name]=\"'pin'\"\n class=\"margin-right-2\"></teta-icon>\n \u041E\u0447\u0438\u0441\u0442\u0438\u0442\u044C \u0444\u0438\u043B\u044C\u0442\u0440\n </div>\n <div class=\"list-item list-item_interactive\"\n (click)=\"clearAllFilters()\">\n <teta-icon [palette]=\"'text'\"\n [name]=\"'pin'\"\n class=\"margin-right-2\"></teta-icon>\n \u041E\u0447\u0438\u0441\u0442\u0438\u0442\u044C \u0432\u0441\u0435 \u0444\u0438\u043B\u044C\u0442\u0440\u044B\n </div>\n <div class=\"list-divider\"></div>\n </ng-container>\n <div class=\"list-item list-item_interactive\" (click)=\"autosize.emit()\">\n <teta-icon [palette]=\"'text'\"\n [name]=\"'autoSize'\"\n class=\"margin-right-2\"></teta-icon>\n \u0410\u0432\u0442\u043E\u0440\u0430\u0437\u043C\u0435\u0440 \u043A\u043E\u043B\u043E\u043D\u043A\u0438\n </div>\n <div class=\"list-item list-item_interactive\" (click)=\"autosizeAll.emit()\">\n <teta-icon [palette]=\"'text'\"\n [name]=\"'autoSizeAll'\"\n class=\"margin-right-2\"></teta-icon>\n \u0410\u0432\u0442\u043E\u0440\u0430\u0437\u043C\u0435\u0440 \u0432\u0441\u0435\u0445 \u043A\u043E\u043B\u043E\u043D\u043E\u043A\n </div>\n <div class=\"list-divider\"></div>\n <div class=\"list-item list-item_interactive\" (click)=\"restoreDefaultColumns()\">\n <teta-icon [palette]=\"'text'\"\n [name]=\"'undo'\"\n class=\"margin-right-2\"></teta-icon>\n \u041E\u0442\u043C\u0435\u043D\u0438\u0442\u044C \u0432\u0441\u0435 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F\n </div>\n </div>\n </ng-template>\n </teta-tab>\n <teta-tab>\n <ng-template tetaTabTitle>\n <teta-icon [name]=\"'eye'\"></teta-icon>\n </ng-template>\n <ng-template tetaTabContent>\n <div class=\"list-item padding-left-6 padding-top-2\" [class.padding-left-9]=\"childMode\">\n <teta-checkbox [binary]=\"true\"\n [allowNull]=\"true\"\n [ngModel]=\"allColumnsVisible()\"\n (ngModelChange)=\"setAllColumns($event)\">\n \u0412\u0441\u0435\n </teta-checkbox>\n </div>\n <div class=\"list-divider\"></div>\n <div class=\"padding-v-2 column column_auto scrollable\">\n <teta-tree [data]=\"columns\"\n [openItems]=\"openItems\"\n (openItemsChange)=\"openItems = $event\"\n [childNodeName]=\"'columns'\"\n [compareItems]=\"compareItems\">\n <ng-template tetaTemplate let-item>\n <div class=\"tree__item\">\n <teta-tree-item-toggle [item]=\"item\" *ngIf=\"item.columns?.length > 0\"></teta-tree-item-toggle>\n <teta-checkbox\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 </div>\n <teta-toolbar class=\"justify-content-end\">\n <button teta-button\n [disabled]=\"allColumnsVisible() === false\"\n [palette]=\"'primary'\"\n (click)=\"setColumnsVisibility()\">\n \u041F\u0440\u0438\u043C\u0435\u043D\u0438\u0442\u044C\n </button>\n </teta-toolbar>\n </ng-template>\n </teta-tab>\n</teta-tabs>\n", styles: [":host{display:flex;flex-grow:1;min-height:0;width:250px}\n"], components: [{ type: TabsComponent, selector: "teta-tabs", inputs: ["activeId", "destroyOnHide"], outputs: ["tabChange"] }, { type: TabComponent, selector: "teta-tab", inputs: ["id", "title", "disabled"] }, { type: IconComponent, selector: "teta-icon", inputs: ["name", "size", "palette", "class"] }, { type: FilterHostComponent, selector: "teta-filter-host", inputs: ["column", "state", "filterOptions"], outputs: ["filterChanged"] }, { type: ToolbarComponent, selector: "teta-toolbar", inputs: ["palette", "class"] }, { type: ButtonComponent, selector: "button[teta-button], teta-button", inputs: ["palette", "class", "view", "square"] }, { type: CheckboxComponent, selector: "teta-checkbox", inputs: ["class", "palette", "noLabel", "disabled", "value", "binary", "allowNull"] }, { type: TreeComponent, selector: "teta-tree", inputs: ["data", "class", "padding", "childNodeName", "openItems", "compareItems"], outputs: ["service", "openItemsChange"] }, { type: TreeItemToggleComponent, selector: "teta-tree-item-toggle", inputs: ["item"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: TabTitleDirective, selector: "[tetaTabTitle]" }, { type: TabContentDirective, selector: "[tetaTabContent]" }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: TetaTemplateDirective, selector: "[tetaTemplate]", inputs: ["tetaTemplate"] }], pipes: { "async": i2.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
8185
8199
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: HeadCellDropdownComponent, decorators: [{
8186
8200
  type: Component,
8187
- args: [{ selector: 'teta-head-cell-dropdown', changeDetection: ChangeDetectionStrategy.OnPush, template: "<teta-tabs class=\"column_auto\">\n <teta-tab *ngIf=\"column.filterable\">\n <ng-template tetaTabTitle>\n <teta-icon [name]=\"'filter'\"></teta-icon>\n </ng-template>\n <ng-template tetaTabContent>\n <teta-filter-host [column]=\"column\" [state]=\"state\"\n *ngIf=\"dict | async as d\"\n [filterOptions]=\"d[column.name]\"></teta-filter-host>\n <teta-toolbar class=\"justify-content-between\">\n <button teta-button [palette]=\"'text'\" [view]=\"'ghost'\" (click)=\"clearFilter()\">\n \u041E\u0447\u0438\u0441\u0442\u0438\u0442\u044C\n </button>\n <button teta-button [palette]=\"'primary'\" (click)=\"applyFilter()\">\n <teta-icon [name]=\"'tick'\"></teta-icon>\n \u041F\u0440\u0438\u043C\u0435\u043D\u0438\u0442\u044C\n </button>\n </teta-toolbar>\n </ng-template>\n </teta-tab>\n <teta-tab>\n <ng-template tetaTabTitle>\n <teta-icon [name]=\"'menu'\"></teta-icon>\n </ng-template>\n <ng-template tetaTabContent>\n <div class=\"list column_auto\">\n <div class=\"list-item list-item_interactive\" (click)=\"pinColumn()\">\n <teta-icon [palette]=\"'text'\"\n [name]=\"column.locked ? 'unpin' : 'pin'\"\n class=\"margin-right-2\"></teta-icon>\n {{column.locked ? '\u041E\u0442\u043A\u0440\u0435\u043F\u0438\u0442\u044C' : '\u0417\u0430\u043A\u0440\u0435\u043F\u0438\u0442\u044C'}}\n </div>\n <div class=\"list-divider\"></div>\n <ng-container *ngIf=\"hasSortedColumns()\">\n <div class=\"list-item list-item_interactive\"\n *ngIf=\"sortParam\"\n (click)=\"clearSort()\">\n <teta-icon [palette]=\"'text'\"\n [name]=\"'pin'\" class=\"margin-right-2\"></teta-icon>\n \u0421\u0431\u0440\u043E\u0441\u0438\u0442\u044C \u0441\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u043A\u0443\n </div>\n <div class=\"list-item list-item_interactive\"\n (click)=\"clearAllSort()\">\n <teta-icon [palette]=\"'text'\"\n [name]=\"'pin'\"\n class=\"margin-right-2\"></teta-icon>\n \u0421\u0431\u0440\u043E\u0441\u0438\u0442\u044C \u0432\u0441\u0435 \u0441\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u043A\u0438\n </div>\n <div class=\"list-divider\"></div>\n </ng-container>\n <ng-container *ngIf=\"hasFilteredColumns()\">\n <div class=\"list-item list-item_interactive\"\n *ngIf=\"filtered\"\n (click)=\"clearFilter()\">\n <teta-icon [palette]=\"'text'\"\n [name]=\"'pin'\"\n class=\"margin-right-2\"></teta-icon>\n \u041E\u0447\u0438\u0441\u0442\u0438\u0442\u044C \u0444\u0438\u043B\u044C\u0442\u0440\n </div>\n <div class=\"list-item list-item_interactive\"\n (click)=\"clearAllFilters()\">\n <teta-icon [palette]=\"'text'\"\n [name]=\"'pin'\"\n class=\"margin-right-2\"></teta-icon>\n \u041E\u0447\u0438\u0441\u0442\u0438\u0442\u044C \u0432\u0441\u0435 \u0444\u0438\u043B\u044C\u0442\u0440\u044B\n </div>\n <div class=\"list-divider\"></div>\n </ng-container>\n <div class=\"list-item list-item_interactive\" (click)=\"autosize.emit()\">\n <teta-icon [palette]=\"'text'\"\n [name]=\"'autoSize'\"\n class=\"margin-right-2\"></teta-icon>\n \u0410\u0432\u0442\u043E\u0440\u0430\u0437\u043C\u0435\u0440 \u043A\u043E\u043B\u043E\u043D\u043A\u0438\n </div>\n <div class=\"list-item list-item_interactive\" (click)=\"autosizeAll.emit()\">\n <teta-icon [palette]=\"'text'\"\n [name]=\"'autoSizeAll'\"\n class=\"margin-right-2\"></teta-icon>\n \u0410\u0432\u0442\u043E\u0440\u0430\u0437\u043C\u0435\u0440 \u0432\u0441\u0435\u0445 \u043A\u043E\u043B\u043E\u043D\u043E\u043A\n </div>\n <div class=\"list-divider\"></div>\n <div class=\"list-item list-item_interactive\" (click)=\"restoreDefaultColumns()\">\n <teta-icon [palette]=\"'text'\"\n [name]=\"'undo'\"\n class=\"margin-right-2\"></teta-icon>\n \u041E\u0442\u043C\u0435\u043D\u0438\u0442\u044C \u0432\u0441\u0435 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F\n </div>\n </div>\n </ng-template>\n </teta-tab>\n <teta-tab>\n <ng-template tetaTabTitle>\n <teta-icon [name]=\"'eye'\"></teta-icon>\n </ng-template>\n <ng-template tetaTabContent>\n <div class=\"list-item padding-left-6 padding-top-2\" [class.padding-left-9]=\"childMode\">\n <teta-checkbox [binary]=\"true\"\n [allowNull]=\"true\"\n [ngModel]=\"allColumnsVisible()\"\n (ngModelChange)=\"setAllColumns($event)\">\n \u0412\u0441\u0435\n </teta-checkbox>\n </div>\n <div class=\"list-divider\"></div>\n <div class=\"padding-v-2 column column_auto scrollable\">\n <teta-tree [data]=\"columns\"\n [openItems]=\"openItems\"\n (openItemsChange)=\"openItems = $event\"\n [childNodeName]=\"'columns'\"\n [compareItems]=\"compareItems\">\n <ng-template tetaTemplate let-item>\n <div class=\"tree__item\">\n <teta-tree-item-toggle [item]=\"item\" *ngIf=\"item.columns?.length > 0\"></teta-tree-item-toggle>\n <teta-checkbox\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 </div>\n <teta-toolbar class=\"justify-content-end\">\n <button teta-button\n [disabled]=\"allColumnsVisible() === false\"\n [palette]=\"'primary'\"\n (click)=\"setColumnsVisibility()\">\n \u041F\u0440\u0438\u043C\u0435\u043D\u0438\u0442\u044C\n </button>\n </teta-toolbar>\n </ng-template>\n </teta-tab>\n</teta-tabs>\n", styles: [":host{display:flex;flex-grow:1;min-height:0;width:250px}\n"] }]
8201
+ args: [{ selector: 'teta-head-cell-dropdown', changeDetection: ChangeDetectionStrategy.OnPush, template: "<teta-tabs class=\"column_auto\">\n <teta-tab *ngIf=\"column.filterable\">\n <ng-template tetaTabTitle>\n <teta-icon [name]=\"'filter'\"></teta-icon>\n </ng-template>\n <ng-template tetaTabContent>\n <teta-filter-host [column]=\"column\" [state]=\"state\"\n *ngIf=\"dict | async as d\"\n [filterOptions]=\"d[column.name]\"></teta-filter-host>\n <teta-toolbar class=\"justify-content-between\">\n <button teta-button [palette]=\"'text'\" [view]=\"'ghost'\" (click)=\"clearFilter()\">\n \u041E\u0447\u0438\u0441\u0442\u0438\u0442\u044C\n </button>\n <button teta-button [palette]=\"'primary'\" (click)=\"applyFilter()\">\n <teta-icon [name]=\"'tick'\"></teta-icon>\n \u041F\u0440\u0438\u043C\u0435\u043D\u0438\u0442\u044C\n </button>\n </teta-toolbar>\n </ng-template>\n </teta-tab>\n <teta-tab *ngIf=\"column.headDropdownTemplate\">\n <ng-template tetaTabTitle>\n <teta-icon [name]=\"'measurement'\"></teta-icon>\n </ng-template>\n <ng-template tetaTabContent>\n <ng-container\n *ngTemplateOutlet=\"column.headDropdownTemplate; context: {$implicit: column, column: column}\"></ng-container>\n </ng-template>\n </teta-tab>\n <teta-tab>\n <ng-template tetaTabTitle>\n <teta-icon [name]=\"'menu'\"></teta-icon>\n </ng-template>\n <ng-template tetaTabContent>\n <div class=\"list column_auto\">\n <div class=\"list-item list-item_interactive\" (click)=\"pinColumn()\">\n <teta-icon [palette]=\"'text'\"\n [name]=\"column.locked ? 'unpin' : 'pin'\"\n class=\"margin-right-2\"></teta-icon>\n {{column.locked ? '\u041E\u0442\u043A\u0440\u0435\u043F\u0438\u0442\u044C' : '\u0417\u0430\u043A\u0440\u0435\u043F\u0438\u0442\u044C'}}\n </div>\n <div class=\"list-divider\"></div>\n <ng-container *ngIf=\"hasSortedColumns()\">\n <div class=\"list-item list-item_interactive\"\n *ngIf=\"sortParam\"\n (click)=\"clearSort()\">\n <teta-icon [palette]=\"'text'\"\n [name]=\"'pin'\" class=\"margin-right-2\"></teta-icon>\n \u0421\u0431\u0440\u043E\u0441\u0438\u0442\u044C \u0441\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u043A\u0443\n </div>\n <div class=\"list-item list-item_interactive\"\n (click)=\"clearAllSort()\">\n <teta-icon [palette]=\"'text'\"\n [name]=\"'pin'\"\n class=\"margin-right-2\"></teta-icon>\n \u0421\u0431\u0440\u043E\u0441\u0438\u0442\u044C \u0432\u0441\u0435 \u0441\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u043A\u0438\n </div>\n <div class=\"list-divider\"></div>\n </ng-container>\n <ng-container *ngIf=\"hasFilteredColumns()\">\n <div class=\"list-item list-item_interactive\"\n *ngIf=\"filtered\"\n (click)=\"clearFilter()\">\n <teta-icon [palette]=\"'text'\"\n [name]=\"'pin'\"\n class=\"margin-right-2\"></teta-icon>\n \u041E\u0447\u0438\u0441\u0442\u0438\u0442\u044C \u0444\u0438\u043B\u044C\u0442\u0440\n </div>\n <div class=\"list-item list-item_interactive\"\n (click)=\"clearAllFilters()\">\n <teta-icon [palette]=\"'text'\"\n [name]=\"'pin'\"\n class=\"margin-right-2\"></teta-icon>\n \u041E\u0447\u0438\u0441\u0442\u0438\u0442\u044C \u0432\u0441\u0435 \u0444\u0438\u043B\u044C\u0442\u0440\u044B\n </div>\n <div class=\"list-divider\"></div>\n </ng-container>\n <div class=\"list-item list-item_interactive\" (click)=\"autosize.emit()\">\n <teta-icon [palette]=\"'text'\"\n [name]=\"'autoSize'\"\n class=\"margin-right-2\"></teta-icon>\n \u0410\u0432\u0442\u043E\u0440\u0430\u0437\u043C\u0435\u0440 \u043A\u043E\u043B\u043E\u043D\u043A\u0438\n </div>\n <div class=\"list-item list-item_interactive\" (click)=\"autosizeAll.emit()\">\n <teta-icon [palette]=\"'text'\"\n [name]=\"'autoSizeAll'\"\n class=\"margin-right-2\"></teta-icon>\n \u0410\u0432\u0442\u043E\u0440\u0430\u0437\u043C\u0435\u0440 \u0432\u0441\u0435\u0445 \u043A\u043E\u043B\u043E\u043D\u043E\u043A\n </div>\n <div class=\"list-divider\"></div>\n <div class=\"list-item list-item_interactive\" (click)=\"restoreDefaultColumns()\">\n <teta-icon [palette]=\"'text'\"\n [name]=\"'undo'\"\n class=\"margin-right-2\"></teta-icon>\n \u041E\u0442\u043C\u0435\u043D\u0438\u0442\u044C \u0432\u0441\u0435 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F\n </div>\n </div>\n </ng-template>\n </teta-tab>\n <teta-tab>\n <ng-template tetaTabTitle>\n <teta-icon [name]=\"'eye'\"></teta-icon>\n </ng-template>\n <ng-template tetaTabContent>\n <div class=\"list-item padding-left-6 padding-top-2\" [class.padding-left-9]=\"childMode\">\n <teta-checkbox [binary]=\"true\"\n [allowNull]=\"true\"\n [ngModel]=\"allColumnsVisible()\"\n (ngModelChange)=\"setAllColumns($event)\">\n \u0412\u0441\u0435\n </teta-checkbox>\n </div>\n <div class=\"list-divider\"></div>\n <div class=\"padding-v-2 column column_auto scrollable\">\n <teta-tree [data]=\"columns\"\n [openItems]=\"openItems\"\n (openItemsChange)=\"openItems = $event\"\n [childNodeName]=\"'columns'\"\n [compareItems]=\"compareItems\">\n <ng-template tetaTemplate let-item>\n <div class=\"tree__item\">\n <teta-tree-item-toggle [item]=\"item\" *ngIf=\"item.columns?.length > 0\"></teta-tree-item-toggle>\n <teta-checkbox\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 </div>\n <teta-toolbar class=\"justify-content-end\">\n <button teta-button\n [disabled]=\"allColumnsVisible() === false\"\n [palette]=\"'primary'\"\n (click)=\"setColumnsVisibility()\">\n \u041F\u0440\u0438\u043C\u0435\u043D\u0438\u0442\u044C\n </button>\n </teta-toolbar>\n </ng-template>\n </teta-tab>\n</teta-tabs>\n", styles: [":host{display:flex;flex-grow:1;min-height:0;width:250px}\n"] }]
8188
8202
  }], ctorParameters: function () { return [{ type: TableService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { columns: [{
8189
8203
  type: Input
8190
8204
  }], column: [{
@@ -8591,7 +8605,7 @@ class CellComponentBase {
8591
8605
  }
8592
8606
  get edit() {
8593
8607
  return (this._edit &&
8594
- this.svc.boolOrFuncCallback(this.svc.cellEditable)({
8608
+ this.svc.boolOrFuncCallback(this.column.editable)({
8595
8609
  column: this.column,
8596
8610
  row: this.row,
8597
8611
  }));
@@ -8610,14 +8624,16 @@ class CellComponentBase {
8610
8624
  }
8611
8625
  init() {
8612
8626
  this.svc.editRowStart
8613
- .pipe(takeWhile((_) => this._alive), filter((_) => this.column.editable))
8627
+ .pipe(takeWhile((_) => this._alive))
8614
8628
  .subscribe((cell) => {
8615
8629
  if (this.row === cell?.row &&
8616
- !this._edit &&
8617
- this.svc.boolOrFuncCallback(this.svc.cellEditable)({
8618
- column: this.column,
8619
- row: this.row,
8620
- })) {
8630
+ !this._edit
8631
+ // &&
8632
+ // this.svc.boolOrFuncCallback(this.svc.cellEditable)({
8633
+ // column: this.column,
8634
+ // row: this.row,
8635
+ // })
8636
+ ) {
8621
8637
  this.start(cell, 'row');
8622
8638
  }
8623
8639
  if (this.row !== cell?.row && this._edit) {
@@ -8625,7 +8641,7 @@ class CellComponentBase {
8625
8641
  }
8626
8642
  });
8627
8643
  this.svc.editCellStart
8628
- .pipe(takeWhile((_) => this._alive), filter((_) => this.column.editable))
8644
+ .pipe(takeWhile((_) => this._alive))
8629
8645
  .subscribe((cell) => {
8630
8646
  if (this.row === cell.row &&
8631
8647
  this.column.name === cell.column.name &&
@@ -8640,12 +8656,19 @@ class CellComponentBase {
8640
8656
  this.svc.valueSet
8641
8657
  .pipe(takeWhile((_) => this._alive))
8642
8658
  .subscribe((cellValue) => {
8643
- if (this.row === cellValue.cell.row &&
8644
- this.column.name === cellValue.cell.column.name) {
8659
+ if (this.row === cellValue.cell.row
8660
+ && this.column.name === cellValue.cell.column.name) {
8645
8661
  this.row.data[this.column.name] = cellValue.value;
8646
8662
  this.cdr.detectChanges();
8647
8663
  }
8648
8664
  });
8665
+ this.svc.valueChanged
8666
+ .pipe(takeWhile((_) => this._alive))
8667
+ .subscribe((cellValue) => {
8668
+ if (this.row === cellValue.row) {
8669
+ this.cdr.detectChanges();
8670
+ }
8671
+ });
8649
8672
  }
8650
8673
  start(initiator, type) {
8651
8674
  this._edit = true;
@@ -8686,6 +8709,7 @@ class NumericCellComponent extends CellComponentBase {
8686
8709
  if (initiator?.column.name === this.column.name) {
8687
8710
  setTimeout(() => {
8688
8711
  this.input?.nativeElement.focus();
8712
+ this.input?.nativeElement.select();
8689
8713
  this.cdr.markForCheck();
8690
8714
  }, 0);
8691
8715
  }
@@ -8822,7 +8846,8 @@ class StringCellComponent extends CellComponentBase {
8822
8846
  if (initiator?.column.name === this.column.name) {
8823
8847
  this.cdr.markForCheck();
8824
8848
  setTimeout(() => {
8825
- this.input.nativeElement.focus();
8849
+ this.input.nativeElement?.focus();
8850
+ this.input.nativeElement?.select();
8826
8851
  }, 0);
8827
8852
  }
8828
8853
  }
@@ -9382,14 +9407,13 @@ class TableComponent {
9382
9407
  if (changes.hasOwnProperty('rowEditable')) {
9383
9408
  this._svc.rowEditable = this.rowEditable;
9384
9409
  }
9385
- if (changes.hasOwnProperty('cellEditable')) {
9386
- this._svc.cellEditable = this.cellEditable;
9387
- }
9388
9410
  if (changes.hasOwnProperty('cookieName')) {
9389
9411
  this._svc.setCookieName(this.cookieName);
9390
9412
  }
9391
9413
  if (changes.hasOwnProperty('columns')) {
9392
- this._svc.setColumns(this.columns);
9414
+ if (this.columns !== null && this.columns !== undefined) {
9415
+ this._svc.setColumns(this.columns);
9416
+ }
9393
9417
  }
9394
9418
  if (changes.hasOwnProperty('data')) {
9395
9419
  this._svc.setData(this.data);
@@ -9478,7 +9502,7 @@ class TableComponent {
9478
9502
  }
9479
9503
  }
9480
9504
  TableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: TableComponent, deps: [{ token: TableService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
9481
- TableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.1", type: TableComponent, selector: "teta-table", inputs: { data: "data", columns: "columns", dict: "dict", state: "state", rowHeight: "rowHeight", cookieName: "cookieName", virtual: "virtual", detailComponent: "detailComponent", activeRow: "activeRow", selectedRows: "selectedRows", selectType: "selectType", aggregate: "aggregate", grouping: "grouping", groupRowComponent: "groupRowComponent", openLevels: "openLevels", tree: "tree", trackBy: "trackBy", editType: "editType", editEvent: "editEvent", rowEditable: "rowEditable", cellEditable: "cellEditable", rowClass: "rowClass", scrollToIndex: "scrollToIndex", contextMenuConfig: "contextMenuConfig", showHeadCellMenu: "showHeadCellMenu" }, outputs: { stateChange: "stateChange", bodyLeft: "bodyLeft", activeRowChange: "activeRowChange", selectedRowsChange: "selectedRowsChange", rowLeft: "rowLeft", rowEditStart: "rowEditStart", rowEditEnd: "rowEditEnd", cellClick: "cellClick", cellDoubleClick: "cellDoubleClick", cellFocus: "cellFocus", cellEditStart: "cellEditStart", cellEditEnd: "cellEditEnd", valueChange: "valueChange", cellKeyUp: "cellKeyUp", pasteRows: "pasteRows", addRow: "addRow", deleteRows: "deleteRows", tableService: "tableService" }, host: { listeners: { "document:click": "handleClickOutsideAnyRow($event)", "focusin": "focusIn($event)", "dblclick": "dblclick($event)", "window:keyup": "keyup($event)", "mousedown": "mousedown($event)", "contextmenu": "contextMenu($event)" }, properties: { "class.table": "this.tableClass" } }, providers: [TableService], viewQueries: [{ propertyName: "menu", first: true, predicate: ["contextMenu"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"column column_auto\">\n <teta-table-head [selectType]=\"selectType\" [showHeadCellMenu]=\"showHeadCellMenu\"></teta-table-head>\n <teta-table-body\n [aggregate]=\"aggregate\"\n [virtual]=\"virtual\"\n [activeRow]=\"activeRow\"\n [additionalComponent]=\"detailComponent\"\n [grouping]=\"grouping\"\n [groupRowComponent]=\"groupRowComponent\"\n [openLevels]=\"openLevels\"\n [selectType]=\"selectType\"\n [rowHeight]=\"rowHeight\"\n [rowClass]=\"rowClass\"\n [tree]=\"tree\"></teta-table-body>\n</div>\n\n<div #contextMenu\n class=\"list shadow-1\"\n style=\"position: fixed; z-index: 2;\"\n [style.visibility]=\"showContextMenu ? 'visible ' : 'hidden'\"\n [tetaClickOutside]=\"showContextMenu\"\n (clickOutside)=\"showContextMenu = false\">\n <ng-container *ngIf=\"contextMenuConfig?.add\">\n <div class=\"list-item list-item_interactive\"\n (click)=\"rowAdd()\">\n <teta-icon [name]=\"'add'\" [palette]=\"'text'\"></teta-icon>\n \u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0441\u0442\u0440\u043E\u043A\u0443\n </div>\n <div class=\"list-divider\"></div>\n </ng-container>\n <ng-container *ngIf=\"contextMenuConfig?.copy\">\n <div class=\"list-item list-item_interactive\"\n (click)=\"copy(selectedRowsList)\"\n *ngIf=\"selectedRowsList?.length > 0\">\n <teta-icon [name]=\"'copySelected'\" [palette]=\"'text'\"></teta-icon>\n \u041A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u043D\u044B\u0435 \u0441\u0442\u0440\u043E\u043A\u0438\n </div>\n <div class=\"list-item list-item_interactive\"\n (click)=\"copy([contextMenuTarget.row])\"\n *ngIf=\"contextMenuTarget\">\n <teta-icon [name]=\"'copy'\" [palette]=\"'text'\"></teta-icon>\n \u041A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0441\u0442\u0440\u043E\u043A\u0443\n </div>\n <div class=\"list-divider\"></div>\n </ng-container>\n <ng-container *ngIf=\"contextMenuConfig?.paste\">\n <div class=\"list-item list-item_interactive\"\n (click)=\"pasteData()\">\n <teta-icon [name]=\"'paste'\" [palette]=\"'text'\"></teta-icon>\n \u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044C\n </div>\n <div class=\"list-divider\"></div>\n </ng-container>\n <ng-container *ngIf=\"contextMenuConfig?.delete\">\n <div class=\"list-item list-item_interactive\"\n (click)=\"delete(selectedRowsList)\"\n *ngIf=\"selectedRowsList?.length > 0\">\n <teta-icon [name]=\"'deleteSelected'\" [palette]=\"'text'\"></teta-icon>\n \u0423\u0434\u0430\u043B\u0438\u0442\u044C \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u043D\u044B\u0435 \u0441\u0442\u0440\u043E\u043A\u0438\n </div>\n <div class=\"list-item list-item_interactive\"\n (click)=\"delete([contextMenuTarget.row])\"\n *ngIf=\"contextMenuTarget\">\n <teta-icon [name]=\"'delete'\" [palette]=\"'text'\"></teta-icon>\n \u0423\u0434\u0430\u043B\u0438\u0442\u044C \u0441\u0442\u0440\u043E\u043A\u0443\n </div>\n </ng-container>\n</div>\n", styles: [""], components: [{ type: TableHeadComponent, selector: "teta-table-head", inputs: ["selectType", "showHeadCellMenu"] }, { type: TableBodyComponent, selector: "teta-table-body", inputs: ["virtual", "activeRow", "rowHeight", "additionalComponent", "tree", "aggregate", "grouping", "groupRowComponent", "openLevels", "selectType", "rowClass"] }, { type: IconComponent, selector: "teta-icon", inputs: ["name", "size", "palette", "class"] }], directives: [{ type: ClickOutsideDirective, selector: "[tetaClickOutside]", inputs: ["rightClick", "tetaClickOutside"], outputs: ["clickOutside"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
9505
+ TableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.1", type: TableComponent, selector: "teta-table", inputs: { data: "data", columns: "columns", dict: "dict", state: "state", rowHeight: "rowHeight", cookieName: "cookieName", virtual: "virtual", detailComponent: "detailComponent", activeRow: "activeRow", selectedRows: "selectedRows", selectType: "selectType", aggregate: "aggregate", grouping: "grouping", groupRowComponent: "groupRowComponent", openLevels: "openLevels", tree: "tree", trackBy: "trackBy", editType: "editType", editEvent: "editEvent", rowEditable: "rowEditable", rowClass: "rowClass", scrollToIndex: "scrollToIndex", contextMenuConfig: "contextMenuConfig", showHeadCellMenu: "showHeadCellMenu" }, outputs: { stateChange: "stateChange", bodyLeft: "bodyLeft", activeRowChange: "activeRowChange", selectedRowsChange: "selectedRowsChange", rowLeft: "rowLeft", rowEditStart: "rowEditStart", rowEditEnd: "rowEditEnd", cellClick: "cellClick", cellDoubleClick: "cellDoubleClick", cellFocus: "cellFocus", cellEditStart: "cellEditStart", cellEditEnd: "cellEditEnd", valueChange: "valueChange", cellKeyUp: "cellKeyUp", pasteRows: "pasteRows", addRow: "addRow", deleteRows: "deleteRows", tableService: "tableService" }, host: { listeners: { "document:click": "handleClickOutsideAnyRow($event)", "focusin": "focusIn($event)", "dblclick": "dblclick($event)", "window:keyup": "keyup($event)", "mousedown": "mousedown($event)", "contextmenu": "contextMenu($event)" }, properties: { "class.table": "this.tableClass" } }, providers: [TableService], viewQueries: [{ propertyName: "menu", first: true, predicate: ["contextMenu"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"column column_auto\">\n <teta-table-head [selectType]=\"selectType\" [showHeadCellMenu]=\"showHeadCellMenu\"></teta-table-head>\n <teta-table-body\n [aggregate]=\"aggregate\"\n [virtual]=\"virtual\"\n [activeRow]=\"activeRow\"\n [additionalComponent]=\"detailComponent\"\n [grouping]=\"grouping\"\n [groupRowComponent]=\"groupRowComponent\"\n [openLevels]=\"openLevels\"\n [selectType]=\"selectType\"\n [rowHeight]=\"rowHeight\"\n [rowClass]=\"rowClass\"\n [tree]=\"tree\"></teta-table-body>\n</div>\n\n<div #contextMenu\n class=\"list shadow-1\"\n style=\"position: fixed; z-index: 2;\"\n [style.visibility]=\"showContextMenu ? 'visible ' : 'hidden'\"\n [tetaClickOutside]=\"showContextMenu\"\n (clickOutside)=\"showContextMenu = false\">\n <ng-container *ngIf=\"contextMenuConfig?.add\">\n <div class=\"list-item list-item_interactive\"\n (click)=\"rowAdd()\">\n <teta-icon [name]=\"'add'\" [palette]=\"'text'\"></teta-icon>\n \u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0441\u0442\u0440\u043E\u043A\u0443\n </div>\n <div class=\"list-divider\"></div>\n </ng-container>\n <ng-container *ngIf=\"contextMenuConfig?.copy\">\n <div class=\"list-item list-item_interactive\"\n (click)=\"copy(selectedRowsList)\"\n *ngIf=\"selectedRowsList?.length > 0\">\n <teta-icon [name]=\"'copySelected'\" [palette]=\"'text'\"></teta-icon>\n \u041A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u043D\u044B\u0435 \u0441\u0442\u0440\u043E\u043A\u0438\n </div>\n <div class=\"list-item list-item_interactive\"\n (click)=\"copy([contextMenuTarget.row])\"\n *ngIf=\"contextMenuTarget\">\n <teta-icon [name]=\"'copy'\" [palette]=\"'text'\"></teta-icon>\n \u041A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0441\u0442\u0440\u043E\u043A\u0443\n </div>\n <div class=\"list-divider\"></div>\n </ng-container>\n <ng-container *ngIf=\"contextMenuConfig?.paste\">\n <div class=\"list-item list-item_interactive\"\n (click)=\"pasteData()\">\n <teta-icon [name]=\"'paste'\" [palette]=\"'text'\"></teta-icon>\n \u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044C\n </div>\n <div class=\"list-divider\"></div>\n </ng-container>\n <ng-container *ngIf=\"contextMenuConfig?.delete\">\n <div class=\"list-item list-item_interactive\"\n (click)=\"delete(selectedRowsList)\"\n *ngIf=\"selectedRowsList?.length > 0\">\n <teta-icon [name]=\"'deleteSelected'\" [palette]=\"'text'\"></teta-icon>\n \u0423\u0434\u0430\u043B\u0438\u0442\u044C \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u043D\u044B\u0435 \u0441\u0442\u0440\u043E\u043A\u0438\n </div>\n <div class=\"list-item list-item_interactive\"\n (click)=\"delete([contextMenuTarget.row])\"\n *ngIf=\"contextMenuTarget\">\n <teta-icon [name]=\"'delete'\" [palette]=\"'text'\"></teta-icon>\n \u0423\u0434\u0430\u043B\u0438\u0442\u044C \u0441\u0442\u0440\u043E\u043A\u0443\n </div>\n </ng-container>\n</div>\n", styles: [""], components: [{ type: TableHeadComponent, selector: "teta-table-head", inputs: ["selectType", "showHeadCellMenu"] }, { type: TableBodyComponent, selector: "teta-table-body", inputs: ["virtual", "activeRow", "rowHeight", "additionalComponent", "tree", "aggregate", "grouping", "groupRowComponent", "openLevels", "selectType", "rowClass"] }, { type: IconComponent, selector: "teta-icon", inputs: ["name", "size", "palette", "class"] }], directives: [{ type: ClickOutsideDirective, selector: "[tetaClickOutside]", inputs: ["rightClick", "tetaClickOutside"], outputs: ["clickOutside"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
9482
9506
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: TableComponent, decorators: [{
9483
9507
  type: Component,
9484
9508
  args: [{ selector: 'teta-table', changeDetection: ChangeDetectionStrategy.OnPush, providers: [TableService], template: "<div class=\"column column_auto\">\n <teta-table-head [selectType]=\"selectType\" [showHeadCellMenu]=\"showHeadCellMenu\"></teta-table-head>\n <teta-table-body\n [aggregate]=\"aggregate\"\n [virtual]=\"virtual\"\n [activeRow]=\"activeRow\"\n [additionalComponent]=\"detailComponent\"\n [grouping]=\"grouping\"\n [groupRowComponent]=\"groupRowComponent\"\n [openLevels]=\"openLevels\"\n [selectType]=\"selectType\"\n [rowHeight]=\"rowHeight\"\n [rowClass]=\"rowClass\"\n [tree]=\"tree\"></teta-table-body>\n</div>\n\n<div #contextMenu\n class=\"list shadow-1\"\n style=\"position: fixed; z-index: 2;\"\n [style.visibility]=\"showContextMenu ? 'visible ' : 'hidden'\"\n [tetaClickOutside]=\"showContextMenu\"\n (clickOutside)=\"showContextMenu = false\">\n <ng-container *ngIf=\"contextMenuConfig?.add\">\n <div class=\"list-item list-item_interactive\"\n (click)=\"rowAdd()\">\n <teta-icon [name]=\"'add'\" [palette]=\"'text'\"></teta-icon>\n \u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0441\u0442\u0440\u043E\u043A\u0443\n </div>\n <div class=\"list-divider\"></div>\n </ng-container>\n <ng-container *ngIf=\"contextMenuConfig?.copy\">\n <div class=\"list-item list-item_interactive\"\n (click)=\"copy(selectedRowsList)\"\n *ngIf=\"selectedRowsList?.length > 0\">\n <teta-icon [name]=\"'copySelected'\" [palette]=\"'text'\"></teta-icon>\n \u041A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u043D\u044B\u0435 \u0441\u0442\u0440\u043E\u043A\u0438\n </div>\n <div class=\"list-item list-item_interactive\"\n (click)=\"copy([contextMenuTarget.row])\"\n *ngIf=\"contextMenuTarget\">\n <teta-icon [name]=\"'copy'\" [palette]=\"'text'\"></teta-icon>\n \u041A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0441\u0442\u0440\u043E\u043A\u0443\n </div>\n <div class=\"list-divider\"></div>\n </ng-container>\n <ng-container *ngIf=\"contextMenuConfig?.paste\">\n <div class=\"list-item list-item_interactive\"\n (click)=\"pasteData()\">\n <teta-icon [name]=\"'paste'\" [palette]=\"'text'\"></teta-icon>\n \u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044C\n </div>\n <div class=\"list-divider\"></div>\n </ng-container>\n <ng-container *ngIf=\"contextMenuConfig?.delete\">\n <div class=\"list-item list-item_interactive\"\n (click)=\"delete(selectedRowsList)\"\n *ngIf=\"selectedRowsList?.length > 0\">\n <teta-icon [name]=\"'deleteSelected'\" [palette]=\"'text'\"></teta-icon>\n \u0423\u0434\u0430\u043B\u0438\u0442\u044C \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u043D\u044B\u0435 \u0441\u0442\u0440\u043E\u043A\u0438\n </div>\n <div class=\"list-item list-item_interactive\"\n (click)=\"delete([contextMenuTarget.row])\"\n *ngIf=\"contextMenuTarget\">\n <teta-icon [name]=\"'delete'\" [palette]=\"'text'\"></teta-icon>\n \u0423\u0434\u0430\u043B\u0438\u0442\u044C \u0441\u0442\u0440\u043E\u043A\u0443\n </div>\n </ng-container>\n</div>\n", styles: [""] }]
@@ -9522,8 +9546,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImpor
9522
9546
  type: Input
9523
9547
  }], rowEditable: [{
9524
9548
  type: Input
9525
- }], cellEditable: [{
9526
- type: Input
9527
9549
  }], rowClass: [{
9528
9550
  type: Input
9529
9551
  }], scrollToIndex: [{
@@ -10516,6 +10538,7 @@ var ScaleType;
10516
10538
  ScaleType[ScaleType["log"] = 1] = "log";
10517
10539
  ScaleType[ScaleType["pow"] = 2] = "pow";
10518
10540
  ScaleType[ScaleType["sqrt"] = 3] = "sqrt";
10541
+ ScaleType[ScaleType["time"] = 4] = "time";
10519
10542
  })(ScaleType || (ScaleType = {}));
10520
10543
 
10521
10544
  var ZoomType;
@@ -12408,10 +12431,10 @@ class Chart3dComponent {
12408
12431
  }
12409
12432
  }
12410
12433
  Chart3dComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: Chart3dComponent, deps: [{ token: i0.ElementRef }, { token: ThemeSwitchService }], target: i0.ɵɵFactoryTarget.Component });
12411
- Chart3dComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.1", type: Chart3dComponent, selector: "teta-chart3d", inputs: { config: "config" }, viewQueries: [{ propertyName: "canvasRef", first: true, predicate: ["canvas"], descendants: true }], ngImport: i0, template: "<canvas #canvas></canvas>\n", styles: [":host{display:flex;width:100%;height:100%}\n"] });
12434
+ Chart3dComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.1", type: Chart3dComponent, selector: "teta-chart3d", inputs: { config: "config" }, viewQueries: [{ propertyName: "canvasRef", first: true, predicate: ["canvas"], descendants: true }], ngImport: i0, template: "<canvas #canvas></canvas>\n", styles: [":host{display:flex;width:100%;height:100%}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
12412
12435
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: Chart3dComponent, decorators: [{
12413
12436
  type: Component,
12414
- args: [{ selector: 'teta-chart3d', template: "<canvas #canvas></canvas>\n", styles: [":host{display:flex;width:100%;height:100%}\n"] }]
12437
+ args: [{ selector: 'teta-chart3d', changeDetection: ChangeDetectionStrategy.OnPush, template: "<canvas #canvas></canvas>\n", styles: [":host{display:flex;width:100%;height:100%}\n"] }]
12415
12438
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: ThemeSwitchService }]; }, propDecorators: { canvasRef: [{
12416
12439
  type: ViewChild,
12417
12440
  args: ['canvas']