@wix/auto-patterns 1.16.0 → 1.18.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 (65) hide show
  1. package/dist/cjs/components/AutoPatternsRoute/AutoPatternsRoutes.js +4 -4
  2. package/dist/cjs/components/AutoPatternsRoute/AutoPatternsRoutes.js.map +1 -1
  3. package/dist/cjs/dataSourceAdapters/cms/cmsAdapter.js +0 -2
  4. package/dist/cjs/dataSourceAdapters/cms/cmsAdapter.js.map +1 -1
  5. package/dist/cjs/dataSourceAdapters/cms/fetchCmsData.js.map +1 -1
  6. package/dist/cjs/dataSourceAdapters/cms/filterUtils.js.map +1 -1
  7. package/dist/cjs/dataSourceAdapters/cms/sortUtils.js.map +1 -1
  8. package/dist/cjs/hooks/useColumns.js +7 -5
  9. package/dist/cjs/hooks/useColumns.js.map +1 -1
  10. package/dist/cjs/hooks/useNavigationUtils.js +2 -2
  11. package/dist/cjs/hooks/useNavigationUtils.js.map +1 -1
  12. package/dist/cjs/types/actions/base.js.map +1 -1
  13. package/dist/cjs/types/types.js.map +1 -1
  14. package/dist/cjs/utils/actions/resolveAction.js +2 -1
  15. package/dist/cjs/utils/actions/resolveAction.js.map +1 -1
  16. package/dist/cjs/utils/actions/types.js.map +1 -1
  17. package/dist/docs/action_cell.md +20 -1
  18. package/dist/docs/app_config_structure.md +66 -1
  19. package/dist/docs/auto-patterns-guide.md +378 -76
  20. package/dist/docs/bulk_actions.md +1 -1
  21. package/dist/docs/collection_page.md +1 -1
  22. package/dist/docs/config_schema.md +184 -0
  23. package/dist/docs/custom_overrides.md +163 -4
  24. package/dist/docs/index.md +5 -7
  25. package/dist/docs/schema_config.md +174 -0
  26. package/dist/docs/sdk_utilities.md +97 -0
  27. package/dist/docs/wix_fqdn_custom_data_source.md +201 -0
  28. package/dist/esm/components/AutoPatternsRoute/AutoPatternsRoutes.js +1 -1
  29. package/dist/esm/components/AutoPatternsRoute/AutoPatternsRoutes.js.map +1 -1
  30. package/dist/esm/dataSourceAdapters/cms/cmsAdapter.js +0 -2
  31. package/dist/esm/dataSourceAdapters/cms/cmsAdapter.js.map +1 -1
  32. package/dist/esm/dataSourceAdapters/cms/fetchCmsData.js.map +1 -1
  33. package/dist/esm/dataSourceAdapters/cms/filterUtils.js.map +1 -1
  34. package/dist/esm/dataSourceAdapters/cms/sortUtils.js.map +1 -1
  35. package/dist/esm/hooks/useColumns.js +3 -1
  36. package/dist/esm/hooks/useColumns.js.map +1 -1
  37. package/dist/esm/hooks/useNavigationUtils.js +1 -1
  38. package/dist/esm/hooks/useNavigationUtils.js.map +1 -1
  39. package/dist/esm/types/actions/base.js.map +1 -1
  40. package/dist/esm/types/types.js.map +1 -1
  41. package/dist/esm/utils/actions/resolveAction.js +2 -1
  42. package/dist/esm/utils/actions/resolveAction.js.map +1 -1
  43. package/dist/esm/utils/actions/types.js.map +1 -1
  44. package/dist/types/dataSourceAdapters/cms/cmsAdapter.d.ts.map +1 -1
  45. package/dist/types/dataSourceAdapters/cms/fetchCmsData.d.ts +2 -3
  46. package/dist/types/dataSourceAdapters/cms/fetchCmsData.d.ts.map +1 -1
  47. package/dist/types/dataSourceAdapters/cms/filterUtils.d.ts +3 -4
  48. package/dist/types/dataSourceAdapters/cms/filterUtils.d.ts.map +1 -1
  49. package/dist/types/dataSourceAdapters/cms/sortUtils.d.ts +2 -3
  50. package/dist/types/dataSourceAdapters/cms/sortUtils.d.ts.map +1 -1
  51. package/dist/types/hooks/useColumns.d.ts.map +1 -1
  52. package/dist/types/types/actions/base.d.ts +1 -0
  53. package/dist/types/types/actions/base.d.ts.map +1 -1
  54. package/dist/types/types/types.d.ts +13 -3
  55. package/dist/types/types/types.d.ts.map +1 -1
  56. package/dist/types/utils/actions/resolveAction.d.ts +1 -0
  57. package/dist/types/utils/actions/resolveAction.d.ts.map +1 -1
  58. package/dist/types/utils/actions/types.d.ts +1 -0
  59. package/dist/types/utils/actions/types.d.ts.map +1 -1
  60. package/package.json +19 -18
  61. package/dist/docs/recipe-bulk-operations.md +0 -1352
  62. package/dist/docs/recipe-crud-operations.md +0 -786
  63. package/dist/docs/recipe-customization.md +0 -1702
  64. package/dist/docs/recipe-first-dashboard.md +0 -794
  65. package/dist/docs/sdk_and_schema.md +0 -215
@@ -5,7 +5,7 @@ exports.__esModule = true;
5
5
  exports.AutoPatternsRoutes = void 0;
6
6
  var _react = _interopRequireDefault(require("react"));
7
7
  var _hooks = require("../../hooks");
8
- var _patterns = require("@wix/patterns");
8
+ var _router = require("@wix/patterns/router");
9
9
  var _AutoPatternsPage = require("./AutoPatternsPage");
10
10
  var _reactRouterDom = require("react-router-dom");
11
11
  var _jsxFileName = "/home/builduser/work/73d19ce3378ce4dd/packages/auto-patterns/dist/cjs/components/AutoPatternsRoute/AutoPatternsRoutes.tsx";
@@ -25,7 +25,7 @@ const AutoPatternsRoutes = ({
25
25
  if (!routePath) {
26
26
  return null;
27
27
  }
28
- return /*#__PURE__*/_react.default.createElement(_patterns.PatternsReactRoute, {
28
+ return /*#__PURE__*/_react.default.createElement(_router.PatternsReactRoute, {
29
29
  key: page.id,
30
30
  type: pageTypeToRouteType[page.type] ?? 'other',
31
31
  path: routePath,
@@ -49,7 +49,7 @@ const AutoPatternsRoutes = ({
49
49
  if (mainPage) {
50
50
  const mainPagePath = getPagePath(mainPage.id);
51
51
  if (mainPagePath) {
52
- routes.push(/*#__PURE__*/_react.default.createElement(_patterns.PatternsReactRoute, {
52
+ routes.push(/*#__PURE__*/_react.default.createElement(_router.PatternsReactRoute, {
53
53
  key: "main-redirect",
54
54
  type: "other",
55
55
  path: "/",
@@ -71,7 +71,7 @@ const AutoPatternsRoutes = ({
71
71
  }));
72
72
  }
73
73
  }
74
- return /*#__PURE__*/_react.default.createElement(_patterns.PatternsReactRouter, {
74
+ return /*#__PURE__*/_react.default.createElement(_router.PatternsReactRouter, {
75
75
  __self: void 0,
76
76
  __source: {
77
77
  fileName: _jsxFileName,
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireDefault","require","_hooks","_patterns","_AutoPatternsPage","_reactRouterDom","_jsxFileName","pageTypeToRouteType","collectionPage","entityPage","AutoPatternsRoutes","config","getPagePath","usePagePath","mainPage","pages","find","page","appMainPage","routes","map","routePath","id","default","createElement","PatternsReactRoute","key","type","path","element","AutoPatternsPage","pageConfig","__self","__source","fileName","lineNumber","columnNumber","filter","Boolean","mainPagePath","push","Navigate","to","PatternsReactRouter","exports"],"sources":["../../../../src/components/AutoPatternsRoute/AutoPatternsRoutes.tsx"],"sourcesContent":["import React from 'react';\nimport { usePagePath } from '../../hooks';\nimport { PatternsReactRoute, PatternsReactRouter } from '@wix/patterns';\nimport { AutoPatternsPage } from './AutoPatternsPage';\nimport type { RouteType } from '@wix/patterns/dist/types/components/Router/types';\nimport { Navigate } from 'react-router-dom';\nimport { AppConfig } from '../../types';\n\nconst pageTypeToRouteType: Record<string, RouteType> = {\n collectionPage: 'collection',\n entityPage: 'editEntity',\n};\n\nexport const AutoPatternsRoutes = ({ config }: { config: AppConfig }) => {\n const { getPagePath } = usePagePath(config);\n const mainPage = config.pages.find((page) => page.appMainPage);\n\n const routes = config.pages\n .map((page) => {\n const routePath = getPagePath(page.id);\n\n if (!routePath) {\n return null;\n }\n\n return (\n <PatternsReactRoute\n key={page.id}\n type={pageTypeToRouteType[page.type] ?? 'other'}\n path={routePath}\n element={<AutoPatternsPage pageConfig={page} />}\n />\n );\n })\n .filter(Boolean);\n\n if (mainPage) {\n const mainPagePath = getPagePath(mainPage.id);\n\n if (mainPagePath) {\n routes.push(\n <PatternsReactRoute\n key=\"main-redirect\"\n type=\"other\"\n path=\"/\"\n element={<Navigate to={mainPagePath} />}\n />,\n );\n }\n }\n\n return <PatternsReactRouter>{routes}</PatternsReactRouter>;\n};\n"],"mappings":";;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,SAAA,GAAAF,OAAA;AACA,IAAAG,iBAAA,GAAAH,OAAA;AAEA,IAAAI,eAAA,GAAAJ,OAAA;AAA4C,IAAAK,YAAA;AAG5C,MAAMC,mBAA8C,GAAG;EACrDC,cAAc,EAAE,YAAY;EAC5BC,UAAU,EAAE;AACd,CAAC;AAEM,MAAMC,kBAAkB,GAAGA,CAAC;EAAEC;AAA8B,CAAC,KAAK;EACvE,MAAM;IAAEC;EAAY,CAAC,GAAG,IAAAC,kBAAW,EAACF,MAAM,CAAC;EAC3C,MAAMG,QAAQ,GAAGH,MAAM,CAACI,KAAK,CAACC,IAAI,CAAEC,IAAI,IAAKA,IAAI,CAACC,WAAW,CAAC;EAE9D,MAAMC,MAAM,GAAGR,MAAM,CAACI,KAAK,CACxBK,GAAG,CAAEH,IAAI,IAAK;IACb,MAAMI,SAAS,GAAGT,WAAW,CAACK,IAAI,CAACK,EAAE,CAAC;IAEtC,IAAI,CAACD,SAAS,EAAE;MACd,OAAO,IAAI;IACb;IAEA,oBACEtB,MAAA,CAAAwB,OAAA,CAAAC,aAAA,CAACrB,SAAA,CAAAsB,kBAAkB;MACjBC,GAAG,EAAET,IAAI,CAACK,EAAG;MACbK,IAAI,EAAEpB,mBAAmB,CAACU,IAAI,CAACU,IAAI,CAAC,IAAI,OAAQ;MAChDC,IAAI,EAAEP,SAAU;MAChBQ,OAAO,eAAE9B,MAAA,CAAAwB,OAAA,CAAAC,aAAA,CAACpB,iBAAA,CAAA0B,gBAAgB;QAACC,UAAU,EAAEd,IAAK;QAAAe,MAAA;QAAAC,QAAA;UAAAC,QAAA,EAAA5B,YAAA;UAAA6B,UAAA;UAAAC,YAAA;QAAA;MAAA,CAAE,CAAE;MAAAJ,MAAA;MAAAC,QAAA;QAAAC,QAAA,EAAA5B,YAAA;QAAA6B,UAAA;QAAAC,YAAA;MAAA;IAAA,CACjD,CAAC;EAEN,CAAC,CAAC,CACDC,MAAM,CAACC,OAAO,CAAC;EAElB,IAAIxB,QAAQ,EAAE;IACZ,MAAMyB,YAAY,GAAG3B,WAAW,CAACE,QAAQ,CAACQ,EAAE,CAAC;IAE7C,IAAIiB,YAAY,EAAE;MAChBpB,MAAM,CAACqB,IAAI,cACTzC,MAAA,CAAAwB,OAAA,CAAAC,aAAA,CAACrB,SAAA,CAAAsB,kBAAkB;QACjBC,GAAG,EAAC,eAAe;QACnBC,IAAI,EAAC,OAAO;QACZC,IAAI,EAAC,GAAG;QACRC,OAAO,eAAE9B,MAAA,CAAAwB,OAAA,CAAAC,aAAA,CAACnB,eAAA,CAAAoC,QAAQ;UAACC,EAAE,EAAEH,YAAa;UAAAP,MAAA;UAAAC,QAAA;YAAAC,QAAA,EAAA5B,YAAA;YAAA6B,UAAA;YAAAC,YAAA;UAAA;QAAA,CAAE,CAAE;QAAAJ,MAAA;QAAAC,QAAA;UAAAC,QAAA,EAAA5B,YAAA;UAAA6B,UAAA;UAAAC,YAAA;QAAA;MAAA,CACzC,CACH,CAAC;IACH;EACF;EAEA,oBAAOrC,MAAA,CAAAwB,OAAA,CAAAC,aAAA,CAACrB,SAAA,CAAAwC,mBAAmB;IAAAX,MAAA;IAAAC,QAAA;MAAAC,QAAA,EAAA5B,YAAA;MAAA6B,UAAA;MAAAC,YAAA;IAAA;EAAA,GAAEjB,MAA4B,CAAC;AAC5D,CAAC;AAACyB,OAAA,CAAAlC,kBAAA,GAAAA,kBAAA","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_hooks","_router","_AutoPatternsPage","_reactRouterDom","_jsxFileName","pageTypeToRouteType","collectionPage","entityPage","AutoPatternsRoutes","config","getPagePath","usePagePath","mainPage","pages","find","page","appMainPage","routes","map","routePath","id","default","createElement","PatternsReactRoute","key","type","path","element","AutoPatternsPage","pageConfig","__self","__source","fileName","lineNumber","columnNumber","filter","Boolean","mainPagePath","push","Navigate","to","PatternsReactRouter","exports"],"sources":["../../../../src/components/AutoPatternsRoute/AutoPatternsRoutes.tsx"],"sourcesContent":["import React from 'react';\nimport { usePagePath } from '../../hooks';\nimport { PatternsReactRoute, PatternsReactRouter } from '@wix/patterns/router';\nimport { AutoPatternsPage } from './AutoPatternsPage';\nimport type { RouteType } from '@wix/patterns/dist/types/components/Router/types';\nimport { Navigate } from 'react-router-dom';\nimport { AppConfig } from '../../types';\n\nconst pageTypeToRouteType: Record<string, RouteType> = {\n collectionPage: 'collection',\n entityPage: 'editEntity',\n};\n\nexport const AutoPatternsRoutes = ({ config }: { config: AppConfig }) => {\n const { getPagePath } = usePagePath(config);\n const mainPage = config.pages.find((page) => page.appMainPage);\n\n const routes = config.pages\n .map((page) => {\n const routePath = getPagePath(page.id);\n\n if (!routePath) {\n return null;\n }\n\n return (\n <PatternsReactRoute\n key={page.id}\n type={pageTypeToRouteType[page.type] ?? 'other'}\n path={routePath}\n element={<AutoPatternsPage pageConfig={page} />}\n />\n );\n })\n .filter(Boolean);\n\n if (mainPage) {\n const mainPagePath = getPagePath(mainPage.id);\n\n if (mainPagePath) {\n routes.push(\n <PatternsReactRoute\n key=\"main-redirect\"\n type=\"other\"\n path=\"/\"\n element={<Navigate to={mainPagePath} />}\n />,\n );\n }\n }\n\n return <PatternsReactRouter>{routes}</PatternsReactRouter>;\n};\n"],"mappings":";;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,OAAA,GAAAF,OAAA;AACA,IAAAG,iBAAA,GAAAH,OAAA;AAEA,IAAAI,eAAA,GAAAJ,OAAA;AAA4C,IAAAK,YAAA;AAG5C,MAAMC,mBAA8C,GAAG;EACrDC,cAAc,EAAE,YAAY;EAC5BC,UAAU,EAAE;AACd,CAAC;AAEM,MAAMC,kBAAkB,GAAGA,CAAC;EAAEC;AAA8B,CAAC,KAAK;EACvE,MAAM;IAAEC;EAAY,CAAC,GAAG,IAAAC,kBAAW,EAACF,MAAM,CAAC;EAC3C,MAAMG,QAAQ,GAAGH,MAAM,CAACI,KAAK,CAACC,IAAI,CAAEC,IAAI,IAAKA,IAAI,CAACC,WAAW,CAAC;EAE9D,MAAMC,MAAM,GAAGR,MAAM,CAACI,KAAK,CACxBK,GAAG,CAAEH,IAAI,IAAK;IACb,MAAMI,SAAS,GAAGT,WAAW,CAACK,IAAI,CAACK,EAAE,CAAC;IAEtC,IAAI,CAACD,SAAS,EAAE;MACd,OAAO,IAAI;IACb;IAEA,oBACEtB,MAAA,CAAAwB,OAAA,CAAAC,aAAA,CAACrB,OAAA,CAAAsB,kBAAkB;MACjBC,GAAG,EAAET,IAAI,CAACK,EAAG;MACbK,IAAI,EAAEpB,mBAAmB,CAACU,IAAI,CAACU,IAAI,CAAC,IAAI,OAAQ;MAChDC,IAAI,EAAEP,SAAU;MAChBQ,OAAO,eAAE9B,MAAA,CAAAwB,OAAA,CAAAC,aAAA,CAACpB,iBAAA,CAAA0B,gBAAgB;QAACC,UAAU,EAAEd,IAAK;QAAAe,MAAA;QAAAC,QAAA;UAAAC,QAAA,EAAA5B,YAAA;UAAA6B,UAAA;UAAAC,YAAA;QAAA;MAAA,CAAE,CAAE;MAAAJ,MAAA;MAAAC,QAAA;QAAAC,QAAA,EAAA5B,YAAA;QAAA6B,UAAA;QAAAC,YAAA;MAAA;IAAA,CACjD,CAAC;EAEN,CAAC,CAAC,CACDC,MAAM,CAACC,OAAO,CAAC;EAElB,IAAIxB,QAAQ,EAAE;IACZ,MAAMyB,YAAY,GAAG3B,WAAW,CAACE,QAAQ,CAACQ,EAAE,CAAC;IAE7C,IAAIiB,YAAY,EAAE;MAChBpB,MAAM,CAACqB,IAAI,cACTzC,MAAA,CAAAwB,OAAA,CAAAC,aAAA,CAACrB,OAAA,CAAAsB,kBAAkB;QACjBC,GAAG,EAAC,eAAe;QACnBC,IAAI,EAAC,OAAO;QACZC,IAAI,EAAC,GAAG;QACRC,OAAO,eAAE9B,MAAA,CAAAwB,OAAA,CAAAC,aAAA,CAACnB,eAAA,CAAAoC,QAAQ;UAACC,EAAE,EAAEH,YAAa;UAAAP,MAAA;UAAAC,QAAA;YAAAC,QAAA,EAAA5B,YAAA;YAAA6B,UAAA;YAAAC,YAAA;UAAA;QAAA,CAAE,CAAE;QAAAJ,MAAA;QAAAC,QAAA;UAAAC,QAAA,EAAA5B,YAAA;UAAA6B,UAAA;UAAAC,YAAA;QAAA;MAAA,CACzC,CACH,CAAC;IACH;EACF;EAEA,oBAAOrC,MAAA,CAAAwB,OAAA,CAAAC,aAAA,CAACrB,OAAA,CAAAwC,mBAAmB;IAAAX,MAAA;IAAAC,QAAA;MAAAC,QAAA,EAAA5B,YAAA;MAAA6B,UAAA;MAAAC,YAAA;IAAA;EAAA,GAAEjB,MAA4B,CAAC;AAC5D,CAAC;AAACyB,OAAA,CAAAlC,kBAAA,GAAAA,kBAAA","ignoreList":[]}
@@ -22,7 +22,6 @@ const CmsFieldTypeToPatternsFieldType = exports.CmsFieldTypeToPatternsFieldType
22
22
  [_data.collections.Type.IMAGE]: 'IMAGE'
23
23
  };
24
24
  async function fetchCmsSchema(collectionId) {
25
- var _schema$fields$find;
26
25
  const schema = await _data.collections.getDataCollection(collectionId);
27
26
  const transformedFields = schema.fields.reduce((acc, field) => {
28
27
  var _field$capabilities, _field$capabilities2, _field$typeMetadata;
@@ -72,7 +71,6 @@ async function fetchCmsSchema(collectionId) {
72
71
  id: collectionId,
73
72
  displayField: schema.displayField ?? '_id',
74
73
  idField: '_id',
75
- imageField: (_schema$fields$find = schema.fields.find(field => field.type === 'IMAGE')) == null ? void 0 : _schema$fields$find.key,
76
74
  fields: transformedFields,
77
75
  actions: {
78
76
  get: entityId => {
@@ -1 +1 @@
1
- {"version":3,"names":["_data","require","_fetchCmsData","CmsFieldTypeToPatternsFieldType","exports","collections","Type","TEXT","DATE","DATETIME","NUMBER","BOOLEAN","URL","ADDRESS","OBJECT","RICH_TEXT","RICH_CONTENT","ARRAY","ARRAY_STRING","REFERENCE","IMAGE","fetchCmsSchema","collectionId","_schema$fields$find","schema","getDataCollection","transformedFields","fields","reduce","acc","field","_field$capabilities","_field$capabilities2","_field$typeMetadata","key","fieldType","type","baseField","id","displayName","validation","numberRange","min","undefined","max","stringLengthRange","minLength","maxLength","required","capabilities","supportedQueryOperators","queryOperators","sortable","typeMetadata","reference","referencedCollectionId","referenceField","referenceMetadata","nonReferenceType","nonReferenceField","schemaConfig","displayField","idField","imageField","find","actions","get","entityId","items","create","entity","insert","update","delete","remove","bulkDelete","entityIds","bulkRemove","query","options","fetchCmsData"],"sources":["../../../../src/dataSourceAdapters/cms/cmsAdapter.ts"],"sourcesContent":["import { Field, SchemaConfig, PatternsFieldType } from '../../types';\nimport { ComputedQuery } from '@wix/patterns';\nimport { collections, items } from '@wix/data';\nimport { fetchCmsData } from './fetchCmsData';\n\nexport const CmsFieldTypeToPatternsFieldType: Partial<\n Record<collections.Type, PatternsFieldType>\n> = {\n [collections.Type.TEXT]: 'SHORT_TEXT',\n [collections.Type.DATE]: 'DATE',\n [collections.Type.DATETIME]: 'DATETIME',\n [collections.Type.NUMBER]: 'NUMBER',\n [collections.Type.BOOLEAN]: 'BOOLEAN',\n [collections.Type.URL]: 'URL',\n [collections.Type.ADDRESS]: 'SHORT_TEXT',\n [collections.Type.OBJECT]: 'LONG_TEXT',\n [collections.Type.RICH_TEXT]: 'LONG_TEXT',\n [collections.Type.RICH_CONTENT]: 'SHORT_TEXT',\n [collections.Type.ARRAY]: 'ARRAY',\n [collections.Type.ARRAY_STRING]: 'ARRAY',\n [collections.Type.REFERENCE]: 'REFERENCE',\n [collections.Type.IMAGE]: 'IMAGE',\n};\n\nexport async function fetchCmsSchema(\n collectionId: string,\n): Promise<SchemaConfig> {\n const schema = await collections.getDataCollection(collectionId);\n\n const transformedFields = schema.fields.reduce<Record<string, Field>>(\n (acc, field) => {\n if (!field.key) {\n return acc;\n }\n\n const fieldType = field.type\n ? CmsFieldTypeToPatternsFieldType[field.type] || 'SHORT_TEXT'\n : 'SHORT_TEXT';\n const baseField = {\n id: field.key,\n displayName: field.displayName || '',\n validation: {\n numberRange: field.numberRange\n ? {\n min: field.numberRange.min ?? undefined,\n max: field.numberRange.max ?? undefined,\n }\n : undefined,\n stringLengthRange: field.stringLengthRange\n ? {\n minLength: field.stringLengthRange.minLength ?? undefined,\n maxLength: field.stringLengthRange.maxLength ?? undefined,\n }\n : undefined,\n required: field.required ?? false,\n },\n capabilities: {\n supportedQueryOperators: field.capabilities?.queryOperators || [],\n sortable: field.capabilities?.sortable || false,\n },\n };\n\n if (\n fieldType === 'REFERENCE' &&\n field.typeMetadata?.reference?.referencedCollectionId\n ) {\n const referenceField: Field = {\n ...baseField,\n type: 'REFERENCE',\n referenceMetadata: {\n referencedCollectionId:\n field.typeMetadata.reference.referencedCollectionId,\n },\n };\n acc[field.key] = referenceField;\n } else {\n const nonReferenceType =\n fieldType === 'REFERENCE' ? 'SHORT_TEXT' : fieldType;\n const nonReferenceField: Field = {\n ...baseField,\n type: nonReferenceType,\n };\n acc[field.key] = nonReferenceField;\n }\n\n return acc;\n },\n {},\n );\n\n const schemaConfig: SchemaConfig = {\n id: collectionId,\n displayField: schema.displayField ?? '_id',\n idField: '_id',\n imageField: schema.fields.find((field) => field.type === 'IMAGE')?.key,\n fields: transformedFields,\n actions: {\n get: (entityId: string) => {\n return items.get(collectionId, entityId);\n },\n create: (entity) => {\n return items.insert(collectionId, entity);\n },\n update: (entity) => {\n return items.update(collectionId, entity);\n },\n delete: (entityId) => {\n return items.remove(collectionId, entityId);\n },\n bulkDelete: (entityIds) => {\n return items.bulkRemove(collectionId, entityIds);\n },\n find: async (\n query: ComputedQuery<any>,\n options: {\n searchableFieldIds?: string[];\n filterFieldMapping?: Record<string, { fieldId: string }>;\n } = {},\n ) => {\n return fetchCmsData(collectionId, query, transformedFields, options);\n },\n },\n };\n\n return schemaConfig;\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_data","require","_fetchCmsData","CmsFieldTypeToPatternsFieldType","exports","collections","Type","TEXT","DATE","DATETIME","NUMBER","BOOLEAN","URL","ADDRESS","OBJECT","RICH_TEXT","RICH_CONTENT","ARRAY","ARRAY_STRING","REFERENCE","IMAGE","fetchCmsSchema","collectionId","schema","getDataCollection","transformedFields","fields","reduce","acc","field","_field$capabilities","_field$capabilities2","_field$typeMetadata","key","fieldType","type","baseField","id","displayName","validation","numberRange","min","undefined","max","stringLengthRange","minLength","maxLength","required","capabilities","supportedQueryOperators","queryOperators","sortable","typeMetadata","reference","referencedCollectionId","referenceField","referenceMetadata","nonReferenceType","nonReferenceField","schemaConfig","displayField","idField","actions","get","entityId","items","create","entity","insert","update","delete","remove","bulkDelete","entityIds","bulkRemove","find","query","options","fetchCmsData"],"sources":["../../../../src/dataSourceAdapters/cms/cmsAdapter.ts"],"sourcesContent":["import { Field, SchemaConfig, PatternsFieldType } from '../../types';\nimport { collections, items } from '@wix/data';\nimport { fetchCmsData } from './fetchCmsData';\n\nexport const CmsFieldTypeToPatternsFieldType: Partial<\n Record<collections.Type, PatternsFieldType>\n> = {\n [collections.Type.TEXT]: 'SHORT_TEXT',\n [collections.Type.DATE]: 'DATE',\n [collections.Type.DATETIME]: 'DATETIME',\n [collections.Type.NUMBER]: 'NUMBER',\n [collections.Type.BOOLEAN]: 'BOOLEAN',\n [collections.Type.URL]: 'URL',\n [collections.Type.ADDRESS]: 'SHORT_TEXT',\n [collections.Type.OBJECT]: 'LONG_TEXT',\n [collections.Type.RICH_TEXT]: 'LONG_TEXT',\n [collections.Type.RICH_CONTENT]: 'SHORT_TEXT',\n [collections.Type.ARRAY]: 'ARRAY',\n [collections.Type.ARRAY_STRING]: 'ARRAY',\n [collections.Type.REFERENCE]: 'REFERENCE',\n [collections.Type.IMAGE]: 'IMAGE',\n};\n\nexport async function fetchCmsSchema(\n collectionId: string,\n): Promise<SchemaConfig> {\n const schema = await collections.getDataCollection(collectionId);\n\n const transformedFields = schema.fields.reduce<Record<string, Field>>(\n (acc, field) => {\n if (!field.key) {\n return acc;\n }\n\n const fieldType = field.type\n ? CmsFieldTypeToPatternsFieldType[field.type] || 'SHORT_TEXT'\n : 'SHORT_TEXT';\n const baseField = {\n id: field.key,\n displayName: field.displayName || '',\n validation: {\n numberRange: field.numberRange\n ? {\n min: field.numberRange.min ?? undefined,\n max: field.numberRange.max ?? undefined,\n }\n : undefined,\n stringLengthRange: field.stringLengthRange\n ? {\n minLength: field.stringLengthRange.minLength ?? undefined,\n maxLength: field.stringLengthRange.maxLength ?? undefined,\n }\n : undefined,\n required: field.required ?? false,\n },\n capabilities: {\n supportedQueryOperators: field.capabilities?.queryOperators || [],\n sortable: field.capabilities?.sortable || false,\n },\n };\n\n if (\n fieldType === 'REFERENCE' &&\n field.typeMetadata?.reference?.referencedCollectionId\n ) {\n const referenceField: Field = {\n ...baseField,\n type: 'REFERENCE',\n referenceMetadata: {\n referencedCollectionId:\n field.typeMetadata.reference.referencedCollectionId,\n },\n };\n acc[field.key] = referenceField;\n } else {\n const nonReferenceType =\n fieldType === 'REFERENCE' ? 'SHORT_TEXT' : fieldType;\n const nonReferenceField: Field = {\n ...baseField,\n type: nonReferenceType,\n };\n acc[field.key] = nonReferenceField;\n }\n\n return acc;\n },\n {},\n );\n\n const schemaConfig: SchemaConfig = {\n id: collectionId,\n displayField: schema.displayField ?? '_id',\n idField: '_id',\n fields: transformedFields,\n actions: {\n get: (entityId: string) => {\n return items.get(collectionId, entityId);\n },\n create: (entity) => {\n return items.insert(collectionId, entity);\n },\n update: (entity) => {\n return items.update(collectionId, entity);\n },\n delete: (entityId) => {\n return items.remove(collectionId, entityId);\n },\n bulkDelete: (entityIds) => {\n return items.bulkRemove(collectionId, entityIds);\n },\n find: async (\n query,\n options: {\n searchableFieldIds?: string[];\n filterFieldMapping?: Record<string, { fieldId: string }>;\n } = {},\n ) => {\n return fetchCmsData(collectionId, query, transformedFields, options);\n },\n },\n };\n\n return schemaConfig;\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["_data","require","_filterUtils","_sortUtils","fetchCmsData","collectionId","query","fields","options","searchableFieldIds","filterFieldMapping","dataQuery","items","addSearchToDataQuery","addFiltersToDataQuery","addSortToDataQuery","referenceFieldIds","Object","values","filter","field","type","includes","id","map","length","include","res","skip","offset","limit","find","returnTotalCount","total","totalCount"],"sources":["../../../../src/dataSourceAdapters/cms/fetchCmsData.ts"],"sourcesContent":["import { ComputedQuery } from '@wix/patterns';\nimport { items } from '@wix/data';\nimport { Field } from '../../types';\nimport { addFiltersToDataQuery, addSearchToDataQuery } from './filterUtils';\nimport { addSortToDataQuery } from './sortUtils';\n\nexport async function fetchCmsData(\n collectionId: string,\n query: ComputedQuery<any>,\n fields: Record<string, Field | undefined>,\n options: {\n searchableFieldIds?: string[];\n filterFieldMapping?: Record<string, { fieldId: string }>;\n } = {},\n) {\n const { searchableFieldIds = [], filterFieldMapping } = options;\n\n let dataQuery = items.query(collectionId);\n dataQuery = addSearchToDataQuery({\n dataQuery,\n query,\n fields,\n searchableFieldIds,\n });\n dataQuery = addFiltersToDataQuery({\n dataQuery,\n query,\n fields,\n filterFieldMapping,\n });\n dataQuery = addSortToDataQuery({\n dataQuery,\n query,\n fields,\n });\n\n const referenceFieldIds = Object.values(fields)\n .filter(\n (field): field is Field =>\n !!field &&\n field.type === 'REFERENCE' &&\n searchableFieldIds.includes(field.id),\n )\n .map((field) => field.id);\n\n if (referenceFieldIds.length > 0) {\n dataQuery = dataQuery.include(...referenceFieldIds);\n }\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 ?? 0,\n };\n}\n"],"mappings":";;;;AACA,IAAAA,KAAA,GAAAC,OAAA;AAEA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,UAAA,GAAAF,OAAA;AAEO,eAAeG,YAAYA,CAChCC,YAAoB,EACpBC,KAAyB,EACzBC,MAAyC,EACzCC,OAGC,GAAG,CAAC,CAAC,EACN;EACA,MAAM;IAAEC,kBAAkB,GAAG,EAAE;IAAEC;EAAmB,CAAC,GAAGF,OAAO;EAE/D,IAAIG,SAAS,GAAGC,WAAK,CAACN,KAAK,CAACD,YAAY,CAAC;EACzCM,SAAS,GAAG,IAAAE,iCAAoB,EAAC;IAC/BF,SAAS;IACTL,KAAK;IACLC,MAAM;IACNE;EACF,CAAC,CAAC;EACFE,SAAS,GAAG,IAAAG,kCAAqB,EAAC;IAChCH,SAAS;IACTL,KAAK;IACLC,MAAM;IACNG;EACF,CAAC,CAAC;EACFC,SAAS,GAAG,IAAAI,6BAAkB,EAAC;IAC7BJ,SAAS;IACTL,KAAK;IACLC;EACF,CAAC,CAAC;EAEF,MAAMS,iBAAiB,GAAGC,MAAM,CAACC,MAAM,CAACX,MAAM,CAAC,CAC5CY,MAAM,CACJC,KAAK,IACJ,CAAC,CAACA,KAAK,IACPA,KAAK,CAACC,IAAI,KAAK,WAAW,IAC1BZ,kBAAkB,CAACa,QAAQ,CAACF,KAAK,CAACG,EAAE,CACxC,CAAC,CACAC,GAAG,CAAEJ,KAAK,IAAKA,KAAK,CAACG,EAAE,CAAC;EAE3B,IAAIP,iBAAiB,CAACS,MAAM,GAAG,CAAC,EAAE;IAChCd,SAAS,GAAGA,SAAS,CAACe,OAAO,CAAC,GAAGV,iBAAiB,CAAC;EACrD;EAEA,MAAMW,GAAG,GAAG,MAAMhB,SAAS,CACxBiB,IAAI,CAACtB,KAAK,CAACuB,MAAM,CAAC,CAClBC,KAAK,CAACxB,KAAK,CAACwB,KAAK,CAAC,CAClBC,IAAI,CAAC;IAAEC,gBAAgB,EAAE;EAAK,CAAC,CAAC;EAEnC,OAAO;IACLpB,KAAK,EAAEe,GAAG,CAACf,KAAK;IAChBqB,KAAK,EAAEN,GAAG,CAACO,UAAU,IAAI;EAC3B,CAAC;AACH","ignoreList":[]}
1
+ {"version":3,"names":["_data","require","_filterUtils","_sortUtils","fetchCmsData","collectionId","query","fields","options","searchableFieldIds","filterFieldMapping","dataQuery","items","addSearchToDataQuery","addFiltersToDataQuery","addSortToDataQuery","referenceFieldIds","Object","values","filter","field","type","includes","id","map","length","include","res","skip","offset","limit","find","returnTotalCount","total","totalCount"],"sources":["../../../../src/dataSourceAdapters/cms/fetchCmsData.ts"],"sourcesContent":["import { items } from '@wix/data';\nimport { Field, Query } from '../../types';\nimport { addFiltersToDataQuery, addSearchToDataQuery } from './filterUtils';\nimport { addSortToDataQuery } from './sortUtils';\n\nexport async function fetchCmsData(\n collectionId: string,\n query: Query,\n fields: Record<string, Field | undefined>,\n options: {\n searchableFieldIds?: string[];\n filterFieldMapping?: Record<string, { fieldId: string }>;\n } = {},\n) {\n const { searchableFieldIds = [], filterFieldMapping } = options;\n\n let dataQuery = items.query(collectionId);\n dataQuery = addSearchToDataQuery({\n dataQuery,\n query,\n fields,\n searchableFieldIds,\n });\n dataQuery = addFiltersToDataQuery({\n dataQuery,\n query,\n fields,\n filterFieldMapping,\n });\n dataQuery = addSortToDataQuery({\n dataQuery,\n query,\n fields,\n });\n\n const referenceFieldIds = Object.values(fields)\n .filter(\n (field): field is Field =>\n !!field &&\n field.type === 'REFERENCE' &&\n searchableFieldIds.includes(field.id),\n )\n .map((field) => field.id);\n\n if (referenceFieldIds.length > 0) {\n dataQuery = dataQuery.include(...referenceFieldIds);\n }\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 ?? 0,\n };\n}\n"],"mappings":";;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AAEA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,UAAA,GAAAF,OAAA;AAEO,eAAeG,YAAYA,CAChCC,YAAoB,EACpBC,KAAY,EACZC,MAAyC,EACzCC,OAGC,GAAG,CAAC,CAAC,EACN;EACA,MAAM;IAAEC,kBAAkB,GAAG,EAAE;IAAEC;EAAmB,CAAC,GAAGF,OAAO;EAE/D,IAAIG,SAAS,GAAGC,WAAK,CAACN,KAAK,CAACD,YAAY,CAAC;EACzCM,SAAS,GAAG,IAAAE,iCAAoB,EAAC;IAC/BF,SAAS;IACTL,KAAK;IACLC,MAAM;IACNE;EACF,CAAC,CAAC;EACFE,SAAS,GAAG,IAAAG,kCAAqB,EAAC;IAChCH,SAAS;IACTL,KAAK;IACLC,MAAM;IACNG;EACF,CAAC,CAAC;EACFC,SAAS,GAAG,IAAAI,6BAAkB,EAAC;IAC7BJ,SAAS;IACTL,KAAK;IACLC;EACF,CAAC,CAAC;EAEF,MAAMS,iBAAiB,GAAGC,MAAM,CAACC,MAAM,CAACX,MAAM,CAAC,CAC5CY,MAAM,CACJC,KAAK,IACJ,CAAC,CAACA,KAAK,IACPA,KAAK,CAACC,IAAI,KAAK,WAAW,IAC1BZ,kBAAkB,CAACa,QAAQ,CAACF,KAAK,CAACG,EAAE,CACxC,CAAC,CACAC,GAAG,CAAEJ,KAAK,IAAKA,KAAK,CAACG,EAAE,CAAC;EAE3B,IAAIP,iBAAiB,CAACS,MAAM,GAAG,CAAC,EAAE;IAChCd,SAAS,GAAGA,SAAS,CAACe,OAAO,CAAC,GAAGV,iBAAiB,CAAC;EACrD;EAEA,MAAMW,GAAG,GAAG,MAAMhB,SAAS,CACxBiB,IAAI,CAACtB,KAAK,CAACuB,MAAM,CAAC,CAClBC,KAAK,CAACxB,KAAK,CAACwB,KAAK,CAAC,CAClBC,IAAI,CAAC;IAAEC,gBAAgB,EAAE;EAAK,CAAC,CAAC;EAEnC,OAAO;IACLpB,KAAK,EAAEe,GAAG,CAACf,KAAK;IAChBqB,KAAK,EAAEN,GAAG,CAACO,UAAU,IAAI;EAC3B,CAAC;AACH","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["_data","require","_constants","FilterPropToMethod","from","to","isValidFilterProp","prop","getOperatorForFilter","undefined","isSupportedOperator","fields","filterProp","filterKey","field","operator","FilterPropToOperator","supportedOperators","capabilities","supportedQueryOperators","includes","addFiltersToDataQuery","dataQuery","query","filterFieldMapping","dataQueryWithFilters","filters","fieldKey","fieldId","filter","Array","isArray","_fields$fieldId","filterArray","type","some","item","id","BooleanFilters","checked","eq","falseFilter","items","undefinedFilter","and","or","hasSome","map","filterObj","value","TEXT_FIELD_TYPES","addSearchToDataQuery","searchableFieldIds","searchableFields","Object","keys","isFieldSearchable","search","length","searchFilter","forEach","currentFilter","contains"],"sources":["../../../../src/dataSourceAdapters/cms/filterUtils.ts"],"sourcesContent":["import { ComputedQuery } from '@wix/patterns';\nimport { items } from '@wix/data';\nimport { BooleanFilters, FilterProp, FilterPropToOperator } from '../constants';\nimport { SchemaConfig } from '../../types';\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 fields: SchemaConfig['fields'],\n filterProp: string,\n filterKey: string,\n) => {\n const field = 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 fields,\n filterFieldMapping,\n}: {\n dataQuery: items.WixDataQuery;\n query: ComputedQuery<any>;\n fields: SchemaConfig['fields'];\n filterFieldMapping?: Record<string, { fieldId: string }>;\n}) {\n if (!filterFieldMapping) {\n return dataQuery;\n }\n\n let dataQueryWithFilters = dataQuery;\n const { filters } = query;\n for (const fieldKey in filters) {\n const fieldId = filterFieldMapping[fieldKey].fieldId;\n const filter = filters[fieldKey];\n if (filter) {\n if (Array.isArray(filter)) {\n const filterArray = filter as { [key: string]: any }[];\n if (fields[fieldId]?.type === 'BOOLEAN') {\n if (filterArray.some((item) => item.id === BooleanFilters.checked)) {\n dataQueryWithFilters = dataQueryWithFilters.eq(fieldId, true);\n } else {\n const falseFilter = items.filter().eq(fieldId, false);\n const undefinedFilter = items.filter().eq(fieldId, undefined);\n dataQueryWithFilters = dataQueryWithFilters.and(\n falseFilter.or(undefinedFilter),\n );\n }\n } else {\n dataQueryWithFilters = dataQueryWithFilters.hasSome(\n fieldId,\n filterArray.map((item) => item.id),\n );\n }\n } else if (typeof filter === 'object') {\n const filterObj = filter as Record<string, any>;\n\n for (const filterProp in filterObj) {\n const operator = getOperatorForFilter(filterProp);\n if (\n operator &&\n typeof dataQuery[operator] === 'function' &&\n isSupportedOperator(fields, filterProp, fieldId)\n ) {\n const value = filterObj[filterProp];\n if (value !== undefined && value !== null) {\n dataQueryWithFilters = dataQueryWithFilters[operator](\n fieldId,\n value,\n );\n }\n }\n }\n }\n }\n }\n\n return dataQueryWithFilters;\n}\n\nconst TEXT_FIELD_TYPES = ['LONG_TEXT', 'SHORT_TEXT'];\nexport function addSearchToDataQuery({\n dataQuery,\n query,\n fields,\n searchableFieldIds,\n}: {\n dataQuery: items.WixDataQuery;\n query: ComputedQuery<any>;\n fields: SchemaConfig['fields'];\n searchableFieldIds: string[];\n}) {\n const searchableFields = Object.keys(fields).filter((fieldId) => {\n const field = fields[fieldId];\n const isFieldSearchable = searchableFieldIds.includes(fieldId);\n\n return isFieldSearchable && field && TEXT_FIELD_TYPES.includes(field.type);\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":[]}
1
+ {"version":3,"names":["_data","require","_constants","FilterPropToMethod","from","to","isValidFilterProp","prop","getOperatorForFilter","undefined","isSupportedOperator","fields","filterProp","filterKey","field","operator","FilterPropToOperator","supportedOperators","capabilities","supportedQueryOperators","includes","addFiltersToDataQuery","dataQuery","query","filterFieldMapping","dataQueryWithFilters","filters","fieldKey","fieldId","filter","Array","isArray","_fields$fieldId","filterArray","type","some","item","id","BooleanFilters","checked","eq","falseFilter","items","undefinedFilter","and","or","hasSome","map","filterObj","value","TEXT_FIELD_TYPES","addSearchToDataQuery","searchableFieldIds","searchableFields","Object","keys","isFieldSearchable","search","length","searchFilter","forEach","currentFilter","contains"],"sources":["../../../../src/dataSourceAdapters/cms/filterUtils.ts"],"sourcesContent":["import { items } from '@wix/data';\nimport { BooleanFilters, FilterProp, FilterPropToOperator } from '../constants';\nimport { Query, SchemaConfig } from '../../types';\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 fields: SchemaConfig['fields'],\n filterProp: string,\n filterKey: string,\n) => {\n const field = 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 fields,\n filterFieldMapping,\n}: {\n dataQuery: items.WixDataQuery;\n query: Query;\n fields: SchemaConfig['fields'];\n filterFieldMapping?: Record<string, { fieldId: string }>;\n}) {\n if (!filterFieldMapping) {\n return dataQuery;\n }\n\n let dataQueryWithFilters = dataQuery;\n const { filters } = query;\n for (const fieldKey in filters) {\n const fieldId = filterFieldMapping[fieldKey].fieldId;\n const filter = filters[fieldKey];\n if (filter) {\n if (Array.isArray(filter)) {\n const filterArray = filter as { [key: string]: any }[];\n if (fields[fieldId]?.type === 'BOOLEAN') {\n if (filterArray.some((item) => item.id === BooleanFilters.checked)) {\n dataQueryWithFilters = dataQueryWithFilters.eq(fieldId, true);\n } else {\n const falseFilter = items.filter().eq(fieldId, false);\n const undefinedFilter = items.filter().eq(fieldId, undefined);\n dataQueryWithFilters = dataQueryWithFilters.and(\n falseFilter.or(undefinedFilter),\n );\n }\n } else {\n dataQueryWithFilters = dataQueryWithFilters.hasSome(\n fieldId,\n filterArray.map((item) => item.id),\n );\n }\n } else if (typeof filter === 'object') {\n const filterObj = filter as Record<string, any>;\n\n for (const filterProp in filterObj) {\n const operator = getOperatorForFilter(filterProp);\n if (\n operator &&\n typeof dataQuery[operator] === 'function' &&\n isSupportedOperator(fields, filterProp, fieldId)\n ) {\n const value = filterObj[filterProp];\n if (value !== undefined && value !== null) {\n dataQueryWithFilters = dataQueryWithFilters[operator](\n fieldId,\n value,\n );\n }\n }\n }\n }\n }\n }\n\n return dataQueryWithFilters;\n}\n\nconst TEXT_FIELD_TYPES = ['LONG_TEXT', 'SHORT_TEXT'];\nexport function addSearchToDataQuery({\n dataQuery,\n query,\n fields,\n searchableFieldIds,\n}: {\n dataQuery: items.WixDataQuery;\n query: Query;\n fields: SchemaConfig['fields'];\n searchableFieldIds: string[];\n}) {\n const searchableFields = Object.keys(fields).filter((fieldId) => {\n const field = fields[fieldId];\n const isFieldSearchable = searchableFieldIds.includes(fieldId);\n\n return isFieldSearchable && field && TEXT_FIELD_TYPES.includes(field.type);\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":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["addSortToDataQuery","dataQuery","query","fields","dataQueryWithSort","sort","forEach","sortField","fieldName","order","fieldDefinition","capabilities","sortable","ascending","descending"],"sources":["../../../../src/dataSourceAdapters/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 fields,\n}: {\n dataQuery: items.WixDataQuery;\n query: ComputedQuery<any>;\n fields: SchemaConfig['fields'];\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 = 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":";;;;AAIO,SAASA,kBAAkBA,CAAC;EACjCC,SAAS;EACTC,KAAK;EACLC;AAKF,CAAC,EAAE;EACD,IAAIC,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,CAACK,SAAS,CAAC;MACzC,IAAIE,eAAe,YAAfA,eAAe,CAAEC,YAAY,CAACC,QAAQ,EAAE;QAC1C,IAAIH,KAAK,KAAK,KAAK,EAAE;UACnBL,iBAAiB,GAAGA,iBAAiB,CAACS,SAAS,CAACL,SAAS,CAAC;QAC5D,CAAC,MAAM,IAAIC,KAAK,KAAK,MAAM,EAAE;UAC3BL,iBAAiB,GAAGA,iBAAiB,CAACU,UAAU,CAACN,SAAS,CAAC;QAC7D;MACF;IACF;EACF,CAAC,CAAC;EAEF,OAAOJ,iBAAiB;AAC1B","ignoreList":[]}
1
+ {"version":3,"names":["addSortToDataQuery","dataQuery","query","fields","dataQueryWithSort","sort","forEach","sortField","fieldName","order","fieldDefinition","capabilities","sortable","ascending","descending"],"sources":["../../../../src/dataSourceAdapters/cms/sortUtils.ts"],"sourcesContent":["import { items } from '@wix/data';\nimport { Query, SchemaConfig } from '../../types';\n\nexport function addSortToDataQuery({\n dataQuery,\n query,\n fields,\n}: {\n dataQuery: items.WixDataQuery;\n query: Query;\n fields: SchemaConfig['fields'];\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 = 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":";;;;AAGO,SAASA,kBAAkBA,CAAC;EACjCC,SAAS;EACTC,KAAK;EACLC;AAKF,CAAC,EAAE;EACD,IAAIC,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,CAACK,SAAS,CAAC;MACzC,IAAIE,eAAe,YAAfA,eAAe,CAAEC,YAAY,CAACC,QAAQ,EAAE;QAC1C,IAAIH,KAAK,KAAK,KAAK,EAAE;UACnBL,iBAAiB,GAAGA,iBAAiB,CAACS,SAAS,CAACL,SAAS,CAAC;QAC5D,CAAC,MAAM,IAAIC,KAAK,KAAK,MAAM,EAAE;UAC3BL,iBAAiB,GAAGA,iBAAiB,CAACU,UAAU,CAACN,SAAS,CAAC;QAC7D;MACF;IACF;EACF,CAAC,CAAC;EAEF,OAAOJ,iBAAiB;AAC1B","ignoreList":[]}
@@ -61,8 +61,10 @@ const useColumns = columns => {
61
61
  let imageValue;
62
62
  const displayField = refSchema.displayField;
63
63
  if (typeof itemValue === 'object' && itemValue !== null) {
64
+ var _Object$values$find;
64
65
  nameValue = itemValue[displayField] || '';
65
- imageValue = refSchema.imageField && itemValue[refSchema.imageField];
66
+ const imageFieldId = (_Object$values$find = Object.values(fields).find(field => (field == null ? void 0 : field.type) === 'IMAGE')) == null ? void 0 : _Object$values$find.id;
67
+ imageValue = imageFieldId && itemValue[imageFieldId];
66
68
  }
67
69
  const imageUrl = imageValue && (0, _getImageUrl.getImageUrl)(imageValue);
68
70
  return /*#__PURE__*/_react.default.createElement(_designSystem.Box, {
@@ -71,7 +73,7 @@ const useColumns = columns => {
71
73
  __self: void 0,
72
74
  __source: {
73
75
  fileName: _jsxFileName,
74
- lineNumber: 69,
76
+ lineNumber: 71,
75
77
  columnNumber: 15
76
78
  }
77
79
  }, imageUrl && /*#__PURE__*/_react.default.createElement(_designSystem.Avatar, {
@@ -83,14 +85,14 @@ const useColumns = columns => {
83
85
  __self: void 0,
84
86
  __source: {
85
87
  fileName: _jsxFileName,
86
- lineNumber: 71,
88
+ lineNumber: 73,
87
89
  columnNumber: 19
88
90
  }
89
91
  }), /*#__PURE__*/_react.default.createElement("div", {
90
92
  __self: void 0,
91
93
  __source: {
92
94
  fileName: _jsxFileName,
93
- lineNumber: 77,
95
+ lineNumber: 79,
94
96
  columnNumber: 17
95
97
  }
96
98
  }, nameValue));
@@ -106,7 +108,7 @@ const useColumns = columns => {
106
108
  __self: void 0,
107
109
  __source: {
108
110
  fileName: _jsxFileName,
109
- lineNumber: 88,
111
+ lineNumber: 90,
110
112
  columnNumber: 11
111
113
  }
112
114
  });
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireDefault","require","_providers","_lodash","_designSystem","_getImageUrl","_jsxFileName","useColumns","columns","fields","useSchema","getSchema","useSchemaRegistry","overrides","usePatternsWizardOverridesContext","existingColumns","filter","column","_overrides$columns","id","createRenderer","fieldDefinition","itemValue","type","Date","toLocaleDateString","date","toLocaleString","join","referenceMetadata","referencedCollectionId","refSchema","nameValue","imageValue","displayField","imageField","imageUrl","getImageUrl","default","createElement","Box","gap","verticalAlign","__self","__source","fileName","lineNumber","columnNumber","Avatar","size","name","imgProps","src","Image","width","dataHook","map","_overrides$columns2","_fieldDefinition$capa","sortable","capabilities","baseColumnConfig","title","displayName","createSortConfiguration","createCustomColumnConfiguration","render","row","_overrides$columns3","get","camelCase","_overrides$columns4","_overrides$columns4$c","call","value","Boolean","exports","sortableColumnConfig","defaultSortOrder","sortMode","undefined","reorderDisabled","hiddenFromCustomColumnsSelection","hideable","defaultHidden"],"sources":["../../../src/hooks/useColumns.tsx"],"sourcesContent":["import React from 'react';\nimport { TableColumn } from '@wix/patterns';\nimport {\n usePatternsWizardOverridesContext,\n useSchema,\n useSchemaRegistry,\n} from '../providers';\nimport { Column, Field } from '../types';\nimport { camelCase, get } from 'lodash';\nimport { Avatar, Box, Image } from '@wix/design-system';\nimport { getImageUrl } from '../utils/media/getImageUrl';\n\nexport const useColumns = (columns: Column[]) => {\n const { fields } = useSchema();\n const { getSchema } = useSchemaRegistry();\n const overrides = usePatternsWizardOverridesContext();\n\n const existingColumns = columns.filter((column) => {\n return !!fields[column.id] || overrides?.columns?.[column.id];\n });\n\n const createRenderer = (fieldDefinition: Field, itemValue: any) => {\n if (itemValue == null) {\n return '';\n }\n\n switch (fieldDefinition.type) {\n case 'BOOLEAN':\n return itemValue ? '✔' : '✖';\n case 'DATE':\n if (itemValue instanceof Date) {\n return itemValue.toLocaleDateString();\n }\n if (typeof itemValue === 'string') {\n const date = new Date(itemValue);\n return date.toLocaleDateString();\n }\n return itemValue;\n case 'DATETIME':\n if (itemValue instanceof Date) {\n return itemValue.toLocaleString();\n }\n if (typeof itemValue === 'string') {\n const date = new Date(itemValue);\n return date.toLocaleString();\n }\n return itemValue;\n case 'ARRAY':\n // We assume that the array contains strings\n // If the array contains objects, we need to handle it differently\n return itemValue.join(', ');\n case 'REFERENCE':\n if (fieldDefinition.referenceMetadata && getSchema) {\n const { referencedCollectionId } = fieldDefinition.referenceMetadata;\n const refSchema = getSchema(referencedCollectionId);\n\n if (refSchema) {\n let nameValue: string | undefined;\n let imageValue: string | undefined;\n const displayField = refSchema.displayField;\n if (typeof itemValue === 'object' && itemValue !== null) {\n nameValue = itemValue[displayField] || '';\n imageValue =\n refSchema.imageField && itemValue[refSchema.imageField];\n }\n\n const imageUrl = imageValue && getImageUrl(imageValue);\n return (\n <Box gap=\"SP2\" verticalAlign=\"middle\">\n {imageUrl && (\n <Avatar\n size=\"size24\"\n name={nameValue}\n imgProps={{ src: imageUrl }}\n />\n )}\n <div>{nameValue}</div>\n </Box>\n );\n }\n }\n\n return itemValue;\n case 'IMAGE':\n const imageUrl = getImageUrl(itemValue);\n\n return (\n <Image src={imageUrl} width=\"48px\" dataHook=\"auto-patterns-image\" />\n );\n default:\n return itemValue;\n }\n };\n\n return existingColumns\n .map((column) => {\n const fieldDefinition = fields[column.id];\n if (!fieldDefinition && !overrides?.columns?.[column.id]) {\n return null;\n }\n\n const sortable =\n column.sortable && fieldDefinition?.capabilities?.sortable;\n\n const baseColumnConfig = {\n id: column.id,\n title: column.name || fieldDefinition?.displayName,\n width: column.width,\n ...createSortConfiguration(column, sortable),\n ...createCustomColumnConfiguration(column),\n render: (row: any) => {\n const itemValue = get(row, column.id);\n\n if (overrides?.columns?.[camelCase(column.id)]) {\n return overrides?.columns?.[camelCase(column.id)]?.({\n value: itemValue,\n row,\n });\n }\n\n if (fieldDefinition) {\n return createRenderer(fieldDefinition, itemValue);\n }\n\n return null; // Shouldn't really happen\n },\n };\n\n return baseColumnConfig;\n })\n .filter(Boolean) as TableColumn<any>[];\n};\n\nconst createSortConfiguration = (\n column: Column,\n sortable?: boolean,\n): Partial<TableColumn<any>> => {\n if (!sortable) {\n return {};\n }\n const sortableColumnConfig = {\n sortable,\n defaultSortOrder: column.defaultSortOrder,\n };\n\n // default sort mode is ['asc', 'desc', undefined]\n // so if sort mode is 'desc' -> we want to override the default\n // and set it to ['desc', 'asc', undefined]\n if (column.sortMode && column.sortMode === 'desc') {\n return {\n ...sortableColumnConfig,\n sortMode: ['desc', 'asc', undefined],\n };\n }\n return {\n ...sortableColumnConfig,\n };\n};\n\nconst createCustomColumnConfiguration = (\n column: Column,\n): Partial<TableColumn<any>> => {\n const reorderDisabled = !!column.reorderDisabled;\n\n if (column.hiddenFromCustomColumnsSelection) {\n return { hiddenFromCustomColumnsSelection: true };\n }\n if (column.hideable === false) {\n return {\n hideable: false,\n reorderDisabled,\n };\n }\n return {\n defaultHidden: !!column.defaultHidden,\n reorderDisabled,\n };\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_providers","_lodash","_designSystem","_getImageUrl","_jsxFileName","useColumns","columns","fields","useSchema","getSchema","useSchemaRegistry","overrides","usePatternsWizardOverridesContext","existingColumns","filter","column","_overrides$columns","id","createRenderer","fieldDefinition","itemValue","type","Date","toLocaleDateString","date","toLocaleString","join","referenceMetadata","referencedCollectionId","refSchema","nameValue","imageValue","displayField","_Object$values$find","imageFieldId","Object","values","find","field","imageUrl","getImageUrl","default","createElement","Box","gap","verticalAlign","__self","__source","fileName","lineNumber","columnNumber","Avatar","size","name","imgProps","src","Image","width","dataHook","map","_overrides$columns2","_fieldDefinition$capa","sortable","capabilities","baseColumnConfig","title","displayName","createSortConfiguration","createCustomColumnConfiguration","render","row","_overrides$columns3","get","camelCase","_overrides$columns4","_overrides$columns4$c","call","value","Boolean","exports","sortableColumnConfig","defaultSortOrder","sortMode","undefined","reorderDisabled","hiddenFromCustomColumnsSelection","hideable","defaultHidden"],"sources":["../../../src/hooks/useColumns.tsx"],"sourcesContent":["import React from 'react';\nimport { TableColumn } from '@wix/patterns';\nimport {\n usePatternsWizardOverridesContext,\n useSchema,\n useSchemaRegistry,\n} from '../providers';\nimport { Column, Field } from '../types';\nimport { camelCase, get } from 'lodash';\nimport { Avatar, Box, Image } from '@wix/design-system';\nimport { getImageUrl } from '../utils/media/getImageUrl';\n\nexport const useColumns = (columns: Column[]) => {\n const { fields } = useSchema();\n const { getSchema } = useSchemaRegistry();\n const overrides = usePatternsWizardOverridesContext();\n\n const existingColumns = columns.filter((column) => {\n return !!fields[column.id] || overrides?.columns?.[column.id];\n });\n\n const createRenderer = (fieldDefinition: Field, itemValue: any) => {\n if (itemValue == null) {\n return '';\n }\n\n switch (fieldDefinition.type) {\n case 'BOOLEAN':\n return itemValue ? '✔' : '✖';\n case 'DATE':\n if (itemValue instanceof Date) {\n return itemValue.toLocaleDateString();\n }\n if (typeof itemValue === 'string') {\n const date = new Date(itemValue);\n return date.toLocaleDateString();\n }\n return itemValue;\n case 'DATETIME':\n if (itemValue instanceof Date) {\n return itemValue.toLocaleString();\n }\n if (typeof itemValue === 'string') {\n const date = new Date(itemValue);\n return date.toLocaleString();\n }\n return itemValue;\n case 'ARRAY':\n // We assume that the array contains strings\n // If the array contains objects, we need to handle it differently\n return itemValue.join(', ');\n case 'REFERENCE':\n if (fieldDefinition.referenceMetadata && getSchema) {\n const { referencedCollectionId } = fieldDefinition.referenceMetadata;\n const refSchema = getSchema(referencedCollectionId);\n\n if (refSchema) {\n let nameValue: string | undefined;\n let imageValue: string | undefined;\n const displayField = refSchema.displayField;\n if (typeof itemValue === 'object' && itemValue !== null) {\n nameValue = itemValue[displayField] || '';\n const imageFieldId = Object.values(fields).find(\n (field) => field?.type === 'IMAGE',\n )?.id;\n imageValue = imageFieldId && itemValue[imageFieldId];\n }\n\n const imageUrl = imageValue && getImageUrl(imageValue);\n return (\n <Box gap=\"SP2\" verticalAlign=\"middle\">\n {imageUrl && (\n <Avatar\n size=\"size24\"\n name={nameValue}\n imgProps={{ src: imageUrl }}\n />\n )}\n <div>{nameValue}</div>\n </Box>\n );\n }\n }\n\n return itemValue;\n case 'IMAGE':\n const imageUrl = getImageUrl(itemValue);\n\n return (\n <Image src={imageUrl} width=\"48px\" dataHook=\"auto-patterns-image\" />\n );\n default:\n return itemValue;\n }\n };\n\n return existingColumns\n .map((column) => {\n const fieldDefinition = fields[column.id];\n if (!fieldDefinition && !overrides?.columns?.[column.id]) {\n return null;\n }\n\n const sortable =\n column.sortable && fieldDefinition?.capabilities?.sortable;\n\n const baseColumnConfig = {\n id: column.id,\n title: column.name || fieldDefinition?.displayName,\n width: column.width,\n ...createSortConfiguration(column, sortable),\n ...createCustomColumnConfiguration(column),\n render: (row: any) => {\n const itemValue = get(row, column.id);\n\n if (overrides?.columns?.[camelCase(column.id)]) {\n return overrides?.columns?.[camelCase(column.id)]?.({\n value: itemValue,\n row,\n });\n }\n\n if (fieldDefinition) {\n return createRenderer(fieldDefinition, itemValue);\n }\n\n return null; // Shouldn't really happen\n },\n };\n\n return baseColumnConfig;\n })\n .filter(Boolean) as TableColumn<any>[];\n};\n\nconst createSortConfiguration = (\n column: Column,\n sortable?: boolean,\n): Partial<TableColumn<any>> => {\n if (!sortable) {\n return {};\n }\n const sortableColumnConfig = {\n sortable,\n defaultSortOrder: column.defaultSortOrder,\n };\n\n // default sort mode is ['asc', 'desc', undefined]\n // so if sort mode is 'desc' -> we want to override the default\n // and set it to ['desc', 'asc', undefined]\n if (column.sortMode && column.sortMode === 'desc') {\n return {\n ...sortableColumnConfig,\n sortMode: ['desc', 'asc', undefined],\n };\n }\n return {\n ...sortableColumnConfig,\n };\n};\n\nconst createCustomColumnConfiguration = (\n column: Column,\n): Partial<TableColumn<any>> => {\n const reorderDisabled = !!column.reorderDisabled;\n\n if (column.hiddenFromCustomColumnsSelection) {\n return { hiddenFromCustomColumnsSelection: true };\n }\n if (column.hideable === false) {\n return {\n hideable: false,\n reorderDisabled,\n };\n }\n return {\n defaultHidden: !!column.defaultHidden,\n reorderDisabled,\n };\n};\n"],"mappings":";;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,UAAA,GAAAD,OAAA;AAMA,IAAAE,OAAA,GAAAF,OAAA;AACA,IAAAG,aAAA,GAAAH,OAAA;AACA,IAAAI,YAAA,GAAAJ,OAAA;AAAyD,IAAAK,YAAA;AAElD,MAAMC,UAAU,GAAIC,OAAiB,IAAK;EAC/C,MAAM;IAAEC;EAAO,CAAC,GAAG,IAAAC,oBAAS,EAAC,CAAC;EAC9B,MAAM;IAAEC;EAAU,CAAC,GAAG,IAAAC,4BAAiB,EAAC,CAAC;EACzC,MAAMC,SAAS,GAAG,IAAAC,4CAAiC,EAAC,CAAC;EAErD,MAAMC,eAAe,GAAGP,OAAO,CAACQ,MAAM,CAAEC,MAAM,IAAK;IAAA,IAAAC,kBAAA;IACjD,OAAO,CAAC,CAACT,MAAM,CAACQ,MAAM,CAACE,EAAE,CAAC,KAAIN,SAAS,aAAAK,kBAAA,GAATL,SAAS,CAAEL,OAAO,qBAAlBU,kBAAA,CAAqBD,MAAM,CAACE,EAAE,CAAC;EAC/D,CAAC,CAAC;EAEF,MAAMC,cAAc,GAAGA,CAACC,eAAsB,EAAEC,SAAc,KAAK;IACjE,IAAIA,SAAS,IAAI,IAAI,EAAE;MACrB,OAAO,EAAE;IACX;IAEA,QAAQD,eAAe,CAACE,IAAI;MAC1B,KAAK,SAAS;QACZ,OAAOD,SAAS,GAAG,GAAG,GAAG,GAAG;MAC9B,KAAK,MAAM;QACT,IAAIA,SAAS,YAAYE,IAAI,EAAE;UAC7B,OAAOF,SAAS,CAACG,kBAAkB,CAAC,CAAC;QACvC;QACA,IAAI,OAAOH,SAAS,KAAK,QAAQ,EAAE;UACjC,MAAMI,IAAI,GAAG,IAAIF,IAAI,CAACF,SAAS,CAAC;UAChC,OAAOI,IAAI,CAACD,kBAAkB,CAAC,CAAC;QAClC;QACA,OAAOH,SAAS;MAClB,KAAK,UAAU;QACb,IAAIA,SAAS,YAAYE,IAAI,EAAE;UAC7B,OAAOF,SAAS,CAACK,cAAc,CAAC,CAAC;QACnC;QACA,IAAI,OAAOL,SAAS,KAAK,QAAQ,EAAE;UACjC,MAAMI,IAAI,GAAG,IAAIF,IAAI,CAACF,SAAS,CAAC;UAChC,OAAOI,IAAI,CAACC,cAAc,CAAC,CAAC;QAC9B;QACA,OAAOL,SAAS;MAClB,KAAK,OAAO;QACV;QACA;QACA,OAAOA,SAAS,CAACM,IAAI,CAAC,IAAI,CAAC;MAC7B,KAAK,WAAW;QACd,IAAIP,eAAe,CAACQ,iBAAiB,IAAIlB,SAAS,EAAE;UAClD,MAAM;YAAEmB;UAAuB,CAAC,GAAGT,eAAe,CAACQ,iBAAiB;UACpE,MAAME,SAAS,GAAGpB,SAAS,CAACmB,sBAAsB,CAAC;UAEnD,IAAIC,SAAS,EAAE;YACb,IAAIC,SAA6B;YACjC,IAAIC,UAA8B;YAClC,MAAMC,YAAY,GAAGH,SAAS,CAACG,YAAY;YAC3C,IAAI,OAAOZ,SAAS,KAAK,QAAQ,IAAIA,SAAS,KAAK,IAAI,EAAE;cAAA,IAAAa,mBAAA;cACvDH,SAAS,GAAGV,SAAS,CAACY,YAAY,CAAC,IAAI,EAAE;cACzC,MAAME,YAAY,IAAAD,mBAAA,GAAGE,MAAM,CAACC,MAAM,CAAC7B,MAAM,CAAC,CAAC8B,IAAI,CAC5CC,KAAK,IAAK,CAAAA,KAAK,oBAALA,KAAK,CAAEjB,IAAI,MAAK,OAC7B,CAAC,qBAFoBY,mBAAA,CAElBhB,EAAE;cACLc,UAAU,GAAGG,YAAY,IAAId,SAAS,CAACc,YAAY,CAAC;YACtD;YAEA,MAAMK,QAAQ,GAAGR,UAAU,IAAI,IAAAS,wBAAW,EAACT,UAAU,CAAC;YACtD,oBACElC,MAAA,CAAA4C,OAAA,CAAAC,aAAA,CAACxC,aAAA,CAAAyC,GAAG;cAACC,GAAG,EAAC,KAAK;cAACC,aAAa,EAAC,QAAQ;cAAAC,MAAA;cAAAC,QAAA;gBAAAC,QAAA,EAAA5C,YAAA;gBAAA6C,UAAA;gBAAAC,YAAA;cAAA;YAAA,GAClCX,QAAQ,iBACP1C,MAAA,CAAA4C,OAAA,CAAAC,aAAA,CAACxC,aAAA,CAAAiD,MAAM;cACLC,IAAI,EAAC,QAAQ;cACbC,IAAI,EAAEvB,SAAU;cAChBwB,QAAQ,EAAE;gBAAEC,GAAG,EAAEhB;cAAS,CAAE;cAAAO,MAAA;cAAAC,QAAA;gBAAAC,QAAA,EAAA5C,YAAA;gBAAA6C,UAAA;gBAAAC,YAAA;cAAA;YAAA,CAC7B,CACF,eACDrD,MAAA,CAAA4C,OAAA,CAAAC,aAAA;cAAAI,MAAA;cAAAC,QAAA;gBAAAC,QAAA,EAAA5C,YAAA;gBAAA6C,UAAA;gBAAAC,YAAA;cAAA;YAAA,GAAMpB,SAAe,CAClB,CAAC;UAEV;QACF;QAEA,OAAOV,SAAS;MAClB,KAAK,OAAO;QACV,MAAMmB,QAAQ,GAAG,IAAAC,wBAAW,EAACpB,SAAS,CAAC;QAEvC,oBACEvB,MAAA,CAAA4C,OAAA,CAAAC,aAAA,CAACxC,aAAA,CAAAsD,KAAK;UAACD,GAAG,EAAEhB,QAAS;UAACkB,KAAK,EAAC,MAAM;UAACC,QAAQ,EAAC,qBAAqB;UAAAZ,MAAA;UAAAC,QAAA;YAAAC,QAAA,EAAA5C,YAAA;YAAA6C,UAAA;YAAAC,YAAA;UAAA;QAAA,CAAE,CAAC;MAExE;QACE,OAAO9B,SAAS;IACpB;EACF,CAAC;EAED,OAAOP,eAAe,CACnB8C,GAAG,CAAE5C,MAAM,IAAK;IAAA,IAAA6C,mBAAA,EAAAC,qBAAA;IACf,MAAM1C,eAAe,GAAGZ,MAAM,CAACQ,MAAM,CAACE,EAAE,CAAC;IACzC,IAAI,CAACE,eAAe,IAAI,EAACR,SAAS,aAAAiD,mBAAA,GAATjD,SAAS,CAAEL,OAAO,aAAlBsD,mBAAA,CAAqB7C,MAAM,CAACE,EAAE,CAAC,GAAE;MACxD,OAAO,IAAI;IACb;IAEA,MAAM6C,QAAQ,GACZ/C,MAAM,CAAC+C,QAAQ,KAAI3C,eAAe,aAAA0C,qBAAA,GAAf1C,eAAe,CAAE4C,YAAY,qBAA7BF,qBAAA,CAA+BC,QAAQ;IAE5D,MAAME,gBAAgB,GAAG;MACvB/C,EAAE,EAAEF,MAAM,CAACE,EAAE;MACbgD,KAAK,EAAElD,MAAM,CAACsC,IAAI,KAAIlC,eAAe,oBAAfA,eAAe,CAAE+C,WAAW;MAClDT,KAAK,EAAE1C,MAAM,CAAC0C,KAAK;MACnB,GAAGU,uBAAuB,CAACpD,MAAM,EAAE+C,QAAQ,CAAC;MAC5C,GAAGM,+BAA+B,CAACrD,MAAM,CAAC;MAC1CsD,MAAM,EAAGC,GAAQ,IAAK;QAAA,IAAAC,mBAAA;QACpB,MAAMnD,SAAS,GAAG,IAAAoD,WAAG,EAACF,GAAG,EAAEvD,MAAM,CAACE,EAAE,CAAC;QAErC,IAAIN,SAAS,aAAA4D,mBAAA,GAAT5D,SAAS,CAAEL,OAAO,aAAlBiE,mBAAA,CAAqB,IAAAE,iBAAS,EAAC1D,MAAM,CAACE,EAAE,CAAC,CAAC,EAAE;UAAA,IAAAyD,mBAAA,EAAAC,qBAAA;UAC9C,OAAOhE,SAAS,aAAA+D,mBAAA,GAAT/D,SAAS,CAAEL,OAAO,cAAAqE,qBAAA,GAAlBD,mBAAA,CAAqB,IAAAD,iBAAS,EAAC1D,MAAM,CAACE,EAAE,CAAC,CAAC,qBAA1C0D,qBAAA,CAAAC,IAAA,CAAAF,mBAAA,EAA6C;YAClDG,KAAK,EAAEzD,SAAS;YAChBkD;UACF,CAAC,CAAC;QACJ;QAEA,IAAInD,eAAe,EAAE;UACnB,OAAOD,cAAc,CAACC,eAAe,EAAEC,SAAS,CAAC;QACnD;QAEA,OAAO,IAAI,CAAC,CAAC;MACf;IACF,CAAC;IAED,OAAO4C,gBAAgB;EACzB,CAAC,CAAC,CACDlD,MAAM,CAACgE,OAAO,CAAC;AACpB,CAAC;AAACC,OAAA,CAAA1E,UAAA,GAAAA,UAAA;AAEF,MAAM8D,uBAAuB,GAAGA,CAC9BpD,MAAc,EACd+C,QAAkB,KACY;EAC9B,IAAI,CAACA,QAAQ,EAAE;IACb,OAAO,CAAC,CAAC;EACX;EACA,MAAMkB,oBAAoB,GAAG;IAC3BlB,QAAQ;IACRmB,gBAAgB,EAAElE,MAAM,CAACkE;EAC3B,CAAC;;EAED;EACA;EACA;EACA,IAAIlE,MAAM,CAACmE,QAAQ,IAAInE,MAAM,CAACmE,QAAQ,KAAK,MAAM,EAAE;IACjD,OAAO;MACL,GAAGF,oBAAoB;MACvBE,QAAQ,EAAE,CAAC,MAAM,EAAE,KAAK,EAAEC,SAAS;IACrC,CAAC;EACH;EACA,OAAO;IACL,GAAGH;EACL,CAAC;AACH,CAAC;AAED,MAAMZ,+BAA+B,GACnCrD,MAAc,IACgB;EAC9B,MAAMqE,eAAe,GAAG,CAAC,CAACrE,MAAM,CAACqE,eAAe;EAEhD,IAAIrE,MAAM,CAACsE,gCAAgC,EAAE;IAC3C,OAAO;MAAEA,gCAAgC,EAAE;IAAK,CAAC;EACnD;EACA,IAAItE,MAAM,CAACuE,QAAQ,KAAK,KAAK,EAAE;IAC7B,OAAO;MACLA,QAAQ,EAAE,KAAK;MACfF;IACF,CAAC;EACH;EACA,OAAO;IACLG,aAAa,EAAE,CAAC,CAACxE,MAAM,CAACwE,aAAa;IACrCH;EACF,CAAC;AACH,CAAC","ignoreList":[]}
@@ -3,14 +3,14 @@
3
3
  exports.__esModule = true;
4
4
  exports.useNavigation = void 0;
5
5
  var _react = require("react");
6
- var _patterns = require("@wix/patterns");
6
+ var _router = require("@wix/patterns/router");
7
7
  var _providers = require("../providers");
8
8
  var _reactRouterDom = require("react-router-dom");
9
9
  var _usePagePath = require("./usePagePath");
10
10
  const useNavigation = () => {
11
11
  const {
12
12
  navigateToEntityPage: navigateToEntityPagePatterns
13
- } = (0, _patterns.usePatternsNavigate)();
13
+ } = (0, _router.usePatternsNavigate)();
14
14
  const appConfig = (0, _providers.useAppConfigContext)();
15
15
  const {
16
16
  getSchema
@@ -1 +1 @@
1
- {"version":3,"names":["_react","require","_patterns","_providers","_reactRouterDom","_usePagePath","useNavigation","navigateToEntityPage","navigateToEntityPagePatterns","usePatternsNavigate","appConfig","useAppConfigContext","getSchema","useSchemaRegistry","getPagePath","usePagePath","useCallback","item","entityPageId","_route$params","entityPage","pages","find","page","id","route","collectionId","schema","path","params","generatePath","idField","entity","getParentPagePath","parentPageId","exports"],"sources":["../../../src/hooks/useNavigationUtils.tsx"],"sourcesContent":["import { useCallback } from 'react';\nimport { usePatternsNavigate } from '@wix/patterns';\nimport { useAppConfigContext, useSchemaRegistry } from '../providers';\nimport { generatePath } from 'react-router-dom';\nimport { EntityPageConfig } from '../types';\nimport { usePagePath } from './usePagePath';\n\nexport type NavigateToEntityPageFunc = (args: {\n item: any;\n entityPageId?: string;\n}) => void;\n\nexport const useNavigation = () => {\n const { navigateToEntityPage: navigateToEntityPagePatterns } =\n usePatternsNavigate();\n const appConfig = useAppConfigContext();\n const { getSchema } = useSchemaRegistry();\n const { getPagePath } = usePagePath(appConfig);\n\n const navigateToEntityPage = useCallback(\n ({ item, entityPageId }) => {\n const entityPage = entityPageId\n ? appConfig.pages.find((page) => page.id === entityPageId)\n : null;\n\n if (!entityPage) {\n return;\n }\n\n const { route, collectionId } = entityPage.entityPage as EntityPageConfig;\n const schema = getSchema(collectionId);\n if (route.path && route.params?.id && schema) {\n const path = generatePath(route.path, {\n [route.params.id]: item?.[schema.idField] ?? '',\n });\n navigateToEntityPagePatterns({\n path,\n entity: item,\n });\n }\n },\n [appConfig, navigateToEntityPagePatterns, getSchema],\n );\n\n const getParentPagePath = useCallback(\n (parentPageId?: string): string | undefined => {\n return getPagePath(parentPageId);\n },\n [getPagePath],\n );\n\n return {\n navigateToEntityPage,\n getParentPagePath,\n getPagePath,\n };\n};\n"],"mappings":";;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,SAAA,GAAAD,OAAA;AACA,IAAAE,UAAA,GAAAF,OAAA;AACA,IAAAG,eAAA,GAAAH,OAAA;AAEA,IAAAI,YAAA,GAAAJ,OAAA;AAOO,MAAMK,aAAa,GAAGA,CAAA,KAAM;EACjC,MAAM;IAAEC,oBAAoB,EAAEC;EAA6B,CAAC,GAC1D,IAAAC,6BAAmB,EAAC,CAAC;EACvB,MAAMC,SAAS,GAAG,IAAAC,8BAAmB,EAAC,CAAC;EACvC,MAAM;IAAEC;EAAU,CAAC,GAAG,IAAAC,4BAAiB,EAAC,CAAC;EACzC,MAAM;IAAEC;EAAY,CAAC,GAAG,IAAAC,wBAAW,EAACL,SAAS,CAAC;EAE9C,MAAMH,oBAAoB,GAAG,IAAAS,kBAAW,EACtC,CAAC;IAAEC,IAAI;IAAEC;EAAa,CAAC,KAAK;IAAA,IAAAC,aAAA;IAC1B,MAAMC,UAAU,GAAGF,YAAY,GAC3BR,SAAS,CAACW,KAAK,CAACC,IAAI,CAAEC,IAAI,IAAKA,IAAI,CAACC,EAAE,KAAKN,YAAY,CAAC,GACxD,IAAI;IAER,IAAI,CAACE,UAAU,EAAE;MACf;IACF;IAEA,MAAM;MAAEK,KAAK;MAAEC;IAAa,CAAC,GAAGN,UAAU,CAACA,UAA8B;IACzE,MAAMO,MAAM,GAAGf,SAAS,CAACc,YAAY,CAAC;IACtC,IAAID,KAAK,CAACG,IAAI,KAAAT,aAAA,GAAIM,KAAK,CAACI,MAAM,aAAZV,aAAA,CAAcK,EAAE,IAAIG,MAAM,EAAE;MAC5C,MAAMC,IAAI,GAAG,IAAAE,4BAAY,EAACL,KAAK,CAACG,IAAI,EAAE;QACpC,CAACH,KAAK,CAACI,MAAM,CAACL,EAAE,GAAG,CAAAP,IAAI,oBAAJA,IAAI,CAAGU,MAAM,CAACI,OAAO,CAAC,KAAI;MAC/C,CAAC,CAAC;MACFvB,4BAA4B,CAAC;QAC3BoB,IAAI;QACJI,MAAM,EAAEf;MACV,CAAC,CAAC;IACJ;EACF,CAAC,EACD,CAACP,SAAS,EAAEF,4BAA4B,EAAEI,SAAS,CACrD,CAAC;EAED,MAAMqB,iBAAiB,GAAG,IAAAjB,kBAAW,EAClCkB,YAAqB,IAAyB;IAC7C,OAAOpB,WAAW,CAACoB,YAAY,CAAC;EAClC,CAAC,EACD,CAACpB,WAAW,CACd,CAAC;EAED,OAAO;IACLP,oBAAoB;IACpB0B,iBAAiB;IACjBnB;EACF,CAAC;AACH,CAAC;AAACqB,OAAA,CAAA7B,aAAA,GAAAA,aAAA","ignoreList":[]}
1
+ {"version":3,"names":["_react","require","_router","_providers","_reactRouterDom","_usePagePath","useNavigation","navigateToEntityPage","navigateToEntityPagePatterns","usePatternsNavigate","appConfig","useAppConfigContext","getSchema","useSchemaRegistry","getPagePath","usePagePath","useCallback","item","entityPageId","_route$params","entityPage","pages","find","page","id","route","collectionId","schema","path","params","generatePath","idField","entity","getParentPagePath","parentPageId","exports"],"sources":["../../../src/hooks/useNavigationUtils.tsx"],"sourcesContent":["import { useCallback } from 'react';\nimport { usePatternsNavigate } from '@wix/patterns/router';\nimport { useAppConfigContext, useSchemaRegistry } from '../providers';\nimport { generatePath } from 'react-router-dom';\nimport { EntityPageConfig } from '../types';\nimport { usePagePath } from './usePagePath';\n\nexport type NavigateToEntityPageFunc = (args: {\n item: any;\n entityPageId?: string;\n}) => void;\n\nexport const useNavigation = () => {\n const { navigateToEntityPage: navigateToEntityPagePatterns } =\n usePatternsNavigate();\n const appConfig = useAppConfigContext();\n const { getSchema } = useSchemaRegistry();\n const { getPagePath } = usePagePath(appConfig);\n\n const navigateToEntityPage = useCallback(\n ({ item, entityPageId }) => {\n const entityPage = entityPageId\n ? appConfig.pages.find((page) => page.id === entityPageId)\n : null;\n\n if (!entityPage) {\n return;\n }\n\n const { route, collectionId } = entityPage.entityPage as EntityPageConfig;\n const schema = getSchema(collectionId);\n if (route.path && route.params?.id && schema) {\n const path = generatePath(route.path, {\n [route.params.id]: item?.[schema.idField] ?? '',\n });\n navigateToEntityPagePatterns({\n path,\n entity: item,\n });\n }\n },\n [appConfig, navigateToEntityPagePatterns, getSchema],\n );\n\n const getParentPagePath = useCallback(\n (parentPageId?: string): string | undefined => {\n return getPagePath(parentPageId);\n },\n [getPagePath],\n );\n\n return {\n navigateToEntityPage,\n getParentPagePath,\n getPagePath,\n };\n};\n"],"mappings":";;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AACA,IAAAE,UAAA,GAAAF,OAAA;AACA,IAAAG,eAAA,GAAAH,OAAA;AAEA,IAAAI,YAAA,GAAAJ,OAAA;AAOO,MAAMK,aAAa,GAAGA,CAAA,KAAM;EACjC,MAAM;IAAEC,oBAAoB,EAAEC;EAA6B,CAAC,GAC1D,IAAAC,2BAAmB,EAAC,CAAC;EACvB,MAAMC,SAAS,GAAG,IAAAC,8BAAmB,EAAC,CAAC;EACvC,MAAM;IAAEC;EAAU,CAAC,GAAG,IAAAC,4BAAiB,EAAC,CAAC;EACzC,MAAM;IAAEC;EAAY,CAAC,GAAG,IAAAC,wBAAW,EAACL,SAAS,CAAC;EAE9C,MAAMH,oBAAoB,GAAG,IAAAS,kBAAW,EACtC,CAAC;IAAEC,IAAI;IAAEC;EAAa,CAAC,KAAK;IAAA,IAAAC,aAAA;IAC1B,MAAMC,UAAU,GAAGF,YAAY,GAC3BR,SAAS,CAACW,KAAK,CAACC,IAAI,CAAEC,IAAI,IAAKA,IAAI,CAACC,EAAE,KAAKN,YAAY,CAAC,GACxD,IAAI;IAER,IAAI,CAACE,UAAU,EAAE;MACf;IACF;IAEA,MAAM;MAAEK,KAAK;MAAEC;IAAa,CAAC,GAAGN,UAAU,CAACA,UAA8B;IACzE,MAAMO,MAAM,GAAGf,SAAS,CAACc,YAAY,CAAC;IACtC,IAAID,KAAK,CAACG,IAAI,KAAAT,aAAA,GAAIM,KAAK,CAACI,MAAM,aAAZV,aAAA,CAAcK,EAAE,IAAIG,MAAM,EAAE;MAC5C,MAAMC,IAAI,GAAG,IAAAE,4BAAY,EAACL,KAAK,CAACG,IAAI,EAAE;QACpC,CAACH,KAAK,CAACI,MAAM,CAACL,EAAE,GAAG,CAAAP,IAAI,oBAAJA,IAAI,CAAGU,MAAM,CAACI,OAAO,CAAC,KAAI;MAC/C,CAAC,CAAC;MACFvB,4BAA4B,CAAC;QAC3BoB,IAAI;QACJI,MAAM,EAAEf;MACV,CAAC,CAAC;IACJ;EACF,CAAC,EACD,CAACP,SAAS,EAAEF,4BAA4B,EAAEI,SAAS,CACrD,CAAC;EAED,MAAMqB,iBAAiB,GAAG,IAAAjB,kBAAW,EAClCkB,YAAqB,IAAyB;IAC7C,OAAOpB,WAAW,CAACoB,YAAY,CAAC;EAClC,CAAC,EACD,CAACpB,WAAW,CACd,CAAC;EAED,OAAO;IACLP,oBAAoB;IACpB0B,iBAAiB;IACjBnB;EACF,CAAC;AACH,CAAC;AAACqB,OAAA,CAAA7B,aAAA,GAAAA,aAAA","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["../../../../src/types/actions/base.ts"],"sourcesContent":["export type DividerActionConfig = { type: 'divider' };\n\nexport type BaseActionItemConfig = {\n id: string;\n label?: string;\n};\n\nexport interface Feedback {\n successToast?: { text: string };\n errorToast?: { text: string };\n}\n\nexport interface BaseActionModal {\n title?: { text: string };\n actions?: {\n submit?: { text: string };\n cancel?: { text: string };\n };\n feedback?: Feedback;\n}\n\nexport interface ActionModalField {\n id: string;\n label?: string;\n}\n\nexport interface DeleteActionModal extends BaseActionModal {\n description?: { text: string };\n}\n\nexport interface BulkDeleteActionModal extends DeleteActionModal {}\n\nexport type BulkDeleteAction =\n | {\n mode: 'modal';\n modal: BulkDeleteActionModal;\n custom?: never;\n }\n | {\n mode: 'custom';\n custom: CustomAction;\n modal?: never;\n };\n\nexport type DeleteAction = {\n mode: 'modal';\n modal: DeleteActionModal;\n};\n\nexport interface BaseActionPage {\n id: string;\n}\n\nexport type CustomAction = {};\n\nexport interface ActionModalWithFields extends BaseActionModal {\n fields: ActionModalField[];\n}\n\nexport interface UpdateActionModal extends ActionModalWithFields {}\n\nexport interface CreateActionModal extends ActionModalWithFields {}\n\nexport interface UpdateActionPage extends BaseActionPage {}\n\nexport interface CreateActionPage extends BaseActionPage {}\n\nexport type UpdateAction = {\n mode: 'page';\n page: UpdateActionPage;\n};\n\nexport type CreateAction = {\n mode: 'page';\n page: CreateActionPage;\n};\n\nexport type CreateActionConfig = BaseActionItemConfig & {\n type: 'create';\n create: CreateAction;\n};\n\nexport type UpdateActionConfig = BaseActionItemConfig & {\n type: 'update';\n update: UpdateAction;\n};\n\nexport type DeleteActionConfig = BaseActionItemConfig & {\n type: 'delete';\n delete: DeleteAction;\n};\n\nexport type BulkDeleteActionConfig = BaseActionItemConfig & {\n type: 'bulkDelete';\n bulkDelete: BulkDeleteAction;\n};\n\nexport type CustomActionConfig = BaseActionItemConfig & {\n type: 'custom';\n custom: CustomAction;\n};\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["../../../../src/types/actions/base.ts"],"sourcesContent":["export type DividerActionConfig = { type: 'divider' };\n\nexport type BaseActionItemConfig = {\n id: string;\n label?: string;\n skin?: string;\n};\n\nexport interface Feedback {\n successToast?: { text: string };\n errorToast?: { text: string };\n}\n\nexport interface BaseActionModal {\n title?: { text: string };\n actions?: {\n submit?: { text: string };\n cancel?: { text: string };\n };\n feedback?: Feedback;\n}\n\nexport interface ActionModalField {\n id: string;\n label?: string;\n}\n\nexport interface DeleteActionModal extends BaseActionModal {\n description?: { text: string };\n}\n\nexport interface BulkDeleteActionModal extends DeleteActionModal {}\n\nexport type BulkDeleteAction =\n | {\n mode: 'modal';\n modal: BulkDeleteActionModal;\n custom?: never;\n }\n | {\n mode: 'custom';\n custom: CustomAction;\n modal?: never;\n };\n\nexport type DeleteAction = {\n mode: 'modal';\n modal: DeleteActionModal;\n};\n\nexport interface BaseActionPage {\n id: string;\n}\n\nexport type CustomAction = {};\n\nexport interface ActionModalWithFields extends BaseActionModal {\n fields: ActionModalField[];\n}\n\nexport interface UpdateActionModal extends ActionModalWithFields {}\n\nexport interface CreateActionModal extends ActionModalWithFields {}\n\nexport interface UpdateActionPage extends BaseActionPage {}\n\nexport interface CreateActionPage extends BaseActionPage {}\n\nexport type UpdateAction = {\n mode: 'page';\n page: UpdateActionPage;\n};\n\nexport type CreateAction = {\n mode: 'page';\n page: CreateActionPage;\n};\n\nexport type CreateActionConfig = BaseActionItemConfig & {\n type: 'create';\n create: CreateAction;\n};\n\nexport type UpdateActionConfig = BaseActionItemConfig & {\n type: 'update';\n update: UpdateAction;\n};\n\nexport type DeleteActionConfig = BaseActionItemConfig & {\n type: 'delete';\n delete: DeleteAction;\n};\n\nexport type BulkDeleteActionConfig = BaseActionItemConfig & {\n type: 'bulkDelete';\n bulkDelete: BulkDeleteAction;\n};\n\nexport type CustomActionConfig = BaseActionItemConfig & {\n type: 'custom';\n custom: CustomAction;\n};\n"],"mappings":"","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["../../../src/types/types.ts"],"sourcesContent":["import { EntityPageConfig } from './EntityPageConfig';\nimport { CollectionPageConfig } from './CollectionPageConfig';\nimport { ComputedQuery } from '@wix/patterns';\n\ninterface BaseCollectionConfigCommon {\n collectionId: string;\n}\n\ninterface CMSCollectionConfig extends BaseCollectionConfigCommon {\n entityTypeSource: 'cms';\n custom?: never;\n}\n\ninterface WixCollectionConfig extends BaseCollectionConfigCommon {\n entityTypeSource: 'wix';\n custom?: never;\n}\n\ninterface CustomCollectionConfig extends BaseCollectionConfigCommon {\n entityTypeSource: 'custom';\n custom: {\n id: string;\n };\n}\n\nexport type BaseCollectionConfig =\n | CMSCollectionConfig\n | WixCollectionConfig\n | CustomCollectionConfig;\n\nexport type PatternsFieldType =\n | 'SHORT_TEXT'\n | 'LONG_TEXT'\n | 'NUMBER'\n | 'BOOLEAN'\n | 'DATE'\n | 'DATETIME'\n | 'URL'\n | 'ARRAY'\n | 'REFERENCE'\n | 'IMAGE';\n\nexport interface AppConfig {\n pages: PageConfig[];\n}\n\nexport interface BasePageConfig {\n id: string;\n appMainPage?: boolean;\n}\n\nexport interface CollectionPageConfigType extends BasePageConfig {\n type: 'collectionPage';\n collectionPage: CollectionPageConfig;\n entityPage?: never;\n}\n\nexport interface EntityPageConfigType extends BasePageConfig {\n type: 'entityPage';\n entityPage: EntityPageConfig;\n collectionPage?: never;\n}\n\nexport type PageConfig = CollectionPageConfigType | EntityPageConfigType;\n\nexport type EntityProps = { [key: string]: any };\n\nexport interface IMenuItem<T extends EntityProps = any> {\n item: T;\n}\nexport interface IColumnValue<T> {\n value: T;\n row: Record<string, any>;\n}\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\ninterface BaseField {\n id: string;\n displayName: string;\n validation?: {\n numberRange?: NumberRange;\n stringLengthRange?: StringLengthRange;\n required: boolean;\n };\n capabilities: {\n supportedQueryOperators: QueryOperator[];\n sortable: boolean;\n };\n}\n\nexport interface ReferenceField extends BaseField {\n type: 'REFERENCE';\n referenceMetadata: {\n referencedCollectionId: string;\n };\n}\n\nexport interface NonReferenceField extends BaseField {\n type: Exclude<PatternsFieldType, 'REFERENCE'>;\n}\n\nexport type Field = ReferenceField | NonReferenceField;\n\nexport interface NumberRange {\n min?: number;\n max?: number;\n}\nexport interface StringLengthRange {\n minLength?: number;\n maxLength?: number;\n}\n\nexport interface SchemaConfig {\n id: string;\n fields: Record<string, Field | undefined>;\n displayField: string;\n idField: string;\n imageField?: string;\n actions: {\n get: (entityId: string) => Promise<any>;\n create: (newEntity: Partial<any>) => Promise<any>;\n update: (updatedEntity: any) => Promise<any>;\n delete: (entityId: string) => Promise<any>;\n bulkDelete: (entityIds: string[]) => Promise<any>;\n find: (\n query: ComputedQuery<any>,\n options?: {\n searchableFieldIds?: string[];\n filterFieldMapping?: Record<string, { fieldId: string }>;\n },\n ) => Promise<{ items: any[]; total: number }>;\n };\n}\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["../../../src/types/types.ts"],"sourcesContent":["import { EntityPageConfig } from './EntityPageConfig';\nimport { CollectionPageConfig } from './CollectionPageConfig';\n\ninterface BaseCollectionConfigCommon {\n collectionId: string;\n}\n\ninterface CMSCollectionConfig extends BaseCollectionConfigCommon {\n entityTypeSource: 'cms';\n custom?: never;\n}\n\ninterface WixCollectionConfig extends BaseCollectionConfigCommon {\n entityTypeSource: 'wix';\n custom?: never;\n}\n\ninterface CustomCollectionConfig extends BaseCollectionConfigCommon {\n entityTypeSource: 'custom';\n custom: {\n id: string;\n };\n}\n\nexport type BaseCollectionConfig =\n | CMSCollectionConfig\n | WixCollectionConfig\n | CustomCollectionConfig;\n\nexport type PatternsFieldType =\n | 'SHORT_TEXT'\n | 'LONG_TEXT'\n | 'NUMBER'\n | 'BOOLEAN'\n | 'DATE'\n | 'DATETIME'\n | 'URL'\n | 'ARRAY'\n | 'REFERENCE'\n | 'IMAGE';\n\nexport interface AppConfig {\n pages: PageConfig[];\n}\n\nexport interface BasePageConfig {\n id: string;\n appMainPage?: boolean;\n}\n\nexport interface CollectionPageConfigType extends BasePageConfig {\n type: 'collectionPage';\n collectionPage: CollectionPageConfig;\n entityPage?: never;\n}\n\nexport interface EntityPageConfigType extends BasePageConfig {\n type: 'entityPage';\n entityPage: EntityPageConfig;\n collectionPage?: never;\n}\n\nexport type PageConfig = CollectionPageConfigType | EntityPageConfigType;\n\nexport type EntityProps = { [key: string]: any };\n\nexport interface IMenuItem<T extends EntityProps = any> {\n item: T;\n}\nexport interface IColumnValue<T> {\n value: T;\n row: Record<string, any>;\n}\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\ninterface BaseField {\n id: string;\n displayName: string;\n validation?: {\n numberRange?: NumberRange;\n stringLengthRange?: StringLengthRange;\n required: boolean;\n };\n capabilities: {\n supportedQueryOperators: QueryOperator[];\n sortable: boolean;\n };\n}\n\nexport interface ReferenceField extends BaseField {\n type: 'REFERENCE';\n referenceMetadata: {\n referencedCollectionId: string;\n };\n}\n\nexport interface NonReferenceField extends BaseField {\n type: Exclude<PatternsFieldType, 'REFERENCE'>;\n}\n\nexport type Field = ReferenceField | NonReferenceField;\n\nexport interface NumberRange {\n min?: number;\n max?: number;\n}\nexport interface StringLengthRange {\n minLength?: number;\n maxLength?: number;\n}\n\nexport interface Query {\n limit: number;\n offset: number;\n page: number;\n search?: string;\n cursor?: string | null;\n filters: Record<string, any>;\n sort?: {\n fieldName: string;\n order: 'asc' | 'desc';\n }[];\n}\n\nexport interface SchemaConfig {\n id: string;\n fields: Record<string, Field | undefined>;\n displayField: string;\n idField: string;\n actions: {\n get: (entityId: string) => Promise<any>;\n create: (newEntity: Partial<any>) => Promise<any>;\n update: (updatedEntity: any) => Promise<any>;\n delete: (entityId: string) => Promise<any>;\n bulkDelete: (entityIds: string[]) => Promise<any>;\n find: (\n query: Query,\n options?: {\n searchableFieldIds?: string[];\n filterFieldMapping?: Record<string, { fieldId: string }>;\n },\n ) => Promise<{ items: any[]; total: number }>;\n };\n}\n"],"mappings":"","ignoreList":[]}
@@ -5,7 +5,8 @@ exports.resolveAction = void 0;
5
5
  const resolveAction = (actionConfig, action) => {
6
6
  return {
7
7
  ...action,
8
- label: actionConfig.label ?? action.label
8
+ label: actionConfig.label ?? action.label,
9
+ skin: actionConfig.skin
9
10
  };
10
11
  };
11
12
  exports.resolveAction = resolveAction;
@@ -1 +1 @@
1
- {"version":3,"names":["resolveAction","actionConfig","action","label","exports"],"sources":["../../../../src/utils/actions/resolveAction.ts"],"sourcesContent":["import { BaseActionItemConfig, ResolvedAction } from '../../types';\n\nexport const resolveAction = (\n actionConfig: BaseActionItemConfig,\n action: Partial<ResolvedAction>,\n) => {\n return {\n ...action,\n label: actionConfig.label ?? action.label,\n };\n};\n"],"mappings":";;;;AAEO,MAAMA,aAAa,GAAGA,CAC3BC,YAAkC,EAClCC,MAA+B,KAC5B;EACH,OAAO;IACL,GAAGA,MAAM;IACTC,KAAK,EAAEF,YAAY,CAACE,KAAK,IAAID,MAAM,CAACC;EACtC,CAAC;AACH,CAAC;AAACC,OAAA,CAAAJ,aAAA,GAAAA,aAAA","ignoreList":[]}
1
+ {"version":3,"names":["resolveAction","actionConfig","action","label","skin","exports"],"sources":["../../../../src/utils/actions/resolveAction.ts"],"sourcesContent":["import { BaseActionItemConfig, ResolvedAction } from '../../types';\n\nexport const resolveAction = (\n actionConfig: BaseActionItemConfig,\n action: Partial<ResolvedAction>,\n) => {\n return {\n ...action,\n label: actionConfig.label ?? action.label,\n skin: actionConfig.skin,\n };\n};\n"],"mappings":";;;;AAEO,MAAMA,aAAa,GAAGA,CAC3BC,YAAkC,EAClCC,MAA+B,KAC5B;EACH,OAAO;IACL,GAAGA,MAAM;IACTC,KAAK,EAAEF,YAAY,CAACE,KAAK,IAAID,MAAM,CAACC,KAAK;IACzCC,IAAI,EAAEH,YAAY,CAACG;EACrB,CAAC;AACH,CAAC;AAACC,OAAA,CAAAL,aAAA,GAAAA,aAAA","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["../../../../src/utils/actions/types.ts"],"sourcesContent":["import { ActionCellAPI, CollectionOptimisticActions } from '@wix/patterns';\nimport {\n UpdateActionConfig,\n CustomActionConfig,\n SchemaConfig,\n BulkDeleteActionConfig,\n DeleteActionConfig,\n CreateActionConfig,\n BaseSDK,\n} from '../../types';\nimport { IconElement } from '@wix/design-system';\n\nexport interface ResolvedAction {\n label: string;\n icon: IconElement;\n onClick: () => void;\n disabled?: boolean;\n tooltip?: string;\n}\n\nexport interface BaseContextParams {\n schema: SchemaConfig;\n}\n\nexport interface ActionsSDK extends BaseSDK {\n getSchema: (collectionId: string) => SchemaConfig | undefined;\n collectionId: string; // TODO: Why collectionId is needed here? getSchema with internal collectionId is enough\n getOptimisticActions: (\n collectionId: string,\n ) => CollectionOptimisticActions<any, any>;\n}\n\nexport interface BaseActionParams<T = Record<string, any>> {\n sdk: ActionsSDK;\n actionParams: T;\n}\n\nexport interface ActionCellBaseParams extends BaseActionParams {\n actionParams: {\n item: any;\n index: number;\n api: ActionCellAPI<any, any>;\n };\n}\n\nexport interface BulkDeleteActionParams extends BaseActionParams {\n action: BulkDeleteActionConfig;\n actionParams: {\n selectedValues: any[];\n total: number;\n };\n}\n\nexport interface DeleteActionParams extends ActionCellBaseParams {\n action: DeleteActionConfig;\n}\n\nexport interface UpdateActionParams extends ActionCellBaseParams {\n action: UpdateActionConfig;\n}\n\nexport interface CreateActionParams extends BaseActionParams {\n action: CreateActionConfig;\n}\n\nexport interface CustomActionParams<T> extends BaseActionParams<T> {\n action: CustomActionConfig;\n}\n\nexport interface ActionModalProps {\n modalParams: Record<string, any>;\n actionParams: Record<string, any>;\n sdk: ActionsSDK;\n}\n\nexport interface CustomActionModalProps extends ActionModalProps {\n modalParams: { id: string };\n}\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["../../../../src/utils/actions/types.ts"],"sourcesContent":["import { ActionCellAPI, CollectionOptimisticActions } from '@wix/patterns';\nimport {\n UpdateActionConfig,\n CustomActionConfig,\n SchemaConfig,\n BulkDeleteActionConfig,\n DeleteActionConfig,\n CreateActionConfig,\n BaseSDK,\n} from '../../types';\nimport { IconElement } from '@wix/design-system';\n\nexport interface ResolvedAction {\n label: string;\n icon: IconElement;\n onClick: () => void;\n disabled?: boolean;\n tooltip?: string;\n skin?: string;\n}\n\nexport interface BaseContextParams {\n schema: SchemaConfig;\n}\n\nexport interface ActionsSDK extends BaseSDK {\n getSchema: (collectionId: string) => SchemaConfig | undefined;\n collectionId: string; // TODO: Why collectionId is needed here? getSchema with internal collectionId is enough\n getOptimisticActions: (\n collectionId: string,\n ) => CollectionOptimisticActions<any, any>;\n}\n\nexport interface BaseActionParams<T = Record<string, any>> {\n sdk: ActionsSDK;\n actionParams: T;\n}\n\nexport interface ActionCellBaseParams extends BaseActionParams {\n actionParams: {\n item: any;\n index: number;\n api: ActionCellAPI<any, any>;\n };\n}\n\nexport interface BulkDeleteActionParams extends BaseActionParams {\n action: BulkDeleteActionConfig;\n actionParams: {\n selectedValues: any[];\n total: number;\n };\n}\n\nexport interface DeleteActionParams extends ActionCellBaseParams {\n action: DeleteActionConfig;\n}\n\nexport interface UpdateActionParams extends ActionCellBaseParams {\n action: UpdateActionConfig;\n}\n\nexport interface CreateActionParams extends BaseActionParams {\n action: CreateActionConfig;\n}\n\nexport interface CustomActionParams<T> extends BaseActionParams<T> {\n action: CustomActionConfig;\n}\n\nexport interface ActionModalProps {\n modalParams: Record<string, any>;\n actionParams: Record<string, any>;\n sdk: ActionsSDK;\n}\n\nexport interface CustomActionModalProps extends ActionModalProps {\n modalParams: { id: string };\n}\n"],"mappings":"","ignoreList":[]}
@@ -2,7 +2,7 @@
2
2
 
3
3
  The ActionCell feature adds an interactive action column to collection tables or grid views, enabling users to perform operations on individual entities.
4
4
 
5
- ### Placement and Structure
5
+ ## Placement and Structure
6
6
 
7
7
  The ActionCell has a two-level structure:
8
8
  * `primaryAction`: A single prominent action shown directly in the table/grid row
@@ -37,6 +37,22 @@ Both properties are optional, but at least one should be provided for the Action
37
37
  - Complex operations
38
38
  - ⚠️ Requires implementation: Must register action in overrides
39
39
 
40
+ ### Action Appearance: The `skin` Property
41
+
42
+ All action types support the optional `skin` property to customize the visual appearance of action buttons. The skin determines the button's color scheme and visual emphasis.
43
+
44
+ #### Skin Values by Action Type:
45
+
46
+ **Primary Actions** support these skin values:
47
+ - `"standard"` - Default appearance (blue primary button)
48
+ - `"inverted"` - Inverted color scheme
49
+ - `"premium"` - Premium styling for premium features
50
+
51
+ **Secondary Actions** support these skin values:
52
+ - `"dark"` - Dark appearance
53
+ - `"destructive"` - Red appearance for dangerous actions (ideal for delete operations)
54
+ - `"premium"` - Premium styling for premium features
55
+
40
56
  ### Type Selection Decision Tree
41
57
 
42
58
  When choosing an action type, follow this decision process:
@@ -212,3 +228,6 @@ AI agents should verify these requirements before generating ActionCell configur
212
228
  ✓ `inlineCount` (if specified) is a non-negative number ≤ total secondary actions count
213
229
  ✓ `inlineAlwaysVisible` (if specified) is a boolean value
214
230
  ✓ Inline secondary actions configuration is applied only when secondary actions exist
231
+ ✓ `skin` property (if specified) uses valid skin values:
232
+ - Primary actions: `"standard"`, `"inverted"`, `"premium"`
233
+ - Secondary actions: `"dark"`, `"destructive"`, `"premium"`
@@ -70,7 +70,10 @@ export interface AppConfig {
70
70
  entityPageId?: string; // ID of the entity page to navigate to when clicking a row
71
71
  collection: {
72
72
  collectionId: string; // ID of the Wix Data collection
73
- entityTypeSource: 'cms'; // Data source type. Always 'cms'
73
+ entityTypeSource: 'cms' | 'custom'; // Data source type.
74
+ custom?: {
75
+ id: string;
76
+ };
74
77
  reflectQueryInUrl?: boolean; // Reflects query state (search, filters, sorting) in the browser URL. Default: false
75
78
  selectAllScope?: 'page' | 'all'; // Controls "Select All" scope. 'all' selects entire collection, 'page' selects only visible items. Default: 'all'
76
79
  selectionUpdateMode?: 'preserve' | 'clear'; // Controls selection behavior when data changes. 'preserve' maintains selections, 'clear' clears them. Default: 'clear'
@@ -127,6 +130,7 @@ export interface AppConfig {
127
130
  id: string; // Unique identifier for the action
128
131
  type: 'update' | 'delete' | 'custom'; // Action type
129
132
  label?: string; // Text displayed for the action
133
+ skin?: string; // Visual appearance of the action button (see Action Button Skin Values section)
130
134
  disabled?: boolean; // Whether the action is disabled
131
135
  tooltip?: string; // Tooltip text shown on hover
132
136
  update?: { // Required when type is 'update'
@@ -353,3 +357,64 @@ type LayoutContent =
353
357
  };
354
358
  };
355
359
  ```
360
+
361
+ ---
362
+
363
+ ## Filters Configuration Notes
364
+
365
+ To configure filters in a `collectionPage`, add a `filters` property inside the page's component configuration object. Each filter must reference a valid field by its `fieldId`, and the supported types are:
366
+
367
+ * `numberConfig`: used with fields of type `NUMBER`
368
+ * `dateConfig`: used with fields of type `DATETIME`
369
+ * `booleanConfig`: used with fields of type `BOOLEAN`
370
+ * `enumConfig`: used with fields of type `ARRAY` or `ARRAY_STRING`
371
+
372
+ ### Enum Configuration Implementation
373
+
374
+ When implementing enum filters, you must ask the user to provide the possible option values. Never invent or assume enum values. Here's how to properly handle enumConfig:
375
+
376
+ #### Example: User-Provided Enum Implementation
377
+
378
+ 1. First, collect the possible values from the user:
379
+ ```
380
+ User requests: "I need a filter for pet types."
381
+ You ask: "What are the possible values for pet types that should be available in the filter?"
382
+ User responds: "dog, cat, bird, rabbit, fish"
383
+ ```
384
+
385
+ 2. Then, create the `enumConfig` structure:
386
+ ```json
387
+ "enumConfig": {
388
+ "options": [
389
+ { "value": "dog", "label": "Dog" },
390
+ { "value": "cat", "label": "Cat" },
391
+ { "value": "bird", "label": "Bird" },
392
+ { "value": "rabbit", "label": "Rabbit" },
393
+ { "value": "fish", "label": "Fish" }
394
+ ],
395
+ "selectionMode": "multiple",
396
+ "optionType": "checkbox"
397
+ }
398
+ ```
399
+
400
+ Notice how the `label` is derived from the `value` by capitalizing the first letter. The user's exact values become the `value` property.
401
+
402
+ ### Grouping Filters with Section Title
403
+
404
+ * Filters can be grouped by sections using the `sectionTitle` property.
405
+ * If multiple filter items share the same `sectionTitle`, they will be displayed together in a grouped section in the UI.
406
+ * Filters without a `sectionTitle` will appear in a default section or be displayed individually.
407
+ * Grouping helps maintain clarity, especially when dealing with multiple filter options.
408
+
409
+ ### Key Guidelines
410
+
411
+ * **openByDefault**: Automatically expands the filter accordion when the filters panel is opened.
412
+ * **tagLabel**: Specifies the label displayed in a Tag component on the table or grid once the filter is active. For example, if the tagLabel is "Age", the filter display might show: `Age: 7`.
413
+ * **maxInlineFilters**: Limits the number of filters shown inline in the table toolbar. Others are accessible via the panel. Default is 0.
414
+ * **dateConfig.mode**:
415
+
416
+ * `ONLY_PREDEFINED`: user can select only from preset options
417
+ * `ONLY_CUSTOM`: user must select a custom date range manually (no presets)
418
+ * `COMBINE`: both options available
419
+ * **dateConfig.presets** must be omitted if mode is `ONLY_CUSTOM`.
420
+ * **dateConfig.includeTime**: Controls whether time selection is also enabled alongside date (default is `true`).