@veeqo/ui 9.9.0 → 9.9.2

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 (101) hide show
  1. package/dist/components/DataGrid/DataGrid.cjs +60 -6
  2. package/dist/components/DataGrid/DataGrid.cjs.map +1 -1
  3. package/dist/components/DataGrid/DataGrid.d.ts +2 -2
  4. package/dist/components/DataGrid/DataGrid.js +60 -6
  5. package/dist/components/DataGrid/DataGrid.js.map +1 -1
  6. package/dist/components/DataGrid/DataGrid.module.css.cjs +13 -0
  7. package/dist/components/DataGrid/DataGrid.module.css.cjs.map +1 -0
  8. package/dist/components/DataGrid/DataGrid.module.css.js +10 -0
  9. package/dist/components/DataGrid/DataGrid.module.css.js.map +1 -0
  10. package/dist/components/DataGrid/columns/SelectionColumnDefinition.cjs +36 -0
  11. package/dist/components/DataGrid/columns/SelectionColumnDefinition.cjs.map +1 -0
  12. package/dist/components/DataGrid/columns/SelectionColumnDefinition.d.ts +2 -0
  13. package/dist/components/DataGrid/columns/SelectionColumnDefinition.js +30 -0
  14. package/dist/components/DataGrid/columns/SelectionColumnDefinition.js.map +1 -0
  15. package/dist/components/DataGrid/columns/index.d.ts +1 -0
  16. package/dist/components/DataGrid/components/Body/BodyCell/BodyCell.cjs +4 -2
  17. package/dist/components/DataGrid/components/Body/BodyCell/BodyCell.cjs.map +1 -1
  18. package/dist/components/DataGrid/components/Body/BodyCell/BodyCell.js +4 -2
  19. package/dist/components/DataGrid/components/Body/BodyCell/BodyCell.js.map +1 -1
  20. package/dist/components/DataGrid/components/Body/BodyCell/BodyCell.module.css.cjs +3 -3
  21. package/dist/components/DataGrid/components/Body/BodyCell/BodyCell.module.css.cjs.map +1 -1
  22. package/dist/components/DataGrid/components/Body/BodyCell/BodyCell.module.css.js +3 -3
  23. package/dist/components/DataGrid/components/Body/BodyCell/BodyCell.module.css.js.map +1 -1
  24. package/dist/components/DataGrid/components/CellContent/CellContent.module.css.cjs +3 -3
  25. package/dist/components/DataGrid/components/CellContent/CellContent.module.css.cjs.map +1 -1
  26. package/dist/components/DataGrid/components/CellContent/CellContent.module.css.js +3 -3
  27. package/dist/components/DataGrid/components/CellContent/CellContent.module.css.js.map +1 -1
  28. package/dist/components/DataGrid/components/Footer/FooterCell/FooterCell.cjs +10 -2
  29. package/dist/components/DataGrid/components/Footer/FooterCell/FooterCell.cjs.map +1 -1
  30. package/dist/components/DataGrid/components/Footer/FooterCell/FooterCell.js +10 -2
  31. package/dist/components/DataGrid/components/Footer/FooterCell/FooterCell.js.map +1 -1
  32. package/dist/components/DataGrid/components/Footer/FooterCell/FooterCell.module.css.cjs +3 -3
  33. package/dist/components/DataGrid/components/Footer/FooterCell/FooterCell.module.css.cjs.map +1 -1
  34. package/dist/components/DataGrid/components/Footer/FooterCell/FooterCell.module.css.js +3 -3
  35. package/dist/components/DataGrid/components/Footer/FooterCell/FooterCell.module.css.js.map +1 -1
  36. package/dist/components/DataGrid/components/GridContainer/GridContainer.cjs +10 -5
  37. package/dist/components/DataGrid/components/GridContainer/GridContainer.cjs.map +1 -1
  38. package/dist/components/DataGrid/components/GridContainer/GridContainer.js +10 -5
  39. package/dist/components/DataGrid/components/GridContainer/GridContainer.js.map +1 -1
  40. package/dist/components/DataGrid/components/Header/HeaderCell/HeaderCell.cjs +29 -5
  41. package/dist/components/DataGrid/components/Header/HeaderCell/HeaderCell.cjs.map +1 -1
  42. package/dist/components/DataGrid/components/Header/HeaderCell/HeaderCell.js +30 -6
  43. package/dist/components/DataGrid/components/Header/HeaderCell/HeaderCell.js.map +1 -1
  44. package/dist/components/DataGrid/components/Header/HeaderCell/HeaderCell.module.css.cjs +9 -5
  45. package/dist/components/DataGrid/components/Header/HeaderCell/HeaderCell.module.css.cjs.map +1 -1
  46. package/dist/components/DataGrid/components/Header/HeaderCell/HeaderCell.module.css.js +8 -6
  47. package/dist/components/DataGrid/components/Header/HeaderCell/HeaderCell.module.css.js.map +1 -1
  48. package/dist/components/DataGrid/components/Header/HeaderCell/SortIcon/SortIcon.cjs +29 -0
  49. package/dist/components/DataGrid/components/Header/HeaderCell/SortIcon/SortIcon.cjs.map +1 -0
  50. package/dist/components/DataGrid/components/Header/HeaderCell/SortIcon/SortIcon.d.ts +10 -0
  51. package/dist/components/DataGrid/components/Header/HeaderCell/SortIcon/SortIcon.js +23 -0
  52. package/dist/components/DataGrid/components/Header/HeaderCell/SortIcon/SortIcon.js.map +1 -0
  53. package/dist/components/DataGrid/components/Header/HeaderCell/SortIcon/index.d.ts +1 -0
  54. package/dist/components/DataGrid/constants.cjs +2 -0
  55. package/dist/components/DataGrid/constants.cjs.map +1 -1
  56. package/dist/components/DataGrid/constants.d.ts +1 -0
  57. package/dist/components/DataGrid/constants.js +2 -1
  58. package/dist/components/DataGrid/constants.js.map +1 -1
  59. package/dist/components/DataGrid/hooks/index.d.ts +3 -0
  60. package/dist/components/DataGrid/hooks/usePinnedColumnLayout.cjs +39 -0
  61. package/dist/components/DataGrid/hooks/usePinnedColumnLayout.cjs.map +1 -0
  62. package/dist/components/DataGrid/hooks/usePinnedColumnLayout.d.ts +15 -0
  63. package/dist/components/DataGrid/hooks/usePinnedColumnLayout.js +37 -0
  64. package/dist/components/DataGrid/hooks/usePinnedColumnLayout.js.map +1 -0
  65. package/dist/components/DataGrid/hooks/usePinnedColumnStyles.cjs +22 -0
  66. package/dist/components/DataGrid/hooks/usePinnedColumnStyles.cjs.map +1 -0
  67. package/dist/components/DataGrid/hooks/usePinnedColumnStyles.d.ts +13 -0
  68. package/dist/components/DataGrid/hooks/usePinnedColumnStyles.js +20 -0
  69. package/dist/components/DataGrid/hooks/usePinnedColumnStyles.js.map +1 -0
  70. package/dist/components/DataGrid/hooks/useSelectionState.cjs +51 -0
  71. package/dist/components/DataGrid/hooks/useSelectionState.cjs.map +1 -0
  72. package/dist/components/DataGrid/hooks/useSelectionState.d.ts +18 -0
  73. package/dist/components/DataGrid/hooks/useSelectionState.js +49 -0
  74. package/dist/components/DataGrid/hooks/useSelectionState.js.map +1 -0
  75. package/dist/components/DataGrid/hooks/useSortingState.cjs +40 -0
  76. package/dist/components/DataGrid/hooks/useSortingState.cjs.map +1 -0
  77. package/dist/components/DataGrid/hooks/useSortingState.d.ts +23 -0
  78. package/dist/components/DataGrid/hooks/useSortingState.js +38 -0
  79. package/dist/components/DataGrid/hooks/useSortingState.js.map +1 -0
  80. package/dist/components/DataGrid/types/ColumnDefinition.d.ts +4 -2
  81. package/dist/components/DataGrid/types/DataGridProps.d.ts +33 -1
  82. package/dist/components/DataGrid/types/PinnedColumnState.d.ts +4 -0
  83. package/dist/components/DataGrid/types/SortState.d.ts +5 -0
  84. package/dist/components/DataGrid/types/enums.d.ts +2 -0
  85. package/dist/components/DataGrid/types/index.d.ts +3 -1
  86. package/dist/components/DataGrid/utils/ColumnMapper.cjs +1 -0
  87. package/dist/components/DataGrid/utils/ColumnMapper.cjs.map +1 -1
  88. package/dist/components/DataGrid/utils/ColumnMapper.js +1 -0
  89. package/dist/components/DataGrid/utils/ColumnMapper.js.map +1 -1
  90. package/dist/components/DataGrid/utils/index.d.ts +1 -0
  91. package/dist/components/DataGrid/utils/pinnedColumnUtils.cjs +33 -0
  92. package/dist/components/DataGrid/utils/pinnedColumnUtils.cjs.map +1 -0
  93. package/dist/components/DataGrid/utils/pinnedColumnUtils.d.ts +4 -0
  94. package/dist/components/DataGrid/utils/pinnedColumnUtils.js +30 -0
  95. package/dist/components/DataGrid/utils/pinnedColumnUtils.js.map +1 -0
  96. package/dist/components/Radio/Radio.cjs +2 -2
  97. package/dist/components/Radio/Radio.cjs.map +1 -1
  98. package/dist/components/Radio/Radio.d.ts +2 -2
  99. package/dist/components/Radio/Radio.js +2 -2
  100. package/dist/components/Radio/Radio.js.map +1 -1
  101. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"HeaderCell.module.css.cjs","sources":["../../../../../../src/components/DataGrid/components/Header/HeaderCell/HeaderCell.module.css"],"sourcesContent":[".headerCell {\n composes: baseCell from '../../../DataGrid.module.css';\n\n background-color: white;\n border-bottom: var(--sizes-line) solid var(--colors-neutral-grey-base);\n}\n\n.headerContent {\n display: flex;\n height: var(--sizes-6);\n align-items: center;\n gap: var(--sizes-small);\n white-space: nowrap;\n\n padding: var(--density);\n\n color: var(--text-heading-table-color);\n font-family: var(--text-heading-table-font-family);\n font-size: var(--text-heading-table-font-size);\n font-weight: var(--text-heading-table-font-weight);\n line-height: var(--text-heading-table-line-height);\n}\n\n.headerOverflow {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n"],"names":[],"mappings":";;AACA,MAAM,WAAW,GAAG,CAAC;AACrB,6gDAA6gD,CAAC;AAC9gD,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC;AAC7C,KAAK,CAAC,SAAS,GAAG,WAAW;AAC7B,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AAC3B,MAAC,UAAU,GAAG;AACd,MAAC,aAAa,GAAG;AACjB,MAAC,cAAc,GAAG;;;;;;"}
1
+ {"version":3,"file":"HeaderCell.module.css.cjs","sources":["../../../../../../src/components/DataGrid/components/Header/HeaderCell/HeaderCell.module.css"],"sourcesContent":[".headerCell {\n composes: baseCell from '../../../DataGrid.module.css';\n\n background-color: white;\n border-bottom: var(--sizes-line) solid var(--colors-neutral-grey-base);\n}\n\n.headerContent {\n display: flex;\n height: var(--sizes-6);\n align-items: center;\n gap: var(--sizes-sm);\n white-space: nowrap;\n\n padding: var(--density);\n\n color: var(--text-heading-table-color);\n font-family: var(--text-heading-table-font-family);\n font-size: var(--text-heading-table-font-size);\n font-weight: var(--text-heading-table-font-weight);\n line-height: var(--text-heading-table-line-height);\n}\n\n.headerOverflow {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.clickableHeaderContent {\n composes: headerContent;\n\n appearance: none;\n background-color: transparent;\n cursor: pointer;\n\n border: var(--sizes-none);\n border-radius: var(--sizes-sm);\n width: 100%;\n\n &:focus-visible {\n outline: var(--sizes-none);\n box-shadow: var(--sizes-none) var(--sizes-none) var(--sizes-none) 2px var(--colors-secondary-blue-light);\n }\n\n &:hover {\n .sortIcon {\n background-color: var(--colors-neutral-grey-light);\n color: var(--colors-neutral-ink-base);\n }\n }\n}\n\n.sortIcon {\n width: var(--sizes-4);\n height: var(--sizes-4);\n\n display: flex;\n align-items: center;\n justify-content: center;\n\n background-color: white;\n color: var(--colors-neutral-ink-lightest);\n}"],"names":[],"mappings":";;AACA,MAAM,WAAW,GAAG,CAAC;AACrB,q+FAAq+F,CAAC;AACt+F,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC;AAC7C,KAAK,CAAC,SAAS,GAAG,WAAW;AAC7B,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AAC3B,MAAC,UAAU,GAAG;AACd,MAAC,aAAa,GAAG;AACjB,MAAC,cAAc,GAAG;AAClB,MAAC,sBAAsB,GAAG;AAC1B,MAAC,QAAQ,GAAG;;;;;;;;"}
@@ -1,11 +1,13 @@
1
- const cssContents = `._baseCell_1w2bt_1{box-sizing:border-box;position:relative;&:focus,&:focus-visible{box-shadow:inset var(--sizes-none) var(--sizes-none) var(--sizes-none) var(--sizes-line) var(--colors-secondary-blue-base);outline:var(--sizes-none)}}._headerCell_1khpx_1{background-color:#fff;border-bottom:var(--sizes-line) solid var(--colors-neutral-grey-base)}._headerContent_1khpx_8{align-items:center;color:var(--text-heading-table-color);display:flex;font-family:var(--text-heading-table-font-family);font-size:var(--text-heading-table-font-size);font-weight:var(--text-heading-table-font-weight);gap:var(--sizes-small);height:var(--sizes-6);line-height:var(--text-heading-table-line-height);padding:var(--density);white-space:nowrap}._headerOverflow_1khpx_24{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
2
- /*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIjxubyBzb3VyY2U+IiwiSGVhZGVyQ2VsbC5tb2R1bGUuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG1CQUFBLHNCQUFBLGtCQUFBLHdCQUFBLDJIQUFBLDBCQUFBLENBQUEsQUNBQSxxQkFHRSxxQkFBdUIsQ0FDdkIscUVBQ0YsQ0FFQSx3QkFHRSxrQkFBbUIsQ0FNbkIscUNBQXNDLENBUnRDLFlBQWEsQ0FTYixpREFBa0QsQ0FDbEQsNkNBQThDLENBQzlDLGlEQUFrRCxDQVJsRCxzQkFBdUIsQ0FGdkIscUJBQXNCLENBV3RCLGlEQUFrRCxDQU5sRCxzQkFBdUIsQ0FGdkIsa0JBU0YsQ0FFQSwwQkFDRSxlQUFnQixDQUNoQixzQkFBdUIsQ0FDdkIsa0JBQ0YiLCJmaWxlIjoiSGVhZGVyQ2VsbC5tb2R1bGUuY3NzIiwic291cmNlc0NvbnRlbnQiOltudWxsLCIuaGVhZGVyQ2VsbCB7XG4gIGNvbXBvc2VzOiBiYXNlQ2VsbCBmcm9tICcuLi8uLi8uLi9EYXRhR3JpZC5tb2R1bGUuY3NzJztcblxuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgYm9yZGVyLWJvdHRvbTogdmFyKC0tc2l6ZXMtbGluZSkgc29saWQgdmFyKC0tY29sb3JzLW5ldXRyYWwtZ3JleS1iYXNlKTtcbn1cblxuLmhlYWRlckNvbnRlbnQge1xuICBkaXNwbGF5OiBmbGV4O1xuICBoZWlnaHQ6IHZhcigtLXNpemVzLTYpO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IHZhcigtLXNpemVzLXNtYWxsKTtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcblxuICBwYWRkaW5nOiB2YXIoLS1kZW5zaXR5KTtcblxuICBjb2xvcjogdmFyKC0tdGV4dC1oZWFkaW5nLXRhYmxlLWNvbG9yKTtcbiAgZm9udC1mYW1pbHk6IHZhcigtLXRleHQtaGVhZGluZy10YWJsZS1mb250LWZhbWlseSk7XG4gIGZvbnQtc2l6ZTogdmFyKC0tdGV4dC1oZWFkaW5nLXRhYmxlLWZvbnQtc2l6ZSk7XG4gIGZvbnQtd2VpZ2h0OiB2YXIoLS10ZXh0LWhlYWRpbmctdGFibGUtZm9udC13ZWlnaHQpO1xuICBsaW5lLWhlaWdodDogdmFyKC0tdGV4dC1oZWFkaW5nLXRhYmxlLWxpbmUtaGVpZ2h0KTtcbn1cblxuLmhlYWRlck92ZXJmbG93IHtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG4iXX0= */`;
1
+ const cssContents = `._baseCell_13swz_1{box-sizing:border-box;position:relative;&:focus,&:focus-visible{box-shadow:inset var(--sizes-none) var(--sizes-none) var(--sizes-none) var(--sizes-line) var(--colors-secondary-blue-base);outline:var(--sizes-none)}}._pinnedColumnBase_13swz_12{&:after{bottom:-1px;box-sizing:border-box;content:"";pointer-events:none;position:absolute;top:var(--sizes-none);width:30px}}._pinnedColumnLeft_13swz_27{&:after{box-shadow:inset 10px 0 10px -8px rgba(0,0,0,.25);right:var(--sizes-none);transform:translate(100%)}}._pinnedColumnRight_13swz_39{&:after{box-shadow:inset -10px 0 10px -8px rgba(0,0,0,.25);left:var(--sizes-none);transform:translate(-100%)}}._headerCell_42pod_1{background-color:#fff;border-bottom:var(--sizes-line) solid var(--colors-neutral-grey-base)}._headerContent_42pod_8{align-items:center;color:var(--text-heading-table-color);display:flex;font-family:var(--text-heading-table-font-family);font-size:var(--text-heading-table-font-size);font-weight:var(--text-heading-table-font-weight);gap:var(--sizes-sm);height:var(--sizes-6);line-height:var(--text-heading-table-line-height);padding:var(--density);white-space:nowrap}._headerOverflow_42pod_24{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._clickableHeaderContent_42pod_30{appearance:none;background-color:transparent;border:var(--sizes-none);border-radius:var(--sizes-sm);cursor:pointer;width:100%;&:focus-visible{box-shadow:var(--sizes-none) var(--sizes-none) var(--sizes-none) 2px var(--colors-secondary-blue-light);outline:var(--sizes-none)}&:hover{._sortIcon_42pod_47{background-color:var(--colors-neutral-grey-light);color:var(--colors-neutral-ink-base)}}}._sortIcon_42pod_47{align-items:center;background-color:#fff;color:var(--colors-neutral-ink-lightest);display:flex;height:var(--sizes-4);justify-content:center;width:var(--sizes-4)}
2
+ /*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIjxubyBzb3VyY2U+IiwiSGVhZGVyQ2VsbC5tb2R1bGUuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG1CQUFBLHNCQUFBLGtCQUFBLHdCQUFBLDJIQUFBLDBCQUFBLENBQUEsNEJBQUEsUUFBQSxZQUFBLHNCQUFBLFdBQUEsb0JBQUEsa0JBQUEsc0JBQUEsV0FBQSxDQUFBLDRCQUFBLFFBQUEsa0RBQUEsd0JBQUEsMEJBQUEsQ0FBQSw2QkFBQSxRQUFBLG1EQUFBLHVCQUFBLDJCQUFBLENBQUEsQUNBQSxxQkFHRSxxQkFBdUIsQ0FDdkIscUVBQ0YsQ0FFQSx3QkFHRSxrQkFBbUIsQ0FNbkIscUNBQXNDLENBUnRDLFlBQWEsQ0FTYixpREFBa0QsQ0FDbEQsNkNBQThDLENBQzlDLGlEQUFrRCxDQVJsRCxtQkFBb0IsQ0FGcEIscUJBQXNCLENBV3RCLGlEQUFrRCxDQU5sRCxzQkFBdUIsQ0FGdkIsa0JBU0YsQ0FFQSwwQkFDRSxlQUFnQixDQUNoQixzQkFBdUIsQ0FDdkIsa0JBQ0YsQ0FFQSxrQ0FHRSxlQUFnQixDQUNoQiw0QkFBNkIsQ0FHN0Isd0JBQXlCLENBQ3pCLDZCQUE4QixDQUg5QixjQUFlLENBSWYsVUFBVyxDQUVYLGdCQUVFLHVHQUF3RyxDQUR4Ryx5QkFFRixDQUVBLFFBQ0Usb0JBQ0UsaURBQWtELENBQ2xELG9DQUNGLENBQ0YsQ0FDRixDQUVBLG9CQUtFLGtCQUFtQixDQUduQixxQkFBdUIsQ0FDdkIsd0NBQXlDLENBTHpDLFlBQWEsQ0FGYixxQkFBc0IsQ0FJdEIsc0JBQXVCLENBTHZCLG9CQVNGIiwiZmlsZSI6IkhlYWRlckNlbGwubW9kdWxlLmNzcyIsInNvdXJjZXNDb250ZW50IjpbbnVsbCwiLmhlYWRlckNlbGwge1xuICBjb21wb3NlczogYmFzZUNlbGwgZnJvbSAnLi4vLi4vLi4vRGF0YUdyaWQubW9kdWxlLmNzcyc7XG5cbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gIGJvcmRlci1ib3R0b206IHZhcigtLXNpemVzLWxpbmUpIHNvbGlkIHZhcigtLWNvbG9ycy1uZXV0cmFsLWdyZXktYmFzZSk7XG59XG5cbi5oZWFkZXJDb250ZW50IHtcbiAgZGlzcGxheTogZmxleDtcbiAgaGVpZ2h0OiB2YXIoLS1zaXplcy02KTtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiB2YXIoLS1zaXplcy1zbSk7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cbiAgcGFkZGluZzogdmFyKC0tZGVuc2l0eSk7XG5cbiAgY29sb3I6IHZhcigtLXRleHQtaGVhZGluZy10YWJsZS1jb2xvcik7XG4gIGZvbnQtZmFtaWx5OiB2YXIoLS10ZXh0LWhlYWRpbmctdGFibGUtZm9udC1mYW1pbHkpO1xuICBmb250LXNpemU6IHZhcigtLXRleHQtaGVhZGluZy10YWJsZS1mb250LXNpemUpO1xuICBmb250LXdlaWdodDogdmFyKC0tdGV4dC1oZWFkaW5nLXRhYmxlLWZvbnQtd2VpZ2h0KTtcbiAgbGluZS1oZWlnaHQ6IHZhcigtLXRleHQtaGVhZGluZy10YWJsZS1saW5lLWhlaWdodCk7XG59XG5cbi5oZWFkZXJPdmVyZmxvdyB7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuXG4uY2xpY2thYmxlSGVhZGVyQ29udGVudCB7XG4gIGNvbXBvc2VzOiBoZWFkZXJDb250ZW50O1xuXG4gIGFwcGVhcmFuY2U6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgYm9yZGVyOiB2YXIoLS1zaXplcy1ub25lKTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tc2l6ZXMtc20pO1xuICB3aWR0aDogMTAwJTtcblxuICAmOmZvY3VzLXZpc2libGUge1xuICAgIG91dGxpbmU6IHZhcigtLXNpemVzLW5vbmUpO1xuICAgIGJveC1zaGFkb3c6IHZhcigtLXNpemVzLW5vbmUpIHZhcigtLXNpemVzLW5vbmUpIHZhcigtLXNpemVzLW5vbmUpIDJweCB2YXIoLS1jb2xvcnMtc2Vjb25kYXJ5LWJsdWUtbGlnaHQpO1xuICB9XG5cbiAgJjpob3ZlciB7XG4gICAgLnNvcnRJY29uIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9ycy1uZXV0cmFsLWdyZXktbGlnaHQpO1xuICAgICAgY29sb3I6IHZhcigtLWNvbG9ycy1uZXV0cmFsLWluay1iYXNlKTtcbiAgICB9XG4gIH1cbn1cblxuLnNvcnRJY29uIHtcbiAgd2lkdGg6IHZhcigtLXNpemVzLTQpO1xuICBoZWlnaHQ6IHZhcigtLXNpemVzLTQpO1xuXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICBjb2xvcjogdmFyKC0tY29sb3JzLW5ldXRyYWwtaW5rLWxpZ2h0ZXN0KTtcbn0iXX0= */`;
3
3
  const style = document.createElement('style');
4
4
  style.innerHTML = cssContents;
5
5
  document.head.appendChild(style);
6
- const headerCell = '_headerCell_1khpx_1 _baseCell_1w2bt_1';
7
- const headerContent = '_headerContent_1khpx_8';
8
- const headerOverflow = '_headerOverflow_1khpx_24';
6
+ const headerCell = '_headerCell_42pod_1 _baseCell_13swz_1';
7
+ const headerContent = '_headerContent_42pod_8';
8
+ const headerOverflow = '_headerOverflow_42pod_24';
9
+ const clickableHeaderContent = '_clickableHeaderContent_42pod_30 _headerContent_42pod_8';
10
+ const sortIcon = '_sortIcon_42pod_47';
9
11
 
10
- export { headerCell, headerContent, headerOverflow };
12
+ export { clickableHeaderContent, headerCell, headerContent, headerOverflow, sortIcon };
11
13
  //# sourceMappingURL=HeaderCell.module.css.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"HeaderCell.module.css.js","sources":["../../../../../../src/components/DataGrid/components/Header/HeaderCell/HeaderCell.module.css"],"sourcesContent":[".headerCell {\n composes: baseCell from '../../../DataGrid.module.css';\n\n background-color: white;\n border-bottom: var(--sizes-line) solid var(--colors-neutral-grey-base);\n}\n\n.headerContent {\n display: flex;\n height: var(--sizes-6);\n align-items: center;\n gap: var(--sizes-small);\n white-space: nowrap;\n\n padding: var(--density);\n\n color: var(--text-heading-table-color);\n font-family: var(--text-heading-table-font-family);\n font-size: var(--text-heading-table-font-size);\n font-weight: var(--text-heading-table-font-weight);\n line-height: var(--text-heading-table-line-height);\n}\n\n.headerOverflow {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n"],"names":[],"mappings":"AACA,MAAM,WAAW,GAAG,CAAC;AACrB,6gDAA6gD,CAAC;AAC9gD,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC;AAC7C,KAAK,CAAC,SAAS,GAAG,WAAW;AAC7B,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AAC3B,MAAC,UAAU,GAAG;AACd,MAAC,aAAa,GAAG;AACjB,MAAC,cAAc,GAAG;;;;"}
1
+ {"version":3,"file":"HeaderCell.module.css.js","sources":["../../../../../../src/components/DataGrid/components/Header/HeaderCell/HeaderCell.module.css"],"sourcesContent":[".headerCell {\n composes: baseCell from '../../../DataGrid.module.css';\n\n background-color: white;\n border-bottom: var(--sizes-line) solid var(--colors-neutral-grey-base);\n}\n\n.headerContent {\n display: flex;\n height: var(--sizes-6);\n align-items: center;\n gap: var(--sizes-sm);\n white-space: nowrap;\n\n padding: var(--density);\n\n color: var(--text-heading-table-color);\n font-family: var(--text-heading-table-font-family);\n font-size: var(--text-heading-table-font-size);\n font-weight: var(--text-heading-table-font-weight);\n line-height: var(--text-heading-table-line-height);\n}\n\n.headerOverflow {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.clickableHeaderContent {\n composes: headerContent;\n\n appearance: none;\n background-color: transparent;\n cursor: pointer;\n\n border: var(--sizes-none);\n border-radius: var(--sizes-sm);\n width: 100%;\n\n &:focus-visible {\n outline: var(--sizes-none);\n box-shadow: var(--sizes-none) var(--sizes-none) var(--sizes-none) 2px var(--colors-secondary-blue-light);\n }\n\n &:hover {\n .sortIcon {\n background-color: var(--colors-neutral-grey-light);\n color: var(--colors-neutral-ink-base);\n }\n }\n}\n\n.sortIcon {\n width: var(--sizes-4);\n height: var(--sizes-4);\n\n display: flex;\n align-items: center;\n justify-content: center;\n\n background-color: white;\n color: var(--colors-neutral-ink-lightest);\n}"],"names":[],"mappings":"AACA,MAAM,WAAW,GAAG,CAAC;AACrB,q+FAAq+F,CAAC;AACt+F,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC;AAC7C,KAAK,CAAC,SAAS,GAAG,WAAW;AAC7B,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AAC3B,MAAC,UAAU,GAAG;AACd,MAAC,aAAa,GAAG;AACjB,MAAC,cAAc,GAAG;AAClB,MAAC,sBAAsB,GAAG;AAC1B,MAAC,QAAQ,GAAG;;;;"}
@@ -0,0 +1,29 @@
1
+ 'use strict';
2
+
3
+ var React = require('react');
4
+ var index = require('../../../../../../theme/index.cjs');
5
+ var ArrowDownIcon = require('../../../../../../tempIcons/ArrowDownIcon.cjs');
6
+ var ArrowUpIcon = require('../../../../../../tempIcons/ArrowUpIcon.cjs');
7
+ var DoubleArrowIcon = require('../../../../../../tempIcons/DoubleArrowIcon.cjs');
8
+ require('../../../../../../theme/modules/sizes.cjs');
9
+ var HeaderCell_module = require('../HeaderCell.module.css.cjs');
10
+
11
+ function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
12
+
13
+ var React__default = /*#__PURE__*/_interopDefaultCompat(React);
14
+
15
+ /**
16
+ * Sort icon for a column header.
17
+ */
18
+ const SortIcon = ({ isSorted }) => {
19
+ const icon = React.useMemo(() => {
20
+ if (!isSorted) {
21
+ return React__default.default.createElement(DoubleArrowIcon.DoubleArrowIcon, { size: 5 });
22
+ }
23
+ return isSorted === 'asc' ? (React__default.default.createElement(ArrowUpIcon.ArrowUpIcon, { color: index.theme.colors.neutral.ink.dark, size: 5 })) : (React__default.default.createElement(ArrowDownIcon.ArrowDownIcon, { color: index.theme.colors.neutral.ink.dark, size: 5 }));
24
+ }, [isSorted]);
25
+ return React__default.default.createElement("span", { className: HeaderCell_module.sortIcon }, icon);
26
+ };
27
+
28
+ exports.SortIcon = SortIcon;
29
+ //# sourceMappingURL=SortIcon.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SortIcon.cjs","sources":["../../../../../../../src/components/DataGrid/components/Header/HeaderCell/SortIcon/SortIcon.tsx"],"sourcesContent":["import React, { useMemo } from 'react';\n\nimport { SortDirection } from '@tanstack/react-table';\n\nimport { theme } from 'Theme';\n\nimport { ArrowDownIcon, ArrowUpIcon, DoubleArrowIcon } from '../../../../../../tempIcons';\nimport { sortIcon } from '../HeaderCell.module.css';\n\ntype SortIconProps = {\n isSorted?: boolean | SortDirection;\n};\n\n/**\n * Sort icon for a column header.\n */\nexport const SortIcon = ({ isSorted }: SortIconProps) => {\n const icon = useMemo(() => {\n if (!isSorted) {\n return <DoubleArrowIcon size={5} />;\n }\n\n return isSorted === 'asc' ? (\n <ArrowUpIcon color={theme.colors.neutral.ink.dark} size={5} />\n ) : (\n <ArrowDownIcon color={theme.colors.neutral.ink.dark} size={5} />\n );\n }, [isSorted]);\n\n return <span className={sortIcon}>{icon}</span>;\n};\n"],"names":["useMemo","React","DoubleArrowIcon","ArrowUpIcon","theme","ArrowDownIcon","sortIcon"],"mappings":";;;;;;;;;;;;;;AAaA;;AAEG;MACU,QAAQ,GAAG,CAAC,EAAE,QAAQ,EAAiB,KAAI;AACtD,IAAA,MAAM,IAAI,GAAGA,aAAO,CAAC,MAAK;QACxB,IAAI,CAAC,QAAQ,EAAE;AACb,YAAA,OAAOC,qCAACC,+BAAe,EAAA,EAAC,IAAI,EAAE,CAAC,GAAI;AACpC;QAED,OAAO,QAAQ,KAAK,KAAK,IACvBD,sBAAC,CAAA,aAAA,CAAAE,uBAAW,EAAC,EAAA,KAAK,EAAEC,WAAK,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,GAAI,KAE9DH,sBAAA,CAAA,aAAA,CAACI,2BAAa,EAAC,EAAA,KAAK,EAAED,WAAK,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAI,CAAA,CACjE;AACH,KAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;AAEd,IAAA,OAAOH,+CAAM,SAAS,EAAEK,0BAAQ,EAAG,EAAA,IAAI,CAAQ;AACjD;;;;"}
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ import { SortDirection } from '@tanstack/react-table';
3
+ type SortIconProps = {
4
+ isSorted?: boolean | SortDirection;
5
+ };
6
+ /**
7
+ * Sort icon for a column header.
8
+ */
9
+ export declare const SortIcon: ({ isSorted }: SortIconProps) => React.JSX.Element;
10
+ export {};
@@ -0,0 +1,23 @@
1
+ import React__default, { useMemo } from 'react';
2
+ import { theme } from '../../../../../../theme/index.js';
3
+ import { ArrowDownIcon } from '../../../../../../tempIcons/ArrowDownIcon.js';
4
+ import { ArrowUpIcon } from '../../../../../../tempIcons/ArrowUpIcon.js';
5
+ import { DoubleArrowIcon } from '../../../../../../tempIcons/DoubleArrowIcon.js';
6
+ import '../../../../../../theme/modules/sizes.js';
7
+ import { sortIcon } from '../HeaderCell.module.css.js';
8
+
9
+ /**
10
+ * Sort icon for a column header.
11
+ */
12
+ const SortIcon = ({ isSorted }) => {
13
+ const icon = useMemo(() => {
14
+ if (!isSorted) {
15
+ return React__default.createElement(DoubleArrowIcon, { size: 5 });
16
+ }
17
+ return isSorted === 'asc' ? (React__default.createElement(ArrowUpIcon, { color: theme.colors.neutral.ink.dark, size: 5 })) : (React__default.createElement(ArrowDownIcon, { color: theme.colors.neutral.ink.dark, size: 5 }));
18
+ }, [isSorted]);
19
+ return React__default.createElement("span", { className: sortIcon }, icon);
20
+ };
21
+
22
+ export { SortIcon };
23
+ //# sourceMappingURL=SortIcon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SortIcon.js","sources":["../../../../../../../src/components/DataGrid/components/Header/HeaderCell/SortIcon/SortIcon.tsx"],"sourcesContent":["import React, { useMemo } from 'react';\n\nimport { SortDirection } from '@tanstack/react-table';\n\nimport { theme } from 'Theme';\n\nimport { ArrowDownIcon, ArrowUpIcon, DoubleArrowIcon } from '../../../../../../tempIcons';\nimport { sortIcon } from '../HeaderCell.module.css';\n\ntype SortIconProps = {\n isSorted?: boolean | SortDirection;\n};\n\n/**\n * Sort icon for a column header.\n */\nexport const SortIcon = ({ isSorted }: SortIconProps) => {\n const icon = useMemo(() => {\n if (!isSorted) {\n return <DoubleArrowIcon size={5} />;\n }\n\n return isSorted === 'asc' ? (\n <ArrowUpIcon color={theme.colors.neutral.ink.dark} size={5} />\n ) : (\n <ArrowDownIcon color={theme.colors.neutral.ink.dark} size={5} />\n );\n }, [isSorted]);\n\n return <span className={sortIcon}>{icon}</span>;\n};\n"],"names":["React"],"mappings":";;;;;;;;AAaA;;AAEG;MACU,QAAQ,GAAG,CAAC,EAAE,QAAQ,EAAiB,KAAI;AACtD,IAAA,MAAM,IAAI,GAAG,OAAO,CAAC,MAAK;QACxB,IAAI,CAAC,QAAQ,EAAE;AACb,YAAA,OAAOA,6BAAC,eAAe,EAAA,EAAC,IAAI,EAAE,CAAC,GAAI;AACpC;QAED,OAAO,QAAQ,KAAK,KAAK,IACvBA,cAAC,CAAA,aAAA,CAAA,WAAW,EAAC,EAAA,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,GAAI,KAE9DA,cAAA,CAAA,aAAA,CAAC,aAAa,EAAC,EAAA,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAI,CAAA,CACjE;AACH,KAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;AAEd,IAAA,OAAOA,uCAAM,SAAS,EAAE,QAAQ,EAAG,EAAA,IAAI,CAAQ;AACjD;;;;"}
@@ -0,0 +1 @@
1
+ export { SortIcon } from './SortIcon';
@@ -4,9 +4,11 @@ const DEFAULT_COLUMN_WIDTH = 200;
4
4
  const DEFAULT_COLUMN_MINIMUM_WIDTH = 120;
5
5
  const DEFAULT_COLUMN_MAXIMUM_WIDTH = Number.MAX_SAFE_INTEGER;
6
6
  const DEFAULT_CELL_ALIGN = 'left';
7
+ const SELECTION_COLUMN_ID = 'selection';
7
8
 
8
9
  exports.DEFAULT_CELL_ALIGN = DEFAULT_CELL_ALIGN;
9
10
  exports.DEFAULT_COLUMN_MAXIMUM_WIDTH = DEFAULT_COLUMN_MAXIMUM_WIDTH;
10
11
  exports.DEFAULT_COLUMN_MINIMUM_WIDTH = DEFAULT_COLUMN_MINIMUM_WIDTH;
11
12
  exports.DEFAULT_COLUMN_WIDTH = DEFAULT_COLUMN_WIDTH;
13
+ exports.SELECTION_COLUMN_ID = SELECTION_COLUMN_ID;
12
14
  //# sourceMappingURL=constants.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.cjs","sources":["../../../src/components/DataGrid/constants.ts"],"sourcesContent":["export const DEFAULT_COLUMN_WIDTH = 200;\nexport const DEFAULT_COLUMN_MINIMUM_WIDTH = 120;\nexport const DEFAULT_COLUMN_MAXIMUM_WIDTH = Number.MAX_SAFE_INTEGER;\n\nexport const DEFAULT_CELL_ALIGN = 'left';\n"],"names":[],"mappings":";;AAAO,MAAM,oBAAoB,GAAG;AAC7B,MAAM,4BAA4B,GAAG;AAC/B,MAAA,4BAA4B,GAAG,MAAM,CAAC;AAE5C,MAAM,kBAAkB,GAAG;;;;;;;"}
1
+ {"version":3,"file":"constants.cjs","sources":["../../../src/components/DataGrid/constants.ts"],"sourcesContent":["export const DEFAULT_COLUMN_WIDTH = 200;\nexport const DEFAULT_COLUMN_MINIMUM_WIDTH = 120;\nexport const DEFAULT_COLUMN_MAXIMUM_WIDTH = Number.MAX_SAFE_INTEGER;\n\nexport const DEFAULT_CELL_ALIGN = 'left';\n\nexport const SELECTION_COLUMN_ID = 'selection';\n"],"names":[],"mappings":";;AAAO,MAAM,oBAAoB,GAAG;AAC7B,MAAM,4BAA4B,GAAG;AAC/B,MAAA,4BAA4B,GAAG,MAAM,CAAC;AAE5C,MAAM,kBAAkB,GAAG;AAE3B,MAAM,mBAAmB,GAAG;;;;;;;;"}
@@ -2,3 +2,4 @@ export declare const DEFAULT_COLUMN_WIDTH = 200;
2
2
  export declare const DEFAULT_COLUMN_MINIMUM_WIDTH = 120;
3
3
  export declare const DEFAULT_COLUMN_MAXIMUM_WIDTH: number;
4
4
  export declare const DEFAULT_CELL_ALIGN = "left";
5
+ export declare const SELECTION_COLUMN_ID = "selection";
@@ -2,6 +2,7 @@ const DEFAULT_COLUMN_WIDTH = 200;
2
2
  const DEFAULT_COLUMN_MINIMUM_WIDTH = 120;
3
3
  const DEFAULT_COLUMN_MAXIMUM_WIDTH = Number.MAX_SAFE_INTEGER;
4
4
  const DEFAULT_CELL_ALIGN = 'left';
5
+ const SELECTION_COLUMN_ID = 'selection';
5
6
 
6
- export { DEFAULT_CELL_ALIGN, DEFAULT_COLUMN_MAXIMUM_WIDTH, DEFAULT_COLUMN_MINIMUM_WIDTH, DEFAULT_COLUMN_WIDTH };
7
+ export { DEFAULT_CELL_ALIGN, DEFAULT_COLUMN_MAXIMUM_WIDTH, DEFAULT_COLUMN_MINIMUM_WIDTH, DEFAULT_COLUMN_WIDTH, SELECTION_COLUMN_ID };
7
8
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sources":["../../../src/components/DataGrid/constants.ts"],"sourcesContent":["export const DEFAULT_COLUMN_WIDTH = 200;\nexport const DEFAULT_COLUMN_MINIMUM_WIDTH = 120;\nexport const DEFAULT_COLUMN_MAXIMUM_WIDTH = Number.MAX_SAFE_INTEGER;\n\nexport const DEFAULT_CELL_ALIGN = 'left';\n"],"names":[],"mappings":"AAAO,MAAM,oBAAoB,GAAG;AAC7B,MAAM,4BAA4B,GAAG;AAC/B,MAAA,4BAA4B,GAAG,MAAM,CAAC;AAE5C,MAAM,kBAAkB,GAAG;;;;"}
1
+ {"version":3,"file":"constants.js","sources":["../../../src/components/DataGrid/constants.ts"],"sourcesContent":["export const DEFAULT_COLUMN_WIDTH = 200;\nexport const DEFAULT_COLUMN_MINIMUM_WIDTH = 120;\nexport const DEFAULT_COLUMN_MAXIMUM_WIDTH = Number.MAX_SAFE_INTEGER;\n\nexport const DEFAULT_CELL_ALIGN = 'left';\n\nexport const SELECTION_COLUMN_ID = 'selection';\n"],"names":[],"mappings":"AAAO,MAAM,oBAAoB,GAAG;AAC7B,MAAM,4BAA4B,GAAG;AAC/B,MAAA,4BAA4B,GAAG,MAAM,CAAC;AAE5C,MAAM,kBAAkB,GAAG;AAE3B,MAAM,mBAAmB,GAAG;;;;"}
@@ -0,0 +1,3 @@
1
+ export { useSortingState } from './useSortingState';
2
+ export { usePinnedColumnStyles } from './usePinnedColumnStyles';
3
+ export { usePinnedColumnLayout } from './usePinnedColumnLayout';
@@ -0,0 +1,39 @@
1
+ 'use strict';
2
+
3
+ var React = require('react');
4
+
5
+ /* eslint-disable react-hooks/exhaustive-deps */
6
+ /**
7
+ * Hook which computes left and right positions for laying out pinned columns, which are then returned as CSS variables
8
+ * to be applied to the table element.
9
+ *
10
+ * We do this so that pinned columns can be resized correctly, whilst avoiding having to re-render the table body and
11
+ * header (since left/right properties must be applied to the <th> and <td> elements rather than the <col>).
12
+ */
13
+ const usePinnedColumnLayout = ({ table }) => {
14
+ const pinnedColumnLayoutStyles = React.useMemo(() => {
15
+ if (!table.getIsSomeColumnsPinned()) {
16
+ return {};
17
+ }
18
+ const pinnedColumns = [
19
+ ...table.getLeftVisibleLeafColumns(),
20
+ ...table.getRightVisibleLeafColumns(),
21
+ ];
22
+ return pinnedColumns.reduce((styleObj, column) => {
23
+ const pinLocation = column.getIsPinned();
24
+ return {
25
+ ...styleObj,
26
+ [`--${column.id}-start`]: pinLocation === 'left' ? `${column.getStart('left')}px` : undefined,
27
+ [`--${column.id}-after`]: pinLocation === 'right' ? `${column.getAfter('right')}px` : undefined,
28
+ };
29
+ }, {});
30
+ }, [
31
+ table.getState().columnSizing,
32
+ table.getState().columnSizingInfo,
33
+ table.getState().columnPinning,
34
+ ]);
35
+ return { pinnedColumnLayoutStyles };
36
+ };
37
+
38
+ exports.usePinnedColumnLayout = usePinnedColumnLayout;
39
+ //# sourceMappingURL=usePinnedColumnLayout.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usePinnedColumnLayout.cjs","sources":["../../../../src/components/DataGrid/hooks/usePinnedColumnLayout.ts"],"sourcesContent":["/* eslint-disable react-hooks/exhaustive-deps */\n\nimport { useMemo } from 'react';\n\nimport { Table } from '@tanstack/react-table';\n\ntype UsePinnedColumnLayoutProps = {\n table: Table<any>;\n};\n\n/**\n * Hook which computes left and right positions for laying out pinned columns, which are then returned as CSS variables\n * to be applied to the table element.\n *\n * We do this so that pinned columns can be resized correctly, whilst avoiding having to re-render the table body and\n * header (since left/right properties must be applied to the <th> and <td> elements rather than the <col>).\n */\nexport const usePinnedColumnLayout = ({ table }: UsePinnedColumnLayoutProps) => {\n const pinnedColumnLayoutStyles = useMemo(() => {\n if (!table.getIsSomeColumnsPinned()) {\n return {};\n }\n\n const pinnedColumns = [\n ...table.getLeftVisibleLeafColumns(),\n ...table.getRightVisibleLeafColumns(),\n ];\n\n return pinnedColumns.reduce((styleObj, column) => {\n const pinLocation = column.getIsPinned();\n\n return {\n ...styleObj,\n [`--${column.id}-start`]:\n pinLocation === 'left' ? `${column.getStart('left')}px` : undefined,\n [`--${column.id}-after`]:\n pinLocation === 'right' ? `${column.getAfter('right')}px` : undefined,\n };\n }, {});\n }, [\n table.getState().columnSizing,\n table.getState().columnSizingInfo,\n table.getState().columnPinning,\n ]);\n\n return { pinnedColumnLayoutStyles };\n};\n"],"names":["useMemo"],"mappings":";;;;AAAA;AAUA;;;;;;AAMG;MACU,qBAAqB,GAAG,CAAC,EAAE,KAAK,EAA8B,KAAI;AAC7E,IAAA,MAAM,wBAAwB,GAAGA,aAAO,CAAC,MAAK;AAC5C,QAAA,IAAI,CAAC,KAAK,CAAC,sBAAsB,EAAE,EAAE;AACnC,YAAA,OAAO,EAAE;AACV;AAED,QAAA,MAAM,aAAa,GAAG;YACpB,GAAG,KAAK,CAAC,yBAAyB,EAAE;YACpC,GAAG,KAAK,CAAC,0BAA0B,EAAE;SACtC;QAED,OAAO,aAAa,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,MAAM,KAAI;AAC/C,YAAA,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,EAAE;YAExC,OAAO;AACL,gBAAA,GAAG,QAAQ;gBACX,CAAC,CAAA,EAAA,EAAK,MAAM,CAAC,EAAE,CAAA,MAAA,CAAQ,GACrB,WAAW,KAAK,MAAM,GAAG,CAAG,EAAA,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAI,EAAA,CAAA,GAAG,SAAS;gBACrE,CAAC,CAAA,EAAA,EAAK,MAAM,CAAC,EAAE,CAAA,MAAA,CAAQ,GACrB,WAAW,KAAK,OAAO,GAAG,CAAG,EAAA,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAI,EAAA,CAAA,GAAG,SAAS;aACxE;SACF,EAAE,EAAE,CAAC;AACR,KAAC,EAAE;AACD,QAAA,KAAK,CAAC,QAAQ,EAAE,CAAC,YAAY;AAC7B,QAAA,KAAK,CAAC,QAAQ,EAAE,CAAC,gBAAgB;AACjC,QAAA,KAAK,CAAC,QAAQ,EAAE,CAAC,aAAa;AAC/B,KAAA,CAAC;IAEF,OAAO,EAAE,wBAAwB,EAAE;AACrC;;;;"}
@@ -0,0 +1,15 @@
1
+ import { Table } from '@tanstack/react-table';
2
+ type UsePinnedColumnLayoutProps = {
3
+ table: Table<any>;
4
+ };
5
+ /**
6
+ * Hook which computes left and right positions for laying out pinned columns, which are then returned as CSS variables
7
+ * to be applied to the table element.
8
+ *
9
+ * We do this so that pinned columns can be resized correctly, whilst avoiding having to re-render the table body and
10
+ * header (since left/right properties must be applied to the <th> and <td> elements rather than the <col>).
11
+ */
12
+ export declare const usePinnedColumnLayout: ({ table }: UsePinnedColumnLayoutProps) => {
13
+ pinnedColumnLayoutStyles: {};
14
+ };
15
+ export {};
@@ -0,0 +1,37 @@
1
+ import { useMemo } from 'react';
2
+
3
+ /* eslint-disable react-hooks/exhaustive-deps */
4
+ /**
5
+ * Hook which computes left and right positions for laying out pinned columns, which are then returned as CSS variables
6
+ * to be applied to the table element.
7
+ *
8
+ * We do this so that pinned columns can be resized correctly, whilst avoiding having to re-render the table body and
9
+ * header (since left/right properties must be applied to the <th> and <td> elements rather than the <col>).
10
+ */
11
+ const usePinnedColumnLayout = ({ table }) => {
12
+ const pinnedColumnLayoutStyles = useMemo(() => {
13
+ if (!table.getIsSomeColumnsPinned()) {
14
+ return {};
15
+ }
16
+ const pinnedColumns = [
17
+ ...table.getLeftVisibleLeafColumns(),
18
+ ...table.getRightVisibleLeafColumns(),
19
+ ];
20
+ return pinnedColumns.reduce((styleObj, column) => {
21
+ const pinLocation = column.getIsPinned();
22
+ return {
23
+ ...styleObj,
24
+ [`--${column.id}-start`]: pinLocation === 'left' ? `${column.getStart('left')}px` : undefined,
25
+ [`--${column.id}-after`]: pinLocation === 'right' ? `${column.getAfter('right')}px` : undefined,
26
+ };
27
+ }, {});
28
+ }, [
29
+ table.getState().columnSizing,
30
+ table.getState().columnSizingInfo,
31
+ table.getState().columnPinning,
32
+ ]);
33
+ return { pinnedColumnLayoutStyles };
34
+ };
35
+
36
+ export { usePinnedColumnLayout };
37
+ //# sourceMappingURL=usePinnedColumnLayout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usePinnedColumnLayout.js","sources":["../../../../src/components/DataGrid/hooks/usePinnedColumnLayout.ts"],"sourcesContent":["/* eslint-disable react-hooks/exhaustive-deps */\n\nimport { useMemo } from 'react';\n\nimport { Table } from '@tanstack/react-table';\n\ntype UsePinnedColumnLayoutProps = {\n table: Table<any>;\n};\n\n/**\n * Hook which computes left and right positions for laying out pinned columns, which are then returned as CSS variables\n * to be applied to the table element.\n *\n * We do this so that pinned columns can be resized correctly, whilst avoiding having to re-render the table body and\n * header (since left/right properties must be applied to the <th> and <td> elements rather than the <col>).\n */\nexport const usePinnedColumnLayout = ({ table }: UsePinnedColumnLayoutProps) => {\n const pinnedColumnLayoutStyles = useMemo(() => {\n if (!table.getIsSomeColumnsPinned()) {\n return {};\n }\n\n const pinnedColumns = [\n ...table.getLeftVisibleLeafColumns(),\n ...table.getRightVisibleLeafColumns(),\n ];\n\n return pinnedColumns.reduce((styleObj, column) => {\n const pinLocation = column.getIsPinned();\n\n return {\n ...styleObj,\n [`--${column.id}-start`]:\n pinLocation === 'left' ? `${column.getStart('left')}px` : undefined,\n [`--${column.id}-after`]:\n pinLocation === 'right' ? `${column.getAfter('right')}px` : undefined,\n };\n }, {});\n }, [\n table.getState().columnSizing,\n table.getState().columnSizingInfo,\n table.getState().columnPinning,\n ]);\n\n return { pinnedColumnLayoutStyles };\n};\n"],"names":[],"mappings":";;AAAA;AAUA;;;;;;AAMG;MACU,qBAAqB,GAAG,CAAC,EAAE,KAAK,EAA8B,KAAI;AAC7E,IAAA,MAAM,wBAAwB,GAAG,OAAO,CAAC,MAAK;AAC5C,QAAA,IAAI,CAAC,KAAK,CAAC,sBAAsB,EAAE,EAAE;AACnC,YAAA,OAAO,EAAE;AACV;AAED,QAAA,MAAM,aAAa,GAAG;YACpB,GAAG,KAAK,CAAC,yBAAyB,EAAE;YACpC,GAAG,KAAK,CAAC,0BAA0B,EAAE;SACtC;QAED,OAAO,aAAa,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,MAAM,KAAI;AAC/C,YAAA,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,EAAE;YAExC,OAAO;AACL,gBAAA,GAAG,QAAQ;gBACX,CAAC,CAAA,EAAA,EAAK,MAAM,CAAC,EAAE,CAAA,MAAA,CAAQ,GACrB,WAAW,KAAK,MAAM,GAAG,CAAG,EAAA,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAI,EAAA,CAAA,GAAG,SAAS;gBACrE,CAAC,CAAA,EAAA,EAAK,MAAM,CAAC,EAAE,CAAA,MAAA,CAAQ,GACrB,WAAW,KAAK,OAAO,GAAG,CAAG,EAAA,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAI,EAAA,CAAA,GAAG,SAAS;aACxE;SACF,EAAE,EAAE,CAAC;AACR,KAAC,EAAE;AACD,QAAA,KAAK,CAAC,QAAQ,EAAE,CAAC,YAAY;AAC7B,QAAA,KAAK,CAAC,QAAQ,EAAE,CAAC,gBAAgB;AACjC,QAAA,KAAK,CAAC,QAAQ,EAAE,CAAC,aAAa;AAC/B,KAAA,CAAC;IAEF,OAAO,EAAE,wBAAwB,EAAE;AACrC;;;;"}
@@ -0,0 +1,22 @@
1
+ 'use strict';
2
+
3
+ var pinnedColumnUtils = require('../utils/pinnedColumnUtils.cjs');
4
+
5
+ /**
6
+ * Hook which returns class names, and styles that need to be computed on-the-fly, for pinned column cells.
7
+ */
8
+ const usePinnedColumnStyles = ({ column }) => {
9
+ if (!column.getIsPinned()) {
10
+ return {
11
+ pinnedCellClassName: '',
12
+ pinnedCellStyles: {},
13
+ };
14
+ }
15
+ return {
16
+ pinnedCellClassName: pinnedColumnUtils.getPinnedColumnClassNames(column),
17
+ pinnedCellStyles: pinnedColumnUtils.getPinnedColumnStyles(column),
18
+ };
19
+ };
20
+
21
+ exports.usePinnedColumnStyles = usePinnedColumnStyles;
22
+ //# sourceMappingURL=usePinnedColumnStyles.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usePinnedColumnStyles.cjs","sources":["../../../../src/components/DataGrid/hooks/usePinnedColumnStyles.ts"],"sourcesContent":["import { Column } from '@tanstack/react-table';\n\nimport { getPinnedColumnClassNames, getPinnedColumnStyles } from '../utils/pinnedColumnUtils';\n\ntype UsePinnedColumnStylesProps = {\n column: Column<any, any>;\n};\n\n/**\n * Hook which returns class names, and styles that need to be computed on-the-fly, for pinned column cells.\n */\nexport const usePinnedColumnStyles = ({ column }: UsePinnedColumnStylesProps) => {\n if (!column.getIsPinned()) {\n return {\n pinnedCellClassName: '',\n pinnedCellStyles: {},\n };\n }\n\n return {\n pinnedCellClassName: getPinnedColumnClassNames(column),\n pinnedCellStyles: getPinnedColumnStyles(column),\n };\n};\n"],"names":["getPinnedColumnClassNames","getPinnedColumnStyles"],"mappings":";;;;AAQA;;AAEG;MACU,qBAAqB,GAAG,CAAC,EAAE,MAAM,EAA8B,KAAI;AAC9E,IAAA,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE;QACzB,OAAO;AACL,YAAA,mBAAmB,EAAE,EAAE;AACvB,YAAA,gBAAgB,EAAE,EAAE;SACrB;AACF;IAED,OAAO;AACL,QAAA,mBAAmB,EAAEA,2CAAyB,CAAC,MAAM,CAAC;AACtD,QAAA,gBAAgB,EAAEC,uCAAqB,CAAC,MAAM,CAAC;KAChD;AACH;;;;"}
@@ -0,0 +1,13 @@
1
+ /// <reference types="react" />
2
+ import { Column } from '@tanstack/react-table';
3
+ type UsePinnedColumnStylesProps = {
4
+ column: Column<any, any>;
5
+ };
6
+ /**
7
+ * Hook which returns class names, and styles that need to be computed on-the-fly, for pinned column cells.
8
+ */
9
+ export declare const usePinnedColumnStyles: ({ column }: UsePinnedColumnStylesProps) => {
10
+ pinnedCellClassName: any;
11
+ pinnedCellStyles: import("react").CSSProperties;
12
+ };
13
+ export {};
@@ -0,0 +1,20 @@
1
+ import { getPinnedColumnClassNames, getPinnedColumnStyles } from '../utils/pinnedColumnUtils.js';
2
+
3
+ /**
4
+ * Hook which returns class names, and styles that need to be computed on-the-fly, for pinned column cells.
5
+ */
6
+ const usePinnedColumnStyles = ({ column }) => {
7
+ if (!column.getIsPinned()) {
8
+ return {
9
+ pinnedCellClassName: '',
10
+ pinnedCellStyles: {},
11
+ };
12
+ }
13
+ return {
14
+ pinnedCellClassName: getPinnedColumnClassNames(column),
15
+ pinnedCellStyles: getPinnedColumnStyles(column),
16
+ };
17
+ };
18
+
19
+ export { usePinnedColumnStyles };
20
+ //# sourceMappingURL=usePinnedColumnStyles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usePinnedColumnStyles.js","sources":["../../../../src/components/DataGrid/hooks/usePinnedColumnStyles.ts"],"sourcesContent":["import { Column } from '@tanstack/react-table';\n\nimport { getPinnedColumnClassNames, getPinnedColumnStyles } from '../utils/pinnedColumnUtils';\n\ntype UsePinnedColumnStylesProps = {\n column: Column<any, any>;\n};\n\n/**\n * Hook which returns class names, and styles that need to be computed on-the-fly, for pinned column cells.\n */\nexport const usePinnedColumnStyles = ({ column }: UsePinnedColumnStylesProps) => {\n if (!column.getIsPinned()) {\n return {\n pinnedCellClassName: '',\n pinnedCellStyles: {},\n };\n }\n\n return {\n pinnedCellClassName: getPinnedColumnClassNames(column),\n pinnedCellStyles: getPinnedColumnStyles(column),\n };\n};\n"],"names":[],"mappings":";;AAQA;;AAEG;MACU,qBAAqB,GAAG,CAAC,EAAE,MAAM,EAA8B,KAAI;AAC9E,IAAA,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE;QACzB,OAAO;AACL,YAAA,mBAAmB,EAAE,EAAE;AACvB,YAAA,gBAAgB,EAAE,EAAE;SACrB;AACF;IAED,OAAO;AACL,QAAA,mBAAmB,EAAE,yBAAyB,CAAC,MAAM,CAAC;AACtD,QAAA,gBAAgB,EAAE,qBAAqB,CAAC,MAAM,CAAC;KAChD;AACH;;;;"}
@@ -0,0 +1,51 @@
1
+ 'use strict';
2
+
3
+ var React = require('react');
4
+
5
+ /**
6
+ * Hook which manages interop between selection props and the internal TanStack selection state.
7
+ */
8
+ const useSelectionState = ({ selectionMode, selectedRows, disabledRows, onSelectionChanged, }) => {
9
+ const internalSelectionState = React.useMemo(() => {
10
+ if (!selectedRows || !onSelectionChanged)
11
+ return {};
12
+ return selectedRows.reduce((acc, rowId) => ({
13
+ ...acc,
14
+ [rowId]: true,
15
+ }), {});
16
+ // eslint-disable-next-line react-hooks/exhaustive-deps
17
+ }, [selectedRows]);
18
+ const setInternalSelectionState = React.useCallback((onUpdate) => {
19
+ if (!onSelectionChanged)
20
+ return;
21
+ const newSelectionState = typeof onUpdate === 'function' ? onUpdate(internalSelectionState) : onUpdate;
22
+ const rowIds = Object.entries(newSelectionState)
23
+ .filter(([, selected]) => selected)
24
+ .map(([rowId]) => rowId);
25
+ onSelectionChanged(rowIds);
26
+ }, [onSelectionChanged, internalSelectionState]);
27
+ // Controls whether a given row can be selected or not. If selection is disabled, we tell the TanStack table
28
+ // to consider every row "un-selectable". Otherwise, we defer to whether or not a row is present within the
29
+ // array of disabled row ID's.
30
+ const enableRowSelection = React.useMemo(() => {
31
+ if (selectedRows === undefined || onSelectionChanged === undefined) {
32
+ return false;
33
+ }
34
+ return (row) => !(disabledRows === null || disabledRows === undefined ? undefined : disabledRows.includes(row.id));
35
+ }, [selectedRows, onSelectionChanged, disabledRows]);
36
+ const enableMultiRowSelection = React.useMemo(() => {
37
+ if (!enableRowSelection) {
38
+ return false;
39
+ }
40
+ return selectionMode === 'multiple';
41
+ }, [enableRowSelection, selectionMode]);
42
+ return {
43
+ enableRowSelection,
44
+ enableMultiRowSelection,
45
+ rowSelection: internalSelectionState,
46
+ onRowSelectionChange: setInternalSelectionState,
47
+ };
48
+ };
49
+
50
+ exports.useSelectionState = useSelectionState;
51
+ //# sourceMappingURL=useSelectionState.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSelectionState.cjs","sources":["../../../../src/components/DataGrid/hooks/useSelectionState.ts"],"sourcesContent":["import { useCallback, useMemo } from 'react';\n\nimport { OnChangeFn, Row, RowSelectionState } from '@tanstack/react-table';\nimport { SelectionMode } from '../types/enums';\n\ntype UseSelectionProps = {\n selectionMode?: SelectionMode;\n selectedRows?: string[];\n disabledRows?: string[];\n onSelectionChanged?: (rowIds: string[]) => void;\n};\n\n/**\n * Hook which manages interop between selection props and the internal TanStack selection state.\n */\nexport const useSelectionState = ({\n selectionMode,\n selectedRows,\n disabledRows,\n onSelectionChanged,\n}: UseSelectionProps) => {\n const internalSelectionState: RowSelectionState = useMemo(() => {\n if (!selectedRows || !onSelectionChanged) return {};\n\n return selectedRows.reduce(\n (acc, rowId) => ({\n ...acc,\n [rowId]: true,\n }),\n {},\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [selectedRows]);\n\n const setInternalSelectionState: OnChangeFn<RowSelectionState> = useCallback(\n (onUpdate) => {\n if (!onSelectionChanged) return;\n\n const newSelectionState =\n typeof onUpdate === 'function' ? onUpdate(internalSelectionState) : onUpdate;\n\n const rowIds = Object.entries(newSelectionState)\n .filter(([, selected]) => selected)\n .map(([rowId]) => rowId);\n\n onSelectionChanged(rowIds);\n },\n [onSelectionChanged, internalSelectionState],\n );\n\n // Controls whether a given row can be selected or not. If selection is disabled, we tell the TanStack table\n // to consider every row \"un-selectable\". Otherwise, we defer to whether or not a row is present within the\n // array of disabled row ID's.\n const enableRowSelection = useMemo(() => {\n if (selectedRows === undefined || onSelectionChanged === undefined) {\n return false;\n }\n\n return (row: Row<any>) => !disabledRows?.includes(row.id);\n }, [selectedRows, onSelectionChanged, disabledRows]);\n\n const enableMultiRowSelection = useMemo(() => {\n if (!enableRowSelection) {\n return false;\n }\n return selectionMode === 'multiple';\n }, [enableRowSelection, selectionMode]);\n\n return {\n enableRowSelection,\n enableMultiRowSelection,\n rowSelection: internalSelectionState,\n onRowSelectionChange: setInternalSelectionState,\n };\n};\n"],"names":["useMemo","useCallback"],"mappings":";;;;AAYA;;AAEG;AACI,MAAM,iBAAiB,GAAG,CAAC,EAChC,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,kBAAkB,GACA,KAAI;AACtB,IAAA,MAAM,sBAAsB,GAAsBA,aAAO,CAAC,MAAK;AAC7D,QAAA,IAAI,CAAC,YAAY,IAAI,CAAC,kBAAkB;AAAE,YAAA,OAAO,EAAE;QAEnD,OAAO,YAAY,CAAC,MAAM,CACxB,CAAC,GAAG,EAAE,KAAK,MAAM;AACf,YAAA,GAAG,GAAG;YACN,CAAC,KAAK,GAAG,IAAI;SACd,CAAC,EACF,EAAE,CACH;;AAEH,KAAC,EAAE,CAAC,YAAY,CAAC,CAAC;AAElB,IAAA,MAAM,yBAAyB,GAAkCC,iBAAW,CAC1E,CAAC,QAAQ,KAAI;AACX,QAAA,IAAI,CAAC,kBAAkB;YAAE;AAEzB,QAAA,MAAM,iBAAiB,GACrB,OAAO,QAAQ,KAAK,UAAU,GAAG,QAAQ,CAAC,sBAAsB,CAAC,GAAG,QAAQ;AAE9E,QAAA,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,iBAAiB;aAC5C,MAAM,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,QAAQ;aACjC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC;QAE1B,kBAAkB,CAAC,MAAM,CAAC;AAC5B,KAAC,EACD,CAAC,kBAAkB,EAAE,sBAAsB,CAAC,CAC7C;;;;AAKD,IAAA,MAAM,kBAAkB,GAAGD,aAAO,CAAC,MAAK;AACtC,QAAA,IAAI,YAAY,KAAK,SAAS,IAAI,kBAAkB,KAAK,SAAS,EAAE;AAClE,YAAA,OAAO,KAAK;AACb;QAED,OAAO,CAAC,GAAa,KAAK,EAAC,YAAY,KAAZ,IAAA,IAAA,YAAY,6BAAZ,YAAY,CAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;KAC1D,EAAE,CAAC,YAAY,EAAE,kBAAkB,EAAE,YAAY,CAAC,CAAC;AAEpD,IAAA,MAAM,uBAAuB,GAAGA,aAAO,CAAC,MAAK;QAC3C,IAAI,CAAC,kBAAkB,EAAE;AACvB,YAAA,OAAO,KAAK;AACb;QACD,OAAO,aAAa,KAAK,UAAU;AACrC,KAAC,EAAE,CAAC,kBAAkB,EAAE,aAAa,CAAC,CAAC;IAEvC,OAAO;QACL,kBAAkB;QAClB,uBAAuB;AACvB,QAAA,YAAY,EAAE,sBAAsB;AACpC,QAAA,oBAAoB,EAAE,yBAAyB;KAChD;AACH;;;;"}
@@ -0,0 +1,18 @@
1
+ import { OnChangeFn, Row, RowSelectionState } from '@tanstack/react-table';
2
+ import { SelectionMode } from '../types/enums';
3
+ type UseSelectionProps = {
4
+ selectionMode?: SelectionMode;
5
+ selectedRows?: string[];
6
+ disabledRows?: string[];
7
+ onSelectionChanged?: (rowIds: string[]) => void;
8
+ };
9
+ /**
10
+ * Hook which manages interop between selection props and the internal TanStack selection state.
11
+ */
12
+ export declare const useSelectionState: ({ selectionMode, selectedRows, disabledRows, onSelectionChanged, }: UseSelectionProps) => {
13
+ enableRowSelection: boolean | ((row: Row<any>) => boolean);
14
+ enableMultiRowSelection: boolean;
15
+ rowSelection: RowSelectionState;
16
+ onRowSelectionChange: OnChangeFn<RowSelectionState>;
17
+ };
18
+ export {};
@@ -0,0 +1,49 @@
1
+ import { useMemo, useCallback } from 'react';
2
+
3
+ /**
4
+ * Hook which manages interop between selection props and the internal TanStack selection state.
5
+ */
6
+ const useSelectionState = ({ selectionMode, selectedRows, disabledRows, onSelectionChanged, }) => {
7
+ const internalSelectionState = useMemo(() => {
8
+ if (!selectedRows || !onSelectionChanged)
9
+ return {};
10
+ return selectedRows.reduce((acc, rowId) => ({
11
+ ...acc,
12
+ [rowId]: true,
13
+ }), {});
14
+ // eslint-disable-next-line react-hooks/exhaustive-deps
15
+ }, [selectedRows]);
16
+ const setInternalSelectionState = useCallback((onUpdate) => {
17
+ if (!onSelectionChanged)
18
+ return;
19
+ const newSelectionState = typeof onUpdate === 'function' ? onUpdate(internalSelectionState) : onUpdate;
20
+ const rowIds = Object.entries(newSelectionState)
21
+ .filter(([, selected]) => selected)
22
+ .map(([rowId]) => rowId);
23
+ onSelectionChanged(rowIds);
24
+ }, [onSelectionChanged, internalSelectionState]);
25
+ // Controls whether a given row can be selected or not. If selection is disabled, we tell the TanStack table
26
+ // to consider every row "un-selectable". Otherwise, we defer to whether or not a row is present within the
27
+ // array of disabled row ID's.
28
+ const enableRowSelection = useMemo(() => {
29
+ if (selectedRows === undefined || onSelectionChanged === undefined) {
30
+ return false;
31
+ }
32
+ return (row) => !(disabledRows === null || disabledRows === undefined ? undefined : disabledRows.includes(row.id));
33
+ }, [selectedRows, onSelectionChanged, disabledRows]);
34
+ const enableMultiRowSelection = useMemo(() => {
35
+ if (!enableRowSelection) {
36
+ return false;
37
+ }
38
+ return selectionMode === 'multiple';
39
+ }, [enableRowSelection, selectionMode]);
40
+ return {
41
+ enableRowSelection,
42
+ enableMultiRowSelection,
43
+ rowSelection: internalSelectionState,
44
+ onRowSelectionChange: setInternalSelectionState,
45
+ };
46
+ };
47
+
48
+ export { useSelectionState };
49
+ //# sourceMappingURL=useSelectionState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSelectionState.js","sources":["../../../../src/components/DataGrid/hooks/useSelectionState.ts"],"sourcesContent":["import { useCallback, useMemo } from 'react';\n\nimport { OnChangeFn, Row, RowSelectionState } from '@tanstack/react-table';\nimport { SelectionMode } from '../types/enums';\n\ntype UseSelectionProps = {\n selectionMode?: SelectionMode;\n selectedRows?: string[];\n disabledRows?: string[];\n onSelectionChanged?: (rowIds: string[]) => void;\n};\n\n/**\n * Hook which manages interop between selection props and the internal TanStack selection state.\n */\nexport const useSelectionState = ({\n selectionMode,\n selectedRows,\n disabledRows,\n onSelectionChanged,\n}: UseSelectionProps) => {\n const internalSelectionState: RowSelectionState = useMemo(() => {\n if (!selectedRows || !onSelectionChanged) return {};\n\n return selectedRows.reduce(\n (acc, rowId) => ({\n ...acc,\n [rowId]: true,\n }),\n {},\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [selectedRows]);\n\n const setInternalSelectionState: OnChangeFn<RowSelectionState> = useCallback(\n (onUpdate) => {\n if (!onSelectionChanged) return;\n\n const newSelectionState =\n typeof onUpdate === 'function' ? onUpdate(internalSelectionState) : onUpdate;\n\n const rowIds = Object.entries(newSelectionState)\n .filter(([, selected]) => selected)\n .map(([rowId]) => rowId);\n\n onSelectionChanged(rowIds);\n },\n [onSelectionChanged, internalSelectionState],\n );\n\n // Controls whether a given row can be selected or not. If selection is disabled, we tell the TanStack table\n // to consider every row \"un-selectable\". Otherwise, we defer to whether or not a row is present within the\n // array of disabled row ID's.\n const enableRowSelection = useMemo(() => {\n if (selectedRows === undefined || onSelectionChanged === undefined) {\n return false;\n }\n\n return (row: Row<any>) => !disabledRows?.includes(row.id);\n }, [selectedRows, onSelectionChanged, disabledRows]);\n\n const enableMultiRowSelection = useMemo(() => {\n if (!enableRowSelection) {\n return false;\n }\n return selectionMode === 'multiple';\n }, [enableRowSelection, selectionMode]);\n\n return {\n enableRowSelection,\n enableMultiRowSelection,\n rowSelection: internalSelectionState,\n onRowSelectionChange: setInternalSelectionState,\n };\n};\n"],"names":[],"mappings":";;AAYA;;AAEG;AACI,MAAM,iBAAiB,GAAG,CAAC,EAChC,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,kBAAkB,GACA,KAAI;AACtB,IAAA,MAAM,sBAAsB,GAAsB,OAAO,CAAC,MAAK;AAC7D,QAAA,IAAI,CAAC,YAAY,IAAI,CAAC,kBAAkB;AAAE,YAAA,OAAO,EAAE;QAEnD,OAAO,YAAY,CAAC,MAAM,CACxB,CAAC,GAAG,EAAE,KAAK,MAAM;AACf,YAAA,GAAG,GAAG;YACN,CAAC,KAAK,GAAG,IAAI;SACd,CAAC,EACF,EAAE,CACH;;AAEH,KAAC,EAAE,CAAC,YAAY,CAAC,CAAC;AAElB,IAAA,MAAM,yBAAyB,GAAkC,WAAW,CAC1E,CAAC,QAAQ,KAAI;AACX,QAAA,IAAI,CAAC,kBAAkB;YAAE;AAEzB,QAAA,MAAM,iBAAiB,GACrB,OAAO,QAAQ,KAAK,UAAU,GAAG,QAAQ,CAAC,sBAAsB,CAAC,GAAG,QAAQ;AAE9E,QAAA,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,iBAAiB;aAC5C,MAAM,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,QAAQ;aACjC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC;QAE1B,kBAAkB,CAAC,MAAM,CAAC;AAC5B,KAAC,EACD,CAAC,kBAAkB,EAAE,sBAAsB,CAAC,CAC7C;;;;AAKD,IAAA,MAAM,kBAAkB,GAAG,OAAO,CAAC,MAAK;AACtC,QAAA,IAAI,YAAY,KAAK,SAAS,IAAI,kBAAkB,KAAK,SAAS,EAAE;AAClE,YAAA,OAAO,KAAK;AACb;QAED,OAAO,CAAC,GAAa,KAAK,EAAC,YAAY,KAAZ,IAAA,IAAA,YAAY,6BAAZ,YAAY,CAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;KAC1D,EAAE,CAAC,YAAY,EAAE,kBAAkB,EAAE,YAAY,CAAC,CAAC;AAEpD,IAAA,MAAM,uBAAuB,GAAG,OAAO,CAAC,MAAK;QAC3C,IAAI,CAAC,kBAAkB,EAAE;AACvB,YAAA,OAAO,KAAK;AACb;QACD,OAAO,aAAa,KAAK,UAAU;AACrC,KAAC,EAAE,CAAC,kBAAkB,EAAE,aAAa,CAAC,CAAC;IAEvC,OAAO;QACL,kBAAkB;QAClB,uBAAuB;AACvB,QAAA,YAAY,EAAE,sBAAsB;AACpC,QAAA,oBAAoB,EAAE,yBAAyB;KAChD;AACH;;;;"}
@@ -0,0 +1,40 @@
1
+ 'use strict';
2
+
3
+ var React = require('react');
4
+
5
+ /**
6
+ * Hook which manages interop between sorting props and the internal TanStack sorting state.
7
+ */
8
+ const useSortingState = ({ columns, sortState, onSortChanged }) => {
9
+ const internalSortState = React.useMemo(() => {
10
+ if (!sortState || !onSortChanged)
11
+ return undefined;
12
+ return [{ id: sortState.columnId, desc: sortState.direction === 'desc' }];
13
+ // eslint-disable-next-line react-hooks/exhaustive-deps
14
+ }, [sortState]);
15
+ const setInternalSortState = React.useCallback((onUpdate) => {
16
+ if (!onSortChanged)
17
+ return;
18
+ // TanStack can either pass us a functional updater method, or the new sort object directly.
19
+ const newSortState = typeof onUpdate === 'function' ? onUpdate(internalSortState) : onUpdate;
20
+ if (!newSortState || newSortState.length === 0)
21
+ return;
22
+ const [{ id, desc }] = newSortState;
23
+ onSortChanged({
24
+ columnId: id,
25
+ direction: desc ? 'desc' : 'asc',
26
+ });
27
+ }, [onSortChanged, internalSortState]);
28
+ const enableSorting = React.useMemo(() => onSortChanged !== undefined && columns.some((column) => column.sortable), [columns, onSortChanged]);
29
+ return {
30
+ enableSorting,
31
+ sorting: internalSortState,
32
+ onSortingChange: setInternalSortState,
33
+ manualSorting: true,
34
+ enableSortingRemoval: false,
35
+ enableMultiRemove: false,
36
+ };
37
+ };
38
+
39
+ exports.useSortingState = useSortingState;
40
+ //# sourceMappingURL=useSortingState.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSortingState.cjs","sources":["../../../../src/components/DataGrid/hooks/useSortingState.ts"],"sourcesContent":["import { useCallback, useMemo } from 'react';\n\nimport { OnChangeFn, SortingState } from '@tanstack/react-table';\n\nimport { ColumnDefinition } from '../types';\nimport { SortState } from '../types/SortState';\n\ntype UseSortingStateProps = {\n columns: ColumnDefinition<any>[];\n\n sortState?: SortState;\n onSortChanged?: (sortState: SortState) => void;\n};\n\n/**\n * Hook which manages interop between sorting props and the internal TanStack sorting state.\n */\nexport const useSortingState = ({ columns, sortState, onSortChanged }: UseSortingStateProps) => {\n const internalSortState = useMemo(() => {\n if (!sortState || !onSortChanged) return undefined;\n\n return [{ id: sortState.columnId, desc: sortState.direction === 'desc' }];\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [sortState]);\n\n const setInternalSortState: OnChangeFn<SortingState> = useCallback(\n (onUpdate) => {\n if (!onSortChanged) return;\n\n // TanStack can either pass us a functional updater method, or the new sort object directly.\n const newSortState =\n typeof onUpdate === 'function' ? onUpdate(internalSortState as SortingState) : onUpdate;\n\n if (!newSortState || newSortState.length === 0) return;\n\n const [{ id, desc }] = newSortState;\n\n onSortChanged({\n columnId: id,\n direction: desc ? 'desc' : 'asc',\n });\n },\n [onSortChanged, internalSortState],\n );\n\n const enableSorting = useMemo(\n () => onSortChanged !== undefined && columns.some((column) => column.sortable),\n [columns, onSortChanged],\n );\n\n return {\n enableSorting,\n sorting: internalSortState,\n onSortingChange: setInternalSortState,\n\n manualSorting: true,\n enableSortingRemoval: false,\n enableMultiRemove: false,\n };\n};\n"],"names":["useMemo","useCallback"],"mappings":";;;;AAcA;;AAEG;AACI,MAAM,eAAe,GAAG,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAwB,KAAI;AAC7F,IAAA,MAAM,iBAAiB,GAAGA,aAAO,CAAC,MAAK;AACrC,QAAA,IAAI,CAAC,SAAS,IAAI,CAAC,aAAa;AAAE,YAAA,OAAO,SAAS;AAElD,QAAA,OAAO,CAAC,EAAE,EAAE,EAAE,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,SAAS,CAAC,SAAS,KAAK,MAAM,EAAE,CAAC;;AAE3E,KAAC,EAAE,CAAC,SAAS,CAAC,CAAC;AAEf,IAAA,MAAM,oBAAoB,GAA6BC,iBAAW,CAChE,CAAC,QAAQ,KAAI;AACX,QAAA,IAAI,CAAC,aAAa;YAAE;;AAGpB,QAAA,MAAM,YAAY,GAChB,OAAO,QAAQ,KAAK,UAAU,GAAG,QAAQ,CAAC,iBAAiC,CAAC,GAAG,QAAQ;AAEzF,QAAA,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;YAAE;QAEhD,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,GAAG,YAAY;AAEnC,QAAA,aAAa,CAAC;AACZ,YAAA,QAAQ,EAAE,EAAE;YACZ,SAAS,EAAE,IAAI,GAAG,MAAM,GAAG,KAAK;AACjC,SAAA,CAAC;AACJ,KAAC,EACD,CAAC,aAAa,EAAE,iBAAiB,CAAC,CACnC;AAED,IAAA,MAAM,aAAa,GAAGD,aAAO,CAC3B,MAAM,aAAa,KAAK,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,QAAQ,CAAC,EAC9E,CAAC,OAAO,EAAE,aAAa,CAAC,CACzB;IAED,OAAO;QACL,aAAa;AACb,QAAA,OAAO,EAAE,iBAAiB;AAC1B,QAAA,eAAe,EAAE,oBAAoB;AAErC,QAAA,aAAa,EAAE,IAAI;AACnB,QAAA,oBAAoB,EAAE,KAAK;AAC3B,QAAA,iBAAiB,EAAE,KAAK;KACzB;AACH;;;;"}
@@ -0,0 +1,23 @@
1
+ import { OnChangeFn, SortingState } from '@tanstack/react-table';
2
+ import { ColumnDefinition } from '../types';
3
+ import { SortState } from '../types/SortState';
4
+ type UseSortingStateProps = {
5
+ columns: ColumnDefinition<any>[];
6
+ sortState?: SortState;
7
+ onSortChanged?: (sortState: SortState) => void;
8
+ };
9
+ /**
10
+ * Hook which manages interop between sorting props and the internal TanStack sorting state.
11
+ */
12
+ export declare const useSortingState: ({ columns, sortState, onSortChanged }: UseSortingStateProps) => {
13
+ enableSorting: boolean;
14
+ sorting: {
15
+ id: string;
16
+ desc: boolean;
17
+ }[] | undefined;
18
+ onSortingChange: OnChangeFn<SortingState>;
19
+ manualSorting: boolean;
20
+ enableSortingRemoval: boolean;
21
+ enableMultiRemove: boolean;
22
+ };
23
+ export {};