@nyaruka/temba-components 0.123.0 → 0.124.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/copilot-instructions.md +22 -4
- package/CHANGELOG.md +21 -0
- package/TEST_OPTIMIZATION.md +158 -0
- package/demo/alert/example.html +65 -0
- package/demo/button/example.html +71 -0
- package/demo/chart/example.html +56 -0
- package/demo/checkbox/example.html +72 -0
- package/demo/compose/example.html +72 -0
- package/demo/data/images/gus.png +0 -0
- package/demo/data/images/purrington.jpg +0 -0
- package/demo/data/server/opened-tickets.json +40 -0
- package/demo/data/server/response-time.json +27 -0
- package/demo/datepicker/example.html +69 -0
- package/demo/dialog/example.html +107 -0
- package/demo/dropdown/example.html +99 -0
- package/demo/index.html +152 -430
- package/demo/misc/example.html +72 -0
- package/demo/progress/example.html +59 -0
- package/demo/select/drag-and-drop.html +142 -0
- package/demo/select/example.html +82 -0
- package/demo/select/multi.html +73 -0
- package/demo/slider/example.html +59 -0
- package/demo/sortable-list/example.html +99 -0
- package/demo/styles.css +183 -0
- package/demo/tabs/example.html +91 -0
- package/demo/textinput/completion.html +56 -0
- package/demo/textinput/example.html +61 -0
- package/dist/temba-components.js +323 -191
- package/dist/temba-components.js.map +1 -1
- package/out-tsc/src/chart/TembaChart.js +19 -16
- package/out-tsc/src/chart/TembaChart.js.map +1 -1
- package/out-tsc/src/fields/FieldManager.js +27 -34
- package/out-tsc/src/fields/FieldManager.js.map +1 -1
- package/out-tsc/src/flow/Editor.js +1 -1
- package/out-tsc/src/flow/Editor.js.map +1 -1
- package/out-tsc/src/list/SortableList.js +257 -60
- package/out-tsc/src/list/SortableList.js.map +1 -1
- package/out-tsc/src/omnibox/Omnibox.js +1 -1
- package/out-tsc/src/omnibox/Omnibox.js.map +1 -1
- package/out-tsc/src/select/Select.js +198 -38
- package/out-tsc/src/select/Select.js.map +1 -1
- package/out-tsc/src/thumbnail/Thumbnail.js +1 -1
- package/out-tsc/src/thumbnail/Thumbnail.js.map +1 -1
- package/out-tsc/src/webchat/WebChat.js +5 -2
- package/out-tsc/src/webchat/WebChat.js.map +1 -1
- package/out-tsc/test/temba-chart.test.js +1 -1
- package/out-tsc/test/temba-chart.test.js.map +1 -1
- package/out-tsc/test/temba-compose.test.js +6 -30
- package/out-tsc/test/temba-compose.test.js.map +1 -1
- package/out-tsc/test/temba-contact-chat.test.js +1 -2
- package/out-tsc/test/temba-contact-chat.test.js.map +1 -1
- package/out-tsc/test/temba-dropdown.test.js +1 -1
- package/out-tsc/test/temba-dropdown.test.js.map +1 -1
- package/out-tsc/test/temba-flow-editor-node.test.js +273 -0
- package/out-tsc/test/temba-flow-editor-node.test.js.map +1 -0
- package/out-tsc/test/temba-flow-editor.test.js +244 -0
- package/out-tsc/test/temba-flow-editor.test.js.map +1 -0
- package/out-tsc/test/temba-flow-plumber.test.js +145 -0
- package/out-tsc/test/temba-flow-plumber.test.js.map +1 -0
- package/out-tsc/test/temba-flow-render.test.js +171 -0
- package/out-tsc/test/temba-flow-render.test.js.map +1 -0
- package/out-tsc/test/temba-omnibox.test.js +6 -3
- package/out-tsc/test/temba-omnibox.test.js.map +1 -1
- package/out-tsc/test/temba-select.test.js +183 -53
- package/out-tsc/test/temba-select.test.js.map +1 -1
- package/out-tsc/test/temba-sortable-list.test.js +91 -15
- package/out-tsc/test/temba-sortable-list.test.js.map +1 -1
- package/out-tsc/test/temba-toast.test.js +1 -2
- package/out-tsc/test/temba-toast.test.js.map +1 -1
- package/out-tsc/test/temba-utils-index.test.js +2 -2
- package/out-tsc/test/temba-utils-index.test.js.map +1 -1
- package/out-tsc/test/temba-webchat-lightbox-fix.test.js +42 -0
- package/out-tsc/test/temba-webchat-lightbox-fix.test.js.map +1 -0
- package/out-tsc/test/utils.test.js +58 -0
- package/out-tsc/test/utils.test.js.map +1 -1
- package/package.json +2 -3
- package/screenshots/truth/flow/editor-basic.png +0 -0
- package/screenshots/truth/list/fields-dragging.png +0 -0
- package/screenshots/truth/list/sortable-dragging.png +0 -0
- package/screenshots/truth/list/sortable-dropped.png +0 -0
- package/screenshots/truth/list/sortable.png +0 -0
- package/screenshots/truth/omnibox/selected.png +0 -0
- package/screenshots/truth/select/disabled-multi-selection.png +0 -0
- package/screenshots/truth/select/disabled-selection.png +0 -0
- package/screenshots/truth/select/disabled.png +0 -0
- package/screenshots/truth/select/embedded.png +0 -0
- package/screenshots/truth/select/empty-options.png +0 -0
- package/screenshots/truth/select/expression-selected.png +0 -0
- package/screenshots/truth/select/expressions.png +0 -0
- package/screenshots/truth/select/functions.png +0 -0
- package/screenshots/truth/select/local-options.png +0 -0
- package/screenshots/truth/select/multi-reorder-final.png +0 -0
- package/screenshots/truth/select/multi-reorder-initial.png +0 -0
- package/screenshots/truth/select/multi-with-endpoint.png +0 -0
- package/screenshots/truth/select/multiple-initial-values.png +0 -0
- package/screenshots/truth/select/remote-options.png +0 -0
- package/screenshots/truth/select/search-enabled.png +0 -0
- package/screenshots/truth/select/search-multi-no-matches.png +0 -0
- package/screenshots/truth/select/search-selected-focus.png +0 -0
- package/screenshots/truth/select/search-selected.png +0 -0
- package/screenshots/truth/select/search-with-selected.png +0 -0
- package/screenshots/truth/select/searching.png +0 -0
- package/screenshots/truth/select/selected-multi-maxitems-reached.png +0 -0
- package/screenshots/truth/select/selected-multi.png +0 -0
- package/screenshots/truth/select/selected-single.png +0 -0
- package/screenshots/truth/select/selection-clearable.png +0 -0
- package/screenshots/truth/select/static-initial-value.png +0 -0
- package/screenshots/truth/select/static-initial-via-selected.png +0 -0
- package/screenshots/truth/select/truncated-selection.png +0 -0
- package/screenshots/truth/select/with-placeholder.png +0 -0
- package/screenshots/truth/select/without-placeholder.png +0 -0
- package/screenshots/truth/templates/default.png +0 -0
- package/screenshots/truth/templates/unapproved.png +0 -0
- package/screenshots/truth/webchat/connected-state.png +0 -0
- package/src/chart/TembaChart.ts +20 -16
- package/src/fields/FieldManager.ts +30 -38
- package/src/flow/Editor.ts +1 -1
- package/src/list/SortableList.ts +291 -67
- package/src/omnibox/Omnibox.ts +1 -1
- package/src/select/Select.ts +213 -42
- package/src/thumbnail/Thumbnail.ts +1 -1
- package/src/webchat/WebChat.ts +5 -2
- package/test/temba-chart.test.ts +1 -1
- package/test/temba-compose.test.ts +11 -38
- package/test/temba-contact-chat.test.ts +4 -6
- package/test/temba-dropdown.test.ts +1 -1
- package/test/temba-flow-editor-node.test.ts +344 -0
- package/test/temba-flow-editor.test.ts +301 -0
- package/test/temba-flow-plumber.test.ts +189 -0
- package/test/temba-flow-render.test.ts +220 -0
- package/test/temba-omnibox.test.ts +7 -3
- package/test/temba-select.test.ts +247 -79
- package/test/temba-sortable-list.test.ts +108 -15
- package/test/temba-toast.test.ts +2 -2
- package/test/temba-utils-index.test.ts +2 -2
- package/test/temba-webchat-lightbox-fix.test.ts +57 -0
- package/test/utils.test.ts +88 -0
- package/web-test-runner.config.mjs +4 -2
- package/.storybook/main.js +0 -14
- package/.storybook/preview-head.html +0 -1
- package/.storybook/preview.js +0 -17
- package/demo/agents.html +0 -147
- package/demo/old.html +0 -573
- package/demo/remote.html +0 -3
- package/screenshots/truth/compose/attachments-with-files-focused.png +0 -0
- package/stories/temba-checkbox.stories.md +0 -37
package/demo/old.html
DELETED
|
@@ -1,573 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html>
|
|
3
|
-
<head>
|
|
4
|
-
<script src="https://unpkg.com/@webcomponents/webcomponentsjs@2.3.0/bundles/webcomponents-sd-ce.js"></script>
|
|
5
|
-
<script src="http://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.js"></script>
|
|
6
|
-
<link
|
|
7
|
-
href="/sitestatic/css/temba-components.css"
|
|
8
|
-
rel="stylesheet"
|
|
9
|
-
type="text/css"
|
|
10
|
-
/>
|
|
11
|
-
|
|
12
|
-
<link
|
|
13
|
-
href="/sitestatic/css/tailwind.css"
|
|
14
|
-
rel="stylesheet"
|
|
15
|
-
type="text/css"
|
|
16
|
-
/>
|
|
17
|
-
|
|
18
|
-
<script language="javascript">
|
|
19
|
-
|
|
20
|
-
function handleContactChange(event) {
|
|
21
|
-
const ticket = event.target.value;
|
|
22
|
-
const chat = document.querySelector("temba-contact-chat");
|
|
23
|
-
chat.ticket = ticket;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
function handleContactHistoryUpdate(event) {
|
|
27
|
-
// tell our list to refresh since we know things happened
|
|
28
|
-
const tickets = document.querySelector("temba-tickets");
|
|
29
|
-
tickets.refresh();
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
function handleTicketsRefreshed(event) {
|
|
33
|
-
// tell our chat to refresh since we know things are new in our list
|
|
34
|
-
const chat = document.querySelector("temba-contact-chat");
|
|
35
|
-
chat.refresh();
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
function handleFilterChanged(event) {
|
|
39
|
-
const tickets = document.querySelector("temba-tickets");
|
|
40
|
-
const chat = document.querySelector("temba-contact-chat");
|
|
41
|
-
|
|
42
|
-
// if we have auto selecting, don't clear the chat
|
|
43
|
-
if (!tickets.nextSelection) {
|
|
44
|
-
chat.ticket = null;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
const filter = event.target.values[0].value;
|
|
48
|
-
if (filter === "O") {
|
|
49
|
-
tickets.endpoint = "/contact/tickets/?_format=json&folder=open"
|
|
50
|
-
} else {
|
|
51
|
-
tickets.endpoint = "/contact/tickets/?_format=json&folder=closed"
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
function handleTicketChanged(event) {
|
|
56
|
-
const ticket = event.detail.ticket;
|
|
57
|
-
const focus = event.detail.focus;
|
|
58
|
-
|
|
59
|
-
const filter = document.querySelector('temba-select[name="ticket-filter"]');
|
|
60
|
-
const tickets = document.querySelector("temba-tickets");
|
|
61
|
-
|
|
62
|
-
if (focus) {
|
|
63
|
-
tickets.setNextSelection(ticket.uuid);
|
|
64
|
-
filter.setSelection(ticket.status);
|
|
65
|
-
} else {
|
|
66
|
-
// no focus, just refresh
|
|
67
|
-
tickets.refresh();
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
</script>
|
|
72
|
-
|
|
73
|
-
</head>
|
|
74
|
-
<body>
|
|
75
|
-
<link
|
|
76
|
-
href="https://fonts.googleapis.com/css?family=Roboto+Mono:300|Roboto:300,400,500"
|
|
77
|
-
rel="stylesheet"
|
|
78
|
-
/>
|
|
79
|
-
|
|
80
|
-
<style>
|
|
81
|
-
|
|
82
|
-
temba-select[name='ticket-filter'] {
|
|
83
|
-
margin-bottom: 0.5em;
|
|
84
|
-
margin-top: -0.4em;
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
.example {
|
|
88
|
-
padding: 20px;
|
|
89
|
-
border: 1px solid #e6e6e6;
|
|
90
|
-
margin: 10px;
|
|
91
|
-
border-radius: 3px;
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
.example-header {
|
|
95
|
-
padding-bottom: 10px;
|
|
96
|
-
font-size: 12px;
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
html {
|
|
100
|
-
--color-text-dark: #555;
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
.ticket-list {
|
|
104
|
-
flex-basis: 300px;
|
|
105
|
-
flex-grow: 0;
|
|
106
|
-
flex-shrink: 0;
|
|
107
|
-
transition: all 200ms ease-in;
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
@media only screen and (max-width: 1024px) {
|
|
111
|
-
.ticket-list {
|
|
112
|
-
flex-basis: 200px;
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
@media only screen and (max-width: 768px) {
|
|
117
|
-
.ticket-list {
|
|
118
|
-
flex-basis: 125px;
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
</style>
|
|
123
|
-
<temba-store
|
|
124
|
-
completions="/mr/docs/en-us/completion.json"
|
|
125
|
-
functions="/mr/docs/en-us/functions.json"
|
|
126
|
-
fields="/api/v2/fields.json"
|
|
127
|
-
globals="/api/v2/globals.json"
|
|
128
|
-
groups="/api/v2/groups.json"
|
|
129
|
-
></temba-store>
|
|
130
|
-
|
|
131
|
-
<div class="flex-col">
|
|
132
|
-
<div class="flex" style="height:100vh">
|
|
133
|
-
|
|
134
|
-
<div class="ticket-list m-4 mr-2 flex flex-col">
|
|
135
|
-
|
|
136
|
-
<temba-select name="ticket-filter" onchange="handleFilterChanged(event)">
|
|
137
|
-
<temba-option name="Open" value="O" icon="inbox"></temba-option>
|
|
138
|
-
<temba-option name="Closed" value="C" icon="check"></temba-option>
|
|
139
|
-
</temba-select>
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
<div class="flex flex-grow">
|
|
143
|
-
<temba-tickets endpoint="/contact/tickets/?_format=json&folder=open" @temba-refreshed="handleTicketsRefreshed(event)" onchange="handleContactChange(event)"></temba-tickets>
|
|
144
|
-
</div>
|
|
145
|
-
|
|
146
|
-
</div>
|
|
147
|
-
|
|
148
|
-
<div class="flex-grow flex-col h-full py-4 pb-4 pr-4">
|
|
149
|
-
<temba-contact-chat @temba-refreshed="handleContactHistoryUpdate(event)" @temba-content-changed="handleTicketChanged(event)"></temba-contact-chat>
|
|
150
|
-
</div>
|
|
151
|
-
|
|
152
|
-
</div>
|
|
153
|
-
</div>
|
|
154
|
-
|
|
155
|
-
<!--
|
|
156
|
-
<div class="flex-col">
|
|
157
|
-
<div class="flex" style="height:100vh">
|
|
158
|
-
<div style="min-width:250px; max-width:450px" class="m-4 mr-2">
|
|
159
|
-
<temba-ticket-list endpoint="/api/v2/contacts.json" onchange="handleContactChange(event)"></temba-ticket-list>
|
|
160
|
-
</div>
|
|
161
|
-
|
|
162
|
-
<div class="flex-grow flex-col h-full py-4 pb-4 pr-4">
|
|
163
|
-
<temba-contact-chat></temba-contact-chat>
|
|
164
|
-
</div>
|
|
165
|
-
|
|
166
|
-
</div>
|
|
167
|
-
</div>
|
|
168
|
-
|
|
169
|
-
<div class="example">
|
|
170
|
-
<temba-completion counter="temba-charcount" value="Some sample text goes here. Let’s go!" gsm textarea></temba-completion>
|
|
171
|
-
<temba-charcount text='count this text'></temba-charcount>
|
|
172
|
-
</div>
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
<div class="example">
|
|
176
|
-
<temba-textinput value="Some sample text goes here. Let’s go!" gsm></temba-textinput>
|
|
177
|
-
</div>
|
|
178
|
-
|
|
179
|
-
<div class="example">
|
|
180
|
-
<temba-textinput
|
|
181
|
-
name="start"
|
|
182
|
-
label="Start Time"
|
|
183
|
-
help_text="This is something you should think long and hard about"
|
|
184
|
-
placeholder="Put something down, for real"
|
|
185
|
-
value="2020-11-28 15:03"
|
|
186
|
-
clearable
|
|
187
|
-
datetimepicker
|
|
188
|
-
></temba-textinput>
|
|
189
|
-
</div>
|
|
190
|
-
|
|
191
|
-
<div class="example">
|
|
192
|
-
<temba-textinput
|
|
193
|
-
name="start"
|
|
194
|
-
label="Start Time"
|
|
195
|
-
help_text="This is something you should think long and hard about"
|
|
196
|
-
placeholder="Put something down, for real"
|
|
197
|
-
clearable
|
|
198
|
-
datetimepicker
|
|
199
|
-
></temba-textinput>
|
|
200
|
-
</div>
|
|
201
|
-
|
|
202
|
-
<div class="example">
|
|
203
|
-
<temba-checkbox
|
|
204
|
-
name="schedule"
|
|
205
|
-
label="Schedule for later delivery"
|
|
206
|
-
help_text="This is something you should think long and hard about"
|
|
207
|
-
></temba-checkbox>
|
|
208
|
-
|
|
209
|
-
<temba-checkbox
|
|
210
|
-
name="disabled"
|
|
211
|
-
label="You can't check this one"
|
|
212
|
-
help_text="It is disabled, don't click it"
|
|
213
|
-
disabled
|
|
214
|
-
></temba-checkbox>
|
|
215
|
-
</div>
|
|
216
|
-
|
|
217
|
-
<div class="example">
|
|
218
|
-
<temba-modax
|
|
219
|
-
header="Save as Group"
|
|
220
|
-
endpoint='/contactgroup/create/?search=group = "Drivers"'
|
|
221
|
-
id="create-dynamic"
|
|
222
|
-
>
|
|
223
|
-
<div class="button-primary inline-block">Save as Group</div>
|
|
224
|
-
</temba-modax>
|
|
225
|
-
</div>
|
|
226
|
-
|
|
227
|
-
<div class="example">
|
|
228
|
-
<temba-modax
|
|
229
|
-
header="Edit Contact"
|
|
230
|
-
endpoint="/contact/update/10001/"
|
|
231
|
-
id="edit-contact"
|
|
232
|
-
>
|
|
233
|
-
<div class="button-primary inline-block">Edit Contact</div>
|
|
234
|
-
</temba-modax>
|
|
235
|
-
</div>
|
|
236
|
-
|
|
237
|
-
<div class="example">
|
|
238
|
-
<temba-modax
|
|
239
|
-
header="Edit Label"
|
|
240
|
-
endpoint="/label/update/102/"
|
|
241
|
-
id="update-label"
|
|
242
|
-
>
|
|
243
|
-
<div class="button-primary inline-block">Edit Label</div>
|
|
244
|
-
</temba-modax>
|
|
245
|
-
</div>
|
|
246
|
-
|
|
247
|
-
<div class="example">
|
|
248
|
-
<temba-modax
|
|
249
|
-
id="edit-group"
|
|
250
|
-
header="Edit Group"
|
|
251
|
-
endpoint="/contactgroup/update/139/"
|
|
252
|
-
>
|
|
253
|
-
<div class="button-primary inline-block">Edit Group</div>
|
|
254
|
-
</temba-modax>
|
|
255
|
-
</div>
|
|
256
|
-
|
|
257
|
-
<div class="example">
|
|
258
|
-
<temba-modax
|
|
259
|
-
id="send-message"
|
|
260
|
-
header="Send Message"
|
|
261
|
-
endpoint="/broadcast/send/"
|
|
262
|
-
>
|
|
263
|
-
<div class="button-primary inline-block">Send Message</div>
|
|
264
|
-
</temba-modax>
|
|
265
|
-
</div>
|
|
266
|
-
|
|
267
|
-
<div class="example">
|
|
268
|
-
<div class="example-header">Contact Search</div>
|
|
269
|
-
<temba-contact-search
|
|
270
|
-
name="contact_query"
|
|
271
|
-
endpoint="/contact/search/?samples=5&search="
|
|
272
|
-
placeholder="Enter a query"
|
|
273
|
-
matches-text="Found ${count} for ${query}"
|
|
274
|
-
>
|
|
275
|
-
</temba-contact-search>
|
|
276
|
-
</div>
|
|
277
|
-
|
|
278
|
-
<div class="example">
|
|
279
|
-
<div class="example-header">Text Inputs</div>
|
|
280
|
-
<temba-textinput></temba-textinput>
|
|
281
|
-
<br />
|
|
282
|
-
<temba-textinput textarea></temba-textinput>
|
|
283
|
-
</div>
|
|
284
|
-
|
|
285
|
-
<div class="example">
|
|
286
|
-
<div class="example-header">Side by Side</div>
|
|
287
|
-
|
|
288
|
-
<div style="display: flex; align-items: center">
|
|
289
|
-
<temba-select name="start-type" placeholder="Pick some colors" multi>
|
|
290
|
-
<temba-option value="red" name="Red"></temba-option>
|
|
291
|
-
<temba-option value="gree" name="Green" selected></temba-option>
|
|
292
|
-
<temba-option value="blue" name="Blue" selected></temba-option>
|
|
293
|
-
</temba-select>
|
|
294
|
-
|
|
295
|
-
<temba-select name="start-type" placeholder="Choose how to start">
|
|
296
|
-
<temba-option
|
|
297
|
-
value="0"
|
|
298
|
-
name="Choose recipients manually"
|
|
299
|
-
></temba-option>
|
|
300
|
-
<temba-option
|
|
301
|
-
value="1"
|
|
302
|
-
name="Search for contacts to start"
|
|
303
|
-
></temba-option>
|
|
304
|
-
</temba-select>
|
|
305
|
-
|
|
306
|
-
<temba-select
|
|
307
|
-
name="start-type"
|
|
308
|
-
placeholder="Search how to start but make sure you can read this entire message"
|
|
309
|
-
searchable
|
|
310
|
-
>
|
|
311
|
-
<temba-option
|
|
312
|
-
value="0"
|
|
313
|
-
name="Choose recipients manually"
|
|
314
|
-
></temba-option>
|
|
315
|
-
<temba-option
|
|
316
|
-
value="1"
|
|
317
|
-
name="Search for contacts to start"
|
|
318
|
-
></temba-option>
|
|
319
|
-
</temba-select>
|
|
320
|
-
|
|
321
|
-
<temba-textinput></temba-textinput>
|
|
322
|
-
<temba-textinput placeholder="Hello placeholder"></temba-textinput>
|
|
323
|
-
</div>
|
|
324
|
-
</div>
|
|
325
|
-
|
|
326
|
-
<div class="example">
|
|
327
|
-
<div class="example-header">Single</div>
|
|
328
|
-
<temba-select name="start-type" placeholder="Choose how to start">
|
|
329
|
-
<temba-option
|
|
330
|
-
value="0"
|
|
331
|
-
name="Choose recipients manually"
|
|
332
|
-
></temba-option>
|
|
333
|
-
<temba-option
|
|
334
|
-
value="1"
|
|
335
|
-
name="Search for contacts to start"
|
|
336
|
-
></temba-option>
|
|
337
|
-
</temba-select>
|
|
338
|
-
</div>
|
|
339
|
-
|
|
340
|
-
<div class="example">
|
|
341
|
-
<div class="example-header">Single Initialized</div>
|
|
342
|
-
<temba-select name="start-type" placeholder="Choose how to start">
|
|
343
|
-
<temba-option
|
|
344
|
-
value="0"
|
|
345
|
-
name="Choose recipients manually"
|
|
346
|
-
></temba-option>
|
|
347
|
-
<temba-option
|
|
348
|
-
value="1"
|
|
349
|
-
name="Search for contacts to start"
|
|
350
|
-
selected
|
|
351
|
-
></temba-option>
|
|
352
|
-
</temba-select>
|
|
353
|
-
</div>
|
|
354
|
-
|
|
355
|
-
<div class="example">
|
|
356
|
-
<div class="example-header">Single Searchable</div>
|
|
357
|
-
<temba-select
|
|
358
|
-
name="start-type"
|
|
359
|
-
placeholder="Search how to start but make sure you can read this entire message"
|
|
360
|
-
searchable
|
|
361
|
-
>
|
|
362
|
-
<temba-option
|
|
363
|
-
value="0"
|
|
364
|
-
name="Choose recipients manually"
|
|
365
|
-
></temba-option>
|
|
366
|
-
<temba-option
|
|
367
|
-
value="1"
|
|
368
|
-
name="Search for contacts to start"
|
|
369
|
-
></temba-option>
|
|
370
|
-
</temba-select>
|
|
371
|
-
</div>
|
|
372
|
-
|
|
373
|
-
<div class="example">
|
|
374
|
-
<div class="example-header">Single Remote</div>
|
|
375
|
-
<temba-select
|
|
376
|
-
endpoint="/contact/omnibox/?v=2"
|
|
377
|
-
queryParam="search"
|
|
378
|
-
placeholder="Contacts"
|
|
379
|
-
searchable
|
|
380
|
-
>
|
|
381
|
-
</temba-select>
|
|
382
|
-
</div>
|
|
383
|
-
|
|
384
|
-
<div class="example">
|
|
385
|
-
<div class="example-header">Single Remote Search Unfiltered</div>
|
|
386
|
-
<temba-select
|
|
387
|
-
endpoint="/api/v2/channels.json"
|
|
388
|
-
placeholder="Channels"
|
|
389
|
-
valueKey="uuid"
|
|
390
|
-
searchable
|
|
391
|
-
>
|
|
392
|
-
</temba-select>
|
|
393
|
-
</div>
|
|
394
|
-
|
|
395
|
-
<div class="example">
|
|
396
|
-
<div class="example-header">Clearable</div>
|
|
397
|
-
<temba-select name="start-type" placeholder="Select a color" clearable>
|
|
398
|
-
<temba-option value="red" name="Red"></temba-option>
|
|
399
|
-
<temba-option value="gree" name="Green"></temba-option>
|
|
400
|
-
<temba-option value="blue" name="Blue"></temba-option>
|
|
401
|
-
</temba-select>
|
|
402
|
-
</div>
|
|
403
|
-
|
|
404
|
-
<div class="example">
|
|
405
|
-
<div class="example-header">Multi</div>
|
|
406
|
-
<temba-select name="start-type" placeholder="Pick some colors" multi>
|
|
407
|
-
<temba-option value="red" name="Red"></temba-option>
|
|
408
|
-
<temba-option value="gree" name="Green"></temba-option>
|
|
409
|
-
<temba-option value="blue" name="Blue"></temba-option>
|
|
410
|
-
</temba-select>
|
|
411
|
-
</div>
|
|
412
|
-
|
|
413
|
-
<div class="example">
|
|
414
|
-
<div class="example-header">Multi Initialized</div>
|
|
415
|
-
<temba-select label="Multi Initialized" name="start-type" placeholder="Pick some colors" multi>
|
|
416
|
-
<temba-option value="red" name="Red"></temba-option>
|
|
417
|
-
<temba-option value="gree" name="Green" selected></temba-option>
|
|
418
|
-
<temba-option value="blue" name="Blue" selected></temba-option>
|
|
419
|
-
</temba-select>
|
|
420
|
-
</div>
|
|
421
|
-
|
|
422
|
-
<div class="example">
|
|
423
|
-
<div class="example-header">Multi Searchable</div>
|
|
424
|
-
<temba-select
|
|
425
|
-
name="start-type"
|
|
426
|
-
placeholder="Pick some colors"
|
|
427
|
-
multi
|
|
428
|
-
searchable
|
|
429
|
-
>
|
|
430
|
-
<temba-option value="red" name="Red"></temba-option>
|
|
431
|
-
<temba-option value="green" name="Green"></temba-option>
|
|
432
|
-
<temba-option value="blue" name="Blue"></temba-option>
|
|
433
|
-
</temba-select>
|
|
434
|
-
</div>
|
|
435
|
-
|
|
436
|
-
<div class="example">
|
|
437
|
-
<div class="example-header">Tags with expressions</div>
|
|
438
|
-
<temba-select
|
|
439
|
-
name="tagged"
|
|
440
|
-
placeholder="Pick some colors"
|
|
441
|
-
expressions="session"
|
|
442
|
-
multi
|
|
443
|
-
searchable
|
|
444
|
-
tags
|
|
445
|
-
>
|
|
446
|
-
</temba-select>
|
|
447
|
-
</div>
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
<div class="example">
|
|
453
|
-
<div class="example-header">Tags</div>
|
|
454
|
-
<temba-select
|
|
455
|
-
name="tagged"
|
|
456
|
-
placeholder="Pick some colors"
|
|
457
|
-
multi
|
|
458
|
-
searchable
|
|
459
|
-
tags
|
|
460
|
-
space_select
|
|
461
|
-
>
|
|
462
|
-
<temba-option value="red" name="Red"></temba-option>
|
|
463
|
-
<temba-option value="green" name="Green"></temba-option>
|
|
464
|
-
<temba-option value="blue" name="Blue"></temba-option>
|
|
465
|
-
</temba-select>
|
|
466
|
-
</div>
|
|
467
|
-
-->
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
<!--
|
|
472
|
-
<div class="example">
|
|
473
|
-
<div class="example-header">Tags Initialized</div>
|
|
474
|
-
<temba-select
|
|
475
|
-
name="tagged"
|
|
476
|
-
placeholder="Pick some colors"
|
|
477
|
-
multi
|
|
478
|
-
searchable
|
|
479
|
-
tags
|
|
480
|
-
space_select
|
|
481
|
-
>
|
|
482
|
-
<temba-option value="red" name="Red" selected></temba-option>
|
|
483
|
-
<temba-option value="green" name="Green" selected></temba-option>
|
|
484
|
-
<temba-option value="blue" name="Blue"></temba-option>
|
|
485
|
-
</temba-select>
|
|
486
|
-
</div>
|
|
487
|
-
|
|
488
|
-
<div class="example">
|
|
489
|
-
<div class="example-header">Multi Remote</div>
|
|
490
|
-
<temba-select
|
|
491
|
-
id="multi-remote"
|
|
492
|
-
endpoint="/contact/omnibox/?v=2"
|
|
493
|
-
queryParam="search"
|
|
494
|
-
placeholder="Contacts"
|
|
495
|
-
searchable
|
|
496
|
-
multi
|
|
497
|
-
>
|
|
498
|
-
</temba-select>
|
|
499
|
-
|
|
500
|
-
<script>
|
|
501
|
-
window.setTimeout(() => {
|
|
502
|
-
var multiRemote = document.getElementById("multi-remote");
|
|
503
|
-
multiRemote.createArbitraryOption = function (input, options) {
|
|
504
|
-
var existing = options.find(function (option) {
|
|
505
|
-
return (
|
|
506
|
-
option.name.toLowerCase().trim() === input.toLowerCase().trim()
|
|
507
|
-
);
|
|
508
|
-
});
|
|
509
|
-
if (!existing) {
|
|
510
|
-
return {
|
|
511
|
-
prefix: "Create: ",
|
|
512
|
-
name: input,
|
|
513
|
-
id: "created",
|
|
514
|
-
};
|
|
515
|
-
}
|
|
516
|
-
};
|
|
517
|
-
}, 2000);
|
|
518
|
-
</script>
|
|
519
|
-
</div>
|
|
520
|
-
|
|
521
|
-
<div class="example">
|
|
522
|
-
<div class="example-header">Multi Remote with Expressions</div>
|
|
523
|
-
<temba-select
|
|
524
|
-
endpoint="/contact/omnibox/?v=2"
|
|
525
|
-
queryParam="search"
|
|
526
|
-
placeholder="Contacts"
|
|
527
|
-
expressions="session"
|
|
528
|
-
searchable
|
|
529
|
-
multi
|
|
530
|
-
>
|
|
531
|
-
</temba-select>
|
|
532
|
-
</div>
|
|
533
|
-
|
|
534
|
-
<div class="example">
|
|
535
|
-
<div class="example-header">Omnibox</div>
|
|
536
|
-
<temba-omnibox
|
|
537
|
-
endpoint="/contact/omnibox/?v=2"
|
|
538
|
-
groups
|
|
539
|
-
contacts
|
|
540
|
-
></temba-omnibox>
|
|
541
|
-
</div>
|
|
542
|
-
|
|
543
|
-
<div class="example">
|
|
544
|
-
<div class="example-header">Omnibox Initialized</div>
|
|
545
|
-
<temba-omnibox
|
|
546
|
-
endpoint="/contact/omnibox/?v=2"
|
|
547
|
-
groups
|
|
548
|
-
contacts
|
|
549
|
-
value='[{"id": "f916ebaa-630d-450c-b72c-268822b70a42", "name": "a new", "type": "group", "count": 0}]'
|
|
550
|
-
></temba-omnibox>
|
|
551
|
-
</div>
|
|
552
|
-
|
|
553
|
-
<div class="example">
|
|
554
|
-
<div class="example-header">Completion</div>
|
|
555
|
-
<temba-completion textarea value="This is just the beginning."></temba-completion>
|
|
556
|
-
</div>
|
|
557
|
-
|
|
558
|
-
<div class="example">
|
|
559
|
-
<div class="example-header">Completion</div>
|
|
560
|
-
<temba-completion></temba-completion>
|
|
561
|
-
</div>
|
|
562
|
-
-->
|
|
563
|
-
|
|
564
|
-
<!--
|
|
565
|
-
Alias Editor - Deprecated
|
|
566
|
-
div class="example">
|
|
567
|
-
<div class="example-header">Alias Editor</div>
|
|
568
|
-
<alias-editor osmid="192787" endpoint="/adminboundary"></alias-editor>
|
|
569
|
-
</div -->
|
|
570
|
-
|
|
571
|
-
<script type="module" src="../src/temba-components.js"></script>
|
|
572
|
-
</body>
|
|
573
|
-
</html>
|
package/demo/remote.html
DELETED
|
Binary file
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
```js script
|
|
2
|
-
import { html } from '@open-wc/demoing-storybook';
|
|
3
|
-
import '../dist/index.js';
|
|
4
|
-
|
|
5
|
-
export default {
|
|
6
|
-
title: 'forms/temba-checkbox',
|
|
7
|
-
component: 'temba-checkbox',
|
|
8
|
-
options: { selectedPanel: 'storybookjs/knobs/panel' },
|
|
9
|
-
};
|
|
10
|
-
```
|
|
11
|
-
|
|
12
|
-
# temba-checkbox
|
|
13
|
-
|
|
14
|
-
A component for...
|
|
15
|
-
|
|
16
|
-
## Features:
|
|
17
|
-
|
|
18
|
-
- a
|
|
19
|
-
- b
|
|
20
|
-
- ...
|
|
21
|
-
|
|
22
|
-
## How to use
|
|
23
|
-
|
|
24
|
-
```js preview-story
|
|
25
|
-
export const Default = () =>
|
|
26
|
-
html`<temba-checkbox label="Click me for good luck"></temba-checkbox> `;
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
## Variations
|
|
30
|
-
|
|
31
|
-
###### Custom Title
|
|
32
|
-
|
|
33
|
-
```js preview-story
|
|
34
|
-
export const Checked = () => html`
|
|
35
|
-
<temba-checkbox label="I started out checked" checked></temba-checkbox>
|
|
36
|
-
`;
|
|
37
|
-
```
|