diff --git a/CHANGELOG.md b/CHANGELOG.md index 5e6fb28..362abce 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,10 @@ The following is a list of notable changes to the Mantine DataTable component. Minor versions that are not listed in the changelog are bug fixes and small improvements. +## 6.0.5 (2023-11-07) + +- Implement `pinLastColumn` feature + ## 6.0.0 (2023-10-01) - Bump version to 6.0.0 to match the compatible versions of `@mantine/hooks` and `@mantine/core`. From now on, let's keep the major version of `mantine-datatable` in sync with the major version of Mantine core diff --git a/docs/components/AppPartners.tsx b/docs/components/AppPartners.tsx index cded06a..142acda 100644 --- a/docs/components/AppPartners.tsx +++ b/docs/components/AppPartners.tsx @@ -21,6 +21,11 @@ const PARTNERS = [ logo: { base: 'markup', ext: 'png', themed: true, scale: 72 }, link: 'https://www.getmarkup.com', }, + { + name: 'InvenTree', + logo: { base: 'inventree', ext: 'png', themed: true, scale: 140, shift: 1 }, + link: 'https://inventree.org', + }, { name: 'BookieBase', logo: { base: 'bookiebase', ext: 'svg', themed: true, scale: 72, shift: 2 }, diff --git a/docs/config.ts b/docs/config.ts index 10e92de..4f098be 100644 --- a/docs/config.ts +++ b/docs/config.ts @@ -181,6 +181,11 @@ export const PAGES: ({ external?: true; title: string; color?: MantineColor; des title: 'Row actions cell', description: 'Example: how to implement a row actions cell on Mantine DataTable', }, + { + path: 'pinning-the-last-column', + title: 'Pinning the last column', + description: 'Example: how to pin the last column on Mantine DataTable', + }, { path: 'links-or-buttons-inside-clickable-rows-or-cells', title: 'Links or buttons inside clickable rows/cells', diff --git a/docs/examples/PinLastColumnExample.tsx b/docs/examples/PinLastColumnExample.tsx new file mode 100644 index 0000000..3e2d36e --- /dev/null +++ b/docs/examples/PinLastColumnExample.tsx @@ -0,0 +1,96 @@ +import { ActionIcon, Box, Button, Grid, Group, Stack, Text } from '@mantine/core'; +import { closeModal, openModal } from '@mantine/modals'; +import { IconEdit, IconEye, IconTrash } from '@tabler/icons-react'; +import { DataTable } from 'mantine-datatable'; +import { employees, type Employee } from '~/data'; + +const records = employees.slice(0, 5); + +const showModal = ({ employee, action }: { employee: Employee; action: 'view' | 'edit' | 'delete' }) => { + openModal({ + modalId: action, + title: + action === 'view' + ? 'Showing company information' + : action === 'edit' + ? 'Editing company information' + : 'Deleting company', + children: ( + + + {action === 'view' + ? 'Here’s where you could show more information...' + : action === 'edit' + ? 'Here’s where you could put an edit form...' + : 'Here’s where you could ask for confirmation before deleting...'} + + + ID + {employee.id} + First name + {employee.firstName} + Last name + {employee.lastName} + + + + ), + }); +}; + +export default function PinLastColumnExample() { + // example-start + return ( + Row actions, + textAlignment: 'right', + render: (employee) => ( + // example-skip action cells custom rendering + + showModal({ employee, action: 'view' })} + > + + + showModal({ employee, action: 'edit' })} + > + + + showModal({ employee, action: 'delete' })} + > + + + + // example-resume + ), + }, + ]} + records={records} + /> + ); + // example-end +} diff --git a/docs/package.json b/docs/package.json index b1ea8ed..62ee5cc 100644 --- a/docs/package.json +++ b/docs/package.json @@ -1,6 +1,6 @@ { "name": "mantine-datatable-docs", - "version": "6.0.4", + "version": "6.0.5", "description": "Docs website for mantine-datatable; see ../package/package.json for more info", "private": true, "scripts": { @@ -14,7 +14,7 @@ "@emotion/react": "^11.11.1", "@emotion/server": "^11.11.0", "@faker-js/faker": "^8.2.0", - "@formkit/auto-animate": "^0.8.0", + "@formkit/auto-animate": "^0.8.1", "@mantine/core": "^6.0.21", "@mantine/dates": "^6.0.21", "@mantine/hooks": "^6.0.21", diff --git a/docs/pages/examples/pinning-the-last-column.tsx b/docs/pages/examples/pinning-the-last-column.tsx new file mode 100644 index 0000000..286f935 --- /dev/null +++ b/docs/pages/examples/pinning-the-last-column.tsx @@ -0,0 +1,49 @@ +import { Code, Container } from '@mantine/core'; +import { GetStaticProps, InferGetStaticPropsType } from 'next'; +import CodeBlock from '~/components/CodeBlock'; +import InternalLink from '~/components/InternalLink'; +import PageNavigation from '~/components/PageNavigation'; +import PageText from '~/components/PageText'; +import PageTitle from '~/components/PageTitle'; +import PinLastColumnExample from '~/examples/PinLastColumnExample'; +import readCodeExample from '~/lib/readCodeExample'; + +const PATH = 'examples/pinning-the-last-column'; + +export const getStaticProps: GetStaticProps<{ + code: string; +}> = async () => ({ + props: { code: (await readCodeExample('examples/PinLastColumnExample.tsx')) as string }, +}); + +export default function Page({ code }: InferGetStaticPropsType) { + return ( + + + + You may have noticed that when you are using{' '} + row selection and the table needs to scroll + horizontally, the checkbox column is always visible. This is because the checkbox column is pinned to the left + side of the table. + + + In the same way, pinning the last column to the right side of the table could be useful when you have a table + with many columns and you want to make sure the last column is always visible, even when the table is scrolled + horizontally. For instance, you could use this feature to ensure that the{' '} + row actions are always visible. + + + You can achieve this by setting the pinLastColumn DataTable prop to true: + + + Here is the code: + + + Combining this feature with column grouping may lead + to minor visual artifacts. + + Head over to the next example to discover more features. + + + ); +} diff --git a/docs/public/partners/inventree-dark.png b/docs/public/partners/inventree-dark.png new file mode 100644 index 0000000..d9a3809 Binary files /dev/null and b/docs/public/partners/inventree-dark.png differ diff --git a/docs/public/partners/inventree-light.png b/docs/public/partners/inventree-light.png new file mode 100644 index 0000000..9236fbf Binary files /dev/null and b/docs/public/partners/inventree-light.png differ diff --git a/package.json b/package.json index 5b44ada..1d1d957 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "mantine-datatable-turborepo", - "version": "6.0.4", + "version": "6.0.5", "description": "Monorepo for mantine-datatable; see package/package.json for more info", "private": true, "workspaces": [ @@ -27,8 +27,8 @@ "@testing-library/react-hooks": "^8.0.1", "@testing-library/user-event": "^14.5.1", "@types/jest": "^29.5.7", - "@typescript-eslint/eslint-plugin": "^6.9.1", - "@typescript-eslint/parser": "^6.9.1", + "@typescript-eslint/eslint-plugin": "^6.10.0", + "@typescript-eslint/parser": "^6.10.0", "babel-jest": "^29.7.0", "eslint": "^8.53.0", "eslint-config-next": "^14.0.1", diff --git a/package/DataTable.tsx b/package/DataTable.tsx index e1ebc37..a8df8d3 100644 --- a/package/DataTable.tsx +++ b/package/DataTable.tsx @@ -1,4 +1,4 @@ -import { Box, MantineSize, Portal, Table, createStyles, packSx, type MantineTheme } from '@mantine/core'; +import { Box, MantineSize, Portal, Table, createStyles, packSx, px, type MantineTheme } from '@mantine/core'; import { useMergedRef } from '@mantine/hooks'; import { useCallback, @@ -39,6 +39,7 @@ const useStyles = createStyles( ) => { const borderColorValue = typeof borderColor === 'function' ? borderColor(theme) : borderColor; const rowBorderColorValue = typeof rowBorderColor === 'function' ? rowBorderColor(theme) : rowBorderColor; + const shadowGradientAlpha = theme.colorScheme === 'dark' ? 0.5 : 0.05; return { root: { @@ -101,6 +102,40 @@ const useStyles = createStyles( verticalAlign: 'bottom', }, }, + pinLastColumn: { + 'th:last-of-type, td:last-of-type': { + position: 'sticky', + right: 0, + zIndex: 1, + background: 'inherit', + '&::after': { + content: "''", + position: 'absolute', + top: 0, + bottom: 0, + width: theme.spacing.sm, + background: `linear-gradient(to left, ${theme.fn.rgba(theme.black, shadowGradientAlpha)}, ${theme.fn.rgba( + theme.black, + 0 + )}), linear-gradient(to left, ${theme.fn.rgba(theme.black, shadowGradientAlpha)}, ${theme.fn.rgba( + theme.black, + 0 + )} 30%)`, + borderRight: `1px solid ${theme.colorScheme === 'dark' ? theme.colors.dark[4] : theme.colors.gray[3]}`, + left: -px(theme.spacing.sm), + pointerEvents: 'none', + opacity: 0, + transition: `opacity 0.2s`, + }, + }, + }, + pinnedColumnShadowVisible: { + 'th:last-of-type, td:last-of-type': { + '&::after': { + opacity: 1, + }, + }, + }, }; } ); @@ -120,6 +155,7 @@ export default function DataTable({ fetching, columns, groups, + pinLastColumn, defaultColumnProps, defaultColumnRender, idAccessor = 'id', @@ -332,7 +368,7 @@ export default function DataTable({ viewportRef={useMergedRef(scrollViewportRef, scrollViewportRefProp || null)} topShadowVisible={!scrolledToTop} leftShadowVisible={!(selectedRecords || scrolledToLeft)} - rightShadowVisible={!scrolledToRight} + rightShadowVisible={!scrolledToRight && !pinLastColumn} bottomShadowVisible={!scrolledToBottom} headerHeight={headerHeight} footerHeight={footerHeight} @@ -349,6 +385,8 @@ export default function DataTable({ [classes.verticalAlignmentTop]: verticalAlignment === 'top', [classes.verticalAlignmentBottom]: verticalAlignment === 'bottom', [classes.tableWithColumnBordersAndSelectableRecords]: selectionColumnVisible && withColumnBorders, + [classes.pinLastColumn]: pinLastColumn, + [classes.pinnedColumnShadowVisible]: pinLastColumn && !scrolledToRight, })} striped={recordsLength ? striped : false} {...otherProps} diff --git a/package/package.json b/package/package.json index 51d5259..8a99bbf 100644 --- a/package/package.json +++ b/package/package.json @@ -1,6 +1,6 @@ { "name": "mantine-datatable", - "version": "6.0.4", + "version": "6.0.5", "description": "The dependency-free datatable component for Mantine UI, featuring asynchronous data loading support, pagination, multple rows selection, column sorting, custom cell data rendering, row context menu, row expansion and more", "keywords": [ "mantine", diff --git a/package/types/DataTableProps.ts b/package/types/DataTableProps.ts index 502abf8..bedb227 100644 --- a/package/types/DataTableProps.ts +++ b/package/types/DataTableProps.ts @@ -64,6 +64,11 @@ export type DataTableProps = { */ fetching?: boolean; + /** + * If true, the last column will be pinned to the right side of the table. + */ + pinLastColumn?: boolean; + /** * Default column props; will be merged with column props provided to each column */ diff --git a/yarn.lock b/yarn.lock index 80726fa..9c3899e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1580,10 +1580,10 @@ resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.1.1.tgz#1a5b1959a528e374e8037c4396c3e825d6cf4a83" integrity sha512-m0G6wlnhm/AX0H12IOWtK8gASEMffnX08RtKkCgTdHb9JpHKGloI7icFfLg9ZmQeavcvR0PKmzxClyuFPSjKWw== -"@formkit/auto-animate@^0.8.0": - version "0.8.0" - resolved "https://registry.yarnpkg.com/@formkit/auto-animate/-/auto-animate-0.8.0.tgz#da55124e665573ef3c5ace1099f1f1702a5cec87" - integrity sha512-G8f7489ka0mWyi+1IEZT+xgIwcpWtRMmE2x+IrVoQ+KM1cP6VDj/TbujZjwxdb0P8w8b16/qBfViRmydbYHwMw== +"@formkit/auto-animate@^0.8.1": + version "0.8.1" + resolved "https://registry.yarnpkg.com/@formkit/auto-animate/-/auto-animate-0.8.1.tgz#bcaba2969609ca3a7453eacd42b383a2739dfa35" + integrity sha512-0/Z2cuNXWVVIG/l0SpcHAWFhGdvLJ8DRvEfRWvmojtmRWfEy+LWNwgDazbZqY0qQYtkHcoEK3jBLkhiZaB/4Ig== "@humanwhocodes/config-array@^0.11.13": version "0.11.13" @@ -2519,16 +2519,16 @@ dependencies: "@types/yargs-parser" "*" -"@typescript-eslint/eslint-plugin@^6.9.1": - version "6.9.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.9.1.tgz#d8ce497dc0ed42066e195c8ecc40d45c7b1254f4" - integrity sha512-w0tiiRc9I4S5XSXXrMHOWgHgxbrBn1Ro+PmiYhSg2ZVdxrAJtQgzU5o2m1BfP6UOn7Vxcc6152vFjQfmZR4xEg== +"@typescript-eslint/eslint-plugin@^6.10.0": + version "6.10.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.10.0.tgz#cfe2bd34e26d2289212946b96ab19dcad64b661a" + integrity sha512-uoLj4g2OTL8rfUQVx2AFO1hp/zja1wABJq77P6IclQs6I/m9GLrm7jCdgzZkvWdDCQf1uEvoa8s8CupsgWQgVg== dependencies: "@eslint-community/regexpp" "^4.5.1" - "@typescript-eslint/scope-manager" "6.9.1" - "@typescript-eslint/type-utils" "6.9.1" - "@typescript-eslint/utils" "6.9.1" - "@typescript-eslint/visitor-keys" "6.9.1" + "@typescript-eslint/scope-manager" "6.10.0" + "@typescript-eslint/type-utils" "6.10.0" + "@typescript-eslint/utils" "6.10.0" + "@typescript-eslint/visitor-keys" "6.10.0" debug "^4.3.4" graphemer "^1.4.0" ignore "^5.2.4" @@ -2547,17 +2547,25 @@ "@typescript-eslint/visitor-keys" "6.3.0" debug "^4.3.4" -"@typescript-eslint/parser@^6.9.1": - version "6.9.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.9.1.tgz#4f685f672f8b9580beb38d5fb99d52fc3e34f7a3" - integrity sha512-C7AK2wn43GSaCUZ9do6Ksgi2g3mwFkMO3Cis96kzmgudoVaKyt62yNzJOktP0HDLb/iO2O0n2lBOzJgr6Q/cyg== +"@typescript-eslint/parser@^6.10.0": + version "6.10.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.10.0.tgz#578af79ae7273193b0b6b61a742a2bc8e02f875a" + integrity sha512-+sZwIj+s+io9ozSxIWbNB5873OSdfeBEH/FR0re14WLI6BaKuSOnnwCJ2foUiu8uXf4dRp1UqHP0vrZ1zXGrog== dependencies: - "@typescript-eslint/scope-manager" "6.9.1" - "@typescript-eslint/types" "6.9.1" - "@typescript-eslint/typescript-estree" "6.9.1" - "@typescript-eslint/visitor-keys" "6.9.1" + "@typescript-eslint/scope-manager" "6.10.0" + "@typescript-eslint/types" "6.10.0" + "@typescript-eslint/typescript-estree" "6.10.0" + "@typescript-eslint/visitor-keys" "6.10.0" debug "^4.3.4" +"@typescript-eslint/scope-manager@6.10.0": + version "6.10.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.10.0.tgz#b0276118b13d16f72809e3cecc86a72c93708540" + integrity sha512-TN/plV7dzqqC2iPNf1KrxozDgZs53Gfgg5ZHyw8erd6jd5Ta/JIEcdCheXFt9b1NYb93a1wmIIVW/2gLkombDg== + dependencies: + "@typescript-eslint/types" "6.10.0" + "@typescript-eslint/visitor-keys" "6.10.0" + "@typescript-eslint/scope-manager@6.3.0": version "6.3.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.3.0.tgz#6b74e338c4b88d5e1dfc1a28c570dd5cf8c86b09" @@ -2566,73 +2574,73 @@ "@typescript-eslint/types" "6.3.0" "@typescript-eslint/visitor-keys" "6.3.0" -"@typescript-eslint/scope-manager@6.9.1": - version "6.9.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.9.1.tgz#e96afeb9a68ad1cd816dba233351f61e13956b75" - integrity sha512-38IxvKB6NAne3g/+MyXMs2Cda/Sz+CEpmm+KLGEM8hx/CvnSRuw51i8ukfwB/B/sESdeTGet1NH1Wj7I0YXswg== +"@typescript-eslint/type-utils@6.10.0": + version "6.10.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.10.0.tgz#1007faede067c78bdbcef2e8abb31437e163e2e1" + integrity sha512-wYpPs3hgTFblMYwbYWPT3eZtaDOjbLyIYuqpwuLBBqhLiuvJ+9sEp2gNRJEtR5N/c9G1uTtQQL5AhV0fEPJYcg== dependencies: - "@typescript-eslint/types" "6.9.1" - "@typescript-eslint/visitor-keys" "6.9.1" - -"@typescript-eslint/type-utils@6.9.1": - version "6.9.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.9.1.tgz#efd5db20ed35a74d3c7d8fba51b830ecba09ce32" - integrity sha512-eh2oHaUKCK58qIeYp19F5V5TbpM52680sB4zNSz29VBQPTWIlE/hCj5P5B1AChxECe/fmZlspAWFuRniep1Skg== - dependencies: - "@typescript-eslint/typescript-estree" "6.9.1" - "@typescript-eslint/utils" "6.9.1" + "@typescript-eslint/typescript-estree" "6.10.0" + "@typescript-eslint/utils" "6.10.0" debug "^4.3.4" ts-api-utils "^1.0.1" +"@typescript-eslint/types@6.10.0": + version "6.10.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.10.0.tgz#f4f0a84aeb2ac546f21a66c6e0da92420e921367" + integrity sha512-36Fq1PWh9dusgo3vH7qmQAj5/AZqARky1Wi6WpINxB6SkQdY5vQoT2/7rW7uBIsPDcvvGCLi4r10p0OJ7ITAeg== + "@typescript-eslint/types@6.3.0": version "6.3.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.3.0.tgz#84517f1427923e714b8418981e493b6635ab4c9d" integrity sha512-K6TZOvfVyc7MO9j60MkRNWyFSf86IbOatTKGrpTQnzarDZPYPVy0oe3myTMq7VjhfsUAbNUW8I5s+2lZvtx1gg== -"@typescript-eslint/types@6.9.1": - version "6.9.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.9.1.tgz#a6cfc20db0fcedcb2f397ea728ef583e0ee72459" - integrity sha512-BUGslGOb14zUHOUmDB2FfT6SI1CcZEJYfF3qFwBeUrU6srJfzANonwRYHDpLBuzbq3HaoF2XL2hcr01c8f8OaQ== - -"@typescript-eslint/typescript-estree@6.3.0": - version "6.3.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.3.0.tgz#20e1e10e2f51cdb9e19a2751215cac92c003643c" - integrity sha512-Xh4NVDaC4eYKY4O3QGPuQNp5NxBAlEvNQYOqJquR2MePNxO11E5K3t5x4M4Mx53IZvtpW+mBxIT0s274fLUocg== +"@typescript-eslint/typescript-estree@6.10.0": + version "6.10.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.10.0.tgz#667381eed6f723a1a8ad7590a31f312e31e07697" + integrity sha512-ek0Eyuy6P15LJVeghbWhSrBCj/vJpPXXR+EpaRZqou7achUWL8IdYnMSC5WHAeTWswYQuP2hAZgij/bC9fanBg== dependencies: - "@typescript-eslint/types" "6.3.0" - "@typescript-eslint/visitor-keys" "6.3.0" + "@typescript-eslint/types" "6.10.0" + "@typescript-eslint/visitor-keys" "6.10.0" debug "^4.3.4" globby "^11.1.0" is-glob "^4.0.3" semver "^7.5.4" ts-api-utils "^1.0.1" -"@typescript-eslint/typescript-estree@6.9.1": - version "6.9.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.9.1.tgz#8c77910a49a04f0607ba94d78772da07dab275ad" - integrity sha512-U+mUylTHfcqeO7mLWVQ5W/tMLXqVpRv61wm9ZtfE5egz7gtnmqVIw9ryh0mgIlkKk9rZLY3UHygsBSdB9/ftyw== +"@typescript-eslint/typescript-estree@6.3.0": + version "6.3.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.3.0.tgz#20e1e10e2f51cdb9e19a2751215cac92c003643c" + integrity sha512-Xh4NVDaC4eYKY4O3QGPuQNp5NxBAlEvNQYOqJquR2MePNxO11E5K3t5x4M4Mx53IZvtpW+mBxIT0s274fLUocg== dependencies: - "@typescript-eslint/types" "6.9.1" - "@typescript-eslint/visitor-keys" "6.9.1" + "@typescript-eslint/types" "6.3.0" + "@typescript-eslint/visitor-keys" "6.3.0" debug "^4.3.4" globby "^11.1.0" is-glob "^4.0.3" semver "^7.5.4" ts-api-utils "^1.0.1" -"@typescript-eslint/utils@6.9.1": - version "6.9.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.9.1.tgz#763da41281ef0d16974517b5f0d02d85897a1c1e" - integrity sha512-L1T0A5nFdQrMVunpZgzqPL6y2wVreSyHhKGZryS6jrEN7bD9NplVAyMryUhXsQ4TWLnZmxc2ekar/lSGIlprCA== +"@typescript-eslint/utils@6.10.0": + version "6.10.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.10.0.tgz#4d76062d94413c30e402c9b0df8c14aef8d77336" + integrity sha512-v+pJ1/RcVyRc0o4wAGux9x42RHmAjIGzPRo538Z8M1tVx6HOnoQBCX/NoadHQlZeC+QO2yr4nNSFWOoraZCAyg== dependencies: "@eslint-community/eslint-utils" "^4.4.0" "@types/json-schema" "^7.0.12" "@types/semver" "^7.5.0" - "@typescript-eslint/scope-manager" "6.9.1" - "@typescript-eslint/types" "6.9.1" - "@typescript-eslint/typescript-estree" "6.9.1" + "@typescript-eslint/scope-manager" "6.10.0" + "@typescript-eslint/types" "6.10.0" + "@typescript-eslint/typescript-estree" "6.10.0" semver "^7.5.4" +"@typescript-eslint/visitor-keys@6.10.0": + version "6.10.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.10.0.tgz#b9eaf855a1ac7e95633ae1073af43d451e8f84e3" + integrity sha512-xMGluxQIEtOM7bqFCo+rCMh5fqI+ZxV5RUUOa29iVPz1OgCZrtc7rFnz5cLUazlkPKYqX+75iuDq7m0HQ48nCg== + dependencies: + "@typescript-eslint/types" "6.10.0" + eslint-visitor-keys "^3.4.1" + "@typescript-eslint/visitor-keys@6.3.0": version "6.3.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.3.0.tgz#8d09aa3e389ae0971426124c155ac289afbe450a" @@ -2641,14 +2649,6 @@ "@typescript-eslint/types" "6.3.0" eslint-visitor-keys "^3.4.1" -"@typescript-eslint/visitor-keys@6.9.1": - version "6.9.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.9.1.tgz#6753a9225a0ba00459b15d6456b9c2780b66707d" - integrity sha512-MUaPUe/QRLEffARsmNfmpghuQkW436DvESW+h+M52w0coICHRfD6Np9/K6PdACwnrq1HmuLl+cSPZaJmeVPkSw== - dependencies: - "@typescript-eslint/types" "6.9.1" - eslint-visitor-keys "^3.4.1" - "@ungap/structured-clone@^1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406"