dinocollab-core 1.1.2 → 1.1.4

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 (127) hide show
  1. package/dist/_virtual/_rollupPluginBabelHelpers.js +2 -2
  2. package/dist/data-view/context.js +2 -0
  3. package/dist/data-view/context.js.map +1 -0
  4. package/dist/data-view/convert-filter-to-graphql.js +2 -0
  5. package/dist/data-view/convert-filter-to-graphql.js.map +1 -0
  6. package/dist/data-view/create.active-filters-panel.js +2 -0
  7. package/dist/data-view/create.active-filters-panel.js.map +1 -0
  8. package/dist/data-view/create.data-view.js +2 -0
  9. package/dist/data-view/create.data-view.js.map +1 -0
  10. package/dist/data-view/create.filter-bar.js +2 -0
  11. package/dist/data-view/create.filter-bar.js.map +1 -0
  12. package/dist/data-view/create.filter-menu.js +2 -0
  13. package/dist/data-view/create.filter-menu.js.map +1 -0
  14. package/dist/data-view/create.pagination-bar.js +2 -0
  15. package/dist/data-view/create.pagination-bar.js.map +1 -0
  16. package/dist/data-view/create.popper-panel.js +2 -0
  17. package/dist/data-view/create.popper-panel.js.map +1 -0
  18. package/dist/data-view/create.search-match.js +2 -0
  19. package/dist/data-view/create.search-match.js.map +1 -0
  20. package/dist/data-view/create.sort-menu.js +2 -0
  21. package/dist/data-view/create.sort-menu.js.map +1 -0
  22. package/dist/data-view/create.view-mode.js +2 -0
  23. package/dist/data-view/create.view-mode.js.map +1 -0
  24. package/dist/data-view/dino.js +2 -0
  25. package/dist/data-view/dino.js.map +1 -0
  26. package/dist/data-view/filter-store.js +2 -0
  27. package/dist/data-view/filter-store.js.map +1 -0
  28. package/dist/data-view/helpers.js +2 -0
  29. package/dist/data-view/helpers.js.map +1 -0
  30. package/dist/data-view/key-converter.js +2 -0
  31. package/dist/data-view/key-converter.js.map +1 -0
  32. package/dist/data-view/query-param-url.js +2 -0
  33. package/dist/data-view/query-param-url.js.map +1 -0
  34. package/dist/data-view/scroll-tracking.js +2 -0
  35. package/dist/data-view/scroll-tracking.js.map +1 -0
  36. package/dist/data-view/types.js +2 -0
  37. package/dist/data-view/types.js.map +1 -0
  38. package/dist/data-view/ui.units.js +2 -0
  39. package/dist/data-view/ui.units.js.map +1 -0
  40. package/dist/data-view/view-mode.content.js +2 -0
  41. package/dist/data-view/view-mode.content.js.map +1 -0
  42. package/dist/data-view/view-mode.types.js +2 -0
  43. package/dist/data-view/view-mode.types.js.map +1 -0
  44. package/dist/data-view/view-mode.units.js +2 -0
  45. package/dist/data-view/view-mode.units.js.map +1 -0
  46. package/dist/form/create.form-base.js +1 -1
  47. package/dist/form/create.form-base.js.map +1 -1
  48. package/dist/form/create.form-grid-layout.js +1 -1
  49. package/dist/form/create.form-grid-layout.js.map +1 -1
  50. package/dist/form/helpers.js +1 -1
  51. package/dist/form/helpers.js.map +1 -1
  52. package/dist/index.js +1 -1
  53. package/dist/table/helpers.js +1 -1
  54. package/dist/table/helpers.js.map +1 -1
  55. package/dist/table-grid/create.table-grid.js +1 -1
  56. package/dist/table-grid/create.table-grid.js.map +1 -1
  57. package/dist/table-grid/filter-bar/base.js +2 -0
  58. package/dist/table-grid/filter-bar/base.js.map +1 -0
  59. package/dist/table-grid/filter-bar/create.filter-bar.js +2 -0
  60. package/dist/table-grid/filter-bar/create.filter-bar.js.map +1 -0
  61. package/dist/table-grid/filter-bar/create.filter-menu.js +2 -0
  62. package/dist/table-grid/filter-bar/create.filter-menu.js.map +1 -0
  63. package/dist/table-grid/filter-bar/create.filter-panel.js +2 -0
  64. package/dist/table-grid/filter-bar/create.filter-panel.js.map +1 -0
  65. package/dist/table-grid/filter-bar/create.filtered.js +2 -0
  66. package/dist/table-grid/filter-bar/create.filtered.js.map +1 -0
  67. package/dist/{filter-bar → table-grid/filter-bar}/types.js +1 -1
  68. package/dist/table-grid/filter-bar/types.js.map +1 -0
  69. package/dist/table-grid/filter-bar/ui.units.js +2 -0
  70. package/dist/table-grid/filter-bar/ui.units.js.map +1 -0
  71. package/dist/table-grid/url-query-param.js +1 -1
  72. package/dist/table-grid/url-query-param.js.map +1 -1
  73. package/dist/types/data-view/context.d.ts +27 -0
  74. package/dist/types/data-view/convert-filter-to-graphql.d.ts +30 -0
  75. package/dist/types/data-view/create.active-filters-panel.d.ts +20 -0
  76. package/dist/types/data-view/create.data-view.d.ts +56 -0
  77. package/dist/types/data-view/create.filter-bar.d.ts +87 -0
  78. package/dist/types/data-view/create.filter-menu.d.ts +10 -0
  79. package/dist/types/data-view/create.pagination-bar.d.ts +15 -0
  80. package/dist/types/data-view/create.popper-panel.d.ts +54 -0
  81. package/dist/types/data-view/create.search-match.d.ts +5 -0
  82. package/dist/types/data-view/create.sort-menu.d.ts +5 -0
  83. package/dist/types/data-view/create.view-mode.d.ts +14 -0
  84. package/dist/types/data-view/dino.d.ts +32 -0
  85. package/dist/types/data-view/filter-store.d.ts +39 -0
  86. package/dist/types/data-view/helpers.d.ts +12 -0
  87. package/dist/types/data-view/index.d.ts +9 -0
  88. package/dist/types/data-view/key-converter.d.ts +13 -0
  89. package/dist/types/data-view/query-param-url.d.ts +26 -0
  90. package/dist/types/data-view/scroll-tracking.d.ts +10 -0
  91. package/dist/types/data-view/types.d.ts +206 -0
  92. package/dist/types/data-view/ui.units.d.ts +77 -0
  93. package/dist/types/data-view/view-mode.content.d.ts +17 -0
  94. package/dist/types/data-view/view-mode.types.d.ts +46 -0
  95. package/dist/types/data-view/view-mode.units.d.ts +18 -0
  96. package/dist/types/form/create.form-base.d.ts +11 -5
  97. package/dist/types/form/create.form-grid-layout.d.ts +7 -4
  98. package/dist/types/index.d.ts +2 -2
  99. package/dist/types/{filter-bar → table-grid/filter-bar}/types.d.ts +4 -4
  100. package/dist/types/table-grid/index.d.ts +1 -0
  101. package/dist/types/table-grid/types.d.ts +1 -1
  102. package/dist/types/utils/query-param.d.ts +14 -14
  103. package/dist/utils/query-param.js +1 -1
  104. package/dist/utils/query-param.js.map +1 -1
  105. package/package.json +66 -64
  106. package/dist/filter-bar/base.js +0 -2
  107. package/dist/filter-bar/base.js.map +0 -1
  108. package/dist/filter-bar/create.filter-bar.js +0 -2
  109. package/dist/filter-bar/create.filter-bar.js.map +0 -1
  110. package/dist/filter-bar/create.filter-menu.js +0 -2
  111. package/dist/filter-bar/create.filter-menu.js.map +0 -1
  112. package/dist/filter-bar/create.filter-panel.js +0 -2
  113. package/dist/filter-bar/create.filter-panel.js.map +0 -1
  114. package/dist/filter-bar/create.filtered.js +0 -2
  115. package/dist/filter-bar/create.filtered.js.map +0 -1
  116. package/dist/filter-bar/types.js.map +0 -1
  117. package/dist/filter-bar/ui.units.js +0 -2
  118. package/dist/filter-bar/ui.units.js.map +0 -1
  119. package/dist/types/filter-bar/create.sort-menu.d.ts +0 -1
  120. package/dist/types/table-grid/demo.d.ts +0 -3
  121. /package/dist/types/{filter-bar → table-grid/filter-bar}/base.d.ts +0 -0
  122. /package/dist/types/{filter-bar → table-grid/filter-bar}/create.filter-bar.d.ts +0 -0
  123. /package/dist/types/{filter-bar → table-grid/filter-bar}/create.filter-menu.d.ts +0 -0
  124. /package/dist/types/{filter-bar → table-grid/filter-bar}/create.filter-panel.d.ts +0 -0
  125. /package/dist/types/{filter-bar → table-grid/filter-bar}/create.filtered.d.ts +0 -0
  126. /package/dist/types/{filter-bar → table-grid/filter-bar}/index.d.ts +0 -0
  127. /package/dist/types/{filter-bar → table-grid/filter-bar}/ui.units.d.ts +0 -0
@@ -0,0 +1,206 @@
1
+ import type { ReactNode } from 'react';
2
+ import type { ButtonProps } from '@mui/material';
3
+ import type { IFilterNotesProps } from './ui.units';
4
+ export type SingleOrArray<T> = T | T[];
5
+ export type IRelativePosition = 'above' | 'below' | 'left' | 'right';
6
+ export type IPositionElementDef = {
7
+ [key in IRelativePosition]?: ReactNode;
8
+ };
9
+ export type IPositionElement<K extends IRelativePosition = IRelativePosition> = Pick<IPositionElementDef, K>;
10
+ export declare enum EViewStatus {
11
+ Loading = "Loading",
12
+ Loaded = "Loaded",
13
+ Error = "Error"
14
+ }
15
+ export type IFilterArea = 'input' | 'filterButton' | 'sortButton';
16
+ export type IFilterReason = 'field' | 'quickSearch' | 'pagination' | 'sort';
17
+ export type IFilterAction = 'add' | 'remove' | 'change' | 'reset';
18
+ export type IFilterType = 'string' | 'select' | 'select-multi' | 'date' | 'date-range';
19
+ export type IFilterLogic = 'and' | 'or';
20
+ export type IFilterDateLogic = 'equals' | 'before' | 'after';
21
+ export type IFilterDateRangeLogic = 'between' | 'not-between';
22
+ export interface IItemBase {
23
+ value: string;
24
+ label?: string;
25
+ }
26
+ export interface IValidationResult {
27
+ hasError: boolean;
28
+ message?: string;
29
+ }
30
+ export declare enum EFieldMatch {
31
+ AlwaysVisible = "AlwaysVisible",
32
+ MatchOnly = "MatchOnly",
33
+ LinkYoutube = "LinkYoutube",
34
+ Link = "Link",
35
+ Guid = "Guid"
36
+ }
37
+ export interface IFieldMatchDef {
38
+ rule: EFieldMatch;
39
+ }
40
+ export interface IFieldMatchMatchOnly extends IFieldMatchDef {
41
+ rule: EFieldMatch.MatchOnly;
42
+ match: (value: string) => boolean;
43
+ }
44
+ export interface IFieldMatchBasic extends IFieldMatchDef {
45
+ rule: EFieldMatch.AlwaysVisible | EFieldMatch.LinkYoutube | EFieldMatch.Link | EFieldMatch.Guid;
46
+ }
47
+ export type IFieldMatchConfig = IFieldMatchMatchOnly | IFieldMatchBasic;
48
+ export type IFieldMatchConfigs = {
49
+ rules: SingleOrArray<IFieldMatchConfig>;
50
+ notes?: IFilterNotesProps;
51
+ };
52
+ export declare enum EFieldValidate {
53
+ Required = "Required",
54
+ LinkYoutube = "LinkYoutube",
55
+ Link = "Link",
56
+ Custom = "Custom"
57
+ }
58
+ export interface IFieldValidateDef {
59
+ rule: EFieldValidate;
60
+ }
61
+ export interface IFieldValidateCustom extends IFieldValidateDef {
62
+ rule: EFieldValidate.Custom;
63
+ validator: (value: string) => boolean;
64
+ }
65
+ export interface IFieldValidateBasic extends IFieldValidateDef {
66
+ rule: EFieldValidate.Required | EFieldValidate.Link | EFieldValidate.LinkYoutube;
67
+ }
68
+ export type IFieldValidateConfig = IFieldValidateCustom | IFieldValidateBasic;
69
+ export type IFieldValidateConfigs = {
70
+ rules: SingleOrArray<IFieldValidateConfig>;
71
+ notes?: IFilterNotesProps;
72
+ };
73
+ export interface IPagination {
74
+ page?: number;
75
+ pageSize?: number;
76
+ }
77
+ export interface ISort<T> {
78
+ field: keyof T;
79
+ direction: 'asc' | 'desc';
80
+ }
81
+ export interface IQuickSearchConfig<T> {
82
+ fields: SingleOrArray<keyof T>;
83
+ label?: string;
84
+ notes?: IFilterNotesProps;
85
+ logic?: IFilterLogic;
86
+ }
87
+ interface IFilterDef {
88
+ /** Display label for the filter field */
89
+ label?: string;
90
+ /**
91
+ * Filter input type
92
+ * @default 'string'
93
+ */
94
+ type?: IFilterType;
95
+ /**
96
+ * Configuration for quick search matching behavior.
97
+ * Determines how the quick search should match against field values.
98
+ */
99
+ quickSearchMatch?: IFieldMatchConfigs;
100
+ /**
101
+ * Notes for the filter field.
102
+ */
103
+ notes?: IFilterNotesProps;
104
+ /**
105
+ * Validation rules for the filter menu input.
106
+ * @default
107
+ * { rules: [{ rule: EFieldValidate.Required }] }
108
+ */
109
+ validation?: IFieldValidateConfigs;
110
+ /**
111
+ * Notes to display in the filter menu.
112
+ * Useful for providing additional context or instructions.
113
+ */
114
+ filterable?: boolean;
115
+ /**
116
+ * Whether the filter field is sortable.
117
+ * If true, the field can be used for sorting in the filter menu.
118
+ * @default true
119
+ */
120
+ sortable?: boolean;
121
+ }
122
+ export interface IFilterBasicDef extends IFilterDef {
123
+ type?: 'string';
124
+ }
125
+ export interface IFilterSelectDef extends IFilterDef {
126
+ type: 'select' | 'select-multi';
127
+ options: {
128
+ value: string;
129
+ label?: string;
130
+ }[];
131
+ }
132
+ export interface IFilterDateDef extends IFilterDef {
133
+ type: 'date' | 'date-range';
134
+ /**
135
+ * Date format for display and validation
136
+ * @default 'YYYY-MM-DD'
137
+ */
138
+ format?: string;
139
+ /**
140
+ * Minimum date allowed
141
+ */
142
+ minDate?: string | Date;
143
+ /**
144
+ * Maximum date allowed
145
+ */
146
+ maxDate?: string | Date;
147
+ }
148
+ export type IFilterConfig = IFilterBasicDef | IFilterSelectDef | IFilterDateDef;
149
+ export type IFilterConfigs<T> = {
150
+ [key in keyof T]?: IFilterConfig;
151
+ };
152
+ export interface IFilterItem {
153
+ type?: IFilterType;
154
+ value?: string | number | boolean;
155
+ label?: string;
156
+ logic?: IFilterLogic;
157
+ dateLogic?: IFilterDateLogic;
158
+ dateRangeLogic?: IFilterDateRangeLogic;
159
+ startDate?: string;
160
+ endDate?: string;
161
+ }
162
+ export type IFilterMap<T> = {
163
+ [key in keyof T]?: IFilterItem[];
164
+ };
165
+ export interface IFilterChangeDetails {
166
+ reason?: IFilterReason;
167
+ area?: IFilterArea;
168
+ action?: IFilterAction;
169
+ isChanged?: boolean;
170
+ }
171
+ export interface IFilterState<T> {
172
+ filter?: IFilterMap<T>;
173
+ quickSearch?: SingleOrArray<string>;
174
+ quickSearchLogic?: IFilterLogic;
175
+ pagination?: IPagination;
176
+ sort?: ISort<T>;
177
+ details?: IFilterChangeDetails;
178
+ }
179
+ export type IFilterStateChangeHandler<T> = (filterState: IFilterState<T>) => void;
180
+ export interface ISortButtonConfigs {
181
+ text?: string;
182
+ icon?: ReactNode;
183
+ wrapProps?: ButtonProps;
184
+ }
185
+ export interface IFilterBarConfigBase {
186
+ /** @default false */
187
+ enableSticky?: boolean;
188
+ /** @default false */
189
+ enableSort?: boolean;
190
+ }
191
+ export interface IFilterBarConfigs<T> extends IFilterBarConfigBase {
192
+ id?: string;
193
+ placeholder?: string;
194
+ notes?: IFilterNotesProps;
195
+ fields?: IFilterConfigs<T>;
196
+ quickSearch?: IQuickSearchConfig<T>;
197
+ defaultValue?: IFilterState<T>;
198
+ sortButton?: ISortButtonConfigs;
199
+ }
200
+ export interface IViewData<T> {
201
+ items: T[];
202
+ totalItems?: number;
203
+ hasPreviousPage?: boolean;
204
+ hasNextPage?: boolean;
205
+ }
206
+ export {};
@@ -0,0 +1,77 @@
1
+ import React, { FC, ReactNode } from 'react';
2
+ import { ButtonProps, InputBaseProps } from '@mui/material';
3
+ import { IconButtonProps } from '@mui/material';
4
+ import { IFilterLogic, IFilterDateLogic, IFilterDateRangeLogic, IFilterSelectDef, IValidationResult, IFilterDateDef, IFilterBasicDef } from './types';
5
+ export declare const mapSortConfigs: Record<'asc' | 'desc', {
6
+ title: string;
7
+ icon: ReactNode;
8
+ }>;
9
+ export interface IFilterLogicToggleProps {
10
+ value?: IFilterLogic;
11
+ onChange?: (event: React.MouseEvent<HTMLElement>, value: IFilterLogic) => void;
12
+ }
13
+ export declare const FilterLogicToggle: FC<IFilterLogicToggleProps>;
14
+ export interface IDateLogicToggleProps {
15
+ value?: IFilterDateLogic;
16
+ onChange?: (event: React.MouseEvent<HTMLElement>, value: IFilterDateLogic) => void;
17
+ }
18
+ export declare const DateLogicToggle: FC<IDateLogicToggleProps>;
19
+ export interface IDateRangeLogicToggleProps {
20
+ value?: IFilterDateRangeLogic;
21
+ onChange?: (event: React.MouseEvent<HTMLElement>, value: IFilterDateRangeLogic) => void;
22
+ }
23
+ export declare const DateRangeLogicToggle: FC<IDateRangeLogicToggleProps>;
24
+ export interface IFilterNotesProps {
25
+ title?: string;
26
+ items?: string[];
27
+ disabledSize?: boolean;
28
+ renderContent?: () => ReactNode;
29
+ }
30
+ export declare const FilterNotes: FC<IFilterNotesProps>;
31
+ export declare const FilterInput: React.ForwardRefExoticComponent<Omit<InputBaseProps, "ref"> & React.RefAttributes<HTMLInputElement>>;
32
+ interface IFilterInputAdornmentProps {
33
+ notes?: IFilterNotesProps;
34
+ keyword?: string;
35
+ onClear: IconButtonProps['onClick'];
36
+ onEnterSearch: ButtonProps['onClick'];
37
+ }
38
+ export declare const FilterInputAdornment: FC<IFilterInputAdornmentProps>;
39
+ export interface IButtonClearProps {
40
+ visibled?: boolean;
41
+ onClick: IconButtonProps['onClick'];
42
+ }
43
+ export declare const ButtonClear: FC<IButtonClearProps>;
44
+ export declare const ClearAllButton: React.ForwardRefExoticComponent<Omit<ButtonProps<"button", {}>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
45
+ export declare const FilterButton: React.ForwardRefExoticComponent<Omit<IconButtonProps<"button", {}>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
46
+ export declare const SortIconButton: React.ForwardRefExoticComponent<Omit<IconButtonProps<"button", {}>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
47
+ export declare const SortButton: FC<ButtonProps>;
48
+ export declare const PanelNotFound: FC<{
49
+ area?: string;
50
+ }>;
51
+ interface IMenuWithTypeBaseProps {
52
+ name: string;
53
+ validationResult?: IValidationResult;
54
+ }
55
+ interface IMenuWithTypeStringProps extends IMenuWithTypeBaseProps {
56
+ fieldConfig?: IFilterBasicDef;
57
+ }
58
+ export declare const MenuWithTypeString: FC<IMenuWithTypeStringProps>;
59
+ export interface IMenuWithTypeSelectProps extends IMenuWithTypeBaseProps {
60
+ fieldConfig?: IFilterSelectDef;
61
+ onChange?: (event: React.ChangeEvent<HTMLInputElement>) => void;
62
+ }
63
+ export declare const MenuWithTypeSelect: FC<IMenuWithTypeSelectProps>;
64
+ export interface IMenuWithTypeSelectMultiProps extends IMenuWithTypeBaseProps {
65
+ fieldConfig?: IFilterSelectDef;
66
+ onChange?: (event: React.SyntheticEvent, checked: boolean) => void;
67
+ }
68
+ export declare const MenuWithTypeSelectMulti: FC<IMenuWithTypeSelectMultiProps>;
69
+ export interface IMenuWithTypeDateProps extends IMenuWithTypeBaseProps {
70
+ fieldConfig?: IFilterDateDef;
71
+ }
72
+ export declare const MenuWithTypeDate: FC<IMenuWithTypeDateProps>;
73
+ export interface IMenuWithTypeDateRangeProps extends IMenuWithTypeBaseProps {
74
+ fieldConfig?: IFilterDateDef;
75
+ }
76
+ export declare const MenuWithTypeDateRange: FC<IMenuWithTypeDateRangeProps>;
77
+ export {};
@@ -0,0 +1,17 @@
1
+ import { ComponentType } from 'react';
2
+ import { DataGridProps } from '@mui/x-data-grid';
3
+ import { IViewModeListConfig, IViewModeModuleConfig, IViewModeValidModel } from './view-mode.types';
4
+ interface IViewModeModuleProps<T extends IViewModeValidModel> {
5
+ data: T[];
6
+ configs: IViewModeModuleConfig<T>;
7
+ }
8
+ export declare function createViewModeModule<T extends IViewModeValidModel>(): ComponentType<IViewModeModuleProps<T>>;
9
+ export interface IViewModeListProps<T extends IViewModeValidModel> {
10
+ value: T[];
11
+ configs: IViewModeListConfig<T>;
12
+ slots?: {
13
+ dataGridProps?: Partial<Omit<DataGridProps, 'columns' | 'rows'>>;
14
+ };
15
+ }
16
+ export declare function createViewModeList<T extends IViewModeValidModel>(): ComponentType<IViewModeListProps<T>>;
17
+ export {};
@@ -0,0 +1,46 @@
1
+ /// <reference types="react" />
2
+ import { BoxProps, Breakpoint, GridProps } from '@mui/material';
3
+ import { GridColDef, GridRowIdGetter } from '@mui/x-data-grid';
4
+ export type IViewModeValidModel = {
5
+ [key: string | symbol]: any;
6
+ };
7
+ export declare enum EViewMode {
8
+ List = "list",
9
+ Module = "module"
10
+ }
11
+ export type IResponsiveSize = {
12
+ [key in Breakpoint]?: number;
13
+ };
14
+ export interface IViewModeElementProps {
15
+ mode?: EViewMode;
16
+ }
17
+ export interface IViewModeItemProps<T> {
18
+ data: T;
19
+ index: number;
20
+ }
21
+ export type GridColsDef<T extends IViewModeValidModel> = {
22
+ [key in keyof T]?: Omit<GridColDef<T>, 'field'>;
23
+ };
24
+ export interface IViewModeListConfig<T extends IViewModeValidModel> {
25
+ getRowId?: GridRowIdGetter<T>;
26
+ columns?: GridColsDef<T>;
27
+ rowHeight?: number;
28
+ }
29
+ export type IViewModeModuleConfig<T> = {
30
+ getElementId?: (value: T) => string | number;
31
+ Element?: React.ComponentType<IViewModeItemProps<T>>;
32
+ elementWrapProps?: Omit<GridProps, 'size' | 'children'>;
33
+ elementWrapPropsGetter?: (props: IViewModeItemProps<T>) => Omit<GridProps, 'size' | 'children'>;
34
+ spacing?: GridProps['spacing'];
35
+ size?: IResponsiveSize;
36
+ wrapProps?: Omit<GridProps, 'size' | 'children'>;
37
+ };
38
+ export interface IViewModeConfigs<T extends IViewModeValidModel> {
39
+ list?: IViewModeListConfig<T>;
40
+ module?: IViewModeModuleConfig<T>;
41
+ NoData?: React.ComponentType<IViewModeElementProps>;
42
+ ErrorData?: React.ComponentType<IViewModeElementProps>;
43
+ Skeleton?: React.ComponentType<IViewModeElementProps>;
44
+ wrapProps?: BoxProps;
45
+ defaultValue?: EViewMode;
46
+ }
@@ -0,0 +1,18 @@
1
+ import { FC } from 'react';
2
+ import { BoxProps } from '@mui/material';
3
+ import { EViewMode, IResponsiveSize, IViewModeElementProps } from './view-mode.types';
4
+ export declare const defaultSize: IResponsiveSize;
5
+ export declare const defaultViewMode = EViewMode.List;
6
+ export interface IViewModeProps {
7
+ value?: EViewMode;
8
+ onChange?: (value: EViewMode) => void;
9
+ }
10
+ export declare const ViewModeButtons: FC<IViewModeProps>;
11
+ export declare const createViewModeButtons: () => FC<IViewModeProps>;
12
+ export declare const LoadingOverlay: FC<BoxProps>;
13
+ export declare const LoadingError: FC<{
14
+ error: string;
15
+ }>;
16
+ export declare const LoadingNoData: FC<IViewModeElementProps>;
17
+ export declare const LoadingWaiting: FC;
18
+ export declare const LoadingMissingConfig: React.FC;
@@ -1,14 +1,20 @@
1
1
  import React, { ComponentType, PropsWithChildren } from 'react';
2
- import { SxProps, Theme } from '@mui/material';
2
+ import { BoxProps } from '@mui/material';
3
3
  import { IFormBaseContext } from './types';
4
4
  import FormValidator, { IPartialError } from './validator';
5
- export interface IFormBaseParams<T> {
6
- validate?: FormValidator<Partial<T>>;
5
+ export interface IFormBaseSlots {
6
+ formProps?: Omit<BoxProps, 'ref' | 'onSubmit' | 'component'>;
7
7
  }
8
- export interface IFormBaseProps<T> extends PropsWithChildren {
9
- sx?: SxProps<Theme>;
8
+ export interface IFormBaseConfigs<T> {
10
9
  validate?: FormValidator<Partial<T>>;
10
+ dataTrimed?: boolean;
11
+ dataGetter?: (data: Partial<T>) => Partial<T>;
12
+ }
13
+ export interface IFormBaseParams<T> extends IFormBaseConfigs<T> {
14
+ }
15
+ export interface IFormBaseProps<T> extends PropsWithChildren, IFormBaseConfigs<T> {
11
16
  onSubmit: (data: Partial<T>, e: React.FormEvent<HTMLFormElement>) => Promise<void>;
17
+ slots?: IFormBaseSlots;
12
18
  }
13
19
  export interface IFormBaseState<T> {
14
20
  modelState?: Partial<T>;
@@ -2,6 +2,7 @@ import React, { ComponentType } from 'react';
2
2
  import { BoxProps, RegularBreakpoints, SxProps, Theme } from '@mui/material';
3
3
  import { IFormBase, IFormInputBase } from './types';
4
4
  import FormValidator from './validator';
5
+ import { IFormBaseSlots } from './create.form-base';
5
6
  export interface IFormGridLayoutConfig<T> {
6
7
  key: keyof T;
7
8
  label?: string;
@@ -10,20 +11,22 @@ export interface IFormGridLayoutConfig<T> {
10
11
  defaultValue?: any;
11
12
  inputElement?: React.ComponentType<IFormInputBase<T>>;
12
13
  }
13
- export type ISubmitMappingEvent<T> = (value: Partial<T>, oldValue?: T) => Partial<T>;
14
+ export type IPreSubmitEvent<T> = (value: Partial<T>, oldValue?: T) => Partial<T>;
14
15
  export interface IFormGridLayoutSlots<T> {
15
16
  action?: React.ComponentType<IFormBase<T>>;
16
17
  actionBefore?: JSX.Element;
17
18
  contentBefore?: JSX.Element;
18
19
  contentAfter?: JSX.Element;
19
- inputVisibility?: Partial<Record<keyof T, boolean>>;
20
- inputDisabled?: Partial<Record<keyof T, boolean>>;
20
+ hiddenFields?: Partial<Record<keyof T, boolean>>;
21
+ getHiddenFields?: (value: Partial<T>) => Partial<Record<keyof T, boolean>>;
22
+ disabledFields?: Partial<Record<keyof T, boolean>>;
21
23
  closeState?: {
22
24
  Success?: boolean;
23
25
  Fail?: boolean;
24
26
  };
25
27
  contentProps?: BoxProps;
26
- submitMapping?: ISubmitMappingEvent<T>;
28
+ preSubmit?: IPreSubmitEvent<T>;
29
+ formSlots?: IFormBaseSlots;
27
30
  }
28
31
  export interface IFormGridLayoutParams<T> extends IFormGridLayoutSlots<T> {
29
32
  configs: IFormGridLayoutConfig<T>[];
@@ -1,10 +1,10 @@
1
1
  /// <reference path="./@types/global.d.ts" />
2
+ export * from './utils';
2
3
  export * from './api-context';
3
4
  export * from './components';
4
- export * from './filter-bar';
5
5
  export * from './form';
6
6
  export * from './hooks';
7
7
  export * from './redux';
8
8
  export * from './table';
9
9
  export * from './table-grid';
10
- export * from './utils';
10
+ export * from './data-view';
@@ -20,20 +20,20 @@ interface ISearchMatchQuickly extends ISearchMatchBase {
20
20
  rule: ESearchMatch.AlwaysVisible | ESearchMatch.LinkYoutube | ESearchMatch.Link | ESearchMatch.Guid;
21
21
  }
22
22
  type IFieldSearchMatch = ISearchMatchMatchOnly | ISearchMatchQuickly;
23
- export declare enum EFieldValidate {
23
+ export declare enum EMenuValidate {
24
24
  LinkYoutube = "LinkYoutube",
25
25
  Link = "Link",
26
26
  Custom = "Custom"
27
27
  }
28
28
  interface IFieldValidateBase {
29
- rule: EFieldValidate;
29
+ rule: EMenuValidate;
30
30
  }
31
31
  interface IFieldValidateCustom extends IFieldValidateBase {
32
- rule: EFieldValidate.Custom;
32
+ rule: EMenuValidate.Custom;
33
33
  custom: (value: string) => boolean;
34
34
  }
35
35
  interface IFieldValidateQuickly extends IFieldValidateBase {
36
- rule: EFieldValidate.Link | EFieldValidate.LinkYoutube;
36
+ rule: EMenuValidate.Link | EMenuValidate.LinkYoutube;
37
37
  }
38
38
  type IFieldValidate = IFieldValidateQuickly | IFieldValidateCustom;
39
39
  export interface IQuickSearchDef<T> {
@@ -1,3 +1,4 @@
1
1
  export { default as DinoTableGrid } from './dino';
2
2
  export * from './types';
3
3
  export * from './item-actions';
4
+ export { EMenuValidate, ESearchMatch } from './filter-bar/types';
@@ -1,7 +1,7 @@
1
1
  import { ComponentType, ReactNode } from 'react';
2
2
  import { GridProps, RegularBreakpoints } from '@mui/material';
3
3
  import { IToolbarPannelProps } from './toolbar-pannel';
4
- import { IFilterBarConfigs, IFilterState } from '../filter-bar';
4
+ import { IFilterBarConfigs, IFilterState } from './filter-bar';
5
5
  import { TableGridItemActionsConfig, ITableGridItemActionsBaseProps } from './item-actions';
6
6
  export interface ITableGridItemProps<T = any> {
7
7
  value: T;
@@ -1,25 +1,25 @@
1
1
  import queryString from 'query-string';
2
2
  declare class QueryParamBase {
3
- private _GetValues;
4
- private _GetValuesMap;
5
- private _GetkeysMap;
3
+ private getValues;
4
+ private getValuesMap;
5
+ private getkeysMap;
6
6
  private getPath;
7
7
  stringify: <TParam extends Record<string, any> = any>(param: TParam) => string;
8
- Replace<TParam extends {} = any, TState = any>(param: TParam, state?: TState): void;
9
- Patch<TParam extends {
8
+ replace<TParam extends {} = any, TState = any>(param: TParam, state?: TState): void;
9
+ patch<TParam extends {
10
10
  [key: string]: any;
11
11
  } = any, TState = any>(param: TParam, state?: TState): void;
12
- ReplacePatch<TParam extends {
12
+ replacePatch<TParam extends {
13
13
  [key: string]: any;
14
14
  } = any, TState = any>(param: TParam, state?: TState): void;
15
- Put<TParam extends {} = any, TState = any>(param: TParam, state?: TState): void;
16
- Deletes<TValue extends {} = any>(...keys: (keyof TValue)[]): void;
17
- ReplaceDeletes<TValue extends {} = any>(...keys: (keyof TValue)[]): void;
18
- ReplaceDeletesWithState<TValue extends {} = any, TState = any>(keys: (keyof TValue)[], state?: TState): void;
19
- DeletesWithState<TValue extends {} = any, TState = any>(keys: (keyof TValue)[], state?: TState): void;
20
- DeleteAll(): void;
21
- GetAll: () => queryString.ParsedQuery<string>;
22
- Gets<TValue extends {} = any>(...keys: (keyof TValue)[]): Partial<TValue>;
15
+ put<TParam extends {} = any, TState = any>(param: TParam, state?: TState): void;
16
+ deletes<TValue extends {} = any>(...keys: (keyof TValue)[]): void;
17
+ replaceDeletes<TValue extends {} = any>(...keys: (keyof TValue)[]): void;
18
+ replaceDeletesWithState<TValue extends {} = any, TState = any>(keys: (keyof TValue)[], state?: TState): void;
19
+ deletesWithState<TValue extends {} = any, TState = any>(keys: (keyof TValue)[], state?: TState): void;
20
+ deleteAll(): void;
21
+ getAll: () => queryString.ParsedQuery<string>;
22
+ gets<TValue extends {} = any>(...keys: (keyof TValue)[]): Partial<TValue>;
23
23
  }
24
24
  export declare const QueryParam: QueryParamBase;
25
25
  export default QueryParam;
@@ -1,2 +1,2 @@
1
- import{createClass as e,classCallCheck as t,defineProperty as n}from"../_virtual/_rollupPluginBabelHelpers.js";import a from"query-string";var i=function(e){var t;return null!==(t=null==e?void 0:e.trim().toLowerCase())&&void 0!==t?t:""},r=new(function(){return e((function e(){var i=this;t(this,e),n(this,"getPath",(function(){return"/"===window.location.pathname?"":window.location.pathname})),n(this,"stringify",(function(e){var t=Object.keys(e).filter((function(t){return e[t]})).reduce((function(t,n){var a=encodeURIComponent(e[n]);return t[n]=a,t}),{});return"?"+a.stringify(t,{skipNull:!0,skipEmptyString:!0})})),n(this,"GetAll",(function(){return i._GetValues()}))}),[{key:"_GetValues",value:function(){return a.parse(decodeURIComponent(window.location.search))}},{key:"_GetValuesMap",value:function(){var e=this._GetValues();return new Map(Object.keys(e).map((function(t){return[i(t),e[t]]})))}},{key:"_GetkeysMap",value:function(){var e=this._GetValues();return new Map(Object.keys(e).map((function(e){return[i(e),e]})))}},{key:"Replace",value:function(e,t){window.history.replaceState(null!=t?t:{},"","".concat(this.getPath()).concat(this.stringify(e))),window.dispatchEvent(new window.PopStateEvent("popstate"))}},{key:"Patch",value:function(e,t){var n=this._GetValues(),a=this._GetkeysMap();Object.keys(e).forEach((function(t){var r,o=i(t);a.has(o)?n[null!==(r=a.get(o))&&void 0!==r?r:""]=e[t]:n[t]=e[t]})),this.Put(n,t)}},{key:"ReplacePatch",value:function(e,t){var n=this._GetValues(),a=this._GetkeysMap();Object.keys(e).forEach((function(t){var r,o=i(t);a.has(o)?n[null!==(r=a.get(o))&&void 0!==r?r:""]=e[t]:n[t]=e[t]})),this.Replace(n,t)}},{key:"Put",value:function(e,t){window.history.pushState(null!=t?t:{},"","".concat(this.getPath()).concat(this.stringify(e))),window.dispatchEvent(new window.PopStateEvent("popstate"))}},{key:"Deletes",value:function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];this.DeletesWithState(t)}},{key:"ReplaceDeletes",value:function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];this.ReplaceDeletesWithState(t)}},{key:"ReplaceDeletesWithState",value:function(e,t){var n=this._GetValues(),a=this._GetkeysMap();e.forEach((function(e){var t,r=i(e.toString());a.has(r)&&delete n[null!==(t=a.get(r))&&void 0!==t?t:""]})),this.Replace(n,t)}},{key:"DeletesWithState",value:function(e,t){var n=this._GetValues(),a=this._GetkeysMap();e.forEach((function(e){var t,r=i(e.toString());a.has(r)&&delete n[null!==(t=a.get(r))&&void 0!==t?t:""]})),this.Put(n,t)}},{key:"DeleteAll",value:function(){window.history.replaceState({},"","".concat(this.getPath()))}},{key:"Gets",value:function(){for(var e=this._GetValuesMap(),t=arguments.length,n=new Array(t),a=0;a<t;a++)n[a]=arguments[a];return n.reduce((function(t,n){var a=i(n.toString());return e.has(a)&&(t[n]=e.get(a)),t}),{})}}])}());window.QueryParam=r;export{r as QueryParam,r as default};
1
+ import{createClass as e,classCallCheck as t,defineProperty as n}from"../_virtual/_rollupPluginBabelHelpers.js";import a from"query-string";var i=function(e){var t;return null!==(t=null==e?void 0:e.trim().toLowerCase())&&void 0!==t?t:""},r=new(function(){return e((function e(){var i=this;t(this,e),n(this,"getPath",(function(){return"/"===window.location.pathname?"":window.location.pathname})),n(this,"stringify",(function(e){var t=Object.keys(e).filter((function(t){return e[t]})).reduce((function(t,n){var a=encodeURIComponent(e[n]);return t[n]=a,t}),{});return"?"+a.stringify(t,{skipNull:!0,skipEmptyString:!0})})),n(this,"getAll",(function(){return i.getValues()}))}),[{key:"getValues",value:function(){return a.parse(decodeURIComponent(window.location.search))}},{key:"getValuesMap",value:function(){var e=this.getValues();return new Map(Object.keys(e).map((function(t){return[i(t),e[t]]})))}},{key:"getkeysMap",value:function(){var e=this.getValues();return new Map(Object.keys(e).map((function(e){return[i(e),e]})))}},{key:"replace",value:function(e,t){window.history.replaceState(null!=t?t:{},"","".concat(this.getPath()).concat(this.stringify(e))),window.dispatchEvent(new window.PopStateEvent("popstate"))}},{key:"patch",value:function(e,t){var n=this.getValues(),a=this.getkeysMap();Object.keys(e).forEach((function(t){var r,o=i(t);a.has(o)?n[null!==(r=a.get(o))&&void 0!==r?r:""]=e[t]:n[t]=e[t]})),this.put(n,t)}},{key:"replacePatch",value:function(e,t){var n=this.getValues(),a=this.getkeysMap();Object.keys(e).forEach((function(t){var r,o=i(t);a.has(o)?n[null!==(r=a.get(o))&&void 0!==r?r:""]=e[t]:n[t]=e[t]})),this.replace(n,t)}},{key:"put",value:function(e,t){window.history.pushState(null!=t?t:{},"","".concat(this.getPath()).concat(this.stringify(e))),window.dispatchEvent(new window.PopStateEvent("popstate"))}},{key:"deletes",value:function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];this.deletesWithState(t)}},{key:"replaceDeletes",value:function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];this.replaceDeletesWithState(t)}},{key:"replaceDeletesWithState",value:function(e,t){var n=this.getValues(),a=this.getkeysMap();e.forEach((function(e){var t,r=i(e.toString());a.has(r)&&delete n[null!==(t=a.get(r))&&void 0!==t?t:""]})),this.replace(n,t)}},{key:"deletesWithState",value:function(e,t){var n=this.getValues(),a=this.getkeysMap();e.forEach((function(e){var t,r=i(e.toString());a.has(r)&&delete n[null!==(t=a.get(r))&&void 0!==t?t:""]})),this.put(n,t)}},{key:"deleteAll",value:function(){window.history.replaceState({},"","".concat(this.getPath()))}},{key:"gets",value:function(){for(var e=this.getValuesMap(),t=arguments.length,n=new Array(t),a=0;a<t;a++)n[a]=arguments[a];return n.reduce((function(t,n){var a=i(n.toString());return e.has(a)&&(t[n]=e.get(a)),t}),{})}}])}());window.QueryParam=r;export{r as QueryParam,r as default};
2
2
  //# sourceMappingURL=query-param.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"query-param.js","sources":["../../src/utils/query-param.ts"],"sourcesContent":["import queryString from 'query-string'\r\n\r\nconst StringStardize = (str: string) => str?.trim().toLowerCase() ?? ''\r\n\r\nclass QueryParamBase {\r\n private _GetValues() {\r\n // return queryString.parse(decodeURIComponent(window.location.search))\r\n return queryString.parse(decodeURIComponent(window.location.search))\r\n }\r\n\r\n private _GetValuesMap() {\r\n const query = this._GetValues()\r\n return new Map(Object.keys(query).map((x) => [StringStardize(x), query[x] as string]))\r\n }\r\n\r\n private _GetkeysMap() {\r\n const query = this._GetValues()\r\n return new Map(Object.keys(query).map((x) => [StringStardize(x), x]))\r\n }\r\n\r\n private getPath = () => (window.location.pathname === '/' ? '' : window.location.pathname)\r\n\r\n // stringify<TParam extends {} = any>(param: TParam) {\r\n // return `?${encodeURIComponent(queryString.stringify(param, { skipNull: true, skipEmptyString: true }))}`\r\n // }\r\n stringify = <TParam extends Record<string, any> = any>(param: TParam): string => {\r\n const entries = Object.keys(param)\r\n .filter((key) => param[key]) // skip null & empty string\r\n .reduce((a, key) => {\r\n const encodedValue = encodeURIComponent(param[key])\r\n a[key] = encodedValue\r\n return a\r\n }, {} as any)\r\n\r\n return '?' + queryString.stringify(entries, { skipNull: true, skipEmptyString: true })\r\n }\r\n\r\n Replace<TParam extends {} = any, TState = any>(param: TParam, state?: TState) {\r\n window.history.replaceState(state ?? {}, '', `${this.getPath()}${this.stringify(param)}`)\r\n window.dispatchEvent(new window.PopStateEvent('popstate'))\r\n }\r\n\r\n Patch<TParam extends { [key: string]: any } = any, TState = any>(param: TParam, state?: TState) {\r\n const query = this._GetValues()\r\n const keyMap = this._GetkeysMap()\r\n Object.keys(param).forEach((k) => {\r\n const key = StringStardize(k)\r\n if (keyMap.has(key)) {\r\n query[keyMap.get(key) ?? ''] = param[k]\r\n } else {\r\n query[k] = param[k]\r\n }\r\n })\r\n this.Put(query, state)\r\n }\r\n\r\n ReplacePatch<TParam extends { [key: string]: any } = any, TState = any>(param: TParam, state?: TState) {\r\n const query = this._GetValues()\r\n const keyMap = this._GetkeysMap()\r\n Object.keys(param).forEach((k) => {\r\n const key = StringStardize(k)\r\n if (keyMap.has(key)) {\r\n query[keyMap.get(key) ?? ''] = param[k]\r\n } else {\r\n query[k] = param[k]\r\n }\r\n })\r\n this.Replace(query, state)\r\n }\r\n\r\n Put<TParam extends {} = any, TState = any>(param: TParam, state?: TState) {\r\n window.history.pushState(state ?? {}, '', `${this.getPath()}${this.stringify(param)}`)\r\n window.dispatchEvent(new window.PopStateEvent('popstate'))\r\n }\r\n\r\n Deletes<TValue extends {} = any>(...keys: (keyof TValue)[]) {\r\n this.DeletesWithState(keys)\r\n }\r\n\r\n ReplaceDeletes<TValue extends {} = any>(...keys: (keyof TValue)[]) {\r\n this.ReplaceDeletesWithState(keys)\r\n }\r\n\r\n ReplaceDeletesWithState<TValue extends {} = any, TState = any>(keys: (keyof TValue)[], state?: TState) {\r\n const query = this._GetValues()\r\n const keyMap = this._GetkeysMap()\r\n keys.forEach((k) => {\r\n const key = StringStardize(k.toString())\r\n if (keyMap.has(key)) {\r\n delete query[keyMap.get(key) ?? '']\r\n }\r\n })\r\n this.Replace(query, state)\r\n }\r\n\r\n DeletesWithState<TValue extends {} = any, TState = any>(keys: (keyof TValue)[], state?: TState) {\r\n const query = this._GetValues()\r\n const keyMap = this._GetkeysMap()\r\n keys.forEach((k) => {\r\n const key = StringStardize(k.toString())\r\n if (keyMap.has(key)) {\r\n delete query[keyMap.get(key) ?? '']\r\n }\r\n })\r\n this.Put(query, state)\r\n }\r\n\r\n DeleteAll() {\r\n window.history.replaceState({}, '', `${this.getPath()}`)\r\n }\r\n\r\n GetAll = () => {\r\n return this._GetValues()\r\n }\r\n\r\n Gets<TValue extends {} = any>(...keys: (keyof TValue)[]) {\r\n const query = this._GetValuesMap()\r\n return keys.reduce<Partial<TValue>>((a, k) => {\r\n const key = StringStardize(k.toString())\r\n if (query.has(key)) {\r\n a[k] = query.get(key) as any\r\n }\r\n return a\r\n }, {})\r\n }\r\n}\r\nexport const QueryParam = new QueryParamBase()\r\n;(window as any).QueryParam = QueryParam\r\nexport default QueryParam\r\n"],"names":["StringStardize","str","_str$trim$toLowerCase","trim","toLowerCase","QueryParam","_createClass","QueryParamBase","_this","this","_classCallCheck","_defineProperty","window","location","pathname","param","entries","Object","keys","filter","key","reduce","a","encodedValue","encodeURIComponent","queryString","stringify","skipNull","skipEmptyString","_GetValues","value","parse","decodeURIComponent","search","query","Map","map","x","state","history","replaceState","concat","getPath","dispatchEvent","PopStateEvent","keyMap","_GetkeysMap","forEach","k","_keyMap$get","has","get","Put","_keyMap$get2","Replace","pushState","_len","arguments","length","Array","_key","DeletesWithState","_len2","_key2","ReplaceDeletesWithState","_keyMap$get3","toString","_keyMap$get4","_GetValuesMap","_len3","_key3"],"mappings":"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"}
1
+ {"version":3,"file":"query-param.js","sources":["../../src/utils/query-param.ts"],"sourcesContent":["import queryString from 'query-string'\r\n\r\nconst stringStardize = (str: string) => str?.trim().toLowerCase() ?? ''\r\n\r\nclass QueryParamBase {\r\n private getValues() {\r\n // return queryString.parse(decodeURIComponent(window.location.search))\r\n return queryString.parse(decodeURIComponent(window.location.search))\r\n }\r\n\r\n private getValuesMap() {\r\n const query = this.getValues()\r\n return new Map(Object.keys(query).map((x) => [stringStardize(x), query[x] as string]))\r\n }\r\n\r\n private getkeysMap() {\r\n const query = this.getValues()\r\n return new Map(Object.keys(query).map((x) => [stringStardize(x), x]))\r\n }\r\n\r\n private getPath = () => (window.location.pathname === '/' ? '' : window.location.pathname)\r\n\r\n // stringify<TParam extends {} = any>(param: TParam) {\r\n // return `?${encodeURIComponent(queryString.stringify(param, { skipNull: true, skipEmptyString: true }))}`\r\n // }\r\n stringify = <TParam extends Record<string, any> = any>(param: TParam): string => {\r\n const entries = Object.keys(param)\r\n .filter((key) => param[key]) // skip null & empty string\r\n .reduce((a, key) => {\r\n const encodedValue = encodeURIComponent(param[key])\r\n a[key] = encodedValue\r\n return a\r\n }, {} as any)\r\n\r\n return '?' + queryString.stringify(entries, { skipNull: true, skipEmptyString: true })\r\n }\r\n\r\n replace<TParam extends {} = any, TState = any>(param: TParam, state?: TState) {\r\n window.history.replaceState(state ?? {}, '', `${this.getPath()}${this.stringify(param)}`)\r\n window.dispatchEvent(new window.PopStateEvent('popstate'))\r\n }\r\n\r\n patch<TParam extends { [key: string]: any } = any, TState = any>(param: TParam, state?: TState) {\r\n const query = this.getValues()\r\n const keyMap = this.getkeysMap()\r\n Object.keys(param).forEach((k) => {\r\n const key = stringStardize(k)\r\n if (keyMap.has(key)) {\r\n query[keyMap.get(key) ?? ''] = param[k]\r\n } else {\r\n query[k] = param[k]\r\n }\r\n })\r\n this.put(query, state)\r\n }\r\n\r\n replacePatch<TParam extends { [key: string]: any } = any, TState = any>(param: TParam, state?: TState) {\r\n const query = this.getValues()\r\n const keyMap = this.getkeysMap()\r\n Object.keys(param).forEach((k) => {\r\n const key = stringStardize(k)\r\n if (keyMap.has(key)) {\r\n query[keyMap.get(key) ?? ''] = param[k]\r\n } else {\r\n query[k] = param[k]\r\n }\r\n })\r\n this.replace(query, state)\r\n }\r\n\r\n put<TParam extends {} = any, TState = any>(param: TParam, state?: TState) {\r\n window.history.pushState(state ?? {}, '', `${this.getPath()}${this.stringify(param)}`)\r\n window.dispatchEvent(new window.PopStateEvent('popstate'))\r\n }\r\n\r\n deletes<TValue extends {} = any>(...keys: (keyof TValue)[]) {\r\n this.deletesWithState(keys)\r\n }\r\n\r\n replaceDeletes<TValue extends {} = any>(...keys: (keyof TValue)[]) {\r\n this.replaceDeletesWithState(keys)\r\n }\r\n\r\n replaceDeletesWithState<TValue extends {} = any, TState = any>(keys: (keyof TValue)[], state?: TState) {\r\n const query = this.getValues()\r\n const keyMap = this.getkeysMap()\r\n keys.forEach((k) => {\r\n const key = stringStardize(k.toString())\r\n if (keyMap.has(key)) {\r\n delete query[keyMap.get(key) ?? '']\r\n }\r\n })\r\n this.replace(query, state)\r\n }\r\n\r\n deletesWithState<TValue extends {} = any, TState = any>(keys: (keyof TValue)[], state?: TState) {\r\n const query = this.getValues()\r\n const keyMap = this.getkeysMap()\r\n keys.forEach((k) => {\r\n const key = stringStardize(k.toString())\r\n if (keyMap.has(key)) {\r\n delete query[keyMap.get(key) ?? '']\r\n }\r\n })\r\n this.put(query, state)\r\n }\r\n\r\n deleteAll() {\r\n window.history.replaceState({}, '', `${this.getPath()}`)\r\n }\r\n\r\n getAll = () => {\r\n return this.getValues()\r\n }\r\n\r\n gets<TValue extends {} = any>(...keys: (keyof TValue)[]) {\r\n const query = this.getValuesMap()\r\n return keys.reduce<Partial<TValue>>((a, k) => {\r\n const key = stringStardize(k.toString())\r\n if (query.has(key)) {\r\n a[k] = query.get(key) as any\r\n }\r\n return a\r\n }, {})\r\n }\r\n}\r\nexport const QueryParam = new QueryParamBase()\r\n;(window as any).QueryParam = QueryParam\r\nexport default QueryParam\r\n"],"names":["stringStardize","str","_str$trim$toLowerCase","trim","toLowerCase","QueryParam","_createClass","QueryParamBase","_this","this","_classCallCheck","_defineProperty","window","location","pathname","param","entries","Object","keys","filter","key","reduce","a","encodedValue","encodeURIComponent","queryString","stringify","skipNull","skipEmptyString","getValues","value","parse","decodeURIComponent","search","query","Map","map","x","state","history","replaceState","concat","getPath","dispatchEvent","PopStateEvent","keyMap","getkeysMap","forEach","k","_keyMap$get","has","get","put","_keyMap$get2","replace","pushState","_len","arguments","length","Array","_key","deletesWithState","_len2","_key2","replaceDeletesWithState","_keyMap$get3","toString","_keyMap$get4","getValuesMap","_len3","_key3"],"mappings":"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"}