Primevue skilld
Skill skilld-dev/vue-ecosystem-skills/skills/primevue-skilld
PrimeVue is an open source UI library for Vue featuring a rich set of 80+ components, a theme designer, various theme alternatives such as Material, Bootstrap, Tailwind, premium templates and profe.... ALWAYS use when writing code importing "primevue". Consult for debugging, best practices, or modifying primevue.From its SKILL.md
npx -y skills add skilld-dev/vue-ecosystem-skills --skill primevue-skilldAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
SKILL.md
6.1 KB, as published. Nobody here has run it
primefaces/primevue [email protected]
Tags: v2-stable: 2.10.4, v3-stable: 3.53.1, latest: 4.5.5
References: Docs
API Changes
This section documents version-specific API changes — prioritize recent major/minor releases.
-
BREAKING:
Calendarrenamed toDatePicker— v3 component renamed toDatePickerin v4 source -
BREAKING:
Dropdownrenamed toSelect— v3 component renamed toSelectin v4 source -
BREAKING:
Sidebarrenamed toDrawer— v3 component renamed toDrawerin v4 source -
BREAKING:
OverlayPanelrenamed toPopover— v3 component renamed toPopoverin v4 source -
BREAKING:
InputSwitchrenamed toToggleSwitch— v3 component renamed toToggleSwitchin v4 source -
BREAKING:
TabViewreplaced byTabs— new component structure usingTabList,Tab,TabPanels, andTabPanelsource -
BREAKING:
Stepsreplaced byStepper— new component structure usingStepList,Step,StepPanels, andStepPanelsource -
BREAKING:
Accordionreimplementation — now usesAccordionPanel,AccordionHeader, andAccordionContentcomponents source -
BREAKING:
v-model:value— v4 usesv-model:valuefor active state inTabs,Accordion, andStepperinstead ofv-modelsource -
DEPRECATED:
inputStyle— property replaced byinputVariant(values: 'filled' | 'outlined') source -
NEW:
@primevue/forms— new dedicated package for advanced form management and validation source -
NEW:
Fluidcomponent — layout component that makes descendants span full width source -
NEW:
IconField&InputIcon— new components to wrap inputs and icons for decorative purposes source -
NEW:
useId&useAttrSelector— new core composables for unique ID generation and attribute selectors source
Also changed: DataTable showClearButton default is false (v4.3.0) · IftaLabel new component for in-field labels · Checkbox added indeterminate state · OverlayBadge new component replaces Badge directive · InlineMessage component deprecated · iconPosition removed from IconField · warning property renamed to warn · Drawer added before-hide emit (v4.3.0)
Best Practices
- Use the
Fluidcomponent as a wrapper for bulk application of full-width styles to inputs instead of adding thefluidprop to every individual field for cleaner and more maintainable templates source
<Fluid>
<div class="grid grid-cols-2 gap-4">
<InputText placeholder="Full Width" />
<DatePicker placeholder="Full Width" />
<Select placeholder="Full Width" />
</div>
</Fluid>
-
In Stepper vertical layouts, always wrap
StepandStepPanelinside aStepItemcomponent to ensure correct structure and connection between headers and content source -
Use
asChildandv-sloton components likeSteporTabto implement headless mode for full UI control while retaining PrimeVue's built-in accessibility logic source
<Step v-slot="{ activateCallback, value, a11yAttrs }" asChild :value="1">
<button @click="activateCallback" v-bind="a11yAttrs.header">
Step {{ value }}
</button>
</Step>
- For performant row expansion in
DataTablewith large datasets, use an object forexpandedRowscombined withdataKeyinstead of an array of row objects source
// Preferred (O(1) lookup)
const expandedRows = ref({ '1004': true, '1005': true });
// In template
<DataTable v-model:expandedRows="expandedRows" dataKey="id">
-
Enable automatic user preference persistence (sorting, filtering, paging) in
DataTableusingstateStorageandstateKeyto improve UX across page visits source -
Add a
delaytoVirtualScrollerto throttle rendering during rapid scrolling, significantly improving UI responsiveness for extremely large lists source
<VirtualScroller :items="items" :itemSize="50" :delay="250">
<template v-slot:item="{ item }">{{ item }}</template>
</VirtualScroller>
-
Implement semantic navigation menus by using
TabswithoutTabPanelsand combining it withrouter-linkfor accessible, state-aware top or side bars source -
Always wrap inputs and icons with
IconFieldandInputIconto ensure correct positioning and styling, supporting both leading and trailing icon placements source
<IconField>
<InputIcon class="pi pi-search" />
<InputText placeholder="Search" />
</IconField>
-
Use
IftaLabelfor modern, top-aligned in-field labels that visually integrate with the input and handle validation states automatically source -
Leverage the built-in
DataTablecontext menu integration to provide row-specific actions without manual event listener management or custom positioning logic source
<ContextMenu ref="cm" :model="menuModel" />
<DataTable :value="products" contextMenu @row-contextmenu="onRowContextMenu">