@dxtmisha/wiki 0.39.7 → 0.39.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{defineProperty-DblGXmzD.js → defineProperty-Bjg6wMoX.js} +4 -4
- package/dist/library.js +1 -1
- package/dist/media.js +12 -0
- package/dist/storybook.js +1 -1
- package/package.json +1 -1
- package/src/media/functional/functional-basic/api/api.en.mdx +45 -0
- package/src/media/functional/functional-basic/api/api.ru.mdx +45 -0
- package/src/media/functional/functional-basic/api/api.vi.mdx +45 -0
- package/src/media/functional/functional-basic/classes/Api/Api.en.mdx +54 -54
- package/src/media/functional/functional-basic/classes/Api/Api.ru.mdx +54 -54
- package/src/media/functional/functional-basic/classes/Api/Api.vi.mdx +54 -54
- package/src/media/functional/functional-basic/classes/ApiCache/ApiCache.en.mdx +111 -0
- package/src/media/functional/functional-basic/classes/ApiCache/ApiCache.ru.mdx +111 -0
- package/src/media/functional/functional-basic/classes/ApiCache/ApiCache.vi.mdx +111 -0
- package/src/media/functional/functional-basic/classes/ApiDataReturn/ApiDataReturn.en.mdx +32 -0
- package/src/media/functional/functional-basic/classes/ApiDataReturn/ApiDataReturn.ru.mdx +32 -0
- package/src/media/functional/functional-basic/classes/ApiDataReturn/ApiDataReturn.vi.mdx +32 -0
- package/src/media/functional/functional-basic/classes/ApiDefault/ApiDefault.en.mdx +24 -28
- package/src/media/functional/functional-basic/classes/ApiDefault/ApiDefault.ru.mdx +24 -28
- package/src/media/functional/functional-basic/classes/ApiDefault/ApiDefault.vi.mdx +24 -28
- package/src/media/functional/functional-basic/classes/ApiHeaders/ApiHeaders.en.mdx +28 -14
- package/src/media/functional/functional-basic/classes/ApiHeaders/ApiHeaders.ru.mdx +33 -19
- package/src/media/functional/functional-basic/classes/ApiHeaders/ApiHeaders.vi.mdx +33 -19
- package/src/media/functional/functional-basic/classes/ApiHydration/ApiHydration.en.mdx +56 -0
- package/src/media/functional/functional-basic/classes/ApiHydration/ApiHydration.ru.mdx +56 -0
- package/src/media/functional/functional-basic/classes/ApiHydration/ApiHydration.vi.mdx +55 -0
- package/src/media/functional/functional-basic/classes/ApiInstance/ApiInstance.en.mdx +101 -49
- package/src/media/functional/functional-basic/classes/ApiInstance/ApiInstance.ru.mdx +101 -49
- package/src/media/functional/functional-basic/classes/ApiInstance/ApiInstance.vi.mdx +98 -47
- package/src/media/functional/functional-basic/classes/ApiPreparation/ApiPreparation.en.mdx +44 -26
- package/src/media/functional/functional-basic/classes/ApiPreparation/ApiPreparation.ru.mdx +45 -27
- package/src/media/functional/functional-basic/classes/ApiPreparation/ApiPreparation.vi.mdx +44 -26
- package/src/media/functional/functional-basic/classes/ApiResponse/ApiResponse.en.mdx +50 -21
- package/src/media/functional/functional-basic/classes/ApiResponse/ApiResponse.ru.mdx +54 -25
- package/src/media/functional/functional-basic/classes/ApiResponse/ApiResponse.vi.mdx +55 -26
- package/src/media/functional/functional-basic/classes/ApiStatus/ApiStatus.en.mdx +29 -32
- package/src/media/functional/functional-basic/classes/ApiStatus/ApiStatus.ru.mdx +33 -36
- package/src/media/functional/functional-basic/classes/ApiStatus/ApiStatus.vi.mdx +33 -36
- package/src/media/functional/functional-basic/classes/BroadcastMessage/BroadcastMessage.en.mdx +34 -53
- package/src/media/functional/functional-basic/classes/BroadcastMessage/BroadcastMessage.ru.mdx +33 -52
- package/src/media/functional/functional-basic/classes/BroadcastMessage/BroadcastMessage.vi.mdx +39 -58
- package/src/media/functional/functional-basic/classes/Cache/Cache.en.mdx +7 -4
- package/src/media/functional/functional-basic/classes/Cache/Cache.ru.mdx +7 -4
- package/src/media/functional/functional-basic/classes/Cache/Cache.vi.mdx +28 -25
- package/src/media/functional/functional-basic/classes/CacheItem/CacheItem.en.mdx +45 -53
- package/src/media/functional/functional-basic/classes/CacheItem/CacheItem.ru.mdx +46 -54
- package/src/media/functional/functional-basic/classes/CacheItem/CacheItem.vi.mdx +47 -55
- package/src/media/functional/functional-basic/classes/CacheStatic/CacheStatic.en.mdx +13 -1
- package/src/media/functional/functional-basic/classes/CacheStatic/CacheStatic.ru.mdx +13 -1
- package/src/media/functional/functional-basic/classes/CacheStatic/CacheStatic.vi.mdx +13 -0
- package/src/media/functional/functional-basic/classes/Cookie/Cookie.en.mdx +88 -44
- package/src/media/functional/functional-basic/classes/Cookie/Cookie.ru.mdx +88 -44
- package/src/media/functional/functional-basic/classes/Cookie/Cookie.vi.mdx +85 -41
- package/src/media/functional/functional-basic/classes/CookieBlock/CookieBlock.en.mdx +43 -22
- package/src/media/functional/functional-basic/classes/CookieBlock/CookieBlock.ru.mdx +46 -25
- package/src/media/functional/functional-basic/classes/CookieBlock/CookieBlock.vi.mdx +43 -22
- package/src/media/functional/functional-basic/classes/CookieBlockInstance/CookieBlockInstance.en.mdx +84 -0
- package/src/media/functional/functional-basic/classes/CookieBlockInstance/CookieBlockInstance.ru.mdx +84 -0
- package/src/media/functional/functional-basic/classes/CookieBlockInstance/CookieBlockInstance.vi.mdx +100 -0
- package/src/media/functional/functional-basic/classes/CookieStorage/CookieStorage.en.mdx +153 -0
- package/src/media/functional/functional-basic/classes/CookieStorage/CookieStorage.ru.mdx +153 -0
- package/src/media/functional/functional-basic/classes/CookieStorage/CookieStorage.vi.mdx +153 -0
- package/src/media/functional/functional-basic/classes/DataStorage/DataStorage.en.mdx +32 -25
- package/src/media/functional/functional-basic/classes/DataStorage/DataStorage.ru.mdx +32 -25
- package/src/media/functional/functional-basic/classes/DataStorage/DataStorage.vi.mdx +32 -27
- package/src/media/functional/functional-basic/classes/Datetime/Datetime.en.mdx +36 -4
- package/src/media/functional/functional-basic/classes/Datetime/Datetime.ru.mdx +36 -4
- package/src/media/functional/functional-basic/classes/Datetime/Datetime.vi.mdx +36 -4
- package/src/media/functional/functional-basic/classes/ErrorCenter/ErrorCenter.en.mdx +101 -70
- package/src/media/functional/functional-basic/classes/ErrorCenter/ErrorCenter.ru.mdx +100 -69
- package/src/media/functional/functional-basic/classes/ErrorCenter/ErrorCenter.vi.mdx +101 -70
- package/src/media/functional/functional-basic/classes/ErrorCenterHandler/ErrorCenterHandler.en.mdx +46 -42
- package/src/media/functional/functional-basic/classes/ErrorCenterHandler/ErrorCenterHandler.ru.mdx +46 -42
- package/src/media/functional/functional-basic/classes/ErrorCenterHandler/ErrorCenterHandler.vi.mdx +46 -42
- package/src/media/functional/functional-basic/classes/ErrorCenterInstance/ErrorCenterInstance.en.mdx +44 -96
- package/src/media/functional/functional-basic/classes/ErrorCenterInstance/ErrorCenterInstance.ru.mdx +44 -96
- package/src/media/functional/functional-basic/classes/ErrorCenterInstance/ErrorCenterInstance.vi.mdx +44 -96
- package/src/media/functional/functional-basic/classes/EventItem/EventItem.en.mdx +49 -28
- package/src/media/functional/functional-basic/classes/EventItem/EventItem.ru.mdx +21 -0
- package/src/media/functional/functional-basic/classes/EventItem/EventItem.vi.mdx +63 -42
- package/src/media/functional/functional-basic/classes/Formatters/Formatters.en.mdx +97 -109
- package/src/media/functional/functional-basic/classes/Formatters/Formatters.ru.mdx +86 -98
- package/src/media/functional/functional-basic/classes/Formatters/Formatters.vi.mdx +99 -111
- package/src/media/functional/functional-basic/classes/Geo/Geo.en.mdx +3 -3
- package/src/media/functional/functional-basic/classes/Geo/Geo.ru.mdx +5 -5
- package/src/media/functional/functional-basic/classes/Geo/Geo.vi.mdx +5 -5
- package/src/media/functional/functional-basic/classes/GeoFlag/GeoFlag.en.mdx +83 -40
- package/src/media/functional/functional-basic/classes/GeoFlag/GeoFlag.ru.mdx +83 -40
- package/src/media/functional/functional-basic/classes/GeoFlag/GeoFlag.vi.mdx +87 -44
- package/src/media/functional/functional-basic/classes/GeoInstance/GeoInstance.en.mdx +81 -0
- package/src/media/functional/functional-basic/classes/GeoInstance/GeoInstance.ru.mdx +81 -0
- package/src/media/functional/functional-basic/classes/GeoInstance/GeoInstance.vi.mdx +81 -0
- package/src/media/functional/functional-basic/classes/GeoPhone/GeoPhone.en.mdx +56 -105
- package/src/media/functional/functional-basic/classes/GeoPhone/GeoPhone.ru.mdx +53 -102
- package/src/media/functional/functional-basic/classes/GeoPhone/GeoPhone.vi.mdx +55 -105
- package/src/media/functional/functional-basic/classes/Hash/Hash.en.mdx +18 -7
- package/src/media/functional/functional-basic/classes/Hash/Hash.ru.mdx +18 -7
- package/src/media/functional/functional-basic/classes/Hash/Hash.vi.mdx +18 -7
- package/src/media/functional/functional-basic/classes/HashInstance/HashInstance.en.mdx +54 -0
- package/src/media/functional/functional-basic/classes/HashInstance/HashInstance.ru.mdx +54 -0
- package/src/media/functional/functional-basic/classes/HashInstance/HashInstance.vi.mdx +54 -0
- package/src/media/functional/functional-basic/classes/MetaStatic/MetaStatic.en.mdx +78 -0
- package/src/media/functional/functional-basic/classes/MetaStatic/MetaStatic.ru.mdx +78 -0
- package/src/media/functional/functional-basic/classes/MetaStatic/MetaStatic.vi.mdx +78 -0
- package/src/media/functional/functional-basic/classes/ResumableTimer/ResumableTimer.en.mdx +50 -0
- package/src/media/functional/functional-basic/classes/ResumableTimer/ResumableTimer.ru.mdx +50 -0
- package/src/media/functional/functional-basic/classes/ResumableTimer/ResumableTimer.vi.mdx +50 -0
- package/src/media/functional/functional-basic/classes/ServerStorage/ServerStorage.en.mdx +131 -0
- package/src/media/functional/functional-basic/classes/ServerStorage/ServerStorage.ru.mdx +131 -0
- package/src/media/functional/functional-basic/classes/ServerStorage/ServerStorage.vi.mdx +131 -0
- package/src/media/functional/functional-basic/classes/StorageCallback/StorageCallback.en.mdx +97 -0
- package/src/media/functional/functional-basic/classes/StorageCallback/StorageCallback.ru.mdx +97 -0
- package/src/media/functional/functional-basic/classes/StorageCallback/StorageCallback.vi.mdx +97 -0
- package/src/media/functional/functional-basic/functions/addTagHighlightMatch/addTagHighlightMatch.en.mdx +13 -5
- package/src/media/functional/functional-basic/functions/addTagHighlightMatch/addTagHighlightMatch.ru.mdx +13 -5
- package/src/media/functional/functional-basic/functions/addTagHighlightMatch/addTagHighlightMatch.vi.mdx +13 -5
- package/src/media/functional/functional-basic/functions/anyToString/anyToString.en.mdx +37 -19
- package/src/media/functional/functional-basic/functions/anyToString/anyToString.ru.mdx +37 -19
- package/src/media/functional/functional-basic/functions/anyToString/anyToString.vi.mdx +35 -17
- package/src/media/functional/functional-basic/functions/applyTemplate/applyTemplate.en.mdx +31 -19
- package/src/media/functional/functional-basic/functions/applyTemplate/applyTemplate.ru.mdx +31 -19
- package/src/media/functional/functional-basic/functions/applyTemplate/applyTemplate.vi.mdx +32 -20
- package/src/media/functional/functional-basic/functions/blobToBase64/blobToBase64.en.mdx +29 -15
- package/src/media/functional/functional-basic/functions/blobToBase64/blobToBase64.ru.mdx +28 -14
- package/src/media/functional/functional-basic/functions/blobToBase64/blobToBase64.vi.mdx +28 -14
- package/src/media/functional/functional-basic/functions/capitalize/capitalize.en.mdx +7 -3
- package/src/media/functional/functional-basic/functions/capitalize/capitalize.ru.mdx +7 -3
- package/src/media/functional/functional-basic/functions/capitalize/capitalize.vi.mdx +7 -3
- package/src/media/functional/functional-basic/functions/copyObject/copyObject.en.mdx +17 -13
- package/src/media/functional/functional-basic/functions/copyObject/copyObject.ru.mdx +17 -13
- package/src/media/functional/functional-basic/functions/copyObject/copyObject.vi.mdx +17 -13
- package/src/media/functional/functional-basic/functions/createElement/createElement.en.mdx +2 -0
- package/src/media/functional/functional-basic/functions/createElement/createElement.ru.mdx +2 -0
- package/src/media/functional/functional-basic/functions/createElement/createElement.vi.mdx +2 -0
- package/src/media/functional/functional-basic/functions/encodeAttribute/encodeAttribute.en.mdx +1 -3
- package/src/media/functional/functional-basic/functions/encodeAttribute/encodeAttribute.ru.mdx +1 -3
- package/src/media/functional/functional-basic/functions/encodeAttribute/encodeAttribute.vi.mdx +1 -3
- package/src/media/functional/functional-basic/functions/executeFunction/executeFunction.en.mdx +13 -10
- package/src/media/functional/functional-basic/functions/executeFunction/executeFunction.ru.mdx +14 -11
- package/src/media/functional/functional-basic/functions/executeFunction/executeFunction.vi.mdx +12 -9
- package/src/media/functional/functional-basic/functions/executePromise/executePromise.en.mdx +14 -13
- package/src/media/functional/functional-basic/functions/executePromise/executePromise.ru.mdx +15 -14
- package/src/media/functional/functional-basic/functions/executePromise/executePromise.vi.mdx +14 -13
- package/src/media/functional/functional-basic/functions/forEach/forEach.en.mdx +1 -1
- package/src/media/functional/functional-basic/functions/forEach/forEach.ru.mdx +1 -1
- package/src/media/functional/functional-basic/functions/forEach/forEach.vi.mdx +1 -1
- package/src/media/functional/functional-basic/functions/frame/frame.en.mdx +7 -4
- package/src/media/functional/functional-basic/functions/frame/frame.ru.mdx +6 -3
- package/src/media/functional/functional-basic/functions/frame/frame.vi.mdx +7 -4
- package/src/media/functional/functional-basic/functions/getArrayHighlightMatch/getArrayHighlightMatch.en.mdx +34 -0
- package/src/media/functional/functional-basic/functions/getArrayHighlightMatch/getArrayHighlightMatch.ru.mdx +34 -0
- package/src/media/functional/functional-basic/functions/getArrayHighlightMatch/getArrayHighlightMatch.vi.mdx +35 -0
- package/src/media/functional/functional-basic/functions/getCurrentDate/getCurrentDate.en.mdx +2 -0
- package/src/media/functional/functional-basic/functions/getCurrentDate/getCurrentDate.ru.mdx +2 -0
- package/src/media/functional/functional-basic/functions/getCurrentDate/getCurrentDate.vi.mdx +2 -0
- package/src/media/functional/functional-basic/functions/getCurrentTime/getCurrentTime.en.mdx +21 -0
- package/src/media/functional/functional-basic/functions/getCurrentTime/getCurrentTime.ru.mdx +21 -0
- package/src/media/functional/functional-basic/functions/getCurrentTime/getCurrentTime.vi.mdx +21 -0
- package/src/media/functional/functional-basic/functions/getElementId/getElementId.en.mdx +17 -3
- package/src/media/functional/functional-basic/functions/getElementId/getElementId.ru.mdx +17 -3
- package/src/media/functional/functional-basic/functions/getElementId/getElementId.vi.mdx +18 -4
- package/src/media/functional/functional-basic/functions/getElementSafeScript/getElementSafeScript.en.mdx +31 -0
- package/src/media/functional/functional-basic/functions/getElementSafeScript/getElementSafeScript.ru.mdx +31 -0
- package/src/media/functional/functional-basic/functions/getElementSafeScript/getElementSafeScript.vi.mdx +31 -0
- package/src/media/functional/functional-basic/functions/getOnlyText/getOnlyText.en.mdx +25 -0
- package/src/media/functional/functional-basic/functions/getOnlyText/getOnlyText.ru.mdx +25 -0
- package/src/media/functional/functional-basic/functions/getOnlyText/getOnlyText.vi.mdx +25 -0
- package/src/media/functional/functional-basic/functions/getSearchExp/getSearchExp.en.mdx +11 -4
- package/src/media/functional/functional-basic/functions/getSearchExp/getSearchExp.ru.mdx +14 -7
- package/src/media/functional/functional-basic/functions/getSearchExp/getSearchExp.vi.mdx +13 -6
- package/src/media/functional/functional-basic/functions/getSeparatingSearchExp/getSeparatingSearchExp.en.mdx +3 -2
- package/src/media/functional/functional-basic/functions/getSeparatingSearchExp/getSeparatingSearchExp.ru.mdx +3 -2
- package/src/media/functional/functional-basic/functions/getSeparatingSearchExp/getSeparatingSearchExp.vi.mdx +3 -2
- package/src/media/functional/functional-basic/functions/toNumber/toNumber.en.mdx +25 -9
- package/src/media/functional/functional-basic/functions/toNumber/toNumber.ru.mdx +25 -9
- package/src/media/functional/functional-basic/functions/toNumber/toNumber.vi.mdx +25 -9
- package/src/media/functional/functional-basic/functions/toString/toString.en.mdx +28 -0
- package/src/media/functional/functional-basic/functions/toString/toString.ru.mdx +28 -0
- package/src/media/functional/functional-basic/functions/toString/toString.vi.mdx +28 -0
- package/src/media/functional/ui/about/about.en.mdx +45 -0
- package/src/media/functional/ui/about/about.ru.mdx +45 -0
- package/src/media/functional/ui/about/about.vi.mdx +45 -0
- package/src/media/functional/ui/component/component.en.mdx +104 -0
- package/src/media/functional/ui/component/component.ru.mdx +106 -0
- package/src/media/functional/ui/component/component.vi.mdx +104 -0
- package/src/media/functional/ui/setup/setup.en.mdx +72 -0
- package/src/media/functional/ui/setup/setup.ru.mdx +72 -0
- package/src/media/functional/ui/setup/setup.vi.mdx +72 -0
- package/src/media/functional/ui/wiki-data.en.mdx +114 -0
- package/src/media/functional/ui/wiki-data.ru.mdx +114 -0
- package/src/media/functional/ui/wiki-data.vi.mdx +114 -0
|
@@ -21,8 +21,8 @@ import {Meta} from '@storybook/addon-docs/blocks'
|
|
|
21
21
|
### Ограничения дженериков (Generic Constraints)
|
|
22
22
|
|
|
23
23
|
- `Options extends FormattersOptionsList` — тип параметров форматирования.
|
|
24
|
-
- `List extends
|
|
25
|
-
- `Item extends
|
|
24
|
+
- `List extends FormattersListProp` — тип входных данных (массив или один элемент).
|
|
25
|
+
- `Item extends FormattersItemProp<List>` — тип одного элемента в списке.
|
|
26
26
|
|
|
27
27
|
**Параметры:**
|
|
28
28
|
- `options: Options` — параметры форматирования для каждого столбца/свойства.
|
|
@@ -44,31 +44,17 @@ const options = {
|
|
|
44
44
|
user: {
|
|
45
45
|
type: 'name',
|
|
46
46
|
options: { lastPropName: 'surname', firstPropName: 'name' }
|
|
47
|
-
},
|
|
48
|
-
weight: {
|
|
49
|
-
type: 'unit',
|
|
50
|
-
options: { unit: 'kilogram' }
|
|
51
|
-
},
|
|
52
|
-
count: {
|
|
53
|
-
type: 'plural',
|
|
54
|
-
options: { words: 'яблоко|яблока|яблок' }
|
|
55
|
-
},
|
|
56
|
-
status: {
|
|
57
|
-
transformation: (value: number) => value === 1 ? 'Активен' : 'Неактивен'
|
|
58
47
|
}
|
|
59
48
|
}
|
|
60
49
|
|
|
61
|
-
// 2. Исходные данные
|
|
50
|
+
// 2. Исходные данные
|
|
62
51
|
const data = [
|
|
63
52
|
{
|
|
64
53
|
price: 100,
|
|
65
54
|
currency: 'RUB',
|
|
66
55
|
created: '2024-03-07T12:00:00',
|
|
67
56
|
name: 'Иван',
|
|
68
|
-
surname: 'Иванов'
|
|
69
|
-
weight: 75,
|
|
70
|
-
count: 5,
|
|
71
|
-
status: 1
|
|
57
|
+
surname: 'Иванов'
|
|
72
58
|
}
|
|
73
59
|
]
|
|
74
60
|
|
|
@@ -76,93 +62,95 @@ const data = [
|
|
|
76
62
|
const formatter = new Formatters(options, data)
|
|
77
63
|
```
|
|
78
64
|
|
|
79
|
-
##
|
|
65
|
+
## Методы
|
|
80
66
|
|
|
81
|
-
###
|
|
67
|
+
### Обработка
|
|
68
|
+
- `to(): FormattersReturn<List, Options>` — Обрабатывает данные и возвращает результат. Если на вход был массив, возвращает новый массив обогащенных элементов. Если был один элемент — один объект. Добавляет свойства с суффиксом `Format`.
|
|
82
69
|
|
|
83
|
-
|
|
70
|
+
### Настройка
|
|
71
|
+
- `setList(list?: List): this` — Обновляет данные для форматирования. Поддерживает чейнинг.
|
|
84
72
|
|
|
85
|
-
|
|
73
|
+
### Информация
|
|
74
|
+
- `is(): boolean` — Проверяет, установлены ли данные для обработки.
|
|
75
|
+
- `isArray(): boolean` — Являются ли текущие данные массивом.
|
|
76
|
+
- `length(): number` — Возвращает количество записей в списке.
|
|
77
|
+
- `getList(): FormattersList<Item>` — Возвращает текущий список в виде массива.
|
|
78
|
+
- `getOptions(): Options` — Возвращает текущую конфигурацию форматирования.
|
|
79
|
+
|
|
80
|
+
## Типы и параметры форматирования
|
|
81
|
+
|
|
82
|
+
Конфигурация `FormattersOptionsList` — это словарь, где ключи соответствуют именам свойств в данных (поддерживается точечная нотация `path.to.prop`), а значения — объекту `FormattersOptionsItem`.
|
|
83
|
+
|
|
84
|
+
### Общая структура `FormattersOptionsItem`
|
|
85
|
+
- `type?: FormattersType` — Тип форматировщика.
|
|
86
|
+
- `transformation?: (value, item, options) => string` — Кастомная функция преобразования.
|
|
87
|
+
- `options?: Options` — Объект параметров, структура которого зависит от выбранного `type`.
|
|
88
|
+
|
|
89
|
+
### Подробное описание типов
|
|
90
|
+
|
|
91
|
+
#### 1. Валюта (`currency`)
|
|
92
|
+
Используется для локализованного отображения денежных значений.
|
|
93
|
+
- `currencyPropName?: string` — Имя свойства в элементе, из которого берется код валюты (по умолчанию `currency`).
|
|
94
|
+
- `options?: string | Intl.NumberFormatOptions` — Можно передать фиксированный код (например, `'USD'`) или объект настроек `Intl.NumberFormat`.
|
|
95
|
+
- `numberOnly?: boolean` — Если `true`, возвращает только отформатированное число без символа валюты.
|
|
96
|
+
|
|
97
|
+
#### 2. Дата (`date`)
|
|
98
|
+
Форматирование дат и времени через `GeoIntl`.
|
|
99
|
+
- `type?: GeoDate` — Предустановленный формат:
|
|
100
|
+
- `full` — Полная дата и время.
|
|
101
|
+
- `datetime` — Дата и время (без секунд).
|
|
102
|
+
- `date` — Только дата.
|
|
103
|
+
- `time` — Только время.
|
|
104
|
+
- `year-month`, `year`, `month`, `day`, `day-month`, `hour-minute`.
|
|
105
|
+
- `options?: Intl.DateTimeFormatOptions` — Стандартные параметры `Intl` (например, `month: 'long'`).
|
|
106
|
+
- `hour24?: boolean` — Если `true`, принудительно включает 24-часовой режим.
|
|
107
|
+
|
|
108
|
+
#### 3. Имя (`name`)
|
|
109
|
+
Склеивает ФИО в правильном порядке.
|
|
110
|
+
- `lastPropName?: string` — Поле для фамилии (по умолчанию `lastName`).
|
|
111
|
+
- `firstPropName?: string` — Поле для имени (по умолчанию `firstName`).
|
|
112
|
+
- `surname?: string` — Поле для отчества (по умолчанию `surname`).
|
|
113
|
+
- `short?: boolean` — Если `true`, выводит фамилию и инициалы (например, «Иванов И. И.»).
|
|
114
|
+
|
|
115
|
+
#### 4. Число (`number`)
|
|
116
|
+
Обычное форматирование чисел с разделением разрядов.
|
|
117
|
+
- `options?: Intl.NumberFormatOptions` — Параметры `Intl` (количество знаков после запятой, стиль и т.д.).
|
|
118
|
+
|
|
119
|
+
#### 5. Множественное число (`plural`)
|
|
120
|
+
Выбор правильной формы слова в зависимости от числа.
|
|
121
|
+
- `words: string` — Формы слова через разделитель `|`.
|
|
122
|
+
- Для русского: `"яблоко|яблока|яблок"`.
|
|
123
|
+
- Для английского: `"apple|apples"`.
|
|
124
|
+
- `options?: Intl.PluralRulesOptions` — Настройки правил плюрализации.
|
|
125
|
+
- `optionsNumber?: Intl.NumberFormatOptions` — Настройки форматирования самого числа, которое выводится перед словом.
|
|
126
|
+
|
|
127
|
+
#### 6. Единица измерения (`unit`)
|
|
128
|
+
Добавление единиц измерения (км, кг, л).
|
|
129
|
+
- `unit: string` — Код единицы измерения (например, `'kilometer'`, `'kilogram'`, `'liter'`).
|
|
130
|
+
- `options?: Intl.NumberFormatOptions` — Параметры форматирования числовой части.
|
|
131
|
+
|
|
132
|
+
## Примеры
|
|
133
|
+
|
|
134
|
+
### Использование точечной нотации (Dot Notation)
|
|
135
|
+
```typescript
|
|
136
|
+
const options = {
|
|
137
|
+
'user.profile.age': { type: 'number' }
|
|
138
|
+
}
|
|
139
|
+
const data = { user: { profile: { age: 25 } } }
|
|
140
|
+
const formatter = new Formatters(options, data)
|
|
86
141
|
|
|
87
|
-
```javascript
|
|
88
142
|
const result = formatter.to()
|
|
89
|
-
|
|
90
|
-
Результат (если массив): [
|
|
91
|
-
{
|
|
92
|
-
id: 101,
|
|
93
|
-
price: 100,
|
|
94
|
-
currency: 'RUB',
|
|
95
|
-
priceFormat: '100,00 ₽',
|
|
96
|
-
status: 1,
|
|
97
|
-
statusFormat: 'Активен',
|
|
98
|
-
...
|
|
99
|
-
}
|
|
100
|
-
]
|
|
101
|
-
|
|
102
|
-
Результат (если один объект): {
|
|
103
|
-
price: 100,
|
|
104
|
-
priceFormat: '100,00 ₽',
|
|
105
|
-
...
|
|
106
|
-
}
|
|
107
|
-
*/
|
|
143
|
+
// result.userProfileAgeFormat === "25"
|
|
108
144
|
```
|
|
109
145
|
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
- `is(): boolean` — Проверяет, установлен ли список/элемент.
|
|
113
|
-
- `isArray(): boolean` — Проверяет, являются ли текущие данные массивом.
|
|
114
|
-
- `length(): number` — Возвращает количество записей в списке.
|
|
115
|
-
- `getList(): Item[]` — Возвращает текущий список данных в виде массива.
|
|
116
|
-
- `getOptions(): Options` — Возвращает текущую карту конфигурации форматирования.
|
|
117
|
-
- `setList(list?: List): this` — Обновляет данные для форматирования и возвращает экземпляр класса для цепочки вызовов.
|
|
118
|
-
|
|
119
|
-
## Структура конфигурации
|
|
120
|
-
|
|
121
|
-
Объект конфигурации, передаваемый в конструктор, представляет собой карту, где каждый ключ соответствует имени свойства в ваших данных. Каждое значение должно соответствовать структуре `FormattersOptionsItem`.
|
|
122
|
-
|
|
123
|
-
### Основная структура элемента
|
|
124
|
-
|
|
146
|
+
### Кастомная трансформация
|
|
125
147
|
```typescript
|
|
126
|
-
{
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
// 3. Или используйте собственную функцию (перекрывает логику типа)
|
|
134
|
-
transformation: (value, item, options) => string
|
|
148
|
+
const options = {
|
|
149
|
+
status: {
|
|
150
|
+
// Пользовательская функция имеет приоритет над type
|
|
151
|
+
transformation: (value, item) => {
|
|
152
|
+
return value === 'active' ? `✅ ${item.name} в сети` : '❌ Оффлайн'
|
|
153
|
+
}
|
|
154
|
+
}
|
|
135
155
|
}
|
|
136
156
|
```
|
|
137
|
-
|
|
138
|
-
## Специфичные параметры
|
|
139
|
-
|
|
140
|
-
Ниже приведены параметры, доступные внутри свойства **`options`** для каждого типа.
|
|
141
|
-
|
|
142
|
-
### Валюта (`currency`)
|
|
143
|
-
- `currencyPropName?: string` — Свойство в элементе, содержащее код валюты (по умолчанию `item.currency`).
|
|
144
|
-
- `options?: string | Intl.NumberFormatOptions` — Фиксированный код валюты или полные параметры `Intl`.
|
|
145
|
-
- `numberOnly?: boolean` — Если `true`, возвращает только отформатированное число без символа.
|
|
146
|
-
|
|
147
|
-
### Дата (`date`)
|
|
148
|
-
- `type?: GeoDate` — Предустановленный тип: `full`, `datetime`, `date`, `year-month`, `year`, `month`, `day`, `day-month`, `time`, `hour-minute`, `hour`, `minute`, `second`.
|
|
149
|
-
- `options?: Intl.DateTimeFormatOptions['month'] | Intl.DateTimeFormatOptions` — Дополнительные параметры `Intl` или стиль месяца.
|
|
150
|
-
- `hour24?: boolean` — Принудительно использует 24-часовой формат, если `true`.
|
|
151
|
-
|
|
152
|
-
### Имя (`name`)
|
|
153
|
-
- `lastPropName?: string` — Поле для фамилии (по умолчанию: `lastName`).
|
|
154
|
-
- `firstPropName?: string` — Поле для имени (по умолчанию: `firstName`).
|
|
155
|
-
- `surname?: string` — Поле для отчества (по умолчанию: `surname`).
|
|
156
|
-
- `short?: boolean` — Использовать ли краткий формат (инициалы).
|
|
157
|
-
|
|
158
|
-
### Число (`number`)
|
|
159
|
-
- `options?: Intl.NumberFormatOptions` — Стандартные параметры чисел `Intl`.
|
|
160
|
-
|
|
161
|
-
### Множественное число (`plural`)
|
|
162
|
-
- `words: string` — Формы слов, разделенные `|` (например, `"яблоко|яблока|яблок"`).
|
|
163
|
-
- `options?: Intl.PluralRulesOptions` — Настройки правил множественного числа.
|
|
164
|
-
- `optionsNumber?: Intl.NumberFormatOptions` — Форматирование самого числа.
|
|
165
|
-
|
|
166
|
-
### Единица измерения (`unit`)
|
|
167
|
-
- `unit: string | Intl.NumberFormatOptions` — Единица измерения для отображения (например, `'kilometer'`, `'kilogram'`).
|
|
168
|
-
|
|
@@ -4,34 +4,34 @@ import {Meta} from '@storybook/addon-docs/blocks'
|
|
|
4
4
|
|
|
5
5
|
# Lớp Formatters
|
|
6
6
|
|
|
7
|
-
Một lớp chuyên dụng để định dạng danh sách dữ liệu dựa trên cấu hình được cung cấp. Nó đóng vai trò
|
|
7
|
+
Một lớp chuyên dụng để định dạng danh sách dữ liệu dựa trên cấu hình được cung cấp. Nó đóng vai trò là cầu nối giữa dữ liệu thô và các chuỗi đã được bản địa hóa, dễ đọc, sử dụng singleton `GeoIntl` để định dạng nhất quán trên các ngôn ngữ khác nhau.
|
|
8
8
|
|
|
9
|
-
##
|
|
9
|
+
## Các tính năng chính
|
|
10
10
|
|
|
11
|
-
- **Cấu hình khai báo** —
|
|
12
|
-
- **Hỗ trợ nhiều
|
|
13
|
-
- **
|
|
14
|
-
- **
|
|
15
|
-
- **Tự động tạo khóa
|
|
11
|
+
- **Cấu hình khai báo** — Xác định các quy tắc định dạng một lần và áp dụng chúng cho toàn bộ tập dữ liệu.
|
|
12
|
+
- **Hỗ trợ nhiều loại** — Hỗ trợ tích hợp cho tiền tệ, ngày tháng, tên, số, số nhiều và đơn vị đo lường.
|
|
13
|
+
- **Chuyển đổi tùy chỉnh** — Khả năng cung cấp các hàm riêng của bạn cho các nhu cầu định dạng duy nhất.
|
|
14
|
+
- **Typing** — Hỗ trợ TypeScript đầy đủ cho các mục, tham số và danh sách đã định dạng kết quả.
|
|
15
|
+
- **Tự động tạo khóa** — Tự động thêm các giá trị đã định dạng vào các mục với hậu tố `Format` (ví dụ: `price` trở thành `priceFormat`).
|
|
16
16
|
|
|
17
17
|
## Khởi tạo
|
|
18
18
|
|
|
19
|
-
Để khởi tạo đối tượng, hãy gọi
|
|
19
|
+
Để khởi tạo đối tượng, hãy gọi constructor `Formatters(options, list)`.
|
|
20
20
|
|
|
21
|
-
###
|
|
21
|
+
### Các ràng buộc Generic (Generic Constraints)
|
|
22
22
|
|
|
23
|
-
- `Options extends FormattersOptionsList` — kiểu
|
|
24
|
-
- `List extends
|
|
25
|
-
- `Item extends
|
|
23
|
+
- `Options extends FormattersOptionsList` — kiểu tham số định dạng.
|
|
24
|
+
- `List extends FormattersListProp` — kiểu dữ liệu đầu vào (mảng hoặc một mục).
|
|
25
|
+
- `Item extends FormattersItemProp<List>` — kiểu của một mục duy nhất trong danh sách.
|
|
26
26
|
|
|
27
27
|
**Tham số:**
|
|
28
|
-
- `options: Options` —
|
|
29
|
-
- `list?: List` — danh sách
|
|
28
|
+
- `options: Options` — tham số định dạng cho mỗi cột/thuộc tính.
|
|
29
|
+
- `list?: List` — danh sách dữ liệu ban đầu để định dạng.
|
|
30
30
|
|
|
31
31
|
```typescript
|
|
32
32
|
import { Formatters } from '@dxtmisha/functional-basic'
|
|
33
33
|
|
|
34
|
-
// 1. Xác định các
|
|
34
|
+
// 1. Xác định các tham số định dạng
|
|
35
35
|
const options = {
|
|
36
36
|
price: {
|
|
37
37
|
type: 'currency',
|
|
@@ -44,31 +44,17 @@ const options = {
|
|
|
44
44
|
user: {
|
|
45
45
|
type: 'name',
|
|
46
46
|
options: { lastPropName: 'surname', firstPropName: 'name' }
|
|
47
|
-
},
|
|
48
|
-
weight: {
|
|
49
|
-
type: 'unit',
|
|
50
|
-
options: { unit: 'kilogram' }
|
|
51
|
-
},
|
|
52
|
-
count: {
|
|
53
|
-
type: 'plural',
|
|
54
|
-
options: { words: 'quả táo|quả táo' }
|
|
55
|
-
},
|
|
56
|
-
status: {
|
|
57
|
-
transformation: (value: number) => value === 1 ? 'Đang hoạt động' : 'Ngừng hoạt động'
|
|
58
47
|
}
|
|
59
48
|
}
|
|
60
49
|
|
|
61
|
-
// 2. Dữ liệu
|
|
50
|
+
// 2. Dữ liệu thô
|
|
62
51
|
const data = [
|
|
63
52
|
{
|
|
64
53
|
price: 100,
|
|
65
54
|
currency: 'VND',
|
|
66
55
|
created: '2024-03-07T12:00:00',
|
|
67
|
-
name: '
|
|
68
|
-
surname: 'Nguyễn'
|
|
69
|
-
weight: 75,
|
|
70
|
-
count: 5,
|
|
71
|
-
status: 1
|
|
56
|
+
name: 'An',
|
|
57
|
+
surname: 'Nguyễn'
|
|
72
58
|
}
|
|
73
59
|
]
|
|
74
60
|
|
|
@@ -76,93 +62,95 @@ const data = [
|
|
|
76
62
|
const formatter = new Formatters(options, data)
|
|
77
63
|
```
|
|
78
64
|
|
|
79
|
-
##
|
|
80
|
-
|
|
81
|
-
### `to`
|
|
65
|
+
## Các phương thức
|
|
82
66
|
|
|
83
|
-
Xử lý
|
|
67
|
+
### Xử lý
|
|
68
|
+
- `to(): FormattersReturn<List, Options>` — Xử lý dữ liệu và trả về kết quả. Nếu đầu vào là một mảng, trả về một mảng mới gồm các mục đã được làm giàu. Nếu là một mục duy nhất — một đối tượng duy nhất. Thêm các thuộc tính với hậu tố `Format`.
|
|
84
69
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
```javascript
|
|
88
|
-
const result = formatter.to()
|
|
89
|
-
/*
|
|
90
|
-
Kết quả (nếu là mảng): [
|
|
91
|
-
{
|
|
92
|
-
id: 101,
|
|
93
|
-
price: 100,
|
|
94
|
-
currency: 'VND',
|
|
95
|
-
priceFormat: '100.000 ₫',
|
|
96
|
-
status: 1,
|
|
97
|
-
statusFormat: 'Đang hoạt động',
|
|
98
|
-
...
|
|
99
|
-
}
|
|
100
|
-
]
|
|
70
|
+
### Cấu hình
|
|
71
|
+
- `setList(list?: List): this` — Cập nhật dữ liệu để định dạng. Hỗ trợ nối chuỗi.
|
|
101
72
|
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
...
|
|
106
|
-
}
|
|
107
|
-
*/
|
|
108
|
-
```
|
|
109
|
-
|
|
110
|
-
## Truy xuất và quản lý dữ liệu
|
|
111
|
-
|
|
112
|
-
- `is(): boolean` — Kiểm tra xem danh sách/mục đã được thiết lập chưa.
|
|
113
|
-
- `isArray(): boolean` — Kiểm tra xem dữ liệu hiện tại có phải là một mảng không.
|
|
73
|
+
### Thông tin
|
|
74
|
+
- `is(): boolean` — Kiểm tra xem dữ liệu đã được thiết lập để xử lý hay chưa.
|
|
75
|
+
- `isArray(): boolean` — Liệu dữ liệu hiện tại có phải là một mảng hay không.
|
|
114
76
|
- `length(): number` — Trả về số lượng bản ghi trong danh sách.
|
|
115
|
-
- `getList(): Item
|
|
77
|
+
- `getList(): FormattersList<Item>` — Trả về danh sách hiện tại dưới dạng mảng.
|
|
116
78
|
- `getOptions(): Options` — Trả về cấu hình định dạng hiện tại.
|
|
117
|
-
- `setList(list?: List): this` — Cập nhật dữ liệu cần định dạng và trả về thực thể để gọi chuỗi lệnh.
|
|
118
|
-
|
|
119
|
-
## Cấu trúc cấu hình
|
|
120
|
-
|
|
121
|
-
Đối tượng cấu hình được truyền vào hàm khởi tạo là một bản đồ (map), nơi mỗi khóa tương ứng với tên một thuộc tính trong dữ liệu của bạn. Mỗi giá trị phải tuân theo cấu trúc `FormattersOptionsItem`.
|
|
122
|
-
|
|
123
|
-
### Cấu trúc mục chính
|
|
124
79
|
|
|
80
|
+
## Các loại định dạng và Tham số
|
|
81
|
+
|
|
82
|
+
Cấu hình `FormattersOptionsList` là một từ điển trong đó các khóa tương ứng với tên thuộc tính trong dữ liệu (hỗ trợ ký hiệu chấm `path.to.prop`) và các giá trị là đối tượng `FormattersOptionsItem`.
|
|
83
|
+
|
|
84
|
+
### Cấu trúc chung của `FormattersOptionsItem`
|
|
85
|
+
- `type?: FormattersType` — Loại định dạng.
|
|
86
|
+
- `transformation?: (value, item, options) => string` — Hàm chuyển đổi tùy chỉnh.
|
|
87
|
+
- `options?: Options` — Đối tượng tham số, cấu trúc phụ thuộc vào `type` đã chọn.
|
|
88
|
+
|
|
89
|
+
### Mô tả chi tiết các loại
|
|
90
|
+
|
|
91
|
+
#### 1. Tiền tệ (`currency`)
|
|
92
|
+
Được sử dụng để hiển thị các giá trị tiền tệ đã được bản địa hóa.
|
|
93
|
+
- `currencyPropName?: string` — Tên thuộc tính trong mục chứa mã tiền tệ (mặc định là `currency`).
|
|
94
|
+
- `options?: string | Intl.NumberFormatOptions` — Bạn có thể truyền một mã cố định (ví dụ: `'VND'`) hoặc một đối tượng cài đặt `Intl.NumberFormat`.
|
|
95
|
+
- `numberOnly?: boolean` — Nếu `true`, chỉ trả về số đã định dạng mà không có biểu tượng tiền tệ.
|
|
96
|
+
|
|
97
|
+
#### 2. Ngày tháng (`date`)
|
|
98
|
+
Định dạng ngày và giờ thông qua `GeoIntl`.
|
|
99
|
+
- `type?: GeoDate` — Định dạng đặt trước:
|
|
100
|
+
- `full` — Ngày và giờ đầy đủ.
|
|
101
|
+
- `datetime` — Ngày và giờ (không có giây).
|
|
102
|
+
- `date` — Chỉ ngày.
|
|
103
|
+
- `time` — Chỉ giờ.
|
|
104
|
+
- `year-month`, `year`, `month`, `day`, `day-month`, `hour-minute`.
|
|
105
|
+
- `options?: Intl.DateTimeFormatOptions` — Các tham số `Intl` tiêu chuẩn (ví dụ: `month: 'long'`).
|
|
106
|
+
- `hour24?: boolean` — Nếu `true`, buộc sử dụng chế độ 24 giờ.
|
|
107
|
+
|
|
108
|
+
#### 3. Tên (`name`)
|
|
109
|
+
Kết hợp các phần của tên đầy đủ theo đúng thứ tự.
|
|
110
|
+
- `lastPropName?: string` — Trường cho họ (mặc định là `lastName`).
|
|
111
|
+
- `firstPropName?: string` — Trường cho tên (mặc định là `firstName`).
|
|
112
|
+
- `surname?: string` — Trường cho tên đệm (mặc định là `surname`).
|
|
113
|
+
- `short?: boolean` — Nếu `true`, xuất họ và chữ cái đầu (ví dụ: "Nguyễn A.").
|
|
114
|
+
|
|
115
|
+
#### 4. Số (`number`)
|
|
116
|
+
Định dạng số tiêu chuẩn với phân tách chữ số.
|
|
117
|
+
- `options?: Intl.NumberFormatOptions` — Các tham số `Intl` (số chữ số thập phân, kiểu dáng, v.v.).
|
|
118
|
+
|
|
119
|
+
#### 5. Số nhiều (`plural`)
|
|
120
|
+
Chọn dạng từ đúng tùy thuộc vào số lượng.
|
|
121
|
+
- `words: string` — Các dạng từ thông qua dấu phân cách `|`.
|
|
122
|
+
- Cho tiếng Việt: `"quả táo|những quả táo"`.
|
|
123
|
+
- Cho tiếng Anh: `"apple|apples"`.
|
|
124
|
+
- `options?: Intl.PluralRulesOptions` — Cài đặt quy tắc số nhiều.
|
|
125
|
+
- `optionsNumber?: Intl.NumberFormatOptions` — Cài đặt định dạng cho chính con số được xuất trước từ.
|
|
126
|
+
|
|
127
|
+
#### 6. Đơn vị đo lường (`unit`)
|
|
128
|
+
Thêm các đơn vị đo lường (km, kg, l).
|
|
129
|
+
- `unit: string` — Mã đơn vị đo lường (ví dụ: `'kilometer'`, `'kilogram'`, `'liter'`).
|
|
130
|
+
- `options?: Intl.NumberFormatOptions` — Tham số định dạng cho phần số.
|
|
131
|
+
|
|
132
|
+
## Ví dụ
|
|
133
|
+
|
|
134
|
+
### Sử dụng Dot Notation
|
|
125
135
|
```typescript
|
|
126
|
-
{
|
|
127
|
-
|
|
128
|
-
|
|
136
|
+
const options = {
|
|
137
|
+
'user.profile.age': { type: 'number' }
|
|
138
|
+
}
|
|
139
|
+
const data = { user: { profile: { age: 25 } } }
|
|
140
|
+
const formatter = new Formatters(options, data)
|
|
129
141
|
|
|
130
|
-
|
|
131
|
-
|
|
142
|
+
const result = formatter.to()
|
|
143
|
+
// result.userProfileAgeFormat === "25"
|
|
144
|
+
```
|
|
132
145
|
|
|
133
|
-
|
|
134
|
-
|
|
146
|
+
### Chuyển đổi tùy chỉnh
|
|
147
|
+
```typescript
|
|
148
|
+
const options = {
|
|
149
|
+
status: {
|
|
150
|
+
// Hàm tùy chỉnh có ưu tiên cao hơn type
|
|
151
|
+
transformation: (value, item) => {
|
|
152
|
+
return value === 'active' ? `✅ ${item.name} đang trực tuyến` : '❌ Ngoại tuyến'
|
|
153
|
+
}
|
|
154
|
+
}
|
|
135
155
|
}
|
|
136
156
|
```
|
|
137
|
-
|
|
138
|
-
## Các tham số cụ thể
|
|
139
|
-
|
|
140
|
-
Dưới đây là các tham số có sẵn bên trong thuộc tính **`options`** cho từng kiểu.
|
|
141
|
-
|
|
142
|
-
### Tiền tệ (`currency`)
|
|
143
|
-
- `currencyPropName?: string` — Thuộc tính trong mục chứa mã tiền tệ (mặc định là `item.currency`).
|
|
144
|
-
- `options?: string | Intl.NumberFormatOptions` — Mã tiền tệ cố định hoặc các tùy chọn `Intl` đầy đủ.
|
|
145
|
-
- `numberOnly?: boolean` — Nếu là `true`, chỉ trả về số đã định dạng mà không có ký hiệu tiền tệ.
|
|
146
|
-
|
|
147
|
-
### Ngày tháng (`date`)
|
|
148
|
-
- `type?: GeoDate` — Kiểu thiết lập sẵn: `full`, `datetime`, `date`, `year-month`, `year`, `month`, `day`, `day-month`, `time`, `hour-minute`, `hour`, `minute`, `second`.
|
|
149
|
-
- `options?: Intl.DateTimeFormatOptions['month'] | Intl.DateTimeFormatOptions` — Các tùy chọn ngày tháng tiêu chuẩn của `Intl` hoặc kiểu tháng.
|
|
150
|
-
- `hour24?: boolean` — Kết quả định dạng bắt buộc sử dụng định dạng 24 giờ nếu là `true`.
|
|
151
|
-
|
|
152
|
-
### Tên (`name`)
|
|
153
|
-
- `lastPropName?: string` — Trường cho họ (mặc định: `lastName`).
|
|
154
|
-
- `firstPropName?: string` — Trường cho tên (mặc định: `firstName`).
|
|
155
|
-
- `surname?: string` — Trường cho tên đệm (mặc định: `surname`).
|
|
156
|
-
- `short?: boolean` — Có sử dụng định dạng rút gọn (viết tắt) hay không.
|
|
157
|
-
|
|
158
|
-
### Số (`number`)
|
|
159
|
-
- `options?: Intl.NumberFormatOptions` — Các tùy chọn số tiêu chuẩn của `Intl`.
|
|
160
|
-
|
|
161
|
-
### Số nhiều (`plural`)
|
|
162
|
-
- `words: string` — Các dạng từ cách nhau bởi `|` (ví dụ: `"quả táo|quả táo"`).
|
|
163
|
-
- `options?: Intl.PluralRulesOptions` — Các thiết lập quy tắc số nhiều.
|
|
164
|
-
- `optionsNumber?: Intl.NumberFormatOptions` — Định dạng cho chính con số đó.
|
|
165
|
-
|
|
166
|
-
### Đơn vị (`unit`)
|
|
167
|
-
- `unit: string | Intl.NumberFormatOptions` — Đơn vị cần hiển thị (ví dụ: `'kilometer'`, `'kilogram'`).
|
|
168
|
-
|
|
@@ -8,11 +8,11 @@ A static utility class for centralized management of the application's geographi
|
|
|
8
8
|
|
|
9
9
|
## Key Features
|
|
10
10
|
|
|
11
|
-
- **Auto-Detection** — intelligently identifies the user's locale via
|
|
11
|
+
- **Auto-Detection** — intelligently identifies the user's locale via storage or environment defaults.
|
|
12
12
|
- **Persistence** — utilizes `DataStorage` to save and restore user-selected language and country preferences.
|
|
13
13
|
- **Media Database Integration** — provides access to a comprehensive database of countries and languages from the `@dxtmisha/media` library.
|
|
14
|
-
- **Global Time Management** — centralized setting and retrieval of time zone offsets
|
|
15
|
-
- **Static Access** — all methods are static,
|
|
14
|
+
- **Global Time Management** — centralized setting and retrieval of time zone offsets.
|
|
15
|
+
- **Static Access** — all methods are static, providing a convenient global interface without manual instantiation.
|
|
16
16
|
|
|
17
17
|
## Basic Usage
|
|
18
18
|
|
|
@@ -8,11 +8,11 @@ import {Meta} from '@storybook/addon-docs/blocks'
|
|
|
8
8
|
|
|
9
9
|
## Ключевые особенности
|
|
10
10
|
|
|
11
|
-
- **Автоматическое определение** — интеллектуально определяет локаль
|
|
12
|
-
- **Персистентность** — использует `DataStorage` для сохранения и восстановления
|
|
13
|
-
- **Интеграция с медиа-базой** — предоставляет доступ к
|
|
14
|
-
- **Глобальное управление временем** — централизованная установка и получение смещения часового
|
|
15
|
-
- **Статический доступ** —
|
|
11
|
+
- **Автоматическое определение** — интеллектуально определяет локаль через хранилище или настройки окружения.
|
|
12
|
+
- **Персистентность** — использует `DataStorage` для сохранения и восстановления предпочтений пользователя.
|
|
13
|
+
- **Интеграция с медиа-базой** — предоставляет доступ к базе данных стран и языков из библиотеки `@dxtmisha/media`.
|
|
14
|
+
- **Глобальное управление временем** — централизованная установка и получение смещения часового пояса.
|
|
15
|
+
- **Статический доступ** — удобный глобальный интерфейс без необходимости ручного создания экземпляров.
|
|
16
16
|
|
|
17
17
|
## Базовое использование
|
|
18
18
|
|
|
@@ -8,11 +8,11 @@ Một lớp tiện ích tĩnh (static class) để quản lý tập trung dữ l
|
|
|
8
8
|
|
|
9
9
|
## Tính năng chính
|
|
10
10
|
|
|
11
|
-
- **Tự động phát hiện** — xác định thông minh địa phương (locale)
|
|
12
|
-
- **Lưu trữ lâu dài** — sử dụng `DataStorage` để lưu và khôi phục các tùy chọn
|
|
13
|
-
- **Tích hợp cơ sở dữ liệu truyền thông** — cung cấp quyền truy cập vào cơ sở dữ liệu
|
|
14
|
-
- **Quản lý thời gian toàn cầu** — thiết lập và truy xuất tập trung các độ lệch múi
|
|
15
|
-
- **Truy cập tĩnh** —
|
|
11
|
+
- **Tự động phát hiện** — xác định thông minh địa phương (locale) thông qua bộ nhớ hoặc mặc định của môi trường.
|
|
12
|
+
- **Lưu trữ lâu dài** — sử dụng `DataStorage` để lưu và khôi phục các tùy chọn của người dùng.
|
|
13
|
+
- **Tích hợp cơ sở dữ liệu truyền thông** — cung cấp quyền truy cập vào cơ sở dữ liệu quốc gia và ngôn ngữ từ thư viện `@dxtmisha/media`.
|
|
14
|
+
- **Quản lý thời gian toàn cầu** — thiết lập và truy xuất tập trung các độ lệch múi giờ.
|
|
15
|
+
- **Truy cập tĩnh** — cung cấp giao diện toàn cầu thuận tiện mà không cần khởi tạo thủ công.
|
|
16
16
|
|
|
17
17
|
## Cách sử dụng cơ bản
|
|
18
18
|
|