-
Notifications
You must be signed in to change notification settings - Fork 44
/
Copy pathmulti-external-select-menu.tsx
98 lines (89 loc) · 2.37 KB
/
multi-external-select-menu.tsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
import React from "react";
import {
Button,
Text,
Input,
Message,
Modal,
PheliaMessageProps,
Section,
Divider,
Option,
OptionGroup,
MultiSelectMenu
} from "../../core";
export function MultiExternalSelectMenuModal() {
return (
<Modal title="External menu" submit="Submit">
<Input label="All external">
<MultiSelectMenu
minQueryLength={0}
onSearchOptions={() => [
<OptionGroup key="1" label={"A group"}>
<Option value="option-1">This was loaded asynchronously</Option>
</OptionGroup>
]}
type="external"
action="select-menu"
placeholder="A placeholder"
/>
</Input>
</Modal>
);
}
export function MultiExternalSelectMenuExample({
useModal,
useState
}: PheliaMessageProps) {
const [form, setForm] = useState("form");
const [selected, setSelected] = useState("selected");
const openModal = useModal("modal", MultiExternalSelectMenuModal, form => {
setForm(JSON.stringify(form, null, 2));
});
return (
<Message text="A external multi select menu example">
{selected && (
<Section>
<Text type="mrkdwn">*Selected:* {selected}</Text>
</Section>
)}
{!selected && (
<Section
text="A Multi-Select Menu in a Section component"
accessory={
<MultiSelectMenu
initialOptions={[
<Option key="1" value="option-1">
This was loaded asynchronously
</Option>
]}
onSearchOptions={() => [
<Option key="1" value="option-1">
This was loaded asynchronously
</Option>
]}
type="external"
action="external"
placeholder="A placeholder"
onSelect={event => setSelected(event.selected.join(", "))}
/>
}
/>
)}
<Divider />
<Section
text="You can also have a multi external select menu in a modal"
accessory={
<Button action="open-modal" onClick={() => openModal()}>
Open modal
</Button>
}
/>
{form && (
<Section text="Modal submission:">
<Text type="mrkdwn">{"```\n" + form + "\n```"}</Text>
</Section>
)}
</Message>
);
}