@zeroman.yang/react-auto-components 0.1.2 → 0.1.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.
Files changed (106) hide show
  1. package/README.md +17 -3
  2. package/dist/adapters/xlsx.d.ts +7 -1
  3. package/dist/components/AutoChat/types.d.ts +7 -0
  4. package/dist/components/AutoDialog/index.d.ts +15 -0
  5. package/dist/components/AutoForm/types.d.ts +28 -0
  6. package/dist/components/AutoMenu/index.d.ts +7 -0
  7. package/dist/components/AutoSearch/index.d.ts +40 -0
  8. package/dist/components/AutoTable/registry.d.ts +8 -0
  9. package/dist/components/AutoTable/types.d.ts +69 -3
  10. package/dist/components/AutoTabs/index.d.ts +21 -2
  11. package/dist/components/AutoTabs/useAutoTabsWorkspace.d.ts +65 -0
  12. package/dist/core/AutoConfigProvider.d.ts +27 -0
  13. package/dist/core/config.d.ts +6 -1
  14. package/dist/core/dev.d.ts +27 -0
  15. package/dist/core/errors.d.ts +20 -0
  16. package/dist/core/query.d.ts +9 -0
  17. package/dist/core/registry.d.ts +33 -0
  18. package/dist/core/testid.d.ts +5 -0
  19. package/dist/core/types.d.ts +320 -17
  20. package/dist/errors-BT5WUIOV.js +28 -0
  21. package/dist/index.d.ts +4 -1
  22. package/dist/index.js +1889 -1465
  23. package/dist/style.css +1 -1
  24. package/dist/xlsx.js +13 -6
  25. package/docs/auto-dialog.md +64 -0
  26. package/docs/auto-form.md +64 -0
  27. package/docs/auto-menu.md +47 -0
  28. package/docs/auto-search.md +60 -0
  29. package/docs/auto-table.md +144 -0
  30. package/docs/auto-tabs.md +99 -0
  31. package/docs/errors.md +118 -0
  32. package/docs/i18n/de/README.md +8 -2
  33. package/docs/i18n/de/auto-dialog.md +23 -0
  34. package/docs/i18n/de/auto-form.md +35 -0
  35. package/docs/i18n/de/auto-menu.md +23 -0
  36. package/docs/i18n/de/auto-search.md +32 -0
  37. package/docs/i18n/de/auto-table.md +31 -0
  38. package/docs/i18n/de/auto-tabs.md +25 -0
  39. package/docs/i18n/de/errors.md +110 -0
  40. package/docs/i18n/es/README.md +8 -2
  41. package/docs/i18n/es/auto-dialog.md +23 -0
  42. package/docs/i18n/es/auto-form.md +35 -0
  43. package/docs/i18n/es/auto-menu.md +23 -0
  44. package/docs/i18n/es/auto-search.md +32 -0
  45. package/docs/i18n/es/auto-table.md +31 -0
  46. package/docs/i18n/es/auto-tabs.md +25 -0
  47. package/docs/i18n/es/errors.md +110 -0
  48. package/docs/i18n/fr/README.md +8 -2
  49. package/docs/i18n/fr/auto-dialog.md +23 -0
  50. package/docs/i18n/fr/auto-form.md +35 -0
  51. package/docs/i18n/fr/auto-menu.md +23 -0
  52. package/docs/i18n/fr/auto-search.md +32 -0
  53. package/docs/i18n/fr/auto-table.md +31 -0
  54. package/docs/i18n/fr/auto-tabs.md +25 -0
  55. package/docs/i18n/fr/errors.md +110 -0
  56. package/docs/i18n/ja/README.md +8 -2
  57. package/docs/i18n/ja/auto-dialog.md +23 -0
  58. package/docs/i18n/ja/auto-form.md +36 -0
  59. package/docs/i18n/ja/auto-menu.md +23 -0
  60. package/docs/i18n/ja/auto-search.md +34 -0
  61. package/docs/i18n/ja/auto-table.md +31 -0
  62. package/docs/i18n/ja/auto-tabs.md +25 -0
  63. package/docs/i18n/ja/errors.md +110 -0
  64. package/docs/i18n/ko/README.md +8 -2
  65. package/docs/i18n/ko/auto-dialog.md +23 -0
  66. package/docs/i18n/ko/auto-form.md +35 -0
  67. package/docs/i18n/ko/auto-menu.md +23 -0
  68. package/docs/i18n/ko/auto-search.md +32 -0
  69. package/docs/i18n/ko/auto-table.md +31 -0
  70. package/docs/i18n/ko/auto-tabs.md +25 -0
  71. package/docs/i18n/ko/errors.md +110 -0
  72. package/docs/i18n/pt-BR/README.md +8 -2
  73. package/docs/i18n/pt-BR/auto-dialog.md +23 -0
  74. package/docs/i18n/pt-BR/auto-form.md +35 -0
  75. package/docs/i18n/pt-BR/auto-menu.md +23 -0
  76. package/docs/i18n/pt-BR/auto-search.md +32 -0
  77. package/docs/i18n/pt-BR/auto-table.md +31 -0
  78. package/docs/i18n/pt-BR/auto-tabs.md +25 -0
  79. package/docs/i18n/pt-BR/errors.md +110 -0
  80. package/docs/i18n/ru/README.md +8 -2
  81. package/docs/i18n/ru/auto-dialog.md +23 -0
  82. package/docs/i18n/ru/auto-form.md +35 -0
  83. package/docs/i18n/ru/auto-menu.md +23 -0
  84. package/docs/i18n/ru/auto-search.md +32 -0
  85. package/docs/i18n/ru/auto-table.md +31 -0
  86. package/docs/i18n/ru/auto-tabs.md +25 -0
  87. package/docs/i18n/ru/errors.md +110 -0
  88. package/docs/i18n/zh-CN/README.md +8 -2
  89. package/docs/i18n/zh-CN/auto-dialog.md +64 -0
  90. package/docs/i18n/zh-CN/auto-form.md +62 -0
  91. package/docs/i18n/zh-CN/auto-menu.md +47 -0
  92. package/docs/i18n/zh-CN/auto-search.md +55 -0
  93. package/docs/i18n/zh-CN/auto-table.md +62 -0
  94. package/docs/i18n/zh-CN/auto-tabs.md +99 -0
  95. package/docs/i18n/zh-CN/errors.md +112 -0
  96. package/docs/i18n/zh-TW/README.md +8 -2
  97. package/docs/i18n/zh-TW/auto-dialog.md +64 -0
  98. package/docs/i18n/zh-TW/auto-form.md +62 -0
  99. package/docs/i18n/zh-TW/auto-menu.md +47 -0
  100. package/docs/i18n/zh-TW/auto-search.md +55 -0
  101. package/docs/i18n/zh-TW/auto-table.md +62 -0
  102. package/docs/i18n/zh-TW/auto-tabs.md +44 -0
  103. package/docs/i18n/zh-TW/errors.md +112 -0
  104. package/llms.txt +69 -0
  105. package/package.json +18 -2
  106. package/dist/components/AutoSearchPanel/index.d.ts +0 -21
@@ -0,0 +1,36 @@
1
+ # AutoForm
2
+
3
+ [English](../../auto-form.md) | [简体中文](../zh-CN/auto-form.md) | [繁體中文](../zh-TW/auto-form.md) | **日本語** | [한국어](../ko/auto-form.md) | [Español](../es/auto-form.md) | [Français](../fr/auto-form.md) | [Deutsch](../de/auto-form.md) | [Português (Brasil)](../pt-BR/auto-form.md) | [Русский](../ru/auto-form.md)
4
+
5
+ スキーマフォームです。`AutoSearch` と `AutoDialog` も内部で `AutoForm` を描くので、コールバックの規則は同じです。
6
+
7
+ `Field<T>` は `type` の判別共用体です。`options` のない `select`、スカラーの `daterange`、スカラー項目の `match: "between"` は TypeScript エラーです。`AnyField` と `unsafeField()` は逃げ道で、開発モードはなお警告します。コードは [errors.md](errors.md) です。
8
+
9
+ ## 振る舞いとプロパティ
10
+
11
+ | プロパティ | 振る舞い |
12
+ | --- | --- |
13
+ | `fields` | `readonly Field<T>[]`。`type` を省くとテキスト入力です。`name` の重複はマウント時に `RAC-FIELD-DUPLICATE` を投げます。 |
14
+ | `value` | 制御値です。内部状態と違えばコピーしてエラーを消します。親が `onChange` を無視すると入力は戻ります。 |
15
+ | `defaultValue` | 非制御の初期値であり、リセット先です。フィールド側の `defaultValue` が欠けたキーを埋めます。 |
16
+ | `onSubmit(value)` | 検証のあとだけ呼ばれます。**reject または throw:値は残り、`error.message` を表示し、リセットしません。** |
17
+ | `columns` | 既定 `2`。`actions` の既定は `true` です。 |
18
+ | ラベル | `labelPosition` 既定 `"top"`。`labelWidth` 既定 `"auto"`(測定し、フィールド幅の 45% まで)。 |
19
+
20
+ ## コールバックが throw したとき
21
+
22
+ | コールバック | 結果 |
23
+ | --- | --- |
24
+ | `onSubmit` | 捕捉します。下書きは残し、メッセージを出し、リセットしません。 |
25
+ | フィールド `rules` | そのフィールドのエラー文になります。後続の規則は走りません。 |
26
+ | フィールド `onChange` | 捕捉しません。直前の値が残ります。 |
27
+ | `upload` | 拒否は入力の下に出て、値は保存しません。`reset()` は `AbortSignal` を中止し、遅れた結果を捨てます。 |
28
+ | アップロード中の送信 | `validate()` は `false` を返し、`onSubmit` は呼びません。 |
29
+ | `hidden`、`disabled`、権限なし | そのフィールドは `required` でも検証しません。 |
30
+ | `required` が空 | `undefined`、`null`、`""`、空配列は送信を止めます。 |
31
+
32
+ `handle.validate()` は `true` か `false` を resolve し、投げません。
33
+
34
+ ## 前提
35
+
36
+ `style.css` を一度読み込みます。開発モードで `--auto-text` が無いと `RAC-CSS-MISSING` です。`AutoConfigProvider` は任意で、ダイアログは提供しません。
@@ -0,0 +1,23 @@
1
+ # AutoMenu
2
+
3
+ [English](../../auto-menu.md) | [简体中文](../zh-CN/auto-menu.md) | [繁體中文](../zh-TW/auto-menu.md) | **日本語** | [한국어](../ko/auto-menu.md) | [Español](../es/auto-menu.md) | [Français](../fr/auto-menu.md) | [Deutsch](../de/auto-menu.md) | [Português (Brasil)](../pt-BR/auto-menu.md) | [Русский](../ru/auto-menu.md)
4
+
5
+ サイドバーです。パネルには [AutoTabs](auto-tabs.md) を使います。
6
+
7
+ ## 振る舞いとプロパティ
8
+
9
+ | プロパティ | 振る舞い |
10
+ | --- | --- |
11
+ | `items` | `id` は木の中で一意。`hidden` と失敗した `canAccess` は捨てます。祖先を指す `children` は枝ごと捨て、再帰で落ちないようにします。 |
12
+ | `value` | 選択中の葉の id。省くと内部状態です。 |
13
+ | `onChange(id, item, path)` | **捕捉しません。** `path` は根から葉までの id です。子を持つ親は展開を切り替え、選択しません。 |
14
+ | `collapsible` | 既定 `false`。`collapsed` を制御するなら `onCollapsedChange` で自分で更新しないとレールは動きません。**`onCollapsedChange` は捕捉しません。** |
15
+ | `disabled` | その項目と子孫を無効にします。選択は飛ばします。 |
16
+
17
+ 葉を選んでも自分では遷移しません。信号は `onChange` だけです。
18
+
19
+ ## 前提
20
+
21
+ `style.css` を一度。`AutoConfigProvider` は任意です。権限は `config.canAccess` です。
22
+
23
+ アプリのエントリーで `import "@zeroman.yang/react-auto-components/style.css"` を一度読み込んでください。スタイルシートがない場合、開発時に `RAC-CSS-MISSING` を警告します。
@@ -0,0 +1,34 @@
1
+ # AutoSearch
2
+
3
+ [English](../../auto-search.md) | [简体中文](../zh-CN/auto-search.md) | [繁體中文](../zh-TW/auto-search.md) | **日本語** | [한국어](../ko/auto-search.md) | [Español](../es/auto-search.md) | [Français](../fr/auto-search.md) | [Deutsch](../de/auto-search.md) | [Português (Brasil)](../pt-BR/auto-search.md) | [Русский](../ru/auto-search.md)
4
+
5
+ 検索フォームです。内部の `AutoForm` が `QueryNode` と生の値を出します。フィールドの throw は [AutoForm](auto-form.md) と同じです。
6
+
7
+ `AutoSearchPanel` と `AutoSearchPanelProps` は `AutoSearch` と `AutoSearchProps` の非推奨エイリアスです。
8
+
9
+ ## 振る舞いとプロパティ
10
+
11
+ | プロパティ | 振る舞い |
12
+ | --- | --- |
13
+ | `onSearch(query, values)` | 必須です。**throw または reject:内部フォームが捕捉し、値は残り、`error.message` を出します。リセットはしません。** |
14
+ | `mode` | 既定 `"manual"`(検索ボタン)。`"instant"` は変更のたびにも検索します。 |
15
+ | `columns` | 既定 `3`。 |
16
+ | `more: true` | 「さらに」を開くまで隠します。隠したフィールドはクエリに入りません。 |
17
+
18
+ ## クエリの値
19
+
20
+ | `match` | 値 |
21
+ | --- | --- |
22
+ | 省略 | `"eq"`。配列なら `"in"`。 |
23
+ | `"contains"` | 部分文字列。`ignoreCase: true` で大文字小文字を畳みます。 |
24
+ | `"between"` | `[from, to]`。スカラーは `RAC-FIELD-BETWEEN` を警告し、行に一致しません。 |
25
+ | `"isNull"` | null または undefined。入力値は無視します。 |
26
+ | 空 | `undefined`、`null`、`""`、空配列は省きます。`"isNull"` は例外です。 |
27
+
28
+ リセットは `defaultValue` に戻してから検索します。フィールド名が `/^[\w.]+$/` でないと `serializeRsql` は `RAC-QUERY-FIELD` を投げます。
29
+
30
+ ## 前提
31
+
32
+ `style.css` を一度。`AutoConfigProvider` は任意です。
33
+
34
+ アプリのエントリーで `import "@zeroman.yang/react-auto-components/style.css"` を一度読み込んでください。スタイルシートがない場合、開発時に `RAC-CSS-MISSING` を警告します。
@@ -0,0 +1,31 @@
1
+ # AutoTable
2
+
3
+ [English](../../auto-table.md) | [简体中文](../zh-CN/auto-table.md) | [繁體中文](../zh-TW/auto-table.md) | **日本語** | [한국어](../ko/auto-table.md) | [Español](../es/auto-table.md) | [Français](../fr/auto-table.md) | [Deutsch](../de/auto-table.md) | [Português (Brasil)](../pt-BR/auto-table.md) | [Русский](../ru/auto-table.md)
4
+
5
+ ローカルまたはリモートの表です。`data`、`dataSource`、`source` の一つだけを指定します。複数を同時に渡すと型エラーです。検索は [AutoSearch](auto-search.md)、追加と編集は [AutoDialog](auto-dialog.md) と [AutoForm](auto-form.md) に従います。
6
+
7
+ `exportXlsx` は `@zeroman.yang/react-auto-components/xlsx` から読みます。`exceljs` は任意依存です(無ければ `RAC-XLSX-DEP`)。
8
+
9
+ ## 振る舞いとプロパティ
10
+
11
+ | プロパティ | 振る舞い |
12
+ | --- | --- |
13
+ | `id` | 必須。設定キーは `${namespace}:table:${id}`。空なら `RAC-TABLE-ID`。 |
14
+ | `rowKey` | 読み込んだ行で一意。欠落や重複は `RAC-TABLE-ROWID`。選択、展開、`scrollToRow` が使います。 |
15
+ | `dataSource` | **reject:メッセージと再試行ボタン。abort は無視します。** `{ rows, total }` の `total` は絞り込み後の全件数です。 |
16
+ | `pageSize` | 既定 `10`。`pagination` 既定 `true`。`height` 既定 `440`。`"auto"` は高さが決まった親を埋めます。 |
17
+ | `onAdd`、`onEdit`、`onDelete` | **reject または throw:ダイアログは開いたまま `error.message` を出します。** ハンドラがデータを変えていなければ行は変わりません。 |
18
+ | `rowActions` | `onClick` の拒否は捕捉され、約 2.5 秒間ステータス行に表示されます。行は削除されません。 行アクションに `onClick` がなく、`action` が `config.rowActions` の登録済みキーでもない場合、選択時にステータス行へ `RAC-ROW-ACTION` を表示します。`onClick` を指定するか `action` のキーを登録してください。両方ある場合は `onClick` が優先されます。 |
19
+ | `component` | 列の `component` が `AutoConfigProvider` の `config.columns` に未登録の場合、開発時に `RAC-COLUMN-COMPONENT` を警告し、セルは既定の書式を使います。キーを登録するか、列に `render`、`format`、`sort` を指定してください。列に直接指定した関数が優先されます。 |
20
+ | `source` | `source` は `AutoConfigProvider` の `config.sources` のキーです。未知のキーでは `RAC-TABLE-SOURCE` と再試行ボタンを表示します。キーを登録するか `data` / `dataSource` を使ってください。三つのうち一つだけ指定します。 |
21
+ | `exportXlsx` | xlsx だけ必要です。無いと `RAC-TABLE-XLSX`。CSV と JSON は組み込みです。 |
22
+
23
+ `handle.export` はステータスにエラーが出ても resolve し、投げ直しません。リモートの `"filtered"` は全ページを歩きます。最後より前の空ページは `RAC-TABLE-EXPORT-PAGE` で、部分ファイルは保存しません。
24
+
25
+ 設定の不正なフィルタ JSON は翻訳された "Invalid filter" を出し、`RAC-TABLE-FILTER` を警告し、前のフィルタを残します。`between` は長さ 2、`in` は配列です。
26
+
27
+ `handle.reset()` は並べ替え、フィルタ、選択を消し、レイアウトを列の既定に戻します。`scrollToRow` は未読み込みの id では何もしません。
28
+
29
+ ## 前提
30
+
31
+ `style.css` を一度。同じオリジンの複数アプリは `namespace` を分けます。既定は `"auto"` です。組み込みの追加・編集ダイアログに `AutoDialogProvider` は不要です。`useAutoDialog()` だけが必要です。
@@ -0,0 +1,25 @@
1
+ # AutoTabs
2
+
3
+ [English](../../auto-tabs.md) | [简体中文](../zh-CN/auto-tabs.md) | [繁體中文](../zh-TW/auto-tabs.md) | **日本語** | [한국어](../ko/auto-tabs.md) | [Español](../es/auto-tabs.md) | [Français](../fr/auto-tabs.md) | [Deutsch](../de/auto-tabs.md) | [Português (Brasil)](../pt-BR/auto-tabs.md) | [Русский](../ru/auto-tabs.md)
4
+
5
+ タブです。入れ子は `children` の別の `AutoTabs` です。サイドバーは [AutoMenu](auto-menu.md) です。
6
+
7
+ ## 振る舞いとプロパティ
8
+
9
+ | プロパティ | 振る舞い |
10
+ | --- | --- |
11
+ | `items` | 安定した `id`。`hidden` と失敗した `canAccess` はタブを外します。 |
12
+ | `value` | 根からの id パス。入れ子は `["parent", "child"]` です。 |
13
+ | `onChange(path, item)` | **捕捉しません。** throw すると React が報告します。制御しているなら、まだ確定していないパスは前回のままです。 |
14
+ | `mode` | 既定 `"horizontal"`。`"vertical"` はタブを縦にします。 |
15
+ | `keepMounted` | 既定 `true`。非選択パネルもマウントしたままです。`false` は外します。 |
16
+ | `onRefresh` | あるとそのタブに更新ボタン。**捕捉しません。** |
17
+ | `disabled` | 見えたまま選べません。既定の選択は無効タブを飛ばします。 |
18
+
19
+ ## 前提
20
+
21
+ `style.css` を一度(開発時 `RAC-CSS-MISSING`)。`AutoConfigProvider` は任意です。
22
+
23
+ ## 動的タブ
24
+
25
+ `useAutoTabsWorkspace` はルーターなしでページを開閉します。`tabsProps` を `AutoTabs` に渡します。同じ id を再度 `open` すると、下書きを残したままそのタブを選びます。固定タブは閉じられません。`ready` になるまで `open` しないでください。選択、`params`、`state` はマウント後に `sessionStorage` から戻ります。`beforeClose` が `false` または throw すると閉じません。例は [DynamicTabsDemo.tsx](../../../test-project/src/examples/DynamicTabsDemo.tsx) です。
@@ -0,0 +1,110 @@
1
+ # エラーコード
2
+
3
+ [English](../../errors.md) | [简体中文](../zh-CN/errors.md) | [繁體中文](../zh-TW/errors.md) | **日本語** | [한국어](../ko/errors.md) | [Español](../es/errors.md) | [Français](../fr/errors.md) | [Deutsch](../de/errors.md) | [Português (Brasil)](../pt-BR/errors.md) | [Русский](../ru/errors.md)
4
+
5
+ 開発者向けの失敗は `RacError` を投げるか、開発モードで `console.warn` します。本文は常に英語です。
6
+
7
+ ```text
8
+ [Component] 何が違うか。
9
+ Fix: どう直すか。
10
+ Code: RAC-…
11
+ Docs: https://github.com/Zeroman/react-auto-components/blob/main/docs/errors.md#rac-…
12
+ ```
13
+
14
+ 画面の文言は `config.t` のままです。`userKey` は英語のソース文で、ホストが翻訳します。コンソールと例外は英語のままです。
15
+
16
+ ## RAC-FIELD-OPTIONS
17
+
18
+ `type` が `select`、`select-v2`、`radio`、`checkbox`、`cascader` なのに `options` が無い、または空配列です。
19
+
20
+ 修正: `options` に配列か `(values) => Option[]` を渡します。`autocomplete` は省略できます。テキスト欄に任意の候補を出すだけです。
21
+
22
+ ## RAC-FIELD-RANGE
23
+
24
+ `type` が `daterange` または `datetimerange` で、モデルまたは現在値が長さ 2 の配列ではありません。
25
+
26
+ 修正: フィールドを `[start, end]` にします。`dateValue` の既定は `"string"`(`YYYY-MM-DD`)です。`"timestamp"` はローカル時刻のエポックミリ秒です。`null` はその端を開きにします。スカラーは TypeScript エラーです。配列型のモデルはコンパイルできますが、長さが 2 でなければ開発モードが警告します。
27
+
28
+ ## RAC-FIELD-BETWEEN
29
+
30
+ `match: "between"` の値が `[from, to]` ではありません。
31
+
32
+ 修正: 二分タプルを保存します。スカラーは行に一致しません。`Field<T>` でも型エラーです。
33
+
34
+ ## RAC-FIELD-CUSTOM
35
+
36
+ `type: "custom"` に `render` も `component` もありません。
37
+
38
+ 修正: `render(context)` を渡すか、`component` を `config.fields` のキーにします。
39
+
40
+ ## RAC-FIELD-DUPLICATE
41
+
42
+ 同じ `name` が二つあります。マウント中に `defaults` が投げます。
43
+
44
+ 修正: 名前を一意にします。`title`、`tip`、`append`、`button` は名前が無く、検査しません。
45
+
46
+ ## RAC-CSS-MISSING
47
+
48
+ 開発モードで `:root` の `--auto-text` が空です。スタイルシートがこの変数を定義します。未読込だとページは崩れ、DOM からは原因が分かりません。
49
+
50
+ 修正: エントリで一度 `import "@zeroman.yang/react-auto-components/style.css"`。
51
+
52
+ ## RAC-TABLE-XLSX
53
+
54
+ `export("xlsx")` で `exportXlsx` がありません。
55
+
56
+ 修正: `import { exportXlsx } from "@zeroman.yang/react-auto-components/xlsx"` して `exportXlsx={exportXlsx}`。画面には翻訳された "Configure the XLSX export adapter" が出ます。
57
+
58
+ ## RAC-XLSX-DEP
59
+
60
+ `exceljs` を読めません。`optionalDependency` なので通常のインストールでは省略され得ます。
61
+
62
+ 修正: `pnpm add exceljs`。CSV と JSON には不要です。
63
+
64
+ ## RAC-TABLE-EXPORT-PAGE
65
+
66
+ リモート書き出しで、最終ページより前に空ページが返り、ファイルは保存しません。
67
+
68
+ 修正: 安定した `total` と、その `pageIndex` の行を返します。画面は翻訳された "Export data is incomplete. Try again." です。
69
+
70
+ ## RAC-TABLE-ROWID
71
+
72
+ 読み込んだ行で `rowKey` が欠けるか重複しています。開発時の警告です。
73
+
74
+ 修正: 行ごとに安定した一意の文字列。選択、展開、`scrollToRow` が使います。
75
+
76
+ ## RAC-TABLE-ID
77
+
78
+ `id` が空で、設定キーが `${namespace}:table:` になります。
79
+
80
+ 修正: テーブルごとに安定した id を渡します。
81
+
82
+ ## RAC-COLUMN-COMPONENT
83
+
84
+ 列の `component` が `AutoConfigProvider` の `config.columns` に未登録の場合、開発時に `RAC-COLUMN-COMPONENT` を警告し、セルは既定の書式を使います。キーを登録するか、列に `render`、`format`、`sort` を指定してください。列に直接指定した関数が優先されます。
85
+
86
+ ## RAC-ROW-ACTION
87
+
88
+ 行アクションに `onClick` がなく、`action` が `config.rowActions` の登録済みキーでもない場合、選択時にステータス行へ `RAC-ROW-ACTION` を表示します。`onClick` を指定するか `action` のキーを登録してください。両方ある場合は `onClick` が優先されます。
89
+
90
+ ## RAC-TABLE-SOURCE
91
+
92
+ `source` は `AutoConfigProvider` の `config.sources` のキーです。未知のキーでは `RAC-TABLE-SOURCE` と再試行ボタンを表示します。キーを登録するか `data` / `dataSource` を使ってください。三つのうち一つだけ指定します。
93
+
94
+ ## RAC-TABLE-FILTER
95
+
96
+ 設定のフィルタ JSON がクエリではありません。翻訳された "Invalid filter" を表示し、前のフィルタを残します。
97
+
98
+ 修正: グループは `{ kind: "group", operator: "and" | "or", children }`。条件は `{ kind: "condition", field, operator, value }`。`field` は列キー。`between` は `[from, to]`。`in` は配列です。
99
+
100
+ ## RAC-QUERY-FIELD
101
+
102
+ `serializeRsql` が `/^[\w.]+$/` でないフィールド名を拒否しました。
103
+
104
+ 修正: 英数字、アンダースコア、ドットだけ。直列化の前に列名をマップします。
105
+
106
+ ## RAC-DIALOG-PROVIDER
107
+
108
+ `AutoDialogProvider` の外で `useAutoDialog()` を呼びました。
109
+
110
+ 修正: その木を `<AutoDialogProvider>` で包みます。`AutoConfigProvider` はダイアログを提供せず、任意です。宣言的な `<AutoDialog open>` はこのフックを使いません。
@@ -12,10 +12,14 @@ React 19를 위한 독립형 스키마 기반 컴포넌트 라이브러리로,
12
12
 
13
13
  ## 프로젝트 상태
14
14
 
15
- 현재 버전은 0.1.2이며 API는 아직 변경될 수 있습니다. React 19이 필요합니다. 이 패키지는 ESM 및 TypeScript 선언을 제공합니다. 내장 인터페이스 텍스트는 기본적으로 중국어이며 AutoConfigProvider.config.t를 통해 번역할 수 있습니다.
15
+ 현재 버전은 0.1.3이며 API는 아직 변경될 수 있습니다. React 19이 필요합니다. 이 패키지는 ESM 및 TypeScript 선언을 제공합니다. 내장 인터페이스 텍스트는 기본적으로 영어이며 AutoConfigProvider.config.t를 통해 번역할 수 있습니다.
16
16
 
17
17
  `pnpm add @zeroman.yang/react-auto-components`로 설치합니다(npm과 yarn도 동일). peer dependency는 React 19와 react-dom 19입니다. 진입점에서 스타일시트를 한 번 불러오세요: `import "@zeroman.yang/react-auto-components/style.css"`.
18
18
 
19
+ 앱 진입점에서 `import "@zeroman.yang/react-auto-components/style.css"`를 한 번 가져오세요. 스타일시트가 없으면 개발 모드에서 `RAC-CSS-MISSING`을 경고합니다.
20
+
21
+ XLSX 내보내기에서 `exportXlsx` 어댑터가 없으면 `RAC-TABLE-XLSX`, 선택적 의존성 `exceljs`를 불러올 수 없으면 `RAC-XLSX-DEP`입니다. `@zeroman.yang/react-auto-components/xlsx`에서 어댑터를 가져와 전달하고, 필요하면 `pnpm add exceljs`로 설치하세요. CSV와 JSON에는 필요하지 않습니다.
22
+
19
23
  - [온라인 데모 (GitHub Pages)](https://zeroman.github.io/react-auto-components/)
20
24
  - [기여 안내](https://github.com/Zeroman/react-auto-components/blob/main/docs/i18n/ko/CONTRIBUTING.md)
21
25
  - [변경 기록](https://github.com/Zeroman/react-auto-components/blob/main/docs/i18n/ko/CHANGELOG.md)
@@ -85,7 +89,7 @@ t 콜백은 메시지 키와 폴백을 받습니다. 번역된 내장 메시지
85
89
  | 컴포넌트 | 기능 |
86
90
  | --- | --- |
87
91
  | AutoForm | 네이티브 필드 유형, 옵션 가상화, 계층형 선택, 업로드 어댑터, 사용자 정의 렌더링, 종속 필드, 조건부 표시, 비동기 유효성 검사, 제어 상태, 실패 후 입력 유지 |
88
- | AutoSearchPanel | 기본/고급 조건, 수동/즉시 검색, 초기화, 정렬 태그, 공유 쿼리 AST, RSQL 직렬화 |
92
+ | AutoSearch | 기본/고급 조건, 수동/즉시 검색, 초기화, 정렬 태그, 공유 쿼리 AST, RSQL 직렬화 |
89
93
  | AutoTable | 로컬/원격 데이터, 다중 열 정렬, 열 필터, 페이지 나누기, 안정적인 선택 상태, 가상화, 트리/상세 펼치기, 집계, 셀 병합, CRUD, 컨텍스트 메뉴, 복사 |
90
94
  | AutoDialog | 선언형/명령형 API, 격리된 프로바이더, 초안, 닫기 가드, 포커스 관리, 드래그, 전체 화면, 비동기 제출 |
91
95
  | AutoTabs | 가로/세로 레이아웃, 중첩, 권한, 탭 비활성화, 패널 상태 유지, 새로 고침 |
@@ -201,3 +205,5 @@ pnpm test:e2e
201
205
  AutoChat은 스트리밍 따라가기, 기록 불러오기, 작성기를 갖춘 가벼운 대화 레이아웃을 제공합니다. 메시지 렌더링을 위해 React 콘텐츠나 renderMessage를 전달하면 되며, 추가 런타임 의존성이 필요하지 않습니다.
202
206
 
203
207
  [AutoChat API](auto-chat.md)
208
+
209
+ 콜백이 throw 된 뒤 컴포넌트가 어떻게 동작하는지는 동작 계약을 보세요: [AutoForm](auto-form.md), [AutoSearch](auto-search.md), [AutoTable](auto-table.md), [AutoDialog](auto-dialog.md), [AutoTabs](auto-tabs.md), [AutoMenu](auto-menu.md). 개발자 오류 코드: [errors.md](errors.md).
@@ -0,0 +1,23 @@
1
+ # AutoDialog
2
+
3
+ [English](../../auto-dialog.md) | [简体中文](../zh-CN/auto-dialog.md) | [繁體中文](../zh-TW/auto-dialog.md) | [日本語](../ja/auto-dialog.md) | **한국어** | [Español](../es/auto-dialog.md) | [Français](../fr/auto-dialog.md) | [Deutsch](../de/auto-dialog.md) | [Português (Brasil)](../pt-BR/auto-dialog.md) | [Русский](../ru/auto-dialog.md)
4
+
5
+ 모달입니다. 선언적(`<AutoDialog open>`)이거나 명령적(`useAutoDialog().open()`)입니다. `fields`는 [AutoForm](auto-form.md)을 그립니다.
6
+
7
+ `useAutoDialog()`를 프로바이더 밖에서 부르면 `RAC-DIALOG-PROVIDER`입니다. 선언적 `<AutoDialog open>`에는 프로바이더가 필요 없습니다.
8
+
9
+ ## 동작과 속성
10
+
11
+ | 속성 | 동작 |
12
+ | --- | --- |
13
+ | `onSubmit(values)` | 검증 후. **reject 또는 throw: 열린 채 `error.message`를 보여주고 값은 남습니다.** resolve 후에도 `beforeClose`가 실행됩니다. |
14
+ | `beforeClose(reason)` | `"submit"`, `"cancel"`, `"close"`. **`false`면 열린 채. throw도 열린 채 메시지를 보여 줍니다.** |
15
+ | `onClose` | 실제로 닫힌 뒤에만 호출됩니다. |
16
+ | `draftKey` | `${namespace}:draft:${draftKey}`에 초안을 두고, 제출이 성공하면 지웁니다. 생략하면 저장하지 않습니다. |
17
+ | `width` | 기본 `560`. `draggable`은 전체 화면에서는 무시됩니다. |
18
+
19
+ `open()`의 `close()`는 `beforeClose`가 막으면 `false`로 resolve 합니다. 명령형 대화 상자는 겹칠 수 있습니다.
20
+
21
+ ## 전제
22
+
23
+ `style.css`를 한 번. `AutoConfigProvider`는 선택이며 `AutoDialogProvider`를 대신하지 않습니다. `namespace`는 `draftKey` 키에 들어갑니다.
@@ -0,0 +1,35 @@
1
+ # AutoForm
2
+
3
+ [English](../../auto-form.md) | [简体中文](../zh-CN/auto-form.md) | [繁體中文](../zh-TW/auto-form.md) | [日本語](../ja/auto-form.md) | **한국어** | [Español](../es/auto-form.md) | [Français](../fr/auto-form.md) | [Deutsch](../de/auto-form.md) | [Português (Brasil)](../pt-BR/auto-form.md) | [Русский](../ru/auto-form.md)
4
+
5
+ 스키마 폼입니다. `AutoSearch`과 `AutoDialog`도 안에서 `AutoForm`을 그리므로 콜백 규칙은 같습니다.
6
+
7
+ `Field<T>`는 `type`으로 구분됩니다. `options` 없는 `select`, 스칼라 `daterange`, 스칼라 필드의 `match: "between"`은 TypeScript 오류입니다. `AnyField`와 `unsafeField()`는 탈출구이며 개발 모드는 여전히 경고합니다. 코드는 [errors.md](errors.md)입니다.
8
+
9
+ ## 동작과 속성
10
+
11
+ | 속성 | 동작 |
12
+ | --- | --- |
13
+ | `fields` | `readonly Field<T>[]`. `type`을 생략하면 텍스트 입력입니다. `name`이 중복이면 마운트 때 `RAC-FIELD-DUPLICATE`를 던집니다. |
14
+ | `value` | 제어 값입니다. 내부 상태와 다르면 복사하고 오류를 지웁니다. 부모가 `onChange`를 무시하면 입력이 되돌아갑니다. |
15
+ | `onSubmit(value)` | 검증 후에만 호출됩니다. **reject 또는 throw: 값은 남고, `error.message`를 보여 주며, 초기화하지 않습니다.** |
16
+ | `columns` | 기본값 `2`. `actions` 기본값은 `true`입니다. |
17
+ | 라벨 | `labelPosition` 기본 `"top"`. `labelWidth` 기본 `"auto"`(측정 후 필드 너비의 45%까지). |
18
+
19
+ ## 콜백이 throw 하면
20
+
21
+ | 콜백 | 결과 |
22
+ | --- | --- |
23
+ | `onSubmit` | 잡습니다. 초안은 남고 메시지를 보이며 초기화하지 않습니다. |
24
+ | 필드 `rules` | 그 필드의 오류 문구가 됩니다. 이후 규칙은 실행하지 않습니다. |
25
+ | 필드 `onChange` | 잡지 않습니다. 이전 값이 남습니다. |
26
+ | `upload` | 거절은 입력 아래에 나오고 값은 저장하지 않습니다. `reset()`은 `AbortSignal`을 중단하고 늦은 결과를 버립니다. |
27
+ | 업로드 중 제출 | `validate()`는 `false`를 반환하고 `onSubmit`을 호출하지 않습니다. |
28
+ | `hidden`, `disabled`, 권한 실패 | `required`여도 검증하지 않습니다. |
29
+ | `required`가 비어 있음 | `undefined`, `null`, `""`, 빈 배열은 제출을 막습니다. |
30
+
31
+ `handle.validate()`는 `true` 또는 `false`로 resolve 하고 던지지 않습니다.
32
+
33
+ ## 전제
34
+
35
+ `style.css`를 한 번 가져옵니다. 개발 모드에서 `--auto-text`가 없으면 `RAC-CSS-MISSING`입니다. `AutoConfigProvider`는 선택이며 대화 상자를 제공하지 않습니다.
@@ -0,0 +1,23 @@
1
+ # AutoMenu
2
+
3
+ [English](../../auto-menu.md) | [简体中文](../zh-CN/auto-menu.md) | [繁體中文](../zh-TW/auto-menu.md) | [日本語](../ja/auto-menu.md) | **한국어** | [Español](../es/auto-menu.md) | [Français](../fr/auto-menu.md) | [Deutsch](../de/auto-menu.md) | [Português (Brasil)](../pt-BR/auto-menu.md) | [Русский](../ru/auto-menu.md)
4
+
5
+ 옆 막대입니다. 패널은 [AutoTabs](auto-tabs.md)를 씁니다.
6
+
7
+ ## 동작과 속성
8
+
9
+ | 속성 | 동작 |
10
+ | --- | --- |
11
+ | `items` | `id`는 트리 안에서 유일합니다. `hidden`과 실패한 `canAccess`는 버립니다. 조상을 가리키는 `children`은 가지째 버려 재귀가 스택을 넘지 않게 합니다. |
12
+ | `value` | 선택된 잎 id. 생략하면 내부 상태입니다. |
13
+ | `onChange(id, item, path)` | **잡지 않습니다.** `path`는 뿌리부터 잎까지의 id입니다. 자식이 있는 부모는 펼치기만 하고 선택하지 않습니다. |
14
+ | `collapsible` | 기본 `false`. `collapsed`를 제어한다면 `onCollapsedChange`에서 직접 갱신하지 않으면 레일이 움직이지 않습니다. **`onCollapsedChange`는 잡지 않습니다.** |
15
+ | `disabled` | 그 항목과 자손을 비활성화합니다. 선택은 건너뜁니다. |
16
+
17
+ 잎을 골라도 스스로 이동하지 않습니다. 신호는 `onChange`뿐입니다.
18
+
19
+ ## 전제
20
+
21
+ `style.css`를 한 번. `AutoConfigProvider`는 선택입니다. 권한은 `config.canAccess`입니다.
22
+
23
+ 앱 진입점에서 `import "@zeroman.yang/react-auto-components/style.css"`를 한 번 가져오세요. 스타일시트가 없으면 개발 모드에서 `RAC-CSS-MISSING`을 경고합니다.
@@ -0,0 +1,32 @@
1
+ # AutoSearch
2
+
3
+ [English](../../auto-search.md) | [简体中文](../zh-CN/auto-search.md) | [繁體中文](../zh-TW/auto-search.md) | [日本語](../ja/auto-search.md) | **한국어** | [Español](../es/auto-search.md) | [Français](../fr/auto-search.md) | [Deutsch](../de/auto-search.md) | [Português (Brasil)](../pt-BR/auto-search.md) | [Русский](../ru/auto-search.md)
4
+
5
+ 검색 폼입니다. 내부 `AutoForm`이 `QueryNode`와 원값을 냅니다. 필드 throw는 [AutoForm](auto-form.md)과 같습니다.
6
+
7
+ `AutoSearchPanel`과 `AutoSearchPanelProps`는 `AutoSearch`와 `AutoSearchProps`의 더 이상 쓰지 않는 별칭입니다.
8
+
9
+ ## 동작과 속성
10
+
11
+ | 속성 | 동작 |
12
+ | --- | --- |
13
+ | `onSearch(query, values)` | 필수입니다. **throw 또는 reject: 내부 폼이 잡고, 값은 남으며, `error.message`를 보여 줍니다. 초기화하지 않습니다.** |
14
+ | `mode` | 기본 `"manual"`(검색 버튼). `"instant"`는 변경할 때마다도 검색합니다. |
15
+ | `columns` | 기본 `3`. |
16
+ | `more: true` | "더 보기"를 열기 전까지 숨깁니다. 숨긴 필드는 쿼리에 넣지 않습니다. |
17
+
18
+ | `match` | 값 |
19
+ | --- | --- |
20
+ | 생략 | `"eq"`. 배열이면 `"in"`. |
21
+ | `"contains"` | 부분 문자열. `ignoreCase: true`는 대소를 접습니다. |
22
+ | `"between"` | `[from, to]`. 스칼라는 `RAC-FIELD-BETWEEN`을 경고하고 어떤 행과도 맞지 않습니다. |
23
+ | `"isNull"` | null 또는 undefined. 입력값은 무시합니다. |
24
+ | 빈 값 | `undefined`, `null`, `""`, 빈 배열은 생략합니다. `"isNull"`은 예외입니다. |
25
+
26
+ 초기화는 `defaultValue`로 되돌린 뒤 검색합니다. 필드 이름이 `/^[\w.]+$/`가 아니면 `serializeRsql`이 `RAC-QUERY-FIELD`를 던집니다.
27
+
28
+ ## 전제
29
+
30
+ `style.css`를 한 번. `AutoConfigProvider`는 선택입니다.
31
+
32
+ 앱 진입점에서 `import "@zeroman.yang/react-auto-components/style.css"`를 한 번 가져오세요. 스타일시트가 없으면 개발 모드에서 `RAC-CSS-MISSING`을 경고합니다.
@@ -0,0 +1,31 @@
1
+ # AutoTable
2
+
3
+ [English](../../auto-table.md) | [简体中文](../zh-CN/auto-table.md) | [繁體中文](../zh-TW/auto-table.md) | [日本語](../ja/auto-table.md) | **한국어** | [Español](../es/auto-table.md) | [Français](../fr/auto-table.md) | [Deutsch](../de/auto-table.md) | [Português (Brasil)](../pt-BR/auto-table.md) | [Русский](../ru/auto-table.md)
4
+
5
+ 로컬 또는 원격 표입니다. `data`, `dataSource`, `source` 중 하나만 제공합니다. 동시에 여러 개를 제공하면 타입 오류입니다. 검색은 [AutoSearch](auto-search.md), 추가와 편집은 [AutoDialog](auto-dialog.md)와 [AutoForm](auto-form.md)을 따릅니다.
6
+
7
+ `exportXlsx`는 `@zeroman.yang/react-auto-components/xlsx`에서 가져옵니다. `exceljs`는 선택 의존성이며 없으면 `RAC-XLSX-DEP`입니다.
8
+
9
+ ## 동작과 속성
10
+
11
+ | 속성 | 동작 |
12
+ | --- | --- |
13
+ | `id` | 필수. 설정 키는 `${namespace}:table:${id}`. 비어 있으면 `RAC-TABLE-ID`. |
14
+ | `rowKey` | 불러온 행에서 유일해야 합니다. 없거나 중복이면 `RAC-TABLE-ROWID`. 선택, 확장, `scrollToRow`가 사용합니다. |
15
+ | `dataSource` | **reject: 메시지와 다시 시도 버튼. abort는 무시합니다.** `{ rows, total }`의 `total`은 걸러진 전체 개수입니다. |
16
+ | `pageSize` | 기본 `10`. `pagination` 기본 `true`. `height` 기본 `440`. `"auto"`는 높이가 있는 부모를 채웁니다. |
17
+ | `onAdd`, `onEdit`, `onDelete` | **reject 또는 throw: 대화 상자는 열린 채 `error.message`를 보여 줍니다.** 핸들러가 데이터를 바꾸지 않았다면 행은 그대로입니다. |
18
+ | `rowActions` | `onClick` 거부는 처리되어 약 2.5초 동안 상태 줄에 표시됩니다. 행은 유지됩니다. 행 동작에 `onClick`이 없고 `action`도 `config.rowActions`의 등록된 키가 아니면, 선택 시 상태 줄에 `RAC-ROW-ACTION`이 표시됩니다. `onClick`을 제공하거나 `action` 키를 등록하세요. 둘 다 있으면 `onClick`이 우선합니다. |
19
+ | `component` | 열의 `component`가 `AutoConfigProvider`의 `config.columns`에 등록되지 않으면 개발 모드에서 `RAC-COLUMN-COMPONENT`를 경고하고 셀은 기본 형식을 사용합니다. 키를 등록하거나 열에 `render`, `format`, `sort`를 지정하세요. 열에 직접 지정한 함수가 우선합니다. |
20
+ | `source` | `source`는 `AutoConfigProvider`의 `config.sources` 키입니다. 알 수 없는 키이면 `RAC-TABLE-SOURCE`와 재시도 버튼을 표시합니다. 키를 등록하거나 `data` / `dataSource`를 사용하세요. 세 가지 중 하나만 제공해야 합니다. |
21
+ | `exportXlsx` | xlsx에만 필요합니다. 없으면 `RAC-TABLE-XLSX`. CSV와 JSON은 내장입니다. |
22
+
23
+ `handle.export`는 상태 줄에 오류가 나와도 resolve 하고 다시 던지지 않습니다. 원격 `"filtered"`는 모든 페이지를 걷습니다. 마지막 전의 빈 페이지는 `RAC-TABLE-EXPORT-PAGE`이며 부분 파일은 저장하지 않습니다.
24
+
25
+ 잘못된 필터 JSON은 번역된 "Invalid filter"를 보여주고 `RAC-TABLE-FILTER`를 경고하며 이전 필터를 유지합니다.
26
+
27
+ `handle.reset()`은 정렬, 필터, 선택을 지우고 레이아웃을 열 기본값으로 되돌립니다. `scrollToRow`는 아직 없는 id에서는 아무 일도 하지 않습니다.
28
+
29
+ ## 전제
30
+
31
+ `style.css`를 한 번. 같은 출처의 여러 앱은 `namespace`를 나눕니다. 기본값은 `"auto"`입니다. 내장 추가/편집 대화 상자에는 `AutoDialogProvider`가 필요 없습니다. `useAutoDialog()`만 필요합니다.
@@ -0,0 +1,25 @@
1
+ # AutoTabs
2
+
3
+ [English](../../auto-tabs.md) | [简体中文](../zh-CN/auto-tabs.md) | [繁體中文](../zh-TW/auto-tabs.md) | [日本語](../ja/auto-tabs.md) | **한국어** | [Español](../es/auto-tabs.md) | [Français](../fr/auto-tabs.md) | [Deutsch](../de/auto-tabs.md) | [Português (Brasil)](../pt-BR/auto-tabs.md) | [Русский](../ru/auto-tabs.md)
4
+
5
+ 탭입니다. 중첩은 `children`으로 넣은 또 다른 `AutoTabs`입니다. 옆 막대는 [AutoMenu](auto-menu.md)입니다.
6
+
7
+ ## 동작과 속성
8
+
9
+ | 속성 | 동작 |
10
+ | --- | --- |
11
+ | `items` | 안정적인 `id`. `hidden`과 실패한 `canAccess`는 탭을 뺍니다. |
12
+ | `value` | 뿌리부터의 id 경로. 중첩은 `["parent", "child"]`입니다. |
13
+ | `onChange(path, item)` | **잡지 않습니다.** throw하면 React가 보고합니다. 제어 중이라면 아직 확정하지 않은 경로는 이전 값입니다. |
14
+ | `mode` | 기본 `"horizontal"`. `"vertical"`은 탭을 세로로 둡니다. |
15
+ | `keepMounted` | 기본 `true`. 선택하지 않은 패널도 마운트된 채입니다. `false`는 언마운트합니다. |
16
+ | `onRefresh` | 있으면 그 탭에 새로 고침 단추. **잡지 않습니다.** |
17
+ | `disabled` | 보이지만 선택할 수 없습니다. 기본 선택은 비활성 탭을 건너뜁니다. |
18
+
19
+ ## 전제
20
+
21
+ `style.css`를 한 번(개발 시 `RAC-CSS-MISSING`). `AutoConfigProvider`는 선택입니다.
22
+
23
+ ## 동적 탭
24
+
25
+ `useAutoTabsWorkspace`는 라우터 없이 페이지를 열고 닫습니다. `tabsProps`를 `AutoTabs`에 넘깁니다. 같은 id를 다시 `open`하면 초안을 유지한 채 그 탭을 선택합니다. 고정된 탭은 닫을 수 없습니다. `ready`가 된 뒤에 `open`하세요. 선택, `params`, `state`는 마운트 후 `sessionStorage`에서 복원됩니다. `beforeClose`가 `false`를 반환하거나 throw 하면 닫히지 않습니다. 예제는 [DynamicTabsDemo.tsx](../../../test-project/src/examples/DynamicTabsDemo.tsx)입니다.
@@ -0,0 +1,110 @@
1
+ # 오류 코드
2
+
3
+ [English](../../errors.md) | [简体中文](../zh-CN/errors.md) | [繁體中文](../zh-TW/errors.md) | [日本語](../ja/errors.md) | **한국어** | [Español](../es/errors.md) | [Français](../fr/errors.md) | [Deutsch](../de/errors.md) | [Português (Brasil)](../pt-BR/errors.md) | [Русский](../ru/errors.md)
4
+
5
+ 개발자 실패는 `RacError`를 던지거나, 개발 모드에서 `console.warn` 합니다. 본문은 항상 영어입니다.
6
+
7
+ ```text
8
+ [Component] 무엇이 잘못됐는지.
9
+ Fix: 어떻게 고치는지.
10
+ Code: RAC-…
11
+ Docs: https://github.com/Zeroman/react-auto-components/blob/main/docs/errors.md#rac-…
12
+ ```
13
+
14
+ 화면 문구는 `config.t`에 남습니다. `userKey`는 영어 원문이고, 호스트가 번역합니다. 콘솔과 예외는 영어입니다.
15
+
16
+ ## RAC-FIELD-OPTIONS
17
+
18
+ `type`이 `select`, `select-v2`, `radio`, `checkbox`, `cascader`인데 `options`가 없거나 빈 배열입니다.
19
+
20
+ 수정: `options`에 배열이나 `(values) => Option[]`를 넘깁니다. `autocomplete`는 생략할 수 있습니다. 선택적 제안이 있는 텍스트 칸입니다.
21
+
22
+ ## RAC-FIELD-RANGE
23
+
24
+ `type`이 `daterange` 또는 `datetimerange`인데 모델이나 현재 값이 길이 2인 배열이 아닙니다.
25
+
26
+ 수정: 필드를 `[start, end]`로 둡니다. `dateValue` 기본값은 `"string"`(`YYYY-MM-DD`)입니다. `"timestamp"`는 로컬 시간의 epoch 밀리초입니다. `null`은 그 끝을 열어 둡니다. 스칼라는 TypeScript 오류입니다. 배열 타입 모델은 컴파일되고, 실제 값의 길이가 2가 아니면 개발 모드가 경고합니다.
27
+
28
+ ## RAC-FIELD-BETWEEN
29
+
30
+ `match: "between"` 값이 `[from, to]`가 아닙니다.
31
+
32
+ 수정: 두 항목 튜플을 저장합니다. 스칼라는 어떤 행과도 맞지 않습니다. `Field<T>`에서도 타입 오류입니다.
33
+
34
+ ## RAC-FIELD-CUSTOM
35
+
36
+ `type: "custom"`에 `render`도 `component`도 없습니다.
37
+
38
+ 수정: `render(context)`를 넘기거나 `component`를 `config.fields`의 키로 둡니다.
39
+
40
+ ## RAC-FIELD-DUPLICATE
41
+
42
+ `name`이 두 번입니다. 마운트 중 `defaults`가 던집니다.
43
+
44
+ 수정: 이름을 유일하게 합니다. `title`, `tip`, `append`, `button`은 이름이 없어 검사하지 않습니다.
45
+
46
+ ## RAC-CSS-MISSING
47
+
48
+ 개발 모드에서 `:root`의 `--auto-text`가 비어 있습니다. 스타일시트가 이 변수를 둡니다. 없으면 페이지가 깨지고 DOM만으로는 원인을 알 수 없습니다.
49
+
50
+ 수정: 진입점에서 한 번 `import "@zeroman.yang/react-auto-components/style.css"`.
51
+
52
+ ## RAC-TABLE-XLSX
53
+
54
+ `export("xlsx")`에 `exportXlsx`가 없습니다.
55
+
56
+ 수정: `import { exportXlsx } from "@zeroman.yang/react-auto-components/xlsx"` 후 `exportXlsx={exportXlsx}`. 화면에는 번역된 "Configure the XLSX export adapter"가 나옵니다.
57
+
58
+ ## RAC-XLSX-DEP
59
+
60
+ `exceljs`를 읽지 못했습니다. `optionalDependency`라 일반 설치에서 빠질 수 있습니다.
61
+
62
+ 수정: `pnpm add exceljs`. CSV와 JSON에는 필요 없습니다.
63
+
64
+ ## RAC-TABLE-EXPORT-PAGE
65
+
66
+ 원격 내보내기에서 마지막 페이지 전에 빈 페이지가 와 파일을 저장하지 않았습니다.
67
+
68
+ 수정: 안정적인 `total`과 그 `pageIndex`의 행을 반환합니다. 화면은 번역된 "Export data is incomplete. Try again."입니다.
69
+
70
+ ## RAC-TABLE-ROWID
71
+
72
+ 불러온 행의 `rowKey`가 없거나 중복입니다. 개발 경고입니다.
73
+
74
+ 수정: 행마다 안정적이고 유일한 문자열. 선택, 확장, `scrollToRow`가 사용합니다.
75
+
76
+ ## RAC-TABLE-ID
77
+
78
+ `id`가 비어 설정 키가 `${namespace}:table:`가 됩니다.
79
+
80
+ 수정: 표마다 안정적인 id를 넘깁니다.
81
+
82
+ ## RAC-COLUMN-COMPONENT
83
+
84
+ 열의 `component`가 `AutoConfigProvider`의 `config.columns`에 등록되지 않으면 개발 모드에서 `RAC-COLUMN-COMPONENT`를 경고하고 셀은 기본 형식을 사용합니다. 키를 등록하거나 열에 `render`, `format`, `sort`를 지정하세요. 열에 직접 지정한 함수가 우선합니다.
85
+
86
+ ## RAC-ROW-ACTION
87
+
88
+ 행 동작에 `onClick`이 없고 `action`도 `config.rowActions`의 등록된 키가 아니면, 선택 시 상태 줄에 `RAC-ROW-ACTION`이 표시됩니다. `onClick`을 제공하거나 `action` 키를 등록하세요. 둘 다 있으면 `onClick`이 우선합니다.
89
+
90
+ ## RAC-TABLE-SOURCE
91
+
92
+ `source`는 `AutoConfigProvider`의 `config.sources` 키입니다. 알 수 없는 키이면 `RAC-TABLE-SOURCE`와 재시도 버튼을 표시합니다. 키를 등록하거나 `data` / `dataSource`를 사용하세요. 세 가지 중 하나만 제공해야 합니다.
93
+
94
+ ## RAC-TABLE-FILTER
95
+
96
+ 설정의 필터 JSON이 쿼리가 아닙니다. 번역된 "Invalid filter"를 보여주고 이전 필터를 유지합니다.
97
+
98
+ 수정: 그룹은 `{ kind: "group", operator: "and" | "or", children }`. 조건은 `{ kind: "condition", field, operator, value }`. `field`는 열 키입니다. `between`은 `[from, to]`, `in`은 배열입니다.
99
+
100
+ ## RAC-QUERY-FIELD
101
+
102
+ `serializeRsql`이 `/^[\w.]+$/`가 아닌 필드 이름을 거부했습니다.
103
+
104
+ 수정: 영문, 숫자, 밑줄, 점만 사용합니다. 직렬화 전에 열 이름을 바꿉니다.
105
+
106
+ ## RAC-DIALOG-PROVIDER
107
+
108
+ `AutoDialogProvider` 밖에서 `useAutoDialog()`를 호출했습니다.
109
+
110
+ 수정: 그 트리를 `<AutoDialogProvider>`로 감쌉니다. `AutoConfigProvider`는 대화 상자를 제공하지 않으며 선택입니다. 선언적 `<AutoDialog open>`은 이 훅을 쓰지 않습니다.
@@ -12,10 +12,14 @@ Uma biblioteca de componentes independente e orientada a esquemas para React 19,
12
12
 
13
13
  ## Estado do projeto
14
14
 
15
- A versão atual é 0.1.2 e as APIs ainda podem mudar. O React 19 é necessário. O pacote fornece declarações ESM e TypeScript. O texto integrado da interface tem como padrão o chinês e pode ser traduzido por meio de AutoConfigProvider.config.t.
15
+ A versão atual é 0.1.3 e as APIs ainda podem mudar. O React 19 é necessário. O pacote fornece declarações ESM e TypeScript. O texto integrado da interface tem como padrão o inglês e pode ser traduzido por meio de AutoConfigProvider.config.t.
16
16
 
17
17
  Instale com `pnpm add @zeroman.yang/react-auto-components` (npm e yarn funcionam da mesma forma). As peer dependencies são React 19 e react-dom 19. Importe a folha de estilo uma vez: `import "@zeroman.yang/react-auto-components/style.css"`.
18
18
 
19
+ Importe uma vez na entrada do aplicativo `import "@zeroman.yang/react-auto-components/style.css"`. Sem a folha de estilos, o modo de desenvolvimento avisa com `RAC-CSS-MISSING`.
20
+
21
+ Na exportação XLSX, `RAC-TABLE-XLSX` indica que falta o adaptador `exportXlsx`; `RAC-XLSX-DEP` indica que não foi possível carregar a dependência opcional `exceljs`. Importe e passe o adaptador de `@zeroman.yang/react-auto-components/xlsx`; instale com `pnpm add exceljs` quando necessário. CSV e JSON não precisam dele.
22
+
19
23
  - [Demonstração Online (GitHub Pages)](https://zeroman.github.io/react-auto-components/)
20
24
  - [Como contribuir](https://github.com/Zeroman/react-auto-components/blob/main/docs/i18n/pt-BR/CONTRIBUTING.md)
21
25
  - [Histórico de alterações](https://github.com/Zeroman/react-auto-components/blob/main/docs/i18n/pt-BR/CHANGELOG.md)
@@ -85,7 +89,7 @@ O callback t recebe uma chave de mensagem e um fallback. Preserve os placeholder
85
89
  | Componente | Recursos |
86
90
  | --- | --- |
87
91
  | AutoForm | Tipos de campo nativos, opções virtualizadas, seleção em cascata, adaptadores de upload, renderização personalizada, campos dependentes, visibilidade condicional, validação assíncrona, estado controlado e preservação dos dados preenchidos após falhas |
88
- | AutoSearchPanel | Condições básicas/avançadas, busca manual/instantânea, redefinição, etiquetas de ordenação, AST de consulta compartilhada e serialização RSQL |
92
+ | AutoSearch | Condições básicas/avançadas, busca manual/instantânea, redefinição, etiquetas de ordenação, AST de consulta compartilhada e serialização RSQL |
89
93
  | AutoTable | Dados locais/remotos, ordenação por várias colunas, filtros de coluna, paginação, seleção estável, virtualização, expansão de árvores/detalhes, resumos, células mescladas, CRUD, menus de contexto e cópia |
90
94
  | AutoDialog | APIs declarativas/imperativas, provedores isolados, rascunhos, proteção de fechamento, gerenciamento de foco, arraste, tela cheia e envio assíncrono |
91
95
  | AutoTabs | Layouts horizontal/vertical, aninhamento, permissões, abas desabilitadas, preservação do estado dos painéis e atualização |
@@ -201,3 +205,5 @@ Formulários oferecem suporte a `resetLabel`, `extraActions` e `onReset`; painé
201
205
  O AutoChat fornece um layout de conversa leve com acompanhamento de streaming, carregamento de histórico e um compositor. Forneça conteúdo React ou renderMessage para a renderização das mensagens; nenhuma dependência extra em tempo de execução é necessária.
202
206
 
203
207
  [AutoChat API](auto-chat.md)
208
+
209
+ O que o componente faz se um callback lançar: [AutoForm](auto-form.md), [AutoSearch](auto-search.md), [AutoTable](auto-table.md), [AutoDialog](auto-dialog.md), [AutoTabs](auto-tabs.md), [AutoMenu](auto-menu.md). Códigos de erro para desenvolvedores: [errors.md](errors.md).