diff --git a/RECIPES.md b/RECIPES.md index ddc119c5..1a050f3b 100644 --- a/RECIPES.md +++ b/RECIPES.md @@ -230,12 +230,12 @@ Additional recipes can be found on the [Contrib Recipes Repository](https://gith | [symfony/ux-leaflet-map](https://packagist.org/packages/symfony/ux-leaflet-map) | [2.19](../../../tree/main/symfony/ux-leaflet-map/2.19) | `ux-leaflet-map`, `uxleafletmap` | | [symfony/ux-live-component](https://packagist.org/packages/symfony/ux-live-component) | [2.6](../../../tree/main/symfony/ux-live-component/2.6) | `live-component`, `live-components`, `livecomponent`, `livecomponents`, `ux-live-component`, `uxlivecomponent` | | [symfony/ux-map](https://packagist.org/packages/symfony/ux-map) | [2.19](../../../tree/main/symfony/ux-map/2.19) | `ux-map`, `uxmap` | -| [symfony/ux-react](https://packagist.org/packages/symfony/ux-react) | [2.9](../../../tree/main/symfony/ux-react/2.9) | `ux-react`, `uxreact` | +| [symfony/ux-react](https://packagist.org/packages/symfony/ux-react) | [3.4](../../../tree/main/symfony/ux-react/3.4) | `ux-react`, `uxreact` | | [symfony/ux-svelte](https://packagist.org/packages/symfony/ux-svelte) | [2.9](../../../tree/main/symfony/ux-svelte/2.9) | `ux-svelte`, `uxsvelte` | | [symfony/ux-translator](https://packagist.org/packages/symfony/ux-translator) | [2.32](../../../tree/main/symfony/ux-translator/2.32) | `ux-translator`, `uxtranslator` | | [symfony/ux-turbo](https://packagist.org/packages/symfony/ux-turbo) | [2.20](../../../tree/main/symfony/ux-turbo/2.20) | `turbo`, `ux-turbo`, `uxturbo` | | [symfony/ux-twig-component](https://packagist.org/packages/symfony/ux-twig-component) | [2.13](../../../tree/main/symfony/ux-twig-component/2.13) | `twig-component`, `twig-components`, `twigcomponent`, `twigcomponents`, `ux-twig-component`, `uxtwigcomponent` | -| [symfony/ux-vue](https://packagist.org/packages/symfony/ux-vue) | [2.9](../../../tree/main/symfony/ux-vue/2.9) | `ux-vue`, `uxvue` | +| [symfony/ux-vue](https://packagist.org/packages/symfony/ux-vue) | [3.4](../../../tree/main/symfony/ux-vue/3.4) | `ux-vue`, `uxvue` | | [symfony/validator](https://packagist.org/packages/symfony/validator) | [7.0](../../../tree/main/symfony/validator/7.0) | `validation`, `validator` | | [symfony/vonage-notifier](https://packagist.org/packages/symfony/vonage-notifier) | [5.4](../../../tree/main/symfony/vonage-notifier/5.4) | `vonage-notifier`, `vonagenotifier` | | [symfony/web-profiler-bundle](https://packagist.org/packages/symfony/web-profiler-bundle) | [8.2](../../../tree/main/symfony/web-profiler-bundle/8.2) | `web-profiler-bundle`, `webprofilerbundle` | diff --git a/archived/symfony.ux-react/1fd6b362511456064d80779d8774707a685f6f1b.json b/archived/symfony.ux-react/1fd6b362511456064d80779d8774707a685f6f1b.json new file mode 100644 index 00000000..690406b3 --- /dev/null +++ b/archived/symfony.ux-react/1fd6b362511456064d80779d8774707a685f6f1b.json @@ -0,0 +1,99 @@ +{ + "manifests": { + "symfony/ux-react": { + "manifest": { + "bundles": { + "Symfony\\UX\\React\\ReactBundle": [ + "all" + ] + }, + "copy-from-recipe": { + "assets/": "assets/" + }, + "conflict": { + "symfony/webpack-encore-bundle": "<2.0", + "symfony/flex": "<1.20.0 || >=2.0.0,<2.3.0" + }, + "add-lines": [ + { + "file": "webpack.config.js", + "content": "\n .enableReactPreset()", + "position": "after_target", + "target": ".splitEntryChunks()" + }, + { + "file": "assets/app.js", + "content": "import { registerReactControllerComponents } from '@symfony/ux-react';", + "position": "top", + "warn_if_missing": true + }, + { + "file": "assets/app.js", + "content": "registerReactControllerComponents(require.context('./react/controllers', true, /\\.(j|t)sx?$/));", + "position": "bottom", + "warn_if_missing": true, + "requires": "symfony/webpack-encore-bundle" + }, + { + "file": "assets/app.js", + "content": "registerReactControllerComponents(import.meta.glob('./react/controllers/**/*.{jsx,tsx}', { eager: true }));", + "position": "bottom", + "warn_if_missing": true, + "requires": "symfony/reprise" + }, + { + "file": "assets/app.js", + "content": "registerReactControllerComponents();", + "position": "bottom", + "warn_if_missing": true, + "requires": "symfony/asset-mapper" + } + ], + "post-install-output": [ + "", + " * Using Vite? Install @vitejs/plugin-react so Vite can compile JSX,", + " and register it in your vite.config:", + "", + " npm install --save-dev @vitejs/plugin-react", + "", + " import react from '@vitejs/plugin-react'", + "", + " export default defineConfig({", + " plugins: [", + " react(),", + " Symfony({ /* ... */ }),", + " ],", + " })", + "", + " * Using Rsbuild? Install @rsbuild/plugin-react and register it in your", + " rsbuild.config:", + "", + " npm install --save-dev @rsbuild/plugin-react", + "", + " import { pluginReact } from '@rsbuild/plugin-react'", + "", + " export default defineConfig({", + " plugins: [", + " pluginReact(),", + " Symfony({ /* ... */ }),", + " ],", + " })" + ] + }, + "files": { + "assets/react/controllers/Hello.jsx": { + "contents": [ + "import React from 'react';", + "", + "export default function (props) {", + " return
Hello {props.fullName}
;", + "}", + "" + ], + "executable": false + } + }, + "ref": "1fd6b362511456064d80779d8774707a685f6f1b" + } + } +} diff --git a/archived/symfony.ux-vue/ca9ba883ada9d18fa2e34576f1c6375bff609198.json b/archived/symfony.ux-vue/ca9ba883ada9d18fa2e34576f1c6375bff609198.json new file mode 100644 index 00000000..1781dbb2 --- /dev/null +++ b/archived/symfony.ux-vue/ca9ba883ada9d18fa2e34576f1c6375bff609198.json @@ -0,0 +1,103 @@ +{ + "manifests": { + "symfony/ux-vue": { + "manifest": { + "bundles": { + "Symfony\\UX\\Vue\\VueBundle": [ + "all" + ] + }, + "copy-from-recipe": { + "assets/": "assets/" + }, + "conflict": { + "symfony/webpack-encore-bundle": "<2.0", + "symfony/flex": "<1.20.0 || >=2.0.0,<2.3.0" + }, + "add-lines": [ + { + "file": "webpack.config.js", + "content": "\n .enableVueLoader()", + "position": "after_target", + "target": ".splitEntryChunks()" + }, + { + "file": "assets/app.js", + "content": "import { registerVueControllerComponents } from '@symfony/ux-vue';", + "position": "top", + "warn_if_missing": true + }, + { + "file": "assets/app.js", + "content": "registerVueControllerComponents(require.context('./vue/controllers', true, /\\.vue$/));", + "position": "bottom", + "warn_if_missing": true, + "requires": "symfony/webpack-encore-bundle" + }, + { + "file": "assets/app.js", + "content": "registerVueControllerComponents(import.meta.glob('./vue/controllers/**/*.vue', { eager: true }));", + "position": "bottom", + "warn_if_missing": true, + "requires": "symfony/reprise" + }, + { + "file": "assets/app.js", + "content": "registerVueControllerComponents();", + "position": "bottom", + "warn_if_missing": true, + "requires": "symfony/asset-mapper" + } + ], + "post-install-output": [ + "", + " * Using Vite? Install @vitejs/plugin-vue so Vite can compile", + " single-file components, and register it in your vite.config:", + "", + " npm install --save-dev @vitejs/plugin-vue", + "", + " import vue from '@vitejs/plugin-vue'", + "", + " export default defineConfig({", + " plugins: [", + " vue(),", + " Symfony({ /* ... */ }),", + " ],", + " })", + "", + " * Using Rsbuild? Install @rsbuild/plugin-vue and register it in your", + " rsbuild.config:", + "", + " npm install --save-dev @rsbuild/plugin-vue", + "", + " import { pluginVue } from '@rsbuild/plugin-vue'", + "", + " export default defineConfig({", + " plugins: [", + " pluginVue(),", + " Symfony({ /* ... */ }),", + " ],", + " })" + ] + }, + "files": { + "assets/vue/controllers/Hello.vue": { + "contents": [ + "", + "", + "", + "" + ], + "executable": false + } + }, + "ref": "ca9ba883ada9d18fa2e34576f1c6375bff609198" + } + } +} diff --git a/index.json b/index.json index 5c47ea61..70e5adbc 100644 --- a/index.json +++ b/index.json @@ -1474,7 +1474,8 @@ ], "symfony/ux-react": [ "2.8", - "2.9" + "2.9", + "3.4" ], "symfony/ux-svelte": [ "2.8", @@ -1494,7 +1495,8 @@ ], "symfony/ux-vue": [ "2.8", - "2.9" + "2.9", + "3.4" ], "symfony/validator": [ "4.1", @@ -1818,6 +1820,10 @@ "2.9": { "symfony/flex": "<1.20.0 || >=2.0.0,<2.3.0", "symfony/webpack-encore-bundle": "<2.0" + }, + "3.4": { + "symfony/flex": "<1.20.0 || >=2.0.0,<2.3.0", + "symfony/webpack-encore-bundle": "<2.0" } }, "symfony/ux-svelte": { @@ -1844,6 +1850,10 @@ "2.9": { "symfony/flex": "<1.20.0 || >=2.0.0,<2.3.0", "symfony/webpack-encore-bundle": "<2.0" + }, + "3.4": { + "symfony/flex": "<1.20.0 || >=2.0.0,<2.3.0", + "symfony/webpack-encore-bundle": "<2.0" } }, "symfony/validator": { diff --git a/symfony.ux-react.3.4.json b/symfony.ux-react.3.4.json new file mode 100644 index 00000000..690406b3 --- /dev/null +++ b/symfony.ux-react.3.4.json @@ -0,0 +1,99 @@ +{ + "manifests": { + "symfony/ux-react": { + "manifest": { + "bundles": { + "Symfony\\UX\\React\\ReactBundle": [ + "all" + ] + }, + "copy-from-recipe": { + "assets/": "assets/" + }, + "conflict": { + "symfony/webpack-encore-bundle": "<2.0", + "symfony/flex": "<1.20.0 || >=2.0.0,<2.3.0" + }, + "add-lines": [ + { + "file": "webpack.config.js", + "content": "\n .enableReactPreset()", + "position": "after_target", + "target": ".splitEntryChunks()" + }, + { + "file": "assets/app.js", + "content": "import { registerReactControllerComponents } from '@symfony/ux-react';", + "position": "top", + "warn_if_missing": true + }, + { + "file": "assets/app.js", + "content": "registerReactControllerComponents(require.context('./react/controllers', true, /\\.(j|t)sx?$/));", + "position": "bottom", + "warn_if_missing": true, + "requires": "symfony/webpack-encore-bundle" + }, + { + "file": "assets/app.js", + "content": "registerReactControllerComponents(import.meta.glob('./react/controllers/**/*.{jsx,tsx}', { eager: true }));", + "position": "bottom", + "warn_if_missing": true, + "requires": "symfony/reprise" + }, + { + "file": "assets/app.js", + "content": "registerReactControllerComponents();", + "position": "bottom", + "warn_if_missing": true, + "requires": "symfony/asset-mapper" + } + ], + "post-install-output": [ + "", + " * Using Vite? Install @vitejs/plugin-react so Vite can compile JSX,", + " and register it in your vite.config:", + "", + " npm install --save-dev @vitejs/plugin-react", + "", + " import react from '@vitejs/plugin-react'", + "", + " export default defineConfig({", + " plugins: [", + " react(),", + " Symfony({ /* ... */ }),", + " ],", + " })", + "", + " * Using Rsbuild? Install @rsbuild/plugin-react and register it in your", + " rsbuild.config:", + "", + " npm install --save-dev @rsbuild/plugin-react", + "", + " import { pluginReact } from '@rsbuild/plugin-react'", + "", + " export default defineConfig({", + " plugins: [", + " pluginReact(),", + " Symfony({ /* ... */ }),", + " ],", + " })" + ] + }, + "files": { + "assets/react/controllers/Hello.jsx": { + "contents": [ + "import React from 'react';", + "", + "export default function (props) {", + " return
Hello {props.fullName}
;", + "}", + "" + ], + "executable": false + } + }, + "ref": "1fd6b362511456064d80779d8774707a685f6f1b" + } + } +} diff --git a/symfony.ux-vue.3.4.json b/symfony.ux-vue.3.4.json new file mode 100644 index 00000000..1781dbb2 --- /dev/null +++ b/symfony.ux-vue.3.4.json @@ -0,0 +1,103 @@ +{ + "manifests": { + "symfony/ux-vue": { + "manifest": { + "bundles": { + "Symfony\\UX\\Vue\\VueBundle": [ + "all" + ] + }, + "copy-from-recipe": { + "assets/": "assets/" + }, + "conflict": { + "symfony/webpack-encore-bundle": "<2.0", + "symfony/flex": "<1.20.0 || >=2.0.0,<2.3.0" + }, + "add-lines": [ + { + "file": "webpack.config.js", + "content": "\n .enableVueLoader()", + "position": "after_target", + "target": ".splitEntryChunks()" + }, + { + "file": "assets/app.js", + "content": "import { registerVueControllerComponents } from '@symfony/ux-vue';", + "position": "top", + "warn_if_missing": true + }, + { + "file": "assets/app.js", + "content": "registerVueControllerComponents(require.context('./vue/controllers', true, /\\.vue$/));", + "position": "bottom", + "warn_if_missing": true, + "requires": "symfony/webpack-encore-bundle" + }, + { + "file": "assets/app.js", + "content": "registerVueControllerComponents(import.meta.glob('./vue/controllers/**/*.vue', { eager: true }));", + "position": "bottom", + "warn_if_missing": true, + "requires": "symfony/reprise" + }, + { + "file": "assets/app.js", + "content": "registerVueControllerComponents();", + "position": "bottom", + "warn_if_missing": true, + "requires": "symfony/asset-mapper" + } + ], + "post-install-output": [ + "", + " * Using Vite? Install @vitejs/plugin-vue so Vite can compile", + " single-file components, and register it in your vite.config:", + "", + " npm install --save-dev @vitejs/plugin-vue", + "", + " import vue from '@vitejs/plugin-vue'", + "", + " export default defineConfig({", + " plugins: [", + " vue(),", + " Symfony({ /* ... */ }),", + " ],", + " })", + "", + " * Using Rsbuild? Install @rsbuild/plugin-vue and register it in your", + " rsbuild.config:", + "", + " npm install --save-dev @rsbuild/plugin-vue", + "", + " import { pluginVue } from '@rsbuild/plugin-vue'", + "", + " export default defineConfig({", + " plugins: [", + " pluginVue(),", + " Symfony({ /* ... */ }),", + " ],", + " })" + ] + }, + "files": { + "assets/vue/controllers/Hello.vue": { + "contents": [ + "", + "", + "", + "" + ], + "executable": false + } + }, + "ref": "ca9ba883ada9d18fa2e34576f1c6375bff609198" + } + } +}