@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
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/currency/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC"}
|
package/dist/currency/index.js
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
//#region src/currency/currency.ts
|
|
2
|
-
var e = "p_curr";
|
|
3
|
-
function t(e, t, n) {
|
|
4
|
-
if (!t || !n) return e;
|
|
5
|
-
let r = t[n === "internal" ? 0 : 1]?.trim() ?? "", i = r.startsWith(",");
|
|
6
|
-
return r ? `${e}${i ? "" : " "}${r}` : e;
|
|
7
|
-
}
|
|
8
|
-
function n(t) {
|
|
9
|
-
if (!t || !Object.prototype.hasOwnProperty.call(t, e)) return null;
|
|
10
|
-
let n = t[e]?.value;
|
|
11
|
-
return n === !1 ? "internal" : n === !0 ? "rub" : null;
|
|
12
|
-
}
|
|
13
|
-
//#endregion
|
|
14
|
-
export { t as resolveCurrencyAwareLabel, n as resolveCurrencyModeFromODataParameters };
|
|
15
|
-
|
|
16
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../src/currency/currency.ts"],"sourcesContent":["import { type WrappedODataParameters } from \"../odata-service\";\n\nconst CURRENCY_PARAMETER_ID = \"p_curr\";\n\n/** Runtime-режим валюты, который задается общим OData-параметром страницы. */\nexport type CurrencyMode = \"internal\" | \"rub\";\n\n/** Собирает display-подпись с валютным суффиксом. */\nexport function resolveCurrencyAwareLabel(\n\tlabel: string,\n\tcurrencyLabels: readonly [string, string] | undefined,\n\tcurrencyMode: CurrencyMode | null | undefined\n): string {\n\tif (!currencyLabels || !currencyMode) {\n\t\treturn label;\n\t}\n\n\tconst currencyLabelIndex = currencyMode === \"internal\" ? 0 : 1;\n\tconst currencyLabel = currencyLabels[currencyLabelIndex]?.trim() ?? \"\";\n\tconst hasComma = currencyLabel.startsWith(\",\");\n\n\t// NOTE: нужно закрепить правило, что запятая ставится в currencyLabel\n\treturn currencyLabel ? `${label}${hasComma ? \"\" : \" \"}${currencyLabel}` : label;\n}\n\n/** Определяет режим валюты по общему OData-параметру `p_curr`. */\nexport function resolveCurrencyModeFromODataParameters(params?: WrappedODataParameters): CurrencyMode | null {\n\tif (!params || !Object.prototype.hasOwnProperty.call(params, CURRENCY_PARAMETER_ID)) {\n\t\treturn null;\n\t}\n\n\tconst value = params[CURRENCY_PARAMETER_ID]?.value;\n\tif (value === false) return \"internal\";\n\tif (value === true) return \"rub\";\n\n\treturn null;\n}\n"],"mappings":";AAEA,IAAM,IAAwB;AAM9B,SAAgB,EACf,GACA,GACA,GACS;CACT,IAAI,CAAC,KAAkB,CAAC,GACvB,OAAO;CAIR,IAAM,IAAgB,EADK,MAAiB,aAAa,IAAI,EACL,EAAE,KAAK,KAAK,IAC9D,IAAW,EAAc,WAAW,GAAG;CAG7C,OAAO,IAAgB,GAAG,IAAQ,IAAW,KAAK,MAAM,MAAkB;AAC3E;AAGA,SAAgB,EAAuC,GAAsD;CAC5G,IAAI,CAAC,KAAU,CAAC,OAAO,UAAU,eAAe,KAAK,GAAQ,CAAqB,GACjF,OAAO;CAGR,IAAM,IAAQ,EAAO,EAAsB,EAAE;CAI7C,OAHI,MAAU,KAAc,aACxB,MAAU,KAAa,QAEpB;AACR"}
|
package/src/currency/README.mdx
DELETED
|
@@ -1,155 +0,0 @@
|
|
|
1
|
-
import { Meta } from "@storybook/addon-docs/blocks";
|
|
2
|
-
|
|
3
|
-
<Meta title="Foundation Lib/Data/Currency" />
|
|
4
|
-
|
|
5
|
-
# Валютные подписи через `@ryuzaki13/react-foundation-lib/currency`
|
|
6
|
-
|
|
7
|
-
Модуль связывает общий OData-параметр `p_curr` с отображаемой подписью показателя. Он определяет один из двух режимов валюты и добавляет соответствующий суффикс к label.
|
|
8
|
-
|
|
9
|
-
## Содержание
|
|
10
|
-
|
|
11
|
-
- [Назначение](#назначение)
|
|
12
|
-
- [Установка и импорт](#установка-и-импорт)
|
|
13
|
-
- [`CurrencyMode`](#currencymode)
|
|
14
|
-
- [`resolveCurrencyModeFromODataParameters`](#resolvecurrencymodefromodataparameters)
|
|
15
|
-
- [`resolveCurrencyAwareLabel`](#resolvecurrencyawarelabel)
|
|
16
|
-
- [Готовый pipeline](#готовый-pipeline)
|
|
17
|
-
- [Ограничения и ошибки](#ограничения-и-ошибки)
|
|
18
|
-
- [API-справочник](#api-справочник)
|
|
19
|
-
|
|
20
|
-
## Назначение
|
|
21
|
-
|
|
22
|
-
```text
|
|
23
|
-
wrapped OData params
|
|
24
|
-
{ p_curr: { value: true } }
|
|
25
|
-
│
|
|
26
|
-
▼
|
|
27
|
-
CurrencyMode "rub"
|
|
28
|
-
│
|
|
29
|
-
▼
|
|
30
|
-
"Выручка" + ["за тн", "руб/тн"]
|
|
31
|
-
│
|
|
32
|
-
▼
|
|
33
|
-
"Выручка руб/тн"
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
Модуль не форматирует денежное число, не конвертирует валюту и не строит OData query. Для чисел используйте `/formatters`, для OData params — `/odata-service`.
|
|
37
|
-
|
|
38
|
-
## Установка и импорт
|
|
39
|
-
|
|
40
|
-
```ts
|
|
41
|
-
import { resolveCurrencyAwareLabel, resolveCurrencyModeFromODataParameters } from "@ryuzaki13/react-foundation-lib/currency";
|
|
42
|
-
|
|
43
|
-
import type { CurrencyMode } from "@ryuzaki13/react-foundation-lib/currency";
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
Модуль ESM, не требует React или browser API. Параметры должны иметь публичную wrapped-форму из `/odata-service`.
|
|
47
|
-
|
|
48
|
-
## `CurrencyMode`
|
|
49
|
-
|
|
50
|
-
```ts
|
|
51
|
-
type CurrencyMode = "internal" | "rub";
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
- `internal` — внутренний режим;
|
|
55
|
-
- `rub` — рублёвый режим.
|
|
56
|
-
|
|
57
|
-
`null` используется resolver-функцией, когда режим определить нельзя.
|
|
58
|
-
|
|
59
|
-
## `resolveCurrencyModeFromODataParameters`
|
|
60
|
-
|
|
61
|
-
```ts
|
|
62
|
-
const mode = resolveCurrencyModeFromODataParameters(params);
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
Функция читает только собственное поле `p_curr.value`:
|
|
66
|
-
|
|
67
|
-
| Вход | Результат |
|
|
68
|
-
| ------------------------------- | ------------ |
|
|
69
|
-
| параметров нет | `null` |
|
|
70
|
-
| поля `p_curr` нет | `null` |
|
|
71
|
-
| `{ p_curr: { value: false } }` | `"internal"` |
|
|
72
|
-
| `{ p_curr: { value: true } }` | `"rub"` |
|
|
73
|
-
| `{ p_curr: { value: "true" } }` | `null` |
|
|
74
|
-
| `{ p_curr: { value: 1 } }` | `null` |
|
|
75
|
-
|
|
76
|
-
Строка `"true"` намеренно не приводится к boolean. Нормализуйте внешний payload на OData boundary, а не внутри UI label.
|
|
77
|
-
|
|
78
|
-
Пример с helper `/odata-service`:
|
|
79
|
-
|
|
80
|
-
```ts
|
|
81
|
-
import { wrapODataParams } from "@ryuzaki13/react-foundation-lib/odata-service";
|
|
82
|
-
|
|
83
|
-
const params = wrapODataParams({ p_curr: true });
|
|
84
|
-
const mode = resolveCurrencyModeFromODataParameters(params);
|
|
85
|
-
// "rub".
|
|
86
|
-
```
|
|
87
|
-
|
|
88
|
-
## `resolveCurrencyAwareLabel`
|
|
89
|
-
|
|
90
|
-
```ts
|
|
91
|
-
const label = resolveCurrencyAwareLabel("Выручка", ["за тн", "руб/тн"], "rub");
|
|
92
|
-
// "Выручка руб/тн".
|
|
93
|
-
```
|
|
94
|
-
|
|
95
|
-
Пара `currencyLabels` имеет фиксированный смысл:
|
|
96
|
-
|
|
97
|
-
```ts
|
|
98
|
-
readonly[(internalLabel, rubLabel)];
|
|
99
|
-
```
|
|
100
|
-
|
|
101
|
-
| Mode | Индекс суффикса |
|
|
102
|
-
| ---------- | --------------: |
|
|
103
|
-
| `internal` | 0 |
|
|
104
|
-
| `rub` | 1 |
|
|
105
|
-
|
|
106
|
-
Точные правила:
|
|
107
|
-
|
|
108
|
-
- без `currencyLabels` возвращается исходный `label`;
|
|
109
|
-
- при `null`/`undefined` mode возвращается исходный `label`;
|
|
110
|
-
- суффикс обрезается через `trim()`;
|
|
111
|
-
- пустой суффикс не добавляется;
|
|
112
|
-
- обычно между label и суффиксом добавляется один пробел;
|
|
113
|
-
- если обрезанный суффикс начинается с запятой, дополнительный пробел не добавляется.
|
|
114
|
-
|
|
115
|
-
```ts
|
|
116
|
-
resolveCurrencyAwareLabel("Выручка", [", за тн", ", руб/тн"], "rub");
|
|
117
|
-
// "Выручка, руб/тн".
|
|
118
|
-
|
|
119
|
-
resolveCurrencyAwareLabel("Выручка", ["", " "], "rub");
|
|
120
|
-
// "Выручка".
|
|
121
|
-
```
|
|
122
|
-
|
|
123
|
-
Исходный `label` не обрезается и не нормализуется.
|
|
124
|
-
|
|
125
|
-
## Готовый pipeline
|
|
126
|
-
|
|
127
|
-
```ts
|
|
128
|
-
function buildMetricLabel(
|
|
129
|
-
baseLabel: string,
|
|
130
|
-
currencyLabels: readonly [string, string] | undefined,
|
|
131
|
-
params: WrappedODataParameters | undefined
|
|
132
|
-
) {
|
|
133
|
-
const mode = resolveCurrencyModeFromODataParameters(params);
|
|
134
|
-
return resolveCurrencyAwareLabel(baseLabel, currencyLabels, mode);
|
|
135
|
-
}
|
|
136
|
-
```
|
|
137
|
-
|
|
138
|
-
Resolver чистый: одинаковый вход даёт одинаковую строку и не меняет params/labels.
|
|
139
|
-
|
|
140
|
-
## Ограничения и ошибки
|
|
141
|
-
|
|
142
|
-
- Поддерживается только параметр с точным id `p_curr`.
|
|
143
|
-
- Поддерживаются только два режима; код валюты `USD`, `EUR` и exchange rate не обрабатываются.
|
|
144
|
-
- Функция не проверяет грамматику и единицы измерения.
|
|
145
|
-
- Запятая должна входить в сам суффикс, если нужна форма `"Выручка, руб"`.
|
|
146
|
-
- Не передавайте плоский `{ p_curr: true }`: ожидается `{ p_curr: { value: true } }`.
|
|
147
|
-
- Не используйте label helper для финансовых вычислений.
|
|
148
|
-
|
|
149
|
-
## API-справочник
|
|
150
|
-
|
|
151
|
-
| Export | Результат |
|
|
152
|
-
| ---------------------------------------- | ----------------------- |
|
|
153
|
-
| `CurrencyMode` | `"internal" \| "rub"` |
|
|
154
|
-
| `resolveCurrencyModeFromODataParameters` | `CurrencyMode \| null` |
|
|
155
|
-
| `resolveCurrencyAwareLabel` | Итоговая display-строка |
|