react-better-html 1.1.102 → 1.1.104
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.mts +78 -16
- package/dist/index.d.ts +78 -16
- package/dist/index.js +737 -138
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +852 -244
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -55,7 +55,9 @@ type DivComponentType = {
|
|
|
55
55
|
invertFlexDirection?: boolean;
|
|
56
56
|
}>) => React.ReactElement;
|
|
57
57
|
grid: <Value>(props: ComponentPropWithRef<HTMLDivElement, OmitProps<DivProps<Value>, "display">>) => React.ReactElement;
|
|
58
|
-
box: <Value>(props: ComponentPropWithRef<HTMLDivElement, DivProps<Value
|
|
58
|
+
box: <Value>(props: ComponentPropWithRef<HTMLDivElement, DivProps<Value> & {
|
|
59
|
+
isActive?: boolean;
|
|
60
|
+
}>) => React.ReactElement;
|
|
59
61
|
};
|
|
60
62
|
declare const DivComponent: DivComponentType;
|
|
61
63
|
declare const Div: typeof DivComponent & {
|
|
@@ -132,7 +134,7 @@ declare const Loader: typeof LoaderComponent & {
|
|
|
132
134
|
text: typeof LoaderComponent.text;
|
|
133
135
|
};
|
|
134
136
|
|
|
135
|
-
type IconName = "XMark" | "uploadCloud" | "trash" | "chevronDown" | "chevronLeft" | "chevronRight" | "eye" | "eyeDashed" | "magnifyingGlass" | "check";
|
|
137
|
+
type IconName = "XMark" | "uploadCloud" | "trash" | "chevronDown" | "chevronLeft" | "chevronRight" | "doubleChevronLeft" | "doubleChevronRight" | "eye" | "eyeDashed" | "magnifyingGlass" | "check" | "filter";
|
|
136
138
|
type IconData = {
|
|
137
139
|
width: number;
|
|
138
140
|
height: number;
|
|
@@ -152,7 +154,7 @@ type IconProps = {
|
|
|
152
154
|
type IconComponent = {
|
|
153
155
|
(props: ComponentPropWithRef<SVGSVGElement, IconProps>): React.ReactElement;
|
|
154
156
|
};
|
|
155
|
-
declare const _default$
|
|
157
|
+
declare const _default$5: IconComponent;
|
|
156
158
|
|
|
157
159
|
type AssetName = "logo";
|
|
158
160
|
type AssetsConfig = Record<AssetName, string> & {
|
|
@@ -172,7 +174,7 @@ type ImageComponent = {
|
|
|
172
174
|
}>) => React.ReactElement;
|
|
173
175
|
};
|
|
174
176
|
declare const Image: ImageComponent;
|
|
175
|
-
declare const _default$
|
|
177
|
+
declare const _default$4: ImageComponent & {
|
|
176
178
|
profileImage: typeof Image.profileImage;
|
|
177
179
|
};
|
|
178
180
|
|
|
@@ -255,9 +257,13 @@ type HorizontalDividerProps = DividerProps & {
|
|
|
255
257
|
/** @default textSecondary */
|
|
256
258
|
textColor?: string;
|
|
257
259
|
};
|
|
258
|
-
|
|
259
|
-
vertical:
|
|
260
|
-
horizontal:
|
|
260
|
+
type DividerComponentType = {
|
|
261
|
+
vertical: (props: ComponentPropWithRef<HTMLDivElement, VerticalDividerProps>) => React.ReactElement;
|
|
262
|
+
horizontal: (props: ComponentPropWithRef<HTMLDivElement, HorizontalDividerProps>) => React.ReactElement;
|
|
263
|
+
};
|
|
264
|
+
declare const _default$3: {
|
|
265
|
+
vertical: DividerComponentType["vertical"];
|
|
266
|
+
horizontal: DividerComponentType["horizontal"];
|
|
261
267
|
};
|
|
262
268
|
|
|
263
269
|
type ModalProps = {
|
|
@@ -306,10 +312,22 @@ declare const Modal: typeof ModalComponent & {
|
|
|
306
312
|
type PageHolderProps = {
|
|
307
313
|
/** @default false */
|
|
308
314
|
noMaxContentWidth?: boolean;
|
|
315
|
+
backgroundColor?: string;
|
|
309
316
|
children?: React.ReactNode;
|
|
310
317
|
} & ComponentPaddingProps;
|
|
311
|
-
|
|
312
|
-
|
|
318
|
+
type PageHolderComponentType = {
|
|
319
|
+
(props: ComponentPropWithRef<HTMLDivElement, PageHolderProps>): React.ReactElement;
|
|
320
|
+
center: (props: ComponentPropWithRef<HTMLDivElement, PageHolderProps & {
|
|
321
|
+
decorationImageSrc?: string;
|
|
322
|
+
decorationImageName?: AssetName | AnyOtherString;
|
|
323
|
+
/** @default "right" */
|
|
324
|
+
decorationImagePosition?: "left" | "right";
|
|
325
|
+
}>) => React.ReactElement;
|
|
326
|
+
};
|
|
327
|
+
declare const PageHolderComponent: PageHolderComponentType;
|
|
328
|
+
declare const PageHolder: typeof PageHolderComponent & {
|
|
329
|
+
center: typeof PageHolderComponent.center;
|
|
330
|
+
};
|
|
313
331
|
|
|
314
332
|
type PageHeaderProps = {
|
|
315
333
|
imageUrl?: string;
|
|
@@ -323,8 +341,11 @@ type PageHeaderProps = {
|
|
|
323
341
|
/** @default false */
|
|
324
342
|
lightMode?: boolean;
|
|
325
343
|
} & Pick<ComponentMarginProps, "marginBottom">;
|
|
326
|
-
|
|
327
|
-
|
|
344
|
+
type PageHeaderComponentType = {
|
|
345
|
+
(props: ComponentPropWithRef<HTMLDivElement, PageHeaderProps>): React.ReactElement;
|
|
346
|
+
};
|
|
347
|
+
declare const PageHeaderComponent: PageHeaderComponentType;
|
|
348
|
+
declare const PageHeader: typeof PageHeaderComponent & {};
|
|
328
349
|
|
|
329
350
|
type ChipProps = {
|
|
330
351
|
text: string;
|
|
@@ -466,7 +487,7 @@ type InternalToggleInputProps<Value> = {
|
|
|
466
487
|
} & OmitProps<React.ComponentProps<"input">, "style" | "value" | "ref" | "onChange"> & ComponentStyle & ComponentHoverStyle;
|
|
467
488
|
type ToggleInputProps<Value> = ComponentPropWithRef<ToggleInputRef, OmitProps<InternalToggleInputProps<Value>, "type">>;
|
|
468
489
|
type ToggleInputComponentType = <Value>(props: ToggleInputProps<Value>) => React.ReactElement;
|
|
469
|
-
declare const _default$
|
|
490
|
+
declare const _default$2: {
|
|
470
491
|
checkbox: ToggleInputComponentType;
|
|
471
492
|
radiobutton: ToggleInputComponentType;
|
|
472
493
|
switch: ToggleInputComponentType;
|
|
@@ -544,6 +565,7 @@ type FormProps = {
|
|
|
544
565
|
submitButtonId?: string;
|
|
545
566
|
/** @default false */
|
|
546
567
|
submitButtonIsDisabled?: boolean;
|
|
568
|
+
cancelButtonText?: string;
|
|
547
569
|
/** @default "right" */
|
|
548
570
|
actionButtonsLocation?: "left" | "center" | "right";
|
|
549
571
|
gap?: React.CSSProperties["gap"];
|
|
@@ -553,12 +575,16 @@ type FormProps = {
|
|
|
553
575
|
isDestructive?: boolean;
|
|
554
576
|
/** @default false */
|
|
555
577
|
withDividers?: boolean;
|
|
578
|
+
renderActionButtons?: React.ReactNode;
|
|
556
579
|
onClickCancel?: () => void;
|
|
557
580
|
onSubmit?: (value: React.FormEvent<HTMLFormElement>) => void;
|
|
558
581
|
children?: React.ReactNode;
|
|
559
582
|
} & ComponentMarginProps;
|
|
560
|
-
|
|
561
|
-
|
|
583
|
+
type FormComponentType = {
|
|
584
|
+
(props: ComponentPropWithRef<HTMLFormElement, FormProps>): React.ReactElement;
|
|
585
|
+
};
|
|
586
|
+
declare const FormComponent: FormComponentType;
|
|
587
|
+
declare const Form: typeof FormComponent & {};
|
|
562
588
|
|
|
563
589
|
type LabelProps = {
|
|
564
590
|
text?: string;
|
|
@@ -614,6 +640,19 @@ declare const ColorThemeSwitch: typeof ColorThemeSwitchComponent & {
|
|
|
614
640
|
withText: typeof ColorThemeSwitchComponent.withText;
|
|
615
641
|
};
|
|
616
642
|
|
|
643
|
+
type FilterPreset = "today" | "yesterday" | "thisWeek" | "thisMonth" | "thisYear" | "lastWeek" | "lastMonth" | "lastYear" | "nextWeek" | "nextMonth" | "nextYear";
|
|
644
|
+
type TableFilterData = {
|
|
645
|
+
type: "number";
|
|
646
|
+
min?: number;
|
|
647
|
+
max?: number;
|
|
648
|
+
} | {
|
|
649
|
+
type: "date" | "date-time";
|
|
650
|
+
min?: string;
|
|
651
|
+
max?: string;
|
|
652
|
+
} | {
|
|
653
|
+
type: "list";
|
|
654
|
+
list?: string[];
|
|
655
|
+
};
|
|
617
656
|
type TextColumn<DataItem> = {
|
|
618
657
|
type: "text";
|
|
619
658
|
keyName?: keyof DataItem;
|
|
@@ -630,13 +669,27 @@ type ImageColumn<DataItem> = {
|
|
|
630
669
|
type CheckboxColumn = {
|
|
631
670
|
type: "checkbox";
|
|
632
671
|
} & ToggleInputProps<boolean>;
|
|
672
|
+
type NumberFilter<DataItem> = {
|
|
673
|
+
filter?: "number";
|
|
674
|
+
getValue?: (item: DataItem) => number;
|
|
675
|
+
};
|
|
676
|
+
type DateFilter<DataItem> = {
|
|
677
|
+
filter?: "date" | "date-time";
|
|
678
|
+
presets?: FilterPreset[];
|
|
679
|
+
getValue?: (item: DataItem) => Date;
|
|
680
|
+
};
|
|
681
|
+
type ListFilter<DataItem> = {
|
|
682
|
+
filter?: "list";
|
|
683
|
+
withTotalNumber?: boolean;
|
|
684
|
+
getValueForList?: (item: DataItem) => string;
|
|
685
|
+
};
|
|
633
686
|
type TableColumn<DataItem> = {
|
|
634
687
|
label?: string;
|
|
635
688
|
width?: string | number;
|
|
636
689
|
minWidth?: string | number;
|
|
637
690
|
maxWidth?: string | number;
|
|
638
691
|
align?: "left" | "center" | "right";
|
|
639
|
-
} & (TextColumn<DataItem> | ElementColumn<DataItem> | ImageColumn<DataItem> | CheckboxColumn);
|
|
692
|
+
} & (TextColumn<DataItem> | ElementColumn<DataItem> | ImageColumn<DataItem> | CheckboxColumn) & (NumberFilter<DataItem> | DateFilter<DataItem> | ListFilter<DataItem>);
|
|
640
693
|
type TableProps<DataItem> = {
|
|
641
694
|
columns: TableColumn<DataItem>[];
|
|
642
695
|
data: DataItem[];
|
|
@@ -648,9 +701,18 @@ type TableProps<DataItem> = {
|
|
|
648
701
|
withStickyHeader?: boolean;
|
|
649
702
|
/** @default "No data available" */
|
|
650
703
|
noDataItemsMessage?: string;
|
|
704
|
+
pageSize?: number;
|
|
651
705
|
onClickRow?: (item: DataItem, index: number) => void;
|
|
652
706
|
onClickAllCheckboxes?: (checked: boolean) => void;
|
|
707
|
+
onChangePage?: (page: number) => void;
|
|
708
|
+
onChangeFilter?: (filterData: Record<number, TableFilterData | undefined>) => void;
|
|
653
709
|
} & ComponentMarginProps;
|
|
710
|
+
type TableRef = {
|
|
711
|
+
currentPage: number;
|
|
712
|
+
setCurrentPage: React.Dispatch<React.SetStateAction<number>>;
|
|
713
|
+
pagesCount: number;
|
|
714
|
+
setCheckedItems: React.Dispatch<React.SetStateAction<boolean[]>>;
|
|
715
|
+
};
|
|
654
716
|
type TableComponentType = {
|
|
655
717
|
<DataItem>(props: ComponentPropWithRef<HTMLDivElement, TableProps<DataItem>>): React.ReactElement;
|
|
656
718
|
};
|
|
@@ -790,4 +852,4 @@ declare const isMobileDevice: boolean;
|
|
|
790
852
|
|
|
791
853
|
declare const reactRouterDomPlugin: BetterHtmlPlugin;
|
|
792
854
|
|
|
793
|
-
export { type AppConfig, type AssetName, type AssetsConfig, type BetterHtmlConfig, type BetterHtmlPlugin, _default as BetterHtmlProvider, type BetterHtmlProviderValue, type BrowserName, Button, type ButtonProps, Chip, type ChipProps, type Color, type ColorName, type ColorTheme, ColorThemeSwitch, type ColorThemeSwitchProps, type Colors, type DeepPartialRecord, Div, type DivProps, _default$
|
|
855
|
+
export { type AppConfig, type AssetName, type AssetsConfig, type BetterHtmlConfig, type BetterHtmlPlugin, _default as BetterHtmlProvider, type BetterHtmlProviderValue, type BrowserName, Button, type ButtonProps, Chip, type ChipProps, type Color, type ColorName, type ColorTheme, ColorThemeSwitch, type ColorThemeSwitchProps, type Colors, type DeepPartialRecord, Div, type DivProps, _default$3 as Divider, Dropdown, type DropdownOption, type DropdownProps, type ExcludeOptions, Foldable, type FoldableProps, type FoldableRef, Form, type FormProps, FormRow, type FormRowProps, type HorizontalDividerProps, _default$5 as Icon, type IconName, type IconProps, type IconsConfig, _default$4 as Image, type ImageProps, InputField, type InputFieldProps, _default$1 as Label, type LabelProps, Loader, type LoaderConfig, type LoaderName, type LoaderProps, Modal, type ModalProps, type ModalRef, type OmitProps, PageHeader, type PageHeaderProps, PageHolder, type PageHolderProps, type PartialRecord, type PickAllRequired, type PickValue, type PluginName, type Styles, type TabGroup, Table, type TableColumn, type TableProps, type TableRef, Tabs, type TabsProps, type TabsRef, Text, type TextAs, type TextProps, type TextareaFieldProps, type Theme, type ThemeConfig, _default$2 as ToggleInput, type ToggleInputProps, type ToggleInputRef, type VerticalDividerProps, darkenColor, desaturateColor, formatPhoneNumber, generateRandomString, getBrowser, getFormErrorObject, isMobileDevice, lightenColor, loaderControls, reactRouterDomPlugin, saturateColor, useBetterHtmlContext, useBooleanState, useDebounceState, useForm, useLoader, useLoaderControls, useMediaQuery, usePageResize, usePageScroll, useTheme, useUrlQuery };
|
package/dist/index.d.ts
CHANGED
|
@@ -55,7 +55,9 @@ type DivComponentType = {
|
|
|
55
55
|
invertFlexDirection?: boolean;
|
|
56
56
|
}>) => React.ReactElement;
|
|
57
57
|
grid: <Value>(props: ComponentPropWithRef<HTMLDivElement, OmitProps<DivProps<Value>, "display">>) => React.ReactElement;
|
|
58
|
-
box: <Value>(props: ComponentPropWithRef<HTMLDivElement, DivProps<Value
|
|
58
|
+
box: <Value>(props: ComponentPropWithRef<HTMLDivElement, DivProps<Value> & {
|
|
59
|
+
isActive?: boolean;
|
|
60
|
+
}>) => React.ReactElement;
|
|
59
61
|
};
|
|
60
62
|
declare const DivComponent: DivComponentType;
|
|
61
63
|
declare const Div: typeof DivComponent & {
|
|
@@ -132,7 +134,7 @@ declare const Loader: typeof LoaderComponent & {
|
|
|
132
134
|
text: typeof LoaderComponent.text;
|
|
133
135
|
};
|
|
134
136
|
|
|
135
|
-
type IconName = "XMark" | "uploadCloud" | "trash" | "chevronDown" | "chevronLeft" | "chevronRight" | "eye" | "eyeDashed" | "magnifyingGlass" | "check";
|
|
137
|
+
type IconName = "XMark" | "uploadCloud" | "trash" | "chevronDown" | "chevronLeft" | "chevronRight" | "doubleChevronLeft" | "doubleChevronRight" | "eye" | "eyeDashed" | "magnifyingGlass" | "check" | "filter";
|
|
136
138
|
type IconData = {
|
|
137
139
|
width: number;
|
|
138
140
|
height: number;
|
|
@@ -152,7 +154,7 @@ type IconProps = {
|
|
|
152
154
|
type IconComponent = {
|
|
153
155
|
(props: ComponentPropWithRef<SVGSVGElement, IconProps>): React.ReactElement;
|
|
154
156
|
};
|
|
155
|
-
declare const _default$
|
|
157
|
+
declare const _default$5: IconComponent;
|
|
156
158
|
|
|
157
159
|
type AssetName = "logo";
|
|
158
160
|
type AssetsConfig = Record<AssetName, string> & {
|
|
@@ -172,7 +174,7 @@ type ImageComponent = {
|
|
|
172
174
|
}>) => React.ReactElement;
|
|
173
175
|
};
|
|
174
176
|
declare const Image: ImageComponent;
|
|
175
|
-
declare const _default$
|
|
177
|
+
declare const _default$4: ImageComponent & {
|
|
176
178
|
profileImage: typeof Image.profileImage;
|
|
177
179
|
};
|
|
178
180
|
|
|
@@ -255,9 +257,13 @@ type HorizontalDividerProps = DividerProps & {
|
|
|
255
257
|
/** @default textSecondary */
|
|
256
258
|
textColor?: string;
|
|
257
259
|
};
|
|
258
|
-
|
|
259
|
-
vertical:
|
|
260
|
-
horizontal:
|
|
260
|
+
type DividerComponentType = {
|
|
261
|
+
vertical: (props: ComponentPropWithRef<HTMLDivElement, VerticalDividerProps>) => React.ReactElement;
|
|
262
|
+
horizontal: (props: ComponentPropWithRef<HTMLDivElement, HorizontalDividerProps>) => React.ReactElement;
|
|
263
|
+
};
|
|
264
|
+
declare const _default$3: {
|
|
265
|
+
vertical: DividerComponentType["vertical"];
|
|
266
|
+
horizontal: DividerComponentType["horizontal"];
|
|
261
267
|
};
|
|
262
268
|
|
|
263
269
|
type ModalProps = {
|
|
@@ -306,10 +312,22 @@ declare const Modal: typeof ModalComponent & {
|
|
|
306
312
|
type PageHolderProps = {
|
|
307
313
|
/** @default false */
|
|
308
314
|
noMaxContentWidth?: boolean;
|
|
315
|
+
backgroundColor?: string;
|
|
309
316
|
children?: React.ReactNode;
|
|
310
317
|
} & ComponentPaddingProps;
|
|
311
|
-
|
|
312
|
-
|
|
318
|
+
type PageHolderComponentType = {
|
|
319
|
+
(props: ComponentPropWithRef<HTMLDivElement, PageHolderProps>): React.ReactElement;
|
|
320
|
+
center: (props: ComponentPropWithRef<HTMLDivElement, PageHolderProps & {
|
|
321
|
+
decorationImageSrc?: string;
|
|
322
|
+
decorationImageName?: AssetName | AnyOtherString;
|
|
323
|
+
/** @default "right" */
|
|
324
|
+
decorationImagePosition?: "left" | "right";
|
|
325
|
+
}>) => React.ReactElement;
|
|
326
|
+
};
|
|
327
|
+
declare const PageHolderComponent: PageHolderComponentType;
|
|
328
|
+
declare const PageHolder: typeof PageHolderComponent & {
|
|
329
|
+
center: typeof PageHolderComponent.center;
|
|
330
|
+
};
|
|
313
331
|
|
|
314
332
|
type PageHeaderProps = {
|
|
315
333
|
imageUrl?: string;
|
|
@@ -323,8 +341,11 @@ type PageHeaderProps = {
|
|
|
323
341
|
/** @default false */
|
|
324
342
|
lightMode?: boolean;
|
|
325
343
|
} & Pick<ComponentMarginProps, "marginBottom">;
|
|
326
|
-
|
|
327
|
-
|
|
344
|
+
type PageHeaderComponentType = {
|
|
345
|
+
(props: ComponentPropWithRef<HTMLDivElement, PageHeaderProps>): React.ReactElement;
|
|
346
|
+
};
|
|
347
|
+
declare const PageHeaderComponent: PageHeaderComponentType;
|
|
348
|
+
declare const PageHeader: typeof PageHeaderComponent & {};
|
|
328
349
|
|
|
329
350
|
type ChipProps = {
|
|
330
351
|
text: string;
|
|
@@ -466,7 +487,7 @@ type InternalToggleInputProps<Value> = {
|
|
|
466
487
|
} & OmitProps<React.ComponentProps<"input">, "style" | "value" | "ref" | "onChange"> & ComponentStyle & ComponentHoverStyle;
|
|
467
488
|
type ToggleInputProps<Value> = ComponentPropWithRef<ToggleInputRef, OmitProps<InternalToggleInputProps<Value>, "type">>;
|
|
468
489
|
type ToggleInputComponentType = <Value>(props: ToggleInputProps<Value>) => React.ReactElement;
|
|
469
|
-
declare const _default$
|
|
490
|
+
declare const _default$2: {
|
|
470
491
|
checkbox: ToggleInputComponentType;
|
|
471
492
|
radiobutton: ToggleInputComponentType;
|
|
472
493
|
switch: ToggleInputComponentType;
|
|
@@ -544,6 +565,7 @@ type FormProps = {
|
|
|
544
565
|
submitButtonId?: string;
|
|
545
566
|
/** @default false */
|
|
546
567
|
submitButtonIsDisabled?: boolean;
|
|
568
|
+
cancelButtonText?: string;
|
|
547
569
|
/** @default "right" */
|
|
548
570
|
actionButtonsLocation?: "left" | "center" | "right";
|
|
549
571
|
gap?: React.CSSProperties["gap"];
|
|
@@ -553,12 +575,16 @@ type FormProps = {
|
|
|
553
575
|
isDestructive?: boolean;
|
|
554
576
|
/** @default false */
|
|
555
577
|
withDividers?: boolean;
|
|
578
|
+
renderActionButtons?: React.ReactNode;
|
|
556
579
|
onClickCancel?: () => void;
|
|
557
580
|
onSubmit?: (value: React.FormEvent<HTMLFormElement>) => void;
|
|
558
581
|
children?: React.ReactNode;
|
|
559
582
|
} & ComponentMarginProps;
|
|
560
|
-
|
|
561
|
-
|
|
583
|
+
type FormComponentType = {
|
|
584
|
+
(props: ComponentPropWithRef<HTMLFormElement, FormProps>): React.ReactElement;
|
|
585
|
+
};
|
|
586
|
+
declare const FormComponent: FormComponentType;
|
|
587
|
+
declare const Form: typeof FormComponent & {};
|
|
562
588
|
|
|
563
589
|
type LabelProps = {
|
|
564
590
|
text?: string;
|
|
@@ -614,6 +640,19 @@ declare const ColorThemeSwitch: typeof ColorThemeSwitchComponent & {
|
|
|
614
640
|
withText: typeof ColorThemeSwitchComponent.withText;
|
|
615
641
|
};
|
|
616
642
|
|
|
643
|
+
type FilterPreset = "today" | "yesterday" | "thisWeek" | "thisMonth" | "thisYear" | "lastWeek" | "lastMonth" | "lastYear" | "nextWeek" | "nextMonth" | "nextYear";
|
|
644
|
+
type TableFilterData = {
|
|
645
|
+
type: "number";
|
|
646
|
+
min?: number;
|
|
647
|
+
max?: number;
|
|
648
|
+
} | {
|
|
649
|
+
type: "date" | "date-time";
|
|
650
|
+
min?: string;
|
|
651
|
+
max?: string;
|
|
652
|
+
} | {
|
|
653
|
+
type: "list";
|
|
654
|
+
list?: string[];
|
|
655
|
+
};
|
|
617
656
|
type TextColumn<DataItem> = {
|
|
618
657
|
type: "text";
|
|
619
658
|
keyName?: keyof DataItem;
|
|
@@ -630,13 +669,27 @@ type ImageColumn<DataItem> = {
|
|
|
630
669
|
type CheckboxColumn = {
|
|
631
670
|
type: "checkbox";
|
|
632
671
|
} & ToggleInputProps<boolean>;
|
|
672
|
+
type NumberFilter<DataItem> = {
|
|
673
|
+
filter?: "number";
|
|
674
|
+
getValue?: (item: DataItem) => number;
|
|
675
|
+
};
|
|
676
|
+
type DateFilter<DataItem> = {
|
|
677
|
+
filter?: "date" | "date-time";
|
|
678
|
+
presets?: FilterPreset[];
|
|
679
|
+
getValue?: (item: DataItem) => Date;
|
|
680
|
+
};
|
|
681
|
+
type ListFilter<DataItem> = {
|
|
682
|
+
filter?: "list";
|
|
683
|
+
withTotalNumber?: boolean;
|
|
684
|
+
getValueForList?: (item: DataItem) => string;
|
|
685
|
+
};
|
|
633
686
|
type TableColumn<DataItem> = {
|
|
634
687
|
label?: string;
|
|
635
688
|
width?: string | number;
|
|
636
689
|
minWidth?: string | number;
|
|
637
690
|
maxWidth?: string | number;
|
|
638
691
|
align?: "left" | "center" | "right";
|
|
639
|
-
} & (TextColumn<DataItem> | ElementColumn<DataItem> | ImageColumn<DataItem> | CheckboxColumn);
|
|
692
|
+
} & (TextColumn<DataItem> | ElementColumn<DataItem> | ImageColumn<DataItem> | CheckboxColumn) & (NumberFilter<DataItem> | DateFilter<DataItem> | ListFilter<DataItem>);
|
|
640
693
|
type TableProps<DataItem> = {
|
|
641
694
|
columns: TableColumn<DataItem>[];
|
|
642
695
|
data: DataItem[];
|
|
@@ -648,9 +701,18 @@ type TableProps<DataItem> = {
|
|
|
648
701
|
withStickyHeader?: boolean;
|
|
649
702
|
/** @default "No data available" */
|
|
650
703
|
noDataItemsMessage?: string;
|
|
704
|
+
pageSize?: number;
|
|
651
705
|
onClickRow?: (item: DataItem, index: number) => void;
|
|
652
706
|
onClickAllCheckboxes?: (checked: boolean) => void;
|
|
707
|
+
onChangePage?: (page: number) => void;
|
|
708
|
+
onChangeFilter?: (filterData: Record<number, TableFilterData | undefined>) => void;
|
|
653
709
|
} & ComponentMarginProps;
|
|
710
|
+
type TableRef = {
|
|
711
|
+
currentPage: number;
|
|
712
|
+
setCurrentPage: React.Dispatch<React.SetStateAction<number>>;
|
|
713
|
+
pagesCount: number;
|
|
714
|
+
setCheckedItems: React.Dispatch<React.SetStateAction<boolean[]>>;
|
|
715
|
+
};
|
|
654
716
|
type TableComponentType = {
|
|
655
717
|
<DataItem>(props: ComponentPropWithRef<HTMLDivElement, TableProps<DataItem>>): React.ReactElement;
|
|
656
718
|
};
|
|
@@ -790,4 +852,4 @@ declare const isMobileDevice: boolean;
|
|
|
790
852
|
|
|
791
853
|
declare const reactRouterDomPlugin: BetterHtmlPlugin;
|
|
792
854
|
|
|
793
|
-
export { type AppConfig, type AssetName, type AssetsConfig, type BetterHtmlConfig, type BetterHtmlPlugin, _default as BetterHtmlProvider, type BetterHtmlProviderValue, type BrowserName, Button, type ButtonProps, Chip, type ChipProps, type Color, type ColorName, type ColorTheme, ColorThemeSwitch, type ColorThemeSwitchProps, type Colors, type DeepPartialRecord, Div, type DivProps, _default$
|
|
855
|
+
export { type AppConfig, type AssetName, type AssetsConfig, type BetterHtmlConfig, type BetterHtmlPlugin, _default as BetterHtmlProvider, type BetterHtmlProviderValue, type BrowserName, Button, type ButtonProps, Chip, type ChipProps, type Color, type ColorName, type ColorTheme, ColorThemeSwitch, type ColorThemeSwitchProps, type Colors, type DeepPartialRecord, Div, type DivProps, _default$3 as Divider, Dropdown, type DropdownOption, type DropdownProps, type ExcludeOptions, Foldable, type FoldableProps, type FoldableRef, Form, type FormProps, FormRow, type FormRowProps, type HorizontalDividerProps, _default$5 as Icon, type IconName, type IconProps, type IconsConfig, _default$4 as Image, type ImageProps, InputField, type InputFieldProps, _default$1 as Label, type LabelProps, Loader, type LoaderConfig, type LoaderName, type LoaderProps, Modal, type ModalProps, type ModalRef, type OmitProps, PageHeader, type PageHeaderProps, PageHolder, type PageHolderProps, type PartialRecord, type PickAllRequired, type PickValue, type PluginName, type Styles, type TabGroup, Table, type TableColumn, type TableProps, type TableRef, Tabs, type TabsProps, type TabsRef, Text, type TextAs, type TextProps, type TextareaFieldProps, type Theme, type ThemeConfig, _default$2 as ToggleInput, type ToggleInputProps, type ToggleInputRef, type VerticalDividerProps, darkenColor, desaturateColor, formatPhoneNumber, generateRandomString, getBrowser, getFormErrorObject, isMobileDevice, lightenColor, loaderControls, reactRouterDomPlugin, saturateColor, useBetterHtmlContext, useBooleanState, useDebounceState, useForm, useLoader, useLoaderControls, useMediaQuery, usePageResize, usePageScroll, useTheme, useUrlQuery };
|