From 0212cca8d3f4a0edc2582a55790cf00e86837412 Mon Sep 17 00:00:00 2001 From: Victor Fernandez de Alba Date: Sat, 15 Feb 2025 23:21:08 +0100 Subject: [PATCH] Convert it into an add-on. --- packages/contents/.eslintrc.cjs | 5 +++ packages/contents/.parcelrc | 9 ---- packages/contents/.release-it.json | 3 +- packages/contents/README.md | 5 +++ .../components/AddContentPopover.tsx | 0 .../{src => }/components/Contents.css | 0 .../{src => }/components/ContentsActions.tsx | 0 .../{src => }/components/ContentsCell.tsx | 4 +- .../{src => }/components/ContentsTable.tsx | 0 .../components/ItemActionsPopover.tsx | 0 .../{src => }/components/RearrangePopover.tsx | 0 .../components/TableIndexesPopover.tsx | 0 packages/contents/index.ts | 8 ++++ packages/contents/package.json | 16 ++++---- .../contents/{src => }/providers/contents.tsx | 2 +- packages/contents/setupTesting.ts | 3 ++ packages/contents/src/index.ts | 2 - packages/contents/tsconfig.json | 2 +- packages/contents/{src => }/types.d.ts | 0 packages/contents/vitest.config.ts | 14 +++++++ pnpm-lock.yaml | 41 +++++++++++++++---- 21 files changed, 82 insertions(+), 32 deletions(-) create mode 100644 packages/contents/.eslintrc.cjs delete mode 100644 packages/contents/.parcelrc rename packages/contents/{src => }/components/AddContentPopover.tsx (100%) rename packages/contents/{src => }/components/Contents.css (100%) rename packages/contents/{src => }/components/ContentsActions.tsx (100%) rename packages/contents/{src => }/components/ContentsCell.tsx (97%) rename packages/contents/{src => }/components/ContentsTable.tsx (100%) rename packages/contents/{src => }/components/ItemActionsPopover.tsx (100%) rename packages/contents/{src => }/components/RearrangePopover.tsx (100%) rename packages/contents/{src => }/components/TableIndexesPopover.tsx (100%) create mode 100644 packages/contents/index.ts rename packages/contents/{src => }/providers/contents.tsx (97%) create mode 100644 packages/contents/setupTesting.ts delete mode 100644 packages/contents/src/index.ts rename packages/contents/{src => }/types.d.ts (100%) create mode 100644 packages/contents/vitest.config.ts diff --git a/packages/contents/.eslintrc.cjs b/packages/contents/.eslintrc.cjs new file mode 100644 index 0000000000..18bae08069 --- /dev/null +++ b/packages/contents/.eslintrc.cjs @@ -0,0 +1,5 @@ +/** @type {import('eslint').Linter.Config} */ +module.exports = { + extends: ['../../.eslintrc.cjs', '../eslintconfig/addons.js'], + ignorePatterns: ['vitest.config.ts'], +}; diff --git a/packages/contents/.parcelrc b/packages/contents/.parcelrc deleted file mode 100644 index db2d15099d..0000000000 --- a/packages/contents/.parcelrc +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "@parcel/config-default", - "transformers": { - "*.{js,mjs,jsm,jsx,es6,cjs,ts,tsx}": [ - "@parcel/transformer-js", - "@parcel/transformer-react-refresh-wrap" - ] - } -} diff --git a/packages/contents/.release-it.json b/packages/contents/.release-it.json index 337d4342cd..247e2ca01d 100644 --- a/packages/contents/.release-it.json +++ b/packages/contents/.release-it.json @@ -4,7 +4,8 @@ }, "hooks": { "after:bump": [ - "pipx run towncrier build --draft --yes --version ${version} > .changelog.draft && pipx run towncrier build --yes --version ${version}", + "pipx run towncrier build --draft --yes --version ${version} > .changelog.draft", + "pipx run towncrier build --yes --version ${version}", "pnpm build" ], "after:release": "rm .changelog.draft" diff --git a/packages/contents/README.md b/packages/contents/README.md index 1de9a335cc..ad5a1be36d 100644 --- a/packages/contents/README.md +++ b/packages/contents/README.md @@ -1,3 +1,8 @@ # `@plone/contents` This package contains the folder Contents view for Plone. + +> [!WARNING] +> This package or app is experimental. +> The community offers no support whatsoever for it. +> Breaking changes may occur without notice. diff --git a/packages/contents/src/components/AddContentPopover.tsx b/packages/contents/components/AddContentPopover.tsx similarity index 100% rename from packages/contents/src/components/AddContentPopover.tsx rename to packages/contents/components/AddContentPopover.tsx diff --git a/packages/contents/src/components/Contents.css b/packages/contents/components/Contents.css similarity index 100% rename from packages/contents/src/components/Contents.css rename to packages/contents/components/Contents.css diff --git a/packages/contents/src/components/ContentsActions.tsx b/packages/contents/components/ContentsActions.tsx similarity index 100% rename from packages/contents/src/components/ContentsActions.tsx rename to packages/contents/components/ContentsActions.tsx diff --git a/packages/contents/src/components/ContentsCell.tsx b/packages/contents/components/ContentsCell.tsx similarity index 97% rename from packages/contents/src/components/ContentsCell.tsx rename to packages/contents/components/ContentsCell.tsx index 9c48afb267..ccecf0078f 100644 --- a/packages/contents/src/components/ContentsCell.tsx +++ b/packages/contents/components/ContentsCell.tsx @@ -1,6 +1,6 @@ -import React, { ComponentProps, useRef, useState } from 'react'; +import React, { type ComponentProps, useRef, useState } from 'react'; import { useDateFormatter } from 'react-aria'; -import { Brain } from '../../../types/src'; +import type { Brain } from '../../types'; import { Button, Link, MoreoptionsIcon } from '@plone/components'; import { ItemActionsPopover } from './ItemActionsPopover'; import { useContentsContext } from '../providers/contents'; diff --git a/packages/contents/src/components/ContentsTable.tsx b/packages/contents/components/ContentsTable.tsx similarity index 100% rename from packages/contents/src/components/ContentsTable.tsx rename to packages/contents/components/ContentsTable.tsx diff --git a/packages/contents/src/components/ItemActionsPopover.tsx b/packages/contents/components/ItemActionsPopover.tsx similarity index 100% rename from packages/contents/src/components/ItemActionsPopover.tsx rename to packages/contents/components/ItemActionsPopover.tsx diff --git a/packages/contents/src/components/RearrangePopover.tsx b/packages/contents/components/RearrangePopover.tsx similarity index 100% rename from packages/contents/src/components/RearrangePopover.tsx rename to packages/contents/components/RearrangePopover.tsx diff --git a/packages/contents/src/components/TableIndexesPopover.tsx b/packages/contents/components/TableIndexesPopover.tsx similarity index 100% rename from packages/contents/src/components/TableIndexesPopover.tsx rename to packages/contents/components/TableIndexesPopover.tsx diff --git a/packages/contents/index.ts b/packages/contents/index.ts new file mode 100644 index 0000000000..1ba0b4c9fa --- /dev/null +++ b/packages/contents/index.ts @@ -0,0 +1,8 @@ +import type { ConfigType } from '@plone/registry'; + +export default function install(config: ConfigType) { + return config; +} + +export { ContentsTable } from './components/ContentsTable'; +export * from './providers/contents'; diff --git a/packages/contents/package.json b/packages/contents/package.json index 487fbbb2e7..7010d79a38 100644 --- a/packages/contents/package.json +++ b/packages/contents/package.json @@ -28,21 +28,18 @@ "publishConfig": { "access": "public" }, - "source": "./src/index.ts", - "main": "./src/index.ts", + "main": "index.ts", "scripts": { - "watch": "parcel watch", - "build": "parcel build", - "build:force": "parcel build --no-cache", "test": "vitest", + "check-ts": "tsc --project tsconfig.json", "dry-release": "release-it --dry-run", "release": "release-it", "release-major-alpha": "release-it major --preRelease=alpha", "release-alpha": "release-it --preRelease=alpha" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" }, "peerDependenciesMeta": { "react-dom": { @@ -55,14 +52,17 @@ "@plone/providers": "workspace:*", "@plone/registry": "workspace:*", "@tanstack/react-query": "^5.59.0", - "react-aria": "^3.33.0", + "react-aria": "^3.37.0", "react-aria-components": "^1.6.0", "usehooks-ts": "^3.1.0" }, "devDependencies": { "@plone/types": "workspace:*", + "@testing-library/jest-dom": "6.4.2", + "@types/jest-axe": "^3.5.7", "@types/react": "^18", "@types/react-dom": "^18", + "jest-axe": "^8.0.0", "release-it": "17.1.1", "tsconfig": "workspace:*", "typescript": "5.2.2", diff --git a/packages/contents/src/providers/contents.tsx b/packages/contents/providers/contents.tsx similarity index 97% rename from packages/contents/src/providers/contents.tsx rename to packages/contents/providers/contents.tsx index f6611c521a..e8bb8af222 100644 --- a/packages/contents/src/providers/contents.tsx +++ b/packages/contents/providers/contents.tsx @@ -1,6 +1,6 @@ import React, { createContext, - PropsWithChildren, + type PropsWithChildren, useContext, useMemo, } from 'react'; diff --git a/packages/contents/setupTesting.ts b/packages/contents/setupTesting.ts new file mode 100644 index 0000000000..8bc87fa36e --- /dev/null +++ b/packages/contents/setupTesting.ts @@ -0,0 +1,3 @@ +import '@testing-library/jest-dom'; +import { toHaveNoViolations } from 'jest-axe'; +expect.extend(toHaveNoViolations); diff --git a/packages/contents/src/index.ts b/packages/contents/src/index.ts deleted file mode 100644 index bff4ede3fd..0000000000 --- a/packages/contents/src/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export { ContentsTable } from './components/ContentsTable'; -export * from './providers/contents'; diff --git a/packages/contents/tsconfig.json b/packages/contents/tsconfig.json index 86da1e79f4..996ac2b262 100644 --- a/packages/contents/tsconfig.json +++ b/packages/contents/tsconfig.json @@ -1,6 +1,6 @@ { "extends": "tsconfig/react-library.json", - "include": ["src", "src/**/*.js"], + "include": ["src", "src/**/*.js", "index.ts", "types.d.ts"], "exclude": [ "node_modules", "build", diff --git a/packages/contents/src/types.d.ts b/packages/contents/types.d.ts similarity index 100% rename from packages/contents/src/types.d.ts rename to packages/contents/types.d.ts diff --git a/packages/contents/vitest.config.ts b/packages/contents/vitest.config.ts new file mode 100644 index 0000000000..fddf5f61f7 --- /dev/null +++ b/packages/contents/vitest.config.ts @@ -0,0 +1,14 @@ +import { defineConfig } from 'vitest/config'; + +// https://vitejs.dev/config/ +export default defineConfig({ + test: { + globals: true, + environment: 'jsdom', + setupFiles: './setupTesting.ts', + // you might want to disable it, if you don't have tests that rely on CSS + // since parsing CSS is slow + css: true, + exclude: ['**/node_modules/**', '**/lib/**'], + }, +}); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3b9be3c72e..09e54ef0a0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -671,16 +671,16 @@ importers: specifier: ^5.59.0 version: 5.59.15(react@18.2.0) react: - specifier: ^16.8.0 || ^17.0.0 || ^18.0.0 + specifier: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 version: 18.2.0 react-aria: - specifier: ^3.33.0 + specifier: ^3.37.0 version: 3.37.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) react-aria-components: specifier: ^1.6.0 version: 1.6.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) react-dom: - specifier: ^16.8.0 || ^17.0.0 || ^18.0.0 + specifier: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 version: 18.2.0(react@18.2.0) usehooks-ts: specifier: ^3.1.0 @@ -689,12 +689,21 @@ importers: '@plone/types': specifier: workspace:* version: link:../types + '@testing-library/jest-dom': + specifier: 6.4.2 + version: 6.4.2(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@22.10.7))(vitest@1.6.1(@types/node@22.10.7)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.29.1)(sass@1.75.0)(terser@5.30.3)) + '@types/jest-axe': + specifier: ^3.5.7 + version: 3.5.9 '@types/react': specifier: ^18 version: 18.3.12 '@types/react-dom': specifier: ^18 version: 18.3.1 + jest-axe: + specifier: ^8.0.0 + version: 8.0.0 release-it: specifier: 17.1.1 version: 17.1.1(typescript@5.2.2) @@ -27584,7 +27593,7 @@ snapshots: '@testing-library/jest-dom@6.4.2(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@26.6.3)(vitest@2.1.8(@types/node@22.10.7)(jsdom@16.7.0)(less@3.11.1)(lightningcss@1.29.1)(sass@1.75.0)(terser@5.30.3))': dependencies: - '@adobe/css-tools': 4.3.3 + '@adobe/css-tools': 4.4.1 '@babel/runtime': 7.20.6 aria-query: 5.3.0 chalk: 3.0.0 @@ -27600,7 +27609,7 @@ snapshots: '@testing-library/jest-dom@6.4.2(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@20.12.7))(vitest@2.1.3(@types/node@20.12.7)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.29.1)(sass@1.75.0)(terser@5.30.3))': dependencies: - '@adobe/css-tools': 4.3.3 + '@adobe/css-tools': 4.4.1 '@babel/runtime': 7.20.6 aria-query: 5.3.0 chalk: 3.0.0 @@ -27616,7 +27625,7 @@ snapshots: '@testing-library/jest-dom@6.4.2(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@20.12.7))(vitest@2.1.8(@types/node@20.12.7)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.29.1)(sass@1.75.0)(terser@5.30.3))': dependencies: - '@adobe/css-tools': 4.3.3 + '@adobe/css-tools': 4.4.1 '@babel/runtime': 7.20.6 aria-query: 5.3.0 chalk: 3.0.0 @@ -27630,9 +27639,25 @@ snapshots: jest: 29.7.0(@types/node@20.12.7) vitest: 2.1.8(@types/node@20.12.7)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.29.1)(sass@1.75.0)(terser@5.30.3) + '@testing-library/jest-dom@6.4.2(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@22.10.7))(vitest@1.6.1(@types/node@22.10.7)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.29.1)(sass@1.75.0)(terser@5.30.3))': + dependencies: + '@adobe/css-tools': 4.4.1 + '@babel/runtime': 7.20.6 + aria-query: 5.3.0 + chalk: 3.0.0 + css.escape: 1.5.1 + dom-accessibility-api: 0.6.3 + lodash: 4.17.21 + redent: 3.0.0 + optionalDependencies: + '@jest/globals': 29.7.0 + '@types/jest': 29.5.12 + jest: 29.7.0(@types/node@22.10.7) + vitest: 1.6.1(@types/node@22.10.7)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.29.1)(sass@1.75.0)(terser@5.30.3) + '@testing-library/jest-dom@6.4.2(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@22.10.7))(vitest@2.1.3(@types/node@22.10.7)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.29.1)(sass@1.75.0)(terser@5.30.3))': dependencies: - '@adobe/css-tools': 4.3.3 + '@adobe/css-tools': 4.4.1 '@babel/runtime': 7.20.6 aria-query: 5.3.0 chalk: 3.0.0 @@ -27648,7 +27673,7 @@ snapshots: '@testing-library/jest-dom@6.4.2(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@22.10.7))(vitest@2.1.8(@types/node@22.10.7)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.29.1)(sass@1.75.0)(terser@5.30.3))': dependencies: - '@adobe/css-tools': 4.3.3 + '@adobe/css-tools': 4.4.1 '@babel/runtime': 7.20.6 aria-query: 5.3.0 chalk: 3.0.0