From 71715f5523da3f1a046db57c72210af95e47f605 Mon Sep 17 00:00:00 2001 From: mertsincan Date: Mon, 1 Apr 2024 10:46:31 +0100 Subject: [PATCH] Fixed #5502 - Add PrimeVueStyled and PrimeVueUnstyled plugins --- components/lib/config/PrimeVue.js | 51 ++++--------------- components/lib/styled/PrimeVueStyled.d.ts | 1 + components/lib/styled/PrimeVueStyled.js | 50 ++++++++++++++++++ components/lib/styled/package.json | 6 +++ components/lib/unstyled/PrimeVueUnstyled.d.ts | 1 + components/lib/unstyled/PrimeVueUnstyled.js | 11 ++++ components/lib/unstyled/package.json | 6 +++ 7 files changed, 85 insertions(+), 41 deletions(-) create mode 100644 components/lib/styled/PrimeVueStyled.d.ts create mode 100644 components/lib/styled/PrimeVueStyled.js create mode 100644 components/lib/styled/package.json create mode 100644 components/lib/unstyled/PrimeVueUnstyled.d.ts create mode 100644 components/lib/unstyled/PrimeVueUnstyled.js create mode 100644 components/lib/unstyled/package.json diff --git a/components/lib/config/PrimeVue.js b/components/lib/config/PrimeVue.js index 19dda31403..2fd7361350 100644 --- a/components/lib/config/PrimeVue.js +++ b/components/lib/config/PrimeVue.js @@ -1,8 +1,5 @@ import { FilterMatchMode } from 'primevue/api'; -import Theme, { ThemeService } from 'primevue/themes'; -import PrimeOne from 'primevue/themes/primeone'; -import Aura from 'primevue/themes/primeone/aura'; -import { inject, reactive, ref, watch } from 'vue'; +import { inject, reactive } from 'vue'; export const defaultOptions = { ripple: false, @@ -136,21 +133,11 @@ export const defaultOptions = { menu: 1000, tooltip: 1100 }, - theme: { - base: PrimeOne, - preset: Aura, - options: { - prefix: 'p', - darkModeSelector: 'system', - cssLayer: false - } - }, pt: undefined, ptOptions: { mergeSections: true, mergeProps: false }, - unstyled: false, csp: { nonce: undefined } @@ -168,37 +155,19 @@ export function usePrimeVue() { return PrimeVue; } -function setupTheme(app, PrimeVue) { - const isChanged = ref(false); - - watch( - PrimeVue.config.theme, - (newValue) => { - if (!isChanged.value) { - Theme.setTheme(newValue); - } +export function setup(app, options) { + const PrimeVue = { + config: reactive(options) + }; - isChanged.value = false; - }, - { immediate: true, deep: true } - ); + app.config.globalProperties.$primevue = PrimeVue; + app.provide(PrimeVueSymbol, PrimeVue); - ThemeService.on('theme:change', function (newTheme) { - isChanged.value = true; - app.config.globalProperties.$primevue.config.theme = newTheme; - }); + return PrimeVue; } export default { - install: (app, options) => { - const configOptions = options ? { ...defaultOptions, ...options } : { ...defaultOptions }; - const PrimeVue = { - config: reactive(configOptions) - }; - - app.config.globalProperties.$primevue = PrimeVue; - app.provide(PrimeVueSymbol, PrimeVue); - - setupTheme(app, PrimeVue); + install: () => { + console.error("This plugin has been removed in v4 version. Use 'PrimeVueStyled' plugin for styled mode, and 'PrimeVueUnstyled' plugin for unstyled mode."); } }; diff --git a/components/lib/styled/PrimeVueStyled.d.ts b/components/lib/styled/PrimeVueStyled.d.ts new file mode 100644 index 0000000000..49b48d7c57 --- /dev/null +++ b/components/lib/styled/PrimeVueStyled.d.ts @@ -0,0 +1 @@ +export * from '../config'; diff --git a/components/lib/styled/PrimeVueStyled.js b/components/lib/styled/PrimeVueStyled.js new file mode 100644 index 0000000000..56d56360bc --- /dev/null +++ b/components/lib/styled/PrimeVueStyled.js @@ -0,0 +1,50 @@ +import * as PrimeVueConfig from 'primevue/config'; +import Theme, { ThemeService } from 'primevue/themes'; +import PrimeOne from 'primevue/themes/primeone'; +import Aura from 'primevue/themes/primeone/aura'; +import { ref, watch } from 'vue'; + +export const defaultOptions = { + ...PrimeVueConfig.defaultOptions, + theme: { + base: PrimeOne, + preset: Aura, + options: { + prefix: 'p', + darkModeSelector: 'system', + cssLayer: false + } + } +}; + +export const { usePrimeVue } = PrimeVueConfig; + +function setupTheme(app, PrimeVue) { + const isChanged = ref(false); + + watch( + PrimeVue.config.theme, + (newValue) => { + if (!isChanged.value) { + Theme.setTheme(newValue); + } + + isChanged.value = false; + }, + { immediate: true, deep: true } + ); + + ThemeService.on('theme:change', function (newTheme) { + isChanged.value = true; + app.config.globalProperties.$primevue.config.theme = newTheme; + }); +} + +export default { + install: (app, options) => { + const configOptions = { ...defaultOptions, ...options, unstyled: false }; + const PrimeVue = PrimeVueConfig.setup(app, configOptions); + + setupTheme(app, PrimeVue); + } +}; diff --git a/components/lib/styled/package.json b/components/lib/styled/package.json new file mode 100644 index 0000000000..251a56cfa3 --- /dev/null +++ b/components/lib/styled/package.json @@ -0,0 +1,6 @@ +{ + "main": "./primevuestyled.cjs.js", + "module": "./primevuestyled.esm.js", + "unpkg": "./primevuestyled.min.js", + "types": "./PrimeVueStyled.d.ts" +} diff --git a/components/lib/unstyled/PrimeVueUnstyled.d.ts b/components/lib/unstyled/PrimeVueUnstyled.d.ts new file mode 100644 index 0000000000..49b48d7c57 --- /dev/null +++ b/components/lib/unstyled/PrimeVueUnstyled.d.ts @@ -0,0 +1 @@ +export * from '../config'; diff --git a/components/lib/unstyled/PrimeVueUnstyled.js b/components/lib/unstyled/PrimeVueUnstyled.js new file mode 100644 index 0000000000..b1149a5eef --- /dev/null +++ b/components/lib/unstyled/PrimeVueUnstyled.js @@ -0,0 +1,11 @@ +import * as PrimeVueConfig from 'primevue/config'; + +export const { defaultOptions, usePrimeVue } = PrimeVueConfig; + +export default { + install: (app, options) => { + const configOptions = { ...defaultOptions, ...options, unstyled: true }; + + PrimeVueConfig.setup(app, configOptions); + } +}; diff --git a/components/lib/unstyled/package.json b/components/lib/unstyled/package.json new file mode 100644 index 0000000000..34156019c6 --- /dev/null +++ b/components/lib/unstyled/package.json @@ -0,0 +1,6 @@ +{ + "main": "./primevueunstyled.cjs.js", + "module": "./primevueunstyled.esm.js", + "unpkg": "./primevueunstyled.min.js", + "types": "./PrimeVueUnstyled.d.ts" +}