primereact 10.0.0 → 10.0.1

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 (319) hide show
  1. package/README.md +1 -1
  2. package/componentbase/componentbase.cjs.js +12 -7
  3. package/componentbase/componentbase.cjs.min.js +1 -1
  4. package/componentbase/componentbase.esm.min.mjs +1 -1
  5. package/componentbase/componentbase.esm.mjs +12 -7
  6. package/componentbase/componentbase.js +12 -7
  7. package/componentbase/componentbase.min.js +1 -1
  8. package/core/core.js +12 -7
  9. package/core/core.min.js +1 -1
  10. package/package.json +1 -1
  11. package/primereact.all.cjs.js +12 -7
  12. package/primereact.all.cjs.min.js +1 -1
  13. package/primereact.all.esm.min.mjs +1 -1
  14. package/primereact.all.esm.mjs +12 -7
  15. package/primereact.all.js +12 -7
  16. package/primereact.all.min.js +1 -1
  17. package/web-types.json +1 -1
  18. package/accordion/accordion.esm.js +0 -421
  19. package/accordion/accordion.esm.min.js +0 -1
  20. package/api/api.esm.js +0 -944
  21. package/api/api.esm.min.js +0 -1
  22. package/autocomplete/autocomplete.esm.js +0 -1127
  23. package/autocomplete/autocomplete.esm.min.js +0 -1
  24. package/avatar/avatar.esm.js +0 -245
  25. package/avatar/avatar.esm.min.js +0 -1
  26. package/avatargroup/avatargroup.esm.js +0 -55
  27. package/avatargroup/avatargroup.esm.min.js +0 -1
  28. package/badge/badge.esm.js +0 -110
  29. package/badge/badge.esm.min.js +0 -1
  30. package/blockui/blockui.esm.js +0 -265
  31. package/blockui/blockui.esm.min.js +0 -1
  32. package/breadcrumb/breadcrumb.esm.js +0 -351
  33. package/breadcrumb/breadcrumb.esm.min.js +0 -1
  34. package/button/button.esm.js +0 -295
  35. package/button/button.esm.min.js +0 -1
  36. package/calendar/calendar.esm.js +0 -3473
  37. package/calendar/calendar.esm.min.js +0 -1
  38. package/card/card.esm.js +0 -98
  39. package/card/card.esm.min.js +0 -1
  40. package/carousel/carousel.esm.js +0 -801
  41. package/carousel/carousel.esm.min.js +0 -1
  42. package/cascadeselect/cascadeselect.esm.js +0 -819
  43. package/cascadeselect/cascadeselect.esm.min.js +0 -1
  44. package/chart/chart.esm.js +0 -155
  45. package/chart/chart.esm.min.js +0 -1
  46. package/checkbox/checkbox.esm.js +0 -357
  47. package/checkbox/checkbox.esm.min.js +0 -1
  48. package/chip/chip.esm.js +0 -248
  49. package/chip/chip.esm.min.js +0 -1
  50. package/chips/chips.esm.js +0 -501
  51. package/chips/chips.esm.min.js +0 -1
  52. package/colorpicker/colorpicker.esm.js +0 -788
  53. package/colorpicker/colorpicker.esm.min.js +0 -1
  54. package/column/column.esm.js +0 -8
  55. package/column/column.esm.min.js +0 -1
  56. package/columngroup/columngroup.esm.js +0 -6
  57. package/columngroup/columngroup.esm.min.js +0 -1
  58. package/componentbase/componentbase.esm.js +0 -323
  59. package/componentbase/componentbase.esm.min.js +0 -1
  60. package/confirmdialog/confirmdialog.esm.js +0 -376
  61. package/confirmdialog/confirmdialog.esm.min.js +0 -1
  62. package/confirmpopup/confirmpopup.esm.js +0 -610
  63. package/confirmpopup/confirmpopup.esm.min.js +0 -1
  64. package/contextmenu/contextmenu.esm.js +0 -664
  65. package/contextmenu/contextmenu.esm.min.js +0 -1
  66. package/csstransition/csstransition.esm.js +0 -138
  67. package/csstransition/csstransition.esm.min.js +0 -1
  68. package/datascroller/datascroller.esm.js +0 -320
  69. package/datascroller/datascroller.esm.min.js +0 -1
  70. package/datatable/datatable.esm.js +0 -6636
  71. package/datatable/datatable.esm.min.js +0 -1
  72. package/dataview/dataview.esm.js +0 -506
  73. package/dataview/dataview.esm.min.js +0 -1
  74. package/deferredcontent/deferredcontent.esm.js +0 -133
  75. package/deferredcontent/deferredcontent.esm.min.js +0 -1
  76. package/dialog/dialog.esm.js +0 -983
  77. package/dialog/dialog.esm.min.js +0 -1
  78. package/divider/divider.esm.js +0 -79
  79. package/divider/divider.esm.min.js +0 -1
  80. package/dock/dock.esm.js +0 -348
  81. package/dock/dock.esm.min.js +0 -1
  82. package/dropdown/dropdown.esm.js +0 -1380
  83. package/dropdown/dropdown.esm.min.js +0 -1
  84. package/editor/editor.esm.js +0 -338
  85. package/editor/editor.esm.min.js +0 -1
  86. package/fieldset/fieldset.esm.js +0 -270
  87. package/fieldset/fieldset.esm.min.js +0 -1
  88. package/fileupload/fileupload.esm.js +0 -1005
  89. package/fileupload/fileupload.esm.min.js +0 -1
  90. package/galleria/galleria.esm.js +0 -1090
  91. package/galleria/galleria.esm.min.js +0 -1
  92. package/hooks/hooks.esm.js +0 -1042
  93. package/hooks/hooks.esm.min.js +0 -1
  94. package/iconbase/iconbase.esm.js +0 -33
  95. package/iconbase/iconbase.esm.min.js +0 -1
  96. package/icons/angledoubledown/index.esm.js +0 -39
  97. package/icons/angledoubledown/index.esm.min.js +0 -1
  98. package/icons/angledoubleleft/index.esm.js +0 -39
  99. package/icons/angledoubleleft/index.esm.min.js +0 -1
  100. package/icons/angledoubleright/index.esm.js +0 -39
  101. package/icons/angledoubleright/index.esm.min.js +0 -1
  102. package/icons/angledoubleup/index.esm.js +0 -39
  103. package/icons/angledoubleup/index.esm.min.js +0 -1
  104. package/icons/angledown/index.esm.js +0 -37
  105. package/icons/angledown/index.esm.min.js +0 -1
  106. package/icons/angleleft/index.esm.js +0 -37
  107. package/icons/angleleft/index.esm.min.js +0 -1
  108. package/icons/angleright/index.esm.js +0 -37
  109. package/icons/angleright/index.esm.min.js +0 -1
  110. package/icons/angleup/index.esm.js +0 -37
  111. package/icons/angleup/index.esm.min.js +0 -1
  112. package/icons/arrowdown/index.esm.js +0 -661
  113. package/icons/arrowdown/index.esm.min.js +0 -1
  114. package/icons/arrowup/index.esm.js +0 -661
  115. package/icons/arrowup/index.esm.min.js +0 -1
  116. package/icons/ban/index.esm.js +0 -659
  117. package/icons/ban/index.esm.min.js +0 -1
  118. package/icons/bars/index.esm.js +0 -39
  119. package/icons/bars/index.esm.min.js +0 -1
  120. package/icons/calendar/index.esm.js +0 -37
  121. package/icons/calendar/index.esm.min.js +0 -1
  122. package/icons/check/index.esm.js +0 -37
  123. package/icons/check/index.esm.min.js +0 -1
  124. package/icons/chevrondown/index.esm.js +0 -37
  125. package/icons/chevrondown/index.esm.min.js +0 -1
  126. package/icons/chevronleft/index.esm.js +0 -37
  127. package/icons/chevronleft/index.esm.min.js +0 -1
  128. package/icons/chevronright/index.esm.js +0 -37
  129. package/icons/chevronright/index.esm.min.js +0 -1
  130. package/icons/chevronup/index.esm.js +0 -37
  131. package/icons/chevronup/index.esm.min.js +0 -1
  132. package/icons/download/index.esm.js +0 -661
  133. package/icons/download/index.esm.min.js +0 -1
  134. package/icons/exclamationtriangle/index.esm.js +0 -665
  135. package/icons/exclamationtriangle/index.esm.min.js +0 -1
  136. package/icons/eye/index.esm.js +0 -39
  137. package/icons/eye/index.esm.min.js +0 -1
  138. package/icons/eyeslash/index.esm.js +0 -661
  139. package/icons/eyeslash/index.esm.min.js +0 -1
  140. package/icons/filter/index.esm.js +0 -659
  141. package/icons/filter/index.esm.min.js +0 -1
  142. package/icons/filterslash/index.esm.js +0 -661
  143. package/icons/filterslash/index.esm.min.js +0 -1
  144. package/icons/infocircle/index.esm.js +0 -661
  145. package/icons/infocircle/index.esm.min.js +0 -1
  146. package/icons/minus/index.esm.js +0 -37
  147. package/icons/minus/index.esm.min.js +0 -1
  148. package/icons/pencil/index.esm.js +0 -659
  149. package/icons/pencil/index.esm.min.js +0 -1
  150. package/icons/plus/index.esm.js +0 -659
  151. package/icons/plus/index.esm.min.js +0 -1
  152. package/icons/refresh/index.esm.js +0 -661
  153. package/icons/refresh/index.esm.min.js +0 -1
  154. package/icons/search/index.esm.js +0 -661
  155. package/icons/search/index.esm.min.js +0 -1
  156. package/icons/searchminus/index.esm.js +0 -661
  157. package/icons/searchminus/index.esm.min.js +0 -1
  158. package/icons/searchplus/index.esm.js +0 -661
  159. package/icons/searchplus/index.esm.min.js +0 -1
  160. package/icons/sortalt/index.esm.js +0 -668
  161. package/icons/sortalt/index.esm.min.js +0 -1
  162. package/icons/sortamountdown/index.esm.js +0 -674
  163. package/icons/sortamountdown/index.esm.min.js +0 -1
  164. package/icons/sortamountupalt/index.esm.js +0 -674
  165. package/icons/sortamountupalt/index.esm.min.js +0 -1
  166. package/icons/spinner/index.esm.js +0 -659
  167. package/icons/spinner/index.esm.min.js +0 -1
  168. package/icons/star/index.esm.js +0 -659
  169. package/icons/star/index.esm.min.js +0 -1
  170. package/icons/starfill/index.esm.js +0 -659
  171. package/icons/starfill/index.esm.min.js +0 -1
  172. package/icons/thlarge/index.esm.js +0 -661
  173. package/icons/thlarge/index.esm.min.js +0 -1
  174. package/icons/times/index.esm.js +0 -37
  175. package/icons/times/index.esm.min.js +0 -1
  176. package/icons/timescircle/index.esm.js +0 -661
  177. package/icons/timescircle/index.esm.min.js +0 -1
  178. package/icons/trash/index.esm.js +0 -661
  179. package/icons/trash/index.esm.min.js +0 -1
  180. package/icons/undo/index.esm.js +0 -661
  181. package/icons/undo/index.esm.min.js +0 -1
  182. package/icons/upload/index.esm.js +0 -661
  183. package/icons/upload/index.esm.min.js +0 -1
  184. package/icons/windowmaximize/index.esm.js +0 -661
  185. package/icons/windowmaximize/index.esm.min.js +0 -1
  186. package/icons/windowminimize/index.esm.js +0 -661
  187. package/icons/windowminimize/index.esm.min.js +0 -1
  188. package/image/image.esm.js +0 -1162
  189. package/image/image.esm.min.js +0 -1
  190. package/inplace/inplace.esm.js +0 -243
  191. package/inplace/inplace.esm.min.js +0 -1
  192. package/inputmask/inputmask.esm.js +0 -560
  193. package/inputmask/inputmask.esm.min.js +0 -1
  194. package/inputnumber/inputnumber.esm.js +0 -1209
  195. package/inputnumber/inputnumber.esm.min.js +0 -1
  196. package/inputswitch/inputswitch.esm.js +0 -291
  197. package/inputswitch/inputswitch.esm.min.js +0 -1
  198. package/inputtext/inputtext.esm.js +0 -171
  199. package/inputtext/inputtext.esm.min.js +0 -1
  200. package/inputtextarea/inputtextarea.esm.js +0 -220
  201. package/inputtextarea/inputtextarea.esm.min.js +0 -1
  202. package/keyfilter/keyfilter.esm.js +0 -108
  203. package/keyfilter/keyfilter.esm.min.js +0 -1
  204. package/knob/knob.esm.js +0 -318
  205. package/knob/knob.esm.min.js +0 -1
  206. package/listbox/listbox.esm.js +0 -810
  207. package/listbox/listbox.esm.min.js +0 -1
  208. package/megamenu/megamenu.esm.js +0 -716
  209. package/megamenu/megamenu.esm.min.js +0 -1
  210. package/mention/mention.esm.js +0 -771
  211. package/mention/mention.esm.min.js +0 -1
  212. package/menu/menu.esm.js +0 -485
  213. package/menu/menu.esm.min.js +0 -1
  214. package/menubar/menubar.esm.js +0 -584
  215. package/menubar/menubar.esm.min.js +0 -1
  216. package/message/message.esm.js +0 -169
  217. package/message/message.esm.min.js +0 -1
  218. package/messages/messages.esm.js +0 -439
  219. package/messages/messages.esm.min.js +0 -1
  220. package/multiselect/multiselect.esm.js +0 -1724
  221. package/multiselect/multiselect.esm.min.js +0 -1
  222. package/multistatecheckbox/multistatecheckbox.esm.js +0 -352
  223. package/multistatecheckbox/multistatecheckbox.esm.min.js +0 -1
  224. package/orderlist/orderlist.esm.js +0 -816
  225. package/orderlist/orderlist.esm.min.js +0 -1
  226. package/organizationchart/organizationchart.esm.js +0 -480
  227. package/organizationchart/organizationchart.esm.min.js +0 -1
  228. package/overlaypanel/overlaypanel.esm.js +0 -516
  229. package/overlaypanel/overlaypanel.esm.min.js +0 -1
  230. package/overlayservice/overlayservice.esm.js +0 -7
  231. package/overlayservice/overlayservice.esm.min.js +0 -1
  232. package/paginator/paginator.esm.js +0 -933
  233. package/paginator/paginator.esm.min.js +0 -1
  234. package/panel/panel.esm.js +0 -316
  235. package/panel/panel.esm.min.js +0 -1
  236. package/panelmenu/panelmenu.esm.js +0 -645
  237. package/panelmenu/panelmenu.esm.min.js +0 -1
  238. package/passthrough/index.esm.js +0 -71
  239. package/passthrough/index.esm.min.js +0 -1
  240. package/passthrough/tailwind/index.esm.js +0 -3509
  241. package/passthrough/tailwind/index.esm.min.js +0 -1
  242. package/password/password.esm.js +0 -567
  243. package/password/password.esm.min.js +0 -1
  244. package/picklist/picklist.esm.js +0 -1119
  245. package/picklist/picklist.esm.min.js +0 -1
  246. package/portal/portal.esm.js +0 -110
  247. package/portal/portal.esm.min.js +0 -1
  248. package/primereact.all.esm.js +0 -51646
  249. package/primereact.all.esm.min.js +0 -1
  250. package/progressbar/progressbar.esm.js +0 -190
  251. package/progressbar/progressbar.esm.min.js +0 -1
  252. package/progressspinner/progressspinner.esm.js +0 -88
  253. package/progressspinner/progressspinner.esm.min.js +0 -1
  254. package/radiobutton/radiobutton.esm.js +0 -329
  255. package/radiobutton/radiobutton.esm.min.js +0 -1
  256. package/rating/rating.esm.js +0 -273
  257. package/rating/rating.esm.min.js +0 -1
  258. package/ripple/ripple.esm.js +0 -100
  259. package/ripple/ripple.esm.min.js +0 -1
  260. package/row/row.esm.js +0 -36
  261. package/row/row.esm.min.js +0 -1
  262. package/scrollpanel/scrollpanel.esm.js +0 -210
  263. package/scrollpanel/scrollpanel.esm.min.js +0 -1
  264. package/scrolltop/scrolltop.esm.js +0 -269
  265. package/scrolltop/scrolltop.esm.min.js +0 -1
  266. package/selectbutton/selectbutton.esm.js +0 -327
  267. package/selectbutton/selectbutton.esm.min.js +0 -1
  268. package/sidebar/sidebar.esm.js +0 -543
  269. package/sidebar/sidebar.esm.min.js +0 -1
  270. package/skeleton/skeleton.esm.js +0 -125
  271. package/skeleton/skeleton.esm.min.js +0 -1
  272. package/slidemenu/slidemenu.esm.js +0 -689
  273. package/slidemenu/slidemenu.esm.min.js +0 -1
  274. package/slider/slider.esm.js +0 -478
  275. package/slider/slider.esm.min.js +0 -1
  276. package/speeddial/speeddial.esm.js +0 -521
  277. package/speeddial/speeddial.esm.min.js +0 -1
  278. package/splitbutton/splitbutton.esm.js +0 -545
  279. package/splitbutton/splitbutton.esm.min.js +0 -1
  280. package/splitter/splitter.esm.js +0 -466
  281. package/splitter/splitter.esm.min.js +0 -1
  282. package/steps/steps.esm.js +0 -294
  283. package/steps/steps.esm.min.js +0 -1
  284. package/styleclass/styleclass.esm.js +0 -269
  285. package/styleclass/styleclass.esm.min.js +0 -1
  286. package/tabmenu/tabmenu.esm.js +0 -332
  287. package/tabmenu/tabmenu.esm.min.js +0 -1
  288. package/tabview/tabview.esm.js +0 -678
  289. package/tabview/tabview.esm.min.js +0 -1
  290. package/tag/tag.esm.js +0 -117
  291. package/tag/tag.esm.min.js +0 -1
  292. package/terminal/terminal.esm.js +0 -280
  293. package/terminal/terminal.esm.min.js +0 -1
  294. package/terminalservice/terminalservice.esm.js +0 -7
  295. package/terminalservice/terminalservice.esm.min.js +0 -1
  296. package/tieredmenu/tieredmenu.esm.js +0 -699
  297. package/tieredmenu/tieredmenu.esm.min.js +0 -1
  298. package/timeline/timeline.esm.js +0 -164
  299. package/timeline/timeline.esm.min.js +0 -1
  300. package/toast/toast.esm.js +0 -739
  301. package/toast/toast.esm.min.js +0 -1
  302. package/togglebutton/togglebutton.esm.js +0 -217
  303. package/togglebutton/togglebutton.esm.min.js +0 -1
  304. package/toolbar/toolbar.esm.js +0 -79
  305. package/toolbar/toolbar.esm.min.js +0 -1
  306. package/tooltip/tooltip.esm.js +0 -696
  307. package/tooltip/tooltip.esm.min.js +0 -1
  308. package/tree/tree.esm.js +0 -1403
  309. package/tree/tree.esm.min.js +0 -1
  310. package/treeselect/treeselect.esm.js +0 -930
  311. package/treeselect/treeselect.esm.min.js +0 -1
  312. package/treetable/treetable.esm.js +0 -3094
  313. package/treetable/treetable.esm.min.js +0 -1
  314. package/tristatecheckbox/tristatecheckbox.esm.js +0 -292
  315. package/tristatecheckbox/tristatecheckbox.esm.min.js +0 -1
  316. package/utils/utils.esm.js +0 -2383
  317. package/utils/utils.esm.min.js +0 -1
  318. package/virtualscroller/virtualscroller.esm.js +0 -972
  319. package/virtualscroller/virtualscroller.esm.min.js +0 -1
@@ -1,3094 +0,0 @@
1
- 'use client';
2
-
3
- import * as React from 'react';
4
- import PrimeReact, { FilterMatchMode, ariaLabel, localeOption, PrimeReactContext, FilterService } from 'primereact/api';
5
- import { ComponentBase, useHandleStyle } from 'primereact/componentbase';
6
- import { ObjectUtils, classNames, DomHandler, mergeProps, IconUtils } from 'primereact/utils';
7
- import { useEventListener, useUnmountEffect, useMountEffect } from 'primereact/hooks';
8
- import { ArrowDownIcon } from 'primereact/icons/arrowdown';
9
- import { ArrowUpIcon } from 'primereact/icons/arrowup';
10
- import { SpinnerIcon } from 'primereact/icons/spinner';
11
- import { Paginator } from 'primereact/paginator';
12
- import { CheckIcon } from 'primereact/icons/check';
13
- import { ChevronDownIcon } from 'primereact/icons/chevrondown';
14
- import { ChevronRightIcon } from 'primereact/icons/chevronright';
15
- import { MinusIcon } from 'primereact/icons/minus';
16
- import { Ripple } from 'primereact/ripple';
17
- import { OverlayService } from 'primereact/overlayservice';
18
- import { SortAltIcon } from 'primereact/icons/sortalt';
19
- import { SortAmountDownIcon } from 'primereact/icons/sortamountdown';
20
- import { SortAmountUpAltIcon } from 'primereact/icons/sortamountupalt';
21
- import { InputText } from 'primereact/inputtext';
22
- import { Tooltip } from 'primereact/tooltip';
23
-
24
- function _extends() {
25
- _extends = Object.assign ? Object.assign.bind() : function (target) {
26
- for (var i = 1; i < arguments.length; i++) {
27
- var source = arguments[i];
28
- for (var key in source) {
29
- if (Object.prototype.hasOwnProperty.call(source, key)) {
30
- target[key] = source[key];
31
- }
32
- }
33
- }
34
- return target;
35
- };
36
- return _extends.apply(this, arguments);
37
- }
38
-
39
- function _typeof(o) {
40
- "@babel/helpers - typeof";
41
-
42
- return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {
43
- return typeof o;
44
- } : function (o) {
45
- return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
46
- }, _typeof(o);
47
- }
48
-
49
- function _toPrimitive(input, hint) {
50
- if (_typeof(input) !== "object" || input === null) return input;
51
- var prim = input[Symbol.toPrimitive];
52
- if (prim !== undefined) {
53
- var res = prim.call(input, hint || "default");
54
- if (_typeof(res) !== "object") return res;
55
- throw new TypeError("@@toPrimitive must return a primitive value.");
56
- }
57
- return (hint === "string" ? String : Number)(input);
58
- }
59
-
60
- function _toPropertyKey(arg) {
61
- var key = _toPrimitive(arg, "string");
62
- return _typeof(key) === "symbol" ? key : String(key);
63
- }
64
-
65
- function _defineProperty(obj, key, value) {
66
- key = _toPropertyKey(key);
67
- if (key in obj) {
68
- Object.defineProperty(obj, key, {
69
- value: value,
70
- enumerable: true,
71
- configurable: true,
72
- writable: true
73
- });
74
- } else {
75
- obj[key] = value;
76
- }
77
- return obj;
78
- }
79
-
80
- function _arrayLikeToArray$4(arr, len) {
81
- if (len == null || len > arr.length) len = arr.length;
82
- for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
83
- return arr2;
84
- }
85
-
86
- function _arrayWithoutHoles(arr) {
87
- if (Array.isArray(arr)) return _arrayLikeToArray$4(arr);
88
- }
89
-
90
- function _iterableToArray(iter) {
91
- if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
92
- }
93
-
94
- function _unsupportedIterableToArray$4(o, minLen) {
95
- if (!o) return;
96
- if (typeof o === "string") return _arrayLikeToArray$4(o, minLen);
97
- var n = Object.prototype.toString.call(o).slice(8, -1);
98
- if (n === "Object" && o.constructor) n = o.constructor.name;
99
- if (n === "Map" || n === "Set") return Array.from(o);
100
- if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$4(o, minLen);
101
- }
102
-
103
- function _nonIterableSpread() {
104
- throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
105
- }
106
-
107
- function _toConsumableArray(arr) {
108
- return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray$4(arr) || _nonIterableSpread();
109
- }
110
-
111
- function _arrayWithHoles(arr) {
112
- if (Array.isArray(arr)) return arr;
113
- }
114
-
115
- function _iterableToArrayLimit(r, l) {
116
- var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
117
- if (null != t) {
118
- var e,
119
- n,
120
- i,
121
- u,
122
- a = [],
123
- f = !0,
124
- o = !1;
125
- try {
126
- if (i = (t = t.call(r)).next, 0 === l) {
127
- if (Object(t) !== t) return;
128
- f = !1;
129
- } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);
130
- } catch (r) {
131
- o = !0, n = r;
132
- } finally {
133
- try {
134
- if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return;
135
- } finally {
136
- if (o) throw n;
137
- }
138
- }
139
- return a;
140
- }
141
- }
142
-
143
- function _nonIterableRest() {
144
- throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
145
- }
146
-
147
- function _slicedToArray(arr, i) {
148
- return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray$4(arr, i) || _nonIterableRest();
149
- }
150
-
151
- var ColumnBase = ComponentBase.extend({
152
- defaultProps: {
153
- __TYPE: 'Column',
154
- align: null,
155
- alignFrozen: 'left',
156
- alignHeader: null,
157
- body: null,
158
- bodyClassName: null,
159
- bodyStyle: null,
160
- cellEditValidator: null,
161
- cellEditValidatorEvent: 'click',
162
- className: null,
163
- colSpan: null,
164
- columnKey: null,
165
- dataType: 'text',
166
- editor: null,
167
- excludeGlobalFilter: false,
168
- expander: false,
169
- exportField: null,
170
- exportable: true,
171
- field: null,
172
- filter: false,
173
- filterApply: null,
174
- filterClear: null,
175
- filterElement: null,
176
- filterField: null,
177
- filterFooter: null,
178
- filterFunction: null,
179
- filterHeader: null,
180
- filterHeaderClassName: null,
181
- filterHeaderStyle: null,
182
- filterMatchMode: null,
183
- filterMatchModeOptions: null,
184
- filterMaxLength: null,
185
- filterMenuClassName: null,
186
- filterMenuStyle: null,
187
- filterPlaceholder: null,
188
- filterType: 'text',
189
- footer: null,
190
- footerClassName: null,
191
- footerStyle: null,
192
- frozen: false,
193
- header: null,
194
- headerClassName: null,
195
- headerStyle: null,
196
- headerTooltip: null,
197
- headerTooltipOptions: null,
198
- hidden: false,
199
- maxConstraints: 2,
200
- onBeforeCellEditHide: null,
201
- onBeforeCellEditShow: null,
202
- onCellEditCancel: null,
203
- onCellEditComplete: null,
204
- onCellEditInit: null,
205
- onFilterApplyClick: null,
206
- onFilterClear: null,
207
- onFilterConstraintAdd: null,
208
- onFilterConstraintRemove: null,
209
- onFilterMatchModeChange: null,
210
- onFilterOperatorChange: null,
211
- reorderable: true,
212
- resizeable: true,
213
- rowEditor: false,
214
- rowReorder: false,
215
- rowReorderIcon: null,
216
- rowSpan: null,
217
- selectionMode: null,
218
- showAddButton: true,
219
- showApplyButton: true,
220
- showClearButton: true,
221
- showFilterMatchModes: true,
222
- showFilterMenu: true,
223
- showFilterMenuOptions: true,
224
- showFilterOperator: true,
225
- sortField: null,
226
- sortFunction: null,
227
- sortable: false,
228
- sortableDisabled: false,
229
- style: null,
230
- children: undefined
231
- },
232
- getCProp: function getCProp(column, name) {
233
- return ObjectUtils.getComponentProp(column, name, ColumnBase.defaultProps);
234
- },
235
- getCProps: function getCProps(column) {
236
- return ObjectUtils.getComponentProps(column, ColumnBase.defaultProps);
237
- },
238
- getCOtherProps: function getCOtherProps(column) {
239
- return ObjectUtils.getComponentDiffProps(column, ColumnBase.defaultProps);
240
- }
241
- });
242
-
243
- var styles = "\n@layer primereact {\n .p-treetable {\n position: relative;\n }\n \n .p-treetable > .p-treetable-wrapper {\n overflow: auto;\n }\n \n .p-treetable table {\n border-collapse: collapse;\n width: 100%;\n table-layout: fixed;\n }\n \n .p-treetable .p-sortable-column {\n cursor: pointer;\n user-select: none;\n }\n \n .p-treetable-selectable .p-treetable-tbody > tr {\n cursor: pointer;\n }\n \n .p-treetable-toggler {\n cursor: pointer;\n user-select: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n vertical-align: middle;\n overflow: hidden;\n position: relative;\n }\n \n .p-treetable-toggler + .p-checkbox {\n vertical-align: middle;\n }\n \n .p-treetable-toggler + .p-checkbox + span {\n vertical-align: middle;\n }\n \n /* Resizable */\n .p-treetable-resizable > .p-treetable-wrapper {\n overflow-x: auto;\n }\n \n .p-treetable-resizable .p-treetable-thead > tr > th,\n .p-treetable-resizable .p-treetable-tfoot > tr > td,\n .p-treetable-resizable .p-treetable-tbody > tr > td {\n overflow: hidden;\n }\n \n .p-treetable-resizable .p-resizable-column {\n background-clip: padding-box;\n position: relative;\n }\n \n .p-treetable-resizable-fit .p-resizable-column:last-child .p-column-resizer {\n display: none;\n }\n \n .p-treetable .p-column-resizer {\n display: block;\n position: absolute !important;\n top: 0;\n right: 0;\n margin: 0;\n width: 0.5rem;\n height: 100%;\n padding: 0px;\n cursor: col-resize;\n border: 1px solid transparent;\n }\n \n .p-treetable .p-column-resizer-helper {\n width: 1px;\n position: absolute;\n z-index: 10;\n display: none;\n }\n \n /* Scrollable */\n .p-treetable-scrollable-wrapper {\n position: relative;\n }\n .p-treetable-scrollable-header,\n .p-treetable-scrollable-footer {\n overflow: hidden;\n border: 0 none;\n }\n \n .p-treetable-scrollable-body {\n overflow: auto;\n position: relative;\n }\n \n .p-treetable-virtual-table {\n position: absolute;\n }\n \n /* Frozen Columns */\n .p-treetable-frozen-view .p-treetable-scrollable-body {\n overflow: hidden;\n }\n \n .p-treetable-unfrozen-view {\n position: absolute;\n top: 0px;\n left: 0px;\n }\n \n /* Reorder */\n .p-treetable-reorder-indicator-up,\n .p-treetable-reorder-indicator-down {\n position: absolute;\n display: none;\n }\n \n /* Loader */\n .p-treetable .p-treetable-loading-overlay {\n position: absolute;\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 2;\n }\n}\n";
244
- var classes = {
245
- root: function root(_ref) {
246
- var props = _ref.props,
247
- isRowSelectionMode = _ref.isRowSelectionMode;
248
- return classNames('p-treetable p-component', {
249
- 'p-treetable-hoverable-rows': props.rowHover,
250
- 'p-treetable-selectable': isRowSelectionMode(),
251
- 'p-treetable-resizable': props.resizableColumns,
252
- 'p-treetable-resizable-fit': props.resizableColumns && props.columnResizeMode === 'fit',
253
- 'p-treetable-striped': props.stripedRows,
254
- 'p-treetable-gridlines': props.showGridlines
255
- });
256
- },
257
- loadingIcon: 'p-treetable-loading-icon',
258
- loadingWrapper: 'p-treetable-loading',
259
- loadingOverlay: 'p-treetable-loading-overlay p-component-overlay',
260
- header: 'p-treetable-header',
261
- footer: 'p-treetable-footer',
262
- resizeHelper: 'p-column-resizer-helper',
263
- reorderIndicatorUp: 'p-datatable-reorder-indicator-up',
264
- reorderIndicatorDown: 'p-datatable-reorder-indicator-down',
265
- wrapper: 'p-treetable-wrapper',
266
- table: function table(_ref2) {
267
- var props = _ref2.props;
268
- return classNames('p-treetable-table', {
269
- 'p-treetable-scrollable-table': props.scrollable,
270
- 'p-treetable-resizable-table': props.resizableColumns,
271
- 'p-treetable-resizable-table-fit': props.resizableColumns && props.columnResizeMode === 'fit'
272
- });
273
- },
274
- scrollableWrapper: 'p-treetable-wrapper p-treetable-scrollable-wrapper',
275
- thead: 'p-treetable-thead',
276
- tbody: 'p-treetable-tbody',
277
- tfoot: 'p-treetable-tfoot',
278
- emptyMessage: 'p-treetable-emptymessage',
279
- bodyCell: function bodyCell(_ref3) {
280
- var props = _ref3.bodyProps,
281
- editingState = _ref3.editingState;
282
- return classNames({
283
- 'p-editable-column': props.editor,
284
- 'p-cell-editing': props.editor ? editingState : false
285
- });
286
- },
287
- sortBadge: 'p-sortable-column-badge',
288
- headerTitle: 'p-column-title',
289
- headerCell: function headerCell(_ref4) {
290
- var props = _ref4.headerProps,
291
- column = _ref4.column,
292
- options = _ref4.options,
293
- getColumnProp = _ref4.getColumnProp,
294
- sorted = _ref4.sorted,
295
- frozen = _ref4.frozen;
296
- return options.filterOnly ? 'p-filter-column' : classNames({
297
- 'p-sortable-column': getColumnProp(column, 'sortable'),
298
- 'p-highlight': sorted,
299
- 'p-frozen-column': frozen,
300
- 'p-resizable-column': props.resizableColumns && getColumnProp(column, 'resizeable'),
301
- 'p-reorderable-column': props.reorderableColumns && getColumnProp(column, 'reorderable') && !frozen
302
- });
303
- },
304
- columnResizer: 'p-column-resizer p-clickable',
305
- sortIcon: 'p-sortable-column-icon',
306
- row: function row(_ref5) {
307
- var isSelected = _ref5.isSelected,
308
- props = _ref5.rowProps;
309
- return {
310
- 'p-highlight': isSelected(),
311
- 'p-highlight-contextmenu': props.contextMenuSelectionKey && props.contextMenuSelectionKey === props.node.key,
312
- 'p-row-odd': props.rowIndex % 2 !== 0
313
- };
314
- },
315
- checkboxWrapper: 'p-checkbox p-treetable-checkbox p-component',
316
- checkbox: function checkbox(_ref6) {
317
- var checked = _ref6.checked,
318
- partialChecked = _ref6.partialChecked;
319
- return classNames('p-checkbox-box', {
320
- 'p-highlight': checked,
321
- 'p-indeterminate': partialChecked
322
- });
323
- },
324
- checkboxIcon: 'p-checkbox-icon p-c',
325
- rowToggler: 'p-treetable-toggler p-link p-unselectable-text',
326
- rowTogglerIcon: 'p-treetable-toggler-icon',
327
- scrollableBody: 'p-treetable-scrollable-body',
328
- scrollableHeaderTable: 'p-treetable-scrollable-header-table',
329
- scrollableHeaderBox: 'p-treetable-scrollable-header-box',
330
- scrollableHeader: 'p-treetable-scrollable-header',
331
- scrollableBodyTable: 'p-treetable-scrollable-body-table',
332
- scrollableFooter: 'p-treetable-scrollable-footer',
333
- scrollableFooterBox: 'p-treetable-scrollable-footer-box',
334
- scrollableFooterTable: 'p-treetable-scrollable-footer-table',
335
- scrollable: function scrollable(_ref7) {
336
- var props = _ref7.scrolaableProps;
337
- return classNames('p-treetable-scrollable-view', {
338
- 'p-treetable-frozen-view': props.frozen,
339
- 'p-treetable-unfrozen-view': !props.frozen && props.frozenWidth
340
- });
341
- },
342
- scrollableColgroup: 'p-treetable-scrollable-colgroup'
343
- };
344
- var TreeTableBase = ComponentBase.extend({
345
- defaultProps: {
346
- __TYPE: 'TreeTable',
347
- alwaysShowPaginator: true,
348
- checkboxIcon: null,
349
- className: null,
350
- columnResizeMode: 'fit',
351
- contextMenuSelectionKey: null,
352
- currentPageReportTemplate: '({currentPage} of {totalPages})',
353
- defaultSortOrder: 1,
354
- emptyMessage: null,
355
- expandedKeys: null,
356
- filterDelay: 300,
357
- filterLocale: undefined,
358
- filterMode: 'lenient',
359
- filters: null,
360
- first: null,
361
- footer: null,
362
- footerColumnGroup: null,
363
- frozenFooterColumnGroup: null,
364
- frozenHeaderColumnGroup: null,
365
- frozenWidth: null,
366
- globalFilter: null,
367
- globalFilterMatchMode: FilterMatchMode.CONTAINS,
368
- header: null,
369
- headerColumnGroup: null,
370
- id: null,
371
- lazy: false,
372
- loading: false,
373
- loadingIcon: null,
374
- metaKeySelection: true,
375
- multiSortMeta: null,
376
- onColReorder: null,
377
- onCollapse: null,
378
- onColumnResizeEnd: null,
379
- onContextMenu: null,
380
- onContextMenuSelectionChange: null,
381
- onExpand: null,
382
- onFilter: null,
383
- onPage: null,
384
- onRowClick: null,
385
- onRowMouseEnter: null,
386
- onRowMouseLeave: null,
387
- onSelect: null,
388
- onSelectionChange: null,
389
- onSort: null,
390
- onToggle: null,
391
- onUnselect: null,
392
- onValueChange: null,
393
- pageLinkSize: 5,
394
- paginator: false,
395
- paginatorClassName: null,
396
- paginatorDropdownAppendTo: null,
397
- paginatorLeft: null,
398
- paginatorPosition: 'bottom',
399
- paginatorRight: null,
400
- paginatorTemplate: 'FirstPageLink PrevPageLink PageLinks NextPageLink LastPageLink RowsPerPageDropdown',
401
- propagateSelectionDown: true,
402
- propagateSelectionUp: true,
403
- removableSort: false,
404
- reorderableColumns: false,
405
- reorderIndicatorDownIcon: null,
406
- reorderIndicatorUpIcon: null,
407
- resizableColumns: false,
408
- rowClassName: null,
409
- rowHover: false,
410
- rows: null,
411
- rowsPerPageOptions: null,
412
- scrollHeight: null,
413
- scrollable: false,
414
- selectOnEdit: true,
415
- selectionKeys: null,
416
- selectionMode: null,
417
- showGridlines: false,
418
- sortField: null,
419
- sortMode: 'single',
420
- sortIcon: null,
421
- sortOrder: null,
422
- stripedRows: false,
423
- style: null,
424
- tabIndex: 0,
425
- tableClassName: null,
426
- tableStyle: null,
427
- totalRecords: null,
428
- value: null,
429
- children: undefined
430
- },
431
- css: {
432
- classes: classes,
433
- styles: styles
434
- }
435
- });
436
-
437
- function ownKeys$5(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
438
- function _objectSpread$5(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$5(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$5(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
439
- var TreeTableBodyCell = function TreeTableBodyCell(props) {
440
- var _React$useState = React.useState(false),
441
- _React$useState2 = _slicedToArray(_React$useState, 2),
442
- editingState = _React$useState2[0],
443
- setEditingState = _React$useState2[1];
444
- var elementRef = React.useRef(null);
445
- var keyHelperRef = React.useRef(null);
446
- var selfClick = React.useRef(false);
447
- var overlayEventListener = React.useRef(null);
448
- var tabIndexTimeout = React.useRef(null);
449
- var getColumnProp = function getColumnProp(name) {
450
- return ColumnBase.getCProp(props.column, name);
451
- };
452
- var getColumnProps = function getColumnProps(column) {
453
- return ColumnBase.getCProps(column);
454
- };
455
- var _props$ptCallbacks = props.ptCallbacks,
456
- ptm = _props$ptCallbacks.ptm,
457
- ptmo = _props$ptCallbacks.ptmo,
458
- cx = _props$ptCallbacks.cx;
459
- var getColumnPTOptions = function getColumnPTOptions(key) {
460
- var isSingleSelectionMode = props.metaData.props.selectionMode === 'single';
461
- var isMultipleSelectionMode = props.metaData.props.selectionMode === 'multiple';
462
- var cProps = getColumnProps(props.column);
463
- var columnMetadata = {
464
- props: cProps,
465
- parent: props.metaData,
466
- hostName: props.hostName,
467
- state: {
468
- editing: editingState
469
- },
470
- context: {
471
- index: props.index,
472
- selectable: isSingleSelectionMode || isMultipleSelectionMode,
473
- selected: props.selected,
474
- scrollable: props.metaData.props.scrollable,
475
- frozen: getColumnProp('frozen'),
476
- showGridlines: props.metaData.props.showGridlines
477
- }
478
- };
479
- return mergeProps(ptm("column.".concat(key), {
480
- column: columnMetadata
481
- }), ptm("column.".concat(key), columnMetadata), ptmo(cProps, key, columnMetadata));
482
- };
483
- var field = getColumnProp('field') || "field_".concat(props.index);
484
- var getCellParams = function getCellParams() {
485
- return {
486
- value: resolveFieldData(),
487
- field: field,
488
- rowData: props.rowData,
489
- rowIndex: props.rowIndex,
490
- cellIndex: props.index,
491
- selected: isSelected(),
492
- column: props.column,
493
- props: props
494
- };
495
- };
496
- var getCellCallbackParams = function getCellCallbackParams(event) {
497
- var params = getCellParams();
498
- return _objectSpread$5({
499
- originalEvent: event
500
- }, params);
501
- };
502
- var resolveFieldData = function resolveFieldData(data) {
503
- return ObjectUtils.resolveFieldData(data || props.node.data, field);
504
- };
505
- var _useEventListener = useEventListener({
506
- type: 'click',
507
- listener: function listener(e) {
508
- if (!selfClick.current && isOutsideClicked(e.target)) {
509
- switchCellToViewMode(e);
510
- }
511
- selfClick.current = false;
512
- }
513
- }),
514
- _useEventListener2 = _slicedToArray(_useEventListener, 2),
515
- bindDocumentClickListener = _useEventListener2[0],
516
- unbindDocumentClickListener = _useEventListener2[1];
517
- var _onClick = function onClick(event) {
518
- if (props.editor && !editingState && (props.selectOnEdit || !props.selectOnEdit && props.selected)) {
519
- selfClick.current = true;
520
- var params = getCellCallbackParams(event);
521
- var onBeforeCellEditShow = getColumnProp('onBeforeCellEditShow');
522
- if (onBeforeCellEditShow) {
523
- // if user returns false do not show the editor
524
- if (onBeforeCellEditShow(params) === false) {
525
- return;
526
- }
527
-
528
- // if user prevents default stop the editor
529
- if (event && event.defaultPrevented) {
530
- return;
531
- }
532
- }
533
- setEditingState(true);
534
- var onCellEditInit = getColumnProp('onCellEditInit');
535
- if (onCellEditInit) {
536
- if (onCellEditInit(params) === false) {
537
- return;
538
- }
539
-
540
- // if user prevents default stop the editor
541
- if (event && event.defaultPrevented) {
542
- return;
543
- }
544
- }
545
- bindDocumentClickListener();
546
- overlayEventListener.current = function (e) {
547
- if (!isOutsideClicked(e.target)) {
548
- selfClick.current = true;
549
- }
550
- };
551
- OverlayService.on('overlay-click', overlayEventListener.current);
552
- }
553
- };
554
- var _onKeyDown = function onKeyDown(event) {
555
- if (event.which === 13 || event.which === 9) {
556
- switchCellToViewMode(event);
557
- }
558
- };
559
- var isOutsideClicked = function isOutsideClicked(target) {
560
- return elementRef.current && !(elementRef.current.isSameNode(target) || elementRef.current.contains(target));
561
- };
562
- var closeCell = function closeCell() {
563
- /* When using the 'tab' key, the focus event of the next cell is not called in IE. */
564
- setTimeout(function () {
565
- setEditingState(false);
566
- unbindDocumentClickListener();
567
- OverlayService.off('overlay-click', overlayEventListener.current);
568
- overlayEventListener.current = null;
569
- }, 1);
570
- };
571
- var onEditorFocus = function onEditorFocus(event) {
572
- _onClick(event);
573
- };
574
- var switchCellToViewMode = function switchCellToViewMode(event) {
575
- if (props.cellEditValidator) {
576
- var valid = props.cellEditValidator({
577
- originalEvent: event,
578
- columnProps: props
579
- });
580
- if (valid) {
581
- closeCell();
582
- }
583
- } else {
584
- closeCell();
585
- }
586
- };
587
- var isSelected = function isSelected() {
588
- return props.selection ? props.selection instanceof Array ? findIndex(props.selection) > -1 : equals(props.selection) : false;
589
- };
590
- React.useEffect(function () {
591
- if (elementRef.current && props.editor) {
592
- clearTimeout(tabIndexTimeout.current);
593
- if (editingState) {
594
- var focusable = DomHandler.findSingle(elementRef.current, 'input');
595
- if (focusable && document.activeElement !== focusable && !focusable.hasAttribute('data-isCellEditing')) {
596
- focusable.setAttribute('data-isCellEditing', true);
597
- focusable.focus();
598
- }
599
- keyHelperRef.current.tabIndex = -1;
600
- } else {
601
- tabIndexTimeout.current = setTimeout(function () {
602
- if (keyHelperRef.current) {
603
- keyHelperRef.current.setAttribute('tabindex', 0);
604
- }
605
- }, 50);
606
- }
607
- }
608
- });
609
- useUnmountEffect(function () {
610
- if (overlayEventListener.current) {
611
- OverlayService.off('overlay-click', overlayEventListener.current);
612
- overlayEventListener.current = null;
613
- }
614
- });
615
- var bodyClassName = ObjectUtils.getPropValue(props.bodyClassName, props.node.data, {
616
- field: props.field,
617
- rowIndex: props.rowIndex,
618
- props: props
619
- });
620
- var style = props.bodyStyle || props.style;
621
- var content;
622
- if (editingState) {
623
- if (props.editor) content = ObjectUtils.getJSXElement(props.editor, {
624
- node: props.node,
625
- rowData: props.rowData,
626
- value: ObjectUtils.resolveFieldData(props.node.data, props.field),
627
- field: props.field,
628
- rowIndex: props.rowIndex,
629
- props: props
630
- });else throw new Error('Editor is not found on column.');
631
- } else {
632
- if (props.body) content = ObjectUtils.getJSXElement(props.body, props.node, {
633
- field: props.field,
634
- rowIndex: props.rowIndex,
635
- props: props
636
- });else content = ObjectUtils.resolveFieldData(props.node.data, props.field);
637
- }
638
- var editorKeyHelperProps = mergeProps({
639
- tabIndex: 0,
640
- ref: keyHelperRef,
641
- className: 'p-cell-editor-key-helper p-hidden-accessible',
642
- onFocus: function onFocus(e) {
643
- return onEditorFocus(e);
644
- }
645
- }, getColumnPTOptions('editorKeyHelperLabel'));
646
- var editorKeyHelperLabelProps = mergeProps(getColumnPTOptions('editorKeyHelper'));
647
- /* eslint-disable */
648
- var editorKeyHelper = props.editor && /*#__PURE__*/React.createElement("a", editorKeyHelperProps, /*#__PURE__*/React.createElement("span", editorKeyHelperLabelProps));
649
- /* eslint-enable */
650
- var bodyCellProps = mergeProps({
651
- className: classNames(bodyClassName || props.className, cx('bodyCell', {
652
- bodyProps: props,
653
- editingState: editingState
654
- })),
655
- style: style,
656
- onClick: function onClick(e) {
657
- return _onClick(e);
658
- },
659
- onKeyDown: function onKeyDown(e) {
660
- return _onKeyDown(e);
661
- }
662
- }, getColumnPTOptions('root'), getColumnPTOptions('bodyCell'));
663
- return /*#__PURE__*/React.createElement("td", _extends({
664
- ref: elementRef
665
- }, bodyCellProps), props.children, editorKeyHelper, content);
666
- };
667
- TreeTableBodyCell.displayName = 'TreeTableBodyCell';
668
-
669
- function _createForOfIteratorHelper$3(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray$3(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
670
- function _unsupportedIterableToArray$3(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray$3(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$3(o, minLen); }
671
- function _arrayLikeToArray$3(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
672
- function ownKeys$4(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
673
- function _objectSpread$4(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$4(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$4(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
674
- var TreeTableRow = /*#__PURE__*/React.memo(function (props) {
675
- var elementRef = React.useRef(null);
676
- var checkboxRef = React.useRef(null);
677
- var checkboxBoxRef = React.useRef(null);
678
- var nodeTouched = React.useRef(false);
679
- var expanded = props.expandedKeys ? props.expandedKeys[props.node.key] !== undefined : false;
680
- var getColumnProp = function getColumnProp(column, name) {
681
- return ColumnBase.getCProp(column, name);
682
- };
683
- var getColumnProps = function getColumnProps(column) {
684
- return ColumnBase.getCProps(column);
685
- };
686
- var _props$ptCallbacks = props.ptCallbacks,
687
- ptm = _props$ptCallbacks.ptm,
688
- ptmo = _props$ptCallbacks.ptmo,
689
- cx = _props$ptCallbacks.cx,
690
- isUnstyled = _props$ptCallbacks.isUnstyled;
691
- var getColumnPTOptions = function getColumnPTOptions(column, key) {
692
- var cProps = getColumnProps(column);
693
- var columnMetadata = {
694
- props: cProps,
695
- parent: props.metaData,
696
- hostName: props.hostName,
697
- context: {
698
- index: props.rowIndex,
699
- selectable: props.node.selectable !== false,
700
- selected: isSelected(),
701
- frozen: getColumnProp(column, 'frozen'),
702
- scrollable: props.metaData.props.scrollable
703
- }
704
- };
705
- return mergeProps(ptm("column.".concat(key), {
706
- column: columnMetadata
707
- }), ptm("column.".concat(key), columnMetadata), ptmo(cProps, key, columnMetadata));
708
- };
709
- var getColumnCheckboxPTOptions = function getColumnCheckboxPTOptions(column, key) {
710
- var cProps = getColumnProps(column);
711
- var columnMetadata = {
712
- props: cProps,
713
- parent: props.metaData,
714
- hostName: props.hostName,
715
- context: {
716
- checked: isChecked(),
717
- partialChecked: isPartialChecked()
718
- }
719
- };
720
- return mergeProps(ptm("column.".concat(key), {
721
- column: columnMetadata
722
- }), ptm("column.".concat(key), columnMetadata), ptmo(cProps, key, columnMetadata));
723
- };
724
- var getRowPTOptions = function getRowPTOptions(key) {
725
- var rowMetadata = {
726
- hostName: props.hostName,
727
- context: {
728
- index: props.index,
729
- selected: isSelected(),
730
- selectable: props.node.selectable !== false,
731
- frozen: getColumnProp('frozen'),
732
- scrollable: props.metaData.props.scrollable,
733
- showGridlines: props.metaData.props.showGridlines
734
- }
735
- };
736
- return ptm(key, rowMetadata);
737
- };
738
- var onTogglerClick = function onTogglerClick(event) {
739
- expanded ? collapse(event) : expand(event);
740
- event.preventDefault();
741
- event.stopPropagation();
742
- };
743
- var expand = function expand(event) {
744
- var expandedKeys = props.expandedKeys ? _objectSpread$4({}, props.expandedKeys) : {};
745
- expandedKeys[props.node.key] = true;
746
- props.onToggle({
747
- originalEvent: event,
748
- value: expandedKeys
749
- });
750
- invokeToggleEvents(event, true);
751
- };
752
- var collapse = function collapse(event) {
753
- var expandedKeys = _objectSpread$4({}, props.expandedKeys);
754
- delete expandedKeys[props.node.key];
755
- props.onToggle({
756
- originalEvent: event,
757
- value: expandedKeys
758
- });
759
- invokeToggleEvents(event, false);
760
- };
761
- var invokeToggleEvents = function invokeToggleEvents(event, expanded) {
762
- if (expanded) {
763
- if (props.onExpand) {
764
- props.onExpand({
765
- originalEvent: event,
766
- node: props.node
767
- });
768
- }
769
- } else {
770
- if (props.onCollapse) {
771
- props.onCollapse({
772
- originalEvent: event,
773
- node: props.node
774
- });
775
- }
776
- }
777
- };
778
- var _onClick = function onClick(event) {
779
- if (props.onRowClick) {
780
- props.onRowClick(event, props.node);
781
- }
782
- nodeTouched.current = false;
783
- };
784
- var _onTouchEnd = function onTouchEnd() {
785
- nodeTouched.current = true;
786
- };
787
- var _onMouseEnter = function onMouseEnter(event) {
788
- if (props.onRowMouseEnter) {
789
- props.onRowMouseEnter({
790
- originalEvent: event,
791
- node: props.node,
792
- index: props.rowIndex
793
- });
794
- }
795
- };
796
- var _onMouseLeave = function onMouseLeave(event) {
797
- if (props.onRowMouseLeave) {
798
- props.onRowMouseLeave({
799
- originalEvent: event,
800
- node: props.node,
801
- index: props.rowIndex
802
- });
803
- }
804
- };
805
- var onCheckboxChange = function onCheckboxChange(event) {
806
- var checked = isChecked();
807
- var selectionKeys = props.selectionKeys ? _objectSpread$4({}, props.selectionKeys) : {};
808
- if (checked) {
809
- if (props.propagateSelectionDown) propagateDown(props.node, false, selectionKeys);else delete selectionKeys[props.node.key];
810
- if (props.propagateSelectionUp && props.onPropagateUp) {
811
- props.onPropagateUp({
812
- originalEvent: event,
813
- check: false,
814
- selectionKeys: selectionKeys
815
- });
816
- }
817
- if (props.onUnselect) {
818
- props.onUnselect({
819
- originalEvent: event,
820
- node: props.node
821
- });
822
- }
823
- } else {
824
- if (props.propagateSelectionDown) propagateDown(props.node, true, selectionKeys);else selectionKeys[props.node.key] = {
825
- checked: true
826
- };
827
- if (props.propagateSelectionUp && props.onPropagateUp) {
828
- props.onPropagateUp({
829
- originalEvent: event,
830
- check: true,
831
- selectionKeys: selectionKeys
832
- });
833
- }
834
- if (props.onSelect) {
835
- props.onSelect({
836
- originalEvent: event,
837
- node: props.node
838
- });
839
- }
840
- }
841
- if (props.onSelectionChange) {
842
- props.onSelectionChange({
843
- originalEvent: event,
844
- value: selectionKeys
845
- });
846
- }
847
- DomHandler.clearSelection();
848
- };
849
- var onCheckboxFocus = function onCheckboxFocus() {
850
- !isUnstyled() && DomHandler.addClass(checkboxBoxRef.current, 'p-focus');
851
- !isUnstyled() && DomHandler.addClass(checkboxRef.current, 'p-checkbox-focused');
852
- };
853
- var onCheckboxBlur = function onCheckboxBlur() {
854
- !isUnstyled() && DomHandler.removeClass(checkboxBoxRef.current, 'p-focus');
855
- !isUnstyled() && DomHandler.removeClass(checkboxRef.current, 'p-checkbox-focused');
856
- };
857
- var propagateUp = function propagateUp(event) {
858
- var check = event.check;
859
- var selectionKeys = event.selectionKeys;
860
- var checkedChildCount = 0;
861
- var _iterator = _createForOfIteratorHelper$3(props.node.children),
862
- _step;
863
- try {
864
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
865
- var child = _step.value;
866
- if (selectionKeys[child.key] && selectionKeys[child.key].checked) checkedChildCount++;
867
- }
868
- } catch (err) {
869
- _iterator.e(err);
870
- } finally {
871
- _iterator.f();
872
- }
873
- var parentKey = props.node.key;
874
- var children = ObjectUtils.findChildrenByKey(props.originalOptions, parentKey);
875
- var isParentPartiallyChecked = children.some(function (ele) {
876
- return ele.key in selectionKeys;
877
- });
878
- var isCompletelyChecked = children.every(function (ele) {
879
- return ele.key in selectionKeys && selectionKeys[ele.key].checked;
880
- });
881
- if (isParentPartiallyChecked && !isCompletelyChecked) {
882
- selectionKeys[parentKey] = {
883
- checked: false,
884
- partialChecked: true
885
- };
886
- } else if (isCompletelyChecked) {
887
- selectionKeys[parentKey] = {
888
- checked: true,
889
- partialChecked: false
890
- };
891
- } else if (check) {
892
- selectionKeys[parentKey] = {
893
- checked: false,
894
- partialChecked: false
895
- };
896
- } else {
897
- delete selectionKeys[parentKey];
898
- }
899
- if (props.propagateSelectionUp && props.onPropagateUp) {
900
- props.onPropagateUp(event);
901
- }
902
- };
903
- var propagateDown = function propagateDown(node, check, selectionKeys) {
904
- if (check) selectionKeys[node.key] = {
905
- checked: true,
906
- partialChecked: false
907
- };else delete selectionKeys[node.key];
908
- if (node.children && node.children.length) {
909
- for (var i = 0; i < node.children.length; i++) {
910
- propagateDown(node.children[i], check, selectionKeys);
911
- }
912
- }
913
- };
914
- var onRightClick = function onRightClick(event) {
915
- DomHandler.clearSelection();
916
- if (props.onContextMenuSelectionChange) {
917
- props.onContextMenuSelectionChange({
918
- originalEvent: event,
919
- value: props.node.key
920
- });
921
- }
922
- if (props.onContextMenu) {
923
- props.onContextMenu({
924
- originalEvent: event,
925
- node: props.node
926
- });
927
- }
928
- };
929
- var _onKeyDown = function onKeyDown(event) {
930
- if (event.target === elementRef.current) {
931
- var rowElement = event.currentTarget;
932
- switch (event.which) {
933
- //down arrow
934
- case 40:
935
- var nextRow = rowElement.nextElementSibling;
936
- if (nextRow) {
937
- nextRow.focus();
938
- }
939
- event.preventDefault();
940
- break;
941
-
942
- //up arrow
943
- case 38:
944
- var previousRow = rowElement.previousElementSibling;
945
- if (previousRow) {
946
- previousRow.focus();
947
- }
948
- event.preventDefault();
949
- break;
950
-
951
- //right arrow
952
- case 39:
953
- if (!expanded) {
954
- expand(event);
955
- }
956
- event.preventDefault();
957
- break;
958
-
959
- //left arrow
960
- case 37:
961
- if (expanded) {
962
- collapse(event);
963
- }
964
- event.preventDefault();
965
- break;
966
-
967
- //enter
968
- case 13:
969
- _onClick(event);
970
- event.preventDefault();
971
- break;
972
- }
973
- }
974
- };
975
- var isSelected = function isSelected() {
976
- if ((props.selectionMode === 'single' || props.selectionMode === 'multiple') && props.selectionKeys) return props.selectionMode === 'single' ? props.selectionKeys === props.node.key : props.selectionKeys[props.node.key] !== undefined;else return false;
977
- };
978
- var isChecked = function isChecked() {
979
- return props.selectionKeys ? props.selectionKeys[props.node.key] && props.selectionKeys[props.node.key].checked : false;
980
- };
981
- var isPartialChecked = function isPartialChecked() {
982
- return props.selectionKeys ? props.selectionKeys[props.node.key] && props.selectionKeys[props.node.key].partialChecked : false;
983
- };
984
- var createToggler = function createToggler(column) {
985
- var label = expanded ? ariaLabel('collapseLabel') : ariaLabel('expandLabel');
986
- var rowTogglerIconProps = mergeProps({
987
- className: cx('rowTogglerIcon'),
988
- 'aria-hidden': true
989
- }, getColumnPTOptions(column, 'rowTogglerIcon'));
990
- var icon = expanded ? /*#__PURE__*/React.createElement(ChevronDownIcon, rowTogglerIconProps) : /*#__PURE__*/React.createElement(ChevronRightIcon, rowTogglerIconProps);
991
- var togglerIcon = IconUtils.getJSXIcon(props.togglerIcon || icon, _objectSpread$4({}, rowTogglerIconProps), {
992
- props: props
993
- });
994
- var rowTogglerProps = mergeProps({
995
- type: 'button',
996
- className: cx('rowToggler'),
997
- onClick: function onClick(e) {
998
- return onTogglerClick(e);
999
- },
1000
- tabIndex: -1,
1001
- style: {
1002
- marginLeft: props.level * 16 + 'px',
1003
- visibility: props.node.leaf === false || props.node.children && props.node.children.length ? 'visible' : 'hidden'
1004
- },
1005
- 'aria-label': label
1006
- }, getColumnPTOptions(column, 'rowToggler'));
1007
- var content = /*#__PURE__*/React.createElement("button", rowTogglerProps, togglerIcon, /*#__PURE__*/React.createElement(Ripple, null));
1008
- if (props.togglerTemplate) {
1009
- var defaultContentOptions = {
1010
- onClick: onTogglerClick,
1011
- containerClassName: 'p-treetable-toggler p-link',
1012
- iconClassName: 'p-treetable-toggler-icon',
1013
- element: content,
1014
- props: props,
1015
- expanded: expanded,
1016
- buttonStyle: {
1017
- marginLeft: props.level * 16 + 'px',
1018
- visibility: props.node.leaf === false || props.node.children && props.node.children.length ? 'visible' : 'hidden'
1019
- }
1020
- };
1021
- content = ObjectUtils.getJSXElement(props.togglerTemplate, props.node, defaultContentOptions);
1022
- }
1023
- return content;
1024
- };
1025
- var createCheckbox = function createCheckbox(column) {
1026
- if (props.selectionMode === 'checkbox' && props.node.selectable !== false) {
1027
- var checked = isChecked();
1028
- var partialChecked = isPartialChecked();
1029
- var checboxIconProps = mergeProps({
1030
- className: cx('checkboxIcon')
1031
- }, getColumnCheckboxPTOptions(column, 'checkboxIcon'));
1032
- var icon = checked ? props.checkboxIcon || /*#__PURE__*/React.createElement(CheckIcon, checboxIconProps) : partialChecked ? props.checkboxIcon || /*#__PURE__*/React.createElement(MinusIcon, checboxIconProps) : null;
1033
- var checkIcon = IconUtils.getJSXIcon(icon, _objectSpread$4({}, checboxIconProps), {
1034
- props: props,
1035
- checked: checked,
1036
- partialChecked: partialChecked
1037
- });
1038
- var hiddenInputProps = mergeProps({
1039
- type: 'checkbox',
1040
- onFocus: function onFocus(e) {
1041
- return onCheckboxFocus();
1042
- },
1043
- onBlur: function onBlur(e) {
1044
- return onCheckboxBlur();
1045
- }
1046
- }, getColumnCheckboxPTOptions(column, 'hiddenInput'));
1047
- var checkboxWrapperProps = mergeProps({
1048
- className: cx('checkboxWrapper'),
1049
- onClick: function onClick(e) {
1050
- return onCheckboxChange(e);
1051
- },
1052
- role: 'checkbox',
1053
- 'aria-checked': checked
1054
- }, getColumnCheckboxPTOptions(column, 'checkboxWrapper'));
1055
- var hiddenInputWrapperProps = mergeProps({
1056
- className: 'p-hidden-accessible'
1057
- }, getColumnCheckboxPTOptions(column, 'hiddenInputWrapper'));
1058
- var checkboxProps = mergeProps({
1059
- className: cx('checkbox', {
1060
- checked: checked,
1061
- partialChecked: partialChecked
1062
- })
1063
- }, getColumnCheckboxPTOptions(column, 'checkbox'));
1064
- return /*#__PURE__*/React.createElement("div", _extends({
1065
- ref: checkboxRef
1066
- }, checkboxWrapperProps), /*#__PURE__*/React.createElement("div", hiddenInputWrapperProps, /*#__PURE__*/React.createElement("input", hiddenInputProps)), /*#__PURE__*/React.createElement("div", _extends({
1067
- ref: checkboxBoxRef
1068
- }, checkboxProps), checkIcon));
1069
- } else {
1070
- return null;
1071
- }
1072
- };
1073
- var createCell = function createCell(column, index) {
1074
- var toggler, checkbox;
1075
- if (getColumnProp(column, 'expander')) {
1076
- toggler = createToggler(column);
1077
- checkbox = createCheckbox(column);
1078
- }
1079
- return /*#__PURE__*/React.createElement(TreeTableBodyCell, _extends({
1080
- hostName: props.hostName,
1081
- key: "".concat(getColumnProp(column, 'columnKey') || getColumnProp(column, 'field'), "_").concat(index)
1082
- }, ColumnBase.getCProps(column), {
1083
- index: index,
1084
- column: column,
1085
- selectOnEdit: props.selectOnEdit,
1086
- selected: isSelected(),
1087
- node: props.node,
1088
- rowData: props.node && props.node.data,
1089
- rowIndex: props.rowIndex,
1090
- ptCallbacks: props.ptCallbacks,
1091
- metaData: props.metaData
1092
- }), toggler, checkbox);
1093
- };
1094
- var createChildren = function createChildren() {
1095
- if (expanded && props.node.children) {
1096
- return props.node.children.map(function (childNode, index) {
1097
- return /*#__PURE__*/React.createElement(TreeTableRow, {
1098
- hostName: props.hostName,
1099
- key: "".concat(childNode.key || JSON.stringify(childNode.data), "_").concat(index),
1100
- level: props.level + 1,
1101
- rowIndex: props.rowIndex + '_' + index,
1102
- node: childNode,
1103
- originalOptions: props.originalOptions,
1104
- checkboxIcon: props.checkboxIcon,
1105
- columns: props.columns,
1106
- expandedKeys: props.expandedKeys,
1107
- selectOnEdit: props.selectOnEdit,
1108
- onToggle: props.onToggle,
1109
- togglerTemplate: props.togglerTemplate,
1110
- onExpand: props.onExpand,
1111
- onCollapse: props.onCollapse,
1112
- selectionMode: props.selectionMode,
1113
- selectionKeys: props.selectionKeys,
1114
- onSelectionChange: props.onSelectionChange,
1115
- metaKeySelection: props.metaKeySelection,
1116
- onRowClick: props.onRowClick,
1117
- onRowMouseEnter: props.onRowMouseEnter,
1118
- onRowMouseLeave: props.onRowMouseLeave,
1119
- onSelect: props.onSelect,
1120
- onUnselect: props.onUnselect,
1121
- propagateSelectionUp: props.propagateSelectionUp,
1122
- propagateSelectionDown: props.propagateSelectionDown,
1123
- onPropagateUp: propagateUp,
1124
- rowClassName: props.rowClassName,
1125
- contextMenuSelectionKey: props.contextMenuSelectionKey,
1126
- onContextMenuSelectionChange: props.onContextMenuSelectionChange,
1127
- onContextMenu: props.onContextMenu,
1128
- ptCallbacks: props.ptCallbacks,
1129
- metaData: props.metaData
1130
- });
1131
- });
1132
- } else {
1133
- return null;
1134
- }
1135
- };
1136
- var cells = props.columns.map(createCell);
1137
- var children = createChildren();
1138
- var className = cx('row', {
1139
- isSelected: isSelected,
1140
- rowProps: props
1141
- });
1142
- if (props.rowClassName) {
1143
- var rowClassName = props.rowClassName(props.node);
1144
- className = _objectSpread$4(_objectSpread$4({}, className), rowClassName);
1145
- }
1146
- className = classNames(className, props.node.className);
1147
- var rowProps = mergeProps({
1148
- tabIndex: 0,
1149
- className: className,
1150
- style: props.node.style,
1151
- onClick: function onClick(e) {
1152
- return _onClick(e);
1153
- },
1154
- onTouchEnd: function onTouchEnd(e) {
1155
- return _onTouchEnd();
1156
- },
1157
- onContextMenu: function onContextMenu(e) {
1158
- return onRightClick(e);
1159
- },
1160
- onKeyDown: function onKeyDown(e) {
1161
- return _onKeyDown(e);
1162
- },
1163
- onMouseEnter: function onMouseEnter(e) {
1164
- return _onMouseEnter(e);
1165
- },
1166
- onMouseLeave: function onMouseLeave(e) {
1167
- return _onMouseLeave(e);
1168
- },
1169
- 'data-p-highlight': isSelected()
1170
- }, getRowPTOptions('row'));
1171
- return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("tr", _extends({
1172
- ref: elementRef
1173
- }, rowProps), cells), children);
1174
- });
1175
- TreeTableRow.displayName = 'TreeTableRow';
1176
-
1177
- function _createForOfIteratorHelper$2(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray$2(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
1178
- function _unsupportedIterableToArray$2(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray$2(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$2(o, minLen); }
1179
- function _arrayLikeToArray$2(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
1180
- function ownKeys$3(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
1181
- function _objectSpread$3(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$3(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$3(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
1182
- var TreeTableBody = /*#__PURE__*/React.memo(function (props) {
1183
- var isSingleSelectionMode = props.selectionMode === 'single';
1184
- var isMultipleSelectionMode = props.selectionMode === 'multiple';
1185
- var _props$ptCallbacks = props.ptCallbacks,
1186
- ptm = _props$ptCallbacks.ptm,
1187
- cx = _props$ptCallbacks.cx;
1188
- var getPTOptions = function getPTOptions(key, options) {
1189
- return ptm(key, _objectSpread$3({
1190
- hostName: props.hostName
1191
- }, options));
1192
- };
1193
- var flattenizeTree = function flattenizeTree(nodes) {
1194
- var rows = [];
1195
- nodes = nodes || props.value;
1196
- var _iterator = _createForOfIteratorHelper$2(nodes),
1197
- _step;
1198
- try {
1199
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
1200
- var node = _step.value;
1201
- rows.push(node.key);
1202
- if (isExpandedKey(node.key)) {
1203
- rows = rows.concat(flattenizeTree(node.children));
1204
- }
1205
- }
1206
- } catch (err) {
1207
- _iterator.e(err);
1208
- } finally {
1209
- _iterator.f();
1210
- }
1211
- return rows;
1212
- };
1213
- var isExpandedKey = function isExpandedKey(key) {
1214
- return props.expandedKeys && !!props.expandedKeys[key];
1215
- };
1216
- var onRowClick = function onRowClick(event, node) {
1217
- if (props.onRowClick) {
1218
- props.onRowClick({
1219
- originalEvent: event,
1220
- node: node
1221
- });
1222
- }
1223
- var targetNode = event.target.nodeName;
1224
- if (targetNode === 'INPUT' || targetNode === 'BUTTON' || targetNode === 'A' || DomHandler.getAttribute(event.target, 'data-pc-section') === 'columnresizer') {
1225
- return;
1226
- }
1227
- if ((isSingleSelectionMode || isMultipleSelectionMode) && node.selectable !== false) {
1228
- var selectionKeys;
1229
- var selected = isSelected(node);
1230
- var metaSelection = props.metaKeySelection;
1231
- var flatKeys = flattenizeTree();
1232
- var rowIndex = flatKeys.findIndex(function (key) {
1233
- return key === node.key;
1234
- });
1235
- if (isMultipleSelectionMode && event.shiftKey) {
1236
- DomHandler.clearSelection();
1237
-
1238
- // find first selected row
1239
- var anchorRowIndex = flatKeys.findIndex(function (key) {
1240
- return props.selectionKeys[key];
1241
- });
1242
- var rangeStart = Math.min(rowIndex, anchorRowIndex);
1243
- var rangeEnd = Math.max(rowIndex, anchorRowIndex);
1244
- selectionKeys = _objectSpread$3({}, props.selectionKeys);
1245
- for (var i = rangeStart; i <= rangeEnd; i++) {
1246
- var rowKey = flatKeys[i];
1247
- selectionKeys[rowKey] = true;
1248
- }
1249
- } else {
1250
- //anchorRowIndex = rowIndex;
1251
-
1252
- if (metaSelection) {
1253
- var metaKey = event.metaKey || event.ctrlKey;
1254
- if (selected && metaKey) {
1255
- if (isSingleSelectionMode) {
1256
- selectionKeys = null;
1257
- } else {
1258
- selectionKeys = _objectSpread$3({}, props.selectionKeys);
1259
- delete selectionKeys[node.key];
1260
- }
1261
- if (props.onUnselect) {
1262
- props.onUnselect({
1263
- originalEvent: event,
1264
- node: node
1265
- });
1266
- }
1267
- } else {
1268
- if (isSingleSelectionMode) {
1269
- selectionKeys = node.key;
1270
- } else if (isMultipleSelectionMode) {
1271
- selectionKeys = !metaKey ? {} : props.selectionKeys ? _objectSpread$3({}, props.selectionKeys) : {};
1272
- selectionKeys[node.key] = true;
1273
- }
1274
- if (props.onSelect) {
1275
- props.onSelect({
1276
- originalEvent: event,
1277
- node: node
1278
- });
1279
- }
1280
- }
1281
- } else {
1282
- if (isSingleSelectionMode) {
1283
- if (selected) {
1284
- selectionKeys = null;
1285
- if (props.onUnselect) {
1286
- props.onUnselect({
1287
- originalEvent: event,
1288
- node: node
1289
- });
1290
- }
1291
- } else {
1292
- selectionKeys = node.key;
1293
- if (props.onSelect) {
1294
- props.onSelect({
1295
- originalEvent: event,
1296
- node: node
1297
- });
1298
- }
1299
- }
1300
- } else {
1301
- if (selected) {
1302
- selectionKeys = _objectSpread$3({}, props.selectionKeys);
1303
- delete selectionKeys[node.key];
1304
- if (props.onUnselect) {
1305
- props.onUnselect({
1306
- originalEvent: event,
1307
- node: node
1308
- });
1309
- }
1310
- } else {
1311
- selectionKeys = props.selectionKeys ? _objectSpread$3({}, props.selectionKeys) : {};
1312
- selectionKeys[node.key] = true;
1313
- if (props.onSelect) {
1314
- props.onSelect({
1315
- originalEvent: event,
1316
- node: node
1317
- });
1318
- }
1319
- }
1320
- }
1321
- }
1322
- }
1323
- if (props.onSelectionChange) {
1324
- props.onSelectionChange({
1325
- originalEvent: event,
1326
- value: selectionKeys
1327
- });
1328
- }
1329
- }
1330
- };
1331
- var isSelected = function isSelected(node) {
1332
- if ((isSingleSelectionMode || isMultipleSelectionMode) && props.selectionKeys) return isSingleSelectionMode ? props.selectionKeys === node.key : props.selectionKeys[node.key] !== undefined;else return false;
1333
- };
1334
- var createRow = function createRow(node, index) {
1335
- return /*#__PURE__*/React.createElement(TreeTableRow, {
1336
- hostName: props.hostName,
1337
- key: "".concat(node.key || JSON.stringify(node.data), "_").concat(index),
1338
- level: 0,
1339
- rowIndex: index,
1340
- selectOnEdit: props.selectOnEdit,
1341
- node: node,
1342
- originalOptions: props.originalOptions,
1343
- checkboxIcon: props.checkboxIcon,
1344
- columns: props.columns,
1345
- expandedKeys: props.expandedKeys,
1346
- onToggle: props.onToggle,
1347
- togglerTemplate: props.togglerTemplate,
1348
- onExpand: props.onExpand,
1349
- onCollapse: props.onCollapse,
1350
- selectionMode: props.selectionMode,
1351
- selectionKeys: props.selectionKeys,
1352
- onSelectionChange: props.onSelectionChange,
1353
- metaKeySelection: props.metaKeySelection,
1354
- onRowClick: onRowClick,
1355
- onRowMouseEnter: props.onRowMouseEnter,
1356
- onRowMouseLeave: props.onRowMouseLeave,
1357
- onSelect: props.onSelect,
1358
- onUnselect: props.onUnselect,
1359
- propagateSelectionUp: props.propagateSelectionUp,
1360
- propagateSelectionDown: props.propagateSelectionDown,
1361
- rowClassName: props.rowClassName,
1362
- contextMenuSelectionKey: props.contextMenuSelectionKey,
1363
- onContextMenuSelectionChange: props.onContextMenuSelectionChange,
1364
- onContextMenu: props.onContextMenu,
1365
- ptCallbacks: props.ptCallbacks,
1366
- metaData: props.metaData
1367
- });
1368
- };
1369
- var createRows = function createRows() {
1370
- if (props.paginator && !props.lazy) {
1371
- var rpp = props.rows || 0;
1372
- var startIndex = props.first || 0;
1373
- var endIndex = startIndex + rpp;
1374
- var rows = [];
1375
- for (var i = startIndex; i < endIndex; i++) {
1376
- var rowData = props.value[i];
1377
- if (rowData) rows.push(createRow(props.value[i]));else break;
1378
- }
1379
- return rows;
1380
- } else {
1381
- return props.value.map(createRow);
1382
- }
1383
- };
1384
- var createEmptyMessage = function createEmptyMessage() {
1385
- if (props.loading) {
1386
- return null;
1387
- } else {
1388
- var colSpan = props.columns ? props.columns.length : null;
1389
- var _content = props.emptyMessage || localeOption('emptyMessage');
1390
- var emptyMessageProps = mergeProps({
1391
- className: cx('emptyMessage')
1392
- }, getPTOptions('emptyMessage'));
1393
- var emptyMessageCellProps = mergeProps({
1394
- colSpan: colSpan
1395
- }, getPTOptions('emptyMessageCell'));
1396
- return /*#__PURE__*/React.createElement("tr", emptyMessageProps, /*#__PURE__*/React.createElement("td", emptyMessageCellProps, _content));
1397
- }
1398
- };
1399
- var content = props.value && props.value.length ? createRows() : createEmptyMessage();
1400
- var tbodyProps = mergeProps({
1401
- className: cx('tbody')
1402
- }, getPTOptions('tbody'));
1403
- return /*#__PURE__*/React.createElement("tbody", tbodyProps, content);
1404
- });
1405
- TreeTableBody.displayName = 'TreeTableBody';
1406
-
1407
- var ColumnGroupBase = ComponentBase.extend({
1408
- defaultProps: {
1409
- __TYPE: 'ColumnGroup',
1410
- children: undefined
1411
- },
1412
- getCProp: function getCProp(group, name) {
1413
- return ObjectUtils.getComponentProp(group, name, ColumnGroupBase.defaultProps);
1414
- },
1415
- getCProps: function getCProps(group) {
1416
- return ObjectUtils.getComponentProps(group, ColumnGroupBase.defaultProps);
1417
- }
1418
- });
1419
-
1420
- var RowBase = ComponentBase.extend({
1421
- defaultProps: {
1422
- __TYPE: 'Row',
1423
- style: null,
1424
- className: null,
1425
- children: undefined
1426
- },
1427
- getCProp: function getCProp(row, name) {
1428
- return ObjectUtils.getComponentProp(row, name, RowBase.defaultProps);
1429
- }
1430
- });
1431
-
1432
- var TreeTableFooter = /*#__PURE__*/React.memo(function (props) {
1433
- var _props$ptCallbacks = props.ptCallbacks,
1434
- ptm = _props$ptCallbacks.ptm,
1435
- ptmo = _props$ptCallbacks.ptmo,
1436
- cx = _props$ptCallbacks.cx;
1437
- var getColumnProp = function getColumnProp(column, name) {
1438
- return ColumnBase.getCProp(column, name);
1439
- };
1440
- var getColumnProps = function getColumnProps(column) {
1441
- return ColumnBase.getCProps(column);
1442
- };
1443
- var getColumnPTOptions = function getColumnPTOptions(column, key) {
1444
- var cProps = getColumnProps(column);
1445
- var columnMetadata = {
1446
- props: cProps,
1447
- parent: props.metaData,
1448
- hostName: props.hostName
1449
- };
1450
- return mergeProps(ptm("column.".concat(key), {
1451
- column: columnMetadata
1452
- }), ptm("column.".concat(key), columnMetadata), ptmo(cProps, key, columnMetadata));
1453
- };
1454
- var createFooterCell = function createFooterCell(column, index) {
1455
- var footerCellProps = mergeProps({
1456
- key: column.field || index,
1457
- className: getColumnProp(column, 'footerClassName') || getColumnProp(column, 'className'),
1458
- style: getColumnProp(column, 'footerStyle') || getColumnProp(column, 'style'),
1459
- rowSpan: getColumnProp(column, 'rowSpan'),
1460
- colSpan: getColumnProp(column, 'colSpan')
1461
- }, getColumnPTOptions(column, 'footerCell'));
1462
- var content = ObjectUtils.getJSXElement(getColumnProp(column, 'footer'), {
1463
- props: getColumnProps(column)
1464
- });
1465
- return /*#__PURE__*/React.createElement("td", footerCellProps, content);
1466
- };
1467
- var createFooterRow = function createFooterRow(row, index) {
1468
- var rowColumns = React.Children.toArray(RowBase.getCProp(row, 'children'));
1469
- var rowFooterCells = rowColumns.map(createFooterCell);
1470
- var footerRowProps = mergeProps(ptm('footerRow', {
1471
- hostName: props.hostName
1472
- }));
1473
- return /*#__PURE__*/React.createElement("tr", _extends({}, footerRowProps, {
1474
- key: index
1475
- }), rowFooterCells);
1476
- };
1477
- var createColumnGroup = function createColumnGroup() {
1478
- var rows = React.Children.toArray(ColumnGroupBase.getCProp(props.columnGroup, 'children'));
1479
- return rows.map(createFooterRow);
1480
- };
1481
- var createColumns = function createColumns(columns) {
1482
- if (columns) {
1483
- var headerCells = columns.map(createFooterCell);
1484
- var footerRowProps = mergeProps(ptm('footerRow', {
1485
- hostName: props.hostName
1486
- }));
1487
- return /*#__PURE__*/React.createElement("tr", footerRowProps, headerCells);
1488
- } else {
1489
- return null;
1490
- }
1491
- };
1492
- var hasFooter = function hasFooter() {
1493
- return props.columnGroup ? true : props.columns ? props.columns.some(function (col) {
1494
- return col && getColumnProp(col, 'footer');
1495
- }) : false;
1496
- };
1497
- var content = props.columnGroup ? createColumnGroup() : createColumns(props.columns);
1498
- if (hasFooter()) {
1499
- var tfootProps = mergeProps({
1500
- className: cx('tfoot')
1501
- }, ptm('tfoot', {
1502
- hostName: props.hostName
1503
- }));
1504
- return /*#__PURE__*/React.createElement("tfoot", tfootProps, content);
1505
- } else {
1506
- return null;
1507
- }
1508
- });
1509
- TreeTableFooter.displayName = 'TreeTableFooter';
1510
-
1511
- function _createForOfIteratorHelper$1(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray$1(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
1512
- function _unsupportedIterableToArray$1(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray$1(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$1(o, minLen); }
1513
- function _arrayLikeToArray$1(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
1514
- function ownKeys$2(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
1515
- function _objectSpread$2(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$2(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$2(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
1516
- var TreeTableHeader = /*#__PURE__*/React.memo(function (props) {
1517
- var _props$ptCallbacks = props.ptCallbacks,
1518
- ptm = _props$ptCallbacks.ptm,
1519
- ptmo = _props$ptCallbacks.ptmo,
1520
- cx = _props$ptCallbacks.cx;
1521
- var filterTimeout = React.useRef(null);
1522
- var getColumnProp = function getColumnProp(column) {
1523
- return column ? typeof (arguments.length <= 1 ? undefined : arguments[1]) === 'string' ? ColumnBase.getCProp(column, arguments.length <= 1 ? undefined : arguments[1]) : ColumnBase.getCProp((arguments.length <= 1 ? undefined : arguments[1]) || column, arguments.length <= 2 ? undefined : arguments[2]) : null;
1524
- };
1525
- var getColumnProps = function getColumnProps(column) {
1526
- return ColumnBase.getCProps(column);
1527
- };
1528
- var getColumnPTOptions = function getColumnPTOptions(column, key, params) {
1529
- var cProps = getColumnProps(column);
1530
- var columnMetadata = _objectSpread$2({
1531
- props: cProps,
1532
- parent: props.metaData,
1533
- hostName: props.hostName
1534
- }, params);
1535
- return mergeProps(ptm("column.".concat(key), {
1536
- column: columnMetadata
1537
- }), ptm("column.".concat(key), columnMetadata), ptmo(cProps, key, columnMetadata));
1538
- };
1539
- var onHeaderClick = function onHeaderClick(event, column) {
1540
- if (getColumnProp(column, 'sortable')) {
1541
- var targetNode = event.target;
1542
- if (DomHandler.getAttribute(targetNode, 'data-p-sortable-column') === true || DomHandler.getAttribute(targetNode, 'data-pc-section') === 'headertitle' || DomHandler.getAttribute(targetNode, 'data-pc-section') === 'sorticon' || DomHandler.getAttribute(targetNode.parentElement, 'data-pc-section') === 'sorticon') {
1543
- props.onSort({
1544
- originalEvent: event,
1545
- sortField: getColumnProp(column, 'sortField') || getColumnProp(column, 'field'),
1546
- sortFunction: getColumnProp(column, 'sortFunction'),
1547
- sortable: getColumnProp(column, 'sortable')
1548
- });
1549
- DomHandler.clearSelection();
1550
- }
1551
- }
1552
- };
1553
- var onHeaderMouseDown = function onHeaderMouseDown(event, column) {
1554
- if (props.reorderableColumns && getColumnProp(column, 'reorderable')) {
1555
- if (event.target.nodeName !== 'INPUT') event.currentTarget.draggable = true;else if (event.target.nodeName === 'INPUT') event.currentTarget.draggable = false;
1556
- }
1557
- };
1558
- var onHeaderKeyDown = function onHeaderKeyDown(event, column) {
1559
- if (event.key === 'Enter') {
1560
- onHeaderClick(event, column);
1561
- event.preventDefault();
1562
- }
1563
- };
1564
- var getMultiSortMetaDataIndex = function getMultiSortMetaDataIndex(column) {
1565
- if (props.multiSortMeta) {
1566
- for (var i = 0; i < props.multiSortMeta.length; i++) {
1567
- if (props.multiSortMeta[i].field === getColumnProp(column, 'field')) {
1568
- return i;
1569
- }
1570
- }
1571
- }
1572
- return -1;
1573
- };
1574
- var onResizerMouseDown = function onResizerMouseDown(event, column) {
1575
- if (props.resizableColumns && props.onResizeStart) {
1576
- props.onResizeStart({
1577
- originalEvent: event,
1578
- columnEl: event.target.parentElement,
1579
- column: column
1580
- });
1581
- }
1582
- };
1583
- var _onDragStart = function onDragStart(event, column) {
1584
- if (props.onDragStart) {
1585
- props.onDragStart({
1586
- originalEvent: event,
1587
- column: column
1588
- });
1589
- }
1590
- };
1591
- var _onDragOver = function onDragOver(event, column) {
1592
- if (props.onDragOver) {
1593
- props.onDragOver({
1594
- originalEvent: event,
1595
- column: column
1596
- });
1597
- }
1598
- };
1599
- var _onDragLeave = function onDragLeave(event, column) {
1600
- if (props.onDragLeave) {
1601
- props.onDragLeave({
1602
- originalEvent: event,
1603
- column: column
1604
- });
1605
- }
1606
- };
1607
- var _onDrop = function onDrop(event, column) {
1608
- if (props.onDrop) {
1609
- props.onDrop({
1610
- originalEvent: event,
1611
- column: column
1612
- });
1613
- }
1614
- };
1615
- var onFilterInput = function onFilterInput(e, column) {
1616
- if (getColumnProp(column, 'filter') && props.onFilter) {
1617
- if (filterTimeout.current) {
1618
- clearTimeout(filterTimeout.current);
1619
- }
1620
- var filterValue = e.target.value;
1621
- filterTimeout.current = setTimeout(function () {
1622
- props.onFilter({
1623
- value: filterValue,
1624
- field: getColumnProp(column, 'field'),
1625
- matchMode: getColumnProp(column, 'filterMatchMode') || 'startsWith'
1626
- });
1627
- filterTimeout.current = null;
1628
- }, props.filterDelay);
1629
- }
1630
- };
1631
- var hasColumnFilter = function hasColumnFilter(columns) {
1632
- if (columns) {
1633
- var _iterator = _createForOfIteratorHelper$1(columns),
1634
- _step;
1635
- try {
1636
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
1637
- var col = _step.value;
1638
- if (getColumnProp(col, 'filter')) {
1639
- return true;
1640
- }
1641
- }
1642
- } catch (err) {
1643
- _iterator.e(err);
1644
- } finally {
1645
- _iterator.f();
1646
- }
1647
- }
1648
- return false;
1649
- };
1650
- var getAriaSort = function getAriaSort(column, sorted, sortOrder) {
1651
- if (getColumnProp(column, 'sortable')) {
1652
- if (sorted && sortOrder < 0) return 'descending';else if (sorted && sortOrder > 0) return 'ascending';else return 'none';
1653
- } else {
1654
- return null;
1655
- }
1656
- };
1657
- var createSortIcon = function createSortIcon(column, sorted, sortOrder) {
1658
- if (getColumnProp(column, 'sortable')) {
1659
- var sortIconProps = mergeProps({
1660
- className: cx('sortIcon')
1661
- }, getColumnPTOptions(column, 'sortIcon', {
1662
- context: {
1663
- sorted: sorted
1664
- }
1665
- }));
1666
- var icon = sorted ? sortOrder < 0 ? /*#__PURE__*/React.createElement(SortAmountDownIcon, sortIconProps) : /*#__PURE__*/React.createElement(SortAmountUpAltIcon, sortIconProps) : /*#__PURE__*/React.createElement(SortAltIcon, sortIconProps);
1667
- var sortIcon = IconUtils.getJSXIcon(props.sortIcon || icon, _objectSpread$2({}, sortIconProps), {
1668
- props: props,
1669
- sorted: sorted,
1670
- sortOrder: sortOrder
1671
- });
1672
- return sortIcon;
1673
- } else {
1674
- return null;
1675
- }
1676
- };
1677
- var createResizer = function createResizer(column) {
1678
- if (props.resizableColumns) {
1679
- var columnResizerProps = mergeProps({
1680
- className: cx('columnResizer'),
1681
- onMouseDown: function onMouseDown(e) {
1682
- return onResizerMouseDown(e, column);
1683
- }
1684
- }, getColumnPTOptions(column, 'columnResizer'));
1685
- return /*#__PURE__*/React.createElement("span", columnResizerProps);
1686
- } else {
1687
- return null;
1688
- }
1689
- };
1690
- var createSortBadge = function createSortBadge(column, sortMetaDataIndex) {
1691
- if (sortMetaDataIndex !== -1 && props.multiSortMeta && props.multiSortMeta.length > 1) {
1692
- var sortBadgeProps = mergeProps({
1693
- className: cx('sortBadge')
1694
- }, getColumnPTOptions(column, 'sortBadge'));
1695
- return /*#__PURE__*/React.createElement("span", sortBadgeProps, sortMetaDataIndex + 1);
1696
- }
1697
- return null;
1698
- };
1699
- var createTitle = function createTitle(column, options) {
1700
- var title = ObjectUtils.getJSXElement(getColumnProp(column, 'header'), {
1701
- props: options
1702
- });
1703
- var headerTitleProps = mergeProps({
1704
- className: cx('headerTitle')
1705
- }, getColumnPTOptions(column, 'headerTitle'));
1706
- return /*#__PURE__*/React.createElement("span", headerTitleProps, title);
1707
- };
1708
- var createHeaderCell = function createHeaderCell(column, options) {
1709
- var filterElement;
1710
- if (getColumnProp(column, 'filter') && options.renderFilter) {
1711
- filterElement = getColumnProp(column, 'filterElement') || /*#__PURE__*/React.createElement(InputText, {
1712
- onInput: function onInput(e) {
1713
- return onFilterInput(e, column);
1714
- },
1715
- type: props.filterType,
1716
- defaultValue: props.filters && props.filters[getColumnProp(column, 'field')] ? props.filters[getColumnProp(column, 'field')].value : null,
1717
- className: "p-column-filter",
1718
- placeholder: getColumnProp(column, 'filterPlaceholder'),
1719
- maxLength: getColumnProp(column, 'filterMaxLength'),
1720
- pt: getColumnPTOptions(column, 'filterInput'),
1721
- unstyled: props.unstyled,
1722
- __parentMetadata: {
1723
- parent: props.metaData
1724
- }
1725
- });
1726
- }
1727
- if (options.filterOnly) {
1728
- var headerCellProps = mergeProps({
1729
- key: getColumnProp(column, 'columnKey') || getColumnProp(column, 'field') || options.index,
1730
- className: classNames(cx('headerCell', {
1731
- options: options
1732
- }), getColumnProp(column, 'filterHeaderClassName')),
1733
- style: getColumnProp(column, 'filterHeaderStyle') || getColumnProp(column, 'style'),
1734
- rowSpan: getColumnProp(column, 'rowSpan'),
1735
- colSpan: getColumnProp(column, 'colSpan'),
1736
- 'data-p-sortable-column': getColumnProp(column, 'sortable'),
1737
- 'data-p-resizable-column': props.resizableColumns,
1738
- 'data-p-frozen-column': getColumnProp(column, 'frozen')
1739
- }, getColumnPTOptions(column, 'root'), getColumnPTOptions(column, 'headerCell', {
1740
- context: {
1741
- frozen: getColumnProp(column, 'frozen')
1742
- }
1743
- }));
1744
- return /*#__PURE__*/React.createElement("th", headerCellProps, filterElement);
1745
- } else {
1746
- var headerCellRef = /*#__PURE__*/React.createRef(null);
1747
- var sortMetaDataIndex = getMultiSortMetaDataIndex(column);
1748
- var multiSortMetaData = sortMetaDataIndex !== -1 ? props.multiSortMeta[sortMetaDataIndex] : null;
1749
- var singleSorted = getColumnProp(column, 'field') === props.sortField;
1750
- var multipleSorted = multiSortMetaData !== null;
1751
- var sorted = getColumnProp(column, 'sortable') && (singleSorted || multipleSorted);
1752
- var frozen = getColumnProp(column, 'frozen');
1753
- var sortOrder = 0;
1754
- if (singleSorted) sortOrder = props.sortOrder;else if (multipleSorted) sortOrder = multiSortMetaData.order;
1755
- var sortIconElement = createSortIcon(column, sorted, sortOrder);
1756
- var ariaSortData = getAriaSort(column, sorted, sortOrder);
1757
- var sortBadge = createSortBadge(column, sortMetaDataIndex);
1758
- var headerTooltip = getColumnProp(column, 'headerTooltip');
1759
- var hasTooltip = ObjectUtils.isNotEmpty(headerTooltip);
1760
- var title = createTitle(column, options);
1761
- var resizer = createResizer(column);
1762
- var _headerCellProps = mergeProps({
1763
- className: classNames(getColumnProp(column, 'headerClassName') || getColumnProp(column, 'className'), cx('headerCell', {
1764
- headerProps: props,
1765
- column: column,
1766
- options: options,
1767
- getColumnProp: getColumnProp,
1768
- sorted: sorted,
1769
- frozen: frozen
1770
- })),
1771
- style: getColumnProp(column, 'headerStyle') || getColumnProp(column, 'style'),
1772
- tabIndex: getColumnProp(column, 'sortable') ? props.tabIndex : null,
1773
- onClick: function onClick(e) {
1774
- return onHeaderClick(e, column);
1775
- },
1776
- onMouseDown: function onMouseDown(e) {
1777
- return onHeaderMouseDown(e, column);
1778
- },
1779
- onKeyDown: function onKeyDown(e) {
1780
- return onHeaderKeyDown(e, column);
1781
- },
1782
- rowSpan: getColumnProp(column, 'rowSpan'),
1783
- colSpan: getColumnProp(column, 'colSpan'),
1784
- 'aria-sort': ariaSortData,
1785
- onDragStart: function onDragStart(e) {
1786
- return _onDragStart(e, column);
1787
- },
1788
- onDragOver: function onDragOver(e) {
1789
- return _onDragOver(e, column);
1790
- },
1791
- onDragLeave: function onDragLeave(e) {
1792
- return _onDragLeave(e, column);
1793
- },
1794
- onDrop: function onDrop(e) {
1795
- return _onDrop(e, column);
1796
- },
1797
- 'data-p-sortable-column': getColumnProp(column, 'sortable'),
1798
- 'data-p-resizable-column': props.resizableColumns,
1799
- 'data-p-highlight': sorted,
1800
- 'data-p-frozen-column': getColumnProp(column, 'frozen')
1801
- }, getColumnPTOptions(column, 'root'), getColumnPTOptions(column, 'headerCell', {
1802
- context: {
1803
- sorted: sorted,
1804
- frozen: frozen,
1805
- resizable: props.resizableColumns
1806
- }
1807
- }));
1808
- return /*#__PURE__*/React.createElement(React.Fragment, {
1809
- key: column.columnKey || column.field || options.index
1810
- }, /*#__PURE__*/React.createElement("th", _extends({
1811
- ref: headerCellRef
1812
- }, _headerCellProps), resizer, title, sortIconElement, sortBadge, filterElement), hasTooltip && /*#__PURE__*/React.createElement(Tooltip, _extends({
1813
- target: headerCellRef,
1814
- content: headerTooltip
1815
- }, getColumnProp(column, 'headerTooltipOptions'), {
1816
- unstyled: props.unstyled
1817
- })));
1818
- }
1819
- };
1820
- var createHeaderRow = function createHeaderRow(row, index) {
1821
- var rowColumns = React.Children.toArray(RowBase.getCProp(row, 'children'));
1822
- var rowHeaderCells = rowColumns.map(function (col, i) {
1823
- return createHeaderCell(col, {
1824
- index: i,
1825
- filterOnly: false,
1826
- renderFilter: true
1827
- });
1828
- });
1829
- var headerRowProps = mergeProps(ptm('headerRow', {
1830
- hostName: props.hostName
1831
- }));
1832
- return /*#__PURE__*/React.createElement("tr", _extends({}, headerRowProps, {
1833
- key: index
1834
- }), rowHeaderCells);
1835
- };
1836
- var createColumnGroup = function createColumnGroup() {
1837
- var rows = React.Children.toArray(ColumnGroupBase.getCProp(props.columnGroup, 'children'));
1838
- return rows.map(createHeaderRow);
1839
- };
1840
- var createColumns = function createColumns(columns) {
1841
- if (columns) {
1842
- var headerRowProps = mergeProps(ptm('headerRow', {
1843
- hostName: props.hostName
1844
- }));
1845
- if (hasColumnFilter(columns)) {
1846
- return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("tr", headerRowProps, columns.map(function (col, i) {
1847
- return createHeaderCell(col, {
1848
- index: i,
1849
- filterOnly: false,
1850
- renderFilter: false
1851
- });
1852
- })), /*#__PURE__*/React.createElement("tr", headerRowProps, columns.map(function (col, i) {
1853
- return createHeaderCell(col, {
1854
- index: i,
1855
- filterOnly: true,
1856
- renderFilter: true
1857
- });
1858
- })));
1859
- } else {
1860
- return /*#__PURE__*/React.createElement("tr", headerRowProps, columns.map(function (col, i) {
1861
- return createHeaderCell(col, {
1862
- index: i,
1863
- filterOnly: false,
1864
- renderFilter: false
1865
- });
1866
- }));
1867
- }
1868
- } else {
1869
- return null;
1870
- }
1871
- };
1872
- var content = props.columnGroup ? createColumnGroup() : createColumns(props.columns);
1873
- var theadProps = mergeProps({
1874
- className: cx('thead')
1875
- }, ptm('thead', {
1876
- hostName: props.hostName
1877
- }));
1878
- return /*#__PURE__*/React.createElement("thead", theadProps, content);
1879
- });
1880
- TreeTableHeader.displayName = 'TreeTableHeader';
1881
-
1882
- function ownKeys$1(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
1883
- function _objectSpread$1(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
1884
- var TreeTableScrollableView = /*#__PURE__*/React.memo(function (props) {
1885
- var elementRef = React.useRef(null);
1886
- var scrollHeaderRef = React.useRef(null);
1887
- var scrollHeaderBoxRef = React.useRef(null);
1888
- var scrollBodyRef = React.useRef(null);
1889
- var scrollTableRef = React.useRef(null);
1890
- var scrollFooterRef = React.useRef(null);
1891
- var scrollFooterBoxRef = React.useRef(null);
1892
- var _props$ptCallbacks = props.ptCallbacks,
1893
- ptm = _props$ptCallbacks.ptm,
1894
- cx = _props$ptCallbacks.cx,
1895
- sx = _props$ptCallbacks.sx;
1896
- var getPTOptions = function getPTOptions(key, options) {
1897
- return ptm(key, _objectSpread$1({
1898
- hostName: props.hostName
1899
- }, options));
1900
- };
1901
- var setScrollHeight = function setScrollHeight() {
1902
- if (props.scrollHeight) {
1903
- if (props.scrollHeight.indexOf('%') !== -1) {
1904
- var datatableContainer = findDataTableContainer(elementRef.current);
1905
- scrollBodyRef.current.style.visibility = 'hidden';
1906
- scrollBodyRef.current.style.height = '100px'; //temporary height to calculate static height
1907
- var containerHeight = DomHandler.getOuterHeight(datatableContainer);
1908
- var relativeHeight = DomHandler.getOuterHeight(datatableContainer.parentElement) * parseInt(props.scrollHeight, 10) / 100;
1909
- var staticHeight = containerHeight - 100; //total height of headers, footers, paginators
1910
- var scrollBodyHeight = relativeHeight - staticHeight;
1911
- scrollBodyRef.current.style.height = 'auto';
1912
- scrollBodyRef.current.style.maxHeight = scrollBodyHeight + 'px';
1913
- scrollBodyRef.current.style.visibility = 'visible';
1914
- } else {
1915
- scrollBodyRef.current.style.maxHeight = props.scrollHeight;
1916
- }
1917
- }
1918
- };
1919
- var findDataTableContainer = function findDataTableContainer(element) {
1920
- if (element) {
1921
- var el = element;
1922
- while (el && !(DomHandler.getAttribute(el, 'data-pc-section') === 'root' || DomHandler.getAttribute(el, 'data-pc-name') === 'treetable')) {
1923
- el = el.parentElement;
1924
- }
1925
- return el;
1926
- } else {
1927
- return null;
1928
- }
1929
- };
1930
- var onHeaderScroll = function onHeaderScroll() {
1931
- scrollHeaderRef.current.scrollLeft = 0;
1932
- };
1933
- var onBodyScroll = function onBodyScroll() {
1934
- var frozenView = elementRef.current.previousElementSibling;
1935
- var frozenScrollBody;
1936
- if (frozenView) {
1937
- frozenScrollBody = DomHandler.findSingle(frozenView, '.p-treetable-scrollable-body');
1938
- }
1939
- scrollHeaderBoxRef.current.style.marginLeft = -1 * scrollBodyRef.current.scrollLeft + 'px';
1940
- if (scrollFooterBoxRef.current) {
1941
- scrollFooterBoxRef.current.style.marginLeft = -1 * scrollBodyRef.current.scrollLeft + 'px';
1942
- }
1943
- if (frozenScrollBody) {
1944
- frozenScrollBody.scrollTop = scrollBodyRef.current.scrollTop;
1945
- }
1946
- };
1947
- useMountEffect(function () {
1948
- if (!props.frozen) {
1949
- var scrollBarWidth = DomHandler.calculateScrollbarWidth();
1950
- scrollHeaderBoxRef.current.style.marginRight = scrollBarWidth + 'px';
1951
- if (scrollFooterBoxRef.current) {
1952
- scrollFooterBoxRef.current.style.marginRight = scrollBarWidth + 'px';
1953
- }
1954
- } else {
1955
- scrollBodyRef.current.style.paddingBottom = DomHandler.calculateScrollbarWidth() + 'px';
1956
- }
1957
- });
1958
- React.useEffect(function () {
1959
- setScrollHeight();
1960
- });
1961
- var createColGroup = function createColGroup() {
1962
- if (ObjectUtils.isNotEmpty(props.columns)) {
1963
- var cols = props.columns.map(function (col, i) {
1964
- return /*#__PURE__*/React.createElement("col", {
1965
- key: col.field + '_' + i
1966
- });
1967
- });
1968
- var scrollableColgroupProps = mergeProps({
1969
- className: cx('scrollableColgroup')
1970
- }, getPTOptions('scrollableColgroup'));
1971
- return /*#__PURE__*/React.createElement("colgroup", scrollableColgroupProps, cols);
1972
- } else {
1973
- return null;
1974
- }
1975
- };
1976
- var width = props.frozen ? props.frozenWidth : 'calc(100% - ' + props.frozenWidth + ')';
1977
- var left = props.frozen ? null : props.frozenWidth;
1978
- var colGroup = createColGroup();
1979
- var scrollableProps = mergeProps({
1980
- className: cx('scrollable', {
1981
- scrolaableProps: props
1982
- }),
1983
- style: {
1984
- width: width,
1985
- left: left
1986
- }
1987
- }, getPTOptions('scrollable'));
1988
- var scrollableHeaderProps = mergeProps({
1989
- className: cx('scrollableHeader'),
1990
- onScroll: function onScroll(e) {
1991
- return onHeaderScroll();
1992
- }
1993
- }, getPTOptions('scrollableHeader'));
1994
- var scrollableHeaderBoxProps = mergeProps({
1995
- className: cx('scrollableHeaderBox')
1996
- }, getPTOptions('scrollableHeaderBox'));
1997
- var scrollableHeaderTableProps = mergeProps({
1998
- className: cx('scrollableHeaderTable')
1999
- }, getPTOptions('scrollableHeaderTable'));
2000
- var scrollableBodyProps = mergeProps({
2001
- className: cx('scrollableBody'),
2002
- style: !props.frozen && props.scrollHeight ? {
2003
- overflowY: 'scroll'
2004
- } : undefined,
2005
- onScroll: function onScroll(e) {
2006
- return onBodyScroll();
2007
- }
2008
- }, getPTOptions('scrollableBody'));
2009
- var scrollableBodyTableProps = mergeProps({
2010
- style: {
2011
- top: '0'
2012
- },
2013
- className: cx('scrollableBodyTable')
2014
- }, getPTOptions('scrollableBodyTable'));
2015
- var scrollableFooterProps = mergeProps({
2016
- className: cx('scrollableFooter')
2017
- }, getPTOptions('scrollableFooter'));
2018
- var scrollableFooterBoxProps = mergeProps({
2019
- className: sx('scrollableFooterBox')
2020
- }, getPTOptions('scrollableFooterBox'));
2021
- var scrollableFooterTableProps = mergeProps({
2022
- className: cx('scrollableFooterTable')
2023
- }, getPTOptions('scrollableFooterTable'));
2024
- return /*#__PURE__*/React.createElement("div", _extends({
2025
- ref: elementRef
2026
- }, scrollableProps), /*#__PURE__*/React.createElement("div", _extends({
2027
- ref: scrollHeaderRef
2028
- }, scrollableHeaderProps), /*#__PURE__*/React.createElement("div", _extends({
2029
- ref: scrollHeaderBoxRef
2030
- }, scrollableHeaderBoxProps), /*#__PURE__*/React.createElement("table", scrollableHeaderTableProps, colGroup, props.header))), /*#__PURE__*/React.createElement("div", _extends({
2031
- ref: scrollBodyRef
2032
- }, scrollableBodyProps), /*#__PURE__*/React.createElement("table", _extends({
2033
- ref: scrollTableRef
2034
- }, scrollableBodyTableProps), colGroup, props.body)), /*#__PURE__*/React.createElement("div", _extends({
2035
- ref: scrollFooterRef
2036
- }, scrollableFooterProps), /*#__PURE__*/React.createElement("div", _extends({
2037
- ref: scrollFooterBoxRef
2038
- }, scrollableFooterBoxProps), /*#__PURE__*/React.createElement("table", scrollableFooterTableProps, colGroup, props.footer))));
2039
- });
2040
- TreeTableScrollableView.displayName = 'TreeTableScrollableView';
2041
-
2042
- function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
2043
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
2044
- function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
2045
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
2046
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
2047
- var TreeTable = /*#__PURE__*/React.forwardRef(function (inProps, ref) {
2048
- var context = React.useContext(PrimeReactContext);
2049
- var props = TreeTableBase.getProps(inProps, context);
2050
- var _React$useState = React.useState(props.expandedKeys),
2051
- _React$useState2 = _slicedToArray(_React$useState, 2),
2052
- expandedKeysState = _React$useState2[0],
2053
- setExpandedKeysState = _React$useState2[1];
2054
- var _React$useState3 = React.useState(props.first),
2055
- _React$useState4 = _slicedToArray(_React$useState3, 2),
2056
- firstState = _React$useState4[0],
2057
- setFirstState = _React$useState4[1];
2058
- var _React$useState5 = React.useState(props.rows),
2059
- _React$useState6 = _slicedToArray(_React$useState5, 2),
2060
- rowsState = _React$useState6[0],
2061
- setRowsState = _React$useState6[1];
2062
- var _React$useState7 = React.useState(props.sortField),
2063
- _React$useState8 = _slicedToArray(_React$useState7, 2),
2064
- sortFieldState = _React$useState8[0],
2065
- setSortFieldState = _React$useState8[1];
2066
- var _React$useState9 = React.useState(props.sortOrder),
2067
- _React$useState10 = _slicedToArray(_React$useState9, 2),
2068
- sortOrderState = _React$useState10[0],
2069
- setSortOrderState = _React$useState10[1];
2070
- var _React$useState11 = React.useState(props.multiSortMeta),
2071
- _React$useState12 = _slicedToArray(_React$useState11, 2),
2072
- multiSortMetaState = _React$useState12[0],
2073
- setMultiSortMetaState = _React$useState12[1];
2074
- var _React$useState13 = React.useState(props.filters),
2075
- _React$useState14 = _slicedToArray(_React$useState13, 2),
2076
- filtersState = _React$useState14[0],
2077
- setFiltersState = _React$useState14[1];
2078
- var _React$useState15 = React.useState([]),
2079
- _React$useState16 = _slicedToArray(_React$useState15, 2),
2080
- columnOrderState = _React$useState16[0],
2081
- setColumnOrderState = _React$useState16[1];
2082
- var metaData = {
2083
- props: props,
2084
- state: {
2085
- expandedKeys: expandedKeysState,
2086
- first: firstState,
2087
- rows: rowsState,
2088
- sortField: sortFieldState,
2089
- sortOrder: sortOrderState,
2090
- multiSortMeta: multiSortMetaState,
2091
- filters: filtersState,
2092
- columnOrder: columnOrderState
2093
- },
2094
- context: {
2095
- scrollable: props.scrollable
2096
- }
2097
- };
2098
- var ptCallbacks = TreeTableBase.setMetaData(metaData);
2099
- useHandleStyle(TreeTableBase.css.styles, ptCallbacks.isUnstyled, {
2100
- name: 'treetable'
2101
- });
2102
- var elementRef = React.useRef(null);
2103
- var tableRef = React.useRef(null);
2104
- var resizerHelperRef = React.useRef(null);
2105
- var reorderIndicatorUpRef = React.useRef(null);
2106
- var reorderIndicatorDownRef = React.useRef(null);
2107
- var columnResizing = React.useRef(null);
2108
- var resizeColumn = React.useRef(null);
2109
- var resizeColumnProps = React.useRef(null);
2110
- var lastResizerHelperX = React.useRef(0);
2111
- var iconWidth = React.useRef(0);
2112
- var iconHeight = React.useRef(0);
2113
- var draggedColumnEl = React.useRef(null);
2114
- var draggedColumn = React.useRef(null);
2115
- var dropPosition = React.useRef(null);
2116
- var columnSortable = React.useRef(null);
2117
- var columnSortFunction = React.useRef(null);
2118
- var columnField = React.useRef(null);
2119
- var _useEventListener = useEventListener({
2120
- type: 'mousemove',
2121
- listener: function listener(event) {
2122
- if (columnResizing.current) {
2123
- onColumnResize(event);
2124
- }
2125
- }
2126
- }),
2127
- _useEventListener2 = _slicedToArray(_useEventListener, 2),
2128
- bindDocumentMouseMoveListener = _useEventListener2[0],
2129
- unbindDocumentMouseMoveListener = _useEventListener2[1];
2130
- var _useEventListener3 = useEventListener({
2131
- type: 'mouseup',
2132
- listener: function listener(event) {
2133
- if (columnResizing.current) {
2134
- columnResizing.current = false;
2135
- onColumnResizeEnd();
2136
- }
2137
- }
2138
- }),
2139
- _useEventListener4 = _slicedToArray(_useEventListener3, 2),
2140
- bindDocumentMouseUpListener = _useEventListener4[0],
2141
- unbindDocumentMouseUpListener = _useEventListener4[1];
2142
- var onToggle = function onToggle(event) {
2143
- if (props.onToggle) {
2144
- props.onToggle(event);
2145
- } else {
2146
- setExpandedKeysState(event.value);
2147
- }
2148
- };
2149
- var onPageChange = function onPageChange(event) {
2150
- if (props.onPage) {
2151
- props.onPage(event);
2152
- } else {
2153
- setFirstState(event.first);
2154
- setRowsState(event.rows);
2155
- }
2156
- if (props.onValueChange) {
2157
- props.onValueChange(processedData());
2158
- }
2159
- };
2160
- var onSort = function onSort(event) {
2161
- var sortField = event.sortField;
2162
- var sortOrder = props.defaultSortOrder;
2163
- var multiSortMeta;
2164
- var eventMeta;
2165
- columnSortable.current = event.sortable;
2166
- columnSortFunction.current = event.sortFunction;
2167
- columnField.current = event.sortField;
2168
- if (props.sortMode === 'multiple') {
2169
- var metaKey = event.originalEvent.metaKey || event.originalEvent.ctrlKey;
2170
- multiSortMeta = _toConsumableArray(getMultiSortMeta());
2171
- if (multiSortMeta && multiSortMeta instanceof Array) {
2172
- var sortMeta = multiSortMeta.find(function (sortMeta) {
2173
- return sortMeta.field === sortField;
2174
- });
2175
- sortOrder = sortMeta ? getCalculatedSortOrder(sortMeta.order) : sortOrder;
2176
- }
2177
- var newMetaData = {
2178
- field: sortField,
2179
- order: sortOrder
2180
- };
2181
- if (sortOrder) {
2182
- if (!multiSortMeta || !metaKey) {
2183
- multiSortMeta = [];
2184
- }
2185
- addSortMeta(newMetaData, multiSortMeta);
2186
- } else if (props.removableSort && multiSortMeta) {
2187
- removeSortMeta(newMetaData, multiSortMeta);
2188
- }
2189
- eventMeta = {
2190
- multiSortMeta: multiSortMeta
2191
- };
2192
- } else {
2193
- sortOrder = getSortField() === sortField ? getCalculatedSortOrder(getSortOrder()) : sortOrder;
2194
- if (props.removableSort) {
2195
- sortField = sortOrder ? sortField : null;
2196
- }
2197
- eventMeta = {
2198
- sortField: sortField,
2199
- sortOrder: sortOrder
2200
- };
2201
- }
2202
- if (props.onSort) {
2203
- props.onSort(eventMeta);
2204
- } else {
2205
- setFirstState(0);
2206
- setSortFieldState(eventMeta.sortField);
2207
- setSortOrderState(eventMeta.sortOrder);
2208
- setMultiSortMetaState(eventMeta.multiSortMeta);
2209
- }
2210
- if (props.onValueChange) {
2211
- props.onValueChange(processedData({
2212
- sortField: sortField,
2213
- sortOrder: sortOrder,
2214
- multiSortMeta: multiSortMeta
2215
- }));
2216
- }
2217
- };
2218
- var getCalculatedSortOrder = function getCalculatedSortOrder(currentOrder) {
2219
- return props.removableSort ? props.defaultSortOrder === currentOrder ? currentOrder * -1 : 0 : currentOrder * -1;
2220
- };
2221
- var addSortMeta = function addSortMeta(meta, multiSortMeta) {
2222
- var index = -1;
2223
- for (var i = 0; i < multiSortMeta.length; i++) {
2224
- if (multiSortMeta[i].field === meta.field) {
2225
- index = i;
2226
- break;
2227
- }
2228
- }
2229
- if (index >= 0) multiSortMeta[index] = meta;else multiSortMeta.push(meta);
2230
- };
2231
- var removeSortMeta = function removeSortMeta(meta, multiSortMeta) {
2232
- var index = -1;
2233
- for (var i = 0; i < multiSortMeta.length; i++) {
2234
- if (multiSortMeta[i].field === meta.field) {
2235
- index = i;
2236
- break;
2237
- }
2238
- }
2239
- if (index >= 0) {
2240
- multiSortMeta.splice(index, 1);
2241
- }
2242
- multiSortMeta = multiSortMeta.length > 0 ? multiSortMeta : null;
2243
- };
2244
- var sortSingle = function sortSingle(data) {
2245
- return sortNodes(data);
2246
- };
2247
- var sortNodes = function sortNodes(data) {
2248
- var value = _toConsumableArray(data);
2249
- if (columnSortable.current && columnSortable.current === 'custom' && columnSortFunction.current) {
2250
- value = columnSortFunction.current({
2251
- data: data,
2252
- field: getSortField(),
2253
- order: getSortOrder()
2254
- });
2255
- } else {
2256
- // performance optimization to prevent resolving field data in each loop
2257
- var lookupMap = new Map();
2258
- var sortField = getSortField();
2259
- var comparator = ObjectUtils.localeComparator(context && context.locale || PrimeReact.locale);
2260
- var _iterator = _createForOfIteratorHelper(data),
2261
- _step;
2262
- try {
2263
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
2264
- var node = _step.value;
2265
- lookupMap.set(node.data, ObjectUtils.resolveFieldData(node.data, sortField));
2266
- }
2267
- } catch (err) {
2268
- _iterator.e(err);
2269
- } finally {
2270
- _iterator.f();
2271
- }
2272
- value.sort(function (node1, node2) {
2273
- var value1 = lookupMap.get(node1.data);
2274
- var value2 = lookupMap.get(node2.data);
2275
- return compareValuesOnSort(value1, value2, comparator, getSortOrder());
2276
- });
2277
- for (var i = 0; i < value.length; i++) {
2278
- if (value[i].children && value[i].children.length) {
2279
- value[i].children = sortNodes(value[i].children);
2280
- }
2281
- }
2282
- }
2283
- return value;
2284
- };
2285
- var sortMultiple = function sortMultiple(data) {
2286
- var multiSortMeta = getMultiSortMeta();
2287
- if (multiSortMeta) return sortMultipleNodes(data, multiSortMeta);else return data;
2288
- };
2289
- var sortMultipleNodes = function sortMultipleNodes(data, multiSortMeta) {
2290
- var value = _toConsumableArray(data);
2291
- var comparator = ObjectUtils.localeComparator(context && context.locale || PrimeReact.locale);
2292
- value.sort(function (node1, node2) {
2293
- return multisortField(node1, node2, multiSortMeta, 0, comparator);
2294
- });
2295
- for (var i = 0; i < value.length; i++) {
2296
- if (value[i].children && value[i].children.length) {
2297
- value[i].children = sortMultipleNodes(value[i].children, multiSortMeta);
2298
- }
2299
- }
2300
- return value;
2301
- };
2302
- var multisortField = function multisortField(node1, node2, multiSortMeta, index, comparator) {
2303
- if (!multiSortMeta || !multiSortMeta[index]) {
2304
- return;
2305
- }
2306
- var value1 = ObjectUtils.resolveFieldData(node1.data, multiSortMeta[index].field);
2307
- var value2 = ObjectUtils.resolveFieldData(node2.data, multiSortMeta[index].field);
2308
-
2309
- // check if they are equal handling dates and locales
2310
- if (ObjectUtils.compare(value1, value2, comparator) === 0) {
2311
- return multiSortMeta.length - 1 > index ? multisortField(node1, node2, multiSortMeta, index + 1, comparator) : 0;
2312
- }
2313
- return compareValuesOnSort(value1, value2, comparator, multiSortMeta[index].order);
2314
- };
2315
- var compareValuesOnSort = function compareValuesOnSort(value1, value2, comparator, order) {
2316
- return ObjectUtils.sort(value1, value2, order, comparator, context && context.nullSortOrder || PrimeReact.nullSortOrder);
2317
- };
2318
- var filter = function filter(value, field, mode) {
2319
- onFilter({
2320
- value: value,
2321
- field: field,
2322
- matchMode: mode
2323
- });
2324
- };
2325
- var onFilter = function onFilter(event) {
2326
- var filters = getFilters();
2327
- var newFilters = filters ? _objectSpread({}, filters) : {};
2328
- if (!isFilterBlank(event.value)) newFilters[event.field] = {
2329
- value: event.value,
2330
- matchMode: event.matchMode
2331
- };else if (newFilters[event.field]) delete newFilters[event.field];
2332
- if (props.onFilter) {
2333
- props.onFilter({
2334
- filters: newFilters
2335
- });
2336
- } else {
2337
- setFirstState(0);
2338
- setFiltersState(newFilters);
2339
- }
2340
- if (props.onValueChange) {
2341
- props.onValueChange(processedData({
2342
- filters: filters
2343
- }));
2344
- }
2345
- };
2346
- var isFilterBlank = function isFilterBlank(filter) {
2347
- if (filter !== null && filter !== undefined) {
2348
- if (typeof filter === 'string' && filter.trim().length === 0 || filter instanceof Array && filter.length === 0) return true;else return false;
2349
- }
2350
- return true;
2351
- };
2352
- var onColumnResizeStart = function onColumnResizeStart(event) {
2353
- var containerLeft = DomHandler.getOffset(elementRef.current).left;
2354
- resizeColumn.current = event.columnEl;
2355
- resizeColumnProps.current = event.column;
2356
- columnResizing.current = true;
2357
- lastResizerHelperX.current = event.originalEvent.pageX - containerLeft + elementRef.current.scrollLeft;
2358
- bindColumnResizeEvents();
2359
- };
2360
- var onColumnResize = function onColumnResize(event) {
2361
- var containerLeft = DomHandler.getOffset(elementRef.current).left;
2362
- !ptCallbacks.isUnstyled() && DomHandler.addClass(elementRef.current, 'p-unselectable-text');
2363
- resizerHelperRef.current.style.height = elementRef.current.offsetHeight + 'px';
2364
- resizerHelperRef.current.style.top = 0 + 'px';
2365
- resizerHelperRef.current.style.left = event.pageX - containerLeft + elementRef.current.scrollLeft + 'px';
2366
- resizerHelperRef.current.style.display = 'block';
2367
- };
2368
- var onColumnResizeEnd = function onColumnResizeEnd(event) {
2369
- var delta = resizerHelperRef.current.offsetLeft - lastResizerHelperX.current;
2370
- var columnWidth = resizeColumn.current.offsetWidth;
2371
- var newColumnWidth = columnWidth + delta;
2372
- var minWidth = resizeColumn.current.style.minWidth || 15;
2373
- if (columnWidth + delta > parseInt(minWidth, 10)) {
2374
- if (props.columnResizeMode === 'fit') {
2375
- var nextColumn = resizeColumn.current.nextElementSibling;
2376
- var nextColumnWidth = nextColumn.offsetWidth - delta;
2377
- if (newColumnWidth > 15 && nextColumnWidth > 15) {
2378
- if (props.scrollable) {
2379
- var scrollableView = findParentScrollableView(resizeColumn.current);
2380
- var scrollableBodyTable = DomHandler.findSingle(scrollableView, 'table.p-treetable-scrollable-body-table');
2381
- var scrollableHeaderTable = DomHandler.findSingle(scrollableView, 'table.p-treetable-scrollable-header-table');
2382
- var scrollableFooterTable = DomHandler.findSingle(scrollableView, 'table.p-treetable-scrollable-footer-table');
2383
- var resizeColumnIndex = DomHandler.index(resizeColumn.current);
2384
- resizeColGroup(scrollableHeaderTable, resizeColumnIndex, newColumnWidth, nextColumnWidth);
2385
- resizeColGroup(scrollableBodyTable, resizeColumnIndex, newColumnWidth, nextColumnWidth);
2386
- resizeColGroup(scrollableFooterTable, resizeColumnIndex, newColumnWidth, nextColumnWidth);
2387
- } else {
2388
- resizeColumn.current.style.width = newColumnWidth + 'px';
2389
- if (nextColumn) {
2390
- nextColumn.style.width = nextColumnWidth + 'px';
2391
- }
2392
- }
2393
- }
2394
- } else if (props.columnResizeMode === 'expand') {
2395
- if (props.scrollable) {
2396
- var _scrollableView = findParentScrollableView(resizeColumn.current);
2397
- var _scrollableBodyTable = DomHandler.findSingle(_scrollableView, 'table.p-treetable-scrollable-body-table');
2398
- var _scrollableHeaderTable = DomHandler.findSingle(_scrollableView, 'table.p-treetable-scrollable-header-table');
2399
- var _scrollableFooterTable = DomHandler.findSingle(_scrollableView, 'table.p-treetable-scrollable-footer-table');
2400
- _scrollableBodyTable.style.width = _scrollableBodyTable.offsetWidth + delta + 'px';
2401
- _scrollableHeaderTable.style.width = _scrollableHeaderTable.offsetWidth + delta + 'px';
2402
- if (_scrollableFooterTable) {
2403
- _scrollableFooterTable.style.width = _scrollableHeaderTable.offsetWidth + delta + 'px';
2404
- }
2405
- var _resizeColumnIndex = DomHandler.index(resizeColumn.current);
2406
- resizeColGroup(_scrollableHeaderTable, _resizeColumnIndex, newColumnWidth, null);
2407
- resizeColGroup(_scrollableBodyTable, _resizeColumnIndex, newColumnWidth, null);
2408
- resizeColGroup(_scrollableFooterTable, _resizeColumnIndex, newColumnWidth, null);
2409
- } else {
2410
- tableRef.current.style.width = tableRef.current.offsetWidth + delta + 'px';
2411
- resizeColumn.current.style.width = newColumnWidth + 'px';
2412
- }
2413
- }
2414
- if (props.onColumnResizeEnd) {
2415
- props.onColumnResizeEnd({
2416
- element: resizeColumn.current,
2417
- column: resizeColumnProps.current,
2418
- delta: delta
2419
- });
2420
- }
2421
- }
2422
- resizerHelperRef.current.style.display = 'none';
2423
- resizeColumn.current = null;
2424
- resizeColumnProps.current = null;
2425
- DomHandler.removeClass(elementRef.current, 'p-unselectable-text');
2426
- unbindColumnResizeEvents();
2427
- };
2428
- var findParentScrollableView = function findParentScrollableView(column) {
2429
- if (column) {
2430
- var parent = column.parentElement;
2431
- while (parent && DomHandler.getAttribute(parent, 'data-pc-section') !== 'scrollable') {
2432
- parent = parent.parentElement;
2433
- }
2434
- return parent;
2435
- } else {
2436
- return null;
2437
- }
2438
- };
2439
- var resizeColGroup = function resizeColGroup(table, resizeColumnIndex, newColumnWidth, nextColumnWidth) {
2440
- if (table) {
2441
- var colGroup = table.children[0].nodeName === 'COLGROUP' ? table.children[0] : null;
2442
- if (colGroup) {
2443
- var col = colGroup.children[resizeColumnIndex];
2444
- var nextCol = col.nextElementSibling;
2445
- col.style.width = newColumnWidth + 'px';
2446
- if (nextCol && nextColumnWidth) {
2447
- nextCol.style.width = nextColumnWidth + 'px';
2448
- }
2449
- } else {
2450
- throw new Error('Scrollable tables require a colgroup to support resizable columns');
2451
- }
2452
- }
2453
- };
2454
- var bindColumnResizeEvents = function bindColumnResizeEvents() {
2455
- bindDocumentMouseMoveListener();
2456
- bindDocumentMouseUpListener();
2457
- };
2458
- var unbindColumnResizeEvents = function unbindColumnResizeEvents() {
2459
- unbindDocumentMouseMoveListener();
2460
- unbindDocumentMouseUpListener();
2461
- };
2462
- var onColumnDragStart = function onColumnDragStart(e) {
2463
- var event = e.originalEvent,
2464
- column = e.column;
2465
- if (columnResizing.current) {
2466
- event.preventDefault();
2467
- return;
2468
- }
2469
- iconWidth.current = DomHandler.getHiddenElementOuterWidth(reorderIndicatorUpRef.current);
2470
- iconHeight.current = DomHandler.getHiddenElementOuterHeight(reorderIndicatorUpRef.current);
2471
- draggedColumnEl.current = findParentHeader(event.currentTarget);
2472
- draggedColumn.current = column;
2473
- event.dataTransfer.setData('text', 'b'); // Firefox requires this to make dragging possible
2474
- };
2475
-
2476
- var onColumnDragOver = function onColumnDragOver(e) {
2477
- var event = e.originalEvent,
2478
- column = e.column;
2479
- var dropHeader = findParentHeader(event.currentTarget);
2480
- if (props.reorderableColumns && draggedColumnEl.current && dropHeader && !getColumnProp(column, 'frozen')) {
2481
- event.preventDefault();
2482
- var containerOffset = DomHandler.getOffset(elementRef.current);
2483
- var dropHeaderOffset = DomHandler.getOffset(dropHeader);
2484
- if (draggedColumnEl.current !== dropHeader) {
2485
- var targetLeft = dropHeaderOffset.left - containerOffset.left;
2486
- //let targetTop = containerOffset.top - dropHeaderOffset.top;
2487
- var columnCenter = dropHeaderOffset.left + dropHeader.offsetWidth / 2;
2488
- reorderIndicatorUpRef.current.style.top = dropHeaderOffset.top - containerOffset.top - (iconHeight.current - 1) + 'px';
2489
- reorderIndicatorDownRef.current.style.top = dropHeaderOffset.top - containerOffset.top + dropHeader.offsetHeight + 'px';
2490
- if (event.pageX > columnCenter) {
2491
- reorderIndicatorUpRef.current.style.left = targetLeft + dropHeader.offsetWidth - Math.ceil(iconWidth.current / 2) + 'px';
2492
- reorderIndicatorDownRef.current.style.left = targetLeft + dropHeader.offsetWidth - Math.ceil(iconWidth.current / 2) + 'px';
2493
- dropPosition.current = 1;
2494
- } else {
2495
- reorderIndicatorUpRef.current.style.left = targetLeft - Math.ceil(iconWidth.current / 2) + 'px';
2496
- reorderIndicatorDownRef.current.style.left = targetLeft - Math.ceil(iconWidth.current / 2) + 'px';
2497
- dropPosition.current = -1;
2498
- }
2499
- reorderIndicatorUpRef.current.style.display = 'block';
2500
- reorderIndicatorDownRef.current.style.display = 'block';
2501
- }
2502
- }
2503
- };
2504
- var onColumnDragLeave = function onColumnDragLeave(e) {
2505
- var event = e.originalEvent;
2506
- if (props.reorderableColumns && draggedColumnEl.current) {
2507
- event.preventDefault();
2508
- reorderIndicatorUpRef.current.style.display = 'none';
2509
- reorderIndicatorDownRef.current.style.display = 'none';
2510
- }
2511
- };
2512
- var onColumnDrop = function onColumnDrop(e) {
2513
- var event = e.originalEvent,
2514
- column = e.column;
2515
- event.preventDefault();
2516
- if (draggedColumnEl.current) {
2517
- var dragIndex = DomHandler.index(draggedColumnEl.current);
2518
- var dropIndex = DomHandler.index(findParentHeader(event.currentTarget));
2519
- var allowDrop = dragIndex !== dropIndex;
2520
- if (allowDrop && (dropIndex - dragIndex === 1 && dropPosition.current === -1 || dragIndex - dropIndex === 1 && dropPosition.current === 1)) {
2521
- allowDrop = false;
2522
- }
2523
- if (allowDrop) {
2524
- var columns = columnOrderState ? getColumns() : React.Children.toArray(props.children);
2525
- var isSameColumn = function isSameColumn(col1, col2) {
2526
- return getColumnProp(col1, 'columnKey') || getColumnProp(col2, 'columnKey') ? ObjectUtils.equals(col1, col2, 'props.columnKey') : ObjectUtils.equals(col1, col2, 'props.field');
2527
- };
2528
- var dragColIndex = columns.findIndex(function (child) {
2529
- return isSameColumn(child, draggedColumn.current);
2530
- });
2531
- var dropColIndex = columns.findIndex(function (child) {
2532
- return isSameColumn(child, column);
2533
- });
2534
- if (dropColIndex < dragColIndex && dropPosition.current === 1) {
2535
- dropColIndex++;
2536
- }
2537
- if (dropColIndex > dragColIndex && dropPosition.current === -1) {
2538
- dropColIndex--;
2539
- }
2540
- ObjectUtils.reorderArray(columns, dragColIndex, dropColIndex);
2541
- var columnOrder = [];
2542
- var _iterator2 = _createForOfIteratorHelper(columns),
2543
- _step2;
2544
- try {
2545
- for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
2546
- var _column = _step2.value;
2547
- columnOrder.push(getColumnProp(_column, 'columnKey') || getColumnProp(_column, 'field'));
2548
- }
2549
- } catch (err) {
2550
- _iterator2.e(err);
2551
- } finally {
2552
- _iterator2.f();
2553
- }
2554
- setColumnOrderState(columnOrder);
2555
- if (props.onColReorder) {
2556
- props.onColReorder({
2557
- dragIndex: dragColIndex,
2558
- dropIndex: dropColIndex,
2559
- columns: columns
2560
- });
2561
- }
2562
- }
2563
- reorderIndicatorUpRef.current.style.display = 'none';
2564
- reorderIndicatorDownRef.current.style.display = 'none';
2565
- draggedColumnEl.current.draggable = false;
2566
- draggedColumnEl.current = null;
2567
- dropPosition.current = null;
2568
- }
2569
- };
2570
- var findParentHeader = function findParentHeader(element) {
2571
- if (element.nodeName === 'TH') {
2572
- return element;
2573
- } else {
2574
- var parent = element.parentElement;
2575
- while (parent.nodeName !== 'TH') {
2576
- parent = parent.parentElement;
2577
- if (!parent) break;
2578
- }
2579
- return parent;
2580
- }
2581
- };
2582
- var getColumnProp = function getColumnProp(column, name) {
2583
- return ColumnBase.getCProp(column, name);
2584
- };
2585
- var getExpandedKeys = function getExpandedKeys() {
2586
- return props.onToggle ? props.expandedKeys : expandedKeysState;
2587
- };
2588
- var getFirst = function getFirst() {
2589
- return props.onPage ? props.first : firstState;
2590
- };
2591
- var getRows = function getRows() {
2592
- return props.onPage ? props.rows : rowsState;
2593
- };
2594
- var getSortField = function getSortField() {
2595
- return props.onSort ? props.sortField : sortFieldState;
2596
- };
2597
- var getSortOrder = function getSortOrder() {
2598
- return props.onSort ? props.sortOrder : sortOrderState;
2599
- };
2600
- var getMultiSortMeta = function getMultiSortMeta() {
2601
- return (props.onSort ? props.multiSortMeta : multiSortMetaState) || [];
2602
- };
2603
- var getFilters = function getFilters() {
2604
- return props.onFilter ? props.filters : filtersState;
2605
- };
2606
- var findColumnByKey = function findColumnByKey(columns, key) {
2607
- if (columns && columns.length) {
2608
- for (var i = 0; i < columns.length; i++) {
2609
- var child = columns[i];
2610
- if (getColumnProp(child, 'columnKey') === key || getColumnProp(child, 'field') === key) {
2611
- return child;
2612
- }
2613
- }
2614
- }
2615
- return null;
2616
- };
2617
- var getColumns = function getColumns() {
2618
- var columns = React.Children.toArray(props.children);
2619
- if (columns && columns.length) {
2620
- if (props.reorderableColumns && columnOrderState) {
2621
- var orderedColumns = [];
2622
- var _iterator3 = _createForOfIteratorHelper(columnOrderState),
2623
- _step3;
2624
- try {
2625
- for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
2626
- var columnKey = _step3.value;
2627
- var column = findColumnByKey(columns, columnKey);
2628
- if (column) {
2629
- orderedColumns.push(column);
2630
- }
2631
- }
2632
- } catch (err) {
2633
- _iterator3.e(err);
2634
- } finally {
2635
- _iterator3.f();
2636
- }
2637
- return [].concat(orderedColumns, _toConsumableArray(columns.filter(function (item) {
2638
- return orderedColumns.indexOf(item) < 0;
2639
- })));
2640
- } else {
2641
- return columns;
2642
- }
2643
- }
2644
- return null;
2645
- };
2646
- var getTotalRecords = function getTotalRecords(data) {
2647
- return props.lazy ? props.totalRecords : data ? data.length : 0;
2648
- };
2649
- var isSingleSelectionMode = function isSingleSelectionMode() {
2650
- return props.selectionMode && props.selectionMode === 'single';
2651
- };
2652
- var isMultipleSelectionMode = function isMultipleSelectionMode() {
2653
- return props.selectionMode && props.selectionMode === 'multiple';
2654
- };
2655
- var isRowSelectionMode = function isRowSelectionMode() {
2656
- return isSingleSelectionMode() || isMultipleSelectionMode();
2657
- };
2658
- var getFrozenColumns = function getFrozenColumns(columns) {
2659
- var frozenColumns = null;
2660
- var _iterator4 = _createForOfIteratorHelper(columns),
2661
- _step4;
2662
- try {
2663
- for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
2664
- var col = _step4.value;
2665
- if (getColumnProp(col, 'frozen')) {
2666
- frozenColumns = frozenColumns || [];
2667
- frozenColumns.push(col);
2668
- }
2669
- }
2670
- } catch (err) {
2671
- _iterator4.e(err);
2672
- } finally {
2673
- _iterator4.f();
2674
- }
2675
- return frozenColumns;
2676
- };
2677
- var getScrollableColumns = function getScrollableColumns(columns) {
2678
- var scrollableColumns = null;
2679
- var _iterator5 = _createForOfIteratorHelper(columns),
2680
- _step5;
2681
- try {
2682
- for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
2683
- var col = _step5.value;
2684
- if (!getColumnProp(col, 'frozen')) {
2685
- scrollableColumns = scrollableColumns || [];
2686
- scrollableColumns.push(col);
2687
- }
2688
- }
2689
- } catch (err) {
2690
- _iterator5.e(err);
2691
- } finally {
2692
- _iterator5.f();
2693
- }
2694
- return scrollableColumns;
2695
- };
2696
- var filterLocal = function filterLocal(value) {
2697
- var filteredNodes = [];
2698
- var filters = getFilters();
2699
- var columns = React.Children.toArray(props.children);
2700
- var isStrictMode = props.filterMode === 'strict';
2701
- var _iterator6 = _createForOfIteratorHelper(value),
2702
- _step6;
2703
- try {
2704
- for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
2705
- var node = _step6.value;
2706
- var copyNode = _objectSpread({}, node);
2707
- var localMatch = true;
2708
- var globalMatch = false;
2709
- for (var j = 0; j < columns.length; j++) {
2710
- var col = columns[j];
2711
- var filterMeta = filters ? filters[getColumnProp(col, 'field')] : null;
2712
- var filterField = getColumnProp(col, 'field');
2713
- var filterValue = void 0,
2714
- filterConstraint = void 0,
2715
- paramsWithoutNode = void 0,
2716
- options = void 0;
2717
-
2718
- //local
2719
- if (filterMeta) {
2720
- var filterMatchMode = filterMeta.matchMode || getColumnProp(col, 'filterMatchMode') || 'startsWith';
2721
- filterValue = filterMeta.value;
2722
- filterConstraint = filterMatchMode === 'custom' ? getColumnProp(col, 'filterFunction') : FilterService.filters[filterMatchMode];
2723
- options = {
2724
- rowData: node,
2725
- filters: filters,
2726
- props: props,
2727
- column: {
2728
- filterMeta: filterMeta,
2729
- filterField: filterField,
2730
- props: ColumnBase.getCProps(col)
2731
- }
2732
- };
2733
- paramsWithoutNode = {
2734
- filterField: filterField,
2735
- filterValue: filterValue,
2736
- filterConstraint: filterConstraint,
2737
- isStrictMode: isStrictMode,
2738
- options: options
2739
- };
2740
- if (isStrictMode && !(findFilteredNodes(copyNode, paramsWithoutNode) || isFilterMatched(copyNode, paramsWithoutNode)) || !isStrictMode && !(isFilterMatched(copyNode, paramsWithoutNode) || findFilteredNodes(copyNode, paramsWithoutNode))) {
2741
- localMatch = false;
2742
- }
2743
- if (!localMatch) {
2744
- break;
2745
- }
2746
- }
2747
-
2748
- //global
2749
- if (props.globalFilter && !globalMatch) {
2750
- var copyNodeForGlobal = _objectSpread({}, copyNode);
2751
- filterValue = props.globalFilter;
2752
- filterConstraint = FilterService.filters[props.globalFilterMatchMode];
2753
- paramsWithoutNode = {
2754
- filterField: filterField,
2755
- filterValue: filterValue,
2756
- filterConstraint: filterConstraint,
2757
- isStrictMode: isStrictMode
2758
- };
2759
- if (isStrictMode && (findFilteredNodes(copyNodeForGlobal, paramsWithoutNode) || isFilterMatched(copyNodeForGlobal, paramsWithoutNode)) || !isStrictMode && (isFilterMatched(copyNodeForGlobal, paramsWithoutNode) || findFilteredNodes(copyNodeForGlobal, paramsWithoutNode))) {
2760
- globalMatch = true;
2761
- copyNode = copyNodeForGlobal;
2762
- }
2763
- }
2764
- }
2765
- var matches = localMatch;
2766
- if (props.globalFilter) {
2767
- matches = localMatch && globalMatch;
2768
- }
2769
- if (matches) {
2770
- filteredNodes.push(copyNode);
2771
- }
2772
- }
2773
- } catch (err) {
2774
- _iterator6.e(err);
2775
- } finally {
2776
- _iterator6.f();
2777
- }
2778
- return filteredNodes;
2779
- };
2780
- var findFilteredNodes = function findFilteredNodes(node, paramsWithoutNode) {
2781
- if (node) {
2782
- var matched = false;
2783
- if (node.children) {
2784
- var childNodes = _toConsumableArray(node.children);
2785
- node.children = [];
2786
- var _iterator7 = _createForOfIteratorHelper(childNodes),
2787
- _step7;
2788
- try {
2789
- for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {
2790
- var childNode = _step7.value;
2791
- var copyChildNode = _objectSpread({}, childNode);
2792
- if (isFilterMatched(copyChildNode, paramsWithoutNode)) {
2793
- matched = true;
2794
- node.children.push(copyChildNode);
2795
- }
2796
- }
2797
- } catch (err) {
2798
- _iterator7.e(err);
2799
- } finally {
2800
- _iterator7.f();
2801
- }
2802
- }
2803
- if (matched) {
2804
- return true;
2805
- }
2806
- }
2807
- };
2808
- var isFilterMatched = function isFilterMatched(node, _ref) {
2809
- var filterField = _ref.filterField,
2810
- filterValue = _ref.filterValue,
2811
- filterConstraint = _ref.filterConstraint,
2812
- isStrictMode = _ref.isStrictMode,
2813
- options = _ref.options;
2814
- var matched = false;
2815
- var dataFieldValue = ObjectUtils.resolveFieldData(node.data, filterField);
2816
- if (filterConstraint(dataFieldValue, filterValue, props.filterLocale, options)) {
2817
- matched = true;
2818
- }
2819
- if (!matched || isStrictMode && !isNodeLeaf(node)) {
2820
- matched = findFilteredNodes(node, {
2821
- filterField: filterField,
2822
- filterValue: filterValue,
2823
- filterConstraint: filterConstraint,
2824
- isStrictMode: isStrictMode
2825
- }) || matched;
2826
- }
2827
- return matched;
2828
- };
2829
- var isNodeLeaf = function isNodeLeaf(node) {
2830
- return node.leaf === false ? false : !(node.children && node.children.length);
2831
- };
2832
- var processedData = function processedData(localState) {
2833
- var data = props.value || [];
2834
- if (!props.lazy) {
2835
- if (data && data.length) {
2836
- var filters = localState && localState.filters || getFilters();
2837
- var sortField = localState && localState.sortField || getSortField();
2838
- var multiSortMeta = localState && localState.multiSortMeta || getMultiSortMeta();
2839
- if (ObjectUtils.isNotEmpty(filters) || props.globalFilter) {
2840
- data = filterLocal(data);
2841
- }
2842
- if (sortField || ObjectUtils.isNotEmpty(multiSortMeta)) {
2843
- if (props.sortMode === 'single') data = sortSingle(data);else if (props.sortMode === 'multiple') data = sortMultiple(data);
2844
- }
2845
- }
2846
- }
2847
- return data;
2848
- };
2849
- React.useImperativeHandle(ref, function () {
2850
- return {
2851
- props: props,
2852
- filter: filter,
2853
- getElement: function getElement() {
2854
- return elementRef.current;
2855
- }
2856
- };
2857
- });
2858
- var createTableHeader = function createTableHeader(columns, columnGroup) {
2859
- var sortField = getSortField();
2860
- var sortOrder = getSortOrder();
2861
- var multiSortMeta = _toConsumableArray(getMultiSortMeta());
2862
- var filters = getFilters();
2863
- return /*#__PURE__*/React.createElement(TreeTableHeader, {
2864
- hostName: "TreeTable",
2865
- columns: columns,
2866
- columnGroup: columnGroup,
2867
- tabIndex: props.tabIndex,
2868
- onSort: onSort,
2869
- sortField: sortField,
2870
- sortIcon: props.sortIcon,
2871
- sortOrder: sortOrder,
2872
- multiSortMeta: multiSortMeta,
2873
- resizableColumns: props.resizableColumns,
2874
- onResizeStart: onColumnResizeStart,
2875
- reorderableColumns: props.reorderableColumns,
2876
- onDragStart: onColumnDragStart,
2877
- onDragOver: onColumnDragOver,
2878
- onDragLeave: onColumnDragLeave,
2879
- onDrop: onColumnDrop,
2880
- onFilter: onFilter,
2881
- filters: filters,
2882
- filterDelay: props.filterDelay,
2883
- ptCallbacks: ptCallbacks,
2884
- metaData: metaData,
2885
- unstyled: props.unstyled
2886
- });
2887
- };
2888
- var createTableFooter = function createTableFooter(columns, columnGroup) {
2889
- return /*#__PURE__*/React.createElement(TreeTableFooter, {
2890
- hostName: "TreeTable",
2891
- columns: columns,
2892
- columnGroup: columnGroup,
2893
- ptCallbacks: ptCallbacks,
2894
- metaData: metaData
2895
- });
2896
- };
2897
- var createTableBody = function createTableBody(value, columns) {
2898
- return /*#__PURE__*/React.createElement(TreeTableBody, {
2899
- hostName: "TreeTable",
2900
- value: value,
2901
- originalOptions: props.value,
2902
- checkboxIcon: props.checkboxIcon,
2903
- columns: columns,
2904
- expandedKeys: getExpandedKeys(),
2905
- selectOnEdit: props.selectOnEdit,
2906
- onToggle: onToggle,
2907
- togglerTemplate: props.togglerTemplate,
2908
- onExpand: props.onExpand,
2909
- onCollapse: props.onCollapse,
2910
- paginator: props.paginator,
2911
- first: getFirst(),
2912
- rows: getRows(),
2913
- selectionMode: props.selectionMode,
2914
- selectionKeys: props.selectionKeys,
2915
- onSelectionChange: props.onSelectionChange,
2916
- metaKeySelection: props.metaKeySelection,
2917
- onRowClick: props.onRowClick,
2918
- onRowMouseEnter: props.onRowMouseEnter,
2919
- onRowMouseLeave: props.onRowMouseLeave,
2920
- onSelect: props.onSelect,
2921
- onUnselect: props.onUnselect,
2922
- propagateSelectionUp: props.propagateSelectionUp,
2923
- propagateSelectionDown: props.propagateSelectionDown,
2924
- lazy: props.lazy,
2925
- rowClassName: props.rowClassName,
2926
- emptyMessage: props.emptyMessage,
2927
- loading: props.loading,
2928
- contextMenuSelectionKey: props.contextMenuSelectionKey,
2929
- onContextMenuSelectionChange: props.onContextMenuSelectionChange,
2930
- onContextMenu: props.onContextMenu,
2931
- ptCallbacks: ptCallbacks,
2932
- metaData: metaData
2933
- });
2934
- };
2935
- var createPaginator = function createPaginator(position, totalRecords) {
2936
- var className = classNames('p-paginator-' + position, props.paginatorClassName);
2937
- return /*#__PURE__*/React.createElement(Paginator, {
2938
- first: getFirst(),
2939
- rows: getRows(),
2940
- pageLinkSize: props.pageLinkSize,
2941
- className: className,
2942
- onPageChange: onPageChange,
2943
- template: props.paginatorTemplate,
2944
- totalRecords: totalRecords,
2945
- rowsPerPageOptions: props.rowsPerPageOptions,
2946
- currentPageReportTemplate: props.currentPageReportTemplate,
2947
- leftContent: props.paginatorLeft,
2948
- rightContent: props.paginatorRight,
2949
- alwaysShow: props.alwaysShowPaginator,
2950
- dropdownAppendTo: props.paginatorDropdownAppendTo,
2951
- pt: ptCallbacks.ptm('paginator'),
2952
- unstyled: props.unstyled,
2953
- __parentMetadata: {
2954
- parent: metaData
2955
- }
2956
- });
2957
- };
2958
- var createScrollableView = function createScrollableView(value, columns, frozen, headerColumnGroup, footerColumnGroup) {
2959
- var header = createTableHeader(columns, headerColumnGroup);
2960
- var footer = createTableFooter(columns, footerColumnGroup);
2961
- var body = createTableBody(value, columns);
2962
- return /*#__PURE__*/React.createElement(TreeTableScrollableView, {
2963
- hostName: "TreeTable",
2964
- columns: columns,
2965
- header: header,
2966
- body: body,
2967
- footer: footer,
2968
- scrollHeight: props.scrollHeight,
2969
- frozen: frozen,
2970
- frozenWidth: props.frozenWidth,
2971
- ptCallbacks: ptCallbacks,
2972
- metaData: metaData
2973
- });
2974
- };
2975
- var createScrollableTable = function createScrollableTable(value) {
2976
- var columns = getColumns();
2977
- var frozenColumns = getFrozenColumns(columns);
2978
- var scrollableColumns = frozenColumns ? getScrollableColumns(columns) : columns;
2979
- var frozenView, scrollableView;
2980
- if (frozenColumns) {
2981
- frozenView = createScrollableView(value, frozenColumns, true, props.frozenHeaderColumnGroup, props.frozenFooterColumnGroup);
2982
- }
2983
- scrollableView = createScrollableView(value, scrollableColumns, false, props.headerColumnGroup, props.footerColumnGroup);
2984
- var scrollableWrapperProps = mergeProps({
2985
- className: ptCallbacks.cx('scrollableWrapper')
2986
- }, ptCallbacks.ptm('scrollableWrapper'));
2987
- return /*#__PURE__*/React.createElement("div", scrollableWrapperProps, frozenView, scrollableView);
2988
- };
2989
- var createRegularTable = function createRegularTable(value) {
2990
- var columns = getColumns();
2991
- var header = createTableHeader(columns, props.headerColumnGroup);
2992
- var footer = createTableFooter(columns, props.footerColumnGroup);
2993
- var body = createTableBody(value, columns);
2994
- var wrapperProps = mergeProps({
2995
- className: ptCallbacks.cx('wrapper')
2996
- }, ptCallbacks.ptm('wrapper'));
2997
- var tableProps = mergeProps({
2998
- style: props.tableStyle,
2999
- className: classNames(props.tableClassName, ptCallbacks.cx('table'))
3000
- }, ptCallbacks.ptm('table'));
3001
- return /*#__PURE__*/React.createElement("div", wrapperProps, /*#__PURE__*/React.createElement("table", _extends({
3002
- ref: tableRef
3003
- }, tableProps), header, footer, body));
3004
- };
3005
- var createTable = function createTable(value) {
3006
- return props.scrollable ? createScrollableTable(value) : createRegularTable(value);
3007
- };
3008
- var createLoader = function createLoader() {
3009
- if (props.loading) {
3010
- var loadingIconProps = mergeProps({
3011
- className: ptCallbacks.cx('loadingIcon')
3012
- }, ptCallbacks.ptm('loadingIcon'));
3013
- var icon = props.loadingIcon || /*#__PURE__*/React.createElement(SpinnerIcon, _extends({}, loadingIconProps, {
3014
- spin: true
3015
- }));
3016
- var loadingIcon = IconUtils.getJSXIcon(icon, _objectSpread({}, loadingIconProps), {
3017
- props: props
3018
- });
3019
- var loadingWrapperProps = mergeProps({
3020
- className: ptCallbacks.cx('loadingWrapper')
3021
- }, ptCallbacks.ptm('loadingWrapper'));
3022
- var loadingOverlayProps = mergeProps({
3023
- className: ptCallbacks.cx('loadingOverlay')
3024
- }, ptCallbacks.ptm('loadingOverlay'));
3025
- return /*#__PURE__*/React.createElement("div", loadingWrapperProps, /*#__PURE__*/React.createElement("div", loadingOverlayProps, loadingIcon));
3026
- }
3027
- return null;
3028
- };
3029
- var data = processedData();
3030
- var table = createTable(data);
3031
- var totalRecords = getTotalRecords(data);
3032
- var headerProps = mergeProps({
3033
- className: ptCallbacks.cx('header')
3034
- }, ptCallbacks.ptm('header'));
3035
- var footerProps = mergeProps({
3036
- className: ptCallbacks.cx('footer')
3037
- }, ptCallbacks.ptm('footer'));
3038
- var resizeHelperProps = mergeProps({
3039
- className: ptCallbacks.cx('resizeHelper'),
3040
- style: {
3041
- display: 'none'
3042
- }
3043
- }, ptCallbacks.ptm('resizeHelper'));
3044
- var headerFacet = props.header && /*#__PURE__*/React.createElement("div", headerProps, props.header);
3045
- var footerFacet = props.footer && /*#__PURE__*/React.createElement("div", footerProps, props.footer);
3046
- var paginatorTop = props.paginator && props.paginatorPosition !== 'bottom' && createPaginator('top', totalRecords);
3047
- var paginatorBottom = props.paginator && props.paginatorPosition !== 'top' && createPaginator('bottom', totalRecords);
3048
- var loader = createLoader();
3049
- var resizeHelper = props.resizableColumns && /*#__PURE__*/React.createElement("div", _extends({
3050
- ref: resizerHelperRef
3051
- }, resizeHelperProps));
3052
- var reorderIndicatorUpProps = mergeProps({
3053
- className: ptCallbacks.cx('reorderIndicatorUp'),
3054
- style: {
3055
- position: 'absolute',
3056
- display: 'none'
3057
- }
3058
- }, ptCallbacks.ptm('reorderIndicatorUp'));
3059
- var reorderIndicatorUpIconProps = mergeProps(ptCallbacks.ptm('reorderIndicatorUpIcon'));
3060
- var reorderIndicatorUpIcon = props.reorderableColumns && IconUtils.getJSXIcon(props.reorderIndicatorUpIcon || /*#__PURE__*/React.createElement(ArrowDownIcon, reorderIndicatorUpIconProps), _objectSpread({}, reorderIndicatorUpIconProps), {
3061
- props: props
3062
- });
3063
- var reorderIndicatorUp = props.reorderableColumns && /*#__PURE__*/React.createElement("span", _extends({
3064
- ref: reorderIndicatorUpRef
3065
- }, reorderIndicatorUpProps), reorderIndicatorUpIcon);
3066
- var reorderIndicatorDownProps = {
3067
- className: ptCallbacks.sx('reorderIndicatorDown'),
3068
- style: {
3069
- position: 'absolute',
3070
- display: 'none'
3071
- }
3072
- };
3073
- var reorderIndicatorDownIconProps = mergeProps(ptCallbacks.ptm('reorderIndicatorDownIcon'));
3074
- var reorderIndicatorDownIcon = IconUtils.getJSXIcon(props.reorderIndicatorDownIcon || /*#__PURE__*/React.createElement(ArrowUpIcon, reorderIndicatorDownIconProps), _objectSpread({}, reorderIndicatorDownIconProps), {
3075
- props: props
3076
- });
3077
- var reorderIndicatorDown = props.reorderableColumns && /*#__PURE__*/React.createElement("span", _extends({
3078
- ref: reorderIndicatorDownRef
3079
- }, reorderIndicatorDownProps), reorderIndicatorDownIcon);
3080
- var rootProps = mergeProps({
3081
- id: props.id,
3082
- className: classNames(props.className, ptCallbacks.cx('root', {
3083
- isRowSelectionMode: isRowSelectionMode
3084
- })),
3085
- style: props.style,
3086
- 'data-scrollselectors': '.p-treetable-wrapper'
3087
- }, ObjectUtils.findDiffKeys(props, TreeTable.defaultProps), ptCallbacks.ptm('root'));
3088
- return /*#__PURE__*/React.createElement("div", _extends({
3089
- ref: elementRef
3090
- }, rootProps), loader, headerFacet, paginatorTop, table, paginatorBottom, footerFacet, resizeHelper, reorderIndicatorUp, reorderIndicatorDown);
3091
- });
3092
- TreeTable.displayName = 'TreeTable';
3093
-
3094
- export { TreeTable };