From 0e9f957a251d7ebfa232acca57e7070bf065482d Mon Sep 17 00:00:00 2001 From: Mert Sincan Date: Tue, 14 Jan 2025 11:07:51 +0000 Subject: [PATCH] feat: Add useId and useAttrSelector composables to core Fixes #7087 --- packages/core/src/index.d.ts | 2 ++ packages/core/src/index.js | 6 ++++++ packages/core/src/useattrselector/UseAttrSelector.d.ts | 1 + packages/core/src/useattrselector/UseAttrSelector.js | 7 +++++++ packages/core/src/useattrselector/package.json | 5 +++++ packages/core/src/useid/UseId.d.ts | 1 + packages/core/src/useid/UseId.js | 8 ++++++++ packages/core/src/useid/package.json | 5 +++++ packages/primevue/rollup.config.mjs | 2 ++ 9 files changed, 37 insertions(+) create mode 100644 packages/core/src/useattrselector/UseAttrSelector.d.ts create mode 100644 packages/core/src/useattrselector/UseAttrSelector.js create mode 100644 packages/core/src/useattrselector/package.json create mode 100644 packages/core/src/useid/UseId.d.ts create mode 100644 packages/core/src/useid/UseId.js create mode 100644 packages/core/src/useid/package.json diff --git a/packages/core/src/index.d.ts b/packages/core/src/index.d.ts index d1f2dcaea..867b6fcec 100644 --- a/packages/core/src/index.d.ts +++ b/packages/core/src/index.d.ts @@ -52,5 +52,7 @@ export * from '@primevue/core/baseinput'; export * from '@primevue/core/config'; export { default as PrimeVue } from '@primevue/core/config'; export * from '@primevue/core/service'; +export * from '@primevue/core/useattrselector'; +export * from '@primevue/core/useid'; export * from '@primevue/core/usestyle'; export * from '@primevue/core/utils'; diff --git a/packages/core/src/index.js b/packages/core/src/index.js index e07fda996..aaca413c4 100644 --- a/packages/core/src/index.js +++ b/packages/core/src/index.js @@ -25,6 +25,12 @@ export { default as PrimeVue } from '@primevue/core/config'; // PrimeVueService export { default as PrimeVueService } from '@primevue/core/service'; +// UseAttrSelector +export * from '@primevue/core/useattrselector'; + +// UseId +export * from '@primevue/core/useid'; + // UseStyle export * from '@primevue/core/usestyle'; diff --git a/packages/core/src/useattrselector/UseAttrSelector.d.ts b/packages/core/src/useattrselector/UseAttrSelector.d.ts new file mode 100644 index 000000000..f372e6ca2 --- /dev/null +++ b/packages/core/src/useattrselector/UseAttrSelector.d.ts @@ -0,0 +1 @@ +export declare function useAttrSelector(prefix?: string): string; diff --git a/packages/core/src/useattrselector/UseAttrSelector.js b/packages/core/src/useattrselector/UseAttrSelector.js new file mode 100644 index 000000000..d4513e799 --- /dev/null +++ b/packages/core/src/useattrselector/UseAttrSelector.js @@ -0,0 +1,7 @@ +import { useId } from 'vue'; + +export function useAttrSelector(prefix = 'pc') { + const idx = useId(); + + return `${prefix}${idx.replace('v-', '').replaceAll('-', '_')}`; +} diff --git a/packages/core/src/useattrselector/package.json b/packages/core/src/useattrselector/package.json new file mode 100644 index 000000000..1aac3fe59 --- /dev/null +++ b/packages/core/src/useattrselector/package.json @@ -0,0 +1,5 @@ +{ + "main": "./UseAttrSelector.js", + "module": "./UseAttrSelector.js", + "types": "./UseAttrSelector.d.ts" +} diff --git a/packages/core/src/useid/UseId.d.ts b/packages/core/src/useid/UseId.d.ts new file mode 100644 index 000000000..f61026aea --- /dev/null +++ b/packages/core/src/useid/UseId.d.ts @@ -0,0 +1 @@ +export declare function useId(initialValue?: string): string; diff --git a/packages/core/src/useid/UseId.js b/packages/core/src/useid/UseId.js new file mode 100644 index 000000000..23a5b2cb6 --- /dev/null +++ b/packages/core/src/useid/UseId.js @@ -0,0 +1,8 @@ +import { ref, toValue, useId as vueUseId } from 'vue'; + +export function useId(initialValue) { + const idx = vueUseId(); + const id = ref(initialValue); + + return toValue(id) || `pv_id${toValue(idx)?.replaceAll(/v-|-/g, '_')}`; +} diff --git a/packages/core/src/useid/package.json b/packages/core/src/useid/package.json new file mode 100644 index 000000000..b2c7d4c8b --- /dev/null +++ b/packages/core/src/useid/package.json @@ -0,0 +1,5 @@ +{ + "main": "./UseId.js", + "module": "./UseId.js", + "types": "./UseId.d.ts" +} diff --git a/packages/primevue/rollup.config.mjs b/packages/primevue/rollup.config.mjs index eeb419aa0..d6c216376 100644 --- a/packages/primevue/rollup.config.mjs +++ b/packages/primevue/rollup.config.mjs @@ -54,6 +54,8 @@ const ALIAS_ENTRIES = [ { find: '@primevue/core/baseinput', replacement: path.resolve(__dirname, '../core/src/baseinput/BaseInput.vue') }, { find: '@primevue/core/config', replacement: path.resolve(__dirname, '../core/src/config/PrimeVue.js') }, { find: '@primevue/core/service', replacement: path.resolve(__dirname, '../core/src/service/PrimeVueService.js') }, + { find: '@primevue/core/useattrselector', replacement: path.resolve(__dirname, '../core/src/useattrselector/UseAttrSelector.js') }, + { find: '@primevue/core/useid', replacement: path.resolve(__dirname, '../core/src/useid/UseId.js') }, { find: '@primevue/core/usestyle', replacement: path.resolve(__dirname, '../core/src/usestyle/UseStyle.js') }, { find: '@primevue/core/utils', replacement: path.resolve(__dirname, '../core/src/utils/Utils.js') }, { find: '@primevue/core', replacement: path.resolve(__dirname, '../core/src/index.js') },