@synergy-design-system/components
Version:
This package provides the base of the Synergy Design System as native web components. It uses [lit](https://www.lit.dev) and parts of [shoelace](https://shoelace.style/). Synergy officially supports the latest two versions of all major browsers (as define
63 lines (61 loc) • 2.28 kB
JavaScript
// src/components/combobox/utils.ts
import { html, render } from "lit";
import { unsafeHTML } from "lit/directives/unsafe-html.js";
var getAssignedElementsForSlot = (slot) => Array.from(
slot.assignedElements({ flatten: true })
);
var getOptionOrNestedOptions = (item) => item.tagName.toLocaleLowerCase() === "syn-option" ? item : Array.from(item.querySelectorAll(":scope > syn-option"));
var isOptgroup = (item) => item.tagName.toLocaleLowerCase() === "syn-optgroup";
var getAllOptions = (items) => items.map(getOptionOrNestedOptions);
var filterOnlyOptgroups = (items) => items.filter(isOptgroup);
var normalizeString = (str) => str.normalize("NFD").replace(/[\u0300-\u036f]/g, "").toLowerCase();
var createElementFromTemplateResult = (template) => {
const container = document.createElement("div");
render(template, container);
return container.firstElementChild;
};
var getOptionOrUndefined = (element) => element.tagName.toLocaleLowerCase() === "syn-option" ? element : void 0;
var createOptionFromDifferentTypes = (option) => {
if (!option) return void 0;
if (option instanceof HTMLElement) {
return getOptionOrUndefined(option);
}
if (typeof option === "string") {
const template = html`${unsafeHTML(option)}`;
const element = createElementFromTemplateResult(template);
return getOptionOrUndefined(element);
}
if (Object.prototype.hasOwnProperty.call(option, "_$litType$")) {
const element = createElementFromTemplateResult(option);
return getOptionOrUndefined(element);
}
return void 0;
};
var getValueFromOption = (option) => {
const { value } = option;
if (value === void 0 || value === null || value === "") {
return option.getTextLabel();
}
return value;
};
var checkValueBelongsToOption = (value, option) => {
if (!option || !value) {
return false;
}
const optionValue = option.value;
const optionText = option.getTextLabel();
return value === optionValue || value === optionText;
};
export {
getAssignedElementsForSlot,
getOptionOrNestedOptions,
isOptgroup,
getAllOptions,
filterOnlyOptgroups,
normalizeString,
createElementFromTemplateResult,
createOptionFromDifferentTypes,
getValueFromOption,
checkValueBelongsToOption
};
//# sourceMappingURL=chunk.BWTMFHNM.js.map