@feathery/react 2.14.0 → 2.15.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 (171) hide show
  1. package/cjs/Form/grid/Element/index.d.ts.map +1 -1
  2. package/cjs/Form/grid/index.d.ts.map +1 -1
  3. package/cjs/Form/index.d.ts.map +1 -1
  4. package/cjs/Form/logic.d.ts.map +1 -1
  5. package/cjs/elements/basic/TableElement/Actions.d.ts +10 -0
  6. package/cjs/elements/basic/TableElement/Actions.d.ts.map +1 -0
  7. package/cjs/elements/basic/TableElement/EmptyState.d.ts +6 -0
  8. package/cjs/elements/basic/TableElement/EmptyState.d.ts.map +1 -0
  9. package/cjs/elements/basic/TableElement/Pagination.d.ts +10 -0
  10. package/cjs/elements/basic/TableElement/Pagination.d.ts.map +1 -0
  11. package/cjs/elements/basic/TableElement/Search.d.ts +7 -0
  12. package/cjs/elements/basic/TableElement/Search.d.ts.map +1 -0
  13. package/cjs/elements/basic/TableElement/Sort.d.ts +12 -0
  14. package/cjs/elements/basic/TableElement/Sort.d.ts.map +1 -0
  15. package/cjs/elements/basic/TableElement/exampleData.d.ts +3 -0
  16. package/cjs/elements/basic/TableElement/exampleData.d.ts.map +1 -0
  17. package/cjs/elements/basic/TableElement/index.d.ts +3 -0
  18. package/cjs/elements/basic/TableElement/index.d.ts.map +1 -0
  19. package/cjs/elements/basic/TableElement/styles.d.ts +391 -0
  20. package/cjs/elements/basic/TableElement/styles.d.ts.map +1 -0
  21. package/cjs/elements/basic/TableElement/types.d.ts +10 -0
  22. package/cjs/elements/basic/TableElement/types.d.ts.map +1 -0
  23. package/cjs/elements/basic/TableElement/useTableData.d.ts +37 -0
  24. package/cjs/elements/basic/TableElement/useTableData.d.ts.map +1 -0
  25. package/cjs/elements/basic/TableElement/utils.d.ts +11 -0
  26. package/cjs/elements/basic/TableElement/utils.d.ts.map +1 -0
  27. package/cjs/elements/components/skeletons/ElementSkeleton.d.ts +8 -0
  28. package/cjs/elements/components/skeletons/ElementSkeleton.d.ts.map +1 -0
  29. package/cjs/elements/fields/AddressLine1Field/index.d.ts.map +1 -1
  30. package/cjs/elements/index.d.ts +1 -0
  31. package/cjs/elements/index.d.ts.map +1 -1
  32. package/cjs/{fthry_FormControl.BwXT0ep8.js → fthry_FormControl.DhxdiYw6.js} +1 -1
  33. package/cjs/{fthry_InlineTooltip.BdhCa_rK.js → fthry_InlineTooltip.BgAXRUIt.js} +2 -2
  34. package/cjs/{fthry_Overlay.CkaxO8d5.js → fthry_Overlay.D7IM1ywp.js} +1 -1
  35. package/cjs/{fthry_PaymentMethodField.mg1fdRD0.js → fthry_PaymentMethodField.NEoloWMI.js} +4 -4
  36. package/cjs/{fthry_Placeholder.Jcsn0I77.js → fthry_Placeholder.D5C0aH2S.js} +1 -1
  37. package/cjs/{fthry_ShowEyeIcon.B1bZYLk8.js → fthry_ShowEyeIcon.CmLMyaN5.js} +1 -1
  38. package/cjs/{fthry_index.CNP-DZpU.js → fthry_index.BFpcCw2o.js} +1 -1
  39. package/cjs/{fthry_index.CIRAsV1y.js → fthry_index.BJYH_2P6.js} +1 -1
  40. package/cjs/{fthry_index.CdljdZZa.js → fthry_index.BK_jaGHn.js} +5 -5
  41. package/cjs/{fthry_index.DamIMdR9.js → fthry_index.Bb1R5GZK.js} +2 -2
  42. package/cjs/{fthry_index.Wk8VztlG.js → fthry_index.Bd1HfYvE.js} +5 -5
  43. package/cjs/{fthry_index.CrMPecva.js → fthry_index.BgeTdwT5.js} +2 -2
  44. package/cjs/{fthry_index.BlqRmYU3.js → fthry_index.Bq3nU0FH.js} +6 -6
  45. package/cjs/{fthry_index.BDYAeN41.js → fthry_index.BqS0kCfh.js} +1 -1
  46. package/cjs/{fthry_index.CH-jUzEB.js → fthry_index.By8RWuUY.js} +6 -6
  47. package/cjs/{fthry_index.CM61c38_.js → fthry_index.CbfDILWu.js} +4 -4
  48. package/cjs/{fthry_index.BWlL6Yer.js → fthry_index.CgMWWz7f.js} +1 -1
  49. package/cjs/{fthry_index.CFas_RaG.js → fthry_index.Ci8dMyBp.js} +1 -1
  50. package/cjs/fthry_index.CkmA933O.js +669 -0
  51. package/cjs/{fthry_index.BAjR2Rnl.js → fthry_index.CrFjXWLg.js} +3 -3
  52. package/cjs/{fthry_index.YHxFZskW.js → fthry_index.CzzIM_Es.js} +1895 -62
  53. package/cjs/{fthry_index.Cg6LX1gC.js → fthry_index.D4rjZ-iU.js} +4 -4
  54. package/cjs/{fthry_index.Brf3d6gi.js → fthry_index.DDjTLR_C.js} +6 -6
  55. package/cjs/{fthry_index.DAUqZ_Ax.js → fthry_index.DLnigFf3.js} +4 -4
  56. package/cjs/{fthry_index.6mEHhzfW.js → fthry_index.DXm31Dvn.js} +4 -4
  57. package/cjs/{fthry_index.LJEYPWI3.js → fthry_index.DzpGyyn4.js} +5 -5
  58. package/cjs/{fthry_index.Dl8vbJjd.js → fthry_index.E_vLB-7s.js} +8 -8
  59. package/cjs/{fthry_index.stdBLQZf.js → fthry_index.GeYRayLh.js} +1 -1
  60. package/cjs/{fthry_index.C1fh-rBQ.js → fthry_index.JRP5lBfp.js} +7 -6
  61. package/cjs/{fthry_index.D347YZZf.js → fthry_index.WDI9ExUl.js} +1 -1
  62. package/cjs/{fthry_input.Co8r9GsS.js → fthry_input.kxr0lkUP.js} +1 -1
  63. package/cjs/{fthry_script.Bq4U9W-W.js → fthry_script.CpqGoZRW.js} +1 -1
  64. package/cjs/{fthry_styles.v2wlusMk.js → fthry_styles.UURZE2St.js} +1 -1
  65. package/cjs/{fthry_useElementSize.H_jyVKqM.js → fthry_useElementSize.B7mqB2ri.js} +1 -1
  66. package/cjs/{fthry_useSalesforceSync.PzKJwKNh.js → fthry_useSalesforceSync.DFHAEpBn.js} +1 -1
  67. package/cjs/{fthry_webfontloader.BEk-u0hO.js → fthry_webfontloader.COsYlNwD.js} +1 -1
  68. package/cjs/index.d.ts +1 -0
  69. package/cjs/index.d.ts.map +1 -1
  70. package/cjs/index.js +1 -1
  71. package/cjs/types/Form.d.ts +4 -1
  72. package/cjs/types/Form.d.ts.map +1 -1
  73. package/cjs/utils/eventQueue.d.ts +26 -0
  74. package/cjs/utils/eventQueue.d.ts.map +1 -0
  75. package/cjs/utils/featheryClient/index.d.ts +6 -0
  76. package/cjs/utils/featheryClient/index.d.ts.map +1 -1
  77. package/cjs/utils/formHelperFunctions.d.ts +1 -1
  78. package/cjs/utils/formHelperFunctions.d.ts.map +1 -1
  79. package/cjs/utils/hideAndRepeats.d.ts.map +1 -1
  80. package/dist/Form/grid/Element/index.d.ts.map +1 -1
  81. package/dist/Form/grid/index.d.ts.map +1 -1
  82. package/dist/Form/index.d.ts.map +1 -1
  83. package/dist/Form/logic.d.ts.map +1 -1
  84. package/dist/elements/basic/TableElement/Actions.d.ts +10 -0
  85. package/dist/elements/basic/TableElement/Actions.d.ts.map +1 -0
  86. package/dist/elements/basic/TableElement/EmptyState.d.ts +6 -0
  87. package/dist/elements/basic/TableElement/EmptyState.d.ts.map +1 -0
  88. package/dist/elements/basic/TableElement/Pagination.d.ts +10 -0
  89. package/dist/elements/basic/TableElement/Pagination.d.ts.map +1 -0
  90. package/dist/elements/basic/TableElement/Search.d.ts +7 -0
  91. package/dist/elements/basic/TableElement/Search.d.ts.map +1 -0
  92. package/dist/elements/basic/TableElement/Sort.d.ts +12 -0
  93. package/dist/elements/basic/TableElement/Sort.d.ts.map +1 -0
  94. package/dist/elements/basic/TableElement/exampleData.d.ts +3 -0
  95. package/dist/elements/basic/TableElement/exampleData.d.ts.map +1 -0
  96. package/dist/elements/basic/TableElement/index.d.ts +3 -0
  97. package/dist/elements/basic/TableElement/index.d.ts.map +1 -0
  98. package/dist/elements/basic/TableElement/styles.d.ts +391 -0
  99. package/dist/elements/basic/TableElement/styles.d.ts.map +1 -0
  100. package/dist/elements/basic/TableElement/types.d.ts +10 -0
  101. package/dist/elements/basic/TableElement/types.d.ts.map +1 -0
  102. package/dist/elements/basic/TableElement/useTableData.d.ts +37 -0
  103. package/dist/elements/basic/TableElement/useTableData.d.ts.map +1 -0
  104. package/dist/elements/basic/TableElement/utils.d.ts +11 -0
  105. package/dist/elements/basic/TableElement/utils.d.ts.map +1 -0
  106. package/dist/elements/components/skeletons/ElementSkeleton.d.ts +8 -0
  107. package/dist/elements/components/skeletons/ElementSkeleton.d.ts.map +1 -0
  108. package/dist/elements/fields/AddressLine1Field/index.d.ts.map +1 -1
  109. package/dist/elements/index.d.ts +1 -0
  110. package/dist/elements/index.d.ts.map +1 -1
  111. package/dist/{fthry_FormControl.CrSvLSA7.js → fthry_FormControl.CikgGb3C.js} +1 -1
  112. package/dist/{fthry_InlineTooltip.xj-t-582.js → fthry_InlineTooltip.BpfxcSEn.js} +2 -2
  113. package/dist/{fthry_Overlay.CJFSLbLE.js → fthry_Overlay.CJVfag7c.js} +1 -1
  114. package/dist/{fthry_PaymentMethodField.PRJIHswh.js → fthry_PaymentMethodField.BpA_xhqt.js} +4 -4
  115. package/dist/{fthry_Placeholder.7M07CwTS.js → fthry_Placeholder.DwCFN6a9.js} +1 -1
  116. package/dist/{fthry_ShowEyeIcon.n639xEWA.js → fthry_ShowEyeIcon.D6nQhesH.js} +1 -1
  117. package/dist/{fthry_index.DQhKI62v.js → fthry_index.B-oHlMGi.js} +2 -2
  118. package/dist/{fthry_index.DsHJmYgu.js → fthry_index.B7VWXvgC.js} +4 -4
  119. package/dist/{fthry_index.DQuVxHkp.js → fthry_index.B84L3MVC.js} +1 -1
  120. package/dist/fthry_index.BAhh3Pz6.js +667 -0
  121. package/dist/{fthry_index.DtttVU-B.js → fthry_index.BEZmvsoo.js} +7 -6
  122. package/dist/{fthry_index.D6sWBKuA.js → fthry_index.BSEfDQAc.js} +2 -2
  123. package/dist/{fthry_index.BdbDXIuj.js → fthry_index.BsEfTy-x.js} +8 -8
  124. package/dist/{fthry_index.sXNItbKY.js → fthry_index.BsNCOSBE.js} +5 -5
  125. package/dist/{fthry_index.CzHuSmWc.js → fthry_index.Bz07r-AM.js} +1 -1
  126. package/dist/{fthry_index.DgIPpVNk.js → fthry_index.BzrcCLzO.js} +4 -4
  127. package/dist/{fthry_index.Df-7wyL2.js → fthry_index.CJKGRCG-.js} +4 -4
  128. package/dist/{fthry_index.DMTSFPNS.js → fthry_index.D9AKkBzu.js} +1 -1
  129. package/dist/{fthry_index.DEU7NBKU.js → fthry_index.D9VjMJ_U.js} +1 -1
  130. package/dist/{fthry_index.Cfn3D1XZ.js → fthry_index.DH2fsNWG.js} +3 -3
  131. package/dist/{fthry_index.CxH24rcl.js → fthry_index.Dgmpm9wy.js} +6 -6
  132. package/dist/{fthry_index.g8xB96Yo.js → fthry_index.DhU16s57.js} +5 -5
  133. package/dist/{fthry_index.Dd5mpmpk.js → fthry_index.DoP7RwIP.js} +1 -1
  134. package/dist/{fthry_index.BpsK3TYO.js → fthry_index.Dy4nSWZa.js} +1 -1
  135. package/dist/{fthry_index.Be8xdrui.js → fthry_index.Fs86Fy9Y.js} +5 -5
  136. package/dist/{fthry_index.RwhYSoEm.js → fthry_index.NOuMR_hq.js} +6 -6
  137. package/dist/{fthry_index.CwsphGMI.js → fthry_index.OHN-Iv2R.js} +1 -1
  138. package/dist/{fthry_index.BE1aEx2n.js → fthry_index.m7CZv4YY.js} +4 -4
  139. package/dist/{fthry_index.BKbx2qxD.js → fthry_index.t4v0qqgv.js} +6 -6
  140. package/dist/{fthry_index.CdIRvNp8.js → fthry_index.y4j9reIZ.js} +1896 -63
  141. package/dist/{fthry_input.CD5doOgD.js → fthry_input.Cb2u4VEf.js} +1 -1
  142. package/dist/{fthry_script.B1ROwso4.js → fthry_script.C5O1ZNQQ.js} +1 -1
  143. package/dist/{fthry_styles.C-VyrwW3.js → fthry_styles.DGB23xLr.js} +1 -1
  144. package/dist/{fthry_useElementSize.1FdURPgQ.js → fthry_useElementSize.CBdpS9aW.js} +1 -1
  145. package/dist/{fthry_useSalesforceSync.wEr6a7_E.js → fthry_useSalesforceSync.Cae_lMG1.js} +1 -1
  146. package/dist/{fthry_webfontloader.ChgT0Ifr.js → fthry_webfontloader.DAANkO2-.js} +1 -1
  147. package/dist/index.d.ts +1 -0
  148. package/dist/index.d.ts.map +1 -1
  149. package/dist/index.js +1 -1
  150. package/dist/types/Form.d.ts +4 -1
  151. package/dist/types/Form.d.ts.map +1 -1
  152. package/dist/utils/eventQueue.d.ts +26 -0
  153. package/dist/utils/eventQueue.d.ts.map +1 -0
  154. package/dist/utils/featheryClient/index.d.ts +6 -0
  155. package/dist/utils/featheryClient/index.d.ts.map +1 -1
  156. package/dist/utils/formHelperFunctions.d.ts +1 -1
  157. package/dist/utils/formHelperFunctions.d.ts.map +1 -1
  158. package/dist/utils/hideAndRepeats.d.ts.map +1 -1
  159. package/package.json +4 -3
  160. package/umd/{277.94ae8bf6190836d1dceb.js → 277.d9907ecd5dc2117c9171.js} +1 -1
  161. package/umd/{509.4236d4d76d2fa2ccd971.js → 509.341a4196aad912adb28d.js} +2 -2
  162. package/umd/{AddressField.3523efd23175117d47a5.js → AddressField.ec97334fe233830bc05b.js} +1 -1
  163. package/umd/SignatureField.56c69ad7ee1f7e0b5003.js +1 -0
  164. package/umd/TableElement.ef63774f461682dd3ac9.js +1 -0
  165. package/umd/index.js +1 -1
  166. package/cjs/elements/components/skeletons/FieldSkeleton.d.ts +0 -8
  167. package/cjs/elements/components/skeletons/FieldSkeleton.d.ts.map +0 -1
  168. package/dist/elements/components/skeletons/FieldSkeleton.d.ts +0 -8
  169. package/dist/elements/components/skeletons/FieldSkeleton.d.ts.map +0 -1
  170. package/umd/SignatureField.1b502b1edb19e4af3b64.js +0 -1
  171. /package/umd/{509.4236d4d76d2fa2ccd971.js.LICENSE.txt → 509.341a4196aad912adb28d.js.LICENSE.txt} +0 -0
@@ -0,0 +1,667 @@
1
+ import { _ as __assign, j as jsx, a as jsxs, F as Fragment, b as __read, f as featheryDoc, c as fieldValues, s as stringifyWithNull, d as __values, e as __spreadArray } from './fthry_index.y4j9reIZ.js';
2
+ import { useState, useRef, useEffect, useMemo } from 'react';
3
+ import { createPortal } from 'react-dom';
4
+ import 'react/jsx-runtime';
5
+ import 'react-dom/client';
6
+ import 'jszip';
7
+
8
+ var colors = {
9
+ white: '#ffffff',
10
+ gray50: '#f9fafb',
11
+ gray100: '#f3f4f6',
12
+ gray200: '#e5e7eb',
13
+ gray300: '#d1d5db',
14
+ gray400: '#9ca3af',
15
+ gray600: '#4b5563',
16
+ gray700: '#374151',
17
+ gray900: '#111827',
18
+ blue50: '#eff6ff',
19
+ blue700: '#1d4ed8'
20
+ };
21
+ var searchIconStyle = {
22
+ width: '16px',
23
+ height: '16px',
24
+ color: '#6b7280'
25
+ };
26
+ var sortIconContainerStyle = {
27
+ display: 'flex',
28
+ flexDirection: 'column',
29
+ gap: '2px',
30
+ '& svg': {
31
+ marginInlineStart: '4px',
32
+ width: '20px',
33
+ height: '20px'
34
+ }
35
+ };
36
+ var sortArrowStyle = {
37
+ width: '12px',
38
+ height: '12px',
39
+ color: colors.gray400,
40
+ opacity: 0.3,
41
+ '&[data-active="true"]': {
42
+ color: colors.blue700,
43
+ opacity: 1
44
+ }
45
+ };
46
+ var sortHeaderContentStyle = {
47
+ display: 'flex',
48
+ alignItems: 'center',
49
+ gap: '8px'
50
+ };
51
+ var containerStyle = {
52
+ position: 'relative',
53
+ overflowX: 'auto',
54
+ overflowY: 'auto',
55
+ backgroundColor: colors.white,
56
+ boxShadow: '0 1px 2px 0 rgba(0, 0, 0, 0.05)',
57
+ borderRadius: '8px',
58
+ border: "1px solid ".concat(colors.gray200),
59
+ minWidth: '100%',
60
+ maxWidth: '100%',
61
+ height: '100%',
62
+ boxSizing: 'border-box'
63
+ };
64
+ var emptyStateContainerStyle = {
65
+ display: 'flex',
66
+ flexDirection: 'column',
67
+ alignItems: 'center',
68
+ justifyContent: 'center',
69
+ padding: '64px 24px',
70
+ textAlign: 'center'
71
+ };
72
+ var emptyStateTextStyle = {
73
+ color: colors.gray600,
74
+ fontSize: '16px',
75
+ fontWeight: '500',
76
+ margin: 0
77
+ };
78
+ var searchContainerStyle = {
79
+ padding: '16px',
80
+ borderBottom: "1px solid ".concat(colors.gray200)
81
+ };
82
+ var searchWrapperStyle = {
83
+ position: 'relative'
84
+ };
85
+ var searchIconWrapperStyle = {
86
+ position: 'absolute',
87
+ top: 0,
88
+ bottom: 0,
89
+ left: 0,
90
+ display: 'flex',
91
+ alignItems: 'center',
92
+ paddingLeft: '12px',
93
+ pointerEvents: 'none'
94
+ };
95
+ var searchInputStyle = {
96
+ display: 'block',
97
+ width: '100%',
98
+ maxWidth: '384px',
99
+ paddingLeft: '36px',
100
+ paddingRight: '12px',
101
+ paddingTop: '10px',
102
+ paddingBottom: '10px',
103
+ backgroundColor: colors.gray50,
104
+ border: "1px solid ".concat(colors.gray200),
105
+ color: colors.gray900,
106
+ fontSize: '14px',
107
+ borderRadius: '8px',
108
+ boxShadow: '0 1px 2px 0 rgba(0, 0, 0, 0.05)'
109
+ };
110
+ var tableStyle = {
111
+ width: '100%',
112
+ maxWidth: '100%',
113
+ fontSize: '14px',
114
+ textAlign: 'left',
115
+ color: colors.gray600,
116
+ textIndent: 0,
117
+ borderColor: 'inherit',
118
+ borderCollapse: 'collapse',
119
+ tableLayout: 'fixed'
120
+ };
121
+ var theadStyle = {
122
+ fontSize: '14px',
123
+ color: colors.gray600,
124
+ backgroundColor: colors.gray50,
125
+ borderBottom: "1px solid ".concat(colors.gray200)
126
+ };
127
+ var thStyle = {
128
+ padding: '12px 24px',
129
+ fontWeight: '500',
130
+ userSelect: 'none'
131
+ };
132
+ var rowStyle = {
133
+ backgroundColor: colors.white,
134
+ borderBottom: "1px solid ".concat(colors.gray200),
135
+ transition: 'background-color 0.2s'
136
+ };
137
+ var cellStyle = {
138
+ padding: '16px 24px',
139
+ wordBreak: 'break-word',
140
+ overflowWrap: 'anywhere'
141
+ };
142
+ var navStyle = {
143
+ display: 'flex',
144
+ alignItems: 'center',
145
+ flexWrap: 'wrap',
146
+ justifyContent: 'space-between',
147
+ padding: '16px',
148
+ gap: '8px'
149
+ };
150
+ var navTextStyle = {
151
+ fontSize: '14px',
152
+ fontWeight: 'normal',
153
+ color: colors.gray600
154
+ };
155
+ var navTextBoldStyle = {
156
+ fontWeight: '600',
157
+ color: colors.gray900
158
+ };
159
+ var paginationListStyle = {
160
+ display: 'flex',
161
+ marginLeft: '-1px',
162
+ fontSize: '14px',
163
+ listStyle: 'none',
164
+ padding: 0,
165
+ margin: 0
166
+ };
167
+ var buttonStyle = {
168
+ display: 'flex',
169
+ alignItems: 'center',
170
+ justifyContent: 'center',
171
+ color: colors.gray600,
172
+ backgroundColor: colors.gray50,
173
+ boxSizing: 'border-box',
174
+ border: "1px solid ".concat(colors.gray200),
175
+ fontWeight: '500',
176
+ fontSize: '14px',
177
+ textDecoration: 'none',
178
+ cursor: 'pointer',
179
+ height: '36px',
180
+ wordBreak: 'keep-all',
181
+ overflowWrap: 'normal',
182
+ '&:hover': {
183
+ backgroundColor: colors.gray100,
184
+ color: colors.gray900
185
+ }
186
+ };
187
+ var actionButtonStyle = __assign(__assign({}, buttonStyle), { borderRadius: '4px', paddingInline: '8px', width: 'auto', height: '28px' });
188
+ var menuIconStyle = {
189
+ width: '16px',
190
+ height: '16px',
191
+ color: colors.gray600
192
+ };
193
+ var actionMenuStyle = {
194
+ position: 'fixed',
195
+ backgroundColor: colors.white,
196
+ border: "1px solid ".concat(colors.gray300),
197
+ borderRadius: '4px',
198
+ boxShadow: '0 4px 6px -1px rgba(0, 0, 0, 0.1)',
199
+ zIndex: 9999,
200
+ minWidth: '120px'
201
+ };
202
+ var actionMenuItemStyle = {
203
+ display: 'block',
204
+ width: '100%',
205
+ textAlign: 'left',
206
+ paddingLeft: '12px',
207
+ paddingRight: '12px',
208
+ paddingTop: '8px',
209
+ paddingBottom: '8px',
210
+ fontSize: '14px',
211
+ color: colors.gray700,
212
+ backgroundColor: 'transparent',
213
+ border: 'none',
214
+ cursor: 'pointer',
215
+ whiteSpace: 'nowrap',
216
+ '&:hover': {
217
+ backgroundColor: colors.gray100
218
+ },
219
+ '&:first-of-type': {
220
+ borderTopLeftRadius: '4px',
221
+ borderTopRightRadius: '4px'
222
+ },
223
+ '&:last-of-type': {
224
+ borderBottomLeftRadius: '4px',
225
+ borderBottomRightRadius: '4px'
226
+ }
227
+ };
228
+ var actionIconButtonStyle = __assign(__assign({}, actionButtonStyle), { aspectRatio: 1, paddingLeft: 0, paddingRight: 0 });
229
+ var actionContainerStyle = {
230
+ display: 'flex',
231
+ gap: '8px',
232
+ justifyContent: 'flex-end'
233
+ };
234
+ var pageButtonStyle = __assign(__assign({}, buttonStyle), { width: '36px', borderRightWidth: 0 });
235
+ var pageButtonPrevStyle = __assign(__assign({}, pageButtonStyle), { borderTopLeftRadius: '8px', borderBottomLeftRadius: '8px', paddingLeft: '12px', paddingRight: '12px', width: 'auto' });
236
+ var pageButtonNextStyle = __assign(__assign({}, pageButtonStyle), { borderTopRightRadius: '8px', borderBottomRightRadius: '8px', paddingLeft: '12px', paddingRight: '12px', width: 'auto', borderRightWidth: 1 });
237
+ var pageButtonActiveStyle = __assign(__assign({}, pageButtonStyle), { color: colors.blue700, backgroundColor: colors.blue50, border: "1px solid ".concat(colors.gray200) });
238
+ var pageButtonEllipsisStyle = __assign(__assign({}, pageButtonStyle), { cursor: 'default', '&:focus': {
239
+ outline: 'none'
240
+ } });
241
+ var pageButtonDisabledStyle = {
242
+ opacity: 0.8,
243
+ cursor: 'default',
244
+ color: colors.gray400,
245
+ '&:hover': {
246
+ backgroundColor: colors.gray50,
247
+ color: colors.gray400
248
+ }
249
+ };
250
+
251
+ function SearchIcon() {
252
+ return (jsx("svg", __assign({ css: searchIconStyle, fill: 'none', viewBox: '0 0 24 24', stroke: 'currentColor', strokeWidth: 2 }, { children: jsx("path", { strokeLinecap: 'round', d: 'M21 21l-3.5-3.5M17 10a7 7 0 1 1-14 0 7 7 0 0 1 14 0Z' }) })));
253
+ }
254
+ function Search(_a) {
255
+ var searchQuery = _a.searchQuery, onSearchChange = _a.onSearchChange;
256
+ return (jsx("div", __assign({ css: searchContainerStyle }, { children: jsxs("div", __assign({ css: searchWrapperStyle }, { children: [jsx("div", __assign({ css: searchIconWrapperStyle }, { children: jsx(SearchIcon, {}) })), jsx("input", { type: 'text', css: searchInputStyle, placeholder: 'Search', value: searchQuery, onChange: function (e) { return onSearchChange(e.target.value); } })] })) })));
257
+ }
258
+
259
+ function SortIcon(_a) {
260
+ var isSorted = _a.isSorted, sortDirection = _a.sortDirection;
261
+ return (jsxs("svg", __assign({ xmlns: 'http://www.w3.org/2000/svg', viewBox: '0 0 24 24', fill: 'none', "aria-hidden": 'true' }, { children: [jsx("path", { css: sortArrowStyle, stroke: 'currentColor', "data-active": (isSorted && sortDirection === 'asc') || undefined, strokeLinecap: 'round', strokeLinejoin: 'round', strokeWidth: 2, d: 'm8 9 4-4 4 4' }), jsx("path", { css: sortArrowStyle, stroke: 'currentColor', "data-active": (isSorted && sortDirection === 'desc') || undefined, strokeLinecap: 'round', strokeLinejoin: 'round', strokeWidth: 2, d: 'm8 15 4 4 4-4' })] })));
262
+ }
263
+ function SortHeader(_a) {
264
+ var columns = _a.columns, enableSort = _a.enableSort, sortColumn = _a.sortColumn, sortDirection = _a.sortDirection, onSort = _a.onSort, styles = _a.styles;
265
+ return (jsx(Fragment, { children: columns.map(function (column, index) {
266
+ var isSortable = enableSort;
267
+ var isSorted = sortColumn === column.name;
268
+ return (jsx("th", __assign({ scope: 'col', onClick: function () { return isSortable && onSort(column.name); }, css: __assign(__assign(__assign({}, thStyle), styles.getTarget('th')), (isSortable ? { cursor: 'pointer' } : {})) }, { children: jsxs("div", __assign({ css: sortHeaderContentStyle }, { children: [jsx("span", { children: column.name }), isSortable && (jsx("span", __assign({ css: sortIconContainerStyle }, { children: jsx(SortIcon, { isSorted: isSorted, sortDirection: sortDirection }) })))] })) }), index));
269
+ }) }));
270
+ }
271
+
272
+ // ex. Showing 1-10 of 30
273
+ function PageInfo(_a) {
274
+ var currentPage = _a.currentPage, totalItems = _a.totalItems, rowsPerPage = _a.rowsPerPage;
275
+ return (jsxs("span", __assign({ css: navTextStyle }, { children: ["Showing", ' ', jsxs("span", __assign({ css: navTextBoldStyle }, { children: [currentPage * rowsPerPage + 1, "-", Math.min((currentPage + 1) * rowsPerPage, totalItems)] })), ' ', "of ", jsx("span", __assign({ css: navTextBoldStyle }, { children: totalItems }))] })));
276
+ }
277
+ function PreviousButton(_a) {
278
+ var disabled = _a.disabled, onClick = _a.onClick;
279
+ return (jsx("button", __assign({ type: 'button', onClick: onClick, disabled: disabled, css: __assign(__assign({}, pageButtonPrevStyle), (disabled ? pageButtonDisabledStyle : {})) }, { children: "Previous" })));
280
+ }
281
+ function NextButton(_a) {
282
+ var disabled = _a.disabled, onClick = _a.onClick;
283
+ return (jsx("button", __assign({ type: 'button', onClick: onClick, disabled: disabled, css: __assign(__assign({}, pageButtonNextStyle), (disabled ? pageButtonDisabledStyle : {})) }, { children: "Next" })));
284
+ }
285
+ function PageNumbers(_a) {
286
+ var currentPage = _a.currentPage, totalPages = _a.totalPages, onPageChange = _a.onPageChange;
287
+ return (jsx(Fragment, { children: Array.from({ length: totalPages }, function (_, i) {
288
+ // Show first page, last page, current page, and pages around current
289
+ var showPage = i === 0 || i === totalPages - 1 || Math.abs(i - currentPage) <= 1;
290
+ var showEllipsis = (i === 1 && currentPage > 2) ||
291
+ (i === totalPages - 2 && currentPage < totalPages - 3);
292
+ if (showEllipsis) {
293
+ return (jsx("li", { children: jsx("button", __assign({ type: 'button', disabled: true, css: pageButtonEllipsisStyle }, { children: "..." })) }, i));
294
+ }
295
+ if (!showPage)
296
+ return null;
297
+ var isActive = i === currentPage;
298
+ return (jsx("li", { children: jsx("button", __assign({ type: 'button', onClick: function () { return onPageChange(i); }, "aria-current": isActive ? 'page' : undefined, css: isActive
299
+ ? pageButtonActiveStyle
300
+ : pageButtonStyle }, { children: i + 1 })) }, i));
301
+ }) }));
302
+ }
303
+ function Pagination(_a) {
304
+ var currentPage = _a.currentPage, totalPages = _a.totalPages, totalItems = _a.totalItems, rowsPerPage = _a.rowsPerPage, onPageChange = _a.onPageChange;
305
+ if (totalPages <= 1)
306
+ return null;
307
+ return (jsxs("nav", __assign({ css: navStyle, "aria-label": 'Table navigation' }, { children: [jsx(PageInfo, { currentPage: currentPage, totalItems: totalItems, rowsPerPage: rowsPerPage }), jsxs("ul", __assign({ css: paginationListStyle }, { children: [jsx("li", { children: jsx(PreviousButton, { disabled: currentPage === 0, onClick: function () { return onPageChange(Math.max(0, currentPage - 1)); } }) }), jsx(PageNumbers, { currentPage: currentPage, totalPages: totalPages, onPageChange: onPageChange }), jsx("li", { children: jsx(NextButton, { disabled: currentPage >= totalPages - 1, onClick: function () {
308
+ onPageChange(Math.min(totalPages - 1, currentPage + 1));
309
+ } }) })] }))] })));
310
+ }
311
+
312
+ function MenuIcon() {
313
+ return (jsxs("svg", __assign({ css: menuIconStyle, fill: 'currentColor', viewBox: '0 0 24 24' }, { children: [jsx("circle", { cx: '12', cy: '5', r: '2' }), jsx("circle", { cx: '12', cy: '12', r: '2' }), jsx("circle", { cx: '12', cy: '19', r: '2' })] })));
314
+ }
315
+ function ActionButtons(_a) {
316
+ var actions = _a.actions, rowIndex = _a.rowIndex, columnData = _a.columnData, onClick = _a.onClick;
317
+ if (actions.length === 0)
318
+ return null;
319
+ var _b = __read(useState(false), 2), isMenuOpen = _b[0], setIsMenuOpen = _b[1];
320
+ var _c = __read(useState({ top: 0, left: 0 }), 2), menuPosition = _c[0], setMenuPosition = _c[1];
321
+ var containerRef = useRef(null);
322
+ var menuRef = useRef(null);
323
+ var menuButtonRef = useRef(null);
324
+ // If more than 1 action, show overflow menu; otherwise show inline buttons
325
+ var useOverflow = actions.length > 1;
326
+ useEffect(function () {
327
+ var handleClickOutside = function (event) {
328
+ if (menuRef.current &&
329
+ !menuRef.current.contains(event.target) &&
330
+ menuButtonRef.current &&
331
+ !menuButtonRef.current.contains(event.target)) {
332
+ setIsMenuOpen(false);
333
+ }
334
+ };
335
+ if (isMenuOpen) {
336
+ featheryDoc().addEventListener('mousedown', handleClickOutside);
337
+ }
338
+ return function () {
339
+ featheryDoc().removeEventListener('mousedown', handleClickOutside);
340
+ };
341
+ }, [isMenuOpen]);
342
+ var handleActionClick = function (action) {
343
+ setIsMenuOpen(false);
344
+ var rowData = {};
345
+ columnData.forEach(function (col) {
346
+ var fValue = fieldValues[col.field_key];
347
+ var cValue = Array.isArray(fValue) ? fValue[rowIndex] : fValue;
348
+ rowData[col.name] = cValue;
349
+ });
350
+ onClick({
351
+ action: action.label,
352
+ rowIndex: rowIndex,
353
+ rowData: rowData
354
+ });
355
+ };
356
+ var handleMenuToggle = function () {
357
+ if (!isMenuOpen && menuButtonRef.current) {
358
+ var rect = menuButtonRef.current.getBoundingClientRect();
359
+ setMenuPosition({
360
+ top: rect.bottom + 4,
361
+ left: rect.right
362
+ });
363
+ }
364
+ setIsMenuOpen(!isMenuOpen);
365
+ };
366
+ return (jsx("div", __assign({ ref: containerRef, css: actionContainerStyle }, { children: useOverflow ? (jsxs(Fragment, { children: [jsx("button", __assign({ ref: menuButtonRef, type: 'button', onClick: function (e) {
367
+ e.stopPropagation();
368
+ handleMenuToggle();
369
+ }, css: actionIconButtonStyle }, { children: jsx(MenuIcon, {}) })), isMenuOpen &&
370
+ createPortal(jsx("div", __assign({ ref: menuRef, css: __assign(__assign({}, actionMenuStyle), { top: "".concat(menuPosition.top, "px"), left: "".concat(menuPosition.left, "px"), transform: 'translateX(-100%)' }) }, { children: actions.map(function (action, index) { return (jsx("button", __assign({ type: 'button', onClick: function () { return handleActionClick(action); }, css: actionMenuItemStyle }, { children: action.label }), index)); }) })), featheryDoc().body)] })) : (actions.map(function (action, index) { return (jsx("button", __assign({ type: 'button', onClick: function (e) {
371
+ e.stopPropagation();
372
+ handleActionClick(action);
373
+ }, css: actionButtonStyle }, { children: action.label }), index)); })) })));
374
+ }
375
+
376
+ function EmptyState(_a) {
377
+ var hasSearchQuery = _a.hasSearchQuery;
378
+ return (jsxs("div", __assign({ css: emptyStateContainerStyle }, { children: [hasSearchQuery && (jsx("svg", __assign({ css: {
379
+ width: '48px',
380
+ height: '48px',
381
+ color: '#9ca3af',
382
+ marginBottom: '16px'
383
+ }, fill: 'none', viewBox: '0 0 24 24', stroke: 'currentColor', strokeWidth: 1.5 }, { children: jsx("path", { strokeLinecap: 'round', strokeLinejoin: 'round', d: 'M21 21l-5.197-5.197m0 0A7.5 7.5 0 105.196 5.196a7.5 7.5 0 0010.607 10.607z' }) }))), jsx("p", __assign({ css: emptyStateTextStyle }, { children: hasSearchQuery ? 'No results found' : 'No data available' })), hasSearchQuery && (jsx("p", __assign({ css: __assign(__assign({}, emptyStateTextStyle), { fontSize: '14px', marginTop: '8px' }) }, { children: "Try adjusting your search query" })))] })));
384
+ }
385
+
386
+ // Utility functions for sorting strings as numbers and dates
387
+ function tryParseNumber(value) {
388
+ if (value === null || value === undefined || value === '')
389
+ return null;
390
+ var stringValue = String(value).trim();
391
+ // Remove common number formatting characters
392
+ var cleaned = stringValue
393
+ .replace(/[$€£¥]/g, '') // Currency symbols
394
+ .replace(/[,%]/g, '') // Commas and percent
395
+ .replace(/\s/g, ''); // Spaces
396
+ var parsed = parseFloat(cleaned);
397
+ return isNaN(parsed) ? null : parsed;
398
+ }
399
+ function tryParseDate(value) {
400
+ var e_1, _a, _b, _c;
401
+ if (value === null || value === undefined || value === '')
402
+ return null;
403
+ var stringValue = String(value).trim();
404
+ // Try standard Date constructor first
405
+ var standardDate = new Date(stringValue);
406
+ if (!isNaN(standardDate.getTime())) {
407
+ return standardDate;
408
+ }
409
+ var formats = [
410
+ // US format: MM/DD/YYYY or M/D/YY
411
+ /^(\d{1,2})[/-](\d{1,2})[/-](\d{2,4})$/,
412
+ // ISO-ish: YYYY/MM/DD or YYYY-MM-DD
413
+ /^(\d{4})[/-](\d{1,2})[/-](\d{1,2})$/
414
+ ];
415
+ try {
416
+ for (var formats_1 = __values(formats), formats_1_1 = formats_1.next(); !formats_1_1.done; formats_1_1 = formats_1.next()) {
417
+ var format = formats_1_1.value;
418
+ var match = stringValue.match(format);
419
+ if (match) {
420
+ var year = void 0, month = void 0, day = void 0;
421
+ if (match[1].length === 4) {
422
+ // YYYY-MM-DD format
423
+ _b = __read(match, 4), year = _b[1], month = _b[2], day = _b[3];
424
+ }
425
+ else {
426
+ // MM/DD/YYYY format
427
+ _c = __read(match, 4), month = _c[1], day = _c[2], year = _c[3];
428
+ }
429
+ // Handle 2-digit years
430
+ if (year.length === 2) {
431
+ var yearNum = parseInt(year);
432
+ year = yearNum < 50 ? "20".concat(year) : "19".concat(year);
433
+ }
434
+ var date = new Date(parseInt(year), parseInt(month) - 1, parseInt(day));
435
+ if (!isNaN(date.getTime())) {
436
+ return date;
437
+ }
438
+ }
439
+ }
440
+ }
441
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
442
+ finally {
443
+ try {
444
+ if (formats_1_1 && !formats_1_1.done && (_a = formats_1.return)) _a.call(formats_1);
445
+ }
446
+ finally { if (e_1) throw e_1.error; }
447
+ }
448
+ return null;
449
+ }
450
+ function parseSortableValue(value) {
451
+ var _a;
452
+ var asNumber = tryParseNumber(value);
453
+ var asDate = tryParseDate(value);
454
+ var asString = (_a = stringifyWithNull(value)) !== null && _a !== void 0 ? _a : '';
455
+ return {
456
+ original: value,
457
+ asNumber: asNumber,
458
+ asDate: asDate,
459
+ asString: asString
460
+ };
461
+ }
462
+ function compareSortableValues(a, b) {
463
+ // Try number comparison first
464
+ if (a.asNumber !== null && b.asNumber !== null) {
465
+ return a.asNumber - b.asNumber;
466
+ }
467
+ // Try date comparison
468
+ if (a.asDate !== null && b.asDate !== null) {
469
+ return a.asDate.getTime() - b.asDate.getTime();
470
+ }
471
+ // Fall back to string comparison
472
+ return a.asString.localeCompare(b.asString);
473
+ }
474
+
475
+ function generateExampleData(columns, numRows) {
476
+ if (numRows === void 0) { numRows = 2; }
477
+ var exampleData = {};
478
+ columns.forEach(function (column) {
479
+ exampleData[column.field_key] = Array(numRows).fill('Sample');
480
+ });
481
+ return exampleData;
482
+ }
483
+
484
+ function useTableData(_a) {
485
+ var _b, _c, _d, _e, _f, _g, _h, _j;
486
+ var element = _a.element, _k = _a.editMode, editMode = _k === void 0 ? false : _k;
487
+ var userColumns = ((_b = element.properties) === null || _b === void 0 ? void 0 : _b.columns) || [];
488
+ var actions = (((_c = element.properties) === null || _c === void 0 ? void 0 : _c.actions) || []).filter(function (action) { return action.label && action.label.trim() !== ''; });
489
+ var enableSearch = (_e = (_d = element.properties) === null || _d === void 0 ? void 0 : _d.search) !== null && _e !== void 0 ? _e : false;
490
+ var enableSort = (_g = (_f = element.properties) === null || _f === void 0 ? void 0 : _f.sort) !== null && _g !== void 0 ? _g : false;
491
+ var paginationSetting = (_j = (_h = element.properties) === null || _h === void 0 ? void 0 : _h.pagination) !== null && _j !== void 0 ? _j : 0;
492
+ var rowsPerPage = typeof paginationSetting === 'number' && paginationSetting > 0
493
+ ? Math.floor(paginationSetting)
494
+ : 0;
495
+ var enablePagination = rowsPerPage > 0;
496
+ // Use example columns if in edit mode and no columns provided
497
+ // Also ensure all columns have field_key in edit mode
498
+ var columns = useMemo(function () {
499
+ var cols = userColumns;
500
+ // In edit mode, replace field_key with a unique example key
501
+ if (editMode) {
502
+ cols = cols.map(function (col, index) { return (__assign(__assign({}, col), { field_key: "example_column_".concat(index) })); });
503
+ }
504
+ return cols;
505
+ }, [editMode, userColumns]);
506
+ // Use example data in edit mode
507
+ var activeFieldValues = useMemo(function () {
508
+ if (editMode) {
509
+ return generateExampleData(columns);
510
+ }
511
+ return fieldValues;
512
+ }, [editMode, columns, userColumns.length]);
513
+ var _l = __read(useState(''), 2), searchQuery = _l[0], setSearchQuery = _l[1];
514
+ var _m = __read(useState(null), 2), sortColumn = _m[0], setSortColumn = _m[1];
515
+ var _o = __read(useState('asc'), 2), sortDirection = _o[0], setSortDirection = _o[1];
516
+ var _p = __read(useState(0), 2), currentPage = _p[0], setCurrentPage = _p[1];
517
+ var numRows = useMemo(function () {
518
+ return columns.reduce(function (maxRows, column) {
519
+ var fieldValue = activeFieldValues[column.field_key];
520
+ if (Array.isArray(fieldValue)) {
521
+ return Math.max(maxRows, fieldValue.length);
522
+ }
523
+ return maxRows;
524
+ }, 0);
525
+ }, [columns, activeFieldValues]);
526
+ var allRowIndices = useMemo(function () { return Array.from({ length: numRows }, function (_, i) { return i; }); }, [numRows]);
527
+ var filteredRowIndices = useMemo(function () {
528
+ if (!enableSearch || !searchQuery.trim())
529
+ return allRowIndices;
530
+ return allRowIndices.filter(function (rowIndex) {
531
+ return columns.some(function (column) {
532
+ var _a;
533
+ var fieldValue = activeFieldValues[column.field_key];
534
+ var cellValue = Array.isArray(fieldValue)
535
+ ? fieldValue[rowIndex]
536
+ : fieldValue;
537
+ var stringValue = (_a = stringifyWithNull(cellValue)) !== null && _a !== void 0 ? _a : '';
538
+ return stringValue
539
+ .toLowerCase()
540
+ .includes(searchQuery.toLowerCase().trim());
541
+ });
542
+ });
543
+ }, [allRowIndices, columns, searchQuery, enableSearch, activeFieldValues]);
544
+ var sortedRowIndices = useMemo(function () {
545
+ if (!enableSort || !sortColumn)
546
+ return filteredRowIndices;
547
+ var column = columns.find(function (col) { return col.name === sortColumn; });
548
+ if (!column)
549
+ return filteredRowIndices;
550
+ return __spreadArray([], __read(filteredRowIndices), false).sort(function (aIdx, bIdx) {
551
+ var fieldValue = activeFieldValues[column.field_key];
552
+ var aValue = Array.isArray(fieldValue) ? fieldValue[aIdx] : fieldValue;
553
+ var bValue = Array.isArray(fieldValue) ? fieldValue[bIdx] : fieldValue;
554
+ var aParsed = parseSortableValue(aValue);
555
+ var bParsed = parseSortableValue(bValue);
556
+ var comparison = compareSortableValues(aParsed, bParsed);
557
+ return sortDirection === 'asc' ? comparison : -comparison;
558
+ });
559
+ }, [
560
+ filteredRowIndices,
561
+ sortColumn,
562
+ sortDirection,
563
+ columns,
564
+ enableSort,
565
+ activeFieldValues
566
+ ]);
567
+ var paginatedRowIndices = useMemo(function () {
568
+ if (!enablePagination)
569
+ return sortedRowIndices;
570
+ var startIdx = currentPage * rowsPerPage;
571
+ var endIdx = startIdx + rowsPerPage;
572
+ return sortedRowIndices.slice(startIdx, endIdx);
573
+ }, [sortedRowIndices, currentPage, rowsPerPage, enablePagination]);
574
+ // Reset to first page when search or sort changes
575
+ useEffect(function () {
576
+ setCurrentPage(0);
577
+ }, [searchQuery, sortColumn, sortDirection]);
578
+ var totalPages = enablePagination
579
+ ? Math.ceil(sortedRowIndices.length / rowsPerPage)
580
+ : 1;
581
+ var handleSort = function (columnName) {
582
+ if (!enableSort)
583
+ return;
584
+ if (sortColumn === columnName) {
585
+ // Cycle through: asc → desc → none
586
+ if (sortDirection === 'asc') {
587
+ setSortDirection('desc');
588
+ }
589
+ else {
590
+ setSortColumn(null);
591
+ setSortDirection('asc');
592
+ }
593
+ }
594
+ else {
595
+ setSortColumn(columnName);
596
+ setSortDirection('asc');
597
+ }
598
+ };
599
+ var hasData = numRows > 0;
600
+ var hasSearchResults = filteredRowIndices.length > 0;
601
+ return {
602
+ enableSearch: enableSearch,
603
+ searchQuery: searchQuery,
604
+ hasSearchResults: hasSearchResults,
605
+ setSearchQuery: setSearchQuery,
606
+ enableSort: enableSort,
607
+ sortColumn: sortColumn,
608
+ sortDirection: sortDirection,
609
+ handleSort: handleSort,
610
+ enablePagination: enablePagination,
611
+ currentPage: currentPage,
612
+ paginatedRowIndices: paginatedRowIndices,
613
+ rowsPerPage: rowsPerPage,
614
+ setCurrentPage: setCurrentPage,
615
+ columns: columns,
616
+ actions: actions,
617
+ totalRows: sortedRowIndices.length,
618
+ totalPages: totalPages,
619
+ hasData: hasData,
620
+ activeFieldValues: activeFieldValues
621
+ };
622
+ }
623
+
624
+ function applyTableStyles(responsiveStyles) {
625
+ responsiveStyles.addTargets('table', 'thead', 'tbody', 'th', 'td', 'tr');
626
+ return responsiveStyles;
627
+ }
628
+ function TableElement(_a) {
629
+ var element = _a.element, responsiveStyles = _a.responsiveStyles, _b = _a.onClick, onClick = _b === void 0 ? function () { } : _b, _c = _a.editMode, editMode = _c === void 0 ? false : _c;
630
+ var styles = useMemo(function () { return applyTableStyles(responsiveStyles); }, [responsiveStyles]);
631
+ var _d = useTableData({ element: element, editMode: editMode }),
632
+ // search
633
+ enableSearch = _d.enableSearch, searchQuery = _d.searchQuery, setSearchQuery = _d.setSearchQuery,
634
+ // sort
635
+ enableSort = _d.enableSort, sortColumn = _d.sortColumn, sortDirection = _d.sortDirection, handleSort = _d.handleSort,
636
+ // pagination
637
+ enablePagination = _d.enablePagination, currentPage = _d.currentPage, setCurrentPage = _d.setCurrentPage, paginatedRowIndices = _d.paginatedRowIndices, rowsPerPage = _d.rowsPerPage,
638
+ // data
639
+ columns = _d.columns, actions = _d.actions, totalRows = _d.totalRows, totalPages = _d.totalPages, hasData = _d.hasData, hasSearchResults = _d.hasSearchResults, activeFieldValues = _d.activeFieldValues;
640
+ var showEmptyState = !hasData || (hasData && !hasSearchResults);
641
+ return (jsx("div", __assign({ css: __assign(__assign({}, containerStyle), styles.getTarget('container')) }, { children: jsxs("div", __assign({ css: { minWidth: 'fit-content' } }, { children: [enableSearch && (jsx(Search, { searchQuery: searchQuery, onSearchChange: setSearchQuery })), showEmptyState ? (jsx(EmptyState, { hasSearchQuery: searchQuery.trim().length > 0 })) : (jsxs("table", __assign({ css: __assign(__assign({}, tableStyle), styles.getTarget('table')) }, { children: [jsx("thead", __assign({ css: theadStyle }, { children: jsxs("tr", { children: [jsx(SortHeader, { columns: columns, enableSort: enableSort, sortColumn: sortColumn, sortDirection: sortDirection, onSort: handleSort, styles: styles }), actions.length > 0 && (jsx("th", { scope: 'col', css: __assign(__assign({}, thStyle), styles.getTarget('th')) }))] }) })), jsx("tbody", __assign({ css: styles.getTarget('tbody') }, { children: paginatedRowIndices.map(function (rowIndex) {
642
+ var rowData = {};
643
+ columns.forEach(function (col) {
644
+ var fValue = activeFieldValues[col.field_key];
645
+ var cValue = Array.isArray(fValue)
646
+ ? fValue[rowIndex]
647
+ : fValue;
648
+ rowData[col.name] = cValue;
649
+ });
650
+ var handleRowClick = function () {
651
+ onClick({
652
+ rowIndex: rowIndex,
653
+ rowData: rowData
654
+ });
655
+ };
656
+ return (jsxs("tr", __assign({ css: __assign(__assign({}, rowStyle), styles.getTarget('tr')), onClick: handleRowClick }, { children: [columns.map(function (column, colIndex) {
657
+ var _a;
658
+ var fieldValue = activeFieldValues[column.field_key];
659
+ var cellValue = Array.isArray(fieldValue)
660
+ ? fieldValue[rowIndex]
661
+ : fieldValue;
662
+ return (jsx("td", __assign({ css: __assign(__assign({}, cellStyle), styles.getTarget('td')) }, { children: (_a = stringifyWithNull(cellValue)) !== null && _a !== void 0 ? _a : '' }), colIndex));
663
+ }), actions.length > 0 && (jsx("td", __assign({ css: __assign(__assign({}, cellStyle), styles.getTarget('td')) }, { children: jsx(ActionButtons, { actions: actions, rowIndex: rowIndex, columnData: columns, onClick: onClick }) })))] }), rowIndex));
664
+ }) }))] }))), !showEmptyState && enablePagination && (jsx(Pagination, { currentPage: currentPage, totalPages: totalPages, totalItems: totalRows, rowsPerPage: rowsPerPage, onPageChange: setCurrentPage }))] })) })));
665
+ }
666
+
667
+ export { TableElement as default };