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