Я пытаюсь использовать семантический аккордеон пользовательского интерфейса, содержащий несколько записей и позволяющий открывать более одной записи одновременно;каждая запись имеет титульную часть, содержащую значок с прикрепленным всплывающим окном и область содержимого, содержащую текстовую область.
Я хотел бы иметь возможность открывать оба аккордеона одновременно, что, очевидно, поддерживается с помощью exclusive={false}
Пропорция при создании элемента accordion, как описано в документации здесь
Но в этом примере используется массив объектов с содержимым, представляющим собой строку, а не другие response / html /элементы jsx (в моем случае это значки семантического интерфейса, всплывающие окна и текстовые области).Этот массив объектов передается в panel
аккордеон.
И я не знаю, что требует аккордеон семантического пользовательского интерфейса для правильной работы с отслеживанием индексов и прочего, я не уверен, что еще мне нужно настроить или возможно ли это с помощью компонента семантического пользовательского интерфейсакак есть.
Я скопировал этот пример и использую активный индекс и обработчик onclick, который переключает активный индекс в состояние реакции компонента.
Вот фрагмент кода обработчика аккордеона и онклика и состояния приложения реакции:
class FileUpload extends Component {
// other stuff omitted
constructor(props) {
super(props);
this.state = {
activeAccordionIndex: -1
};
handleAccordionClick = (e, titleProps) => {
const { index } = titleProps;
const { activeAccordionIndex } = this.state;
const newIndex = activeAccordionIndex === index ? -1 : index;
this.setState({
activeAccordionIndex: newIndex
})
}
// I'm using a small helper function to create the accordion and invoke it in
// the render method, just one item for brevity; the other entries are pretty
// much the same
getAccordionInputs() {
const { activeAccordionIndex } = this.state;
let accordionContent = (
<Accordion fluid exclusive={false}>
<Accordion.Title
className="file-upload-ordinal-accord-title"
active={activeAccordionIndex === 0}
index={0}
onClick={this.handleAccordionClick}
>
<Icon name='dropdown' />
Enter Ordinal Features
<Popup
on="click"
position="right center"
header="Ordinal Features Help"
content={
<div className="content">
<p>Ordinal Features help description</p>
</div>
}
trigger={
<Icon
className="file-upload-ordinal-help-icon"
inverted
size="large"
color="orange"
name="info circle"
/>
}
/>
</Accordion.Title>
<Accordion.Content
active={activeAccordionIndex === 0}
>
<textarea
className="file-upload-ordinal-text-area"
id="ordinal_features_text_area_input"
label="Ordinal Features"
placeholder={"{\"ord_feat_1\": [\"MALE\", \"FEMALE\"], \"ord_feat_2\": [\"FIRST\", \"SECOND\", \"THIRD\"]}"}
onChange={this.handleOrdinalFeatures}
/>
</Accordion.Content>
</Accordion>
)
return accordionContent;
}
}
Я не знаю, как настроить это так, чтобы несколько аккордеонов открывались одновременно с контентом, которыйэто не строкаВозможно ли это с семантическим пользовательским интерфейсом?Или мне нужно найти альтернативное решение и / или сделать деталь с желаемым поведением вручную?