@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.
@@ -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 declare type GristConfig = {
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 declare type SorterConfig = {
20
+ export type SorterConfig = {
21
21
  name: string;
22
22
  desc?: boolean;
23
23
  };
24
- export declare type SortersConfig = SorterConfig[];
25
- export declare 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 declare type FilterConfigObject = {
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 declare type FilterConfig = FilterConfigObject | FilterOperator | boolean;
35
- export declare type FilterValue = {
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 declare type PaginationConfig = {
40
+ export type PaginationConfig = {
41
41
  page?: number;
42
42
  limit?: number;
43
43
  pages?: number[];
44
44
  infinite?: boolean;
45
45
  };
46
- export declare type FetchOption = {
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 declare type FetchResult = {
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 declare type FetchHandler = (param: FetchOption) => Promise<FetchResult>;
61
- export declare type GristEventHandler = (columns: ColumnConfig[], data?: GristData, column?: ColumnConfig, record?: GristRecord, rowIndex?: number, target?: any) => void;
62
- export declare type ColumnConfig = {
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 declare type ValidationCallback = (after: any, before: any, record: GristRecord, column: ColumnConfig) => boolean;
81
- export declare type LabelConfig = string | boolean | {
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 declare type LabelRenderer = () => void;
85
- export declare type ColumnWidthCallback = (column: ColumnConfig) => string;
86
- export declare type HeaderConfig = {
85
+ export type LabelRenderer = () => void;
86
+ export type ColumnWidthCallback = (column: ColumnConfig) => string;
87
+ export type HeaderConfig = {
87
88
  renderer: HeaderRenderer;
88
89
  };
89
- export declare type HeaderRenderer = (column: ColumnConfig) => any;
90
- export declare type RecordConfig = {
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 declare type FieldRenderer = (value: any, column: ColumnConfig, record: GristRecord, rowIndex: number, owner: DataGridField | RecordCard | DataCardGutter | DataCardField | DataListGutter | DataListField | RecordPartial | DataReportField | Element) => OxGristRenderer | TemplateResult | string | void;
104
- export declare type FieldEditor = (value: any, column: ColumnConfig, record: GristRecord, rowIndex: number, field: DataGridField) => OxGristEditor;
105
- export declare type FilterSelectRenderer = (column: ColumnConfig, value: string | number | boolean | string[] | number[] | any | undefined, owner: Element) => TemplateResult | string | void;
106
- export declare type GristEventHandlerSet = {
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 declare type ListConfig = {
111
+ export type ListConfig = {
111
112
  thumbnail?: string;
112
113
  fields: string[];
113
114
  details: string[];
114
115
  };
115
- export declare type ImexConfig = {
116
+ export type ImexConfig = {
116
117
  header: string;
117
118
  key: string;
118
119
  width: number;
119
120
  type: string;
120
121
  };
121
- export declare type RowsConfig = {
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 declare type GristClassifier = (record: GristRecord, rowIndex: number) => {
131
+ export type GristClassifier = (record: GristRecord, rowIndex: number) => {
131
132
  emphasized?: boolean | string | string[];
132
133
  [key: string]: any;
133
134
  } | void;
134
- export declare type GroupConfig = {
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 declare type RowSelectableConfig = {
146
+ export type RowSelectableConfig = {
146
147
  multiple?: boolean;
147
148
  };
148
- export declare type GristRecord = {
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 declare type GristData = {
162
+ export type GristData = {
162
163
  page?: number;
163
164
  total?: number;
164
165
  limit?: number;
165
166
  records: GristRecord[];
166
167
  };
167
- export declare type GristSelectFunction = (record: GristRecord) => boolean;
168
+ export type GristSelectFunction = (record: GristRecord) => boolean;
@@ -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"]}
@@ -1 +1,2 @@
1
1
  export * from './supports-passive';
2
+ export * from './list-param';
@@ -1,2 +1,3 @@
1
1
  export * from './supports-passive';
2
+ export * from './list-param';
2
3
  //# sourceMappingURL=index.js.map
@@ -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"]}