UNPKG

@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
// 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