@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 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} of ${totalPages}`;
2573
- return `${pageRange.start + 1} - ${Math.min(pageRange.end, count)} of ${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, title } = schema.properties[column];
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: "wrap", alignItems: "start", gap: 1, children: currentFiles.map((file) => {
4343
- return (jsxRuntime.jsx(Tag, { cursor: "pointer", onClick: () => {
4344
- setValue(column, currentFiles.filter(({ name }) => {
4345
- return name !== file.name;
4346
- }));
4347
- }, children: file.name }));
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} of ${totalPages}`;
2553
- return `${pageRange.start + 1} - ${Math.min(pageRange.end, count)} of ${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, title } = schema.properties[column];
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: "wrap", alignItems: "start", gap: 1, children: currentFiles.map((file) => {
4323
- return (jsx(Tag, { cursor: "pointer", onClick: () => {
4324
- setValue(column, currentFiles.filter(({ name }) => {
4325
- return name !== file.name;
4326
- }));
4327
- }, children: file.name }));
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 };
@@ -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";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bsol-oss/react-datatable5",
3
- "version": "9.0.0",
3
+ "version": "9.0.2",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",