@synergy-design-system/components
Version:
82 lines (79 loc) • 2.58 kB
JavaScript
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