UNPKG

getaddress-autocomplete-modal

Version:

GetAddress.io - Autocomplete modal plug-in

110 lines 4.62 kB
import ControlsContainer from "./ControlsContainer.js"; import SuggestionList from "./SuggestionList.js"; import Storage from "./Storage.js"; import HistoryList from "./HistoryList.js"; export default class Modal { constructor(client, attributeValues, textbox) { this.client = client; this.attributeValues = attributeValues; this.textbox = textbox; this.modal = document.createElement('DIV'); this.element = this.modal; this.open = (initialValue) => { const body = document.getElementsByTagName("BODY")[0]; body.classList.add(this.attributeValues.bodyClassName); this.dispatchOpening(initialValue); Storage.clearExpired(); if (initialValue && this.attributeValues.options.copy_text_on_open) { this.controlsContainer.input.setValue(initialValue); } else { this.controlsContainer.input.setValue(""); } this.modal.style.display = 'flex'; this.controlsContainer.focus(); this.dispatchOpen(initialValue); }; this.close = () => { const body = document.getElementsByTagName("BODY")[0]; body.classList.remove(this.attributeValues.bodyClassName); const data = this.controlsContainer.input.value(); this.dispatchClosing(data); this.modal.style.display = 'none'; if (this.attributeValues.options.copy_text_on_close) { this.textbox.value = data; } this.textbox.focus(); this.dispatchClosed(data); }; this.suggestionList = new SuggestionList(this.client, this, attributeValues); this.historyList = new HistoryList(this, this.attributeValues); this.controlsContainer = new ControlsContainer(this.client, this, this.suggestionList, this.attributeValues, this.historyList); this.build(); } destroy() { this.suggestionList.destroy(); this.controlsContainer.destroy(); this.element.remove(); } build() { this.modal.className = this.attributeValues.modalClassName; this.modal.insertBefore(this.historyList.element, null); this.modal.insertBefore(this.suggestionList.element, this.historyList.element); this.modal.insertBefore(this.controlsContainer.element, this.suggestionList.element); document.body.insertBefore(this.modal, null); } dispatchClosing(data) { const evt = new Event("getaddress-autocomplete-modal-closing", { bubbles: true }); evt["data"] = data; this.element.dispatchEvent(evt); } dispatchClosed(data) { const evt = new Event("getaddress-autocomplete-modal-closed", { bubbles: true }); evt["data"] = data; this.element.dispatchEvent(evt); } dispatchOpening(data) { const evt = new Event("getaddress-autocomplete-modal-opening", { bubbles: true }); evt["data"] = data; this.element.dispatchEvent(evt); } dispatchOpen(data) { const evt = new Event("getaddress-autocomplete-modal-open", { bubbles: true }); evt["data"] = data; this.element.dispatchEvent(evt); } dispatchSuggestions(data, suggestions) { const evt = new Event("getaddress-autocomplete-modal-suggestions", { bubbles: true }); evt["suggestions"] = suggestions; evt["data"] = data; this.element.dispatchEvent(evt); } dispatchSuggestionsFailed(query, status, message) { const evt = new Event("getaddress-autocomplete-modal-suggestions-failed", { bubbles: true }); evt["status"] = status; evt["message"] = message; evt["query"] = query; this.element.dispatchEvent(evt); } Save(id, address) { if (this.attributeValues.options.remember_last_search) { Storage.save(id, address); } } dispatchSelected(id, address) { const data = this.controlsContainer.input.value(); const evt = new Event("getaddress-autocomplete-modal-selected", { bubbles: true }); evt["address"] = address; evt["data"] = data; evt["id"] = id; this.element.dispatchEvent(evt); } dispatchSelectedFailed(query, status, message) { const evt = new Event("getaddress-autocomplete-modal-selected-failed", { bubbles: true }); evt["status"] = status; evt["message"] = message; evt["query"] = query; this.element.dispatchEvent(evt); } } //# sourceMappingURL=Modal.js.map