@bsol-oss/react-datatable5 9.0.0 → 9.0.2
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/index.d.ts +14 -1
- package/dist/index.js +24 -10
- package/dist/index.mjs +25 -12
- package/dist/types/index.d.ts +1 -0
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -9,7 +9,9 @@ import { RankingInfo } from '@tanstack/match-sorter-utils';
|
|
|
9
9
|
import { UseQueryResult } from '@tanstack/react-query';
|
|
10
10
|
import { JSONSchema7 } from 'json-schema';
|
|
11
11
|
import { ForeignKeyProps } from '@/components/Form/components/StringInputField';
|
|
12
|
+
import * as react_hook_form from 'react-hook-form';
|
|
12
13
|
import { FieldValues, UseFormReturn, SubmitHandler } from 'react-hook-form';
|
|
14
|
+
import * as react_i18next from 'react-i18next';
|
|
13
15
|
import { UseTranslationResponse } from 'react-i18next';
|
|
14
16
|
import { RenderProps, Props } from '@bsol-oss/dayzed-react19';
|
|
15
17
|
|
|
@@ -476,6 +478,17 @@ interface CustomJSONSchema7Definition extends JSONSchema7 {
|
|
|
476
478
|
}
|
|
477
479
|
declare const Form: <TData extends FieldValues>({ schema, idMap, setIdMap, form, serverUrl, translate, order, ignore, onSubmit, preLoadedValues, rowNumber, }: FormProps<TData>) => react_jsx_runtime.JSX.Element;
|
|
478
480
|
|
|
481
|
+
interface UseFormProps {
|
|
482
|
+
preLoadedValues?: FieldValues | undefined;
|
|
483
|
+
keyPrefix?: string;
|
|
484
|
+
}
|
|
485
|
+
declare const useForm: ({ preLoadedValues, keyPrefix }: UseFormProps) => {
|
|
486
|
+
form: react_hook_form.UseFormReturn<FieldValues, any, undefined>;
|
|
487
|
+
idMap: Record<string, object>;
|
|
488
|
+
setIdMap: React$1.Dispatch<React$1.SetStateAction<Record<string, object>>>;
|
|
489
|
+
translate: react_i18next.UseTranslationResponse<"", string>;
|
|
490
|
+
};
|
|
491
|
+
|
|
479
492
|
interface CalendarProps extends RenderProps {
|
|
480
493
|
firstDayOfWeek?: 0 | 1 | 2 | 3 | 4 | 5 | 6;
|
|
481
494
|
}
|
|
@@ -584,4 +597,4 @@ declare module "@tanstack/react-table" {
|
|
|
584
597
|
}
|
|
585
598
|
}
|
|
586
599
|
|
|
587
|
-
export { type CalendarProps, CardHeader, type CardHeaderProps, type CustomJSONSchema7Definition, DataDisplay, type DataDisplayProps, type DataResponse, DataTable, type DataTableDefaultState, type DataTableProps, DataTableServer, type DataTableServerProps, type DatePickerProps, DefaultCardTitle, DefaultTable, type DefaultTableProps, DensityToggleButton, type DensityToggleButtonProps, EditFilterButton, type EditFilterButtonProps, EditOrderButton, type EditOrderButtonProps, EditSortingButton, type EditSortingButtonProps, EditViewButton, type EditViewButtonProps, EmptyState, type EmptyStateProps, ErrorAlert, type ErrorAlertProps, FilterOptions, type FilterOptionsProps, Form, type FormProps, type GetColumnsConfigs, type GetDateColorProps, type GetMultiDatesProps, type GetRangeDatesProps, type GetStyleProps, type GetVariantProps, GlobalFilter, PageSizeControl, type PageSizeControlProps, type RangeCalendarProps, type RangeDatePickerProps, RecordDisplay, type RecordDisplayProps, ReloadButton, type ReloadButtonProps, ResetFilteringButton, type ResetFilteringButtonProps, ResetSelectionButton, type ResetSelectionButtonProps, ResetSortingButton, type ResetSortingButtonProps, type Result, RowCountText, Table, TableBody, type TableBodyProps, TableCardContainer, type TableCardContainerProps, TableCards, type TableCardsProps, TableComponent, TableControls, type TableControlsProps, TableFilter, TableFilterTags, TableFooter, type TableFooterProps, TableHeader, type TableHeaderProps, TableLoadingComponent, type TableLoadingComponentProps, TableOrderer, TablePagination, type TableProps, type TableRendererProps, type TableRowSelectorProps, TableSelector, TableSorter, TableViewer, TextCell, type TextCellProps, type UseDataTableProps, type UseDataTableReturn, type UseDataTableServerProps, type UseDataTableServerReturn, getColumns, getMultiDates, getRangeDates, useDataTable, useDataTableContext, useDataTableServer, widthSanityCheck };
|
|
600
|
+
export { type CalendarProps, CardHeader, type CardHeaderProps, type CustomJSONSchema7Definition, DataDisplay, type DataDisplayProps, type DataResponse, DataTable, type DataTableDefaultState, type DataTableProps, DataTableServer, type DataTableServerProps, type DatePickerProps, DefaultCardTitle, DefaultTable, type DefaultTableProps, DensityToggleButton, type DensityToggleButtonProps, EditFilterButton, type EditFilterButtonProps, EditOrderButton, type EditOrderButtonProps, EditSortingButton, type EditSortingButtonProps, EditViewButton, type EditViewButtonProps, EmptyState, type EmptyStateProps, ErrorAlert, type ErrorAlertProps, FilterOptions, type FilterOptionsProps, Form, type FormProps, type GetColumnsConfigs, type GetDateColorProps, type GetMultiDatesProps, type GetRangeDatesProps, type GetStyleProps, type GetVariantProps, GlobalFilter, PageSizeControl, type PageSizeControlProps, type RangeCalendarProps, type RangeDatePickerProps, RecordDisplay, type RecordDisplayProps, ReloadButton, type ReloadButtonProps, ResetFilteringButton, type ResetFilteringButtonProps, ResetSelectionButton, type ResetSelectionButtonProps, ResetSortingButton, type ResetSortingButtonProps, type Result, RowCountText, Table, TableBody, type TableBodyProps, TableCardContainer, type TableCardContainerProps, TableCards, type TableCardsProps, TableComponent, TableControls, type TableControlsProps, TableFilter, TableFilterTags, TableFooter, type TableFooterProps, TableHeader, type TableHeaderProps, TableLoadingComponent, type TableLoadingComponentProps, TableOrderer, TablePagination, type TableProps, type TableRendererProps, type TableRowSelectorProps, TableSelector, TableSorter, TableViewer, TextCell, type TextCellProps, type UseDataTableProps, type UseDataTableReturn, type UseDataTableServerProps, type UseDataTableServerReturn, type UseFormProps, getColumns, getMultiDates, getRangeDates, useDataTable, useDataTableContext, useDataTableServer, useForm, widthSanityCheck };
|
package/dist/index.js
CHANGED
|
@@ -29,6 +29,8 @@ var hi = require('react-icons/hi');
|
|
|
29
29
|
var axios = require('axios');
|
|
30
30
|
var reactHookForm = require('react-hook-form');
|
|
31
31
|
var dayjs = require('dayjs');
|
|
32
|
+
var ti = require('react-icons/ti');
|
|
33
|
+
var reactI18next = require('react-i18next');
|
|
32
34
|
|
|
33
35
|
function _interopNamespaceDefault(e) {
|
|
34
36
|
var n = Object.create(null);
|
|
@@ -2569,8 +2571,8 @@ const PaginationPageText = React__namespace.forwardRef(function PaginationPageTe
|
|
|
2569
2571
|
if (format === "short")
|
|
2570
2572
|
return `${page} / ${totalPages}`;
|
|
2571
2573
|
if (format === "compact")
|
|
2572
|
-
return `${page}
|
|
2573
|
-
return `${pageRange.start + 1} - ${Math.min(pageRange.end, count)}
|
|
2574
|
+
return `${page} / ${totalPages}`;
|
|
2575
|
+
return `${pageRange.start + 1} - ${Math.min(pageRange.end, count)} / ${count}`;
|
|
2574
2576
|
}, [format, page, totalPages, pageRange, count]);
|
|
2575
2577
|
return (jsxRuntime.jsx(react.Text, { fontWeight: "medium", ref: ref, ...rest, children: content }));
|
|
2576
2578
|
});
|
|
@@ -4328,23 +4330,22 @@ const FileDropzone = ({ children = undefined, gridProps = {}, onDrop = () => { }
|
|
|
4328
4330
|
const FilePicker = ({ column }) => {
|
|
4329
4331
|
const { setValue, formState: { errors }, watch, } = reactHookForm.useFormContext();
|
|
4330
4332
|
const { schema, translate } = useSchemaContext();
|
|
4331
|
-
displayText;
|
|
4332
4333
|
const { required } = schema;
|
|
4333
4334
|
const isRequired = required?.some((columnId) => columnId === column);
|
|
4334
4335
|
if (schema.properties == undefined) {
|
|
4335
4336
|
throw new Error("schema properties when using String Input Field");
|
|
4336
4337
|
}
|
|
4337
|
-
const { gridColumn, gridRow
|
|
4338
|
+
const { gridColumn, gridRow } = schema.properties[column];
|
|
4338
4339
|
const currentFiles = (watch(column) ?? []);
|
|
4339
4340
|
return (jsxRuntime.jsxs(Field, { label: `${translate.t(`${column}.fieldLabel`)}`, required: isRequired, gridColumn: gridColumn ?? "span 4", gridRow: gridRow ?? "span 1", display: "grid", gridTemplateRows: "auto 1fr auto", alignItems: "stretch", children: [jsxRuntime.jsx(FileDropzone, { onDrop: ({ files }) => {
|
|
4340
4341
|
const newFiles = files.filter(({ name }) => !currentFiles.some((cur) => cur.name === name));
|
|
4341
4342
|
setValue(column, [...currentFiles, ...newFiles]);
|
|
4342
|
-
}, placeholder: translate.t(`${column}.fileDropzone`) }), jsxRuntime.jsx(react.Flex, { flexFlow: "
|
|
4343
|
-
return (jsxRuntime.jsx(
|
|
4344
|
-
|
|
4345
|
-
|
|
4346
|
-
|
|
4347
|
-
|
|
4343
|
+
}, placeholder: translate.t(`${column}.fileDropzone`) }), jsxRuntime.jsx(react.Flex, { flexFlow: "column", gap: 1, children: currentFiles.map((file) => {
|
|
4344
|
+
return (jsxRuntime.jsx(react.Card.Root, { variant: "subtle", children: jsxRuntime.jsxs(react.Card.Body, { gap: "2", cursor: "pointer", onClick: () => {
|
|
4345
|
+
setValue(column, currentFiles.filter(({ name }) => {
|
|
4346
|
+
return name !== file.name;
|
|
4347
|
+
}));
|
|
4348
|
+
}, display: "flex", flexFlow: 'row', alignItems: 'center', padding: '2', children: [jsxRuntime.jsx(react.Box, { children: file.name }), jsxRuntime.jsx(ti.TiDeleteOutline, {})] }) }, file.name));
|
|
4348
4349
|
}) }), errors[`${column}`] && (jsxRuntime.jsx(react.Text, { color: "red.400", children: translate.t(`${column}.fieldRequired`) }))] }));
|
|
4349
4350
|
};
|
|
4350
4351
|
|
|
@@ -4765,6 +4766,18 @@ const Form = ({ schema, idMap, setIdMap, form, serverUrl, translate, order = [],
|
|
|
4765
4766
|
}, children: jsxRuntime.jsx(reactHookForm.FormProvider, { ...form, children: jsxRuntime.jsx(FormInternal, {}) }) }));
|
|
4766
4767
|
};
|
|
4767
4768
|
|
|
4769
|
+
const useForm = ({ preLoadedValues, keyPrefix }) => {
|
|
4770
|
+
const form = reactHookForm.useForm({ values: preLoadedValues });
|
|
4771
|
+
const [idMap, setIdMap] = React.useState({});
|
|
4772
|
+
const translate = reactI18next.useTranslation("", { keyPrefix });
|
|
4773
|
+
return {
|
|
4774
|
+
form,
|
|
4775
|
+
idMap,
|
|
4776
|
+
setIdMap,
|
|
4777
|
+
translate,
|
|
4778
|
+
};
|
|
4779
|
+
};
|
|
4780
|
+
|
|
4768
4781
|
const getMultiDates = ({ selected, selectedDate, selectedDates, selectable, }) => {
|
|
4769
4782
|
if (!selectable) {
|
|
4770
4783
|
return [...selectedDates];
|
|
@@ -4827,4 +4840,5 @@ exports.getRangeDates = getRangeDates;
|
|
|
4827
4840
|
exports.useDataTable = useDataTable;
|
|
4828
4841
|
exports.useDataTableContext = useDataTableContext;
|
|
4829
4842
|
exports.useDataTableServer = useDataTableServer;
|
|
4843
|
+
exports.useForm = useForm;
|
|
4830
4844
|
exports.widthSanityCheck = widthSanityCheck;
|
package/dist/index.mjs
CHANGED
|
@@ -26,8 +26,10 @@ import { IoReload } from 'react-icons/io5';
|
|
|
26
26
|
import { GrAscend, GrDescend } from 'react-icons/gr';
|
|
27
27
|
import { HiColorSwatch, HiOutlineInformationCircle } from 'react-icons/hi';
|
|
28
28
|
import axios from 'axios';
|
|
29
|
-
import { useFormContext, FormProvider } from 'react-hook-form';
|
|
29
|
+
import { useFormContext, FormProvider, useForm as useForm$1 } from 'react-hook-form';
|
|
30
30
|
import dayjs from 'dayjs';
|
|
31
|
+
import { TiDeleteOutline } from 'react-icons/ti';
|
|
32
|
+
import { useTranslation } from 'react-i18next';
|
|
31
33
|
|
|
32
34
|
const DataTableContext = createContext({
|
|
33
35
|
table: {},
|
|
@@ -2549,8 +2551,8 @@ const PaginationPageText = React.forwardRef(function PaginationPageText(props, r
|
|
|
2549
2551
|
if (format === "short")
|
|
2550
2552
|
return `${page} / ${totalPages}`;
|
|
2551
2553
|
if (format === "compact")
|
|
2552
|
-
return `${page}
|
|
2553
|
-
return `${pageRange.start + 1} - ${Math.min(pageRange.end, count)}
|
|
2554
|
+
return `${page} / ${totalPages}`;
|
|
2555
|
+
return `${pageRange.start + 1} - ${Math.min(pageRange.end, count)} / ${count}`;
|
|
2554
2556
|
}, [format, page, totalPages, pageRange, count]);
|
|
2555
2557
|
return (jsx(Text, { fontWeight: "medium", ref: ref, ...rest, children: content }));
|
|
2556
2558
|
});
|
|
@@ -4308,23 +4310,22 @@ const FileDropzone = ({ children = undefined, gridProps = {}, onDrop = () => { }
|
|
|
4308
4310
|
const FilePicker = ({ column }) => {
|
|
4309
4311
|
const { setValue, formState: { errors }, watch, } = useFormContext();
|
|
4310
4312
|
const { schema, translate } = useSchemaContext();
|
|
4311
|
-
displayText;
|
|
4312
4313
|
const { required } = schema;
|
|
4313
4314
|
const isRequired = required?.some((columnId) => columnId === column);
|
|
4314
4315
|
if (schema.properties == undefined) {
|
|
4315
4316
|
throw new Error("schema properties when using String Input Field");
|
|
4316
4317
|
}
|
|
4317
|
-
const { gridColumn, gridRow
|
|
4318
|
+
const { gridColumn, gridRow } = schema.properties[column];
|
|
4318
4319
|
const currentFiles = (watch(column) ?? []);
|
|
4319
4320
|
return (jsxs(Field, { label: `${translate.t(`${column}.fieldLabel`)}`, required: isRequired, gridColumn: gridColumn ?? "span 4", gridRow: gridRow ?? "span 1", display: "grid", gridTemplateRows: "auto 1fr auto", alignItems: "stretch", children: [jsx(FileDropzone, { onDrop: ({ files }) => {
|
|
4320
4321
|
const newFiles = files.filter(({ name }) => !currentFiles.some((cur) => cur.name === name));
|
|
4321
4322
|
setValue(column, [...currentFiles, ...newFiles]);
|
|
4322
|
-
}, placeholder: translate.t(`${column}.fileDropzone`) }), jsx(Flex, { flexFlow: "
|
|
4323
|
-
return (jsx(
|
|
4324
|
-
|
|
4325
|
-
|
|
4326
|
-
|
|
4327
|
-
|
|
4323
|
+
}, placeholder: translate.t(`${column}.fileDropzone`) }), jsx(Flex, { flexFlow: "column", gap: 1, children: currentFiles.map((file) => {
|
|
4324
|
+
return (jsx(Card.Root, { variant: "subtle", children: jsxs(Card.Body, { gap: "2", cursor: "pointer", onClick: () => {
|
|
4325
|
+
setValue(column, currentFiles.filter(({ name }) => {
|
|
4326
|
+
return name !== file.name;
|
|
4327
|
+
}));
|
|
4328
|
+
}, display: "flex", flexFlow: 'row', alignItems: 'center', padding: '2', children: [jsx(Box, { children: file.name }), jsx(TiDeleteOutline, {})] }) }, file.name));
|
|
4328
4329
|
}) }), errors[`${column}`] && (jsx(Text, { color: "red.400", children: translate.t(`${column}.fieldRequired`) }))] }));
|
|
4329
4330
|
};
|
|
4330
4331
|
|
|
@@ -4745,6 +4746,18 @@ const Form = ({ schema, idMap, setIdMap, form, serverUrl, translate, order = [],
|
|
|
4745
4746
|
}, children: jsx(FormProvider, { ...form, children: jsx(FormInternal, {}) }) }));
|
|
4746
4747
|
};
|
|
4747
4748
|
|
|
4749
|
+
const useForm = ({ preLoadedValues, keyPrefix }) => {
|
|
4750
|
+
const form = useForm$1({ values: preLoadedValues });
|
|
4751
|
+
const [idMap, setIdMap] = useState({});
|
|
4752
|
+
const translate = useTranslation("", { keyPrefix });
|
|
4753
|
+
return {
|
|
4754
|
+
form,
|
|
4755
|
+
idMap,
|
|
4756
|
+
setIdMap,
|
|
4757
|
+
translate,
|
|
4758
|
+
};
|
|
4759
|
+
};
|
|
4760
|
+
|
|
4748
4761
|
const getMultiDates = ({ selected, selectedDate, selectedDates, selectable, }) => {
|
|
4749
4762
|
if (!selectable) {
|
|
4750
4763
|
return [...selectedDates];
|
|
@@ -4761,4 +4774,4 @@ const getMultiDates = ({ selected, selectedDate, selectedDates, selectable, }) =
|
|
|
4761
4774
|
}
|
|
4762
4775
|
};
|
|
4763
4776
|
|
|
4764
|
-
export { CardHeader, DataDisplay, DataTable, DataTableServer, DefaultCardTitle, DefaultTable, DensityToggleButton, EditFilterButton, EditOrderButton, EditSortingButton, EditViewButton, EmptyState, ErrorAlert, FilterOptions, Form, GlobalFilter, PageSizeControl, RecordDisplay, ReloadButton, ResetFilteringButton, ResetSelectionButton, ResetSortingButton, RowCountText, Table, TableBody, TableCardContainer, TableCards, TableComponent, TableControls, TableFilter, TableFilterTags, TableFooter, TableHeader, TableLoadingComponent, TableOrderer, TablePagination, TableSelector, TableSorter, TableViewer, TextCell, getColumns, getMultiDates, getRangeDates, useDataTable, useDataTableContext, useDataTableServer, widthSanityCheck };
|
|
4777
|
+
export { CardHeader, DataDisplay, DataTable, DataTableServer, DefaultCardTitle, DefaultTable, DensityToggleButton, EditFilterButton, EditOrderButton, EditSortingButton, EditViewButton, EmptyState, ErrorAlert, FilterOptions, Form, GlobalFilter, PageSizeControl, RecordDisplay, ReloadButton, ResetFilteringButton, ResetSelectionButton, ResetSortingButton, RowCountText, Table, TableBody, TableCardContainer, TableCards, TableComponent, TableControls, TableFilter, TableFilterTags, TableFooter, TableHeader, TableLoadingComponent, TableOrderer, TablePagination, TableSelector, TableSorter, TableViewer, TextCell, getColumns, getMultiDates, getRangeDates, useDataTable, useDataTableContext, useDataTableServer, useForm, widthSanityCheck };
|
package/dist/types/index.d.ts
CHANGED
|
@@ -99,6 +99,7 @@ export * from "./components/DataTable/components/ErrorAlert";
|
|
|
99
99
|
export * from "./components/Filter/FilterOptions";
|
|
100
100
|
export * from "./components/Filter/GlobalFilter";
|
|
101
101
|
export * from "./components/Form/Form";
|
|
102
|
+
export * from "./components/Form/useForm";
|
|
102
103
|
export * from "./components/DatePicker/DatePicker";
|
|
103
104
|
export * from "./components/DatePicker/getMultiDates";
|
|
104
105
|
export * from "./components/DatePicker/getRangeDates";
|