All checks were successful
Deploy Docs to Synology / deploy (push) Successful in 3s
62 lines
1.5 KiB
JavaScript
62 lines
1.5 KiB
JavaScript
// core/utils.js
|
|
import { $, h } from "sigpro";
|
|
|
|
export const val = t => typeof t === "function" ? t() : t;
|
|
|
|
export const ui = (baseClass, additionalClassOrFn) =>
|
|
typeof additionalClassOrFn === "function"
|
|
? () => `${baseClass} ${additionalClassOrFn() || ""}`.trim()
|
|
: `${baseClass} ${additionalClassOrFn || ""}`.trim();
|
|
|
|
export const getIcon = (icon) => {
|
|
if (!icon) return null;
|
|
|
|
if (typeof icon === 'function') {
|
|
return h("span", { class: "mr-1" }, icon());
|
|
}
|
|
|
|
if (typeof icon === 'object') {
|
|
return h("span", { class: "mr-1" }, icon);
|
|
}
|
|
|
|
if (typeof icon === 'string') {
|
|
const parts = icon.trim().split(/\s+/);
|
|
const hasRight = parts[parts.length - 1] === 'right';
|
|
const iconClass = hasRight ? parts.slice(0, -1).join(' ') : icon;
|
|
const spacing = hasRight ? 'ml-1' : 'mr-1';
|
|
|
|
if (iconClass && !iconClass.startsWith('icon-[') && !iconClass.includes('--')) {
|
|
return h("span", { class: spacing }, iconClass);
|
|
}
|
|
|
|
return h("span", { class: `${iconClass} ${spacing}`.trim() });
|
|
}
|
|
|
|
return null;
|
|
};
|
|
|
|
export const i18n = {
|
|
es: {
|
|
close: "Cerrar",
|
|
confirm: "Confirmar",
|
|
cancel: "Cancelar",
|
|
search: "Buscar...",
|
|
loading: "Cargando...",
|
|
nodata: "Sin datos"
|
|
},
|
|
en: {
|
|
close: "Close",
|
|
confirm: "Confirm",
|
|
cancel: "Cancel",
|
|
search: "Search...",
|
|
loading: "Loading...",
|
|
nodata: "No data"
|
|
}
|
|
};
|
|
|
|
export const currentLocale = $("es");
|
|
|
|
|
|
// Export design
|
|
export const Locale = t => currentLocale(t);
|
|
export const tt = t => () => i18n[currentLocale()][t] || t; |