@reformer/core 7.0.0-beta.2 → 7.0.0-beta.3
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/llms.txt +18 -9
- package/package.json +2 -2
package/llms.txt
CHANGED
|
@@ -888,6 +888,10 @@ UI-конфиг (`component`/`componentProps`) + валидаторы. Знач
|
|
|
888
888
|
}
|
|
889
889
|
```
|
|
890
890
|
|
|
891
|
+
> `disabled` — **top-level поле узла** (начальное состояние); дальше управляется методами
|
|
892
|
+
> `form.field.disable()`/`enable()` и оператором `enableWhen`. `componentProps.disabled` — это
|
|
893
|
+
> UI-проп и на состояние узла **не влияет** (частая причина «computed-поле остаётся редактируемым»).
|
|
894
|
+
|
|
891
895
|
### Primitive Fields
|
|
892
896
|
|
|
893
897
|
```typescript
|
|
@@ -983,6 +987,11 @@ form.address.city.value.value; // текущее значение (через
|
|
|
983
987
|
model.items.push({ id: '1', name: 'Item' }); // операции над массивом — на модели
|
|
984
988
|
```
|
|
985
989
|
|
|
990
|
+
> **Тип `schema` в M1 — `unknown`, не `FormSchema<T>`.** Это осознанно: интерпретатор обходит
|
|
991
|
+
> произвольную структуру и собирает листья `{ value: signal, component?, ... }`, поэтому обёртки
|
|
992
|
+
> (`{ children: [...] }`, wizard/steps) компилируются. Строгий `FormSchema<T>` (keyed-map по полям
|
|
993
|
+
> `T`) применяется только на legacy-пути `createForm(schema)` без модели.
|
|
994
|
+
|
|
986
995
|
### createForm Returns a Proxy
|
|
987
996
|
|
|
988
997
|
```typescript
|
|
@@ -1266,10 +1275,6 @@ function MultiStepForm() {
|
|
|
1266
1275
|
}
|
|
1267
1276
|
```
|
|
1268
1277
|
|
|
1269
|
-
> В монорепо `FormWizard` из `@reformer/ui-kit` принимает колбэки `{ validateStep, validateAll }`,
|
|
1270
|
-
> собранные фабрикой `makeCreditValidationConfig(model)` поверх `validateFormModel`. См.
|
|
1271
|
-
> `complex-multy-step-form/schemas/validation.ts`.
|
|
1272
|
-
|
|
1273
1278
|
## 14. 13. EXTENDED COMMON MISTAKES
|
|
1274
1279
|
|
|
1275
1280
|
### Reuse via apply / applyEach — не дублируй код
|
|
@@ -1767,6 +1772,10 @@ const behavior = defineFormBehavior<MyForm>(({ model }) => {
|
|
|
1767
1772
|
});
|
|
1768
1773
|
```
|
|
1769
1774
|
|
|
1775
|
+
> **Не читай `model.get()` внутри `compute`/`when`** — это нереактивный снимок, зависимость не
|
|
1776
|
+
> отследится и пересчёта не будет. Читай поля по отдельности (`model.field` или `model.$.field.value`).
|
|
1777
|
+
> `model.get()` — только вне реактивного контекста (в `onChange`, обработчиках событий).
|
|
1778
|
+
|
|
1770
1779
|
### computeFrom — явный список источников
|
|
1771
1780
|
|
|
1772
1781
|
Когда нужен явный контроль зависимостей — `computeFrom(sources, target, fn)`. Значения
|
|
@@ -2076,7 +2085,7 @@ export const orderBehavior = defineFormBehavior<OrderForm>(({ model }) => {
|
|
|
2076
2085
|
});
|
|
2077
2086
|
```
|
|
2078
2087
|
|
|
2079
|
-
|
|
2088
|
+
Пример: `copyFrom(model.$.shippingAddress, model.$.billingAddress, { when: () => model.useShippingAsBilling })`.
|
|
2080
2089
|
|
|
2081
2090
|
### Копирование группы целиком
|
|
2082
2091
|
|
|
@@ -2201,7 +2210,7 @@ export const mirrorBehavior = defineFormBehavior<MirrorForm>(({ model }) => {
|
|
|
2201
2210
|
});
|
|
2202
2211
|
```
|
|
2203
2212
|
|
|
2204
|
-
|
|
2213
|
+
Пример: `syncFields(model.$.syncField1, model.$.syncField2)`.
|
|
2205
2214
|
|
|
2206
2215
|
### С трансформацией — нормализация при прямой записи
|
|
2207
2216
|
|
|
@@ -2314,7 +2323,7 @@ export const checkoutBehavior = defineFormBehavior<CheckoutForm>(({ model }) =>
|
|
|
2314
2323
|
});
|
|
2315
2324
|
```
|
|
2316
2325
|
|
|
2317
|
-
|
|
2326
|
+
Пример: `resetWhen(model.$.cardNumber, () => model.paymentType !== 'card', { resetValue: '' })`.
|
|
2318
2327
|
|
|
2319
2328
|
### resetValue для числовых полей
|
|
2320
2329
|
|
|
@@ -2430,7 +2439,7 @@ export const promoBehavior = defineFormBehavior<PromoForm>(({ model }) => {
|
|
|
2430
2439
|
});
|
|
2431
2440
|
```
|
|
2432
2441
|
|
|
2433
|
-
|
|
2442
|
+
Пример: `transformValue(model.$.uppercaseField, (v) => (v ?? '').toUpperCase())`.
|
|
2434
2443
|
|
|
2435
2444
|
### Несколько трансформаций
|
|
2436
2445
|
|
|
@@ -2565,7 +2574,7 @@ export const paymentBehavior = defineFormBehavior<PaymentForm>(({ model }) => {
|
|
|
2565
2574
|
});
|
|
2566
2575
|
```
|
|
2567
2576
|
|
|
2568
|
-
|
|
2577
|
+
Пример: `revalidateWhen([model.$.maxAmount], () => validateFormModel(model, schema))`.
|
|
2569
2578
|
|
|
2570
2579
|
### Несколько триггеров
|
|
2571
2580
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@reformer/core",
|
|
3
|
-
"version": "7.0.0-beta.
|
|
3
|
+
"version": "7.0.0-beta.3",
|
|
4
4
|
"description": "Reactive form state management library for React with signals-based architecture",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -122,7 +122,7 @@
|
|
|
122
122
|
"dist",
|
|
123
123
|
"README.md",
|
|
124
124
|
"LICENSE",
|
|
125
|
-
"
|
|
125
|
+
"llms.txt"
|
|
126
126
|
],
|
|
127
127
|
"peerDependencies": {
|
|
128
128
|
"@preact/signals-core": "^1.8.0",
|