UNPKG

@synergy-design-system/components

Version:
82 lines (79 loc) 2.58 kB
import { SynergyElement } from "./chunk.L2IYPRPF.js"; // src/components/validate/utility.ts var WhitelistedSynergyFormEventNames = [ "blur", "change", "clear", "focus", "invalid", "input", "move" ]; var isEventOfType = (eventName, type) => eventName.includes(type); var isBlurEvent = (eventName) => isEventOfType(eventName, "blur"); var isChangeEvent = (eventName) => isEventOfType(eventName, "change"); var isInvalidEvent = (eventName) => isEventOfType(eventName, "invalid"); var isSynergyElement = (element) => element instanceof SynergyElement; var normalizeEventAttribute = (events = "") => events.split(" ").map((s) => s.trim()).filter(Boolean); var getEventNameForElement = (element, eventName) => { const sanitizedEventName = eventName.trim(); const elementIsSynergyElement = isSynergyElement(element); if (!elementIsSynergyElement) { return sanitizedEventName; } return WhitelistedSynergyFormEventNames.includes(sanitizedEventName) ? `syn-${sanitizedEventName}` : sanitizedEventName; }; var alertSizeForInput = (element) => { if (!isSynergyElement(element)) { return void 0; } const { size } = element; const hasSize = size !== void 0 && size !== null; return hasSize ? size : void 0; }; var ELEMENT_SELECTORS = { "syn-checkbox": "input", "syn-combobox": ".combobox__value-input", "syn-file": "input", "syn-input": "input", "syn-radio-group": "input", // Range could also use the first thumb, but unfortunately this collides with the already present tooltip "syn-range": ".input__control", "syn-select": ".select__value-input", "syn-switch": "input", "syn-textarea": ".textarea__control" }; var queryInputInShadowRoot = (element, selector) => { var _a, _b; return (_b = (_a = element.shadowRoot) == null ? void 0 : _a.querySelector(selector)) != null ? _b : null; }; var getActualInputElement = (element) => { if (!element) { return void 0; } if (!element.shadowRoot) { return element; } const tagName = element.tagName.toLowerCase(); const selector = ELEMENT_SELECTORS[tagName]; if (selector) { const actualInput = queryInputInShadowRoot(element, selector); if (actualInput) return actualInput; } const fallbackInput = queryInputInShadowRoot(element, "input,select,textarea"); if (fallbackInput) return fallbackInput; return element; }; export { isBlurEvent, isChangeEvent, isInvalidEvent, isSynergyElement, normalizeEventAttribute, getEventNameForElement, alertSizeForInput, getActualInputElement }; //# sourceMappingURL=chunk.W25CQDI6.js.map