@osdk/react-components 0.39.0 → 0.40.0-main-a2b6fc49d4e2239fddc00a2d4ed0782fd1f96fd0

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 (77) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/build/browser/object-table/ObjectTable.js +0 -3
  3. package/build/browser/object-table/ObjectTable.js.map +1 -1
  4. package/build/browser/object-table/ObjectTableApi.js.map +1 -1
  5. package/build/browser/object-table/hooks/useColumnDefs.js +0 -2
  6. package/build/browser/object-table/hooks/useColumnDefs.js.map +1 -1
  7. package/build/browser/object-table/hooks/useRowSelection.js +0 -3
  8. package/build/browser/object-table/hooks/useRowSelection.js.map +1 -1
  9. package/build/browser/util/UserAgent.js +1 -1
  10. package/build/browser/util/UserAgent.js.map +1 -1
  11. package/build/cjs/chunk-2NG63762.cjs +11 -0
  12. package/build/cjs/{chunk-ZHBPBYCD.cjs.map → chunk-2NG63762.cjs.map} +1 -1
  13. package/build/cjs/{chunk-E5UOPUAL.cjs → chunk-5PZHBX7V.cjs} +4 -4
  14. package/build/cjs/{chunk-E5UOPUAL.cjs.map → chunk-5PZHBX7V.cjs.map} +1 -1
  15. package/build/cjs/{chunk-WFSXNLPN.cjs → chunk-5XZG6BTX.cjs} +4 -4
  16. package/build/cjs/{chunk-WFSXNLPN.cjs.map → chunk-5XZG6BTX.cjs.map} +1 -1
  17. package/build/cjs/{chunk-AYHARI77.cjs → chunk-FNOJVZSD.cjs} +4 -4
  18. package/build/cjs/{chunk-AYHARI77.cjs.map → chunk-FNOJVZSD.cjs.map} +1 -1
  19. package/build/cjs/{chunk-VPD5ZNXM.cjs → chunk-IWZT7CPM.cjs} +3 -3
  20. package/build/cjs/chunk-IWZT7CPM.cjs.map +1 -0
  21. package/build/cjs/chunk-KG2TGIJC.cjs +11 -0
  22. package/build/cjs/{chunk-JVER3ZOK.cjs.map → chunk-KG2TGIJC.cjs.map} +1 -1
  23. package/build/cjs/{chunk-QYY4YHS5.cjs → chunk-MH3QGGPZ.cjs} +4 -4
  24. package/build/cjs/{chunk-QYY4YHS5.cjs.map → chunk-MH3QGGPZ.cjs.map} +1 -1
  25. package/build/cjs/chunk-OVSNQE7J.cjs +11 -0
  26. package/build/cjs/{chunk-ZISGRA73.cjs.map → chunk-OVSNQE7J.cjs.map} +1 -1
  27. package/build/cjs/chunk-TE2RAPFZ.cjs +11 -0
  28. package/build/cjs/{chunk-2FZYBU6I.cjs.map → chunk-TE2RAPFZ.cjs.map} +1 -1
  29. package/build/cjs/{chunk-RO3PPGFU.cjs → chunk-TPO6JWZY.cjs} +4 -4
  30. package/build/cjs/{chunk-RO3PPGFU.cjs.map → chunk-TPO6JWZY.cjs.map} +1 -1
  31. package/build/cjs/{chunk-MO4KAKAY.cjs → chunk-W252RLXO.cjs} +4 -12
  32. package/build/cjs/chunk-W252RLXO.cjs.map +1 -0
  33. package/build/cjs/chunk-XRRPXIG7.cjs +11 -0
  34. package/build/cjs/{chunk-7TXID3FA.cjs.map → chunk-XRRPXIG7.cjs.map} +1 -1
  35. package/build/cjs/{chunk-Z5OGPHAS.cjs → chunk-XS663NKN.cjs} +4 -4
  36. package/build/cjs/{chunk-Z5OGPHAS.cjs.map → chunk-XS663NKN.cjs.map} +1 -1
  37. package/build/cjs/{chunk-IDNB6BWX.cjs → chunk-XZCS5XKY.cjs} +4 -4
  38. package/build/cjs/{chunk-IDNB6BWX.cjs.map → chunk-XZCS5XKY.cjs.map} +1 -1
  39. package/build/cjs/public/experimental/action-form.cjs +4 -4
  40. package/build/cjs/public/experimental/cbac-picker.cjs +11 -11
  41. package/build/cjs/public/experimental/document-viewer.cjs +4 -4
  42. package/build/cjs/public/experimental/email-viewer.cjs +3 -3
  43. package/build/cjs/public/experimental/excel-viewer.cjs +3 -3
  44. package/build/cjs/public/experimental/filter-list.cjs +15 -15
  45. package/build/cjs/public/experimental/image-viewer.cjs +3 -3
  46. package/build/cjs/public/experimental/markdown-renderer.cjs +3 -3
  47. package/build/cjs/public/experimental/object-table.cjs +21 -21
  48. package/build/cjs/public/experimental/object-table.d.cts +2 -32
  49. package/build/cjs/public/experimental/pdf-viewer.cjs +7 -7
  50. package/build/cjs/public/experimental/tiff-renderer.cjs +3 -3
  51. package/build/cjs/public/experimental/video-viewer.cjs +3 -3
  52. package/build/cjs/public/experimental/xml-viewer.cjs +3 -3
  53. package/build/cjs/public/experimental.cjs +71 -71
  54. package/build/esm/object-table/ObjectTable.js +0 -3
  55. package/build/esm/object-table/ObjectTable.js.map +1 -1
  56. package/build/esm/object-table/ObjectTableApi.js.map +1 -1
  57. package/build/esm/object-table/hooks/useColumnDefs.js +0 -2
  58. package/build/esm/object-table/hooks/useColumnDefs.js.map +1 -1
  59. package/build/esm/object-table/hooks/useRowSelection.js +0 -3
  60. package/build/esm/object-table/hooks/useRowSelection.js.map +1 -1
  61. package/build/esm/util/UserAgent.js +1 -1
  62. package/build/esm/util/UserAgent.js.map +1 -1
  63. package/build/types/object-table/ObjectTable.d.ts +1 -1
  64. package/build/types/object-table/ObjectTable.d.ts.map +1 -1
  65. package/build/types/object-table/ObjectTableApi.d.ts +0 -26
  66. package/build/types/object-table/ObjectTableApi.d.ts.map +1 -1
  67. package/build/types/object-table/hooks/useRowSelection.d.ts +1 -5
  68. package/build/types/object-table/hooks/useRowSelection.d.ts.map +1 -1
  69. package/docs/ObjectTable.md +9 -36
  70. package/package.json +5 -5
  71. package/build/cjs/chunk-2FZYBU6I.cjs +0 -11
  72. package/build/cjs/chunk-7TXID3FA.cjs +0 -11
  73. package/build/cjs/chunk-JVER3ZOK.cjs +0 -11
  74. package/build/cjs/chunk-MO4KAKAY.cjs.map +0 -1
  75. package/build/cjs/chunk-VPD5ZNXM.cjs.map +0 -1
  76. package/build/cjs/chunk-ZHBPBYCD.cjs +0 -11
  77. package/build/cjs/chunk-ZISGRA73.cjs +0 -11
@@ -1 +1 @@
1
- {"version":3,"file":"useColumnDefs.js","names":["useOsdkMetadata","useMemo","renderDefaultCell","shouldShowEditableCell","useColumnDefs","objectType","columnDefinitions","metadata","loading","error","columns","objectProperties","properties","getColumnsFromColumnDefinitions","getDefaultColumns","map","col","locator","width","minWidth","maxWidth","resizable","orderable","filterable","editable","renderCell","renderHeader","columnName","editFieldConfig","undefined","validateEdit","propertyMetadata","type","id","colKey","dataType","markingType","typeMetadata","colDef","accessorKey","header","displayName","meta","isAsyncColumn","isVisible","size","minSize","maxSize","enableResizing","enableSorting","enableColumnFilter","cell","cellContext","object","row","original","table","options","isEditable","onCellEdit","isInEditMode","Object","entries","key","property"],"sources":["useColumnDefs.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 ObjectMetadata,\n ObjectOrInterfaceDefinition,\n Osdk,\n PropertyKeys,\n QueryDefinition,\n SimplePropertyDef,\n} from \"@osdk/api\";\nimport { useOsdkMetadata } from \"@osdk/react\";\nimport type { AccessorColumnDef } from \"@tanstack/react-table\";\nimport { useMemo } from \"react\";\n\nimport { renderDefaultCell } from \"../DefaultCellRenderer.js\";\nimport type { ColumnDefinition } from \"../ObjectTableApi.js\";\nimport { shouldShowEditableCell } from \"../utils/shouldShowEditableCell.js\";\n\nexport interface UseColumnDefsResult<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n> {\n columns: AccessorColumnDef<\n Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>\n >[];\n\n loading: boolean;\n\n error: string | undefined;\n}\n\n/**\n * Hook which builds column definitions for tanstack-table given the objectSet\n */\nexport function useColumnDefs<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n FunctionColumns extends Record<string, QueryDefinition<{}>> = Record<\n string,\n never\n >,\n>(\n objectType: Q,\n columnDefinitions?: Array<ColumnDefinition<Q, RDPs, FunctionColumns>>\n): UseColumnDefsResult<Q, RDPs> {\n const { metadata, loading, error } = useOsdkMetadata(objectType);\n\n const columns: AccessorColumnDef<\n Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>\n >[] = useMemo(() => {\n const objectProperties = metadata?.properties;\n // If columnDefinitions is provided, construct colDefs with it\n if (columnDefinitions) {\n return getColumnsFromColumnDefinitions<Q, RDPs, FunctionColumns>(\n columnDefinitions,\n objectProperties\n );\n }\n\n // If not, return the default columns from the object properties\n return getDefaultColumns<Q, RDPs>(objectProperties);\n }, [columnDefinitions, metadata?.properties]);\n\n return { columns, loading, error };\n}\n\nfunction getColumnsFromColumnDefinitions<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n FunctionColumns extends Record<string, QueryDefinition<{}>> = Record<\n string,\n never\n >,\n>(\n columnDefinitions: Array<ColumnDefinition<Q, RDPs, FunctionColumns>>,\n objectProperties?: Record<any, ObjectMetadata.Property>\n): Array<\n AccessorColumnDef<\n Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>\n >\n> {\n return columnDefinitions.map((col) => {\n const {\n locator,\n width,\n minWidth,\n maxWidth,\n resizable,\n orderable,\n filterable,\n editable,\n renderCell,\n renderHeader,\n columnName,\n } = col;\n\n const editFieldConfig = col.editable ? col.editFieldConfig : undefined;\n const validateEdit = col.editable ? col.validateEdit : undefined;\n\n const propertyMetadata =\n locator.type === \"property\" ? objectProperties?.[locator.id] : undefined;\n\n const colKey = locator.id as string;\n\n const dataType =\n propertyMetadata?.type && typeof propertyMetadata.type === \"string\"\n ? propertyMetadata.type\n : undefined;\n\n const markingType =\n propertyMetadata?.typeMetadata?.type === \"marking\"\n ? propertyMetadata.typeMetadata.markingType\n : undefined;\n\n const colDef: AccessorColumnDef<\n Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>\n > = {\n id: colKey,\n accessorKey: colKey,\n header: renderHeader ?? (columnName || propertyMetadata?.displayName),\n meta: {\n columnName: columnName || propertyMetadata?.displayName,\n isAsyncColumn: locator.type === \"function\",\n isVisible: col.isVisible !== false,\n editable,\n editFieldConfig,\n dataType,\n markingType,\n validateEdit,\n },\n size: width,\n ...(minWidth ? { minSize: minWidth } : {}),\n ...(maxWidth ? { maxSize: maxWidth } : {}),\n enableResizing: resizable,\n // Function-backed columns must be sorted on the frontend, so disable sorting for now\n enableSorting: locator.type === \"function\" ? false : orderable,\n enableColumnFilter: filterable,\n cell: (cellContext) => {\n const object: Osdk.Instance<\n Q,\n \"$allBaseProperties\",\n PropertyKeys<Q>,\n RDPs\n > = cellContext.row.original;\n\n const meta = cellContext.table.options.meta;\n const isEditable = shouldShowEditableCell<\n Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>\n >(editable, meta?.onCellEdit, meta?.isInEditMode);\n\n if (renderCell && !isEditable) {\n return renderCell(object, locator);\n }\n\n return renderDefaultCell(cellContext);\n },\n };\n\n return colDef;\n });\n}\n\nfunction getDefaultColumns<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n>(\n objectProperties?: Record<any, ObjectMetadata.Property>\n): Array<\n AccessorColumnDef<\n Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>\n >\n> {\n if (!objectProperties) return [];\n\n return Object.entries(objectProperties).map(([key, property]) => {\n const colDef: AccessorColumnDef<\n Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>\n > = {\n accessorKey: key,\n header: property.displayName ?? key,\n };\n return colDef;\n });\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"useColumnDefs.js","names":["useOsdkMetadata","useMemo","renderDefaultCell","shouldShowEditableCell","useColumnDefs","objectType","columnDefinitions","metadata","loading","error","columns","objectProperties","properties","getColumnsFromColumnDefinitions","getDefaultColumns","map","col","locator","width","minWidth","maxWidth","resizable","orderable","editable","renderCell","renderHeader","columnName","editFieldConfig","undefined","validateEdit","propertyMetadata","type","id","colKey","dataType","markingType","typeMetadata","colDef","accessorKey","header","displayName","meta","isAsyncColumn","isVisible","size","minSize","maxSize","enableResizing","enableSorting","cell","cellContext","object","row","original","table","options","isEditable","onCellEdit","isInEditMode","Object","entries","key","property"],"sources":["useColumnDefs.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 ObjectMetadata,\n ObjectOrInterfaceDefinition,\n Osdk,\n PropertyKeys,\n QueryDefinition,\n SimplePropertyDef,\n} from \"@osdk/api\";\nimport { useOsdkMetadata } from \"@osdk/react\";\nimport type { AccessorColumnDef } from \"@tanstack/react-table\";\nimport { useMemo } from \"react\";\n\nimport { renderDefaultCell } from \"../DefaultCellRenderer.js\";\nimport type { ColumnDefinition } from \"../ObjectTableApi.js\";\nimport { shouldShowEditableCell } from \"../utils/shouldShowEditableCell.js\";\n\nexport interface UseColumnDefsResult<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n> {\n columns: AccessorColumnDef<\n Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>\n >[];\n\n loading: boolean;\n\n error: string | undefined;\n}\n\n/**\n * Hook which builds column definitions for tanstack-table given the objectSet\n */\nexport function useColumnDefs<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n FunctionColumns extends Record<string, QueryDefinition<{}>> = Record<\n string,\n never\n >,\n>(\n objectType: Q,\n columnDefinitions?: Array<ColumnDefinition<Q, RDPs, FunctionColumns>>\n): UseColumnDefsResult<Q, RDPs> {\n const { metadata, loading, error } = useOsdkMetadata(objectType);\n\n const columns: AccessorColumnDef<\n Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>\n >[] = useMemo(() => {\n const objectProperties = metadata?.properties;\n // If columnDefinitions is provided, construct colDefs with it\n if (columnDefinitions) {\n return getColumnsFromColumnDefinitions<Q, RDPs, FunctionColumns>(\n columnDefinitions,\n objectProperties\n );\n }\n\n // If not, return the default columns from the object properties\n return getDefaultColumns<Q, RDPs>(objectProperties);\n }, [columnDefinitions, metadata?.properties]);\n\n return { columns, loading, error };\n}\n\nfunction getColumnsFromColumnDefinitions<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n FunctionColumns extends Record<string, QueryDefinition<{}>> = Record<\n string,\n never\n >,\n>(\n columnDefinitions: Array<ColumnDefinition<Q, RDPs, FunctionColumns>>,\n objectProperties?: Record<any, ObjectMetadata.Property>\n): Array<\n AccessorColumnDef<\n Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>\n >\n> {\n return columnDefinitions.map((col) => {\n const {\n locator,\n width,\n minWidth,\n maxWidth,\n resizable,\n orderable,\n editable,\n renderCell,\n renderHeader,\n columnName,\n } = col;\n\n const editFieldConfig = col.editable ? col.editFieldConfig : undefined;\n const validateEdit = col.editable ? col.validateEdit : undefined;\n\n const propertyMetadata =\n locator.type === \"property\" ? objectProperties?.[locator.id] : undefined;\n\n const colKey = locator.id as string;\n\n const dataType =\n propertyMetadata?.type && typeof propertyMetadata.type === \"string\"\n ? propertyMetadata.type\n : undefined;\n\n const markingType =\n propertyMetadata?.typeMetadata?.type === \"marking\"\n ? propertyMetadata.typeMetadata.markingType\n : undefined;\n\n const colDef: AccessorColumnDef<\n Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>\n > = {\n id: colKey,\n accessorKey: colKey,\n header: renderHeader ?? (columnName || propertyMetadata?.displayName),\n meta: {\n columnName: columnName || propertyMetadata?.displayName,\n isAsyncColumn: locator.type === \"function\",\n isVisible: col.isVisible !== false,\n editable,\n editFieldConfig,\n dataType,\n markingType,\n validateEdit,\n },\n size: width,\n ...(minWidth ? { minSize: minWidth } : {}),\n ...(maxWidth ? { maxSize: maxWidth } : {}),\n enableResizing: resizable,\n // Function-backed columns must be sorted on the frontend, so disable sorting for now\n enableSorting: locator.type === \"function\" ? false : orderable,\n cell: (cellContext) => {\n const object: Osdk.Instance<\n Q,\n \"$allBaseProperties\",\n PropertyKeys<Q>,\n RDPs\n > = cellContext.row.original;\n\n const meta = cellContext.table.options.meta;\n const isEditable = shouldShowEditableCell<\n Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>\n >(editable, meta?.onCellEdit, meta?.isInEditMode);\n\n if (renderCell && !isEditable) {\n return renderCell(object, locator);\n }\n\n return renderDefaultCell(cellContext);\n },\n };\n\n return colDef;\n });\n}\n\nfunction getDefaultColumns<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n>(\n objectProperties?: Record<any, ObjectMetadata.Property>\n): Array<\n AccessorColumnDef<\n Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>\n >\n> {\n if (!objectProperties) return [];\n\n return Object.entries(objectProperties).map(([key, property]) => {\n const colDef: AccessorColumnDef<\n Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>\n > = {\n accessorKey: key,\n header: property.displayName ?? key,\n };\n return colDef;\n });\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAUA,SAASA,eAAe,QAAQ,aAAa;AAE7C,SAASC,OAAO,QAAQ,OAAO;AAE/B,SAASC,iBAAiB,QAAQ,2BAA2B;AAE7D,SAASC,sBAAsB,QAAQ,oCAAoC;AAe3E;AACA;AACA;AACA,OAAO,SAASC,aAAaA,CAQ3BC,UAAa,EACbC,iBAAqE,EACvC;EAC9B,MAAM;IAAEC,QAAQ;IAAEC,OAAO;IAAEC;EAAM,CAAC,GAAGT,eAAe,CAACK,UAAU,CAAC;EAEhE,MAAMK,OAEH,GAAGT,OAAO,CAAC,MAAM;IAClB,MAAMU,gBAAgB,GAAGJ,QAAQ,EAAEK,UAAU;IAC7C;IACA,IAAIN,iBAAiB,EAAE;MACrB,OAAOO,+BAA+B,CACpCP,iBAAiB,EACjBK,gBACF,CAAC;IACH;;IAEA;IACA,OAAOG,iBAAiB,CAAUH,gBAAgB,CAAC;EACrD,CAAC,EAAE,CAACL,iBAAiB,EAAEC,QAAQ,EAAEK,UAAU,CAAC,CAAC;EAE7C,OAAO;IAAEF,OAAO;IAAEF,OAAO;IAAEC;EAAM,CAAC;AACpC;AAEA,SAASI,+BAA+BA,CAQtCP,iBAAoE,EACpEK,gBAAuD,EAKvD;EACA,OAAOL,iBAAiB,CAACS,GAAG,CAAEC,GAAG,IAAK;IACpC,MAAM;MACJC,OAAO;MACPC,KAAK;MACLC,QAAQ;MACRC,QAAQ;MACRC,SAAS;MACTC,SAAS;MACTC,QAAQ;MACRC,UAAU;MACVC,YAAY;MACZC;IACF,CAAC,GAAGV,GAAG;IAEP,MAAMW,eAAe,GAAGX,GAAG,CAACO,QAAQ,GAAGP,GAAG,CAACW,eAAe,GAAGC,SAAS;IACtE,MAAMC,YAAY,GAAGb,GAAG,CAACO,QAAQ,GAAGP,GAAG,CAACa,YAAY,GAAGD,SAAS;IAEhE,MAAME,gBAAgB,GACpBb,OAAO,CAACc,IAAI,KAAK,UAAU,GAAGpB,gBAAgB,GAAGM,OAAO,CAACe,EAAE,CAAC,GAAGJ,SAAS;IAE1E,MAAMK,MAAM,GAAGhB,OAAO,CAACe,EAAY;IAEnC,MAAME,QAAQ,GACZJ,gBAAgB,EAAEC,IAAI,IAAI,OAAOD,gBAAgB,CAACC,IAAI,KAAK,QAAQ,GAC/DD,gBAAgB,CAACC,IAAI,GACrBH,SAAS;IAEf,MAAMO,WAAW,GACfL,gBAAgB,EAAEM,YAAY,EAAEL,IAAI,KAAK,SAAS,GAC9CD,gBAAgB,CAACM,YAAY,CAACD,WAAW,GACzCP,SAAS;IAEf,MAAMS,MAEL,GAAG;MACFL,EAAE,EAAEC,MAAM;MACVK,WAAW,EAAEL,MAAM;MACnBM,MAAM,EAAEd,YAAY,KAAKC,UAAU,IAAII,gBAAgB,EAAEU,WAAW,CAAC;MACrEC,IAAI,EAAE;QACJf,UAAU,EAAEA,UAAU,IAAII,gBAAgB,EAAEU,WAAW;QACvDE,aAAa,EAAEzB,OAAO,CAACc,IAAI,KAAK,UAAU;QAC1CY,SAAS,EAAE3B,GAAG,CAAC2B,SAAS,KAAK,KAAK;QAClCpB,QAAQ;QACRI,eAAe;QACfO,QAAQ;QACRC,WAAW;QACXN;MACF,CAAC;MACDe,IAAI,EAAE1B,KAAK;MACX,IAAIC,QAAQ,GAAG;QAAE0B,OAAO,EAAE1B;MAAS,CAAC,GAAG,CAAC,CAAC,CAAC;MAC1C,IAAIC,QAAQ,GAAG;QAAE0B,OAAO,EAAE1B;MAAS,CAAC,GAAG,CAAC,CAAC,CAAC;MAC1C2B,cAAc,EAAE1B,SAAS;MACzB;MACA2B,aAAa,EAAE/B,OAAO,CAACc,IAAI,KAAK,UAAU,GAAG,KAAK,GAAGT,SAAS;MAC9D2B,IAAI,EAAGC,WAAW,IAAK;QACrB,MAAMC,MAKL,GAAGD,WAAW,CAACE,GAAG,CAACC,QAAQ;QAE5B,MAAMZ,IAAI,GAAGS,WAAW,CAACI,KAAK,CAACC,OAAO,CAACd,IAAI;QAC3C,MAAMe,UAAU,GAAGrD,sBAAsB,CAEvCoB,QAAQ,EAAEkB,IAAI,EAAEgB,UAAU,EAAEhB,IAAI,EAAEiB,YAAY,CAAC;QAEjD,IAAIlC,UAAU,IAAI,CAACgC,UAAU,EAAE;UAC7B,OAAOhC,UAAU,CAAC2B,MAAM,EAAElC,OAAO,CAAC;QACpC;QAEA,OAAOf,iBAAiB,CAACgD,WAAW,CAAC;MACvC;IACF,CAAC;IAED,OAAOb,MAAM;EACf,CAAC,CAAC;AACJ;AAEA,SAASvB,iBAAiBA,CAIxBH,gBAAuD,EAKvD;EACA,IAAI,CAACA,gBAAgB,EAAE,OAAO,EAAE;EAEhC,OAAOgD,MAAM,CAACC,OAAO,CAACjD,gBAAgB,CAAC,CAACI,GAAG,CAAC,CAAC,CAAC8C,GAAG,EAAEC,QAAQ,CAAC,KAAK;IAC/D,MAAMzB,MAEL,GAAG;MACFC,WAAW,EAAEuB,GAAG;MAChBtB,MAAM,EAAEuB,QAAQ,CAACtB,WAAW,IAAIqB;IAClC,CAAC;IACD,OAAOxB,MAAM;EACf,CAAC,CAAC;AACJ","ignoreList":[]}
@@ -28,8 +28,6 @@ export function useRowSelection({
28
28
  selectionMode = "none",
29
29
  selectedRows,
30
30
  isAllSelected: isAllSelectedProp,
31
- // eslint-disable-next-line @typescript-eslint/no-deprecated -- intentional pass-through to fire alongside onRowSelectionChanged for backwards compatibility
32
- onRowSelection,
33
31
  onRowSelectionChanged,
34
32
  data
35
33
  }) {
@@ -59,7 +57,6 @@ export function useRowSelection({
59
57
  // Dedupes refires when "select all" is active and data grows.
60
58
  const lastFiredAllSelectedIdsRef = useRef(null);
61
59
  const fireSelectionCallbacks = useEventCallback((ids, isSelectAll) => {
62
- onRowSelection?.(ids, isSelectAll);
63
60
  if (onRowSelectionChanged) {
64
61
  const selectedKeySet = new Set(ids.map(id => String(id)));
65
62
  const instances = (data ?? []).filter(item => selectedKeySet.has(String(item.$primaryKey)));
@@ -1 +1 @@
1
- {"version":3,"file":"useRowSelection.js","names":["useCallback","useEffect","useMemo","useRef","useState","useEventCallback","getRowId","getRowIdFromPrimaryKey","useRowSelection","selectionMode","selectedRows","isAllSelected","isAllSelectedProp","onRowSelection","onRowSelectionChanged","data","internalRowSelection","setInternalRowSelection","internalIsAllSelected","setInternalIsAllSelected","lastSelectedRowIndex","setLastSelectedRowIndex","isControlled","undefined","enableRowSelection","rowSelectionState","selectedRowIds","map","item","$primaryKey","getRowSelectionState","selectedCount","Object","values","filter","Boolean","length","totalCount","deriveIsAllSelected","hasSelection","lastFiredAllSelectedIdsRef","fireSelectionCallbacks","ids","isSelectAll","selectedKeySet","Set","id","String","instances","has","onToggleAll","newIsAllSelected","newSelectedRows","current","JSON","stringify","onToggleRow","rowId","rowIndex","isShiftClick","getSingleSelectionRows","getRangeSelectionRows","getMultipleSelectionRows","isCurrentlySelected","serializedIds","rowSelection","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 PropertyKeys,\n SimplePropertyDef,\n} from \"@osdk/api\";\nimport type { RowSelectionState } from \"@tanstack/react-table\";\nimport { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\n\nimport { useEventCallback } from \"../../shared/hooks/useEventCallback.js\";\nimport { getRowId, getRowIdFromPrimaryKey } from \"../utils/getRowId.js\";\n\n/**\n * Payload delivered by {@link UseRowSelectionProps.onRowSelectionChanged}.\n * Mirrors the OSDK-level `RowSelectionChange` but without the `objectSet`\n * field, which requires OSDK context and is composed in `ObjectTable`.\n */\nexport interface UseRowSelectionChange<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n> {\n selectedRows: Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>[];\n isSelectAll: boolean;\n}\n\nexport interface UseRowSelectionProps<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n> {\n selectionMode?: \"single\" | \"multiple\" | \"none\";\n selectedRows?: PrimaryKeyType<Q>[];\n isAllSelected?: boolean;\n /**\n * @deprecated Use {@link onRowSelectionChanged} instead.\n */\n onRowSelection?: (\n selectedRowIds: PrimaryKeyType<Q>[],\n isSelectAll: boolean\n ) => void;\n onRowSelectionChanged?: (change: UseRowSelectionChange<Q, RDPs>) => void;\n data:\n | Array<Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>>\n | undefined;\n}\n\nexport interface UseRowSelectionResult {\n rowSelection: RowSelectionState;\n isAllSelected: boolean;\n hasSelection: boolean;\n enableRowSelection: 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, SimplePropertyDef> = Record<string, never>,\n>({\n selectionMode = \"none\",\n selectedRows,\n isAllSelected: isAllSelectedProp,\n // eslint-disable-next-line @typescript-eslint/no-deprecated -- intentional pass-through to fire alongside onRowSelectionChanged for backwards compatibility\n onRowSelection,\n onRowSelectionChanged,\n data,\n}: UseRowSelectionProps<Q, RDPs>): UseRowSelectionResult {\n const [internalRowSelection, setInternalRowSelection] =\n useState<RowSelectionState>({});\n\n // When true, newly fetched rows are auto-selected (uncontrolled mode only).\n const [internalIsAllSelected, setInternalIsAllSelected] = useState(false);\n\n const [lastSelectedRowIndex, setLastSelectedRowIndex] = useState<\n number | null\n >(null);\n\n const isControlled = selectedRows !== undefined;\n const enableRowSelection = selectionMode !== \"none\";\n\n const rowSelectionState: RowSelectionState = useMemo(() => {\n if (!enableRowSelection) return {};\n if (isControlled) {\n const selectedRowIds = isAllSelectedProp\n ? (data ?? []).map((item) => item.$primaryKey)\n : selectedRows;\n return getRowSelectionState(selectedRowIds);\n }\n if (internalIsAllSelected) {\n return getRowSelectionState((data ?? []).map((item) => item.$primaryKey));\n }\n return internalRowSelection;\n }, [\n enableRowSelection,\n isControlled,\n selectedRows,\n isAllSelectedProp,\n internalIsAllSelected,\n internalRowSelection,\n data,\n ]);\n\n const selectedCount = useMemo(\n () => Object.values(rowSelectionState).filter(Boolean).length,\n [rowSelectionState]\n );\n const totalCount = data?.length ?? 0;\n const isAllSelected = deriveIsAllSelected(\n isControlled,\n isAllSelectedProp,\n internalIsAllSelected,\n selectedCount,\n totalCount\n );\n const hasSelection = isAllSelected || selectedCount > 0;\n\n // Dedupes refires when \"select all\" is active and data grows.\n const lastFiredAllSelectedIdsRef = useRef<string | null>(null);\n\n const fireSelectionCallbacks = useEventCallback(\n (ids: PrimaryKeyType<Q>[], isSelectAll: boolean) => {\n onRowSelection?.(ids, isSelectAll);\n if (onRowSelectionChanged) {\n const currentData = data ?? [];\n const selectedKeySet = new Set(ids.map((id) => String(id)));\n const instances = currentData.filter((item) =>\n selectedKeySet.has(String(item.$primaryKey))\n );\n onRowSelectionChanged({\n selectedRows: instances,\n isSelectAll,\n });\n }\n }\n );\n\n const onToggleAll = useCallback(() => {\n if (!enableRowSelection || !data) return;\n\n // Any existing selection (full or partial/indeterminate) clears on click;\n // only an empty selection promotes to \"select all\".\n const newIsAllSelected = !hasSelection;\n const newSelectedRows: PrimaryKeyType<Q>[] = newIsAllSelected\n ? data.map((item) => item.$primaryKey)\n : [];\n\n if (!isControlled) {\n setInternalIsAllSelected(newIsAllSelected);\n setInternalRowSelection(getRowSelectionState(newSelectedRows));\n }\n lastFiredAllSelectedIdsRef.current = newIsAllSelected\n ? JSON.stringify(newSelectedRows)\n : null;\n fireSelectionCallbacks(newSelectedRows, newIsAllSelected);\n }, [\n enableRowSelection,\n data,\n hasSelection,\n isControlled,\n fireSelectionCallbacks,\n ]);\n\n const onToggleRow = useCallback(\n (rowId: string, rowIndex: number, isShiftClick: boolean = false) => {\n if (!enableRowSelection || !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 } else {\n if (isShiftClick && lastSelectedRowIndex != null) {\n newSelectedRows = getRangeSelectionRows({\n rowId,\n rowIndex,\n data,\n lastSelectedRowIndex,\n rowSelectionState,\n });\n setLastSelectedRowIndex(rowIndex);\n } else {\n newSelectedRows = getMultipleSelectionRows({\n rowId,\n rowIndex,\n data,\n rowSelectionState,\n });\n if (\n !isCurrentlySelected<Q, RDPs>({ rowIndex, data, rowSelectionState })\n ) {\n setLastSelectedRowIndex(rowIndex);\n }\n }\n }\n if (!isControlled) {\n setInternalIsAllSelected(false);\n setInternalRowSelection(getRowSelectionState(newSelectedRows));\n }\n lastFiredAllSelectedIdsRef.current = null;\n fireSelectionCallbacks(newSelectedRows, false);\n },\n [\n enableRowSelection,\n data,\n selectionMode,\n isControlled,\n fireSelectionCallbacks,\n rowSelectionState,\n lastSelectedRowIndex,\n ]\n );\n\n // Refire callbacks when uncontrolled \"select all\" is active and new rows arrive.\n useEffect(\n function syncSelectAllOnDataChange() {\n if (isControlled || !internalIsAllSelected || !data) {\n if (!internalIsAllSelected) {\n lastFiredAllSelectedIdsRef.current = null;\n }\n return;\n }\n const ids = data.map((item) => item.$primaryKey);\n const serializedIds = JSON.stringify(ids);\n if (lastFiredAllSelectedIdsRef.current === serializedIds) return;\n lastFiredAllSelectedIdsRef.current = serializedIds;\n fireSelectionCallbacks(ids, true);\n },\n [isControlled, internalIsAllSelected, data, fireSelectionCallbacks]\n );\n\n return {\n rowSelection: rowSelectionState,\n isAllSelected,\n enableRowSelection,\n hasSelection,\n onToggleAll,\n onToggleRow,\n };\n}\n\ninterface GetSelectedRowsProps<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n> {\n rowId: string;\n rowIndex: number;\n data: Array<Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>>;\n rowSelectionState: RowSelectionState;\n lastSelectedRowIndex?: number;\n}\n\nfunction getSingleSelectionRows<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n>({\n rowId,\n rowIndex,\n data,\n rowSelectionState,\n}: GetSelectedRowsProps<Q, RDPs>): PrimaryKeyType<Q>[] {\n const primaryKey = data[rowIndex].$primaryKey;\n return rowSelectionState[rowId] ? [] : [primaryKey];\n}\n\nfunction getRangeSelectionRows<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n>({\n lastSelectedRowIndex,\n rowIndex,\n data,\n rowSelectionState,\n}: GetSelectedRowsProps<Q, RDPs>): PrimaryKeyType<Q>[] {\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 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 isCurrentlySelected<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n>({\n rowIndex,\n data,\n rowSelectionState,\n}: Pick<\n GetSelectedRowsProps<Q, RDPs>,\n \"rowIndex\" | \"data\" | \"rowSelectionState\"\n>): boolean {\n const primaryKey = data[rowIndex].$primaryKey;\n const currentlySelected = getSelectedPrimaryKeys(rowSelectionState, data);\n return currentlySelected.includes(primaryKey);\n}\n\nfunction getMultipleSelectionRows<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n>({\n rowIndex,\n data,\n rowSelectionState,\n}: GetSelectedRowsProps<Q, RDPs>): PrimaryKeyType<Q>[] {\n const primaryKey = data[rowIndex].$primaryKey;\n const currentlySelected = getSelectedPrimaryKeys(rowSelectionState, data);\n return isCurrentlySelected<Q, RDPs>({ rowIndex, data, rowSelectionState })\n ? currentlySelected.filter((i) => i !== primaryKey)\n : [...currentlySelected, primaryKey];\n}\n\nfunction getRowsInRange<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n>(\n data: Array<Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>>,\n startIndex: number,\n endIndex: number\n): Array<Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>> {\n const start = Math.min(startIndex, endIndex);\n const end = Math.max(startIndex, endIndex);\n const rows: Array<\n Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>\n > = [];\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\nfunction deriveIsAllSelected(\n isControlled: boolean,\n isAllSelectedProp: boolean | undefined,\n internalIsAllSelected: boolean,\n selectedCount: number,\n totalCount: number\n): boolean {\n if (isControlled && isAllSelectedProp !== undefined) return isAllSelectedProp;\n if (!isControlled && internalIsAllSelected) return true;\n return totalCount > 0 && selectedCount === totalCount;\n}\n\nfunction getRowSelectionState<Q extends ObjectOrInterfaceDefinition>(\n primaryKeys: PrimaryKeyType<Q>[]\n): RowSelectionState {\n return primaryKeys.reduce<RowSelectionState>((acc, primaryKey) => {\n acc[getRowIdFromPrimaryKey(primaryKey)] = true;\n return acc;\n }, {});\n}\n\nfunction getSelectedPrimaryKeys<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n>(\n selectionState: RowSelectionState,\n data: Array<Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, 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
+ {"version":3,"file":"useRowSelection.js","names":["useCallback","useEffect","useMemo","useRef","useState","useEventCallback","getRowId","getRowIdFromPrimaryKey","useRowSelection","selectionMode","selectedRows","isAllSelected","isAllSelectedProp","onRowSelectionChanged","data","internalRowSelection","setInternalRowSelection","internalIsAllSelected","setInternalIsAllSelected","lastSelectedRowIndex","setLastSelectedRowIndex","isControlled","undefined","enableRowSelection","rowSelectionState","selectedRowIds","map","item","$primaryKey","getRowSelectionState","selectedCount","Object","values","filter","Boolean","length","totalCount","deriveIsAllSelected","hasSelection","lastFiredAllSelectedIdsRef","fireSelectionCallbacks","ids","isSelectAll","selectedKeySet","Set","id","String","instances","has","onToggleAll","newIsAllSelected","newSelectedRows","current","JSON","stringify","onToggleRow","rowId","rowIndex","isShiftClick","getSingleSelectionRows","getRangeSelectionRows","getMultipleSelectionRows","isCurrentlySelected","serializedIds","rowSelection","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 PropertyKeys,\n SimplePropertyDef,\n} from \"@osdk/api\";\nimport type { RowSelectionState } from \"@tanstack/react-table\";\nimport { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\n\nimport { useEventCallback } from \"../../shared/hooks/useEventCallback.js\";\nimport { getRowId, getRowIdFromPrimaryKey } from \"../utils/getRowId.js\";\n\n/**\n * Payload delivered by {@link UseRowSelectionProps.onRowSelectionChanged}.\n * Mirrors the OSDK-level `RowSelectionChange` but without the `objectSet`\n * field, which requires OSDK context and is composed in `ObjectTable`.\n */\nexport interface UseRowSelectionChange<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n> {\n selectedRows: Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>[];\n isSelectAll: boolean;\n}\n\nexport interface UseRowSelectionProps<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n> {\n selectionMode?: \"single\" | \"multiple\" | \"none\";\n selectedRows?: PrimaryKeyType<Q>[];\n isAllSelected?: boolean;\n onRowSelectionChanged?: (change: UseRowSelectionChange<Q, RDPs>) => void;\n data:\n | Array<Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>>\n | undefined;\n}\n\nexport interface UseRowSelectionResult {\n rowSelection: RowSelectionState;\n isAllSelected: boolean;\n hasSelection: boolean;\n enableRowSelection: 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, SimplePropertyDef> = Record<string, never>,\n>({\n selectionMode = \"none\",\n selectedRows,\n isAllSelected: isAllSelectedProp,\n onRowSelectionChanged,\n data,\n}: UseRowSelectionProps<Q, RDPs>): UseRowSelectionResult {\n const [internalRowSelection, setInternalRowSelection] =\n useState<RowSelectionState>({});\n\n // When true, newly fetched rows are auto-selected (uncontrolled mode only).\n const [internalIsAllSelected, setInternalIsAllSelected] = useState(false);\n\n const [lastSelectedRowIndex, setLastSelectedRowIndex] = useState<\n number | null\n >(null);\n\n const isControlled = selectedRows !== undefined;\n const enableRowSelection = selectionMode !== \"none\";\n\n const rowSelectionState: RowSelectionState = useMemo(() => {\n if (!enableRowSelection) return {};\n if (isControlled) {\n const selectedRowIds = isAllSelectedProp\n ? (data ?? []).map((item) => item.$primaryKey)\n : selectedRows;\n return getRowSelectionState(selectedRowIds);\n }\n if (internalIsAllSelected) {\n return getRowSelectionState((data ?? []).map((item) => item.$primaryKey));\n }\n return internalRowSelection;\n }, [\n enableRowSelection,\n isControlled,\n selectedRows,\n isAllSelectedProp,\n internalIsAllSelected,\n internalRowSelection,\n data,\n ]);\n\n const selectedCount = useMemo(\n () => Object.values(rowSelectionState).filter(Boolean).length,\n [rowSelectionState]\n );\n const totalCount = data?.length ?? 0;\n const isAllSelected = deriveIsAllSelected(\n isControlled,\n isAllSelectedProp,\n internalIsAllSelected,\n selectedCount,\n totalCount\n );\n const hasSelection = isAllSelected || selectedCount > 0;\n\n // Dedupes refires when \"select all\" is active and data grows.\n const lastFiredAllSelectedIdsRef = useRef<string | null>(null);\n\n const fireSelectionCallbacks = useEventCallback(\n (ids: PrimaryKeyType<Q>[], isSelectAll: boolean) => {\n if (onRowSelectionChanged) {\n const currentData = data ?? [];\n const selectedKeySet = new Set(ids.map((id) => String(id)));\n const instances = currentData.filter((item) =>\n selectedKeySet.has(String(item.$primaryKey))\n );\n onRowSelectionChanged({\n selectedRows: instances,\n isSelectAll,\n });\n }\n }\n );\n\n const onToggleAll = useCallback(() => {\n if (!enableRowSelection || !data) return;\n\n // Any existing selection (full or partial/indeterminate) clears on click;\n // only an empty selection promotes to \"select all\".\n const newIsAllSelected = !hasSelection;\n const newSelectedRows: PrimaryKeyType<Q>[] = newIsAllSelected\n ? data.map((item) => item.$primaryKey)\n : [];\n\n if (!isControlled) {\n setInternalIsAllSelected(newIsAllSelected);\n setInternalRowSelection(getRowSelectionState(newSelectedRows));\n }\n lastFiredAllSelectedIdsRef.current = newIsAllSelected\n ? JSON.stringify(newSelectedRows)\n : null;\n fireSelectionCallbacks(newSelectedRows, newIsAllSelected);\n }, [\n enableRowSelection,\n data,\n hasSelection,\n isControlled,\n fireSelectionCallbacks,\n ]);\n\n const onToggleRow = useCallback(\n (rowId: string, rowIndex: number, isShiftClick: boolean = false) => {\n if (!enableRowSelection || !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 } else {\n if (isShiftClick && lastSelectedRowIndex != null) {\n newSelectedRows = getRangeSelectionRows({\n rowId,\n rowIndex,\n data,\n lastSelectedRowIndex,\n rowSelectionState,\n });\n setLastSelectedRowIndex(rowIndex);\n } else {\n newSelectedRows = getMultipleSelectionRows({\n rowId,\n rowIndex,\n data,\n rowSelectionState,\n });\n if (\n !isCurrentlySelected<Q, RDPs>({ rowIndex, data, rowSelectionState })\n ) {\n setLastSelectedRowIndex(rowIndex);\n }\n }\n }\n if (!isControlled) {\n setInternalIsAllSelected(false);\n setInternalRowSelection(getRowSelectionState(newSelectedRows));\n }\n lastFiredAllSelectedIdsRef.current = null;\n fireSelectionCallbacks(newSelectedRows, false);\n },\n [\n enableRowSelection,\n data,\n selectionMode,\n isControlled,\n fireSelectionCallbacks,\n rowSelectionState,\n lastSelectedRowIndex,\n ]\n );\n\n // Refire callbacks when uncontrolled \"select all\" is active and new rows arrive.\n useEffect(\n function syncSelectAllOnDataChange() {\n if (isControlled || !internalIsAllSelected || !data) {\n if (!internalIsAllSelected) {\n lastFiredAllSelectedIdsRef.current = null;\n }\n return;\n }\n const ids = data.map((item) => item.$primaryKey);\n const serializedIds = JSON.stringify(ids);\n if (lastFiredAllSelectedIdsRef.current === serializedIds) return;\n lastFiredAllSelectedIdsRef.current = serializedIds;\n fireSelectionCallbacks(ids, true);\n },\n [isControlled, internalIsAllSelected, data, fireSelectionCallbacks]\n );\n\n return {\n rowSelection: rowSelectionState,\n isAllSelected,\n enableRowSelection,\n hasSelection,\n onToggleAll,\n onToggleRow,\n };\n}\n\ninterface GetSelectedRowsProps<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n> {\n rowId: string;\n rowIndex: number;\n data: Array<Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>>;\n rowSelectionState: RowSelectionState;\n lastSelectedRowIndex?: number;\n}\n\nfunction getSingleSelectionRows<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n>({\n rowId,\n rowIndex,\n data,\n rowSelectionState,\n}: GetSelectedRowsProps<Q, RDPs>): PrimaryKeyType<Q>[] {\n const primaryKey = data[rowIndex].$primaryKey;\n return rowSelectionState[rowId] ? [] : [primaryKey];\n}\n\nfunction getRangeSelectionRows<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n>({\n lastSelectedRowIndex,\n rowIndex,\n data,\n rowSelectionState,\n}: GetSelectedRowsProps<Q, RDPs>): PrimaryKeyType<Q>[] {\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 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 isCurrentlySelected<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n>({\n rowIndex,\n data,\n rowSelectionState,\n}: Pick<\n GetSelectedRowsProps<Q, RDPs>,\n \"rowIndex\" | \"data\" | \"rowSelectionState\"\n>): boolean {\n const primaryKey = data[rowIndex].$primaryKey;\n const currentlySelected = getSelectedPrimaryKeys(rowSelectionState, data);\n return currentlySelected.includes(primaryKey);\n}\n\nfunction getMultipleSelectionRows<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n>({\n rowIndex,\n data,\n rowSelectionState,\n}: GetSelectedRowsProps<Q, RDPs>): PrimaryKeyType<Q>[] {\n const primaryKey = data[rowIndex].$primaryKey;\n const currentlySelected = getSelectedPrimaryKeys(rowSelectionState, data);\n return isCurrentlySelected<Q, RDPs>({ rowIndex, data, rowSelectionState })\n ? currentlySelected.filter((i) => i !== primaryKey)\n : [...currentlySelected, primaryKey];\n}\n\nfunction getRowsInRange<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n>(\n data: Array<Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>>,\n startIndex: number,\n endIndex: number\n): Array<Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>> {\n const start = Math.min(startIndex, endIndex);\n const end = Math.max(startIndex, endIndex);\n const rows: Array<\n Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>\n > = [];\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\nfunction deriveIsAllSelected(\n isControlled: boolean,\n isAllSelectedProp: boolean | undefined,\n internalIsAllSelected: boolean,\n selectedCount: number,\n totalCount: number\n): boolean {\n if (isControlled && isAllSelectedProp !== undefined) return isAllSelectedProp;\n if (!isControlled && internalIsAllSelected) return true;\n return totalCount > 0 && selectedCount === totalCount;\n}\n\nfunction getRowSelectionState<Q extends ObjectOrInterfaceDefinition>(\n primaryKeys: PrimaryKeyType<Q>[]\n): RowSelectionState {\n return primaryKeys.reduce<RowSelectionState>((acc, primaryKey) => {\n acc[getRowIdFromPrimaryKey(primaryKey)] = true;\n return acc;\n }, {});\n}\n\nfunction getSelectedPrimaryKeys<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n>(\n selectionState: RowSelectionState,\n data: Array<Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, 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":[]}
@@ -14,7 +14,7 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- const PACKAGE_USER_AGENT = `osdk-react-components/${"0.39.0"}`;
17
+ const PACKAGE_USER_AGENT = `osdk-react-components/${"0.40.0-main-a2b6fc49d4e2239fddc00a2d4ed0782fd1f96fd0"}`;
18
18
  export function componentUserAgent(componentName) {
19
19
  return `${PACKAGE_USER_AGENT}/${componentName}`;
20
20
  }
@@ -1 +1 @@
1
- {"version":3,"file":"UserAgent.js","names":["PACKAGE_USER_AGENT","componentUserAgent","componentName"],"sources":["UserAgent.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\nconst PACKAGE_USER_AGENT = `osdk-react-components/${process.env.PACKAGE_VERSION}`;\n\nexport function componentUserAgent(componentName: string): string {\n return `${PACKAGE_USER_AGENT}/${componentName}`;\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAMA,kBAAkB,GAAG,mCAAsD;AAEjF,OAAO,SAASC,kBAAkBA,CAACC,aAAqB,EAAU;EAChE,OAAO,GAAGF,kBAAkB,IAAIE,aAAa,EAAE;AACjD","ignoreList":[]}
1
+ {"version":3,"file":"UserAgent.js","names":["PACKAGE_USER_AGENT","componentUserAgent","componentName"],"sources":["UserAgent.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\nconst PACKAGE_USER_AGENT = `osdk-react-components/${process.env.PACKAGE_VERSION}`;\n\nexport function componentUserAgent(componentName: string): string {\n return `${PACKAGE_USER_AGENT}/${componentName}`;\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAMA,kBAAkB,GAAG,iFAAsD;AAEjF,OAAO,SAASC,kBAAkBA,CAACC,aAAqB,EAAU;EAChE,OAAO,GAAGF,kBAAkB,IAAIE,aAAa,EAAE;AACjD","ignoreList":[]}
@@ -5,4 +5,4 @@ export declare function ObjectTable<
5
5
  Q extends ObjectOrInterfaceDefinition,
6
6
  RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,
7
7
  FunctionColumns extends Record<string, QueryDefinition<{}>> = Record<string, never>
8
- >({ objectType, objectSet, columnDefinitions, filter, objectSetOptions, dedupeIntervalMs, pageSize, streamUpdates, orderBy, defaultOrderBy, onOrderByChanged, onColumnsPinnedChanged, onColumnResize, onRowSelection, onRowSelectionChanged, onColumnHeaderClick, renderCellContextMenu, selectionMode, selectedRows, isAllSelected: isAllSelectedProp, onColumnVisibilityChanged, onCellValueChanged, onSubmitEdits, enableOrdering, enableColumnPinning, enableColumnResizing, enableColumnConfig, editMode, focusedRow, onFocusedRowChanged, tableRef,...props }: ObjectTableProps<Q, RDPs, FunctionColumns>): React.ReactElement;
8
+ >({ objectType, objectSet, columnDefinitions, filter, objectSetOptions, dedupeIntervalMs, pageSize, streamUpdates, orderBy, defaultOrderBy, onOrderByChanged, onColumnsPinnedChanged, onColumnResize, onRowSelectionChanged, onColumnHeaderClick, renderCellContextMenu, selectionMode, selectedRows, isAllSelected: isAllSelectedProp, onColumnVisibilityChanged, onCellValueChanged, onSubmitEdits, enableOrdering, enableColumnPinning, enableColumnResizing, enableColumnConfig, editMode, focusedRow, onFocusedRowChanged, tableRef,...props }: ObjectTableProps<Q, RDPs, FunctionColumns>): React.ReactElement;
@@ -1 +1 @@
1
- {"mappings":"AAgBA,cACE,6BAGA,iBACA,yBACK,WAAY;AAGnB,OAAO,WAA0D,OAAQ;AAazE,cAAc,wBAAwB,qBAAsB;AAS5D,OAAO,iBAAS;CACd,UAAU;CACV,aAAa,eAAe,qBAAqB;CACjD,wBAAwB,eAAe,gBAAgB,CAAE,MAAK;EAI9D,EACA,YACA,WACA,mBACA,QACA,kBACA,kBACA,UACA,eACA,SACA,gBACA,kBACA,wBACA,gBAEA,gBACA,uBACA,qBACA,uBACA,eACA,cACA,eAAe,mBACf,2BACA,oBACA,eACA,gBACA,qBACA,sBACA,oBACA,UACA,YACA,qBACA,SACA,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,WAA0D,OAAQ;AAazE,cAAc,wBAAwB,qBAAsB;AAS5D,OAAO,iBAAS;CACd,UAAU;CACV,aAAa,eAAe,qBAAqB;CACjD,wBAAwB,eAAe,gBAAgB,CAAE,MAAK;EAI9D,EACA,YACA,WACA,mBACA,QACA,kBACA,kBACA,UACA,eACA,SACA,gBACA,kBACA,wBACA,gBACA,uBACA,qBACA,uBACA,eACA,cACA,eAAe,mBACf,2BACA,oBACA,eACA,gBACA,qBACA,sBACA,oBACA,UACA,YACA,qBACA,SACA,GAAG,OACwC,EAA1C,iBAAiB,GAAG,MAAM,mBAAmB,MAAM","names":[],"sources":["../../../src/object-table/ObjectTable.tsx"],"version":3,"file":"ObjectTable.d.ts"}
@@ -32,7 +32,6 @@ interface SharedColumnDefinition<
32
32
  maxWidth?: number;
33
33
  resizable?: boolean;
34
34
  orderable?: boolean;
35
- filterable?: boolean;
36
35
  /**
37
36
  * Custom renderer for the cell value.
38
37
  *
@@ -242,24 +241,11 @@ export interface ObjectTableProps<
242
241
  */
243
242
  columnDefinitions?: Array<ColumnDefinition<Q, RDPs, FunctionColumns>>;
244
243
  /**
245
- * Whether the table is filterable by the user.
246
- *
247
- * @default true
248
- */
249
- enableFiltering?: boolean;
250
- /**
251
244
  * The current where clause to filter the objects in the table.
252
245
  * If provided, the filter is controlled.
253
246
  */
254
247
  filter?: WhereClause<Q, RDPs>;
255
248
  /**
256
- * Called when the where clause is changed.
257
- * Required when filter is controlled.
258
- *
259
- * @param newWhere The new where clause
260
- */
261
- onFilterChanged?: (newWhere: WhereClause<Q, RDPs>) => void;
262
- /**
263
249
  * Whether the table is sortable by the user.
264
250
  *
265
251
  * @default true
@@ -429,18 +415,6 @@ export interface ObjectTableProps<
429
415
  */
430
416
  isAllSelected?: boolean;
431
417
  /**
432
- * Called when the row selection changes.
433
- *
434
- * @deprecated Use {@link onRowSelectionChanged} instead. The new callback
435
- * delivers a {@link RowSelectionChange} object with `selectedRows`,
436
- * `isSelectAll`, and a derived `objectSet`. This legacy callback
437
- * continues to fire alongside the new one for backwards compatibility.
438
- *
439
- * @param selectedRowIds The primary keys of currently selected rows
440
- * @param isSelectAll Whether the change was triggered by a "select all" action. Defaults to false
441
- */
442
- onRowSelection?: (selectedRowIds: PrimaryKeyType<Q>[], isSelectAll?: boolean) => void;
443
- /**
444
418
  * Called when the row selection changes, with a {@link RowSelectionChange}
445
419
  * payload describing the new state.
446
420
  *
@@ -1 +1 @@
1
- {"mappings":"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","names":["object: Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>","locator: ColumnDefinitionLocator<Q, RDPs, FunctionColumns>","value: unknown","objectSet: ObjectSet<Q, RDPs>","cellData?: unknown","newWhere: WhereClause<Q, RDPs>","newOrderBy: Array<{\n property: PropertyKeys<Q> | keyof RDPs;\n direction: \"asc\" | \"desc\";\n }>","info: CellEditInfo<\n Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>,\n unknown\n >","edits: CellEditInfo<\n Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>,\n unknown\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 | null","row: Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs> | null","selectedRowIds: PrimaryKeyType<Q>[]","isSelectAll?: boolean","change: RowSelectionChange<Q, RDPs>","row: Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>","cellValue: unknown","options?: ObjectTableSnapshotOptions","columnId: string"],"sources":["../../../src/object-table/ObjectTableApi.ts"],"version":3,"file":"ObjectTableApi.d.ts"}
1
+ {"mappings":"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","names":["object: Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>","locator: ColumnDefinitionLocator<Q, RDPs, FunctionColumns>","value: unknown","objectSet: ObjectSet<Q, RDPs>","cellData?: unknown","newOrderBy: Array<{\n property: PropertyKeys<Q> | keyof RDPs;\n direction: \"asc\" | \"desc\";\n }>","info: CellEditInfo<\n Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>,\n unknown\n >","edits: CellEditInfo<\n Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>,\n unknown\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 | null","row: Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs> | null","change: RowSelectionChange<Q, RDPs>","row: Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>","cellValue: unknown","options?: ObjectTableSnapshotOptions","columnId: string"],"sources":["../../../src/object-table/ObjectTableApi.ts"],"version":3,"file":"ObjectTableApi.d.ts"}
@@ -19,10 +19,6 @@ export interface UseRowSelectionProps<
19
19
  selectionMode?: "single" | "multiple" | "none";
20
20
  selectedRows?: PrimaryKeyType<Q>[];
21
21
  isAllSelected?: boolean;
22
- /**
23
- * @deprecated Use {@link onRowSelectionChanged} instead.
24
- */
25
- onRowSelection?: (selectedRowIds: PrimaryKeyType<Q>[], isSelectAll: boolean) => void;
26
22
  onRowSelectionChanged?: (change: UseRowSelectionChange<Q, RDPs>) => void;
27
23
  data: Array<Osdk.Instance<Q, "$allBaseProperties", PropertyKeys<Q>, RDPs>> | undefined;
28
24
  }
@@ -37,4 +33,4 @@ export interface UseRowSelectionResult {
37
33
  export declare function useRowSelection<
38
34
  Q extends ObjectOrInterfaceDefinition,
39
35
  RDPs extends Record<string, SimplePropertyDef> = Record<string, never>
40
- >({ selectionMode, selectedRows, isAllSelected: isAllSelectedProp, onRowSelection, onRowSelectionChanged, data }: UseRowSelectionProps<Q, RDPs>): UseRowSelectionResult;
36
+ >({ selectionMode, selectedRows, isAllSelected: isAllSelectedProp, onRowSelectionChanged, data }: UseRowSelectionProps<Q, RDPs>): UseRowSelectionResult;
@@ -1 +1 @@
1
- {"mappings":"AAgBA,cACE,6BACA,MACA,gBACA,cACA,yBACK,WAAY;AACnB,cAAc,yBAAyB,uBAAwB;;;;;;AAW/D,iBAAiB;CACf,UAAU;CACV,aAAa,eAAe,qBAAqB;EACjD;CACA,cAAc,KAAK,SAAS,GAAG,sBAAsB,aAAa,IAAI;CACtE;AACD;AAED,iBAAiB;CACf,UAAU;CACV,aAAa,eAAe,qBAAqB;EACjD;CACA,gBAAgB,WAAW,aAAa;CACxC,eAAe,eAAe;CAC9B;;;;CAIA,kBACEA,gBAAgB,eAAe,MAC/BC;CAEF,yBAAyBC,QAAQ,sBAAsB,GAAG;CAC1D,MACI,MAAM,KAAK,SAAS,GAAG,sBAAsB,aAAa,IAAI;AAEnE;AAED,iBAAiB,sBAAsB;CACrC,cAAc;CACd;CACA;CACA;CACA;CACA,cACEC,eACAC,kBACAC;AAEH;AAED,OAAO,iBAAS;CACd,UAAU;CACV,aAAa,eAAe,qBAAqB;EACjD,EACA,eACA,cACA,eAAe,mBAEf,gBACA,uBACA,MAC8B,EAA7B,qBAAqB,GAAG,QAAQ","names":["selectedRowIds: PrimaryKeyType<Q>[]","isSelectAll: boolean","change: UseRowSelectionChange<Q, RDPs>","rowId: string","rowIndex: number","isShiftClick?: boolean"],"sources":["../../../../src/object-table/hooks/useRowSelection.ts"],"version":3,"file":"useRowSelection.d.ts"}
1
+ {"mappings":"AAgBA,cACE,6BACA,MACA,gBACA,cACA,yBACK,WAAY;AACnB,cAAc,yBAAyB,uBAAwB;;;;;;AAW/D,iBAAiB;CACf,UAAU;CACV,aAAa,eAAe,qBAAqB;EACjD;CACA,cAAc,KAAK,SAAS,GAAG,sBAAsB,aAAa,IAAI;CACtE;AACD;AAED,iBAAiB;CACf,UAAU;CACV,aAAa,eAAe,qBAAqB;EACjD;CACA,gBAAgB,WAAW,aAAa;CACxC,eAAe,eAAe;CAC9B;CACA,yBAAyBA,QAAQ,sBAAsB,GAAG;CAC1D,MACI,MAAM,KAAK,SAAS,GAAG,sBAAsB,aAAa,IAAI;AAEnE;AAED,iBAAiB,sBAAsB;CACrC,cAAc;CACd;CACA;CACA;CACA;CACA,cACEC,eACAC,kBACAC;AAEH;AAED,OAAO,iBAAS;CACd,UAAU;CACV,aAAa,eAAe,qBAAqB;EACjD,EACA,eACA,cACA,eAAe,mBACf,uBACA,MAC8B,EAA7B,qBAAqB,GAAG,QAAQ","names":["change: UseRowSelectionChange<Q, RDPs>","rowId: string","rowIndex: number","isShiftClick?: boolean"],"sources":["../../../../src/object-table/hooks/useRowSelection.ts"],"version":3,"file":"useRowSelection.d.ts"}
@@ -87,9 +87,7 @@ Type parameters: `Q extends ObjectOrInterfaceDefinition`, `RDPs extends Record<s
87
87
  | `streamUpdates` | `boolean` | Enable streaming updates via websocket subscription. When true, the table will automatically update when matching objects are added, updated, or removed in Foundry.<br /><br />Limitations: `streamUpdates` cannot be used together with `pivotTo` or `withProperties`. The server does not support websocket subscriptions for link-traversal or derived-property queries. Those queries still fetch data normally but won't receive real-time updates. Defaults to `false`. |
88
88
  | `pageSize` | `number` | Number of objects to fetch per page. Defaults to `50`. |
89
89
  | `columnDefinitions` | `Array<ColumnDefinition<Q, RDPs, FunctionColumns>>` | Ordered list of column definitions to show in the table<br /><br />If not provided, all of the properties of the object type will be shown in default order. |
90
- | `enableFiltering` | `boolean` | Whether the table is filterable by the user. Defaults to `true`. |
91
90
  | `filter` | `WhereClause<Q, RDPs>` | The current where clause to filter the objects in the table. If provided, the filter is controlled. |
92
- | `onFilterChanged` | `(newWhere: WhereClause<Q, RDPs>) => void` | Called when the where clause is changed. Required when filter is controlled. |
93
91
  | `enableOrdering` | `boolean` | Whether the table is sortable by the user. Defaults to `true`. |
94
92
  | `enableColumnPinning` | `boolean` | Whether columns can be pinned by the user. Defaults to `true`. |
95
93
  | `enableColumnResizing` | `boolean` | Whether columns can be resized by the user. Defaults to `true`. |
@@ -111,7 +109,6 @@ Type parameters: `Q extends ObjectOrInterfaceDefinition`, `RDPs extends Record<s
111
109
  | `selectionMode` | `"single" \| "multiple" \| "none"` | Selection mode for the table rows.<br /><br />If multiple, a checkbox will be shown for each row to allow selecting multiple rows as well as a top-level checkbox in the header to select all rows. Defaults to `"none"`. |
112
110
  | `selectedRows` | `PrimaryKeyType<Q>[]` | The currently selected rows in the table. If provided, the row selection is controlled. |
113
111
  | `isAllSelected` | `boolean` | Indicates whether all rows are selected in controlled mode. When true, the table will show all rows as selected regardless of the selectedRows array. |
114
- | `onRowSelection` | `(selectedRowIds: PrimaryKeyType<Q>[], isSelectAll?: boolean) => void` | **Deprecated** — Use `onRowSelectionChanged` instead. The new callback delivers a `RowSelectionChange` object with `selectedRows`, `isSelectAll`, and a derived `objectSet`. This legacy callback continues to fire alongside the new one for backwards compatibility. Called when the row selection changes. |
115
112
  | `onRowSelectionChanged` | `(change: RowSelectionChange<Q, RDPs>) => void` | Called when the row selection changes, with a `RowSelectionChange` payload describing the new state. |
116
113
  | `renderCellContextMenu` | `(row: Osdk.Instance<Q, "$allBaseProperties", PropertyKeys<Q>, RDPs>, cellValue: unknown) => React.ReactNode` | If provided, will render this context menu when right clicking on a cell |
117
114
  | `renderEmptyState` | `() => React.ReactNode` | Render override for the empty state. Called when the table has no rows and no error. When omitted, a default "No Data" indicator is rendered. |
@@ -158,7 +155,6 @@ Type parameters: `Q extends ObjectOrInterfaceDefinition`, `RDPs extends Record<s
158
155
  | `maxWidth` | `number` | |
159
156
  | `resizable` | `boolean` | |
160
157
  | `orderable` | `boolean` | |
161
- | `filterable` | `boolean` | |
162
158
  | `renderCell` | `(object: Osdk.Instance<Q, "$allBaseProperties", PropertyKeys<Q>, RDPs>, locator: ColumnDefinitionLocator<Q, RDPs, FunctionColumns>) => React.ReactNode` | Custom renderer for the cell value.<br /><br />Interaction with `editable` columns: - When `editMode: "manual"` (default), `renderCell` is used while the table is read-only (Edit Table button visible) and the editable cell takes over once the user enters edit mode. - When `editMode: "always"`, the editable cell always wins on editable columns and `renderCell` is ignored — `editMode: "always"` opts the column into a permanently-editable surface, leaving no read-only state for `renderCell` to render. Use `editMode: "manual"` if you need a custom display alongside editing. |
163
159
  | `columnName` | `string` | If provided, this will be used in the column header. If both columnName and renderHeader are provided, renderHeader will take precedence in the table header. columnName will still be used in other parts where the column name is displayed.<br /><br />If not provided, for a property column, the property displayName will be used for other columns, the id will be used. |
164
160
  | `renderHeader` | `() => React.ReactNode` | If provided, this will be used to render the header component. When both columnName and renderHeader are provided, renderHeader will take precedence in the table header. |
@@ -627,22 +623,11 @@ function EmployeesTable() {
627
623
  const [selectedRows, setSelectedRows] = useState<string[]>([]);
628
624
  const [isAllSelected, setIsAllSelected] = useState(false);
629
625
 
630
- const handleRowSelection = (
631
- selectedRowIds: string[],
632
- isSelectAll?: boolean,
633
- ) => {
634
- if (isSelectAll) {
635
- if (selectedRowIds.length === 0) {
636
- setIsAllSelected(false);
637
- setSelectedRows([]);
638
- } else {
639
- setIsAllSelected(true);
640
- setSelectedRows([]);
641
- }
642
- } else {
643
- setIsAllSelected(false);
644
- setSelectedRows(selectedRowIds);
645
- }
626
+ const handleRowSelectionChanged = ({ selectedRows, isSelectAll }) => {
627
+ setIsAllSelected(isSelectAll);
628
+ setSelectedRows(
629
+ isSelectAll ? [] : selectedRows.map((row) => row.$primaryKey),
630
+ );
646
631
  };
647
632
 
648
633
  return (
@@ -653,7 +638,7 @@ function EmployeesTable() {
653
638
  selectionMode="multiple"
654
639
  selectedRows={selectedRows}
655
640
  isAllSelected={isAllSelected}
656
- onRowSelection={handleRowSelection}
641
+ onRowSelectionChanged={handleRowSelectionChanged}
657
642
  />
658
643
  </div>
659
644
  );
@@ -662,11 +647,11 @@ function EmployeesTable() {
662
647
 
663
648
  **Key points about select all behavior:**
664
649
 
665
- - The `isSelectAll` parameter in `onRowSelection` indicates whether the change was triggered by the "select all" checkbox
650
+ - The `isSelectAll` field in the `onRowSelectionChanged` payload indicates whether the change was triggered by the "select all" checkbox
666
651
  - When `isAllSelected` is `true`, the table shows all rows as selected regardless of the `selectedRows` array content
667
652
  - This allows efficient handling of "select all" without loading all object IDs
668
653
  - Individual row selections automatically set `isAllSelected` to `false`
669
- - After "select all", new rows loaded via scroll (`fetchMore`) stay visually checked and `onRowSelection` refires with the expanded id list so controlled callers stay in sync
654
+ - After "select all", new rows loaded via scroll (`fetchMore`) stay visually checked and `onRowSelectionChanged` refires with the expanded selection so controlled callers stay in sync
670
655
 
671
656
  ### Listening to selection changes
672
657
 
@@ -700,17 +685,6 @@ function EmployeesTable() {
700
685
  />;
701
686
  ```
702
687
 
703
- #### Migrating from `onRowSelection`
704
-
705
- The legacy `onRowSelection(selectedRowIds, isSelectAll?)` callback is deprecated but still fires for backwards compatibility. The equivalents in `onRowSelectionChanged` are:
706
-
707
- | Legacy parameter | New payload field |
708
- | -------------------------- | -------------------------------------- |
709
- | `selectedRowIds` | `selectedRows.map(r => r.$primaryKey)` |
710
- | `isSelectAll` (second arg) | `isSelectAll` |
711
- | _(not previously exposed)_ | `selectedRows` |
712
- | _(not previously exposed)_ | `objectSet` |
713
-
714
688
  ### Example 12: Custom Column Type
715
689
 
716
690
  In a custom column type, you can render anything in the column by passing in renderHeader and renderCell props.
@@ -1211,7 +1185,6 @@ const columnDefinitions: Array<ColumnDefinition<typeof Employee>> = [
1211
1185
  {
1212
1186
  locator: { type: "property", id: "fullName" },
1213
1187
  orderable: false,
1214
- filterable: false,
1215
1188
  },
1216
1189
  ];
1217
1190
  ```
@@ -1520,7 +1493,7 @@ type EmployeeProps = PropertyKeys<typeof Employee>;
1520
1493
  ### Selection not working
1521
1494
 
1522
1495
  - Ensure `selectionMode` is set to "single" or "multiple"
1523
- - For controlled mode, provide both `selectedRows` and `onRowSelection`
1496
+ - For controlled mode, provide both `selectedRows` and `onRowSelectionChanged`
1524
1497
 
1525
1498
  ### Custom rendering not appearing
1526
1499
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@osdk/react-components",
3
- "version": "0.39.0",
3
+ "version": "0.40.0-main-a2b6fc49d4e2239fddc00a2d4ed0782fd1f96fd0",
4
4
  "license": "Apache-2.0",
5
5
  "repository": {
6
6
  "type": "git",
@@ -228,11 +228,11 @@
228
228
  "react-dom": "^18.3.1",
229
229
  "typescript": "~5.5.4",
230
230
  "@osdk/aip-core": "0.9.0",
231
- "@osdk/api": "2.45.0",
232
- "@osdk/client": "2.45.0",
233
- "@osdk/monorepo.tsconfig": "~0.7.0",
231
+ "@osdk/api": "2.46.0",
234
232
  "@osdk/monorepo.api-extractor": "~0.7.0",
235
- "@osdk/react": "2.45.0"
233
+ "@osdk/monorepo.tsconfig": "~0.7.0",
234
+ "@osdk/client": "2.46.0",
235
+ "@osdk/react": "2.46.0"
236
236
  },
237
237
  "publishConfig": {
238
238
  "access": "public"
@@ -1,11 +0,0 @@
1
- 'use strict';
2
-
3
- var chunkOISZU73V_cjs = require('./chunk-OISZU73V.cjs');
4
- var chunkVPD5ZNXM_cjs = require('./chunk-VPD5ZNXM.cjs');
5
-
6
- // src/public/experimental/email-viewer.ts
7
- var EmailViewer2 = chunkVPD5ZNXM_cjs.withOsdkMetrics(chunkOISZU73V_cjs.EmailViewer, "EmailViewer");
8
-
9
- exports.EmailViewer = EmailViewer2;
10
- //# sourceMappingURL=chunk-2FZYBU6I.cjs.map
11
- //# sourceMappingURL=chunk-2FZYBU6I.cjs.map
@@ -1,11 +0,0 @@
1
- 'use strict';
2
-
3
- var chunkKHMOMROL_cjs = require('./chunk-KHMOMROL.cjs');
4
- var chunkVPD5ZNXM_cjs = require('./chunk-VPD5ZNXM.cjs');
5
-
6
- // src/public/experimental/video-viewer.ts
7
- var VideoViewer2 = chunkVPD5ZNXM_cjs.withOsdkMetrics(chunkKHMOMROL_cjs.VideoViewer, "VideoViewer");
8
-
9
- exports.VideoViewer = VideoViewer2;
10
- //# sourceMappingURL=chunk-7TXID3FA.cjs.map
11
- //# sourceMappingURL=chunk-7TXID3FA.cjs.map
@@ -1,11 +0,0 @@
1
- 'use strict';
2
-
3
- var chunkGKDO6NU7_cjs = require('./chunk-GKDO6NU7.cjs');
4
- var chunkVPD5ZNXM_cjs = require('./chunk-VPD5ZNXM.cjs');
5
-
6
- // src/public/experimental/excel-viewer.ts
7
- var ExcelViewer2 = chunkVPD5ZNXM_cjs.withOsdkMetrics(chunkGKDO6NU7_cjs.ExcelViewer, "ExcelViewer");
8
-
9
- exports.ExcelViewer = ExcelViewer2;
10
- //# sourceMappingURL=chunk-JVER3ZOK.cjs.map
11
- //# sourceMappingURL=chunk-JVER3ZOK.cjs.map