@operato/data-grist 1.1.13 → 1.1.15
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/CHANGELOG.md +19 -0
- package/dist/src/data-grist.js +5 -25
- package/dist/src/data-grist.js.map +1 -1
- package/dist/src/data-report.js +2 -1
- package/dist/src/data-report.js.map +1 -1
- package/dist/src/filters/filter-input-hashtag.d.ts +2 -0
- package/dist/src/filters/filter-input-hashtag.js +27 -0
- package/dist/src/filters/filter-input-hashtag.js.map +1 -0
- package/dist/src/filters/filter-input.js.map +1 -1
- package/dist/src/filters/filters-form.d.ts +3 -2
- package/dist/src/filters/filters-form.js +15 -4
- package/dist/src/filters/filters-form.js.map +1 -1
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.js +1 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/types.d.ts +34 -33
- package/dist/src/types.js.map +1 -1
- package/dist/src/utils/index.d.ts +1 -0
- package/dist/src/utils/index.js +1 -0
- package/dist/src/utils/index.js.map +1 -1
- package/dist/src/utils/list-param.d.ts +16 -0
- package/dist/src/utils/list-param.js +40 -0
- package/dist/src/utils/list-param.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +4 -4
- package/src/data-grist.ts +5 -24
- package/src/data-report.ts +1 -1
- package/src/filters/filter-input.ts +1 -1
- package/src/filters/filters-form.ts +16 -6
- package/src/index.ts +2 -0
- package/src/types.ts +1 -0
- package/src/utils/index.ts +1 -0
- package/src/utils/list-param.ts +72 -0
package/dist/src/types.d.ts
CHANGED
|
@@ -10,20 +10,20 @@ import { DataReportField } from './data-report/data-report-field';
|
|
|
10
10
|
import { OxGristEditor } from './editors';
|
|
11
11
|
import { QueryFilter } from './filters';
|
|
12
12
|
import { OxGristRenderer } from './renderers/ox-grist-renderer';
|
|
13
|
-
export
|
|
13
|
+
export type GristConfig = {
|
|
14
14
|
columns: ColumnConfig[];
|
|
15
15
|
rows: RowsConfig;
|
|
16
16
|
list: ListConfig;
|
|
17
17
|
pagination?: PaginationConfig;
|
|
18
18
|
sorters?: SortersConfig;
|
|
19
19
|
};
|
|
20
|
-
export
|
|
20
|
+
export type SorterConfig = {
|
|
21
21
|
name: string;
|
|
22
22
|
desc?: boolean;
|
|
23
23
|
};
|
|
24
|
-
export
|
|
25
|
-
export
|
|
26
|
-
export
|
|
24
|
+
export type SortersConfig = SorterConfig[];
|
|
25
|
+
export type FilterOperator = 'search' | 'eq' | 'between' | 'gte' | 'lte' | 'is_not_true' | 'in' | 'like' | 'i_like' | 'noteq' | 'is_empty_num_id' | 'is_blank' | 'is_present' | 'is_not_false' | 'is_true' | 'is_false' | 'is_not_null' | 'is_null' | 'notin_with_null' | 'notin' | 'gt' | 'lt' | 'i_nlike' | 'nlike';
|
|
26
|
+
export type FilterConfigObject = {
|
|
27
27
|
type: string;
|
|
28
28
|
operator?: FilterOperator;
|
|
29
29
|
options?: {
|
|
@@ -31,19 +31,19 @@ export declare type FilterConfigObject = {
|
|
|
31
31
|
};
|
|
32
32
|
value?: string | number | boolean | string[] | number[] | undefined;
|
|
33
33
|
};
|
|
34
|
-
export
|
|
35
|
-
export
|
|
34
|
+
export type FilterConfig = FilterConfigObject | FilterOperator | boolean;
|
|
35
|
+
export type FilterValue = {
|
|
36
36
|
name: string;
|
|
37
37
|
operator: FilterOperator;
|
|
38
38
|
value: string | number | boolean | string[] | number[] | undefined;
|
|
39
39
|
};
|
|
40
|
-
export
|
|
40
|
+
export type PaginationConfig = {
|
|
41
41
|
page?: number;
|
|
42
42
|
limit?: number;
|
|
43
43
|
pages?: number[];
|
|
44
44
|
infinite?: boolean;
|
|
45
45
|
};
|
|
46
|
-
export
|
|
46
|
+
export type FetchOption = {
|
|
47
47
|
page?: number;
|
|
48
48
|
limit?: number;
|
|
49
49
|
sorters?: SortersConfig;
|
|
@@ -51,15 +51,15 @@ export declare type FetchOption = {
|
|
|
51
51
|
filters?: QueryFilter[];
|
|
52
52
|
options?: object;
|
|
53
53
|
};
|
|
54
|
-
export
|
|
54
|
+
export type FetchResult = {
|
|
55
55
|
page?: number;
|
|
56
56
|
limit?: number;
|
|
57
57
|
total: number;
|
|
58
58
|
records: GristRecord[];
|
|
59
59
|
} | void;
|
|
60
|
-
export
|
|
61
|
-
export
|
|
62
|
-
export
|
|
60
|
+
export type FetchHandler = (param: FetchOption) => Promise<FetchResult>;
|
|
61
|
+
export type GristEventHandler = (columns: ColumnConfig[], data?: GristData, column?: ColumnConfig, record?: GristRecord, rowIndex?: number, target?: any) => void;
|
|
62
|
+
export type ColumnConfig = {
|
|
63
63
|
type: string;
|
|
64
64
|
name: string;
|
|
65
65
|
gutterName?: string;
|
|
@@ -76,18 +76,19 @@ export declare type ColumnConfig = {
|
|
|
76
76
|
filter?: FilterConfig;
|
|
77
77
|
imex?: ImexConfig;
|
|
78
78
|
multiple?: boolean;
|
|
79
|
+
rowCount?: boolean;
|
|
79
80
|
};
|
|
80
|
-
export
|
|
81
|
-
export
|
|
81
|
+
export type ValidationCallback = (after: any, before: any, record: GristRecord, column: ColumnConfig) => boolean;
|
|
82
|
+
export type LabelConfig = string | boolean | {
|
|
82
83
|
renderer: LabelRenderer;
|
|
83
84
|
};
|
|
84
|
-
export
|
|
85
|
-
export
|
|
86
|
-
export
|
|
85
|
+
export type LabelRenderer = () => void;
|
|
86
|
+
export type ColumnWidthCallback = (column: ColumnConfig) => string;
|
|
87
|
+
export type HeaderConfig = {
|
|
87
88
|
renderer: HeaderRenderer;
|
|
88
89
|
};
|
|
89
|
-
export
|
|
90
|
-
export
|
|
90
|
+
export type HeaderRenderer = (column: ColumnConfig) => any;
|
|
91
|
+
export type RecordConfig = {
|
|
91
92
|
renderer: FieldRenderer;
|
|
92
93
|
editor?: FieldEditor;
|
|
93
94
|
editable?: boolean;
|
|
@@ -100,25 +101,25 @@ export declare type RecordConfig = {
|
|
|
100
101
|
rowOptionField?: string;
|
|
101
102
|
[extended: string]: any;
|
|
102
103
|
};
|
|
103
|
-
export
|
|
104
|
-
export
|
|
105
|
-
export
|
|
106
|
-
export
|
|
104
|
+
export type FieldRenderer = (value: any, column: ColumnConfig, record: GristRecord, rowIndex: number, owner: DataGridField | RecordCard | DataCardGutter | DataCardField | DataListGutter | DataListField | RecordPartial | DataReportField | Element) => OxGristRenderer | TemplateResult | string | void;
|
|
105
|
+
export type FieldEditor = (value: any, column: ColumnConfig, record: GristRecord, rowIndex: number, field: DataGridField) => OxGristEditor;
|
|
106
|
+
export type FilterSelectRenderer = (column: ColumnConfig, value: string | number | boolean | string[] | number[] | any | undefined, owner: Element) => TemplateResult | string | void;
|
|
107
|
+
export type GristEventHandlerSet = {
|
|
107
108
|
click?: GristEventHandler;
|
|
108
109
|
dblclick?: GristEventHandler;
|
|
109
110
|
};
|
|
110
|
-
export
|
|
111
|
+
export type ListConfig = {
|
|
111
112
|
thumbnail?: string;
|
|
112
113
|
fields: string[];
|
|
113
114
|
details: string[];
|
|
114
115
|
};
|
|
115
|
-
export
|
|
116
|
+
export type ImexConfig = {
|
|
116
117
|
header: string;
|
|
117
118
|
key: string;
|
|
118
119
|
width: number;
|
|
119
120
|
type: string;
|
|
120
121
|
};
|
|
121
|
-
export
|
|
122
|
+
export type RowsConfig = {
|
|
122
123
|
appendable: boolean;
|
|
123
124
|
insertable: boolean;
|
|
124
125
|
selectable?: RowSelectableConfig;
|
|
@@ -127,11 +128,11 @@ export declare type RowsConfig = {
|
|
|
127
128
|
classifier: GristClassifier;
|
|
128
129
|
handlers: GristEventHandlerSet;
|
|
129
130
|
};
|
|
130
|
-
export
|
|
131
|
+
export type GristClassifier = (record: GristRecord, rowIndex: number) => {
|
|
131
132
|
emphasized?: boolean | string | string[];
|
|
132
133
|
[key: string]: any;
|
|
133
134
|
} | void;
|
|
134
|
-
export
|
|
135
|
+
export type GroupConfig = {
|
|
135
136
|
align: string;
|
|
136
137
|
titleColumn?: ColumnConfig;
|
|
137
138
|
title: string;
|
|
@@ -142,10 +143,10 @@ export declare type GroupConfig = {
|
|
|
142
143
|
rowspan: number;
|
|
143
144
|
colspan?: number;
|
|
144
145
|
};
|
|
145
|
-
export
|
|
146
|
+
export type RowSelectableConfig = {
|
|
146
147
|
multiple?: boolean;
|
|
147
148
|
};
|
|
148
|
-
export
|
|
149
|
+
export type GristRecord = {
|
|
149
150
|
id?: string;
|
|
150
151
|
name?: string;
|
|
151
152
|
__seq__?: number;
|
|
@@ -158,10 +159,10 @@ export declare type GristRecord = {
|
|
|
158
159
|
__origin__?: any;
|
|
159
160
|
[key: string]: any;
|
|
160
161
|
};
|
|
161
|
-
export
|
|
162
|
+
export type GristData = {
|
|
162
163
|
page?: number;
|
|
163
164
|
total?: number;
|
|
164
165
|
limit?: number;
|
|
165
166
|
records: GristRecord[];
|
|
166
167
|
};
|
|
167
|
-
export
|
|
168
|
+
export type GristSelectFunction = (record: GristRecord) => boolean;
|
package/dist/src/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"","sourcesContent":["import { TemplateResult } from 'lit-html'\n\nimport { DataCardField } from './data-card/data-card-field'\nimport { DataCardGutter } from './data-card/data-card-gutter'\nimport { RecordCard } from './data-card/record-card'\nimport { DataGridField } from './data-grid/data-grid-field'\nimport { DataListField } from './data-list/data-list-field'\nimport { DataListGutter } from './data-list/data-list-gutter'\nimport { RecordPartial } from './data-list/record-partial'\nimport { DataReportField } from './data-report/data-report-field'\nimport { OxGristEditor } from './editors'\nimport { QueryFilter } from './filters'\nimport { OxGristRenderer } from './renderers/ox-grist-renderer'\n\nexport type GristConfig = {\n columns: ColumnConfig[]\n rows: RowsConfig\n list: ListConfig\n pagination?: PaginationConfig\n sorters?: SortersConfig\n}\n\nexport type SorterConfig = { name: string; desc?: boolean }\nexport type SortersConfig = SorterConfig[]\nexport type FilterOperator =\n | 'search'\n | 'eq'\n | 'between'\n | 'gte'\n | 'lte'\n | 'is_not_true'\n | 'in'\n | 'like'\n | 'i_like'\n | 'noteq'\n | 'is_empty_num_id'\n | 'is_blank'\n | 'is_present'\n | 'is_not_false'\n | 'is_true'\n | 'is_false'\n | 'is_not_null'\n | 'is_null'\n | 'notin_with_null'\n | 'notin'\n | 'gt'\n | 'lt'\n | 'i_nlike'\n | 'nlike'\n\nexport type FilterConfigObject = {\n type: string\n operator?: FilterOperator\n options?: { [key: string]: any }\n value?: string | number | boolean | string[] | number[] | undefined\n}\nexport type FilterConfig = FilterConfigObject | FilterOperator | boolean\n\nexport type FilterValue = {\n name: string\n operator: FilterOperator\n value: string | number | boolean | string[] | number[] | undefined\n}\n\nexport type PaginationConfig = {\n page?: number\n limit?: number\n pages?: number[]\n infinite?: boolean\n}\n\nexport type FetchOption = {\n page?: number\n limit?: number\n sorters?: SortersConfig\n sortings?: SortersConfig\n filters?: QueryFilter[]\n options?: object\n}\nexport type FetchResult = {\n page?: number\n limit?: number\n total: number\n records: GristRecord[]\n} | void\nexport type FetchHandler = (param: FetchOption) => Promise<FetchResult>\n\nexport type GristEventHandler = (\n columns: ColumnConfig[],\n data?: GristData,\n column?: ColumnConfig,\n record?: GristRecord,\n rowIndex?: number,\n target?: any\n) => void\n\nexport type ColumnConfig = {\n type: string\n name: string\n gutterName?: string\n header: HeaderConfig\n record: RecordConfig\n handlers: GristEventHandlerSet\n label: LabelConfig\n hidden?: boolean\n sortable?: boolean\n resizable?: boolean\n width?: number | string | ColumnWidthCallback\n forList?: boolean\n validation?: ValidationCallback\n filter?: FilterConfig\n imex?: ImexConfig\n multiple?: boolean\n}\n\nexport type ValidationCallback = (after: any, before: any, record: GristRecord, column: ColumnConfig) => boolean\n\nexport type LabelConfig =\n | string\n | boolean\n | {\n renderer: LabelRenderer\n }\n\nexport type LabelRenderer = () => void\n\nexport type ColumnWidthCallback = (column: ColumnConfig) => string\n\nexport type HeaderConfig = {\n renderer: HeaderRenderer\n}\nexport type HeaderRenderer = (column: ColumnConfig) => any\n\nexport type RecordConfig = {\n renderer: FieldRenderer\n editor?: FieldEditor\n editable?: boolean\n mandatory?: boolean\n classifier: GristClassifier\n align?: 'left' | 'right' | 'center'\n options: { [key: string]: any }\n rowOptionField?: string\n [extended: string]: any\n}\n\nexport type FieldRenderer = (\n value: any,\n column: ColumnConfig,\n record: GristRecord,\n rowIndex: number,\n owner:\n | DataGridField\n | RecordCard\n | DataCardGutter\n | DataCardField\n | DataListGutter\n | DataListField\n | RecordPartial\n | DataReportField\n | Element\n) => OxGristRenderer | TemplateResult | string | void\nexport type FieldEditor = (\n value: any,\n column: ColumnConfig,\n record: GristRecord,\n rowIndex: number,\n field: DataGridField\n) => OxGristEditor\n\nexport type FilterSelectRenderer = (\n column: ColumnConfig,\n value: string | number | boolean | string[] | number[] | any | undefined,\n owner: Element\n) => TemplateResult | string | void\n\nexport type GristEventHandlerSet = {\n click?: GristEventHandler\n dblclick?: GristEventHandler\n}\n\nexport type ListConfig = {\n thumbnail?: string\n fields: string[]\n details: string[]\n}\n\nexport type ImexConfig = {\n header: string\n key: string\n width: number\n type: string\n}\n\nexport type RowsConfig = {\n appendable: boolean\n insertable: boolean\n selectable?: RowSelectableConfig\n groups: GroupConfig[]\n totals: string[]\n classifier: GristClassifier\n handlers: GristEventHandlerSet\n}\n\nexport type GristClassifier = (\n record: GristRecord,\n rowIndex: number\n) => { emphasized?: boolean | string | string[]; [key: string]: any } | void\n\nexport type GroupConfig = {\n align: string\n titleColumn?: ColumnConfig\n title: string\n value?: string\n groupName?: string\n row?: number\n column: string | number\n rowspan: number\n colspan?: number\n}\n\nexport type RowSelectableConfig = {\n multiple?: boolean\n}\n\nexport type GristRecord = {\n id?: string\n name?: string\n __seq__?: number\n __dirty__?: string\n __selected__?: boolean\n __changes__?: object[]\n __dirtyfields__?: { [key: string]: any }\n __origin__?: any\n [key: string]: any\n}\n\nexport type GristData = {\n page?: number\n total?: number\n limit?: number\n records: GristRecord[]\n}\n\nexport type GristSelectFunction = (record: GristRecord) => boolean\n"]}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"","sourcesContent":["import { TemplateResult } from 'lit-html'\n\nimport { DataCardField } from './data-card/data-card-field'\nimport { DataCardGutter } from './data-card/data-card-gutter'\nimport { RecordCard } from './data-card/record-card'\nimport { DataGridField } from './data-grid/data-grid-field'\nimport { DataListField } from './data-list/data-list-field'\nimport { DataListGutter } from './data-list/data-list-gutter'\nimport { RecordPartial } from './data-list/record-partial'\nimport { DataReportField } from './data-report/data-report-field'\nimport { OxGristEditor } from './editors'\nimport { QueryFilter } from './filters'\nimport { OxGristRenderer } from './renderers/ox-grist-renderer'\n\nexport type GristConfig = {\n columns: ColumnConfig[]\n rows: RowsConfig\n list: ListConfig\n pagination?: PaginationConfig\n sorters?: SortersConfig\n}\n\nexport type SorterConfig = { name: string; desc?: boolean }\nexport type SortersConfig = SorterConfig[]\nexport type FilterOperator =\n | 'search'\n | 'eq'\n | 'between'\n | 'gte'\n | 'lte'\n | 'is_not_true'\n | 'in'\n | 'like'\n | 'i_like'\n | 'noteq'\n | 'is_empty_num_id'\n | 'is_blank'\n | 'is_present'\n | 'is_not_false'\n | 'is_true'\n | 'is_false'\n | 'is_not_null'\n | 'is_null'\n | 'notin_with_null'\n | 'notin'\n | 'gt'\n | 'lt'\n | 'i_nlike'\n | 'nlike'\n\nexport type FilterConfigObject = {\n type: string\n operator?: FilterOperator\n options?: { [key: string]: any }\n value?: string | number | boolean | string[] | number[] | undefined\n}\nexport type FilterConfig = FilterConfigObject | FilterOperator | boolean\n\nexport type FilterValue = {\n name: string\n operator: FilterOperator\n value: string | number | boolean | string[] | number[] | undefined\n}\n\nexport type PaginationConfig = {\n page?: number\n limit?: number\n pages?: number[]\n infinite?: boolean\n}\n\nexport type FetchOption = {\n page?: number\n limit?: number\n sorters?: SortersConfig\n sortings?: SortersConfig\n filters?: QueryFilter[]\n options?: object\n}\nexport type FetchResult = {\n page?: number\n limit?: number\n total: number\n records: GristRecord[]\n} | void\nexport type FetchHandler = (param: FetchOption) => Promise<FetchResult>\n\nexport type GristEventHandler = (\n columns: ColumnConfig[],\n data?: GristData,\n column?: ColumnConfig,\n record?: GristRecord,\n rowIndex?: number,\n target?: any\n) => void\n\nexport type ColumnConfig = {\n type: string\n name: string\n gutterName?: string\n header: HeaderConfig\n record: RecordConfig\n handlers: GristEventHandlerSet\n label: LabelConfig\n hidden?: boolean\n sortable?: boolean\n resizable?: boolean\n width?: number | string | ColumnWidthCallback\n forList?: boolean\n validation?: ValidationCallback\n filter?: FilterConfig\n imex?: ImexConfig\n multiple?: boolean\n rowCount?: boolean\n}\n\nexport type ValidationCallback = (after: any, before: any, record: GristRecord, column: ColumnConfig) => boolean\n\nexport type LabelConfig =\n | string\n | boolean\n | {\n renderer: LabelRenderer\n }\n\nexport type LabelRenderer = () => void\n\nexport type ColumnWidthCallback = (column: ColumnConfig) => string\n\nexport type HeaderConfig = {\n renderer: HeaderRenderer\n}\nexport type HeaderRenderer = (column: ColumnConfig) => any\n\nexport type RecordConfig = {\n renderer: FieldRenderer\n editor?: FieldEditor\n editable?: boolean\n mandatory?: boolean\n classifier: GristClassifier\n align?: 'left' | 'right' | 'center'\n options: { [key: string]: any }\n rowOptionField?: string\n [extended: string]: any\n}\n\nexport type FieldRenderer = (\n value: any,\n column: ColumnConfig,\n record: GristRecord,\n rowIndex: number,\n owner:\n | DataGridField\n | RecordCard\n | DataCardGutter\n | DataCardField\n | DataListGutter\n | DataListField\n | RecordPartial\n | DataReportField\n | Element\n) => OxGristRenderer | TemplateResult | string | void\nexport type FieldEditor = (\n value: any,\n column: ColumnConfig,\n record: GristRecord,\n rowIndex: number,\n field: DataGridField\n) => OxGristEditor\n\nexport type FilterSelectRenderer = (\n column: ColumnConfig,\n value: string | number | boolean | string[] | number[] | any | undefined,\n owner: Element\n) => TemplateResult | string | void\n\nexport type GristEventHandlerSet = {\n click?: GristEventHandler\n dblclick?: GristEventHandler\n}\n\nexport type ListConfig = {\n thumbnail?: string\n fields: string[]\n details: string[]\n}\n\nexport type ImexConfig = {\n header: string\n key: string\n width: number\n type: string\n}\n\nexport type RowsConfig = {\n appendable: boolean\n insertable: boolean\n selectable?: RowSelectableConfig\n groups: GroupConfig[]\n totals: string[]\n classifier: GristClassifier\n handlers: GristEventHandlerSet\n}\n\nexport type GristClassifier = (\n record: GristRecord,\n rowIndex: number\n) => { emphasized?: boolean | string | string[]; [key: string]: any } | void\n\nexport type GroupConfig = {\n align: string\n titleColumn?: ColumnConfig\n title: string\n value?: string\n groupName?: string\n row?: number\n column: string | number\n rowspan: number\n colspan?: number\n}\n\nexport type RowSelectableConfig = {\n multiple?: boolean\n}\n\nexport type GristRecord = {\n id?: string\n name?: string\n __seq__?: number\n __dirty__?: string\n __selected__?: boolean\n __changes__?: object[]\n __dirtyfields__?: { [key: string]: any }\n __origin__?: any\n [key: string]: any\n}\n\nexport type GristData = {\n page?: number\n total?: number\n limit?: number\n records: GristRecord[]\n}\n\nexport type GristSelectFunction = (record: GristRecord) => boolean\n"]}
|
package/dist/src/utils/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAA","sourcesContent":["export * from './supports-passive'\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAA;AAClC,cAAc,cAAc,CAAA","sourcesContent":["export * from './supports-passive'\nexport * from './list-param'\n"]}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { FilterValue, SortersConfig } from '../types';
|
|
2
|
+
export declare function convertListParamToSearchString({ filters, sorters, page, limit, base }: {
|
|
3
|
+
filters?: FilterValue[];
|
|
4
|
+
sorters?: SortersConfig;
|
|
5
|
+
page?: number;
|
|
6
|
+
limit?: number;
|
|
7
|
+
base?: string;
|
|
8
|
+
}): string;
|
|
9
|
+
export declare function convertSearchStringToListParam(searchParams: string): {
|
|
10
|
+
filters?: FilterValue[];
|
|
11
|
+
sorters?: SortersConfig;
|
|
12
|
+
pagination?: {
|
|
13
|
+
page?: number;
|
|
14
|
+
limit?: number;
|
|
15
|
+
};
|
|
16
|
+
};
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import json5 from 'json5';
|
|
2
|
+
import pickBy from 'lodash-es/pickBy';
|
|
3
|
+
export function convertListParamToSearchString({ filters, sorters, page, limit, base }) {
|
|
4
|
+
const urlParams = new URLSearchParams(base);
|
|
5
|
+
if (sorters) {
|
|
6
|
+
if (sorters.length > 0) {
|
|
7
|
+
urlParams.set('sorters', json5.stringify(sorters));
|
|
8
|
+
}
|
|
9
|
+
else {
|
|
10
|
+
urlParams.delete('sorters');
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
if (filters) {
|
|
14
|
+
if (filters.length > 0) {
|
|
15
|
+
urlParams.set('filters', json5.stringify(filters));
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
urlParams.delete('filters');
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
if (!isNaN(page)) {
|
|
22
|
+
urlParams.set('page', String(page));
|
|
23
|
+
}
|
|
24
|
+
if (!isNaN(limit)) {
|
|
25
|
+
urlParams.set('limit', String(limit));
|
|
26
|
+
}
|
|
27
|
+
return String(urlParams);
|
|
28
|
+
}
|
|
29
|
+
export function convertSearchStringToListParam(searchParams) {
|
|
30
|
+
const urlParams = new URLSearchParams(searchParams);
|
|
31
|
+
return pickBy({
|
|
32
|
+
filters: json5.parse(urlParams.get('filters') || '[]'),
|
|
33
|
+
sorters: json5.parse(urlParams.get('sorters') || '[]'),
|
|
34
|
+
pagination: pickBy({
|
|
35
|
+
page: Number(urlParams.get('page')),
|
|
36
|
+
limit: Number(urlParams.get('limit'))
|
|
37
|
+
}, v => !isNaN(v))
|
|
38
|
+
}, v => v !== undefined && !(typeof v === 'object' && Object.keys(v).length == 0));
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=list-param.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-param.js","sourceRoot":"","sources":["../../../src/utils/list-param.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,MAAM,MAAM,kBAAkB,CAAA;AAIrC,MAAM,UAAU,8BAA8B,CAAC,EAC7C,OAAO,EACP,OAAO,EACP,IAAI,EACJ,KAAK,EACL,IAAI,EAOL;IACC,MAAM,SAAS,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,CAAA;IAE3C,IAAI,OAAO,EAAE;QACX,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;YACtB,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAA;SACnD;aAAM;YACL,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;SAC5B;KACF;IAED,IAAI,OAAO,EAAE;QACX,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;YACtB,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAA;SACnD;aAAM;YACL,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;SAC5B;KACF;IAED,IAAI,CAAC,KAAK,CAAC,IAAW,CAAC,EAAE;QACvB,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;KACpC;IAED,IAAI,CAAC,KAAK,CAAC,KAAY,CAAC,EAAE;QACxB,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;KACtC;IAED,OAAO,MAAM,CAAC,SAAS,CAAC,CAAA;AAC1B,CAAC;AAED,MAAM,UAAU,8BAA8B,CAAC,YAAoB;IAQjE,MAAM,SAAS,GAAG,IAAI,eAAe,CAAC,YAAY,CAAC,CAAA;IAEnD,OAAO,MAAM,CACX;QACE,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC;QACtD,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC;QACtD,UAAU,EAAE,MAAM,CAChB;YACE,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACnC,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;SACtC,EACD,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CACf;KACF,EACD,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,SAAS,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAC/E,CAAA;AACH,CAAC","sourcesContent":["import json5 from 'json5'\nimport pickBy from 'lodash-es/pickBy'\n\nimport { FilterValue, SortersConfig } from '../types'\n\nexport function convertListParamToSearchString({\n filters,\n sorters,\n page,\n limit,\n base\n}: {\n filters?: FilterValue[]\n sorters?: SortersConfig\n page?: number\n limit?: number\n base?: string\n}) {\n const urlParams = new URLSearchParams(base)\n\n if (sorters) {\n if (sorters.length > 0) {\n urlParams.set('sorters', json5.stringify(sorters))\n } else {\n urlParams.delete('sorters')\n }\n }\n\n if (filters) {\n if (filters.length > 0) {\n urlParams.set('filters', json5.stringify(filters))\n } else {\n urlParams.delete('filters')\n }\n }\n\n if (!isNaN(page as any)) {\n urlParams.set('page', String(page))\n }\n\n if (!isNaN(limit as any)) {\n urlParams.set('limit', String(limit))\n }\n\n return String(urlParams)\n}\n\nexport function convertSearchStringToListParam(searchParams: string): {\n filters?: FilterValue[]\n sorters?: SortersConfig\n pagination?: {\n page?: number\n limit?: number\n }\n} {\n const urlParams = new URLSearchParams(searchParams)\n\n return pickBy(\n {\n filters: json5.parse(urlParams.get('filters') || '[]'),\n sorters: json5.parse(urlParams.get('sorters') || '[]'),\n pagination: pickBy(\n {\n page: Number(urlParams.get('page')),\n limit: Number(urlParams.get('limit'))\n },\n v => !isNaN(v)\n )\n },\n v => v !== undefined && !(typeof v === 'object' && Object.keys(v).length == 0)\n )\n}\n"]}
|