@wix/auto-patterns 1.2.0 → 1.4.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 +31 -7
- package/dist/cjs/components/AutoPatternsCollectionPage/AutoPatternsCollectionPage.js.map +1 -1
- package/dist/cjs/components/AutoPatternsCollectionPageContent/AutoPatternsCollectionPageContent.js +86 -16
- package/dist/cjs/components/AutoPatternsCollectionPageContent/AutoPatternsCollectionPageContent.js.map +1 -1
- package/dist/cjs/config/ConfigFactory.js +1 -1
- package/dist/cjs/config/ConfigFactory.js.map +1 -1
- package/dist/cjs/config/cms/CmsCompositeConfig.js +76 -0
- package/dist/cjs/config/cms/CmsCompositeConfig.js.map +1 -0
- package/dist/cjs/config/cms/filterUtils.js +82 -0
- package/dist/cjs/config/cms/filterUtils.js.map +1 -0
- package/dist/cjs/config/cms/sortUtils.js +32 -0
- package/dist/cjs/config/cms/sortUtils.js.map +1 -0
- package/dist/cjs/hooks/useColumns.js +98 -19
- package/dist/cjs/hooks/useColumns.js.map +1 -1
- package/dist/cjs/hooks/useEmptyStates.js +55 -0
- package/dist/cjs/hooks/useEmptyStates.js.map +1 -0
- package/dist/cjs/hooks/useFeatures.js +10 -1
- package/dist/cjs/hooks/useFeatures.js.map +1 -1
- package/dist/cjs/hooks/useFetchData.js +23 -0
- package/dist/cjs/hooks/useFetchData.js.map +1 -0
- package/dist/cjs/hooks/useFilters.js +103 -78
- package/dist/cjs/hooks/useFilters.js.map +1 -1
- package/dist/cjs/hooks/useTableProps.js +13 -1
- package/dist/cjs/hooks/useTableProps.js.map +1 -1
- package/dist/cjs/providers/PatternsWizardOverridesContext.js +1 -1
- package/dist/cjs/providers/PatternsWizardOverridesContext.js.map +1 -1
- package/dist/cjs/types.js +1 -9
- package/dist/cjs/types.js.map +1 -1
- package/dist/esm/components/AutoPatternsCollectionPage/AutoPatternsCollectionPage.js +10 -3
- package/dist/esm/components/AutoPatternsCollectionPage/AutoPatternsCollectionPage.js.map +1 -1
- package/dist/esm/components/AutoPatternsCollectionPageContent/AutoPatternsCollectionPageContent.js +58 -13
- package/dist/esm/components/AutoPatternsCollectionPageContent/AutoPatternsCollectionPageContent.js.map +1 -1
- package/dist/esm/config/ConfigFactory.js +1 -1
- package/dist/esm/config/ConfigFactory.js.map +1 -1
- package/dist/esm/config/cms/CmsCompositeConfig.js +70 -0
- package/dist/esm/config/cms/CmsCompositeConfig.js.map +1 -0
- package/dist/esm/config/cms/filterUtils.js +79 -0
- package/dist/esm/config/cms/filterUtils.js.map +1 -0
- package/dist/esm/config/cms/sortUtils.js +29 -0
- package/dist/esm/config/cms/sortUtils.js.map +1 -0
- package/dist/esm/hooks/useColumns.js +98 -19
- package/dist/esm/hooks/useColumns.js.map +1 -1
- package/dist/esm/hooks/useEmptyStates.js +41 -0
- package/dist/esm/hooks/useEmptyStates.js.map +1 -0
- package/dist/esm/hooks/useFeatures.js +4 -2
- package/dist/esm/hooks/useFeatures.js.map +1 -1
- package/dist/esm/hooks/useFetchData.js +18 -0
- package/dist/esm/hooks/useFetchData.js.map +1 -0
- package/dist/esm/hooks/useFilters.js +101 -76
- package/dist/esm/hooks/useFilters.js.map +1 -1
- package/dist/esm/hooks/useTableProps.js +13 -1
- package/dist/esm/hooks/useTableProps.js.map +1 -1
- package/dist/esm/providers/PatternsWizardOverridesContext.js +1 -1
- package/dist/esm/providers/PatternsWizardOverridesContext.js.map +1 -1
- package/dist/esm/types.js +0 -8
- package/dist/esm/types.js.map +1 -1
- 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/cms/CmsCompositeConfig.d.ts +7 -0
- package/dist/types/config/cms/CmsCompositeConfig.d.ts.map +1 -0
- package/dist/types/config/cms/filterUtils.d.ts +16 -0
- package/dist/types/config/cms/filterUtils.d.ts.map +1 -0
- package/dist/types/config/cms/sortUtils.d.ts +9 -0
- package/dist/types/config/cms/sortUtils.d.ts.map +1 -0
- package/dist/types/hooks/useColumns.d.ts.map +1 -1
- package/dist/types/hooks/useEmptyStates.d.ts +5 -0
- package/dist/types/hooks/useEmptyStates.d.ts.map +1 -0
- package/dist/types/hooks/useFeatures.d.ts +1 -0
- package/dist/types/hooks/useFeatures.d.ts.map +1 -1
- package/dist/types/hooks/useFetchData.d.ts +4 -0
- package/dist/types/hooks/useFetchData.d.ts.map +1 -0
- package/dist/types/hooks/useFilters.d.ts +2 -1
- package/dist/types/hooks/useFilters.d.ts.map +1 -1
- package/dist/types/hooks/useTableProps.d.ts +9 -4
- package/dist/types/hooks/useTableProps.d.ts.map +1 -1
- package/dist/types/providers/PatternsWizardOverridesContext.d.ts +7 -2
- package/dist/types/providers/PatternsWizardOverridesContext.d.ts.map +1 -1
- package/dist/types/types.d.ts +88 -28
- package/dist/types/types.d.ts.map +1 -1
- package/package.json +14 -14
- package/dist/cjs/config/CmsCompositeConfig.js +0 -85
- package/dist/cjs/config/CmsCompositeConfig.js.map +0 -1
- package/dist/esm/config/CmsCompositeConfig.js +0 -80
- package/dist/esm/config/CmsCompositeConfig.js.map +0 -1
- package/dist/types/config/CmsCompositeConfig.d.ts +0 -6
- package/dist/types/config/CmsCompositeConfig.d.ts.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_jsxFileName","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","PatternsWizardOverridesContext","createContext","undefined","PatternsWizardOverridesProvider","children","value","createElement","Provider","__self","__source","fileName","lineNumber","columnNumber","exports","usePatternsWizardOverridesContext","useContext"],"sources":["../../../src/providers/PatternsWizardOverridesContext.tsx"],"sourcesContent":["import React, { createContext, useContext, ReactNode } from
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_jsxFileName","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","PatternsWizardOverridesContext","createContext","undefined","PatternsWizardOverridesProvider","children","value","createElement","Provider","__self","__source","fileName","lineNumber","columnNumber","exports","usePatternsWizardOverridesContext","useContext"],"sources":["../../../src/providers/PatternsWizardOverridesContext.tsx"],"sourcesContent":["import React, { createContext, useContext, ReactNode } from \"react\";\nimport {\n IColumnValue,\n IMenuItem,\n PagePrimaryActionProps,\n PageSecondaryActionProps,\n} from \"../types\";\nimport { CollectionConfig } from '@wix/patterns';\n\nexport interface PatternsWizardOverridesContextProps {\n actions?: Record<string, (props: IMenuItem<any>) => void>;\n columns?: Record<string, (props: IColumnValue<any>) => void>;\n HeaderAddon?: React.FC;\n emptyState?: Record<string, () => void>;\n usePagePrimaryAction?: () => PagePrimaryActionProps;\n usePageSecondaryAction?: () => PageSecondaryActionProps;\n fetchData?: Record<string, CollectionConfig<any, any>['fetchData']>;\n}\n\nconst PatternsWizardOverridesContext = createContext<\n PatternsWizardOverridesContextProps | undefined\n>(undefined);\n\nexport const PatternsWizardOverridesProvider: React.FC<{\n children: ReactNode;\n value: PatternsWizardOverridesContextProps;\n}> = ({ children, value }) => {\n return (\n <PatternsWizardOverridesContext.Provider value={value}>\n {children}\n </PatternsWizardOverridesContext.Provider>\n );\n};\n\nexport const usePatternsWizardOverridesContext = ():\n | PatternsWizardOverridesContextProps\n | undefined => {\n return useContext(PatternsWizardOverridesContext);\n};\n"],"mappings":";;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AAAoE,IAAAC,YAAA;AAAA,SAAAC,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAJ,wBAAAI,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAK,OAAA,EAAAL,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA,OAAAQ,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAhB,CAAA,EAAAc,CAAA,SAAAG,CAAA,GAAAP,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAG,CAAA,KAAAA,CAAA,CAAAV,GAAA,IAAAU,CAAA,CAAAC,GAAA,IAAAP,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAG,CAAA,IAAAT,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAe,GAAA,CAAAlB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAmBpE,MAAMW,8BAA8B,gBAAG,IAAAC,oBAAa,EAElDC,SAAS,CAAC;AAEL,MAAMC,+BAGX,GAAGA,CAAC;EAAEC,QAAQ;EAAEC;AAAM,CAAC,KAAK;EAC5B,oBACE7B,MAAA,CAAAU,OAAA,CAAAoB,aAAA,CAACN,8BAA8B,CAACO,QAAQ;IAACF,KAAK,EAAEA,KAAM;IAAAG,MAAA;IAAAC,QAAA;MAAAC,QAAA,EAAA/B,YAAA;MAAAgC,UAAA;MAAAC,YAAA;IAAA;EAAA,GACnDR,QACsC,CAAC;AAE9C,CAAC;AAACS,OAAA,CAAAV,+BAAA,GAAAA,+BAAA;AAEK,MAAMW,iCAAiC,GAAGA,CAAA,KAEhC;EACf,OAAO,IAAAC,iBAAU,EAACf,8BAA8B,CAAC;AACnD,CAAC;AAACa,OAAA,CAAAC,iCAAA,GAAAA,iCAAA","ignoreList":[]}
|
package/dist/cjs/types.js
CHANGED
|
@@ -1,21 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
exports.__esModule = true;
|
|
4
|
-
exports.
|
|
4
|
+
exports.ComponentTypeEnum = exports.CollectionTypeEnum = void 0;
|
|
5
5
|
let CollectionTypeEnum = exports.CollectionTypeEnum = /*#__PURE__*/function (CollectionTypeEnum) {
|
|
6
6
|
CollectionTypeEnum["TABLE"] = "Table";
|
|
7
7
|
CollectionTypeEnum["GRID"] = "Grid";
|
|
8
8
|
CollectionTypeEnum["TABLE_GRID_SWITCH"] = "TableGridSwitch";
|
|
9
9
|
return CollectionTypeEnum;
|
|
10
10
|
}({});
|
|
11
|
-
let SupportedValueTypeEnum = exports.SupportedValueTypeEnum = /*#__PURE__*/function (SupportedValueTypeEnum) {
|
|
12
|
-
SupportedValueTypeEnum["STRING"] = "STRING";
|
|
13
|
-
SupportedValueTypeEnum["NUMBER"] = "NUMBER";
|
|
14
|
-
SupportedValueTypeEnum["BOOLEAN"] = "BOOLEAN";
|
|
15
|
-
SupportedValueTypeEnum["DATE"] = "DATE";
|
|
16
|
-
SupportedValueTypeEnum["ENUM"] = "ENUM";
|
|
17
|
-
return SupportedValueTypeEnum;
|
|
18
|
-
}({});
|
|
19
11
|
let ComponentTypeEnum = exports.ComponentTypeEnum = /*#__PURE__*/function (ComponentTypeEnum) {
|
|
20
12
|
ComponentTypeEnum["SINGLE"] = "single";
|
|
21
13
|
ComponentTypeEnum["MULTI_SELECT"] = "multi-select";
|
package/dist/cjs/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["CollectionTypeEnum","exports","
|
|
1
|
+
{"version":3,"names":["CollectionTypeEnum","exports","ComponentTypeEnum"],"sources":["../../src/types.ts"],"sourcesContent":["import {\n CollectionToolbarFiltersProps,\n PrimaryActions,\n SecondaryActions,\n} from '@wix/patterns';\nimport { DateRangeFilterMode, DateRangeOptions } from '@wix/patterns/core';\n\nexport enum CollectionTypeEnum {\n TABLE = 'Table',\n GRID = 'Grid',\n TABLE_GRID_SWITCH = 'TableGridSwitch',\n}\n\nexport type PatternsColumnType =\n | 'STRING'\n | 'NUMBER'\n | 'BOOLEAN'\n | 'DATE'\n | 'DATETIME'\n | 'ARRAY'\n | 'ENUM';\n\nexport interface Column {\n id: string;\n name: string;\n width?: string;\n sortable?: boolean;\n defaultSortOrder?: 'asc' | 'desc';\n sortMode?: 'asc' | 'desc';\n defaultHidden?: boolean;\n hiddenFromCustomColumnsSelection?: boolean;\n hideable?: boolean;\n reorderDisabled?: boolean;\n}\n\nexport interface EmptyState {\n title?: string;\n subtitle?: string;\n image?: {\n id: string;\n };\n addNewCta?: {\n id?: string;\n text?: string;\n };\n customCta?: {\n id?: string;\n };\n}\n\nexport interface FetchData {\n id: 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 FiltersConfig {\n items: Filter[];\n maxToolbarFilters?: CollectionToolbarFiltersProps['inline'];\n panelTitle?: string;\n}\n\nexport interface Filter {\n fieldId: string;\n displayName?: string;\n accordionItemProps?: {\n initiallyOpen?: boolean;\n sectionTitle?: string;\n };\n toolbarTagProps?: {\n label: string;\n };\n componentType?: ComponentTypeEnum;\n numberConfig?: {\n min?: number;\n max?: number;\n decimal?: boolean;\n };\n dateConfig?: {\n mode?: DateRangeFilterMode;\n dateRangeOptions?: DateRangeOptions;\n filterByTime?: 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}\n\ninterface ToolbarTitle {\n title: string;\n subtitle?: {\n text: string;\n info?: {\n content: {\n text: string;\n link?: {\n url: string;\n label: string;\n };\n };\n };\n learnMore?: {\n url: string;\n label?: string;\n };\n };\n showTotal?: boolean;\n itemsLimit?: number;\n}\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 search?: { shown?: boolean };\n toolbarTitle?: ToolbarTitle;\n limit?: number;\n persistQueryToUrl?: boolean;\n disableAutoSelectAllCount?: boolean;\n selectionConsistencyMode?: 'preserve' | 'clear';\n collectionId: string;\n entityTypeSource: EntityTypeSource;\n columns: Column[];\n filters?: FiltersConfig;\n actions?: Action[];\n emptyState?: EmptyState;\n fetchData?: FetchData;\n views?: {\n enabled: boolean;\n };\n customFields?: {\n enabled: boolean;\n };\n customColumns?: {\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 displayName: string;\n type: PatternsColumnType;\n capabilities: {\n supportedQueryOperators: QueryOperator[];\n sortable: boolean;\n };\n}\n\n// TODO: fill this out\nexport interface SchemaConfig {\n fields: Record<string, Field | undefined>;\n displayField: string;\n}\n\nexport type PagePrimaryActionProps = React.ComponentProps<\n typeof PrimaryActions\n>;\n\nexport type PageSecondaryActionProps = React.ComponentProps<\n typeof SecondaryActions\n>;\n"],"mappings":";;;;IAOYA,kBAAkB,GAAAC,OAAA,CAAAD,kBAAA,0BAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAA,OAAlBA,kBAAkB;AAAA;AAAA,IAsDlBE,iBAAiB,GAAAD,OAAA,CAAAC,iBAAA,0BAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAA,OAAjBA,iBAAiB;AAAA,OAuL7B","ignoreList":[]}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import React from 'react';
|
|
1
|
+
import React, { useState } from 'react';
|
|
2
2
|
import { CollectionPage } from '@wix/patterns/page';
|
|
3
3
|
import { AutoPatternsCollectionPageContent } from '../AutoPatternsCollectionPageContent';
|
|
4
4
|
import { usePatternsWizardOverridesContext, ConfigProvider } from '../../providers';
|
|
5
|
+
import { PrimaryActions, SecondaryActions } from '@wix/patterns';
|
|
5
6
|
export const AutoPatternsCollectionPage = _ref => {
|
|
6
7
|
let {
|
|
7
8
|
configuration
|
|
@@ -11,14 +12,20 @@ export const AutoPatternsCollectionPage = _ref => {
|
|
|
11
12
|
pageSubtitle
|
|
12
13
|
} = configuration;
|
|
13
14
|
const context = usePatternsWizardOverridesContext();
|
|
15
|
+
const primaryActionProps = context == null || context.usePagePrimaryAction == null ? void 0 : context.usePagePrimaryAction();
|
|
16
|
+
const secondaryActionProps = context == null || context.usePageSecondaryAction == null ? void 0 : context.usePageSecondaryAction();
|
|
17
|
+
const [_, setScrollableRef] = useState(null);
|
|
14
18
|
return /*#__PURE__*/React.createElement(ConfigProvider, {
|
|
15
19
|
page: configuration
|
|
16
20
|
}, /*#__PURE__*/React.createElement(CollectionPage, {
|
|
17
21
|
height: "100vh",
|
|
18
|
-
dataHook: "auto-patterns-page"
|
|
22
|
+
dataHook: "auto-patterns-page",
|
|
23
|
+
scrollableContentRef: setScrollableRef
|
|
19
24
|
}, /*#__PURE__*/React.createElement(CollectionPage.Header, {
|
|
20
25
|
title: pageTitle,
|
|
21
|
-
subtitle: pageSubtitle
|
|
26
|
+
subtitle: pageSubtitle,
|
|
27
|
+
primaryAction: primaryActionProps ? /*#__PURE__*/React.createElement(PrimaryActions, primaryActionProps) : undefined,
|
|
28
|
+
secondaryActions: secondaryActionProps ? /*#__PURE__*/React.createElement(SecondaryActions, secondaryActionProps) : undefined
|
|
22
29
|
}), /*#__PURE__*/React.createElement(CollectionPage.Content, null, context != null && context.HeaderAddon ? /*#__PURE__*/React.createElement(context.HeaderAddon, null) : null, /*#__PURE__*/React.createElement(AutoPatternsCollectionPageContent, null))));
|
|
23
30
|
};
|
|
24
31
|
//# sourceMappingURL=AutoPatternsCollectionPage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","CollectionPage","AutoPatternsCollectionPageContent","usePatternsWizardOverridesContext","ConfigProvider","AutoPatternsCollectionPage","_ref","configuration","pageTitle","pageSubtitle","context","createElement","page","height","dataHook","Header","title","subtitle","Content","HeaderAddon"],"sources":["../../../../src/components/AutoPatternsCollectionPage/AutoPatternsCollectionPage.tsx"],"sourcesContent":["import React from 'react';\nimport { CollectionPage } from '@wix/patterns/page';\nimport { AutoPatternsCollectionPageContent } from '../AutoPatternsCollectionPageContent';\nimport {\n usePatternsWizardOverridesContext,\n ConfigProvider,\n} from '../../providers';\nimport { PageConfig } from '../../types';\n\nexport interface AutoPatternsCollectionPageProps {\n configuration: PageConfig;\n}\n\nexport const AutoPatternsCollectionPage: React.FC<\n AutoPatternsCollectionPageProps\n> = ({ configuration }) => {\n const { pageTitle, pageSubtitle } = configuration;\n const context = usePatternsWizardOverridesContext();\n return (\n <ConfigProvider page={configuration}>\n <CollectionPage
|
|
1
|
+
{"version":3,"names":["React","useState","CollectionPage","AutoPatternsCollectionPageContent","usePatternsWizardOverridesContext","ConfigProvider","PrimaryActions","SecondaryActions","AutoPatternsCollectionPage","_ref","configuration","pageTitle","pageSubtitle","context","primaryActionProps","usePagePrimaryAction","secondaryActionProps","usePageSecondaryAction","_","setScrollableRef","createElement","page","height","dataHook","scrollableContentRef","Header","title","subtitle","primaryAction","undefined","secondaryActions","Content","HeaderAddon"],"sources":["../../../../src/components/AutoPatternsCollectionPage/AutoPatternsCollectionPage.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport { CollectionPage } from '@wix/patterns/page';\nimport { AutoPatternsCollectionPageContent } from '../AutoPatternsCollectionPageContent';\nimport {\n usePatternsWizardOverridesContext,\n ConfigProvider,\n} from '../../providers';\nimport { PageConfig } from '../../types';\nimport { PrimaryActions, SecondaryActions } from '@wix/patterns';\n\nexport interface AutoPatternsCollectionPageProps {\n configuration: PageConfig;\n}\n\nexport const AutoPatternsCollectionPage: React.FC<\n AutoPatternsCollectionPageProps\n> = ({ configuration }) => {\n const { pageTitle, pageSubtitle } = configuration;\n const context = usePatternsWizardOverridesContext();\n const primaryActionProps = context?.usePagePrimaryAction?.();\n const secondaryActionProps = context?.usePageSecondaryAction?.();\n const [_, setScrollableRef] = useState<HTMLElement | null>(null);\n\n return (\n <ConfigProvider page={configuration}>\n <CollectionPage\n height=\"100vh\"\n dataHook=\"auto-patterns-page\"\n scrollableContentRef={setScrollableRef}\n >\n <CollectionPage.Header\n title={pageTitle}\n subtitle={pageSubtitle}\n primaryAction={\n primaryActionProps ? (\n <PrimaryActions {...primaryActionProps} />\n ) : undefined\n }\n secondaryActions={\n secondaryActionProps ? (\n <SecondaryActions {...secondaryActionProps} />\n ) : undefined\n }\n />\n <CollectionPage.Content>\n {context?.HeaderAddon ? <context.HeaderAddon /> : null}\n <AutoPatternsCollectionPageContent />\n </CollectionPage.Content>\n </CollectionPage>\n </ConfigProvider>\n );\n};\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,QAAQ,QAAQ,OAAO;AACvC,SAASC,cAAc,QAAQ,oBAAoB;AACnD,SAASC,iCAAiC,QAAQ,sCAAsC;AACxF,SACEC,iCAAiC,EACjCC,cAAc,QACT,iBAAiB;AAExB,SAASC,cAAc,EAAEC,gBAAgB,QAAQ,eAAe;AAMhE,OAAO,MAAMC,0BAEZ,GAAGC,IAAA,IAAuB;EAAA,IAAtB;IAAEC;EAAc,CAAC,GAAAD,IAAA;EACpB,MAAM;IAAEE,SAAS;IAAEC;EAAa,CAAC,GAAGF,aAAa;EACjD,MAAMG,OAAO,GAAGT,iCAAiC,CAAC,CAAC;EACnD,MAAMU,kBAAkB,GAAGD,OAAO,YAAPA,OAAO,CAAEE,oBAAoB,oBAA7BF,OAAO,CAAEE,oBAAoB,CAAG,CAAC;EAC5D,MAAMC,oBAAoB,GAAGH,OAAO,YAAPA,OAAO,CAAEI,sBAAsB,oBAA/BJ,OAAO,CAAEI,sBAAsB,CAAG,CAAC;EAChE,MAAM,CAACC,CAAC,EAAEC,gBAAgB,CAAC,GAAGlB,QAAQ,CAAqB,IAAI,CAAC;EAEhE,oBACED,KAAA,CAAAoB,aAAA,CAACf,cAAc;IAACgB,IAAI,EAAEX;EAAc,gBAClCV,KAAA,CAAAoB,aAAA,CAAClB,cAAc;IACboB,MAAM,EAAC,OAAO;IACdC,QAAQ,EAAC,oBAAoB;IAC7BC,oBAAoB,EAAEL;EAAiB,gBAEvCnB,KAAA,CAAAoB,aAAA,CAAClB,cAAc,CAACuB,MAAM;IACpBC,KAAK,EAAEf,SAAU;IACjBgB,QAAQ,EAAEf,YAAa;IACvBgB,aAAa,EACXd,kBAAkB,gBAChBd,KAAA,CAAAoB,aAAA,CAACd,cAAc,EAAKQ,kBAAqB,CAAC,GACxCe,SACL;IACDC,gBAAgB,EACdd,oBAAoB,gBAClBhB,KAAA,CAAAoB,aAAA,CAACb,gBAAgB,EAAKS,oBAAuB,CAAC,GAC5Ca;EACL,CACF,CAAC,eACF7B,KAAA,CAAAoB,aAAA,CAAClB,cAAc,CAAC6B,OAAO,QACpBlB,OAAO,YAAPA,OAAO,CAAEmB,WAAW,gBAAGhC,KAAA,CAAAoB,aAAA,CAACP,OAAO,CAACmB,WAAW,MAAE,CAAC,GAAG,IAAI,eACtDhC,KAAA,CAAAoB,aAAA,CAACjB,iCAAiC,MAAE,CACd,CACV,CACF,CAAC;AAErB,CAAC","ignoreList":[]}
|
package/dist/esm/components/AutoPatternsCollectionPageContent/AutoPatternsCollectionPageContent.js
CHANGED
|
@@ -1,34 +1,44 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { CollectionToolbarFilters, Table, useTableCollection } from '@wix/patterns';
|
|
2
|
+
import { CollectionToolbarFilters, Table, ToolbarTitle, useTableCollection } from '@wix/patterns';
|
|
3
3
|
import { useTableProps } from '../../hooks';
|
|
4
4
|
import { usePatternsWizardOverridesContext, useConfig } from '../../providers';
|
|
5
5
|
import { Edit } from '@wix/wix-ui-icons-common';
|
|
6
|
+
import { Box, Text, TextButton } from '@wix/design-system';
|
|
6
7
|
export const AutoPatternsCollectionPageContent = () => {
|
|
8
|
+
var _toolbarTitle$subtitl, _toolbarTitle$subtitl2, _toolbarTitle$subtitl3, _toolbarTitle$subtitl4, _toolbarTitle$subtitl5, _toolbarTitle$subtitl6, _toolbarTitle$subtitl7;
|
|
7
9
|
const config = useConfig();
|
|
8
10
|
const {
|
|
9
11
|
page: {
|
|
10
12
|
pageTitle,
|
|
11
13
|
collectionId,
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
14
|
+
actions: secondaryActions = [],
|
|
15
|
+
search,
|
|
16
|
+
toolbarTitle,
|
|
17
|
+
limit,
|
|
18
|
+
persistQueryToUrl,
|
|
19
|
+
disableAutoSelectAllCount,
|
|
20
|
+
selectionConsistencyMode
|
|
21
|
+
}
|
|
17
22
|
} = config;
|
|
18
23
|
const context = usePatternsWizardOverridesContext();
|
|
19
24
|
const {
|
|
20
25
|
columns,
|
|
21
26
|
views,
|
|
22
27
|
dataExtension,
|
|
28
|
+
customColumns,
|
|
23
29
|
filters: {
|
|
24
30
|
filters,
|
|
25
|
-
components
|
|
26
|
-
|
|
31
|
+
components,
|
|
32
|
+
collectionToolbarFiltersProps
|
|
33
|
+
},
|
|
34
|
+
emptyState,
|
|
35
|
+
fetchData
|
|
27
36
|
} = useTableProps();
|
|
28
37
|
const tableState = useTableCollection({
|
|
29
|
-
queryName: `${collectionId}-${pageTitle}`,
|
|
30
|
-
itemKey: item => item
|
|
31
|
-
|
|
38
|
+
queryName: `${collectionId}-${pageTitle.text}`,
|
|
39
|
+
itemKey: item => item._id,
|
|
40
|
+
// Should be taken from some CMS extractor to avoid hardcoding
|
|
41
|
+
itemName: item => item[config.schema.displayField],
|
|
32
42
|
filters,
|
|
33
43
|
toExtendedFields: item => item.extendedFields,
|
|
34
44
|
fetchErrorMessage: _ref => {
|
|
@@ -37,7 +47,11 @@ export const AutoPatternsCollectionPageContent = () => {
|
|
|
37
47
|
} = _ref;
|
|
38
48
|
return String(err);
|
|
39
49
|
},
|
|
40
|
-
|
|
50
|
+
fetchData,
|
|
51
|
+
limit,
|
|
52
|
+
persistQueryToUrl,
|
|
53
|
+
disableAutoSelectAllCount,
|
|
54
|
+
selectionConsistencyMode
|
|
41
55
|
});
|
|
42
56
|
const secondaryActionComponents = React.useMemo(() => {
|
|
43
57
|
if (secondaryActions.length === 0) {
|
|
@@ -55,15 +69,46 @@ export const AutoPatternsCollectionPageContent = () => {
|
|
|
55
69
|
}));
|
|
56
70
|
}, [secondaryActions, context == null ? void 0 : context.actions]);
|
|
57
71
|
return /*#__PURE__*/React.createElement(Table, {
|
|
72
|
+
search: (search == null ? void 0 : search.shown) !== false,
|
|
73
|
+
title: toolbarTitle && /*#__PURE__*/React.createElement(ToolbarTitle, {
|
|
74
|
+
title: toolbarTitle.title,
|
|
75
|
+
subtitle: {
|
|
76
|
+
text: ((_toolbarTitle$subtitl = toolbarTitle.subtitle) == null ? void 0 : _toolbarTitle$subtitl.text) ?? '',
|
|
77
|
+
learnMore: (_toolbarTitle$subtitl2 = toolbarTitle.subtitle) == null ? void 0 : _toolbarTitle$subtitl2.learnMore,
|
|
78
|
+
info: ((_toolbarTitle$subtitl3 = toolbarTitle.subtitle) == null ? void 0 : _toolbarTitle$subtitl3.info) && {
|
|
79
|
+
content: /*#__PURE__*/React.createElement(Box, {
|
|
80
|
+
direction: "vertical",
|
|
81
|
+
gap: "6px"
|
|
82
|
+
}, /*#__PURE__*/React.createElement(Text, {
|
|
83
|
+
dataHook: "toolbar-title-subtitle-info-content",
|
|
84
|
+
light: true,
|
|
85
|
+
size: "small"
|
|
86
|
+
}, (_toolbarTitle$subtitl4 = toolbarTitle.subtitle) == null || (_toolbarTitle$subtitl4 = _toolbarTitle$subtitl4.info) == null ? void 0 : _toolbarTitle$subtitl4.content.text), ((_toolbarTitle$subtitl5 = toolbarTitle.subtitle) == null || (_toolbarTitle$subtitl5 = _toolbarTitle$subtitl5.info) == null ? void 0 : _toolbarTitle$subtitl5.content.link) && /*#__PURE__*/React.createElement(TextButton, {
|
|
87
|
+
dataHook: "toolbar-title-subtitle-info-link",
|
|
88
|
+
size: "small",
|
|
89
|
+
underline: "always",
|
|
90
|
+
skin: "light",
|
|
91
|
+
as: "a",
|
|
92
|
+
rel: "noopener",
|
|
93
|
+
target: "_blank",
|
|
94
|
+
href: (_toolbarTitle$subtitl6 = toolbarTitle.subtitle) == null || (_toolbarTitle$subtitl6 = _toolbarTitle$subtitl6.info) == null ? void 0 : _toolbarTitle$subtitl6.content.link.url
|
|
95
|
+
}, (_toolbarTitle$subtitl7 = toolbarTitle.subtitle) == null || (_toolbarTitle$subtitl7 = _toolbarTitle$subtitl7.info) == null ? void 0 : _toolbarTitle$subtitl7.content.link.label))
|
|
96
|
+
}
|
|
97
|
+
},
|
|
98
|
+
itemsLimit: toolbarTitle.itemsLimit,
|
|
99
|
+
showTotal: toolbarTitle.showTotal
|
|
100
|
+
}),
|
|
58
101
|
dataHook: "auto-patterns-table",
|
|
59
102
|
state: tableState,
|
|
60
103
|
columns: columns,
|
|
61
104
|
views: views,
|
|
62
105
|
dataExtension: dataExtension,
|
|
106
|
+
customColumns: customColumns,
|
|
63
107
|
actionCell: item => ({
|
|
64
108
|
secondaryActions: secondaryActionComponents == null ? void 0 : secondaryActionComponents.map(action => action(item))
|
|
65
109
|
}),
|
|
66
|
-
filters: components.length > 0 ? /*#__PURE__*/React.createElement(CollectionToolbarFilters,
|
|
110
|
+
filters: components.length > 0 ? /*#__PURE__*/React.createElement(CollectionToolbarFilters, collectionToolbarFiltersProps, components) : undefined,
|
|
111
|
+
emptyState: emptyState
|
|
67
112
|
});
|
|
68
113
|
};
|
|
69
114
|
//# sourceMappingURL=AutoPatternsCollectionPageContent.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","CollectionToolbarFilters","Table","useTableCollection","useTableProps","usePatternsWizardOverridesContext","useConfig","Edit","AutoPatternsCollectionPageContent","config","page","pageTitle","collectionId","
|
|
1
|
+
{"version":3,"names":["React","CollectionToolbarFilters","Table","ToolbarTitle","useTableCollection","useTableProps","usePatternsWizardOverridesContext","useConfig","Edit","Box","Text","TextButton","AutoPatternsCollectionPageContent","_toolbarTitle$subtitl","_toolbarTitle$subtitl2","_toolbarTitle$subtitl3","_toolbarTitle$subtitl4","_toolbarTitle$subtitl5","_toolbarTitle$subtitl6","_toolbarTitle$subtitl7","config","page","pageTitle","collectionId","actions","secondaryActions","search","toolbarTitle","limit","persistQueryToUrl","disableAutoSelectAllCount","selectionConsistencyMode","context","columns","views","dataExtension","customColumns","filters","components","collectionToolbarFiltersProps","emptyState","fetchData","tableState","queryName","text","itemKey","item","_id","itemName","schema","displayField","toExtendedFields","extendedFields","fetchErrorMessage","_ref","err","String","secondaryActionComponents","useMemo","length","undefined","map","action","icon","createElement","onClick","_context$actions","_context$actions$acti","id","call","shown","title","subtitle","learnMore","info","content","direction","gap","dataHook","light","size","link","underline","skin","as","rel","target","href","url","label","itemsLimit","showTotal","state","actionCell"],"sources":["../../../../src/components/AutoPatternsCollectionPageContent/AutoPatternsCollectionPageContent.tsx"],"sourcesContent":["import React from 'react';\nimport {\n CollectionToolbarFilters,\n Table,\n ToolbarTitle,\n useTableCollection,\n} from '@wix/patterns';\nimport { useTableProps } from '../../hooks';\nimport { usePatternsWizardOverridesContext, useConfig } from '../../providers';\nimport { Edit } from '@wix/wix-ui-icons-common';\nimport { Box, Text, TextButton } from '@wix/design-system';\n\nexport const AutoPatternsCollectionPageContent: React.FC = () => {\n const config = useConfig();\n\n const {\n page: {\n pageTitle,\n collectionId,\n actions: secondaryActions = [],\n search,\n toolbarTitle,\n limit,\n persistQueryToUrl,\n disableAutoSelectAllCount,\n selectionConsistencyMode,\n },\n } = config;\n const context = usePatternsWizardOverridesContext();\n\n const {\n columns,\n views,\n dataExtension,\n customColumns,\n filters: { filters, components, collectionToolbarFiltersProps },\n emptyState,\n fetchData,\n } = useTableProps();\n\n const tableState = useTableCollection<any>({\n queryName: `${collectionId}-${pageTitle.text}`,\n itemKey: (item) => item._id, // Should be taken from some CMS extractor to avoid hardcoding\n itemName: (item) => item[config.schema.displayField],\n filters,\n toExtendedFields: (item) => item.extendedFields,\n fetchErrorMessage: ({ err }) => String(err),\n fetchData,\n limit,\n persistQueryToUrl,\n disableAutoSelectAllCount,\n selectionConsistencyMode,\n });\n\n const secondaryActionComponents = React.useMemo(() => {\n if (secondaryActions.length === 0) {\n return undefined;\n }\n\n return secondaryActions.map((action) => (item: any) => ({\n icon: <Edit />,\n text: action.text,\n onClick: () => {\n context?.actions?.[action.id]?.({ item });\n },\n }));\n }, [secondaryActions, context?.actions]);\n return (\n <Table\n search={search?.shown !== false}\n title={\n toolbarTitle && (\n <ToolbarTitle\n title={toolbarTitle.title}\n subtitle={{\n text: toolbarTitle.subtitle?.text ?? '',\n learnMore: toolbarTitle.subtitle?.learnMore,\n info: toolbarTitle.subtitle?.info && {\n content: (\n <Box direction=\"vertical\" gap=\"6px\">\n <Text\n dataHook=\"toolbar-title-subtitle-info-content\"\n light\n size=\"small\"\n >\n {toolbarTitle.subtitle?.info?.content.text}\n </Text>\n {toolbarTitle.subtitle?.info?.content.link && (\n <TextButton\n dataHook=\"toolbar-title-subtitle-info-link\"\n size=\"small\"\n underline=\"always\"\n skin=\"light\"\n as=\"a\"\n rel=\"noopener\"\n target=\"_blank\"\n href={toolbarTitle.subtitle?.info?.content.link.url}\n >\n {toolbarTitle.subtitle?.info?.content.link.label}\n </TextButton>\n )}\n </Box>\n ),\n },\n }}\n itemsLimit={toolbarTitle.itemsLimit}\n showTotal={toolbarTitle.showTotal}\n />\n )\n }\n dataHook=\"auto-patterns-table\"\n state={tableState}\n columns={columns}\n views={views}\n dataExtension={dataExtension}\n customColumns={customColumns}\n actionCell={(item) => ({\n secondaryActions: secondaryActionComponents?.map((action) =>\n action(item),\n ),\n })}\n filters={\n components.length > 0 ? (\n <CollectionToolbarFilters {...collectionToolbarFiltersProps}>\n {components}\n </CollectionToolbarFilters>\n ) : undefined\n }\n emptyState={emptyState}\n />\n );\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +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,
|
|
1
|
+
{"version":3,"names":["getCmsCompositeConfig","getCompositeConfig","config","entityTypeSource","Error"],"sources":["../../../src/config/ConfigFactory.ts"],"sourcesContent":["import { PageConfig } from '../types';\nimport { getCmsCompositeConfig } from './cms/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,0BAA0B;AAGhE,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,70 @@
|
|
|
1
|
+
import { collections, items } from '@wix/data';
|
|
2
|
+
import { addFiltersToDataQuery, addSearchToDataQuery } from './filterUtils';
|
|
3
|
+
import { addSortToDataQuery } from './sortUtils';
|
|
4
|
+
export const CmsColumnTypeToPatternsColumnType = {
|
|
5
|
+
[collections.Type.TEXT]: 'STRING',
|
|
6
|
+
[collections.Type.ARRAY]: 'ARRAY',
|
|
7
|
+
[collections.Type.DATE]: 'DATE',
|
|
8
|
+
[collections.Type.DATETIME]: 'DATETIME',
|
|
9
|
+
[collections.Type.NUMBER]: 'NUMBER',
|
|
10
|
+
[collections.Type.BOOLEAN]: 'BOOLEAN'
|
|
11
|
+
};
|
|
12
|
+
export async function fetchCmsSchema(config) {
|
|
13
|
+
const schema = await collections.getDataCollection(config.collectionId);
|
|
14
|
+
return {
|
|
15
|
+
displayField: schema.displayField ?? '_id',
|
|
16
|
+
fields: schema.fields.reduce((acc, field) => {
|
|
17
|
+
var _field$capabilities, _field$capabilities2;
|
|
18
|
+
if (!field.key) {
|
|
19
|
+
return acc;
|
|
20
|
+
}
|
|
21
|
+
acc[field.key] = {
|
|
22
|
+
id: field.key,
|
|
23
|
+
type: field.type ? CmsColumnTypeToPatternsColumnType[field.type] || 'STRING' : 'STRING',
|
|
24
|
+
displayName: field.displayName || '',
|
|
25
|
+
capabilities: {
|
|
26
|
+
supportedQueryOperators: ((_field$capabilities = field.capabilities) == null ? void 0 : _field$capabilities.queryOperators) || [],
|
|
27
|
+
sortable: ((_field$capabilities2 = field.capabilities) == null ? void 0 : _field$capabilities2.sortable) || false
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
return acc;
|
|
31
|
+
}, {})
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
export async function getCmsCompositeConfig(config) {
|
|
35
|
+
const schema = await fetchCmsSchema(config);
|
|
36
|
+
const collection = {
|
|
37
|
+
fetchData: async query => {
|
|
38
|
+
let dataQuery = items.query(config.collectionId);
|
|
39
|
+
dataQuery = addSearchToDataQuery({
|
|
40
|
+
dataQuery,
|
|
41
|
+
query,
|
|
42
|
+
schema,
|
|
43
|
+
columns: config.columns
|
|
44
|
+
});
|
|
45
|
+
dataQuery = addFiltersToDataQuery({
|
|
46
|
+
dataQuery,
|
|
47
|
+
query,
|
|
48
|
+
schema
|
|
49
|
+
});
|
|
50
|
+
dataQuery = addSortToDataQuery({
|
|
51
|
+
dataQuery,
|
|
52
|
+
query,
|
|
53
|
+
schema
|
|
54
|
+
});
|
|
55
|
+
const res = await dataQuery.skip(query.offset).limit(query.limit).find({
|
|
56
|
+
returnTotalCount: true
|
|
57
|
+
});
|
|
58
|
+
return {
|
|
59
|
+
items: res.items,
|
|
60
|
+
total: res.totalCount
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
return {
|
|
65
|
+
page: config,
|
|
66
|
+
schema,
|
|
67
|
+
collection
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=CmsCompositeConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["collections","items","addFiltersToDataQuery","addSearchToDataQuery","addSortToDataQuery","CmsColumnTypeToPatternsColumnType","Type","TEXT","ARRAY","DATE","DATETIME","NUMBER","BOOLEAN","fetchCmsSchema","config","schema","getDataCollection","collectionId","displayField","fields","reduce","acc","field","_field$capabilities","_field$capabilities2","key","id","type","displayName","capabilities","supportedQueryOperators","queryOperators","sortable","getCmsCompositeConfig","collection","fetchData","query","dataQuery","columns","res","skip","offset","limit","find","returnTotalCount","total","totalCount","page"],"sources":["../../../../src/config/cms/CmsCompositeConfig.ts"],"sourcesContent":["import {\n Field,\n PageConfig,\n SchemaConfig,\n PatternsColumnType,\n} from '../../types';\nimport { collections, items } from '@wix/data';\nimport { CompositeConfig } from '../CompositeConfig';\nimport { ComputedQuery } from '@wix/patterns';\nimport { addFiltersToDataQuery, addSearchToDataQuery } from './filterUtils';\nimport { addSortToDataQuery } from './sortUtils';\n\nexport const CmsColumnTypeToPatternsColumnType: Partial<\n Record<collections.Type, PatternsColumnType>\n> = {\n [collections.Type.TEXT]: 'STRING',\n [collections.Type.ARRAY]: 'ARRAY',\n [collections.Type.DATE]: 'DATE',\n [collections.Type.DATETIME]: 'DATETIME',\n [collections.Type.NUMBER]: 'NUMBER',\n [collections.Type.BOOLEAN]: 'BOOLEAN',\n};\n\nexport async function fetchCmsSchema(\n config: PageConfig,\n): Promise<SchemaConfig> {\n const schema = await collections.getDataCollection(config.collectionId);\n\n return {\n displayField: schema.displayField ?? '_id',\n fields: schema.fields.reduce((acc, field) => {\n if (!field.key) {\n return acc;\n }\n\n acc[field.key] = {\n id: field.key,\n type: field.type\n ? CmsColumnTypeToPatternsColumnType[field.type] || 'STRING'\n : 'STRING',\n displayName: field.displayName || '',\n capabilities: {\n supportedQueryOperators: field.capabilities?.queryOperators || [],\n sortable: field.capabilities?.sortable || false,\n },\n };\n\n return acc;\n }, {} as Record<string, Field>),\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 dataQuery = addSearchToDataQuery({\n dataQuery,\n query,\n schema,\n columns: config.columns,\n });\n dataQuery = addFiltersToDataQuery({\n dataQuery,\n query,\n schema,\n });\n dataQuery = addSortToDataQuery({\n dataQuery,\n query,\n schema,\n });\n const res = await dataQuery\n .skip(query.offset)\n .limit(query.limit)\n .find({ returnTotalCount: true });\n\n return {\n items: res.items,\n total: res.totalCount,\n };\n },\n };\n\n return { page: config, schema, collection };\n}\n"],"mappings":"AAMA,SAASA,WAAW,EAAEC,KAAK,QAAQ,WAAW;AAG9C,SAASC,qBAAqB,EAAEC,oBAAoB,QAAQ,eAAe;AAC3E,SAASC,kBAAkB,QAAQ,aAAa;AAEhD,OAAO,MAAMC,iCAEZ,GAAG;EACF,CAACL,WAAW,CAACM,IAAI,CAACC,IAAI,GAAG,QAAQ;EACjC,CAACP,WAAW,CAACM,IAAI,CAACE,KAAK,GAAG,OAAO;EACjC,CAACR,WAAW,CAACM,IAAI,CAACG,IAAI,GAAG,MAAM;EAC/B,CAACT,WAAW,CAACM,IAAI,CAACI,QAAQ,GAAG,UAAU;EACvC,CAACV,WAAW,CAACM,IAAI,CAACK,MAAM,GAAG,QAAQ;EACnC,CAACX,WAAW,CAACM,IAAI,CAACM,OAAO,GAAG;AAC9B,CAAC;AAED,OAAO,eAAeC,cAAcA,CAClCC,MAAkB,EACK;EACvB,MAAMC,MAAM,GAAG,MAAMf,WAAW,CAACgB,iBAAiB,CAACF,MAAM,CAACG,YAAY,CAAC;EAEvE,OAAO;IACLC,YAAY,EAAEH,MAAM,CAACG,YAAY,IAAI,KAAK;IAC1CC,MAAM,EAAEJ,MAAM,CAACI,MAAM,CAACC,MAAM,CAAC,CAACC,GAAG,EAAEC,KAAK,KAAK;MAAA,IAAAC,mBAAA,EAAAC,oBAAA;MAC3C,IAAI,CAACF,KAAK,CAACG,GAAG,EAAE;QACd,OAAOJ,GAAG;MACZ;MAEAA,GAAG,CAACC,KAAK,CAACG,GAAG,CAAC,GAAG;QACfC,EAAE,EAAEJ,KAAK,CAACG,GAAG;QACbE,IAAI,EAAEL,KAAK,CAACK,IAAI,GACZtB,iCAAiC,CAACiB,KAAK,CAACK,IAAI,CAAC,IAAI,QAAQ,GACzD,QAAQ;QACZC,WAAW,EAAEN,KAAK,CAACM,WAAW,IAAI,EAAE;QACpCC,YAAY,EAAE;UACZC,uBAAuB,EAAE,EAAAP,mBAAA,GAAAD,KAAK,CAACO,YAAY,qBAAlBN,mBAAA,CAAoBQ,cAAc,KAAI,EAAE;UACjEC,QAAQ,EAAE,EAAAR,oBAAA,GAAAF,KAAK,CAACO,YAAY,qBAAlBL,oBAAA,CAAoBQ,QAAQ,KAAI;QAC5C;MACF,CAAC;MAED,OAAOX,GAAG;IACZ,CAAC,EAAE,CAAC,CAA0B;EAChC,CAAC;AACH;AAEA,OAAO,eAAeY,qBAAqBA,CACzCnB,MAAkB,EACQ;EAC1B,MAAMC,MAAM,GAAG,MAAMF,cAAc,CAACC,MAAM,CAAC;EAE3C,MAAMoB,UAAU,GAAG;IACjBC,SAAS,EAAE,MAAOC,KAAyB,IAAK;MAC9C,IAAIC,SAAS,GAAGpC,KAAK,CAACmC,KAAK,CAACtB,MAAM,CAACG,YAAY,CAAC;MAChDoB,SAAS,GAAGlC,oBAAoB,CAAC;QAC/BkC,SAAS;QACTD,KAAK;QACLrB,MAAM;QACNuB,OAAO,EAAExB,MAAM,CAACwB;MAClB,CAAC,CAAC;MACFD,SAAS,GAAGnC,qBAAqB,CAAC;QAChCmC,SAAS;QACTD,KAAK;QACLrB;MACF,CAAC,CAAC;MACFsB,SAAS,GAAGjC,kBAAkB,CAAC;QAC7BiC,SAAS;QACTD,KAAK;QACLrB;MACF,CAAC,CAAC;MACF,MAAMwB,GAAG,GAAG,MAAMF,SAAS,CACxBG,IAAI,CAACJ,KAAK,CAACK,MAAM,CAAC,CAClBC,KAAK,CAACN,KAAK,CAACM,KAAK,CAAC,CAClBC,IAAI,CAAC;QAAEC,gBAAgB,EAAE;MAAK,CAAC,CAAC;MAEnC,OAAO;QACL3C,KAAK,EAAEsC,GAAG,CAACtC,KAAK;QAChB4C,KAAK,EAAEN,GAAG,CAACO;MACb,CAAC;IACH;EACF,CAAC;EAED,OAAO;IAAEC,IAAI,EAAEjC,MAAM;IAAEC,MAAM;IAAEmB;EAAW,CAAC;AAC7C","ignoreList":[]}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { 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 prop in FilterPropToMethod;
|
|
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[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 function addFiltersToDataQuery(_ref) {
|
|
29
|
+
let {
|
|
30
|
+
dataQuery,
|
|
31
|
+
query,
|
|
32
|
+
schema
|
|
33
|
+
} = _ref;
|
|
34
|
+
let dataQueryWithFilters = dataQuery;
|
|
35
|
+
const {
|
|
36
|
+
filters
|
|
37
|
+
} = query;
|
|
38
|
+
for (const fieldKey in filters) {
|
|
39
|
+
const filter = filters[fieldKey];
|
|
40
|
+
if (filter && typeof filter === 'object') {
|
|
41
|
+
const filterObj = filter;
|
|
42
|
+
for (const filterProp in filterObj) {
|
|
43
|
+
const operator = getOperatorForFilter(filterProp);
|
|
44
|
+
if (operator && typeof dataQuery[operator] === 'function' && isSupportedOperator(schema, filterProp, fieldKey)) {
|
|
45
|
+
const value = filterObj[filterProp];
|
|
46
|
+
if (value !== undefined && value !== null) {
|
|
47
|
+
dataQueryWithFilters = dataQueryWithFilters[operator](fieldKey, value);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return dataQueryWithFilters;
|
|
54
|
+
}
|
|
55
|
+
export function addSearchToDataQuery(_ref2) {
|
|
56
|
+
let {
|
|
57
|
+
dataQuery,
|
|
58
|
+
query,
|
|
59
|
+
schema,
|
|
60
|
+
columns
|
|
61
|
+
} = _ref2;
|
|
62
|
+
const searchableFields = Object.keys(schema.fields).filter(key => {
|
|
63
|
+
const field = schema.fields[key];
|
|
64
|
+
const column = columns.find(col => col.id === key);
|
|
65
|
+
return column && field && field.type === 'STRING';
|
|
66
|
+
});
|
|
67
|
+
if (query.search && searchableFields.length > 0) {
|
|
68
|
+
let searchFilter = null;
|
|
69
|
+
searchableFields.forEach(field => {
|
|
70
|
+
const currentFilter = items.filter().contains(field, query.search);
|
|
71
|
+
searchFilter = searchFilter ? searchFilter.or(currentFilter) : currentFilter;
|
|
72
|
+
});
|
|
73
|
+
if (searchFilter) {
|
|
74
|
+
dataQuery = dataQuery.and(searchFilter);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return dataQuery;
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=filterUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["items","FilterPropToOperator","FilterPropToMethod","from","to","isValidFilterProp","prop","getOperatorForFilter","undefined","isSupportedOperator","schema","filterProp","filterKey","field","fields","operator","supportedOperators","capabilities","supportedQueryOperators","includes","addFiltersToDataQuery","_ref","dataQuery","query","dataQueryWithFilters","filters","fieldKey","filter","filterObj","value","addSearchToDataQuery","_ref2","columns","searchableFields","Object","keys","key","column","find","col","id","type","search","length","searchFilter","forEach","currentFilter","contains","or","and"],"sources":["../../../../src/config/cms/filterUtils.ts"],"sourcesContent":["import { ComputedQuery } from '@wix/patterns';\nimport { items } from '@wix/data';\nimport { Column, SchemaConfig } from '../../types';\nimport { FilterProp, FilterPropToOperator } from '../constants';\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 prop in FilterPropToMethod;\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[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 function addFiltersToDataQuery({\n dataQuery,\n query,\n schema,\n}: {\n dataQuery: items.WixDataQuery;\n query: ComputedQuery<any>;\n schema: SchemaConfig;\n}) {\n let dataQueryWithFilters = dataQuery;\n const { filters } = query;\n for (const fieldKey in filters) {\n const filter = filters[fieldKey];\n if (filter && typeof filter === 'object') {\n const filterObj = filter as Record<string, any>;\n for (const filterProp in filterObj) {\n const operator = getOperatorForFilter(filterProp);\n if (\n operator &&\n typeof dataQuery[operator] === 'function' &&\n isSupportedOperator(schema, filterProp, fieldKey)\n ) {\n const value = filterObj[filterProp];\n if (value !== undefined && value !== null) {\n dataQueryWithFilters = dataQueryWithFilters[operator](\n fieldKey,\n value,\n );\n }\n }\n }\n }\n }\n\n return dataQueryWithFilters;\n}\n\nexport function addSearchToDataQuery({\n dataQuery,\n query,\n schema,\n columns,\n}: {\n dataQuery: items.WixDataQuery;\n query: ComputedQuery<any>;\n schema: SchemaConfig;\n columns: Column[];\n}) {\n const searchableFields = Object.keys(schema.fields).filter((key) => {\n const field = schema.fields[key];\n const column = columns.find((col) => col.id === key);\n\n return column && field && field.type === 'STRING';\n });\n\n if (query.search && searchableFields.length > 0) {\n let searchFilter: items.WixDataFilter | null = null;\n\n searchableFields.forEach((field) => {\n const currentFilter = items.filter().contains(field, query.search!);\n searchFilter = searchFilter\n ? searchFilter.or(currentFilter)\n : currentFilter;\n });\n\n if (searchFilter) {\n dataQuery = dataQuery.and(searchFilter);\n }\n }\n\n return dataQuery;\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export function addSortToDataQuery(_ref) {
|
|
2
|
+
let {
|
|
3
|
+
dataQuery,
|
|
4
|
+
query,
|
|
5
|
+
schema
|
|
6
|
+
} = _ref;
|
|
7
|
+
let dataQueryWithSort = dataQuery;
|
|
8
|
+
const {
|
|
9
|
+
sort
|
|
10
|
+
} = query;
|
|
11
|
+
sort == null || sort.forEach(sortField => {
|
|
12
|
+
const {
|
|
13
|
+
fieldName,
|
|
14
|
+
order
|
|
15
|
+
} = sortField;
|
|
16
|
+
if (fieldName && order) {
|
|
17
|
+
const fieldDefinition = schema.fields[fieldName];
|
|
18
|
+
if (fieldDefinition != null && fieldDefinition.capabilities.sortable) {
|
|
19
|
+
if (order === 'asc') {
|
|
20
|
+
dataQueryWithSort = dataQueryWithSort.ascending(fieldName);
|
|
21
|
+
} else if (order === 'desc') {
|
|
22
|
+
dataQueryWithSort = dataQueryWithSort.descending(fieldName);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
return dataQueryWithSort;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=sortUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["addSortToDataQuery","_ref","dataQuery","query","schema","dataQueryWithSort","sort","forEach","sortField","fieldName","order","fieldDefinition","fields","capabilities","sortable","ascending","descending"],"sources":["../../../../src/config/cms/sortUtils.ts"],"sourcesContent":["import { items } from '@wix/data';\nimport { SchemaConfig } from '../../types';\nimport { ComputedQuery } from '@wix/patterns';\n\nexport function addSortToDataQuery({\n dataQuery,\n query,\n schema,\n}: {\n dataQuery: items.WixDataQuery;\n query: ComputedQuery<any>;\n schema: SchemaConfig;\n}) {\n let dataQueryWithSort = dataQuery;\n const { sort } = query;\n sort?.forEach((sortField) => {\n const { fieldName, order } = sortField;\n if (fieldName && order) {\n const fieldDefinition = schema.fields[fieldName];\n if (fieldDefinition?.capabilities.sortable) {\n if (order === 'asc') {\n dataQueryWithSort = dataQueryWithSort.ascending(fieldName);\n } else if (order === 'desc') {\n dataQueryWithSort = dataQueryWithSort.descending(fieldName);\n }\n }\n }\n });\n\n return dataQueryWithSort;\n}\n"],"mappings":"AAIA,OAAO,SAASA,kBAAkBA,CAAAC,IAAA,EAQ/B;EAAA,IARgC;IACjCC,SAAS;IACTC,KAAK;IACLC;EAKF,CAAC,GAAAH,IAAA;EACC,IAAII,iBAAiB,GAAGH,SAAS;EACjC,MAAM;IAAEI;EAAK,CAAC,GAAGH,KAAK;EACtBG,IAAI,YAAJA,IAAI,CAAEC,OAAO,CAAEC,SAAS,IAAK;IAC3B,MAAM;MAAEC,SAAS;MAAEC;IAAM,CAAC,GAAGF,SAAS;IACtC,IAAIC,SAAS,IAAIC,KAAK,EAAE;MACtB,MAAMC,eAAe,GAAGP,MAAM,CAACQ,MAAM,CAACH,SAAS,CAAC;MAChD,IAAIE,eAAe,YAAfA,eAAe,CAAEE,YAAY,CAACC,QAAQ,EAAE;QAC1C,IAAIJ,KAAK,KAAK,KAAK,EAAE;UACnBL,iBAAiB,GAAGA,iBAAiB,CAACU,SAAS,CAACN,SAAS,CAAC;QAC5D,CAAC,MAAM,IAAIC,KAAK,KAAK,MAAM,EAAE;UAC3BL,iBAAiB,GAAGA,iBAAiB,CAACW,UAAU,CAACP,SAAS,CAAC;QAC7D;MACF;IACF;EACF,CAAC,CAAC;EAEF,OAAOJ,iBAAiB;AAC1B","ignoreList":[]}
|