@nyaruka/temba-components 0.113.0 → 0.114.0
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/CHANGELOG.md +21 -2
- package/demo/index.html +1 -1
- package/dist/temba-components.js +793 -966
- package/dist/temba-components.js.map +1 -1
- package/out-tsc/src/aliaseditor/AliasEditor.js.map +1 -1
- package/out-tsc/src/button/Button.js +6 -2
- package/out-tsc/src/button/Button.js.map +1 -1
- package/out-tsc/src/chat/Chat.js +29 -7
- package/out-tsc/src/chat/Chat.js.map +1 -1
- package/out-tsc/src/compose/Compose.js +10 -5
- package/out-tsc/src/compose/Compose.js.map +1 -1
- package/out-tsc/src/contacts/ContactChat.js +240 -114
- package/out-tsc/src/contacts/ContactChat.js.map +1 -1
- package/out-tsc/src/contacts/ContactFieldEditor.js.map +1 -1
- package/out-tsc/src/contacts/events.js.map +1 -1
- package/out-tsc/src/contacts/helpers.js +5 -1
- package/out-tsc/src/contacts/helpers.js.map +1 -1
- package/out-tsc/src/contactsearch/ContactSearch.js +1 -1
- package/out-tsc/src/contactsearch/ContactSearch.js.map +1 -1
- package/out-tsc/src/dropdown/Dropdown.js +121 -108
- package/out-tsc/src/dropdown/Dropdown.js.map +1 -1
- package/out-tsc/src/interfaces.js +2 -0
- package/out-tsc/src/interfaces.js.map +1 -1
- package/out-tsc/src/list/ContentMenu.js +11 -8
- package/out-tsc/src/list/ContentMenu.js.map +1 -1
- package/out-tsc/src/list/RunList.js.map +1 -1
- package/out-tsc/src/list/TembaList.js +21 -14
- package/out-tsc/src/list/TembaList.js.map +1 -1
- package/out-tsc/src/list/TembaMenu.js +11 -12
- package/out-tsc/src/list/TembaMenu.js.map +1 -1
- package/out-tsc/src/list/TicketList.js +10 -0
- package/out-tsc/src/list/TicketList.js.map +1 -1
- package/out-tsc/src/omnibox/Omnibox.js +33 -90
- package/out-tsc/src/omnibox/Omnibox.js.map +1 -1
- package/out-tsc/src/options/Options.js +49 -47
- package/out-tsc/src/options/Options.js.map +1 -1
- package/out-tsc/src/select/PopupSelect.js +57 -0
- package/out-tsc/src/select/PopupSelect.js.map +1 -0
- package/out-tsc/src/select/Select.js +194 -144
- package/out-tsc/src/select/Select.js.map +1 -1
- package/out-tsc/src/select/UserSelect.js +67 -0
- package/out-tsc/src/select/UserSelect.js.map +1 -0
- package/out-tsc/src/store/Store.js +65 -14
- package/out-tsc/src/store/Store.js.map +1 -1
- package/out-tsc/src/tabpane/TabPane.js +72 -115
- package/out-tsc/src/tabpane/TabPane.js.map +1 -1
- package/out-tsc/src/textinput/TextInput.js +1 -0
- package/out-tsc/src/textinput/TextInput.js.map +1 -1
- package/out-tsc/src/user/TembaUser.js +24 -37
- package/out-tsc/src/user/TembaUser.js.map +1 -1
- package/out-tsc/src/utils/index.js +13 -6
- package/out-tsc/src/utils/index.js.map +1 -1
- package/out-tsc/temba-modules.js +4 -2
- package/out-tsc/temba-modules.js.map +1 -1
- package/out-tsc/test/temba-omnibox.test.js +43 -4
- package/out-tsc/test/temba-omnibox.test.js.map +1 -1
- package/out-tsc/test/temba-select.test.js +121 -65
- package/out-tsc/test/temba-select.test.js.map +1 -1
- package/out-tsc/test/utils.test.js +4 -0
- package/out-tsc/test/utils.test.js.map +1 -1
- package/package.json +1 -1
- package/screenshots/truth/compose/attachments-tab.png +0 -0
- package/screenshots/truth/compose/attachments-with-files-focused.png +0 -0
- package/screenshots/truth/compose/attachments-with-files.png +0 -0
- package/screenshots/truth/compose/intial-text.png +0 -0
- package/screenshots/truth/compose/no-counter.png +0 -0
- package/screenshots/truth/compose/wraps-text-and-spaces.png +0 -0
- package/screenshots/truth/compose/wraps-text-and-url.png +0 -0
- package/screenshots/truth/compose/wraps-text-no-spaces.png +0 -0
- package/screenshots/truth/contacts/chat-failure.png +0 -0
- package/screenshots/truth/contacts/chat-for-active-contact.png +0 -0
- package/screenshots/truth/contacts/chat-for-archived-contact.png +0 -0
- package/screenshots/truth/contacts/chat-for-blocked-contact.png +0 -0
- package/screenshots/truth/contacts/chat-for-stopped-contact.png +0 -0
- package/screenshots/truth/contacts/chat-sends-attachments-only.png +0 -0
- package/screenshots/truth/contacts/chat-sends-text-and-attachments.png +0 -0
- package/screenshots/truth/contacts/chat-sends-text-only.png +0 -0
- package/screenshots/truth/content-menu/item-no-buttons.png +0 -0
- package/screenshots/truth/content-menu/items-and-buttons.png +0 -0
- package/screenshots/truth/omnibox/selected.png +0 -0
- package/screenshots/truth/select/enabled-multi-selection.png +0 -0
- package/screenshots/truth/select/endpoint-initial-value-updated.png +0 -0
- package/screenshots/truth/select/endpoint-initial-value.png +0 -0
- package/screenshots/truth/select/expressions.png +0 -0
- package/screenshots/truth/select/functions.png +0 -0
- package/screenshots/truth/select/initial-value.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/selected-multi-test.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/value-initial.png +0 -0
- package/src/aliaseditor/AliasEditor.ts +1 -1
- package/src/button/Button.ts +6 -2
- package/src/chat/Chat.ts +28 -6
- package/src/compose/Compose.ts +11 -6
- package/src/contacts/ContactChat.ts +260 -118
- package/src/contacts/ContactFieldEditor.ts +1 -1
- package/src/contacts/events.ts +1 -0
- package/src/contacts/helpers.ts +8 -1
- package/src/contactsearch/ContactSearch.ts +3 -3
- package/src/dropdown/Dropdown.ts +142 -103
- package/src/interfaces.ts +4 -1
- package/src/list/ContentMenu.ts +11 -9
- package/src/list/RunList.ts +3 -1
- package/src/list/TembaList.ts +24 -14
- package/src/list/TembaMenu.ts +14 -15
- package/src/list/TicketList.ts +11 -0
- package/src/omnibox/Omnibox.ts +34 -95
- package/src/options/Options.ts +57 -60
- package/src/select/PopupSelect.ts +53 -0
- package/src/select/Select.ts +182 -112
- package/src/select/UserSelect.ts +71 -0
- package/src/store/Store.ts +70 -21
- package/src/tabpane/TabPane.ts +79 -113
- package/src/textinput/TextInput.ts +1 -0
- package/src/user/TembaUser.ts +30 -41
- package/src/utils/index.ts +12 -8
- package/temba-modules.ts +4 -2
- package/test/temba-omnibox.test.ts +56 -4
- package/test/temba-select.test.ts +170 -56
- package/test/utils.test.ts +5 -0
- package/test-assets/select/omnibox.json +55 -0
- package/web-test-runner.config.mjs +16 -4
- package/out-tsc/src/contacts/ContactTickets.js +0 -462
- package/out-tsc/src/contacts/ContactTickets.js.map +0 -1
- package/out-tsc/test/temba-contact-tickets.test.js +0 -36
- package/out-tsc/test/temba-contact-tickets.test.js.map +0 -1
- package/src/contacts/ContactTickets.ts +0 -490
- package/test/temba-contact-tickets.test.ts +0 -52
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"temba-modules.js","sourceRoot":"","sources":["../temba-modules.ts"],"names":[],"mappings":"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","sourcesContent":["import { Checkbox } from './src/checkbox/Checkbox';\nimport { TextInput } from './src/textinput/TextInput';\nimport { Store } from './src/store/Store';\nimport { Select } from './src/select/Select';\nimport { Completion } from './src/completion/Completion';\nimport { Modax } from './src/dialog/Modax';\nimport { Dialog } from './src/dialog/Dialog';\nimport { Button } from './src/button/Button';\nimport { FormField } from './src/formfield/FormField';\nimport { Loading } from './src/loading/Loading';\nimport { CharCount } from './src/charcount/CharCount';\nimport { Options } from './src/options/Options';\nimport { ContactChat } from './src/contacts/ContactChat';\nimport { TicketList } from './src/list/TicketList';\nimport { ContactDetails } from './src/contacts/ContactDetails';\nimport { TembaList } from './src/list/TembaList';\nimport { ContactSearch } from './src/contactsearch/ContactSearch';\nimport { VectorIcon } from './src/vectoricon/VectorIcon';\nimport { Alert } from './src/alert/Alert';\nimport { Omnibox } from './src/omnibox/Omnibox';\nimport { Tip } from './src/tip/Tip';\nimport { TembaMenu } from './src/list/TembaMenu';\nimport { Anchor } from './src/anchor/Anchor';\nimport { Dropdown } from './src/dropdown/Dropdown';\nimport { TabPane } from './src/tabpane/TabPane';\nimport { Tab } from './src/tabpane/Tab';\nimport Label from './src/label/Label';\nimport { ContactName } from './src/contacts/ContactName';\nimport { ContactUrn } from './src/contacts/ContactUrn';\nimport { ContactFields } from './src/contacts/ContactFields';\nimport { ContactFieldEditor } from './src/contacts/ContactFieldEditor';\n\nimport { ContactBadges } from './src/contacts/ContactBadges';\nimport { ContactPending } from './src/contacts/ContactPending';\nimport { ContactTickets } from './src/contacts/ContactTickets';\nimport { TembaSlider } from './src/slider/TembaSlider';\nimport { RunList } from './src/list/RunList';\nimport { FlowStoreElement } from './src/flow/FlowStoreElement';\nimport { ContactNameFetch } from './src/contacts/ContactNameFetch';\nimport DatePicker from './src/datepicker/DatePicker';\nimport { FieldManager } from './src/fields/FieldManager';\nimport { SortableList } from './src/list/SortableList';\nimport { ContentMenu } from './src/list/ContentMenu';\nimport { TembaDate } from './src/date/TembaDate';\nimport Remote from './src/remote/Remote';\nimport { Compose } from './src/compose/Compose';\nimport { Lightbox } from './src/lightbox/Lightbox';\nimport { ColorPicker } from './src/colorpicker/ColorPicker';\nimport { Resizer } from './src/resizer/Resizer';\nimport { Thumbnail } from './src/thumbnail/Thumbnail';\nimport { NotificationList } from './src/list/NotificationList';\nimport { WebChat } from './src/webchat/WebChat';\nimport { ImagePicker } from './src/imagepicker/ImagePicker';\nimport { Mask } from './src/mask/Mask';\nimport { TembaUser } from './src/user/TembaUser';\nimport { TemplateEditor } from './src/templates/TemplateEditor';\nimport { Toast } from './src/toast/Toast';\nimport { Chat } from './src/chat/Chat';\nimport { MediaPicker } from './src/mediapicker/MediaPicker';\nimport { ContactNotepad } from './src/contacts/ContactNotepad';\nimport { OutboxMonitor } from './src/outboxmonitor/OutboxMonitor';\nimport { ProgressBar } from './src/progress/ProgressBar';\nimport { StartProgress } from './src/progress/StartProgress';\nimport { ShortcutList } from './src/list/ShortcutList';\n\nexport function addCustomElement(name: string, comp: any) {\n if (!window.customElements.get(name)) {\n window.customElements.define(name, comp);\n }\n}\n\naddCustomElement('temba-anchor', Anchor);\naddCustomElement('temba-alert', Alert);\naddCustomElement('temba-store', Store);\naddCustomElement('temba-textinput', TextInput);\naddCustomElement('temba-datepicker', DatePicker);\naddCustomElement('temba-date', TembaDate);\naddCustomElement('temba-completion', Completion);\naddCustomElement('temba-checkbox', Checkbox);\naddCustomElement('temba-select', Select);\naddCustomElement('temba-options', Options);\naddCustomElement('temba-loading', Loading);\naddCustomElement('temba-lightbox', Lightbox);\naddCustomElement('temba-button', Button);\naddCustomElement('temba-omnibox', Omnibox);\naddCustomElement('temba-tip', Tip);\naddCustomElement('temba-contact-name', ContactName);\naddCustomElement('temba-contact-name-fetch', ContactNameFetch);\naddCustomElement('temba-contact-field', ContactFieldEditor);\naddCustomElement('temba-contact-fields', ContactFields);\naddCustomElement('temba-field-manager', FieldManager);\naddCustomElement('temba-urn', ContactUrn);\naddCustomElement('temba-content-menu', ContentMenu);\n\naddCustomElement('temba-field', FormField);\naddCustomElement('temba-dialog', Dialog);\naddCustomElement('temba-modax', Modax);\naddCustomElement('temba-charcount', CharCount);\naddCustomElement('temba-contact-chat', ContactChat);\naddCustomElement('temba-contact-details', ContactDetails);\naddCustomElement('temba-ticket-list', TicketList);\naddCustomElement('temba-notification-list', NotificationList);\naddCustomElement('temba-list', TembaList);\naddCustomElement('temba-sortable-list', SortableList);\naddCustomElement('temba-run-list', RunList);\naddCustomElement('temba-flow-details', FlowStoreElement);\naddCustomElement('temba-label', Label);\naddCustomElement('temba-menu', TembaMenu);\naddCustomElement('temba-remote', Remote);\naddCustomElement('temba-contact-search', ContactSearch);\naddCustomElement('temba-icon', VectorIcon);\naddCustomElement('temba-dropdown', Dropdown);\naddCustomElement('temba-tabs', TabPane);\naddCustomElement('temba-tab', Tab);\naddCustomElement('temba-contact-badges', ContactBadges);\naddCustomElement('temba-contact-pending', ContactPending);\naddCustomElement('temba-contact-tickets', ContactTickets);\naddCustomElement('temba-slider', TembaSlider);\naddCustomElement('temba-content-menu', ContentMenu);\naddCustomElement('temba-compose', Compose);\naddCustomElement('temba-color-picker', ColorPicker);\naddCustomElement('temba-resizer', Resizer);\naddCustomElement('temba-thumbnail', Thumbnail);\naddCustomElement('temba-webchat', WebChat);\naddCustomElement('temba-image-picker', ImagePicker);\naddCustomElement('temba-mask', Mask);\naddCustomElement('temba-user', TembaUser);\naddCustomElement('temba-template-editor', TemplateEditor);\naddCustomElement('temba-toast', Toast);\naddCustomElement('temba-chat', Chat);\naddCustomElement('temba-media-picker', MediaPicker);\naddCustomElement('temba-contact-notepad', ContactNotepad);\naddCustomElement('temba-outbox-monitor', OutboxMonitor);\naddCustomElement('temba-progress', ProgressBar);\naddCustomElement('temba-start-progress', StartProgress);\naddCustomElement('temba-shortcuts', ShortcutList);\n"]}
|
|
1
|
+
{"version":3,"file":"temba-modules.js","sourceRoot":"","sources":["../temba-modules.ts"],"names":[],"mappings":"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","sourcesContent":["import { Checkbox } from './src/checkbox/Checkbox';\nimport { TextInput } from './src/textinput/TextInput';\nimport { Store } from './src/store/Store';\nimport { Select } from './src/select/Select';\nimport { Completion } from './src/completion/Completion';\nimport { Modax } from './src/dialog/Modax';\nimport { Dialog } from './src/dialog/Dialog';\nimport { Button } from './src/button/Button';\nimport { FormField } from './src/formfield/FormField';\nimport { Loading } from './src/loading/Loading';\nimport { CharCount } from './src/charcount/CharCount';\nimport { Options } from './src/options/Options';\nimport { ContactChat } from './src/contacts/ContactChat';\nimport { TicketList } from './src/list/TicketList';\nimport { ContactDetails } from './src/contacts/ContactDetails';\nimport { TembaList } from './src/list/TembaList';\nimport { ContactSearch } from './src/contactsearch/ContactSearch';\nimport { VectorIcon } from './src/vectoricon/VectorIcon';\nimport { Alert } from './src/alert/Alert';\nimport { Omnibox } from './src/omnibox/Omnibox';\nimport { Tip } from './src/tip/Tip';\nimport { TembaMenu } from './src/list/TembaMenu';\nimport { Anchor } from './src/anchor/Anchor';\nimport { Dropdown } from './src/dropdown/Dropdown';\nimport { TabPane } from './src/tabpane/TabPane';\nimport { Tab } from './src/tabpane/Tab';\nimport Label from './src/label/Label';\nimport { ContactName } from './src/contacts/ContactName';\nimport { ContactUrn } from './src/contacts/ContactUrn';\nimport { ContactFields } from './src/contacts/ContactFields';\nimport { ContactFieldEditor } from './src/contacts/ContactFieldEditor';\n\nimport { ContactBadges } from './src/contacts/ContactBadges';\nimport { ContactPending } from './src/contacts/ContactPending';\nimport { TembaSlider } from './src/slider/TembaSlider';\nimport { RunList } from './src/list/RunList';\nimport { FlowStoreElement } from './src/flow/FlowStoreElement';\nimport { ContactNameFetch } from './src/contacts/ContactNameFetch';\nimport DatePicker from './src/datepicker/DatePicker';\nimport { FieldManager } from './src/fields/FieldManager';\nimport { SortableList } from './src/list/SortableList';\nimport { ContentMenu } from './src/list/ContentMenu';\nimport { TembaDate } from './src/date/TembaDate';\nimport Remote from './src/remote/Remote';\nimport { Compose } from './src/compose/Compose';\nimport { Lightbox } from './src/lightbox/Lightbox';\nimport { ColorPicker } from './src/colorpicker/ColorPicker';\nimport { Resizer } from './src/resizer/Resizer';\nimport { Thumbnail } from './src/thumbnail/Thumbnail';\nimport { NotificationList } from './src/list/NotificationList';\nimport { WebChat } from './src/webchat/WebChat';\nimport { ImagePicker } from './src/imagepicker/ImagePicker';\nimport { Mask } from './src/mask/Mask';\nimport { TembaUser } from './src/user/TembaUser';\nimport { TemplateEditor } from './src/templates/TemplateEditor';\nimport { Toast } from './src/toast/Toast';\nimport { Chat } from './src/chat/Chat';\nimport { MediaPicker } from './src/mediapicker/MediaPicker';\nimport { ContactNotepad } from './src/contacts/ContactNotepad';\nimport { OutboxMonitor } from './src/outboxmonitor/OutboxMonitor';\nimport { ProgressBar } from './src/progress/ProgressBar';\nimport { StartProgress } from './src/progress/StartProgress';\nimport { ShortcutList } from './src/list/ShortcutList';\nimport { PopupSelect } from './src/select/PopupSelect';\nimport { UserSelect } from './src/select/UserSelect';\n\nexport function addCustomElement(name: string, comp: any) {\n if (!window.customElements.get(name)) {\n window.customElements.define(name, comp);\n }\n}\n\naddCustomElement('temba-anchor', Anchor);\naddCustomElement('temba-alert', Alert);\naddCustomElement('temba-store', Store);\naddCustomElement('temba-textinput', TextInput);\naddCustomElement('temba-datepicker', DatePicker);\naddCustomElement('temba-date', TembaDate);\naddCustomElement('temba-completion', Completion);\naddCustomElement('temba-checkbox', Checkbox);\naddCustomElement('temba-select', Select);\naddCustomElement('temba-options', Options);\naddCustomElement('temba-loading', Loading);\naddCustomElement('temba-lightbox', Lightbox);\naddCustomElement('temba-button', Button);\naddCustomElement('temba-omnibox', Omnibox);\naddCustomElement('temba-tip', Tip);\naddCustomElement('temba-contact-name', ContactName);\naddCustomElement('temba-contact-name-fetch', ContactNameFetch);\naddCustomElement('temba-contact-field', ContactFieldEditor);\naddCustomElement('temba-contact-fields', ContactFields);\naddCustomElement('temba-field-manager', FieldManager);\naddCustomElement('temba-urn', ContactUrn);\naddCustomElement('temba-content-menu', ContentMenu);\n\naddCustomElement('temba-field', FormField);\naddCustomElement('temba-dialog', Dialog);\naddCustomElement('temba-modax', Modax);\naddCustomElement('temba-charcount', CharCount);\naddCustomElement('temba-contact-chat', ContactChat);\naddCustomElement('temba-contact-details', ContactDetails);\naddCustomElement('temba-ticket-list', TicketList);\naddCustomElement('temba-notification-list', NotificationList);\naddCustomElement('temba-list', TembaList);\naddCustomElement('temba-sortable-list', SortableList);\naddCustomElement('temba-run-list', RunList);\naddCustomElement('temba-flow-details', FlowStoreElement);\naddCustomElement('temba-label', Label);\naddCustomElement('temba-menu', TembaMenu);\naddCustomElement('temba-remote', Remote);\naddCustomElement('temba-contact-search', ContactSearch);\naddCustomElement('temba-icon', VectorIcon);\naddCustomElement('temba-dropdown', Dropdown);\naddCustomElement('temba-tabs', TabPane);\naddCustomElement('temba-tab', Tab);\naddCustomElement('temba-contact-badges', ContactBadges);\naddCustomElement('temba-contact-pending', ContactPending);\naddCustomElement('temba-slider', TembaSlider);\naddCustomElement('temba-content-menu', ContentMenu);\naddCustomElement('temba-compose', Compose);\naddCustomElement('temba-color-picker', ColorPicker);\naddCustomElement('temba-resizer', Resizer);\naddCustomElement('temba-thumbnail', Thumbnail);\naddCustomElement('temba-webchat', WebChat);\naddCustomElement('temba-image-picker', ImagePicker);\naddCustomElement('temba-mask', Mask);\naddCustomElement('temba-user', TembaUser);\naddCustomElement('temba-template-editor', TemplateEditor);\naddCustomElement('temba-toast', Toast);\naddCustomElement('temba-chat', Chat);\naddCustomElement('temba-media-picker', MediaPicker);\naddCustomElement('temba-contact-notepad', ContactNotepad);\naddCustomElement('temba-outbox-monitor', OutboxMonitor);\naddCustomElement('temba-progress', ProgressBar);\naddCustomElement('temba-start-progress', StartProgress);\naddCustomElement('temba-shortcuts', ShortcutList);\naddCustomElement('temba-popup-select', PopupSelect);\naddCustomElement('temba-user-select', UserSelect);\n"]}
|
|
@@ -1,13 +1,52 @@
|
|
|
1
1
|
import { fixture, assert } from '@open-wc/testing';
|
|
2
2
|
import { Omnibox } from '../src/omnibox/Omnibox';
|
|
3
|
-
import './utils.test';
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
import { assertScreenshot, getClip } from './utils.test';
|
|
4
|
+
import { openAndClick } from './temba-select.test';
|
|
5
|
+
import { useFakeTimers, spy } from 'sinon';
|
|
6
|
+
export const getHTML = (attrs = { name: 'recipients' }) => {
|
|
7
|
+
const selectHTML = `
|
|
8
|
+
<temba-omnibox${Object.keys(attrs)
|
|
9
|
+
.map((name) => {
|
|
10
|
+
// check if it's a string attribute
|
|
11
|
+
if (typeof attrs[name] === 'string') {
|
|
12
|
+
return ` ${name}="${attrs[name].replace(/"/g, '"')}"`;
|
|
13
|
+
}
|
|
14
|
+
return ` ${name}="${attrs[name]}"`;
|
|
15
|
+
})
|
|
16
|
+
.join(' ')}>
|
|
17
|
+
</temba-select>`;
|
|
18
|
+
return selectHTML;
|
|
19
|
+
};
|
|
20
|
+
export const createOmnibox = async (clock, attrs = {}) => {
|
|
21
|
+
const parentNode = document.createElement('div');
|
|
22
|
+
parentNode.setAttribute('style', 'width: 250px;');
|
|
23
|
+
const omnibox = await fixture(getHTML(attrs), { parentNode });
|
|
24
|
+
clock.runAll();
|
|
25
|
+
await omnibox.updateComplete;
|
|
26
|
+
return omnibox;
|
|
6
27
|
};
|
|
7
28
|
describe('temba-omnibox', () => {
|
|
29
|
+
let clock;
|
|
30
|
+
beforeEach(function () {
|
|
31
|
+
clock = useFakeTimers();
|
|
32
|
+
setViewport({ width: 500, height: 1000, deviceScaleFactor: 2 });
|
|
33
|
+
});
|
|
34
|
+
afterEach(function () {
|
|
35
|
+
clock.restore();
|
|
36
|
+
});
|
|
8
37
|
it('can be created', async () => {
|
|
9
|
-
const omnibox = await fixture(getHTML());
|
|
38
|
+
const omnibox = await fixture(getHTML({ endpoint: '/test-assets/select/omnibox.json' }));
|
|
10
39
|
assert.instanceOf(omnibox, Omnibox);
|
|
11
40
|
});
|
|
41
|
+
it('fires change events on selection', async () => {
|
|
42
|
+
const omnibox = await createOmnibox(clock, {
|
|
43
|
+
endpoint: '/test-assets/select/omnibox.json'
|
|
44
|
+
});
|
|
45
|
+
const changeEvent = spy();
|
|
46
|
+
omnibox.addEventListener('change', changeEvent);
|
|
47
|
+
await openAndClick(clock, omnibox, 0);
|
|
48
|
+
assert(changeEvent.called, 'change event not fired');
|
|
49
|
+
await assertScreenshot('omnibox/selected', getClip(omnibox));
|
|
50
|
+
});
|
|
12
51
|
});
|
|
13
52
|
//# sourceMappingURL=temba-omnibox.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"temba-omnibox.test.js","sourceRoot":"","sources":["../../test/temba-omnibox.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"temba-omnibox.test.js","sourceRoot":"","sources":["../../test/temba-omnibox.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { fixture, assert } from '@open-wc/testing';\nimport { Omnibox } from '../src/omnibox/Omnibox';\nimport { assertScreenshot, getClip } from './utils.test';\nimport { openAndClick } from './temba-select.test';\nimport { useFakeTimers, spy } from 'sinon';\n\nexport const getHTML = (attrs: any = { name: 'recipients' }): string => {\n const selectHTML = `\n <temba-omnibox${Object.keys(attrs)\n .map((name: string) => {\n // check if it's a string attribute\n if (typeof attrs[name] === 'string') {\n return ` ${name}=\"${attrs[name].replace(/\"/g, '"')}\"`;\n }\n return ` ${name}=\"${attrs[name]}\"`;\n })\n .join(' ')}>\n </temba-select>`;\n return selectHTML;\n};\n\nexport const createOmnibox = async (\n clock: any,\n attrs: any = {}\n): Promise<Omnibox> => {\n const parentNode = document.createElement('div');\n parentNode.setAttribute('style', 'width: 250px;');\n\n const omnibox: Omnibox = await fixture(getHTML(attrs), { parentNode });\n clock.runAll();\n await omnibox.updateComplete;\n return omnibox;\n};\n\ndescribe('temba-omnibox', () => {\n let clock: any;\n beforeEach(function () {\n clock = useFakeTimers();\n setViewport({ width: 500, height: 1000, deviceScaleFactor: 2 });\n });\n\n afterEach(function () {\n clock.restore();\n });\n\n it('can be created', async () => {\n const omnibox: Omnibox = await fixture(\n getHTML({ endpoint: '/test-assets/select/omnibox.json' })\n );\n assert.instanceOf(omnibox, Omnibox);\n });\n\n it('fires change events on selection', async () => {\n const omnibox: Omnibox = await createOmnibox(clock, {\n endpoint: '/test-assets/select/omnibox.json'\n });\n\n const changeEvent = spy();\n omnibox.addEventListener('change', changeEvent);\n\n await openAndClick(clock, omnibox, 0);\n assert(changeEvent.called, 'change event not fired');\n\n await assertScreenshot('omnibox/selected', getClip(omnibox));\n });\n});\n"]}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
+
import * as sinon from 'sinon';
|
|
1
2
|
import { fixture, expect, assert } from '@open-wc/testing';
|
|
2
3
|
import { useFakeTimers } from 'sinon';
|
|
3
4
|
import { Options } from '../src/options/Options';
|
|
4
5
|
import { Select } from '../src/select/Select';
|
|
5
|
-
import { assertScreenshot, checkTimers, getClip, loadStore } from './utils.test';
|
|
6
|
+
import { assertScreenshot, checkTimers, getClip, loadStore, mouseClickElement } from './utils.test';
|
|
6
7
|
import { CustomEventType } from '../src/interfaces';
|
|
7
|
-
let clock;
|
|
8
8
|
const colors = [
|
|
9
9
|
{ name: 'Red', value: '0' },
|
|
10
10
|
{ name: 'Green', value: '1' },
|
|
11
11
|
{ name: 'Blue', value: '2' }
|
|
12
12
|
];
|
|
13
|
-
export const createSelect = async (def) => {
|
|
13
|
+
export const createSelect = async (clock, def) => {
|
|
14
14
|
const parentNode = document.createElement('div');
|
|
15
15
|
parentNode.setAttribute('style', 'width: 250px;');
|
|
16
16
|
const select = await fixture(def, { parentNode });
|
|
@@ -18,9 +18,9 @@ export const createSelect = async (def) => {
|
|
|
18
18
|
await select.updateComplete;
|
|
19
19
|
return select;
|
|
20
20
|
};
|
|
21
|
-
export const open = async (select) => {
|
|
21
|
+
export const open = async (clock, select) => {
|
|
22
22
|
if (!select.endpoint) {
|
|
23
|
-
await
|
|
23
|
+
await mouseClickElement(select);
|
|
24
24
|
await clock.runAll();
|
|
25
25
|
await clock.runAll();
|
|
26
26
|
return select;
|
|
@@ -31,7 +31,7 @@ export const open = async (select) => {
|
|
|
31
31
|
resolve(select);
|
|
32
32
|
}, { once: true });
|
|
33
33
|
});
|
|
34
|
-
await
|
|
34
|
+
await mouseClickElement(select);
|
|
35
35
|
await clock.runAll();
|
|
36
36
|
return promise;
|
|
37
37
|
};
|
|
@@ -41,26 +41,35 @@ export const clear = (select) => {
|
|
|
41
41
|
export const getOptions = (select) => {
|
|
42
42
|
return select.shadowRoot.querySelector('temba-options[visible]');
|
|
43
43
|
};
|
|
44
|
-
export const clickOption = async (select, index) => {
|
|
44
|
+
export const clickOption = async (clock, select, index) => {
|
|
45
45
|
const options = getOptions(select);
|
|
46
46
|
const option = options.shadowRoot.querySelector(`[data-option-index="${index}"]`);
|
|
47
|
-
option
|
|
47
|
+
await mouseClickElement(option);
|
|
48
48
|
await options.updateComplete;
|
|
49
49
|
await select.updateComplete;
|
|
50
50
|
await clock.runAll();
|
|
51
51
|
checkTimers(clock);
|
|
52
52
|
};
|
|
53
|
-
export const openAndClick = async (select, index) => {
|
|
54
|
-
await open(select);
|
|
55
|
-
await clickOption(select, index);
|
|
53
|
+
export const openAndClick = async (clock, select, index) => {
|
|
54
|
+
await open(clock, select);
|
|
55
|
+
await clickOption(clock, select, index);
|
|
56
56
|
};
|
|
57
|
-
export const getSelectHTML = (options = colors, attrs = { placeholder: 'Select a color', name: 'color' }) => {
|
|
57
|
+
export const getSelectHTML = (options = colors, attrs = { placeholder: 'Select a color', name: 'color' }, selected = null) => {
|
|
58
58
|
const selectHTML = `
|
|
59
|
-
<temba-select
|
|
60
|
-
.map((name) =>
|
|
59
|
+
<temba-select${Object.keys(attrs)
|
|
60
|
+
.map((name) => {
|
|
61
|
+
// check if it's a string attribute
|
|
62
|
+
if (typeof attrs[name] === 'string') {
|
|
63
|
+
return ` ${name}="${attrs[name].replace(/"/g, '"')}"`;
|
|
64
|
+
}
|
|
65
|
+
if (typeof attrs[name] === 'boolean') {
|
|
66
|
+
return ` ${name}`;
|
|
67
|
+
}
|
|
68
|
+
return ` ${name}="${attrs[name]}"`;
|
|
69
|
+
})
|
|
61
70
|
.join(' ')}>
|
|
62
71
|
${options
|
|
63
|
-
.map((option) => `<temba-option name="${option.name}" value="${option.value}"></temba-option>`)
|
|
72
|
+
.map((option) => `<temba-option name="${option.name}" value="${option.value}"${option.selected || option.value === selected ? ' selected' : ''}></temba-option>`)
|
|
64
73
|
.join('')}
|
|
65
74
|
</temba-select>`;
|
|
66
75
|
return selectHTML;
|
|
@@ -83,6 +92,7 @@ const getClipWithOptions = (select) => {
|
|
|
83
92
|
return selectClip;
|
|
84
93
|
};
|
|
85
94
|
describe('temba-select', () => {
|
|
95
|
+
let clock;
|
|
86
96
|
beforeEach(function () {
|
|
87
97
|
clock = useFakeTimers();
|
|
88
98
|
clock.tick(400);
|
|
@@ -92,44 +102,44 @@ describe('temba-select', () => {
|
|
|
92
102
|
clock.restore();
|
|
93
103
|
});
|
|
94
104
|
it('can be created', async () => {
|
|
95
|
-
const select = await createSelect('<temba-select></temba-select>');
|
|
105
|
+
const select = await createSelect(clock, '<temba-select></temba-select>');
|
|
96
106
|
assert.instanceOf(select, Select);
|
|
97
107
|
});
|
|
98
108
|
it('can be disabled', async () => {
|
|
99
|
-
const select = await createSelect(getSelectHTML(colors, { disabled: true }));
|
|
109
|
+
const select = await createSelect(clock, getSelectHTML(colors, { disabled: true }));
|
|
100
110
|
expect(select.disabled).to.equal(true);
|
|
101
111
|
await assertScreenshot('select/disabled', getClip(select));
|
|
102
112
|
});
|
|
103
113
|
it('can be disabled with selection', async () => {
|
|
104
|
-
const select = await createSelect(getSelectHTML(colors, { disabled: true, value: '0' }));
|
|
114
|
+
const select = await createSelect(clock, getSelectHTML(colors, { disabled: true, value: '0' }));
|
|
105
115
|
expect(select.disabled).to.equal(true);
|
|
106
116
|
await assertScreenshot('select/disabled-selection', getClip(select));
|
|
107
117
|
});
|
|
108
118
|
it('can be disabled with multi selection', async () => {
|
|
109
|
-
const select = await createSelect(getSelectHTML(colors, { placeholder: 'Select a color', multi: true }));
|
|
110
|
-
await openAndClick(select, 0);
|
|
119
|
+
const select = await createSelect(clock, getSelectHTML(colors, { placeholder: 'Select a color', multi: true }));
|
|
120
|
+
await openAndClick(clock, select, 0);
|
|
111
121
|
select.disabled = true;
|
|
112
122
|
expect(select.disabled).to.equal(true);
|
|
113
123
|
// make sure we can't select anymore
|
|
114
|
-
await open(select);
|
|
124
|
+
await open(clock, select);
|
|
115
125
|
expect(select.isOpen()).to.equal(false);
|
|
116
126
|
await assertScreenshot('select/disabled-multi-selection', getClip(select));
|
|
117
127
|
});
|
|
118
128
|
it('can be created with temba-option tags', async () => {
|
|
119
|
-
const select = await createSelect(getSelectHTML());
|
|
129
|
+
const select = await createSelect(clock, getSelectHTML());
|
|
120
130
|
assert.equal(select.getStaticOptions().length, 3);
|
|
121
131
|
expect(select.values.length).to.equal(0);
|
|
122
132
|
await assertScreenshot('select/with-placeholder', getClip(select));
|
|
123
133
|
});
|
|
124
134
|
it('picks the first option without a placeholder', async () => {
|
|
125
|
-
const select = await createSelect(getSelectHTML(colors, {}));
|
|
135
|
+
const select = await createSelect(clock, getSelectHTML(colors, {}));
|
|
126
136
|
assert.equal(select.getStaticOptions().length, 3);
|
|
127
137
|
expect(select.values[0].name).to.equal('Red');
|
|
128
138
|
await assertScreenshot('select/without-placeholder', getClip(select));
|
|
129
139
|
});
|
|
130
140
|
it('shows options when opened', async () => {
|
|
131
|
-
const select = await createSelect(getSelectHTML());
|
|
132
|
-
await open(select);
|
|
141
|
+
const select = await createSelect(clock, getSelectHTML());
|
|
142
|
+
await open(clock, select);
|
|
133
143
|
const options = getOptions(select);
|
|
134
144
|
assert.instanceOf(options, Options);
|
|
135
145
|
// our options should be visible
|
|
@@ -140,36 +150,41 @@ describe('temba-select', () => {
|
|
|
140
150
|
});
|
|
141
151
|
it('can be created with attribute options', async () => {
|
|
142
152
|
const options = JSON.stringify([{ name: 'Embedded Option', value: '0' }]);
|
|
143
|
-
const select = await createSelect(getSelectHTML([], { options }));
|
|
153
|
+
const select = await createSelect(clock, getSelectHTML([], { options }));
|
|
144
154
|
// select the first option
|
|
145
|
-
await openAndClick(select, 0);
|
|
155
|
+
await openAndClick(clock, select, 0);
|
|
146
156
|
expect(select.values[0].name).to.equal('Embedded Option');
|
|
147
157
|
await assertScreenshot('select/embedded', getClipWithOptions(select));
|
|
148
158
|
});
|
|
149
159
|
describe('single selection', () => {
|
|
150
160
|
it('can select a single option', async () => {
|
|
151
|
-
const select = await createSelect(getSelectHTML());
|
|
161
|
+
const select = await createSelect(clock, getSelectHTML());
|
|
162
|
+
// nothing is selected to start
|
|
152
163
|
expect(select.values.length).to.equal(0);
|
|
164
|
+
expect(select.value).to.equal(null);
|
|
153
165
|
// select the first option
|
|
154
|
-
|
|
166
|
+
const changeEvent = sinon.spy();
|
|
167
|
+
select.addEventListener('change', changeEvent);
|
|
168
|
+
await openAndClick(clock, select, 0);
|
|
169
|
+
assert(changeEvent.called, 'change event not fired');
|
|
155
170
|
expect(select.values.length).to.equal(1);
|
|
156
171
|
expect(select.values[0].name).to.equal('Red');
|
|
157
172
|
expect(select.shadowRoot.innerHTML).to.contain('Red');
|
|
158
173
|
await assertScreenshot('select/selected-single', getClipWithOptions(select));
|
|
159
174
|
});
|
|
160
175
|
it('can search with existing selection', async () => {
|
|
161
|
-
const select = await createSelect(getSelectHTML(colors, { searchable: true }));
|
|
176
|
+
const select = await createSelect(clock, getSelectHTML(colors, { searchable: true }));
|
|
162
177
|
// select the second option
|
|
163
|
-
await openAndClick(select, 1);
|
|
178
|
+
await openAndClick(clock, select, 1);
|
|
164
179
|
expect(select.values.length).to.equal(1);
|
|
165
180
|
expect(select.values[0].name).to.equal('Green');
|
|
166
181
|
// for single selection our current selection should be in the list and focused
|
|
167
|
-
await open(select);
|
|
182
|
+
await open(clock, select);
|
|
168
183
|
assert.equal(select.cursorIndex, 1);
|
|
169
184
|
assert.equal(select.visibleOptions.length, 3);
|
|
170
185
|
// now lets do a search, we should see our selection (green) and one other (red)
|
|
171
186
|
await typeInto('temba-select', 're', false);
|
|
172
|
-
await open(select);
|
|
187
|
+
await open(clock, select);
|
|
173
188
|
assert.equal(select.visibleOptions.length, 2);
|
|
174
189
|
await assertScreenshot('select/search-with-selected', getClipWithOptions(select));
|
|
175
190
|
// but our cursor should be on the first match
|
|
@@ -178,63 +193,104 @@ describe('temba-select', () => {
|
|
|
178
193
|
});
|
|
179
194
|
describe('multiple selection', () => {
|
|
180
195
|
it('can select multiple options', async () => {
|
|
181
|
-
const select = await createSelect(getSelectHTML(colors, { placeholder: 'Select a color', multi: true }));
|
|
196
|
+
const select = await createSelect(clock, getSelectHTML(colors, { placeholder: 'Select a color', multi: true }));
|
|
182
197
|
expect(select.values.length).to.equal(0);
|
|
198
|
+
const changeEvent = sinon.spy();
|
|
199
|
+
select.addEventListener('change', changeEvent);
|
|
183
200
|
// select the first option twice
|
|
184
|
-
await openAndClick(select, 0);
|
|
185
|
-
|
|
201
|
+
await openAndClick(clock, select, 0);
|
|
202
|
+
assert(changeEvent.called, 'change event not fired');
|
|
203
|
+
changeEvent.resetHistory();
|
|
204
|
+
await openAndClick(clock, select, 0);
|
|
205
|
+
assert(changeEvent.called, 'change event not fired');
|
|
186
206
|
// now we should have red and green selected
|
|
187
207
|
expect(select.values.length).to.equal(2);
|
|
188
208
|
expect(select.shadowRoot.innerHTML).to.contain('Red');
|
|
189
209
|
expect(select.shadowRoot.innerHTML).to.contain('Green');
|
|
190
210
|
await assertScreenshot('select/selected-multi', getClipWithOptions(select));
|
|
191
211
|
});
|
|
212
|
+
it('shows multiple values on initialization', async () => {
|
|
213
|
+
const select = await createSelect(clock, getSelectHTML([
|
|
214
|
+
{ name: 'Red', value: '0' },
|
|
215
|
+
{ name: 'Green', value: '1', selected: true },
|
|
216
|
+
{ name: 'Blue', value: '2', selected: true }
|
|
217
|
+
], {
|
|
218
|
+
placeholder: 'Select a color',
|
|
219
|
+
multi: true
|
|
220
|
+
}));
|
|
221
|
+
await assertScreenshot('select/multiple-initial-values', getClip(select));
|
|
222
|
+
expect(select.values.length).to.equal(2);
|
|
223
|
+
});
|
|
224
|
+
});
|
|
225
|
+
describe('static options', () => {
|
|
226
|
+
it('accepts an initial value', async () => {
|
|
227
|
+
const select = await createSelect(clock, getSelectHTML(colors, { value: '1' }));
|
|
228
|
+
expect(select.values[0].name).to.equal('Green');
|
|
229
|
+
await assertScreenshot('select/static-initial-value', getClip(select));
|
|
230
|
+
});
|
|
231
|
+
it('honors temba-option selected attribute', async () => {
|
|
232
|
+
const select = await createSelect(clock, getSelectHTML(colors, {}, '1'));
|
|
233
|
+
expect(select.values[0].name).to.equal('Green');
|
|
234
|
+
await assertScreenshot('select/static-initial-via-selected', getClip(select));
|
|
235
|
+
});
|
|
192
236
|
});
|
|
193
237
|
describe('endpoints', () => {
|
|
194
238
|
it('can load from an endpoint', async () => {
|
|
195
|
-
const select = await createSelect(getSelectHTML([], {
|
|
239
|
+
const select = await createSelect(clock, getSelectHTML([], {
|
|
196
240
|
placeholder: 'Select a color',
|
|
197
241
|
endpoint: '/test-assets/select/colors.json'
|
|
198
242
|
}));
|
|
199
|
-
await open(select);
|
|
243
|
+
await open(clock, select);
|
|
200
244
|
await assertScreenshot('select/remote-options', getClipWithOptions(select));
|
|
201
245
|
assert.equal(select.visibleOptions.length, 3);
|
|
202
246
|
});
|
|
203
247
|
it('can search an endpoint', async () => {
|
|
204
|
-
const select = await createSelect(getSelectHTML([], {
|
|
248
|
+
const select = await createSelect(clock, getSelectHTML([], {
|
|
205
249
|
placeholder: 'Select a color',
|
|
206
250
|
endpoint: '/test-assets/select/colors.json',
|
|
207
251
|
searchable: true
|
|
208
252
|
}));
|
|
209
253
|
await typeInto('temba-select', 're', false);
|
|
210
|
-
await open(select);
|
|
254
|
+
await open(clock, select);
|
|
211
255
|
assert.equal(select.visibleOptions.length, 2);
|
|
212
256
|
await assertScreenshot('select/searching', getClipWithOptions(select));
|
|
213
257
|
});
|
|
258
|
+
it('can use an endpoint and allow multiple', async () => {
|
|
259
|
+
const select = await createSelect(clock, getSelectHTML([], {
|
|
260
|
+
placeholder: 'Select a color',
|
|
261
|
+
endpoint: '/test-assets/select/colors.json',
|
|
262
|
+
searchable: true,
|
|
263
|
+
multi: true
|
|
264
|
+
}));
|
|
265
|
+
await assertScreenshot('select/multi-with-endpoint', getClipWithOptions(select));
|
|
266
|
+
// await typeInto('temba-select', 're', false);
|
|
267
|
+
// await open(select);
|
|
268
|
+
// assert.equal(select.visibleOptions.length, 2);
|
|
269
|
+
});
|
|
214
270
|
it('pages through cursor results', async () => {
|
|
215
|
-
const select = await createSelect(getSelectHTML([], {
|
|
271
|
+
const select = await createSelect(clock, getSelectHTML([], {
|
|
216
272
|
placeholder: 'Select a group',
|
|
217
273
|
endpoint: '/test-assets/select/groups.json',
|
|
218
274
|
valueKey: 'uuid'
|
|
219
275
|
}));
|
|
220
|
-
await open(select);
|
|
276
|
+
await open(clock, select);
|
|
221
277
|
// should have all three pages visible right away
|
|
222
278
|
assert.equal(select.visibleOptions.length, 15);
|
|
223
279
|
});
|
|
224
280
|
it('shows cached results', async () => {
|
|
225
|
-
const select = await createSelect(getSelectHTML([], {
|
|
281
|
+
const select = await createSelect(clock, getSelectHTML([], {
|
|
226
282
|
placeholder: 'Select a group',
|
|
227
283
|
endpoint: '/test-assets/select/groups.json',
|
|
228
284
|
valueKey: 'uuid',
|
|
229
285
|
searchable: true
|
|
230
286
|
}));
|
|
231
287
|
// wait for updates from fetching three pages
|
|
232
|
-
await open(select);
|
|
288
|
+
await open(clock, select);
|
|
233
289
|
assert.equal(select.visibleOptions.length, 15);
|
|
234
290
|
// close and reopen
|
|
235
291
|
select.blur();
|
|
236
292
|
await clock.tick(250);
|
|
237
|
-
await open(select);
|
|
293
|
+
await open(clock, select);
|
|
238
294
|
assert.equal(select.visibleOptions.length, 15);
|
|
239
295
|
// close and reopen once more (previous bug failed on third opening)
|
|
240
296
|
// select.blur();
|
|
@@ -243,71 +299,71 @@ describe('temba-select', () => {
|
|
|
243
299
|
});
|
|
244
300
|
it('can enter expressions', async () => {
|
|
245
301
|
await loadStore();
|
|
246
|
-
const select = await createSelect(getSelectHTML([], {
|
|
302
|
+
const select = await createSelect(clock, getSelectHTML([], {
|
|
247
303
|
endpoint: '/colors.json',
|
|
248
304
|
searchable: true,
|
|
249
305
|
expressions: 'session'
|
|
250
306
|
}));
|
|
251
307
|
await typeInto('temba-select', 'Hi there @contact', false);
|
|
252
|
-
await open(select);
|
|
308
|
+
await open(clock, select);
|
|
253
309
|
assert.equal(select.completionOptions.length, 14);
|
|
254
310
|
await assertScreenshot('select/expressions', getClipWithOptions(select));
|
|
255
311
|
});
|
|
256
312
|
it('clears single selection', async () => {
|
|
257
|
-
const select = await createSelect(getSelectHTML(colors, { clearable: true }));
|
|
313
|
+
const select = await createSelect(clock, getSelectHTML(colors, { clearable: true }));
|
|
258
314
|
assert.equal(select.getStaticOptions().length, 3);
|
|
259
|
-
await openAndClick(select, 0);
|
|
315
|
+
await openAndClick(clock, select, 0);
|
|
260
316
|
expect(select.values[0].name).to.equal('Red');
|
|
261
317
|
await assertScreenshot('select/selection-clearable', getClip(select));
|
|
262
318
|
clear(select);
|
|
263
319
|
expect(select.values.length).to.equal(0);
|
|
264
320
|
});
|
|
265
321
|
it('should look the same with search enabled', async () => {
|
|
266
|
-
const select = await createSelect(getSelectHTML(colors, {
|
|
322
|
+
const select = await createSelect(clock, getSelectHTML(colors, {
|
|
267
323
|
placeholder: 'Select a color',
|
|
268
324
|
searchable: true
|
|
269
325
|
}));
|
|
270
326
|
await assertScreenshot('select/search-enabled', getClipWithOptions(select));
|
|
271
327
|
});
|
|
272
328
|
it('should look the same with search enabled and selection made', async () => {
|
|
273
|
-
const select = await createSelect(getSelectHTML(colors, { searchable: true }));
|
|
329
|
+
const select = await createSelect(clock, getSelectHTML(colors, { searchable: true }));
|
|
274
330
|
// select the first option
|
|
275
|
-
await openAndClick(select, 1);
|
|
331
|
+
await openAndClick(clock, select, 1);
|
|
276
332
|
await assertScreenshot('select/search-selected', getClipWithOptions(select));
|
|
277
333
|
});
|
|
278
334
|
it('should show focus for the selected option', async () => {
|
|
279
|
-
const select = await createSelect(getSelectHTML(colors, { searchable: true }));
|
|
335
|
+
const select = await createSelect(clock, getSelectHTML(colors, { searchable: true }));
|
|
280
336
|
// select the first option
|
|
281
|
-
await openAndClick(select, 1);
|
|
337
|
+
await openAndClick(clock, select, 1);
|
|
282
338
|
// now open and look at focus
|
|
283
|
-
await open(select);
|
|
339
|
+
await open(clock, select);
|
|
284
340
|
await assertScreenshot('select/search-selected-focus', getClipWithOptions(select));
|
|
285
341
|
});
|
|
286
342
|
it('should show search with existing multiple selection', async () => {
|
|
287
|
-
const select = await createSelect(getSelectHTML(colors, {
|
|
343
|
+
const select = await createSelect(clock, getSelectHTML(colors, {
|
|
288
344
|
placeholder: 'Select a color',
|
|
289
345
|
searchable: true,
|
|
290
346
|
multi: true
|
|
291
347
|
}));
|
|
292
348
|
// select the first option
|
|
293
|
-
await openAndClick(select, 0);
|
|
294
|
-
await openAndClick(select, 0);
|
|
295
|
-
await open(select);
|
|
349
|
+
await openAndClick(clock, select, 0);
|
|
350
|
+
await openAndClick(clock, select, 0);
|
|
351
|
+
await open(clock, select);
|
|
296
352
|
// now lets do a search, we should see our selection (green) and one other (red)
|
|
297
353
|
await typeInto('temba-select', 're', false);
|
|
298
|
-
await open(select);
|
|
354
|
+
await open(clock, select);
|
|
299
355
|
// should have two things selected and active query and no matching options
|
|
300
356
|
await assertScreenshot('select/search-multi-no-matches', getClipWithOptions(select));
|
|
301
357
|
});
|
|
302
358
|
it('should show functions', async () => {
|
|
303
359
|
await loadStore();
|
|
304
|
-
const select = await createSelect(getSelectHTML(colors, {
|
|
360
|
+
const select = await createSelect(clock, getSelectHTML(colors, {
|
|
305
361
|
placeholder: 'Select a color',
|
|
306
362
|
searchable: true,
|
|
307
363
|
expressions: 'session'
|
|
308
364
|
}));
|
|
309
365
|
await typeInto('temba-select', 'look at @(max(m', false);
|
|
310
|
-
await open(select);
|
|
366
|
+
await open(clock, select);
|
|
311
367
|
await assertScreenshot('select/functions', getClipWithOptions(select));
|
|
312
368
|
});
|
|
313
369
|
it('should truncate selection if necessesary', async () => {
|
|
@@ -317,21 +373,21 @@ describe('temba-select', () => {
|
|
|
317
373
|
value: '0'
|
|
318
374
|
}
|
|
319
375
|
];
|
|
320
|
-
const select = await createSelect(getSelectHTML(options, {
|
|
376
|
+
const select = await createSelect(clock, getSelectHTML(options, {
|
|
321
377
|
value: '0'
|
|
322
378
|
}));
|
|
323
379
|
await assertScreenshot('select/truncated-selection', getClipWithOptions(select));
|
|
324
380
|
});
|
|
325
381
|
it('can select expression completion as value', async () => {
|
|
326
382
|
await loadStore();
|
|
327
|
-
const select = await createSelect(getSelectHTML(colors, {
|
|
383
|
+
const select = await createSelect(clock, getSelectHTML(colors, {
|
|
328
384
|
multi: true,
|
|
329
385
|
placeholder: 'Select a color',
|
|
330
386
|
searchable: true,
|
|
331
387
|
expressions: 'session'
|
|
332
388
|
}));
|
|
333
389
|
await typeInto('temba-select', '@con', false);
|
|
334
|
-
await openAndClick(select, 0);
|
|
390
|
+
await openAndClick(clock, select, 0);
|
|
335
391
|
expect(select.values[0].name).to.equal('@contact');
|
|
336
392
|
await assertScreenshot('select/expression-selected', getClipWithOptions(select));
|
|
337
393
|
});
|