UNPKG

radh-ui

Version:

Stencil Component Starter

63 lines (58 loc) 1.95 kB
import { r as registerInstance, c as createEvent, h, g as getElement } from './index-a9700b09.js'; function getComponentClosestLanguage(element) { let closestElement = element.closest('[lang]'); return closestElement ? closestElement.lang : 'en'; } function fetchLocaleStringsForComponent(componentName, locale) { return new Promise((resolve, reject) => { fetch(`/assets/i18n/${componentName}.${locale}.json`) .then((result) => { if (result.ok) resolve(result.json()); else reject(); }, () => reject()); }); } async function getLocaleComponentStrings(element) { let componentName = element.tagName.toLowerCase(); let componentLanguage = getComponentClosestLanguage(element); let strings; try { strings = await fetchLocaleStringsForComponent(componentName, componentLanguage); } catch (e) { console.warn(`no locale for ${componentName} (${componentLanguage}) loading default locale en.`); strings = await fetchLocaleStringsForComponent(componentName, 'en'); } return strings; } const radhHelloCss = ".active{color:red}"; class RadhHello { constructor(hostRef) { registerInstance(this, hostRef); this.selected = createEvent(this, "selected", 7); } async loadStrings() { this.strings = await getLocaleComponentStrings(this.myComponent); } componentWillLoad() { return this.loadStrings(); } async loadLocale() { this.loadStrings(); } onListenClick() { this.selected.emit(this.name); this.addClass(); } addClass() { this.myComponent.classList.add("active"); } render() { return (h("div", { id: "hello" }, this.strings.hello, " ", this.name)); } get myComponent() { return getElement(this); } } RadhHello.style = radhHelloCss; export { RadhHello as radh_hello };