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') },