@osdk/react-components 0.1.0-beta.5 → 0.1.0-rc.7

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 (133) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/README.md +2 -5
  3. package/build/browser/action-form/ActionFormApi.js +2 -0
  4. package/build/browser/action-form/ActionFormApi.js.map +1 -0
  5. package/build/browser/action-form/FormFieldApi.js +2 -0
  6. package/build/browser/action-form/FormFieldApi.js.map +1 -0
  7. package/build/browser/base-components/checkbox/Checkbox.js +32 -27
  8. package/build/browser/object-table/CellContextMenu.js +20 -23
  9. package/build/browser/object-table/LoadingCell.js +38 -0
  10. package/build/browser/object-table/LoadingCell.js.map +1 -0
  11. package/build/browser/object-table/LoadingRow.js +69 -0
  12. package/build/browser/object-table/LoadingRow.js.map +1 -0
  13. package/build/browser/object-table/LoadingStateTable.js +395 -0
  14. package/build/browser/object-table/LoadingStateTable.js.map +1 -0
  15. package/build/browser/object-table/NonIdealState.js +25 -0
  16. package/build/browser/object-table/NonIdealState.js.map +1 -0
  17. package/build/browser/object-table/ObjectTable.js +6 -5
  18. package/build/browser/object-table/ObjectTable.js.map +1 -1
  19. package/build/browser/object-table/ObjectTableApi.js.map +1 -1
  20. package/build/browser/object-table/Table.js +948 -45
  21. package/build/browser/object-table/Table.js.map +1 -1
  22. package/build/browser/object-table/TableBody.js +269 -34
  23. package/build/browser/object-table/TableBody.js.map +1 -1
  24. package/build/browser/object-table/TableCell.js +111 -31
  25. package/build/browser/object-table/TableCell.js.map +1 -1
  26. package/build/browser/object-table/TableHeader.js +215 -38
  27. package/build/browser/object-table/TableHeaderContent.js +18 -21
  28. package/build/browser/object-table/TableHeaderContent.js.map +1 -1
  29. package/build/browser/object-table/TableHeaderWithPopover.js +80 -66
  30. package/build/browser/object-table/TableRow.js +144 -26
  31. package/build/browser/object-table/hooks/__tests__/useObjectTableData.test.js +18 -20
  32. package/build/browser/object-table/hooks/__tests__/useObjectTableData.test.js.map +1 -1
  33. package/build/browser/object-table/hooks/useColumnDefs.js +6 -2
  34. package/build/browser/object-table/hooks/useColumnDefs.js.map +1 -1
  35. package/build/browser/object-table/hooks/useColumnPinning.js.map +1 -1
  36. package/build/browser/object-table/hooks/useColumnVisibility.js.map +1 -1
  37. package/build/browser/object-table/hooks/useObjectTableData.js +7 -6
  38. package/build/browser/object-table/hooks/useObjectTableData.js.map +1 -1
  39. package/build/browser/object-table/hooks/useRowSelection.js.map +1 -1
  40. package/build/browser/object-table/hooks/useSelectionColumn.js.map +1 -1
  41. package/build/browser/object-table/hooks/useTableSorting.js.map +1 -1
  42. package/build/browser/object-table/utils/getRowId.js.map +1 -1
  43. package/build/cjs/public/experimental.cjs +435 -264
  44. package/build/cjs/public/experimental.cjs.map +1 -1
  45. package/build/cjs/public/experimental.css +114 -56
  46. package/build/cjs/public/experimental.css.map +1 -1
  47. package/build/cjs/public/experimental.d.cts +8 -11
  48. package/build/esm/action-form/ActionFormApi.js +2 -0
  49. package/build/esm/action-form/ActionFormApi.js.map +1 -0
  50. package/build/esm/action-form/FormFieldApi.js +2 -0
  51. package/build/esm/action-form/FormFieldApi.js.map +1 -0
  52. package/build/esm/base-components/checkbox/Checkbox.module.css +10 -3
  53. package/build/esm/object-table/CellContextMenu.module.css +1 -1
  54. package/build/{browser/object-table/CellContextMenu.module.css → esm/object-table/LoadingCell.js} +16 -3
  55. package/build/esm/object-table/LoadingCell.js.map +1 -0
  56. package/build/esm/object-table/LoadingCell.module.css +48 -0
  57. package/build/esm/object-table/LoadingRow.js +43 -0
  58. package/build/esm/object-table/LoadingRow.js.map +1 -0
  59. package/build/esm/object-table/LoadingStateTable.js +101 -0
  60. package/build/esm/object-table/LoadingStateTable.js.map +1 -0
  61. package/build/{browser/object-table/TableHeaderContent.module.css → esm/object-table/NonIdealState.js} +11 -13
  62. package/build/esm/object-table/NonIdealState.js.map +1 -0
  63. package/build/{browser/object-table/Table.module.css → esm/object-table/NonIdealState.module.css} +10 -4
  64. package/build/esm/object-table/ObjectTable.js +6 -5
  65. package/build/esm/object-table/ObjectTable.js.map +1 -1
  66. package/build/esm/object-table/ObjectTableApi.js.map +1 -1
  67. package/build/esm/object-table/Table.js +34 -13
  68. package/build/esm/object-table/Table.js.map +1 -1
  69. package/build/esm/object-table/Table.module.css +2 -2
  70. package/build/esm/object-table/TableBody.js +13 -2
  71. package/build/esm/object-table/TableBody.js.map +1 -1
  72. package/build/esm/object-table/TableCell.js.map +1 -1
  73. package/build/esm/object-table/TableCell.module.css +7 -8
  74. package/build/esm/object-table/TableHeader.module.css +15 -9
  75. package/build/esm/object-table/TableHeaderContent.js.map +1 -1
  76. package/build/esm/object-table/TableHeaderWithPopover.module.css +31 -26
  77. package/build/esm/object-table/TableRow.module.css +1 -1
  78. package/build/esm/object-table/hooks/__tests__/useObjectTableData.test.js +18 -20
  79. package/build/esm/object-table/hooks/__tests__/useObjectTableData.test.js.map +1 -1
  80. package/build/esm/object-table/hooks/useColumnDefs.js +6 -2
  81. package/build/esm/object-table/hooks/useColumnDefs.js.map +1 -1
  82. package/build/esm/object-table/hooks/useColumnPinning.js.map +1 -1
  83. package/build/esm/object-table/hooks/useColumnVisibility.js.map +1 -1
  84. package/build/esm/object-table/hooks/useObjectTableData.js +7 -6
  85. package/build/esm/object-table/hooks/useObjectTableData.js.map +1 -1
  86. package/build/esm/object-table/hooks/useRowSelection.js.map +1 -1
  87. package/build/esm/object-table/hooks/useSelectionColumn.js.map +1 -1
  88. package/build/esm/object-table/hooks/useTableSorting.js.map +1 -1
  89. package/build/esm/object-table/utils/getRowId.js.map +1 -1
  90. package/build/types/action-form/ActionFormApi.d.ts +76 -0
  91. package/build/types/action-form/ActionFormApi.d.ts.map +1 -0
  92. package/build/types/action-form/FormFieldApi.d.ts +241 -0
  93. package/build/types/action-form/FormFieldApi.d.ts.map +1 -0
  94. package/build/types/object-table/LoadingCell.d.ts +4 -0
  95. package/build/types/object-table/LoadingCell.d.ts.map +1 -0
  96. package/build/types/object-table/LoadingRow.d.ts +11 -0
  97. package/build/types/object-table/LoadingRow.d.ts.map +1 -0
  98. package/build/types/object-table/LoadingStateTable.d.ts +11 -0
  99. package/build/types/object-table/LoadingStateTable.d.ts.map +1 -0
  100. package/build/types/object-table/NonIdealState.d.ts +6 -0
  101. package/build/types/object-table/NonIdealState.d.ts.map +1 -0
  102. package/build/types/object-table/ObjectTable.d.ts +4 -4
  103. package/build/types/object-table/ObjectTable.d.ts.map +1 -1
  104. package/build/types/object-table/ObjectTableApi.d.ts +4 -8
  105. package/build/types/object-table/ObjectTableApi.d.ts.map +1 -1
  106. package/build/types/object-table/Table.d.ts +2 -1
  107. package/build/types/object-table/Table.d.ts.map +1 -1
  108. package/build/types/object-table/TableBody.d.ts +4 -2
  109. package/build/types/object-table/TableBody.d.ts.map +1 -1
  110. package/build/types/object-table/TableHeaderContent.d.ts.map +1 -1
  111. package/build/types/object-table/hooks/useColumnDefs.d.ts +3 -3
  112. package/build/types/object-table/hooks/useColumnDefs.d.ts.map +1 -1
  113. package/build/types/object-table/hooks/useColumnPinning.d.ts +3 -3
  114. package/build/types/object-table/hooks/useColumnPinning.d.ts.map +1 -1
  115. package/build/types/object-table/hooks/useColumnVisibility.d.ts +3 -3
  116. package/build/types/object-table/hooks/useColumnVisibility.d.ts.map +1 -1
  117. package/build/types/object-table/hooks/useObjectTableData.d.ts +6 -6
  118. package/build/types/object-table/hooks/useObjectTableData.d.ts.map +1 -1
  119. package/build/types/object-table/hooks/useRowSelection.d.ts +3 -3
  120. package/build/types/object-table/hooks/useRowSelection.d.ts.map +1 -1
  121. package/build/types/object-table/hooks/useSelectionColumn.d.ts +2 -2
  122. package/build/types/object-table/hooks/useSelectionColumn.d.ts.map +1 -1
  123. package/build/types/object-table/hooks/useTableSorting.d.ts +3 -3
  124. package/build/types/object-table/hooks/useTableSorting.d.ts.map +1 -1
  125. package/build/types/object-table/utils/getRowId.d.ts +3 -3
  126. package/build/types/object-table/utils/getRowId.d.ts.map +1 -1
  127. package/package.json +4 -4
  128. package/build/browser/base-components/checkbox/Checkbox.module.css +0 -72
  129. package/build/browser/object-table/TableBody.module.css +0 -20
  130. package/build/browser/object-table/TableCell.module.css +0 -63
  131. package/build/browser/object-table/TableHeader.module.css +0 -95
  132. package/build/browser/object-table/TableHeaderWithPopover.module.css +0 -105
  133. package/build/browser/object-table/TableRow.module.css +0 -60
@@ -1 +1 @@
1
- {"version":3,"file":"useRowSelection.js","names":["useCallback","useMemo","useState","getRowId","getRowIdFromPrimaryKey","useRowSelection","selectionMode","selectedRows","onRowSelection","data","internalRowSelection","setInternalRowSelection","lastSelectedRowIndex","setLastSelectedRowIndex","isControlled","undefined","isSelectionEnabled","rowSelectionState","getRowSelectionState","selectedCount","Object","values","filter","Boolean","length","totalCount","isAllSelected","onToggleAll","newSelectedRows","map","item","$primaryKey","onToggleRow","rowId","rowIndex","isShiftClick","getSingleSelectionRows","getRangeSelectionRows","getMultipleSelectionRows","rowSelection","hasSelection","primaryKey","rowsInRange","getRowsInRange","primaryKeysInRange","currentlySelected","getSelectedPrimaryKeys","forEach","includes","push","i","startIndex","endIndex","start","Math","min","end","max","rows","primaryKeys","reduce","acc","selectionState"],"sources":["useRowSelection.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { ObjectTypeDefinition, Osdk, PrimaryKeyType } from \"@osdk/api\";\nimport type { RowSelectionState } from \"@tanstack/react-table\";\nimport { useCallback, useMemo, useState } from \"react\";\nimport { getRowId, getRowIdFromPrimaryKey } from \"../utils/getRowId.js\";\n\nexport interface UseRowSelectionProps<\n Q extends ObjectTypeDefinition,\n RDPs extends Record<string, any> = Record<string, never>,\n> {\n selectionMode?: \"single\" | \"multiple\" | \"none\";\n selectedRows?: PrimaryKeyType<Q>[];\n onRowSelection?: (selectedRowIds: PrimaryKeyType<Q>[]) => void;\n data: Array<Osdk.Instance<Q, \"$allBaseProperties\", any, RDPs>> | undefined;\n}\n\nexport interface UseRowSelectionResult {\n rowSelection: RowSelectionState;\n isAllSelected: boolean;\n hasSelection: boolean;\n onToggleAll: () => void;\n onToggleRow: (\n rowId: string,\n rowIndex: number,\n isShiftClick?: boolean,\n ) => void;\n}\n\nexport function useRowSelection<\n Q extends ObjectTypeDefinition,\n RDPs extends Record<string, any> = Record<string, never>,\n>({\n selectionMode = \"none\",\n selectedRows,\n onRowSelection,\n data,\n}: UseRowSelectionProps<Q, RDPs>): UseRowSelectionResult {\n // The rowSelectionState in uncontrolled mode\n const [internalRowSelection, setInternalRowSelection] = useState<\n RowSelectionState\n >({});\n\n // Used for shift-click behavior in \"multiple\" mode\n const [lastSelectedRowIndex, setLastSelectedRowIndex] = useState<\n number | null\n >(null);\n\n const isControlled = selectedRows !== undefined;\n const isSelectionEnabled = selectionMode !== \"none\";\n\n // Row selection state\n // If controlled mode, return the state from selectedRows prop\n // If uncontrolled, return the internalRowSelection state\n const rowSelectionState: RowSelectionState = useMemo(() => {\n if (!isSelectionEnabled) return {};\n if (isControlled && selectedRows) {\n return getRowSelectionState(selectedRows);\n }\n return internalRowSelection;\n }, [\n isSelectionEnabled,\n isControlled,\n selectedRows,\n internalRowSelection,\n ]);\n\n const selectedCount = Object.values(rowSelectionState).filter(Boolean).length;\n const totalCount = data?.length ?? 0;\n const isAllSelected = totalCount > 0 && selectedCount === totalCount;\n const hasSelection = selectedCount > 0;\n\n const onToggleAll = useCallback(() => {\n if (!isSelectionEnabled || !data) return;\n\n const newSelectedRows: PrimaryKeyType<Q>[] = isAllSelected\n ? []\n : data.map(item => item.$primaryKey);\n\n if (!isControlled) {\n setInternalRowSelection(getRowSelectionState(newSelectedRows));\n }\n onRowSelection?.(newSelectedRows);\n }, [isSelectionEnabled, data, isAllSelected, isControlled, onRowSelection]);\n\n const onToggleRow = useCallback(\n (rowId: string, rowIndex: number, isShiftClick: boolean = false) => {\n if (!isSelectionEnabled || !data) return;\n\n let newSelectedRows: PrimaryKeyType<Q>[] = [];\n\n if (selectionMode === \"single\") {\n newSelectedRows = getSingleSelectionRows({\n rowId,\n rowIndex,\n data,\n rowSelectionState,\n });\n setLastSelectedRowIndex(rowIndex);\n } else {\n // Multiple selection mode\n\n // When user does shiftClick but lastSelectedRowIndex is null,\n // it is treated as a normal click in multiple selection\n if (isShiftClick && lastSelectedRowIndex != null) {\n newSelectedRows = getRangeSelectionRows(\n { rowId, rowIndex, data, lastSelectedRowIndex, rowSelectionState },\n );\n } else {\n newSelectedRows = getMultipleSelectionRows(\n { rowId, rowIndex, data, rowSelectionState },\n );\n }\n setLastSelectedRowIndex(rowIndex);\n }\n if (!isControlled) {\n setInternalRowSelection(getRowSelectionState(newSelectedRows));\n }\n onRowSelection?.(newSelectedRows);\n },\n [\n isSelectionEnabled,\n data,\n selectionMode,\n lastSelectedRowIndex,\n isControlled,\n rowSelectionState,\n onRowSelection,\n ],\n );\n\n return {\n rowSelection: rowSelectionState,\n isAllSelected,\n hasSelection,\n onToggleAll,\n onToggleRow,\n };\n}\n\ninterface GetSelectedRowsProps<\n Q extends ObjectTypeDefinition,\n RDPs extends Record<string, any> = Record<string, never>,\n> {\n rowId: string;\n rowIndex: number;\n data: Array<Osdk.Instance<Q, \"$allBaseProperties\", any, RDPs>>;\n rowSelectionState: RowSelectionState;\n lastSelectedRowIndex?: number;\n}\n\nfunction getSingleSelectionRows<\n Q extends ObjectTypeDefinition,\n RDPs extends Record<string, any> = Record<string, never>,\n>(\n { rowId, rowIndex, data, rowSelectionState }: GetSelectedRowsProps<Q, RDPs>,\n): PrimaryKeyType<Q>[] {\n const primaryKey = data[rowIndex].$primaryKey;\n // Toggle row selection in single selection mode\n const newSelectedRows = rowSelectionState[rowId] ? [] : [primaryKey];\n return newSelectedRows;\n}\n\nfunction getRangeSelectionRows<\n Q extends ObjectTypeDefinition,\n RDPs extends Record<string, any> = Record<string, never>,\n>(\n { lastSelectedRowIndex, rowIndex, data, rowSelectionState }:\n GetSelectedRowsProps<Q, RDPs>,\n): PrimaryKeyType<Q>[] {\n // This function is only called if lastSelectedRowIndex is not null\n // This condition is added for typechecks only\n if (lastSelectedRowIndex != null) {\n const rowsInRange = getRowsInRange(data, lastSelectedRowIndex, rowIndex);\n const primaryKeysInRange = rowsInRange.map(item => item.$primaryKey);\n\n const currentlySelected = getSelectedPrimaryKeys(rowSelectionState, data);\n\n // Add all rows in range to selectedRows if not yet selected\n const newSelectedRows = [...currentlySelected];\n primaryKeysInRange.forEach(item => {\n if (!newSelectedRows.includes(item)) {\n newSelectedRows.push(item);\n }\n });\n return newSelectedRows;\n }\n return [];\n}\n\nfunction getMultipleSelectionRows<\n Q extends ObjectTypeDefinition,\n RDPs extends Record<string, any> = Record<string, never>,\n>(\n { rowIndex, data, rowSelectionState }: GetSelectedRowsProps<Q, RDPs>,\n): PrimaryKeyType<Q>[] {\n const primaryKey = data[rowIndex].$primaryKey;\n const currentlySelected = getSelectedPrimaryKeys(rowSelectionState, data);\n // Handles single row toggle in multiple selection mode\n const newSelectedRows = currentlySelected.includes(primaryKey)\n ? currentlySelected.filter(i => i !== primaryKey)\n : [...currentlySelected, primaryKey];\n return newSelectedRows;\n}\n\n/**\n * Builds a range of rows from startIndex to endIndex\n */\nfunction getRowsInRange<\n Q extends ObjectTypeDefinition,\n RDPs extends Record<string, any> = Record<string, never>,\n>(\n data: Array<Osdk.Instance<Q, \"$allBaseProperties\", any, RDPs>>,\n startIndex: number,\n endIndex: number,\n): Array<Osdk.Instance<Q, \"$allBaseProperties\", any, RDPs>> {\n const start = Math.min(startIndex, endIndex);\n const end = Math.max(startIndex, endIndex);\n const rows: Array<Osdk.Instance<Q, \"$allBaseProperties\", any, RDPs>> = [];\n\n for (let i = start; i <= end; i++) {\n const item = data[i];\n if (item) {\n rows.push(item);\n }\n }\n\n return rows;\n}\n\n/**\n * Converts an array of primary keys to a RowSelectionState object\n */\nfunction getRowSelectionState<Q extends ObjectTypeDefinition>(\n primaryKeys: PrimaryKeyType<Q>[],\n): RowSelectionState {\n return primaryKeys.reduce<RowSelectionState>(\n (acc, primaryKey) => {\n acc[getRowIdFromPrimaryKey(primaryKey)] = true;\n return acc;\n },\n {},\n );\n}\n\n/**\n * Converts from a RowSelectionState object back to an array of primary keys\n */\nfunction getSelectedPrimaryKeys<\n Q extends ObjectTypeDefinition,\n RDPs extends Record<string, any> = Record<string, never>,\n>(\n selectionState: RowSelectionState,\n data: Array<Osdk.Instance<Q, \"$allBaseProperties\", any, RDPs>>,\n): PrimaryKeyType<Q>[] {\n return data\n .filter(item => selectionState[getRowId(item)])\n .map(item => item.$primaryKey);\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAIA,SAASA,WAAW,EAAEC,OAAO,EAAEC,QAAQ,QAAQ,OAAO;AACtD,SAASC,QAAQ,EAAEC,sBAAsB,QAAQ,sBAAsB;AAwBvE,OAAO,SAASC,eAAeA,CAG7B;EACAC,aAAa,GAAG,MAAM;EACtBC,YAAY;EACZC,cAAc;EACdC;AAC6B,CAAC,EAAyB;EACvD;EACA,MAAM,CAACC,oBAAoB,EAAEC,uBAAuB,CAAC,GAAGT,QAAQ,CAE9D,CAAC,CAAC,CAAC;;EAEL;EACA,MAAM,CAACU,oBAAoB,EAAEC,uBAAuB,CAAC,GAAGX,QAAQ,CAE9D,IAAI,CAAC;EAEP,MAAMY,YAAY,GAAGP,YAAY,KAAKQ,SAAS;EAC/C,MAAMC,kBAAkB,GAAGV,aAAa,KAAK,MAAM;;EAEnD;EACA;EACA;EACA,MAAMW,iBAAoC,GAAGhB,OAAO,CAAC,MAAM;IACzD,IAAI,CAACe,kBAAkB,EAAE,OAAO,CAAC,CAAC;IAClC,IAAIF,YAAY,IAAIP,YAAY,EAAE;MAChC,OAAOW,oBAAoB,CAACX,YAAY,CAAC;IAC3C;IACA,OAAOG,oBAAoB;EAC7B,CAAC,EAAE,CACDM,kBAAkB,EAClBF,YAAY,EACZP,YAAY,EACZG,oBAAoB,CACrB,CAAC;EAEF,MAAMS,aAAa,GAAGC,MAAM,CAACC,MAAM,CAACJ,iBAAiB,CAAC,CAACK,MAAM,CAACC,OAAO,CAAC,CAACC,MAAM;EAC7E,MAAMC,UAAU,GAAGhB,IAAI,EAAEe,MAAM,IAAI,CAAC;EACpC,MAAME,aAAa,GAAGD,UAAU,GAAG,CAAC,IAAIN,aAAa,KAAKM,UAAU;EAGpE,MAAME,WAAW,GAAG3B,WAAW,CAAC,MAAM;IACpC,IAAI,CAACgB,kBAAkB,IAAI,CAACP,IAAI,EAAE;IAElC,MAAMmB,eAAoC,GAAGF,aAAa,GACtD,EAAE,GACFjB,IAAI,CAACoB,GAAG,CAACC,IAAI,IAAIA,IAAI,CAACC,WAAW,CAAC;IAEtC,IAAI,CAACjB,YAAY,EAAE;MACjBH,uBAAuB,CAACO,oBAAoB,CAACU,eAAe,CAAC,CAAC;IAChE;IACApB,cAAc,GAAGoB,eAAe,CAAC;EACnC,CAAC,EAAE,CAACZ,kBAAkB,EAAEP,IAAI,EAAEiB,aAAa,EAAEZ,YAAY,EAAEN,cAAc,CAAC,CAAC;EAE3E,MAAMwB,WAAW,GAAGhC,WAAW,CAC7B,CAACiC,KAAa,EAAEC,QAAgB,EAAEC,YAAqB,GAAG,KAAK,KAAK;IAClE,IAAI,CAACnB,kBAAkB,IAAI,CAACP,IAAI,EAAE;IAElC,IAAImB,eAAoC,GAAG,EAAE;IAE7C,IAAItB,aAAa,KAAK,QAAQ,EAAE;MAC9BsB,eAAe,GAAGQ,sBAAsB,CAAC;QACvCH,KAAK;QACLC,QAAQ;QACRzB,IAAI;QACJQ;MACF,CAAC,CAAC;MACFJ,uBAAuB,CAACqB,QAAQ,CAAC;IACnC,CAAC,MAAM;MACL;;MAEA;MACA;MACA,IAAIC,YAAY,IAAIvB,oBAAoB,IAAI,IAAI,EAAE;QAChDgB,eAAe,GAAGS,qBAAqB,CACrC;UAAEJ,KAAK;UAAEC,QAAQ;UAAEzB,IAAI;UAAEG,oBAAoB;UAAEK;QAAkB,CACnE,CAAC;MACH,CAAC,MAAM;QACLW,eAAe,GAAGU,wBAAwB,CACxC;UAAEL,KAAK;UAAEC,QAAQ;UAAEzB,IAAI;UAAEQ;QAAkB,CAC7C,CAAC;MACH;MACAJ,uBAAuB,CAACqB,QAAQ,CAAC;IACnC;IACA,IAAI,CAACpB,YAAY,EAAE;MACjBH,uBAAuB,CAACO,oBAAoB,CAACU,eAAe,CAAC,CAAC;IAChE;IACApB,cAAc,GAAGoB,eAAe,CAAC;EACnC,CAAC,EACD,CACEZ,kBAAkB,EAClBP,IAAI,EACJH,aAAa,EACbM,oBAAoB,EACpBE,YAAY,EACZG,iBAAiB,EACjBT,cAAc,CAElB,CAAC;EAED,OAAO;IACL+B,YAAY,EAAEtB,iBAAiB;IAC/BS,aAAa;IACbc,YAAY,EAhEOrB,aAAa,GAAG,CAgEvB;IACZQ,WAAW;IACXK;EACF,CAAC;AACH;AAaA,SAASI,sBAAsBA,CAI7B;EAAEH,KAAK;EAAEC,QAAQ;EAAEzB,IAAI;EAAEQ;AAAiD,CAAC,EACtD;EACrB,MAAMwB,UAAU,GAAGhC,IAAI,CAACyB,QAAQ,CAAC,CAACH,WAAW;EAC7C;EACA,MAAMH,eAAe,GAAGX,iBAAiB,CAACgB,KAAK,CAAC,GAAG,EAAE,GAAG,CAACQ,UAAU,CAAC;EACpE,OAAOb,eAAe;AACxB;AAEA,SAASS,qBAAqBA,CAI5B;EAAEzB,oBAAoB;EAAEsB,QAAQ;EAAEzB,IAAI;EAAEQ;AACV,CAAC,EACV;EACrB;EACA;EACA,IAAIL,oBAAoB,IAAI,IAAI,EAAE;IAChC,MAAM8B,WAAW,GAAGC,cAAc,CAAClC,IAAI,EAAEG,oBAAoB,EAAEsB,QAAQ,CAAC;IACxE,MAAMU,kBAAkB,GAAGF,WAAW,CAACb,GAAG,CAACC,IAAI,IAAIA,IAAI,CAACC,WAAW,CAAC;IAEpE,MAAMc,iBAAiB,GAAGC,sBAAsB,CAAC7B,iBAAiB,EAAER,IAAI,CAAC;;IAEzE;IACA,MAAMmB,eAAe,GAAG,CAAC,GAAGiB,iBAAiB,CAAC;IAC9CD,kBAAkB,CAACG,OAAO,CAACjB,IAAI,IAAI;MACjC,IAAI,CAACF,eAAe,CAACoB,QAAQ,CAAClB,IAAI,CAAC,EAAE;QACnCF,eAAe,CAACqB,IAAI,CAACnB,IAAI,CAAC;MAC5B;IACF,CAAC,CAAC;IACF,OAAOF,eAAe;EACxB;EACA,OAAO,EAAE;AACX;AAEA,SAASU,wBAAwBA,CAI/B;EAAEJ,QAAQ;EAAEzB,IAAI;EAAEQ;AAAiD,CAAC,EAC/C;EACrB,MAAMwB,UAAU,GAAGhC,IAAI,CAACyB,QAAQ,CAAC,CAACH,WAAW;EAC7C,MAAMc,iBAAiB,GAAGC,sBAAsB,CAAC7B,iBAAiB,EAAER,IAAI,CAAC;EACzE;EACA,MAAMmB,eAAe,GAAGiB,iBAAiB,CAACG,QAAQ,CAACP,UAAU,CAAC,GAC1DI,iBAAiB,CAACvB,MAAM,CAAC4B,CAAC,IAAIA,CAAC,KAAKT,UAAU,CAAC,GAC/C,CAAC,GAAGI,iBAAiB,EAAEJ,UAAU,CAAC;EACtC,OAAOb,eAAe;AACxB;;AAEA;AACA;AACA;AACA,SAASe,cAAcA,CAIrBlC,IAA8D,EAC9D0C,UAAkB,EAClBC,QAAgB,EAC0C;EAC1D,MAAMC,KAAK,GAAGC,IAAI,CAACC,GAAG,CAACJ,UAAU,EAAEC,QAAQ,CAAC;EAC5C,MAAMI,GAAG,GAAGF,IAAI,CAACG,GAAG,CAACN,UAAU,EAAEC,QAAQ,CAAC;EAC1C,MAAMM,IAA8D,GAAG,EAAE;EAEzE,KAAK,IAAIR,CAAC,GAAGG,KAAK,EAAEH,CAAC,IAAIM,GAAG,EAAEN,CAAC,EAAE,EAAE;IACjC,MAAMpB,IAAI,GAAGrB,IAAI,CAACyC,CAAC,CAAC;IACpB,IAAIpB,IAAI,EAAE;MACR4B,IAAI,CAACT,IAAI,CAACnB,IAAI,CAAC;IACjB;EACF;EAEA,OAAO4B,IAAI;AACb;;AAEA;AACA;AACA;AACA,SAASxC,oBAAoBA,CAC3ByC,WAAgC,EACb;EACnB,OAAOA,WAAW,CAACC,MAAM,CACvB,CAACC,GAAG,EAAEpB,UAAU,KAAK;IACnBoB,GAAG,CAACzD,sBAAsB,CAACqC,UAAU,CAAC,CAAC,GAAG,IAAI;IAC9C,OAAOoB,GAAG;EACZ,CAAC,EACD,CAAC,CACH,CAAC;AACH;;AAEA;AACA;AACA;AACA,SAASf,sBAAsBA,CAI7BgB,cAAiC,EACjCrD,IAA8D,EACzC;EACrB,OAAOA,IAAI,CACRa,MAAM,CAACQ,IAAI,IAAIgC,cAAc,CAAC3D,QAAQ,CAAC2B,IAAI,CAAC,CAAC,CAAC,CAC9CD,GAAG,CAACC,IAAI,IAAIA,IAAI,CAACC,WAAW,CAAC;AAClC","ignoreList":[]}
1
+ {"version":3,"file":"useRowSelection.js","names":["useCallback","useMemo","useState","getRowId","getRowIdFromPrimaryKey","useRowSelection","selectionMode","selectedRows","onRowSelection","data","internalRowSelection","setInternalRowSelection","lastSelectedRowIndex","setLastSelectedRowIndex","isControlled","undefined","isSelectionEnabled","rowSelectionState","getRowSelectionState","selectedCount","Object","values","filter","Boolean","length","totalCount","isAllSelected","onToggleAll","newSelectedRows","map","item","$primaryKey","onToggleRow","rowId","rowIndex","isShiftClick","getSingleSelectionRows","getRangeSelectionRows","getMultipleSelectionRows","rowSelection","hasSelection","primaryKey","rowsInRange","getRowsInRange","primaryKeysInRange","currentlySelected","getSelectedPrimaryKeys","forEach","includes","push","i","startIndex","endIndex","start","Math","min","end","max","rows","primaryKeys","reduce","acc","selectionState"],"sources":["useRowSelection.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type {\n ObjectOrInterfaceDefinition,\n Osdk,\n PrimaryKeyType,\n} from \"@osdk/api\";\nimport type { RowSelectionState } from \"@tanstack/react-table\";\nimport { useCallback, useMemo, useState } from \"react\";\nimport { getRowId, getRowIdFromPrimaryKey } from \"../utils/getRowId.js\";\n\nexport interface UseRowSelectionProps<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, any> = Record<string, never>,\n> {\n selectionMode?: \"single\" | \"multiple\" | \"none\";\n selectedRows?: PrimaryKeyType<Q>[];\n onRowSelection?: (selectedRowIds: PrimaryKeyType<Q>[]) => void;\n data: Array<Osdk.Instance<Q, \"$allBaseProperties\", any, RDPs>> | undefined;\n}\n\nexport interface UseRowSelectionResult {\n rowSelection: RowSelectionState;\n isAllSelected: boolean;\n hasSelection: boolean;\n onToggleAll: () => void;\n onToggleRow: (\n rowId: string,\n rowIndex: number,\n isShiftClick?: boolean,\n ) => void;\n}\n\nexport function useRowSelection<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, any> = Record<string, never>,\n>({\n selectionMode = \"none\",\n selectedRows,\n onRowSelection,\n data,\n}: UseRowSelectionProps<Q, RDPs>): UseRowSelectionResult {\n // The rowSelectionState in uncontrolled mode\n const [internalRowSelection, setInternalRowSelection] = useState<\n RowSelectionState\n >({});\n\n // Used for shift-click behavior in \"multiple\" mode\n const [lastSelectedRowIndex, setLastSelectedRowIndex] = useState<\n number | null\n >(null);\n\n const isControlled = selectedRows !== undefined;\n const isSelectionEnabled = selectionMode !== \"none\";\n\n // Row selection state\n // If controlled mode, return the state from selectedRows prop\n // If uncontrolled, return the internalRowSelection state\n const rowSelectionState: RowSelectionState = useMemo(() => {\n if (!isSelectionEnabled) return {};\n if (isControlled && selectedRows) {\n return getRowSelectionState(selectedRows);\n }\n return internalRowSelection;\n }, [\n isSelectionEnabled,\n isControlled,\n selectedRows,\n internalRowSelection,\n ]);\n\n const selectedCount = Object.values(rowSelectionState).filter(Boolean).length;\n const totalCount = data?.length ?? 0;\n const isAllSelected = totalCount > 0 && selectedCount === totalCount;\n const hasSelection = selectedCount > 0;\n\n const onToggleAll = useCallback(() => {\n if (!isSelectionEnabled || !data) return;\n\n const newSelectedRows: PrimaryKeyType<Q>[] = isAllSelected\n ? []\n : data.map(item => item.$primaryKey);\n\n if (!isControlled) {\n setInternalRowSelection(getRowSelectionState(newSelectedRows));\n }\n onRowSelection?.(newSelectedRows);\n }, [isSelectionEnabled, data, isAllSelected, isControlled, onRowSelection]);\n\n const onToggleRow = useCallback(\n (rowId: string, rowIndex: number, isShiftClick: boolean = false) => {\n if (!isSelectionEnabled || !data) return;\n\n let newSelectedRows: PrimaryKeyType<Q>[] = [];\n\n if (selectionMode === \"single\") {\n newSelectedRows = getSingleSelectionRows({\n rowId,\n rowIndex,\n data,\n rowSelectionState,\n });\n setLastSelectedRowIndex(rowIndex);\n } else {\n // Multiple selection mode\n\n // When user does shiftClick but lastSelectedRowIndex is null,\n // it is treated as a normal click in multiple selection\n if (isShiftClick && lastSelectedRowIndex != null) {\n newSelectedRows = getRangeSelectionRows(\n { rowId, rowIndex, data, lastSelectedRowIndex, rowSelectionState },\n );\n } else {\n newSelectedRows = getMultipleSelectionRows(\n { rowId, rowIndex, data, rowSelectionState },\n );\n }\n setLastSelectedRowIndex(rowIndex);\n }\n if (!isControlled) {\n setInternalRowSelection(getRowSelectionState(newSelectedRows));\n }\n onRowSelection?.(newSelectedRows);\n },\n [\n isSelectionEnabled,\n data,\n selectionMode,\n lastSelectedRowIndex,\n isControlled,\n rowSelectionState,\n onRowSelection,\n ],\n );\n\n return {\n rowSelection: rowSelectionState,\n isAllSelected,\n hasSelection,\n onToggleAll,\n onToggleRow,\n };\n}\n\ninterface GetSelectedRowsProps<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, any> = Record<string, never>,\n> {\n rowId: string;\n rowIndex: number;\n data: Array<Osdk.Instance<Q, \"$allBaseProperties\", any, RDPs>>;\n rowSelectionState: RowSelectionState;\n lastSelectedRowIndex?: number;\n}\n\nfunction getSingleSelectionRows<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, any> = Record<string, never>,\n>(\n { rowId, rowIndex, data, rowSelectionState }: GetSelectedRowsProps<Q, RDPs>,\n): PrimaryKeyType<Q>[] {\n const primaryKey = data[rowIndex].$primaryKey;\n // Toggle row selection in single selection mode\n const newSelectedRows = rowSelectionState[rowId] ? [] : [primaryKey];\n return newSelectedRows;\n}\n\nfunction getRangeSelectionRows<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, any> = Record<string, never>,\n>(\n { lastSelectedRowIndex, rowIndex, data, rowSelectionState }:\n GetSelectedRowsProps<Q, RDPs>,\n): PrimaryKeyType<Q>[] {\n // This function is only called if lastSelectedRowIndex is not null\n // This condition is added for typechecks only\n if (lastSelectedRowIndex != null) {\n const rowsInRange = getRowsInRange(data, lastSelectedRowIndex, rowIndex);\n const primaryKeysInRange = rowsInRange.map(item => item.$primaryKey);\n\n const currentlySelected = getSelectedPrimaryKeys(rowSelectionState, data);\n\n // Add all rows in range to selectedRows if not yet selected\n const newSelectedRows = [...currentlySelected];\n primaryKeysInRange.forEach(item => {\n if (!newSelectedRows.includes(item)) {\n newSelectedRows.push(item);\n }\n });\n return newSelectedRows;\n }\n return [];\n}\n\nfunction getMultipleSelectionRows<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, any> = Record<string, never>,\n>(\n { rowIndex, data, rowSelectionState }: GetSelectedRowsProps<Q, RDPs>,\n): PrimaryKeyType<Q>[] {\n const primaryKey = data[rowIndex].$primaryKey;\n const currentlySelected = getSelectedPrimaryKeys(rowSelectionState, data);\n // Handles single row toggle in multiple selection mode\n const newSelectedRows = currentlySelected.includes(primaryKey)\n ? currentlySelected.filter(i => i !== primaryKey)\n : [...currentlySelected, primaryKey];\n return newSelectedRows;\n}\n\n/**\n * Builds a range of rows from startIndex to endIndex\n */\nfunction getRowsInRange<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, any> = Record<string, never>,\n>(\n data: Array<Osdk.Instance<Q, \"$allBaseProperties\", any, RDPs>>,\n startIndex: number,\n endIndex: number,\n): Array<Osdk.Instance<Q, \"$allBaseProperties\", any, RDPs>> {\n const start = Math.min(startIndex, endIndex);\n const end = Math.max(startIndex, endIndex);\n const rows: Array<Osdk.Instance<Q, \"$allBaseProperties\", any, RDPs>> = [];\n\n for (let i = start; i <= end; i++) {\n const item = data[i];\n if (item) {\n rows.push(item);\n }\n }\n\n return rows;\n}\n\n/**\n * Converts an array of primary keys to a RowSelectionState object\n */\nfunction getRowSelectionState<Q extends ObjectOrInterfaceDefinition>(\n primaryKeys: PrimaryKeyType<Q>[],\n): RowSelectionState {\n return primaryKeys.reduce<RowSelectionState>(\n (acc, primaryKey) => {\n acc[getRowIdFromPrimaryKey(primaryKey)] = true;\n return acc;\n },\n {},\n );\n}\n\n/**\n * Converts from a RowSelectionState object back to an array of primary keys\n */\nfunction getSelectedPrimaryKeys<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, any> = Record<string, never>,\n>(\n selectionState: RowSelectionState,\n data: Array<Osdk.Instance<Q, \"$allBaseProperties\", any, RDPs>>,\n): PrimaryKeyType<Q>[] {\n return data\n .filter(item => selectionState[getRowId(item)])\n .map(item => item.$primaryKey);\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"useSelectionColumn.js","names":["React","useMemo","SelectionCell","SelectionHeaderCell","SELECTION_COLUMN_ID","useSelectionColumn","selectionMode","isAllSelected","hasSelection","onToggleAll","onToggleRow","selectionColumn","id","header","createElement","cell","row","size","minSize","maxSize","enableSorting","enableResizing","enablePinning"],"sources":["useSelectionColumn.tsx"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type {\n ObjectTypeDefinition,\n Osdk,\n PropertyKeys,\n SimplePropertyDef,\n} from \"@osdk/api\";\nimport type { ColumnDef } from \"@tanstack/react-table\";\nimport React, { useMemo } from \"react\";\nimport { SelectionCell, SelectionHeaderCell } from \"../SelectionCells.js\";\nimport { SELECTION_COLUMN_ID } from \"../utils/constants.js\";\n\ninterface UseSelectionColumnProps {\n selectionMode?: \"single\" | \"multiple\" | \"none\";\n isAllSelected: boolean;\n hasSelection: boolean;\n onToggleAll: () => void;\n onToggleRow: (id: string, rowIndex: number, isShiftClick: boolean) => void;\n}\n\nexport const useSelectionColumn = <\n Q extends ObjectTypeDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<\n string,\n never\n >,\n>({\n selectionMode,\n isAllSelected,\n hasSelection,\n onToggleAll,\n onToggleRow,\n}: UseSelectionColumnProps):\n | ColumnDef<\n Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>\n >\n | null =>\n{\n const selectionColumn = useMemo(() => {\n if (selectionMode === \"none\") return null;\n\n const colDef: ColumnDef<\n Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>\n > = {\n id: SELECTION_COLUMN_ID,\n header: () => (\n selectionMode === \"multiple\"\n ? (\n <SelectionHeaderCell\n isAllSelected={isAllSelected}\n hasSelection={hasSelection}\n onToggleAll={onToggleAll}\n />\n )\n : null\n ),\n cell: ({ row }: { row: any }) => (\n <SelectionCell\n row={row}\n onToggleRow={onToggleRow}\n />\n ),\n size: 50,\n minSize: 50,\n maxSize: 50,\n enableSorting: false,\n enableResizing: false,\n enablePinning: false,\n };\n\n return colDef;\n }, [\n selectionMode,\n isAllSelected,\n hasSelection,\n onToggleAll,\n onToggleRow,\n ]);\n\n return selectionColumn;\n};\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AASA,OAAOA,KAAK,IAAIC,OAAO,QAAQ,OAAO;AACtC,SAASC,aAAa,EAAEC,mBAAmB,QAAQ,sBAAsB;AACzE,SAASC,mBAAmB,QAAQ,uBAAuB;AAU3D,OAAO,MAAMC,kBAAkB,GAAGA,CAMhC;EACAC,aAAa;EACbC,aAAa;EACbC,YAAY;EACZC,WAAW;EACXC;AACuB,CAAC,KAK1B;EACE,MAAMC,eAAe,GAAGV,OAAO,CAAC,MAAM;IACpC,IAAIK,aAAa,KAAK,MAAM,EAAE,OAAO,IAAI;IA+BzC,OA3BI;MACFM,EAAE,EAAER,mBAAmB;MACvBS,MAAM,EAAEA,CAAA,KACNP,aAAa,KAAK,UAAU,gBAExBN,KAAA,CAAAc,aAAA,CAACX,mBAAmB;QAClBI,aAAa,EAAEA,aAAc;QAC7BC,YAAY,EAAEA,YAAa;QAC3BC,WAAW,EAAEA;MAAY,CAC1B,CAAC,GAEF,IACL;MACDM,IAAI,EAAEA,CAAC;QAAEC;MAAkB,CAAC,kBAC1BhB,KAAA,CAAAc,aAAA,CAACZ,aAAa;QACZc,GAAG,EAAEA,GAAI;QACTN,WAAW,EAAEA;MAAY,CAC1B,CACF;MACDO,IAAI,EAAE,EAAE;MACRC,OAAO,EAAE,EAAE;MACXC,OAAO,EAAE,EAAE;MACXC,aAAa,EAAE,KAAK;MACpBC,cAAc,EAAE,KAAK;MACrBC,aAAa,EAAE;IACjB,CAAC;EAGH,CAAC,EAAE,CACDhB,aAAa,EACbC,aAAa,EACbC,YAAY,EACZC,WAAW,EACXC,WAAW,CACZ,CAAC;EAEF,OAAOC,eAAe;AACxB,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"useSelectionColumn.js","names":["React","useMemo","SelectionCell","SelectionHeaderCell","SELECTION_COLUMN_ID","useSelectionColumn","selectionMode","isAllSelected","hasSelection","onToggleAll","onToggleRow","selectionColumn","id","header","createElement","cell","row","size","minSize","maxSize","enableSorting","enableResizing","enablePinning"],"sources":["useSelectionColumn.tsx"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type {\n ObjectOrInterfaceDefinition,\n Osdk,\n PropertyKeys,\n SimplePropertyDef,\n} from \"@osdk/api\";\nimport type { ColumnDef } from \"@tanstack/react-table\";\nimport React, { useMemo } from \"react\";\nimport { SelectionCell, SelectionHeaderCell } from \"../SelectionCells.js\";\nimport { SELECTION_COLUMN_ID } from \"../utils/constants.js\";\n\ninterface UseSelectionColumnProps {\n selectionMode?: \"single\" | \"multiple\" | \"none\";\n isAllSelected: boolean;\n hasSelection: boolean;\n onToggleAll: () => void;\n onToggleRow: (id: string, rowIndex: number, isShiftClick: boolean) => void;\n}\n\nexport const useSelectionColumn = <\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<\n string,\n never\n >,\n>({\n selectionMode,\n isAllSelected,\n hasSelection,\n onToggleAll,\n onToggleRow,\n}: UseSelectionColumnProps):\n | ColumnDef<\n Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>\n >\n | null =>\n{\n const selectionColumn = useMemo(() => {\n if (selectionMode === \"none\") return null;\n\n const colDef: ColumnDef<\n Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>\n > = {\n id: SELECTION_COLUMN_ID,\n header: () => (\n selectionMode === \"multiple\"\n ? (\n <SelectionHeaderCell\n isAllSelected={isAllSelected}\n hasSelection={hasSelection}\n onToggleAll={onToggleAll}\n />\n )\n : null\n ),\n cell: ({ row }: { row: any }) => (\n <SelectionCell\n row={row}\n onToggleRow={onToggleRow}\n />\n ),\n size: 50,\n minSize: 50,\n maxSize: 50,\n enableSorting: false,\n enableResizing: false,\n enablePinning: false,\n };\n\n return colDef;\n }, [\n selectionMode,\n isAllSelected,\n hasSelection,\n onToggleAll,\n onToggleRow,\n ]);\n\n return selectionColumn;\n};\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AASA,OAAOA,KAAK,IAAIC,OAAO,QAAQ,OAAO;AACtC,SAASC,aAAa,EAAEC,mBAAmB,QAAQ,sBAAsB;AACzE,SAASC,mBAAmB,QAAQ,uBAAuB;AAU3D,OAAO,MAAMC,kBAAkB,GAAGA,CAMhC;EACAC,aAAa;EACbC,aAAa;EACbC,YAAY;EACZC,WAAW;EACXC;AACuB,CAAC,KAK1B;EACE,MAAMC,eAAe,GAAGV,OAAO,CAAC,MAAM;IACpC,IAAIK,aAAa,KAAK,MAAM,EAAE,OAAO,IAAI;IA+BzC,OA3BI;MACFM,EAAE,EAAER,mBAAmB;MACvBS,MAAM,EAAEA,CAAA,KACNP,aAAa,KAAK,UAAU,gBAExBN,KAAA,CAAAc,aAAA,CAACX,mBAAmB;QAClBI,aAAa,EAAEA,aAAc;QAC7BC,YAAY,EAAEA,YAAa;QAC3BC,WAAW,EAAEA;MAAY,CAC1B,CAAC,GAEF,IACL;MACDM,IAAI,EAAEA,CAAC;QAAEC;MAAkB,CAAC,kBAC1BhB,KAAA,CAAAc,aAAA,CAACZ,aAAa;QACZc,GAAG,EAAEA,GAAI;QACTN,WAAW,EAAEA;MAAY,CAC1B,CACF;MACDO,IAAI,EAAE,EAAE;MACRC,OAAO,EAAE,EAAE;MACXC,OAAO,EAAE,EAAE;MACXC,aAAa,EAAE,KAAK;MACpBC,cAAc,EAAE,KAAK;MACrBC,aAAa,EAAE;IACjB,CAAC;EAGH,CAAC,EAAE,CACDhB,aAAa,EACbC,aAAa,EACbC,YAAY,EACZC,WAAW,EACXC,WAAW,CACZ,CAAC;EAEF,OAAOC,eAAe;AACxB,CAAC","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"useTableSorting.js","names":["useCallback","useMemo","useState","useTableSorting","orderBy","defaultOrderBy","onOrderByChanged","internalSorting","setInternalSorting","convertOrderByToSortingState","isControlled","undefined","sortingState","onSortingChange","updater","newSorting","newOrderBy","convertSortingStateToOrderBy","sorting","map","property","direction","id","desc"],"sources":["useTableSorting.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type {\n ObjectTypeDefinition,\n PropertyKeys,\n QueryDefinition,\n SimplePropertyDef,\n} from \"@osdk/api\";\nimport type { OnChangeFn, SortingState } from \"@tanstack/react-table\";\nimport { useCallback, useMemo, useState } from \"react\";\nimport type { ObjectTableProps } from \"../ObjectTableApi.js\";\n\ninterface UseTableSortingProps<\n Q extends ObjectTypeDefinition,\n RDPs extends Record<string, SimplePropertyDef> = {},\n FunctionColumns extends Record<string, QueryDefinition<{}>> = Record<\n string,\n never\n >,\n> {\n orderBy?: ObjectTableProps<Q, RDPs, FunctionColumns>[\"orderBy\"];\n\n defaultOrderBy?: ObjectTableProps<Q, RDPs, FunctionColumns>[\"defaultOrderBy\"];\n\n onOrderByChanged?: ObjectTableProps<\n Q,\n RDPs,\n FunctionColumns\n >[\"onOrderByChanged\"];\n}\n\ninterface UseTableSortingResults {\n sorting: SortingState;\n onSortingChange: OnChangeFn<SortingState>;\n}\n\nexport const useTableSorting = <\n Q extends ObjectTypeDefinition,\n RDPs extends Record<string, SimplePropertyDef> = {},\n FunctionColumns extends Record<string, QueryDefinition<{}>> = Record<\n string,\n never\n >,\n>({\n orderBy,\n defaultOrderBy,\n onOrderByChanged,\n}: UseTableSortingProps<Q, RDPs, FunctionColumns>): UseTableSortingResults => {\n // The sorting state in uncontrolled mode\n const [internalSorting, setInternalSorting] = useState<SortingState>(() =>\n defaultOrderBy ? convertOrderByToSortingState(defaultOrderBy) : []\n );\n\n const isControlled = orderBy !== undefined;\n\n // Sorting state\n // If controlled mode, return the state from orderBy prop\n // If uncontrolled, return the internalSorting state\n const sortingState: SortingState = useMemo(\n () => (orderBy ? convertOrderByToSortingState(orderBy) : internalSorting),\n [orderBy, internalSorting],\n );\n\n const onSortingChange: OnChangeFn<SortingState> = useCallback(\n (updater) => {\n const newSorting = typeof updater === \"function\"\n ? updater(sortingState)\n : updater;\n\n // Update internal state if uncontrolled\n if (!isControlled) {\n setInternalSorting(newSorting);\n }\n\n if (onOrderByChanged) {\n const newOrderBy = convertSortingStateToOrderBy<Q>(newSorting);\n onOrderByChanged(newOrderBy);\n }\n },\n [isControlled, sortingState, onOrderByChanged],\n );\n\n return { sorting: sortingState, onSortingChange };\n};\n\nfunction convertOrderByToSortingState<Q extends ObjectTypeDefinition>(\n orderBy: Array<{\n property: PropertyKeys<Q>;\n direction: \"asc\" | \"desc\";\n }>,\n): SortingState {\n return orderBy.map(({ property, direction }) => ({\n id: property,\n desc: direction === \"desc\",\n }));\n}\n\nfunction convertSortingStateToOrderBy<Q extends ObjectTypeDefinition>(\n sorting: SortingState,\n): Array<{\n property: PropertyKeys<Q>;\n direction: \"asc\" | \"desc\";\n}> {\n return sorting.map(({ id, desc }) => ({\n property: id as PropertyKeys<Q>,\n direction: desc ? \"desc\" : \"asc\",\n }));\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AASA,SAASA,WAAW,EAAEC,OAAO,EAAEC,QAAQ,QAAQ,OAAO;AA2BtD,OAAO,MAAMC,eAAe,GAAGA,CAO7B;EACAC,OAAO;EACPC,cAAc;EACdC;AAC8C,CAAC,KAA6B;EAC5E;EACA,MAAM,CAACC,eAAe,EAAEC,kBAAkB,CAAC,GAAGN,QAAQ,CAAe,MACnEG,cAAc,GAAGI,4BAA4B,CAACJ,cAAc,CAAC,GAAG,EAClE,CAAC;EAED,MAAMK,YAAY,GAAGN,OAAO,KAAKO,SAAS;;EAE1C;EACA;EACA;EACA,MAAMC,YAA0B,GAAGX,OAAO,CACxC,MAAOG,OAAO,GAAGK,4BAA4B,CAACL,OAAO,CAAC,GAAGG,eAAgB,EACzE,CAACH,OAAO,EAAEG,eAAe,CAC3B,CAAC;EAED,MAAMM,eAAyC,GAAGb,WAAW,CAC1Dc,OAAO,IAAK;IACX,MAAMC,UAAU,GAAG,OAAOD,OAAO,KAAK,UAAU,GAC5CA,OAAO,CAACF,YAAY,CAAC,GACrBE,OAAO;;IAEX;IACA,IAAI,CAACJ,YAAY,EAAE;MACjBF,kBAAkB,CAACO,UAAU,CAAC;IAChC;IAEA,IAAIT,gBAAgB,EAAE;MACpB,MAAMU,UAAU,GAAGC,4BAA4B,CAAIF,UAAU,CAAC;MAC9DT,gBAAgB,CAACU,UAAU,CAAC;IAC9B;EACF,CAAC,EACD,CAACN,YAAY,EAAEE,YAAY,EAAEN,gBAAgB,CAC/C,CAAC;EAED,OAAO;IAAEY,OAAO,EAAEN,YAAY;IAAEC;EAAgB,CAAC;AACnD,CAAC;AAED,SAASJ,4BAA4BA,CACnCL,OAGE,EACY;EACd,OAAOA,OAAO,CAACe,GAAG,CAAC,CAAC;IAAEC,QAAQ;IAAEC;EAAU,CAAC,MAAM;IAC/CC,EAAE,EAAEF,QAAQ;IACZG,IAAI,EAAEF,SAAS,KAAK;EACtB,CAAC,CAAC,CAAC;AACL;AAEA,SAASJ,4BAA4BA,CACnCC,OAAqB,EAIpB;EACD,OAAOA,OAAO,CAACC,GAAG,CAAC,CAAC;IAAEG,EAAE;IAAEC;EAAK,CAAC,MAAM;IACpCH,QAAQ,EAAEE,EAAqB;IAC/BD,SAAS,EAAEE,IAAI,GAAG,MAAM,GAAG;EAC7B,CAAC,CAAC,CAAC;AACL","ignoreList":[]}
1
+ {"version":3,"file":"useTableSorting.js","names":["useCallback","useMemo","useState","useTableSorting","orderBy","defaultOrderBy","onOrderByChanged","internalSorting","setInternalSorting","convertOrderByToSortingState","isControlled","undefined","sortingState","onSortingChange","updater","newSorting","newOrderBy","convertSortingStateToOrderBy","sorting","map","property","direction","id","desc"],"sources":["useTableSorting.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type {\n ObjectOrInterfaceDefinition,\n PropertyKeys,\n QueryDefinition,\n SimplePropertyDef,\n} from \"@osdk/api\";\nimport type { OnChangeFn, SortingState } from \"@tanstack/react-table\";\nimport { useCallback, useMemo, useState } from \"react\";\nimport type { ObjectTableProps } from \"../ObjectTableApi.js\";\n\ninterface UseTableSortingProps<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = {},\n FunctionColumns extends Record<string, QueryDefinition<{}>> = Record<\n string,\n never\n >,\n> {\n orderBy?: ObjectTableProps<Q, RDPs, FunctionColumns>[\"orderBy\"];\n\n defaultOrderBy?: ObjectTableProps<Q, RDPs, FunctionColumns>[\"defaultOrderBy\"];\n\n onOrderByChanged?: ObjectTableProps<\n Q,\n RDPs,\n FunctionColumns\n >[\"onOrderByChanged\"];\n}\n\ninterface UseTableSortingResults {\n sorting: SortingState;\n onSortingChange: OnChangeFn<SortingState>;\n}\n\nexport const useTableSorting = <\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = {},\n FunctionColumns extends Record<string, QueryDefinition<{}>> = Record<\n string,\n never\n >,\n>({\n orderBy,\n defaultOrderBy,\n onOrderByChanged,\n}: UseTableSortingProps<Q, RDPs, FunctionColumns>): UseTableSortingResults => {\n // The sorting state in uncontrolled mode\n const [internalSorting, setInternalSorting] = useState<SortingState>(() =>\n defaultOrderBy ? convertOrderByToSortingState(defaultOrderBy) : []\n );\n\n const isControlled = orderBy !== undefined;\n\n // Sorting state\n // If controlled mode, return the state from orderBy prop\n // If uncontrolled, return the internalSorting state\n const sortingState: SortingState = useMemo(\n () => (orderBy ? convertOrderByToSortingState(orderBy) : internalSorting),\n [orderBy, internalSorting],\n );\n\n const onSortingChange: OnChangeFn<SortingState> = useCallback(\n (updater) => {\n const newSorting = typeof updater === \"function\"\n ? updater(sortingState)\n : updater;\n\n // Update internal state if uncontrolled\n if (!isControlled) {\n setInternalSorting(newSorting);\n }\n\n if (onOrderByChanged) {\n const newOrderBy = convertSortingStateToOrderBy<Q>(newSorting);\n onOrderByChanged(newOrderBy);\n }\n },\n [isControlled, sortingState, onOrderByChanged],\n );\n\n return { sorting: sortingState, onSortingChange };\n};\n\nfunction convertOrderByToSortingState<Q extends ObjectOrInterfaceDefinition>(\n orderBy: Array<{\n property: PropertyKeys<Q>;\n direction: \"asc\" | \"desc\";\n }>,\n): SortingState {\n return orderBy.map(({ property, direction }) => ({\n id: property,\n desc: direction === \"desc\",\n }));\n}\n\nfunction convertSortingStateToOrderBy<Q extends ObjectOrInterfaceDefinition>(\n sorting: SortingState,\n): Array<{\n property: PropertyKeys<Q>;\n direction: \"asc\" | \"desc\";\n}> {\n return sorting.map(({ id, desc }) => ({\n property: id as PropertyKeys<Q>,\n direction: desc ? \"desc\" : \"asc\",\n }));\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AASA,SAASA,WAAW,EAAEC,OAAO,EAAEC,QAAQ,QAAQ,OAAO;AA2BtD,OAAO,MAAMC,eAAe,GAAGA,CAO7B;EACAC,OAAO;EACPC,cAAc;EACdC;AAC8C,CAAC,KAA6B;EAC5E;EACA,MAAM,CAACC,eAAe,EAAEC,kBAAkB,CAAC,GAAGN,QAAQ,CAAe,MACnEG,cAAc,GAAGI,4BAA4B,CAACJ,cAAc,CAAC,GAAG,EAClE,CAAC;EAED,MAAMK,YAAY,GAAGN,OAAO,KAAKO,SAAS;;EAE1C;EACA;EACA;EACA,MAAMC,YAA0B,GAAGX,OAAO,CACxC,MAAOG,OAAO,GAAGK,4BAA4B,CAACL,OAAO,CAAC,GAAGG,eAAgB,EACzE,CAACH,OAAO,EAAEG,eAAe,CAC3B,CAAC;EAED,MAAMM,eAAyC,GAAGb,WAAW,CAC1Dc,OAAO,IAAK;IACX,MAAMC,UAAU,GAAG,OAAOD,OAAO,KAAK,UAAU,GAC5CA,OAAO,CAACF,YAAY,CAAC,GACrBE,OAAO;;IAEX;IACA,IAAI,CAACJ,YAAY,EAAE;MACjBF,kBAAkB,CAACO,UAAU,CAAC;IAChC;IAEA,IAAIT,gBAAgB,EAAE;MACpB,MAAMU,UAAU,GAAGC,4BAA4B,CAAIF,UAAU,CAAC;MAC9DT,gBAAgB,CAACU,UAAU,CAAC;IAC9B;EACF,CAAC,EACD,CAACN,YAAY,EAAEE,YAAY,EAAEN,gBAAgB,CAC/C,CAAC;EAED,OAAO;IAAEY,OAAO,EAAEN,YAAY;IAAEC;EAAgB,CAAC;AACnD,CAAC;AAED,SAASJ,4BAA4BA,CACnCL,OAGE,EACY;EACd,OAAOA,OAAO,CAACe,GAAG,CAAC,CAAC;IAAEC,QAAQ;IAAEC;EAAU,CAAC,MAAM;IAC/CC,EAAE,EAAEF,QAAQ;IACZG,IAAI,EAAEF,SAAS,KAAK;EACtB,CAAC,CAAC,CAAC;AACL;AAEA,SAASJ,4BAA4BA,CACnCC,OAAqB,EAIpB;EACD,OAAOA,OAAO,CAACC,GAAG,CAAC,CAAC;IAAEG,EAAE;IAAEC;EAAK,CAAC,MAAM;IACpCH,QAAQ,EAAEE,EAAqB;IAC/BD,SAAS,EAAEE,IAAI,GAAG,MAAM,GAAG;EAC7B,CAAC,CAAC,CAAC;AACL","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"getRowId.js","names":["getRowId","row","getRowIdFromPrimaryKey","$primaryKey","primaryKey","toString"],"sources":["getRowId.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type {\n ObjectTypeDefinition,\n Osdk,\n PrimaryKeyType,\n PropertyKeys,\n SimplePropertyDef,\n} from \"@osdk/api\";\n\nexport const getRowId = <\n Q extends ObjectTypeDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<\n string,\n never\n >,\n>(\n row: Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>,\n): string => {\n return getRowIdFromPrimaryKey(row.$primaryKey);\n};\n\nexport const getRowIdFromPrimaryKey = <Q extends ObjectTypeDefinition>(\n primaryKey: PrimaryKeyType<Q>,\n): string => primaryKey.toString();\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAUA,OAAO,MAAMA,QAAQ,GAOnBC,GAAkE,IACvD;EACX,OAAOC,sBAAsB,CAACD,GAAG,CAACE,WAAW,CAAC;AAChD,CAAC;AAED,OAAO,MAAMD,sBAAsB,GACjCE,UAA6B,IAClBA,UAAU,CAACC,QAAQ,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"getRowId.js","names":["getRowId","row","getRowIdFromPrimaryKey","$primaryKey","primaryKey","toString"],"sources":["getRowId.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type {\n ObjectOrInterfaceDefinition,\n Osdk,\n PrimaryKeyType,\n PropertyKeys,\n SimplePropertyDef,\n} from \"@osdk/api\";\n\nexport const getRowId = <\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<\n string,\n never\n >,\n>(\n row: Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>,\n): string => {\n return getRowIdFromPrimaryKey(row.$primaryKey);\n};\n\nexport const getRowIdFromPrimaryKey = <Q extends ObjectOrInterfaceDefinition>(\n primaryKey: PrimaryKeyType<Q>,\n): string => primaryKey.toString();\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAUA,OAAO,MAAMA,QAAQ,GAOnBC,GAAkE,IACvD;EACX,OAAOC,sBAAsB,CAACD,GAAG,CAACE,WAAW,CAAC;AAChD,CAAC;AAED,OAAO,MAAMD,sBAAsB,GACjCE,UAA6B,IAClBA,UAAU,CAACC,QAAQ,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,76 @@
1
+ import type { ActionDefinition, ActionEditResponse, ActionReturnTypeForOptions, ActionValidationResponse } from "@osdk/api";
2
+ import type { ActionValidationError, ApplyActionOptions } from "@osdk/client";
3
+ import type { ActionParameters, FieldKey, FieldValueType, FormFieldDefinition } from "./FormFieldApi.js";
4
+ /**
5
+ * Props for the ActionForm component
6
+ */
7
+ export interface ActionFormProps<Q extends ActionDefinition<unknown>> {
8
+ actionDefinition: Q;
9
+ /**
10
+ * If not supplied, defaults to actionDef.displayName
11
+ */
12
+ formTitle?: string;
13
+ /**
14
+ * If not supplied, this will be constructed from ActionParameters
15
+ */
16
+ formFieldDefinition?: Array<FormFieldDefinition<Q>>;
17
+ /**
18
+ * Called when a field value changed.
19
+ * Required when a field is in controlled mode, i.e. value is provided via formFieldDefinition.
20
+ *
21
+ * @param fieldKey The key of the changed field
22
+ * @param value the updated value of the field
23
+ */
24
+ onFieldValueChanged?: <K extends FieldKey<Q>>(fieldKey: K, value: FieldValueType<Q, K>) => void;
25
+ /**
26
+ * Override to disable submit button
27
+ * If not provided, button is disabled when form is submitting or has validation errors
28
+ *
29
+ * @default false
30
+ */
31
+ isSubmitDisabled?: boolean;
32
+ /**
33
+ * If supplied, this will override the default submit action
34
+ * By default, the action's applyAction will be called with $validateOnly: false
35
+ *
36
+ * @param formState all field values when onSubmit is called
37
+ * @param applyAction the function to execute the action. Call it with $validateOnly: true options to run validation mode onSubmit.
38
+ * @returns a promise of the submission response
39
+ */
40
+ onSubmit?: <OP extends ApplyActionOptions>(formState: FormState<Q>, applyAction: (args: ActionParameters<Q>, options?: OP) => Promise<ActionReturnTypeForOptions<OP>>) => Promise<ActionReturnTypeForOptions<OP>> | void;
41
+ /**
42
+ * Called when the validation response is returned from a validateOnly submission
43
+ *
44
+ * @param results the validation response
45
+ */
46
+ onValidationResponse?: (results: ActionValidationResponse) => void;
47
+ /**
48
+ * Called when the action is successfully executed from a non-validateOnly submission
49
+ *
50
+ * @param results the submission response
51
+ */
52
+ onSuccess?: (results: ActionEditResponse) => void;
53
+ /**
54
+ * Called when there is an error in form submission
55
+ *
56
+ * @param error the error that occurred
57
+ */
58
+ onError?: (error: FormError) => void;
59
+ }
60
+ /**
61
+ * Form values mapping parameter names to their values
62
+ */
63
+ export type FormState<Q extends ActionDefinition<unknown>> = { [K in FieldKey<Q>] : FieldValueType<Q, K> };
64
+ /**
65
+ * Form error discriminated union
66
+ */
67
+ export type FormError = {
68
+ type: "validation"
69
+ error: ActionValidationError
70
+ } | {
71
+ type: "submission"
72
+ error: Error
73
+ } | {
74
+ type: "unknown"
75
+ error: unknown
76
+ };
@@ -0,0 +1 @@
1
+ {"mappings":"AAgBA,cACE,kBACA,oBACA,4BACA,gCACK,WAAY;AACnB,cAAc,uBAAuB,0BAA0B,cAAe;AAC9E,cACE,kBACA,UACA,gBACA,2BACK,mBAAoB;;;;AAK3B,iBAAiB,gBAAgB,UAAU,2BAA2B;CACpE,kBAAkB;;;;CAKlB;;;;CAKA,sBAAsB,MAAM,oBAAoB;;;;;;;;CAShD,uBAAuB,UAAU,SAAS,IACxCA,UAAU,GACVC,OAAO,eAAe,GAAG;;;;;;;CAS3B;;;;;;;;;CAUA,YAAY,WAAW,oBACrBC,WAAW,UAAU,IACrBC,cACEC,MAAM,iBAAiB,IACvBC,UAAU,OACP,QAAQ,2BAA2B,SACrC,QAAQ,2BAA2B;;;;;;CAOxC,wBAAwBC,SAAS;;;;;;CAOjC,aAAaC,SAAS;;;;;;CAOtB,WAAWC,OAAO;AACnB;;;;AAKD,YAAY,UAAU,UAAU,gCAC7B,KAAK,SAAS,MAAK,eAAe,GAAG;;;;AAMxC,YAAY,YACR;CAAE,MAAM;CAAc,OAAO;AAAuB,IACpD;CAAE,MAAM;CAAc,OAAO;AAAO,IACpC;CAAE,MAAM;CAAW;AAAgB","names":["fieldKey: K","value: FieldValueType<Q, K>","formState: FormState<Q>","applyAction: (\n args: ActionParameters<Q>,\n options?: OP,\n ) => Promise<ActionReturnTypeForOptions<OP>>","args: ActionParameters<Q>","options?: OP","results: ActionValidationResponse","results: ActionEditResponse","error: FormError"],"sources":["../../../src/action-form/ActionFormApi.ts"],"version":3,"file":"ActionFormApi.d.ts"}
@@ -0,0 +1,241 @@
1
+ import type { ActionDefinition, CompileTimeMetadata, ObjectSet, ObjectTypeDefinition } from "@osdk/api";
2
+ import type React from "react";
3
+ /**
4
+ * A form field definition specifies configuration for a single field
5
+ */
6
+ export interface FormFieldDefinition<
7
+ Q extends ActionDefinition<unknown>,
8
+ K extends FieldKey<Q> = FieldKey<Q>,
9
+ V extends FieldValueType<Q, K> = FieldValueType<Q, K>,
10
+ C extends ValidFormFieldForPropertyType<V> = ValidFormFieldForPropertyType<V>
11
+ > {
12
+ /**
13
+ * The field's unique key
14
+ */
15
+ fieldKey: K;
16
+ /**
17
+ * Display label for the field
18
+ * If not provided, the form field will not show any label.
19
+ */
20
+ label?: string;
21
+ /**
22
+ * Current value of the field
23
+ * If provided, the field operates in controlled mode
24
+ */
25
+ value?: V;
26
+ /**
27
+ * Default value of the field
28
+ */
29
+ defaultValue?: V;
30
+ /**
31
+ * The form field component type to render
32
+ */
33
+ fieldComponent: C;
34
+ /**
35
+ * Whether the field is required
36
+ */
37
+ isRequired?: boolean;
38
+ /**
39
+ * Placeholder text
40
+ */
41
+ placeholder?: string;
42
+ /**
43
+ * Additional information to display on this field
44
+ * The placement of helper text depends on the value of helperTextPlacement prop
45
+ */
46
+ helperText?: string;
47
+ /**
48
+ * The placement of the helper text either below the field or in a tooltip
49
+ *
50
+ * @default "tooltip"
51
+ */
52
+ helperTextPlacement?: "bottom" | "tooltip";
53
+ /**
54
+ * Whether the field is disabled
55
+ */
56
+ isDisabled?: boolean;
57
+ /**
58
+ * A callback to return a custom error message if validation failed
59
+ *
60
+ * @param validationRule the validation rule that failed with the error message
61
+ * @returns the error message to display
62
+ */
63
+ onValidationError?: (error: ValidationError) => string;
64
+ /**
65
+ * Additional function to validate the field
66
+ *
67
+ * @param value the current field value
68
+ * @returns a boolean promise indicating whether the value is valid
69
+ */
70
+ validate?: (value: V) => Promise<boolean>;
71
+ /**
72
+ * The component props for the form field
73
+ * Excludes runtime props (key, onChange) which are managed by ActionForm
74
+ */
75
+ fieldComponentProps?: Omit<FormFieldPropsByType[C], "key" | "onChange">;
76
+ }
77
+ type ValidationError = {
78
+ type: ValidationRule
79
+ error: string
80
+ };
81
+ type ValidationRule = "required" | "min" | "max" | "minLength" | "maxLength" | "pattern" | "validate";
82
+ /**
83
+ * Maps field types to their corresponding props
84
+ */
85
+ export interface FormFieldPropsByType {
86
+ DATETIME_PICKER: DatetimePickerFieldProps;
87
+ DROPDOWN: DropdownFieldProps<unknown>;
88
+ FILE_PICKER: FilePickerProps;
89
+ NUMBER_INPUT: NumberInputFieldProps;
90
+ OBJECT_SET: ObjectSetFieldProps<ObjectTypeDefinition>;
91
+ RADIO_BUTTONS: RadioButtonsFieldProps<unknown>;
92
+ TEXT_AREA: TextAreaFieldProps;
93
+ TEXT_INPUT: TextInputFieldProps;
94
+ CUSTOM: CustomFieldProps<unknown>;
95
+ }
96
+ /**
97
+ * Datetime picker field props
98
+ */
99
+ export interface DatetimePickerFieldProps extends BaseFormFieldProps<Date> {
100
+ fieldComponent: "DATETIME_PICKER";
101
+ /**
102
+ * The earliest date the user can select
103
+ * If provided, this will be added to the field validation
104
+ */
105
+ min?: Date;
106
+ /**
107
+ * The latest date the user can select
108
+ * If provided, this will be added to the field validation
109
+ */
110
+ max?: Date;
111
+ /**
112
+ * Whether to show time picker
113
+ */
114
+ showTime?: boolean;
115
+ /**
116
+ * Function to format the date string
117
+ */
118
+ formatDate?: (date: Date) => string;
119
+ }
120
+ /**
121
+ * Dropdown field props with selectable options
122
+ */
123
+ export interface DropdownFieldProps<
124
+ V,
125
+ IsMulti extends boolean = false
126
+ > extends BaseFormFieldProps<IsMulti extends true ? V[] : V> {
127
+ fieldComponent: "DROPDOWN";
128
+ /**
129
+ * Available options for the dropdown
130
+ */
131
+ options: Option<V>[];
132
+ /**
133
+ * Whether the dropdown allows searching/filtering
134
+ */
135
+ isSearchable?: boolean;
136
+ /**
137
+ * Whether multiple values can be selected
138
+ */
139
+ isMulti?: boolean;
140
+ }
141
+ export interface FilePickerProps extends BaseFormFieldProps<File | File[]> {
142
+ fieldComponent: "FILE_PICKER";
143
+ /**
144
+ * Whether multiple files can be selected
145
+ */
146
+ isMulti?: boolean;
147
+ /**
148
+ * Accepted file types (e.g., "image/*", ".pdf")
149
+ */
150
+ accept?: string | string[];
151
+ /**
152
+ * Maximum file size in bytes
153
+ */
154
+ maxSize?: number;
155
+ }
156
+ /**
157
+ * Text area field props
158
+ */
159
+ export interface TextAreaFieldProps extends BaseFormFieldProps<string>, Pick<React.TextareaHTMLAttributes<HTMLTextAreaElement>, "rows" | "wrap" | "minLength" | "maxLength"> {
160
+ fieldComponent: "TEXT_AREA";
161
+ }
162
+ export interface TextInputFieldProps extends BaseFormFieldProps<string>, Pick<React.InputHTMLAttributes<HTMLInputElement>, "minLength" | "maxLength"> {
163
+ fieldComponent: "TEXT_INPUT";
164
+ }
165
+ /**
166
+ * Number input field props
167
+ */
168
+ export interface NumberInputFieldProps extends BaseFormFieldProps<number>, Pick<React.InputHTMLAttributes<HTMLInputElement>, "min" | "max" | "step"> {
169
+ fieldComponent: "NUMBER_INPUT";
170
+ }
171
+ /**
172
+ * Radio buttons field props
173
+ */
174
+ export interface RadioButtonsFieldProps<V> extends BaseFormFieldProps<V> {
175
+ fieldComponent: "RADIO_BUTTONS";
176
+ /**
177
+ * Available options for radio buttons
178
+ */
179
+ options: Option<V>[];
180
+ }
181
+ /**
182
+ * Option interface for dropdown and radio options
183
+ */
184
+ export interface Option<V> {
185
+ label: string;
186
+ value: V;
187
+ }
188
+ /**
189
+ * Object set field displays the summary of the count of the given object set
190
+ */
191
+ export interface ObjectSetFieldProps<T extends ObjectTypeDefinition> extends BaseFormFieldProps<ObjectSet<T>> {
192
+ fieldComponent: "OBJECT_SET";
193
+ }
194
+ /**
195
+ * Custom field props for user-defined renderers
196
+ */
197
+ export interface CustomFieldProps<V> extends BaseFormFieldProps<V> {
198
+ fieldComponent: "CUSTOM";
199
+ /**
200
+ * Custom renderer function
201
+ */
202
+ customRenderer: (props: BaseFormFieldProps<V>) => React.ReactNode;
203
+ }
204
+ export interface BaseFormFieldProps<V> {
205
+ fieldComponent: FieldComponent;
206
+ /**
207
+ * Called when the field value changed.
208
+ *
209
+ * ActionForm internally wraps this to pass the key to onFieldValueChanged:
210
+ * ```
211
+ * <DropdownField
212
+ * {...fieldDef}
213
+ * onChange={(value) => onFieldValueChanged(fieldDef.key, value)}
214
+ * />
215
+ * ```
216
+ *
217
+ * @param value The new value of the form field
218
+ */
219
+ onChange?: (value?: V) => void;
220
+ }
221
+ export type FieldKey<Q extends ActionDefinition<unknown>> = keyof ActionParameters<Q>;
222
+ /**
223
+ * Extracts parameters from an ActionDefinition
224
+ */
225
+ export type ActionParameters<Q extends ActionDefinition<unknown>> = CompileTimeMetadata<Q>["parameters"];
226
+ /**
227
+ * Extracts the value type for a specific parameter
228
+ */
229
+ export type FieldValueType<
230
+ Q extends ActionDefinition<unknown> = ActionDefinition<unknown>,
231
+ K extends keyof ActionParameters<Q> = keyof ActionParameters<Q>
232
+ > = ActionParameters<Q>[K]["type"];
233
+ /**
234
+ * Available form field component types
235
+ */
236
+ export type FieldComponent = "DATETIME_PICKER" | "DROPDOWN" | "FILE_PICKER" | "NUMBER_INPUT" | "RADIO_BUTTONS" | "OBJECT_SET" | "TEXT_AREA" | "TEXT_INPUT" | "CUSTOM";
237
+ /**
238
+ * Gets valid form field types for a given property type
239
+ */
240
+ export type ValidFormFieldForPropertyType<P extends FieldValueType> = P extends "objectSet" ? "OBJECT_SET" : P extends "object" ? "DROPDOWN" : P extends "mediaReference" | "attachment" ? "FILE_PICKER" : P extends "boolean" ? "RADIO_BUTTONS" | "DROPDOWN" : P extends "string" ? "TEXT_INPUT" | "TEXT_AREA" : P extends "datetime" | "timestamp" ? "DATETIME_PICKER" : P extends "double" | "integer" | "long" | "float" | "short" | "byte" | "decimal" ? "NUMBER_INPUT" : never;
241
+ export {};
@@ -0,0 +1 @@
1
+ {"mappings":"AAgBA,cACE,kBACA,qBACA,WACA,4BACK,WAAY;AACnB,YAAY,WAAW,OAAQ;;;;AAK/B,iBAAiB;CACf,UAAU;CACV,UAAU,SAAS,KAAK,SAAS;CACjC,UAAU,eAAe,GAAG,KAAK,eAAe,GAAG;CACnD,UAAU,8BAA8B,KAAK,8BAA8B;EAC3E;;;;CAIA,UAAU;;;;;CAMV;;;;;CAMA,QAAQ;;;;CAKR,eAAe;;;;CAKf,gBAAgB;;;;CAKhB;;;;CAKA;;;;;CAMA;;;;;;CAOA,sBAAsB,WAAW;;;;CAKjC;;;;;;;CAQA,qBAAqBA,OAAO;;;;;;;CAQ5B,YAAYC,OAAO,MAAM;;;;;CAMzB,sBAAsB,KAAK,qBAAqB,IAAI,QAAQ;AAC7D;KAEI,kBAAkB;CAAE,MAAM;CAAgB;AAAe;KAEzD,iBACD,aACA,QACA,QACA,cACA,cACA,YACA;;;;AAKJ,iBAAiB,qBAAqB;CACpC,iBAAiB;CACjB,UAAU;CACV,aAAa;CACb,cAAc;CACd,YAAY,oBAAoB;CAChC,eAAe;CACf,WAAW;CACX,YAAY;CACZ,QAAQ;AACT;;;;AAKD,iBAAiB,iCAAiC,mBAAmB,MAAM;CACzE,gBAAgB;;;;;CAMhB,MAAM;;;;;CAMN,MAAM;;;;CAKN;;;;CAKA,cAAcC,MAAM;AACrB;;;;AAKD,iBAAiB;CAAmB;CAAG,0BAA0B;UACvD,mBAAmB,gBAAgB,OAAO,MAAM,GAC1D;CACE,gBAAgB;;;;CAKhB,SAAS,OAAO;;;;CAKhB;;;;CAKA;AACD;AAED,iBAAiB,wBAAwB,mBAAmB,OAAO,QAAQ;CACzE,gBAAgB;;;;CAKhB;;;;CAKA;;;;CAKA;AACD;;;;AAKD,iBAAiB,2BACf,4BACA,KACE,MAAM,uBAAuB,sBAC3B,SACA,SAIA,cAIA,aAEN;CACE,gBAAgB;AACjB;AAED,iBAAiB,4BACf,4BACA,KACE,MAAM,oBAAoB,mBAIxB,cAIA,aAEN;CACE,gBAAgB;AACjB;;;;AAKD,iBAAiB,8BACf,4BACA,KACE,MAAM,oBAAoB,mBAIxB,QAIA,QACA,QAEN;CACE,gBAAgB;AACjB;;;;AAKD,iBAAiB,uBAAuB,WAAW,mBAAmB,GAAG;CACvE,gBAAgB;;;;CAKhB,SAAS,OAAO;AACjB;;;;AAKD,iBAAiB,OAAO,GAAG;CACzB;CACA,OAAO;AACR;;;;AAKD,iBAAiB,oBAAoB,UAAU,8BACrC,mBAAmB,UAAU,IACvC;CACE,gBAAgB;AACjB;;;;AAKD,iBAAiB,iBAAiB,WAAW,mBAAmB,GAAG;CACjE,gBAAgB;;;;CAKhB,iBAAiBC,OAAO,mBAAmB,OAAO,MAAM;AACzD;AAED,iBAAiB,mBAAmB,GAAG;CACrC,gBAAgB;;;;;;;;;;;;;;CAehB,YAAYC,QAAQ;AACrB;AAED,YAAY,SAAS,UAAU,mCACvB,iBAAiB;;;;AAKzB,YAAY,iBAAiB,UAAU,6BACrC,oBAAoB,GAAG;;;;AAKzB,YAAY;CACV,UAAU,4BAA4B;CACtC,gBAAgB,iBAAiB,WAAW,iBAAiB;IAC3D,iBAAiB,GAAG,GAAG;;;;AAK3B,YAAY,iBACR,oBACA,aACA,gBACA,iBACA,kBACA,eACA,cACA,eACA;;;;AAKJ,YAAY,8BAA8B,UAAU,kBAAkB,UACpE,cAAc,eACZ,UAAU,WAAW,aACrB,UAAU,mBAAmB,eAAe,gBAC5C,UAAU,YAAY,kBAAkB,aACxC,UAAU,WAAW,eAAe,cACpC,UAAU,aAAa,cAAc,oBACrC,UACE,WACA,YACA,SACA,UACA,UACA,SACA,YAAY","names":["error: ValidationError","value: V","date: Date","props: BaseFormFieldProps<V>","value?: V"],"sources":["../../../src/action-form/FormFieldApi.ts"],"version":3,"file":"FormFieldApi.d.ts"}
@@ -0,0 +1,4 @@
1
+ import React from "react";
2
+ export declare function LoadingCell({ width }: {
3
+ width: number
4
+ }): React.ReactElement;
@@ -0,0 +1 @@
1
+ {"mappings":"AAiBA,OAAO,WAAW,OAAQ;AAI1B,OAAO,iBAAS,YAAY,EAAE,OAA0B,EAAjB;CAAE;AAAe,IAAG,MAAM","names":[],"sources":["../../../src/object-table/LoadingCell.tsx"],"version":3,"file":"LoadingCell.d.ts"}
@@ -0,0 +1,11 @@
1
+ import type { HeaderGroup, RowData } from "@tanstack/react-table";
2
+ import React from "react";
3
+ interface LoadingRowProps<TData extends RowData> {
4
+ headers: HeaderGroup<TData>["headers"];
5
+ columnCount: number;
6
+ translateY: number;
7
+ rowHeight?: number;
8
+ columnWidth?: number;
9
+ }
10
+ export declare function LoadingRow<TData extends RowData>({ headers, columnCount, translateY, rowHeight, columnWidth }: LoadingRowProps<TData>): React.ReactElement;
11
+ export {};
@@ -0,0 +1 @@
1
+ {"mappings":"AAgBA,cAAc,aAAa,eAAe,uBAAwB;AAClE,OAAO,WAAW,OAAQ;UAIhB,gBAAgB,cAAc,SAAS;CAC/C,SAAS,YAAY,OAAO;CAC5B;CACA;CACA;CACA;AACD;AAED,OAAO,iBAAS,WAAW,cAAc,SAAS,EAChD,SACA,aACA,YACA,WACA,aACuB,EAAtB,gBAAgB,SAAS,MAAM","names":[],"sources":["../../../src/object-table/LoadingRow.tsx"],"version":3,"file":"LoadingRow.d.ts"}
@@ -0,0 +1,11 @@
1
+ import type { HeaderGroup, RowData, Table } from "@tanstack/react-table";
2
+ import React from "react";
3
+ interface LoadingStateTableProps<TData extends RowData> {
4
+ table: Table<TData>;
5
+ tableContainerRef: React.RefObject<HTMLDivElement>;
6
+ headerGroups: Array<HeaderGroup<TData>>;
7
+ rowHeight?: number;
8
+ columnWidth?: number;
9
+ }
10
+ export declare function LoadingStateTable<TData extends RowData>({ table, tableContainerRef, headerGroups, rowHeight, columnWidth }: LoadingStateTableProps<TData>): React.ReactElement;
11
+ export {};
@@ -0,0 +1 @@
1
+ {"mappings":"AAgBA,cAAc,aAAa,SAAS,aAAa,uBAAwB;AAEzE,OAAO,WAA4C,OAAQ;UAOjD,uBAAuB,cAAc,SAAS;CACtD,OAAO,MAAM;CACb,mBAAmB,MAAM,UAAU;CACnC,cAAc,MAAM,YAAY;CAChC;CACA;AACD;AAID,OAAO,iBAAS,kBAAkB,cAAc,SAAS,EACvD,OACA,mBACA,cACA,WACA,aAC8B,EAA7B,uBAAuB,SAAS,MAAM","names":[],"sources":["../../../src/object-table/LoadingStateTable.tsx"],"version":3,"file":"LoadingStateTable.d.ts"}
@@ -0,0 +1,6 @@
1
+ import React from "react";
2
+ interface NonIdealStateProps {
3
+ message: string;
4
+ }
5
+ export declare function NonIdealState({ message }: NonIdealStateProps): React.ReactElement;
6
+ export {};
@@ -0,0 +1 @@
1
+ {"mappings":"AAgBA,OAAO,WAAW,OAAQ;UAGhB,mBAAmB;CAC3B;AACD;AAED,OAAO,iBAAS,cACd,EAAE,SAA6B,EAAlB,qBACZ,MAAM","names":[],"sources":["../../../src/object-table/NonIdealState.tsx"],"version":3,"file":"NonIdealState.d.ts"}
@@ -1,4 +1,4 @@
1
- import type { ObjectTypeDefinition, QueryDefinition, SimplePropertyDef } from "@osdk/api";
1
+ import type { ObjectOrInterfaceDefinition, QueryDefinition, SimplePropertyDef } from "@osdk/api";
2
2
  import React from "react";
3
3
  import type { ObjectTableProps } from "./ObjectTableApi.js";
4
4
  /**
@@ -6,11 +6,11 @@ import type { ObjectTableProps } from "./ObjectTableApi.js";
6
6
  *
7
7
  * @example
8
8
  * ```tsx
9
- * <ObjectTable objectSet={myObjectSet} objectType={MyObjectType} />
9
+ * <ObjectTable objectType={MyObjectType} />
10
10
  * ```
11
11
  */
12
12
  export declare function ObjectTable<
13
- Q extends ObjectTypeDefinition,
13
+ Q extends ObjectOrInterfaceDefinition,
14
14
  RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,
15
15
  FunctionColumns extends Record<string, QueryDefinition<{}>> = Record<string, never>
16
- >({ objectSet, objectType, columnDefinitions, filter, orderBy, defaultOrderBy, onOrderByChanged, onColumnsPinnedChanged, onRowSelection, renderCellContextMenu, selectionMode, selectedRows,...props }: ObjectTableProps<Q, RDPs, FunctionColumns>): React.ReactElement;
16
+ >({ objectType, columnDefinitions, filter, orderBy, defaultOrderBy, onOrderByChanged, onColumnsPinnedChanged, onRowSelection, renderCellContextMenu, selectionMode, selectedRows,...props }: ObjectTableProps<Q, RDPs, FunctionColumns>): React.ReactElement;
@@ -1 +1 @@
1
- {"mappings":"AAgBA,cACE,sBAGA,iBACA,yBACK,WAAY;AAGnB,OAAO,WAA+C,OAAQ;AAQ9D,cAAc,wBAAwB,qBAAsB;;;;;;;;;AAa5D,OAAO,iBAAS;CACd,UAAU;CACV,aAAa,eAAe,qBAAqB;CAIjD,wBAAwB,eAAe,gBAAgB,CAAE,MAAK;EAI9D,EACA,WACA,YACA,mBACA,QACA,SACA,gBACA,kBACA,wBACA,gBACA,uBACA,eACA,aACA,GAAG,OACwC,EAA1C,iBAAiB,GAAG,MAAM,mBAAmB,MAAM","names":[],"sources":["../../../src/object-table/ObjectTable.tsx"],"version":3,"file":"ObjectTable.d.ts"}
1
+ {"mappings":"AAgBA,cACE,6BAGA,iBACA,yBACK,WAAY;AAGnB,OAAO,WAA+C,OAAQ;AAQ9D,cAAc,wBAAwB,qBAAsB;;;;;;;;;AAa5D,OAAO,iBAAS;CACd,UAAU;CACV,aAAa,eAAe,qBAAqB;CAIjD,wBAAwB,eAAe,gBAAgB,CAAE,MAAK;EAI9D,EACA,YACA,mBACA,QACA,SACA,gBACA,kBACA,wBACA,gBACA,uBACA,eACA,aACA,GAAG,OACwC,EAA1C,iBAAiB,GAAG,MAAM,mBAAmB,MAAM","names":[],"sources":["../../../src/object-table/ObjectTable.tsx"],"version":3,"file":"ObjectTable.d.ts"}
@@ -1,7 +1,7 @@
1
- import type { DerivedProperty, ObjectSet, ObjectTypeDefinition, Osdk, PrimaryKeyType, PropertyKeys, QueryDefinition, SimplePropertyDef, WhereClause } from "@osdk/api";
1
+ import type { DerivedProperty, ObjectOrInterfaceDefinition, Osdk, PrimaryKeyType, PropertyKeys, QueryDefinition, SimplePropertyDef, WhereClause } from "@osdk/api";
2
2
  import type * as React from "react";
3
3
  export type ColumnDefinition<
4
- Q extends ObjectTypeDefinition,
4
+ Q extends ObjectOrInterfaceDefinition,
5
5
  RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,
6
6
  FunctionColumns extends Record<string, QueryDefinition<{}>> = Record<string, never>
7
7
  > = {
@@ -24,7 +24,7 @@ export type ColumnDefinition<
24
24
  renderHeader?: () => React.ReactNode
25
25
  };
26
26
  export type ColumnDefinitionLocator<
27
- Q extends ObjectTypeDefinition,
27
+ Q extends ObjectOrInterfaceDefinition,
28
28
  RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,
29
29
  FunctionColumns extends Record<string, QueryDefinition<{}>> = Record<string, never>
30
30
  > = {
@@ -39,14 +39,10 @@ export type ColumnDefinitionLocator<
39
39
  creator: DerivedProperty.Creator<Q, RDPs[keyof RDPs]>
40
40
  };
41
41
  export interface ObjectTableProps<
42
- Q extends ObjectTypeDefinition,
42
+ Q extends ObjectOrInterfaceDefinition,
43
43
  RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,
44
44
  FunctionColumns extends Record<string, QueryDefinition<{}>> = Record<string, never>
45
45
  > {
46
- /**
47
- * The set of objects to show in the table
48
- */
49
- objectSet: ObjectSet<Q>;
50
46
  /**
51
47
  * The object type of the object
52
48
  */
@@ -1 +1 @@
1
- {"mappings":"AAgBA,cACE,iBACA,WACA,sBACA,MACA,gBACA,cACA,iBACA,mBACA,mBACK,WAAY;AACnB,iBAAiB,WAAW,OAAQ;AAEpC,YAAY;CACV,UAAU;CACV,aAAa,eAAe,qBAAqB;CAIjD,wBAAwB,eAAe,gBAAgB,CAAE,MAAK;IAI5D;CACF,SAAS,wBAAwB,GAAG,MAAM;;;;CAK1C;;;;CAKA,SAAS,SAAS,UAAU;CAC5B;CACA;CACA;CACA;CACA;CACA;CACA,cACEA,QAAQ,KAAK,SAAS,GAAG,sBAAsB,aAAa,IAAI,OAChEC,SAAS,wBAAwB,GAAG,MAAM,qBACvC,MAAM;CACX,qBAAqB,MAAM;AAC5B;AAED,YAAY;CACV,UAAU;CACV,aAAa,eAAe,qBAAqB;CAIjD,wBAAwB,eAAe,gBAAgB,CAAE,MAAK;IAK5D;CACA,MAAM;CACN,IAAI,aAAa;AAClB,IACC;CACA,MAAM;CACN,UAAU;AACX,IACC;CACA,MAAM;CACN,UAAU;CACV,SAAS,gBAAgB,QAAQ,GAAG,WAAW;AAChD;AAEH,iBAAiB;CACf,UAAU;CACV,aAAa,eAAe,qBAAqB;CAIjD,wBAAwB,eAAe,gBAAgB,CAAE,MAAK;EAI9D;;;;CAIA,WAAW,UAAU;;;;CAKrB,YAAY;;;;;;CAOZ,oBAAoB,MAAM,iBAAiB,GAAG,MAAM;;;;;;CAOpD;;;;;CAMA,SAAS,YAAY,GAAG;;;;;;;CAQxB,mBAAmBC,UAAU,YAAY,GAAG;;;;;;CAO5C;;;;;;CAOA,iBAAiB,MAAM;EACrB,UAAU,aAAa;EACvB,WAAW,QAAQ;CACpB;;;;;;CAOD,UAAU,MAAM;EACd,UAAU,aAAa;EACvB,WAAW,QAAQ;CACpB;;;;;;;CAQD,oBACEC,YAAY,MAAM;EAChB,UAAU,aAAa;EACvB,WAAW,QAAQ;CACpB;;;;;;;;CAUH,6BACEC,WAAW,MAAM;EACf,UAAU,aAAa,WAAW,aAAa;EAC/C;CACD;;;;;;;;CAUH,0BACEC,WAAW,MAAM;EACf,UAAU,aAAa,WAAW,aAAa;EAC/C,QAAQ,SAAS,UAAU;CAC5B;;;;;;;CASH,kBACEC,UAAU,aAAa,WAAW,aAAa,iBAC/CC;;;;;;CAQF,cACEP,QAAQ,KAAK,SAAS,GAAG,sBAAsB,aAAa,IAAI;;;;;;;;;CAWlE,gBAAgB,WAAW,aAAa;;;;;CAMxC,eAAe,eAAe;;;;;;;CAS9B,kBAAkBQ,gBAAgB,eAAe;;;;CAKjD,yBACEC,KAAK,KAAK,SAAS,GAAG,sBAAsB,aAAa,IAAI,OAC7DC,uBACG,MAAM;;;;;;CAOX;CAEA;AACD","names":["object: Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>","locator: ColumnDefinitionLocator<Q, RDPs, FunctionColumns>","newWhere: WhereClause<Q, RDPs>","newOrderBy: Array<{\n property: PropertyKeys<Q>;\n direction: \"asc\" | \"desc\";\n }>","newStates: Array<{\n columnId: PropertyKeys<Q> | keyof RDPs | keyof FunctionColumns;\n isVisible: boolean;\n }>","newStates: Array<{\n columnId: PropertyKeys<Q> | keyof RDPs | keyof FunctionColumns;\n pinned: \"left\" | \"right\" | \"none\";\n }>","columnId: PropertyKeys<Q> | keyof RDPs | keyof FunctionColumns","newWidth: number","selectedRowIds: PrimaryKeyType<Q>[]","row: Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>","cellValue: unknown"],"sources":["../../../src/object-table/ObjectTableApi.ts"],"version":3,"file":"ObjectTableApi.d.ts"}
1
+ {"mappings":"AAgBA,cACE,iBACA,6BACA,MACA,gBACA,cACA,iBACA,mBACA,mBACK,WAAY;AACnB,iBAAiB,WAAW,OAAQ;AAEpC,YAAY;CACV,UAAU;CACV,aAAa,eAAe,qBAAqB;CACjD,wBAAwB,eAAe,gBAAgB,CAAE,MAAK;IAI5D;CACF,SAAS,wBAAwB,GAAG,MAAM;;;;CAK1C;;;;CAKA,SAAS,SAAS,UAAU;CAC5B;CACA;CACA;CACA;CACA;CACA;CACA,cACEA,QAAQ,KAAK,SAAS,GAAG,sBAAsB,aAAa,IAAI,OAChEC,SAAS,wBAAwB,GAAG,MAAM,qBACvC,MAAM;CACX,qBAAqB,MAAM;AAC5B;AAED,YAAY;CACV,UAAU;CACV,aAAa,eAAe,qBAAqB;CACjD,wBAAwB,eAAe,gBAAgB,CAAE,MAAK;IAK5D;CACA,MAAM;CACN,IAAI,aAAa;AAClB,IACC;CACA,MAAM;CACN,UAAU;AACX,IACC;CACA,MAAM;CACN,UAAU;CACV,SAAS,gBAAgB,QAAQ,GAAG,WAAW;AAChD;AAEH,iBAAiB;CACf,UAAU;CACV,aAAa,eAAe,qBAAqB;CACjD,wBAAwB,eAAe,gBAAgB,CAAE,MAAK;EAI9D;;;;CAIA,YAAY;;;;;;CAOZ,oBAAoB,MAAM,iBAAiB,GAAG,MAAM;;;;;;CAOpD;;;;;CAMA,SAAS,YAAY,GAAG;;;;;;;CAQxB,mBAAmBC,UAAU,YAAY,GAAG;;;;;;CAO5C;;;;;;CAOA,iBAAiB,MAAM;EACrB,UAAU,aAAa;EACvB,WAAW,QAAQ;CACpB;;;;;;CAOD,UAAU,MAAM;EACd,UAAU,aAAa;EACvB,WAAW,QAAQ;CACpB;;;;;;;CAQD,oBACEC,YAAY,MAAM;EAChB,UAAU,aAAa;EACvB,WAAW,QAAQ;CACpB;;;;;;;;CAUH,6BACEC,WAAW,MAAM;EACf,UAAU,aAAa,WAAW,aAAa;EAC/C;CACD;;;;;;;;CAUH,0BACEC,WAAW,MAAM;EACf,UAAU,aAAa,WAAW,aAAa;EAC/C,QAAQ,SAAS,UAAU;CAC5B;;;;;;;CASH,kBACEC,UAAU,aAAa,WAAW,aAAa,iBAC/CC;;;;;;CAQF,cACEP,QAAQ,KAAK,SAAS,GAAG,sBAAsB,aAAa,IAAI;;;;;;;;;CAWlE,gBAAgB,WAAW,aAAa;;;;;CAMxC,eAAe,eAAe;;;;;;;CAS9B,kBAAkBQ,gBAAgB,eAAe;;;;CAKjD,yBACEC,KAAK,KAAK,SAAS,GAAG,sBAAsB,aAAa,IAAI,OAC7DC,uBACG,MAAM;;;;;;CAOX;CAEA;AACD","names":["object: Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>","locator: ColumnDefinitionLocator<Q, RDPs, FunctionColumns>","newWhere: WhereClause<Q, RDPs>","newOrderBy: Array<{\n property: PropertyKeys<Q>;\n direction: \"asc\" | \"desc\";\n }>","newStates: Array<{\n columnId: PropertyKeys<Q> | keyof RDPs | keyof FunctionColumns;\n isVisible: boolean;\n }>","newStates: Array<{\n columnId: PropertyKeys<Q> | keyof RDPs | keyof FunctionColumns;\n pinned: \"left\" | \"right\" | \"none\";\n }>","columnId: PropertyKeys<Q> | keyof RDPs | keyof FunctionColumns","newWidth: number","selectedRowIds: PrimaryKeyType<Q>[]","row: Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>","cellValue: unknown"],"sources":["../../../src/object-table/ObjectTableApi.ts"],"version":3,"file":"ObjectTableApi.d.ts"}
@@ -8,5 +8,6 @@ export interface BaseTableProps<TData extends RowData> {
8
8
  rowHeight?: number;
9
9
  renderCellContextMenu?: (row: TData, cell: Cell<TData, unknown>) => React.ReactNode;
10
10
  className?: string;
11
+ error?: Error;
11
12
  }
12
- export declare function BaseTable<TData extends RowData>({ table, isLoading, fetchNextPage, onRowClick, rowHeight, renderCellContextMenu, className }: BaseTableProps<TData>): ReactElement;
13
+ export declare function BaseTable<TData extends RowData>({ table, isLoading, fetchNextPage, onRowClick, rowHeight, renderCellContextMenu, className, error }: BaseTableProps<TData>): ReactElement;
@@ -1 +1 @@
1
- {"mappings":"AAgBA,cAAc,MAAM,SAAS,aAAa,uBAAwB;AAElE,OAAO,cAAc,oBAAyC,OAAQ;AAKtE,iBAAiB,eAAe,cAAc,SAAS;CACrD,OAAO,MAAM;CACb;CACA,sBAAsB;CACtB,cAAcA,KAAK;CACnB;CACA,yBACEA,KAAK,OACLC,MAAM,KAAK,oBACR,MAAM;CACX;AACD;AAED,OAAO,iBAAS,UAAU,cAAc,SACtC,EACE,OACA,WACA,eACA,YACA,WACA,uBACA,WACsB,EAArB,eAAe,SACjB","names":["row: TData","cell: Cell<TData, unknown>"],"sources":["../../../src/object-table/Table.tsx"],"version":3,"file":"Table.d.ts"}
1
+ {"mappings":"AAgBA,cAAc,MAAM,SAAS,aAAa,uBAAwB;AAElE,OAAO,cACA,oBAKA,OAAQ;AAOf,iBAAiB,eAAe,cAAc,SAAS;CACrD,OAAO,MAAM;CACb;CACA,sBAAsB;CACtB,cAAcA,KAAK;CACnB;CACA,yBACEA,KAAK,OACLC,MAAM,KAAK,oBACR,MAAM;CACX;CACA,QAAQ;AACT;AAED,OAAO,iBAAS,UAAU,cAAc,SACtC,EACE,OACA,WACA,eACA,YACA,WACA,uBACA,WACA,OACsB,EAArB,eAAe,SACjB","names":["row: TData","cell: Cell<TData, unknown>"],"sources":["../../../src/object-table/Table.tsx"],"version":3,"file":"Table.d.ts"}
@@ -1,4 +1,4 @@
1
- import type { Cell, Row, RowData } from "@tanstack/react-table";
1
+ import type { Cell, HeaderGroup, Row, RowData } from "@tanstack/react-table";
2
2
  import React from "react";
3
3
  interface TableBodyProps<TData extends RowData> {
4
4
  rows: Array<Row<TData>>;
@@ -6,6 +6,8 @@ interface TableBodyProps<TData extends RowData> {
6
6
  onRowClick?: (row: TData) => void;
7
7
  rowHeight?: number;
8
8
  renderCellContextMenu?: (row: TData, cell: Cell<TData, unknown>) => React.ReactNode;
9
+ isLoadingMore?: boolean;
10
+ headerGroups?: Array<HeaderGroup<TData>>;
9
11
  }
10
- export declare function TableBody<TData extends RowData>({ rows, tableContainerRef, onRowClick, renderCellContextMenu, rowHeight }: TableBodyProps<TData>): React.ReactElement;
12
+ export declare function TableBody<TData extends RowData>({ rows, tableContainerRef, onRowClick, renderCellContextMenu, rowHeight, isLoadingMore, headerGroups }: TableBodyProps<TData>): React.ReactElement;
11
13
  export {};