UNPKG

@csedl/stimulus-dropdown

Version:

Dropdown and Tooltip with stimulus and floating-ui

114 lines (93 loc) 3.22 kB
import {debugLog} from "./utils.js"; // DEFAULTS let _debug = false; let _close_button_selector = '.close-button'; let _dropdown_content_selector = '.content'; let _tooltip_content_selector = '.content'; let _add_arrow = true; let _persist_tooltip_on_click = false; let _close_on_click_outside_listener_added = false; const StimulusDropdown = { // debug get debug() { return _debug; }, set debug(value) { if (typeof value !== "boolean") { throw new Error("Debug value must be true or false"); } _debug = value; debugLog('debugging active') }, // close button selector get closeButtonSelector() { return _close_button_selector; }, set closeButtonSelector(string) { if (typeof string !== "string") { throw new Error("Close Button Selector must be a string"); } _close_button_selector = string; debugLog(`close button selector is: «${string}»`); }, // content selector get dropdownContentSelector() { return _dropdown_content_selector; }, set dropdownContentSelector(string) { if (typeof string !== "string") { throw new Error("Content Selector must be a string"); } _dropdown_content_selector = string; debugLog(`dropdown content selector is: «${string}»`); }, // tooltip content selector get tooltipContentSelector() { return _tooltip_content_selector; }, set tooltipContentSelector(string) { if (typeof string !== "string") { throw new Error("Tooltip Content Selector must be a string"); } _tooltip_content_selector = string; debugLog(`tooltip content selector is: «${string}»`); }, // add arrow get addArrow() { return _add_arrow; }, set addArrow(boolean) { if (typeof boolean !== "boolean") { throw new Error("Tooltip Content Selector must be a string"); } _add_arrow = boolean; debugLog(`add-arrow is set to: «${boolean}»`); }, // add arrow get persistTooltipOnClick() { return _persist_tooltip_on_click; }, set persistTooltipOnClick(boolean) { if (typeof boolean !== "boolean") { throw new Error("Tooltip Content Selector must be a string"); } _persist_tooltip_on_click = boolean; debugLog(`Persist tooltip on click is set to: «${boolean}»`); }, // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // INTERNAL USE // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // closeOnClickOutsideListenerAdded get closeOnClickOutsideListenerAdded() { return _close_on_click_outside_listener_added; }, set closeOnClickOutsideListenerAdded(bool) { if (typeof bool !== "boolean") { throw new Error("closeOnClickOutsideListenerAdded must be a boolean"); } _close_on_click_outside_listener_added = bool; debugLog(`closeOnClickOutsideListenerAdded is: «${bool}»`); }, }; window.StimulusDropdown = StimulusDropdown; export default StimulusDropdown;