@dxtmisha/wiki 0.39.7 → 0.56.0
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-149Ahniv.js} +4 -4
- package/dist/library.js +1 -1
- package/dist/media/descriptions/wikiDescriptionsArea.d.ts +7 -0
- package/dist/media/descriptions/wikiDescriptionsClientOnly.d.ts +7 -0
- package/dist/media/descriptions/wikiDescriptionsContainer.d.ts +7 -0
- package/dist/media/descriptions/wikiDescriptionsHeader.d.ts +7 -0
- package/dist/media/descriptions/wikiDescriptionsPageArea.d.ts +7 -0
- package/dist/media/mdx/Area/wikiMdxArea.d.ts +7 -0
- package/dist/media/mdx/ClientOnly/wikiMdxClientOnly.d.ts +7 -0
- package/dist/media/mdx/Container/wikiMdxContainer.d.ts +7 -0
- package/dist/media/mdx/Header/wikiMdxHeader.d.ts +7 -0
- package/dist/media/mdx/PageArea/wikiMdxPageArea.d.ts +7 -0
- package/dist/media.d.ts +1 -1
- package/dist/media.js +127 -68
- package/dist/storybook.js +2707 -1841
- package/dist/{wikiDescriptions-Cv4WzSNL.js → wikiDescriptions-7XaHU3Yk.js} +182 -0
- package/package.json +1 -1
- package/src/media/functional/functional/composables/useApiAsyncRef/useApiAsyncRef.en.mdx +43 -0
- package/src/media/functional/functional/composables/useApiAsyncRef/useApiAsyncRef.ru.mdx +43 -0
- package/src/media/functional/functional/composables/useApiAsyncRef/useApiAsyncRef.vi.mdx +41 -0
- package/src/media/functional/functional/composables/useApiRef/useApiRef.en.mdx +20 -4
- package/src/media/functional/functional/composables/useApiRef/useApiRef.ru.mdx +21 -3
- package/src/media/functional/functional/composables/useApiRef/useApiRef.vi.mdx +20 -2
- package/src/media/functional/functional/functions/computedAsync/computedAsync.en.mdx +8 -0
- package/src/media/functional/functional/functions/computedAsync/computedAsync.ru.mdx +8 -0
- package/src/media/functional/functional/functions/computedAsync/computedAsync.vi.mdx +8 -0
- package/src/media/functional/functional/functions/computedEternity/computedEternity.en.mdx +8 -0
- package/src/media/functional/functional/functions/computedEternity/computedEternity.ru.mdx +8 -0
- package/src/media/functional/functional/functions/computedEternity/computedEternity.vi.mdx +8 -0
- 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 +57 -54
- package/src/media/functional/functional-basic/classes/Api/Api.ru.mdx +57 -54
- package/src/media/functional/functional-basic/classes/Api/Api.vi.mdx +57 -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 +106 -51
- package/src/media/functional/functional-basic/classes/ApiInstance/ApiInstance.ru.mdx +107 -52
- package/src/media/functional/functional-basic/classes/ApiInstance/ApiInstance.vi.mdx +103 -49
- 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 +59 -21
- package/src/media/functional/functional-basic/classes/ApiResponse/ApiResponse.ru.mdx +63 -25
- package/src/media/functional/functional-basic/classes/ApiResponse/ApiResponse.vi.mdx +64 -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 +178 -0
- package/src/media/functional/functional-basic/classes/CookieStorage/CookieStorage.ru.mdx +178 -0
- package/src/media/functional/functional-basic/classes/CookieStorage/CookieStorage.vi.mdx +178 -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/Meta/Meta.en.mdx +16 -0
- package/src/media/functional/functional-basic/classes/Meta/Meta.ru.mdx +16 -0
- package/src/media/functional/functional-basic/classes/Meta/Meta.vi.mdx +17 -1
- package/src/media/functional/functional-basic/classes/MetaManager/MetaManager.en.mdx +9 -0
- package/src/media/functional/functional-basic/classes/MetaManager/MetaManager.ru.mdx +9 -0
- package/src/media/functional/functional-basic/classes/MetaManager/MetaManager.vi.mdx +9 -0
- package/src/media/functional/functional-basic/classes/MetaStatic/MetaStatic.en.mdx +79 -0
- package/src/media/functional/functional-basic/classes/MetaStatic/MetaStatic.ru.mdx +79 -0
- package/src/media/functional/functional-basic/classes/MetaStatic/MetaStatic.vi.mdx +79 -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/functional-basic/icons/icons.en.mdx +3 -0
- package/src/media/functional/functional-basic/icons/icons.ru.mdx +3 -0
- package/src/media/functional/functional-basic/icons/icons.vi.mdx +3 -0
- package/src/media/functional/nitro-basic/functions/getInject.en.mdx +27 -0
- package/src/media/functional/nitro-basic/functions/getInject.ru.mdx +27 -0
- package/src/media/functional/nitro-basic/functions/getInject.vi.mdx +20 -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
|
@@ -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
|
|
|
@@ -4,76 +4,119 @@ import {Meta} from '@storybook/addon-docs/blocks'
|
|
|
4
4
|
|
|
5
5
|
# GeoFlag Class
|
|
6
6
|
|
|
7
|
-
A class for working with country flags.
|
|
7
|
+
A class for working with country flags and geographic information. It provides a convenient interface for retrieving flag icons, localized country names, and languages. It uses the `Geo` and `GeoIntl` singletons to correctly resolve data based on the current locale.
|
|
8
8
|
|
|
9
9
|
## Key Features
|
|
10
10
|
|
|
11
|
-
- **Flag Dictionary** —
|
|
12
|
-
- **Localized
|
|
13
|
-
- **National
|
|
14
|
-
- **
|
|
11
|
+
- **Flag Dictionary** — built-in static `flags` list mapping ISO 3166-1 alpha-2 codes to icon names.
|
|
12
|
+
- **Localized Data** — automatic translation of country and language names into the current interface language.
|
|
13
|
+
- **National Support** — the ability to retrieve country names in their "native" language (e.g., "Japan" and "日本" simultaneously).
|
|
14
|
+
- **Scalability** — support for filtering and retrieving full lists for country selectors.
|
|
15
15
|
|
|
16
16
|
## Initialization
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+
To create an instance, use the `GeoFlag(code)` constructor.
|
|
19
19
|
|
|
20
20
|
**Parameters:**
|
|
21
|
-
- `code?: string` —
|
|
21
|
+
- `code?: string` — country or locale code (e.g., `'US'`, `'en-US'`). If not specified, the current locale from the `Geo` system is used.
|
|
22
22
|
|
|
23
23
|
```javascript
|
|
24
24
|
import { GeoFlag } from '@dxtmisha/functional-basic'
|
|
25
25
|
|
|
26
|
-
//
|
|
26
|
+
// With current locale
|
|
27
27
|
const flag = new GeoFlag()
|
|
28
28
|
|
|
29
|
-
//
|
|
29
|
+
// For a specific country
|
|
30
30
|
const usFlag = new GeoFlag('en-US')
|
|
31
31
|
```
|
|
32
32
|
|
|
33
33
|
## Methods
|
|
34
34
|
|
|
35
35
|
### Data Retrieval
|
|
36
|
+
- `get(code?: string): GeoFlagItem | undefined` — Returns a full data object about a country.
|
|
37
|
+
- `getFlag(code?: string): string | undefined` — Returns only the flag icon identifier (e.g., `'f-us'`).
|
|
36
38
|
|
|
37
|
-
|
|
38
|
-
- `
|
|
39
|
-
- `
|
|
40
|
-
- `getNational(codes?: string[]): GeoFlagNational[]` — Similar to `getList`, but additionally contains country names in the country's own language.
|
|
39
|
+
### Lists
|
|
40
|
+
- `getList(codes?: string[]): GeoFlagItem[]` — Returns an array of country data.
|
|
41
|
+
- `getNational(codes?: string[]): GeoFlagNational[]` — Returns a list of countries with national names.
|
|
41
42
|
|
|
42
|
-
###
|
|
43
|
+
### Configuration
|
|
44
|
+
- `setCode(code: string): this` — Changes the base locale for the current instance.
|
|
43
45
|
|
|
44
|
-
|
|
46
|
+
## List Methods
|
|
45
47
|
|
|
46
|
-
|
|
48
|
+
The main difference between the methods lies in the language in which the country and language names are returned:
|
|
47
49
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
import { GeoFlag } from '@dxtmisha/functional-basic'
|
|
50
|
+
* **`getList`** — returns names only in the language set in the class instance (e.g., everything in English).
|
|
51
|
+
* **`getNational`** — returns names in your interface language + adds original names in the country's own language (e.g., "Japan" and "日本").
|
|
51
52
|
|
|
52
|
-
|
|
53
|
-
const item = flag.get()
|
|
53
|
+
### Example of the difference in result:
|
|
54
54
|
|
|
55
|
-
|
|
56
|
-
|
|
55
|
+
```javascript
|
|
56
|
+
const geo = new GeoFlag('en-US') // English language is set
|
|
57
|
+
|
|
58
|
+
// 1. getList returns only the translation
|
|
59
|
+
const list = geo.getList(['JP'])
|
|
60
|
+
/*
|
|
61
|
+
[{ country: 'Japan', ... }]
|
|
62
|
+
*/
|
|
63
|
+
|
|
64
|
+
// 2. getNational returns the translation + original name
|
|
65
|
+
const national = geo.getNational(['JP'])
|
|
66
|
+
/*
|
|
67
|
+
[{
|
|
68
|
+
country: 'Japan',
|
|
69
|
+
nationalCountry: '日本',
|
|
70
|
+
...
|
|
71
|
+
}]
|
|
72
|
+
*/
|
|
57
73
|
```
|
|
58
74
|
|
|
59
|
-
|
|
60
|
-
```javascript
|
|
61
|
-
const flag = new GeoFlag('en-US')
|
|
62
|
-
const countries = flag.getList()
|
|
75
|
+
## Types
|
|
63
76
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
77
|
+
### `GeoFlagItem`
|
|
78
|
+
Basic flag information object.
|
|
79
|
+
- `country`: string — Localized country name.
|
|
80
|
+
- `language`: string — Localized language name.
|
|
81
|
+
- `standard`: string — Full locale standard (e.g., `en-US`).
|
|
82
|
+
- `icon`: string — Flag icon name (prefix `f-`).
|
|
83
|
+
- `label`: string — Display label (matches `country` by default).
|
|
84
|
+
- `value`: string — Country code (ISO alpha-2).
|
|
69
85
|
|
|
70
|
-
###
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
86
|
+
### `GeoFlagNational`
|
|
87
|
+
Extends `GeoFlagItem` with additional fields:
|
|
88
|
+
- `nationalCountry`: string — Country name in its native language.
|
|
89
|
+
- `nationalLanguage`: string — Language name in its native language.
|
|
90
|
+
- `description`: string — Brief description (duplicates `nationalCountry`).
|
|
74
91
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
92
|
+
## Examples
|
|
93
|
+
|
|
94
|
+
### List of Popular Countries with National Names
|
|
95
|
+
```javascript
|
|
96
|
+
const geo = new GeoFlag('en-US')
|
|
97
|
+
const list = geo.getNational(['US', 'CN', 'JP'])
|
|
98
|
+
|
|
99
|
+
/*
|
|
100
|
+
Result:
|
|
101
|
+
[
|
|
102
|
+
{
|
|
103
|
+
country: 'United States',
|
|
104
|
+
nationalCountry: 'United States',
|
|
105
|
+
icon: 'f-us',
|
|
106
|
+
...
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
country: 'China',
|
|
110
|
+
nationalCountry: '中国',
|
|
111
|
+
icon: 'f-cn',
|
|
112
|
+
...
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
country: 'Japan',
|
|
116
|
+
nationalCountry: '日本',
|
|
117
|
+
icon: 'f-jp',
|
|
118
|
+
...
|
|
119
|
+
}
|
|
120
|
+
]
|
|
121
|
+
*/
|
|
79
122
|
```
|
|
@@ -4,76 +4,119 @@ import {Meta} from '@storybook/addon-docs/blocks'
|
|
|
4
4
|
|
|
5
5
|
# Класс GeoFlag
|
|
6
6
|
|
|
7
|
-
Класс для работы с флагами
|
|
7
|
+
Класс для работы с флагами стран и географической информацией. Он предоставляет удобный интерфейс для получения иконок флагов, локализованных названий стран и языков. Использует синглтоны `Geo` и `GeoIntl` для корректного разрешения данных в зависимости от текущей локали.
|
|
8
8
|
|
|
9
9
|
## Ключевые особенности
|
|
10
10
|
|
|
11
|
-
- **Словарь флагов** — встроенный статический
|
|
12
|
-
- **Локализованные
|
|
13
|
-
-
|
|
14
|
-
-
|
|
11
|
+
- **Словарь флагов** — встроенный статический список `flags`, связывающий коды ISO 3166-1 alpha-2 с именами иконок.
|
|
12
|
+
- **Локализованные данные** — автоматический перевод названий стран и языков на язык текущего интерфейса.
|
|
13
|
+
- **Национальная поддержка** — возможность получения названий стран на их «родном» языке (например, «Япония» и «日本» одновременно).
|
|
14
|
+
- **Масштабируемость** — поддержка фильтрации и получения полных списков для селекторов стран.
|
|
15
15
|
|
|
16
16
|
## Инициализация
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+
Для создания экземпляра используйте конструктор `GeoFlag(code)`.
|
|
19
19
|
|
|
20
20
|
**Параметры:**
|
|
21
|
-
- `code?: string` — код страны или локали (например, `'RU'`, `'
|
|
21
|
+
- `code?: string` — код страны или локали (например, `'RU'`, `'en-US'`). Если не указан, используется текущая локаль из системы `Geo`.
|
|
22
22
|
|
|
23
23
|
```javascript
|
|
24
24
|
import { GeoFlag } from '@dxtmisha/functional-basic'
|
|
25
25
|
|
|
26
|
-
//
|
|
26
|
+
// С текущей локалью
|
|
27
27
|
const flag = new GeoFlag()
|
|
28
28
|
|
|
29
|
-
//
|
|
29
|
+
// Для конкретной страны
|
|
30
30
|
const ruFlag = new GeoFlag('ru-RU')
|
|
31
31
|
```
|
|
32
32
|
|
|
33
33
|
## Методы
|
|
34
34
|
|
|
35
35
|
### Получение данных
|
|
36
|
+
- `get(code?: string): GeoFlagItem | undefined` — Возвращает полный объект данных о стране.
|
|
37
|
+
- `getFlag(code?: string): string | undefined` — Возвращает только идентификатор иконки флага (например, `'f-ru'`).
|
|
36
38
|
|
|
37
|
-
|
|
38
|
-
- `
|
|
39
|
-
- `
|
|
40
|
-
- `getNational(codes?: string[]): GeoFlagNational[]` — Аналог `getList`, но дополнительно содержит названия на национальном языке страны.
|
|
39
|
+
### Списки
|
|
40
|
+
- `getList(codes?: string[]): GeoFlagItem[]` — Возвращает массив данных о странах.
|
|
41
|
+
- `getNational(codes?: string[]): GeoFlagNational[]` — Возвращает список стран с национальными названиями.
|
|
41
42
|
|
|
42
|
-
###
|
|
43
|
+
### Настройка
|
|
44
|
+
- `setCode(code: string): this` — Изменяет базовую локаль для текущего экземпляра.
|
|
43
45
|
|
|
44
|
-
|
|
46
|
+
## Методы работы со списками
|
|
45
47
|
|
|
46
|
-
|
|
48
|
+
Основное различие между методами заключается в языке, на котором возвращаются названия стран и языков:
|
|
47
49
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
import { GeoFlag } from '@dxtmisha/functional-basic'
|
|
50
|
+
* **`getList`** — возвращает названия только на том языке, который установлен в экземпляре класса (например, всё на русском).
|
|
51
|
+
* **`getNational`** — возвращает названия на языке вашего интерфейса + добавляет оригинальные названия на языке самой страны (например, «Япония» и «日本»).
|
|
51
52
|
|
|
52
|
-
|
|
53
|
-
const item = flag.get()
|
|
53
|
+
### Пример разницы в результате:
|
|
54
54
|
|
|
55
|
-
|
|
56
|
-
|
|
55
|
+
```javascript
|
|
56
|
+
const geo = new GeoFlag('ru-RU') // Установлен русский язык
|
|
57
|
+
|
|
58
|
+
// 1. getList возвращает только перевод
|
|
59
|
+
const list = geo.getList(['JP'])
|
|
60
|
+
/*
|
|
61
|
+
[{ country: 'Япония', ... }]
|
|
62
|
+
*/
|
|
63
|
+
|
|
64
|
+
// 2. getNational возвращает перевод + оригинальное название
|
|
65
|
+
const national = geo.getNational(['JP'])
|
|
66
|
+
/*
|
|
67
|
+
[{
|
|
68
|
+
country: 'Япония',
|
|
69
|
+
nationalCountry: '日本',
|
|
70
|
+
...
|
|
71
|
+
}]
|
|
72
|
+
*/
|
|
57
73
|
```
|
|
58
74
|
|
|
59
|
-
|
|
60
|
-
```javascript
|
|
61
|
-
const flag = new GeoFlag('ru-RU')
|
|
62
|
-
const countries = flag.getList()
|
|
75
|
+
## Типы
|
|
63
76
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
77
|
+
### `GeoFlagItem`
|
|
78
|
+
Базовый объект информации о флаге.
|
|
79
|
+
- `country`: string — Локализованное название страны.
|
|
80
|
+
- `language`: string — Локализованное название языка.
|
|
81
|
+
- `standard`: string — Полный стандарт локали (например, `ru-RU`).
|
|
82
|
+
- `icon`: string — Имя иконки флага (префикс `f-`).
|
|
83
|
+
- `label`: string — Метка для отображения (по умолчанию совпадает с `country`).
|
|
84
|
+
- `value`: string — Код страны (ISO alpha-2).
|
|
69
85
|
|
|
70
|
-
###
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
86
|
+
### `GeoFlagNational`
|
|
87
|
+
Расширяет `GeoFlagItem` дополнительными полями:
|
|
88
|
+
- `nationalCountry`: string — Название страны на её родном языке.
|
|
89
|
+
- `nationalLanguage`: string — Название языка на родном языке.
|
|
90
|
+
- `description`: string — Краткое описание (дублирует `nationalCountry`).
|
|
74
91
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
92
|
+
## Примеры
|
|
93
|
+
|
|
94
|
+
### Список популярных стран с национальными именами
|
|
95
|
+
```javascript
|
|
96
|
+
const geo = new GeoFlag('ru-RU')
|
|
97
|
+
const list = geo.getNational(['RU', 'CN', 'JP'])
|
|
98
|
+
|
|
99
|
+
/*
|
|
100
|
+
Результат:
|
|
101
|
+
[
|
|
102
|
+
{
|
|
103
|
+
country: 'Россия',
|
|
104
|
+
nationalCountry: 'Россия',
|
|
105
|
+
icon: 'f-ru',
|
|
106
|
+
...
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
country: 'Китай',
|
|
110
|
+
nationalCountry: '中国',
|
|
111
|
+
icon: 'f-cn',
|
|
112
|
+
...
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
country: 'Япония',
|
|
116
|
+
nationalCountry: '日本',
|
|
117
|
+
icon: 'f-jp',
|
|
118
|
+
...
|
|
119
|
+
}
|
|
120
|
+
]
|
|
121
|
+
*/
|
|
79
122
|
```
|