-
Notifications
You must be signed in to change notification settings - Fork 985
feat(components): add Repeater component #5797
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. Weβll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: v4
Are you sure you want to change the base?
Conversation
Unifies emit overloads per @typescript-eslint/unified-signatures. Removes unused toRef and stop; useSortable cleanup is already handled by vueuse via scope disposal.
|
Hey man, |
fix(ui): unify Repeater emits signatures and clean up unused vars - also fixed other CI errors
Fixes accessibility violations ("button-name") by adding aria-labels
to icon-only buttons. Labels are localized using Nuxt UI locale
infrastructure.
This resolves failing a11y snapshot tests in both nuxt and vue projects.
No visual changes.
|
Hey @salehattari, |
fix(ui): add accessible labels to Repeater action buttons
|
Hey @salehattari, |
commit: |
|
Hey, @atinux @TheAlexLichter - I'm not sure if I'm tagging the right people to address it but -
Any guidance? π |
|
Thanks @salehattari for your work on this PR! A Repeater is really needed, especially for forms. Small naming thought: if the main goal is form usage (state + validation), maybe a name like A few points to consider:
For UI reference, I really like Filamentβs Repeater: https://filamentphp.com/docs/3.x/forms/fields/repeater It keeps the header/actions compact and works great in real forms. With ButtonsWith CollapsingWith 'One Line' Mode |






π Linked issue
Resolves #5308
β Type of change
π Description
This PR introduces a new
Repeatercomponent.It allows users to create dynamic, sortable lists of forms or items. It is designed to handle complex objects, supports custom templates, and is fully integrated with the Nuxt UI theme system.
@vueuse/integrations/useSortable(wrappingsortablejs).Features
useSortable(with touch support).tv(Tailwind Variants) supportingoutline,soft, etc.maxItemsandminItems.T extends Record<string, any>).Checklist
src/runtime/components/Repeater.vue)src/theme/repeater.ts)playgrounds/nuxt/app/pages/components/repeater.vue)test/components/Repeater.spec.ts)docs/content/docs/components/repeater.md)Preview
URepeater.-.salehattari.mp4