import { Accordion, AccordionItem} from "/components/accordion";
Vue.component()
v-accordion-item
. Но тебе все равно придется написать документацию с примерами того, как надо пользоваться твоим творением, а оно далеко не интуитивное, совсем не интуитивное.vuetify
сюда приплетать не надо, то UI фреймворк, и работать с ним надо так, как он задуман, и дизайн под него делать так как он задуман, как только захочешь сделать что-то свое, то все его слоты встанут поперек горла, и придется пилить свой компонент с нуля. Это же касается и бутстрапа и других подобных. Я с трудом могу представить, чтобы разметка элемента аккордеона была кардинально разнящейся от другого его элемента - это раз.
У вас там цикл, на минуточку. Правильно, придется костылить. Ставить в теле аккордеона условие и каждую итерацию проверять его. Спрашивается, почему этот костыль нельзя использовать в варианте 1?
Функционально - да, но нельзя же забывать про доброе и вечное. Мы не должны полагаться на иерархию узлов в DOM при стилизации. Нельзя писать .class > div, но .div_classname. Это, к слову, отлично решает БЭМ, и появилась она не на пустом месте. Вы можете сказать, что в данном конкретном случае этим можно пренебречь, на что я возражу, что нельзя оставлять разбитые окна там, где цена "целого стекла" в плане человекочасов невысока.
v-accordion-item
это ничто иное как обертка для содержимого, которое в него передается. Сам v-accordion взаимодействует только с v-accordion-item, и больше ни с чем, контент ему трогать не надо. То что ванильный JS может полностью и безболезненно заменить jQuery - это миф
v-main-accordion
это обертка внутри которой реализуется некоторый механизм построения аккордеонаv-accordion
Для
v-accordion-item
у меня предусмотрено два слота. Под заголовок и контент. При этомv-accordion-item
остается заменяемым. Я могу вместоv-accordion-item
использовать просто<div>
, или какой-тоv-my-accordion-item
у которого пять слотов, или нету вовсе.В итоге имею гибкость, простоту и удобство.