@teppen/react-ui 1.10.1 → 2.0.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/README.md +73 -6
- package/dist/cjs/node_modules/react-icons/bi/index.js.map +1 -1
- package/dist/cjs/node_modules/react-icons/lib/iconBase.js.map +1 -1
- package/dist/cjs/node_modules/react-icons/lib/iconContext.js.map +1 -1
- package/dist/cjs/node_modules/react-icons/lu/index.js.map +1 -1
- package/dist/cjs/node_modules/react-icons/md/index.js.map +1 -1
- package/dist/cjs/node_modules/react-icons/ti/index.js.map +1 -1
- package/dist/cjs/node_modules/tslib/tslib.es6.js +1 -1
- package/dist/cjs/node_modules/tslib/tslib.es6.js.map +1 -1
- package/dist/cjs/src/file-uploader/hook.js +1 -1
- package/dist/cjs/src/file-uploader/hook.js.map +1 -1
- package/dist/cjs/src/search-bar/condition-search-bar/base.js +1 -2
- package/dist/cjs/src/search-bar/condition-search-bar/base.js.map +1 -1
- package/dist/cjs/src/search-bar/condition-search-bar/condition-list.js +1 -2
- package/dist/cjs/src/search-bar/condition-search-bar/condition-list.js.map +1 -1
- package/dist/cjs/src/search-bar/condition-search-bar/input-form.js +1 -2
- package/dist/cjs/src/search-bar/condition-search-bar/input-form.js.map +1 -1
- package/dist/cjs/src/search-bar/id-generator/provider.js +1 -2
- package/dist/cjs/src/search-bar/id-generator/provider.js.map +1 -1
- package/dist/cjs/src/select-box/index.js +1 -2
- package/dist/cjs/src/select-box/index.js.map +1 -1
- package/dist/cjs/src/select-box/parts/input-area.js +1 -2
- package/dist/cjs/src/select-box/parts/input-area.js.map +1 -1
- package/dist/cjs/src/select-box/provider.js +1 -2
- package/dist/cjs/src/select-box/provider.js.map +1 -1
- package/dist/cjs/src/table/cell/ui/cell.js +1 -2
- package/dist/cjs/src/table/cell/ui/cell.js.map +1 -1
- package/dist/cjs/src/table/checkbox/components.js +1 -2
- package/dist/cjs/src/table/checkbox/components.js.map +1 -1
- package/dist/cjs/src/table/copy/format.js +2 -0
- package/dist/cjs/src/table/copy/format.js.map +1 -0
- package/dist/cjs/src/table/copy/hooks.js +1 -1
- package/dist/cjs/src/table/copy/hooks.js.map +1 -1
- package/dist/cjs/src/table/edit/provider.js +1 -2
- package/dist/cjs/src/table/edit/provider.js.map +1 -1
- package/dist/cjs/src/table/edit/ui/base-input.js +1 -2
- package/dist/cjs/src/table/edit/ui/base-input.js.map +1 -1
- package/dist/cjs/src/table/edit/ui/editor.js.map +1 -1
- package/dist/cjs/src/table/edit/ui/number-input.js +1 -2
- package/dist/cjs/src/table/edit/ui/number-input.js.map +1 -1
- package/dist/cjs/src/table/edit/ui/select-input.js +1 -2
- package/dist/cjs/src/table/edit/ui/select-input.js.map +1 -1
- package/dist/cjs/src/table/edit/ui/string-input.js +1 -2
- package/dist/cjs/src/table/edit/ui/string-input.js.map +1 -1
- package/dist/cjs/src/table/filter-v2/hook.js +1 -1
- package/dist/cjs/src/table/filter-v2/hook.js.map +1 -1
- package/dist/cjs/src/table/frame/frame.js +1 -2
- package/dist/cjs/src/table/frame/frame.js.map +1 -1
- package/dist/cjs/src/table/header/columns-width/provider.js +1 -2
- package/dist/cjs/src/table/header/columns-width/provider.js.map +1 -1
- package/dist/cjs/src/table/header/columns-width/reducer.js +1 -1
- package/dist/cjs/src/table/header/columns-width/reducer.js.map +1 -1
- package/dist/cjs/src/table/header/header-v2-hook.js +1 -1
- package/dist/cjs/src/table/header/header-v2-hook.js.map +1 -1
- package/dist/cjs/src/table/header/header-v2.js +1 -1
- package/dist/cjs/src/table/header/header-v2.js.map +1 -1
- package/dist/cjs/src/table/header/header.js +1 -2
- package/dist/cjs/src/table/header/header.js.map +1 -1
- package/dist/cjs/src/table/id/provider.js +1 -1
- package/dist/cjs/src/table/id/provider.js.map +1 -1
- package/dist/cjs/src/table/operation/components/keyboard-setting.js +1 -2
- package/dist/cjs/src/table/operation/components/keyboard-setting.js.map +1 -1
- package/dist/cjs/src/table/operation/event-target.js +2 -0
- package/dist/cjs/src/table/operation/event-target.js.map +1 -0
- package/dist/cjs/src/table/pagenation/components.js +1 -2
- package/dist/cjs/src/table/pagenation/components.js.map +1 -1
- package/dist/cjs/src/table/pagenation/hooks.js +1 -1
- package/dist/cjs/src/table/pagenation/hooks.js.map +1 -1
- package/dist/cjs/src/table/pagenation/providers.js +1 -2
- package/dist/cjs/src/table/pagenation/providers.js.map +1 -1
- package/dist/cjs/src/table/paste/hooks.js +1 -1
- package/dist/cjs/src/table/paste/hooks.js.map +1 -1
- package/dist/cjs/src/table/paste/logic.js +1 -1
- package/dist/cjs/src/table/paste/logic.js.map +1 -1
- package/dist/cjs/src/table/paste/parse.js +2 -0
- package/dist/cjs/src/table/paste/parse.js.map +1 -0
- package/dist/cjs/src/table/paste/provider.js +1 -1
- package/dist/cjs/src/table/paste/provider.js.map +1 -1
- package/dist/cjs/src/table/sheet/components.js +1 -1
- package/dist/cjs/src/table/sheet/components.js.map +1 -1
- package/dist/cjs/src/table/sheet/providers.js +1 -2
- package/dist/cjs/src/table/sheet/providers.js.map +1 -1
- package/dist/cjs/src/table/sort/components.js +1 -2
- package/dist/cjs/src/table/sort/components.js.map +1 -1
- package/dist/cjs/src/table/sort/provider.js +1 -2
- package/dist/cjs/src/table/sort/provider.js.map +1 -1
- package/dist/cjs/src/table/table/base.js +1 -2
- package/dist/cjs/src/table/table/base.js.map +1 -1
- package/dist/cjs/src/table/table/component-provider/provider.js +1 -2
- package/dist/cjs/src/table/table/component-provider/provider.js.map +1 -1
- package/dist/cjs/src/table/table/hook.js +1 -1
- package/dist/cjs/src/table/table/hook.js.map +1 -1
- package/dist/esm/node_modules/react-icons/bi/index.js.map +1 -1
- package/dist/esm/node_modules/react-icons/lib/iconBase.js.map +1 -1
- package/dist/esm/node_modules/react-icons/lib/iconContext.js.map +1 -1
- package/dist/esm/node_modules/react-icons/lu/index.js.map +1 -1
- package/dist/esm/node_modules/react-icons/md/index.js.map +1 -1
- package/dist/esm/node_modules/react-icons/ti/index.js.map +1 -1
- package/dist/esm/node_modules/tslib/tslib.es6.js +1 -1
- package/dist/esm/node_modules/tslib/tslib.es6.js.map +1 -1
- package/dist/esm/src/file-uploader/hook.js +1 -1
- package/dist/esm/src/file-uploader/hook.js.map +1 -1
- package/dist/esm/src/search-bar/condition-search-bar/base.js +1 -2
- package/dist/esm/src/search-bar/condition-search-bar/base.js.map +1 -1
- package/dist/esm/src/search-bar/condition-search-bar/condition-list.js +1 -2
- package/dist/esm/src/search-bar/condition-search-bar/condition-list.js.map +1 -1
- package/dist/esm/src/search-bar/condition-search-bar/input-form.js +1 -2
- package/dist/esm/src/search-bar/condition-search-bar/input-form.js.map +1 -1
- package/dist/esm/src/search-bar/id-generator/provider.js +1 -2
- package/dist/esm/src/search-bar/id-generator/provider.js.map +1 -1
- package/dist/esm/src/select-box/index.js +1 -2
- package/dist/esm/src/select-box/index.js.map +1 -1
- package/dist/esm/src/select-box/parts/input-area.js +1 -2
- package/dist/esm/src/select-box/parts/input-area.js.map +1 -1
- package/dist/esm/src/select-box/provider.js +1 -2
- package/dist/esm/src/select-box/provider.js.map +1 -1
- package/dist/esm/src/table/cell/ui/cell.js +1 -2
- package/dist/esm/src/table/cell/ui/cell.js.map +1 -1
- package/dist/esm/src/table/checkbox/components.js +1 -2
- package/dist/esm/src/table/checkbox/components.js.map +1 -1
- package/dist/esm/src/table/copy/format.js +2 -0
- package/dist/esm/src/table/copy/format.js.map +1 -0
- package/dist/esm/src/table/copy/hooks.js +1 -1
- package/dist/esm/src/table/copy/hooks.js.map +1 -1
- package/dist/esm/src/table/edit/provider.js +1 -2
- package/dist/esm/src/table/edit/provider.js.map +1 -1
- package/dist/esm/src/table/edit/ui/base-input.js +1 -2
- package/dist/esm/src/table/edit/ui/base-input.js.map +1 -1
- package/dist/esm/src/table/edit/ui/editor.js.map +1 -1
- package/dist/esm/src/table/edit/ui/number-input.js +1 -2
- package/dist/esm/src/table/edit/ui/number-input.js.map +1 -1
- package/dist/esm/src/table/edit/ui/select-input.js +1 -2
- package/dist/esm/src/table/edit/ui/select-input.js.map +1 -1
- package/dist/esm/src/table/edit/ui/string-input.js +1 -2
- package/dist/esm/src/table/edit/ui/string-input.js.map +1 -1
- package/dist/esm/src/table/filter-v2/hook.js +1 -1
- package/dist/esm/src/table/filter-v2/hook.js.map +1 -1
- package/dist/esm/src/table/frame/frame.js +1 -2
- package/dist/esm/src/table/frame/frame.js.map +1 -1
- package/dist/esm/src/table/header/columns-width/provider.js +1 -2
- package/dist/esm/src/table/header/columns-width/provider.js.map +1 -1
- package/dist/esm/src/table/header/columns-width/reducer.js +1 -1
- package/dist/esm/src/table/header/columns-width/reducer.js.map +1 -1
- package/dist/esm/src/table/header/header-v2-hook.js +1 -1
- package/dist/esm/src/table/header/header-v2-hook.js.map +1 -1
- package/dist/esm/src/table/header/header-v2.js +1 -1
- package/dist/esm/src/table/header/header-v2.js.map +1 -1
- package/dist/esm/src/table/header/header.js +1 -2
- package/dist/esm/src/table/header/header.js.map +1 -1
- package/dist/esm/src/table/id/provider.js +1 -1
- package/dist/esm/src/table/id/provider.js.map +1 -1
- package/dist/esm/src/table/operation/components/keyboard-setting.js +1 -2
- package/dist/esm/src/table/operation/components/keyboard-setting.js.map +1 -1
- package/dist/esm/src/table/operation/event-target.js +2 -0
- package/dist/esm/src/table/operation/event-target.js.map +1 -0
- package/dist/esm/src/table/pagenation/components.js +1 -2
- package/dist/esm/src/table/pagenation/components.js.map +1 -1
- package/dist/esm/src/table/pagenation/hooks.js +1 -1
- package/dist/esm/src/table/pagenation/hooks.js.map +1 -1
- package/dist/esm/src/table/pagenation/providers.js +1 -2
- package/dist/esm/src/table/pagenation/providers.js.map +1 -1
- package/dist/esm/src/table/paste/hooks.js +1 -1
- package/dist/esm/src/table/paste/hooks.js.map +1 -1
- package/dist/esm/src/table/paste/logic.js +1 -1
- package/dist/esm/src/table/paste/logic.js.map +1 -1
- package/dist/esm/src/table/paste/parse.js +2 -0
- package/dist/esm/src/table/paste/parse.js.map +1 -0
- package/dist/esm/src/table/paste/provider.js +1 -1
- package/dist/esm/src/table/paste/provider.js.map +1 -1
- package/dist/esm/src/table/sheet/components.js +1 -1
- package/dist/esm/src/table/sheet/components.js.map +1 -1
- package/dist/esm/src/table/sheet/providers.js +1 -2
- package/dist/esm/src/table/sheet/providers.js.map +1 -1
- package/dist/esm/src/table/sort/components.js +1 -2
- package/dist/esm/src/table/sort/components.js.map +1 -1
- package/dist/esm/src/table/sort/provider.js +1 -2
- package/dist/esm/src/table/sort/provider.js.map +1 -1
- package/dist/esm/src/table/table/base.js +1 -2
- package/dist/esm/src/table/table/base.js.map +1 -1
- package/dist/esm/src/table/table/component-provider/provider.js +1 -2
- package/dist/esm/src/table/table/component-provider/provider.js.map +1 -1
- package/dist/esm/src/table/table/hook.js +1 -1
- package/dist/esm/src/table/table/hook.js.map +1 -1
- package/dist/index.d.ts +13 -1
- package/package.json +1 -3
package/README.md
CHANGED
|
@@ -7,6 +7,7 @@ This is a React component library that provides some useful UI elements for your
|
|
|
7
7
|
This library includes the following components:
|
|
8
8
|
|
|
9
9
|
- Table: A simple Table. (1.0.0 ~) (※ Not compatible with 0.\*.\*)
|
|
10
|
+
- FileUploader: A drop area and file picker with file type and size checks.
|
|
10
11
|
|
|
11
12
|
## Installation
|
|
12
13
|
|
|
@@ -210,8 +211,8 @@ export default App;
|
|
|
210
211
|
A component that displays a table based on the row and column information passed as arguments. The table component has the following features:
|
|
211
212
|
|
|
212
213
|
- Pagination function
|
|
213
|
-
- Sorting function
|
|
214
|
-
- Filtering function (only when `label` is set in the column information)
|
|
214
|
+
- Sorting function (except for columns that use `render` while `editable` is false, or that set `disableSort`)
|
|
215
|
+
- Filtering function (only when `label` is set in the column information; the same columns as sorting are excluded, and `disableFilter` turns it off)
|
|
215
216
|
- Editing function (only when `editable` is true and `onCellBlur` is set in the column information)
|
|
216
217
|
- Checkbox function
|
|
217
218
|
- Paste function
|
|
@@ -219,7 +220,13 @@ A component that displays a table based on the row and column information passed
|
|
|
219
220
|
|
|
220
221
|
#### Arguments
|
|
221
222
|
|
|
222
|
-
The table component
|
|
223
|
+
The table component accepts the arguments `id`, `rows`, `cols`, `initialCondition`, `onClickRow`, `onUpdateRow`, `onPasteError`, `errorHandler`, `applyRowFormatting`, `checkbox`, `conditionalFormattings`, `maxHeight` and `maxWidth`. Details for each argument are described below.
|
|
224
|
+
|
|
225
|
+
All of these types are exported from the package, e.g. `import type { TTableColumn, TPropsTable } from "@teppen/react-ui";`.
|
|
226
|
+
|
|
227
|
+
##### id
|
|
228
|
+
|
|
229
|
+
`id` is used for the element ids inside the table. It is optional; without it, each table gets a unique id automatically.
|
|
223
230
|
|
|
224
231
|
##### rows
|
|
225
232
|
|
|
@@ -227,11 +234,13 @@ The table component only accepts the arguments `rows`, `cols`, `initialCondition
|
|
|
227
234
|
|
|
228
235
|
```ts
|
|
229
236
|
export type DataObject = {
|
|
230
|
-
[key: string]: number | string;
|
|
237
|
+
[key: string]: number | string | Date;
|
|
231
238
|
id: number | string;
|
|
232
239
|
};
|
|
233
240
|
```
|
|
234
241
|
|
|
242
|
+
The row objects you pass are given back unchanged to callbacks such as `onClickRow`, `onCellBlur` and `checkbox`, so `Date` values stay `Date` objects.
|
|
243
|
+
|
|
235
244
|
※ `onClick` property has been deprecated since version 1.0.0 in favor of the new Table argument `onClickRow`
|
|
236
245
|
|
|
237
246
|
##### cols
|
|
@@ -241,7 +250,7 @@ In `cols`, you specify the data to be displayed in the table from left to right.
|
|
|
241
250
|
it is not necessary to always include the key `label`, but it is required for some functions, so it is recommended to set it.
|
|
242
251
|
|
|
243
252
|
```ts
|
|
244
|
-
export type TColumnType = "string" | "number" | "select";
|
|
253
|
+
export type TColumnType = "string" | "number" | "select" | "date" | "datetime";
|
|
245
254
|
|
|
246
255
|
export type TTableColumn = {
|
|
247
256
|
key: string;
|
|
@@ -252,6 +261,8 @@ export type TTableColumn = {
|
|
|
252
261
|
options: { value: string; label: string }[]; // Only When "type" is "select"
|
|
253
262
|
editable?: boolean;
|
|
254
263
|
render?: (value: string | number, row: DataObject) => React.ReactNode; // Only When "editable" is false
|
|
264
|
+
// When "type" is "date" or "datetime", "render" is required and "editable" must be false:
|
|
265
|
+
// render: (value: Date) => React.ReactNode;
|
|
255
266
|
allowEmpty?: boolean; // Only When "type" is "select"
|
|
256
267
|
constraints?: {
|
|
257
268
|
maxLength?: number; // Only when "type" is "string"
|
|
@@ -270,7 +281,7 @@ export type TTableColumn = {
|
|
|
270
281
|
```
|
|
271
282
|
|
|
272
283
|
※ TColumnType no longer supports `component` since version 1.0.0. Instead, `render`
|
|
273
|
-
is now supported
|
|
284
|
+
is now supported. Columns that use `render` (when `editable` is false) are not sortable or filterable, because what they display may differ from the underlying value.
|
|
274
285
|
|
|
275
286
|
##### initialCondition
|
|
276
287
|
|
|
@@ -297,11 +308,36 @@ type TOnClickRow = (row: DataObject) => void;
|
|
|
297
308
|
|
|
298
309
|
In `onUpdateRow`, You can define the behavior when you paste data from Excel or spreadsheets into a table. This is optional.
|
|
299
310
|
For multi-line data, this function is executed one line at a time.
|
|
311
|
+
Pasted data is read as tab-separated cells, as copied from Excel or Google Sheets. For number columns, values such as `1,000` are accepted.
|
|
300
312
|
|
|
301
313
|
```ts
|
|
302
314
|
type TOnUpdateRow = (newRow: DataObject, oldRow: DataObject) => void;
|
|
303
315
|
```
|
|
304
316
|
|
|
317
|
+
##### onPasteError
|
|
318
|
+
|
|
319
|
+
In `onPasteError`, you can handle pasted data that cannot be applied, for example when it does not fit in the table or targets a column that is not editable. This is optional; if it is not set, the message is shown with `window.alert`.
|
|
320
|
+
Invalid values are reported to `errorHandler` instead.
|
|
321
|
+
|
|
322
|
+
```ts
|
|
323
|
+
type TOnPasteError = (error: {
|
|
324
|
+
type: "NOT_ENOUGH_ROWS" | "NOT_ENOUGH_COLUMNS" | "NOT_EDITABLE_COLUMN";
|
|
325
|
+
message: string;
|
|
326
|
+
}) => void;
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
##### errorHandler
|
|
330
|
+
|
|
331
|
+
In `errorHandler`, you can handle values that break a column's `constraints` (when editing a cell or pasting). This is optional; if it is not set, the errors are shown with `window.alert`.
|
|
332
|
+
|
|
333
|
+
```ts
|
|
334
|
+
type TErrorHandler = (errors: TErrorValidation[]) => void;
|
|
335
|
+
```
|
|
336
|
+
|
|
337
|
+
##### maxHeight / maxWidth
|
|
338
|
+
|
|
339
|
+
CSS sizes (e.g. `"600px"`) that limit the table area. The table scrolls inside it.
|
|
340
|
+
|
|
305
341
|
##### applyRowFormatting
|
|
306
342
|
|
|
307
343
|
In `applyRowFormatting`, depending on the status of each row, you can define the format of the row using TailwindCSS classes. In principle, TailwindCSS classes other than background and text color are not guaranteed to work, but any class can be specified.
|
|
@@ -343,6 +379,37 @@ type TConditionalFormatting = {
|
|
|
343
379
|
};
|
|
344
380
|
```
|
|
345
381
|
|
|
382
|
+
### FileUploader Component
|
|
383
|
+
|
|
384
|
+
A drop area that also opens the file picker when clicked.
|
|
385
|
+
|
|
386
|
+
```tsx
|
|
387
|
+
import { FileUploader } from "@teppen/react-ui";
|
|
388
|
+
|
|
389
|
+
<FileUploader
|
|
390
|
+
allowedExtensions={[".pdf", ".xlsx"]}
|
|
391
|
+
maxFileSize={10 * 1024 * 1024}
|
|
392
|
+
onFilesAdded={(files) => console.log(files)}
|
|
393
|
+
onFilesRejected={(files) => console.log("rejected", files)}
|
|
394
|
+
/>;
|
|
395
|
+
```
|
|
396
|
+
|
|
397
|
+
Files are checked as follows:
|
|
398
|
+
|
|
399
|
+
- With only `allowedExtensions`, only the extension is checked. With only `acceptedFileTypes` (MIME types such as `"image/*"`), only the MIME type is checked.
|
|
400
|
+
- With neither or both, a file is accepted if it matches either list. The defaults cover common images, Office documents, PDF, text and archives.
|
|
401
|
+
- Files larger than `maxFileSize` (bytes) are rejected.
|
|
402
|
+
|
|
403
|
+
For a custom UI, use the `useFileUploader` hook, which returns the props for the drop area and the hidden file input.
|
|
404
|
+
|
|
405
|
+
## Breaking changes since 1.10.2
|
|
406
|
+
|
|
407
|
+
- Table callbacks (`onClickRow`, `applyRowFormatting`, `checkbox`, `onCellBlur`, `onUpdateRow`) receive the row objects passed in `rows` as they are. Before, some of them received copies in which `Date` values had become ISO strings.
|
|
408
|
+
- FileUploader: when only `allowedExtensions` or only `acceptedFileTypes` is given, files are checked against that list alone. Before, files that matched the other (default) list were also accepted.
|
|
409
|
+
- Read-only columns without `render` can now be sorted and filtered. Use `disableSort` / `disableFilter` to turn this off.
|
|
410
|
+
- Copying a `datetime` cell gives `YYYY-MM-DD HH:mm:ss` in local time instead of an ISO string in UTC.
|
|
411
|
+
- Pasted text is split only on tabs, so a value such as `a,b` stays in one cell.
|
|
412
|
+
|
|
346
413
|
## License
|
|
347
414
|
|
|
348
415
|
This library is licensed under MIT license. See LICENSE file for more information.
|