AustinGil/vuetensils

Multiple Drawer component opened at once

lbineau opened this issue · 5 comments

Hello @AustinGil ,

I've a question regarding the Drawer component.

  • Is it possible to use a single model to handle multiple Drawer components? (like a model for radio group)

Currently I'm facing an issue where multiple Drawers are opened at once which I believe is not the desired behaviour.

Thanks for your time.

That's an interesting question. Of course you can use v-model with multiple drawers, but that would open and close them at the same time. However, what I believe you are trying to do is toggle between different drawers. You should be able to do that as well but it's not automatically supported.

This component uses a custom prop for v-model called showing. Setting this to a truthy value should show the drawer, and falsey should hide it. With that in mind, you could pass some logic like <VDrawer :showing="activeDrawer === 1"> and another drawer with <VDrawer :showing="activeDrawer === 2">.

Then the other half of the v-model logic is the event. In this case, it's tied to the update event. So on the drawers you could do <VDrawer @update="toggleDrawers"> and add the toggleDrawers method to your component.

This isn't as simple as it could be because update is the only event that is triggered, and it's fired both when the drawer opens, and when it closes. It emits a boolean (true or false) so you might need to add some additional logic and parameters to that function.

I'm sorry I dont have a better answer, but I did just add an issue to add events for open and close. Hope this is helpful nonetheless.

Thanks for your quick reply.
The solution you proposed seems to work quite well, just an issue with the focus returning to the previous drawer toggle button. I can live with that for now.
I will have a look again when #113 gets implemented.

Ah yeah, that's a feature that is intended to assist with a11y. Yours was not a use-case I considered so I may need to think about it.

No I mean the accessible behavior is the reason I'm using your library, I totally get it should return to the trigger button when drawer is closed :-)
But when switching drawers the focus goes back on the trigger button of the previous drawer not the current one.
My usecase probably does not worth digging with your library, I'll think of something else no worries.

Yeah, you can try using refs to get the next focus target, and then you'll probably need to hook into $nextTick.