@economic/taco 2.13.0 → 2.14.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (211) hide show
  1. package/dist/components/Field/Field.d.ts +4 -2
  2. package/dist/components/Icon/components/Location.d.ts +3 -0
  3. package/dist/components/Icon/components/index.d.ts +1 -1
  4. package/dist/components/Input/Input.d.ts +1 -1
  5. package/dist/components/Menu/components/Item.d.ts +1 -1
  6. package/dist/components/Menu/components/Link.d.ts +1 -1
  7. package/dist/components/Navigation2/components/Link.d.ts +1 -1
  8. package/dist/components/Provider/Localization.d.ts +0 -113
  9. package/dist/components/Select2/components/Option.d.ts +2 -2
  10. package/dist/components/Select2/components/Search.d.ts +1 -1
  11. package/dist/components/Table3/components/columns/styles.d.ts +2 -2
  12. package/dist/components/Table3/components/toolbar/Filter/filters/components/Filter.d.ts +4 -4
  13. package/dist/components/Table3/components/toolbar/Filter/filters/components/FilterColumn.d.ts +3 -2
  14. package/dist/components/Table3/components/toolbar/Filter/filters/components/Placeholder.d.ts +3 -2
  15. package/dist/components/Table3/components/toolbar/FontSize.d.ts +4 -0
  16. package/dist/components/Table3/hooks/useCssGrid.d.ts +2 -1
  17. package/dist/components/Table3/hooks/useTable.d.ts +1 -1
  18. package/dist/components/Table3/types.d.ts +1 -1
  19. package/dist/components/Tag/Tag.d.ts +1 -1
  20. package/dist/esm/packages/taco/src/components/Field/Field.js +6 -4
  21. package/dist/esm/packages/taco/src/components/Field/Field.js.map +1 -1
  22. package/dist/esm/packages/taco/src/components/Icon/components/Location.js +17 -0
  23. package/dist/esm/packages/taco/src/components/Icon/components/Location.js.map +1 -0
  24. package/dist/esm/packages/taco/src/components/Icon/components/index.js +2 -0
  25. package/dist/esm/packages/taco/src/components/Icon/components/index.js.map +1 -1
  26. package/dist/esm/packages/taco/src/components/Provider/Localization.js +0 -110
  27. package/dist/esm/packages/taco/src/components/Provider/Localization.js.map +1 -1
  28. package/dist/esm/packages/taco/src/components/Select2/components/Edit.js +1 -1
  29. package/dist/esm/packages/taco/src/components/Select2/components/Edit.js.map +1 -1
  30. package/dist/esm/packages/taco/src/components/Select2/components/Option.js +1 -1
  31. package/dist/esm/packages/taco/src/components/Select2/components/Option.js.map +1 -1
  32. package/dist/esm/packages/taco/src/components/Select2/components/Search.js +1 -1
  33. package/dist/esm/packages/taco/src/components/Select2/components/Search.js.map +1 -1
  34. package/dist/esm/packages/taco/src/components/Table3/Table3.js +5 -4
  35. package/dist/esm/packages/taco/src/components/Table3/Table3.js.map +1 -1
  36. package/dist/esm/packages/taco/src/components/Table3/components/columns/cell/DisplayCell.js +2 -5
  37. package/dist/esm/packages/taco/src/components/Table3/components/columns/cell/DisplayCell.js.map +1 -1
  38. package/dist/esm/packages/taco/src/components/Table3/components/columns/cell/EditingCell.js +1 -4
  39. package/dist/esm/packages/taco/src/components/Table3/components/columns/cell/EditingCell.js.map +1 -1
  40. package/dist/esm/packages/taco/src/components/Table3/components/columns/cell/EditingControl.js.map +1 -1
  41. package/dist/esm/packages/taco/src/components/Table3/components/columns/header/Menu.js +6 -1
  42. package/dist/esm/packages/taco/src/components/Table3/components/columns/header/Menu.js.map +1 -1
  43. package/dist/esm/packages/taco/src/components/Table3/components/columns/internal/Actions.js +3 -2
  44. package/dist/esm/packages/taco/src/components/Table3/components/columns/internal/Actions.js.map +1 -1
  45. package/dist/esm/packages/taco/src/components/Table3/components/columns/styles.js +14 -2
  46. package/dist/esm/packages/taco/src/components/Table3/components/columns/styles.js.map +1 -1
  47. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/ColumnSettings.js +2 -2
  48. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/Filters.js +15 -8
  49. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/Filters.js.map +1 -1
  50. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/components/Filter.js +2 -2
  51. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/components/Filter.js.map +1 -1
  52. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/components/FilterColumn.js +12 -3
  53. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/components/FilterColumn.js.map +1 -1
  54. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/components/FilterComparator.js +0 -1
  55. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/components/FilterComparator.js.map +1 -1
  56. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/components/FilterValue.js +5 -3
  57. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/components/FilterValue.js.map +1 -1
  58. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/components/Placeholder.js +2 -2
  59. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/components/Placeholder.js.map +1 -1
  60. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/FontSize.js +9 -4
  61. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/FontSize.js.map +1 -1
  62. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/PrintButton/PrintIFrame.js +2 -3
  63. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/PrintButton/PrintIFrame.js.map +1 -1
  64. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/RowHeight.js +3 -2
  65. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/RowHeight.js.map +1 -1
  66. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Settings.js +1 -1
  67. package/dist/esm/packages/taco/src/components/Table3/hooks/features/useSettings.js +6 -7
  68. package/dist/esm/packages/taco/src/components/Table3/hooks/features/useSettings.js.map +1 -1
  69. package/dist/esm/packages/taco/src/components/Table3/hooks/listeners/useSettingsStateListener.js +48 -0
  70. package/dist/esm/packages/taco/src/components/Table3/hooks/listeners/useSettingsStateListener.js.map +1 -1
  71. package/dist/esm/packages/taco/src/components/Table3/hooks/useConvertChildrenToColumns.js +4 -2
  72. package/dist/esm/packages/taco/src/components/Table3/hooks/useConvertChildrenToColumns.js.map +1 -1
  73. package/dist/esm/packages/taco/src/components/Table3/hooks/useCssGrid.js +6 -5
  74. package/dist/esm/packages/taco/src/components/Table3/hooks/useCssGrid.js.map +1 -1
  75. package/dist/esm/packages/taco/src/components/Table3/hooks/useCssVars.js +11 -9
  76. package/dist/esm/packages/taco/src/components/Table3/hooks/useCssVars.js.map +1 -1
  77. package/dist/esm/packages/taco/src/components/Table3/hooks/useTable.js.map +1 -1
  78. package/dist/esm/packages/taco/src/components/Table3/types.js.map +1 -1
  79. package/dist/esm/packages/taco/src/index.js +1 -2
  80. package/dist/esm/packages/taco/src/index.js.map +1 -1
  81. package/dist/esm/packages/taco/src/utils/dom.js +1 -2
  82. package/dist/esm/packages/taco/src/utils/dom.js.map +1 -1
  83. package/dist/index.d.ts +0 -1
  84. package/dist/taco.cjs.development.js +485 -4052
  85. package/dist/taco.cjs.development.js.map +1 -1
  86. package/dist/taco.cjs.production.min.js +1 -1
  87. package/dist/taco.cjs.production.min.js.map +1 -1
  88. package/package.json +2 -2
  89. package/tailwind.config.js +3 -0
  90. package/types.json +13748 -32551
  91. package/dist/components/Table2/Table2.d.ts +0 -130
  92. package/dist/components/Table2/components/BatchActionsMenu.d.ts +0 -10
  93. package/dist/components/Table2/components/ColumnSettingsButton.d.ts +0 -6
  94. package/dist/components/Table2/components/EditModeButton.d.ts +0 -8
  95. package/dist/components/Table2/components/RowDensityButton.d.ts +0 -7
  96. package/dist/components/Table2/components/Search.d.ts +0 -3
  97. package/dist/components/Table2/components/ShortcutsGuideButton.d.ts +0 -7
  98. package/dist/components/Table2/components/column/Base.d.ts +0 -14
  99. package/dist/components/Table2/components/column/Cell.d.ts +0 -15
  100. package/dist/components/Table2/components/column/Footer.d.ts +0 -9
  101. package/dist/components/Table2/components/column/Header.d.ts +0 -11
  102. package/dist/components/Table2/components/column/Indicator.d.ts +0 -17
  103. package/dist/components/Table2/components/column/ValidationError.d.ts +0 -5
  104. package/dist/components/Table2/components/column/utils.d.ts +0 -3
  105. package/dist/components/Table2/components/filters/FiltersButton.d.ts +0 -7
  106. package/dist/components/Table2/components/filters/components/Column.d.ts +0 -11
  107. package/dist/components/Table2/components/filters/components/ColumnFilter.d.ts +0 -10
  108. package/dist/components/Table2/components/filters/components/Comparator.d.ts +0 -11
  109. package/dist/components/Table2/components/filters/components/EmptyFilter.d.ts +0 -13
  110. package/dist/components/Table2/components/filters/components/InferredControl.d.ts +0 -10
  111. package/dist/components/Table2/components/row/Context.d.ts +0 -24
  112. package/dist/components/Table2/components/row/ExpandedRow.d.ts +0 -6
  113. package/dist/components/Table2/components/row/Row.d.ts +0 -2
  114. package/dist/components/Table2/hooks/listeners/useActiveCellStateListener.d.ts +0 -3
  115. package/dist/components/Table2/hooks/listeners/useActiveRowStateListener.d.ts +0 -3
  116. package/dist/components/Table2/hooks/listeners/useColumnOffsetStateListener.d.ts +0 -3
  117. package/dist/components/Table2/hooks/listeners/useFilterStateListener.d.ts +0 -3
  118. package/dist/components/Table2/hooks/listeners/useRowSelectionListener.d.ts +0 -3
  119. package/dist/components/Table2/hooks/listeners/useSettingsStateListener.d.ts +0 -3
  120. package/dist/components/Table2/hooks/useActiveCell.d.ts +0 -26
  121. package/dist/components/Table2/hooks/useActiveRow.d.ts +0 -10
  122. package/dist/components/Table2/hooks/useColumnDefinitions.d.ts +0 -37
  123. package/dist/components/Table2/hooks/useEditMode.d.ts +0 -28
  124. package/dist/components/Table2/hooks/useGridTemplate.d.ts +0 -2
  125. package/dist/components/Table2/hooks/useTable.d.ts +0 -46
  126. package/dist/components/Table2/hooks/useTableShortcuts.d.ts +0 -2
  127. package/dist/components/Table2/hooks/useVirtualiser.d.ts +0 -23
  128. package/dist/components/Table2/types.d.ts +0 -148
  129. package/dist/components/Table2/utilities/cell.d.ts +0 -14
  130. package/dist/components/Table2/utilities/columns.d.ts +0 -16
  131. package/dist/components/Table2/utilities/filterFn.d.ts +0 -3
  132. package/dist/esm/packages/taco/src/components/Table2/Table2.js +0 -422
  133. package/dist/esm/packages/taco/src/components/Table2/Table2.js.map +0 -1
  134. package/dist/esm/packages/taco/src/components/Table2/components/BatchActionsMenu.js +0 -83
  135. package/dist/esm/packages/taco/src/components/Table2/components/BatchActionsMenu.js.map +0 -1
  136. package/dist/esm/packages/taco/src/components/Table2/components/ColumnSettingsButton.js +0 -116
  137. package/dist/esm/packages/taco/src/components/Table2/components/ColumnSettingsButton.js.map +0 -1
  138. package/dist/esm/packages/taco/src/components/Table2/components/EditModeButton.js +0 -81
  139. package/dist/esm/packages/taco/src/components/Table2/components/EditModeButton.js.map +0 -1
  140. package/dist/esm/packages/taco/src/components/Table2/components/RowDensityButton.js +0 -47
  141. package/dist/esm/packages/taco/src/components/Table2/components/RowDensityButton.js.map +0 -1
  142. package/dist/esm/packages/taco/src/components/Table2/components/Search.js +0 -62
  143. package/dist/esm/packages/taco/src/components/Table2/components/Search.js.map +0 -1
  144. package/dist/esm/packages/taco/src/components/Table2/components/column/Base.js +0 -32
  145. package/dist/esm/packages/taco/src/components/Table2/components/column/Base.js.map +0 -1
  146. package/dist/esm/packages/taco/src/components/Table2/components/column/Cell.js +0 -605
  147. package/dist/esm/packages/taco/src/components/Table2/components/column/Cell.js.map +0 -1
  148. package/dist/esm/packages/taco/src/components/Table2/components/column/Footer.js +0 -32
  149. package/dist/esm/packages/taco/src/components/Table2/components/column/Footer.js.map +0 -1
  150. package/dist/esm/packages/taco/src/components/Table2/components/column/Header.js +0 -243
  151. package/dist/esm/packages/taco/src/components/Table2/components/column/Header.js.map +0 -1
  152. package/dist/esm/packages/taco/src/components/Table2/components/column/Indicator.js +0 -73
  153. package/dist/esm/packages/taco/src/components/Table2/components/column/Indicator.js.map +0 -1
  154. package/dist/esm/packages/taco/src/components/Table2/components/column/ValidationError.js +0 -30
  155. package/dist/esm/packages/taco/src/components/Table2/components/column/ValidationError.js.map +0 -1
  156. package/dist/esm/packages/taco/src/components/Table2/components/column/utils.js +0 -39
  157. package/dist/esm/packages/taco/src/components/Table2/components/column/utils.js.map +0 -1
  158. package/dist/esm/packages/taco/src/components/Table2/components/filters/FiltersButton.js +0 -155
  159. package/dist/esm/packages/taco/src/components/Table2/components/filters/FiltersButton.js.map +0 -1
  160. package/dist/esm/packages/taco/src/components/Table2/components/filters/components/Column.js +0 -31
  161. package/dist/esm/packages/taco/src/components/Table2/components/filters/components/Column.js.map +0 -1
  162. package/dist/esm/packages/taco/src/components/Table2/components/filters/components/ColumnFilter.js +0 -129
  163. package/dist/esm/packages/taco/src/components/Table2/components/filters/components/ColumnFilter.js.map +0 -1
  164. package/dist/esm/packages/taco/src/components/Table2/components/filters/components/Comparator.js +0 -68
  165. package/dist/esm/packages/taco/src/components/Table2/components/filters/components/Comparator.js.map +0 -1
  166. package/dist/esm/packages/taco/src/components/Table2/components/filters/components/EmptyFilter.js +0 -63
  167. package/dist/esm/packages/taco/src/components/Table2/components/filters/components/EmptyFilter.js.map +0 -1
  168. package/dist/esm/packages/taco/src/components/Table2/components/filters/components/InferredControl.js +0 -99
  169. package/dist/esm/packages/taco/src/components/Table2/components/filters/components/InferredControl.js.map +0 -1
  170. package/dist/esm/packages/taco/src/components/Table2/components/row/Context.js +0 -58
  171. package/dist/esm/packages/taco/src/components/Table2/components/row/Context.js.map +0 -1
  172. package/dist/esm/packages/taco/src/components/Table2/components/row/ExpandedRow.js +0 -36
  173. package/dist/esm/packages/taco/src/components/Table2/components/row/ExpandedRow.js.map +0 -1
  174. package/dist/esm/packages/taco/src/components/Table2/components/row/Row.js +0 -44
  175. package/dist/esm/packages/taco/src/components/Table2/components/row/Row.js.map +0 -1
  176. package/dist/esm/packages/taco/src/components/Table2/hooks/listeners/useActiveRowStateListener.js +0 -19
  177. package/dist/esm/packages/taco/src/components/Table2/hooks/listeners/useActiveRowStateListener.js.map +0 -1
  178. package/dist/esm/packages/taco/src/components/Table2/hooks/listeners/useColumnOffsetStateListener.js +0 -28
  179. package/dist/esm/packages/taco/src/components/Table2/hooks/listeners/useColumnOffsetStateListener.js.map +0 -1
  180. package/dist/esm/packages/taco/src/components/Table2/hooks/listeners/useFilterStateListener.js +0 -12
  181. package/dist/esm/packages/taco/src/components/Table2/hooks/listeners/useFilterStateListener.js.map +0 -1
  182. package/dist/esm/packages/taco/src/components/Table2/hooks/listeners/useRowSelectionListener.js +0 -18
  183. package/dist/esm/packages/taco/src/components/Table2/hooks/listeners/useRowSelectionListener.js.map +0 -1
  184. package/dist/esm/packages/taco/src/components/Table2/hooks/listeners/useSettingsStateListener.js +0 -25
  185. package/dist/esm/packages/taco/src/components/Table2/hooks/listeners/useSettingsStateListener.js.map +0 -1
  186. package/dist/esm/packages/taco/src/components/Table2/hooks/useActiveRow.js +0 -33
  187. package/dist/esm/packages/taco/src/components/Table2/hooks/useActiveRow.js.map +0 -1
  188. package/dist/esm/packages/taco/src/components/Table2/hooks/useColumnDefinitions.js +0 -122
  189. package/dist/esm/packages/taco/src/components/Table2/hooks/useColumnDefinitions.js.map +0 -1
  190. package/dist/esm/packages/taco/src/components/Table2/hooks/useEditMode.js +0 -112
  191. package/dist/esm/packages/taco/src/components/Table2/hooks/useEditMode.js.map +0 -1
  192. package/dist/esm/packages/taco/src/components/Table2/hooks/useGridTemplate.js +0 -34
  193. package/dist/esm/packages/taco/src/components/Table2/hooks/useGridTemplate.js.map +0 -1
  194. package/dist/esm/packages/taco/src/components/Table2/hooks/useTable.js +0 -222
  195. package/dist/esm/packages/taco/src/components/Table2/hooks/useTable.js.map +0 -1
  196. package/dist/esm/packages/taco/src/components/Table2/hooks/useTableShortcuts.js +0 -46
  197. package/dist/esm/packages/taco/src/components/Table2/hooks/useTableShortcuts.js.map +0 -1
  198. package/dist/esm/packages/taco/src/components/Table2/hooks/useVirtualiser.js +0 -48
  199. package/dist/esm/packages/taco/src/components/Table2/hooks/useVirtualiser.js.map +0 -1
  200. package/dist/esm/packages/taco/src/components/Table2/types.js +0 -18
  201. package/dist/esm/packages/taco/src/components/Table2/types.js.map +0 -1
  202. package/dist/esm/packages/taco/src/components/Table2/utilities/cell.js +0 -41
  203. package/dist/esm/packages/taco/src/components/Table2/utilities/cell.js.map +0 -1
  204. package/dist/esm/packages/taco/src/components/Table2/utilities/columns.js +0 -387
  205. package/dist/esm/packages/taco/src/components/Table2/utilities/columns.js.map +0 -1
  206. package/dist/esm/packages/taco/src/components/Table2/utilities/filterFn.js +0 -100
  207. package/dist/esm/packages/taco/src/components/Table2/utilities/filterFn.js.map +0 -1
  208. package/dist/esm/packages/taco/src/components/Truncate/Truncate.js +0 -32
  209. package/dist/esm/packages/taco/src/components/Truncate/Truncate.js.map +0 -1
  210. package/dist/esm/packages/taco/src/utils/hooks/useTruncated.js +0 -20
  211. package/dist/esm/packages/taco/src/utils/hooks/useTruncated.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"Base.js","sources":["../../../../../../../../../src/components/Table2/components/column/Base.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'classnames';\nimport { Column as RTColumn, Table as RTTable, TableMeta } from '@tanstack/react-table';\nimport { getCellAlignmentClasses, getFrozenShadowClasses } from '../../utilities/cell';\n\nexport type ColumnBaseProps<TType = any> = React.HTMLAttributes<HTMLDivElement> & {\n column: RTColumn<TType, any>;\n frozenColumnIds: string[];\n scrolled: boolean;\n table: RTTable<TType>;\n};\n\nexport const ColumnBase = React.forwardRef<HTMLDivElement, ColumnBaseProps>(function Table2ColumnBase(props, ref) {\n const { column, frozenColumnIds, scrolled, style, table, ...attributes } = props;\n const isFrozenColumn = !!column.getIsPinned();\n const meta = table.options.meta as TableMeta<any>;\n const left = meta.columnOffsets[column.id];\n\n const className = cn(\n 'border-grey-300',\n getCellAlignmentClasses(column.columnDef.meta?.align),\n getFrozenShadowClasses(column, frozenColumnIds, scrolled),\n {\n 'cursor-pointer': !!attributes.onClick,\n },\n attributes.className\n );\n\n return (\n <div\n {...attributes}\n className={className}\n style={{ ...style, left: isFrozenColumn && Number.isInteger(left) ? left : undefined }}\n ref={ref}\n />\n );\n});\n"],"names":["ColumnBase","React","forwardRef","Table2ColumnBase","props","ref","column","frozenColumnIds","scrolled","style","table","attributes","isFrozenColumn","getIsPinned","meta","options","left","columnOffsets","id","className","cn","getCellAlignmentClasses","_column$columnDef$met","columnDef","align","getFrozenShadowClasses","onClick","Number","isInteger","undefined"],"mappings":";;;;MAYaA,UAAU,gBAAGC,cAAK,CAACC,UAAU,CAAkC,SAASC,gBAAgBA,CAACC,KAAK,EAAEC,GAAG;;EAC5G,MAAM;IAAEC,MAAM;IAAEC,eAAe;IAAEC,QAAQ;IAAEC,KAAK;IAAEC,KAAK;IAAE,GAAGC;GAAY,GAAGP,KAAK;EAChF,MAAMQ,cAAc,GAAG,CAAC,CAACN,MAAM,CAACO,WAAW,EAAE;EAC7C,MAAMC,IAAI,GAAGJ,KAAK,CAACK,OAAO,CAACD,IAAsB;EACjD,MAAME,IAAI,GAAGF,IAAI,CAACG,aAAa,CAACX,MAAM,CAACY,EAAE,CAAC;EAE1C,MAAMC,SAAS,GAAGC,EAAE,CAChB,iBAAiB,EACjBC,uBAAuB,EAAAC,qBAAA,GAAChB,MAAM,CAACiB,SAAS,CAACT,IAAI,cAAAQ,qBAAA,uBAArBA,qBAAA,CAAuBE,KAAK,CAAC,EACrDC,sBAAsB,CAACnB,MAAM,EAAEC,eAAe,EAAEC,QAAQ,CAAC,EACzD;IACI,gBAAgB,EAAE,CAAC,CAACG,UAAU,CAACe;GAClC,EACDf,UAAU,CAACQ,SAAS,CACvB;EAED,oBACIlB,sDACQU,UAAU;IACdQ,SAAS,EAAEA,SAAS;IACpBV,KAAK,EAAE;MAAE,GAAGA,KAAK;MAAEO,IAAI,EAAEJ,cAAc,IAAIe,MAAM,CAACC,SAAS,CAACZ,IAAI,CAAC,GAAGA,IAAI,GAAGa;KAAW;IACtFxB,GAAG,EAAEA;KACP;AAEV,CAAC;;;;"}
@@ -1,605 +0,0 @@
1
- import React__default from 'react';
2
- import cn from 'classnames';
3
- import { useMergedRef } from '../../../../hooks/useMergedRef.js';
4
- import { Input } from '../../../Input/Input.js';
5
- import { Datepicker } from '../../../Datepicker/Datepicker.js';
6
- import { _catch } from '../../../../../../../node_modules/babel-plugin-transform-async-to-promises/helpers.mjs.js';
7
- import { Switch } from '../../../Switch/Switch.js';
8
- import { flexRender } from '@tanstack/react-table';
9
- import { useRowContext } from '../row/Context.js';
10
- import { isInternalColumn } from '../../utilities/columns.js';
11
- import { getCellSizingClasses, isKeyboardFocusableElement, getCellAlignmentClasses } from '../../utilities/cell.js';
12
- import { ColumnBase } from './Base.js';
13
- import { globalFilterFn, columnFilterFn } from '../../utilities/filterFn.js';
14
- import { MOVE_DIR } from '../../hooks/useEditMode.js';
15
- import { IndicatorReason, Indicator } from './Indicator.js';
16
- import { ValidationError } from './ValidationError.js';
17
- import { clickableNodeNames, hasChanged, willRowMoveAfterSorting } from './utils.js';
18
-
19
- const Cell = function Cell(props) {
20
- var _cell$column$columnDe, _cell$column$columnDe2, _table$options$meta;
21
- const {
22
- cell,
23
- index,
24
- isLastRow,
25
- rowIndex,
26
- rows,
27
- scrollToIndex,
28
- scrollToOffset,
29
- table,
30
- tableRef,
31
- ...columnProps
32
- } = props;
33
- const meta = table.options.meta;
34
- const {
35
- addFocussableColumnIndex,
36
- focussableColumnIndexes: allFocussableColumnIndexes
37
- } = meta;
38
- const {
39
- editMode: {
40
- validationErrors,
41
- rowMoveReason
42
- },
43
- isHovered: isHoveredRow
44
- } = useRowContext();
45
- const hasValidationErrorsInRow = !!validationErrors;
46
- const internalRef = React__default.useRef(null);
47
- const controlRef = React__default.useRef(null);
48
- const cellClassName = (_cell$column$columnDe = cell.column.columnDef.meta) === null || _cell$column$columnDe === void 0 ? void 0 : _cell$column$columnDe.className;
49
- const isActiveRow = meta.activeRowIndex === rowIndex;
50
- const isFrozen = !!cell.column.getIsPinned();
51
- const isDragging = meta.dragging[cell.row.id];
52
- const isSelected = cell.row.getIsSelected();
53
- const isDataColumn = !isInternalColumn(cell.column.id);
54
- const hasCellControl = !!((_cell$column$columnDe2 = cell.column.columnDef.meta) !== null && _cell$column$columnDe2 !== void 0 && _cell$column$columnDe2.control);
55
- const allVisibleColumns = table.getVisibleLeafColumns();
56
- const lastColumnIndex = allVisibleColumns.length > 0 ? allVisibleColumns.length - 1 : 0;
57
- // editing
58
- const isEditingThisRow = meta.editMode.isEditing && isActiveRow;
59
- const canEditThisCell = isEditingThisRow && isDataColumn;
60
- const isEditingThisCell = canEditThisCell && meta.editMode.columnIndex === index;
61
- const isHoveringThisRowWhileEditing = meta.editMode.isEditing && isHoveredRow && !meta.shouldPauseHoverState;
62
- const isIndicatorVisible = Object.keys(rowMoveReason).length > 0;
63
- React__default.useEffect(() => {
64
- // Adds padding to the table so that indicator doesn't get cropped
65
- if (isIndicatorVisible && isLastRow) {
66
- var _tableRef$current;
67
- (_tableRef$current = tableRef.current) === null || _tableRef$current === void 0 ? void 0 : _tableRef$current.classList.add('pb-4');
68
- }
69
- return () => {
70
- var _tableRef$current2;
71
- return (_tableRef$current2 = tableRef.current) === null || _tableRef$current2 === void 0 ? void 0 : _tableRef$current2.classList.remove('pb-4');
72
- };
73
- }, [isIndicatorVisible, isLastRow]);
74
- const className = cn('[&>[data-taco="tag"]]:-my-0.5', '[[data-dragged-over="true"]_&]:bg-grey-100', {
75
- 'border-b': !isLastRow,
76
- 'sticky z-[1]': isFrozen,
77
- // use isHoveredRow rather than css group-hover/row because we want to hide hover state when keyboard navigating
78
- 'bg-white': !isActiveRow && !isSelected,
79
- 'group-hover/row:bg-grey-100': !isActiveRow && !isSelected && !meta.shouldPauseHoverState,
80
- 'bg-grey-200 group-hover/row:bg-grey-200': isActiveRow && !isSelected,
81
- 'bg-blue-100': isSelected,
82
- '!wcag-blue-500': isDragging,
83
- '[&>*]:!grayscale [&_.bg-white]:!bg-grey-100': !isEditingThisRow && isHoveringThisRowWhileEditing,
84
- '!bg-red-100': hasValidationErrorsInRow,
85
- 'z-[1]': isFrozen && isActiveRow,
86
- // First column should have higher z-index so that row indicator always show on top of the cell
87
- // control components. A z-index of 3, will show the indicator when columns are pinned.
88
- 'z-[3]': isFrozen && isActiveRow && index === 0,
89
- 'border-blue !border-y-2 border-x-0': isIndicatorVisible,
90
- 'border-l-2 rounded-l': isIndicatorVisible && index === 0,
91
- 'border-r-2 rounded-r': isIndicatorVisible && index === lastColumnIndex
92
- }, getCellSizingClasses((_table$options$meta = table.options.meta) === null || _table$options$meta === void 0 ? void 0 : _table$options$meta.rowDensity, (isEditingThisRow || isHoveringThisRowWhileEditing) && hasCellControl), typeof cellClassName === 'function' ? cellClassName(cell.row, table) : cellClassName);
93
- const handleMouseDown = event => {
94
- // only detect left clicks
95
- if (event.button === 0) {
96
- const activeElement = document.activeElement;
97
- const isActiveElementControl = activeElement === null || activeElement === void 0 ? void 0 : activeElement.closest('[role="cell"]');
98
- const hasActiveRowChanged = meta.activeRowIndex !== rowIndex;
99
- // When user clicks on a cell that is not in the active row, for some reason blur event is not called on the cell
100
- // previous cell control element so we need to manually call it in order to save the changes in that cell
101
- if (isActiveElementControl && hasActiveRowChanged) {
102
- activeElement.blur();
103
- }
104
- meta.setActiveRowIndex(rowIndex);
105
- if (meta.editMode.isEditing) {
106
- if (allFocussableColumnIndexes.includes(index)) {
107
- meta.editMode.setColumn(index);
108
- } else {
109
- meta.editMode.setColumn(allFocussableColumnIndexes[0]);
110
- }
111
- }
112
- }
113
- };
114
- const attributes = {
115
- ...columnProps,
116
- // base props,
117
- column: cell.column,
118
- table,
119
- // dom attributes
120
- className,
121
- 'data-column-index': index,
122
- 'data-row-index': rowIndex,
123
- onMouseDown: handleMouseDown,
124
- ref: internalRef,
125
- role: 'cell'
126
- };
127
- const [detailModeEditing, setDetailModeEditing] = React__default.useState(false);
128
- // reset the editing state when we move column
129
- React__default.useEffect(() => {
130
- if (meta.editMode.columnIndex !== index) {
131
- setDetailModeEditing(false);
132
- }
133
- }, [meta.editMode.columnIndex]);
134
- React__default.useEffect(() => {
135
- if (isEditingThisRow && controlRef.current && isKeyboardFocusableElement(controlRef.current)) {
136
- addFocussableColumnIndex(index);
137
- }
138
- }, [isEditingThisRow, allFocussableColumnIndexes, addFocussableColumnIndex, index]);
139
- const moveRow = moveDirection => {
140
- if (moveDirection === MOVE_DIR.PREV) {
141
- meta.moveToPreviousRow(rows, nextIndex => scrollToIndex(nextIndex - 1));
142
- } else if (moveDirection === MOVE_DIR.NEXT) {
143
- meta.moveToNextRow(rows, nextIndex => scrollToIndex(nextIndex + 2));
144
- }
145
- };
146
- if (meta.editMode.onSave && hasCellControl && (canEditThisCell || isHoveringThisRowWhileEditing && isDataColumn)) {
147
- attributes.onMouseDown = event => {
148
- const target = event.target;
149
- const isTargetInput = target !== null && target.nodeName === 'INPUT';
150
- // In Edit mode, If mouse click is happening outside of cell (in case of any dropdowns like date picker or select),
151
- // then it should not be processed as a click on a cell.
152
- if (!event.currentTarget.contains(target)) {
153
- return;
154
- }
155
- handleMouseDown(event);
156
- // event.target?.select is only truthy for input elements
157
- // if event.target is active element, then that means we should select the text
158
- if (isTargetInput && target !== document.activeElement) {
159
- event.preventDefault();
160
- setTimeout(() => {
161
- target.select();
162
- }, 1);
163
- } else if (isTargetInput && target === document.activeElement) {
164
- // if user left clicks on the input then we are into edit mode
165
- // only detect left clicks
166
- if (event.button === 0) {
167
- setDetailModeEditing(true);
168
- }
169
- }
170
- };
171
- attributes.onBlur = () => {
172
- setDetailModeEditing(false);
173
- };
174
- if (canEditThisCell) {
175
- var _allFocussableColumnI, _allFocussableColumnI2;
176
- const firstDataColumnIndex = (_allFocussableColumnI = allFocussableColumnIndexes.at(0)) !== null && _allFocussableColumnI !== void 0 ? _allFocussableColumnI : 0;
177
- const lastDataColumnIndex = (_allFocussableColumnI2 = allFocussableColumnIndexes.at(-1)) !== null && _allFocussableColumnI2 !== void 0 ? _allFocussableColumnI2 : 0;
178
- attributes.onKeyDown = event => {
179
- const control = event.target;
180
- const isControlInput = control.nodeName === 'INPUT' && (control === null || control === void 0 ? void 0 : control.getAttribute('data-inline-editing-component')) === 'true';
181
- // For some reason, Taco Input keyboard event always return true when "event.isDefaultPrevented()" is
182
- // called. So we need to check if the control is input or not so that we don't return early.
183
- if (!isControlInput && (event.isDefaultPrevented() || event.isPropagationStopped())) {
184
- return;
185
- }
186
- if (control.tagName === 'INPUT') {
187
- if (event.key === 'Enter') {
188
- event.preventDefault();
189
- const input = control;
190
- if (!detailModeEditing) {
191
- var _input$setSelectionRa, _input$value, _input$value2;
192
- (_input$setSelectionRa = input.setSelectionRange) === null || _input$setSelectionRa === void 0 ? void 0 : _input$setSelectionRa.call(input, (_input$value = input.value) === null || _input$value === void 0 ? void 0 : _input$value.length, (_input$value2 = input.value) === null || _input$value2 === void 0 ? void 0 : _input$value2.length);
193
- } else {
194
- var _input$select;
195
- input === null || input === void 0 ? void 0 : (_input$select = input.select) === null || _input$select === void 0 ? void 0 : _input$select.call(input);
196
- }
197
- setDetailModeEditing(!detailModeEditing);
198
- return;
199
- }
200
- // Datepicker doesn't have keydown event handler its value doesn't change when user types inside
201
- // datepicker input, so we need to explicitly enable detail editing mode on typing any alphanumeric
202
- // character
203
- if (control !== null && control !== void 0 && control.closest('[data-taco="datepicker"]') && /^[a-z0-9]$/i.test(event.key)) {
204
- setDetailModeEditing(true);
205
- }
206
- }
207
- // Don't exit edit mode if the target of the escape isn't a child of the cell (e.g. if its a popover).
208
- if (event.key === 'Escape' && event.currentTarget.contains(control)) {
209
- event.preventDefault();
210
- if (detailModeEditing) {
211
- setDetailModeEditing(false);
212
- } else {
213
- var _tableRef$current3;
214
- meta.editMode.toggleEditing(false);
215
- (_tableRef$current3 = tableRef.current) === null || _tableRef$current3 === void 0 ? void 0 : _tableRef$current3.focus();
216
- }
217
- return;
218
- }
219
- if (!detailModeEditing && event.key === 'ArrowLeft' || event.key === 'Tab' && event.shiftKey) {
220
- event.preventDefault();
221
- const isFirstRow = rowIndex === 0;
222
- const isFirstColumn = index === firstDataColumnIndex;
223
- if (event.ctrlKey || event.metaKey) {
224
- // If the current active column is the first column then we don't do any thing so that focus
225
- // remains on the first column.
226
- if (!isFirstColumn) {
227
- control.blur();
228
- meta.editMode.moveToFirstColumn(allFocussableColumnIndexes);
229
- }
230
- } else {
231
- // If it is first row and first column, then don't move column.
232
- if (!isFirstRow || !isFirstColumn) {
233
- control.blur();
234
- meta.editMode.moveToPreviousColumn(allFocussableColumnIndexes, moveRow);
235
- }
236
- }
237
- return;
238
- }
239
- if (!detailModeEditing && event.key === 'ArrowRight' || event.key === 'Tab' && !event.shiftKey) {
240
- event.preventDefault();
241
- const isLastColumn = index === lastDataColumnIndex;
242
- if (event.ctrlKey || event.metaKey) {
243
- // If the current active column is the last column then we don't do any thing so that focus
244
- // remains on the last column.
245
- if (!isLastColumn) {
246
- control.blur();
247
- meta.editMode.moveToLastColumn(allFocussableColumnIndexes);
248
- }
249
- } else {
250
- // If it is last row and last column, then don't move column.
251
- if (!isLastRow || !isLastColumn) {
252
- control.blur();
253
- meta.editMode.moveToNextColumn(allFocussableColumnIndexes, moveRow);
254
- }
255
- }
256
- return;
257
- }
258
- if (!detailModeEditing && event.key === 'ArrowUp') {
259
- event.preventDefault();
260
- // if it is the first row then return early, so that focus on the cell is not lost
261
- if (rowIndex === 0) {
262
- return;
263
- }
264
- control.blur();
265
- if (event.ctrlKey || event.metaKey) {
266
- meta.setActiveRowIndex(0);
267
- scrollToOffset(0);
268
- } else {
269
- moveRow(MOVE_DIR.PREV);
270
- }
271
- meta.setShouldPauseHoverState(true);
272
- return;
273
- }
274
- if (!detailModeEditing && event.key === 'ArrowDown') {
275
- event.preventDefault();
276
- // if it is the last row then return early, so that focus on the cell is not lost
277
- if (rowIndex === rows.length - 1) {
278
- return;
279
- }
280
- control.blur();
281
- if (event.ctrlKey || event.metaKey) {
282
- meta.setActiveRowIndex(rows.length - 1);
283
- scrollToIndex(rows.length + 20);
284
- } else {
285
- moveRow(MOVE_DIR.NEXT);
286
- }
287
- meta.setShouldPauseHoverState(true);
288
- return;
289
- }
290
- };
291
- }
292
- return /*#__PURE__*/React__default.createElement(ColumnBase, Object.assign({}, attributes), /*#__PURE__*/React__default.createElement(EditingCell, {
293
- detailModeEditing: detailModeEditing,
294
- cell: cell,
295
- cellRef: internalRef,
296
- columnIndex: index,
297
- isEditingThisCell: isEditingThisCell,
298
- onSave: meta.editMode.onSave,
299
- rowIndex: rowIndex,
300
- table: table,
301
- tableRef: tableRef,
302
- ref: controlRef,
303
- rowValues: rows[rowIndex].original,
304
- rowsLength: rows.length,
305
- enableDetailModeEditing: () => {
306
- if (!detailModeEditing) {
307
- setDetailModeEditing(true);
308
- }
309
- }
310
- }));
311
- } else {
312
- if (meta.onRowClick) {
313
- attributes.onClick = event => {
314
- const {
315
- target
316
- } = event;
317
- // This check prevents triggering row click, when a click is performed in the dropdown (e.g. Select option or DayPicker date selection)
318
- if (internalRef.current && target instanceof HTMLElement && internalRef.current.contains(target)) {
319
- var _meta$onRowClick;
320
- // Checking that target is clickable element or it is a child of clickable element
321
- if (clickableNodeNames.includes(target.tagName) || target.closest(clickableNodeNames.map(tag => `[role=row] ${tag}`).join(','))) {
322
- return;
323
- }
324
- (_meta$onRowClick = meta.onRowClick) === null || _meta$onRowClick === void 0 ? void 0 : _meta$onRowClick.call(meta, cell.row.original);
325
- }
326
- };
327
- }
328
- }
329
- return /*#__PURE__*/React__default.createElement(ColumnBase, Object.assign({}, attributes), flexRender(cell.column.columnDef.cell, cell.getContext()));
330
- };
331
- const EditingCell = /*#__PURE__*/React__default.memo( /*#__PURE__*/React__default.forwardRef((props, ref) => {
332
- var _cell$column$columnDe3, _cell$column$columnDe4, _cellRef$current2, _cellRef$current2$par, _rowMoveReason$cellId;
333
- const {
334
- cell,
335
- cellRef,
336
- columnIndex,
337
- detailModeEditing,
338
- isEditingThisCell = false,
339
- onSave: handleSave,
340
- rowIndex,
341
- rowValues,
342
- table,
343
- tableRef,
344
- enableDetailModeEditing
345
- } = props;
346
- const {
347
- editMode: {
348
- validationErrors,
349
- setValidationErrors,
350
- rowMoveReason,
351
- setRowMoveReason
352
- },
353
- isHovered
354
- } = useRowContext();
355
- const controlRef = useMergedRef(ref);
356
- const cellId = cell.column.id;
357
- const cellValidationError = validationErrors === null || validationErrors === void 0 ? void 0 : validationErrors[cellId];
358
- const value = cell.getValue();
359
- const ariaLabel = cell.column.columnDef.header;
360
- const meta = table.options.meta;
361
- const {
362
- globalFilter
363
- } = table.getState();
364
- const [state, setState] = React__default.useState(value);
365
- const isHoveringAnotherRowWhileEditing = meta.editMode.isEditing && meta.activeRowIndex !== rowIndex && isHovered;
366
- const hasValidationError = !isHoveringAnotherRowWhileEditing && !!cellValidationError;
367
- // On each save, the initialValue will be set to the new value of the cell
368
- const initialValue = React__default.useRef(value);
369
- const stateReset = React__default.useRef(false);
370
- // It is important that we let consumers pass a newValue as an argument because when setState is called before
371
- // onBlur then saveIfChanged method gets the stale state value. This happens because the rerender hasn't happened
372
- // before the saveIfChanged method is called.
373
- const saveIfChanged = function (eventOrNewValue) {
374
- try {
375
- let newValue = state;
376
- // if eventOrNewValue is not an event object
377
- if (!(eventOrNewValue !== null && eventOrNewValue !== void 0 && eventOrNewValue.target)) {
378
- newValue = eventOrNewValue;
379
- }
380
- const _temp2 = function () {
381
- if (hasChanged(value, newValue)) {
382
- const _temp = _catch(function () {
383
- const updatedRow = {
384
- ...cell.row.original,
385
- [cellId]: newValue
386
- };
387
- return Promise.resolve(handleSave(updatedRow, cellId)).then(function () {
388
- // If sorting is paused then update the last sorted or filtered rows to store the newly updated row
389
- if (meta.shouldPauseSortingAndFiltering) {
390
- meta.lastSortedOrFilteredRows.current = meta.lastSortedOrFilteredRows.current.map(row => {
391
- if (row.id === cell.row.id) {
392
- row.original = updatedRow;
393
- }
394
- return row;
395
- });
396
- }
397
- // Reset error if save was successful
398
- setValidationErrors(null);
399
- });
400
- }, function (error) {
401
- setValidationErrors({
402
- ...validationErrors,
403
- ...error
404
- });
405
- });
406
- if (_temp && _temp.then) return _temp.then(function () {});
407
- }
408
- }();
409
- return Promise.resolve(_temp2 && _temp2.then ? _temp2.then(function () {}) : void 0);
410
- } catch (e) {
411
- return Promise.reject(e);
412
- }
413
- };
414
- // Ensures we "auto focus" the field if the cell is being edited.
415
- React__default.useEffect(() => {
416
- var _meta$tableRef$curren;
417
- const isFocusInsideTable = (_meta$tableRef$curren = meta.tableRef.current) === null || _meta$tableRef$curren === void 0 ? void 0 : _meta$tableRef$curren.contains(document.activeElement);
418
- // When control is blurred then body gets the focus that's why we have to make sure if activeElement
419
- // is body then we focus the cell if it is being edited.
420
- const isBodyFocussed = document.body === document.activeElement;
421
- // Don't focus cell if any table popup(filter popup, column settings popup) is open.
422
- if (isEditingThisCell && (isFocusInsideTable || isBodyFocussed)) {
423
- var _controlRef$current, _controlRef$current$f;
424
- (_controlRef$current = controlRef.current) === null || _controlRef$current === void 0 ? void 0 : (_controlRef$current$f = _controlRef$current.focus) === null || _controlRef$current$f === void 0 ? void 0 : _controlRef$current$f.call(_controlRef$current);
425
- }
426
- }, [isEditingThisCell, controlRef.current]);
427
- const pinnedColumnsWidth = React__default.useMemo(() => {
428
- const pinnedColumns = table.getState().columnPinning.left;
429
- if (Array.isArray(pinnedColumns) && pinnedColumns.length > 0) {
430
- const lastFrozenColumn = pinnedColumns[pinnedColumns.length - 1];
431
- const lastFrozenColumnOffset = meta.columnOffsets[lastFrozenColumn];
432
- if (lastFrozenColumnOffset !== undefined) {
433
- var _table$getState$colum;
434
- return lastFrozenColumnOffset + ((_table$getState$colum = table.getState().columnSizing[lastFrozenColumn]) !== null && _table$getState$colum !== void 0 ? _table$getState$colum : 0);
435
- }
436
- }
437
- return 0;
438
- }, [meta.columnOffsets, table.getState().columnSizing]);
439
- React__default.useEffect(() => {
440
- if (hasChanged(initialValue.current, state)) {
441
- var _controlRef$current2;
442
- // For an input we want to make sure that if the value is changed then we go into detail mode, so that
443
- // arrow keys doesn't trigger the quick mode shortcuts.
444
- if (((_controlRef$current2 = controlRef.current) === null || _controlRef$current2 === void 0 ? void 0 : _controlRef$current2.nodeName) === 'INPUT') {
445
- enableDetailModeEditing();
446
- }
447
- showIndicator();
448
- } else {
449
- hideIndicator();
450
- }
451
- return hideIndicator;
452
- }, [state]);
453
- // This effect makes sure we select the input control value when escape key is pressed
454
- React__default.useEffect(() => {
455
- var _controlRef$current3, _controlRef$current4;
456
- const isControlInput = ((_controlRef$current3 = controlRef.current) === null || _controlRef$current3 === void 0 ? void 0 : _controlRef$current3.nodeName) === 'INPUT' && ((_controlRef$current4 = controlRef.current) === null || _controlRef$current4 === void 0 ? void 0 : _controlRef$current4.getAttribute('data-inline-editing-component')) === 'true';
457
- if (stateReset.current && isControlInput) {
458
- var _controlRef$current5;
459
- (_controlRef$current5 = controlRef.current) === null || _controlRef$current5 === void 0 ? void 0 : _controlRef$current5.select();
460
- }
461
- stateReset.current = false;
462
- }, [stateReset.current]);
463
- const handleFocus = event => {
464
- var _event$target, _cellRef$current;
465
- meta.editMode.setColumn(columnIndex);
466
- if ((_event$target = event.target) !== null && _event$target !== void 0 && _event$target.select) {
467
- var _event$target2;
468
- (_event$target2 = event.target) === null || _event$target2 === void 0 ? void 0 : _event$target2.select();
469
- }
470
- // ensure the field is always visible (e.g. not hidden behind the pinned columns)
471
- const rect = (_cellRef$current = cellRef.current) === null || _cellRef$current === void 0 ? void 0 : _cellRef$current.getBoundingClientRect();
472
- const leftOffset = meta.columnOffsets[cellId];
473
- if (rect && leftOffset && rect.left < pinnedColumnsWidth) {
474
- var _tableRef$current4;
475
- (_tableRef$current4 = tableRef.current) === null || _tableRef$current4 === void 0 ? void 0 : _tableRef$current4.scrollTo(leftOffset - pinnedColumnsWidth, tableRef.current.scrollTop);
476
- }
477
- };
478
- // In order to reset the value of an input when escape key is pressed this keydown handler is required.
479
- // Instead of adding this event handler in parent component, this handler is added here because we have access
480
- // to the state handler of the control component.
481
- const handleKeyDown = event => {
482
- const control = event.target;
483
- const isControlInput = control.nodeName === 'INPUT' && (control === null || control === void 0 ? void 0 : control.getAttribute('data-inline-editing-component')) === 'true';
484
- if (isControlInput && event.key === 'Escape') {
485
- setState(initialValue.current);
486
- stateReset.current = true;
487
- }
488
- };
489
- const showIndicator = () => {
490
- var _table$getState$sorti;
491
- let willRowMoveReason = null;
492
- const isFilteredByGlobalFilter = Object.values({
493
- ...rowValues,
494
- [cellId]: state
495
- }).some(cellValue =>
496
- // Global filter can be undefined when there is no text being searched so we pass an empty string to
497
- // globalFilterFn as query in that case.
498
- globalFilterFn(String(cellValue), globalFilter ? String(globalFilter) : ''));
499
- if (!isFilteredByGlobalFilter) {
500
- willRowMoveReason = IndicatorReason.SEARCH;
501
- } else if (cell.column.getIsFiltered() && !columnFilterFn(state, cell.column.getFilterValue())) {
502
- willRowMoveReason = IndicatorReason.FILTER;
503
- } else if (!willRowMoveReason && cell.column.getIsSorted() && willRowMoveAfterSorting(state, cell, rowIndex, table.getRowModel().rows, !!((_table$getState$sorti = table.getState().sorting.find(s => s.id === cell.column.id)) !== null && _table$getState$sorti !== void 0 && _table$getState$sorti.desc))) {
504
- willRowMoveReason = IndicatorReason.SORTING;
505
- }
506
- if (willRowMoveReason !== null) {
507
- meta.setShouldPauseSortingAndFiltering(true);
508
- setRowMoveReason({
509
- [cellId]: willRowMoveReason
510
- });
511
- }
512
- };
513
- const hideIndicator = () => {
514
- setRowMoveReason(prevState => {
515
- const newState = {
516
- ...prevState
517
- };
518
- delete newState[cellId];
519
- return newState;
520
- });
521
- };
522
- const cellControl = (_cell$column$columnDe3 = cell.column.columnDef.meta) === null || _cell$column$columnDe3 === void 0 ? void 0 : _cell$column$columnDe3.control;
523
- const attributes = {
524
- 'aria-label': ariaLabel,
525
- onBlur: saveIfChanged,
526
- onFocus: handleFocus,
527
- ref,
528
- // This is a temporary fix to enable up/down arrow key shortcuts on input in quick mode. For some reason,
529
- // the preventDefault is true on Taco Input, so the keyboard shortcuts doesn't work. By adding this
530
- // data attribute we make sure the event is coming from a control component, and then we can make sure
531
- // keyboard shortcut works as expected.
532
- 'data-inline-editing-component': 'true'
533
- };
534
- const className = cn(getCellAlignmentClasses((_cell$column$columnDe4 = cell.column.columnDef.meta) === null || _cell$column$columnDe4 === void 0 ? void 0 : _cell$column$columnDe4.align));
535
- const indicatorMountNode = (_cellRef$current2 = cellRef.current) === null || _cellRef$current2 === void 0 ? void 0 : (_cellRef$current2$par = _cellRef$current2.parentElement) === null || _cellRef$current2$par === void 0 ? void 0 : _cellRef$current2$par.querySelector(':first-child');
536
- let controlComponent;
537
- const detailModeClassName = cn({
538
- '!yt-focus-dark': detailModeEditing
539
- });
540
- if (cellControl) {
541
- if (typeof cellControl === 'function') {
542
- controlComponent = cellControl({
543
- invalid: hasValidationError,
544
- onBlur: saveIfChanged,
545
- onFocus: handleFocus,
546
- ref: controlRef,
547
- setValue: setState,
548
- value: state,
549
- 'data-inline-editing-component': 'true'
550
- }, cell.row.original);
551
- } else {
552
- switch (cellControl) {
553
- case 'datepicker':
554
- controlComponent = /*#__PURE__*/React__default.createElement(Datepicker, Object.assign({}, attributes, {
555
- className: cn({
556
- '[&_input]:!shadow-[0_0_0_4px_rgba(0,99,255,0.25)]': detailModeEditing
557
- }),
558
- invalid: hasValidationError,
559
- onBlur: event => {
560
- const newDate = event.detail;
561
- saveIfChanged(newDate);
562
- },
563
- onChange: event => {
564
- setState(event.detail);
565
- },
566
- ref: controlRef,
567
- value: state
568
- }));
569
- break;
570
- case 'switch':
571
- controlComponent = /*#__PURE__*/React__default.createElement(Switch, Object.assign({}, attributes, {
572
- className: cn('mx-2 mt-1.5', detailModeClassName),
573
- checked: Boolean(state),
574
- onChange: setState,
575
- ref: controlRef
576
- }));
577
- break;
578
- default:
579
- controlComponent = /*#__PURE__*/React__default.createElement(Input, Object.assign({}, attributes, {
580
- className: cn(className, detailModeClassName),
581
- invalid: hasValidationError,
582
- onChange: event => {
583
- setState(event.target.value);
584
- },
585
- ref: controlRef,
586
- value: String(state !== null && state !== void 0 ? state : ''),
587
- onKeyDown: handleKeyDown
588
- }));
589
- break;
590
- }
591
- }
592
- }
593
- const indicatorReason = (_rowMoveReason$cellId = rowMoveReason[cellId]) !== null && _rowMoveReason$cellId !== void 0 ? _rowMoveReason$cellId : null;
594
- return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, indicatorReason !== null && /*#__PURE__*/React__default.createElement(Indicator, {
595
- reason: indicatorReason,
596
- columnName: String(cell.column.columnDef.header),
597
- mountNode: indicatorMountNode,
598
- validationErrors: validationErrors
599
- }), /*#__PURE__*/React__default.createElement("span", {
600
- className: "relative flex-grow"
601
- }, controlComponent, hasValidationError && /*#__PURE__*/React__default.createElement(ValidationError, null, String(cellValidationError))));
602
- }));
603
-
604
- export { Cell };
605
- //# sourceMappingURL=Cell.js.map