diff --git a/package-lock.json b/package-lock.json index a3e2d0a951..43dff4d10d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,6 +17,7 @@ "packages/material-ui", "packages/mui", "packages/playground", + "packages/primereact", "packages/semantic-ui", "packages/utils", "packages/validator-ajv6", @@ -9612,6 +9613,10 @@ "resolved": "packages/playground", "link": true }, + "node_modules/@rjsf/primereact": { + "resolved": "packages/primereact", + "link": true + }, "node_modules/@rjsf/semantic-ui": { "resolved": "packages/semantic-ui", "link": true @@ -26848,6 +26853,44 @@ "node": ">=4" } }, + "node_modules/primeflex": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/primeflex/-/primeflex-3.3.1.tgz", + "integrity": "sha512-zaOq3YvcOYytbAmKv3zYc+0VNS9Wg5d37dfxZnveKBFPr7vEIwfV5ydrpiouTft8MVW6qNjfkaQphHSnvgQbpQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/primeicons": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/primeicons/-/primeicons-7.0.0.tgz", + "integrity": "sha512-jK3Et9UzwzTsd6tzl2RmwrVY/b8raJ3QZLzoDACj+oTJ0oX7L9Hy+XnVwgo4QVKlKpnP/Ur13SXV/pVh4LzaDw==", + "dev": true, + "license": "MIT" + }, + "node_modules/primereact": { + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/primereact/-/primereact-10.9.2.tgz", + "integrity": "sha512-uJTghCPlnPWJc0mvkqYJDj6bl4udROPGrMEfV4CPh7UurMS+E8b+82ABZ+OPWibQOWxnEQl5NXcfG4F/7YRXwA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/react-transition-group": "^4.4.1", + "react-transition-group": "^4.4.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/prism-react-renderer": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/prism-react-renderer/-/prism-react-renderer-1.3.5.tgz", @@ -35158,6 +35201,59 @@ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" }, + "packages/primereact": { + "name": "@rjsf/primereact", + "version": "5.24.2", + "license": "Apache-2.0", + "dependencies": { + "classnames": "^2.5.1", + "lodash": "^4.17.21", + "lodash-es": "^4.17.21" + }, + "devDependencies": { + "@babel/cli": "^7.23.9", + "@babel/core": "^7.23.9", + "@babel/eslint-parser": "^7.23.10", + "@babel/plugin-proposal-class-properties": "^7.18.6", + "@babel/plugin-proposal-optional-chaining": "^7.21.0", + "@babel/preset-env": "^7.23.9", + "@babel/preset-react": "^7.23.3", + "@babel/preset-typescript": "^7.23.3", + "@rjsf/core": "^5.24.2", + "@rjsf/snapshot-tests": "^5.24.2", + "@rjsf/utils": "^5.24.2", + "@rjsf/validator-ajv8": "^5.24.2", + "@rollup/plugin-replace": "^5.0.5", + "@types/jest": "^29.5.12", + "@types/lodash": "^4.14.202", + "@types/react": "^18.2.58", + "@types/react-dom": "^18.2.19", + "@types/react-test-renderer": "^18.0.7", + "babel-jest": "^29.7.0", + "eslint": "^8.56.0", + "jest": "^29.7.0", + "jest-environment-jsdom": "^29.7.0", + "primeflex": "^3.3.1", + "primeicons": "^7.0.0", + "primereact": "^10.9.2", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "react-test-renderer": "^18.2.0", + "rimraf": "^5.0.5", + "rollup": "^3.29.4", + "typescript": "^4.9.5" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@rjsf/core": "^5.24.x", + "@rjsf/utils": "^5.24.x", + "primeicons": ">=6.0.0", + "primereact": ">=8.0.0", + "react": "^16.14.0 || >=17" + } + }, "packages/semantic-ui": { "name": "@rjsf/semantic-ui", "version": "5.24.3", diff --git a/package.json b/package.json index 5852ea996c..fcd4e61d99 100644 --- a/package.json +++ b/package.json @@ -74,6 +74,7 @@ "packages/material-ui", "packages/mui", "packages/playground", + "packages/primereact", "packages/semantic-ui", "packages/utils", "packages/validator-ajv6", diff --git a/packages/playground/package.json b/packages/playground/package.json index 8667d4541b..fd53127a2b 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -50,6 +50,7 @@ "@rjsf/fluentui-rc": "^5.24.3", "@rjsf/material-ui": "^5.24.3", "@rjsf/mui": "^5.24.3", + "@rjsf/primereact": "^5.24.3", "@rjsf/semantic-ui": "^5.24.3", "@rjsf/utils": "^5.24.3", "@rjsf/validator-ajv6": "^5.24.3", diff --git a/packages/playground/src/app.tsx b/packages/playground/src/app.tsx index 0997ac50d5..91185ef127 100644 --- a/packages/playground/src/app.tsx +++ b/packages/playground/src/app.tsx @@ -6,6 +6,7 @@ import { Theme as SuiTheme } from '@rjsf/semantic-ui'; import { Theme as AntdTheme } from '@rjsf/antd'; import { Theme as Bootstrap4Theme } from '@rjsf/bootstrap-4'; import { Theme as ChakraUITheme } from '@rjsf/chakra-ui'; +import { Theme as PrimeReactTheme } from '@rjsf/primereact'; import v8Validator, { customizeValidator } from '@rjsf/validator-ajv8'; import v6Validator from '@rjsf/validator-ajv6'; import localize_es from 'ajv-i18n/localize/es'; @@ -121,6 +122,168 @@ const themes: PlaygroundProps['themes'] = { stylesheet: '', theme: MuiV5Theme, }, + primereact: { + stylesheet: '//cdn.jsdelivr.net/npm/primereact@10.9.2/resources/themes/lara-light-cyan/theme.css', + theme: PrimeReactTheme, + subthemes: { + 'arya-blue': { + stylesheet: '//cdn.jsdelivr.net/npm/primereact@10.9.2/resources/themes/arya-blue/theme.css', + }, + 'arya-green': { + stylesheet: '//cdn.jsdelivr.net/npm/primereact@10.9.2/resources/themes/arya-green/theme.css', + }, + 'arya-orange': { + stylesheet: '//cdn.jsdelivr.net/npm/primereact@10.9.2/resources/themes/arya-orange/theme.css', + }, + 'arya-purple': { + stylesheet: '//cdn.jsdelivr.net/npm/primereact@10.9.2/resources/themes/arya-purple/theme.css', + }, + 'bootstrap4-dark-blue': { + stylesheet: '//cdn.jsdelivr.net/npm/primereact@10.9.2/resources/themes/bootstrap4-dark-blue/theme.css', + }, + 'bootstrap4-dark-purple': { + stylesheet: '//cdn.jsdelivr.net/npm/primereact@10.9.2/resources/themes/bootstrap4-dark-purple/theme.css', + }, + 'bootstrap4-light-blue': { + stylesheet: '//cdn.jsdelivr.net/npm/primereact@10.9.2/resources/themes/bootstrap4-light-blue/theme.css', + }, + 'bootstrap4-light-purple': { + stylesheet: '//cdn.jsdelivr.net/npm/primereact@10.9.2/resources/themes/bootstrap4-light-purple/theme.css', + }, + 'fluent-light': { + stylesheet: '//cdn.jsdelivr.net/npm/primereact@10.9.2/resources/themes/fluent-light/theme.css', + }, + 'lara-dark-amber': { + stylesheet: '//cdn.jsdelivr.net/npm/primereact@10.9.2/resources/themes/lara-dark-amber/theme.css', + }, + 'lara-dark-blue': { + stylesheet: '//cdn.jsdelivr.net/npm/primereact@10.9.2/resources/themes/lara-dark-blue/theme.css', + }, + 'lara-dark-cyan': { + stylesheet: '//cdn.jsdelivr.net/npm/primereact@10.9.2/resources/themes/lara-dark-cyan/theme.css', + }, + 'lara-dark-green': { + stylesheet: '//cdn.jsdelivr.net/npm/primereact@10.9.2/resources/themes/lara-dark-green/theme.css', + }, + 'lara-dark-indigo': { + stylesheet: '//cdn.jsdelivr.net/npm/primereact@10.9.2/resources/themes/lara-dark-indigo/theme.css', + }, + 'lara-dark-pink': { + stylesheet: '//cdn.jsdelivr.net/npm/primereact@10.9.2/resources/themes/lara-dark-pink/theme.css', + }, + 'lara-dark-purple': { + stylesheet: '//cdn.jsdelivr.net/npm/primereact@10.9.2/resources/themes/lara-dark-purple/theme.css', + }, + 'lara-dark-teal': { + stylesheet: '//cdn.jsdelivr.net/npm/primereact@10.9.2/resources/themes/lara-dark-teal/theme.css', + }, + 'lara-light-amber': { + stylesheet: '//cdn.jsdelivr.net/npm/primereact@10.9.2/resources/themes/lara-light-amber/theme.css', + }, + 'lara-light-blue': { + stylesheet: '//cdn.jsdelivr.net/npm/primereact@10.9.2/resources/themes/lara-light-blue/theme.css', + }, + 'lara-light-cyan': { + stylesheet: '//cdn.jsdelivr.net/npm/primereact@10.9.2/resources/themes/lara-light-cyan/theme.css', + }, + 'lara-light-green': { + stylesheet: '//cdn.jsdelivr.net/npm/primereact@10.9.2/resources/themes/lara-light-green/theme.css', + }, + 'lara-light-indigo': { + stylesheet: '//cdn.jsdelivr.net/npm/primereact@10.9.2/resources/themes/lara-light-indigo/theme.css', + }, + 'lara-light-pink': { + stylesheet: '//cdn.jsdelivr.net/npm/primereact@10.9.2/resources/themes/lara-light-pink/theme.css', + }, + 'lara-light-purple': { + stylesheet: '//cdn.jsdelivr.net/npm/primereact@10.9.2/resources/themes/lara-light-purple/theme.css', + }, + 'lara-light-teal': { + stylesheet: '//cdn.jsdelivr.net/npm/primereact@10.9.2/resources/themes/lara-light-teal/theme.css', + }, + 'luna-amber': { + stylesheet: '//cdn.jsdelivr.net/npm/primereact@10.9.2/resources/themes/luna-amber/theme.css', + }, + 'luna-blue': { + stylesheet: '//cdn.jsdelivr.net/npm/primereact@10.9.2/resources/themes/luna-blue/theme.css', + }, + 'luna-green': { + stylesheet: '//cdn.jsdelivr.net/npm/primereact@10.9.2/resources/themes/luna-green/theme.css', + }, + 'luna-pink': { + stylesheet: '//cdn.jsdelivr.net/npm/primereact@10.9.2/resources/themes/luna-pink/theme.css', + }, + 'md-dark-deeppurple': { + stylesheet: '//cdn.jsdelivr.net/npm/primereact@10.9.2/resources/themes/md-dark-deeppurple/theme.css', + }, + 'md-dark-indigo': { + stylesheet: '//cdn.jsdelivr.net/npm/primereact@10.9.2/resources/themes/md-dark-indigo/theme.css', + }, + 'md-light-deeppurple': { + stylesheet: '//cdn.jsdelivr.net/npm/primereact@10.9.2/resources/themes/md-light-deeppurple/theme.css', + }, + 'md-light-indigo': { + stylesheet: '//cdn.jsdelivr.net/npm/primereact@10.9.2/resources/themes/md-light-indigo/theme.css', + }, + 'mdc-dark-deeppurple': { + stylesheet: '//cdn.jsdelivr.net/npm/primereact@10.9.2/resources/themes/mdc-dark-deeppurple/theme.css', + }, + 'mdc-dark-indigo': { + stylesheet: '//cdn.jsdelivr.net/npm/primereact@10.9.2/resources/themes/mdc-dark-indigo/theme.css', + }, + 'mdc-light-deeppurple': { + stylesheet: '//cdn.jsdelivr.net/npm/primereact@10.9.2/resources/themes/mdc-light-deeppurple/theme.css', + }, + 'mdc-light-indigo': { + stylesheet: '//cdn.jsdelivr.net/npm/primereact@10.9.2/resources/themes/mdc-light-indigo/theme.css', + }, + mira: { + stylesheet: '//cdn.jsdelivr.net/npm/primereact@10.9.2/resources/themes/mira/theme.css', + }, + nano: { + stylesheet: '//cdn.jsdelivr.net/npm/primereact@10.9.2/resources/themes/nano/theme.css', + }, + nova: { + stylesheet: '//cdn.jsdelivr.net/npm/primereact@10.9.2/resources/themes/nova/theme.css', + }, + 'nova-accent': { + stylesheet: '//cdn.jsdelivr.net/npm/primereact@10.9.2/resources/themes/nova-accent/theme.css', + }, + 'nova-alt': { + stylesheet: '//cdn.jsdelivr.net/npm/primereact@10.9.2/resources/themes/nova-alt/theme.css', + }, + rhea: { + stylesheet: '//cdn.jsdelivr.net/npm/primereact@10.9.2/resources/themes/rhea/theme.css', + }, + 'saga-blue': { + stylesheet: '//cdn.jsdelivr.net/npm/primereact@10.9.2/resources/themes/saga-blue/theme.css', + }, + 'saga-green': { + stylesheet: '//cdn.jsdelivr.net/npm/primereact@10.9.2/resources/themes/saga-green/theme.css', + }, + 'saga-orange': { + stylesheet: '//cdn.jsdelivr.net/npm/primereact@10.9.2/resources/themes/saga-orange/theme.css', + }, + 'saga-purple': { + stylesheet: '//cdn.jsdelivr.net/npm/primereact@10.9.2/resources/themes/saga-purple/theme.css', + }, + 'soho-dark': { + stylesheet: '//cdn.jsdelivr.net/npm/primereact@10.9.2/resources/themes/soho-dark/theme.css', + }, + 'soho-light': { + stylesheet: '//cdn.jsdelivr.net/npm/primereact@10.9.2/resources/themes/soho-light/theme.css', + }, + 'tailwind-light': { + stylesheet: '//cdn.jsdelivr.net/npm/primereact@10.9.2/resources/themes/tailwind-light/theme.css', + }, + 'viva-dark': { + stylesheet: '//cdn.jsdelivr.net/npm/primereact@10.9.2/resources/themes/viva-dark/theme.css', + }, + 'viva-light': { + stylesheet: '//cdn.jsdelivr.net/npm/primereact@10.9.2/resources/themes/viva-light/theme.css', + }, + }, + }, 'semantic-ui': { stylesheet: '//cdn.jsdelivr.net/npm/semantic-ui@2.4.2/dist/semantic.min.css', theme: SuiTheme, diff --git a/packages/playground/src/components/DemoFrame.tsx b/packages/playground/src/components/DemoFrame.tsx index 983d08cde3..4ca830fd3b 100644 --- a/packages/playground/src/components/DemoFrame.tsx +++ b/packages/playground/src/components/DemoFrame.tsx @@ -8,6 +8,7 @@ import Frame, { FrameComponentProps, FrameContextConsumer } from 'react-frame-co import { __createChakraFrameProvider } from '@rjsf/chakra-ui'; import { StyleProvider as AntdStyleProvider } from '@ant-design/cssinjs'; import { __createFluentUIRCFrameProvider } from '@rjsf/fluentui-rc'; +import { PrimeReactProvider } from 'primereact/api'; /* Adapted from https://github.com/mui-org/material-ui/blob/master/docs/src/modules/components/DemoSandboxed.js @@ -123,6 +124,14 @@ export default function DemoFrame(props: DemoFrameProps) { body = ready ? ( {children} ) : null; + } else if (theme === 'primereact') { + body = ready ? ( + <> + + + {children} + + ) : null; } return ( diff --git a/packages/playground/tsconfig.json b/packages/playground/tsconfig.json index fe14477307..261f8deb49 100644 --- a/packages/playground/tsconfig.json +++ b/packages/playground/tsconfig.json @@ -30,6 +30,7 @@ { "path": "../fluentui-rc" }, { "path": "../material-ui" }, { "path": "../mui" }, + { "path": "../primereact" }, { "path": "../semantic-ui" }, { "path": "../utils" }, { "path": "../validator-ajv6" }, diff --git a/packages/playground/vite.config.ts b/packages/playground/vite.config.ts index cd3e413c15..33c18c920e 100644 --- a/packages/playground/vite.config.ts +++ b/packages/playground/vite.config.ts @@ -23,6 +23,7 @@ export default defineConfig({ '@rjsf/fluentui-rc': path.resolve(__dirname, '../fluentui-rc/src'), '@rjsf/material-ui': path.resolve(__dirname, '../material-ui/src'), '@rjsf/mui': path.resolve(__dirname, '../mui/src'), + '@rjsf/primereact': path.resolve(__dirname, '../primereact/src'), '@rjsf/semantic-ui': path.resolve(__dirname, '../semantic-ui/src'), '@rjsf/utils': path.resolve(__dirname, '../utils/src'), '@rjsf/validator-ajv8': path.resolve(__dirname, '../validator-ajv8/src'), diff --git a/packages/primereact/.eslintrc b/packages/primereact/.eslintrc new file mode 100644 index 0000000000..8f31b04e27 --- /dev/null +++ b/packages/primereact/.eslintrc @@ -0,0 +1,9 @@ +{ + "extends": "../../.eslintrc", + "plugins": [ + "@typescript-eslint", + "jsx-a11y", + "react", + "import" + ] +} diff --git a/packages/primereact/README.md b/packages/primereact/README.md new file mode 100644 index 0000000000..24ba4762c7 --- /dev/null +++ b/packages/primereact/README.md @@ -0,0 +1,118 @@ +[![Build Status][build-shield]][build-url] +[![npm][npm-shield]][npm-url] +[![npm downloads][npm-dl-shield]][npm-dl-url] +[![Contributors][contributors-shield]][contributors-url] +[![Apache 2.0 License][license-shield]][license-url] + +
+

+ + Logo + + +

@rjsf/primereact

+ +

+ PrimeReact theme, fields, and widgets for react-jsonschema-form. +
+ Explore the docs » +
+
+ View Playground + · + Report Bug + · + Request Feature +

+

+ +## Table of Contents + +- [About The Project](#about-the-project) + - [Built With](#built-with) +- [Getting Started](#getting-started) + - [Prerequisites](#prerequisites) + - [Installation](#installation) +- [Usage](#usage) +- [Roadmap](#roadmap) +- [Contributing](#contributing) +- [Contact](#contact) + +## About The Project + +PrimeReact theme, fields, and widgets for `react-jsonschema-form`. + +### Built With + +- [react-jsonschema-form](https://github.com/rjsf-team/react-jsonschema-form/) +- [PrimeReact](https://github.com/primefaces/primereact) + +## Getting Started + +### Prerequisites + +- `primereact >= 8.0.0` +- `primeicons >= 6.0.0` +- `@rjsf/core >= 2.0.0` + +```sh +npm install primereact primeicons @rjsf/core +``` + +### Installation + +```sh +npm install @rjsf/primereact +``` + +## Usage + +```javascript +import Form from '@rjsf/primereact'; +``` + +or + +```javascript +import {withTheme} from '@rjsf/core'; +import {Theme as PrimeReactTheme} from '@rjsf/primereact'; + +// Customize the theme with your own fields and widgets + +const Form = withTheme(PrimeReactTheme); +``` + +## Roadmap + +See the general [open issues](https://github.com/rjsf-team/react-jsonschema-form/issues). + +## Contributing + +Read our [contributors' guide](https://rjsf-team.github.io/react-jsonschema-form/docs/contributing/) to get started. + +## Contact + +rjsf team: [https://github.com/orgs/rjsf-team/people](https://github.com/orgs/rjsf-team/people) + +GitHub +repository: [https://github.com/rjsf-team/react-jsonschema-form](https://github.com/rjsf-team/react-jsonschema-form) + +[build-shield]: https://github.com/rjsf-team/react-jsonschema-form/workflows/CI/badge.svg + +[build-url]: https://github.com/rjsf-team/react-jsonschema-form/actions + +[contributors-shield]: https://img.shields.io/github/contributors/rjsf-team/react-jsonschema-form.svg + +[contributors-url]: https://github.com/rjsf-team/react-jsonschema-form/graphs/contributors + +[license-shield]: https://img.shields.io/badge/license-Apache%202.0-blue.svg?style=flat-square + +[license-url]: https://choosealicense.com/licenses/apache-2.0/ + +[npm-shield]: https://img.shields.io/npm/v/@rjsf/primereact/latest.svg?style=flat-square + +[npm-url]: https://www.npmjs.com/package/@rjsf/primereact + +[npm-dl-shield]: https://img.shields.io/npm/dm/@rjsf/primereact.svg?style=flat-square + +[npm-dl-url]: https://www.npmjs.com/package/@rjsf/primereact diff --git a/packages/primereact/babel.config.js b/packages/primereact/babel.config.js new file mode 100644 index 0000000000..5f772a56c4 --- /dev/null +++ b/packages/primereact/babel.config.js @@ -0,0 +1,3 @@ +const defaultConfig = require('../../babel.config'); + +module.exports = defaultConfig; diff --git a/packages/primereact/jest.config.js b/packages/primereact/jest.config.js new file mode 100644 index 0000000000..2a31de0575 --- /dev/null +++ b/packages/primereact/jest.config.js @@ -0,0 +1,11 @@ +module.exports = { + verbose: true, + testEnvironment: 'jsdom', + testEnvironmentOptions: { + browsers: ['chrome', 'firefox', 'safari'], + }, + moduleNameMapper: { + '\\.(css|less)$': '/__mocks__/styleMock.js', + }, + transformIgnorePatterns: [`/node_modules/(?!nanoid)`], +}; diff --git a/packages/primereact/logo.png b/packages/primereact/logo.png new file mode 100644 index 0000000000..b4a65d42e6 Binary files /dev/null and b/packages/primereact/logo.png differ diff --git a/packages/primereact/package.json b/packages/primereact/package.json new file mode 100644 index 0000000000..5dc01c966f --- /dev/null +++ b/packages/primereact/package.json @@ -0,0 +1,103 @@ +{ + "name": "@rjsf/primereact", + "version": "5.24.2", + "description": "PrimeReact theme, fields and widgets for react-jsonschema-form", + "main": "dist/index.js", + "module": "lib/index.js", + "typings": "lib/index.d.ts", + "scripts": { + "build:ts": "tsc -b", + "build:cjs": "esbuild ./src/index.ts --bundle --outfile=dist/index.js --sourcemap --packages=external --format=cjs", + "build:esm": "esbuild ./src/index.ts --bundle --outfile=dist/primereact.esm.js --sourcemap --packages=external --format=esm", + "build:umd": "rollup dist/primereact.esm.js --format=umd --file=dist/primereact.umd.js --name=@rjsf/primereact", + "build": "npm run build:ts && npm run build:cjs && npm run build:esm && npm run build:umd", + "cs-check": "prettier -l \"{src,test}/**/*.ts?(x)\"", + "cs-format": "prettier \"{src,test}/**/*.ts?(x)\" --write", + "lint": "eslint src test", + "precommit": "lint-staged", + "test": "jest", + "test:update": "jest --u" + }, + "lint-staged": { + "{src,test}/**/*.ts?(x)": [ + "eslint --fix" + ] + }, + "files": [ + "dist", + "lib", + "src" + ], + "engineStrict": false, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@rjsf/core": "^5.24.x", + "@rjsf/utils": "^5.24.x", + "primeicons": ">=6.0.0", + "primereact": ">=8.0.0", + "react": "^16.14.0 || >=17" + }, + "dependencies": { + "classnames": "^2.5.1", + "lodash": "^4.17.21", + "lodash-es": "^4.17.21" + }, + "devDependencies": { + "@babel/cli": "^7.23.9", + "@babel/core": "^7.23.9", + "@babel/eslint-parser": "^7.23.10", + "@babel/plugin-proposal-class-properties": "^7.18.6", + "@babel/plugin-proposal-optional-chaining": "^7.21.0", + "@babel/preset-env": "^7.23.9", + "@babel/preset-react": "^7.23.3", + "@babel/preset-typescript": "^7.23.3", + "@rjsf/core": "^5.24.2", + "@rjsf/snapshot-tests": "^5.24.2", + "@rjsf/utils": "^5.24.2", + "@rjsf/validator-ajv8": "^5.24.2", + "@rollup/plugin-replace": "^5.0.5", + "@types/jest": "^29.5.12", + "@types/lodash": "^4.14.202", + "@types/react": "^18.2.58", + "@types/react-dom": "^18.2.19", + "@types/react-test-renderer": "^18.0.7", + "babel-jest": "^29.7.0", + "eslint": "^8.56.0", + "jest": "^29.7.0", + "jest-environment-jsdom": "^29.7.0", + "primeicons": "^7.0.0", + "primeflex": "^3.3.1", + "primereact": "^10.9.2", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "react-test-renderer": "^18.2.0", + "rimraf": "^5.0.5", + "rollup": "^3.29.4", + "typescript": "^4.9.5" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/rjsf-team/react-jsonschema-form.git" + }, + "keywords": [ + "primereact", + "primeicons", + "react", + "react-jsonschema-form", + "jsonschema", + "json-schema", + "json", + "rjsf-primereact" + ], + "author": "Arnold Daniels ", + "license": "Apache-2.0", + "bugs": { + "url": "https://github.com/rjsf-team/react-jsonschema-form/issues" + }, + "homepage": "https://github.com/rjsf-team/react-jsonschema-form", + "publishConfig": { + "access": "public" + } +} diff --git a/packages/primereact/src/AddButton/AddButton.tsx b/packages/primereact/src/AddButton/AddButton.tsx new file mode 100644 index 0000000000..86876e7b07 --- /dev/null +++ b/packages/primereact/src/AddButton/AddButton.tsx @@ -0,0 +1,23 @@ +import { Button } from 'primereact/button'; +import { FormContextType, IconButtonProps, RJSFSchema, StrictRJSFSchema, TranslatableString } from '@rjsf/utils'; + +/** The `AddButton` renders a button that represents the `Add` action on a form + */ +export default function AddButton({ + uiSchema, + registry, + color, + ...props +}: IconButtonProps) { + const { translateString } = registry; + return ( +