Atomico предоставляет удобные инструменты для работы с отображением дат и чисел в компонентах, ориентируясь на современные возможности JavaScript и стандарты международной локализации. Основная задача — облегчить разработку интерфейсов с корректным отображением чисел, валют, процентов и дат с учетом локали пользователя.
IntlAtomico использует встроенный объект Intl для
форматирования данных. Он обеспечивает поддержку множества локалей и
гибкое управление стилем отображения.
Пример форматирования числа:
import { c, useState } from "atomico";
function NumberDisplay({ value }) {
const formatted = new Intl.NumberFormat("ru-RU", {
style: "decimal",
minimumFractionDigits: 2,
maximumFractionDigits: 2
}).format(value);
return <span>{formatted}</span>;
}
customElements.define("number-display", c(NumberDisplay));
Ключевые моменты:
style может принимать значения: "decimal",
"currency", "percent".minimumFractionDigits и
maximumFractionDigits позволяют управлять количеством
отображаемых десятичных знаков."ru-RU") задает правила разделения тысяч и
формат даты.Для отображения денежных значений используется стиль
currency и параметр currency с кодом валюты
ISO 4217.
function Price({ amount }) {
const formatted = new Intl.NumberFormat("ru-RU", {
style: "currency",
currency: "RUB",
minimumFractionDigits: 0
}).format(amount);
return <span>{formatted}</span>;
}
Особенности:
"RUB" в "ru-RU" это ₽.minimumFractionDigits и
maximumFractionDigits.Для процентов используется стиль "percent", при этом
значение передается как десятичная дробь (0.25 = 25%).
function Discount({ value }) {
const formatted = new Intl.NumberFormat("ru-RU", {
style: "percent",
minimumFractionDigits: 1
}).format(value);
return <span>{formatted}</span>;
}
Особенности:
value.%.Для работы с датами используется Intl.DateTimeFormat. Он
позволяет форматировать дату в различных стилях, включая короткий,
средний, длинный и полный.
function DateDisplay({ date }) {
const formatted = new Intl.DateTimeFormat("ru-RU", {
weekday: "long",
year: "numeric",
month: "long",
day: "numeric"
}).format(date);
return <span>{formatted}</span>;
}
Особенности:
weekday, year,
month, day управляют отображением конкретных
частей даты.numeric или
2-digit для чисел, и short, long,
narrow для месяцев и дней недели.Atomico поддерживает реактивное обновление компонентов, что позволяет менять локаль и форматирование на лету:
function DynamicDate({ date, locale }) {
const formatted = new Intl.DateTimeFormat(locale, {
weekday: "short",
year: "numeric",
month: "short",
day: "numeric"
}).format(date);
return <span>{formatted}</span>;
}
locale компонент автоматически
перерендеривается с новым форматом.Для упрощения повторного использования в Atomico часто создают небольшие утилиты:
export function formatNumber(value, locale = "ru-RU", options = {}) {
return new Intl.NumberFormat(locale, options).format(value);
}
export function formatDate(date, locale = "ru-RU", options = {}) {
return new Intl.DateTimeFormat(locale, options).format(date);
}
decimal,
currency, percent) и указывать количество
знаков после запятой.Форматирование дат и чисел в Atomico строится на мощных возможностях
стандарта Intl, что позволяет создавать гибкие и
локализованные интерфейсы без сторонних библиотек, сохраняя реактивность
и удобство разработки компонентов.