@sap-ux/ui-components 1.14.1 → 1.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (272) hide show
  1. package/dist/components/Icons.d.ts +151 -150
  2. package/dist/components/Icons.d.ts.map +1 -1
  3. package/dist/components/Icons.js +631 -628
  4. package/dist/components/Icons.js.map +1 -1
  5. package/dist/components/UIActionCallout/UIActionCallout.d.ts +64 -64
  6. package/dist/components/UIActionCallout/UIActionCallout.js +67 -67
  7. package/dist/components/UIActionCallout/index.d.ts +1 -1
  8. package/dist/components/UIActionCallout/index.js +17 -17
  9. package/dist/components/UIBreadcrumb/UIBreadcrumb.d.ts +23 -23
  10. package/dist/components/UIBreadcrumb/UIBreadcrumb.js +38 -38
  11. package/dist/components/UIBreadcrumb/index.d.ts +1 -1
  12. package/dist/components/UIBreadcrumb/index.js +17 -17
  13. package/dist/components/UIButton/UIActionButton.d.ts +23 -23
  14. package/dist/components/UIButton/UIActionButton.js +89 -89
  15. package/dist/components/UIButton/UIDefaultButton.d.ts +41 -41
  16. package/dist/components/UIButton/UIDefaultButton.js +255 -255
  17. package/dist/components/UIButton/UIIconButton.d.ts +37 -37
  18. package/dist/components/UIButton/UIIconButton.js +106 -106
  19. package/dist/components/UIButton/UISmallButton.d.ts +34 -34
  20. package/dist/components/UIButton/UISmallButton.js +115 -115
  21. package/dist/components/UIButton/UISplitButton.d.ts +44 -44
  22. package/dist/components/UIButton/UISplitButton.js +86 -86
  23. package/dist/components/UIButton/index.d.ts +7 -7
  24. package/dist/components/UIButton/index.js +21 -21
  25. package/dist/components/UICallout/CalloutCollisionTransform.d.ts +54 -54
  26. package/dist/components/UICallout/CalloutCollisionTransform.js +160 -160
  27. package/dist/components/UICallout/UICallout.d.ts +48 -48
  28. package/dist/components/UICallout/UICallout.js +122 -122
  29. package/dist/components/UICallout/index.d.ts +2 -2
  30. package/dist/components/UICallout/index.js +18 -18
  31. package/dist/components/UICheckbox/UICheckbox.d.ts +34 -34
  32. package/dist/components/UICheckbox/UICheckbox.js +135 -135
  33. package/dist/components/UICheckbox/index.d.ts +1 -1
  34. package/dist/components/UICheckbox/index.js +17 -17
  35. package/dist/components/UIChoiceGroup/UIChoiceGroup.d.ts +28 -28
  36. package/dist/components/UIChoiceGroup/UIChoiceGroup.js +182 -182
  37. package/dist/components/UIChoiceGroup/index.d.ts +1 -1
  38. package/dist/components/UIChoiceGroup/index.js +17 -17
  39. package/dist/components/UIComboBox/UIComboBox.d.ts +208 -208
  40. package/dist/components/UIComboBox/UIComboBox.js +563 -563
  41. package/dist/components/UIComboBox/index.d.ts +1 -1
  42. package/dist/components/UIComboBox/index.js +17 -17
  43. package/dist/components/UIContextualMenu/UIContextualMenu.d.ts +31 -31
  44. package/dist/components/UIContextualMenu/UIContextualMenu.js +126 -126
  45. package/dist/components/UIContextualMenu/UIHighlightMenuOption.d.ts +19 -19
  46. package/dist/components/UIContextualMenu/UIHighlightMenuOption.js +50 -50
  47. package/dist/components/UIContextualMenu/index.d.ts +2 -2
  48. package/dist/components/UIContextualMenu/index.js +18 -18
  49. package/dist/components/UICreateSelect/UICreateSelect.d.ts +36 -36
  50. package/dist/components/UICreateSelect/UICreateSelect.js +172 -172
  51. package/dist/components/UICreateSelect/index.d.ts +1 -1
  52. package/dist/components/UICreateSelect/index.js +17 -17
  53. package/dist/components/UIDatePicker/UIDatePicker.d.ts +49 -49
  54. package/dist/components/UIDatePicker/UIDatePicker.js +72 -72
  55. package/dist/components/UIDatePicker/index.d.ts +1 -1
  56. package/dist/components/UIDatePicker/index.js +17 -17
  57. package/dist/components/UIDialog/UIDialog.d.ts +118 -118
  58. package/dist/components/UIDialog/UIDialog.js +281 -281
  59. package/dist/components/UIDialog/index.d.ts +1 -1
  60. package/dist/components/UIDialog/index.js +17 -17
  61. package/dist/components/UIDropdown/UIDropdown.d.ts +94 -94
  62. package/dist/components/UIDropdown/UIDropdown.js +224 -224
  63. package/dist/components/UIDropdown/index.d.ts +2 -2
  64. package/dist/components/UIDropdown/index.js +18 -18
  65. package/dist/components/UIDropdown/utils.d.ts +20 -20
  66. package/dist/components/UIDropdown/utils.js +43 -43
  67. package/dist/components/UIFlexibleTable/RowActions.d.ts +16 -16
  68. package/dist/components/UIFlexibleTable/RowActions.js +73 -73
  69. package/dist/components/UIFlexibleTable/RowData.d.ts +16 -16
  70. package/dist/components/UIFlexibleTable/RowData.js +111 -111
  71. package/dist/components/UIFlexibleTable/UIFlexibleTable.d.ts +11 -11
  72. package/dist/components/UIFlexibleTable/UIFlexibleTable.js +280 -280
  73. package/dist/components/UIFlexibleTable/UIFlexibleTableActionButton.d.ts +20 -20
  74. package/dist/components/UIFlexibleTable/UIFlexibleTableActionButton.js +20 -20
  75. package/dist/components/UIFlexibleTable/UIFlexibleTableRow.d.ts +26 -26
  76. package/dist/components/UIFlexibleTable/UIFlexibleTableRow.js +219 -219
  77. package/dist/components/UIFlexibleTable/UIFlexibleTableRowActionButton.d.ts +20 -20
  78. package/dist/components/UIFlexibleTable/UIFlexibleTableRowActionButton.js +19 -19
  79. package/dist/components/UIFlexibleTable/UIFlexibleTableRowNoData.d.ts +15 -15
  80. package/dist/components/UIFlexibleTable/UIFlexibleTableRowNoData.js +28 -28
  81. package/dist/components/UIFlexibleTable/index.d.ts +5 -5
  82. package/dist/components/UIFlexibleTable/index.js +21 -21
  83. package/dist/components/UIFlexibleTable/types.d.ts +143 -143
  84. package/dist/components/UIFlexibleTable/types.js +14 -14
  85. package/dist/components/UIFlexibleTable/utils.d.ts +25 -25
  86. package/dist/components/UIFlexibleTable/utils.js +49 -49
  87. package/dist/components/UIFocusZone/UIFocusTrapZone.d.ts +22 -22
  88. package/dist/components/UIFocusZone/UIFocusTrapZone.js +33 -33
  89. package/dist/components/UIFocusZone/UIFocusZone.d.ts +23 -23
  90. package/dist/components/UIFocusZone/UIFocusZone.js +35 -35
  91. package/dist/components/UIFocusZone/index.d.ts +2 -2
  92. package/dist/components/UIFocusZone/index.js +18 -18
  93. package/dist/components/UIIcon/UIIcon.d.ts +24 -24
  94. package/dist/components/UIIcon/UIIcon.js +37 -37
  95. package/dist/components/UIIcon/index.d.ts +1 -1
  96. package/dist/components/UIIcon/index.js +17 -17
  97. package/dist/components/UIInput/UITextInput.d.ts +51 -51
  98. package/dist/components/UIInput/UITextInput.js +244 -244
  99. package/dist/components/UIInput/index.d.ts +1 -1
  100. package/dist/components/UIInput/index.js +17 -17
  101. package/dist/components/UILabel/UILabel.d.ts +30 -30
  102. package/dist/components/UILabel/UILabel.js +64 -64
  103. package/dist/components/UILabel/index.d.ts +1 -1
  104. package/dist/components/UILabel/index.js +17 -17
  105. package/dist/components/UILink/UILink.d.ts +25 -25
  106. package/dist/components/UILink/UILink.js +71 -71
  107. package/dist/components/UILink/index.d.ts +1 -1
  108. package/dist/components/UILink/index.js +17 -17
  109. package/dist/components/UIList/UIList.d.ts +31 -31
  110. package/dist/components/UIList/UIList.js +120 -120
  111. package/dist/components/UIList/index.d.ts +1 -1
  112. package/dist/components/UIList/index.js +17 -17
  113. package/dist/components/UILoader/UILoader.d.ts +27 -27
  114. package/dist/components/UILoader/UILoader.js +78 -78
  115. package/dist/components/UILoader/index.d.ts +1 -1
  116. package/dist/components/UILoader/index.js +17 -17
  117. package/dist/components/UIMessageBar/UIMessageBar.d.ts +25 -25
  118. package/dist/components/UIMessageBar/UIMessageBar.js +56 -56
  119. package/dist/components/UIMessageBar/index.d.ts +1 -1
  120. package/dist/components/UIMessageBar/index.js +17 -17
  121. package/dist/components/UIModal/UIModal.d.ts +23 -23
  122. package/dist/components/UIModal/UIModal.js +43 -43
  123. package/dist/components/UIModal/index.d.ts +1 -1
  124. package/dist/components/UIModal/index.js +17 -17
  125. package/dist/components/UIOverlay/UIOverlay.d.ts +22 -22
  126. package/dist/components/UIOverlay/UIOverlay.js +38 -38
  127. package/dist/components/UIOverlay/index.d.ts +1 -1
  128. package/dist/components/UIOverlay/index.js +17 -17
  129. package/dist/components/UIPersona/UIPersona.d.ts +27 -27
  130. package/dist/components/UIPersona/UIPersona.js +48 -48
  131. package/dist/components/UIPersona/index.d.ts +1 -1
  132. package/dist/components/UIPersona/index.js +17 -17
  133. package/dist/components/UIQuickNavigation/UIQuickNavigation.d.ts +31 -0
  134. package/dist/components/UIQuickNavigation/UIQuickNavigation.d.ts.map +1 -0
  135. package/dist/components/UIQuickNavigation/UIQuickNavigation.js +251 -0
  136. package/dist/components/UIQuickNavigation/UIQuickNavigation.js.map +1 -0
  137. package/dist/components/UIQuickNavigation/UIQuickNavigation.scss +33 -0
  138. package/dist/components/UIQuickNavigation/index.d.ts +2 -0
  139. package/dist/components/UIQuickNavigation/index.d.ts.map +1 -0
  140. package/dist/components/UIQuickNavigation/index.js +18 -0
  141. package/dist/components/UIQuickNavigation/index.js.map +1 -0
  142. package/dist/components/UISearchBox/UISearchBox.d.ts +22 -22
  143. package/dist/components/UISearchBox/UISearchBox.js +155 -155
  144. package/dist/components/UISearchBox/index.d.ts +3 -3
  145. package/dist/components/UISearchBox/index.js +17 -17
  146. package/dist/components/UISection/UISection.d.ts +34 -34
  147. package/dist/components/UISection/UISection.js +44 -44
  148. package/dist/components/UISection/UISections.d.ts +249 -249
  149. package/dist/components/UISection/UISections.js +707 -707
  150. package/dist/components/UISection/UISplitter.d.ts +96 -96
  151. package/dist/components/UISection/UISplitter.js +220 -220
  152. package/dist/components/UISection/index.d.ts +3 -3
  153. package/dist/components/UISection/index.js +19 -19
  154. package/dist/components/UISeparator/UISeparator.d.ts +25 -25
  155. package/dist/components/UISeparator/UISeparator.js +65 -65
  156. package/dist/components/UISeparator/index.d.ts +1 -1
  157. package/dist/components/UISeparator/index.js +17 -17
  158. package/dist/components/UITable/UITable-helper.d.ts +88 -88
  159. package/dist/components/UITable/UITable-helper.js +263 -263
  160. package/dist/components/UITable/UITable.d.ts +213 -213
  161. package/dist/components/UITable/UITable.js +779 -779
  162. package/dist/components/UITable/index.d.ts +2 -2
  163. package/dist/components/UITable/index.js +18 -18
  164. package/dist/components/UITable/types.d.ts +77 -77
  165. package/dist/components/UITable/types.js +28 -28
  166. package/dist/components/UITabs/UITabs.d.ts +28 -28
  167. package/dist/components/UITabs/UITabs.js +70 -70
  168. package/dist/components/UITabs/index.d.ts +1 -1
  169. package/dist/components/UITabs/index.js +17 -17
  170. package/dist/components/UIToggle/UIToggle.d.ts +39 -39
  171. package/dist/components/UIToggle/UIToggle.js +181 -181
  172. package/dist/components/UIToggle/index.d.ts +1 -1
  173. package/dist/components/UIToggle/index.js +17 -17
  174. package/dist/components/UIToggleGroup/UIToggleGroup.d.ts +31 -31
  175. package/dist/components/UIToggleGroup/UIToggleGroup.js +139 -139
  176. package/dist/components/UIToggleGroup/UIToggleGroup.types.d.ts +22 -22
  177. package/dist/components/UIToggleGroup/UIToggleGroup.types.js +2 -2
  178. package/dist/components/UIToggleGroup/UIToggleGroupOption/UIToggleGroupOption.d.ts +25 -25
  179. package/dist/components/UIToggleGroup/UIToggleGroupOption/UIToggleGroupOption.js +77 -77
  180. package/dist/components/UIToggleGroup/UIToggleGroupOption/UIToggleGroupOption.types.d.ts +10 -10
  181. package/dist/components/UIToggleGroup/UIToggleGroupOption/UIToggleGroupOption.types.js +2 -2
  182. package/dist/components/UIToggleGroup/UIToggleGroupOption/index.d.ts +2 -2
  183. package/dist/components/UIToggleGroup/UIToggleGroupOption/index.js +18 -18
  184. package/dist/components/UIToggleGroup/index.d.ts +2 -2
  185. package/dist/components/UIToggleGroup/index.js +18 -18
  186. package/dist/components/UIToolbar/UIToolbar.d.ts +36 -36
  187. package/dist/components/UIToolbar/UIToolbar.js +104 -104
  188. package/dist/components/UIToolbar/UIToolbarColumn.d.ts +7 -7
  189. package/dist/components/UIToolbar/UIToolbarColumn.js +33 -33
  190. package/dist/components/UIToolbar/UIToolbarDivider.d.ts +27 -27
  191. package/dist/components/UIToolbar/UIToolbarDivider.js +52 -52
  192. package/dist/components/UIToolbar/index.d.ts +3 -3
  193. package/dist/components/UIToolbar/index.js +19 -19
  194. package/dist/components/UITooltip/UITooltip.d.ts +29 -29
  195. package/dist/components/UITooltip/UITooltip.js +77 -77
  196. package/dist/components/UITooltip/UITooltipUtils.d.ts +17 -17
  197. package/dist/components/UITooltip/UITooltipUtils.js +45 -45
  198. package/dist/components/UITooltip/index.d.ts +2 -2
  199. package/dist/components/UITooltip/index.js +18 -18
  200. package/dist/components/UITranslationInput/UIFormattedText.d.ts +46 -46
  201. package/dist/components/UITranslationInput/UIFormattedText.js +121 -121
  202. package/dist/components/UITranslationInput/UILoadButton.d.ts +52 -52
  203. package/dist/components/UITranslationInput/UILoadButton.js +109 -109
  204. package/dist/components/UITranslationInput/UITranslationButton.d.ts +14 -14
  205. package/dist/components/UITranslationInput/UITranslationButton.js +88 -88
  206. package/dist/components/UITranslationInput/UITranslationButton.types.d.ts +67 -67
  207. package/dist/components/UITranslationInput/UITranslationButton.types.js +21 -21
  208. package/dist/components/UITranslationInput/UITranslationInput.d.ts +25 -25
  209. package/dist/components/UITranslationInput/UITranslationInput.js +169 -169
  210. package/dist/components/UITranslationInput/UITranslationUtils.d.ts +64 -64
  211. package/dist/components/UITranslationInput/UITranslationUtils.js +168 -168
  212. package/dist/components/UITranslationInput/defaults.d.ts +2 -2
  213. package/dist/components/UITranslationInput/defaults.js +15 -15
  214. package/dist/components/UITranslationInput/index.d.ts +2 -2
  215. package/dist/components/UITranslationInput/index.js +18 -18
  216. package/dist/components/UITreeDropdown/UITreeDropdown.d.ts +265 -265
  217. package/dist/components/UITreeDropdown/UITreeDropdown.js +660 -660
  218. package/dist/components/UITreeDropdown/index.d.ts +1 -1
  219. package/dist/components/UITreeDropdown/index.js +17 -17
  220. package/dist/components/UIVerticalDivider/UIVerticalDivider.d.ts +23 -23
  221. package/dist/components/UIVerticalDivider/UIVerticalDivider.js +41 -41
  222. package/dist/components/UIVerticalDivider/index.d.ts +1 -1
  223. package/dist/components/UIVerticalDivider/index.js +17 -17
  224. package/dist/components/UIVirtualList/UIAutoSizer.d.ts +22 -22
  225. package/dist/components/UIVirtualList/UIAutoSizer.js +33 -33
  226. package/dist/components/UIVirtualList/UICellMeasurer.d.ts +23 -23
  227. package/dist/components/UIVirtualList/UICellMeasurer.js +33 -33
  228. package/dist/components/UIVirtualList/UIVirtualList.d.ts +43 -43
  229. package/dist/components/UIVirtualList/UIVirtualList.js +70 -70
  230. package/dist/components/UIVirtualList/index.d.ts +3 -3
  231. package/dist/components/UIVirtualList/index.js +19 -19
  232. package/dist/components/index.d.ts +39 -38
  233. package/dist/components/index.d.ts.map +1 -1
  234. package/dist/components/index.js +55 -54
  235. package/dist/components/index.js.map +1 -1
  236. package/dist/helper/ValidationMessage/MessageWrapper.d.ts +17 -17
  237. package/dist/helper/ValidationMessage/MessageWrapper.js +34 -34
  238. package/dist/helper/ValidationMessage/index.d.ts +2 -2
  239. package/dist/helper/ValidationMessage/index.js +18 -18
  240. package/dist/helper/ValidationMessage/utils.d.ts +31 -31
  241. package/dist/helper/ValidationMessage/utils.js +121 -121
  242. package/dist/index.d.ts +2 -2
  243. package/dist/index.js +18 -18
  244. package/dist/utilities/DeepMerge.d.ts +10 -10
  245. package/dist/utilities/DeepMerge.js +48 -48
  246. package/dist/utilities/Dom.d.ts +14 -14
  247. package/dist/utilities/Dom.d.ts.map +1 -1
  248. package/dist/utilities/Dom.js +23 -23
  249. package/dist/utilities/Dom.js.map +1 -1
  250. package/dist/utilities/Focus.d.ts +14 -14
  251. package/dist/utilities/Focus.js +34 -34
  252. package/dist/utilities/Id.d.ts +2 -2
  253. package/dist/utilities/Id.js +5 -5
  254. package/dist/utilities/Keys.d.ts +2 -2
  255. package/dist/utilities/Keys.js +5 -5
  256. package/dist/utilities/index.d.ts +4 -4
  257. package/dist/utilities/index.js +20 -20
  258. package/package.json +2 -2
  259. package/storybook/666.9eb67cb9.iframe.bundle.js +7 -0
  260. package/storybook/909.5e5ef92e.iframe.bundle.js +1 -0
  261. package/storybook/{930.3177b0dc.iframe.bundle.js → 930.1b3c5615.iframe.bundle.js} +2 -2
  262. package/storybook/UIQuickNavigation-story.14c63c2c.iframe.bundle.js +1 -0
  263. package/storybook/iframe.html +3 -3
  264. package/storybook/index.json +1 -1
  265. package/storybook/main.3da10e91.iframe.bundle.js +1 -0
  266. package/storybook/project.json +1 -1
  267. package/storybook/runtime~main.6f623654.iframe.bundle.js +2 -0
  268. package/storybook/stories.json +1 -1
  269. package/storybook/666.7332043d.iframe.bundle.js +0 -7
  270. package/storybook/909.dde4cce0.iframe.bundle.js +0 -1
  271. package/storybook/main.5f68bcca.iframe.bundle.js +0 -1
  272. package/storybook/runtime~main.a213c0ae.iframe.bundle.js +0 -2
@@ -1,281 +1,281 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.UIFlexibleTable = void 0;
27
- const react_1 = __importStar(require("react"));
28
- const react_movable_1 = require("react-movable");
29
- const __1 = require("..");
30
- const UIFlexibleTableRow_1 = require("./UIFlexibleTableRow");
31
- const UIFlexibleTableRowNoData_1 = require("./UIFlexibleTableRowNoData");
32
- const types_1 = require("./types");
33
- require("./UIFlexibleTable.scss");
34
- const utils_1 = require("./utils");
35
- const RowActions_1 = require("./RowActions");
36
- const RowData_1 = require("./RowData");
37
- /**
38
- * UIFlexibleTable component.
39
- *
40
- * @exports
41
- * @param {UIFlexibleTableProps<T>} props
42
- * @returns {React.ReactElement}
43
- */
44
- function UIFlexibleTable(props) {
45
- const [currentFocusedRowIndex, setCurrentFocusedRowIndex] = (0, react_1.useState)();
46
- const [currentFocusedRowAction, setCurrentFocusedRowAction] = (0, react_1.useState)('');
47
- const [isInRowLayout, setIsInRowLayout] = (0, react_1.useState)(props.layout === types_1.UIFlexibleTableLayout.InlineFlex);
48
- const [titleRowRightPadding, setTitleRowRightPadding] = (0, react_1.useState)(0);
49
- const [rowToNavigate, setRowToNavigate] = (0, react_1.useState)();
50
- const scrollableElement = (0, react_1.useRef)(null);
51
- const tableRootElementRef = (0, react_1.useRef)(null);
52
- const contentElementRef = (0, react_1.useRef)(null);
53
- const tableBodyElementRef = (0, react_1.useRef)(null);
54
- const scrollTargetRef = (0, react_1.useRef)(null);
55
- const onResize = (element) => {
56
- setIsInRowLayout(props.layout === types_1.UIFlexibleTableLayout.InlineFlex &&
57
- isRowFitsContainer(props.inRowLayoutMinWidth, tableRootElementRef));
58
- const rootContainer = tableRootElementRef.current;
59
- if (element && props.onContentSizeChange && rootContainer) {
60
- props.onContentSizeChange({ height: rootContainer.clientHeight, width: rootContainer.clientWidth });
61
- }
62
- };
63
- const onScrollBarStateChange = () => {
64
- const content = contentElementRef
65
- .current;
66
- const scrollableContent = scrollableElement.current;
67
- const scrollBarSize = content && scrollableContent ? content.clientWidth - scrollableContent.clientWidth : 0;
68
- setTitleRowRightPadding(scrollBarSize);
69
- };
70
- const [resizeObserver] = (0, react_1.useState)(new ResizeObserver(onResize));
71
- const scrollBarObserver = (0, react_1.useRef)(new ResizeObserver(onScrollBarStateChange));
72
- (0, react_1.useEffect)(() => {
73
- if (tableRootElementRef.current) {
74
- resizeObserver.observe(tableRootElementRef.current);
75
- onResize();
76
- }
77
- }, [tableRootElementRef.current]);
78
- (0, react_1.useEffect)(() => {
79
- if (currentFocusedRowIndex !== undefined) {
80
- restoreFocus(currentFocusedRowAction, currentFocusedRowIndex, props.id);
81
- }
82
- if (!props.isContentLoading && scrollTargetRef.current) {
83
- scrollTargetRef.current.scrollIntoView({ behavior: 'smooth', block: 'nearest' });
84
- setRowToNavigate(undefined);
85
- }
86
- }, [props.isContentLoading, props.rows]);
87
- (0, react_1.useEffect)(() => {
88
- return () => {
89
- resizeObserver.disconnect();
90
- };
91
- }, []);
92
- (0, react_1.useEffect)(() => {
93
- onResize();
94
- }, [props.layout, props.maxWidth]);
95
- const reorderTable = (oldIndex, newIndex) => {
96
- if (props.onTableReorder) {
97
- const result = props.onTableReorder({ oldIndex, newIndex });
98
- if (typeof result === 'object' && result.isDropDisabled) {
99
- return;
100
- }
101
- setCurrentFocusedRowIndex(newIndex);
102
- }
103
- };
104
- const addNewRow = () => {
105
- if (props.addRowButton?.onClick) {
106
- const result = props.addRowButton.onClick();
107
- if (result instanceof Promise) {
108
- result.then((data) => setRowToNavigate(data?.scrollToRow)).catch(() => undefined);
109
- }
110
- else {
111
- setRowToNavigate(result?.scrollToRow);
112
- }
113
- }
114
- };
115
- const onFocusRowAction = (rowIndex, actionName = '') => {
116
- setCurrentFocusedRowIndex(rowIndex);
117
- setCurrentFocusedRowAction(actionName);
118
- };
119
- const renderRowActions = (rowIndex) => {
120
- return (react_1.default.createElement(RowActions_1.RowActions, { rowIndex: rowIndex, tableProps: props, onFocusRowAction: (actionName) => onFocusRowAction(rowIndex, actionName), onMoveDownClick: () => reorderTable(rowIndex, rowIndex + 1), onMoveUpClick: () => reorderTable(rowIndex, rowIndex - 1) }));
121
- };
122
- const renderRowData = (params) => (react_1.default.createElement(RowData_1.RowDataCells, { key: params.index || 0, isInRowLayout: isInRowLayout, row: params.value, rowIndex: params.index || 0, tableProps: props }));
123
- /**
124
- * Renders row.
125
- *
126
- * @param {NodeDragAndDropSortingParams} params
127
- * @returns {React.ReactElement<UIFlexibleTableRowProps<T>, 'UIFlexibleTableRow'>}
128
- */
129
- function renderRow(params) {
130
- const rowIndex = params.index;
131
- const { isDropWarning } = props.onRenderRowContainer
132
- ? props.onRenderRowContainer({
133
- readonly: !!props.readonly,
134
- rowIndex,
135
- isDragged: params.isDragged
136
- })
137
- : { isDropWarning: false };
138
- return (react_1.default.createElement(UIFlexibleTableRow_1.UIFlexibleTableRow, { key: `row-${rowIndex}`, dragAndDropParams: params, rowActions: renderRowActions(rowIndex || 0), rowData: renderRowData(params), tableProps: props, rowRef: typeof rowToNavigate === 'number' && rowIndex === rowToNavigate ? scrollTargetRef : undefined, className: isDropWarning ? 'highlight-drop-warning' : '' }));
139
- }
140
- const renderTable = (params) => {
141
- const ulElement = params.props.ref?.current;
142
- let { children } = params;
143
- if (ulElement && scrollableElement.current !== ulElement) {
144
- scrollableElement.current = ulElement;
145
- scrollBarObserver.current.observe(ulElement);
146
- }
147
- if (props.rows.length === 0 && props.noDataText) {
148
- children = (react_1.default.createElement(UIFlexibleTableRowNoData_1.UIFlexibleTableRowNoData, { noRowBackground: props.noRowBackground, reverseBackground: props.reverseBackground }, props.noDataText));
149
- }
150
- const getCursorStyle = () => {
151
- let cursorIcon = 'default';
152
- if (props.onTableReorder) {
153
- cursorIcon = params.isDragged ? 'grabbing' : 'grab';
154
- }
155
- return cursorIcon;
156
- };
157
- return (react_1.default.createElement("ul", { ref: params.props.ref, className: `flexible-table-content-table${params.isDragged ? ' dragged' : ''}`, style: {
158
- cursor: getCursorStyle(),
159
- maxHeight: props.maxScrollableContentHeight ? `${props.maxScrollableContentHeight}px` : undefined
160
- } }, children));
161
- };
162
- const tableBody = getTableBody(props, renderTable, renderRow, reorderTable, tableBodyElementRef);
163
- const tableClasses = (0, utils_1.composeClassNames)('flexible-table', [
164
- props.layout === types_1.UIFlexibleTableLayout.InlineFlex ? 'inline-layout' : 'wrapping-layout',
165
- props.readonly ? 'readonly' : ''
166
- ]);
167
- const showTitleRow = props.showColumnTitles && isInRowLayout && !props.showColumnTitlesInCells;
168
- const tableRootElementStyle = {
169
- maxWidth: props.maxWidth ? `${props.maxWidth}px` : '100%'
170
- };
171
- const getCustomTableActions = (actionsGenerator) => {
172
- if (actionsGenerator) {
173
- const customActions = actionsGenerator({ readonly: !!props.readonly });
174
- return customActions.map((actionElement) => (react_1.default.createElement(react_1.default.Fragment, { key: `table-action-${actionElement.key}` },
175
- react_1.default.createElement("div", { className: "flexible-table-header-action" }, actionElement))));
176
- }
177
- return [];
178
- };
179
- const primaryTableActions = getCustomTableActions(props.onRenderPrimaryTableActions);
180
- const secondaryTableActions = getCustomTableActions(props.onRenderSecondaryTableActions);
181
- const isEmptyHeader = !props.addRowButton && primaryTableActions.length + secondaryTableActions.length === 0;
182
- const contentClasses = (0, utils_1.composeClassNames)('flexible-table-content', [
183
- props.rows.length === 0 && !props.noDataText ? 'empty-table' : '',
184
- props.isContentLoading ? 'loading' : '',
185
- isEmptyHeader ? 'empty-table-header' : ''
186
- ]);
187
- return (react_1.default.createElement("div", { className: tableClasses, ref: tableRootElementRef, id: props.id, style: tableRootElementStyle, onBlur: () => {
188
- onFocusRowAction();
189
- } },
190
- isEmptyHeader ? (react_1.default.createElement(react_1.default.Fragment, null)) : (react_1.default.createElement("div", { className: "flexible-table-header" },
191
- react_1.default.createElement("div", { className: "flexible-table-header-primary-actions" },
192
- props.addRowButton && (react_1.default.createElement("div", { className: "flexible-table-header-action" },
193
- react_1.default.createElement(__1.UIDefaultButton, { iconProps: { iconName: 'Add' }, className: "flexible-table-btn-add", id: (0, utils_1.getTableActionButtonId)(props.id, 'add-row'), primary: true, disabled: props.isAddItemDisabled || props.isContentLoading || props.readonly, onClick: addNewRow, title: props.addRowButton.title }, props.addRowButton.label))),
194
- primaryTableActions),
195
- react_1.default.createElement("div", { className: "flexible-table-header-secondary-actions" }, secondaryTableActions))),
196
- react_1.default.createElement("div", { className: contentClasses, ref: contentElementRef },
197
- showTitleRow && (0, UIFlexibleTableRow_1.renderTitleRow)(props, titleRowRightPadding),
198
- tableBody,
199
- props.isContentLoading && (react_1.default.createElement(__1.UILoader, { className: 'uiLoaderXLarge flexible-table-overlay-loader', blockDOM: true })))));
200
- }
201
- exports.UIFlexibleTable = UIFlexibleTable;
202
- /**
203
- * Gets table body.
204
- *
205
- * @param {UIFlexibleTableProps<T>} props
206
- * @param {(params: { children: React.ReactNode; isDragged: boolean; props: { ref?: React.RefObject<any>; }; }) => React.ReactNode} renderTable
207
- * @param {( params: NodeDragAndDropSortingParams) => React.ReactElement<UIFlexibleTableRowProps<T>, 'UIFlexibleTableRow'>} renderRow
208
- * @param { (oldIndex: number, newIndex: number) => void} reorderTable
209
- * @param {React.MutableRefObject<any>} tableBodyElementRef
210
- * @returns {React.ReactNode}
211
- */
212
- function getTableBody(props, renderTable, renderRow, reorderTable, tableBodyElementRef) {
213
- let tableBody;
214
- const { rows } = props.onBeforeTableRender ? props.onBeforeTableRender({ rows: props.rows }) : { rows: props.rows };
215
- if (rows.length > 0 && props.onTableReorder && !props.readonly) {
216
- tableBody = (react_1.default.createElement(react_movable_1.List, { values: rows, lockVertically: props.lockVertically, onChange: (params) => reorderTable(params.oldIndex, params.newIndex), renderList: (params) => renderTable(params), renderItem: (params) => renderRow(params), removableByMove: true, beforeDrag: props.onStartDragging }));
217
- }
218
- else {
219
- const children = props.rows.map((row, index) => {
220
- const rowProps = {
221
- key: index
222
- };
223
- const dragAndDropParams = {
224
- index,
225
- isDragged: false,
226
- isOutOfBounds: false,
227
- isSelected: false,
228
- props: rowProps,
229
- value: row
230
- };
231
- return renderRow(dragAndDropParams);
232
- });
233
- tableBody = renderTable({ children, isDragged: false, props: { ...props, ref: tableBodyElementRef } });
234
- }
235
- return tableBody;
236
- }
237
- /**
238
- * Restores focus.
239
- *
240
- * @param {string} currentFocusedRowAction
241
- * @param {number | undefined} currentFocusedRowIndex
242
- * @param {string} tableId
243
- */
244
- function restoreFocus(currentFocusedRowAction, currentFocusedRowIndex, tableId) {
245
- if (currentFocusedRowAction) {
246
- let actionElement = document.getElementById((0, utils_1.getRowActionButtonId)(tableId, currentFocusedRowIndex, currentFocusedRowAction));
247
- if (actionElement) {
248
- if (!actionElement.hasAttribute('disabled')) {
249
- actionElement.focus();
250
- }
251
- else {
252
- if (currentFocusedRowAction === 'up') {
253
- actionElement = document.getElementById((0, utils_1.getRowActionButtonId)(tableId, currentFocusedRowIndex, 'down'));
254
- }
255
- else {
256
- actionElement = document.getElementById((0, utils_1.getRowActionButtonId)(tableId, currentFocusedRowIndex, 'up'));
257
- }
258
- if (actionElement) {
259
- actionElement.focus();
260
- }
261
- }
262
- }
263
- }
264
- }
265
- /**
266
- * Check row fit container.
267
- *
268
- * @param {number | undefined} propThreshold
269
- * @param {React.MutableRefObject<HTMLDivElement | null>} containerRef
270
- * @returns {boolean}
271
- */
272
- function isRowFitsContainer(propThreshold, containerRef) {
273
- let result = true;
274
- const inRowMinWidth = propThreshold ?? 600;
275
- const containerWidth = containerRef?.current?.clientWidth ?? 0;
276
- if (containerWidth) {
277
- result = containerWidth >= inRowMinWidth;
278
- }
279
- return result;
280
- }
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.UIFlexibleTable = void 0;
27
+ const react_1 = __importStar(require("react"));
28
+ const react_movable_1 = require("react-movable");
29
+ const __1 = require("..");
30
+ const UIFlexibleTableRow_1 = require("./UIFlexibleTableRow");
31
+ const UIFlexibleTableRowNoData_1 = require("./UIFlexibleTableRowNoData");
32
+ const types_1 = require("./types");
33
+ require("./UIFlexibleTable.scss");
34
+ const utils_1 = require("./utils");
35
+ const RowActions_1 = require("./RowActions");
36
+ const RowData_1 = require("./RowData");
37
+ /**
38
+ * UIFlexibleTable component.
39
+ *
40
+ * @exports
41
+ * @param {UIFlexibleTableProps<T>} props
42
+ * @returns {React.ReactElement}
43
+ */
44
+ function UIFlexibleTable(props) {
45
+ const [currentFocusedRowIndex, setCurrentFocusedRowIndex] = (0, react_1.useState)();
46
+ const [currentFocusedRowAction, setCurrentFocusedRowAction] = (0, react_1.useState)('');
47
+ const [isInRowLayout, setIsInRowLayout] = (0, react_1.useState)(props.layout === types_1.UIFlexibleTableLayout.InlineFlex);
48
+ const [titleRowRightPadding, setTitleRowRightPadding] = (0, react_1.useState)(0);
49
+ const [rowToNavigate, setRowToNavigate] = (0, react_1.useState)();
50
+ const scrollableElement = (0, react_1.useRef)(null);
51
+ const tableRootElementRef = (0, react_1.useRef)(null);
52
+ const contentElementRef = (0, react_1.useRef)(null);
53
+ const tableBodyElementRef = (0, react_1.useRef)(null);
54
+ const scrollTargetRef = (0, react_1.useRef)(null);
55
+ const onResize = (element) => {
56
+ setIsInRowLayout(props.layout === types_1.UIFlexibleTableLayout.InlineFlex &&
57
+ isRowFitsContainer(props.inRowLayoutMinWidth, tableRootElementRef));
58
+ const rootContainer = tableRootElementRef.current;
59
+ if (element && props.onContentSizeChange && rootContainer) {
60
+ props.onContentSizeChange({ height: rootContainer.clientHeight, width: rootContainer.clientWidth });
61
+ }
62
+ };
63
+ const onScrollBarStateChange = () => {
64
+ const content = contentElementRef
65
+ .current;
66
+ const scrollableContent = scrollableElement.current;
67
+ const scrollBarSize = content && scrollableContent ? content.clientWidth - scrollableContent.clientWidth : 0;
68
+ setTitleRowRightPadding(scrollBarSize);
69
+ };
70
+ const [resizeObserver] = (0, react_1.useState)(new ResizeObserver(onResize));
71
+ const scrollBarObserver = (0, react_1.useRef)(new ResizeObserver(onScrollBarStateChange));
72
+ (0, react_1.useEffect)(() => {
73
+ if (tableRootElementRef.current) {
74
+ resizeObserver.observe(tableRootElementRef.current);
75
+ onResize();
76
+ }
77
+ }, [tableRootElementRef.current]);
78
+ (0, react_1.useEffect)(() => {
79
+ if (currentFocusedRowIndex !== undefined) {
80
+ restoreFocus(currentFocusedRowAction, currentFocusedRowIndex, props.id);
81
+ }
82
+ if (!props.isContentLoading && scrollTargetRef.current) {
83
+ scrollTargetRef.current.scrollIntoView({ behavior: 'smooth', block: 'nearest' });
84
+ setRowToNavigate(undefined);
85
+ }
86
+ }, [props.isContentLoading, props.rows]);
87
+ (0, react_1.useEffect)(() => {
88
+ return () => {
89
+ resizeObserver.disconnect();
90
+ };
91
+ }, []);
92
+ (0, react_1.useEffect)(() => {
93
+ onResize();
94
+ }, [props.layout, props.maxWidth]);
95
+ const reorderTable = (oldIndex, newIndex) => {
96
+ if (props.onTableReorder) {
97
+ const result = props.onTableReorder({ oldIndex, newIndex });
98
+ if (typeof result === 'object' && result.isDropDisabled) {
99
+ return;
100
+ }
101
+ setCurrentFocusedRowIndex(newIndex);
102
+ }
103
+ };
104
+ const addNewRow = () => {
105
+ if (props.addRowButton?.onClick) {
106
+ const result = props.addRowButton.onClick();
107
+ if (result instanceof Promise) {
108
+ result.then((data) => setRowToNavigate(data?.scrollToRow)).catch(() => undefined);
109
+ }
110
+ else {
111
+ setRowToNavigate(result?.scrollToRow);
112
+ }
113
+ }
114
+ };
115
+ const onFocusRowAction = (rowIndex, actionName = '') => {
116
+ setCurrentFocusedRowIndex(rowIndex);
117
+ setCurrentFocusedRowAction(actionName);
118
+ };
119
+ const renderRowActions = (rowIndex) => {
120
+ return (react_1.default.createElement(RowActions_1.RowActions, { rowIndex: rowIndex, tableProps: props, onFocusRowAction: (actionName) => onFocusRowAction(rowIndex, actionName), onMoveDownClick: () => reorderTable(rowIndex, rowIndex + 1), onMoveUpClick: () => reorderTable(rowIndex, rowIndex - 1) }));
121
+ };
122
+ const renderRowData = (params) => (react_1.default.createElement(RowData_1.RowDataCells, { key: params.index || 0, isInRowLayout: isInRowLayout, row: params.value, rowIndex: params.index || 0, tableProps: props }));
123
+ /**
124
+ * Renders row.
125
+ *
126
+ * @param {NodeDragAndDropSortingParams} params
127
+ * @returns {React.ReactElement<UIFlexibleTableRowProps<T>, 'UIFlexibleTableRow'>}
128
+ */
129
+ function renderRow(params) {
130
+ const rowIndex = params.index;
131
+ const { isDropWarning } = props.onRenderRowContainer
132
+ ? props.onRenderRowContainer({
133
+ readonly: !!props.readonly,
134
+ rowIndex,
135
+ isDragged: params.isDragged
136
+ })
137
+ : { isDropWarning: false };
138
+ return (react_1.default.createElement(UIFlexibleTableRow_1.UIFlexibleTableRow, { key: `row-${rowIndex}`, dragAndDropParams: params, rowActions: renderRowActions(rowIndex || 0), rowData: renderRowData(params), tableProps: props, rowRef: typeof rowToNavigate === 'number' && rowIndex === rowToNavigate ? scrollTargetRef : undefined, className: isDropWarning ? 'highlight-drop-warning' : '' }));
139
+ }
140
+ const renderTable = (params) => {
141
+ const ulElement = params.props.ref?.current;
142
+ let { children } = params;
143
+ if (ulElement && scrollableElement.current !== ulElement) {
144
+ scrollableElement.current = ulElement;
145
+ scrollBarObserver.current.observe(ulElement);
146
+ }
147
+ if (props.rows.length === 0 && props.noDataText) {
148
+ children = (react_1.default.createElement(UIFlexibleTableRowNoData_1.UIFlexibleTableRowNoData, { noRowBackground: props.noRowBackground, reverseBackground: props.reverseBackground }, props.noDataText));
149
+ }
150
+ const getCursorStyle = () => {
151
+ let cursorIcon = 'default';
152
+ if (props.onTableReorder) {
153
+ cursorIcon = params.isDragged ? 'grabbing' : 'grab';
154
+ }
155
+ return cursorIcon;
156
+ };
157
+ return (react_1.default.createElement("ul", { ref: params.props.ref, className: `flexible-table-content-table${params.isDragged ? ' dragged' : ''}`, style: {
158
+ cursor: getCursorStyle(),
159
+ maxHeight: props.maxScrollableContentHeight ? `${props.maxScrollableContentHeight}px` : undefined
160
+ } }, children));
161
+ };
162
+ const tableBody = getTableBody(props, renderTable, renderRow, reorderTable, tableBodyElementRef);
163
+ const tableClasses = (0, utils_1.composeClassNames)('flexible-table', [
164
+ props.layout === types_1.UIFlexibleTableLayout.InlineFlex ? 'inline-layout' : 'wrapping-layout',
165
+ props.readonly ? 'readonly' : ''
166
+ ]);
167
+ const showTitleRow = props.showColumnTitles && isInRowLayout && !props.showColumnTitlesInCells;
168
+ const tableRootElementStyle = {
169
+ maxWidth: props.maxWidth ? `${props.maxWidth}px` : '100%'
170
+ };
171
+ const getCustomTableActions = (actionsGenerator) => {
172
+ if (actionsGenerator) {
173
+ const customActions = actionsGenerator({ readonly: !!props.readonly });
174
+ return customActions.map((actionElement) => (react_1.default.createElement(react_1.default.Fragment, { key: `table-action-${actionElement.key}` },
175
+ react_1.default.createElement("div", { className: "flexible-table-header-action" }, actionElement))));
176
+ }
177
+ return [];
178
+ };
179
+ const primaryTableActions = getCustomTableActions(props.onRenderPrimaryTableActions);
180
+ const secondaryTableActions = getCustomTableActions(props.onRenderSecondaryTableActions);
181
+ const isEmptyHeader = !props.addRowButton && primaryTableActions.length + secondaryTableActions.length === 0;
182
+ const contentClasses = (0, utils_1.composeClassNames)('flexible-table-content', [
183
+ props.rows.length === 0 && !props.noDataText ? 'empty-table' : '',
184
+ props.isContentLoading ? 'loading' : '',
185
+ isEmptyHeader ? 'empty-table-header' : ''
186
+ ]);
187
+ return (react_1.default.createElement("div", { className: tableClasses, ref: tableRootElementRef, id: props.id, style: tableRootElementStyle, onBlur: () => {
188
+ onFocusRowAction();
189
+ } },
190
+ isEmptyHeader ? (react_1.default.createElement(react_1.default.Fragment, null)) : (react_1.default.createElement("div", { className: "flexible-table-header" },
191
+ react_1.default.createElement("div", { className: "flexible-table-header-primary-actions" },
192
+ props.addRowButton && (react_1.default.createElement("div", { className: "flexible-table-header-action" },
193
+ react_1.default.createElement(__1.UIDefaultButton, { iconProps: { iconName: 'Add' }, className: "flexible-table-btn-add", id: (0, utils_1.getTableActionButtonId)(props.id, 'add-row'), primary: true, disabled: props.isAddItemDisabled || props.isContentLoading || props.readonly, onClick: addNewRow, title: props.addRowButton.title }, props.addRowButton.label))),
194
+ primaryTableActions),
195
+ react_1.default.createElement("div", { className: "flexible-table-header-secondary-actions" }, secondaryTableActions))),
196
+ react_1.default.createElement("div", { className: contentClasses, ref: contentElementRef },
197
+ showTitleRow && (0, UIFlexibleTableRow_1.renderTitleRow)(props, titleRowRightPadding),
198
+ tableBody,
199
+ props.isContentLoading && (react_1.default.createElement(__1.UILoader, { className: 'uiLoaderXLarge flexible-table-overlay-loader', blockDOM: true })))));
200
+ }
201
+ exports.UIFlexibleTable = UIFlexibleTable;
202
+ /**
203
+ * Gets table body.
204
+ *
205
+ * @param {UIFlexibleTableProps<T>} props
206
+ * @param {(params: { children: React.ReactNode; isDragged: boolean; props: { ref?: React.RefObject<any>; }; }) => React.ReactNode} renderTable
207
+ * @param {( params: NodeDragAndDropSortingParams) => React.ReactElement<UIFlexibleTableRowProps<T>, 'UIFlexibleTableRow'>} renderRow
208
+ * @param { (oldIndex: number, newIndex: number) => void} reorderTable
209
+ * @param {React.MutableRefObject<any>} tableBodyElementRef
210
+ * @returns {React.ReactNode}
211
+ */
212
+ function getTableBody(props, renderTable, renderRow, reorderTable, tableBodyElementRef) {
213
+ let tableBody;
214
+ const { rows } = props.onBeforeTableRender ? props.onBeforeTableRender({ rows: props.rows }) : { rows: props.rows };
215
+ if (rows.length > 0 && props.onTableReorder && !props.readonly) {
216
+ tableBody = (react_1.default.createElement(react_movable_1.List, { values: rows, lockVertically: props.lockVertically, onChange: (params) => reorderTable(params.oldIndex, params.newIndex), renderList: (params) => renderTable(params), renderItem: (params) => renderRow(params), removableByMove: true, beforeDrag: props.onStartDragging }));
217
+ }
218
+ else {
219
+ const children = props.rows.map((row, index) => {
220
+ const rowProps = {
221
+ key: index
222
+ };
223
+ const dragAndDropParams = {
224
+ index,
225
+ isDragged: false,
226
+ isOutOfBounds: false,
227
+ isSelected: false,
228
+ props: rowProps,
229
+ value: row
230
+ };
231
+ return renderRow(dragAndDropParams);
232
+ });
233
+ tableBody = renderTable({ children, isDragged: false, props: { ...props, ref: tableBodyElementRef } });
234
+ }
235
+ return tableBody;
236
+ }
237
+ /**
238
+ * Restores focus.
239
+ *
240
+ * @param {string} currentFocusedRowAction
241
+ * @param {number | undefined} currentFocusedRowIndex
242
+ * @param {string} tableId
243
+ */
244
+ function restoreFocus(currentFocusedRowAction, currentFocusedRowIndex, tableId) {
245
+ if (currentFocusedRowAction) {
246
+ let actionElement = document.getElementById((0, utils_1.getRowActionButtonId)(tableId, currentFocusedRowIndex, currentFocusedRowAction));
247
+ if (actionElement) {
248
+ if (!actionElement.hasAttribute('disabled')) {
249
+ actionElement.focus();
250
+ }
251
+ else {
252
+ if (currentFocusedRowAction === 'up') {
253
+ actionElement = document.getElementById((0, utils_1.getRowActionButtonId)(tableId, currentFocusedRowIndex, 'down'));
254
+ }
255
+ else {
256
+ actionElement = document.getElementById((0, utils_1.getRowActionButtonId)(tableId, currentFocusedRowIndex, 'up'));
257
+ }
258
+ if (actionElement) {
259
+ actionElement.focus();
260
+ }
261
+ }
262
+ }
263
+ }
264
+ }
265
+ /**
266
+ * Check row fit container.
267
+ *
268
+ * @param {number | undefined} propThreshold
269
+ * @param {React.MutableRefObject<HTMLDivElement | null>} containerRef
270
+ * @returns {boolean}
271
+ */
272
+ function isRowFitsContainer(propThreshold, containerRef) {
273
+ let result = true;
274
+ const inRowMinWidth = propThreshold ?? 600;
275
+ const containerWidth = containerRef?.current?.clientWidth ?? 0;
276
+ if (containerWidth) {
277
+ result = containerWidth >= inRowMinWidth;
278
+ }
279
+ return result;
280
+ }
281
281
  //# sourceMappingURL=UIFlexibleTable.js.map
@@ -1,21 +1,21 @@
1
- import React from 'react';
2
- import type { UiIcons } from '..';
3
- export interface UIFlexibleTableActionProps {
4
- actionName: string;
5
- className?: string;
6
- iconName: UiIcons;
7
- disabled?: boolean;
8
- tableId: string;
9
- title?: string;
10
- onClick?: () => void;
11
- onFocus?: () => void;
12
- }
13
- /**
14
- * UIFlexibleTableActionButton component.
15
- *
16
- * @exports
17
- * @param {UIFlexibleTableActionProps} props
18
- * @returns { React.ReactElement}
19
- */
20
- export declare function UIFlexibleTableActionButton(props: UIFlexibleTableActionProps): React.ReactElement;
1
+ import React from 'react';
2
+ import type { UiIcons } from '..';
3
+ export interface UIFlexibleTableActionProps {
4
+ actionName: string;
5
+ className?: string;
6
+ iconName: UiIcons;
7
+ disabled?: boolean;
8
+ tableId: string;
9
+ title?: string;
10
+ onClick?: () => void;
11
+ onFocus?: () => void;
12
+ }
13
+ /**
14
+ * UIFlexibleTableActionButton component.
15
+ *
16
+ * @exports
17
+ * @param {UIFlexibleTableActionProps} props
18
+ * @returns { React.ReactElement}
19
+ */
20
+ export declare function UIFlexibleTableActionButton(props: UIFlexibleTableActionProps): React.ReactElement;
21
21
  //# sourceMappingURL=UIFlexibleTableActionButton.d.ts.map