@wix/auto-patterns 1.0.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/components/AutoPatternsCollectionPage/AutoPatternsCollectionPage.js +11 -16
- package/dist/cjs/components/AutoPatternsCollectionPage/AutoPatternsCollectionPage.js.map +1 -1
- package/dist/cjs/components/AutoPatternsCollectionPageContent/AutoPatternsCollectionPageContent.js +10 -9
- package/dist/cjs/components/AutoPatternsCollectionPageContent/AutoPatternsCollectionPageContent.js.map +1 -1
- package/dist/cjs/config/CmsCompositeConfig.js +85 -0
- package/dist/cjs/config/CmsCompositeConfig.js.map +1 -0
- package/dist/cjs/config/CompositeConfig.js +4 -0
- package/dist/cjs/config/CompositeConfig.js.map +1 -0
- package/dist/cjs/config/ConfigFactory.js +12 -0
- package/dist/cjs/config/ConfigFactory.js.map +1 -0
- package/dist/cjs/config/constants.js +9 -0
- package/dist/cjs/config/constants.js.map +1 -0
- package/dist/cjs/config/index.js +10 -0
- package/dist/cjs/config/index.js.map +1 -0
- package/dist/cjs/hooks/useColumns.js +2 -2
- package/dist/cjs/hooks/useColumns.js.map +1 -1
- package/dist/cjs/hooks/useFeatures.js +4 -4
- package/dist/cjs/hooks/useFeatures.js.map +1 -1
- package/dist/cjs/hooks/useFilters.js +89 -173
- package/dist/cjs/hooks/useFilters.js.map +1 -1
- package/dist/cjs/providers/ConfigContext.js +43 -0
- package/dist/cjs/providers/ConfigContext.js.map +1 -0
- package/dist/cjs/providers/index.js +4 -4
- package/dist/cjs/providers/index.js.map +1 -1
- package/dist/cjs/types.js.map +1 -1
- package/dist/esm/components/AutoPatternsCollectionPage/AutoPatternsCollectionPage.js +7 -12
- package/dist/esm/components/AutoPatternsCollectionPage/AutoPatternsCollectionPage.js.map +1 -1
- package/dist/esm/components/AutoPatternsCollectionPageContent/AutoPatternsCollectionPageContent.js +8 -7
- package/dist/esm/components/AutoPatternsCollectionPageContent/AutoPatternsCollectionPageContent.js.map +1 -1
- package/dist/esm/config/CmsCompositeConfig.js +80 -0
- package/dist/esm/config/CmsCompositeConfig.js.map +1 -0
- package/dist/esm/config/CompositeConfig.js +2 -0
- package/dist/esm/config/CompositeConfig.js.map +1 -0
- package/dist/esm/config/ConfigFactory.js +8 -0
- package/dist/esm/config/ConfigFactory.js.map +1 -0
- package/dist/esm/config/constants.js +5 -0
- package/dist/esm/config/constants.js.map +1 -0
- package/dist/esm/config/index.js +2 -0
- package/dist/esm/config/index.js.map +1 -0
- package/dist/esm/hooks/useColumns.js +3 -3
- package/dist/esm/hooks/useColumns.js.map +1 -1
- package/dist/esm/hooks/useFeatures.js +5 -5
- package/dist/esm/hooks/useFeatures.js.map +1 -1
- package/dist/esm/hooks/useFilters.js +86 -170
- package/dist/esm/hooks/useFilters.js.map +1 -1
- package/dist/esm/providers/ConfigContext.js +29 -0
- package/dist/esm/providers/ConfigContext.js.map +1 -0
- package/dist/esm/providers/index.js +1 -1
- package/dist/esm/providers/index.js.map +1 -1
- package/dist/esm/types.js.map +1 -1
- package/dist/types/components/AutoPatternsCollectionPage/AutoPatternsCollectionPage.d.ts +2 -3
- package/dist/types/components/AutoPatternsCollectionPage/AutoPatternsCollectionPage.d.ts.map +1 -1
- package/dist/types/components/AutoPatternsCollectionPageContent/AutoPatternsCollectionPageContent.d.ts.map +1 -1
- package/dist/types/config/CmsCompositeConfig.d.ts +6 -0
- package/dist/types/config/CmsCompositeConfig.d.ts.map +1 -0
- package/dist/types/config/CompositeConfig.d.ts +8 -0
- package/dist/types/config/CompositeConfig.d.ts.map +1 -0
- package/dist/types/config/ConfigFactory.d.ts +4 -0
- package/dist/types/config/ConfigFactory.d.ts.map +1 -0
- package/dist/types/config/constants.d.ts +4 -0
- package/dist/types/config/constants.d.ts.map +1 -0
- package/dist/types/config/index.d.ts +2 -0
- package/dist/types/config/index.d.ts.map +1 -0
- package/dist/types/hooks/useColumns.d.ts.map +1 -1
- package/dist/types/hooks/useFilters.d.ts +2 -6
- package/dist/types/hooks/useFilters.d.ts.map +1 -1
- package/dist/types/providers/ConfigContext.d.ts +11 -0
- package/dist/types/providers/ConfigContext.d.ts.map +1 -0
- package/dist/types/providers/index.d.ts +1 -1
- package/dist/types/providers/index.d.ts.map +1 -1
- package/dist/types/types.d.ts +21 -7
- package/dist/types/types.d.ts.map +1 -1
- package/package.json +37 -5
- package/dist/cjs/__tests__/spec-setup.js +0 -7
- package/dist/cjs/__tests__/spec-setup.js.map +0 -1
- package/dist/cjs/providers/PatternsWizardContext.js +0 -48
- package/dist/cjs/providers/PatternsWizardContext.js.map +0 -1
- package/dist/cjs/schemas/cms.js +0 -37
- package/dist/cjs/schemas/cms.js.map +0 -1
- package/dist/cjs/schemas/index.js +0 -10
- package/dist/cjs/schemas/index.js.map +0 -1
- package/dist/cjs/schemas/schemaHandler.js +0 -4
- package/dist/cjs/schemas/schemaHandler.js.map +0 -1
- package/dist/cjs/schemas/schemaHandlerFactory.js +0 -15
- package/dist/cjs/schemas/schemaHandlerFactory.js.map +0 -1
- package/dist/cjs/utils.js +0 -76
- package/dist/cjs/utils.js.map +0 -1
- package/dist/esm/__tests__/spec-setup.js +0 -5
- package/dist/esm/__tests__/spec-setup.js.map +0 -1
- package/dist/esm/providers/PatternsWizardContext.js +0 -34
- package/dist/esm/providers/PatternsWizardContext.js.map +0 -1
- package/dist/esm/schemas/cms.js +0 -31
- package/dist/esm/schemas/cms.js.map +0 -1
- package/dist/esm/schemas/index.js +0 -2
- package/dist/esm/schemas/index.js.map +0 -1
- package/dist/esm/schemas/schemaHandler.js +0 -2
- package/dist/esm/schemas/schemaHandler.js.map +0 -1
- package/dist/esm/schemas/schemaHandlerFactory.js +0 -10
- package/dist/esm/schemas/schemaHandlerFactory.js.map +0 -1
- package/dist/esm/utils.js +0 -33
- package/dist/esm/utils.js.map +0 -1
- package/dist/types/__tests__/spec-setup.d.ts +0 -2
- package/dist/types/__tests__/spec-setup.d.ts.map +0 -1
- package/dist/types/providers/PatternsWizardContext.d.ts +0 -17
- package/dist/types/providers/PatternsWizardContext.d.ts.map +0 -1
- package/dist/types/schemas/cms.d.ts +0 -21
- package/dist/types/schemas/cms.d.ts.map +0 -1
- package/dist/types/schemas/index.d.ts +0 -2
- package/dist/types/schemas/index.d.ts.map +0 -1
- package/dist/types/schemas/schemaHandler.d.ts +0 -7
- package/dist/types/schemas/schemaHandler.d.ts.map +0 -1
- package/dist/types/schemas/schemaHandlerFactory.d.ts +0 -4
- package/dist/types/schemas/schemaHandlerFactory.d.ts.map +0 -1
- package/dist/types/utils.d.ts +0 -5
- package/dist/types/utils.d.ts.map +0 -1
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { collections, items } from '@wix/data';
|
|
2
|
+
import { FilterPropToOperator } from './constants';
|
|
3
|
+
const FilterPropToMethod = {
|
|
4
|
+
from: 'ge',
|
|
5
|
+
to: 'le'
|
|
6
|
+
};
|
|
7
|
+
function isValidFilterProp(prop) {
|
|
8
|
+
return Object.prototype.hasOwnProperty.call(FilterPropToMethod, prop);
|
|
9
|
+
}
|
|
10
|
+
function getOperatorForFilter(prop) {
|
|
11
|
+
if (isValidFilterProp(prop)) {
|
|
12
|
+
return FilterPropToMethod[prop];
|
|
13
|
+
}
|
|
14
|
+
return undefined;
|
|
15
|
+
}
|
|
16
|
+
const isSupportedOperator = (schema, filterProp, filterKey) => {
|
|
17
|
+
const field = schema.fields.find(f => f.id === filterKey);
|
|
18
|
+
if (!field) {
|
|
19
|
+
return false;
|
|
20
|
+
}
|
|
21
|
+
if (!isValidFilterProp(filterProp)) {
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
const operator = FilterPropToOperator[filterProp];
|
|
25
|
+
const supportedOperators = field.capabilities.supportedQueryOperators;
|
|
26
|
+
return supportedOperators.includes(operator);
|
|
27
|
+
};
|
|
28
|
+
export async function fetchCmsSchema(config) {
|
|
29
|
+
const schema = await collections.getDataCollection(config.collectionId);
|
|
30
|
+
return {
|
|
31
|
+
fields: schema.fields.map(field => {
|
|
32
|
+
var _field$capabilities, _field$capabilities2;
|
|
33
|
+
return {
|
|
34
|
+
id: field.key,
|
|
35
|
+
type: field.type,
|
|
36
|
+
capabilities: {
|
|
37
|
+
supportedQueryOperators: ((_field$capabilities = field.capabilities) == null ? void 0 : _field$capabilities.queryOperators) || [],
|
|
38
|
+
sortable: ((_field$capabilities2 = field.capabilities) == null ? void 0 : _field$capabilities2.sortable) || false
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
})
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
export async function getCmsCompositeConfig(config) {
|
|
45
|
+
const schema = await fetchCmsSchema(config);
|
|
46
|
+
const collection = {
|
|
47
|
+
fetchData: async query => {
|
|
48
|
+
let dataQuery = items.query(config.collectionId);
|
|
49
|
+
const {
|
|
50
|
+
filters
|
|
51
|
+
} = query;
|
|
52
|
+
for (const key in filters) {
|
|
53
|
+
const filter = filters[key];
|
|
54
|
+
if (filter && typeof filter === 'object') {
|
|
55
|
+
const filterObj = filter;
|
|
56
|
+
for (const prop in filterObj) {
|
|
57
|
+
const operator = getOperatorForFilter(prop);
|
|
58
|
+
if (operator && typeof dataQuery[operator] === 'function' && isSupportedOperator(schema, prop, key)) {
|
|
59
|
+
const value = filterObj[prop];
|
|
60
|
+
if (value) {
|
|
61
|
+
dataQuery = dataQuery[operator](key, value);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
const res = await dataQuery.find();
|
|
68
|
+
return {
|
|
69
|
+
items: res.items,
|
|
70
|
+
total: res.totalCount
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
return {
|
|
75
|
+
page: config,
|
|
76
|
+
schema,
|
|
77
|
+
collection
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=CmsCompositeConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["collections","items","FilterPropToOperator","FilterPropToMethod","from","to","isValidFilterProp","prop","Object","prototype","hasOwnProperty","call","getOperatorForFilter","undefined","isSupportedOperator","schema","filterProp","filterKey","field","fields","find","f","id","operator","supportedOperators","capabilities","supportedQueryOperators","includes","fetchCmsSchema","config","getDataCollection","collectionId","map","_field$capabilities","_field$capabilities2","key","type","queryOperators","sortable","getCmsCompositeConfig","collection","fetchData","query","dataQuery","filters","filter","filterObj","value","res","total","totalCount","page"],"sources":["../../../src/config/CmsCompositeConfig.ts"],"sourcesContent":["import { PageConfig, SchemaConfig } from '../types';\nimport { collections, items } from '@wix/data';\nimport { CompositeConfig } from './CompositeConfig';\nimport { FilterProp, FilterPropToOperator } from './constants';\nimport { ComputedQuery } from '@wix/patterns';\n\nexport type CmsOperatorMethod = 'ge' | 'le';\n\nconst FilterPropToMethod: Record<FilterProp, CmsOperatorMethod> = {\n from: 'ge',\n to: 'le',\n};\n\nfunction isValidFilterProp(prop: string): prop is FilterProp {\n return Object.prototype.hasOwnProperty.call(FilterPropToMethod, prop);\n}\n\nfunction getOperatorForFilter(prop: string): CmsOperatorMethod | undefined {\n if (isValidFilterProp(prop)) {\n return FilterPropToMethod[prop];\n }\n return undefined;\n}\n\nconst isSupportedOperator = (\n schema: SchemaConfig,\n filterProp: string,\n filterKey: string,\n) => {\n const field = schema.fields.find((f) => f.id === filterKey);\n if (!field) {\n return false;\n }\n\n if (!isValidFilterProp(filterProp)) {\n return false;\n }\n\n const operator = FilterPropToOperator[filterProp];\n const supportedOperators = field.capabilities.supportedQueryOperators;\n return supportedOperators.includes(operator);\n};\n\nexport async function fetchCmsSchema(\n config: PageConfig,\n): Promise<SchemaConfig> {\n const schema = await collections.getDataCollection(config.collectionId);\n return {\n fields: schema.fields.map((field) => ({\n id: field.key as string,\n type: field.type as string,\n capabilities: {\n supportedQueryOperators: field.capabilities?.queryOperators || [],\n sortable: field.capabilities?.sortable || false,\n },\n })),\n };\n}\n\nexport async function getCmsCompositeConfig(\n config: PageConfig,\n): Promise<CompositeConfig> {\n const schema = await fetchCmsSchema(config);\n\n const collection = {\n fetchData: async (query: ComputedQuery<any>) => {\n let dataQuery = items.query(config.collectionId);\n const { filters } = query;\n for (const key in filters) {\n const filter = filters[key];\n if (filter && typeof filter === 'object') {\n const filterObj = filter as Record<string, any>;\n for (const prop in filterObj) {\n const operator = getOperatorForFilter(prop);\n if (\n operator &&\n typeof dataQuery[operator] === 'function' &&\n isSupportedOperator(schema, prop, key)\n ) {\n const value = filterObj[prop];\n if (value) {\n dataQuery = dataQuery[operator](key, value);\n }\n }\n }\n }\n }\n\n const res = await dataQuery.find();\n return {\n items: res.items,\n total: res.totalCount,\n };\n },\n };\n\n return { page: config, schema, collection };\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sources":["../../../src/config/CompositeConfig.ts"],"sourcesContent":["import { SchemaConfig, PageConfig } from '../types';\nimport { CollectionConfig } from '@wix/patterns';\n\nexport interface CompositeConfig {\n page: PageConfig;\n schema: SchemaConfig;\n collection: Pick<CollectionConfig<any, any>, 'fetchData'>;\n}\n"],"mappings":"","ignoreList":[]}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { getCmsCompositeConfig } from './CmsCompositeConfig';
|
|
2
|
+
export async function getCompositeConfig(config) {
|
|
3
|
+
if (config.entityTypeSource === 'cms') {
|
|
4
|
+
return getCmsCompositeConfig(config);
|
|
5
|
+
}
|
|
6
|
+
throw new Error(`Unsupported source type: ${config.entityTypeSource}`);
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=ConfigFactory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["getCmsCompositeConfig","getCompositeConfig","config","entityTypeSource","Error"],"sources":["../../../src/config/ConfigFactory.ts"],"sourcesContent":["import { PageConfig } from '../types';\nimport { getCmsCompositeConfig } from './CmsCompositeConfig';\nimport { CompositeConfig } from './CompositeConfig';\n\nexport async function getCompositeConfig(\n config: PageConfig,\n): Promise<CompositeConfig> {\n if (config.entityTypeSource === 'cms') {\n return getCmsCompositeConfig(config);\n }\n throw new Error(`Unsupported source type: ${config.entityTypeSource}`);\n}\n"],"mappings":"AACA,SAASA,qBAAqB,QAAQ,sBAAsB;AAG5D,OAAO,eAAeC,kBAAkBA,CACtCC,MAAkB,EACQ;EAC1B,IAAIA,MAAM,CAACC,gBAAgB,KAAK,KAAK,EAAE;IACrC,OAAOH,qBAAqB,CAACE,MAAM,CAAC;EACtC;EACA,MAAM,IAAIE,KAAK,CAAC,4BAA4BF,MAAM,CAACC,gBAAgB,EAAE,CAAC;AACxE","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["FilterPropToOperator","from","to"],"sources":["../../../src/config/constants.ts"],"sourcesContent":["import { QueryOperator } from '../types';\n\nexport type FilterProp = 'from' | 'to';\n\nexport const FilterPropToOperator: Record<FilterProp, QueryOperator> = {\n from: 'GTE',\n to: 'LTE',\n};\n"],"mappings":"AAIA,OAAO,MAAMA,oBAAuD,GAAG;EACrEC,IAAI,EAAE,KAAK;EACXC,EAAE,EAAE;AACN,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sources":["../../../src/config/index.ts"],"sourcesContent":["export * from './CompositeConfig';\n"],"mappings":"AAAA,cAAc,mBAAmB","ignoreList":[]}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { useConfig, usePatternsWizardOverridesContext } from '../providers';
|
|
2
2
|
import { SupportedValueTypeEnum } from '../types';
|
|
3
3
|
import { camelCase, get } from 'lodash';
|
|
4
4
|
export const useColumns = () => {
|
|
5
5
|
const {
|
|
6
|
-
|
|
6
|
+
page: {
|
|
7
7
|
columns = []
|
|
8
8
|
}
|
|
9
|
-
} =
|
|
9
|
+
} = useConfig();
|
|
10
10
|
const overrides = usePatternsWizardOverridesContext();
|
|
11
11
|
return columns.map(column => ({
|
|
12
12
|
id: column.id,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["useConfig","usePatternsWizardOverridesContext","SupportedValueTypeEnum","camelCase","get","useColumns","page","columns","overrides","map","column","id","title","name","width","render","item","_overrides$columns","_overrides$columns$ca","itemValue","call","value","createRenderer","type","BOOLEAN","DATE","Date","toLocaleString"],"sources":["../../../src/hooks/useColumns.ts"],"sourcesContent":["import { TableColumn } from '@wix/patterns';\nimport { useConfig, usePatternsWizardOverridesContext } from '../providers';\nimport { Column, SupportedValueTypeEnum } from '../types';\nimport { camelCase, get } from 'lodash';\n\nexport const useColumns = (): TableColumn<any>[] => {\n const {\n page: { columns = [] },\n } = useConfig();\n\n const overrides = usePatternsWizardOverridesContext();\n\n return columns.map((column) => ({\n id: column.id,\n title: column.name,\n ...(column.width ? { width: column.width } : {}),\n render: (item) => {\n const itemValue = get(item, column.id);\n return (\n overrides?.columns?.[camelCase(column.id)]?.({ value: itemValue }) ??\n createRenderer(column, itemValue)\n );\n },\n }));\n};\n\nconst createRenderer = (column: Column, itemValue: any): string => {\n switch (column.type) {\n case SupportedValueTypeEnum.BOOLEAN:\n return itemValue ? '✔' : '✖';\n case SupportedValueTypeEnum.DATE:\n return itemValue ? new Date(itemValue).toLocaleString() : '';\n default:\n return itemValue;\n }\n};\n"],"mappings":"AACA,SAASA,SAAS,EAAEC,iCAAiC,QAAQ,cAAc;AAC3E,SAAiBC,sBAAsB,QAAQ,UAAU;AACzD,SAASC,SAAS,EAAEC,GAAG,QAAQ,QAAQ;AAEvC,OAAO,MAAMC,UAAU,GAAGA,CAAA,KAA0B;EAClD,MAAM;IACJC,IAAI,EAAE;MAAEC,OAAO,GAAG;IAAG;EACvB,CAAC,GAAGP,SAAS,CAAC,CAAC;EAEf,MAAMQ,SAAS,GAAGP,iCAAiC,CAAC,CAAC;EAErD,OAAOM,OAAO,CAACE,GAAG,CAAEC,MAAM,KAAM;IAC9BC,EAAE,EAAED,MAAM,CAACC,EAAE;IACbC,KAAK,EAAEF,MAAM,CAACG,IAAI;IAClB,IAAIH,MAAM,CAACI,KAAK,GAAG;MAAEA,KAAK,EAAEJ,MAAM,CAACI;IAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IAChDC,MAAM,EAAGC,IAAI,IAAK;MAAA,IAAAC,kBAAA,EAAAC,qBAAA;MAChB,MAAMC,SAAS,GAAGf,GAAG,CAACY,IAAI,EAAEN,MAAM,CAACC,EAAE,CAAC;MACtC,OACE,CAAAH,SAAS,aAAAS,kBAAA,GAATT,SAAS,CAAED,OAAO,cAAAW,qBAAA,GAAlBD,kBAAA,CAAqBd,SAAS,CAACO,MAAM,CAACC,EAAE,CAAC,CAAC,qBAA1CO,qBAAA,CAAAE,IAAA,CAAAH,kBAAA,EAA6C;QAAEI,KAAK,EAAEF;MAAU,CAAC,CAAC,KAClEG,cAAc,CAACZ,MAAM,EAAES,SAAS,CAAC;IAErC;EACF,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAMG,cAAc,GAAGA,CAACZ,MAAc,EAAES,SAAc,KAAa;EACjE,QAAQT,MAAM,CAACa,IAAI;IACjB,KAAKrB,sBAAsB,CAACsB,OAAO;MACjC,OAAOL,SAAS,GAAG,GAAG,GAAG,GAAG;IAC9B,KAAKjB,sBAAsB,CAACuB,IAAI;MAC9B,OAAON,SAAS,GAAG,IAAIO,IAAI,CAACP,SAAS,CAAC,CAACQ,cAAc,CAAC,CAAC,GAAG,EAAE;IAC9D;MACE,OAAOR,SAAS;EACpB;AACF,CAAC","ignoreList":[]}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { Views, DataExtension } from '@wix/patterns';
|
|
3
|
-
import {
|
|
3
|
+
import { useConfig } from '../providers';
|
|
4
4
|
import { useFilters } from './useFilters';
|
|
5
5
|
export const useFeatures = () => {
|
|
6
6
|
const {
|
|
7
|
-
|
|
8
|
-
} =
|
|
7
|
+
page
|
|
8
|
+
} = useConfig();
|
|
9
9
|
const {
|
|
10
10
|
views,
|
|
11
11
|
customFields
|
|
12
|
-
} =
|
|
13
|
-
const filters = useFilters(
|
|
12
|
+
} = page;
|
|
13
|
+
const filters = useFilters(page);
|
|
14
14
|
return {
|
|
15
15
|
views: views != null && views.enabled ? /*#__PURE__*/React.createElement(Views, null) : undefined,
|
|
16
16
|
dataExtension: customFields != null && customFields.enabled ? /*#__PURE__*/React.createElement(DataExtension, null) : undefined,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","Views","DataExtension","
|
|
1
|
+
{"version":3,"names":["React","Views","DataExtension","useConfig","useFilters","useFeatures","page","views","customFields","filters","enabled","createElement","undefined","dataExtension"],"sources":["../../../src/hooks/useFeatures.tsx"],"sourcesContent":["import React from 'react';\nimport { Views, DataExtension } from '@wix/patterns';\nimport { useConfig } from '../providers';\nimport { useFilters } from './useFilters';\n\nexport const useFeatures = () => {\n const { page } = useConfig();\n const { views, customFields } = page;\n const filters = useFilters(page);\n\n return {\n views: views?.enabled ? <Views /> : undefined,\n dataExtension: customFields?.enabled ? <DataExtension /> : undefined,\n filters,\n };\n};\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,KAAK,EAAEC,aAAa,QAAQ,eAAe;AACpD,SAASC,SAAS,QAAQ,cAAc;AACxC,SAASC,UAAU,QAAQ,cAAc;AAEzC,OAAO,MAAMC,WAAW,GAAGA,CAAA,KAAM;EAC/B,MAAM;IAAEC;EAAK,CAAC,GAAGH,SAAS,CAAC,CAAC;EAC5B,MAAM;IAAEI,KAAK;IAAEC;EAAa,CAAC,GAAGF,IAAI;EACpC,MAAMG,OAAO,GAAGL,UAAU,CAACE,IAAI,CAAC;EAEhC,OAAO;IACLC,KAAK,EAAEA,KAAK,YAALA,KAAK,CAAEG,OAAO,gBAAGV,KAAA,CAAAW,aAAA,CAACV,KAAK,MAAE,CAAC,GAAGW,SAAS;IAC7CC,aAAa,EAAEL,YAAY,YAAZA,YAAY,CAAEE,OAAO,gBAAGV,KAAA,CAAAW,aAAA,CAACT,aAAa,MAAE,CAAC,GAAGU,SAAS;IACpEH;EACF,CAAC;AACH,CAAC","ignoreList":[]}
|
|
@@ -1,186 +1,104 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/extends";
|
|
2
2
|
import React from 'react';
|
|
3
3
|
import _ from 'lodash';
|
|
4
|
-
import { SupportedValueTypeEnum } from '../types';
|
|
5
4
|
import { DateRangeFilter, dateRangeFilter, idNameArrayFilter, MultiSelectCheckboxFilter, NumberRangeFilter, numberRangeFilter, RadioGroupFilter, SingleSelectFilter, useStaticListFilterCollection } from '@wix/patterns';
|
|
6
5
|
export const useFilters = config => {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
},
|
|
23
|
-
query: (acc, values) => {
|
|
24
|
-
if (values[key]) {
|
|
25
|
-
if (values[key].from) {
|
|
26
|
-
acc.$and.push({
|
|
27
|
-
[filter.id]: {
|
|
28
|
-
$gte: values[key].from.toISOString()
|
|
29
|
-
}
|
|
30
|
-
});
|
|
31
|
-
}
|
|
32
|
-
if (values[key].to) {
|
|
33
|
-
acc.$and.push({
|
|
34
|
-
[filter.id]: {
|
|
35
|
-
$lte: values[key].to.toISOString()
|
|
36
|
-
}
|
|
37
|
-
});
|
|
6
|
+
const filters = React.useMemo(() => {
|
|
7
|
+
var _config$filters;
|
|
8
|
+
const currFilters = [];
|
|
9
|
+
(_config$filters = config.filters) == null || _config$filters.forEach(filter => {
|
|
10
|
+
var _filter$static, _filter$static2, _filter$static3, _filter$numberConfig, _filter$numberConfig2, _filter$numberConfig3;
|
|
11
|
+
const key = _.camelCase(filter.displayName);
|
|
12
|
+
switch (filter.componentType) {
|
|
13
|
+
case 'date-range':
|
|
14
|
+
currFilters.push({
|
|
15
|
+
key,
|
|
16
|
+
filter: dateRangeFilter(),
|
|
17
|
+
component: DateRangeFilter,
|
|
18
|
+
props: {
|
|
19
|
+
accordionItemProps: {
|
|
20
|
+
label: filter.displayName
|
|
38
21
|
}
|
|
39
22
|
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
popoverProps: {
|
|
60
|
-
appendTo: 'window'
|
|
61
|
-
}
|
|
62
|
-
},
|
|
63
|
-
query: (acc, values) => {
|
|
64
|
-
if (values[key]) {
|
|
65
|
-
acc.$and.push({
|
|
66
|
-
[filter.id]: {
|
|
67
|
-
$in: values[key].map(item => item.id)
|
|
68
|
-
}
|
|
69
|
-
});
|
|
70
|
-
}
|
|
71
|
-
return acc;
|
|
72
|
-
}
|
|
73
|
-
});
|
|
74
|
-
break;
|
|
75
|
-
case 'single':
|
|
76
|
-
filters.push({
|
|
77
|
-
key,
|
|
78
|
-
filter: idNameArrayFilter(),
|
|
79
|
-
component: SingleSelectFilter,
|
|
80
|
-
collectionData: ((_filter$static2 = filter.static) == null ? void 0 : _filter$static2.values.map(value => {
|
|
81
|
-
return {
|
|
82
|
-
id: value.id,
|
|
83
|
-
name: value.value
|
|
84
|
-
};
|
|
85
|
-
})) ?? [],
|
|
86
|
-
props: {
|
|
87
|
-
placeholder: `Select ${filter.displayName}`,
|
|
88
|
-
accordionItemProps: {
|
|
89
|
-
label: filter.displayName
|
|
90
|
-
}
|
|
91
|
-
},
|
|
92
|
-
query: (acc, values) => {
|
|
93
|
-
if (values[key]) {
|
|
94
|
-
if (filter.definition.type === SupportedValueTypeEnum.BOOLEAN) {
|
|
95
|
-
acc.$and.push({
|
|
96
|
-
[filter.id]: {
|
|
97
|
-
$eq: values[key].map(item => item.id === 'true' ? true : false)
|
|
98
|
-
}
|
|
99
|
-
});
|
|
100
|
-
} else {
|
|
101
|
-
acc.$and.push({
|
|
102
|
-
[filter.id]: {
|
|
103
|
-
$in: values[key].map(item => item.id)
|
|
104
|
-
}
|
|
105
|
-
});
|
|
23
|
+
});
|
|
24
|
+
break;
|
|
25
|
+
case 'multi-select':
|
|
26
|
+
currFilters.push({
|
|
27
|
+
key,
|
|
28
|
+
filter: idNameArrayFilter(),
|
|
29
|
+
component: MultiSelectCheckboxFilter,
|
|
30
|
+
collectionData: ((_filter$static = filter.static) == null ? void 0 : _filter$static.values.map(value => {
|
|
31
|
+
return {
|
|
32
|
+
id: value.id,
|
|
33
|
+
name: value.value
|
|
34
|
+
};
|
|
35
|
+
})) ?? [],
|
|
36
|
+
props: {
|
|
37
|
+
accordionItemProps: {
|
|
38
|
+
label: filter.displayName
|
|
39
|
+
},
|
|
40
|
+
popoverProps: {
|
|
41
|
+
appendTo: 'window'
|
|
106
42
|
}
|
|
107
43
|
}
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
component: RadioGroupFilter,
|
|
117
|
-
props: {
|
|
118
|
-
accordionItemProps: {
|
|
119
|
-
label: filter.displayName
|
|
120
|
-
},
|
|
121
|
-
data: ((_filter$static3 = filter.static) == null ? void 0 : _filter$static3.values.map(value => {
|
|
44
|
+
});
|
|
45
|
+
break;
|
|
46
|
+
case 'single':
|
|
47
|
+
currFilters.push({
|
|
48
|
+
key,
|
|
49
|
+
filter: idNameArrayFilter(),
|
|
50
|
+
component: SingleSelectFilter,
|
|
51
|
+
collectionData: ((_filter$static2 = filter.static) == null ? void 0 : _filter$static2.values.map(value => {
|
|
122
52
|
return {
|
|
123
53
|
id: value.id,
|
|
124
54
|
name: value.value
|
|
125
55
|
};
|
|
126
|
-
})) ?? []
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
acc.$and.push({
|
|
132
|
-
[filter.id]: {
|
|
133
|
-
$eq: values[key].map(item => item.id === 'true' ? true : false)
|
|
134
|
-
}
|
|
135
|
-
});
|
|
136
|
-
} else {
|
|
137
|
-
acc.$and.push({
|
|
138
|
-
[filter.id]: {
|
|
139
|
-
$in: values[key].map(item => item.id)
|
|
140
|
-
}
|
|
141
|
-
});
|
|
56
|
+
})) ?? [],
|
|
57
|
+
props: {
|
|
58
|
+
placeholder: `Select ${filter.displayName}`,
|
|
59
|
+
accordionItemProps: {
|
|
60
|
+
label: filter.displayName
|
|
142
61
|
}
|
|
143
62
|
}
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
query: (acc, values) => {
|
|
162
|
-
if (values[key]) {
|
|
163
|
-
if (values[key].from) {
|
|
164
|
-
acc.$and.push({
|
|
165
|
-
[filter.id]: {
|
|
166
|
-
$gte: values[key].from
|
|
167
|
-
}
|
|
168
|
-
});
|
|
169
|
-
}
|
|
170
|
-
if (values[key].to) {
|
|
171
|
-
acc.$and.push({
|
|
172
|
-
[filter.id]: {
|
|
173
|
-
$lte: values[key].to
|
|
174
|
-
}
|
|
175
|
-
});
|
|
176
|
-
}
|
|
63
|
+
});
|
|
64
|
+
break;
|
|
65
|
+
case 'radio-group':
|
|
66
|
+
currFilters.push({
|
|
67
|
+
key,
|
|
68
|
+
filter: idNameArrayFilter(),
|
|
69
|
+
component: RadioGroupFilter,
|
|
70
|
+
props: {
|
|
71
|
+
accordionItemProps: {
|
|
72
|
+
label: filter.displayName
|
|
73
|
+
},
|
|
74
|
+
data: ((_filter$static3 = filter.static) == null ? void 0 : _filter$static3.values.map(value => {
|
|
75
|
+
return {
|
|
76
|
+
id: value.id,
|
|
77
|
+
name: value.value
|
|
78
|
+
};
|
|
79
|
+
})) ?? []
|
|
177
80
|
}
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
81
|
+
});
|
|
82
|
+
break;
|
|
83
|
+
case 'number':
|
|
84
|
+
currFilters.push({
|
|
85
|
+
key,
|
|
86
|
+
filter: numberRangeFilter(),
|
|
87
|
+
component: NumberRangeFilter,
|
|
88
|
+
props: {
|
|
89
|
+
accordionItemProps: {
|
|
90
|
+
label: filter.displayName
|
|
91
|
+
},
|
|
92
|
+
min: ((_filter$numberConfig = filter.numberConfig) == null ? void 0 : _filter$numberConfig.min) ?? 0,
|
|
93
|
+
max: ((_filter$numberConfig2 = filter.numberConfig) == null ? void 0 : _filter$numberConfig2.max) ?? 100,
|
|
94
|
+
decimal: (_filter$numberConfig3 = filter.numberConfig) == null ? void 0 : _filter$numberConfig3.decimal
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
break;
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
return currFilters;
|
|
101
|
+
}, [config.filters]);
|
|
184
102
|
const FilterCollectionComponent = _ref => {
|
|
185
103
|
let {
|
|
186
104
|
filter
|
|
@@ -197,7 +115,6 @@ export const useFilters = config => {
|
|
|
197
115
|
};
|
|
198
116
|
return filters.reduce((acc, filter) => {
|
|
199
117
|
acc.filters[filter.key] = filter.filter;
|
|
200
|
-
acc.queries.push(filter.query);
|
|
201
118
|
acc.components.push(filter.collectionData ? /*#__PURE__*/React.createElement(FilterCollectionComponent, {
|
|
202
119
|
filter: filter
|
|
203
120
|
}) : /*#__PURE__*/React.createElement(filter.component, _extends({
|
|
@@ -207,8 +124,7 @@ export const useFilters = config => {
|
|
|
207
124
|
return acc;
|
|
208
125
|
}, {
|
|
209
126
|
filters: {},
|
|
210
|
-
components: []
|
|
211
|
-
queries: []
|
|
127
|
+
components: []
|
|
212
128
|
});
|
|
213
129
|
};
|
|
214
130
|
//# sourceMappingURL=useFilters.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","_","SupportedValueTypeEnum","DateRangeFilter","dateRangeFilter","idNameArrayFilter","MultiSelectCheckboxFilter","NumberRangeFilter","numberRangeFilter","RadioGroupFilter","SingleSelectFilter","useStaticListFilterCollection","useFilters","config","_config$filters","filters","forEach","filter","_filter$static","_filter$static2","_filter$static3","_filter$numberConfig","_filter$numberConfig2","_filter$numberConfig3","key","camelCase","displayName","componentType","push","component","props","accordionItemProps","label","query","acc","values","from","$and","id","$gte","toISOString","to","$lte","collectionData","static","map","value","name","popoverProps","appendTo","$in","item","placeholder","definition","type","BOOLEAN","$eq","data","min","numberConfig","max","decimal","FilterCollectionComponent","_ref","collection","createElement","_extends","reduce","queries","components"],"sources":["../../../src/hooks/useFilters.tsx"],"sourcesContent":["import React from 'react';\nimport _ from 'lodash';\nimport { ProjectConfig, SupportedValueTypeEnum } from '../types';\nimport {\n DateRangeFilter,\n dateRangeFilter,\n Filter,\n idNameArrayFilter,\n MultiSelectCheckboxFilter,\n NumberRangeFilter,\n numberRangeFilter,\n RadioGroupFilter,\n SingleSelectFilter,\n useStaticListFilterCollection,\n} from '@wix/patterns';\n\nexport interface FilterOptions {\n key: string;\n filter: Filter<any>;\n query: (\n acc: { $and: Record<string, any> },\n values: Record<string, any>,\n ) => Record<string, any>;\n component: React.ElementType;\n collectionData?: { id: string; name: string }[];\n props: Record<string, any>;\n}\n\nexport interface ReturnValue {\n filters: { [key: string]: Filter<any> };\n components: React.JSX.Element[];\n queries: FilterOptions['query'][];\n}\n\nexport const useFilters = (config: ProjectConfig) => {\n const filters: FilterOptions[] = [];\n\n config.filters?.forEach((filter) => {\n const key = _.camelCase(filter.displayName);\n\n switch (filter.componentType) {\n case 'date-range':\n filters.push({\n key,\n filter: dateRangeFilter(),\n component: DateRangeFilter,\n props: {\n accordionItemProps: { label: filter.displayName },\n },\n query: (acc, values) => {\n if (values[key]) {\n if (values[key].from) {\n acc.$and.push({\n [filter.id]: {\n $gte: values[key].from.toISOString(),\n },\n });\n }\n\n if (values[key].to) {\n acc.$and.push({\n [filter.id]: {\n $lte: values[key].to.toISOString(),\n },\n });\n }\n }\n\n return acc;\n },\n });\n\n break;\n case 'multi-select':\n filters.push({\n key,\n filter: idNameArrayFilter(),\n component: MultiSelectCheckboxFilter,\n collectionData:\n filter.static?.values.map((value) => {\n return { id: value.id, name: value.value };\n }) ?? [],\n props: {\n accordionItemProps: { label: filter.displayName },\n popoverProps: { appendTo: 'window' },\n },\n query: (acc, values) => {\n if (values[key]) {\n acc.$and.push({\n [filter.id]: {\n $in: values[key].map((item: any) => item.id),\n },\n });\n }\n\n return acc;\n },\n });\n\n break;\n case 'single':\n filters.push({\n key,\n filter: idNameArrayFilter(),\n component: SingleSelectFilter,\n collectionData:\n filter.static?.values.map((value) => {\n return { id: value.id, name: value.value };\n }) ?? [],\n props: {\n placeholder: `Select ${filter.displayName}`,\n accordionItemProps: { label: filter.displayName },\n },\n query: (acc, values) => {\n if (values[key]) {\n if (filter.definition.type === SupportedValueTypeEnum.BOOLEAN) {\n acc.$and.push({\n [filter.id]: {\n $eq: values[key].map((item: any) =>\n item.id === 'true' ? true : false,\n ),\n },\n });\n } else {\n acc.$and.push({\n [filter.id]: {\n $in: values[key].map((item: any) => item.id),\n },\n });\n }\n }\n return acc;\n },\n });\n\n break;\n case 'radio-group':\n filters.push({\n key,\n filter: idNameArrayFilter(),\n component: RadioGroupFilter,\n props: {\n accordionItemProps: { label: filter.displayName },\n data:\n filter.static?.values.map((value) => {\n return { id: value.id, name: value.value };\n }) ?? [],\n },\n query: (acc, values) => {\n if (values[key]) {\n if (filter.definition.type === SupportedValueTypeEnum.BOOLEAN) {\n acc.$and.push({\n [filter.id]: {\n $eq: values[key].map((item: any) =>\n item.id === 'true' ? true : false,\n ),\n },\n });\n } else {\n acc.$and.push({\n [filter.id]: {\n $in: values[key].map((item: any) => item.id),\n },\n });\n }\n }\n return acc;\n },\n });\n\n break;\n case 'number':\n filters.push({\n key,\n filter: numberRangeFilter(),\n component: NumberRangeFilter,\n props: {\n accordionItemProps: { label: filter.displayName },\n min: filter.numberConfig?.min ?? 0,\n max: filter.numberConfig?.max ?? 100,\n decimal: filter.numberConfig?.decimal,\n },\n query: (acc, values) => {\n if (values[key]) {\n if (values[key].from) {\n acc.$and.push({\n [filter.id]: {\n $gte: values[key].from,\n },\n });\n }\n\n if (values[key].to) {\n acc.$and.push({\n [filter.id]: {\n $lte: values[key].to,\n },\n });\n }\n }\n return acc;\n },\n });\n\n break;\n }\n });\n\n const FilterCollectionComponent: React.FC<{\n filter: FilterOptions;\n }> = ({ filter }) => {\n const collection = useStaticListFilterCollection(\n filter.filter,\n filter.collectionData ?? [],\n );\n\n return (\n <filter.component\n key={filter.key}\n filter={filter.filter}\n {...(filter.collectionData ? { collection } : {})}\n collection={collection}\n {...filter.props}\n />\n );\n };\n\n return filters.reduce<ReturnValue>(\n (acc, filter) => {\n acc.filters[filter.key] = filter.filter;\n acc.queries.push(filter.query);\n acc.components.push(\n filter.collectionData ? (\n <FilterCollectionComponent filter={filter} />\n ) : (\n <filter.component\n key={filter.key}\n filter={filter.filter}\n {...filter.props}\n />\n ),\n );\n\n return acc;\n },\n { filters: {}, components: [], queries: [] },\n );\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","_","DateRangeFilter","dateRangeFilter","idNameArrayFilter","MultiSelectCheckboxFilter","NumberRangeFilter","numberRangeFilter","RadioGroupFilter","SingleSelectFilter","useStaticListFilterCollection","useFilters","config","filters","useMemo","_config$filters","currFilters","forEach","filter","_filter$static","_filter$static2","_filter$static3","_filter$numberConfig","_filter$numberConfig2","_filter$numberConfig3","key","camelCase","displayName","componentType","push","component","props","accordionItemProps","label","collectionData","static","values","map","value","id","name","popoverProps","appendTo","placeholder","data","min","numberConfig","max","decimal","FilterCollectionComponent","_ref","collection","createElement","_extends","reduce","acc","components"],"sources":["../../../src/hooks/useFilters.tsx"],"sourcesContent":["import React from 'react';\nimport _ from 'lodash';\nimport { PageConfig } from '../types';\nimport {\n DateRangeFilter,\n dateRangeFilter,\n Filter,\n idNameArrayFilter,\n MultiSelectCheckboxFilter,\n NumberRangeFilter,\n numberRangeFilter,\n RadioGroupFilter,\n SingleSelectFilter,\n useStaticListFilterCollection,\n} from '@wix/patterns';\n\nexport interface FilterOptions {\n key: string;\n filter: Filter<any>;\n component: React.ElementType;\n collectionData?: { id: string; name: string }[];\n props: Record<string, any>;\n}\n\nexport interface ReturnValue {\n filters: { [key: string]: Filter<any> };\n components: React.JSX.Element[];\n}\n\nexport const useFilters = (config: PageConfig) => {\n const filters = React.useMemo(() => {\n const currFilters: FilterOptions[] = [];\n config.filters?.forEach((filter) => {\n const key = _.camelCase(filter.displayName);\n\n switch (filter.componentType) {\n case 'date-range':\n currFilters.push({\n key,\n filter: dateRangeFilter(),\n component: DateRangeFilter,\n props: {\n accordionItemProps: { label: filter.displayName },\n },\n });\n\n break;\n case 'multi-select':\n currFilters.push({\n key,\n filter: idNameArrayFilter(),\n component: MultiSelectCheckboxFilter,\n collectionData:\n filter.static?.values.map((value) => {\n return { id: value.id, name: value.value };\n }) ?? [],\n props: {\n accordionItemProps: { label: filter.displayName },\n popoverProps: { appendTo: 'window' },\n },\n });\n\n break;\n case 'single':\n currFilters.push({\n key,\n filter: idNameArrayFilter(),\n component: SingleSelectFilter,\n collectionData:\n filter.static?.values.map((value) => {\n return { id: value.id, name: value.value };\n }) ?? [],\n props: {\n placeholder: `Select ${filter.displayName}`,\n accordionItemProps: { label: filter.displayName },\n },\n });\n\n break;\n case 'radio-group':\n currFilters.push({\n key,\n filter: idNameArrayFilter(),\n component: RadioGroupFilter,\n props: {\n accordionItemProps: { label: filter.displayName },\n data:\n filter.static?.values.map((value) => {\n return { id: value.id, name: value.value };\n }) ?? [],\n },\n });\n\n break;\n case 'number':\n currFilters.push({\n key,\n filter: numberRangeFilter(),\n component: NumberRangeFilter,\n props: {\n accordionItemProps: { label: filter.displayName },\n min: filter.numberConfig?.min ?? 0,\n max: filter.numberConfig?.max ?? 100,\n decimal: filter.numberConfig?.decimal,\n },\n });\n\n break;\n }\n });\n return currFilters;\n }, [config.filters]);\n\n const FilterCollectionComponent: React.FC<{\n filter: FilterOptions;\n }> = ({ filter }) => {\n const collection = useStaticListFilterCollection(\n filter.filter,\n filter.collectionData ?? [],\n );\n\n return (\n <filter.component\n key={filter.key}\n filter={filter.filter}\n {...(filter.collectionData ? { collection } : {})}\n collection={collection}\n {...filter.props}\n />\n );\n };\n\n return filters.reduce<ReturnValue>(\n (acc, filter) => {\n acc.filters[filter.key] = filter.filter;\n acc.components.push(\n filter.collectionData ? (\n <FilterCollectionComponent filter={filter} />\n ) : (\n <filter.component\n key={filter.key}\n filter={filter.filter}\n {...filter.props}\n />\n ),\n );\n\n return acc;\n },\n { filters: {}, components: [] },\n );\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import React, { createContext, useContext, useEffect, useState } from 'react';
|
|
2
|
+
import { getCompositeConfig } from '../config/ConfigFactory';
|
|
3
|
+
const ConfigContext = /*#__PURE__*/createContext(null);
|
|
4
|
+
export const ConfigProvider = _ref => {
|
|
5
|
+
let {
|
|
6
|
+
page,
|
|
7
|
+
children
|
|
8
|
+
} = _ref;
|
|
9
|
+
const [config, setConfig] = useState(null);
|
|
10
|
+
useEffect(() => {
|
|
11
|
+
getCompositeConfig(page).then(setConfig).catch(error => {
|
|
12
|
+
console.error('Error fetching config:', error);
|
|
13
|
+
});
|
|
14
|
+
}, [page]);
|
|
15
|
+
if (!config) {
|
|
16
|
+
return null;
|
|
17
|
+
}
|
|
18
|
+
return /*#__PURE__*/React.createElement(ConfigContext.Provider, {
|
|
19
|
+
value: config
|
|
20
|
+
}, children);
|
|
21
|
+
};
|
|
22
|
+
export const useConfig = () => {
|
|
23
|
+
const context = useContext(ConfigContext);
|
|
24
|
+
if (!context) {
|
|
25
|
+
throw new Error('useConfig must be used within a ConfigProvider');
|
|
26
|
+
}
|
|
27
|
+
return context;
|
|
28
|
+
};
|
|
29
|
+
//# sourceMappingURL=ConfigContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","createContext","useContext","useEffect","useState","getCompositeConfig","ConfigContext","ConfigProvider","_ref","page","children","config","setConfig","then","catch","error","console","createElement","Provider","value","useConfig","context","Error"],"sources":["../../../src/providers/ConfigContext.tsx"],"sourcesContent":["import React, {\n createContext,\n useContext,\n useEffect,\n useState,\n ReactNode,\n} from 'react';\nimport { PageConfig } from '../types';\nimport { CompositeConfig } from '../config/CompositeConfig';\nimport { getCompositeConfig } from '../config/ConfigFactory';\n\nconst ConfigContext = createContext<CompositeConfig | null>(null);\n\ninterface ConfigProviderProps {\n page: PageConfig;\n children: ReactNode;\n}\n\nexport const ConfigProvider = ({ page, children }: ConfigProviderProps) => {\n const [config, setConfig] = useState<CompositeConfig | null>(null);\n\n useEffect(() => {\n getCompositeConfig(page)\n .then(setConfig)\n .catch((error) => {\n console.error('Error fetching config:', error);\n });\n }, [page]);\n\n if (!config) {\n return null;\n }\n\n return (\n <ConfigContext.Provider value={config}>{children}</ConfigContext.Provider>\n );\n};\n\nexport const useConfig = (): CompositeConfig => {\n const context = useContext(ConfigContext);\n if (!context) {\n throw new Error('useConfig must be used within a ConfigProvider');\n }\n return context;\n};\n"],"mappings":"AAAA,OAAOA,KAAK,IACVC,aAAa,EACbC,UAAU,EACVC,SAAS,EACTC,QAAQ,QAEH,OAAO;AAGd,SAASC,kBAAkB,QAAQ,yBAAyB;AAE5D,MAAMC,aAAa,gBAAGL,aAAa,CAAyB,IAAI,CAAC;AAOjE,OAAO,MAAMM,cAAc,GAAGC,IAAA,IAA6C;EAAA,IAA5C;IAAEC,IAAI;IAAEC;EAA8B,CAAC,GAAAF,IAAA;EACpE,MAAM,CAACG,MAAM,EAAEC,SAAS,CAAC,GAAGR,QAAQ,CAAyB,IAAI,CAAC;EAElED,SAAS,CAAC,MAAM;IACdE,kBAAkB,CAACI,IAAI,CAAC,CACrBI,IAAI,CAACD,SAAS,CAAC,CACfE,KAAK,CAAEC,KAAK,IAAK;MAChBC,OAAO,CAACD,KAAK,CAAC,wBAAwB,EAAEA,KAAK,CAAC;IAChD,CAAC,CAAC;EACN,CAAC,EAAE,CAACN,IAAI,CAAC,CAAC;EAEV,IAAI,CAACE,MAAM,EAAE;IACX,OAAO,IAAI;EACb;EAEA,oBACEX,KAAA,CAAAiB,aAAA,CAACX,aAAa,CAACY,QAAQ;IAACC,KAAK,EAAER;EAAO,GAAED,QAAiC,CAAC;AAE9E,CAAC;AAED,OAAO,MAAMU,SAAS,GAAGA,CAAA,KAAuB;EAC9C,MAAMC,OAAO,GAAGnB,UAAU,CAACI,aAAa,CAAC;EACzC,IAAI,CAACe,OAAO,EAAE;IACZ,MAAM,IAAIC,KAAK,CAAC,gDAAgD,CAAC;EACnE;EACA,OAAOD,OAAO;AAChB,CAAC","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["../../../src/providers/index.ts"],"sourcesContent":["export * from './
|
|
1
|
+
{"version":3,"names":[],"sources":["../../../src/providers/index.ts"],"sourcesContent":["export * from './ConfigContext';\nexport * from './PatternsWizardOverridesContext';\n"],"mappings":"AAAA,cAAc,iBAAiB;AAC/B,cAAc,kCAAkC","ignoreList":[]}
|
package/dist/esm/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["CollectionTypeEnum","SupportedValueTypeEnum","ComponentTypeEnum"],"sources":["../../src/types.ts"],"sourcesContent":["export enum CollectionTypeEnum {\n TABLE = 'Table',\n GRID = 'Grid',\n TABLE_GRID_SWITCH = 'TableGridSwitch',\n}\n\nexport enum SupportedValueTypeEnum {\n STRING = 'STRING',\n NUMBER = 'NUMBER',\n BOOLEAN = 'BOOLEAN',\n DATE = 'DATE',\n ENUM = 'ENUM',\n}\n\nexport interface Column {\n id: string;\n name: string;\n type: SupportedValueTypeEnum;\n width?: string;\n}\n\nexport interface FilterValue {\n id: string;\n value: string;\n system?: boolean;\n deletable?: boolean;\n}\n\nexport enum ComponentTypeEnum {\n SINGLE = 'single',\n MULTI_SELECT = 'multi-select',\n RADIO_GROUP = 'radio-group',\n NUMBER = 'number',\n DATE_RANGE = 'date-range',\n}\n\nexport interface FieldDefinition {\n id: string;\n name: string;\n description?: string;\n path: string;\n type?: SupportedValueTypeEnum;\n schemaName?: string;\n enums?: string[];\n}\n\nexport interface Filter {\n id: string;\n displayName: string;\n componentType: ComponentTypeEnum;\n definition: FieldDefinition;\n numberConfig?: {\n min?: number;\n max?: number;\n decimal?: boolean;\n };\n static?: {\n values: FilterValue[];\n };\n}\n\nexport interface CollectionConfig {\n type: CollectionTypeEnum;\n grid?: GridCollectionConfig;\n}\n\nexport interface GridCollectionConfig {\n renderItem: {\n title: string;\n subtitle?: string;\n primaryActionProps?: {\n label: string;\n // onClick: () => void;\n };\n secondaryActionProps?: {\n label: string;\n // onClick: () => void;\n };\n };\n imagePlacement?: 'top' | 'side';\n renderAddItem?: boolean;\n sections?: {\n title: string;\n action?: {\n label: string;\n // onClick: () => void;\n };\n };\n dragAndDrop?: boolean;\n}\n\ninterface Action {\n id: string;\n text: string;\n icon: string;\n}\nexport interface
|
|
1
|
+
{"version":3,"names":["CollectionTypeEnum","SupportedValueTypeEnum","ComponentTypeEnum"],"sources":["../../src/types.ts"],"sourcesContent":["export enum CollectionTypeEnum {\n TABLE = 'Table',\n GRID = 'Grid',\n TABLE_GRID_SWITCH = 'TableGridSwitch',\n}\n\nexport enum SupportedValueTypeEnum {\n STRING = 'STRING',\n NUMBER = 'NUMBER',\n BOOLEAN = 'BOOLEAN',\n DATE = 'DATE',\n ENUM = 'ENUM',\n}\n\nexport interface Column {\n id: string;\n name: string;\n type: SupportedValueTypeEnum;\n width?: string;\n}\n\nexport interface FilterValue {\n id: string;\n value: string;\n system?: boolean;\n deletable?: boolean;\n}\n\nexport enum ComponentTypeEnum {\n SINGLE = 'single',\n MULTI_SELECT = 'multi-select',\n RADIO_GROUP = 'radio-group',\n NUMBER = 'number',\n DATE_RANGE = 'date-range',\n}\n\nexport interface FieldDefinition {\n id: string;\n name: string;\n description?: string;\n path: string;\n type?: SupportedValueTypeEnum;\n schemaName?: string;\n enums?: string[];\n}\n\nexport interface Filter {\n id: string;\n displayName: string;\n componentType: ComponentTypeEnum;\n definition: FieldDefinition;\n numberConfig?: {\n min?: number;\n max?: number;\n decimal?: boolean;\n };\n static?: {\n values: FilterValue[];\n };\n}\n\nexport interface CollectionConfig {\n type: CollectionTypeEnum;\n grid?: GridCollectionConfig;\n}\n\nexport interface GridCollectionConfig {\n renderItem: {\n title: string;\n subtitle?: string;\n primaryActionProps?: {\n label: string;\n // onClick: () => void;\n };\n secondaryActionProps?: {\n label: string;\n // onClick: () => void;\n };\n };\n imagePlacement?: 'top' | 'side';\n renderAddItem?: boolean;\n sections?: {\n title: string;\n action?: {\n label: string;\n // onClick: () => void;\n };\n };\n dragAndDrop?: boolean;\n}\n\ninterface Action {\n id: string;\n text: string;\n icon: string;\n}\nexport interface PageConfig {\n pageTitle: { text: string; hideTotal?: boolean };\n pageSubtitle?: {\n text: string;\n learnMore?: {\n url: string;\n label?: string;\n };\n };\n viewType: string;\n collectionId: string;\n entityTypeSource: EntityTypeSource;\n entityId: string;\n entityName: string;\n columns: Column[];\n collectionConfig: CollectionConfig;\n entitySchemaName: string;\n filters?: Filter[];\n actions?: Action[];\n views?: {\n enabled: boolean;\n };\n customFields?: {\n enabled: boolean;\n };\n optimisticActions?: {\n enabled: boolean;\n };\n}\n\nexport interface ProjectDTO {\n key: string;\n id: string;\n userId: string;\n createdAt: Date;\n updatedAt: Date;\n config: PageConfig;\n}\n\nexport interface PatternsWizardBaseProps {\n configuration: PageConfig;\n}\n\nexport type EntityProps = { [key: string]: any };\n\nexport interface IMenuItem<T extends EntityProps = {}> {\n item: T;\n}\nexport interface IColumnValue<T> {\n value: T;\n}\n\nexport type EntityTypeSource = 'cms';\n\nexport type QueryOperator =\n | 'CONTAINS'\n | 'ENDS_WITH'\n | 'EQ'\n | 'EXISTS'\n | 'GT'\n | 'GTE'\n | 'HAS_ALL'\n | 'HAS_SOME'\n | 'LT'\n | 'LTE'\n | 'NE'\n | 'STARTS_WITH'\n | 'URLIZED';\n\nexport interface Field {\n id: string;\n type: string;\n capabilities: {\n supportedQueryOperators: QueryOperator[];\n sortable: boolean;\n };\n}\n\n// TODO: fill this out\nexport interface SchemaConfig {\n fields: Field[];\n}\n"],"mappings":"AAAA,WAAYA,kBAAkB,0BAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAA,OAAlBA,kBAAkB;AAAA;AAM9B,WAAYC,sBAAsB,0BAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAA,OAAtBA,sBAAsB;AAAA;AAsBlC,WAAYC,iBAAiB,0BAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAA,OAAjBA,iBAAiB;AAAA;;AAkJ7B","ignoreList":[]}
|