globuswebcomponents 2.8.11 → 2.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (241) hide show
  1. package/dist/cjs/gb-action-panel_75.cjs.entry.js +496 -139
  2. package/dist/cjs/gb-table-cell.cjs.entry.js +1 -1
  3. package/dist/cjs/gb-token-field-compact.cjs.entry.js +1 -1
  4. package/dist/cjs/gb-token-field-compressed.cjs.entry.js +2 -2
  5. package/dist/cjs/gb-wysiwyg-editor-icon.cjs.entry.js +1 -1
  6. package/dist/cjs/globuscomponents.cjs.js +1 -1
  7. package/dist/cjs/loader.cjs.js +1 -1
  8. package/dist/cjs/reusableModels-_LRAKnsh.js.map +1 -1
  9. package/dist/cjs/test-input-tag.cjs.entry.js +2 -2
  10. package/dist/collection/assets/pencil-edit-01.svg +3 -0
  11. package/dist/collection/components/gb-button/gb-button.js +30 -1
  12. package/dist/collection/components/gb-button/gb-button.js.map +1 -1
  13. package/dist/collection/components/gb-button/gb-button.tsx +6 -1
  14. package/dist/collection/components/gb-button/readme.md +23 -0
  15. package/dist/collection/components/gb-date-picker/gb-date-picker.css +4 -0
  16. package/dist/collection/components/gb-date-picker/gb-date-picker.js +5 -7
  17. package/dist/collection/components/gb-date-picker/gb-date-picker.js.map +1 -1
  18. package/dist/collection/components/gb-horizontal-tabs/gb-horizontal-tabs.js +4 -4
  19. package/dist/collection/components/gb-horizontal-tabs/gb-horizontal-tabs.js.map +1 -1
  20. package/dist/collection/components/gb-input-dropdown/gb-input-dropdown.js +20 -12
  21. package/dist/collection/components/gb-input-dropdown/gb-input-dropdown.js.map +1 -1
  22. package/dist/collection/components/gb-pagination/gb-pagination.css +1 -0
  23. package/dist/collection/components/gb-portal/gb-portal.css +1 -2
  24. package/dist/collection/components/gb-portal/gb-portal.js +63 -17
  25. package/dist/collection/components/gb-portal/gb-portal.js.map +1 -1
  26. package/dist/collection/components/gb-tab-button-base/gb-tab-button-base.js +8 -2
  27. package/dist/collection/components/gb-tab-button-base/gb-tab-button-base.js.map +1 -1
  28. package/dist/collection/components/gb-table/gb-table.css +146 -31
  29. package/dist/collection/components/gb-table/gb-table.js +506 -77
  30. package/dist/collection/components/gb-table/gb-table.js.map +1 -1
  31. package/dist/collection/components/gb-table-cell/gb-table-cell.js +1 -1
  32. package/dist/collection/components/gb-table-header/gb-table-header.css +10 -9
  33. package/dist/collection/components/gb-table-header/gb-table-header.js +28 -26
  34. package/dist/collection/components/gb-table-header/gb-table-header.js.map +1 -1
  35. package/dist/collection/components/gb-tag/gb-tag.js +1 -1
  36. package/dist/collection/components/gb-tag-checkbox/gb-tag-checkbox.js +1 -1
  37. package/dist/collection/components/gb-tag-close/gb-tag-close.js +1 -1
  38. package/dist/collection/components/gb-tag-count/gb-tag-count.js +1 -1
  39. package/dist/collection/components/gb-textarea-input-field/gb-textarea-input-field.js +3 -4
  40. package/dist/collection/components/gb-textarea-input-field/gb-textarea-input-field.js.map +1 -1
  41. package/dist/collection/components/gb-theme-tab/gb-theme-tab.js +1 -1
  42. package/dist/collection/components/gb-toast/gb-toast.js +18 -2
  43. package/dist/collection/components/gb-toast/gb-toast.js.map +1 -1
  44. package/dist/collection/components/gb-toast-button/gb-toast-button.js +1 -1
  45. package/dist/collection/components/gb-toggle/gb-toggle.js +1 -1
  46. package/dist/collection/components/gb-toggle-base/gb-toggle-base.js +2 -2
  47. package/dist/collection/components/gb-token-field-compact/gb-token-field-compact.js +1 -1
  48. package/dist/collection/components/gb-token-field-compressed/gb-token-field-compressed.js +2 -2
  49. package/dist/collection/components/gb-tooltip/gb-tooltip.js +1 -1
  50. package/dist/collection/components/gb-vertical-tabs/gb-vertical-tabs.js +1 -1
  51. package/dist/collection/components/gb-wysiwyg-editor-icon/gb-wysiwyg-editor-icon.js +1 -1
  52. package/dist/collection/components/test-input-tag/test-input-tag.js +2 -2
  53. package/dist/collection/models/reusableModels.js.map +1 -1
  54. package/dist/components/gb-action-panel.js +2 -2
  55. package/dist/components/gb-approval-modal.js +8 -8
  56. package/dist/components/gb-avatar-add-button.js +1 -1
  57. package/dist/components/gb-avatar-dropdown.js +1 -1
  58. package/dist/components/gb-avatar-group.js +2 -2
  59. package/dist/components/gb-btn.js +1 -1
  60. package/dist/components/gb-button.js +1 -1
  61. package/dist/components/gb-checkbox-group-item.js +1 -1
  62. package/dist/components/gb-checkbox-group.js +3 -3
  63. package/dist/components/gb-collapse-button.js +1 -1
  64. package/dist/components/gb-comment.js +2 -2
  65. package/dist/components/gb-complex-primary-side-bar-item.js +1 -1
  66. package/dist/components/gb-complex-secondary-side-bar-item.js +1 -1
  67. package/dist/components/gb-date-picker.js +1 -1
  68. package/dist/components/gb-detail-cell.js +2 -2
  69. package/dist/components/gb-empty-state.js +1 -145
  70. package/dist/components/gb-empty-state.js.map +1 -1
  71. package/dist/components/gb-file-upload-item-base.js +1 -1
  72. package/dist/components/gb-file-upload.js +4 -4
  73. package/dist/components/gb-filter-button.js +1 -1
  74. package/dist/components/gb-header.js +14 -14
  75. package/dist/components/gb-help-tooltip.js +1 -1
  76. package/dist/components/gb-horizontal-tabs.js +4 -4
  77. package/dist/components/gb-horizontal-tabs.js.map +1 -1
  78. package/dist/components/gb-icon-button-base.js +1 -1
  79. package/dist/components/gb-input-dropdown.js +1 -1
  80. package/dist/components/gb-input-field.js +1 -1
  81. package/dist/components/gb-modal-action.js +1 -1
  82. package/dist/components/gb-nav-bar-item.js +1 -1
  83. package/dist/components/gb-nav-bar-sidemenu.js +2 -2
  84. package/dist/components/gb-nav-bar.js +2 -2
  85. package/dist/components/gb-notification-pane.js +1 -1
  86. package/dist/components/gb-pagination.js +1 -1
  87. package/dist/components/gb-password-button.js +1 -1
  88. package/dist/components/gb-portal.js +1 -1
  89. package/dist/components/gb-progress-bar.js +1 -1
  90. package/dist/components/gb-prompt-modal.js +2 -2
  91. package/dist/components/gb-sidebar.js +5 -5
  92. package/dist/components/gb-simple-side-bar-item.js +1 -1
  93. package/dist/components/gb-slider-control-handle.js +1 -1
  94. package/dist/components/gb-slider.js +2 -2
  95. package/dist/components/gb-tab-button-base.js +1 -1
  96. package/dist/components/gb-table-cell.js +1 -1
  97. package/dist/components/gb-table-header.js +1 -343
  98. package/dist/components/gb-table-header.js.map +1 -1
  99. package/dist/components/gb-table.js +471 -121
  100. package/dist/components/gb-table.js.map +1 -1
  101. package/dist/components/gb-tag-checkbox.js +1 -1
  102. package/dist/components/gb-tag-close.js +1 -1
  103. package/dist/components/gb-tag-count.js +1 -1
  104. package/dist/components/gb-tag.js +1 -1
  105. package/dist/components/gb-textarea-input-field.js +1 -1
  106. package/dist/components/gb-theme-tab.js +1 -1
  107. package/dist/components/gb-toast-button.js +1 -1
  108. package/dist/components/gb-toast.js +19 -5
  109. package/dist/components/gb-toast.js.map +1 -1
  110. package/dist/components/gb-toggle-base.js +1 -1
  111. package/dist/components/gb-toggle.js +2 -2
  112. package/dist/components/gb-token-field-compact.js +1 -1
  113. package/dist/components/gb-token-field-compressed.js +2 -2
  114. package/dist/components/gb-tooltip.js +1 -1
  115. package/dist/components/gb-vertical-tabs.js +1 -1
  116. package/dist/components/gb-wysiwyg-editor-icon.js +1 -1
  117. package/dist/components/gb-wysiwyg-tooltip.js +1 -1
  118. package/dist/components/{p-DvV7snbA.js → p-49dlhIYS.js} +10 -4
  119. package/dist/components/p-49dlhIYS.js.map +1 -0
  120. package/dist/components/{p-Db25H5UF.js → p-B0GSTQw3.js} +3 -3
  121. package/dist/components/{p-Db25H5UF.js.map → p-B0GSTQw3.js.map} +1 -1
  122. package/dist/components/{p-DAm-213Y.js → p-BHyPbecw.js} +3 -3
  123. package/dist/components/{p-DAm-213Y.js.map → p-BHyPbecw.js.map} +1 -1
  124. package/dist/components/{p-ByFyt4ia.js → p-BYwfw805.js} +3 -3
  125. package/dist/components/{p-ByFyt4ia.js.map → p-BYwfw805.js.map} +1 -1
  126. package/dist/components/{p-C8LbZ4kH.js → p-BaOylBgt.js} +5 -5
  127. package/dist/components/{p-C8LbZ4kH.js.map → p-BaOylBgt.js.map} +1 -1
  128. package/dist/components/{p-e-QGBXGa.js → p-Bt2auhuC.js} +3 -3
  129. package/dist/components/{p-e-QGBXGa.js.map → p-Bt2auhuC.js.map} +1 -1
  130. package/dist/components/{p-ofbsewem.js → p-ByCoMbO2.js} +5 -5
  131. package/dist/components/{p-ofbsewem.js.map → p-ByCoMbO2.js.map} +1 -1
  132. package/dist/components/p-ByjJN3cS.js +150 -0
  133. package/dist/components/p-ByjJN3cS.js.map +1 -0
  134. package/dist/components/{p-BQU0qEQ8.js → p-C--0Sicf.js} +22 -18
  135. package/dist/components/p-C--0Sicf.js.map +1 -0
  136. package/dist/components/{p-CaVLFaUk.js → p-CJelLNTb.js} +9 -10
  137. package/dist/components/p-CJelLNTb.js.map +1 -0
  138. package/dist/components/{p-BXST6Rgi.js → p-CKzAcGL2.js} +3 -3
  139. package/dist/components/{p-BXST6Rgi.js.map → p-CKzAcGL2.js.map} +1 -1
  140. package/dist/components/{p-wopm_NSt.js → p-CLeShKhE.js} +4 -4
  141. package/dist/components/{p-wopm_NSt.js.map → p-CLeShKhE.js.map} +1 -1
  142. package/dist/components/{p-BVu-h1cX.js → p-CQFpc6__.js} +3 -3
  143. package/dist/components/{p-BVu-h1cX.js.map → p-CQFpc6__.js.map} +1 -1
  144. package/dist/components/{p-BKvAhdEP.js → p-C_9HhBzA.js} +3 -3
  145. package/dist/components/{p-BKvAhdEP.js.map → p-C_9HhBzA.js.map} +1 -1
  146. package/dist/components/{p-cxKfHAER.js → p-C_f2hEd8.js} +10 -5
  147. package/dist/components/p-C_f2hEd8.js.map +1 -0
  148. package/dist/components/{p-T48Hj6xM.js → p-Cdgx4Hwc.js} +3 -3
  149. package/dist/components/{p-T48Hj6xM.js.map → p-Cdgx4Hwc.js.map} +1 -1
  150. package/dist/components/{p-kAsXRFkD.js → p-Ci5AB68V.js} +3 -3
  151. package/dist/components/{p-kAsXRFkD.js.map → p-Ci5AB68V.js.map} +1 -1
  152. package/dist/components/{p-9xYUsl7q.js → p-Cj67a6IJ.js} +3 -3
  153. package/dist/components/{p-9xYUsl7q.js.map → p-Cj67a6IJ.js.map} +1 -1
  154. package/dist/components/{p-Dn5rOzr_.js → p-CsQhqi-L.js} +3 -3
  155. package/dist/components/{p-Dn5rOzr_.js.map → p-CsQhqi-L.js.map} +1 -1
  156. package/dist/components/{p-uV0Dz5N_.js → p-CwTzPqb2.js} +4 -4
  157. package/dist/components/{p-uV0Dz5N_.js.map → p-CwTzPqb2.js.map} +1 -1
  158. package/dist/components/{p-CTNnGEZs.js → p-D0VVIazI.js} +3 -3
  159. package/dist/components/{p-CTNnGEZs.js.map → p-D0VVIazI.js.map} +1 -1
  160. package/dist/components/{p-Bo4efGgC.js → p-DLhsTHln.js} +3 -3
  161. package/dist/components/{p-Bo4efGgC.js.map → p-DLhsTHln.js.map} +1 -1
  162. package/dist/components/{p-Dd_Eos3v.js → p-DMjBTN85.js} +4 -4
  163. package/dist/components/{p-Dd_Eos3v.js.map → p-DMjBTN85.js.map} +1 -1
  164. package/dist/components/{p-DRngXcjq.js → p-DNAqkyM0.js} +4 -4
  165. package/dist/components/{p-DRngXcjq.js.map → p-DNAqkyM0.js.map} +1 -1
  166. package/dist/components/{p-BgNv7S1j.js → p-DSuh8sT6.js} +4 -4
  167. package/dist/components/{p-BgNv7S1j.js.map → p-DSuh8sT6.js.map} +1 -1
  168. package/dist/components/{p-CO71VZ1J.js → p-DUlP9ot1.js} +4 -4
  169. package/dist/components/{p-CO71VZ1J.js.map → p-DUlP9ot1.js.map} +1 -1
  170. package/dist/components/{p-CTfLJ_Yp.js → p-DfeAzwhz.js} +3 -3
  171. package/dist/components/{p-CTfLJ_Yp.js.map → p-DfeAzwhz.js.map} +1 -1
  172. package/dist/components/{p-BByUPZTR.js → p-DpjHb85v.js} +5 -5
  173. package/dist/components/{p-BByUPZTR.js.map → p-DpjHb85v.js.map} +1 -1
  174. package/dist/components/{p-CgQonNKV.js → p-Dqd4hVBB.js} +3 -3
  175. package/dist/components/{p-CgQonNKV.js.map → p-Dqd4hVBB.js.map} +1 -1
  176. package/dist/components/{p-hck2xhPi.js → p-Z_m9SN0_.js} +3 -3
  177. package/dist/components/{p-hck2xhPi.js.map → p-Z_m9SN0_.js.map} +1 -1
  178. package/dist/components/{p-qZNN2nfj.js → p-blTaQhCM.js} +5 -5
  179. package/dist/components/{p-qZNN2nfj.js.map → p-blTaQhCM.js.map} +1 -1
  180. package/dist/components/p-cHn6O-Kf.js.map +1 -1
  181. package/dist/components/{p-apFyrUM4.js → p-dgGYVBLp.js} +127 -16
  182. package/dist/components/p-dgGYVBLp.js.map +1 -0
  183. package/dist/components/{p-yDP7ObG5.js → p-g6ayM_Wt.js} +6 -6
  184. package/dist/components/{p-yDP7ObG5.js.map → p-g6ayM_Wt.js.map} +1 -1
  185. package/dist/components/{p-DlH97JYU.js → p-jEUDScnD.js} +14 -14
  186. package/dist/components/p-jEUDScnD.js.map +1 -0
  187. package/dist/components/p-q16C1y-8.js +350 -0
  188. package/dist/components/p-q16C1y-8.js.map +1 -0
  189. package/dist/components/{p-c0RQJb24.js → p-rw4UZJOE.js} +11 -11
  190. package/dist/components/{p-c0RQJb24.js.map → p-rw4UZJOE.js.map} +1 -1
  191. package/dist/components/{p-CEK6hgEo.js → p-rzRgniQd.js} +9 -11
  192. package/dist/components/p-rzRgniQd.js.map +1 -0
  193. package/dist/components/{p-BtGA-5EV.js → p-y6Xot37W.js} +3 -3
  194. package/dist/components/{p-BtGA-5EV.js.map → p-y6Xot37W.js.map} +1 -1
  195. package/dist/components/test-input-tag.js +6 -6
  196. package/dist/docs.json +535 -73
  197. package/dist/esm/gb-action-panel_75.entry.js +496 -139
  198. package/dist/esm/gb-table-cell.entry.js +1 -1
  199. package/dist/esm/gb-token-field-compact.entry.js +1 -1
  200. package/dist/esm/gb-token-field-compressed.entry.js +2 -2
  201. package/dist/esm/gb-wysiwyg-editor-icon.entry.js +1 -1
  202. package/dist/esm/globuscomponents.js +1 -1
  203. package/dist/esm/loader.js +1 -1
  204. package/dist/esm/reusableModels-cHn6O-Kf.js.map +1 -1
  205. package/dist/esm/test-input-tag.entry.js +2 -2
  206. package/dist/globuscomponents/assets/pencil-edit-01.svg +3 -0
  207. package/dist/globuscomponents/gb-button.tsx +6 -1
  208. package/dist/globuscomponents/globuscomponents.esm.js +1 -1
  209. package/dist/globuscomponents/p-031a93b0.entry.js +2 -0
  210. package/dist/globuscomponents/{p-5f4f79f3.entry.js → p-087fe238.entry.js} +2 -2
  211. package/dist/globuscomponents/p-087fe238.entry.js.map +1 -0
  212. package/dist/globuscomponents/{p-5d4750b8.entry.js → p-a61d1385.entry.js} +2 -2
  213. package/dist/globuscomponents/{p-957759a4.entry.js → p-bc7a3ff1.entry.js} +2 -2
  214. package/dist/globuscomponents/{p-9f49601d.entry.js → p-bd89e53d.entry.js} +2 -2
  215. package/dist/globuscomponents/p-cHn6O-Kf.js.map +1 -1
  216. package/dist/globuscomponents/{p-b71b110d.entry.js → p-e4bda433.entry.js} +2 -2
  217. package/dist/globuscomponents/readme.md +23 -0
  218. package/dist/types/components/gb-button/gb-button.d.ts +1 -0
  219. package/dist/types/components/gb-input-dropdown/gb-input-dropdown.d.ts +1 -1
  220. package/dist/types/components/gb-portal/gb-portal.d.ts +3 -1
  221. package/dist/types/components/gb-tab-button-base/gb-tab-button-base.d.ts +3 -2
  222. package/dist/types/components/gb-table/gb-table.d.ts +68 -2
  223. package/dist/types/components/gb-table-header/gb-table-header.d.ts +1 -1
  224. package/dist/types/components/gb-toast/gb-toast.d.ts +4 -0
  225. package/dist/types/components.d.ts +136 -23
  226. package/dist/types/models/reusableModels.d.ts +16 -0
  227. package/package.json +1 -1
  228. package/dist/components/p-BQU0qEQ8.js.map +0 -1
  229. package/dist/components/p-CEK6hgEo.js.map +0 -1
  230. package/dist/components/p-CaVLFaUk.js.map +0 -1
  231. package/dist/components/p-DlH97JYU.js.map +0 -1
  232. package/dist/components/p-DvV7snbA.js.map +0 -1
  233. package/dist/components/p-apFyrUM4.js.map +0 -1
  234. package/dist/components/p-cxKfHAER.js.map +0 -1
  235. package/dist/globuscomponents/p-5f4f79f3.entry.js.map +0 -1
  236. package/dist/globuscomponents/p-9bf9cc0c.entry.js +0 -2
  237. /package/dist/globuscomponents/{p-9bf9cc0c.entry.js.map → p-031a93b0.entry.js.map} +0 -0
  238. /package/dist/globuscomponents/{p-5d4750b8.entry.js.map → p-a61d1385.entry.js.map} +0 -0
  239. /package/dist/globuscomponents/{p-957759a4.entry.js.map → p-bc7a3ff1.entry.js.map} +0 -0
  240. /package/dist/globuscomponents/{p-9f49601d.entry.js.map → p-bd89e53d.entry.js.map} +0 -0
  241. /package/dist/globuscomponents/{p-b71b110d.entry.js.map → p-e4bda433.entry.js.map} +0 -0
@@ -1,38 +1,18 @@
1
- import { h } from "@stencil/core";
1
+ import { h, Fragment } from "@stencil/core";
2
2
  import { StateEnum } from "../../models/reusableModels";
3
3
  export class GbTable {
4
4
  constructor() {
5
5
  this.columns = [
6
- { key: 'id', label: '#', width: '70px' },
7
- { key: 'date', label: 'Date' },
8
- { key: 'name', label: 'Name' },
6
+ { key: 'id', label: '#', width: '70px', sortable: true, sortType: 'string', mobile: { position: 'top_left' } },
7
+ { key: 'date', label: 'Date', mobile: { position: 'bottom_left' } },
8
+ { key: 'name', label: 'Name', sortable: true, sortType: 'string', helpIcon: true, mobile: { position: 'top_right' } },
9
9
  { key: 'role', label: 'Role' },
10
- // { key: 'role', label: 'Role' },
11
- // { key: 'role', label: 'Role' },
12
- // { key: 'role', label: 'Role' },
13
- // { key: 'role', label: 'Role' },
14
- // { key: 'role', label: 'Role' },
15
- // { key: 'role', label: 'Role' },
16
- // { key: 'role', label: 'Role' },
17
- // { key: 'role', label: 'Role' },
18
- // { key: 'role', label: 'Role' },
19
- // { key: 'role', label: 'Role' },
20
- // { key: 'role', label: 'Role' },
21
- // { key: 'role', label: 'Role' },
22
- { key: 'level', label: 'Level' },
23
- { key: 'customer', label: 'Customer' },
24
- { key: 'amount', label: 'Amount' },
10
+ { key: 'amount', label: 'Amount', align: 'right', sortable: true, sortType: 'number' },
25
11
  {
26
12
  key: 'status',
27
13
  label: 'Status',
28
- cellComponent: 'gb-badge',
29
- cellProps: row => ({
30
- color: row.status === 'Completed' ? 'success' : 'error',
31
- type: 'badge_modern',
32
- size: 'sm',
33
- icon: 'dot',
34
- }),
35
- cellSlots: row => h("p", null, row.status),
14
+ render: row => (h("gb-badge", { color: row.status === 'Completed' ? 'success' : 'error', type: "badge_modern", size: "sm", icon: "dot" }, h("p", null, row.status))),
15
+ mobile: { position: 'bottom_right' },
36
16
  },
37
17
  // {
38
18
  // key: '',
@@ -50,50 +30,127 @@ export class GbTable {
50
30
  ];
51
31
  this.data = [
52
32
  {
53
- id: '#3057',
54
- date: 'Jan 3, 2022',
55
- name: 'Emmanuel Kadiri',
56
- role: 'Frontend developer',
33
+ id: '#3001',
34
+ date: 'Jan 1, 2022',
35
+ name: 'Emma Johnson',
36
+ role: 'Frontend Developer',
57
37
  level: 'Today',
58
38
  customer: 'John Doe',
59
39
  amount: '$120.00',
60
40
  status: 'Completed',
61
41
  },
62
- {
63
- id: '#3058',
64
- date: 'Jan 4, 2022',
65
- customer: 'Sarah Johnson',
66
- amount: '$85.50',
67
- status: 'Pending',
68
- },
69
- {
70
- id: '#3059',
71
- date: 'Jan 5, 2022',
72
- customer: 'Michael Brown',
73
- amount: '$230.75',
74
- status: 'Cancelled',
75
- },
76
- {
77
- id: '#3060',
78
- date: 'Jan 6, 2022',
79
- customer: 'Emily Davis',
80
- amount: '$59.99',
81
- status: 'Completed',
82
- },
83
- {
84
- id: '#3061',
85
- date: 'Jan 7, 2022',
86
- customer: 'Daniel Wilson',
87
- amount: '$410.00',
88
- status: 'Pending',
89
- },
42
+ { id: '#3002', date: 'Jan 2, 2022', name: 'Liam Smith', role: 'Backend Developer', level: 'Today', customer: 'Sarah Wilson', amount: '$85.50', status: 'Pending' },
43
+ { id: '#3003', date: 'Jan 3, 2022', name: 'Olivia Brown', role: 'UI Designer', level: 'Today', customer: 'Michael Lee', amount: '$230.75', status: 'Cancelled' },
44
+ { id: '#3004', date: 'Jan 4, 2022', name: 'Noah Davis', role: 'DevOps Engineer', level: 'Today', customer: 'Emily Clark', amount: '$59.99', status: 'Completed' },
45
+ { id: '#3005', date: 'Jan 5, 2022', name: 'Ava Martinez', role: 'Product Manager', level: 'Today', customer: 'Daniel Harris', amount: '$410.00', status: 'Pending' },
46
+ { id: '#3006', date: 'Jan 6, 2022', name: 'William Garcia', role: 'QA Engineer', level: 'Today', customer: 'Sophia Lewis', amount: '$150.20', status: 'Completed' },
47
+ { id: '#3007', date: 'Jan 7, 2022', name: 'Isabella Rodriguez', role: 'Business Analyst', level: 'Today', customer: 'James Walker', amount: '$78.40', status: 'Pending' },
48
+ { id: '#3008', date: 'Jan 8, 2022', name: 'James Wilson', role: 'Fullstack Developer', level: 'Today', customer: 'Mia Hall', amount: '$300.00', status: 'Completed' },
49
+ { id: '#3009', date: 'Jan 9, 2022', name: 'Sophia Anderson', role: 'UX Researcher', level: 'Today', customer: 'Benjamin Allen', amount: '$95.60', status: 'Cancelled' },
50
+ { id: '#3010', date: 'Jan 10, 2022', name: 'Benjamin Thomas', role: 'Mobile Developer', level: 'Today', customer: 'Charlotte Young', amount: '$210.10', status: 'Completed' },
51
+ { id: '#3011', date: 'Jan 11, 2022', name: 'Mia Taylor', role: 'Data Analyst', level: 'Today', customer: 'Lucas King', amount: '$180.00', status: 'Pending' },
52
+ { id: '#3012', date: 'Jan 12, 2022', name: 'Lucas Moore', role: 'Cloud Engineer', level: 'Today', customer: 'Amelia Scott', amount: '$420.75', status: 'Completed' },
53
+ { id: '#3013', date: 'Jan 13, 2022', name: 'Charlotte Jackson', role: 'Security Engineer', level: 'Today', customer: 'Elijah Green', amount: '$65.90', status: 'Cancelled' },
54
+ { id: '#3014', date: 'Jan 14, 2022', name: 'Elijah Martin', role: 'Technical Lead', level: 'Today', customer: 'Harper Adams', amount: '$510.30', status: 'Completed' },
55
+ { id: '#3015', date: 'Jan 15, 2022', name: 'Amelia Lee', role: 'Scrum Master', level: 'Today', customer: 'Alexander Baker', amount: '$99.99', status: 'Pending' },
56
+ { id: '#3016', date: 'Jan 16, 2022', name: 'Harper Perez', role: 'Frontend Developer', level: 'Today', customer: 'Ella Nelson', amount: '$275.45', status: 'Completed' },
57
+ { id: '#3017', date: 'Jan 17, 2022', name: 'Alexander White', role: 'Backend Developer', level: 'Today', customer: 'Matthew Carter', amount: '$340.00', status: 'Pending' },
58
+ { id: '#3018', date: 'Jan 18, 2022', name: 'Ella Harris', role: 'UI Designer', level: 'Today', customer: 'Avery Mitchell', amount: '$88.80', status: 'Completed' },
59
+ { id: '#3019', date: 'Jan 19, 2022', name: 'Matthew Clark', role: 'DevOps Engineer', level: 'Today', customer: 'Evelyn Perez', amount: '$190.25', status: 'Cancelled' },
60
+ { id: '#3020', date: 'Jan 20, 2022', name: 'Avery Lewis', role: 'Product Manager', level: 'Today', customer: 'Henry Roberts', amount: '$600.00', status: 'Completed' },
61
+ { id: '#3021', date: 'Jan 21, 2022', name: 'Evelyn Walker', role: 'QA Engineer', level: 'Today', customer: 'Luna Turner', amount: '$72.30', status: 'Pending' },
62
+ { id: '#3022', date: 'Jan 22, 2022', name: 'Henry Hall', role: 'Business Analyst', level: 'Today', customer: 'Jack Phillips', amount: '$310.40', status: 'Completed' },
63
+ { id: '#3023', date: 'Jan 23, 2022', name: 'Luna Allen', role: 'Fullstack Developer', level: 'Today', customer: 'Sofia Campbell', amount: '$145.00', status: 'Cancelled' },
64
+ { id: '#3024', date: 'Jan 24, 2022', name: 'Jack Young', role: 'UX Researcher', level: 'Today', customer: 'David Parker', amount: '$260.70', status: 'Completed' },
65
+ { id: '#3025', date: 'Jan 25, 2022', name: 'Sofia Hernandez', role: 'Mobile Developer', level: 'Today', customer: 'Grace Evans', amount: '$89.10', status: 'Pending' },
66
+ { id: '#3026', date: 'Jan 26, 2022', name: 'David King', role: 'Data Analyst', level: 'Today', customer: 'Samuel Edwards', amount: '$410.90', status: 'Completed' },
67
+ { id: '#3027', date: 'Jan 27, 2022', name: 'Grace Wright', role: 'Cloud Engineer', level: 'Today', customer: 'Chloe Collins', amount: '$130.55', status: 'Cancelled' },
68
+ { id: '#3028', date: 'Jan 28, 2022', name: 'Samuel Scott', role: 'Security Engineer', level: 'Today', customer: 'Victoria Stewart', amount: '$555.00', status: 'Completed' },
69
+ { id: '#3029', date: 'Jan 29, 2022', name: 'Chloe Green', role: 'Technical Lead', level: 'Today', customer: 'Nathan Morris', amount: '$205.25', status: 'Pending' },
70
+ { id: '#3030', date: 'Jan 30, 2022', name: 'Nathan Adams', role: 'Scrum Master', level: 'Today', customer: 'Zoe Rogers', amount: '$320.80', status: 'Completed' },
71
+ ];
72
+ this.tableHeaderConfig = {
73
+ tableHeading: false,
74
+ tableHeadingLabel: 'Suspicious outflows',
75
+ showDateFilter: true,
76
+ showFilter: true,
77
+ showColumnOptions: true,
78
+ showSearch: true,
79
+ showExport: true,
80
+ showRefreshButton: true,
81
+ datePickerMode: 'single',
82
+ };
83
+ this.paginationConfig = {
84
+ paginationMode: 'internal',
85
+ entriesDropdownMenuPosition: 'top',
86
+ currentPage: 1,
87
+ pageSize: 10,
88
+ totalItems: null,
89
+ };
90
+ this.emptyStateConfig = {
91
+ mainText: 'No data available',
92
+ supportingText: 'Try adjusting your filters or check back later.',
93
+ color: 'gray',
94
+ illustrationIcon: 'assets/alert-circle.svg',
95
+ theme: 'light',
96
+ };
97
+ this.showActionsColumn = true;
98
+ this.rowActions = [
99
+ { label: '', action: '', icon: 'assets/more-horizontal.svg', type: 'dropdown' },
100
+ // { label: 'View Details', action: 'view_details', icon: 'assets/view.svg', type: 'button' },
101
+ // { label: 'Edit', action: 'edit', icon: 'assets/pencil-edit-01.svg', type: 'button' },
90
102
  ];
91
- this.rowActions = [{ label: 'View', action: 'view', disabled: true }];
92
- this.stickyFirstColumn = false;
103
+ this.dropdownOptions = [
104
+ { label: 'View', action: 'view', icon: 'assets/view.svg', disabled: false },
105
+ { label: 'Edit', action: 'edit', icon: 'assets/pencil-edit-01.svg', disabled: false },
106
+ { label: 'Delete', action: 'delete', icon: 'assets/delete-02.svg', disabled: true },
107
+ ];
108
+ this.stickyFirstColumn = true;
93
109
  this.stickyLastColumn = true;
94
- // @Prop() entriesDropdownPosition: 'top' | 'bottom' = 'top';
95
110
  this.actionsType = 'none';
111
+ this.showCheckbox = false;
112
+ // @Prop({ mutable: true }) currentPage?: number = 1;
113
+ // @Prop() pageSize: number = 10;
114
+ // @Prop() totalItems?: number;
115
+ this.internalCurrentPage = 1;
116
+ this.internalPageSize = 10;
96
117
  this.openRowIndex = null;
118
+ this.sortDirection = 'asc';
119
+ this.selectedRowIds = new Set();
120
+ this.breakpoint = 'desktop';
121
+ this.isMobile = false;
122
+ this.isScrollable = false;
123
+ this.actionButtonRefs = [];
124
+ this.handlePageChange = ({ detail }) => {
125
+ const { pageNumber, pageSize } = detail;
126
+ if (this.paginationConfig.paginationMode === 'internal') {
127
+ this.internalCurrentPage = pageNumber;
128
+ this.internalPageSize = pageSize;
129
+ }
130
+ else {
131
+ this.pageItemSelected.emit(detail);
132
+ }
133
+ };
134
+ }
135
+ componentWillRender() {
136
+ this.checkViewport();
137
+ window.addEventListener('resize', this.checkViewport.bind(this));
138
+ }
139
+ componentDidRender() {
140
+ requestAnimationFrame(() => this.checkScrollability());
141
+ }
142
+ checkViewport() {
143
+ this.isMobile = window.innerWidth <= 768;
144
+ this.checkScrollability();
145
+ }
146
+ checkScrollability() {
147
+ if (!this.scrollContainer)
148
+ return;
149
+ const { scrollWidth, clientWidth } = this.scrollContainer;
150
+ const newScrollable = scrollWidth > clientWidth;
151
+ if (newScrollable !== this.isScrollable) {
152
+ this.isScrollable = newScrollable; // only update if different
153
+ }
97
154
  }
98
155
  handleAction(action, row) {
99
156
  this.rowActionClick.emit({ action, row });
@@ -112,11 +169,132 @@ export class GbTable {
112
169
  emitPaginationDetails({ detail }) {
113
170
  this.pageItemSelected.emit(detail);
114
171
  }
115
- toggleDropdown(index) {
116
- console.log('testing', index);
117
- this.openRowIndex = this.openRowIndex === index ? null : index;
172
+ async toggleDropdown(rowIndex) {
173
+ if (this.openRowIndex === rowIndex) {
174
+ this.openRowIndex = null;
175
+ return;
176
+ }
177
+ const buttonInstance = this.actionButtonRefs[rowIndex];
178
+ const nativeBtn = await (buttonInstance === null || buttonInstance === void 0 ? void 0 : buttonInstance.getNativeButton());
179
+ this.currentAnchorEl = nativeBtn !== null && nativeBtn !== void 0 ? nativeBtn : undefined;
180
+ this.openRowIndex = rowIndex;
118
181
  }
119
- render() {
182
+ onSort(col) {
183
+ if (!col.sortable)
184
+ return;
185
+ if (this.sortKey === col.key) {
186
+ this.sortDirection = this.sortDirection === 'asc' ? 'desc' : 'asc';
187
+ }
188
+ else {
189
+ this.sortKey = col.key;
190
+ this.sortDirection = 'asc';
191
+ }
192
+ }
193
+ get sortedData() {
194
+ if (!this.sortKey)
195
+ return this.data;
196
+ const col = this.columns.find(c => c.key === this.sortKey);
197
+ if (!col)
198
+ return this.data;
199
+ return [...this.data].sort((a, b) => {
200
+ let valA = a[this.sortKey];
201
+ let valB = b[this.sortKey];
202
+ // Null safety
203
+ if (valA == null)
204
+ return 1;
205
+ if (valB == null)
206
+ return -1;
207
+ let result = 0;
208
+ switch (col.sortType) {
209
+ case 'number': {
210
+ const numA = Number(String(valA).replace(/[^0-9.-]+/g, ''));
211
+ const numB = Number(String(valB).replace(/[^0-9.-]+/g, ''));
212
+ result = numA - numB;
213
+ break;
214
+ }
215
+ case 'date': {
216
+ const timeA = new Date(valA).getTime();
217
+ const timeB = new Date(valB).getTime();
218
+ result = timeA - timeB;
219
+ break;
220
+ }
221
+ case 'string':
222
+ default: {
223
+ result = String(valA).localeCompare(String(valB), undefined, {
224
+ sensitivity: 'base',
225
+ });
226
+ break;
227
+ }
228
+ }
229
+ return this.sortDirection === 'asc' ? result : -result;
230
+ });
231
+ }
232
+ get allSelected() {
233
+ return this.sortedData.length > 0 && this.selectedRowIds.size === this.sortedData.length;
234
+ }
235
+ get isIndeterminate() {
236
+ return this.selectedRowIds.size > 0 && this.selectedRowIds.size < this.sortedData.length;
237
+ }
238
+ toggleAll() {
239
+ if (this.allSelected) {
240
+ this.selectedRowIds = new Set();
241
+ }
242
+ else {
243
+ this.selectedRowIds = new Set(this.sortedData.map(row => row.id));
244
+ }
245
+ this.emitSelection();
246
+ }
247
+ toggleRow(row) {
248
+ const updated = new Set(this.selectedRowIds);
249
+ if (updated.has(row.id)) {
250
+ updated.delete(row.id);
251
+ }
252
+ else {
253
+ updated.add(row.id);
254
+ }
255
+ this.selectedRowIds = updated;
256
+ this.emitSelection();
257
+ }
258
+ emitSelection() {
259
+ const selected = this.sortedData.filter(row => this.selectedRowIds.has(row.id));
260
+ this.selectionChanged.emit(selected);
261
+ }
262
+ get displayedData() {
263
+ if (!this.paginationConfig) {
264
+ return this.sortedData;
265
+ }
266
+ if (this.paginationConfig.paginationMode === 'external') {
267
+ return this.sortedData; // parent already paginated it
268
+ }
269
+ const start = (this.internalCurrentPage - 1) * this.internalPageSize;
270
+ const end = start + this.internalPageSize;
271
+ return this.sortedData.slice(start, end);
272
+ }
273
+ get totalPages() {
274
+ if (!this.paginationConfig)
275
+ return 1;
276
+ const pageSize = this.paginationConfig.paginationMode === 'internal' ? this.internalPageSize : this.paginationConfig.pageSize;
277
+ const totalItems = this.paginationConfig.paginationMode === 'external' ? this.paginationConfig.totalItems : this.sortedData.length;
278
+ return Math.ceil(totalItems / pageSize);
279
+ }
280
+ onDataChange(newValue, _oldValue) {
281
+ if (!newValue)
282
+ return;
283
+ this.data = newValue;
284
+ }
285
+ onTotalItemsChange(newValue, _oldValue) {
286
+ if (!newValue || newValue < 1)
287
+ return;
288
+ this.paginationConfig.totalItems = Number(newValue);
289
+ }
290
+ renderHeaderIcons(col) {
291
+ return (h(Fragment, null, col.sortable && (h("svg", { xmlns: "http://www.w3.org/2000/svg", width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", style: {
292
+ transform: this.sortKey === col.key && this.sortDirection === 'desc' ? 'rotate(180deg)' : 'rotate(0deg)',
293
+ opacity: this.sortKey === col.key ? '1' : '0.4',
294
+ transition: 'transform 0.2s ease',
295
+ } }, h("path", { d: "M7.99998 13.3332V2.6665M7.99998 13.3332C8.87837 13.3332 11.3333 9.99993 11.3333 9.99993M7.99998 13.3332C7.12158 13.3332 4.66663 9.9999 4.66663 9.9999", stroke: "var(--color-icon, #4B5565)", "stroke-linecap": "round", "stroke-linejoin": "round" }))), col.helpIcon && (h("gb-help-tooltip", { "show-supporting-text": "true" }, h("p", { slot: "label" }, "This is a label"), h("p", { slot: "supporting_text" }, "This is a supporting text")))));
296
+ }
297
+ renderDesktopView() {
120
298
  // compute table min-width to force horizontal scroll when > 5 columns
121
299
  const defaultColWidth = 160;
122
300
  let totalWidth = 0;
@@ -129,15 +307,63 @@ export class GbTable {
129
307
  totalWidth += defaultColWidth;
130
308
  }
131
309
  });
132
- const tableStyle = this.columns.length > 5 ? { minWidth: `${totalWidth}px` } : {};
133
- return (h("div", { key: '1b40de961abd0306a040b5b61fa1d7390be8090e', class: `table_wrapper` }, h("div", { key: '61ad6c2d09cfc4c80d6e4b9de962bc4e6cff493c', class: `table_scroll ${this.columns.length > 5 ? 'scrollable' : ''}` }, h("table", { key: '041ab139368befa86a6d4c2afe582b77344ea941', style: tableStyle, class: `${this.columns.length > 5 ? 'scrollable' : ''}` }, h("thead", { key: '550962945520529a84de9ffedb6ebd1533e95776' }, h("tr", { key: 'd616251d1d53e05fea13ae70a492b0339e4ae356', class: "table_head_row" }, this.columns.map((col, index) => (h("th", { style: { width: col.width }, class: {
134
- sticky_left: this.stickyFirstColumn && index === 0,
135
- } }, h("p", { class: "head_text text-xs-medium" }, col.label)))), this.rowActions && (h("th", { key: 'e011c576724b5a36801534ae2854ee57492202ca', class: {
310
+ // const tableStyle = this.columns.length > 5 ? { minWidth: `${totalWidth}px` } : {};
311
+ return (h("div", { class: `table_scroll`, ref: el => (this.scrollContainer = el) }, h("table", null, h("thead", null, h("tr", { class: "table_head_row" }, this.showCheckbox && (h("th", { style: { width: '15px' }, class: {
312
+ sticky_left: this.stickyFirstColumn,
313
+ } }, h("gb-checkbox", { type: "checkbox", checked: this.allSelected, indeterminate: this.isIndeterminate, size: "sm", onClick: () => this.toggleAll() }))), this.columns.map((col, index) => {
314
+ var _a;
315
+ const align = (_a = col.align) !== null && _a !== void 0 ? _a : 'left';
316
+ return (h("th", { style: { width: col.width, cursor: col.sortable ? 'pointer' : 'default', textAlign: col.align || 'left' }, onClick: () => this.onSort(col), class: {
317
+ table_header: true,
318
+ sticky_left: this.stickyFirstColumn && index === 0,
319
+ sortable: col.sortable,
320
+ has_border: this.isScrollable,
321
+ } }, h("div", { class: `table_head_content align-${align}` }, align === 'right' && h("div", { class: "table_head_icons" }, this.renderHeaderIcons(col)), h("p", { class: `head_text text-xs-medium` }, col.label), align === 'left' && h("div", { class: "table_head_icons" }, this.renderHeaderIcons(col)))));
322
+ }), this.showActionsColumn && (h("th", { class: {
323
+ actions_cell: true,
136
324
  sticky_right: this.stickyLastColumn,
137
- }, style: { width: '50px' } }, h("div", { key: 'ceaca7c706808da56bc1e6db35a2fcaf91845367', class: "empty_div" }))))), h("tbody", { key: '000c8bed9f3c13bc5a75024f12b97b15f01c0bfa' }, this.data.map((row, rowIndex) => (h("tr", { class: "table_body" }, this.columns.map((col, index) => (h("td", { class: `table_detail ${this.columns.length > 5 ? 'scrollable' : ''} ${this.stickyFirstColumn && index === 0 ? 'sticky_left' : ''}` }, this.renderCell(col, row)))), this.rowActions && (h("td", { style: { width: '50px' }, class: `table_detail actions-cell ${this.stickyLastColumn ? 'sticky_right' : ''}` }, h("gb-button", { id: `gb-table-trigger-${rowIndex}`, class: "dropdown_button", hierarchy: "tertiary_gray", size: "sm", icon: "only", iconLeading: true, iconLeadingSwap: "assets/more-horizontal.svg", onClick: () => this.toggleDropdown(rowIndex) }), this.openRowIndex === rowIndex && (h("gb-portal", { "anchor-id": `gb-table-trigger-${rowIndex}`, placement: "bottom-end", open: true }, h("div", { class: "dropdown_wrapper" }, this.rowActions.map(action => (h("gb-input-dropdown-menu-item", { type: "default", state: action.disabled ? StateEnum.Disabled : StateEnum.Default, "icon-leading": action.icon ? true : false, "icon-leading-swap": action.icon, onClick: () => {
325
+ has_border: this.isScrollable,
326
+ } }, h("div", { class: "empty_div" }))))), h("tbody", null, this.displayedData.map((row, rowIndex) => (h("tr", { class: "table_body" }, this.showCheckbox && (h("td", { class: "table_detail", style: { width: '50px' } }, h("gb-checkbox", { type: "checkbox", checked: this.selectedRowIds.has(row.id), indeterminate: false, size: "sm", onClick: () => this.toggleRow(row) }))), this.columns.map((col, index) => (h(Fragment, null, col.render ? (h("td", { style: { textAlign: col.align || 'left' }, class: `table_detail ${this.stickyFirstColumn && index === 0 ? 'sticky_left' : ''} ${this.isScrollable ? 'has_border' : ''}` }, col.render(row))) : (h("td", { style: { textAlign: col.align || 'left' }, class: `table_detail ${this.stickyFirstColumn && index === 0 ? 'sticky_left' : ''} ${this.isScrollable ? 'has_border' : ''}` }, this.renderCell(col, row)))))), this.showActionsColumn && (h("td", { class: { table_detail: true, actions_cell: true, sticky_right: this.stickyLastColumn, has_border: this.isScrollable }, style: { width: '50px' } }, h(Fragment, null, h("div", { class: "action_buttons" }, this.rowActions.map(action => (h(Fragment, null, action.type === 'dropdown' ? (h("gb-button", { id: `gb-table-trigger-${rowIndex}`, ref: el => (this.actionButtonRefs[rowIndex] = el), class: "dropdown_button", hierarchy: "tertiary_gray", size: "sm", icon: "only", iconLeading: true, iconLeadingSwap: "assets/more-horizontal.svg", onClick: () => this.toggleDropdown(rowIndex) })) : (h("gb-button", { hierarchy: "tertiary_gray", size: "sm", icon: "only", iconLeading: true, iconLeadingSwap: action.icon, onClick: () => this.handleAction(action.action, row) })))))), h(Fragment, null, this.openRowIndex === rowIndex && (h("gb-portal", { "anchor-id": `gb-table-trigger-${rowIndex}`, placement: "bottom-end", anchorEl: this.currentAnchorEl, open: true }, h("div", { class: "dropdown_wrapper" }, this.dropdownOptions.map(action => (
327
+ // <gb-input-dropdown-menu-item
328
+ // type="default"
329
+ // state={action.disabled ? StateEnum.Disabled : StateEnum.Default}
330
+ // icon-leading={action.icon ? true : false}
331
+ // icon-leading-swap={action.icon}
332
+ // >
333
+ // <p slot="name">{action.label}</p>
334
+ // </gb-input-dropdown-menu-item>
335
+ h("gb-dropdown-items-with-shortcut", { icon: action.icon ? true : false, state: action.disabled ? StateEnum.Disabled : StateEnum.Default, label: action.label, "icon-src": action.icon, onClick: () => {
138
336
  this.handleAction(action.action, row);
139
337
  this.openRowIndex = null;
140
- } }, h("p", { slot: "name" }, action.label))))))))))))))), h("gb-pagination", { key: '2cdf2789b9927fdffc4e6e0e1b78be3a77d7898a', type: "card_default", "current-page": "19", "total-pages": "20", breakpoint: "desktop", shape: "circle", onPageItemSelected: this.emitPaginationDetails.bind(this) })));
338
+ } })))))))))))))))));
339
+ }
340
+ validateMobilePositions() {
341
+ const positions = this.columns.map(c => { var _a; return (_a = c.mobile) === null || _a === void 0 ? void 0 : _a.position; }).filter(Boolean);
342
+ const duplicates = positions.filter((item, index) => positions.indexOf(item) !== index);
343
+ if (duplicates.length) {
344
+ console.warn('[gb-table] Duplicate mobile positions detected:', duplicates);
345
+ }
346
+ }
347
+ renderMobileView() {
348
+ return (h("div", { class: "mobile_wrapper" }, this.displayedData.map(row => {
349
+ const topLeft = this.columns.find(c => { var _a; return ((_a = c.mobile) === null || _a === void 0 ? void 0 : _a.position) === 'top_left'; });
350
+ const topRight = this.columns.find(c => { var _a; return ((_a = c.mobile) === null || _a === void 0 ? void 0 : _a.position) === 'top_right'; });
351
+ const bottomLeft = this.columns.find(c => { var _a; return ((_a = c.mobile) === null || _a === void 0 ? void 0 : _a.position) === 'bottom_left'; });
352
+ const bottomRight = this.columns.find(c => { var _a; return ((_a = c.mobile) === null || _a === void 0 ? void 0 : _a.position) === 'bottom_right'; });
353
+ return (h("div", { class: "mobile_card_wrapper", style: { paddingLeft: this.showCheckbox ? 'var(--spacing-4)' : '' } }, this.showCheckbox && (h("gb-checkbox", { style: { paddingTop: 'var(--spacing-6)' }, type: "checkbox", checked: this.selectedRowIds.has(row.id), indeterminate: false, size: "sm", onClick: () => this.toggleRow(row) })), h("div", { class: "mobile-card" }, h("div", { class: "mobile-row mobile-top" }, h("div", { class: "mobile-cell" }, h("p", { class: "top_left_text text-md-regular" }, topLeft && row[topLeft.key])), h("div", { class: "mobile-cell right" }, h("p", { class: "top_right_text text-md-semi-bold" }, topRight && row[topRight.key]))), h("div", { class: "mobile-row mobile-bottom" }, h("div", { class: "mobile-cell" }, h("p", { class: "bottom_left_text text-sm-regular" }, bottomLeft && row[bottomLeft.key])), h("div", { class: "mobile-cell right" }, bottomRight && this.renderCell(bottomRight, row))))));
354
+ })));
355
+ }
356
+ emitSearchValue(detail) {
357
+ this.inputValueChanged.emit(detail.detail);
358
+ }
359
+ emitDateChange(detail) {
360
+ this.dateChange.emit(detail.detail);
361
+ }
362
+ disconnectedCallback() {
363
+ window.removeEventListener('resize', this.checkViewport);
364
+ }
365
+ render() {
366
+ return (h("div", { key: 'd393c1812e06818c2a0dd266cfb8f1c849971b2c', class: `table_wrapper` }, h("gb-table-header", { key: '2398b782d79e6afccdd3047eb8b37cf23efbcbff', mode: this.tableHeaderConfig.datePickerMode, "table-heading": this.tableHeaderConfig.tableHeading, "table-heading-label": this.tableHeaderConfig.tableHeadingLabel, "show-search": this.tableHeaderConfig.showSearch, "show-date-filter": this.tableHeaderConfig.showDateFilter, "show-filter": this.tableHeaderConfig.showFilter, "show-export": this.tableHeaderConfig.showExport, "show-column-options": this.tableHeaderConfig.showColumnOptions, "show-refresh-button": this.tableHeaderConfig.showRefreshButton, onInputValueChanged: this.emitSearchValue.bind(this), onDateChange: this.emitDateChange.bind(this) }), this.data.length === 0 ? (h("div", { class: "empty_state_wrapper" }, h("gb-empty-state", { size: "sm", "main-text": this.emptyStateConfig.mainText, "supporting-text": this.emptyStateConfig.supportingText, color: this.emptyStateConfig.color, theme: this.emptyStateConfig.theme, "primary-button-icon-leading-swap": "assets/plus.svg", "illustration-icon": this.emptyStateConfig.illustrationIcon, background: true, "background-type": "grid", icon: "illustration", "illustration-style": "cloud" }))) : (h(Fragment, null, this.isMobile ? this.renderMobileView() : this.renderDesktopView())), this.paginationConfig && this.data.length > 0 && (h("gb-pagination", { key: '67b71bebffe1f1563520dd5eaac8cf0ffac6368a', "entries-dropdown-menu-position": this.paginationConfig.entriesDropdownMenuPosition, "page-size": this.paginationConfig.pageSize, "current-page": this.paginationConfig.paginationMode === 'internal' ? this.internalCurrentPage : this.paginationConfig.currentPage, "total-pages": this.totalPages, onPageItemSelected: this.handlePageChange.bind(this) }))));
141
367
  }
142
368
  static get is() { return "gb-table"; }
143
369
  static get encapsulation() { return "shadow"; }
@@ -175,7 +401,7 @@ export class GbTable {
175
401
  },
176
402
  "getter": false,
177
403
  "setter": false,
178
- "defaultValue": "[\r\n { key: 'id', label: '#', width: '70px' },\r\n { key: 'date', label: 'Date' },\r\n { key: 'name', label: 'Name' },\r\n { key: 'role', label: 'Role' },\r\n // { key: 'role', label: 'Role' },\r\n // { key: 'role', label: 'Role' },\r\n // { key: 'role', label: 'Role' },\r\n // { key: 'role', label: 'Role' },\r\n // { key: 'role', label: 'Role' },\r\n // { key: 'role', label: 'Role' },\r\n // { key: 'role', label: 'Role' },\r\n // { key: 'role', label: 'Role' },\r\n // { key: 'role', label: 'Role' },\r\n // { key: 'role', label: 'Role' },\r\n // { key: 'role', label: 'Role' },\r\n // { key: 'role', label: 'Role' },\r\n { key: 'level', label: 'Level' },\r\n { key: 'customer', label: 'Customer' },\r\n { key: 'amount', label: 'Amount' },\r\n {\r\n key: 'status',\r\n label: 'Status',\r\n cellComponent: 'gb-badge',\r\n cellProps: row => ({\r\n color: row.status === 'Completed' ? 'success' : 'error',\r\n type: 'badge_modern',\r\n size: 'sm',\r\n icon: 'dot',\r\n }),\r\n cellSlots: row => <p>{row.status}</p>,\r\n },\r\n // {\r\n // key: '',\r\n // label: '',\r\n // cellComponent: 'gb-button',\r\n // width: '50px',\r\n // cellProps: () => ({\r\n // hierarchy: 'tertiary_gray',\r\n // size: 'sm',\r\n // icon: 'only',\r\n // iconLeading: true,\r\n // iconLeadingSwap: 'assets/more-horizontal.svg',\r\n // }),\r\n // },\r\n ]"
404
+ "defaultValue": "[\r\n { key: 'id', label: '#', width: '70px', sortable: true, sortType: 'string', mobile: { position: 'top_left' } },\r\n { key: 'date', label: 'Date', mobile: { position: 'bottom_left' } },\r\n { key: 'name', label: 'Name', sortable: true, sortType: 'string', helpIcon: true, mobile: { position: 'top_right' } },\r\n { key: 'role', label: 'Role' },\r\n { key: 'amount', label: 'Amount', align: 'right', sortable: true, sortType: 'number' },\r\n {\r\n key: 'status',\r\n label: 'Status',\r\n render: row => (\r\n <gb-badge color={row.status === 'Completed' ? 'success' : 'error'} type=\"badge_modern\" size=\"sm\" icon=\"dot\">\r\n <p>{row.status}</p>\r\n </gb-badge>\r\n ),\r\n mobile: { position: 'bottom_right' },\r\n },\r\n // {\r\n // key: '',\r\n // label: '',\r\n // cellComponent: 'gb-button',\r\n // width: '50px',\r\n // cellProps: () => ({\r\n // hierarchy: 'tertiary_gray',\r\n // size: 'sm',\r\n // icon: 'only',\r\n // iconLeading: true,\r\n // iconLeadingSwap: 'assets/more-horizontal.svg',\r\n // }),\r\n // },\r\n ]"
179
405
  },
180
406
  "data": {
181
407
  "type": "unknown",
@@ -193,7 +419,92 @@ export class GbTable {
193
419
  },
194
420
  "getter": false,
195
421
  "setter": false,
196
- "defaultValue": "[\r\n {\r\n id: '#3057',\r\n date: 'Jan 3, 2022',\r\n name: 'Emmanuel Kadiri',\r\n role: 'Frontend developer',\r\n level: 'Today',\r\n customer: 'John Doe',\r\n amount: '$120.00',\r\n status: 'Completed',\r\n },\r\n {\r\n id: '#3058',\r\n date: 'Jan 4, 2022',\r\n customer: 'Sarah Johnson',\r\n amount: '$85.50',\r\n status: 'Pending',\r\n },\r\n {\r\n id: '#3059',\r\n date: 'Jan 5, 2022',\r\n customer: 'Michael Brown',\r\n amount: '$230.75',\r\n status: 'Cancelled',\r\n },\r\n {\r\n id: '#3060',\r\n date: 'Jan 6, 2022',\r\n customer: 'Emily Davis',\r\n amount: '$59.99',\r\n status: 'Completed',\r\n },\r\n {\r\n id: '#3061',\r\n date: 'Jan 7, 2022',\r\n customer: 'Daniel Wilson',\r\n amount: '$410.00',\r\n status: 'Pending',\r\n },\r\n ]"
422
+ "defaultValue": "[\r\n {\r\n id: '#3001',\r\n date: 'Jan 1, 2022',\r\n name: 'Emma Johnson',\r\n role: 'Frontend Developer',\r\n level: 'Today',\r\n customer: 'John Doe',\r\n amount: '$120.00',\r\n status: 'Completed',\r\n },\r\n { id: '#3002', date: 'Jan 2, 2022', name: 'Liam Smith', role: 'Backend Developer', level: 'Today', customer: 'Sarah Wilson', amount: '$85.50', status: 'Pending' },\r\n { id: '#3003', date: 'Jan 3, 2022', name: 'Olivia Brown', role: 'UI Designer', level: 'Today', customer: 'Michael Lee', amount: '$230.75', status: 'Cancelled' },\r\n { id: '#3004', date: 'Jan 4, 2022', name: 'Noah Davis', role: 'DevOps Engineer', level: 'Today', customer: 'Emily Clark', amount: '$59.99', status: 'Completed' },\r\n { id: '#3005', date: 'Jan 5, 2022', name: 'Ava Martinez', role: 'Product Manager', level: 'Today', customer: 'Daniel Harris', amount: '$410.00', status: 'Pending' },\r\n { id: '#3006', date: 'Jan 6, 2022', name: 'William Garcia', role: 'QA Engineer', level: 'Today', customer: 'Sophia Lewis', amount: '$150.20', status: 'Completed' },\r\n { id: '#3007', date: 'Jan 7, 2022', name: 'Isabella Rodriguez', role: 'Business Analyst', level: 'Today', customer: 'James Walker', amount: '$78.40', status: 'Pending' },\r\n { id: '#3008', date: 'Jan 8, 2022', name: 'James Wilson', role: 'Fullstack Developer', level: 'Today', customer: 'Mia Hall', amount: '$300.00', status: 'Completed' },\r\n { id: '#3009', date: 'Jan 9, 2022', name: 'Sophia Anderson', role: 'UX Researcher', level: 'Today', customer: 'Benjamin Allen', amount: '$95.60', status: 'Cancelled' },\r\n { id: '#3010', date: 'Jan 10, 2022', name: 'Benjamin Thomas', role: 'Mobile Developer', level: 'Today', customer: 'Charlotte Young', amount: '$210.10', status: 'Completed' },\r\n { id: '#3011', date: 'Jan 11, 2022', name: 'Mia Taylor', role: 'Data Analyst', level: 'Today', customer: 'Lucas King', amount: '$180.00', status: 'Pending' },\r\n { id: '#3012', date: 'Jan 12, 2022', name: 'Lucas Moore', role: 'Cloud Engineer', level: 'Today', customer: 'Amelia Scott', amount: '$420.75', status: 'Completed' },\r\n { id: '#3013', date: 'Jan 13, 2022', name: 'Charlotte Jackson', role: 'Security Engineer', level: 'Today', customer: 'Elijah Green', amount: '$65.90', status: 'Cancelled' },\r\n { id: '#3014', date: 'Jan 14, 2022', name: 'Elijah Martin', role: 'Technical Lead', level: 'Today', customer: 'Harper Adams', amount: '$510.30', status: 'Completed' },\r\n { id: '#3015', date: 'Jan 15, 2022', name: 'Amelia Lee', role: 'Scrum Master', level: 'Today', customer: 'Alexander Baker', amount: '$99.99', status: 'Pending' },\r\n { id: '#3016', date: 'Jan 16, 2022', name: 'Harper Perez', role: 'Frontend Developer', level: 'Today', customer: 'Ella Nelson', amount: '$275.45', status: 'Completed' },\r\n { id: '#3017', date: 'Jan 17, 2022', name: 'Alexander White', role: 'Backend Developer', level: 'Today', customer: 'Matthew Carter', amount: '$340.00', status: 'Pending' },\r\n { id: '#3018', date: 'Jan 18, 2022', name: 'Ella Harris', role: 'UI Designer', level: 'Today', customer: 'Avery Mitchell', amount: '$88.80', status: 'Completed' },\r\n { id: '#3019', date: 'Jan 19, 2022', name: 'Matthew Clark', role: 'DevOps Engineer', level: 'Today', customer: 'Evelyn Perez', amount: '$190.25', status: 'Cancelled' },\r\n { id: '#3020', date: 'Jan 20, 2022', name: 'Avery Lewis', role: 'Product Manager', level: 'Today', customer: 'Henry Roberts', amount: '$600.00', status: 'Completed' },\r\n { id: '#3021', date: 'Jan 21, 2022', name: 'Evelyn Walker', role: 'QA Engineer', level: 'Today', customer: 'Luna Turner', amount: '$72.30', status: 'Pending' },\r\n { id: '#3022', date: 'Jan 22, 2022', name: 'Henry Hall', role: 'Business Analyst', level: 'Today', customer: 'Jack Phillips', amount: '$310.40', status: 'Completed' },\r\n { id: '#3023', date: 'Jan 23, 2022', name: 'Luna Allen', role: 'Fullstack Developer', level: 'Today', customer: 'Sofia Campbell', amount: '$145.00', status: 'Cancelled' },\r\n { id: '#3024', date: 'Jan 24, 2022', name: 'Jack Young', role: 'UX Researcher', level: 'Today', customer: 'David Parker', amount: '$260.70', status: 'Completed' },\r\n { id: '#3025', date: 'Jan 25, 2022', name: 'Sofia Hernandez', role: 'Mobile Developer', level: 'Today', customer: 'Grace Evans', amount: '$89.10', status: 'Pending' },\r\n { id: '#3026', date: 'Jan 26, 2022', name: 'David King', role: 'Data Analyst', level: 'Today', customer: 'Samuel Edwards', amount: '$410.90', status: 'Completed' },\r\n { id: '#3027', date: 'Jan 27, 2022', name: 'Grace Wright', role: 'Cloud Engineer', level: 'Today', customer: 'Chloe Collins', amount: '$130.55', status: 'Cancelled' },\r\n { id: '#3028', date: 'Jan 28, 2022', name: 'Samuel Scott', role: 'Security Engineer', level: 'Today', customer: 'Victoria Stewart', amount: '$555.00', status: 'Completed' },\r\n { id: '#3029', date: 'Jan 29, 2022', name: 'Chloe Green', role: 'Technical Lead', level: 'Today', customer: 'Nathan Morris', amount: '$205.25', status: 'Pending' },\r\n { id: '#3030', date: 'Jan 30, 2022', name: 'Nathan Adams', role: 'Scrum Master', level: 'Today', customer: 'Zoe Rogers', amount: '$320.80', status: 'Completed' },\r\n ]"
423
+ },
424
+ "tableHeaderConfig": {
425
+ "type": "unknown",
426
+ "mutable": false,
427
+ "complexType": {
428
+ "original": "{\r\n tableHeading: boolean;\r\n tableHeadingLabel: string;\r\n showDateFilter: boolean;\r\n showFilter: boolean;\r\n showColumnOptions: boolean;\r\n showSearch: boolean;\r\n showExport: boolean;\r\n showRefreshButton: boolean;\r\n datePickerMode: 'single' | 'range';\r\n }",
429
+ "resolved": "{ tableHeading: boolean; tableHeadingLabel: string; showDateFilter: boolean; showFilter: boolean; showColumnOptions: boolean; showSearch: boolean; showExport: boolean; showRefreshButton: boolean; datePickerMode: \"single\" | \"range\"; }",
430
+ "references": {}
431
+ },
432
+ "required": false,
433
+ "optional": false,
434
+ "docs": {
435
+ "tags": [],
436
+ "text": ""
437
+ },
438
+ "getter": false,
439
+ "setter": false,
440
+ "defaultValue": "{\r\n tableHeading: false,\r\n tableHeadingLabel: 'Suspicious outflows',\r\n showDateFilter: true,\r\n showFilter: true,\r\n showColumnOptions: true,\r\n showSearch: true,\r\n showExport: true,\r\n showRefreshButton: true,\r\n datePickerMode: 'single',\r\n }"
441
+ },
442
+ "paginationConfig": {
443
+ "type": "unknown",
444
+ "mutable": false,
445
+ "complexType": {
446
+ "original": "{\r\n paginationMode: 'internal' | 'external';\r\n entriesDropdownMenuPosition: 'top' | 'bottom';\r\n currentPage?: number;\r\n pageSize?: number;\r\n totalItems?: number;\r\n }",
447
+ "resolved": "{ paginationMode: \"external\" | \"internal\"; entriesDropdownMenuPosition: \"top\" | \"bottom\"; currentPage?: number; pageSize?: number; totalItems?: number; }",
448
+ "references": {}
449
+ },
450
+ "required": false,
451
+ "optional": false,
452
+ "docs": {
453
+ "tags": [],
454
+ "text": ""
455
+ },
456
+ "getter": false,
457
+ "setter": false,
458
+ "defaultValue": "{\r\n paginationMode: 'internal',\r\n entriesDropdownMenuPosition: 'top',\r\n currentPage: 1,\r\n pageSize: 10,\r\n totalItems: null,\r\n }"
459
+ },
460
+ "emptyStateConfig": {
461
+ "type": "unknown",
462
+ "mutable": false,
463
+ "complexType": {
464
+ "original": "{ mainText: string; supportingText?: string; color?: GeneralColors; illustrationIcon?: string; theme?: ThemeTypes; primaryButtonIcon?: string }",
465
+ "resolved": "{ mainText: string; supportingText?: string; color?: GeneralColors; illustrationIcon?: string; theme?: ThemeTypes; primaryButtonIcon?: string; }",
466
+ "references": {
467
+ "GeneralColors": {
468
+ "location": "import",
469
+ "path": "../../models/reusableModels",
470
+ "id": "src/models/reusableModels.ts::GeneralColors"
471
+ },
472
+ "ThemeTypes": {
473
+ "location": "import",
474
+ "path": "../../models/reusableModels",
475
+ "id": "src/models/reusableModels.ts::ThemeTypes"
476
+ }
477
+ }
478
+ },
479
+ "required": false,
480
+ "optional": false,
481
+ "docs": {
482
+ "tags": [],
483
+ "text": ""
484
+ },
485
+ "getter": false,
486
+ "setter": false,
487
+ "defaultValue": "{\r\n mainText: 'No data available',\r\n supportingText: 'Try adjusting your filters or check back later.',\r\n color: 'gray',\r\n illustrationIcon: 'assets/alert-circle.svg',\r\n theme: 'light',\r\n }"
488
+ },
489
+ "showActionsColumn": {
490
+ "type": "boolean",
491
+ "mutable": false,
492
+ "complexType": {
493
+ "original": "boolean",
494
+ "resolved": "boolean",
495
+ "references": {}
496
+ },
497
+ "required": false,
498
+ "optional": false,
499
+ "docs": {
500
+ "tags": [],
501
+ "text": ""
502
+ },
503
+ "getter": false,
504
+ "setter": false,
505
+ "reflect": false,
506
+ "attribute": "show-actions-column",
507
+ "defaultValue": "true"
197
508
  },
198
509
  "rowActions": {
199
510
  "type": "unknown",
@@ -210,6 +521,30 @@ export class GbTable {
210
521
  }
211
522
  },
212
523
  "required": false,
524
+ "optional": false,
525
+ "docs": {
526
+ "tags": [],
527
+ "text": ""
528
+ },
529
+ "getter": false,
530
+ "setter": false,
531
+ "defaultValue": "[\r\n { label: '', action: '', icon: 'assets/more-horizontal.svg', type: 'dropdown' },\r\n // { label: 'View Details', action: 'view_details', icon: 'assets/view.svg', type: 'button' },\r\n // { label: 'Edit', action: 'edit', icon: 'assets/pencil-edit-01.svg', type: 'button' },\r\n ]"
532
+ },
533
+ "dropdownOptions": {
534
+ "type": "unknown",
535
+ "mutable": false,
536
+ "complexType": {
537
+ "original": "DropdownOption[]",
538
+ "resolved": "DropdownOption[]",
539
+ "references": {
540
+ "DropdownOption": {
541
+ "location": "import",
542
+ "path": "../../models/reusableModels",
543
+ "id": "src/models/reusableModels.ts::DropdownOption"
544
+ }
545
+ }
546
+ },
547
+ "required": false,
213
548
  "optional": true,
214
549
  "docs": {
215
550
  "tags": [],
@@ -217,7 +552,7 @@ export class GbTable {
217
552
  },
218
553
  "getter": false,
219
554
  "setter": false,
220
- "defaultValue": "[{ label: 'View', action: 'view', disabled: true }]"
555
+ "defaultValue": "[\r\n { label: 'View', action: 'view', icon: 'assets/view.svg', disabled: false },\r\n { label: 'Edit', action: 'edit', icon: 'assets/pencil-edit-01.svg', disabled: false },\r\n { label: 'Delete', action: 'delete', icon: 'assets/delete-02.svg', disabled: true },\r\n ]"
221
556
  },
222
557
  "stickyFirstColumn": {
223
558
  "type": "boolean",
@@ -237,7 +572,7 @@ export class GbTable {
237
572
  "setter": false,
238
573
  "reflect": false,
239
574
  "attribute": "sticky-first-column",
240
- "defaultValue": "false"
575
+ "defaultValue": "true"
241
576
  },
242
577
  "stickyLastColumn": {
243
578
  "type": "boolean",
@@ -278,12 +613,40 @@ export class GbTable {
278
613
  "reflect": false,
279
614
  "attribute": "actions-type",
280
615
  "defaultValue": "'none'"
616
+ },
617
+ "showCheckbox": {
618
+ "type": "boolean",
619
+ "mutable": false,
620
+ "complexType": {
621
+ "original": "boolean",
622
+ "resolved": "boolean",
623
+ "references": {}
624
+ },
625
+ "required": false,
626
+ "optional": false,
627
+ "docs": {
628
+ "tags": [],
629
+ "text": ""
630
+ },
631
+ "getter": false,
632
+ "setter": false,
633
+ "reflect": false,
634
+ "attribute": "show-checkbox",
635
+ "defaultValue": "false"
281
636
  }
282
637
  };
283
638
  }
284
639
  static get states() {
285
640
  return {
286
- "openRowIndex": {}
641
+ "internalCurrentPage": {},
642
+ "internalPageSize": {},
643
+ "openRowIndex": {},
644
+ "sortKey": {},
645
+ "sortDirection": {},
646
+ "selectedRowIds": {},
647
+ "breakpoint": {},
648
+ "isMobile": {},
649
+ "isScrollable": {}
287
650
  };
288
651
  }
289
652
  static get events() {
@@ -317,6 +680,72 @@ export class GbTable {
317
680
  "resolved": "{ pageSize: any; pageNumber: number; }",
318
681
  "references": {}
319
682
  }
683
+ }, {
684
+ "method": "selectionChanged",
685
+ "name": "selectionChanged",
686
+ "bubbles": true,
687
+ "cancelable": true,
688
+ "composed": true,
689
+ "docs": {
690
+ "tags": [],
691
+ "text": ""
692
+ },
693
+ "complexType": {
694
+ "original": "any[]",
695
+ "resolved": "any[]",
696
+ "references": {}
697
+ }
698
+ }, {
699
+ "method": "inputValueChanged",
700
+ "name": "inputValueChanged",
701
+ "bubbles": true,
702
+ "cancelable": true,
703
+ "composed": true,
704
+ "docs": {
705
+ "tags": [],
706
+ "text": ""
707
+ },
708
+ "complexType": {
709
+ "original": "void",
710
+ "resolved": "void",
711
+ "references": {}
712
+ }
713
+ }, {
714
+ "method": "dateChange",
715
+ "name": "dateChange",
716
+ "bubbles": true,
717
+ "cancelable": true,
718
+ "composed": true,
719
+ "docs": {
720
+ "tags": [],
721
+ "text": ""
722
+ },
723
+ "complexType": {
724
+ "original": "string | string[]",
725
+ "resolved": "string | string[]",
726
+ "references": {}
727
+ }
728
+ }];
729
+ }
730
+ static get watchers() {
731
+ return [{
732
+ "propName": "data",
733
+ "methodName": "onDataChange"
734
+ }, {
735
+ "propName": "totalItems",
736
+ "methodName": "onTotalItemsChange"
737
+ }, {
738
+ "propName": "columns",
739
+ "methodName": "validateMobilePositions"
740
+ }];
741
+ }
742
+ static get listeners() {
743
+ return [{
744
+ "name": "resize",
745
+ "method": "checkViewport",
746
+ "target": "window",
747
+ "capture": false,
748
+ "passive": true
320
749
  }];
321
750
  }
322
751
  }