Files
sigpro-ui/utils.js
natxocc d900659d88
All checks were successful
Deploy Docs to Synology / deploy (push) Successful in 3s
Migrating new components
2026-04-20 23:31:14 +02:00

62 lines
1.6 KiB
JavaScript

// core/utils.js
import { $, Tag } 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 Tag("span", { class: "mr-1" }, icon());
}
if (typeof icon === 'object') {
return Tag("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 Tag("span", { class: spacing }, iconClass);
}
return Tag("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;