@majoo-ui/react 2.0.1 → 2.1.0-rc.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 (202) hide show
  1. package/charts.esm.js +3 -1453
  2. package/colors/Colors.esm.js +93 -0
  3. package/components/accordion/Accordion.esm.js +109 -0
  4. package/components/alertDialog/AlertDialog.esm.js +440 -0
  5. package/components/avatar/Avatar.esm.js +83 -0
  6. package/components/badge/Badge.esm.js +255 -0
  7. package/components/banner/Banner.esm.js +341 -0
  8. package/components/barChart/BarChart.esm.js +212 -0
  9. package/components/breadcrumb/Breadcrumb.esm.js +65 -0
  10. package/components/breadcrumb/index.esm.js +19 -0
  11. package/components/button/Button.esm.js +331 -0
  12. package/components/buttonGroup/ButtonGroup.esm.js +350 -0
  13. package/components/card/Card.esm.js +236 -0
  14. package/components/chart/assets/data_kosong.png.esm.js +3 -0
  15. package/components/chart/lineChart/LineChart.esm.js +358 -0
  16. package/components/chart/lineChart/components/Comparator.esm.js +82 -0
  17. package/components/chart/lineChart/components/ComparatorController.esm.js +112 -0
  18. package/components/chart/lineChart/components/ComparatorItem.esm.js +104 -0
  19. package/components/chart/lineChart/components/ProductList.esm.js +78 -0
  20. package/components/chart/lineChart/components/TitleLegend.esm.js +107 -0
  21. package/components/chart/lineChart/components/Tooltip.esm.js +90 -0
  22. package/components/chart/utils/index.esm.js +109 -0
  23. package/components/checkboxTable/CheckboxTable.esm.js +287 -0
  24. package/components/colorPicker/ColorPicker.esm.js +342 -0
  25. package/components/colorPicker/InputColorPicker.esm.js +120 -0
  26. package/components/colorPicker/assets/img_colormap.gif.esm.js +3 -0
  27. package/components/colorPicker/components/ColorFields.esm.js +144 -0
  28. package/components/colorPicker/components/ColorMap.esm.js +1188 -0
  29. package/components/contentEditor/ContentEditor.esm.js +251 -0
  30. package/components/contentEditor/assets/Inline-code-outline.svg.esm.js +3 -0
  31. package/components/contentEditor/assets/Link-outline.svg.esm.js +3 -0
  32. package/components/contentEditor/assets/List-bulleted-outline.svg.esm.js +3 -0
  33. package/components/contentEditor/assets/List-numbered-outline.svg.esm.js +3 -0
  34. package/components/contentEditor/assets/Redo-outline.svg.esm.js +3 -0
  35. package/components/contentEditor/assets/Text-bold-filled.svg.esm.js +3 -0
  36. package/components/contentEditor/assets/Text-clear-format-outline.svg.esm.js +3 -0
  37. package/components/contentEditor/assets/Text-italic-outline.svg.esm.js +3 -0
  38. package/components/contentEditor/assets/Text-strikethrough-outline.svg.esm.js +3 -0
  39. package/components/contentEditor/assets/Text-underline-outline.svg.esm.js +3 -0
  40. package/components/contentEditor/assets/Undo-outline.svg.esm.js +3 -0
  41. package/components/contextMenu/ContextMenu.esm.js +298 -0
  42. package/components/datePicker/AdvancedOption.esm.js +37 -0
  43. package/components/datePicker/CustomDatePicker.esm.js +121 -0
  44. package/components/datePicker/DatePicker.esm.js +244 -0
  45. package/components/datePicker/DatePickerMulti.esm.js +70 -0
  46. package/components/datePicker/InputDatePicker.esm.js +290 -0
  47. package/components/datePicker/InputDateRangePicker.esm.js +174 -0
  48. package/components/datePicker/components/Calendar.esm.js +654 -0
  49. package/components/datePicker/components/CalendarMulti.esm.js +407 -0
  50. package/components/datePicker/components/CalendarTimePicker.esm.js +104 -0
  51. package/components/datePicker/components/DateNumber.esm.js +89 -0
  52. package/components/datePicker/components/MobileCalendar.esm.js +522 -0
  53. package/components/datePicker/state/reducer.esm.js +286 -0
  54. package/components/datePicker/timePicker/InputTimePicker.esm.js +205 -0
  55. package/components/datePicker/timePicker/TimePicker.esm.js +481 -0
  56. package/components/devicePreview/DevicePreview.esm.js +631 -0
  57. package/components/devicePreview/deviceFrame/android-transparant.png.esm.js +3 -0
  58. package/components/devicePreview/deviceFrame/android-wide-transparant.png.esm.js +3 -0
  59. package/components/devicePreview/deviceFrame/bg-email.png.esm.js +3 -0
  60. package/components/devicePreview/deviceFrame/bg-notification.png.esm.js +3 -0
  61. package/components/devicePreview/deviceFrame/bg-sms.png.esm.js +3 -0
  62. package/components/devicePreview/deviceFrame/bg-whatsapp.png.esm.js +3 -0
  63. package/components/devicePreview/deviceFrame/desktop-transparant.png.esm.js +3 -0
  64. package/components/devicePreview/deviceFrame/ic-majoo-profpic.png.esm.js +3 -0
  65. package/components/devicePreview/deviceFrame/iphone-transparant.png.esm.js +3 -0
  66. package/components/dialog/Dialog.esm.js +106 -0
  67. package/components/drawer/Drawer.esm.js +294 -0
  68. package/components/dropdownMenu/DropdownMenu.esm.js +281 -0
  69. package/components/editableTable/EditableMobile.esm.js +361 -0
  70. package/components/editableTable/EditableTable.esm.js +618 -0
  71. package/components/editableTable/transition.esm.js +37 -0
  72. package/components/form/components/FormGroup/FormGroup.esm.js +142 -0
  73. package/components/form/components/FormHelper/Helper.esm.js +50 -0
  74. package/components/form/components/FormLabel/Label.esm.js +90 -0
  75. package/components/form/components/InputAddon/InputAddon.esm.js +105 -0
  76. package/components/form/components/InputCheckbox/CheckboxGroup.esm.js +60 -0
  77. package/components/form/components/InputCheckbox/InputCheckbox.esm.js +129 -0
  78. package/components/form/components/InputCheckbox/icon/CheckOutline.esm.js +33 -0
  79. package/components/form/components/InputCheckbox/icon/MinusOutline.esm.js +33 -0
  80. package/components/form/components/InputCombobox/InputCombobox.esm.js +169 -0
  81. package/components/form/components/InputCounter/InputCounter.esm.js +226 -0
  82. package/components/form/components/InputCreatable/InputCreatable.esm.js +229 -0
  83. package/components/form/components/InputDateRange/InputDateRange.esm.js +46 -0
  84. package/components/form/components/InputElement/InputElement.esm.js +35 -0
  85. package/components/form/components/InputGroup/InputGroup.esm.js +188 -0
  86. package/components/form/components/InputLetter/InputLetter.esm.js +68 -0
  87. package/components/form/components/InputNumber/InputNumber.esm.js +248 -0
  88. package/components/form/components/InputNumber/NumberFormat.esm.js +1263 -0
  89. package/components/form/components/InputOTP/InputOTP.esm.js +70 -0
  90. package/components/form/components/InputRadio/InputRadio.esm.js +273 -0
  91. package/components/form/components/InputRadio/InputRadioGroup.esm.js +35 -0
  92. package/components/form/components/InputRadio/context.esm.js +5 -0
  93. package/components/form/components/InputResourceList/InputResourceList.esm.js +429 -0
  94. package/components/form/components/InputSearchbox/CloseFilled.esm.js +34 -0
  95. package/components/form/components/InputSearchbox/InputSearchbox.esm.js +90 -0
  96. package/components/form/components/InputSearchbox/SearchOutline.esm.js +26 -0
  97. package/components/form/components/InputSelect/InputSelect.esm.js +964 -0
  98. package/components/form/components/InputSelectCheck/InputSelectCheck.esm.js +1388 -0
  99. package/components/form/components/InputSelectCheck/OptionGroupItem.esm.js +39 -0
  100. package/components/form/components/InputSelectCheck/icon/CheckOutline.esm.js +33 -0
  101. package/components/form/components/InputSelectTag/InputSelectTag.esm.js +62 -0
  102. package/components/form/components/InputSignature/InputSignature.esm.js +122 -0
  103. package/components/form/components/InputSignature/SignatureModal.esm.js +67 -0
  104. package/components/form/components/InputSwitch/InputSwitch.esm.js +96 -0
  105. package/components/form/components/InputSwitch/InputSwitchWithImage.esm.js +136 -0
  106. package/components/form/components/InputTags/InputTags.esm.js +268 -0
  107. package/components/form/components/InputText/InputText.esm.js +197 -0
  108. package/components/form/components/InputTextArea/InputTextArea.esm.js +77 -0
  109. package/components/heading/Heading.esm.js +64 -0
  110. package/components/iconButton/IconButton.esm.js +71 -0
  111. package/components/image/Image.esm.js +141 -0
  112. package/components/link/Link.esm.js +59 -0
  113. package/components/loadingBar/LoadingBar.esm.js +113 -0
  114. package/components/mapPicker/InputMapPicker.esm.js +160 -0
  115. package/components/mapPicker/MapPicker.esm.js +122 -0
  116. package/components/mapPicker/MapPicker.styles.esm.js +70 -0
  117. package/components/mapPicker/assets/images/Mapsicle.png.esm.js +3 -0
  118. package/components/mapPicker/components/AddressCard.esm.js +25 -0
  119. package/components/mapPicker/components/ButtonSelect.esm.js +46 -0
  120. package/components/mapPicker/components/ChangeView.esm.js +20 -0
  121. package/components/mapPicker/components/InputSearch.esm.js +74 -0
  122. package/components/mapPicker/components/MarkerIcon.esm.js +22 -0
  123. package/components/mapPicker/components/MarkerSvg.esm.js +62 -0
  124. package/components/mapPicker/components/ZoomControls.esm.js +36 -0
  125. package/components/mapPicker/hooks/useMapSearch.esm.js +161 -0
  126. package/components/modalDialog/ModalDialog.esm.js +247 -0
  127. package/components/notificationBadge/NotificationBadge.esm.js +149 -0
  128. package/components/pageDialog/PageDialog.esm.js +291 -0
  129. package/components/pageDialog/logo.svg.esm.js +3 -0
  130. package/components/pagination/Pagination.esm.js +94 -0
  131. package/components/pagination/PaginationButton.esm.js +346 -0
  132. package/components/pagination/PaginationInfo.esm.js +146 -0
  133. package/components/paper/Paper.esm.js +76 -0
  134. package/components/paragraph/Paragraph.esm.js +52 -0
  135. package/components/pieChart/PieChart.esm.js +287 -0
  136. package/components/popover/Popover.esm.js +142 -0
  137. package/components/progress/Progress.esm.js +170 -0
  138. package/components/progressIndicator/ProgressIndicator.esm.js +287 -0
  139. package/components/scrollSync/ScrollSync.esm.js +172 -0
  140. package/components/scrollSync/ScrollSyncNode.esm.js +87 -0
  141. package/components/scrollSync/utils.esm.js +9 -0
  142. package/components/separator/Separator.esm.js +43 -0
  143. package/components/skeleton/Skeleton.esm.js +131 -0
  144. package/components/slider/Slider.esm.js +345 -0
  145. package/components/stepWizard/StepWizard.esm.js +451 -0
  146. package/components/stepWizard/index.esm.js +14 -0
  147. package/components/table/MobileTable.esm.js +415 -0
  148. package/components/table/Table.esm.js +1472 -0
  149. package/components/table/components/columns/DateColumn.esm.js +26 -0
  150. package/components/table/components/columns/DecimalColumn.esm.js +36 -0
  151. package/components/table/components/columns/PriceColumn.esm.js +57 -0
  152. package/components/table/components/columns/RowDraggableColumn.esm.js +24 -0
  153. package/components/table/components/columns/RowExpanderColumn.esm.js +32 -0
  154. package/components/table/components/columns/RowExpanderMultipleColumn.esm.js +24 -0
  155. package/components/table/components/columns/RowMenuColumn.esm.js +101 -0
  156. package/components/table/components/columns/RowSelectionCallbackColumn.esm.js +38 -0
  157. package/components/table/components/columns/RowSelectionColumn.esm.js +34 -0
  158. package/components/table/images/img-emptydata.webp.esm.js +3 -0
  159. package/components/table/images/img-emptysearchdata.webp.esm.js +3 -0
  160. package/components/tableOfContent/TableOfContent.esm.js +267 -0
  161. package/components/tableOfContent/index.esm.js +18 -0
  162. package/components/tableOfContent/transition.esm.js +38 -0
  163. package/components/tabs/Tabs.esm.js +282 -0
  164. package/components/tag/Tag.esm.js +161 -0
  165. package/components/tagList/TagList.esm.js +90 -0
  166. package/components/tagStatus/TagStatus.esm.js +134 -0
  167. package/components/text/Text.esm.js +140 -0
  168. package/components/toast/Toast.esm.js +297 -0
  169. package/components/toast/ToastContainer.esm.js +73 -0
  170. package/components/toast/context/ToastContext.esm.js +5 -0
  171. package/components/toast/context/ToastProvider.esm.js +96 -0
  172. package/components/tooltip/Tooltip.esm.js +175 -0
  173. package/components/upload/Upload.esm.js +1103 -0
  174. package/components/upload/utils/canvasPreview.esm.js +39 -0
  175. package/components/upload/utils/imgPreview.esm.js +21 -0
  176. package/config/stitches.config.esm.js +216 -0
  177. package/editor.esm.js +1 -264
  178. package/hooks/useListOption/useListOption.esm.js +56 -0
  179. package/hooks/useToggle/useToggle.esm.js +8 -0
  180. package/index.esm.js +106 -42293
  181. package/layout/box/Box.esm.js +24 -0
  182. package/layout/flex/Flex.esm.js +135 -0
  183. package/layout/grid/Grid.esm.js +270 -0
  184. package/layout/pageContainer/PageContainer.esm.js +60 -0
  185. package/majoo-provider/MajooProvider.esm.js +42 -0
  186. package/majoo-provider/ThemeProvider.esm.js +41 -0
  187. package/majoo-provider/globalStyles.esm.js +242 -0
  188. package/majoo-provider/styles/modern-normalize.esm.js +95 -0
  189. package/map.esm.js +2 -734
  190. package/package.json +8 -4
  191. package/utils/calendar.esm.js +26 -0
  192. package/utils/element.esm.js +21 -0
  193. package/utils/object.esm.js +12 -0
  194. package/utils/request.esm.js +74 -0
  195. package/utils/strings.esm.js +6 -0
  196. package/{useMediaQuery.esm.js → utils/useMediaQuery.esm.js} +1 -1
  197. package/utils/useNavigatorOnline.esm.js +19 -0
  198. package/utils/variant.esm.js +12 -0
  199. package/wrapper/ConditionalWrapper.esm.js +9 -0
  200. package/ModalDialog.esm.js +0 -2669
  201. package/Separator.esm.js +0 -3002
  202. package/stitches.config.esm.js +0 -2284
@@ -0,0 +1,1472 @@
1
+ import 'core-js/modules/es.array.includes.js';
2
+ import 'core-js/modules/es.array.push.js';
3
+ import 'core-js/modules/es.iterator.constructor.js';
4
+ import 'core-js/modules/es.iterator.filter.js';
5
+ import 'core-js/modules/es.iterator.for-each.js';
6
+ import 'core-js/modules/es.iterator.map.js';
7
+ import 'core-js/modules/es.json.parse.js';
8
+ import 'core-js/modules/es.json.stringify.js';
9
+ import { __rest } from 'tslib';
10
+ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
11
+ import * as React from 'react';
12
+ import { useState, useCallback, useMemo, useRef, useLayoutEffect, useEffect } from 'react';
13
+ import InfiniteScroll from 'react-infinite-scroller';
14
+ import { useTable, useSortBy, useExpanded, usePagination, useRowSelect, useColumnOrder, useMountedLayoutEffect } from 'react-table';
15
+ import { SortableElement, SortableContainer, arrayMove } from 'react-sortable-hoc';
16
+ import Text from '../text/Text.esm.js';
17
+ import Paragraph from '../paragraph/Paragraph.esm.js';
18
+ import Heading from '../heading/Heading.esm.js';
19
+ import ModalDialog, { ModalDialogTrigger, ModalDialogTitle, ModalDialogContent } from '../modalDialog/ModalDialog.esm.js';
20
+ import InputCheckbox from '../form/components/InputCheckbox/InputCheckbox.esm.js';
21
+ import CheckboxGroup from '../form/components/InputCheckbox/CheckboxGroup.esm.js';
22
+ import { Separator } from '../separator/Separator.esm.js';
23
+ import { styled } from '../../config/stitches.config.esm.js';
24
+ import Box from '../../layout/box/Box.esm.js';
25
+ import Flex from '../../layout/flex/Flex.esm.js';
26
+ import { removeUndefinedFields } from '../../utils/object.esm.js';
27
+ import useMediaQuery from '../../utils/useMediaQuery.esm.js';
28
+ import { ConditionalWrapper } from '../../wrapper/ConditionalWrapper.esm.js';
29
+ import { ContextMenuTrigger, ContextMenu, ContextMenuItem, ContextMenuSeparator } from '../contextMenu/ContextMenu.esm.js';
30
+ import MobileTable from './MobileTable.esm.js';
31
+ import { useSticky } from 'react-table-sticky';
32
+ import { useTranslation } from 'react-i18next';
33
+ import { useVirtual } from 'react-virtual';
34
+ import { PlusPrimitive } from '@majoo-ui/icons';
35
+ import '../scrollSync/ScrollSync.esm.js';
36
+ import { ScrollSyncNode } from '../scrollSync/ScrollSyncNode.esm.js';
37
+ import rowDraggableColumn from './components/columns/RowDraggableColumn.esm.js';
38
+ import IconButton from '../iconButton/IconButton.esm.js';
39
+ import { Popover, PopoverTrigger, PopoverContent } from '../popover/Popover.esm.js';
40
+ import Pagination from '../pagination/Pagination.esm.js';
41
+
42
+ const TableContainer = styled('div', {
43
+ display: 'block',
44
+ flexDirection: 'column',
45
+ maxWidth: '100%',
46
+ position: 'relative',
47
+ height: '100%',
48
+ overflow: 'auto',
49
+ variants: {
50
+ decoration: {
51
+ true: {
52
+ overflow: 'unset'
53
+ }
54
+ }
55
+ }
56
+ });
57
+ const TableContent = styled('table', {
58
+ width: '100%',
59
+ borderSpacing: 0,
60
+ borderCollapse: 'collapse',
61
+ '& *[data-sticky-td="true"]': {
62
+ backgroundColor: '$bgHeader'
63
+ }
64
+ });
65
+ const TableHead = styled('thead', {
66
+ position: 'sticky',
67
+ top: 0,
68
+ zIndex: '$docked',
69
+ backgroundColor: '$bgHeader',
70
+ boxShadow: '0 4px 4px rgba(0, 0, 0, 0.025)',
71
+ borderBottom: '1pt solid $bgBorder',
72
+ color: '$textPrimary',
73
+ variants: {
74
+ isInfiniteScroll: {
75
+ true: {
76
+ top: '-1px'
77
+ }
78
+ },
79
+ hiddenHeader: {
80
+ true: {
81
+ visibility: 'collapse'
82
+ }
83
+ }
84
+ }
85
+ });
86
+ const TableHeadRow = styled('tr');
87
+ const TableHeadCell = styled('th', {
88
+ height: '64px'
89
+ });
90
+ const TableEmptyStateDoodle = styled('div', {
91
+ width: 'min(200px, 50vw, 25vh)',
92
+ height: 'min(200px, 50vw, 25vh)',
93
+ maxWidth: '100%',
94
+ flexShrink: 0,
95
+ backgroundSize: 'contain',
96
+ backgroundRepeat: 'no-repeat',
97
+ backgroundPosition: 'center',
98
+ variants: {
99
+ asset: {
100
+ emptyData: {
101
+ backgroundImage: 'var(--brandAssets-emptyData)'
102
+ },
103
+ emptySearchData: {
104
+ backgroundImage: 'var(--brandAssets-emptySearchData)'
105
+ }
106
+ }
107
+ }
108
+ });
109
+ const TableHeaderCellContainer = styled(Flex, {
110
+ flexDirection: 'row',
111
+ alignItems: 'center',
112
+ gap: '$spacing-03',
113
+ userSelect: 'none',
114
+ size: '100%',
115
+ minWidth: 0,
116
+ padding: '0 $spacing-03',
117
+ '&::after': {
118
+ size: '16px',
119
+ content: `url(data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18'%3E%3Cg fill='%23A5ABAB'%3E%3Cpath d='m9.38 3.95 2.462 3.134c.338.43.098 1.166-.38 1.166H6.538c-.478 0-.718-.736-.38-1.166L8.62 3.95c.21-.267.55-.267.76 0zM9.38 14.05l2.462-3.134c.338-.43.098-1.166-.38-1.166H6.538c-.478 0-.718.736-.38 1.166L8.62 14.05c.21.267.55.267.76 0z'/%3E%3C/g%3E%3C/svg%3E")`,
120
+ margin: '0 $spacing-02 $spacing-01 0',
121
+ opacity: 1,
122
+ '@lg': {
123
+ content: `url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18'%3E%3Cg fill='%23404545'%3E%3Cpath d='m9.38 3.95 2.462 3.134c.338.43.098 1.166-.38 1.166H6.538c-.478 0-.718-.736-.38-1.166L8.62 3.95c.21-.267.55-.267.76 0zM9.38 14.05l2.462-3.134c.338-.43.098-1.166-.38-1.166H6.538c-.478 0-.718.736-.38 1.166L8.62 14.05c.21.267.55.267.76 0z'/%3E%3C/g%3E%3C/svg%3E")`,
124
+ marginRight: 0,
125
+ opacity: 0
126
+ }
127
+ },
128
+ '&:hover': {
129
+ backgroundColor: '$bgGray',
130
+ '&::after': {
131
+ '@lg': {
132
+ opacity: 1
133
+ }
134
+ }
135
+ },
136
+ variants: {
137
+ isSortedDesc: {
138
+ false: {
139
+ backgroundColor: '$bgGray',
140
+ '&::after': {
141
+ content: `url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18'%3E%3Cg fill='%23A5ABAB'%3E%3Cpath d='m12.51,8.27l3.28,4.17c0.45,0.58 0.13,1.56 -0.51,1.56l-6.56,0c-0.64,0 -0.96,-0.98 -0.51,-1.56l3.28,-4.17c0.28,-0.36 0.74,-0.36 1.02,0z' transform='rotate(180 12 10.9998)' /%3E%3C/g%3E%3C/svg%3E")`,
142
+ size: '16px',
143
+ margin: '0 $spacing-03 $spacing-03 0',
144
+ opacity: 1,
145
+ '@lg': {
146
+ content: `url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18'%3E%3Cg fill='%23404545'%3E%3Cpath d='m12.51,8.27l3.28,4.17c0.45,0.58 0.13,1.56 -0.51,1.56l-6.56,0c-0.64,0 -0.96,-0.98 -0.51,-1.56l3.28,-4.17c0.28,-0.36 0.74,-0.36 1.02,0z' transform='rotate(180 12 10.9998)' /%3E%3C/g%3E%3C/svg%3E")`,
147
+ marginRight: 0
148
+ }
149
+ }
150
+ },
151
+ true: {
152
+ backgroundColor: '$bgGray',
153
+ '&::after': {
154
+ content: `url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18'%3E%3Cg fill='%23A5ABAB'%3E%3Cpath d='m12.51,8.27l3.28,4.17c0.45,0.58 0.13,1.56 -0.51,1.56l-6.56,0c-0.64,0 -0.96,-0.98 -0.51,-1.56l3.28,-4.17c0.28,-0.36 0.74,-0.36 1.02,0z'/%3E%3C/g%3E%3C/svg%3E")`,
155
+ size: '16px',
156
+ margin: '0 $spacing-03 $spacing-03 0',
157
+ opacity: 1,
158
+ '@lg': {
159
+ content: `url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18'%3E%3Cg fill='%23404545'%3E%3Cpath d='m12.51,8.27l3.28,4.17c0.45,0.58 0.13,1.56 -0.51,1.56l-6.56,0c-0.64,0 -0.96,-0.98 -0.51,-1.56l3.28,-4.17c0.28,-0.36 0.74,-0.36 1.02,0z'/%3E%3C/g%3E%3C/svg%3E")`,
160
+ marginRight: 0
161
+ }
162
+ }
163
+ }
164
+ },
165
+ unsortable: {
166
+ true: {
167
+ '&::after': {
168
+ opacity: 0
169
+ },
170
+ '@lg': {
171
+ '&:hover': {
172
+ backgroundColor: '$bgGray',
173
+ '&::after': {
174
+ opacity: 0
175
+ }
176
+ }
177
+ }
178
+ }
179
+ },
180
+ isMobile: {
181
+ true: {
182
+ padding: '0',
183
+ justifyContent: 'space-between',
184
+ gap: 0
185
+ }
186
+ },
187
+ isToggleable: {
188
+ true: {}
189
+ },
190
+ isToggled: {
191
+ true: {
192
+ '&::after': {
193
+ opacity: 1
194
+ }
195
+ }
196
+ },
197
+ darkTheme: {
198
+ true: {
199
+ '&::after': {
200
+ content: `url(data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18'%3E%3Cg fill='%23FFFFFF'%3E%3Cpath d='m9.38 3.95 2.462 3.134c.338.43.098 1.166-.38 1.166H6.538c-.478 0-.718-.736-.38-1.166L8.62 3.95c.21-.267.55-.267.76 0zM9.38 14.05l2.462-3.134c.338-.43.098-1.166-.38-1.166H6.538c-.478 0-.718.736-.38 1.166L8.62 14.05c.21.267.55.267.76 0z'/%3E%3C/g%3E%3C/svg%3E")`,
201
+ '@lg': {
202
+ content: `url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18'%3E%3Cg fill='%23FFFFFF'%3E%3Cpath d='m9.38 3.95 2.462 3.134c.338.43.098 1.166-.38 1.166H6.538c-.478 0-.718-.736-.38-1.166L8.62 3.95c.21-.267.55-.267.76 0zM9.38 14.05l2.462-3.134c.338-.43.098-1.166-.38-1.166H6.538c-.478 0-.718.736-.38 1.166L8.62 14.05c.21.267.55.267.76 0z'/%3E%3C/g%3E%3C/svg%3E")`
203
+ }
204
+ }
205
+ }
206
+ }
207
+ },
208
+ compoundVariants: [{
209
+ unsortable: true,
210
+ isToggleable: true,
211
+ css: {
212
+ cursor: 'pointer',
213
+ '@lg': {
214
+ '&:hover': {
215
+ '&::after': {
216
+ opacity: 1
217
+ }
218
+ }
219
+ }
220
+ }
221
+ }, {
222
+ isToggleable: true,
223
+ isMobile: true,
224
+ css: {
225
+ '&::after': {
226
+ opacity: 1
227
+ }
228
+ }
229
+ }, {
230
+ isSortedDesc: true,
231
+ darkTheme: true,
232
+ css: {
233
+ '&::after': {
234
+ content: `url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18'%3E%3Cg fill='%23FFFFFF'%3E%3Cpath d='m12.51,8.27l3.28,4.17c0.45,0.58 0.13,1.56 -0.51,1.56l-6.56,0c-0.64,0 -0.96,-0.98 -0.51,-1.56l3.28,-4.17c0.28,-0.36 0.74,-0.36 1.02,0z'/%3E%3C/g%3E%3C/svg%3E")`,
235
+ '@lg': {
236
+ content: `url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18'%3E%3Cg fill='%23FFFFFF'%3E%3Cpath d='m12.51,8.27l3.28,4.17c0.45,0.58 0.13,1.56 -0.51,1.56l-6.56,0c-0.64,0 -0.96,-0.98 -0.51,-1.56l3.28,-4.17c0.28,-0.36 0.74,-0.36 1.02,0z'/%3E%3C/g%3E%3C/svg%3E")`
237
+ }
238
+ }
239
+ }
240
+ }, {
241
+ isSortedDesc: false,
242
+ darkTheme: true,
243
+ css: {
244
+ '&::after': {
245
+ content: `url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18'%3E%3Cg fill='%23FFFFFF'%3E%3Cpath d='m12.51,8.27l3.28,4.17c0.45,0.58 0.13,1.56 -0.51,1.56l-6.56,0c-0.64,0 -0.96,-0.98 -0.51,-1.56l3.28,-4.17c0.28,-0.36 0.74,-0.36 1.02,0z' transform='rotate(180 12 10.9998)' /%3E%3C/g%3E%3C/svg%3E")`,
246
+ '@lg': {
247
+ content: `url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18'%3E%3Cg fill='%23FFFFFF'%3E%3Cpath d='m12.51,8.27l3.28,4.17c0.45,0.58 0.13,1.56 -0.51,1.56l-6.56,0c-0.64,0 -0.96,-0.98 -0.51,-1.56l3.28,-4.17c0.28,-0.36 0.74,-0.36 1.02,0z' transform='rotate(180 12 10.9998)' /%3E%3C/g%3E%3C/svg%3E")`
248
+ }
249
+ }
250
+ }
251
+ }]
252
+ });
253
+ const TableHeadCellContent = styled(Heading, {
254
+ backgroundColor: 'transparent',
255
+ userSelect: 'none',
256
+ textAlign: 'start',
257
+ position: 'relative',
258
+ '& > *': {
259
+ display: 'inline-flex'
260
+ },
261
+ '& > span:last-child': {
262
+ paddingLeft: '$spacing-03'
263
+ },
264
+ variants: {
265
+ isMobile: {
266
+ true: {
267
+ width: '100%'
268
+ }
269
+ }
270
+ }
271
+ });
272
+ const TableBody = styled('tbody', {});
273
+ const TableRow = styled('tr', {
274
+ borderBottom: '1pt solid $bgBorder',
275
+ '&:hover': {
276
+ backgroundColor: '$bgGray',
277
+ '& *[data-sticky-td="true"]': {
278
+ backgroundColor: '$bgGray'
279
+ }
280
+ },
281
+ variants: {
282
+ subRow: {
283
+ true: {
284
+ border: 'none',
285
+ backgroundColor: '$bgGray',
286
+ '& td': {
287
+ padding: '$spacing-02 0 $spacing-02 $spacing-03'
288
+ }
289
+ }
290
+ }
291
+ }
292
+ });
293
+ const Cell = styled('td');
294
+ const TableCell = styled('td', {
295
+ height: '68px',
296
+ fontSize: '$short-content-regular',
297
+ lineHeight: '$short-content-regular',
298
+ letterSpacing: '$short-content-regular',
299
+ fontWeight: '400',
300
+ color: '$textPrimary',
301
+ wordBreak: 'break-word',
302
+ variants: {
303
+ subCell: {
304
+ true: {
305
+ height: 'unset'
306
+ }
307
+ },
308
+ headerSubCell: {
309
+ true: {
310
+ fontWeight: '600'
311
+ }
312
+ }
313
+ }
314
+ });
315
+ const TableFoot = styled('tfoot', {
316
+ position: 'sticky',
317
+ bottom: 0,
318
+ backgroundColor: '$bgWhite'
319
+ });
320
+ const TableFootRow = styled('tr');
321
+ const TableFootCell = styled('td', {});
322
+ const addOnCellStyle = id => {
323
+ switch (id) {
324
+ case 'expander':
325
+ case 'menu':
326
+ return {
327
+ style: {
328
+ width: '24px'
329
+ }
330
+ };
331
+ case 'selection':
332
+ return {
333
+ style: {
334
+ width: '16px'
335
+ }
336
+ };
337
+ default:
338
+ return {};
339
+ }
340
+ };
341
+ const defaultFetchDataParams = {
342
+ pageIndex: 0,
343
+ pageSize: 10
344
+ };
345
+ const stickyPositionStyling = column => {
346
+ if (typeof column.stickyPosition === 'number') {
347
+ return column.sticky === 'left' ? {
348
+ position: 'sticky',
349
+ left: `${column.stickyPosition}px !important`
350
+ } : {
351
+ position: 'sticky',
352
+ right: `${column.stickyPosition}px !important`
353
+ };
354
+ }
355
+ return {};
356
+ };
357
+ const cssAfter = {
358
+ position: 'absolute',
359
+ top: 0,
360
+ bottom: 0,
361
+ width: 5,
362
+ transition: 'box-shadow 0.3s',
363
+ content: '',
364
+ pointerEvents: 'none',
365
+ boxSizing: 'border'
366
+ };
367
+ const stickyShadowStyling = (column, tableScrollPosition, scrollAreaWidth) => {
368
+ if ((column === null || column === void 0 ? void 0 : column.sticky) && (column === null || column === void 0 ? void 0 : column.shadow)) {
369
+ return column.sticky === 'left' ? {
370
+ '&::after': Object.assign(Object.assign({}, cssAfter), {
371
+ right: 0,
372
+ boxShadow: tableScrollPosition === 'start' || scrollAreaWidth <= 0 ? 'none' : 'inset 10px 0 10px -10px #00000026'
373
+ })
374
+ } : {
375
+ '&::after': Object.assign(Object.assign({}, cssAfter), {
376
+ left: 0,
377
+ boxShadow: tableScrollPosition === 'end' || scrollAreaWidth <= 0 ? 'none' : 'inset -10px 0 10px -10px #00000026'
378
+ })
379
+ };
380
+ }
381
+ return {};
382
+ };
383
+ const formattingData = (rawData, rowGroup) => {
384
+ if ((rowGroup === null || rowGroup === void 0 ? void 0 : rowGroup.groupKey) && !(rowGroup === null || rowGroup === void 0 ? void 0 : rowGroup.isManuallyFormatted)) {
385
+ const {
386
+ groupKey
387
+ } = rowGroup;
388
+ const modifiedData = [];
389
+ rawData.forEach((item, index) => {
390
+ if (item[groupKey] && item[groupKey].length > 0) {
391
+ const newElement = item[groupKey].map((childItem, index) => Object.assign(Object.assign({}, childItem), {
392
+ isTopChild: index === 0,
393
+ parentOriginal: item,
394
+ isBottomChild: index === item[groupKey].length - 1
395
+ }));
396
+ modifiedData.push(...newElement);
397
+ } else {
398
+ modifiedData.push(item);
399
+ }
400
+ });
401
+ return modifiedData;
402
+ }
403
+ return rawData;
404
+ };
405
+ const defaultEmptyDataProps = (t, isMobile) => ({
406
+ doodleImage: jsx(TableEmptyStateDoodle, {
407
+ asset: "emptyData",
408
+ "aria-hidden": "true"
409
+ }),
410
+ title: jsx(Paragraph, {
411
+ paragraph: "shortContentBold",
412
+ color: "primary",
413
+ align: "center",
414
+ css: {
415
+ marginTop: isMobile ? 0 : '$spacing-05'
416
+ },
417
+ children: t('dataNotAvailableTitle', 'Data tidak tersedia')
418
+ }),
419
+ description: !isMobile ? jsxs(Paragraph, {
420
+ paragraph: "shortContentRegular",
421
+ color: "secondary",
422
+ align: "center",
423
+ children: [t('dataNotAvailableDescription_1', 'Belum ada data yang dapat ditampilkan'), ' ', t('dataNotAvailableDescription_2', 'di halaman ini')]
424
+ }) : jsxs(Text, {
425
+ variant: "caption",
426
+ color: "secondary",
427
+ align: "center",
428
+ children: [t('dataNotAvailableDescription_1', 'Belum ada data yang dapat ditampilkan'), jsx("br", {}), t('dataNotAvailableDescription_2', 'di halaman ini')]
429
+ })
430
+ });
431
+ const defaultEmptySearchProps = (t, isMobile, query) => ({
432
+ doodleImage: jsx(TableEmptyStateDoodle, {
433
+ asset: "emptySearchData",
434
+ "aria-hidden": "true"
435
+ }),
436
+ title: jsx(Paragraph, {
437
+ paragraph: "shortContentBold",
438
+ color: "primary",
439
+ align: "center",
440
+ css: {
441
+ marginTop: isMobile ? 0 : '$spacing-05'
442
+ },
443
+ children: t('dataNotAvailableTitleSearch', `Oops... ${query} tidak ditemukan`, {
444
+ query
445
+ })
446
+ }),
447
+ description: !isMobile ? jsxs(Paragraph, {
448
+ paragraph: "shortContentRegular",
449
+ color: "secondary",
450
+ align: "center",
451
+ children: [t('dataNotAvailableDescriptionSearch_1', 'Coba lagi dengan memasukkan'), ' ', t('dataNotAvailableDescriptionSearch_2', 'kata kunci yang tepat')]
452
+ }) : jsxs(Text, {
453
+ variant: "caption",
454
+ color: "secondary",
455
+ align: "center",
456
+ children: [t('dataNotAvailableDescriptionSearch_1', 'Coba lagi dengan memasukkan'), jsx("br", {}), t('dataNotAvailableDescriptionSearch_2', 'kata kunci yang tepat')]
457
+ })
458
+ });
459
+ function HeaderMenuOption(props) {
460
+ const {
461
+ open,
462
+ onChange,
463
+ onOpenChange,
464
+ children,
465
+ headerGroups,
466
+ id,
467
+ filterHeader: items,
468
+ rowData
469
+ } = props;
470
+ const {
471
+ headers = []
472
+ } = (headerGroups === null || headerGroups === void 0 ? void 0 : headerGroups[0]) || {};
473
+ const visibleHeaders = headers.filter(column => !column.isSubRow);
474
+ const isMobile = useMediaQuery('(max-width: 1024px)');
475
+ if (isMobile) {
476
+ return jsxs(ModalDialog, {
477
+ isMobile: true,
478
+ children: [jsx(ModalDialogTrigger, {
479
+ asChild: true,
480
+ children: children
481
+ }), jsx(ModalDialogTitle, {
482
+ children: "Tampilkan Kolom"
483
+ }), jsx(ModalDialogContent, {
484
+ css: {
485
+ overflowY: visibleHeaders.filter(val => typeof val.Header === 'string').length > 8 ? 'scroll' : 'none'
486
+ },
487
+ children: jsx(Flex, {
488
+ direction: "column",
489
+ gap: 3,
490
+ css: {
491
+ padding: '$spacing-04'
492
+ },
493
+ children: jsx(CheckboxGroup, {
494
+ disabled: false,
495
+ onChange: onChange,
496
+ defaultValue: visibleHeaders === null || visibleHeaders === void 0 ? void 0 : visibleHeaders.map(item => item.id),
497
+ value: items.length > 0 ? items : visibleHeaders === null || visibleHeaders === void 0 ? void 0 : visibleHeaders.map(item => item.id),
498
+ children: visibleHeaders === null || visibleHeaders === void 0 ? void 0 : visibleHeaders.filter(val => typeof val.Header === 'string').map((item, index, row) => jsxs(React.Fragment, {
499
+ children: [jsx(InputCheckbox, {
500
+ id: `idx-${index}`,
501
+ label: item.Header,
502
+ value: item.id,
503
+ disabled: index === 0
504
+ }, index), row.length !== index + 1 && jsx(Separator, {})]
505
+ }, index))
506
+ })
507
+ })
508
+ })]
509
+ });
510
+ }
511
+ return jsxs(Popover, {
512
+ onClose: onOpenChange,
513
+ open: open,
514
+ sideOffset: 10,
515
+ placement: "bottom-end",
516
+ children: [jsx(PopoverTrigger, {
517
+ disabled: false,
518
+ children: children
519
+ }), jsx(PopoverContent, {
520
+ portalled: false,
521
+ isMobile: false,
522
+ children: jsx(Flex, {
523
+ gap: 5,
524
+ direction: "column",
525
+ css: {
526
+ padding: '$spacing-06 $spacing-05',
527
+ boxShadow: '$medium',
528
+ backgroundColor: '$bgWhite',
529
+ maxHeight: 300,
530
+ minWidth: 167,
531
+ width: 'max-content',
532
+ overflowY: visibleHeaders.filter(val => typeof val.Header === 'string').length > 5 ? 'scroll' : 'none'
533
+ },
534
+ children: jsx(CheckboxGroup, {
535
+ disabled: false,
536
+ onChange: onChange,
537
+ defaultValue: visibleHeaders === null || visibleHeaders === void 0 ? void 0 : visibleHeaders.map(item => item.id),
538
+ value: items.length > 0 ? items : visibleHeaders === null || visibleHeaders === void 0 ? void 0 : visibleHeaders.map(item => item.id),
539
+ children: visibleHeaders === null || visibleHeaders === void 0 ? void 0 : visibleHeaders.filter(val => typeof val.Header === 'string').map((item, index, row) => jsxs(React.Fragment, {
540
+ children: [jsx(InputCheckbox, {
541
+ id: `idx-${index}`,
542
+ label: item.Header,
543
+ value: item.id,
544
+ disabled: index === 0
545
+ }), row.length !== index + 1 && jsx(Separator, {})]
546
+ }, index))
547
+ })
548
+ })
549
+ })]
550
+ });
551
+ }
552
+ const useLocalStorageState = (key, initialValue) => {
553
+ const [state, setState] = useState(() => {
554
+ const storedValue = localStorage.getItem(key);
555
+ return storedValue ? JSON.parse(storedValue) : initialValue;
556
+ });
557
+ useEffect(() => {
558
+ localStorage.setItem(key, JSON.stringify(state));
559
+ window.dispatchEvent(new Event('storage'));
560
+ }, [key, state]);
561
+ return [state, setState];
562
+ };
563
+ const DraggableRow = SortableElement(_a => {
564
+ var {
565
+ children
566
+ } = _a,
567
+ restProps = __rest(_a, ["children"]);
568
+ return jsx(TableRow, Object.assign({}, restProps, {
569
+ children: children
570
+ }));
571
+ });
572
+ const DraggableContainer = SortableContainer(_a => {
573
+ var {
574
+ children
575
+ } = _a,
576
+ restProps = __rest(_a, ["children"]);
577
+ return jsx(TableBody, Object.assign({}, restProps, {
578
+ children: children
579
+ }));
580
+ });
581
+ function Table({
582
+ columns,
583
+ data: rawData,
584
+ keyId = 'id',
585
+ pageIndex: controlledPageIndex = 0,
586
+ totalPage,
587
+ totalData = 0,
588
+ fetchData,
589
+ hideDataInfo = false,
590
+ rowsPerPageOptions = [10, 25, 50, 100],
591
+ emptyDataMessage = 'Tidak ada data',
592
+ customEmptyDataProps: emptyDataProps,
593
+ isLoading = false,
594
+ css,
595
+ headerCss,
596
+ hideHeader,
597
+ onSelectedChange,
598
+ isInfiniteScroll = false,
599
+ hasMoreItems = true,
600
+ rowLimit = 10,
601
+ cellAlign = 'center',
602
+ selectedIds,
603
+ rowGroup,
604
+ decoration,
605
+ hiddenColumns,
606
+ columnOrder,
607
+ customRowsStyle,
608
+ isMobileLayout,
609
+ showDuplicatedData,
610
+ onRowClick,
611
+ hidePagination = false,
612
+ searchQuery,
613
+ additionalExceptionIds = [],
614
+ expanded: controlledExpanded = {},
615
+ onExpandedChange,
616
+ id = null,
617
+ onColumnChange,
618
+ virtualized = true,
619
+ withoutLimit = false,
620
+ additionalHeader,
621
+ outerContainerCss,
622
+ autoResetExpanded = true,
623
+ draggable = false,
624
+ onDragEnd,
625
+ isExpandableTree,
626
+ subRows = 'subRows'
627
+ }) {
628
+ var _a, _b, _c, _d;
629
+ const [openMenu, setOpen] = useState(false);
630
+ const [limit, setLimit] = useState(rowLimit);
631
+ const [dataRow, setDataRow] = useState({});
632
+ const [tableScrollPosition, setTableScrollPosition] = useState('start');
633
+ const [scrollAreaWidth, setScrollAreaWidth] = useState(0);
634
+ const [stateSelectedRowIds, setStateSelectedRowIds] = useState(selectedIds ? Object.keys(selectedIds) : []);
635
+ const [filterHeader, setFilterHeader] = useLocalStorageState(`menu:${id}`, []);
636
+ const handleFilterHeaderChange = useCallback(items => {
637
+ setFilterHeader(items);
638
+ }, [filterHeader]);
639
+ const [filteredHeader, setFilteredHeader] = useState([]);
640
+ const [hasDarkParent, setHasDarkParent] = useState(false);
641
+ const {
642
+ t
643
+ } = useTranslation('MajooUI/table');
644
+ const isMobile = useMediaQuery(isMobileLayout === undefined ? '(max-width: 1024px)' : isMobileLayout ? '(max-width: 8000px)' : '(max-width: 0px)');
645
+ const customEmptyDataProps = searchQuery ? defaultEmptySearchProps(t, isMobile, searchQuery) : emptyDataProps || defaultEmptyDataProps(t, isMobile);
646
+ const getInitialState = () => {
647
+ const initialState = {};
648
+ if (fetchData) {
649
+ Object.assign(initialState, {
650
+ pageIndex: controlledPageIndex
651
+ });
652
+ }
653
+ if (selectedIds) {
654
+ Object.assign(initialState, {
655
+ selectedRowIds: selectedIds
656
+ });
657
+ }
658
+ if (controlledExpanded) {
659
+ Object.assign(initialState, {
660
+ expanded: controlledExpanded
661
+ });
662
+ }
663
+ return Object.keys(initialState).length > 0 ? initialState : undefined;
664
+ };
665
+ const records = useMemo(() => formattingData(rawData, rowGroup), [rawData, rowGroup]);
666
+ const filteredColumns = useMemo(() => {
667
+ if (draggable) {
668
+ return [rowDraggableColumn,
669
+ // remove all action column
670
+ ...columns.filter(item => !['menu', 'expander', 'multiple-expander', 'selection'].includes(item.id))].map(col => Object.assign(Object.assign({}, col), {
671
+ unsortable: false
672
+ }));
673
+ }
674
+ return columns;
675
+ }, [draggable, columns]);
676
+ const instance = useTable({
677
+ columns: filteredColumns,
678
+ data: records,
679
+ initialState: getInitialState(),
680
+ state: {
681
+ expanded: controlledExpanded
682
+ },
683
+ manualPagination: !!fetchData,
684
+ manualSortBy: !!fetchData,
685
+ defaultCanSort: true,
686
+ pageCount: totalPage || Math.ceil(totalData / limit),
687
+ autoResetSortBy: false,
688
+ autoResetExpanded,
689
+ onExpandedChange,
690
+ autoResetPage: false,
691
+ autoResetSelectedRows: false,
692
+ getRowId: showDuplicatedData ? undefined : row => row[keyId] || JSON.stringify(row),
693
+ getSubRows: row => row[subRows] || []
694
+ }, useSortBy, useExpanded, usePagination, useRowSelect, useSticky, useColumnOrder);
695
+ const {
696
+ getTableProps,
697
+ getTableBodyProps,
698
+ headerGroups,
699
+ visibleColumns,
700
+ prepareRow,
701
+ rows,
702
+ page,
703
+ gotoPage,
704
+ setPageSize,
705
+ toggleRowSelected,
706
+ toggleAllRowsSelected,
707
+ state: {
708
+ pageIndex,
709
+ pageSize,
710
+ sortBy,
711
+ selectedRowIds,
712
+ expanded
713
+ },
714
+ setHiddenColumns,
715
+ setColumnOrder
716
+ } = instance;
717
+ const scrollerRef = useRef(null);
718
+ const rowVirtualizer = useVirtual({
719
+ parentRef: scrollerRef,
720
+ size: page === null || page === void 0 ? void 0 : page.length,
721
+ overscan: isMobile ? 40 : 20,
722
+ estimateSize: useCallback(() => isMobile ? 44 : 68, [isMobile])
723
+ });
724
+ const {
725
+ virtualItems: virtualRows,
726
+ totalSize
727
+ } = rowVirtualizer;
728
+ const paddingTop = virtualized ? virtualRows.length > 0 ? ((_a = virtualRows === null || virtualRows === void 0 ? void 0 : virtualRows[0]) === null || _a === void 0 ? void 0 : _a.start) || 0 : 0 : 0;
729
+ const paddingBottom = virtualized ? virtualRows.length > 0 ? totalSize - (((_b = virtualRows === null || virtualRows === void 0 ? void 0 : virtualRows[virtualRows.length - 1]) === null || _b === void 0 ? void 0 : _b.end) || 0) : 0 : 0;
730
+ const doFetchData = (pageIndex, pageSize, sortAccessor = sortBy.length > 0 ? sortBy[0].id : undefined, sortDirection = sortBy.length > 0 ? sortBy[0].desc ? 'DESC' : 'ASC' : undefined) => {
731
+ const fetchParams = removeUndefinedFields({
732
+ pageIndex,
733
+ pageSize,
734
+ sortAccessor,
735
+ sortDirection
736
+ });
737
+ if (fetchData) fetchData(fetchParams);
738
+ };
739
+ const renderFooter = () => jsx(Pagination, {
740
+ hidePagination: hidePagination || isExpandableTree,
741
+ hideInputPageSection: false,
742
+ limit: pageSize,
743
+ currentPage: pageIndex + 1,
744
+ totalData: totalData,
745
+ totalPage: totalPage,
746
+ onLimitChange: selectedItem => {
747
+ if (selectedItem) {
748
+ // always reset page when limit changed
749
+ gotoPage(0);
750
+ doFetchData(0, selectedItem);
751
+ setPageSize(selectedItem);
752
+ setLimit(selectedItem);
753
+ }
754
+ },
755
+ hideDataInfo: hideDataInfo || isExpandableTree,
756
+ onPageChange: page => {
757
+ doFetchData(page - 1, pageSize);
758
+ gotoPage(page - 1);
759
+ },
760
+ rowsPerPageOptions: rowsPerPageOptions,
761
+ css: {
762
+ backgroundColor: '$bgWhite',
763
+ padding: '$spacing-04 0',
764
+ '@md': {
765
+ padding: '$spacing-06 $spacing-03'
766
+ }
767
+ }
768
+ });
769
+ const renderInfiniteScrollWrapper = children => jsx(ConditionalWrapper, {
770
+ condition: isInfiniteScroll && rawData.length > 0,
771
+ wrapper: children => jsx(InfiniteScroll, {
772
+ loadMore: _ => {
773
+ if (!isLoading) doFetchData(controlledPageIndex + 1, rowLimit);
774
+ },
775
+ hasMore: hasMoreItems,
776
+ threshold: 5,
777
+ useWindow: false,
778
+ children: children
779
+ }),
780
+ children: children
781
+ });
782
+ const getOptionsMenu = () => {
783
+ var _a, _b;
784
+ let options = [];
785
+ for (let i = 0; i < (page === null || page === void 0 ? void 0 : page.length); i++) {
786
+ prepareRow(page[i]);
787
+ for (let j = 0; j < page[i].cells.length; j++) {
788
+ const column = (_b = (_a = page[i]) === null || _a === void 0 ? void 0 : _a.cells[j]) === null || _b === void 0 ? void 0 : _b.column;
789
+ if (column === null || column === void 0 ? void 0 : column.options) {
790
+ options = column === null || column === void 0 ? void 0 : column.options;
791
+ }
792
+ }
793
+ }
794
+ return options;
795
+ };
796
+ const renderContextMenu = () => {
797
+ const options = getOptionsMenu();
798
+ return jsx(ContextMenu, {
799
+ id: "context-menu-table",
800
+ children: options === null || options === void 0 ? void 0 : options.map((option, index) => {
801
+ return jsxs(React.Fragment, {
802
+ children: [jsx(ContextMenuItem, {
803
+ data: {
804
+ row: dataRow
805
+ },
806
+ onClick: () => option === null || option === void 0 ? void 0 : option.onClick({
807
+ row: dataRow
808
+ }),
809
+ children: option === null || option === void 0 ? void 0 : option.title
810
+ }), index !== (options === null || options === void 0 ? void 0 : options.length) - 1 && jsx(ContextMenuSeparator, {})]
811
+ }, index);
812
+ })
813
+ });
814
+ };
815
+ const renderRowDecorationReference = (row, isContextMenu, i) => {
816
+ return jsx(TableRow, Object.assign({
817
+ css: {
818
+ display: 'none'
819
+ }
820
+ }, row && (row === null || row === void 0 ? void 0 : row.getRowProps) ? row === null || row === void 0 ? void 0 : row.getRowProps() : {}, {
821
+ children: row.cells.filter(cell => !cell.column.isSubRow).map(cell => {
822
+ var _a, _b;
823
+ const collId = (_a = cell === null || cell === void 0 ? void 0 : cell.column) === null || _a === void 0 ? void 0 : _a.id;
824
+ const exceptionId = (_b = ['expander', 'multiple-expander', 'selection', 'menu', 'eye'].concat(additionalExceptionIds)) === null || _b === void 0 ? void 0 : _b.includes(collId);
825
+ return jsx(TableCell, Object.assign({}, cell.getCellProps(addOnCellStyle(cell.column.id)), {
826
+ css: Object.assign(Object.assign({
827
+ padding: !isContextMenu || exceptionId ? collId === 'expander' || collId === 'multiple-expander' ? '20px 4px' : '20px 10px' : '',
828
+ verticalAlign: cell.column.accessor ? cellAlign : 'center',
829
+ cursor: onRowClick ? 'pointer' : 'unset'
830
+ }, stickyPositionStyling(cell.column)), stickyShadowStyling(cell.column, tableScrollPosition, scrollAreaWidth)),
831
+ onClick: () => {
832
+ if (!exceptionId) {
833
+ handleRowClick(row, i);
834
+ }
835
+ },
836
+ children: jsx(ConditionalWrapper, {
837
+ condition: isContextMenu && !exceptionId,
838
+ wrapper: children => jsx(ContextMenuTrigger, {
839
+ id: "context-menu-table",
840
+ triggerSide: "left",
841
+ children: jsx(Box, {
842
+ css: {
843
+ cursor: 'pointer',
844
+ padding: cell.column.accessor ? '20px 8px' : '20px 20px'
845
+ },
846
+ onClick: () => handleRowClick(row, i),
847
+ children: children
848
+ })
849
+ }),
850
+ children: cell.render('Cell')
851
+ })
852
+ }));
853
+ })
854
+ }));
855
+ };
856
+ const renderTableDecorationChild = child => {
857
+ return jsxs(TableContent, {
858
+ children: [jsx(TableHead, {
859
+ css: {
860
+ '& > tr > th': {
861
+ height: '0px !important',
862
+ '& > div': {
863
+ marginTop: '-50px'
864
+ }
865
+ }
866
+ },
867
+ hiddenHeader: true,
868
+ isInfiniteScroll: isInfiniteScroll,
869
+ children: headerGroups.map(headerGroup => {
870
+ const visibleHeaders = headerGroup.headers.filter(column => !column.isSubRow);
871
+ return jsx(TableHeadRow, Object.assign({}, headerGroup.getHeaderGroupProps(), {
872
+ children: visibleHeaders.map((column, index) => {
873
+ const headerRender = column.render('Header');
874
+ return jsx(TableHeadCell, Object.assign({}, column.getHeaderProps(props => [props, !column.unsortable ? column.getSortByToggleProps({
875
+ title: t('sortColumnTitle', 'Urutkan') || 'Urutkan'
876
+ }) : {
877
+ onClick: column.onToggle
878
+ }, {
879
+ style: {
880
+ width: column.colWidth,
881
+ maxWidth: column.colMaxWidth,
882
+ minWidth: column.colMinWidth
883
+ }
884
+ }]), {
885
+ css: Object.assign(Object.assign(Object.assign({}, stickyPositionStyling(column)), stickyShadowStyling(column, tableScrollPosition, scrollAreaWidth)), column.headerCss),
886
+ children: typeof headerRender === 'string' ? jsx(TableHeaderCellContainer, {
887
+ isSortedDesc: column.isSortedDesc,
888
+ unsortable: column.unsortable,
889
+ isToggleable: !!column.onToggle,
890
+ isToggled: column.isToggled,
891
+ darkTheme: hasDarkParent,
892
+ children: jsx(TableHeadCellContent, {
893
+ heading: "headerTable",
894
+ children: headerRender.toUpperCase()
895
+ })
896
+ }) : headerRender
897
+ }));
898
+ })
899
+ }));
900
+ })
901
+ }), jsx(TableBody, Object.assign({}, getTableBodyProps(), {
902
+ children: child
903
+ }))]
904
+ });
905
+ };
906
+ const handleRowClick = (row, i) => {
907
+ var _a, _b, _c, _d;
908
+ let clickable = false;
909
+ for (let i = 0; i < ((_a = row === null || row === void 0 ? void 0 : row.cells) === null || _a === void 0 ? void 0 : _a.length); i++) {
910
+ const isMenu = ((_d = (_c = (_b = row === null || row === void 0 ? void 0 : row.cells) === null || _b === void 0 ? void 0 : _b[i]) === null || _c === void 0 ? void 0 : _c.column) === null || _d === void 0 ? void 0 : _d.id) === 'menu';
911
+ clickable = !isMenu;
912
+ }
913
+ clickable && (onRowClick === null || onRowClick === void 0 ? void 0 : onRowClick(row, i));
914
+ setDataRow(row);
915
+ };
916
+ useLayoutEffect(() => {
917
+ if (scrollerRef && scrollerRef.current) {
918
+ setScrollAreaWidth(scrollerRef.current.scrollWidth - scrollerRef.current.clientWidth);
919
+ }
920
+ }, [scrollerRef, visibleColumns]);
921
+ const firstUpdate = useRef(true);
922
+ useLayoutEffect(() => {
923
+ if (firstUpdate.current) {
924
+ firstUpdate.current = false;
925
+ return;
926
+ }
927
+ onExpandedChange === null || onExpandedChange === void 0 ? void 0 : onExpandedChange(expanded);
928
+ }, [expanded, onExpandedChange]);
929
+ useEffect(() => {
930
+ if (hiddenColumns) setHiddenColumns(hiddenColumns);
931
+ }, [hiddenColumns]);
932
+ useEffect(() => {
933
+ if (columnOrder) setColumnOrder(columnOrder);
934
+ }, [columnOrder]);
935
+ useEffect(() => {
936
+ setPageSize(withoutLimit ? totalData : rowLimit);
937
+ }, [rowLimit, withoutLimit, totalData]);
938
+ useEffect(() => {
939
+ gotoPage(controlledPageIndex);
940
+ }, [controlledPageIndex]);
941
+ useEffect(() => {
942
+ if (rawData && rawData.length > 0) doFetchData(0, isInfiniteScroll ? rowLimit : pageSize);
943
+ }, [sortBy]);
944
+ useMountedLayoutEffect(() => {
945
+ if (rawData && rawData.length > 0 && selectedRowIds && onSelectedChange) {
946
+ const selectIds = Object.keys(selectedRowIds);
947
+ if (stateSelectedRowIds.length > 0) {
948
+ if (selectIds.length < stateSelectedRowIds.length) {
949
+ const filteredSelectedRowIds = stateSelectedRowIds.filter(item => selectIds.includes(item));
950
+ setStateSelectedRowIds(filteredSelectedRowIds);
951
+ !filteredSelectedRowIds.length && (onSelectedChange === null || onSelectedChange === void 0 ? void 0 : onSelectedChange([]));
952
+ } else {
953
+ selectIds.forEach(item => {
954
+ if (!stateSelectedRowIds.includes(item)) {
955
+ setStateSelectedRowIds(prev => [...prev, item]);
956
+ }
957
+ });
958
+ }
959
+ } else {
960
+ setStateSelectedRowIds(selectIds.length ? selectIds : []);
961
+ }
962
+ }
963
+ }, [selectedRowIds]);
964
+ useMountedLayoutEffect(() => {
965
+ stateSelectedRowIds.length && (onSelectedChange === null || onSelectedChange === void 0 ? void 0 : onSelectedChange(stateSelectedRowIds));
966
+ }, [stateSelectedRowIds]);
967
+ useEffect(() => {
968
+ var _a;
969
+ if (isInfiniteScroll && rawData.length <= rowLimit) {
970
+ (_a = scrollerRef.current) === null || _a === void 0 ? void 0 : _a.scrollTo({
971
+ top: 0
972
+ });
973
+ }
974
+ }, [rawData]);
975
+ useEffect(() => {
976
+ if (selectedIds && rawData.length > 0) {
977
+ const selectedIdsKeys = Object.keys(selectedIds);
978
+ if (selectedIdsKeys === null || selectedIdsKeys === void 0 ? void 0 : selectedIdsKeys.length) {
979
+ selectedIdsKeys.map(key => {
980
+ toggleRowSelected(key, typeof selectedIds === 'object' ? selectedIds[key] : true);
981
+ return key;
982
+ });
983
+ } else if (!onSelectedChange) {
984
+ toggleAllRowsSelected(false);
985
+ }
986
+ }
987
+ }, [rawData, selectedIds]);
988
+ useEffect(() => {
989
+ if (scrollerRef.current && scrollerRef.current.parentElement) {
990
+ const parentElement = scrollerRef.current.parentElement;
991
+ const darkParentDiv = parentElement.closest('div[id*="dark"]');
992
+ setHasDarkParent(!!darkParentDiv);
993
+ }
994
+ const listenStorage = () => {
995
+ const item = JSON.parse(localStorage.getItem(`menu:${id}`));
996
+ onColumnChange === null || onColumnChange === void 0 ? void 0 : onColumnChange(item);
997
+ setFilteredHeader(item);
998
+ };
999
+ window.addEventListener('storage', listenStorage);
1000
+ return () => {
1001
+ window.removeEventListener('storage', listenStorage);
1002
+ };
1003
+ }, []);
1004
+ const tableRowData = useMemo(() => {
1005
+ const tableData = isExpandableTree ? rows : page;
1006
+ return virtualized ? isInfiniteScroll ? virtualRows : tableData : tableData;
1007
+ }, [virtualized, isExpandableTree, isInfiniteScroll, rows, page, virtualRows]);
1008
+ const onSortEnd = ({
1009
+ oldIndex,
1010
+ newIndex
1011
+ }) => {
1012
+ onDragEnd(arrayMove(records, oldIndex, newIndex));
1013
+ };
1014
+ const cssTableCell = {
1015
+ backgroundColor: '$bgWhite'
1016
+ };
1017
+ return jsxs(Box, {
1018
+ css: Object.assign({
1019
+ position: 'relative',
1020
+ width: `${css && css.width || '100%'}`,
1021
+ height: 'fit-content'
1022
+ }, outerContainerCss),
1023
+ children: [isLoading && jsx(Flex, {
1024
+ justify: "center",
1025
+ align: "center",
1026
+ css: {
1027
+ zIndex: '$docked',
1028
+ position: 'absolute',
1029
+ inset: 0,
1030
+ top: isMobile ? 40 : 64,
1031
+ width: '100%',
1032
+ height: `calc(100% - ${isInfiniteScroll ? 0 : '72px'})`,
1033
+ backgroundColor: '$bgWhite',
1034
+ opacity: 0.8
1035
+ },
1036
+ children: jsx(Text, {
1037
+ variant: "caption",
1038
+ children: "Loading .... "
1039
+ })
1040
+ }), !isMobile || id ? jsxs(Fragment, {
1041
+ children: [jsxs(Box, {
1042
+ css: {
1043
+ position: 'relative'
1044
+ },
1045
+ children: [jsx(ScrollSyncNode, {
1046
+ scroll: "horizontal-only",
1047
+ children: jsxs(TableContainer, {
1048
+ id: "table-container",
1049
+ css: css,
1050
+ ref: scrollerRef,
1051
+ decoration: Boolean(decoration),
1052
+ onScroll: e => {
1053
+ const scrollPosition = e.currentTarget.scrollLeft;
1054
+ if (scrollPosition < 3) {
1055
+ setTableScrollPosition('start');
1056
+ } else if (scrollPosition > scrollAreaWidth - 3) {
1057
+ setTableScrollPosition('end');
1058
+ } else {
1059
+ setTableScrollPosition('between');
1060
+ }
1061
+ },
1062
+ children: [jsx(ConditionalWrapper, {
1063
+ condition: !decoration,
1064
+ wrapper: child => renderInfiniteScrollWrapper(child),
1065
+ children: jsxs(TableContent, Object.assign({}, getTableProps(), {
1066
+ children: [jsx(TableHead, {
1067
+ hiddenHeader: hideHeader,
1068
+ css: headerCss,
1069
+ isInfiniteScroll: isInfiniteScroll,
1070
+ children: headerGroups.map(headerGroup => {
1071
+ let visibleHeaders = headerGroup.headers.filter(column => !column.isSubRow);
1072
+ if (filteredHeader.length > 0 || filterHeader.length > 0) {
1073
+ visibleHeaders = visibleHeaders.filter(item => filteredHeader.includes(item.id) || filterHeader.includes(item.id));
1074
+ }
1075
+ return jsx(TableHeadRow, Object.assign({}, headerGroup.getHeaderGroupProps(), {
1076
+ children: visibleHeaders.map((column, index) => {
1077
+ const headerRender = column.render('Header');
1078
+ return jsx(TableHeadCell, Object.assign({}, column.getHeaderProps(props => [props, !column.unsortable ? column.getSortByToggleProps({
1079
+ title: t('sortColumnTitle', 'Urutkan') || 'Urutkan'
1080
+ }) : {
1081
+ onClick: column.onToggle
1082
+ }, {
1083
+ style: {
1084
+ width: column.colWidth,
1085
+ maxWidth: column.colMaxWidth,
1086
+ minWidth: column.colMinWidth
1087
+ }
1088
+ }]), {
1089
+ css: Object.assign(Object.assign(Object.assign(Object.assign({}, stickyPositionStyling(column)), stickyShadowStyling(column, tableScrollPosition, scrollAreaWidth)), column.headerCss), {
1090
+ position: 'sticky',
1091
+ zIndex: column.sticky ? '5 !important' : 3,
1092
+ top: 0
1093
+ }),
1094
+ children: typeof headerRender === 'string' ? jsx(TableHeaderCellContainer, {
1095
+ isSortedDesc: column.isSortedDesc,
1096
+ unsortable: id ? true : column.unsortable,
1097
+ isToggleable: !!column.onToggle,
1098
+ isToggled: column.isToggled,
1099
+ darkTheme: hasDarkParent,
1100
+ css: {
1101
+ width: column.colWidth,
1102
+ maxWidth: column.colMaxWidth,
1103
+ minWidth: column.colMinWidth
1104
+ },
1105
+ children: jsx(TableHeadCellContent, {
1106
+ heading: "headerTable",
1107
+ children: headerRender.toUpperCase()
1108
+ })
1109
+ }) : headerRender
1110
+ }));
1111
+ })
1112
+ }));
1113
+ })
1114
+ }), additionalHeader, draggable ? jsx(DraggableContainer, Object.assign({}, getTableBodyProps(), {
1115
+ onSortEnd: onSortEnd,
1116
+ useDragHandle: true,
1117
+ children: tableRowData.map((dataRow, i) => {
1118
+ var _a, _b, _c;
1119
+ const row = virtualized && isInfiniteScroll ? page === null || page === void 0 ? void 0 : page[dataRow === null || dataRow === void 0 ? void 0 : dataRow.index] : dataRow;
1120
+ prepareRow(row);
1121
+ let isContextMenu = Boolean((_a = row.cells.filter(cell => {
1122
+ var _a, _b;
1123
+ return (_b = (_a = cell.column) === null || _a === void 0 ? void 0 : _a.options) === null || _b === void 0 ? void 0 : _b.length;
1124
+ })) === null || _a === void 0 ? void 0 : _a.length);
1125
+ let customStyle = {};
1126
+ let hideRowMenuColumn = false;
1127
+ if (customRowsStyle && customRowsStyle(row.original).length) {
1128
+ for (let i = 0; i < customRowsStyle(row.original).length; i++) {
1129
+ if (customRowsStyle(row.original)[i].predicate) {
1130
+ const customRowCss = (_b = customRowsStyle(row.original)[i]) === null || _b === void 0 ? void 0 : _b.css;
1131
+ customStyle = customRowCss || {};
1132
+ if ((_c = customRowsStyle(row.original)[i]) === null || _c === void 0 ? void 0 : _c.hideRowMenuColumn) {
1133
+ isContextMenu = false;
1134
+ hideRowMenuColumn = true;
1135
+ }
1136
+ }
1137
+ }
1138
+ }
1139
+ return jsx(React.Fragment, {
1140
+ children: jsx(DraggableRow, Object.assign({
1141
+ css: customStyle
1142
+ }, row && (row === null || row === void 0 ? void 0 : row.getRowProps) ? row === null || row === void 0 ? void 0 : row.getRowProps() : {}, {
1143
+ index: i,
1144
+ style: {
1145
+ zIndex: 999
1146
+ },
1147
+ children: row.cells.filter(cell => filteredHeader.length > 0 || filterHeader.length > 0 ? filteredHeader.includes(cell.column.id) || filterHeader.includes(cell.column.id) : cell).filter(cell => !cell.column.isSubRow).map((cell, index, _row) => {
1148
+ var _a, _b, _c;
1149
+ let visibleHeaders = (_a = headerGroups === null || headerGroups === void 0 ? void 0 : headerGroups[0]) === null || _a === void 0 ? void 0 : _a.headers.filter(column => !column.isSubRow);
1150
+ if (filterHeader.length > 0) {
1151
+ visibleHeaders = visibleHeaders.filter(item => filterHeader.includes(item.id));
1152
+ }
1153
+ const collId = (_b = cell === null || cell === void 0 ? void 0 : cell.column) === null || _b === void 0 ? void 0 : _b.id;
1154
+ const exceptionId = (_c = [].concat(additionalExceptionIds)) === null || _c === void 0 ? void 0 : _c.includes(collId);
1155
+ return jsx(TableCell, Object.assign({}, cell.getCellProps(addOnCellStyle(cell.column.id)), {
1156
+ css: Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, cssTableCell), {
1157
+ padding: !isContextMenu || exceptionId ? collId === 'expander' || collId === 'multiple-expander' ? '20px 4px' : '20px 8px' : '',
1158
+ verticalAlign: cell.column.accessor ? cellAlign : 'center',
1159
+ cursor: onRowClick ? 'pointer' : 'unset'
1160
+ }), stickyPositionStyling(cell.column)), stickyShadowStyling(cell.column, tableScrollPosition, scrollAreaWidth)), id && {
1161
+ paddingRight: index + 1 === _row.length ? 30 : null
1162
+ }),
1163
+ onClick: () => {
1164
+ if (!exceptionId) {
1165
+ handleRowClick(row, i);
1166
+ }
1167
+ },
1168
+ children: jsx(ConditionalWrapper, {
1169
+ condition: isContextMenu && !exceptionId,
1170
+ wrapper: children => jsx(ContextMenuTrigger, {
1171
+ id: "context-menu-table",
1172
+ triggerSide: "left",
1173
+ children: jsx(Box, {
1174
+ css: {
1175
+ cursor: 'pointer',
1176
+ padding: cell.column.accessor ? '20px 8px' : '20px 20px'
1177
+ },
1178
+ onClick: () => handleRowClick(row, i),
1179
+ children: children
1180
+ })
1181
+ }),
1182
+ children: jsx(Box, {
1183
+ css: {
1184
+ visibility: hideRowMenuColumn && collId === 'menu' ? 'hidden' : 'visible'
1185
+ },
1186
+ children: cell.render('Cell')
1187
+ })
1188
+ })
1189
+ }));
1190
+ })
1191
+ }))
1192
+ }, row.id);
1193
+ })
1194
+ })) : jsxs(TableBody, Object.assign({}, getTableBodyProps(), {
1195
+ children: [isInfiniteScroll && paddingTop > 0 && jsx("tr", {
1196
+ children: jsx("td", {
1197
+ style: {
1198
+ height: `${paddingTop}px`
1199
+ }
1200
+ })
1201
+ }), (_c = decoration === null || decoration === void 0 ? void 0 : decoration.headerRender) === null || _c === void 0 ? void 0 : _c.call(decoration), decoration && page.map((row, i) => {
1202
+ var _a;
1203
+ prepareRow(row);
1204
+ const isContextMenu = (_a = row.cells.filter(cell => {
1205
+ var _a, _b;
1206
+ return (_b = (_a = cell.column) === null || _a === void 0 ? void 0 : _a.options) === null || _b === void 0 ? void 0 : _b.length;
1207
+ })) === null || _a === void 0 ? void 0 : _a.length;
1208
+ return i < 1 && renderRowDecorationReference(row, isContextMenu, i);
1209
+ }), jsx(ConditionalWrapper, {
1210
+ condition: Boolean(decoration),
1211
+ wrapper: child => tableRowData && tableRowData.length > 0 ? jsx(TableRow, {
1212
+ css: {
1213
+ '&:hover': {
1214
+ backgroundColor: 'unset'
1215
+ }
1216
+ },
1217
+ children: jsx(TableCell, {
1218
+ colSpan: (decoration === null || decoration === void 0 ? void 0 : decoration.colSpan) || 12,
1219
+ children: jsx(Box, {
1220
+ css: Object.assign({
1221
+ height: 300,
1222
+ overflow: 'auto'
1223
+ }, decoration === null || decoration === void 0 ? void 0 : decoration.css),
1224
+ children: renderInfiniteScrollWrapper(renderTableDecorationChild(child))
1225
+ })
1226
+ })
1227
+ }) : null,
1228
+ children: tableRowData.map((dataRow, i) => {
1229
+ var _a, _b, _c, _d;
1230
+ const row = virtualized && isInfiniteScroll ? page === null || page === void 0 ? void 0 : page[dataRow === null || dataRow === void 0 ? void 0 : dataRow.index] : dataRow;
1231
+ prepareRow(row);
1232
+ const subRowCells = row.cells.filter(cell => cell.column.isSubRow);
1233
+ const leftAddOnCells = (_a = row.cells.filter(cell => ['expander', 'multiple-expander', 'selection'].includes(cell.column.id))) !== null && _a !== void 0 ? _a : [];
1234
+ const notNullHeaderColumns = visibleColumns.filter(column => typeof column.Header !== 'function' && column.Header !== null && !column.isSubRow);
1235
+ let isContextMenu = Boolean((_b = row.cells.filter(cell => {
1236
+ var _a, _b;
1237
+ return (_b = (_a = cell.column) === null || _a === void 0 ? void 0 : _a.options) === null || _b === void 0 ? void 0 : _b.length;
1238
+ })) === null || _b === void 0 ? void 0 : _b.length);
1239
+ let customStyle = {};
1240
+ let hideRowMenuColumn = false;
1241
+ if (customRowsStyle && customRowsStyle(row.original).length) {
1242
+ for (let i = 0; i < customRowsStyle(row.original).length; i++) {
1243
+ if (customRowsStyle(row.original)[i].predicate) {
1244
+ const customRowCss = (_c = customRowsStyle(row.original)[i]) === null || _c === void 0 ? void 0 : _c.css;
1245
+ customStyle = customRowCss || {};
1246
+ if ((_d = customRowsStyle(row.original)[i]) === null || _d === void 0 ? void 0 : _d.hideRowMenuColumn) {
1247
+ isContextMenu = false;
1248
+ hideRowMenuColumn = true;
1249
+ }
1250
+ }
1251
+ }
1252
+ }
1253
+ return jsxs(React.Fragment, {
1254
+ children: [((rowGroup === null || rowGroup === void 0 ? void 0 : rowGroup.showGroupingWhenSorted) || sortBy.length <= 0) && row.original['isTopChild'] && ((rowGroup === null || rowGroup === void 0 ? void 0 : rowGroup.headerRender) ? rowGroup === null || rowGroup === void 0 ? void 0 : rowGroup.headerRender(row, {
1255
+ getCellProps: cellProps => ({
1256
+ css: Object.assign(Object.assign(Object.assign({}, stickyPositionStyling({
1257
+ sticky: cellProps === null || cellProps === void 0 ? void 0 : cellProps.sticky,
1258
+ stickyPosition: cellProps === null || cellProps === void 0 ? void 0 : cellProps.stickyPosition
1259
+ })), stickyShadowStyling({
1260
+ sticky: cellProps === null || cellProps === void 0 ? void 0 : cellProps.sticky,
1261
+ shadow: cellProps === null || cellProps === void 0 ? void 0 : cellProps.shadow
1262
+ }, tableScrollPosition, scrollAreaWidth)), cellProps === null || cellProps === void 0 ? void 0 : cellProps.css)
1263
+ })
1264
+ }) : jsx(Text, {
1265
+ variant: "contentButton",
1266
+ children: row.cells[0].render('Cell')
1267
+ })), jsx(TableRow, Object.assign({
1268
+ css: customStyle
1269
+ }, row && (row === null || row === void 0 ? void 0 : row.getRowProps) ? row === null || row === void 0 ? void 0 : row.getRowProps() : {}, {
1270
+ children: row.cells.filter(cell => filteredHeader.length > 0 || filterHeader.length > 0 ? filteredHeader.includes(cell.column.id) || filterHeader.includes(cell.column.id) : cell).filter(cell => !cell.column.isSubRow).map((cell, index, _row) => {
1271
+ var _a, _b, _c;
1272
+ let visibleHeaders = (_a = headerGroups === null || headerGroups === void 0 ? void 0 : headerGroups[0]) === null || _a === void 0 ? void 0 : _a.headers.filter(column => !column.isSubRow);
1273
+ if (filterHeader.length > 0) {
1274
+ visibleHeaders = visibleHeaders.filter(item => filterHeader.includes(item.id));
1275
+ }
1276
+ const collId = (_b = cell === null || cell === void 0 ? void 0 : cell.column) === null || _b === void 0 ? void 0 : _b.id;
1277
+ const exceptionId = (_c = ['expander', 'multiple-expander', 'selection', 'menu', 'eye'].concat(additionalExceptionIds)) === null || _c === void 0 ? void 0 : _c.includes(collId);
1278
+ return jsx(TableCell, Object.assign({}, cell.getCellProps(addOnCellStyle(cell.column.id)), {
1279
+ css: Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, cssTableCell), {
1280
+ padding: !isContextMenu || exceptionId ? collId === 'expander' || collId === 'multiple-expander' ? '20px 4px' : '20px 8px' : '',
1281
+ verticalAlign: cell.column.accessor ? cellAlign : 'center',
1282
+ cursor: onRowClick ? 'pointer' : 'unset'
1283
+ }), stickyPositionStyling(cell.column)), stickyShadowStyling(cell.column, tableScrollPosition, scrollAreaWidth)), id && {
1284
+ paddingRight: index + 1 === _row.length ? 30 : null
1285
+ }),
1286
+ onClick: () => {
1287
+ if (!exceptionId) {
1288
+ handleRowClick(row, i);
1289
+ }
1290
+ },
1291
+ children: jsx(ConditionalWrapper, {
1292
+ condition: isContextMenu && !exceptionId,
1293
+ wrapper: children => jsx(ContextMenuTrigger, {
1294
+ id: "context-menu-table",
1295
+ triggerSide: "left",
1296
+ children: jsx(Box, {
1297
+ css: {
1298
+ cursor: 'pointer',
1299
+ padding: cell.column.accessor ? '20px 8px' : '20px 20px'
1300
+ },
1301
+ onClick: () => handleRowClick(row, i),
1302
+ children: children
1303
+ })
1304
+ }),
1305
+ children: jsx(Box, {
1306
+ css: {
1307
+ visibility: hideRowMenuColumn && collId === 'menu' ? 'hidden' : 'visible'
1308
+ },
1309
+ children: cell.render('Cell')
1310
+ })
1311
+ })
1312
+ }));
1313
+ })
1314
+ })), row.isExpanded ? subRowCells.map((cell, index) => !cell.column.isCustomSubRow ? jsxs(TableRow, {
1315
+ subRow: true,
1316
+ children: [leftAddOnCells.map((_, index) => jsx(Cell, {
1317
+ css: {
1318
+ backgroundColor: '$bgGray'
1319
+ }
1320
+ }, index)), jsxs(React.Fragment, {
1321
+ children: [jsx(TableCell, {
1322
+ subCell: true,
1323
+ colSpan: notNullHeaderColumns.length > 5 ? 2 : 1,
1324
+ headerSubCell: true,
1325
+ css: Object.assign(Object.assign({
1326
+ paddingTop: `${index === 0 ? '24px' : '13px'} !important`,
1327
+ paddingBottom: `${index === subRowCells.length - 1 ? '24px' : '13px'} !important`,
1328
+ backgroundColor: '$bgGray'
1329
+ }, stickyPositionStyling(cell.column)), cell.column.headerCss),
1330
+ children: jsx(Paragraph, {
1331
+ paragraph: "shortContentBold",
1332
+ children: cell.column.Header
1333
+ })
1334
+ }), jsx(TableCell, {
1335
+ subCell: true,
1336
+ colSpan: visibleColumns.length - subRowCells.length,
1337
+ css: {
1338
+ paddingTop: `${index === 0 ? '24px' : '13px'} !important`,
1339
+ paddingBottom: `${index === subRowCells.length - 1 ? '24px' : '13px'} !important`
1340
+ },
1341
+ children: jsx(Paragraph, {
1342
+ paragraph: "shortContentRegular",
1343
+ children: cell.render('Cell')
1344
+ })
1345
+ })]
1346
+ }, cell.column.id)]
1347
+ }, cell.column.id) : cell.render('Cell')) : null, ((rowGroup === null || rowGroup === void 0 ? void 0 : rowGroup.showGroupingWhenSorted) || sortBy.length <= 0) && row.original['isBottomChild'] && !!(rowGroup === null || rowGroup === void 0 ? void 0 : rowGroup.footerRender) && (rowGroup === null || rowGroup === void 0 ? void 0 : rowGroup.footerRender(row, {
1348
+ getCellProps: cellProps => ({
1349
+ css: Object.assign(Object.assign(Object.assign({}, stickyPositionStyling({
1350
+ sticky: cellProps === null || cellProps === void 0 ? void 0 : cellProps.sticky,
1351
+ stickyPosition: cellProps === null || cellProps === void 0 ? void 0 : cellProps.stickyPosition
1352
+ })), stickyShadowStyling({
1353
+ sticky: cellProps === null || cellProps === void 0 ? void 0 : cellProps.sticky,
1354
+ shadow: cellProps === null || cellProps === void 0 ? void 0 : cellProps.shadow
1355
+ }, tableScrollPosition, scrollAreaWidth)), cellProps === null || cellProps === void 0 ? void 0 : cellProps.css)
1356
+ })
1357
+ }))]
1358
+ }, row.id);
1359
+ })
1360
+ }), (_d = decoration === null || decoration === void 0 ? void 0 : decoration.footerRender) === null || _d === void 0 ? void 0 : _d.call(decoration), isInfiniteScroll && paddingBottom > 0 && jsx("tr", {
1361
+ children: jsx("td", {
1362
+ style: {
1363
+ height: `${paddingBottom}px`
1364
+ }
1365
+ })
1366
+ })]
1367
+ }))]
1368
+ }))
1369
+ }), renderContextMenu()]
1370
+ })
1371
+ }), id && jsxs(Fragment, {
1372
+ children: [!hideHeader && jsx(HeaderMenuOption, {
1373
+ rowData: tableRowData,
1374
+ open: openMenu,
1375
+ id: id,
1376
+ onOpenChange: setOpen,
1377
+ onChange: handleFilterHeaderChange,
1378
+ headerGroups: headerGroups,
1379
+ filterHeader: filterHeader,
1380
+ children: jsx(IconButton, {
1381
+ css: {
1382
+ zIndex: '$docked',
1383
+ position: 'absolute',
1384
+ top: '20px',
1385
+ right: -10,
1386
+ '&:hover': {
1387
+ backgroundColor: '$btnDisable !important'
1388
+ },
1389
+ '&:active': {
1390
+ backgroundColor: '$iconDisable !important'
1391
+ },
1392
+ backgroundColor: '$bgBorder !important',
1393
+ padding: 0,
1394
+ boxShadow: '0px 22px 43px 0px rgba(0, 0, 0, 0.08), 0px 9px 24px 0px rgba(0, 0, 0, 0.09), 0px 3px 9px 0px rgba(0, 0, 0, 0.13)'
1395
+ },
1396
+ onClick: () => setOpen(!openMenu),
1397
+ buttonType: "secondary",
1398
+ children: jsx(PlusPrimitive, {
1399
+ size: "20"
1400
+ })
1401
+ })
1402
+ }), jsx(Box, {
1403
+ css: {
1404
+ position: 'absolute',
1405
+ top: 0,
1406
+ right: -10,
1407
+ width: 10,
1408
+ height: '100%',
1409
+ boxShadow: tableScrollPosition === 'end' ? 'none' : '-5px 0px 5px -3px #00000026',
1410
+ backgroundColor: '$bgWhite'
1411
+ }
1412
+ })]
1413
+ })]
1414
+ }), !isInfiniteScroll && jsx(Box, {
1415
+ css: {
1416
+ width: '100%'
1417
+ },
1418
+ children: totalData > 0 || isLoading ? renderFooter() : jsxs(Flex, {
1419
+ align: "center",
1420
+ justify: "center",
1421
+ direction: "column",
1422
+ gap: 3,
1423
+ css: {
1424
+ margin: '56px auto 100px',
1425
+ wordBreak: 'break-word'
1426
+ },
1427
+ children: [customEmptyDataProps.doodleImage, customEmptyDataProps.title, customEmptyDataProps.description]
1428
+ })
1429
+ })]
1430
+ }) : jsx(MobileTable, {
1431
+ virtualized: virtualized,
1432
+ ref: scrollerRef,
1433
+ instance: instance,
1434
+ totalData: totalData,
1435
+ customEmptyDataProps: customEmptyDataProps,
1436
+ isInfiniteScroll: isInfiniteScroll,
1437
+ footer: renderFooter(),
1438
+ infiniteScrollWrapper: renderInfiniteScrollWrapper,
1439
+ isLoading: isLoading,
1440
+ rowGroup: rowGroup,
1441
+ hiddenColumns: hiddenColumns,
1442
+ css: css,
1443
+ customRowsStyle: customRowsStyle,
1444
+ cellAlign: cellAlign,
1445
+ renderContextMenu: renderContextMenu,
1446
+ handleRowClick: handleRowClick,
1447
+ additionalExceptionIds: additionalExceptionIds,
1448
+ hideHeader: hideHeader,
1449
+ decoration: decoration,
1450
+ rowVirtualizer: rowVirtualizer
1451
+ })]
1452
+ });
1453
+ }
1454
+ //Dummy component for mdx docs purpose only
1455
+ const TableColumn = _a => {
1456
+ var {
1457
+ id = '{accessor}',
1458
+ Header = () => null,
1459
+ Cell = ({
1460
+ value
1461
+ }) => String(value),
1462
+ isMobileHeader = false,
1463
+ isSubRow = false,
1464
+ isCustomSubRow = false,
1465
+ unsortable = false,
1466
+ isAction = false
1467
+ } = _a;
1468
+ __rest(_a, ["id", "Header", "Cell", "isMobileHeader", "isSubRow", "isCustomSubRow", "unsortable", "isAction"]);
1469
+ return jsx("div", {});
1470
+ };
1471
+
1472
+ export { Cell, Table, TableBody, TableCell, TableColumn, TableContent, TableFoot, TableFootCell, TableFootRow, TableHead, TableHeadCellContent, TableHeaderCellContainer, TableRow, addOnCellStyle, defaultEmptyDataProps, defaultFetchDataParams };