@wix/auto-patterns 1.2.0 → 1.3.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.
Files changed (86) hide show
  1. package/dist/cjs/components/AutoPatternsCollectionPage/AutoPatternsCollectionPage.js +31 -7
  2. package/dist/cjs/components/AutoPatternsCollectionPage/AutoPatternsCollectionPage.js.map +1 -1
  3. package/dist/cjs/components/AutoPatternsCollectionPageContent/AutoPatternsCollectionPageContent.js +83 -12
  4. package/dist/cjs/components/AutoPatternsCollectionPageContent/AutoPatternsCollectionPageContent.js.map +1 -1
  5. package/dist/cjs/config/ConfigFactory.js +1 -1
  6. package/dist/cjs/config/ConfigFactory.js.map +1 -1
  7. package/dist/cjs/config/cms/CmsCompositeConfig.js +75 -0
  8. package/dist/cjs/config/cms/CmsCompositeConfig.js.map +1 -0
  9. package/dist/cjs/config/cms/filterUtils.js +82 -0
  10. package/dist/cjs/config/cms/filterUtils.js.map +1 -0
  11. package/dist/cjs/config/cms/sortUtils.js +32 -0
  12. package/dist/cjs/config/cms/sortUtils.js.map +1 -0
  13. package/dist/cjs/hooks/useColumns.js +98 -19
  14. package/dist/cjs/hooks/useColumns.js.map +1 -1
  15. package/dist/cjs/hooks/useEmptyStates.js +55 -0
  16. package/dist/cjs/hooks/useEmptyStates.js.map +1 -0
  17. package/dist/cjs/hooks/useFeatures.js +10 -1
  18. package/dist/cjs/hooks/useFeatures.js.map +1 -1
  19. package/dist/cjs/hooks/useFetchData.js +23 -0
  20. package/dist/cjs/hooks/useFetchData.js.map +1 -0
  21. package/dist/cjs/hooks/useFilters.js +103 -78
  22. package/dist/cjs/hooks/useFilters.js.map +1 -1
  23. package/dist/cjs/hooks/useTableProps.js +13 -1
  24. package/dist/cjs/hooks/useTableProps.js.map +1 -1
  25. package/dist/cjs/providers/PatternsWizardOverridesContext.js +1 -1
  26. package/dist/cjs/providers/PatternsWizardOverridesContext.js.map +1 -1
  27. package/dist/cjs/types.js +1 -9
  28. package/dist/cjs/types.js.map +1 -1
  29. package/dist/esm/components/AutoPatternsCollectionPage/AutoPatternsCollectionPage.js +10 -3
  30. package/dist/esm/components/AutoPatternsCollectionPage/AutoPatternsCollectionPage.js.map +1 -1
  31. package/dist/esm/components/AutoPatternsCollectionPageContent/AutoPatternsCollectionPageContent.js +55 -9
  32. package/dist/esm/components/AutoPatternsCollectionPageContent/AutoPatternsCollectionPageContent.js.map +1 -1
  33. package/dist/esm/config/ConfigFactory.js +1 -1
  34. package/dist/esm/config/ConfigFactory.js.map +1 -1
  35. package/dist/esm/config/cms/CmsCompositeConfig.js +69 -0
  36. package/dist/esm/config/cms/CmsCompositeConfig.js.map +1 -0
  37. package/dist/esm/config/cms/filterUtils.js +79 -0
  38. package/dist/esm/config/cms/filterUtils.js.map +1 -0
  39. package/dist/esm/config/cms/sortUtils.js +29 -0
  40. package/dist/esm/config/cms/sortUtils.js.map +1 -0
  41. package/dist/esm/hooks/useColumns.js +98 -19
  42. package/dist/esm/hooks/useColumns.js.map +1 -1
  43. package/dist/esm/hooks/useEmptyStates.js +41 -0
  44. package/dist/esm/hooks/useEmptyStates.js.map +1 -0
  45. package/dist/esm/hooks/useFeatures.js +4 -2
  46. package/dist/esm/hooks/useFeatures.js.map +1 -1
  47. package/dist/esm/hooks/useFetchData.js +18 -0
  48. package/dist/esm/hooks/useFetchData.js.map +1 -0
  49. package/dist/esm/hooks/useFilters.js +101 -76
  50. package/dist/esm/hooks/useFilters.js.map +1 -1
  51. package/dist/esm/hooks/useTableProps.js +13 -1
  52. package/dist/esm/hooks/useTableProps.js.map +1 -1
  53. package/dist/esm/providers/PatternsWizardOverridesContext.js +1 -1
  54. package/dist/esm/providers/PatternsWizardOverridesContext.js.map +1 -1
  55. package/dist/esm/types.js +0 -8
  56. package/dist/esm/types.js.map +1 -1
  57. package/dist/types/components/AutoPatternsCollectionPage/AutoPatternsCollectionPage.d.ts.map +1 -1
  58. package/dist/types/components/AutoPatternsCollectionPageContent/AutoPatternsCollectionPageContent.d.ts.map +1 -1
  59. package/dist/types/config/cms/CmsCompositeConfig.d.ts +7 -0
  60. package/dist/types/config/cms/CmsCompositeConfig.d.ts.map +1 -0
  61. package/dist/types/config/cms/filterUtils.d.ts +16 -0
  62. package/dist/types/config/cms/filterUtils.d.ts.map +1 -0
  63. package/dist/types/config/cms/sortUtils.d.ts +9 -0
  64. package/dist/types/config/cms/sortUtils.d.ts.map +1 -0
  65. package/dist/types/hooks/useColumns.d.ts.map +1 -1
  66. package/dist/types/hooks/useEmptyStates.d.ts +5 -0
  67. package/dist/types/hooks/useEmptyStates.d.ts.map +1 -0
  68. package/dist/types/hooks/useFeatures.d.ts +1 -0
  69. package/dist/types/hooks/useFeatures.d.ts.map +1 -1
  70. package/dist/types/hooks/useFetchData.d.ts +4 -0
  71. package/dist/types/hooks/useFetchData.d.ts.map +1 -0
  72. package/dist/types/hooks/useFilters.d.ts +2 -1
  73. package/dist/types/hooks/useFilters.d.ts.map +1 -1
  74. package/dist/types/hooks/useTableProps.d.ts +9 -4
  75. package/dist/types/hooks/useTableProps.d.ts.map +1 -1
  76. package/dist/types/providers/PatternsWizardOverridesContext.d.ts +7 -2
  77. package/dist/types/providers/PatternsWizardOverridesContext.d.ts.map +1 -1
  78. package/dist/types/types.d.ts +87 -23
  79. package/dist/types/types.d.ts.map +1 -1
  80. package/package.json +14 -14
  81. package/dist/cjs/config/CmsCompositeConfig.js +0 -85
  82. package/dist/cjs/config/CmsCompositeConfig.js.map +0 -1
  83. package/dist/esm/config/CmsCompositeConfig.js +0 -80
  84. package/dist/esm/config/CmsCompositeConfig.js.map +0 -1
  85. package/dist/types/config/CmsCompositeConfig.d.ts +0 -6
  86. package/dist/types/config/CmsCompositeConfig.d.ts.map +0 -1
@@ -16,7 +16,7 @@ const PatternsWizardOverridesProvider = ({
16
16
  __self: void 0,
17
17
  __source: {
18
18
  fileName: _jsxFileName,
19
- lineNumber: 19,
19
+ lineNumber: 29,
20
20
  columnNumber: 5
21
21
  }
22
22
  }, children);
@@ -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 'react';\nimport { IColumnValue, IMenuItem } from '../types';\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}\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;AASpE,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":[]}
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.SupportedValueTypeEnum = exports.ComponentTypeEnum = exports.CollectionTypeEnum = void 0;
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";
@@ -1 +1 @@
1
- {"version":3,"names":["CollectionTypeEnum","exports","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":";;;;IAAYA,kBAAkB,GAAAC,OAAA,CAAAD,kBAAA,0BAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAA,OAAlBA,kBAAkB;AAAA;AAAA,IAMlBE,sBAAsB,GAAAD,OAAA,CAAAC,sBAAA,0BAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAA,OAAtBA,sBAAsB;AAAA;AAAA,IAsBtBC,iBAAiB,GAAAF,OAAA,CAAAE,iBAAA,0BAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAA,OAAjBA,iBAAiB;AAAA,OAkJ7B","ignoreList":[]}
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 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?: 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}\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,OA4L7B","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 height=\"100vh\" dataHook=\"auto-patterns-page\">\n <CollectionPage.Header title={pageTitle} subtitle={pageSubtitle} />\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,MAAM,OAAO;AACzB,SAASC,cAAc,QAAQ,oBAAoB;AACnD,SAASC,iCAAiC,QAAQ,sCAAsC;AACxF,SACEC,iCAAiC,EACjCC,cAAc,QACT,iBAAiB;AAOxB,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,GAAGP,iCAAiC,CAAC,CAAC;EACnD,oBACEH,KAAA,CAAAW,aAAA,CAACP,cAAc;IAACQ,IAAI,EAAEL;EAAc,gBAClCP,KAAA,CAAAW,aAAA,CAACV,cAAc;IAACY,MAAM,EAAC,OAAO;IAACC,QAAQ,EAAC;EAAoB,gBAC1Dd,KAAA,CAAAW,aAAA,CAACV,cAAc,CAACc,MAAM;IAACC,KAAK,EAAER,SAAU;IAACS,QAAQ,EAAER;EAAa,CAAE,CAAC,eACnET,KAAA,CAAAW,aAAA,CAACV,cAAc,CAACiB,OAAO,QACpBR,OAAO,YAAPA,OAAO,CAAES,WAAW,gBAAGnB,KAAA,CAAAW,aAAA,CAACD,OAAO,CAACS,WAAW,MAAE,CAAC,GAAG,IAAI,eACtDnB,KAAA,CAAAW,aAAA,CAACT,iCAAiC,MAAE,CACd,CACV,CACF,CAAC;AAErB,CAAC","ignoreList":[]}
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":[]}
@@ -1,9 +1,11 @@
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: {
@@ -11,22 +13,31 @@ export const AutoPatternsCollectionPageContent = () => {
11
13
  collectionId,
12
14
  entityId,
13
15
  entityName,
14
- actions: secondaryActions = []
15
- },
16
- collection
16
+ actions: secondaryActions = [],
17
+ search,
18
+ toolbarTitle,
19
+ limit,
20
+ persistQueryToUrl,
21
+ disableAutoSelectAllCount,
22
+ selectionConsistencyMode
23
+ }
17
24
  } = config;
18
25
  const context = usePatternsWizardOverridesContext();
19
26
  const {
20
27
  columns,
21
28
  views,
22
29
  dataExtension,
30
+ customColumns,
23
31
  filters: {
24
32
  filters,
25
- components
26
- }
33
+ components,
34
+ collectionToolbarFiltersProps
35
+ },
36
+ emptyState,
37
+ fetchData
27
38
  } = useTableProps();
28
39
  const tableState = useTableCollection({
29
- queryName: `${collectionId}-${pageTitle}`,
40
+ queryName: `${collectionId}-${pageTitle.text}`,
30
41
  itemKey: item => item[`${entityId}`],
31
42
  itemName: item => item[`${entityName}`],
32
43
  filters,
@@ -37,7 +48,11 @@ export const AutoPatternsCollectionPageContent = () => {
37
48
  } = _ref;
38
49
  return String(err);
39
50
  },
40
- ...collection
51
+ fetchData,
52
+ limit,
53
+ persistQueryToUrl,
54
+ disableAutoSelectAllCount,
55
+ selectionConsistencyMode
41
56
  });
42
57
  const secondaryActionComponents = React.useMemo(() => {
43
58
  if (secondaryActions.length === 0) {
@@ -55,15 +70,46 @@ export const AutoPatternsCollectionPageContent = () => {
55
70
  }));
56
71
  }, [secondaryActions, context == null ? void 0 : context.actions]);
57
72
  return /*#__PURE__*/React.createElement(Table, {
73
+ search: (search == null ? void 0 : search.shown) !== false,
74
+ title: toolbarTitle && /*#__PURE__*/React.createElement(ToolbarTitle, {
75
+ title: toolbarTitle.title,
76
+ subtitle: {
77
+ text: ((_toolbarTitle$subtitl = toolbarTitle.subtitle) == null ? void 0 : _toolbarTitle$subtitl.text) ?? '',
78
+ learnMore: (_toolbarTitle$subtitl2 = toolbarTitle.subtitle) == null ? void 0 : _toolbarTitle$subtitl2.learnMore,
79
+ info: ((_toolbarTitle$subtitl3 = toolbarTitle.subtitle) == null ? void 0 : _toolbarTitle$subtitl3.info) && {
80
+ content: /*#__PURE__*/React.createElement(Box, {
81
+ direction: "vertical",
82
+ gap: "6px"
83
+ }, /*#__PURE__*/React.createElement(Text, {
84
+ dataHook: "toolbar-title-subtitle-info-content",
85
+ light: true,
86
+ size: "small"
87
+ }, (_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, {
88
+ dataHook: "toolbar-title-subtitle-info-link",
89
+ size: "small",
90
+ underline: "always",
91
+ skin: "light",
92
+ as: "a",
93
+ rel: "noopener",
94
+ target: "_blank",
95
+ href: (_toolbarTitle$subtitl6 = toolbarTitle.subtitle) == null || (_toolbarTitle$subtitl6 = _toolbarTitle$subtitl6.info) == null ? void 0 : _toolbarTitle$subtitl6.content.link.url
96
+ }, (_toolbarTitle$subtitl7 = toolbarTitle.subtitle) == null || (_toolbarTitle$subtitl7 = _toolbarTitle$subtitl7.info) == null ? void 0 : _toolbarTitle$subtitl7.content.link.label))
97
+ }
98
+ },
99
+ itemsLimit: toolbarTitle.itemsLimit,
100
+ showTotal: toolbarTitle.showTotal
101
+ }),
58
102
  dataHook: "auto-patterns-table",
59
103
  state: tableState,
60
104
  columns: columns,
61
105
  views: views,
62
106
  dataExtension: dataExtension,
107
+ customColumns: customColumns,
63
108
  actionCell: item => ({
64
109
  secondaryActions: secondaryActionComponents == null ? void 0 : secondaryActionComponents.map(action => action(item))
65
110
  }),
66
- filters: components.length > 0 ? /*#__PURE__*/React.createElement(CollectionToolbarFilters, null, components) : undefined
111
+ filters: components.length > 0 ? /*#__PURE__*/React.createElement(CollectionToolbarFilters, collectionToolbarFiltersProps, components) : undefined,
112
+ emptyState: emptyState
67
113
  });
68
114
  };
69
115
  //# sourceMappingURL=AutoPatternsCollectionPageContent.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","CollectionToolbarFilters","Table","useTableCollection","useTableProps","usePatternsWizardOverridesContext","useConfig","Edit","AutoPatternsCollectionPageContent","config","page","pageTitle","collectionId","entityId","entityName","actions","secondaryActions","collection","context","columns","views","dataExtension","filters","components","tableState","queryName","itemKey","item","itemName","toExtendedFields","extendedFields","fetchErrorMessage","_ref","err","String","secondaryActionComponents","useMemo","length","undefined","map","action","icon","createElement","text","onClick","_context$actions","_context$actions$acti","id","call","dataHook","state","actionCell"],"sources":["../../../../src/components/AutoPatternsCollectionPageContent/AutoPatternsCollectionPageContent.tsx"],"sourcesContent":["import React from 'react';\nimport {\n CollectionToolbarFilters,\n Table,\n useTableCollection,\n} from '@wix/patterns';\nimport { useTableProps } from '../../hooks';\nimport { usePatternsWizardOverridesContext, useConfig } from '../../providers';\nimport { Edit } from '@wix/wix-ui-icons-common';\n\nexport const AutoPatternsCollectionPageContent: React.FC = () => {\n const config = useConfig();\n\n const {\n page: {\n pageTitle,\n collectionId,\n entityId,\n entityName,\n actions: secondaryActions = [],\n },\n collection,\n } = config;\n\n const context = usePatternsWizardOverridesContext();\n\n const {\n columns,\n views,\n dataExtension,\n filters: { filters, components },\n } = useTableProps();\n\n const tableState = useTableCollection<any>({\n queryName: `${collectionId}-${pageTitle}`,\n itemKey: (item) => item[`${entityId}`],\n itemName: (item) => item[`${entityName}`],\n filters,\n toExtendedFields: (item) => item.extendedFields,\n fetchErrorMessage: ({ err }) => String(err),\n ...collection,\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\n return (\n <Table\n dataHook=\"auto-patterns-table\"\n state={tableState}\n columns={columns}\n views={views}\n dataExtension={dataExtension}\n actionCell={(item) => ({\n secondaryActions: secondaryActionComponents?.map((action) =>\n action(item),\n ),\n })}\n filters={\n components.length > 0 ? (\n <CollectionToolbarFilters>{components}</CollectionToolbarFilters>\n ) : undefined\n }\n />\n );\n};\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SACEC,wBAAwB,EACxBC,KAAK,EACLC,kBAAkB,QACb,eAAe;AACtB,SAASC,aAAa,QAAQ,aAAa;AAC3C,SAASC,iCAAiC,EAAEC,SAAS,QAAQ,iBAAiB;AAC9E,SAASC,IAAI,QAAQ,0BAA0B;AAE/C,OAAO,MAAMC,iCAA2C,GAAGA,CAAA,KAAM;EAC/D,MAAMC,MAAM,GAAGH,SAAS,CAAC,CAAC;EAE1B,MAAM;IACJI,IAAI,EAAE;MACJC,SAAS;MACTC,YAAY;MACZC,QAAQ;MACRC,UAAU;MACVC,OAAO,EAAEC,gBAAgB,GAAG;IAC9B,CAAC;IACDC;EACF,CAAC,GAAGR,MAAM;EAEV,MAAMS,OAAO,GAAGb,iCAAiC,CAAC,CAAC;EAEnD,MAAM;IACJc,OAAO;IACPC,KAAK;IACLC,aAAa;IACbC,OAAO,EAAE;MAAEA,OAAO;MAAEC;IAAW;EACjC,CAAC,GAAGnB,aAAa,CAAC,CAAC;EAEnB,MAAMoB,UAAU,GAAGrB,kBAAkB,CAAM;IACzCsB,SAAS,EAAE,GAAGb,YAAY,IAAID,SAAS,EAAE;IACzCe,OAAO,EAAGC,IAAI,IAAKA,IAAI,CAAC,GAAGd,QAAQ,EAAE,CAAC;IACtCe,QAAQ,EAAGD,IAAI,IAAKA,IAAI,CAAC,GAAGb,UAAU,EAAE,CAAC;IACzCQ,OAAO;IACPO,gBAAgB,EAAGF,IAAI,IAAKA,IAAI,CAACG,cAAc;IAC/CC,iBAAiB,EAAEC,IAAA;MAAA,IAAC;QAAEC;MAAI,CAAC,GAAAD,IAAA;MAAA,OAAKE,MAAM,CAACD,GAAG,CAAC;IAAA;IAC3C,GAAGhB;EACL,CAAC,CAAC;EAEF,MAAMkB,yBAAyB,GAAGnC,KAAK,CAACoC,OAAO,CAAC,MAAM;IACpD,IAAIpB,gBAAgB,CAACqB,MAAM,KAAK,CAAC,EAAE;MACjC,OAAOC,SAAS;IAClB;IAEA,OAAOtB,gBAAgB,CAACuB,GAAG,CAAEC,MAAM,IAAMb,IAAS,KAAM;MACtDc,IAAI,eAAEzC,KAAA,CAAA0C,aAAA,CAACnC,IAAI,MAAE,CAAC;MACdoC,IAAI,EAAEH,MAAM,CAACG,IAAI;MACjBC,OAAO,EAAEA,CAAA,KAAM;QAAA,IAAAC,gBAAA,EAAAC,qBAAA;QACb5B,OAAO,aAAA2B,gBAAA,GAAP3B,OAAO,CAAEH,OAAO,cAAA+B,qBAAA,GAAhBD,gBAAA,CAAmBL,MAAM,CAACO,EAAE,CAAC,aAA7BD,qBAAA,CAAAE,IAAA,CAAAH,gBAAA,EAAgC;UAAElB;QAAK,CAAC,CAAC;MAC3C;IACF,CAAC,CAAC,CAAC;EACL,CAAC,EAAE,CAACX,gBAAgB,EAAEE,OAAO,oBAAPA,OAAO,CAAEH,OAAO,CAAC,CAAC;EAExC,oBACEf,KAAA,CAAA0C,aAAA,CAACxC,KAAK;IACJ+C,QAAQ,EAAC,qBAAqB;IAC9BC,KAAK,EAAE1B,UAAW;IAClBL,OAAO,EAAEA,OAAQ;IACjBC,KAAK,EAAEA,KAAM;IACbC,aAAa,EAAEA,aAAc;IAC7B8B,UAAU,EAAGxB,IAAI,KAAM;MACrBX,gBAAgB,EAAEmB,yBAAyB,oBAAzBA,yBAAyB,CAAEI,GAAG,CAAEC,MAAM,IACtDA,MAAM,CAACb,IAAI,CACb;IACF,CAAC,CAAE;IACHL,OAAO,EACLC,UAAU,CAACc,MAAM,GAAG,CAAC,gBACnBrC,KAAA,CAAA0C,aAAA,CAACzC,wBAAwB,QAAEsB,UAAqC,CAAC,GAC/De;EACL,CACF,CAAC;AAEN,CAAC","ignoreList":[]}
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","entityId","entityName","actions","secondaryActions","search","toolbarTitle","limit","persistQueryToUrl","disableAutoSelectAllCount","selectionConsistencyMode","context","columns","views","dataExtension","customColumns","filters","components","collectionToolbarFiltersProps","emptyState","fetchData","tableState","queryName","text","itemKey","item","itemName","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 entityId,\n entityName,\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[`${entityId}`],\n itemName: (item) => item[`${entityName}`],\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,4 +1,4 @@
1
- import { getCmsCompositeConfig } from './CmsCompositeConfig';
1
+ import { getCmsCompositeConfig } from './cms/CmsCompositeConfig';
2
2
  export async function getCompositeConfig(config) {
3
3
  if (config.entityTypeSource === 'cms') {
4
4
  return getCmsCompositeConfig(config);
@@ -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,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":[]}
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,69 @@
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
+ fields: schema.fields.reduce((acc, field) => {
16
+ var _field$capabilities, _field$capabilities2;
17
+ if (!field.key) {
18
+ return acc;
19
+ }
20
+ acc[field.key] = {
21
+ id: field.key,
22
+ type: field.type ? CmsColumnTypeToPatternsColumnType[field.type] || 'STRING' : 'STRING',
23
+ displayName: field.displayName || '',
24
+ capabilities: {
25
+ supportedQueryOperators: ((_field$capabilities = field.capabilities) == null ? void 0 : _field$capabilities.queryOperators) || [],
26
+ sortable: ((_field$capabilities2 = field.capabilities) == null ? void 0 : _field$capabilities2.sortable) || false
27
+ }
28
+ };
29
+ return acc;
30
+ }, {})
31
+ };
32
+ }
33
+ export async function getCmsCompositeConfig(config) {
34
+ const schema = await fetchCmsSchema(config);
35
+ const collection = {
36
+ fetchData: async query => {
37
+ let dataQuery = items.query(config.collectionId);
38
+ dataQuery = addSearchToDataQuery({
39
+ dataQuery,
40
+ query,
41
+ schema,
42
+ columns: config.columns
43
+ });
44
+ dataQuery = addFiltersToDataQuery({
45
+ dataQuery,
46
+ query,
47
+ schema
48
+ });
49
+ dataQuery = addSortToDataQuery({
50
+ dataQuery,
51
+ query,
52
+ schema
53
+ });
54
+ const res = await dataQuery.skip(query.offset).limit(query.limit).find({
55
+ returnTotalCount: true
56
+ });
57
+ return {
58
+ items: res.items,
59
+ total: res.totalCount
60
+ };
61
+ }
62
+ };
63
+ return {
64
+ page: config,
65
+ schema,
66
+ collection
67
+ };
68
+ }
69
+ //# 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","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 return {\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":"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","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":[]}