@neovici/cosmoz-omnitable 14.14.2 → 14.15.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 (315) hide show
  1. package/dist/cosmoz-omnitable-column-amount.d.ts +2 -0
  2. package/dist/cosmoz-omnitable-column-amount.d.ts.map +1 -0
  3. package/dist/cosmoz-omnitable-column-amount.js +113 -0
  4. package/dist/cosmoz-omnitable-column-autocomplete.d.ts +6 -0
  5. package/dist/cosmoz-omnitable-column-autocomplete.d.ts.map +1 -0
  6. package/dist/cosmoz-omnitable-column-autocomplete.js +87 -0
  7. package/dist/cosmoz-omnitable-column-boolean.d.ts +17 -0
  8. package/dist/cosmoz-omnitable-column-boolean.d.ts.map +1 -0
  9. package/dist/cosmoz-omnitable-column-boolean.js +105 -0
  10. package/dist/cosmoz-omnitable-column-date.d.ts +2 -0
  11. package/dist/cosmoz-omnitable-column-date.d.ts.map +1 -0
  12. package/dist/cosmoz-omnitable-column-date.js +97 -0
  13. package/dist/cosmoz-omnitable-column-datetime.d.ts +2 -0
  14. package/dist/cosmoz-omnitable-column-datetime.d.ts.map +1 -0
  15. package/dist/cosmoz-omnitable-column-datetime.js +106 -0
  16. package/dist/cosmoz-omnitable-column-list-data.d.ts +2 -0
  17. package/dist/cosmoz-omnitable-column-list-data.d.ts.map +1 -0
  18. package/dist/cosmoz-omnitable-column-list-data.js +123 -0
  19. package/dist/cosmoz-omnitable-column-list-horizontal.d.ts +2 -0
  20. package/dist/cosmoz-omnitable-column-list-horizontal.d.ts.map +1 -0
  21. package/{cosmoz-omnitable-column-list-horizontal.js → dist/cosmoz-omnitable-column-list-horizontal.js} +15 -37
  22. package/dist/cosmoz-omnitable-column-list-mixin.d.ts +59 -0
  23. package/dist/cosmoz-omnitable-column-list-mixin.d.ts.map +1 -0
  24. package/dist/cosmoz-omnitable-column-list-mixin.js +139 -0
  25. package/dist/cosmoz-omnitable-column-list.d.ts +2 -0
  26. package/dist/cosmoz-omnitable-column-list.d.ts.map +1 -0
  27. package/{cosmoz-omnitable-column-list.js → dist/cosmoz-omnitable-column-list.js} +28 -47
  28. package/dist/cosmoz-omnitable-column-mixin.d.ts +161 -0
  29. package/dist/cosmoz-omnitable-column-mixin.d.ts.map +1 -0
  30. package/dist/cosmoz-omnitable-column-mixin.js +121 -0
  31. package/dist/cosmoz-omnitable-column-number.d.ts +2 -0
  32. package/dist/cosmoz-omnitable-column-number.d.ts.map +1 -0
  33. package/dist/cosmoz-omnitable-column-number.js +112 -0
  34. package/dist/cosmoz-omnitable-column-time.d.ts +2 -0
  35. package/dist/cosmoz-omnitable-column-time.d.ts.map +1 -0
  36. package/dist/cosmoz-omnitable-column-time.js +102 -0
  37. package/dist/cosmoz-omnitable-column.d.ts +2 -0
  38. package/dist/cosmoz-omnitable-column.d.ts.map +1 -0
  39. package/dist/cosmoz-omnitable-column.js +75 -0
  40. package/dist/cosmoz-omnitable-columns.d.ts +2 -0
  41. package/dist/cosmoz-omnitable-columns.d.ts.map +1 -0
  42. package/{cosmoz-omnitable-columns.js → dist/cosmoz-omnitable-columns.js} +1 -0
  43. package/dist/cosmoz-omnitable-group-row.d.ts +2 -0
  44. package/dist/cosmoz-omnitable-group-row.d.ts.map +1 -0
  45. package/dist/cosmoz-omnitable-group-row.js +15 -0
  46. package/dist/cosmoz-omnitable-header-row.d.ts +2 -0
  47. package/dist/cosmoz-omnitable-header-row.d.ts.map +1 -0
  48. package/{cosmoz-omnitable-header-row.js → dist/cosmoz-omnitable-header-row.js} +12 -45
  49. package/dist/cosmoz-omnitable-item-expand-line.d.ts +2 -0
  50. package/dist/cosmoz-omnitable-item-expand-line.d.ts.map +1 -0
  51. package/{cosmoz-omnitable-item-expand-line.js → dist/cosmoz-omnitable-item-expand-line.js} +4 -9
  52. package/dist/cosmoz-omnitable-item-expand.d.ts +2 -0
  53. package/dist/cosmoz-omnitable-item-expand.d.ts.map +1 -0
  54. package/{cosmoz-omnitable-item-expand.js → dist/cosmoz-omnitable-item-expand.js} +10 -18
  55. package/dist/cosmoz-omnitable-item-row.d.ts +2 -0
  56. package/dist/cosmoz-omnitable-item-row.d.ts.map +1 -0
  57. package/dist/cosmoz-omnitable-item-row.js +19 -0
  58. package/dist/cosmoz-omnitable-skeleton.d.ts +2 -0
  59. package/dist/cosmoz-omnitable-skeleton.d.ts.map +1 -0
  60. package/{cosmoz-omnitable-skeleton.js → dist/cosmoz-omnitable-skeleton.js} +9 -25
  61. package/dist/cosmoz-omnitable-styles.d.ts +4 -0
  62. package/dist/cosmoz-omnitable-styles.d.ts.map +1 -0
  63. package/{cosmoz-omnitable-styles.js → dist/cosmoz-omnitable-styles.js} +3 -4
  64. package/dist/cosmoz-omnitable.d.ts +3 -0
  65. package/dist/cosmoz-omnitable.d.ts.map +1 -0
  66. package/{cosmoz-omnitable.js → dist/cosmoz-omnitable.js} +27 -40
  67. package/dist/grouped-list/cosmoz-grouped-list-row.d.ts +2 -0
  68. package/dist/grouped-list/cosmoz-grouped-list-row.d.ts.map +1 -0
  69. package/dist/grouped-list/cosmoz-grouped-list-row.js +31 -0
  70. package/dist/grouped-list/cosmoz-grouped-list.d.ts +2 -0
  71. package/dist/grouped-list/cosmoz-grouped-list.d.ts.map +1 -0
  72. package/dist/grouped-list/cosmoz-grouped-list.js +5 -0
  73. package/dist/grouped-list/index.d.ts +2 -0
  74. package/dist/grouped-list/index.d.ts.map +1 -0
  75. package/{grouped-list → dist/grouped-list}/index.js +1 -0
  76. package/dist/grouped-list/use-collapsible-items.d.ts +7 -0
  77. package/dist/grouped-list/use-collapsible-items.d.ts.map +1 -0
  78. package/dist/grouped-list/use-collapsible-items.js +27 -0
  79. package/dist/grouped-list/use-cosmoz-grouped-list.d.ts +15 -0
  80. package/dist/grouped-list/use-cosmoz-grouped-list.d.ts.map +1 -0
  81. package/dist/grouped-list/use-cosmoz-grouped-list.js +66 -0
  82. package/dist/grouped-list/use-selected-items.d.ts +19 -0
  83. package/dist/grouped-list/use-selected-items.d.ts.map +1 -0
  84. package/dist/grouped-list/use-selected-items.js +105 -0
  85. package/dist/grouped-list/use-weak-state.d.ts +6 -0
  86. package/dist/grouped-list/use-weak-state.d.ts.map +1 -0
  87. package/dist/grouped-list/use-weak-state.js +15 -0
  88. package/dist/grouped-list/utils.d.ts +11 -0
  89. package/dist/grouped-list/utils.d.ts.map +1 -0
  90. package/dist/grouped-list/utils.js +57 -0
  91. package/dist/lib/compute-layout.d.ts +3 -0
  92. package/dist/lib/compute-layout.d.ts.map +1 -0
  93. package/dist/lib/compute-layout.js +46 -0
  94. package/dist/lib/cosmoz-omnitable-amount-range-input.d.ts +2 -0
  95. package/dist/lib/cosmoz-omnitable-amount-range-input.d.ts.map +1 -0
  96. package/dist/lib/cosmoz-omnitable-amount-range-input.js +304 -0
  97. package/dist/lib/cosmoz-omnitable-date-input-mixin.d.ts +2 -0
  98. package/dist/lib/cosmoz-omnitable-date-input-mixin.d.ts.map +1 -0
  99. package/dist/lib/cosmoz-omnitable-date-input-mixin.js +149 -0
  100. package/dist/lib/cosmoz-omnitable-date-range-input.d.ts +2 -0
  101. package/dist/lib/cosmoz-omnitable-date-range-input.d.ts.map +1 -0
  102. package/{lib → dist/lib}/cosmoz-omnitable-date-range-input.js +32 -41
  103. package/dist/lib/cosmoz-omnitable-datetime-range-input.d.ts +2 -0
  104. package/dist/lib/cosmoz-omnitable-datetime-range-input.d.ts.map +1 -0
  105. package/{lib → dist/lib}/cosmoz-omnitable-datetime-range-input.js +27 -38
  106. package/dist/lib/cosmoz-omnitable-number-range-input.d.ts +2 -0
  107. package/dist/lib/cosmoz-omnitable-number-range-input.d.ts.map +1 -0
  108. package/{lib → dist/lib}/cosmoz-omnitable-number-range-input.js +73 -83
  109. package/dist/lib/cosmoz-omnitable-range-input-mixin.d.ts +2 -0
  110. package/dist/lib/cosmoz-omnitable-range-input-mixin.d.ts.map +1 -0
  111. package/dist/lib/cosmoz-omnitable-range-input-mixin.js +337 -0
  112. package/dist/lib/cosmoz-omnitable-resize-nub.d.ts +2 -0
  113. package/dist/lib/cosmoz-omnitable-resize-nub.d.ts.map +1 -0
  114. package/dist/lib/cosmoz-omnitable-resize-nub.js +33 -0
  115. package/dist/lib/cosmoz-omnitable-time-range-input.d.ts +2 -0
  116. package/dist/lib/cosmoz-omnitable-time-range-input.d.ts.map +1 -0
  117. package/dist/lib/cosmoz-omnitable-time-range-input.js +125 -0
  118. package/dist/lib/generic-sorter.d.ts +2 -0
  119. package/dist/lib/generic-sorter.d.ts.map +1 -0
  120. package/dist/lib/generic-sorter.js +29 -0
  121. package/dist/lib/icons.d.ts +5 -0
  122. package/dist/lib/icons.d.ts.map +1 -0
  123. package/{lib → dist/lib}/icons.js +5 -8
  124. package/dist/lib/layout.d.ts +2 -0
  125. package/dist/lib/layout.d.ts.map +1 -0
  126. package/dist/lib/layout.js +41 -0
  127. package/dist/lib/polymer-haunted-render-mixin.d.ts +10 -0
  128. package/dist/lib/polymer-haunted-render-mixin.d.ts.map +1 -0
  129. package/dist/lib/polymer-haunted-render-mixin.js +16 -0
  130. package/dist/lib/render-footer.d.ts +9 -0
  131. package/dist/lib/render-footer.d.ts.map +1 -0
  132. package/{lib → dist/lib}/render-footer.js +4 -17
  133. package/dist/lib/render-header.d.ts +14 -0
  134. package/dist/lib/render-header.d.ts.map +1 -0
  135. package/{lib → dist/lib}/render-header.js +6 -27
  136. package/dist/lib/render-list.d.ts +2 -0
  137. package/dist/lib/render-list.d.ts.map +1 -0
  138. package/{lib → dist/lib}/render-list.js +12 -45
  139. package/dist/lib/save-as-csv-action.d.ts +2 -0
  140. package/dist/lib/save-as-csv-action.d.ts.map +1 -0
  141. package/dist/lib/save-as-csv-action.js +26 -0
  142. package/dist/lib/save-as-xlsx-action.d.ts +3 -0
  143. package/dist/lib/save-as-xlsx-action.d.ts.map +1 -0
  144. package/dist/lib/save-as-xlsx-action.js +18 -0
  145. package/dist/lib/settings/cosmoz-omnitable-settings.d.ts +2 -0
  146. package/dist/lib/settings/cosmoz-omnitable-settings.d.ts.map +1 -0
  147. package/{lib → dist/lib}/settings/cosmoz-omnitable-settings.js +27 -69
  148. package/dist/lib/settings/cosmoz-omnitable-sort-group.d.ts +14 -0
  149. package/dist/lib/settings/cosmoz-omnitable-sort-group.d.ts.map +1 -0
  150. package/dist/lib/settings/cosmoz-omnitable-sort-group.js +55 -0
  151. package/dist/lib/settings/drivers/context.d.ts +12 -0
  152. package/dist/lib/settings/drivers/context.d.ts.map +1 -0
  153. package/dist/lib/settings/drivers/context.js +11 -0
  154. package/dist/lib/settings/drivers/index.d.ts +4 -0
  155. package/dist/lib/settings/drivers/index.d.ts.map +1 -0
  156. package/{lib → dist/lib}/settings/drivers/index.js +1 -0
  157. package/dist/lib/settings/drivers/local.d.ts +8 -0
  158. package/dist/lib/settings/drivers/local.d.ts.map +1 -0
  159. package/dist/lib/settings/drivers/local.js +33 -0
  160. package/dist/lib/settings/drivers/remote.d.ts +8 -0
  161. package/dist/lib/settings/drivers/remote.d.ts.map +1 -0
  162. package/dist/lib/settings/drivers/remote.js +25 -0
  163. package/dist/lib/settings/index.d.ts +2 -0
  164. package/dist/lib/settings/index.d.ts.map +1 -0
  165. package/{lib → dist/lib}/settings/index.js +1 -1
  166. package/dist/lib/settings/normalize.d.ts +11 -0
  167. package/dist/lib/settings/normalize.d.ts.map +1 -0
  168. package/dist/lib/settings/normalize.js +47 -0
  169. package/dist/lib/settings/style.css.d.ts +4 -0
  170. package/dist/lib/settings/style.css.d.ts.map +1 -0
  171. package/{lib → dist/lib}/settings/style.css.js +3 -4
  172. package/dist/lib/settings/use-saved-settings.d.ts +9 -0
  173. package/dist/lib/settings/use-saved-settings.d.ts.map +1 -0
  174. package/dist/lib/settings/use-saved-settings.js +35 -0
  175. package/dist/lib/settings/use-settings-ui.d.ts +3 -0
  176. package/dist/lib/settings/use-settings-ui.d.ts.map +1 -0
  177. package/dist/lib/settings/use-settings-ui.js +78 -0
  178. package/dist/lib/settings/use-settings.d.ts +23 -0
  179. package/dist/lib/settings/use-settings.d.ts.map +1 -0
  180. package/dist/lib/settings/use-settings.js +26 -0
  181. package/dist/lib/use-canvas-width.d.ts +2 -0
  182. package/dist/lib/use-canvas-width.d.ts.map +1 -0
  183. package/dist/lib/use-canvas-width.js +8 -0
  184. package/dist/lib/use-dom-columns.d.ts +5 -0
  185. package/dist/lib/use-dom-columns.d.ts.map +1 -0
  186. package/dist/lib/use-dom-columns.js +127 -0
  187. package/dist/lib/use-fast-layout.d.ts +13 -0
  188. package/dist/lib/use-fast-layout.d.ts.map +1 -0
  189. package/dist/lib/use-fast-layout.js +47 -0
  190. package/dist/lib/use-footer.d.ts +10 -0
  191. package/dist/lib/use-footer.d.ts.map +1 -0
  192. package/dist/lib/use-footer.js +11 -0
  193. package/dist/lib/use-hash-state.d.ts +4 -0
  194. package/dist/lib/use-hash-state.d.ts.map +1 -0
  195. package/dist/lib/use-hash-state.js +32 -0
  196. package/dist/lib/use-header.d.ts +21 -0
  197. package/dist/lib/use-header.d.ts.map +1 -0
  198. package/dist/lib/use-header.js +38 -0
  199. package/dist/lib/use-layout.d.ts +7 -0
  200. package/dist/lib/use-layout.d.ts.map +1 -0
  201. package/dist/lib/use-layout.js +21 -0
  202. package/dist/lib/use-list.d.ts +31 -0
  203. package/dist/lib/use-list.d.ts.map +1 -0
  204. package/dist/lib/use-list.js +198 -0
  205. package/dist/lib/use-mini.d.ts +10 -0
  206. package/dist/lib/use-mini.d.ts.map +1 -0
  207. package/dist/lib/use-mini.js +19 -0
  208. package/dist/lib/use-omnitable.d.ts +37 -0
  209. package/dist/lib/use-omnitable.d.ts.map +1 -0
  210. package/dist/lib/use-omnitable.js +74 -0
  211. package/dist/lib/use-processed-items.d.ts +17 -0
  212. package/dist/lib/use-processed-items.d.ts.map +1 -0
  213. package/dist/lib/use-processed-items.js +151 -0
  214. package/dist/lib/use-public-interface.d.ts +7 -0
  215. package/dist/lib/use-public-interface.d.ts.map +1 -0
  216. package/dist/lib/use-public-interface.js +82 -0
  217. package/dist/lib/use-resizable-columns.d.ts +7 -0
  218. package/dist/lib/use-resizable-columns.d.ts.map +1 -0
  219. package/dist/lib/use-resizable-columns.js +38 -0
  220. package/dist/lib/use-sort-and-group-options.d.ts +26 -0
  221. package/dist/lib/use-sort-and-group-options.d.ts.map +1 -0
  222. package/dist/lib/use-sort-and-group-options.js +36 -0
  223. package/dist/lib/use-track-size.d.ts +2 -0
  224. package/dist/lib/use-track-size.d.ts.map +1 -0
  225. package/dist/lib/use-track-size.js +15 -0
  226. package/dist/lib/use-tween-array.d.ts +3 -0
  227. package/dist/lib/use-tween-array.d.ts.map +1 -0
  228. package/dist/lib/use-tween-array.js +50 -0
  229. package/dist/lib/utils-amount.d.ts +26 -0
  230. package/dist/lib/utils-amount.d.ts.map +1 -0
  231. package/dist/lib/utils-amount.js +99 -0
  232. package/dist/lib/utils-data.d.ts +8 -0
  233. package/dist/lib/utils-data.d.ts.map +1 -0
  234. package/dist/lib/utils-data.js +28 -0
  235. package/dist/lib/utils-date.d.ts +25 -0
  236. package/dist/lib/utils-date.d.ts.map +1 -0
  237. package/dist/lib/utils-date.js +161 -0
  238. package/dist/lib/utils-datetime.d.ts +16 -0
  239. package/dist/lib/utils-datetime.d.ts.map +1 -0
  240. package/dist/lib/utils-datetime.js +52 -0
  241. package/dist/lib/utils-number.d.ts +19 -0
  242. package/dist/lib/utils-number.d.ts.map +1 -0
  243. package/dist/lib/utils-number.js +87 -0
  244. package/dist/lib/utils-time.d.ts +17 -0
  245. package/dist/lib/utils-time.d.ts.map +1 -0
  246. package/dist/lib/utils-time.js +88 -0
  247. package/dist/lib/utils.d.ts +3 -0
  248. package/dist/lib/utils.d.ts.map +1 -0
  249. package/dist/lib/utils.js +14 -0
  250. package/dist/ui-helpers/cosmoz-clear-button.d.ts +2 -0
  251. package/dist/ui-helpers/cosmoz-clear-button.d.ts.map +1 -0
  252. package/{ui-helpers → dist/ui-helpers}/cosmoz-clear-button.js +3 -5
  253. package/package.json +39 -9
  254. package/cosmoz-omnitable-column-amount.js +0 -162
  255. package/cosmoz-omnitable-column-autocomplete.js +0 -113
  256. package/cosmoz-omnitable-column-boolean.js +0 -168
  257. package/cosmoz-omnitable-column-date.js +0 -133
  258. package/cosmoz-omnitable-column-datetime.js +0 -145
  259. package/cosmoz-omnitable-column-list-data.js +0 -141
  260. package/cosmoz-omnitable-column-list-mixin.js +0 -198
  261. package/cosmoz-omnitable-column-mixin.js +0 -149
  262. package/cosmoz-omnitable-column-number.js +0 -157
  263. package/cosmoz-omnitable-column-time.js +0 -137
  264. package/cosmoz-omnitable-column.js +0 -99
  265. package/cosmoz-omnitable-group-row.js +0 -20
  266. package/cosmoz-omnitable-item-row.js +0 -38
  267. package/grouped-list/cosmoz-grouped-list-row.js +0 -41
  268. package/grouped-list/cosmoz-grouped-list.js +0 -13
  269. package/grouped-list/use-collapsible-items.js +0 -32
  270. package/grouped-list/use-cosmoz-grouped-list.js +0 -102
  271. package/grouped-list/use-selected-items.js +0 -140
  272. package/grouped-list/use-weak-state.js +0 -21
  273. package/grouped-list/utils.js +0 -89
  274. package/lib/compute-layout.js +0 -74
  275. package/lib/cosmoz-omnitable-amount-range-input.js +0 -353
  276. package/lib/cosmoz-omnitable-date-input-mixin.js +0 -182
  277. package/lib/cosmoz-omnitable-range-input-mixin.js +0 -451
  278. package/lib/cosmoz-omnitable-resize-nub.js +0 -41
  279. package/lib/cosmoz-omnitable-time-range-input.js +0 -154
  280. package/lib/generic-sorter.js +0 -35
  281. package/lib/layout.js +0 -61
  282. package/lib/polymer-haunted-render-mixin.js +0 -19
  283. package/lib/save-as-csv-action.js +0 -36
  284. package/lib/save-as-xlsx-action.js +0 -27
  285. package/lib/settings/cosmoz-omnitable-sort-group.js +0 -74
  286. package/lib/settings/drivers/context.js +0 -16
  287. package/lib/settings/drivers/local.js +0 -29
  288. package/lib/settings/drivers/remote.js +0 -22
  289. package/lib/settings/normalize.js +0 -76
  290. package/lib/settings/use-saved-settings.js +0 -43
  291. package/lib/settings/use-settings-ui.js +0 -125
  292. package/lib/settings/use-settings.js +0 -53
  293. package/lib/use-canvas-width.js +0 -12
  294. package/lib/use-dom-columns.js +0 -166
  295. package/lib/use-fast-layout.js +0 -73
  296. package/lib/use-footer.js +0 -16
  297. package/lib/use-hash-state.js +0 -71
  298. package/lib/use-header.js +0 -71
  299. package/lib/use-layout.js +0 -32
  300. package/lib/use-list.js +0 -263
  301. package/lib/use-mini.js +0 -30
  302. package/lib/use-omnitable.js +0 -99
  303. package/lib/use-processed-items.js +0 -254
  304. package/lib/use-public-interface.js +0 -107
  305. package/lib/use-resizable-columns.js +0 -63
  306. package/lib/use-sort-and-group-options.js +0 -95
  307. package/lib/use-track-size.js +0 -23
  308. package/lib/use-tween-array.js +0 -60
  309. package/lib/utils-amount.js +0 -131
  310. package/lib/utils-data.js +0 -42
  311. package/lib/utils-date.js +0 -194
  312. package/lib/utils-datetime.js +0 -66
  313. package/lib/utils-number.js +0 -111
  314. package/lib/utils-time.js +0 -112
  315. package/lib/utils.js +0 -17
@@ -1,125 +0,0 @@
1
- import { useCallback } from '@pionjs/pion';
2
- import { useMeta } from '@neovici/cosmoz-utils/hooks/use-meta';
3
-
4
- const parseIndex = (str) => {
5
- const idx = parseInt(str, 10);
6
- return isFinite(idx) ? idx : undefined;
7
- };
8
-
9
- export default (host) => {
10
- const { config } = host,
11
- { settings, setSettings, collapsed } = config,
12
- meta = useMeta({
13
- collapsed,
14
- settings: settings.columns,
15
- setSettings: useCallback(
16
- (columns) => setSettings((cfg) => ({ ...cfg, columns })),
17
- [setSettings],
18
- ),
19
- });
20
-
21
- return {
22
- ...config,
23
- onDown: useCallback(
24
- (e) => {
25
- if (!e.target.closest('.pull')) {
26
- return;
27
- }
28
-
29
- meta.handle = e.currentTarget;
30
- },
31
- [meta],
32
- ),
33
-
34
- onDragStart: useCallback(
35
- (e) => {
36
- const { target } = e,
37
- index = parseIndex(target.dataset.index);
38
-
39
- if (!meta.handle?.contains(target) || index == null) {
40
- return e.preventDefault();
41
- }
42
-
43
- meta.handle = null;
44
- e.dataTransfer.effectAllowed = 'move';
45
- e.dataTransfer.setData('omnitable/sort-index', index);
46
- e.dataTransfer.setData('text/plain', index);
47
- setTimeout(() => target.classList.add('drag'), 0);
48
- target.addEventListener(
49
- 'dragend',
50
- (e) => e.target.classList.remove('drag'),
51
- { once: true },
52
- );
53
- },
54
- [meta],
55
- ),
56
-
57
- onDragEnter: useCallback((e) => {
58
- const ctg = e.currentTarget;
59
- if (ctg !== e.target) {
60
- return;
61
- }
62
-
63
- e.preventDefault();
64
- e.dataTransfer.dropEffect = 'move';
65
- ctg.classList.add('dragover');
66
- }, []),
67
-
68
- onDragOver: useCallback((e) => {
69
- e.preventDefault();
70
- e.currentTarget.classList.add('dragover');
71
- }, []),
72
-
73
- onDragLeave: useCallback((e) => {
74
- const ctg = e.currentTarget;
75
- if (ctg.contains(e.relatedTarget)) {
76
- return;
77
- }
78
-
79
- ctg.classList.remove('dragover');
80
- }, []),
81
-
82
- onDrop: useCallback(
83
- (e) => {
84
- const from = parseIndex(e.dataTransfer.getData('omnitable/sort-index')),
85
- to = parseIndex(e.currentTarget.dataset.index),
86
- { settings, setSettings } = meta;
87
-
88
- e.currentTarget.classList.remove('dragover');
89
- e.preventDefault();
90
-
91
- const newSettings = settings.slice();
92
- newSettings.splice(
93
- to + (from >= to ? 0 : -1),
94
- 0,
95
- newSettings.splice(from, 1)[0],
96
- );
97
- setSettings(newSettings);
98
- },
99
- [meta],
100
- ),
101
-
102
- onToggle: useCallback(
103
- (e) => {
104
- const { settings, setSettings } = meta,
105
- newSettings = settings.map((column) => ({
106
- ...column,
107
- disabled:
108
- column.disabled ||
109
- meta.collapsed?.some((c) => c.name === column.name),
110
- })),
111
- idx = parseIndex(e.target.closest('[data-index]')?.dataset.index);
112
-
113
- newSettings.splice(idx, 1, {
114
- ...settings[idx],
115
- disabled: !e.target.checked,
116
- priority: e.target.checked
117
- ? settings.reduce((acc, s) => Math.max(acc, s.priority), 0) + 1
118
- : settings[idx].priority,
119
- });
120
- setSettings(newSettings);
121
- },
122
- [meta],
123
- ),
124
- };
125
- };
@@ -1,53 +0,0 @@
1
- import { useMemo, useState, useRef, useCallback } from '@pionjs/pion';
2
-
3
- import useSavedSettings from './use-saved-settings';
4
- import normalize, { sgProps } from './normalize';
5
- import { useDOMColumns } from '../use-dom-columns';
6
-
7
- export default ({ settingsId, host }) => {
8
- const initial = useMemo(
9
- () => Object.fromEntries(sgProps.map((k) => [k, host[k]])),
10
- [],
11
- ),
12
- resetRef = useRef(),
13
- onReset = useCallback(() => {
14
- resetRef.current?.(initial);
15
- }, [initial]),
16
- [settings, setSettings] = useState(),
17
- [opened, setOpened] = useState({ columns: true, sort: true }),
18
- { savedSettings, ...rest } = useSavedSettings(
19
- settingsId,
20
- settings,
21
- setSettings,
22
- onReset,
23
- ),
24
- { enabledColumns } = host,
25
- columns = useDOMColumns(host, { enabledColumns }),
26
- normalizedSettings = useMemo(
27
- () =>
28
- normalize({
29
- columns,
30
- settings,
31
- savedSettings,
32
- initial,
33
- }),
34
- [columns, settings, savedSettings],
35
- ),
36
- normalizedColumns = useMemo(
37
- () =>
38
- normalizedSettings.columns
39
- .map((s) => columns.find((c) => c.name === s.name))
40
- .filter(Boolean),
41
- [columns, ...normalizedSettings.columns.map((s) => s.name)],
42
- );
43
-
44
- return {
45
- ...rest,
46
- opened,
47
- setOpened,
48
- settings: normalizedSettings,
49
- columns: normalizedColumns,
50
- setSettings,
51
- resetRef,
52
- };
53
- };
@@ -1,12 +0,0 @@
1
- import { useState } from '@pionjs/pion';
2
- import { useTrackSize } from './use-track-size';
3
-
4
- export const useCanvasWidth = (host) => {
5
- const [canvasWidth, setCanvasWidth] = useState(
6
- () => host.getBoundingClientRect().width,
7
- );
8
-
9
- useTrackSize(host, setCanvasWidth);
10
-
11
- return canvasWidth;
12
- };
@@ -1,166 +0,0 @@
1
- import { useLayoutEffect, useState } from '@pionjs/pion';
2
- import { memooize } from '@neovici/cosmoz-utils/memoize';
3
-
4
- const columnSymbol = Symbol('column');
5
- const verifyColumnSetup = (columns) => {
6
- let ok = true;
7
- const columnNames = columns.map((c) => c.name);
8
- // Check if column names are set
9
- columns.forEach((column) => {
10
- if (column.name != null) {
11
- return;
12
- }
13
- ok = false;
14
- // eslint-disable-next-line no-console
15
- console.error(
16
- 'The name attribute needs to be set on all columns! Missing on column',
17
- column,
18
- );
19
- });
20
-
21
- columns.forEach((column) => {
22
- if (
23
- columnNames.indexOf(column.name) === columnNames.lastIndexOf(column.name)
24
- ) {
25
- return;
26
- }
27
- ok = false;
28
- // eslint-disable-next-line no-console
29
- console.error(
30
- 'The name attribute needs to be unique among all columns! Not unique on column',
31
- column,
32
- );
33
- });
34
- return ok;
35
- };
36
-
37
- const normalizeColumn = (column) => {
38
- const valuePath = column.valuePath ?? column.name;
39
-
40
- return {
41
- name: column.name,
42
- title: column.title,
43
-
44
- valuePath,
45
- groupOn: column.groupOn ?? valuePath,
46
- sortOn: column.sortOn ?? valuePath,
47
-
48
- minWidth: column.minWidth,
49
- width: column.width,
50
- flex: column.flex,
51
- priority: column.priority,
52
-
53
- getString: column.getString,
54
- getComparableValue: column.getComparableValue,
55
- serializeFilter: column.serializeFilter,
56
- deserializeFilter: column.deserializeFilter,
57
- toXlsxValue: column.toXlsxValue,
58
-
59
- renderHeader: column.renderHeader,
60
- renderCell: column.renderCell,
61
- renderEditCell: column.renderEditCell,
62
- renderGroup: column.renderGroup,
63
- cellTitleFn: column.cellTitleFn,
64
- getFilterFn: column.getFilterFn,
65
- headerCellClass: column.headerCellClass,
66
- cellClass: column.cellClass,
67
-
68
- editable: column.editable,
69
-
70
- values: column.values,
71
- source: memooize(column.computeSource),
72
-
73
- noLocalFilter: column.noLocalFilter,
74
-
75
- mini: column.mini,
76
- renderMini: column.renderMini,
77
-
78
- // @deprecated
79
- loading: column.loading,
80
- externalValues: column.externalValues,
81
- computeSource: column.computeSource,
82
-
83
- // boolean columns
84
- trueLabel: column.trueLabel,
85
- falseLabel: column.falseLabel,
86
-
87
- // list columns
88
- valueProperty: column.valueProperty,
89
- textProperty: column.textProperty,
90
- emptyLabel: column.emptyLabel,
91
- emptyValue: column.emptyValue,
92
-
93
- // range columns
94
- min: column.min,
95
- max: column.max,
96
- locale: column.locale,
97
- autoupdate: column.autoupdate,
98
-
99
- // number columns
100
- maximumFractionDigits: column.maximumFractionDigits,
101
- minimumFractionDigits: column.minimumFractionDigits,
102
-
103
- // amount columns
104
- currency: column.currency,
105
- rates: column.rates,
106
- autodetect: column.autodetect,
107
-
108
- // treenode columns
109
- ownerTree: column.ownerTree,
110
- keyProperty: column.keyProperty,
111
-
112
- ...column.getConfig?.(column),
113
-
114
- [columnSymbol]: column,
115
- };
116
- };
117
-
118
- const isVisibleColumn = (child) => child.isOmnitableColumn && !child.hidden;
119
-
120
- const collectDomColumns = (slot) => {
121
- const domColumns = slot
122
- .assignedElements({ flatten: true })
123
- .filter(isVisibleColumn);
124
-
125
- if (!verifyColumnSetup(domColumns)) return [];
126
- return domColumns;
127
- };
128
-
129
- const normalizeColumns = (domColumns, enabledColumns) => {
130
- const columns = Array.isArray(enabledColumns)
131
- ? domColumns.filter((column) => enabledColumns.includes(column.name))
132
- : domColumns.filter((column) => !column.disabled);
133
-
134
- return columns.map(normalizeColumn);
135
- };
136
-
137
- export const useDOMColumns = (host, { enabledColumns }) => {
138
- const [columns, setColumns] = useState([]);
139
-
140
- useLayoutEffect(() => {
141
- let sched;
142
- const slot = host.shadowRoot.querySelector('#columnsSlot');
143
- const update = () => {
144
- setColumns(normalizeColumns(collectDomColumns(slot), enabledColumns));
145
- };
146
- const scheduleUpdate = () => {
147
- cancelAnimationFrame(sched);
148
- sched = requestAnimationFrame(update);
149
- };
150
-
151
- scheduleUpdate();
152
-
153
- slot.addEventListener('slotchange', scheduleUpdate);
154
- host.addEventListener('cosmoz-column-prop-changed', scheduleUpdate);
155
-
156
- return () => {
157
- slot.removeEventListener('slotchange', scheduleUpdate);
158
- host.removeEventListener('cosmoz-column-prop-changed', scheduleUpdate);
159
- cancelAnimationFrame(sched);
160
- };
161
- }, [enabledColumns]);
162
-
163
- return columns;
164
- };
165
-
166
- export { columnSymbol };
@@ -1,73 +0,0 @@
1
- import { useEffect, useMemo } from '@pionjs/pion';
2
- import { toCss } from './compute-layout';
3
- import { useResizableColumns } from './use-resizable-columns';
4
- import { useCanvasWidth } from './use-canvas-width';
5
- import { useTweenArray } from './use-tween-array';
6
- import { useLayout } from './use-layout';
7
- import { useMini } from './use-mini';
8
- import { useMeta } from '@neovici/cosmoz-utils/hooks/use-meta';
9
-
10
- const useAdoptedStyleSheet = (host) => {
11
- const styleSheet = useMemo(() => new CSSStyleSheet(), []);
12
-
13
- useEffect(() => {
14
- host.shadowRoot.adoptedStyleSheets = [
15
- ...host.shadowRoot.adoptedStyleSheets,
16
- styleSheet,
17
- ];
18
- }, []);
19
-
20
- return styleSheet;
21
- };
22
-
23
- export const useFastLayout = ({
24
- host,
25
- columns,
26
- settings,
27
- setSettings,
28
- resizeSpeedFactor,
29
- sortAndGroupOptions,
30
- }) => {
31
- const canvasWidth = useCanvasWidth(host),
32
- { isMini, miniColumn, miniColumns } = useMini({
33
- host,
34
- canvasWidth,
35
- columns,
36
- }),
37
- { groupOnColumn } = sortAndGroupOptions,
38
- layout = useLayout({
39
- canvasWidth,
40
- groupOnColumn,
41
- miniColumn,
42
- config: settings.columns,
43
- }),
44
- styleSheet = useAdoptedStyleSheet(host),
45
- collapsedColumns = useMemo(
46
- () =>
47
- settings.columns.reduce(
48
- (acc, column, index) =>
49
- layout[index] != null ||
50
- column.name === groupOnColumn?.name ||
51
- column.disabled
52
- ? acc
53
- : [...acc, columns.find((c) => c.name === column.name)],
54
- [],
55
- ),
56
- [columns, settings, layout],
57
- );
58
-
59
- const meta = useMeta({ columns: settings.columns });
60
- useTweenArray(layout, resizeSpeedFactor, (tweenedlayout) => {
61
- const layoutCss = toCss(tweenedlayout, meta.columns);
62
- styleSheet.replace(layoutCss);
63
- });
64
-
65
- useResizableColumns({
66
- host,
67
- canvasWidth,
68
- layout,
69
- setSettings: (update) => setSettings(update(settings)),
70
- });
71
-
72
- return { isMini, collapsedColumns, miniColumns };
73
- };
package/lib/use-footer.js DELETED
@@ -1,16 +0,0 @@
1
- export const useFooter = ({ host, ...rest }) => {
2
- const {
3
- csvFilename = 'omnitable.csv',
4
- xlsxFilename = 'omnitable.xlsx',
5
- xlsxSheetname = 'Omnitable',
6
- topPlacement = 'top-end',
7
- } = host;
8
-
9
- return {
10
- csvFilename,
11
- xlsxFilename,
12
- xlsxSheetname,
13
- topPlacement,
14
- ...rest,
15
- };
16
- };
@@ -1,71 +0,0 @@
1
- import { useCallback, useState } from '@pionjs/pion';
2
- import { navigate } from '@neovici/cosmoz-router';
3
- import { identity, invoke } from '@neovici/cosmoz-utils/function';
4
- import {
5
- hashUrl,
6
- multiParse,
7
- singleParse,
8
- } from '@neovici/cosmoz-utils/location';
9
-
10
- const makeLinker =
11
- (parameterize) =>
12
- (hashParam, value, codec = identity) => {
13
- const url = hashUrl(),
14
- searchParams = new URLSearchParams(url.hash.replace('#', ''));
15
-
16
- // TODO: make parameterize pure
17
- parameterize(hashParam, value, codec, searchParams);
18
-
19
- return (
20
- '#!' +
21
- Object.assign(url, { hash: searchParams }).href.replace(
22
- location.origin,
23
- '',
24
- )
25
- );
26
- },
27
- isEmpty = (v) => v == null || v === '',
28
- singleLink = makeLinker((hashParam, value, codec, searchParams) =>
29
- !isEmpty(codec(value))
30
- ? searchParams.set(hashParam, codec(value))
31
- : searchParams.delete(hashParam),
32
- ),
33
- multiLink = makeLinker((hashParam, value, codec, searchParams) =>
34
- Object.entries(value)
35
- .map(codec)
36
- .forEach(([key, value]) =>
37
- !isEmpty(value)
38
- ? searchParams.set(hashParam + key, value)
39
- : searchParams.delete(hashParam + key),
40
- ),
41
- );
42
-
43
- export const useHashState = (
44
- initial,
45
- param,
46
- { suffix = '', read, write, multi } = {},
47
- ) => {
48
- const [link, parseHash] = multi
49
- ? [multiLink, multiParse]
50
- : [singleLink, singleParse],
51
- [state, _setState] = useState(() =>
52
- param == null ? initial : (parseHash(param + suffix, read) ?? initial),
53
- ),
54
- setState = useCallback(
55
- (state) =>
56
- _setState((oldState) => {
57
- const newState = invoke(state, oldState);
58
-
59
- if (param != null) {
60
- navigate(link(param + suffix, newState, write), null, {
61
- notify: false,
62
- });
63
- }
64
-
65
- return newState;
66
- }),
67
- [param, suffix, link, write],
68
- );
69
-
70
- return [state, setState];
71
- };
package/lib/use-header.js DELETED
@@ -1,71 +0,0 @@
1
- import { useEffect, useMemo } from '@pionjs/pion';
2
-
3
- export const useHeader = ({
4
- host,
5
- selectedItems,
6
- data,
7
- sortAndGroupOptions,
8
- collapsedColumns,
9
- settings,
10
- filterFunctions,
11
- settingS,
12
- filters,
13
- ...rest
14
- }) => {
15
- const allSelected =
16
- data && data.length > 0 && selectedItems.length === data.length,
17
- onAllCheckboxChange = (event) => {
18
- if (event.target.checked) {
19
- host.shadowRoot.querySelector('#groupedList').selectAll();
20
- } else {
21
- host.shadowRoot.querySelector('#groupedList').deselectAll();
22
- }
23
- },
24
- { groupOnColumn } = sortAndGroupOptions,
25
- hasHiddenFilter = useMemo(
26
- () =>
27
- [
28
- groupOnColumn,
29
- ...collapsedColumns,
30
- ...settings.columns.filter((s) => s.disabled),
31
- ].some(
32
- (column) =>
33
- column && Object.keys(filterFunctions).includes(column.name),
34
- ),
35
- [filterFunctions, settings, collapsedColumns],
36
- ),
37
- settingsConfig = useMemo(
38
- () => ({
39
- ...settingS,
40
- collapsed: collapsedColumns,
41
- badge: hasHiddenFilter,
42
- filters,
43
- }),
44
- [settingS, collapsedColumns, hasHiddenFilter, filters],
45
- );
46
-
47
- useEffect(() => {
48
- const el = host.shadowRoot.querySelector('#tableContent'),
49
- observer = new ResizeObserver((entries) =>
50
- requestAnimationFrame(() => {
51
- host.style.setProperty(
52
- '--ot-height',
53
- entries[0]?.contentRect.height + 'px',
54
- );
55
- }),
56
- );
57
- observer.observe(el);
58
- return () => observer.unobserve(el);
59
- }, []);
60
-
61
- return {
62
- allSelected,
63
- onAllCheckboxChange,
64
- data,
65
- settingsConfig,
66
- filters,
67
- groupOnColumn,
68
- sortAndGroup: sortAndGroupOptions.sortAndGroup,
69
- ...rest,
70
- };
71
- };
package/lib/use-layout.js DELETED
@@ -1,32 +0,0 @@
1
- import { useMemo } from '@pionjs/pion';
2
- import { computeLayout } from './compute-layout';
3
-
4
- export const useLayout = ({ canvasWidth, groupOnColumn, config, miniColumn }) =>
5
- useMemo(() => {
6
- if (!Array.isArray(config) || canvasWidth == null || canvasWidth === 0) {
7
- return [];
8
- }
9
-
10
- const columnConfigs = config
11
- .map((c, index) => ({
12
- minWidth: c.minWidth,
13
- width: c.width,
14
- flex: c.flex,
15
- priority: c.priority,
16
- name: c.name,
17
- index,
18
- hidden: c.name === groupOnColumn?.name || c.disabled,
19
- }))
20
- .map((c) =>
21
- miniColumn ? { ...c, hidden: miniColumn.name !== c.name } : c,
22
- )
23
- .sort(
24
- (
25
- { index: aIndex, priority: aPriority },
26
- { index: bIndex, priority: bPriority },
27
- ) =>
28
- aPriority === bPriority ? bIndex - aIndex : aPriority - bPriority,
29
- );
30
-
31
- return computeLayout(columnConfigs, canvasWidth, columnConfigs.length);
32
- }, [canvasWidth, groupOnColumn, config]);