@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
|
@@ -9,10 +9,11 @@ Tiện ích tạo một `RegExp` toàn cục, không phân biệt chữ hoa/thư
|
|
|
9
9
|
Mỗi từ được tách bởi dấu cách, escape và nối với nhau bằng toán tử OR `|`. Điều này hữu ích khi bạn muốn tìm kết quả khớp với ít nhất một trong các từ đã nhập.
|
|
10
10
|
|
|
11
11
|
**Tham số:**
|
|
12
|
-
- `search: string` — Chuỗi tìm kiếm gồm một hoặc nhiều từ phân cách bởi dấu cách
|
|
12
|
+
- `search: string | RegExp` — Chuỗi tìm kiếm gồm một hoặc nhiều từ phân cách bởi dấu cách, hoặc đối tượng `RegExp`.
|
|
13
|
+
- `limit: number = 128` — Độ dài tối đa cho phép của chuỗi tìm kiếm (bị bỏ qua nếu một `RegExp` được truyền vào).
|
|
13
14
|
|
|
14
15
|
**Trả về:**
|
|
15
|
-
`RegExp` —
|
|
16
|
+
`RegExp` — Biễu thức chính quy với cờ `ig` (toàn cục, không phân biệt chữ hoa/thường). Nếu chuỗi tìm kiếm trống hoặc vượt quá giới hạn, một regex không khớp với bất kỳ thứ gì sẽ được trả về.
|
|
16
17
|
|
|
17
18
|
```typescript
|
|
18
19
|
import { getSeparatingSearchExp } from '@dxtmisha/functional-basic'
|
|
@@ -1,21 +1,37 @@
|
|
|
1
|
-
import { Meta } from '@storybook/addon-docs/blocks'
|
|
1
|
+
import { Meta, Source } from '@storybook/addon-docs/blocks'
|
|
2
2
|
|
|
3
3
|
<Meta title='@dxtmisha/en/functional-basic/Functions/toNumber - Converting a value to a number'/>
|
|
4
4
|
|
|
5
5
|
# `toNumber`
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
Converts a string or number into a finite floating-point number. The function is designed to handle various formatting styles, including thousands separators and different decimal markers.
|
|
8
8
|
|
|
9
9
|
**Parameters:**
|
|
10
|
-
- `value?:
|
|
10
|
+
- `value?: NumberOrString` — The input value for conversion.
|
|
11
11
|
|
|
12
12
|
**Returns:**
|
|
13
|
-
`number` — The
|
|
13
|
+
`number` — The parsed float number or `0` if conversion fails or the value is non-finite.
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
## Examples
|
|
16
|
+
|
|
17
|
+
<Source
|
|
18
|
+
language='typescript'
|
|
19
|
+
code={`
|
|
16
20
|
import { toNumber } from '@dxtmisha/functional-basic'
|
|
17
21
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
+
// 1. Handling various separators
|
|
23
|
+
toNumber('1 250,50') // 1250.5
|
|
24
|
+
toNumber('1,000,000.99') // 1000000.99
|
|
25
|
+
toNumber('1.250,50') // 1250.5
|
|
26
|
+
|
|
27
|
+
// 2. Stripping non-numeric characters
|
|
28
|
+
toNumber('abc-12.5') // -12.5
|
|
29
|
+
toNumber('$1,234.56') // 1234.56
|
|
30
|
+
|
|
31
|
+
// 3. Numbers and special values
|
|
32
|
+
toNumber(123.45) // 123.45
|
|
33
|
+
toNumber(-0) // 0 (normalized)
|
|
34
|
+
toNumber(Infinity) // 0
|
|
35
|
+
toNumber(undefined) // 0
|
|
36
|
+
`}
|
|
37
|
+
/>
|
|
@@ -1,21 +1,37 @@
|
|
|
1
|
-
import { Meta } from '@storybook/addon-docs/blocks'
|
|
1
|
+
import { Meta, Source } from '@storybook/addon-docs/blocks'
|
|
2
2
|
|
|
3
3
|
<Meta title='@dxtmisha/ru/functional-basic/Functions/toNumber - Преобразование значения в число'/>
|
|
4
4
|
|
|
5
5
|
# `toNumber`
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
Преобразует строку или число в конечное число с плавающей точкой. Функция разработана для обработки различных стилей форматирования, включая разделители тысяч и различные десятичные маркеры.
|
|
8
8
|
|
|
9
9
|
**Параметры:**
|
|
10
|
-
- `value?:
|
|
10
|
+
- `value?: NumberOrString` — Входное значение для преобразования.
|
|
11
11
|
|
|
12
12
|
**Возвращает:**
|
|
13
|
-
`number` —
|
|
13
|
+
`number` — Распарсенное число float или `0`, если преобразование не удалось или значение не является конечным числом.
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
## Примеры
|
|
16
|
+
|
|
17
|
+
<Source
|
|
18
|
+
language='typescript'
|
|
19
|
+
code={`
|
|
16
20
|
import { toNumber } from '@dxtmisha/functional-basic'
|
|
17
21
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
+
// 1. Обработка различных разделителей
|
|
23
|
+
toNumber('1 250,50') // 1250.5
|
|
24
|
+
toNumber('1,000,000.99') // 1000000.99
|
|
25
|
+
toNumber('1.250,50') // 1250.5
|
|
26
|
+
|
|
27
|
+
// 2. Очистка от нечисловых символов
|
|
28
|
+
toNumber('abc-12.5') // -12.5
|
|
29
|
+
toNumber('$1,234.56') // 1234.56
|
|
30
|
+
|
|
31
|
+
// 3. Числа и специальные значения
|
|
32
|
+
toNumber(123.45) // 123.45
|
|
33
|
+
toNumber(-0) // 0 (нормализовано)
|
|
34
|
+
toNumber(Infinity) // 0
|
|
35
|
+
toNumber(undefined) // 0
|
|
36
|
+
`}
|
|
37
|
+
/>
|
|
@@ -1,21 +1,37 @@
|
|
|
1
|
-
import { Meta } from '@storybook/addon-docs/blocks'
|
|
1
|
+
import { Meta, Source } from '@storybook/addon-docs/blocks'
|
|
2
2
|
|
|
3
3
|
<Meta title='@dxtmisha/vi/functional-basic/Functions/toNumber - Chuyển đổi giá trị sang kiểu số'/>
|
|
4
4
|
|
|
5
5
|
# `toNumber`
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
Chuyển đổi một chuỗi hoặc một số thành một số thực (float) hữu hạn. Hàm được thiết kế để xử lý nhiều kiểu định dạng khác nhau, bao gồm các ký tự phân cách phần nghìn và các dấu thập phân khác nhau.
|
|
8
8
|
|
|
9
9
|
**Tham số:**
|
|
10
|
-
- `value?:
|
|
10
|
+
- `value?: NumberOrString` — Giá trị đầu vào cần chuyển đổi.
|
|
11
11
|
|
|
12
12
|
**Trả về:**
|
|
13
|
-
`number` — Số thực
|
|
13
|
+
`number` — Số thực sau khi phân tách hoặc `0` nếu chuyển đổi thất bại hoặc giá trị là vô hạn.
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
## Ví dụ
|
|
16
|
+
|
|
17
|
+
<Source
|
|
18
|
+
language='typescript'
|
|
19
|
+
code={`
|
|
16
20
|
import { toNumber } from '@dxtmisha/functional-basic'
|
|
17
21
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
+
// 1. Xử lý các loại dấu phân cách
|
|
23
|
+
toNumber('1 250,50') // 1250.5
|
|
24
|
+
toNumber('1,000,000.99') // 1000000.99
|
|
25
|
+
toNumber('1.250,50') // 1250.5
|
|
26
|
+
|
|
27
|
+
// 2. Loại bỏ các ký tự không phải số
|
|
28
|
+
toNumber('abc-12.5') // -12.5
|
|
29
|
+
toNumber('$1,234.56') // 1234.56
|
|
30
|
+
|
|
31
|
+
// 3. Số và các giá trị đặc biệt
|
|
32
|
+
toNumber(123.45) // 123.45
|
|
33
|
+
toNumber(-0) // 0 (đã chuẩn hóa)
|
|
34
|
+
toNumber(Infinity) // 0
|
|
35
|
+
toNumber(undefined) // 0
|
|
36
|
+
`}
|
|
37
|
+
/>
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Meta, Source } from '@storybook/addon-docs/blocks'
|
|
2
|
+
|
|
3
|
+
<Meta title='@dxtmisha/en/functional-basic/Functions/toString - Conversion of a value to a string'/>
|
|
4
|
+
|
|
5
|
+
# `toString`
|
|
6
|
+
|
|
7
|
+
A utility for converting a value to a string. Returns an empty string if the value is null or undefined.
|
|
8
|
+
|
|
9
|
+
**Parameters:**
|
|
10
|
+
- `value: string | null | undefined` — The value for conversion.
|
|
11
|
+
|
|
12
|
+
**Returns:**
|
|
13
|
+
`string` — The string representation of the value.
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
## Examples
|
|
17
|
+
|
|
18
|
+
<Source
|
|
19
|
+
language='typescript'
|
|
20
|
+
code={`
|
|
21
|
+
import { toString } from '@dxtmisha/functional-basic'
|
|
22
|
+
|
|
23
|
+
toString('Hello') // 'Hello'
|
|
24
|
+
toString(null) // ''
|
|
25
|
+
toString(undefined) // ''
|
|
26
|
+
|
|
27
|
+
`}
|
|
28
|
+
/>
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Meta, Source } from '@storybook/addon-docs/blocks'
|
|
2
|
+
|
|
3
|
+
<Meta title='@dxtmisha/ru/functional-basic/Functions/toString - Преобразование значения в строку'/>
|
|
4
|
+
|
|
5
|
+
# `toString`
|
|
6
|
+
|
|
7
|
+
Утилита для преобразования значения в строку. Возвращает пустую строку, если значение равно null или undefined.
|
|
8
|
+
|
|
9
|
+
**Параметры:**
|
|
10
|
+
- `value: string | null | undefined` — Значение для преобразования.
|
|
11
|
+
|
|
12
|
+
**Возвращает:**
|
|
13
|
+
`string` — Строковое представление значения.
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
## Примеры
|
|
17
|
+
|
|
18
|
+
<Source
|
|
19
|
+
language='typescript'
|
|
20
|
+
code={`
|
|
21
|
+
import { toString } from '@dxtmisha/functional-basic'
|
|
22
|
+
|
|
23
|
+
toString('Привет') // 'Привет'
|
|
24
|
+
toString(null) // ''
|
|
25
|
+
toString(undefined) // ''
|
|
26
|
+
|
|
27
|
+
`}
|
|
28
|
+
/>
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Meta, Source } from '@storybook/addon-docs/blocks'
|
|
2
|
+
|
|
3
|
+
<Meta title='@dxtmisha/vi/functional-basic/Functions/toString - Chuyển đổi một giá trị thành chuỗi'/>
|
|
4
|
+
|
|
5
|
+
# `toString`
|
|
6
|
+
|
|
7
|
+
Một tiện ích để chuyển đổi một giá trị thành chuỗi. Trả về một chuỗi rỗng nếu giá trị là null hoặc undefined.
|
|
8
|
+
|
|
9
|
+
**Tham số:**
|
|
10
|
+
- `value: string | null | undefined` — Giá trị cần chuyển đổi.
|
|
11
|
+
|
|
12
|
+
**Trả về:**
|
|
13
|
+
`string` — Biểu diễn chuỗi của giá trị.
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
## Ví dụ
|
|
17
|
+
|
|
18
|
+
<Source
|
|
19
|
+
language='typescript'
|
|
20
|
+
code={`
|
|
21
|
+
import { toString } from '@dxtmisha/functional-basic'
|
|
22
|
+
|
|
23
|
+
toString('Xin chào') // 'Xin chào'
|
|
24
|
+
toString(null) // ''
|
|
25
|
+
toString(undefined) // ''
|
|
26
|
+
|
|
27
|
+
`}
|
|
28
|
+
/>
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import {Meta} from '@storybook/addon-docs/blocks'
|
|
2
|
+
|
|
3
|
+
<Meta title='@dxtmisha/en/# UI/! About the library'/>
|
|
4
|
+
|
|
5
|
+
# [@dxtmisha/ui](https://github.com/dxtmisha/dxt-ui/tree/main/packages/constructor)
|
|
6
|
+
|
|
7
|
+
The `@dxtmisha/ui` project is developed as a technological foundation for designing new UI components based on design system principles. The primary goal of the project is to provide developers with a ready-made logical base that simplifies the creation of scalable and consistent interfaces in the Vue 3 environment.
|
|
8
|
+
|
|
9
|
+
At the core of the system is the separation of concerns between component logic and its visual representation, allowing elements to be adapted to any design requirements without re-implementing complex mechanics.
|
|
10
|
+
|
|
11
|
+
## Central Part of the Project: @dxtmisha/constructor
|
|
12
|
+
|
|
13
|
+
The key element is the **`@dxtmisha/constructor`** package. It serves as the "engine" for components, encapsulating:
|
|
14
|
+
- Reactive state and lifecycle management.
|
|
15
|
+
- Standardized event and data input handling.
|
|
16
|
+
- Accessibility logic (a11y) and keyboard control.
|
|
17
|
+
- Typing of input parameters (props) and slots.
|
|
18
|
+
|
|
19
|
+
Using this approach allows developers to focus on the visual implementation and UX, relying on the already tested and stable core logic.
|
|
20
|
+
|
|
21
|
+
## Capabilities and Tools
|
|
22
|
+
|
|
23
|
+
The system provides a comprehensive set of tools necessary for modern interface development:
|
|
24
|
+
|
|
25
|
+
**Functional Base (@dxtmisha/functional)**
|
|
26
|
+
A set of tools for integration with the Vue Composition API. Ensures reactive interaction with APIs, synchronization with web storage, and internationalization (i18n).
|
|
27
|
+
|
|
28
|
+
**Visual Parameters System (@dxtmisha/styles)**
|
|
29
|
+
A library of SCSS mixins and design tokens. It allows for managing component geometry and themes at the compilation level, ensuring a link between logical parameters and the resulting style.
|
|
30
|
+
|
|
31
|
+
**Process Automation (@dxtmisha/scripts)**
|
|
32
|
+
CLI tools to accelerate development. The package automates the scaffolding of new components, documentation generation, and export management. Includes AI integration capabilities for creating technical descriptions of elements.
|
|
33
|
+
|
|
34
|
+
## Who the Project is For
|
|
35
|
+
|
|
36
|
+
The project is aimed at developers and teams tasked with:
|
|
37
|
+
- Creating their own component libraries with unique designs.
|
|
38
|
+
- Designing complex interface systems with high architectural requirements.
|
|
39
|
+
- Developing business applications where a clear separation of logic and data representation is critical.
|
|
40
|
+
|
|
41
|
+
The library acts as a reliable foundation, allowing for consistent design standards throughout the product lifecycle.
|
|
42
|
+
|
|
43
|
+
## Git
|
|
44
|
+
|
|
45
|
+
[https://github.com/dxtmisha/dxt-ui/tree/main/packages/constructor](https://github.com/dxtmisha/dxt-ui/tree/main/packages/constructor)
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import {Meta} from '@storybook/addon-docs/blocks'
|
|
2
|
+
|
|
3
|
+
<Meta title='@dxtmisha/ru/# UI/! О библиотеке'/>
|
|
4
|
+
|
|
5
|
+
# [@dxtmisha/ui](https://github.com/dxtmisha/dxt-ui/tree/main/packages/constructor)
|
|
6
|
+
|
|
7
|
+
Проект `@dxtmisha/ui` разработан как технологический фундамент для проектирования новых UI-компонентов на основе принципов дизайн-систем. Основная цель проекта — предоставить разработчикам готовую логическую базу, которая упрощает создание масштабируемых и консистентных интерфейсов в среде Vue 3.
|
|
8
|
+
|
|
9
|
+
В основе системы лежит разделение ответственности между логикой компонента и его визуальным представлением, что позволяет адаптировать элементы под любые дизайнерские требования без повторной реализации сложной механики.
|
|
10
|
+
|
|
11
|
+
## Центральная часть проекта: @dxtmisha/constructor
|
|
12
|
+
|
|
13
|
+
Ключевым элементом является пакет **`@dxtmisha/constructor`**. Он выполняет роль «двигателя» компонентов, инкапсулируя в себе:
|
|
14
|
+
- Управление состояниями (reactive state) и жизненным циклом.
|
|
15
|
+
- Стандартизированную обработку событий и ввода данных.
|
|
16
|
+
- Логику доступности (a11y) и клавиатурного управления.
|
|
17
|
+
- Типизацию входных параметров (props) и слотов.
|
|
18
|
+
|
|
19
|
+
Использование такого подхода позволяет сосредоточиться на визуальной реализации и UX, полагаясь на уже протестированную и стабильную логику ядра.
|
|
20
|
+
|
|
21
|
+
## Возможности и инструменты
|
|
22
|
+
|
|
23
|
+
Система предоставляет комплекс инструментов, необходимых для разработки современных интерфейсов:
|
|
24
|
+
|
|
25
|
+
**Функциональная база (@dxtmisha/functional)**
|
|
26
|
+
Набор инструментов для интеграции с Vue Composition API. Обеспечивает реактивное взаимодействие с API, синхронизацию с веб-хранилищами и работу с интернационализацией (i18n).
|
|
27
|
+
|
|
28
|
+
**Система визуальных параметров (@dxtmisha/styles)**
|
|
29
|
+
Библиотека SCSS-миксинов и дизайн-токенов. Позволяет управлять геометрией и темой компонентов на уровне компиляции, обеспечивая связь между логическими параметрами и итоговым стилем.
|
|
30
|
+
|
|
31
|
+
**Автоматизация процессов (@dxtmisha/scripts)**
|
|
32
|
+
CLI-инструменты для ускорения разработки. Пакет автоматизирует скаффолдинг новых компонентов, генерацию документации и управление экспортами. Включает возможности интеграции с AI для создания технического описания элементов.
|
|
33
|
+
|
|
34
|
+
## Для кого предназначен проект
|
|
35
|
+
|
|
36
|
+
Проект ориентирован на разработчиков и команды, перед которыми стоят задачи по:
|
|
37
|
+
- Созданию собственных библиотек компонентов с уникальным дизайном.
|
|
38
|
+
- Проектированию сложных интерфейсных систем с высокими требованиями к архитектуре.
|
|
39
|
+
- Разработке бизнес-приложений, где критически важно четкое разделение логики и представления данных.
|
|
40
|
+
|
|
41
|
+
Библиотека выступает в роли надежной основы, позволяющей следовать единым стандартам проектирования на протяжении всего жизненного цикла продукта.
|
|
42
|
+
|
|
43
|
+
## Git
|
|
44
|
+
|
|
45
|
+
[https://github.com/dxtmisha/dxt-ui/tree/main/packages/constructor](https://github.com/dxtmisha/dxt-ui/tree/main/packages/constructor)
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import {Meta} from '@storybook/addon-docs/blocks'
|
|
2
|
+
|
|
3
|
+
<Meta title='@dxtmisha/vi/# UI/! Giới thiệu'/>
|
|
4
|
+
|
|
5
|
+
# [@dxtmisha/ui](https://github.com/dxtmisha/dxt-ui/tree/main/packages/constructor)
|
|
6
|
+
|
|
7
|
+
Dự án `@dxtmisha/ui` được phát triển như một nền tảng công nghệ để thiết kế các thành phần UI mới dựa trên các nguyên tắc của hệ thống thiết kế. Mục tiêu chính của dự án là cung cấp cho các nhà phát triển một cơ sở logic có sẵn giúp đơn giản hóa việc tạo ra các giao diện có khả năng mở rộng và nhất quán trong môi trường Vue 3.
|
|
8
|
+
|
|
9
|
+
Cốt lõi của hệ thống là sự phân tách các mối quan tâm giữa logic thành phần và biểu diễn hình ảnh của nó, cho phép các phần tử được điều chỉnh theo bất kỳ yêu cầu thiết kế nào mà không cần triển khai lại các cơ chế phức tạp.
|
|
10
|
+
|
|
11
|
+
## Phần trung tâm của dự án: @dxtmisha/constructor
|
|
12
|
+
|
|
13
|
+
Yếu tố then chốt là gói **`@dxtmisha/constructor`**. Nó đóng vai trò là "động cơ" cho các thành phần, bao bọc:
|
|
14
|
+
- Quản lý trạng thái phản hồi và vòng đời.
|
|
15
|
+
- Xử lý nhập dữ liệu và sự kiện tiêu chuẩn hóa.
|
|
16
|
+
- Logic truy cập (a11y) và điều khiển bàn phím.
|
|
17
|
+
- Định kiểu cho các tham số đầu vào (props) và slots.
|
|
18
|
+
|
|
19
|
+
Việc sử dụng phương pháp này cho phép các nhà phát triển tập trung vào triển khai hình ảnh và UX, dựa trên logic cốt lõi đã được kiểm chứng và ổn định.
|
|
20
|
+
|
|
21
|
+
## Khả năng và Công cụ
|
|
22
|
+
|
|
23
|
+
Hệ thống cung cấp một bộ công cụ toàn diện cần thiết cho việc phát triển giao diện hiện đại:
|
|
24
|
+
|
|
25
|
+
**Cơ sở chức năng (@dxtmisha/functional)**
|
|
26
|
+
Một bộ công cụ để tích hợp với Vue Composition API. Đảm bảo tương tác phản hồi với các API, đồng bộ hóa với bộ nhớ web và quốc tế hóa (i18n).
|
|
27
|
+
|
|
28
|
+
**Hệ thống thông số hình ảnh (@dxtmisha/styles)**
|
|
29
|
+
Thư viện các mixin SCSS và thiết kế token. Nó cho phép quản lý hình học và chủ đề của thành phần ở cấp độ biên dịch, đảm bảo liên kết giữa các thông số logic và kiểu dáng kết quả.
|
|
30
|
+
|
|
31
|
+
**Tự động hóa quy trình (@dxtmisha/scripts)**
|
|
32
|
+
Công cụ CLI để tăng tốc độ phát triển. Gói tự động hóa việc scaffolding các thành phần mới, tạo tài liệu và quản lý xuất bản. Bao gồm khả năng tích hợp AI để tạo mô tả kỹ thuật cho các phần tử.
|
|
33
|
+
|
|
34
|
+
## Dự án này dành cho ai
|
|
35
|
+
|
|
36
|
+
Dự án hướng tới các nhà phát triển và các nhóm có nhiệm vụ:
|
|
37
|
+
- Tạo thư viện thành phần riêng với thiết kế độc đáo.
|
|
38
|
+
- Thiết kế các hệ thống giao diện phức tạp với yêu cầu kiến trúc cao.
|
|
39
|
+
- Phát triển các ứng dụng kinh doanh mà việc phân tách rõ ràng giữa logic và biểu diễn dữ liệu là cực kỳ quan trọng.
|
|
40
|
+
|
|
41
|
+
Thư viện đóng vai trò như một nền tảng đáng tin cậy, cho phép duy trì các tiêu chuẩn thiết kế nhất quán trong suốt vòng đời của sản phẩm.
|
|
42
|
+
|
|
43
|
+
## Git
|
|
44
|
+
|
|
45
|
+
[https://github.com/dxtmisha/dxt-ui/tree/main/packages/constructor](https://github.com/dxtmisha/dxt-ui/tree/main/packages/constructor)
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import {Meta} from '@storybook/addon-docs/blocks'
|
|
2
|
+
|
|
3
|
+
<Meta title='@dxtmisha/en/# UI/# Creating and Managing Components'/>
|
|
4
|
+
|
|
5
|
+
# Creating and Managing Components
|
|
6
|
+
|
|
7
|
+
The development process in the **DXT UI** system is as automated as possible using code generation scripts. The core idea is that the developer describes the component metadata, and the system automatically creates and updates the necessary files (props, styles, templates).
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npm run ui
|
|
11
|
+
npm run ui [ComponentName]
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
The `npm run ui` command is the main tool for working with components. It automatically scans directories, finds new or modified folders, and synchronizes all related files (`props.ts`, `styleToken.scss`, `.vue`) based on the data in `properties.json`.
|
|
15
|
+
|
|
16
|
+
- To create or update a specific component, simply run the command after making changes to its folder.
|
|
17
|
+
- To fully rebuild the library and update all exports, run the command without parameters.
|
|
18
|
+
|
|
19
|
+
## Creating a New Component
|
|
20
|
+
|
|
21
|
+
To create a new component from scratch, follow these steps:
|
|
22
|
+
|
|
23
|
+
1. **Create Directory**: In the `src/components/Ui/` folder (or in your project), create a new folder with the name of the component (e.g., `MyButton`).
|
|
24
|
+
2. **Run Initialization**: Execute the `ui` command (or `npm run ui`). The script will automatically detect the new folder and create the necessary files inside it.
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
npm run ui
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
The system will create a `properties.json` file with a basic structure, along with all supporting files (props, styles, vue).
|
|
31
|
+
|
|
32
|
+
3. **Fill Properties**: Edit the created `properties.json` file by adding modifiers and tokens.
|
|
33
|
+
4. **Synchronize Changes**: Run the `ui` command again to update all associated files based on your changes.
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
npm run ui
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### Generation Result
|
|
40
|
+
The system will automatically create the following files based on your metadata and the selected constructor:
|
|
41
|
+
- `props.ts` — typed properties extending the constructor and defining default values.
|
|
42
|
+
- `styleToken.scss` — SCSS tokens and mixins.
|
|
43
|
+
- `DesignComponent.vue` — main Vue component with initialization logic.
|
|
44
|
+
- `index.ts`, `wiki.ts`, `stories.ts` — export, documentation, and stories files.
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
In the generated `.vue` file, when initializing the `Design` class (e.g., `BarsDesign`), you can pass a `components` object. This allows you to connect child components required for the current one to function (e.g., icons or progress indicators).
|
|
48
|
+
|
|
49
|
+
> Only connect the components that are actually used. If a dependent component (e.g., `ripple`) is not needed in your implementation, it can simply be omitted from the object.
|
|
50
|
+
|
|
51
|
+
To manage the properties of child components, use the `compMod` parameter. This allows you to pass default values for the props of internal elements (e.g., setting the size or style of a button within a navigation bar).
|
|
52
|
+
|
|
53
|
+
```typescript
|
|
54
|
+
const design = new BarsDesign('my.bars', props, {
|
|
55
|
+
emits,
|
|
56
|
+
classes: classesToken,
|
|
57
|
+
components: {
|
|
58
|
+
button: MyButton
|
|
59
|
+
},
|
|
60
|
+
compMod: {
|
|
61
|
+
button: {
|
|
62
|
+
text: true,
|
|
63
|
+
size: 'xs',
|
|
64
|
+
inverse: true
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
})
|
|
68
|
+
|
|
69
|
+
### Working with Props and Defaults
|
|
70
|
+
|
|
71
|
+
The `props.ts` file contains a `defaults` object that combines standard values from the constructor with settings specific to your component.
|
|
72
|
+
|
|
73
|
+
Example in the `props.ts` file:
|
|
74
|
+
```typescript
|
|
75
|
+
export const defaults: object = {
|
|
76
|
+
...defaultsBars,
|
|
77
|
+
iconBack: 'arrow_back',
|
|
78
|
+
paddingByIndent: true
|
|
79
|
+
}
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
## Updating a Component
|
|
84
|
+
|
|
85
|
+
If you need to change component properties (add a modifier, change a token, or a CSS value), follow the **"Source of Truth"** rule:
|
|
86
|
+
|
|
87
|
+
1. Edit the `properties.json` file.
|
|
88
|
+
2. Run the command again:
|
|
89
|
+
```bash
|
|
90
|
+
npm run ui MyButton
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
The script will automatically update `props.ts` (adding new types), `styleToken.scss` (updating variables), and templates while maintaining architectural integrity.
|
|
94
|
+
|
|
95
|
+
## Rebuilding the Entire Library
|
|
96
|
+
|
|
97
|
+
When working on several components at once or if you want to update global library exports (media, plugins, types), use the `ui` command without arguments:
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
npm run ui
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import {Meta} from '@storybook/addon-docs/blocks'
|
|
2
|
+
|
|
3
|
+
<Meta title='@dxtmisha/ru/# UI/# Создание и управление компонентом'/>
|
|
4
|
+
|
|
5
|
+
# Создание и управление компонентом
|
|
6
|
+
|
|
7
|
+
Процесс разработки в системе **DXT UI** максимально автоматизирован с помощью скриптов генерации кода. Основная идея заключается в том, что разработчик описывает метаданные компонента, а система сама создает и обновляет необходимые файлы (пропсы, стили, шаблоны).
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npm run ui
|
|
11
|
+
npm run ui [ComponentName]
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
Команда `npm run ui` — это основной инструмент для работы с компонентами. Она автоматически сканирует директории, находит новые или измененные папки и синхронизирует все связанные файлы (`props.ts`, `styleToken.scss`, `.vue`) на основе данных из `properties.json`.
|
|
15
|
+
|
|
16
|
+
- Чтобы создать или обновить конкретный компонент, просто запустите команду после внесения изменений в его папку.
|
|
17
|
+
- Чтобы полностью пересобрать библиотеку и обновить все экспорты, запустите команду без параметров.
|
|
18
|
+
|
|
19
|
+
## Создание нового компонента
|
|
20
|
+
|
|
21
|
+
Чтобы создать новый компонент "с нуля", выполните следующие шаги:
|
|
22
|
+
|
|
23
|
+
1. **Создайте директорию**: В папке `src/components/Ui/` (или в вашем проекте) создайте новую папку с названием компонента (например, `MyButton`).
|
|
24
|
+
2. **Запустите инициализацию**: Выполните команду `ui` (или `npm run ui`). Скрипт автоматически обнаружит новую папку и создаст в ней необходимые файлы.
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
npm run ui
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
Система создаст файл `properties.json` с базовой структурой, а также все вспомогательные файлы (props, styles, vue).
|
|
31
|
+
|
|
32
|
+
3. **Заполните свойства**: Отредактируйте созданный файл `properties.json`, добавив модификаторы и токены.
|
|
33
|
+
4. **Синхронизируйте изменения**: Снова запустите команду `ui`, чтобы обновить все связанные файлы на основе ваших изменений.
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
npm run ui
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### Результат генерации
|
|
40
|
+
Система автоматически создаст следующие файлы на основе ваших метаданных и выбранного конструктора:
|
|
41
|
+
- `props.ts` — типизированные свойства, расширяющие конструктор и определяющие значения по умолчанию.
|
|
42
|
+
- `styleToken.scss` — SCSS-токены и миксины.
|
|
43
|
+
- `DesignComponent.vue` — основной Vue-компонент с логикой инициализации.
|
|
44
|
+
- `index.ts`, `wiki.ts`, `stories.ts` — файлы экспорта, документации и историй.
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
### Настройка зависимостей в Vue
|
|
48
|
+
В созданном `.vue` файле при инициализации класса `Design` (например, `BarsDesign`) вы можете передать объект `components`. Это позволяет подключить дочерние компоненты, которые требуются для работы текущего (например, иконки или индикаторы загрузки).
|
|
49
|
+
|
|
50
|
+
> Подключайте только те компоненты, которые действительно используются. Если какой-то зависимый компонент (например, `ripple`) не нужен в вашей реализации, его можно просто не указывать в объекте.
|
|
51
|
+
|
|
52
|
+
Для управления свойствами дочерних компонентов используйте параметр `compMod`. Это позволяет передавать значения по умолчанию для пропсов внутренних элементов (например, установить размер или стиль кнопки внутри панели навигации).
|
|
53
|
+
|
|
54
|
+
```typescript
|
|
55
|
+
const design = new BarsDesign('my.bars', props, {
|
|
56
|
+
emits,
|
|
57
|
+
classes: classesToken,
|
|
58
|
+
components: {
|
|
59
|
+
button: MyButton
|
|
60
|
+
},
|
|
61
|
+
compMod: {
|
|
62
|
+
button: {
|
|
63
|
+
text: true,
|
|
64
|
+
size: 'xs',
|
|
65
|
+
inverse: true
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
})
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### Работа с Props и значениями по умолчанию
|
|
72
|
+
|
|
73
|
+
Файл `props.ts` содержит объект `defaults`, который объединяет стандартные значения из конструктора и специфичные для вашего компонента настройки.
|
|
74
|
+
|
|
75
|
+
Пример в файле `props.ts`:
|
|
76
|
+
```typescript
|
|
77
|
+
export const defaults: object = {
|
|
78
|
+
...defaultsBars,
|
|
79
|
+
iconBack: 'arrow_back',
|
|
80
|
+
paddingByIndent: true
|
|
81
|
+
}
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
## Обновление компонента
|
|
86
|
+
|
|
87
|
+
Если вам нужно изменить свойства компонента (добавить модификатор, изменить токен или CSS-значение), следуйте правилу **"Source of Truth"**:
|
|
88
|
+
|
|
89
|
+
1. Отредактируйте файл `properties.json`.
|
|
90
|
+
2. Повторно запустите команду:
|
|
91
|
+
```bash
|
|
92
|
+
npm run ui MyButton
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
Скрипт автоматически обновит `props.ts` (добавит новые типы), `styleToken.scss` (обновит переменные) и шаблоны, сохраняя при этом целостность архитектуры.
|
|
96
|
+
|
|
97
|
+
## Пересборка всей библиотеки
|
|
98
|
+
|
|
99
|
+
Когда вы работаете сразу над несколькими компонентами или хотите обновить глобальные экспорты библиотеки (media, plugins, types), используйте команду `ui` без аргументов:
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
npm run ui
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
|