@osdk/react-components 0.1.0-beta.3 → 0.1.0-beta.5

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 (154) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/build/browser/base-components/checkbox/Checkbox.module.css +11 -10
  3. package/build/browser/object-table/CellContextMenu.js +2 -2
  4. package/build/browser/object-table/CellContextMenu.js.map +1 -1
  5. package/build/browser/object-table/CellContextMenu.module.css +20 -0
  6. package/build/browser/object-table/ObjectTable.js +37 -10
  7. package/build/browser/object-table/ObjectTable.js.map +1 -1
  8. package/build/browser/object-table/ObjectTableApi.js.map +1 -1
  9. package/build/browser/object-table/Table.js +7 -16
  10. package/build/browser/object-table/Table.js.map +1 -1
  11. package/build/browser/object-table/Table.module.css +22 -0
  12. package/build/browser/object-table/TableBody.js +2 -2
  13. package/build/browser/object-table/TableBody.js.map +1 -1
  14. package/build/browser/object-table/TableBody.module.css +20 -0
  15. package/build/browser/object-table/TableCell.js +12 -7
  16. package/build/browser/object-table/TableCell.js.map +1 -1
  17. package/build/browser/object-table/TableCell.module.css +63 -0
  18. package/build/browser/object-table/TableHeader.js +35 -38
  19. package/build/browser/object-table/TableHeader.js.map +1 -1
  20. package/build/browser/object-table/TableHeader.module.css +95 -0
  21. package/build/browser/object-table/TableHeaderContent.js +27 -0
  22. package/build/browser/object-table/TableHeaderContent.js.map +1 -0
  23. package/build/browser/object-table/TableHeaderContent.module.css +30 -0
  24. package/build/browser/object-table/TableHeaderWithPopover.js +155 -0
  25. package/build/browser/object-table/TableHeaderWithPopover.js.map +1 -0
  26. package/build/browser/object-table/TableHeaderWithPopover.module.css +105 -0
  27. package/build/browser/object-table/TableRow.js +4 -3
  28. package/build/browser/object-table/TableRow.js.map +1 -1
  29. package/build/browser/object-table/TableRow.module.css +60 -0
  30. package/build/browser/object-table/hooks/__tests__/useColumnPinning.test.js +266 -0
  31. package/build/browser/object-table/hooks/__tests__/useColumnPinning.test.js.map +1 -0
  32. package/build/browser/object-table/hooks/__tests__/{useDefaultTableStates.test.js → useColumnVisibility.test.js} +16 -16
  33. package/build/browser/object-table/hooks/__tests__/useColumnVisibility.test.js.map +1 -0
  34. package/build/browser/object-table/hooks/__tests__/useSelectionColumn.test.js +2 -1
  35. package/build/browser/object-table/hooks/__tests__/useSelectionColumn.test.js.map +1 -1
  36. package/build/browser/object-table/hooks/__tests__/useTableSorting.test.js +211 -0
  37. package/build/browser/object-table/hooks/__tests__/useTableSorting.test.js.map +1 -0
  38. package/build/browser/object-table/hooks/useColumnPinning.js +95 -0
  39. package/build/browser/object-table/hooks/useColumnPinning.js.map +1 -0
  40. package/build/{esm/object-table/hooks/useDefaultTableStates.js → browser/object-table/hooks/useColumnVisibility.js} +3 -5
  41. package/build/browser/object-table/hooks/useColumnVisibility.js.map +1 -0
  42. package/build/browser/object-table/hooks/useObjectTableData.js +15 -3
  43. package/build/browser/object-table/hooks/useObjectTableData.js.map +1 -1
  44. package/build/browser/object-table/hooks/useSelectionColumn.js +3 -2
  45. package/build/browser/object-table/hooks/useSelectionColumn.js.map +1 -1
  46. package/build/browser/object-table/hooks/useTableSorting.js +66 -0
  47. package/build/browser/object-table/hooks/useTableSorting.js.map +1 -0
  48. package/build/browser/object-table/utils/constants.js +18 -0
  49. package/build/browser/object-table/utils/constants.js.map +1 -0
  50. package/build/browser/object-table/utils/getColumnPinningStyles.js +27 -0
  51. package/build/browser/object-table/utils/getColumnPinningStyles.js.map +1 -0
  52. package/build/browser/public/experimental.js +4 -0
  53. package/build/browser/public/experimental.js.map +1 -1
  54. package/build/cjs/public/experimental.cjs +446 -129
  55. package/build/cjs/public/experimental.cjs.map +1 -1
  56. package/build/cjs/public/experimental.css +248 -4
  57. package/build/cjs/public/experimental.css.map +1 -1
  58. package/build/cjs/public/experimental.d.cts +26 -3
  59. package/build/esm/base-components/checkbox/Checkbox.module.css +11 -10
  60. package/build/esm/object-table/CellContextMenu.js +2 -2
  61. package/build/esm/object-table/CellContextMenu.js.map +1 -1
  62. package/build/esm/object-table/CellContextMenu.module.css +20 -0
  63. package/build/esm/object-table/ObjectTable.js +37 -10
  64. package/build/esm/object-table/ObjectTable.js.map +1 -1
  65. package/build/esm/object-table/ObjectTableApi.js.map +1 -1
  66. package/build/esm/object-table/Table.js +7 -16
  67. package/build/esm/object-table/Table.js.map +1 -1
  68. package/build/esm/object-table/Table.module.css +22 -0
  69. package/build/esm/object-table/TableBody.js +2 -2
  70. package/build/esm/object-table/TableBody.js.map +1 -1
  71. package/build/esm/object-table/TableBody.module.css +20 -0
  72. package/build/esm/object-table/TableCell.js +12 -7
  73. package/build/esm/object-table/TableCell.js.map +1 -1
  74. package/build/esm/object-table/TableCell.module.css +63 -0
  75. package/build/esm/object-table/TableHeader.js +35 -38
  76. package/build/esm/object-table/TableHeader.js.map +1 -1
  77. package/build/esm/object-table/TableHeader.module.css +95 -0
  78. package/build/esm/object-table/TableHeaderContent.js +27 -0
  79. package/build/esm/object-table/TableHeaderContent.js.map +1 -0
  80. package/build/esm/object-table/TableHeaderContent.module.css +30 -0
  81. package/build/esm/object-table/TableHeaderWithPopover.js +155 -0
  82. package/build/esm/object-table/TableHeaderWithPopover.js.map +1 -0
  83. package/build/esm/object-table/TableHeaderWithPopover.module.css +105 -0
  84. package/build/esm/object-table/TableRow.js +4 -3
  85. package/build/esm/object-table/TableRow.js.map +1 -1
  86. package/build/esm/object-table/TableRow.module.css +60 -0
  87. package/build/esm/object-table/hooks/__tests__/useColumnPinning.test.js +266 -0
  88. package/build/esm/object-table/hooks/__tests__/useColumnPinning.test.js.map +1 -0
  89. package/build/esm/object-table/hooks/__tests__/{useDefaultTableStates.test.js → useColumnVisibility.test.js} +16 -16
  90. package/build/esm/object-table/hooks/__tests__/useColumnVisibility.test.js.map +1 -0
  91. package/build/esm/object-table/hooks/__tests__/useSelectionColumn.test.js +2 -1
  92. package/build/esm/object-table/hooks/__tests__/useSelectionColumn.test.js.map +1 -1
  93. package/build/esm/object-table/hooks/__tests__/useTableSorting.test.js +211 -0
  94. package/build/esm/object-table/hooks/__tests__/useTableSorting.test.js.map +1 -0
  95. package/build/esm/object-table/hooks/useColumnPinning.js +95 -0
  96. package/build/esm/object-table/hooks/useColumnPinning.js.map +1 -0
  97. package/build/{browser/object-table/hooks/useDefaultTableStates.js → esm/object-table/hooks/useColumnVisibility.js} +3 -5
  98. package/build/esm/object-table/hooks/useColumnVisibility.js.map +1 -0
  99. package/build/esm/object-table/hooks/useObjectTableData.js +15 -3
  100. package/build/esm/object-table/hooks/useObjectTableData.js.map +1 -1
  101. package/build/esm/object-table/hooks/useSelectionColumn.js +3 -2
  102. package/build/esm/object-table/hooks/useSelectionColumn.js.map +1 -1
  103. package/build/esm/object-table/hooks/useTableSorting.js +66 -0
  104. package/build/esm/object-table/hooks/useTableSorting.js.map +1 -0
  105. package/build/esm/object-table/utils/constants.js +18 -0
  106. package/build/esm/object-table/utils/constants.js.map +1 -0
  107. package/build/esm/object-table/utils/getColumnPinningStyles.js +27 -0
  108. package/build/esm/object-table/utils/getColumnPinningStyles.js.map +1 -0
  109. package/build/esm/public/experimental.js +4 -0
  110. package/build/esm/public/experimental.js.map +1 -1
  111. package/build/types/object-table/CellContextMenu.d.ts.map +1 -1
  112. package/build/types/object-table/ObjectTable.d.ts +1 -1
  113. package/build/types/object-table/ObjectTable.d.ts.map +1 -1
  114. package/build/types/object-table/ObjectTableApi.d.ts +11 -0
  115. package/build/types/object-table/ObjectTableApi.d.ts.map +1 -1
  116. package/build/types/object-table/Table.d.ts +3 -3
  117. package/build/types/object-table/Table.d.ts.map +1 -1
  118. package/build/types/object-table/TableBody.d.ts.map +1 -1
  119. package/build/types/object-table/TableCell.d.ts.map +1 -1
  120. package/build/types/object-table/TableHeader.d.ts.map +1 -1
  121. package/build/types/object-table/TableHeaderContent.d.ts +7 -0
  122. package/build/types/object-table/TableHeaderContent.d.ts.map +1 -0
  123. package/build/types/object-table/TableHeaderWithPopover.d.ts +13 -0
  124. package/build/types/object-table/TableHeaderWithPopover.d.ts.map +1 -0
  125. package/build/types/object-table/TableRow.d.ts.map +1 -1
  126. package/build/types/object-table/hooks/__tests__/useColumnPinning.test.d.ts.map +1 -0
  127. package/build/types/object-table/hooks/__tests__/useColumnVisibility.test.d.ts +1 -0
  128. package/build/types/object-table/hooks/__tests__/useColumnVisibility.test.d.ts.map +1 -0
  129. package/build/types/object-table/hooks/__tests__/useTableSorting.test.d.ts +1 -0
  130. package/build/types/object-table/hooks/__tests__/useTableSorting.test.d.ts.map +1 -0
  131. package/build/types/object-table/hooks/useColumnPinning.d.ts +22 -0
  132. package/build/types/object-table/hooks/useColumnPinning.d.ts.map +1 -0
  133. package/build/types/object-table/hooks/{useDefaultTableStates.d.ts → useColumnVisibility.d.ts} +3 -6
  134. package/build/types/object-table/hooks/useColumnVisibility.d.ts.map +1 -0
  135. package/build/types/object-table/hooks/useObjectTableData.d.ts +2 -1
  136. package/build/types/object-table/hooks/useObjectTableData.d.ts.map +1 -1
  137. package/build/types/object-table/hooks/useSelectionColumn.d.ts +0 -1
  138. package/build/types/object-table/hooks/useSelectionColumn.d.ts.map +1 -1
  139. package/build/types/object-table/hooks/useTableSorting.d.ts +22 -0
  140. package/build/types/object-table/hooks/useTableSorting.d.ts.map +1 -0
  141. package/build/types/object-table/utils/constants.d.ts +1 -0
  142. package/build/types/object-table/utils/constants.d.ts.map +1 -0
  143. package/build/types/object-table/utils/getColumnPinningStyles.d.ts +7 -0
  144. package/build/types/object-table/utils/getColumnPinningStyles.d.ts.map +1 -0
  145. package/build/types/public/experimental.d.ts +2 -0
  146. package/build/types/public/experimental.d.ts.map +1 -1
  147. package/package.json +8 -8
  148. package/build/browser/object-table/hooks/__tests__/useDefaultTableStates.test.js.map +0 -1
  149. package/build/browser/object-table/hooks/useDefaultTableStates.js.map +0 -1
  150. package/build/esm/object-table/hooks/__tests__/useDefaultTableStates.test.js.map +0 -1
  151. package/build/esm/object-table/hooks/useDefaultTableStates.js.map +0 -1
  152. package/build/types/object-table/hooks/__tests__/useDefaultTableStates.test.d.ts.map +0 -1
  153. package/build/types/object-table/hooks/useDefaultTableStates.d.ts.map +0 -1
  154. /package/build/types/object-table/hooks/__tests__/{useDefaultTableStates.test.d.ts → useColumnPinning.test.d.ts} +0 -0
@@ -0,0 +1,105 @@
1
+ /*
2
+ * Copyright 2025 Palantir Technologies, Inc. All rights reserved.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ .osdkCenterContainer {
18
+ display: flex;
19
+ align-items: center;
20
+ justify-content: center;
21
+ }
22
+
23
+ .osdkContentGap {
24
+ display: flex;
25
+ gap: var(--bp-surface-spacing);
26
+ }
27
+
28
+ .osdkHeaderContainer {
29
+ justify-content: space-between;
30
+ flex: 1;
31
+ min-width: 0;
32
+ align-self: stretch;
33
+ }
34
+
35
+ .osdkHeaderContentLeft {
36
+ min-width: 0;
37
+ flex-shrink: 1;
38
+ }
39
+
40
+ .osdkHeaderContentRight {
41
+ flex-shrink: 0;
42
+ }
43
+
44
+ .osdkHeaderPopoverTrigger {
45
+ flex-shrink: 0;
46
+ flex-grow: 0;
47
+ border: var(--bp-surface-borderWidth) solid
48
+ var(--bp-surface-borderColor-default);
49
+ border-radius: var(--bp-surface-borderRadius);
50
+ color: var(--bp-intent-default-foreground);
51
+ user-select: none;
52
+ &:hover {
53
+ background-color: var(--bp-intent-default-hover);
54
+ }
55
+
56
+ &[data-popup-open] {
57
+ background-color: var(--bp-intent-primary-rest);
58
+ }
59
+
60
+ &:focus-visible {
61
+ outline: var(--bp-surface-borderWidth) solid var(--bp-intent-primary-rest);
62
+ outline-offset: calc(-1 * var(--bp-surface-borderWidth));
63
+ }
64
+ }
65
+
66
+ .osdkHeaderIcon {
67
+ width: var(--bp-iconography-size-small);
68
+ height: var(--bp-iconography-size-small);
69
+ }
70
+
71
+ .osdkHeaderPopup {
72
+ box-sizing: border-box;
73
+ padding: var(--bp-surface-spacing);
74
+ border-radius: var(--bp-surface-borderRadius);
75
+ border: var(--bp-surface-borderWidth) solid
76
+ var(--bp-surface-borderColor-default);
77
+ background-color: var(--bp-palette-gray-100);
78
+ color: var(--bp-typography-colorRest-default);
79
+ box-shadow: var(--bp-surface-shadow-2);
80
+ font-size: var(--bp-typography-size-bodyMedium);
81
+ }
82
+
83
+ .osdkHeaderMenuItem {
84
+ justify-content: flex-start;
85
+ padding: var(--bp-surface-spacing);
86
+ cursor: pointer;
87
+ }
88
+
89
+ .osdkHeaderMenuItem:hover {
90
+ background-color: var(--bp-surface-colorHover-default);
91
+ border-radius: var(--bp-surface-borderRadius);
92
+ }
93
+
94
+ .osdkHeaderActiveMenuItem {
95
+ background-color: var(--bp-intent-primary-rest);
96
+ color: var(--bp-intent-primary-foreground);
97
+ }
98
+
99
+ .osdkHeaderActiveMenuItem:hover {
100
+ background-color: var(--bp-intent-primary-hover);
101
+ }
102
+
103
+ .osdkHeaderActiveMenuItem:active {
104
+ background-color: var(--bp-intent-primary-active);
105
+ }
@@ -16,6 +16,7 @@
16
16
 
17
17
  import React, { useCallback } from "react";
18
18
  import { TableCell } from "./TableCell.js";
19
+ import styles from "./TableRow.module.css";
19
20
  export function TableRow({
20
21
  row,
21
22
  virtualRow,
@@ -26,11 +27,11 @@ export function TableRow({
26
27
  onRowClick?.(row.original);
27
28
  }, [onRowClick, row.original]);
28
29
  return /*#__PURE__*/React.createElement("tr", {
30
+ "data-selected": row.getIsSelected(),
31
+ className: styles.osdkTableRow,
29
32
  style: {
30
- position: "absolute",
31
33
  height: `${virtualRow.size}px`,
32
- transform: `translateY(${virtualRow.start}px)`,
33
- display: "flex"
34
+ transform: `translateY(${virtualRow.start}px)`
34
35
  },
35
36
  onClick: handleClick
36
37
  }, row.getVisibleCells().map(cell => /*#__PURE__*/React.createElement(TableCell, {
@@ -1 +1 @@
1
- {"version":3,"file":"TableRow.js","names":["React","useCallback","TableCell","TableRow","row","virtualRow","onRowClick","renderCellContextMenu","handleClick","original","createElement","style","position","height","size","transform","start","display","onClick","getVisibleCells","map","cell","key","id"],"sources":["TableRow.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 { Cell, Row, RowData } from \"@tanstack/react-table\";\nimport type { VirtualItem } from \"@tanstack/react-virtual\";\nimport React, { useCallback } from \"react\";\nimport { TableCell } from \"./TableCell.js\";\n\ninterface TableRowProps<TData extends RowData> {\n row: Row<TData>;\n virtualRow: VirtualItem;\n onRowClick?: (row: TData) => void;\n renderCellContextMenu?: (\n row: TData,\n cell: Cell<TData, unknown>,\n ) => React.ReactNode;\n}\n\nexport function TableRow<TData extends RowData>({\n row,\n virtualRow,\n onRowClick,\n renderCellContextMenu,\n}: TableRowProps<TData>): React.ReactElement {\n const handleClick = useCallback(() => {\n onRowClick?.(row.original);\n }, [onRowClick, row.original]);\n\n return (\n <tr\n style={{\n position: \"absolute\",\n height: `${virtualRow.size}px`,\n transform: `translateY(${virtualRow.start}px)`,\n display: \"flex\",\n }}\n onClick={handleClick}\n >\n {row.getVisibleCells().map((cell) => (\n <TableCell\n key={cell.id}\n cell={cell}\n renderCellContextMenu={renderCellContextMenu}\n />\n ))}\n </tr>\n );\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAIA,OAAOA,KAAK,IAAIC,WAAW,QAAQ,OAAO;AAC1C,SAASC,SAAS,QAAQ,gBAAgB;AAY1C,OAAO,SAASC,QAAQA,CAAwB;EAC9CC,GAAG;EACHC,UAAU;EACVC,UAAU;EACVC;AACoB,CAAC,EAAsB;EAC3C,MAAMC,WAAW,GAAGP,WAAW,CAAC,MAAM;IACpCK,UAAU,GAAGF,GAAG,CAACK,QAAQ,CAAC;EAC5B,CAAC,EAAE,CAACH,UAAU,EAAEF,GAAG,CAACK,QAAQ,CAAC,CAAC;EAE9B,oBACET,KAAA,CAAAU,aAAA;IACEC,KAAK,EAAE;MACLC,QAAQ,EAAE,UAAU;MACpBC,MAAM,EAAE,GAAGR,UAAU,CAACS,IAAI,IAAI;MAC9BC,SAAS,EAAE,cAAcV,UAAU,CAACW,KAAK,KAAK;MAC9CC,OAAO,EAAE;IACX,CAAE;IACFC,OAAO,EAAEV;EAAY,GAEpBJ,GAAG,CAACe,eAAe,CAAC,CAAC,CAACC,GAAG,CAAEC,IAAI,iBAC9BrB,KAAA,CAAAU,aAAA,CAACR,SAAS;IACRoB,GAAG,EAAED,IAAI,CAACE,EAAG;IACbF,IAAI,EAAEA,IAAK;IACXd,qBAAqB,EAAEA;EAAsB,CAC9C,CACF,CACC,CAAC;AAET","ignoreList":[]}
1
+ {"version":3,"file":"TableRow.js","names":["React","useCallback","TableCell","styles","TableRow","row","virtualRow","onRowClick","renderCellContextMenu","handleClick","original","createElement","getIsSelected","className","osdkTableRow","style","height","size","transform","start","onClick","getVisibleCells","map","cell","key","id"],"sources":["TableRow.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 { Cell, Row, RowData } from \"@tanstack/react-table\";\nimport type { VirtualItem } from \"@tanstack/react-virtual\";\nimport React, { useCallback } from \"react\";\nimport { TableCell } from \"./TableCell.js\";\nimport styles from \"./TableRow.module.css\";\n\ninterface TableRowProps<TData extends RowData> {\n row: Row<TData>;\n virtualRow: VirtualItem;\n onRowClick?: (row: TData) => void;\n renderCellContextMenu?: (\n row: TData,\n cell: Cell<TData, unknown>,\n ) => React.ReactNode;\n}\n\nexport function TableRow<TData extends RowData>({\n row,\n virtualRow,\n onRowClick,\n renderCellContextMenu,\n}: TableRowProps<TData>): React.ReactElement {\n const handleClick = useCallback(() => {\n onRowClick?.(row.original);\n }, [onRowClick, row.original]);\n\n return (\n <tr\n data-selected={row.getIsSelected()}\n className={styles.osdkTableRow}\n style={{\n height: `${virtualRow.size}px`,\n transform: `translateY(${virtualRow.start}px)`,\n }}\n onClick={handleClick}\n >\n {row.getVisibleCells().map((cell) => (\n <TableCell\n key={cell.id}\n cell={cell}\n renderCellContextMenu={renderCellContextMenu}\n />\n ))}\n </tr>\n );\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAIA,OAAOA,KAAK,IAAIC,WAAW,QAAQ,OAAO;AAC1C,SAASC,SAAS,QAAQ,gBAAgB;AAC1C,OAAOC,MAAM,MAAM,uBAAuB;AAY1C,OAAO,SAASC,QAAQA,CAAwB;EAC9CC,GAAG;EACHC,UAAU;EACVC,UAAU;EACVC;AACoB,CAAC,EAAsB;EAC3C,MAAMC,WAAW,GAAGR,WAAW,CAAC,MAAM;IACpCM,UAAU,GAAGF,GAAG,CAACK,QAAQ,CAAC;EAC5B,CAAC,EAAE,CAACH,UAAU,EAAEF,GAAG,CAACK,QAAQ,CAAC,CAAC;EAE9B,oBACEV,KAAA,CAAAW,aAAA;IACE,iBAAeN,GAAG,CAACO,aAAa,CAAC,CAAE;IACnCC,SAAS,EAAEV,MAAM,CAACW,YAAa;IAC/BC,KAAK,EAAE;MACLC,MAAM,EAAE,GAAGV,UAAU,CAACW,IAAI,IAAI;MAC9BC,SAAS,EAAE,cAAcZ,UAAU,CAACa,KAAK;IAC3C,CAAE;IACFC,OAAO,EAAEX;EAAY,GAEpBJ,GAAG,CAACgB,eAAe,CAAC,CAAC,CAACC,GAAG,CAAEC,IAAI,iBAC9BvB,KAAA,CAAAW,aAAA,CAACT,SAAS;IACRsB,GAAG,EAAED,IAAI,CAACE,EAAG;IACbF,IAAI,EAAEA,IAAK;IACXf,qBAAqB,EAAEA;EAAsB,CAC9C,CACF,CACC,CAAC;AAET","ignoreList":[]}
@@ -0,0 +1,60 @@
1
+ /*
2
+ * Copyright 2025 Palantir Technologies, Inc. All rights reserved.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ .osdkTableRow {
18
+ position: absolute;
19
+ display: flex;
20
+ background-color: var(--osdk-table-row-bg-default);
21
+ border-top: var(--osdk-table-row-divider);
22
+ border-bottom: var(--osdk-table-border-width) solid transparent;
23
+
24
+ &:last-child {
25
+ border-bottom: var(--osdk-table-border);
26
+ }
27
+
28
+ /* Zebra rows */
29
+ &:nth-child(even) {
30
+ background-color: var(
31
+ --osdk-table-row-bg-alternate,
32
+ var(--osdk-table-row-bg-default)
33
+ );
34
+ }
35
+
36
+ &:hover {
37
+ z-index: 1;
38
+ background-color: var(
39
+ --osdk-table-row-bg-hover,
40
+ var(--bp-surface-colorHover-default)
41
+ );
42
+ border-top-color: var(--osdk-table-row-border-color-hover);
43
+ border-bottom-color: var(--osdk-table-row-border-color-hover);
44
+ }
45
+
46
+ &[data-selected="true"] {
47
+ z-index: 2;
48
+ background-color: var(--osdk-table-row-bg-active);
49
+ border-top-color: var(--osdk-table-row-border-color-active);
50
+ border-bottom-color: var(--osdk-table-row-border-color-active);
51
+ }
52
+
53
+ &[data-selected="true"] + &[data-selected="true"] {
54
+ border-top-color: transparent;
55
+ }
56
+
57
+ &[data-selected="true"]:has(+ &[data-selected="true"]) {
58
+ border-bottom-color: transparent;
59
+ }
60
+ }
@@ -0,0 +1,266 @@
1
+ /*
2
+ * Copyright 2025 Palantir Technologies, Inc. All rights reserved.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ import { act, renderHook } from "@testing-library/react";
18
+ import { describe, expect, it, vi } from "vitest";
19
+ import { SELECTION_COLUMN_ID } from "../../utils/constants.js";
20
+ import { useColumnPinning } from "../useColumnPinning.js";
21
+ const TestObjectType = {
22
+ type: "object",
23
+ apiName: "TestObject"
24
+ };
25
+ function createColumnDef(id, pinned) {
26
+ return {
27
+ locator: {
28
+ type: "property",
29
+ id: id
30
+ },
31
+ pinned
32
+ };
33
+ }
34
+ describe("useColumnPinning", () => {
35
+ describe("initialization", () => {
36
+ it("initializes with empty pinning state when no columnDefinitions provided", () => {
37
+ const {
38
+ result
39
+ } = renderHook(() => useColumnPinning({
40
+ columnDefinitions: undefined
41
+ }));
42
+ expect(result.current.columnPinning).toEqual({
43
+ left: [],
44
+ right: []
45
+ });
46
+ });
47
+ it("initializes with empty pinning state when columnDefinitions has no pinned columns", () => {
48
+ const columnDefinitions = [createColumnDef("name")];
49
+ const {
50
+ result
51
+ } = renderHook(() => useColumnPinning({
52
+ columnDefinitions
53
+ }));
54
+ expect(result.current.columnPinning).toEqual({
55
+ left: [],
56
+ right: []
57
+ });
58
+ });
59
+ it("initializes with default pinning from columnDefinitions", () => {
60
+ const columnDefinitions = [createColumnDef("firstName", "left"), createColumnDef("lastName", "left"), createColumnDef("age", "none"), createColumnDef("email", "right")];
61
+ const {
62
+ result
63
+ } = renderHook(() => useColumnPinning({
64
+ columnDefinitions
65
+ }));
66
+ expect(result.current.columnPinning).toEqual({
67
+ left: ["firstName", "lastName"],
68
+ right: ["email"]
69
+ });
70
+ });
71
+ it("adds selection column to left pinning when hasSelectionColumn is true", () => {
72
+ const columnDefinitions = [createColumnDef("name", "left")];
73
+ const {
74
+ result
75
+ } = renderHook(() => useColumnPinning({
76
+ columnDefinitions,
77
+ hasSelectionColumn: true
78
+ }));
79
+ expect(result.current.columnPinning).toEqual({
80
+ left: [SELECTION_COLUMN_ID, "name"],
81
+ right: []
82
+ });
83
+ });
84
+ it("does not add selection column when hasSelectionColumn is false", () => {
85
+ const columnDefinitions = [createColumnDef("name", "left")];
86
+ const {
87
+ result
88
+ } = renderHook(() => useColumnPinning({
89
+ columnDefinitions,
90
+ hasSelectionColumn: false
91
+ }));
92
+ expect(result.current.columnPinning).toEqual({
93
+ left: ["name"],
94
+ right: []
95
+ });
96
+ });
97
+ });
98
+ describe("onColumnPinningChange", () => {
99
+ it("updates column pinning state when called", () => {
100
+ const {
101
+ result
102
+ } = renderHook(() => useColumnPinning({
103
+ columnDefinitions: undefined
104
+ }));
105
+ expect(result.current.columnPinning).toEqual({
106
+ left: [],
107
+ right: []
108
+ });
109
+ act(() => {
110
+ result.current.onColumnPinningChange({
111
+ left: ["name"],
112
+ right: ["email"]
113
+ });
114
+ });
115
+ expect(result.current.columnPinning).toEqual({
116
+ left: ["name"],
117
+ right: ["email"]
118
+ });
119
+ });
120
+ it("calls onColumnsPinnedChanged with converted format when pinning changes", () => {
121
+ const onColumnsPinnedChanged = vi.fn();
122
+ const {
123
+ result
124
+ } = renderHook(() => useColumnPinning({
125
+ columnDefinitions: undefined,
126
+ onColumnsPinnedChanged
127
+ }));
128
+ act(() => {
129
+ result.current.onColumnPinningChange({
130
+ left: ["name", "age"],
131
+ right: ["email"]
132
+ });
133
+ });
134
+ expect(onColumnsPinnedChanged).toHaveBeenCalledWith([{
135
+ columnId: "name",
136
+ pinned: "left"
137
+ }, {
138
+ columnId: "age",
139
+ pinned: "left"
140
+ }, {
141
+ columnId: "email",
142
+ pinned: "right"
143
+ }]);
144
+ });
145
+ it("filters out selection column from onColumnsPinnedChanged callback", () => {
146
+ const onColumnsPinnedChanged = vi.fn();
147
+ const {
148
+ result
149
+ } = renderHook(() => useColumnPinning({
150
+ columnDefinitions: undefined,
151
+ onColumnsPinnedChanged
152
+ }));
153
+ act(() => {
154
+ result.current.onColumnPinningChange({
155
+ left: [SELECTION_COLUMN_ID, "name"],
156
+ right: ["email"]
157
+ });
158
+ });
159
+ expect(onColumnsPinnedChanged).toHaveBeenCalledWith([{
160
+ columnId: "name",
161
+ pinned: "left"
162
+ }, {
163
+ columnId: "email",
164
+ pinned: "right"
165
+ }]);
166
+ });
167
+ it("handles updater function in onColumnPinningChange", () => {
168
+ const onColumnsPinnedChanged = vi.fn();
169
+ const {
170
+ result
171
+ } = renderHook(() => useColumnPinning({
172
+ columnDefinitions: undefined,
173
+ onColumnsPinnedChanged
174
+ }));
175
+
176
+ // Set initial pinning
177
+ act(() => {
178
+ result.current.onColumnPinningChange({
179
+ left: ["name"],
180
+ right: []
181
+ });
182
+ });
183
+
184
+ // Pin second column
185
+ act(() => {
186
+ result.current.onColumnPinningChange(prev => ({
187
+ ...prev,
188
+ right: ["email"]
189
+ }));
190
+ });
191
+ expect(result.current.columnPinning).toEqual({
192
+ left: ["name"],
193
+ right: ["email"]
194
+ });
195
+ expect(onColumnsPinnedChanged).toHaveBeenLastCalledWith([{
196
+ columnId: "name",
197
+ pinned: "left"
198
+ }, {
199
+ columnId: "email",
200
+ pinned: "right"
201
+ }]);
202
+
203
+ // Unpin first column
204
+ act(() => {
205
+ result.current.onColumnPinningChange(prev => ({
206
+ ...prev,
207
+ left: []
208
+ }));
209
+ });
210
+ expect(result.current.columnPinning).toEqual({
211
+ left: [],
212
+ right: ["email"]
213
+ });
214
+ expect(onColumnsPinnedChanged).toHaveBeenLastCalledWith([{
215
+ columnId: "email",
216
+ pinned: "right"
217
+ }]);
218
+ });
219
+ });
220
+ describe("updates when props change", () => {
221
+ it("updates pinning state when columnDefinitions change", () => {
222
+ const {
223
+ result,
224
+ rerender
225
+ } = renderHook(({
226
+ columnDefinitions
227
+ }) => useColumnPinning({
228
+ columnDefinitions
229
+ }), {
230
+ initialProps: {
231
+ columnDefinitions: [{
232
+ locator: {
233
+ type: "property",
234
+ id: "name"
235
+ },
236
+ pinned: "left"
237
+ }]
238
+ }
239
+ });
240
+ expect(result.current.columnPinning).toEqual({
241
+ left: ["name"],
242
+ right: []
243
+ });
244
+ rerender({
245
+ columnDefinitions: [{
246
+ locator: {
247
+ type: "property",
248
+ id: "name"
249
+ },
250
+ pinned: "left"
251
+ }, {
252
+ locator: {
253
+ type: "property",
254
+ id: "age"
255
+ },
256
+ pinned: "right"
257
+ }]
258
+ });
259
+ expect(result.current.columnPinning).toEqual({
260
+ left: ["name"],
261
+ right: ["age"]
262
+ });
263
+ });
264
+ });
265
+ });
266
+ //# sourceMappingURL=useColumnPinning.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useColumnPinning.test.js","names":["act","renderHook","describe","expect","it","vi","SELECTION_COLUMN_ID","useColumnPinning","TestObjectType","type","apiName","createColumnDef","id","pinned","locator","result","columnDefinitions","undefined","current","columnPinning","toEqual","left","right","hasSelectionColumn","onColumnPinningChange","onColumnsPinnedChanged","fn","toHaveBeenCalledWith","columnId","prev","toHaveBeenLastCalledWith","rerender","initialProps"],"sources":["useColumnPinning.test.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 { ObjectTypeDefinition, PropertyKeys } from \"@osdk/api\";\nimport { act, renderHook } from \"@testing-library/react\";\nimport { describe, expect, it, vi } from \"vitest\";\nimport type {\n ColumnDefinition,\n ObjectTableProps,\n} from \"../../ObjectTableApi.js\";\nimport { SELECTION_COLUMN_ID } from \"../../utils/constants.js\";\nimport { useColumnPinning } from \"../useColumnPinning.js\";\n\nconst TestObjectType = {\n type: \"object\",\n apiName: \"TestObject\",\n} as const satisfies ObjectTypeDefinition;\n\ntype TestObject = typeof TestObjectType;\n\nfunction createColumnDef(\n id: string,\n pinned?: \"left\" | \"right\" | \"none\",\n): ColumnDefinition<TestObject> {\n return {\n locator: { type: \"property\", id: id as PropertyKeys<TestObject> },\n pinned,\n };\n}\n\ndescribe(\"useColumnPinning\", () => {\n describe(\"initialization\", () => {\n it(\"initializes with empty pinning state when no columnDefinitions provided\", () => {\n const { result } = renderHook(() =>\n useColumnPinning<TestObject>({\n columnDefinitions: undefined,\n })\n );\n\n expect(result.current.columnPinning).toEqual({\n left: [],\n right: [],\n });\n });\n\n it(\"initializes with empty pinning state when columnDefinitions has no pinned columns\", () => {\n const columnDefinitions = [\n createColumnDef(\"name\"),\n ];\n\n const { result } = renderHook(() =>\n useColumnPinning<TestObject>({\n columnDefinitions,\n })\n );\n\n expect(result.current.columnPinning).toEqual({\n left: [],\n right: [],\n });\n });\n\n it(\"initializes with default pinning from columnDefinitions\", () => {\n const columnDefinitions = [\n createColumnDef(\"firstName\", \"left\"),\n createColumnDef(\"lastName\", \"left\"),\n createColumnDef(\"age\", \"none\"),\n createColumnDef(\"email\", \"right\"),\n ];\n\n const { result } = renderHook(() =>\n useColumnPinning<TestObject>({\n columnDefinitions,\n })\n );\n\n expect(result.current.columnPinning).toEqual({\n left: [\"firstName\", \"lastName\"],\n right: [\"email\"],\n });\n });\n\n it(\"adds selection column to left pinning when hasSelectionColumn is true\", () => {\n const columnDefinitions = [\n createColumnDef(\"name\", \"left\"),\n ];\n\n const { result } = renderHook(() =>\n useColumnPinning<TestObject>({\n columnDefinitions,\n hasSelectionColumn: true,\n })\n );\n\n expect(result.current.columnPinning).toEqual({\n left: [SELECTION_COLUMN_ID, \"name\"],\n right: [],\n });\n });\n\n it(\"does not add selection column when hasSelectionColumn is false\", () => {\n const columnDefinitions = [\n createColumnDef(\"name\", \"left\"),\n ];\n\n const { result } = renderHook(() =>\n useColumnPinning<TestObject>({\n columnDefinitions,\n hasSelectionColumn: false,\n })\n );\n\n expect(result.current.columnPinning).toEqual({\n left: [\"name\"],\n right: [],\n });\n });\n });\n\n describe(\"onColumnPinningChange\", () => {\n it(\"updates column pinning state when called\", () => {\n const { result } = renderHook(() =>\n useColumnPinning<TestObject>({\n columnDefinitions: undefined,\n })\n );\n\n expect(result.current.columnPinning).toEqual({\n left: [],\n right: [],\n });\n\n act(() => {\n result.current.onColumnPinningChange({\n left: [\"name\"],\n right: [\"email\"],\n });\n });\n\n expect(result.current.columnPinning).toEqual({\n left: [\"name\"],\n right: [\"email\"],\n });\n });\n\n it(\"calls onColumnsPinnedChanged with converted format when pinning changes\", () => {\n const onColumnsPinnedChanged = vi.fn();\n const { result } = renderHook(() =>\n useColumnPinning<TestObject>({\n columnDefinitions: undefined,\n onColumnsPinnedChanged,\n })\n );\n\n act(() => {\n result.current.onColumnPinningChange({\n left: [\"name\", \"age\"],\n right: [\"email\"],\n });\n });\n\n expect(onColumnsPinnedChanged).toHaveBeenCalledWith([\n { columnId: \"name\", pinned: \"left\" },\n { columnId: \"age\", pinned: \"left\" },\n { columnId: \"email\", pinned: \"right\" },\n ]);\n });\n\n it(\"filters out selection column from onColumnsPinnedChanged callback\", () => {\n const onColumnsPinnedChanged = vi.fn();\n const { result } = renderHook(() =>\n useColumnPinning<TestObject>({\n columnDefinitions: undefined,\n onColumnsPinnedChanged,\n })\n );\n\n act(() => {\n result.current.onColumnPinningChange({\n left: [SELECTION_COLUMN_ID, \"name\"],\n right: [\"email\"],\n });\n });\n\n expect(onColumnsPinnedChanged).toHaveBeenCalledWith([\n { columnId: \"name\", pinned: \"left\" },\n { columnId: \"email\", pinned: \"right\" },\n ]);\n });\n\n it(\"handles updater function in onColumnPinningChange\", () => {\n const onColumnsPinnedChanged = vi.fn();\n const { result } = renderHook(() =>\n useColumnPinning<TestObject>({\n columnDefinitions: undefined,\n onColumnsPinnedChanged,\n })\n );\n\n // Set initial pinning\n act(() => {\n result.current.onColumnPinningChange({\n left: [\"name\"],\n right: [],\n });\n });\n\n // Pin second column\n act(() => {\n result.current.onColumnPinningChange((prev) => ({\n ...prev,\n right: [\"email\"],\n }));\n });\n\n expect(result.current.columnPinning).toEqual({\n left: [\"name\"],\n right: [\"email\"],\n });\n\n expect(onColumnsPinnedChanged).toHaveBeenLastCalledWith([\n { columnId: \"name\", pinned: \"left\" },\n { columnId: \"email\", pinned: \"right\" },\n ]);\n\n // Unpin first column\n act(() => {\n result.current.onColumnPinningChange((prev) => ({\n ...prev,\n left: [],\n }));\n });\n\n expect(result.current.columnPinning).toEqual({\n left: [],\n right: [\"email\"],\n });\n\n expect(onColumnsPinnedChanged).toHaveBeenLastCalledWith([\n { columnId: \"email\", pinned: \"right\" },\n ]);\n });\n });\n\n describe(\"updates when props change\", () => {\n it(\"updates pinning state when columnDefinitions change\", () => {\n const initialColumnDefinitions: ObjectTableProps<\n TestObject\n >[\"columnDefinitions\"] = [\n {\n locator: { type: \"property\", id: \"name\" as PropertyKeys<TestObject> },\n pinned: \"left\",\n },\n ];\n\n const { result, rerender } = renderHook(\n ({ columnDefinitions }) =>\n useColumnPinning<TestObject>({\n columnDefinitions,\n }),\n {\n initialProps: { columnDefinitions: initialColumnDefinitions },\n },\n );\n\n expect(result.current.columnPinning).toEqual({\n left: [\"name\"],\n right: [],\n });\n\n const newColumnDefinitions: ObjectTableProps<\n TestObject\n >[\"columnDefinitions\"] = [\n {\n locator: { type: \"property\", id: \"name\" as PropertyKeys<TestObject> },\n pinned: \"left\",\n },\n {\n locator: { type: \"property\", id: \"age\" as PropertyKeys<TestObject> },\n pinned: \"right\",\n },\n ];\n\n rerender({ columnDefinitions: newColumnDefinitions });\n\n expect(result.current.columnPinning).toEqual({\n left: [\"name\"],\n right: [\"age\"],\n });\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
@@ -16,19 +16,19 @@
16
16
 
17
17
  import { renderHook, waitFor } from "@testing-library/react";
18
18
  import { describe, expect, it } from "vitest";
19
- import { useDefaultTableStates } from "../useDefaultTableStates.js";
19
+ import { useColumnVisibility } from "../useColumnVisibility.js";
20
20
  const TestObjectType = {
21
21
  type: "object",
22
22
  apiName: "TestObject"
23
23
  };
24
- describe(useDefaultTableStates, () => {
24
+ describe(useColumnVisibility, () => {
25
25
  it("returns undefined columnVisibility when no columnDefinitions provided", () => {
26
26
  const {
27
27
  result
28
- } = renderHook(() => useDefaultTableStates({
28
+ } = renderHook(() => useColumnVisibility({
29
29
  columnDefinitions: undefined
30
30
  }));
31
- expect(result.current.columnVisibility).toBeUndefined();
31
+ expect(result.current).toBeUndefined();
32
32
  });
33
33
  it("returns empty columnVisibility when columnDefinitions have no isVisible properties", () => {
34
34
  const columnDefinitions = [{
@@ -44,10 +44,10 @@ describe(useDefaultTableStates, () => {
44
44
  }];
45
45
  const {
46
46
  result
47
- } = renderHook(() => useDefaultTableStates({
47
+ } = renderHook(() => useColumnVisibility({
48
48
  columnDefinitions
49
49
  }));
50
- expect(result.current.columnVisibility).toEqual({});
50
+ expect(result.current).toEqual({});
51
51
  });
52
52
  it("handles mixed column types with different visibility states", async () => {
53
53
  const columnDefinitions = [{
@@ -77,11 +77,11 @@ describe(useDefaultTableStates, () => {
77
77
  }];
78
78
  const {
79
79
  result
80
- } = renderHook(() => useDefaultTableStates({
80
+ } = renderHook(() => useColumnVisibility({
81
81
  columnDefinitions
82
82
  }));
83
83
  await waitFor(() => {
84
- expect(result.current.columnVisibility).toEqual({
84
+ expect(result.current).toEqual({
85
85
  name: true,
86
86
  myFunction: false,
87
87
  myRdp: true
@@ -94,7 +94,7 @@ describe(useDefaultTableStates, () => {
94
94
  rerender
95
95
  } = renderHook(({
96
96
  columnDefinitions
97
- }) => useDefaultTableStates({
97
+ }) => useColumnVisibility({
98
98
  columnDefinitions
99
99
  }), {
100
100
  initialProps: {
@@ -108,7 +108,7 @@ describe(useDefaultTableStates, () => {
108
108
  }
109
109
  });
110
110
  await waitFor(() => {
111
- expect(result.current.columnVisibility).toEqual({
111
+ expect(result.current).toEqual({
112
112
  name: true
113
113
  });
114
114
  });
@@ -128,7 +128,7 @@ describe(useDefaultTableStates, () => {
128
128
  }]
129
129
  });
130
130
  await waitFor(() => {
131
- expect(result.current.columnVisibility).toEqual({
131
+ expect(result.current).toEqual({
132
132
  name: false,
133
133
  email: true
134
134
  });
@@ -160,19 +160,19 @@ describe(useDefaultTableStates, () => {
160
160
  }];
161
161
  const {
162
162
  result
163
- } = renderHook(() => useDefaultTableStates({
163
+ } = renderHook(() => useColumnVisibility({
164
164
  columnDefinitions
165
165
  }));
166
166
  await waitFor(() => {
167
- expect(result.current.columnVisibility).toEqual({
167
+ expect(result.current).toEqual({
168
168
  name: true,
169
169
  age: false
170
170
  });
171
171
  });
172
172
 
173
173
  // Verify that columns without isVisible are not in the state
174
- expect(result.current.columnVisibility).not.toHaveProperty("email");
175
- expect(result.current.columnVisibility).not.toHaveProperty("id");
174
+ expect(result.current).not.toHaveProperty("email");
175
+ expect(result.current).not.toHaveProperty("id");
176
176
  });
177
177
  });
178
- //# sourceMappingURL=useDefaultTableStates.test.js.map
178
+ //# sourceMappingURL=useColumnVisibility.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useColumnVisibility.test.js","names":["renderHook","waitFor","describe","expect","it","useColumnVisibility","TestObjectType","type","apiName","result","columnDefinitions","undefined","current","toBeUndefined","locator","id","toEqual","isVisible","creator","name","myFunction","myRdp","rerender","initialProps","email","age","not","toHaveProperty"],"sources":["useColumnVisibility.test.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 DerivedProperty,\n ObjectTypeDefinition,\n PropertyKeys,\n QueryDefinition,\n SimplePropertyDef,\n} from \"@osdk/api\";\nimport { renderHook, waitFor } from \"@testing-library/react\";\nimport { describe, expect, it } from \"vitest\";\nimport type { ColumnDefinition } from \"../../ObjectTableApi.js\";\nimport { useColumnVisibility } from \"../useColumnVisibility.js\";\n\nconst TestObjectType = {\n type: \"object\",\n apiName: \"TestObject\",\n} as const satisfies ObjectTypeDefinition;\n\ntype TestObject = typeof TestObjectType;\ntype TestObjectKeys = PropertyKeys<TestObject>;\n\ndescribe(useColumnVisibility, () => {\n it(\"returns undefined columnVisibility when no columnDefinitions provided\", () => {\n const { result } = renderHook(() =>\n useColumnVisibility({\n columnDefinitions: undefined,\n })\n );\n\n expect(result.current).toBeUndefined();\n });\n\n it(\"returns empty columnVisibility when columnDefinitions have no isVisible properties\", () => {\n const columnDefinitions: Array<ColumnDefinition<TestObject, {}, {}>> = [\n {\n locator: { type: \"property\", id: \"name\" as TestObjectKeys },\n },\n {\n locator: { type: \"property\", id: \"email\" as TestObjectKeys },\n },\n ];\n\n const { result } = renderHook(() =>\n useColumnVisibility({\n columnDefinitions,\n })\n );\n\n expect(result.current).toEqual({});\n });\n\n it(\"handles mixed column types with different visibility states\", async () => {\n const mockRdpCreator = (() => ({})) as unknown as DerivedProperty.Creator<\n TestObject,\n SimplePropertyDef\n >;\n\n const columnDefinitions: Array<\n ColumnDefinition<\n TestObject,\n { myRdp: SimplePropertyDef },\n { myFunction: QueryDefinition<{}> }\n >\n > = [\n {\n locator: { type: \"property\", id: \"name\" as TestObjectKeys },\n isVisible: true,\n },\n {\n locator: { type: \"function\", id: \"myFunction\" },\n isVisible: false,\n },\n {\n locator: { type: \"rdp\", id: \"myRdp\", creator: mockRdpCreator },\n isVisible: true,\n },\n {\n locator: { type: \"property\", id: \"email\" as TestObjectKeys },\n },\n ];\n\n const { result } = renderHook(() =>\n useColumnVisibility({\n columnDefinitions,\n })\n );\n\n await waitFor(() => {\n expect(result.current).toEqual({\n name: true,\n myFunction: false,\n myRdp: true,\n });\n });\n });\n\n it(\"updates columnVisibility when columnDefinitions change\", async () => {\n const initialColumnDefinitions: Array<\n ColumnDefinition<TestObject, {}, {}>\n > = [\n {\n locator: { type: \"property\", id: \"name\" as TestObjectKeys },\n isVisible: true,\n },\n ];\n\n const { result, rerender } = renderHook(\n ({ columnDefinitions }) =>\n useColumnVisibility({\n columnDefinitions,\n }),\n {\n initialProps: { columnDefinitions: initialColumnDefinitions },\n },\n );\n\n await waitFor(() => {\n expect(result.current).toEqual({\n name: true,\n });\n });\n\n const updatedColumnDefinitions: Array<\n ColumnDefinition<TestObject, {}, {}>\n > = [\n {\n locator: { type: \"property\", id: \"name\" as TestObjectKeys },\n isVisible: false,\n },\n {\n locator: { type: \"property\", id: \"email\" as TestObjectKeys },\n isVisible: true,\n },\n ];\n\n rerender({ columnDefinitions: updatedColumnDefinitions });\n\n await waitFor(() => {\n expect(result.current).toEqual({\n name: false,\n email: true,\n });\n });\n });\n\n it(\"only includes columns with explicit isVisible in the visibility state\", async () => {\n const columnDefinitions: Array<ColumnDefinition<TestObject, {}, {}>> = [\n {\n locator: { type: \"property\", id: \"name\" as TestObjectKeys },\n isVisible: true,\n },\n {\n locator: { type: \"property\", id: \"email\" as TestObjectKeys },\n },\n {\n locator: { type: \"property\", id: \"age\" as TestObjectKeys },\n isVisible: false,\n },\n {\n locator: { type: \"property\", id: \"id\" as TestObjectKeys },\n },\n ];\n\n const { result } = renderHook(() =>\n useColumnVisibility({\n columnDefinitions,\n })\n );\n\n await waitFor(() => {\n expect(result.current).toEqual({\n name: true,\n age: false,\n });\n });\n\n // Verify that columns without isVisible are not in the state\n expect(result.current).not.toHaveProperty(\"email\");\n expect(result.current).not.toHaveProperty(\"id\");\n });\n});\n"],"mappings":"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","ignoreList":[]}
@@ -16,7 +16,8 @@
16
16
 
17
17
  import { renderHook } from "@testing-library/react";
18
18
  import { describe, expect, it, vi } from "vitest";
19
- import { SELECTION_COLUMN_ID, useSelectionColumn } from "../useSelectionColumn.js";
19
+ import { SELECTION_COLUMN_ID } from "../../utils/constants.js";
20
+ import { useSelectionColumn } from "../useSelectionColumn.js";
20
21
  const TestObjectType = {
21
22
  type: "object",
22
23
  apiName: "TestObject"