@ryuzaki13/react-foundation-lib 1.4.3 → 1.5.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/chunks/{formatters-D33Uh3si.js → formatters-DVE1YVNQ.js} +349 -334
- package/dist/chunks/formatters-DVE1YVNQ.js.map +1 -0
- package/dist/error-report/index.js +1 -1
- package/dist/formatters/date/formatInstantDateTime.d.ts +19 -0
- package/dist/formatters/date/formatInstantDateTime.d.ts.map +1 -0
- package/dist/formatters/date/index.d.ts +1 -0
- package/dist/formatters/date/index.d.ts.map +1 -1
- package/dist/formatters/index.js +5 -5
- package/dist/hooks/useFloatingListbox.d.ts +1 -1
- package/package.json +1 -5
- package/src/array/README.mdx +4 -12
- package/src/binary/README.mdx +3 -11
- package/src/bounded-copy-stack/README.mdx +8 -14
- package/src/context-menu/README.mdx +11 -11
- package/src/copy/README.mdx +3 -11
- package/src/crypto/README.mdx +3 -11
- package/src/date-segments/README.mdx +3 -3
- package/src/dom/README.mdx +3 -11
- package/src/error/README.mdx +2 -2
- package/src/file/README.mdx +3 -11
- package/src/fingerprint/README.mdx +3 -3
- package/src/form/README.mdx +2 -2
- package/src/formatters/README.mdx +0 -6
- package/src/formatters/boolean/README.mdx +3 -11
- package/src/formatters/date/README.mdx +11 -1
- package/src/formulas/README.mdx +2 -8
- package/src/http/README.mdx +3 -3
- package/src/media/README.mdx +4 -4
- package/src/notifications/README.mdx +2 -2
- package/src/number-scale/README.mdx +1 -1
- package/src/odata-service/README.mdx +3 -9
- package/src/presets/README.mdx +2 -2
- package/src/pwa/README.mdx +0 -8
- package/src/query-client/README.mdx +5 -8
- package/src/range-output/README.mdx +3 -3
- package/src/session-storage/README.mdx +2 -2
- package/src/string-comparison/README.mdx +2 -2
- package/src/table/README.mdx +2 -10
- package/src/types/README.mdx +13 -13
- package/src/utils/README.mdx +4 -10
- package/src/validators/README.mdx +3 -3
- package/src/virtualizer/README.mdx +2 -6
- package/src/xml/README.mdx +3 -3
- package/dist/chunks/formatters-D33Uh3si.js.map +0 -1
- package/dist/currency/currency.d.ts +0 -8
- package/dist/currency/currency.d.ts.map +0 -1
- package/dist/currency/index.d.ts +0 -2
- package/dist/currency/index.d.ts.map +0 -1
- package/dist/currency/index.js +0 -16
- package/dist/currency/index.js.map +0 -1
- package/src/currency/README.mdx +0 -155
|
@@ -2,16 +2,14 @@ import { Meta } from "@storybook/addon-docs/blocks";
|
|
|
2
2
|
|
|
3
3
|
<Meta title="Foundation Lib/Data/Bounded Copy Stack" />
|
|
4
4
|
|
|
5
|
-
# Ограниченный стек копий
|
|
5
|
+
# Ограниченный стек копий
|
|
6
6
|
|
|
7
7
|
Модуль хранит небольшой список последних скопированных сущностей. Новый элемент помещается в начало, повтор по `fingerprint` обновляет существующую запись, а старые записи удаляются при превышении лимита.
|
|
8
8
|
|
|
9
|
-
Документ рассчитан на разработчика без доступа к исходникам пакета. Ниже объясняются структура элемента, различие `id` и `fingerprint`, порядок записей, ссылки на payload и все граничные случаи.
|
|
10
|
-
|
|
11
9
|
## Содержание
|
|
12
10
|
|
|
13
11
|
- [Назначение и границы](#назначение-и-границы)
|
|
14
|
-
- [
|
|
12
|
+
- [Импорт](#импорт)
|
|
15
13
|
- [Основные понятия](#основные-понятия)
|
|
16
14
|
- [Быстрый старт](#быстрый-старт)
|
|
17
15
|
- [`pushBoundedCopyStackItem`](#pushboundedcopystackitem)
|
|
@@ -44,11 +42,7 @@ import { Meta } from "@storybook/addon-docs/blocks";
|
|
|
44
42
|
|
|
45
43
|
Clipboard helpers находятся в `@ryuzaki13/react-foundation-lib/copy`. Владелец state/storage находится в host-приложении.
|
|
46
44
|
|
|
47
|
-
##
|
|
48
|
-
|
|
49
|
-
```bash
|
|
50
|
-
npm install @ryuzaki13/react-foundation-lib
|
|
51
|
-
```
|
|
45
|
+
## Импорт
|
|
52
46
|
|
|
53
47
|
```ts
|
|
54
48
|
import {
|
|
@@ -57,11 +51,11 @@ import {
|
|
|
57
51
|
pushBoundedCopyStackItem
|
|
58
52
|
} from "@ryuzaki13/react-foundation-lib/bounded-copy-stack";
|
|
59
53
|
|
|
60
|
-
import
|
|
61
|
-
BoundedCopyStackItem,
|
|
62
|
-
BoundedCopyStackOptions,
|
|
63
|
-
BoundedCopyStackPushInput,
|
|
64
|
-
BoundedCopyStackPushResult
|
|
54
|
+
import {
|
|
55
|
+
type BoundedCopyStackItem,
|
|
56
|
+
type BoundedCopyStackOptions,
|
|
57
|
+
type BoundedCopyStackPushInput,
|
|
58
|
+
type BoundedCopyStackPushResult
|
|
65
59
|
} from "@ryuzaki13/react-foundation-lib/bounded-copy-stack";
|
|
66
60
|
```
|
|
67
61
|
|
|
@@ -2,7 +2,7 @@ import { Meta } from "@storybook/addon-docs/blocks";
|
|
|
2
2
|
|
|
3
3
|
<Meta title="Foundation Lib/Interaction/Context Menu State" />
|
|
4
4
|
|
|
5
|
-
# Состояние и anchors контекстного меню
|
|
5
|
+
# Состояние и anchors контекстного меню
|
|
6
6
|
|
|
7
7
|
Модуль описывает открытое/закрытое состояние контекстного меню, источник открытия и два вида anchor: DOM element или экранная точка. Также он создаёт virtual anchor для Floating UI.
|
|
8
8
|
|
|
@@ -11,7 +11,7 @@ import { Meta } from "@storybook/addon-docs/blocks";
|
|
|
11
11
|
## Содержание
|
|
12
12
|
|
|
13
13
|
- [Назначение и границы](#назначение-и-границы)
|
|
14
|
-
- [
|
|
14
|
+
- [Импорт](#импорт)
|
|
15
15
|
- [Модель данных](#модель-данных)
|
|
16
16
|
- [Получение точки](#получение-точки)
|
|
17
17
|
- [`createVirtualAnchor`](#createvirtualanchor)
|
|
@@ -48,7 +48,7 @@ host React/Floating UI/menu component
|
|
|
48
48
|
|
|
49
49
|
Готовый visual primitive находится в `@ryuzaki13/react-foundation-ui/context-menu`.
|
|
50
50
|
|
|
51
|
-
##
|
|
51
|
+
## Импорт
|
|
52
52
|
|
|
53
53
|
```ts
|
|
54
54
|
import {
|
|
@@ -61,14 +61,14 @@ import {
|
|
|
61
61
|
toggleMenu
|
|
62
62
|
} from "@ryuzaki13/react-foundation-lib/context-menu";
|
|
63
63
|
|
|
64
|
-
import
|
|
65
|
-
ElementMenuAnchor,
|
|
66
|
-
MenuAnchor,
|
|
67
|
-
MenuOpenSource,
|
|
68
|
-
MenuPoint,
|
|
69
|
-
MenuState,
|
|
70
|
-
OpenMenuPayload,
|
|
71
|
-
PointMenuAnchor
|
|
64
|
+
import {
|
|
65
|
+
type ElementMenuAnchor,
|
|
66
|
+
type MenuAnchor,
|
|
67
|
+
type MenuOpenSource,
|
|
68
|
+
type MenuPoint,
|
|
69
|
+
type MenuState,
|
|
70
|
+
type OpenMenuPayload,
|
|
71
|
+
type PointMenuAnchor
|
|
72
72
|
} from "@ryuzaki13/react-foundation-lib/context-menu";
|
|
73
73
|
```
|
|
74
74
|
|
package/src/copy/README.mdx
CHANGED
|
@@ -2,7 +2,7 @@ import { Meta } from "@storybook/addon-docs/blocks";
|
|
|
2
2
|
|
|
3
3
|
<Meta title="Foundation Lib/API/Copy" />
|
|
4
4
|
|
|
5
|
-
# Копирование текста
|
|
5
|
+
# Копирование текста
|
|
6
6
|
|
|
7
7
|
Модуль `copy` содержит React hooks для копирования текста в системный буфер обмена, чтения текста из DOM-элемента и показа короткого состояния «скопировано».
|
|
8
8
|
|
|
@@ -14,12 +14,10 @@ import { Meta } from "@storybook/addon-docs/blocks";
|
|
|
14
14
|
|
|
15
15
|
Модуль ориентирован на браузер. Он скрывает технический выбор между современным Clipboard API и legacy fallback, но не отменяет браузерные разрешения и ограничения безопасности.
|
|
16
16
|
|
|
17
|
-
README рассчитан на разработчика, который использует опубликованный пакет без доступа к исходному коду. Здесь объясняются базовые понятия React и DOM, точное поведение каждого hook, обработка ошибок, доступность, тестирование и известные ограничения.
|
|
18
|
-
|
|
19
17
|
## Содержание
|
|
20
18
|
|
|
21
19
|
- [Назначение и границы модуля](#назначение-и-границы-модуля)
|
|
22
|
-
- [
|
|
20
|
+
- [Импорт](#импорт)
|
|
23
21
|
- [Минимальные понятия](#минимальные-понятия)
|
|
24
22
|
- [Как выбрать API](#как-выбрать-api)
|
|
25
23
|
- [Быстрый старт](#быстрый-старт)
|
|
@@ -72,13 +70,7 @@ README рассчитан на разработчика, который испо
|
|
|
72
70
|
| Реализовать визуальную кнопку/tooltip | UI-компонент приложения или foundation UI-пакет |
|
|
73
71
|
| Скопировать изображение или rich HTML | Отдельная реализация Clipboard API для нужного формата |
|
|
74
72
|
|
|
75
|
-
##
|
|
76
|
-
|
|
77
|
-
Установите пакет:
|
|
78
|
-
|
|
79
|
-
```bash
|
|
80
|
-
npm install @ryuzaki13/react-foundation-lib
|
|
81
|
-
```
|
|
73
|
+
## Импорт
|
|
82
74
|
|
|
83
75
|
Модуль использует React hooks. Приложение должно предоставить совместимые peer-зависимости React:
|
|
84
76
|
|
package/src/crypto/README.mdx
CHANGED
|
@@ -2,7 +2,7 @@ import { Meta } from "@storybook/addon-docs/blocks";
|
|
|
2
2
|
|
|
3
3
|
<Meta title="Foundation Lib/API/Crypto" />
|
|
4
4
|
|
|
5
|
-
# Идентификаторы и строковые hash
|
|
5
|
+
# Идентификаторы и строковые hash
|
|
6
6
|
|
|
7
7
|
Модуль `crypto` предоставляет небольшие функции для двух разных задач:
|
|
8
8
|
|
|
@@ -13,12 +13,10 @@ import { Meta } from "@storybook/addon-docs/blocks";
|
|
|
13
13
|
|
|
14
14
|
Несмотря на имя entrypoint, строковые hash этого модуля не являются криптографическими. Они не подходят для паролей, подписей, access token, проверки безопасности или сокрытия персональных данных.
|
|
15
15
|
|
|
16
|
-
README рассчитан на разработчика, который использует опубликованный пакет без доступа к исходному коду. Здесь объясняются базовые понятия, точные форматы результатов, browser runtime, Unicode, коллизии, React/SSR, тестирование и безопасные границы применения.
|
|
17
|
-
|
|
18
16
|
## Содержание
|
|
19
17
|
|
|
20
18
|
- [Назначение и границы модуля](#назначение-и-границы-модуля)
|
|
21
|
-
- [
|
|
19
|
+
- [Импорт](#импорт)
|
|
22
20
|
- [Минимальные понятия](#минимальные-понятия)
|
|
23
21
|
- [Как выбрать API](#как-выбрать-api)
|
|
24
22
|
- [Быстрый старт](#быстрый-старт)
|
|
@@ -71,13 +69,7 @@ README рассчитан на разработчика, который испо
|
|
|
71
69
|
| Детерминированные hash | `hashString`, `hashString128`, `hashString128Base64Url`, `stringToElementId` | Та же точная строка даёт тот же результат. |
|
|
72
70
|
| Случайный идентификатор | `uuidv4` | Каждый вызов должен создавать новое случайное значение. |
|
|
73
71
|
|
|
74
|
-
##
|
|
75
|
-
|
|
76
|
-
Установите пакет:
|
|
77
|
-
|
|
78
|
-
```bash
|
|
79
|
-
npm install @ryuzaki13/react-foundation-lib
|
|
80
|
-
```
|
|
72
|
+
## Импорт
|
|
81
73
|
|
|
82
74
|
Импортируйте функции только из опубликованного subpath `/crypto`:
|
|
83
75
|
|
|
@@ -2,7 +2,7 @@ import { Meta } from "@storybook/addon-docs/blocks";
|
|
|
2
2
|
|
|
3
3
|
<Meta title="Foundation Lib/Date/Segments" />
|
|
4
4
|
|
|
5
|
-
# Сегменты даты и времени
|
|
5
|
+
# Сегменты даты и времени
|
|
6
6
|
|
|
7
7
|
Модуль разбирает строковую маску на редактируемые сегменты и литералы, преобразует `Date` в значения полей и строго собирает `Date` обратно. Он предназначен для segment-based date/time inputs.
|
|
8
8
|
|
|
@@ -11,7 +11,7 @@ import { Meta } from "@storybook/addon-docs/blocks";
|
|
|
11
11
|
## Содержание
|
|
12
12
|
|
|
13
13
|
- [Назначение и границы](#назначение-и-границы)
|
|
14
|
-
- [
|
|
14
|
+
- [Импорт](#импорт)
|
|
15
15
|
- [Базовые понятия](#базовые-понятия)
|
|
16
16
|
- [Поддерживаемые tokens](#поддерживаемые-tokens)
|
|
17
17
|
- [`parseDateSegmentMask`](#parsedatesegmentmask)
|
|
@@ -40,7 +40,7 @@ new Date(2026, 2, 3, 18, 3)
|
|
|
40
40
|
|
|
41
41
|
Модуль не рендерит input, не управляет focus/caret, не форматирует итоговую дату для UI/backend и не парсит ISO/OData строку. Для общего парсинга/форматирования используйте `/formatters`.
|
|
42
42
|
|
|
43
|
-
##
|
|
43
|
+
## Импорт
|
|
44
44
|
|
|
45
45
|
```ts
|
|
46
46
|
import {
|
package/src/dom/README.mdx
CHANGED
|
@@ -2,7 +2,7 @@ import { Meta } from "@storybook/addon-docs/blocks";
|
|
|
2
2
|
|
|
3
3
|
<Meta title="Foundation Lib/API/DOM" />
|
|
4
4
|
|
|
5
|
-
# Browser DOM и focus helpers
|
|
5
|
+
# Browser DOM и focus helpers
|
|
6
6
|
|
|
7
7
|
Модуль `dom` содержит небольшие browser helpers и React hooks для типовых инфраструктурных задач:
|
|
8
8
|
|
|
@@ -17,12 +17,10 @@ import { Meta } from "@storybook/addon-docs/blocks";
|
|
|
17
17
|
|
|
18
18
|
Модуль является низкоуровневым browser foundation-слоем. Он не создаёт готовые кнопки, dialog, modal, popover, tooltip или download UI. Визуальный компонент по-прежнему отвечает за семантический HTML, ARIA, стили, анимацию, стек overlay, сообщения об ошибках и пользовательский сценарий.
|
|
19
19
|
|
|
20
|
-
README рассчитан на разработчика, который использует опубликованный пакет без прямого доступа к исходному коду. Здесь объясняются базовые понятия DOM и React, все публичные функции, точный lifecycle, defaults, cleanup, ограничения доступности, тестирование и частые ошибки.
|
|
21
|
-
|
|
22
20
|
## Содержание
|
|
23
21
|
|
|
24
22
|
- [Назначение и границы модуля](#назначение-и-границы-модуля)
|
|
25
|
-
- [
|
|
23
|
+
- [Импорт](#импорт)
|
|
26
24
|
- [Runtime и browser boundary](#runtime-и-browser-boundary)
|
|
27
25
|
- [Минимальные понятия](#минимальные-понятия)
|
|
28
26
|
- [Как выбрать API](#как-выбрать-api)
|
|
@@ -91,13 +89,7 @@ README рассчитан на разработчика, который испо
|
|
|
91
89
|
|
|
92
90
|
Если приложению нужен готовый UI primitive, сначала ищите его в `@ryuzaki13/react-foundation-ui`. Модуль `dom` нужен авторам primitives и для специальных browser-сценариев, а не для повторной сборки локальных modal/dialog в каждом feature.
|
|
93
91
|
|
|
94
|
-
##
|
|
95
|
-
|
|
96
|
-
Установите пакет:
|
|
97
|
-
|
|
98
|
-
```bash
|
|
99
|
-
npm install @ryuzaki13/react-foundation-lib
|
|
100
|
-
```
|
|
92
|
+
## Импорт
|
|
101
93
|
|
|
102
94
|
Entrypoint экспортирует React hooks, поэтому host-приложение должно предоставить совместимые peer-зависимости:
|
|
103
95
|
|
package/src/error/README.mdx
CHANGED
|
@@ -2,11 +2,11 @@ import { Meta } from "@storybook/addon-docs/blocks";
|
|
|
2
2
|
|
|
3
3
|
<Meta title="Foundation Lib/Errors/Missing Context" />
|
|
4
4
|
|
|
5
|
-
# Ошибка отсутствующего React context
|
|
5
|
+
# Ошибка отсутствующего React context
|
|
6
6
|
|
|
7
7
|
Модуль создаёт единообразное диагностическое сообщение, когда custom hook вызван вне нужного Provider.
|
|
8
8
|
|
|
9
|
-
##
|
|
9
|
+
## Импорт
|
|
10
10
|
|
|
11
11
|
```ts
|
|
12
12
|
import { createMissingContextError, createMissingContextErrorMessage } from "@ryuzaki13/react-foundation-lib/error";
|
package/src/file/README.mdx
CHANGED
|
@@ -2,7 +2,7 @@ import { Meta } from "@storybook/addon-docs/blocks";
|
|
|
2
2
|
|
|
3
3
|
<Meta title="Foundation Lib/API/File" />
|
|
4
4
|
|
|
5
|
-
# Работа с пользовательскими файлами
|
|
5
|
+
# Работа с пользовательскими файлами
|
|
6
6
|
|
|
7
7
|
Модуль `file` содержит browser helpers для четырёх связанных задач:
|
|
8
8
|
|
|
@@ -13,12 +13,10 @@ import { Meta } from "@storybook/addon-docs/blocks";
|
|
|
13
13
|
|
|
14
14
|
Модуль является низкоуровневым foundation-слоем. Он не рисует `<input type="file">`, не отправляет файл на backend, не показывает preview или progress, не проверяет реальное содержимое файла и не заменяет серверную валидацию.
|
|
15
15
|
|
|
16
|
-
README рассчитан на разработчика, который использует опубликованный пакет без доступа к исходному коду. Поэтому ниже отдельно объясняются базовые понятия JavaScript/TypeScript, точный порядок проверок, структура результатов, все публичные функции и типы, фактические классы ошибок, ограничения безопасности и известные особенности текущей реализации.
|
|
17
|
-
|
|
18
16
|
## Содержание
|
|
19
17
|
|
|
20
18
|
- [Назначение и границы модуля](#назначение-и-границы-модуля)
|
|
21
|
-
- [
|
|
19
|
+
- [Импорт](#импорт)
|
|
22
20
|
- [Runtime и browser boundary](#runtime-и-browser-boundary)
|
|
23
21
|
- [Минимальные понятия](#минимальные-понятия)
|
|
24
22
|
- [Как выбрать API](#как-выбрать-api)
|
|
@@ -90,13 +88,7 @@ README рассчитан на разработчика, который испо
|
|
|
90
88
|
|
|
91
89
|
Если нужен только обычный upload через `multipart/form-data`, браузерный `File` можно положить в `FormData` напрямую. Предварительное чтение всего файла через `readFile` для этого не обязательно.
|
|
92
90
|
|
|
93
|
-
##
|
|
94
|
-
|
|
95
|
-
Установите пакет:
|
|
96
|
-
|
|
97
|
-
```bash
|
|
98
|
-
npm install @ryuzaki13/react-foundation-lib
|
|
99
|
-
```
|
|
91
|
+
## Импорт
|
|
100
92
|
|
|
101
93
|
Импортируйте API только из опубликованного subpath `/file`:
|
|
102
94
|
|
|
@@ -2,14 +2,14 @@ import { Meta } from "@storybook/addon-docs/blocks";
|
|
|
2
2
|
|
|
3
3
|
<Meta title="Foundation Lib/Browser/Client Fingerprint" />
|
|
4
4
|
|
|
5
|
-
# Client fingerprint
|
|
5
|
+
# Client fingerprint
|
|
6
6
|
|
|
7
7
|
`getClientFingerprint` лениво загружает FingerprintJS, получает `visitorId` и кеширует Promise на всё время жизни JavaScript-модуля.
|
|
8
8
|
|
|
9
|
-
##
|
|
9
|
+
## Импорт
|
|
10
10
|
|
|
11
11
|
```bash
|
|
12
|
-
npm install @
|
|
12
|
+
npm install @fingerprintjs/fingerprintjs
|
|
13
13
|
```
|
|
14
14
|
|
|
15
15
|
```ts
|
package/src/form/README.mdx
CHANGED
|
@@ -2,11 +2,11 @@ import { Meta } from "@storybook/addon-docs/blocks";
|
|
|
2
2
|
|
|
3
3
|
<Meta title="Foundation Lib/Forms/Form Errors" />
|
|
4
4
|
|
|
5
|
-
# Чтение первой ошибки формы
|
|
5
|
+
# Чтение первой ошибки формы
|
|
6
6
|
|
|
7
7
|
Модуль содержит одну функцию `readFirstFormError`. Она получает неоднородный массив ошибок и возвращает первое найденное текстовое сообщение.
|
|
8
8
|
|
|
9
|
-
##
|
|
9
|
+
## Импорт
|
|
10
10
|
|
|
11
11
|
```ts
|
|
12
12
|
import { readFirstFormError } from "@ryuzaki13/react-foundation-lib/form";
|
|
@@ -8,12 +8,6 @@ import { Meta } from "@storybook/addon-docs/blocks";
|
|
|
8
8
|
|
|
9
9
|
Документация разделена по предметным областям, чтобы разработчику не приходилось читать один огромный файл. Этот README объясняет общие правила, помогает выбрать API и подробно описывает небольшие helpers верхнего уровня.
|
|
10
10
|
|
|
11
|
-
## Установка
|
|
12
|
-
|
|
13
|
-
```bash
|
|
14
|
-
npm install @ryuzaki13/react-foundation-lib
|
|
15
|
-
```
|
|
16
|
-
|
|
17
11
|
Пакет является ESM. Корневого импорта пакета нет. Все formatter functions и их типы импортируются из точечного entrypoint:
|
|
18
12
|
|
|
19
13
|
```ts
|
|
@@ -2,7 +2,7 @@ import { Meta } from "@storybook/addon-docs/blocks";
|
|
|
2
2
|
|
|
3
3
|
<Meta title="Foundation Lib/API/Formatters/Boolean" />
|
|
4
4
|
|
|
5
|
-
# Boolean и ABAP boolean
|
|
5
|
+
# Boolean и ABAP boolean
|
|
6
6
|
|
|
7
7
|
Подмодуль `boolean` преобразует значения между JavaScript `boolean` и двухсимвольным ABAP-контрактом:
|
|
8
8
|
|
|
@@ -11,12 +11,10 @@ import { Meta } from "@storybook/addon-docs/blocks";
|
|
|
11
11
|
|
|
12
12
|
Также он предоставляет более широкий parser `parseBoolean` для простых пользовательских или transport-значений.
|
|
13
13
|
|
|
14
|
-
README рассчитан на разработчика без доступа к исходному коду. Ниже описано точное, местами неочевидное поведение всех трёх публичных функций. Особенно важно не путать строгий `parseAbapBoolean`, расширенный `parseBoolean` и truthy-семантику `toAbapBoolean`.
|
|
15
|
-
|
|
16
14
|
## Содержание
|
|
17
15
|
|
|
18
16
|
- [Назначение и границы](#назначение-и-границы)
|
|
19
|
-
- [
|
|
17
|
+
- [Импорт](#импорт)
|
|
20
18
|
- [Минимальные понятия](#минимальные-понятия)
|
|
21
19
|
- [Как выбрать функцию](#как-выбрать-функцию)
|
|
22
20
|
- [`parseAbapBoolean`](#parseabapboolean)
|
|
@@ -47,13 +45,7 @@ README рассчитан на разработчика без доступа к
|
|
|
47
45
|
- не сериализует JSON, URL или OData query;
|
|
48
46
|
- не гарантирует, что широкий `toAbapBoolean(unknown)` подходит конкретному backend-контракту.
|
|
49
47
|
|
|
50
|
-
##
|
|
51
|
-
|
|
52
|
-
Установите пакет:
|
|
53
|
-
|
|
54
|
-
```bash
|
|
55
|
-
npm install @ryuzaki13/react-foundation-lib
|
|
56
|
-
```
|
|
48
|
+
## Импорт
|
|
57
49
|
|
|
58
50
|
Все boolean helpers импортируются из единственного опубликованного subpath `/formatters`:
|
|
59
51
|
|
|
@@ -16,6 +16,7 @@ import { Meta } from "@storybook/addon-docs/blocks";
|
|
|
16
16
|
```ts
|
|
17
17
|
import {
|
|
18
18
|
formatDateAsDate,
|
|
19
|
+
formatInstantDateTime,
|
|
19
20
|
getCalendarPeriod,
|
|
20
21
|
normalizeDateRange,
|
|
21
22
|
parseDate,
|
|
@@ -55,6 +56,15 @@ date?.toISOString(); // "2026-03-03T13:03:50.000Z"
|
|
|
55
56
|
|
|
56
57
|
Локальные getters такого `Date` зависят от timezone среды. Используйте TZ-вариант, когда значение означает настоящий момент события: timestamp аудита, время серверного события, instant для сортировки между часовыми поясами.
|
|
57
58
|
|
|
59
|
+
Для одинакового отображения абсолютной метки времени на SSR-сервере и в браузере
|
|
60
|
+
используйте явный часовой пояс IANA:
|
|
61
|
+
|
|
62
|
+
```ts
|
|
63
|
+
formatInstantDateTime("2026-09-04T10:22:28Z", {
|
|
64
|
+
timeZone: "Asia/Yekaterinburg"
|
|
65
|
+
}); // "4 сент. 2026 г., 15:22:28"
|
|
66
|
+
```
|
|
67
|
+
|
|
58
68
|
### Простое правило выбора
|
|
59
69
|
|
|
60
70
|
| Значение означает | Использовать |
|
|
@@ -697,7 +707,7 @@ Intl-форматы локализованы. Для API используйте
|
|
|
697
707
|
| Семейство | Публичный API |
|
|
698
708
|
| ---------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
699
709
|
| Parsing | `parseDateValue`, `parseDateValueTZ`, `parseDate`, `parseDateTZ`, `parseDateByPattern`, `parseDateByFormat` |
|
|
700
|
-
| Universal format | `formatDate`, `formatDateRange`
|
|
710
|
+
| Universal format | `formatDate`, `formatDateRange`, `formatInstantDateTime` |
|
|
701
711
|
| UI wrappers | все `formatDateAsDate*`, `formatDateAsMonth*`, `formatDateAsTime*`, `formatDateAsDatetime*` |
|
|
702
712
|
| Machine wrappers | `formatDateAsAbapYear`, `formatDateAsAbapMonth`, `formatDateAsAbapDate`, `formatDateAsAbapDatetime`, `formatDateAsODataDate`, `formatDateAsODataDatetime`, `formatDateAsODataTime` |
|
|
703
713
|
| Presets | `DATE_FORMAT_DEFAULTS`, `DEFAULT_DATE_PRESET_NAMES`, `DATE_FORMAT_STYLE_PRESET_NAMES`, `getDatePreset`, `getDatePresetNames`, `registerDatePreset`, `resetDatePresets`, `resolveDateFormatName`, `resolveDateFormatPreset`, type guards |
|
package/src/formulas/README.mdx
CHANGED
|
@@ -17,12 +17,10 @@ import { Meta } from "@storybook/addon-docs/blocks";
|
|
|
17
17
|
контролируемая причина ошибки выполнения
|
|
18
18
|
```
|
|
19
19
|
|
|
20
|
-
README рассчитан на разработчика без доступа к исходному коду. Здесь описано точное поведение всего публичного API, включая преобразование значений, реестр, validation, ошибки и связь с formatter pipeline.
|
|
21
|
-
|
|
22
20
|
## Содержание
|
|
23
21
|
|
|
24
22
|
- [Назначение и границы](#назначение-и-границы)
|
|
25
|
-
- [
|
|
23
|
+
- [Импорт](#импорт)
|
|
26
24
|
- [Быстрый старт](#быстрый-старт)
|
|
27
25
|
- [Основные понятия](#основные-понятия)
|
|
28
26
|
- [Описание формулы](#описание-формулы)
|
|
@@ -71,11 +69,7 @@ Host-приложение владеет прикладными `TableFormulaDef
|
|
|
71
69
|
|
|
72
70
|
Сериализуемая конфигурация колонки хранит только стабильный `formulaId` и ordered dependencies. Реальная функция остаётся доверенным кодом приложения.
|
|
73
71
|
|
|
74
|
-
##
|
|
75
|
-
|
|
76
|
-
```bash
|
|
77
|
-
npm install @ryuzaki13/react-foundation-lib
|
|
78
|
-
```
|
|
72
|
+
## Импорт
|
|
79
73
|
|
|
80
74
|
Используйте только опубликованный package subpath `/formulas`:
|
|
81
75
|
|
package/src/http/README.mdx
CHANGED
|
@@ -2,14 +2,14 @@ import { Meta } from "@storybook/addon-docs/blocks";
|
|
|
2
2
|
|
|
3
3
|
<Meta title="Foundation Lib/HTTP/Headers and Text Response" />
|
|
4
4
|
|
|
5
|
-
# HTTP headers и текстовые ответы
|
|
5
|
+
# HTTP headers и текстовые ответы
|
|
6
6
|
|
|
7
7
|
Модуль создаёт стандартный набор HTTP-заголовков запрета кеширования и обычный `Response` с UTF-8 plain text.
|
|
8
8
|
|
|
9
9
|
## Содержание
|
|
10
10
|
|
|
11
11
|
- [Назначение и границы](#назначение-и-границы)
|
|
12
|
-
- [
|
|
12
|
+
- [Импорт](#импорт)
|
|
13
13
|
- [`createNoStoreHeaders`](#createnostoreheaders)
|
|
14
14
|
- [`createTextHttpResponse`](#createtexthttpresponse)
|
|
15
15
|
- [Runtime и безопасность](#runtime-и-безопасность)
|
|
@@ -26,7 +26,7 @@ Headers с no-store + Response(text/plain; charset=UTF-8)
|
|
|
26
26
|
|
|
27
27
|
Модуль не выполняет `fetch`, не сериализует JSON, не задаёт CORS, CSP, cookies или authorization и не превращает ошибки transport в response автоматически.
|
|
28
28
|
|
|
29
|
-
##
|
|
29
|
+
## Импорт
|
|
30
30
|
|
|
31
31
|
```ts
|
|
32
32
|
import { createNoStoreHeaders, createTextHttpResponse } from "@ryuzaki13/react-foundation-lib/http";
|
package/src/media/README.mdx
CHANGED
|
@@ -2,7 +2,7 @@ import { Meta } from "@storybook/addon-docs/blocks";
|
|
|
2
2
|
|
|
3
3
|
<Meta title="Foundation Lib/API/Media" />
|
|
4
4
|
|
|
5
|
-
# Адаптивность и media queries
|
|
5
|
+
# Адаптивность и media queries
|
|
6
6
|
|
|
7
7
|
Модуль `media` содержит общий низкоуровневый контракт адаптивности для React-приложений:
|
|
8
8
|
|
|
@@ -14,12 +14,12 @@ import { Meta } from "@storybook/addon-docs/blocks";
|
|
|
14
14
|
- преобразование количества пикселей относительно размера `em`;
|
|
15
15
|
- расчёт проектной высоты control.
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
Ниже отдельно объясняются базовые понятия CSS и React, точные значения, fallback-порядок, SSR, hydration, подписки, cleanup, ограничения и все публичные exports.
|
|
18
18
|
|
|
19
19
|
## Содержание
|
|
20
20
|
|
|
21
21
|
- [Граница ответственности](#граница-ответственности)
|
|
22
|
-
- [
|
|
22
|
+
- [Импорт](#импорт)
|
|
23
23
|
- [Минимальные понятия](#минимальные-понятия)
|
|
24
24
|
- [Как выбрать API](#как-выбрать-api)
|
|
25
25
|
- [Проектные брейкпоинты](#проектные-брейкпоинты)
|
|
@@ -82,7 +82,7 @@ import { Meta } from "@storybook/addon-docs/blocks";
|
|
|
82
82
|
|
|
83
83
|
Если задача решается только стилями, сначала используйте CSS. JavaScript hook нужен, когда media query действительно влияет на вычисления, выбор поведения, параметры сторонней библиотеки или внешний store.
|
|
84
84
|
|
|
85
|
-
##
|
|
85
|
+
## Импорт
|
|
86
86
|
|
|
87
87
|
Установите пакет:
|
|
88
88
|
|
|
@@ -22,12 +22,12 @@ import { Meta } from "@storybook/addon-docs/blocks";
|
|
|
22
22
|
|
|
23
23
|
Для ошибок внутри формы лучше показывать сообщение рядом с полем. Уведомление — дополнительный, а не единственный канал обратной связи.
|
|
24
24
|
|
|
25
|
-
##
|
|
25
|
+
## Импорт
|
|
26
26
|
|
|
27
27
|
Модулю нужен peer dependency `zustand`.
|
|
28
28
|
|
|
29
29
|
```bash
|
|
30
|
-
npm install
|
|
30
|
+
npm install zustand
|
|
31
31
|
```
|
|
32
32
|
|
|
33
33
|
```ts
|
|
@@ -15,14 +15,14 @@ import { Meta } from "@storybook/addon-docs/blocks";
|
|
|
15
15
|
- поиска пар «код + текст» в справочных коллекциях;
|
|
16
16
|
- хранения общих настроек OData-справочников.
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+
В примерах объясняется не только вызов функции, но и смысл входных данных, результат, ограничения и типичные ошибки.
|
|
19
19
|
|
|
20
20
|
> Ранее helpers справочных коллекций публиковались через отдельный subpath `@ryuzaki13/react-foundation-lib/odata`. Теперь этот код входит в `odata-service`. Старый subpath удалён без compatibility alias.
|
|
21
21
|
|
|
22
22
|
## Содержание
|
|
23
23
|
|
|
24
24
|
- [Что делает и чего не делает модуль](#что-делает-и-чего-не-делает-модуль)
|
|
25
|
-
- [
|
|
25
|
+
- [Импорт](#импорт)
|
|
26
26
|
- [Зависимости и среда выполнения](#зависимости-и-среда-выполнения)
|
|
27
27
|
- [OData V2 простыми словами](#odata-v2-простыми-словами)
|
|
28
28
|
- [Быстрый старт](#быстрый-старт)
|
|
@@ -99,13 +99,7 @@ host entity / feature / widget
|
|
|
99
99
|
бизнес-правила, экран, пользовательский сценарий
|
|
100
100
|
```
|
|
101
101
|
|
|
102
|
-
##
|
|
103
|
-
|
|
104
|
-
Установите пакет:
|
|
105
|
-
|
|
106
|
-
```bash
|
|
107
|
-
npm install @ryuzaki13/react-foundation-lib
|
|
108
|
-
```
|
|
102
|
+
## Импорт
|
|
109
103
|
|
|
110
104
|
Для полного entrypoint также разрешите совместимые peer dependencies, если package manager не сделал этого автоматически:
|
|
111
105
|
|
package/src/presets/README.mdx
CHANGED
|
@@ -2,11 +2,11 @@ import { Meta } from "@storybook/addon-docs/blocks";
|
|
|
2
2
|
|
|
3
3
|
<Meta title="Foundation Lib/Data/Presets" />
|
|
4
4
|
|
|
5
|
-
# Общие preset helpers
|
|
5
|
+
# Общие preset helpers
|
|
6
6
|
|
|
7
7
|
Модуль проверяет восстановленные preset ids, сопоставляет их с option objects и ищет одну option по id.
|
|
8
8
|
|
|
9
|
-
##
|
|
9
|
+
## Импорт
|
|
10
10
|
|
|
11
11
|
```ts
|
|
12
12
|
import { getPresetOption, normalizePresetIds, resolvePresetOptionsByIds } from "@ryuzaki13/react-foundation-lib/presets";
|
package/src/pwa/README.mdx
CHANGED
|
@@ -13,14 +13,6 @@ import { Meta } from "@storybook/addon-docs/blocks";
|
|
|
13
13
|
|
|
14
14
|
Используйте точный subpath. Внутренний файл `serviceWorker` не является самостоятельным публичным export, даже если отдельные функции используются самим hook.
|
|
15
15
|
|
|
16
|
-
## Установка
|
|
17
|
-
|
|
18
|
-
Для `useServiceWorkerUpdate` нужен React. Cache policy не имеет React-зависимости.
|
|
19
|
-
|
|
20
|
-
```bash
|
|
21
|
-
npm install @ryuzaki13/react-foundation-lib react
|
|
22
|
-
```
|
|
23
|
-
|
|
24
16
|
## Часть 1. Обновление Service Worker
|
|
25
17
|
|
|
26
18
|
### Задача hook
|
|
@@ -14,14 +14,14 @@ import { Meta } from "@storybook/addon-docs/blocks";
|
|
|
14
14
|
- синхронизирует cache data и invalidation между вкладками;
|
|
15
15
|
- предоставляет низкоуровневые helpers для optimistic update и rollback.
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
Здесь описаны жизненный цикл данных, точное поведение функций, ограничения browser API и полный публичный API.
|
|
18
18
|
|
|
19
19
|
> Ранее optimistic update был описан отдельным документом. Теперь весь смысл, примеры, ограничения и API находятся только на этой странице.
|
|
20
20
|
|
|
21
21
|
## Содержание
|
|
22
22
|
|
|
23
23
|
- [Назначение и границы](#назначение-и-границы)
|
|
24
|
-
- [
|
|
24
|
+
- [Импорт](#импорт)
|
|
25
25
|
- [Обязательные build-time constants](#обязательные-build-time-constants)
|
|
26
26
|
- [Основные понятия TanStack Query](#основные-понятия-tanstack-query)
|
|
27
27
|
- [Как выбрать cache strategy](#как-выбрать-cache-strategy)
|
|
@@ -92,15 +92,12 @@ queryOptions/useQuery/useMutation
|
|
|
92
92
|
|
|
93
93
|
Broadcast не является четвёртым хранилищем. Он только передаёт изменения между уже работающими вкладками.
|
|
94
94
|
|
|
95
|
-
##
|
|
95
|
+
## Импорт
|
|
96
96
|
|
|
97
|
-
Установите
|
|
97
|
+
Установите совместимые peer dependencies:
|
|
98
98
|
|
|
99
99
|
```bash
|
|
100
|
-
npm install @
|
|
101
|
-
npm install react @tanstack/react-query \
|
|
102
|
-
@tanstack/query-persist-client-core \
|
|
103
|
-
@tanstack/query-broadcast-client-experimental
|
|
100
|
+
npm install react @tanstack/react-query @tanstack/query-persist-client-core @tanstack/query-broadcast-client-experimental
|
|
104
101
|
```
|
|
105
102
|
|
|
106
103
|
Публичный импорт:
|