@wix/auto-patterns 1.28.0 → 1.30.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/components/AutoPatternsCollectionPage/AutoPatternsCollectionPage.js +19 -58
- package/dist/cjs/components/AutoPatternsCollectionPage/AutoPatternsCollectionPage.js.map +1 -1
- package/dist/cjs/components/AutoPatternsCollectionPageContent/AutoPatternsCollectionPageContent.js +1 -1
- package/dist/cjs/components/AutoPatternsCollectionPageContent/AutoPatternsCollectionPageContent.js.map +1 -1
- package/dist/cjs/components/AutoPatternsCollectionPageFooter/AutoPatternsCollectionPageFooter.js +48 -0
- package/dist/cjs/components/AutoPatternsCollectionPageFooter/AutoPatternsCollectionPageFooter.js.map +1 -0
- package/dist/cjs/components/AutoPatternsEntityPage/RenderLayout/RenderLayoutContent.js +1 -1
- package/dist/cjs/components/AutoPatternsEntityPage/RenderLayout/RenderLayoutContent.js.map +1 -1
- package/dist/cjs/components/AutoPatternsEntityPage/ViewEntityPage/RenderViewLayoutContent.js +1 -1
- package/dist/cjs/components/AutoPatternsEntityPage/ViewEntityPage/RenderViewLayoutContent.js.map +1 -1
- package/dist/cjs/components/AutoPatternsRoute/AutoPatternsRoutes.js +11 -7
- package/dist/cjs/components/AutoPatternsRoute/AutoPatternsRoutes.js.map +1 -1
- package/dist/cjs/components/ModalRenderer.js +1 -1
- package/dist/cjs/components/ModalRenderer.js.map +1 -1
- package/dist/cjs/dataSourceAdapters/cms/cmsAdapter.js +5 -0
- package/dist/cjs/dataSourceAdapters/cms/cmsAdapter.js.map +1 -1
- package/dist/cjs/hooks/index.js +0 -7
- package/dist/cjs/hooks/index.js.map +1 -1
- package/dist/cjs/hooks/useAppContextSync.js +24 -0
- package/dist/cjs/hooks/useAppContextSync.js.map +1 -0
- package/dist/cjs/hooks/useAutoPatternsOptimisticActions.js +2 -2
- package/dist/cjs/hooks/useAutoPatternsOptimisticActions.js.map +1 -1
- package/dist/cjs/hooks/useBaseSDK.js +1 -1
- package/dist/cjs/hooks/useBaseSDK.js.map +1 -1
- package/dist/cjs/hooks/useColumns.js +1 -1
- package/dist/cjs/hooks/useColumns.js.map +1 -1
- package/dist/cjs/hooks/useEmptyStates.js +1 -1
- package/dist/cjs/hooks/useEmptyStates.js.map +1 -1
- package/dist/cjs/hooks/useEntityPageHeaderTexts.js +2 -2
- package/dist/cjs/hooks/useEntityPageHeaderTexts.js.map +1 -1
- package/dist/cjs/hooks/useFilters.js +2 -2
- package/dist/cjs/hooks/useFilters.js.map +1 -1
- package/dist/cjs/hooks/useGridFeatures.js +10 -2
- package/dist/cjs/hooks/useGridFeatures.js.map +1 -1
- package/dist/cjs/hooks/useTableFeatures.js +12 -4
- package/dist/cjs/hooks/useTableFeatures.js.map +1 -1
- package/dist/cjs/hooks/useTableGridSwitchFeatures.js +10 -2
- package/dist/cjs/hooks/useTableGridSwitchFeatures.js.map +1 -1
- package/dist/cjs/providers/AppContext.js +10 -8
- package/dist/cjs/providers/AppContext.js.map +1 -1
- package/dist/cjs/providers/AppContextData.js +40 -0
- package/dist/cjs/providers/AppContextData.js.map +1 -0
- package/dist/cjs/providers/{PatternsWizardOverridesContext.js → AutoPatternsOverridesContext.js} +14 -11
- package/dist/cjs/providers/AutoPatternsOverridesContext.js.map +1 -0
- package/dist/cjs/providers/ItemsContext.js +14 -11
- package/dist/cjs/providers/ItemsContext.js.map +1 -1
- package/dist/cjs/providers/SchemaContext.js +24 -7
- package/dist/cjs/providers/SchemaContext.js.map +1 -1
- package/dist/cjs/providers/index.js +11 -4
- package/dist/cjs/providers/index.js.map +1 -1
- package/dist/cjs/types/BaseSDK.js.map +1 -1
- package/dist/cjs/types/CollectionPageConfig.js.map +1 -1
- package/dist/cjs/types/EntityPageConfig.js.map +1 -1
- package/dist/cjs/types/actions/actionCell.js.map +1 -1
- package/dist/cjs/types/actions/base.js.map +1 -1
- package/dist/cjs/types/actions/bulkActions.js.map +1 -1
- package/dist/cjs/types/actions/collectionPageActions.js.map +1 -1
- package/dist/cjs/types/actions/entityPageActions.js.map +1 -1
- package/dist/cjs/types/fetchData.js.map +1 -1
- package/dist/cjs/types/types.js.map +1 -1
- package/dist/cjs/utils/actions/resolveAction.js +2 -1
- package/dist/cjs/utils/actions/resolveAction.js.map +1 -1
- package/dist/cjs/utils/actions/types.js.map +1 -1
- package/dist/cjs/utils/vibe.js +11 -0
- package/dist/cjs/utils/vibe.js.map +1 -0
- package/dist/docs/action_cell.md +18 -8
- package/dist/docs/app_config_structure.md +36 -1
- package/dist/docs/app_context.md +109 -0
- package/dist/docs/auto-patterns-guide.md +244 -64
- package/dist/docs/bulk_actions.md +10 -5
- package/dist/docs/collection_page.md +1 -1
- package/dist/docs/collection_page_actions.md +16 -9
- package/dist/docs/custom_overrides.md +21 -21
- package/dist/docs/entity_page.md +10 -10
- package/dist/docs/entity_page_actions.md +11 -4
- package/dist/docs/index.md +4 -0
- package/dist/docs/installation.md +3 -3
- package/dist/docs/resolved_action.md +6 -2
- package/dist/docs/wix_fqdn_custom_data_source.md +2 -2
- package/dist/esm/components/AutoPatternsCollectionPage/AutoPatternsCollectionPage.js +2 -25
- package/dist/esm/components/AutoPatternsCollectionPage/AutoPatternsCollectionPage.js.map +1 -1
- package/dist/esm/components/AutoPatternsCollectionPageContent/AutoPatternsCollectionPageContent.js +2 -2
- package/dist/esm/components/AutoPatternsCollectionPageContent/AutoPatternsCollectionPageContent.js.map +1 -1
- package/dist/esm/components/AutoPatternsCollectionPageFooter/AutoPatternsCollectionPageFooter.js +29 -0
- package/dist/esm/components/AutoPatternsCollectionPageFooter/AutoPatternsCollectionPageFooter.js.map +1 -0
- package/dist/esm/components/AutoPatternsEntityPage/RenderLayout/RenderLayoutContent.js +2 -2
- package/dist/esm/components/AutoPatternsEntityPage/RenderLayout/RenderLayoutContent.js.map +1 -1
- package/dist/esm/components/AutoPatternsEntityPage/ViewEntityPage/RenderViewLayoutContent.js +2 -2
- package/dist/esm/components/AutoPatternsEntityPage/ViewEntityPage/RenderViewLayoutContent.js.map +1 -1
- package/dist/esm/components/AutoPatternsRoute/AutoPatternsRoutes.js +5 -1
- package/dist/esm/components/AutoPatternsRoute/AutoPatternsRoutes.js.map +1 -1
- package/dist/esm/components/ModalRenderer.js +2 -2
- package/dist/esm/components/ModalRenderer.js.map +1 -1
- package/dist/esm/dataSourceAdapters/cms/cmsAdapter.js +4 -0
- package/dist/esm/dataSourceAdapters/cms/cmsAdapter.js.map +1 -1
- package/dist/esm/hooks/index.js +0 -1
- package/dist/esm/hooks/index.js.map +1 -1
- package/dist/esm/hooks/useAppContextSync.js +19 -0
- package/dist/esm/hooks/useAppContextSync.js.map +1 -0
- package/dist/esm/hooks/useAutoPatternsOptimisticActions.js +2 -2
- package/dist/esm/hooks/useAutoPatternsOptimisticActions.js.map +1 -1
- package/dist/esm/hooks/useBaseSDK.js +2 -2
- package/dist/esm/hooks/useBaseSDK.js.map +1 -1
- package/dist/esm/hooks/useColumns.js +2 -2
- package/dist/esm/hooks/useColumns.js.map +1 -1
- package/dist/esm/hooks/useEmptyStates.js +2 -2
- package/dist/esm/hooks/useEmptyStates.js.map +1 -1
- package/dist/esm/hooks/useEntityPageHeaderTexts.js +2 -2
- package/dist/esm/hooks/useEntityPageHeaderTexts.js.map +1 -1
- package/dist/esm/hooks/useFilters.js +2 -2
- package/dist/esm/hooks/useFilters.js.map +1 -1
- package/dist/esm/hooks/useGridFeatures.js +10 -2
- package/dist/esm/hooks/useGridFeatures.js.map +1 -1
- package/dist/esm/hooks/useTableFeatures.js +12 -4
- package/dist/esm/hooks/useTableFeatures.js.map +1 -1
- package/dist/esm/hooks/useTableGridSwitchFeatures.js +10 -2
- package/dist/esm/hooks/useTableGridSwitchFeatures.js.map +1 -1
- package/dist/esm/providers/AppContext.js +7 -5
- package/dist/esm/providers/AppContext.js.map +1 -1
- package/dist/esm/providers/AppContextData.js +26 -0
- package/dist/esm/providers/AppContextData.js.map +1 -0
- package/dist/esm/providers/AutoPatternsOverridesContext.js +19 -0
- package/dist/esm/providers/AutoPatternsOverridesContext.js.map +1 -0
- package/dist/esm/providers/ItemsContext.js +10 -7
- package/dist/esm/providers/ItemsContext.js.map +1 -1
- package/dist/esm/providers/SchemaContext.js +23 -6
- package/dist/esm/providers/SchemaContext.js.map +1 -1
- package/dist/esm/providers/index.js +2 -1
- package/dist/esm/providers/index.js.map +1 -1
- package/dist/esm/types/BaseSDK.js.map +1 -1
- package/dist/esm/types/CollectionPageConfig.js.map +1 -1
- package/dist/esm/types/EntityPageConfig.js.map +1 -1
- package/dist/esm/types/actions/actionCell.js.map +1 -1
- package/dist/esm/types/actions/base.js.map +1 -1
- package/dist/esm/types/actions/bulkActions.js.map +1 -1
- package/dist/esm/types/actions/collectionPageActions.js.map +1 -1
- package/dist/esm/types/actions/entityPageActions.js.map +1 -1
- package/dist/esm/types/fetchData.js.map +1 -1
- package/dist/esm/types/types.js.map +1 -1
- package/dist/esm/utils/actions/resolveAction.js +2 -1
- package/dist/esm/utils/actions/resolveAction.js.map +1 -1
- package/dist/esm/utils/actions/types.js.map +1 -1
- package/dist/esm/utils/vibe.js +6 -0
- package/dist/esm/utils/vibe.js.map +1 -0
- package/dist/types/components/AutoPatternsCollectionPage/AutoPatternsCollectionPage.d.ts.map +1 -1
- package/dist/types/components/AutoPatternsCollectionPageFooter/AutoPatternsCollectionPageFooter.d.ts +3 -0
- package/dist/types/components/AutoPatternsCollectionPageFooter/AutoPatternsCollectionPageFooter.d.ts.map +1 -0
- package/dist/types/components/AutoPatternsRoute/AutoPatternsRoutes.d.ts.map +1 -1
- package/dist/types/dataSourceAdapters/cms/cmsAdapter.d.ts +2 -1
- package/dist/types/dataSourceAdapters/cms/cmsAdapter.d.ts.map +1 -1
- package/dist/types/hooks/index.d.ts +0 -1
- package/dist/types/hooks/index.d.ts.map +1 -1
- package/dist/types/hooks/useAppContextSync.d.ts +2 -0
- package/dist/types/hooks/useAppContextSync.d.ts.map +1 -0
- package/dist/types/hooks/useEntityPageHeaderTexts.d.ts.map +1 -1
- package/dist/types/hooks/useGridFeatures.d.ts.map +1 -1
- package/dist/types/hooks/useTableFeatures.d.ts.map +1 -1
- package/dist/types/hooks/useTableGridSwitchFeatures.d.ts.map +1 -1
- package/dist/types/providers/AppContext.d.ts +2 -2
- package/dist/types/providers/AppContext.d.ts.map +1 -1
- package/dist/types/providers/AppContextData.d.ts +13 -0
- package/dist/types/providers/AppContextData.d.ts.map +1 -0
- package/dist/types/providers/{PatternsWizardOverridesContext.d.ts → AutoPatternsOverridesContext.d.ts} +12 -4
- package/dist/types/providers/AutoPatternsOverridesContext.d.ts.map +1 -0
- package/dist/types/providers/ItemsContext.d.ts +6 -4
- package/dist/types/providers/ItemsContext.d.ts.map +1 -1
- package/dist/types/providers/SchemaContext.d.ts.map +1 -1
- package/dist/types/providers/index.d.ts +2 -1
- package/dist/types/providers/index.d.ts.map +1 -1
- package/dist/types/types/BaseSDK.d.ts +2 -2
- package/dist/types/types/BaseSDK.d.ts.map +1 -1
- package/dist/types/types/CollectionPageConfig.d.ts +315 -0
- package/dist/types/types/CollectionPageConfig.d.ts.map +1 -1
- package/dist/types/types/EntityPageConfig.d.ts +111 -0
- package/dist/types/types/EntityPageConfig.d.ts.map +1 -1
- package/dist/types/types/actions/actionCell.d.ts +41 -0
- package/dist/types/types/actions/actionCell.d.ts.map +1 -1
- package/dist/types/types/actions/base.d.ts +85 -0
- package/dist/types/types/actions/base.d.ts.map +1 -1
- package/dist/types/types/actions/bulkActions.d.ts +40 -0
- package/dist/types/types/actions/bulkActions.d.ts.map +1 -1
- package/dist/types/types/actions/collectionPageActions.d.ts +30 -0
- package/dist/types/types/actions/collectionPageActions.d.ts.map +1 -1
- package/dist/types/types/actions/entityPageActions.d.ts +25 -0
- package/dist/types/types/actions/entityPageActions.d.ts.map +1 -1
- package/dist/types/types/fetchData.d.ts +35 -0
- package/dist/types/types/fetchData.d.ts.map +1 -1
- package/dist/types/types/types.d.ts +114 -2
- package/dist/types/types/types.d.ts.map +1 -1
- package/dist/types/utils/actions/resolveAction.d.ts +1 -0
- package/dist/types/utils/actions/resolveAction.d.ts.map +1 -1
- package/dist/types/utils/actions/types.d.ts +1 -0
- package/dist/types/utils/actions/types.d.ts.map +1 -1
- package/dist/types/utils/vibe.d.ts +2 -0
- package/dist/types/utils/vibe.d.ts.map +1 -0
- package/package.json +10 -10
- package/dist/cjs/dataSourceAdapters/factory.js +0 -14
- package/dist/cjs/dataSourceAdapters/factory.js.map +0 -1
- package/dist/cjs/hooks/useUpdateAppContextItems.js +0 -18
- package/dist/cjs/hooks/useUpdateAppContextItems.js.map +0 -1
- package/dist/cjs/providers/PatternsWizardOverridesContext.js.map +0 -1
- package/dist/esm/dataSourceAdapters/factory.js +0 -10
- package/dist/esm/dataSourceAdapters/factory.js.map +0 -1
- package/dist/esm/hooks/useUpdateAppContextItems.js +0 -13
- package/dist/esm/hooks/useUpdateAppContextItems.js.map +0 -1
- package/dist/esm/providers/PatternsWizardOverridesContext.js +0 -15
- package/dist/esm/providers/PatternsWizardOverridesContext.js.map +0 -1
- package/dist/types/dataSourceAdapters/factory.d.ts +0 -3
- package/dist/types/dataSourceAdapters/factory.d.ts.map +0 -1
- package/dist/types/hooks/useUpdateAppContextItems.d.ts +0 -2
- package/dist/types/hooks/useUpdateAppContextItems.d.ts.map +0 -1
- package/dist/types/providers/PatternsWizardOverridesContext.d.ts.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","CollectionToolbarFilters","useSchema","useSchemaRegistry","StaticCollectionFilter","DynamicCollectionFilter","createDateTimeFilter","createBooleanFilter","createNumberFilter","createEnumFilter","createReferenceFilter","useFilters","configuration","schema","schemaRegistry","filters","useMemo","currFilters","items","forEach","filter","id","fieldId","fieldDefinition","fields","label","displayName","openByDefault","tagLabel","sectionTitle","baseParams","commonFilterProps","initiallyOpen","accordionItemProps","toolbarItemProps","toolbarTagProps","type","push","config","dateConfig","booleanConfig","numberConfig","referencedCollectionId","referenceMetadata","referencedSchema","getSchema","dynamicOptionsConfig","additionalParams","enumConfig","filterFieldMapping","reduce","acc","collectionToolbarFiltersProps","inline","maxInlineFilters","panelTitle","filtersData","key","components","collectionData","createElement","_extends","component","props","collectionId","componentName","filtersObject","filterComponent","length","undefined"],"sources":["../../../src/hooks/useFilters.tsx"],"sourcesContent":["import React from 'react';\nimport {\n CollectionToolbarFilters,\n CollectionToolbarFiltersProps,\n Filter,\n} from '@wix/patterns';\nimport { Filter as SchemaFilterType, FiltersConfig } from '../types';\nimport { useSchema } from '../providers/SchemaContext';\nimport { useSchemaRegistry } from '../providers';\nimport {\n StaticCollectionFilter,\n DynamicCollectionFilter,\n} from '../components/filters';\nimport {\n createDateTimeFilter,\n createBooleanFilter,\n createNumberFilter,\n createEnumFilter,\n createReferenceFilter,\n} from '../utils/filterCreators';\n\nexport interface FilterOptions {\n key: string;\n fieldId: string;\n filter: Filter<any>;\n component: React.ElementType;\n collectionData?: { id: string; name: string }[];\n collectionId?: string;\n componentName?: string;\n props: Record<string, any>;\n}\n\nexport interface ReturnValue {\n filters: { [key: string]: Filter<any> };\n components: React.JSX.Element[];\n collectionToolbarFiltersProps: Pick<\n CollectionToolbarFiltersProps,\n 'inline' | 'panelTitle' | 'useNewFilters'\n >;\n}\n\nexport const useFilters = (configuration?: FiltersConfig) => {\n const schema = useSchema();\n const schemaRegistry = useSchemaRegistry();\n const filters = React.useMemo(() => {\n const currFilters: FilterOptions[] = [];\n configuration?.items.forEach((filter) => {\n const { id, fieldId } = filter;\n const fieldDefinition = schema.fields[fieldId];\n if (!fieldDefinition) {\n return;\n }\n\n const label = filter.displayName || fieldDefinition.displayName;\n const { openByDefault, tagLabel, sectionTitle } = filter;\n\n const baseParams = {\n id,\n fieldId,\n commonFilterProps: {\n sectionTitle,\n initiallyOpen: openByDefault,\n accordionItemProps: { label },\n toolbarItemProps: { label },\n toolbarTagProps: { label: tagLabel },\n },\n };\n\n switch (fieldDefinition.type) {\n case 'DATE':\n case 'DATETIME':\n currFilters.push(\n createDateTimeFilter({\n ...baseParams,\n config: filter.dateConfig,\n }),\n );\n break;\n\n case 'BOOLEAN':\n currFilters.push(\n createBooleanFilter({\n ...baseParams,\n config: filter.booleanConfig,\n }),\n );\n break;\n\n case 'NUMBER':\n currFilters.push(\n createNumberFilter({\n ...baseParams,\n config: filter.numberConfig,\n }),\n );\n break;\n\n case 'REFERENCE': {\n const { referencedCollectionId } = fieldDefinition.referenceMetadata;\n const referencedSchema = schemaRegistry.getSchema(\n referencedCollectionId,\n );\n\n if (referencedSchema) {\n currFilters.push(\n createReferenceFilter({\n ...baseParams,\n config: filter.dynamicOptionsConfig,\n additionalParams: {\n referencedSchema,\n },\n }),\n );\n }\n break;\n }\n\n default:\n if (filter?.enumConfig) {\n currFilters.push(\n createEnumFilter({\n ...baseParams,\n config: filter.enumConfig,\n }),\n );\n }\n break;\n }\n });\n return currFilters;\n }, [configuration?.items, schema.fields, schemaRegistry]);\n\n const filterFieldMapping = React.useMemo(() => {\n return configuration?.items.reduce((acc, filter) => {\n acc[filter.id] = filter;\n return acc;\n }, {} as Record<string, SchemaFilterType>);\n }, [configuration?.items]);\n\n const collectionToolbarFiltersProps = React.useMemo<\n Pick<CollectionToolbarFiltersProps, 'inline' | 'panelTitle'>\n >(\n () => ({\n inline: configuration?.maxInlineFilters || 0,\n panelTitle: configuration?.panelTitle,\n }),\n [configuration],\n );\n\n const filtersData = filters.reduce<ReturnValue>(\n (acc, filter) => {\n acc.filters[filter.key] = filter.filter;\n acc.components.push(\n filter.collectionData ? (\n <StaticCollectionFilter\n filter={filter.filter}\n key={filter.key}\n component={filter.component}\n collectionData={filter.collectionData}\n {...filter.props}\n />\n ) : filter.collectionId ? (\n <DynamicCollectionFilter\n filter={filter.filter}\n key={filter.key}\n component={filter.component}\n collectionId={filter.collectionId}\n componentName={filter.props.componentName}\n {...filter.props}\n />\n ) : (\n <filter.component\n key={filter.key}\n filter={filter.filter}\n {...filter.props}\n />\n ),\n );\n\n return acc;\n },\n { filters: {}, components: [], collectionToolbarFiltersProps },\n );\n\n return {\n filterFieldMapping,\n filtersObject: filtersData.filters,\n filterComponent:\n filtersData.components.length > 0 ? (\n <CollectionToolbarFilters {...collectionToolbarFiltersProps}>\n {filtersData.components}\n </CollectionToolbarFilters>\n ) : undefined,\n };\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","CollectionToolbarFilters","useSchema","useSchemaRegistry","StaticCollectionFilter","DynamicCollectionFilter","createDateTimeFilter","createBooleanFilter","createNumberFilter","createEnumFilter","createReferenceFilter","useFilters","configuration","schema","schemaRegistry","filters","useState","currFilters","items","forEach","filter","id","fieldId","fieldDefinition","fields","label","displayName","openByDefault","tagLabel","sectionTitle","baseParams","commonFilterProps","initiallyOpen","accordionItemProps","toolbarItemProps","toolbarTagProps","type","push","config","dateConfig","booleanConfig","numberConfig","referencedCollectionId","referenceMetadata","referencedSchema","getSchema","dynamicOptionsConfig","additionalParams","enumConfig","filterFieldMapping","useMemo","reduce","acc","collectionToolbarFiltersProps","inline","maxInlineFilters","panelTitle","filtersData","key","components","collectionData","createElement","_extends","component","props","collectionId","componentName","filtersObject","filterComponent","length","undefined"],"sources":["../../../src/hooks/useFilters.tsx"],"sourcesContent":["import React from 'react';\nimport {\n CollectionToolbarFilters,\n CollectionToolbarFiltersProps,\n Filter,\n} from '@wix/patterns';\nimport { Filter as SchemaFilterType, FiltersConfig } from '../types';\nimport { useSchema } from '../providers/SchemaContext';\nimport { useSchemaRegistry } from '../providers';\nimport {\n StaticCollectionFilter,\n DynamicCollectionFilter,\n} from '../components/filters';\nimport {\n createDateTimeFilter,\n createBooleanFilter,\n createNumberFilter,\n createEnumFilter,\n createReferenceFilter,\n} from '../utils/filterCreators';\n\nexport interface FilterOptions {\n key: string;\n fieldId: string;\n filter: Filter<any>;\n component: React.ElementType;\n collectionData?: { id: string; name: string }[];\n collectionId?: string;\n componentName?: string;\n props: Record<string, any>;\n}\n\nexport interface ReturnValue {\n filters: { [key: string]: Filter<any> };\n components: React.JSX.Element[];\n collectionToolbarFiltersProps: Pick<\n CollectionToolbarFiltersProps,\n 'inline' | 'panelTitle' | 'useNewFilters'\n >;\n}\n\nexport const useFilters = (configuration?: FiltersConfig) => {\n const schema = useSchema();\n const schemaRegistry = useSchemaRegistry();\n const [filters] = React.useState(() => {\n const currFilters: FilterOptions[] = [];\n configuration?.items.forEach((filter) => {\n const { id, fieldId } = filter;\n const fieldDefinition = schema.fields[fieldId];\n if (!fieldDefinition) {\n return;\n }\n\n const label = filter.displayName || fieldDefinition.displayName;\n const { openByDefault, tagLabel, sectionTitle } = filter;\n\n const baseParams = {\n id,\n fieldId,\n commonFilterProps: {\n sectionTitle,\n initiallyOpen: openByDefault,\n accordionItemProps: { label },\n toolbarItemProps: { label },\n toolbarTagProps: { label: tagLabel },\n },\n };\n\n switch (fieldDefinition.type) {\n case 'DATE':\n case 'DATETIME':\n currFilters.push(\n createDateTimeFilter({\n ...baseParams,\n config: filter.dateConfig,\n }),\n );\n break;\n\n case 'BOOLEAN':\n currFilters.push(\n createBooleanFilter({\n ...baseParams,\n config: filter.booleanConfig,\n }),\n );\n break;\n\n case 'NUMBER':\n currFilters.push(\n createNumberFilter({\n ...baseParams,\n config: filter.numberConfig,\n }),\n );\n break;\n\n case 'REFERENCE': {\n const { referencedCollectionId } = fieldDefinition.referenceMetadata;\n const referencedSchema = schemaRegistry.getSchema(\n referencedCollectionId,\n );\n\n if (referencedSchema) {\n currFilters.push(\n createReferenceFilter({\n ...baseParams,\n config: filter.dynamicOptionsConfig,\n additionalParams: {\n referencedSchema,\n },\n }),\n );\n }\n break;\n }\n\n default:\n if (filter?.enumConfig) {\n currFilters.push(\n createEnumFilter({\n ...baseParams,\n config: filter.enumConfig,\n }),\n );\n }\n break;\n }\n });\n return currFilters;\n });\n\n const filterFieldMapping = React.useMemo(() => {\n return configuration?.items.reduce((acc, filter) => {\n acc[filter.id] = filter;\n return acc;\n }, {} as Record<string, SchemaFilterType>);\n }, [configuration?.items]);\n\n const collectionToolbarFiltersProps = React.useMemo<\n Pick<CollectionToolbarFiltersProps, 'inline' | 'panelTitle'>\n >(\n () => ({\n inline: configuration?.maxInlineFilters || 0,\n panelTitle: configuration?.panelTitle,\n }),\n [configuration],\n );\n\n const filtersData = filters.reduce<ReturnValue>(\n (acc, filter) => {\n acc.filters[filter.key] = filter.filter;\n acc.components.push(\n filter.collectionData ? (\n <StaticCollectionFilter\n filter={filter.filter}\n key={filter.key}\n component={filter.component}\n collectionData={filter.collectionData}\n {...filter.props}\n />\n ) : filter.collectionId ? (\n <DynamicCollectionFilter\n filter={filter.filter}\n key={filter.key}\n component={filter.component}\n collectionId={filter.collectionId}\n componentName={filter.props.componentName}\n {...filter.props}\n />\n ) : (\n <filter.component\n key={filter.key}\n filter={filter.filter}\n {...filter.props}\n />\n ),\n );\n\n return acc;\n },\n { filters: {}, components: [], collectionToolbarFiltersProps },\n );\n\n return {\n filterFieldMapping,\n filtersObject: filtersData.filters,\n filterComponent:\n filtersData.components.length > 0 ? (\n <CollectionToolbarFilters {...collectionToolbarFiltersProps}>\n {filtersData.components}\n </CollectionToolbarFilters>\n ) : undefined,\n };\n};\n"],"mappings":";AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SACEC,wBAAwB,QAGnB,eAAe;AAEtB,SAASC,SAAS,QAAQ,4BAA4B;AACtD,SAASC,iBAAiB,QAAQ,cAAc;AAChD,SACEC,sBAAsB,EACtBC,uBAAuB,QAClB,uBAAuB;AAC9B,SACEC,oBAAoB,EACpBC,mBAAmB,EACnBC,kBAAkB,EAClBC,gBAAgB,EAChBC,qBAAqB,QAChB,yBAAyB;AAsBhC,OAAO,MAAMC,UAAU,GAAIC,aAA6B,IAAK;EAC3D,MAAMC,MAAM,GAAGX,SAAS,CAAC,CAAC;EAC1B,MAAMY,cAAc,GAAGX,iBAAiB,CAAC,CAAC;EAC1C,MAAM,CAACY,OAAO,CAAC,GAAGf,KAAK,CAACgB,QAAQ,CAAC,MAAM;IACrC,MAAMC,WAA4B,GAAG,EAAE;IACvCL,aAAa,YAAbA,aAAa,CAAEM,KAAK,CAACC,OAAO,CAAEC,MAAM,IAAK;MACvC,MAAM;QAAEC,EAAE;QAAEC;MAAQ,CAAC,GAAGF,MAAM;MAC9B,MAAMG,eAAe,GAAGV,MAAM,CAACW,MAAM,CAACF,OAAO,CAAC;MAC9C,IAAI,CAACC,eAAe,EAAE;QACpB;MACF;MAEA,MAAME,KAAK,GAAGL,MAAM,CAACM,WAAW,IAAIH,eAAe,CAACG,WAAW;MAC/D,MAAM;QAAEC,aAAa;QAAEC,QAAQ;QAAEC;MAAa,CAAC,GAAGT,MAAM;MAExD,MAAMU,UAAU,GAAG;QACjBT,EAAE;QACFC,OAAO;QACPS,iBAAiB,EAAE;UACjBF,YAAY;UACZG,aAAa,EAAEL,aAAa;UAC5BM,kBAAkB,EAAE;YAAER;UAAM,CAAC;UAC7BS,gBAAgB,EAAE;YAAET;UAAM,CAAC;UAC3BU,eAAe,EAAE;YAAEV,KAAK,EAAEG;UAAS;QACrC;MACF,CAAC;MAED,QAAQL,eAAe,CAACa,IAAI;QAC1B,KAAK,MAAM;QACX,KAAK,UAAU;UACbnB,WAAW,CAACoB,IAAI,CACd/B,oBAAoB,CAAC;YACnB,GAAGwB,UAAU;YACbQ,MAAM,EAAElB,MAAM,CAACmB;UACjB,CAAC,CACH,CAAC;UACD;QAEF,KAAK,SAAS;UACZtB,WAAW,CAACoB,IAAI,CACd9B,mBAAmB,CAAC;YAClB,GAAGuB,UAAU;YACbQ,MAAM,EAAElB,MAAM,CAACoB;UACjB,CAAC,CACH,CAAC;UACD;QAEF,KAAK,QAAQ;UACXvB,WAAW,CAACoB,IAAI,CACd7B,kBAAkB,CAAC;YACjB,GAAGsB,UAAU;YACbQ,MAAM,EAAElB,MAAM,CAACqB;UACjB,CAAC,CACH,CAAC;UACD;QAEF,KAAK,WAAW;UAAE;YAChB,MAAM;cAAEC;YAAuB,CAAC,GAAGnB,eAAe,CAACoB,iBAAiB;YACpE,MAAMC,gBAAgB,GAAG9B,cAAc,CAAC+B,SAAS,CAC/CH,sBACF,CAAC;YAED,IAAIE,gBAAgB,EAAE;cACpB3B,WAAW,CAACoB,IAAI,CACd3B,qBAAqB,CAAC;gBACpB,GAAGoB,UAAU;gBACbQ,MAAM,EAAElB,MAAM,CAAC0B,oBAAoB;gBACnCC,gBAAgB,EAAE;kBAChBH;gBACF;cACF,CAAC,CACH,CAAC;YACH;YACA;UACF;QAEA;UACE,IAAIxB,MAAM,YAANA,MAAM,CAAE4B,UAAU,EAAE;YACtB/B,WAAW,CAACoB,IAAI,CACd5B,gBAAgB,CAAC;cACf,GAAGqB,UAAU;cACbQ,MAAM,EAAElB,MAAM,CAAC4B;YACjB,CAAC,CACH,CAAC;UACH;UACA;MACJ;IACF,CAAC,CAAC;IACF,OAAO/B,WAAW;EACpB,CAAC,CAAC;EAEF,MAAMgC,kBAAkB,GAAGjD,KAAK,CAACkD,OAAO,CAAC,MAAM;IAC7C,OAAOtC,aAAa,oBAAbA,aAAa,CAAEM,KAAK,CAACiC,MAAM,CAAC,CAACC,GAAG,EAAEhC,MAAM,KAAK;MAClDgC,GAAG,CAAChC,MAAM,CAACC,EAAE,CAAC,GAAGD,MAAM;MACvB,OAAOgC,GAAG;IACZ,CAAC,EAAE,CAAC,CAAqC,CAAC;EAC5C,CAAC,EAAE,CAACxC,aAAa,oBAAbA,aAAa,CAAEM,KAAK,CAAC,CAAC;EAE1B,MAAMmC,6BAA6B,GAAGrD,KAAK,CAACkD,OAAO,CAGjD,OAAO;IACLI,MAAM,EAAE,CAAA1C,aAAa,oBAAbA,aAAa,CAAE2C,gBAAgB,KAAI,CAAC;IAC5CC,UAAU,EAAE5C,aAAa,oBAAbA,aAAa,CAAE4C;EAC7B,CAAC,CAAC,EACF,CAAC5C,aAAa,CAChB,CAAC;EAED,MAAM6C,WAAW,GAAG1C,OAAO,CAACoC,MAAM,CAChC,CAACC,GAAG,EAAEhC,MAAM,KAAK;IACfgC,GAAG,CAACrC,OAAO,CAACK,MAAM,CAACsC,GAAG,CAAC,GAAGtC,MAAM,CAACA,MAAM;IACvCgC,GAAG,CAACO,UAAU,CAACtB,IAAI,CACjBjB,MAAM,CAACwC,cAAc,gBACnB5D,KAAA,CAAA6D,aAAA,CAACzD,sBAAsB,EAAA0D,QAAA;MACrB1C,MAAM,EAAEA,MAAM,CAACA,MAAO;MACtBsC,GAAG,EAAEtC,MAAM,CAACsC,GAAI;MAChBK,SAAS,EAAE3C,MAAM,CAAC2C,SAAU;MAC5BH,cAAc,EAAExC,MAAM,CAACwC;IAAe,GAClCxC,MAAM,CAAC4C,KAAK,CACjB,CAAC,GACA5C,MAAM,CAAC6C,YAAY,gBACrBjE,KAAA,CAAA6D,aAAA,CAACxD,uBAAuB,EAAAyD,QAAA;MACtB1C,MAAM,EAAEA,MAAM,CAACA,MAAO;MACtBsC,GAAG,EAAEtC,MAAM,CAACsC,GAAI;MAChBK,SAAS,EAAE3C,MAAM,CAAC2C,SAAU;MAC5BE,YAAY,EAAE7C,MAAM,CAAC6C,YAAa;MAClCC,aAAa,EAAE9C,MAAM,CAAC4C,KAAK,CAACE;IAAc,GACtC9C,MAAM,CAAC4C,KAAK,CACjB,CAAC,gBAEFhE,KAAA,CAAA6D,aAAA,CAACzC,MAAM,CAAC2C,SAAS,EAAAD,QAAA;MACfJ,GAAG,EAAEtC,MAAM,CAACsC,GAAI;MAChBtC,MAAM,EAAEA,MAAM,CAACA;IAAO,GAClBA,MAAM,CAAC4C,KAAK,CACjB,CAEL,CAAC;IAED,OAAOZ,GAAG;EACZ,CAAC,EACD;IAAErC,OAAO,EAAE,CAAC,CAAC;IAAE4C,UAAU,EAAE,EAAE;IAAEN;EAA8B,CAC/D,CAAC;EAED,OAAO;IACLJ,kBAAkB;IAClBkB,aAAa,EAAEV,WAAW,CAAC1C,OAAO;IAClCqD,eAAe,EACbX,WAAW,CAACE,UAAU,CAACU,MAAM,GAAG,CAAC,gBAC/BrE,KAAA,CAAA6D,aAAA,CAAC5D,wBAAwB,EAAKoD,6BAA6B,EACxDI,WAAW,CAACE,UACW,CAAC,GACzBW;EACR,CAAC;AACH,CAAC","ignoreList":[]}
|
|
@@ -4,7 +4,8 @@ import { useCommonCollectionFeatures } from './useCommonCollectionFeatures';
|
|
|
4
4
|
import { useFilters } from './useFilters';
|
|
5
5
|
import { useBaseGridFeatures } from './useBaseGridFeatures';
|
|
6
6
|
import { useBaseCollectionParams } from './useBaseCollectionParams';
|
|
7
|
-
import {
|
|
7
|
+
import { useAppContextSync } from './useAppContextSync';
|
|
8
|
+
import { useCallback } from 'react';
|
|
8
9
|
export const useGridFeatures = configuration => {
|
|
9
10
|
const {
|
|
10
11
|
renderItem,
|
|
@@ -30,7 +31,14 @@ export const useGridFeatures = configuration => {
|
|
|
30
31
|
});
|
|
31
32
|
const state = useGridCollection(params);
|
|
32
33
|
const items = useSelector(() => state.collection.result.items);
|
|
33
|
-
|
|
34
|
+
const refreshCollection = useCallback(() => {
|
|
35
|
+
return () => {
|
|
36
|
+
return state.collection.clearResultAndMoveToStart({
|
|
37
|
+
force: true
|
|
38
|
+
});
|
|
39
|
+
};
|
|
40
|
+
}, [state.collection]);
|
|
41
|
+
useAppContextSync(items, refreshCollection);
|
|
34
42
|
const commonFeatures = useCommonCollectionFeatures({
|
|
35
43
|
...configuration,
|
|
36
44
|
collectionState: state.collection
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useFetchData","useGridCollection","useSelector","useCommonCollectionFeatures","useFilters","useBaseGridFeatures","useBaseCollectionParams","
|
|
1
|
+
{"version":3,"names":["useFetchData","useGridCollection","useSelector","useCommonCollectionFeatures","useFilters","useBaseGridFeatures","useBaseCollectionParams","useAppContextSync","useCallback","useGridFeatures","configuration","renderItem","imagePlacement","preset","visibleFieldIds","filterComponent","filtersObject","filterFieldMapping","filters","fetchData","searchableFieldIds","params","config","collection","state","items","result","refreshCollection","clearResultAndMoveToStart","force","commonFeatures","collectionState"],"sources":["../../../src/hooks/useGridFeatures.tsx"],"sourcesContent":["import { GridConfig } from '../types';\nimport { useFetchData } from './useFetchData';\nimport { useGridCollection, useSelector } from '@wix/patterns';\nimport { useCommonCollectionFeatures } from './useCommonCollectionFeatures';\nimport { useFilters } from './useFilters';\nimport { useBaseGridFeatures } from './useBaseGridFeatures';\nimport { useBaseCollectionParams } from './useBaseCollectionParams';\nimport { useAppContextSync } from './useAppContextSync';\nimport { useCallback } from 'react';\n\nexport const useGridFeatures = (configuration: GridConfig) => {\n const { renderItem, imagePlacement, preset, visibleFieldIds } =\n useBaseGridFeatures(configuration);\n\n const { filterComponent, filtersObject, filterFieldMapping } = useFilters(\n configuration.filters,\n );\n\n const { fetchData } = useFetchData({\n searchableFieldIds: visibleFieldIds,\n filterFieldMapping,\n });\n\n const params = useBaseCollectionParams({\n config: configuration.collection,\n fetchData,\n filters: filtersObject,\n });\n\n const state = useGridCollection<any>(params);\n const items = useSelector(() => state.collection.result.items);\n\n const refreshCollection = useCallback(() => {\n return () => {\n return state.collection.clearResultAndMoveToStart({ force: true });\n };\n }, [state.collection]);\n\n useAppContextSync(items, refreshCollection);\n\n const commonFeatures = useCommonCollectionFeatures({\n ...configuration,\n collectionState: state.collection,\n });\n\n return {\n ...commonFeatures,\n state,\n imagePlacement,\n preset,\n renderItem,\n filters: filterComponent,\n };\n};\n"],"mappings":"AACA,SAASA,YAAY,QAAQ,gBAAgB;AAC7C,SAASC,iBAAiB,EAAEC,WAAW,QAAQ,eAAe;AAC9D,SAASC,2BAA2B,QAAQ,+BAA+B;AAC3E,SAASC,UAAU,QAAQ,cAAc;AACzC,SAASC,mBAAmB,QAAQ,uBAAuB;AAC3D,SAASC,uBAAuB,QAAQ,2BAA2B;AACnE,SAASC,iBAAiB,QAAQ,qBAAqB;AACvD,SAASC,WAAW,QAAQ,OAAO;AAEnC,OAAO,MAAMC,eAAe,GAAIC,aAAyB,IAAK;EAC5D,MAAM;IAAEC,UAAU;IAAEC,cAAc;IAAEC,MAAM;IAAEC;EAAgB,CAAC,GAC3DT,mBAAmB,CAACK,aAAa,CAAC;EAEpC,MAAM;IAAEK,eAAe;IAAEC,aAAa;IAAEC;EAAmB,CAAC,GAAGb,UAAU,CACvEM,aAAa,CAACQ,OAChB,CAAC;EAED,MAAM;IAAEC;EAAU,CAAC,GAAGnB,YAAY,CAAC;IACjCoB,kBAAkB,EAAEN,eAAe;IACnCG;EACF,CAAC,CAAC;EAEF,MAAMI,MAAM,GAAGf,uBAAuB,CAAC;IACrCgB,MAAM,EAAEZ,aAAa,CAACa,UAAU;IAChCJ,SAAS;IACTD,OAAO,EAAEF;EACX,CAAC,CAAC;EAEF,MAAMQ,KAAK,GAAGvB,iBAAiB,CAAMoB,MAAM,CAAC;EAC5C,MAAMI,KAAK,GAAGvB,WAAW,CAAC,MAAMsB,KAAK,CAACD,UAAU,CAACG,MAAM,CAACD,KAAK,CAAC;EAE9D,MAAME,iBAAiB,GAAGnB,WAAW,CAAC,MAAM;IAC1C,OAAO,MAAM;MACX,OAAOgB,KAAK,CAACD,UAAU,CAACK,yBAAyB,CAAC;QAAEC,KAAK,EAAE;MAAK,CAAC,CAAC;IACpE,CAAC;EACH,CAAC,EAAE,CAACL,KAAK,CAACD,UAAU,CAAC,CAAC;EAEtBhB,iBAAiB,CAACkB,KAAK,EAAEE,iBAAiB,CAAC;EAE3C,MAAMG,cAAc,GAAG3B,2BAA2B,CAAC;IACjD,GAAGO,aAAa;IAChBqB,eAAe,EAAEP,KAAK,CAACD;EACzB,CAAC,CAAC;EAEF,OAAO;IACL,GAAGO,cAAc;IACjBN,KAAK;IACLZ,cAAc;IACdC,MAAM;IACNF,UAAU;IACVO,OAAO,EAAEH;EACX,CAAC;AACH,CAAC","ignoreList":[]}
|
|
@@ -3,9 +3,10 @@ import { TableSections, useSelector, useTableCollection } from '@wix/patterns';
|
|
|
3
3
|
import { useCommonCollectionFeatures } from './useCommonCollectionFeatures';
|
|
4
4
|
import { useFilters } from './useFilters';
|
|
5
5
|
import { useBaseTableFeatures } from './useBaseTableFeatures';
|
|
6
|
-
import {
|
|
6
|
+
import { useAutoPatternsOverridesContext } from '../providers/AutoPatternsOverridesContext';
|
|
7
7
|
import { useBaseCollectionParams } from './useBaseCollectionParams';
|
|
8
|
-
import {
|
|
8
|
+
import { useAppContextSync } from './useAppContextSync';
|
|
9
|
+
import { useCallback } from 'react';
|
|
9
10
|
export const useTableFeatures = configuration => {
|
|
10
11
|
var _configuration$sectio, _overrides$sections;
|
|
11
12
|
const {
|
|
@@ -28,7 +29,7 @@ export const useTableFeatures = configuration => {
|
|
|
28
29
|
searchableFieldIds: visibleFieldIds,
|
|
29
30
|
filterFieldMapping
|
|
30
31
|
});
|
|
31
|
-
const overrides =
|
|
32
|
+
const overrides = useAutoPatternsOverridesContext();
|
|
32
33
|
const params = useBaseCollectionParams({
|
|
33
34
|
config: configuration.collection,
|
|
34
35
|
fetchData,
|
|
@@ -36,7 +37,14 @@ export const useTableFeatures = configuration => {
|
|
|
36
37
|
});
|
|
37
38
|
const state = useTableCollection(params);
|
|
38
39
|
const items = useSelector(() => state.collection.result.items);
|
|
39
|
-
|
|
40
|
+
const refreshCollection = useCallback(() => {
|
|
41
|
+
return () => {
|
|
42
|
+
return state.collection.clearResultAndMoveToStart({
|
|
43
|
+
force: true
|
|
44
|
+
});
|
|
45
|
+
};
|
|
46
|
+
}, [state.collection]);
|
|
47
|
+
useAppContextSync(items, refreshCollection);
|
|
40
48
|
const commonFeatures = useCommonCollectionFeatures({
|
|
41
49
|
...configuration,
|
|
42
50
|
collectionState: state.collection
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useFetchData","TableSections","useSelector","useTableCollection","useCommonCollectionFeatures","useFilters","useBaseTableFeatures","
|
|
1
|
+
{"version":3,"names":["useFetchData","TableSections","useSelector","useTableCollection","useCommonCollectionFeatures","useFilters","useBaseTableFeatures","useAutoPatternsOverridesContext","useBaseCollectionParams","useAppContextSync","useCallback","useTableFeatures","configuration","_configuration$sectio","_overrides$sections","filterComponent","filtersObject","filterFieldMapping","filters","customColumns","visibleFieldIds","columns","onRowClick","stickyColumns","stickySelectionColumn","showTitleBar","fetchData","searchableFieldIds","overrides","params","config","collection","state","items","result","refreshCollection","clearResultAndMoveToStart","force","commonFeatures","collectionState","sections","id","renderSection","undefined"],"sources":["../../../src/hooks/useTableFeatures.tsx"],"sourcesContent":["import { TableConfig } from '../types';\nimport { useFetchData } from './useFetchData';\nimport { TableSections, useSelector, useTableCollection } from '@wix/patterns';\nimport { useCommonCollectionFeatures } from './useCommonCollectionFeatures';\nimport { useFilters } from './useFilters';\nimport { useBaseTableFeatures } from './useBaseTableFeatures';\nimport { useAutoPatternsOverridesContext } from '../providers/AutoPatternsOverridesContext';\nimport { useBaseCollectionParams } from './useBaseCollectionParams';\nimport { useAppContextSync } from './useAppContextSync';\nimport { useCallback } from 'react';\n\nexport const useTableFeatures = (configuration: TableConfig) => {\n const { filterComponent, filtersObject, filterFieldMapping } = useFilters(\n configuration.filters,\n );\n const {\n customColumns,\n visibleFieldIds,\n columns,\n onRowClick,\n stickyColumns,\n stickySelectionColumn,\n showTitleBar,\n } = useBaseTableFeatures(configuration);\n\n const { fetchData } = useFetchData({\n searchableFieldIds: visibleFieldIds,\n filterFieldMapping,\n });\n\n const overrides = useAutoPatternsOverridesContext();\n\n const params = useBaseCollectionParams({\n config: configuration.collection,\n fetchData,\n filters: filtersObject,\n });\n\n const state = useTableCollection<any>(params);\n const items = useSelector(() => state.collection.result.items);\n\n const refreshCollection = useCallback(() => {\n return () => {\n return state.collection.clearResultAndMoveToStart({ force: true });\n };\n }, [state.collection]);\n\n useAppContextSync(items, refreshCollection);\n\n const commonFeatures = useCommonCollectionFeatures({\n ...configuration,\n collectionState: state.collection,\n });\n\n const sections =\n configuration.sections?.id &&\n overrides?.sections?.[configuration.sections.id]\n ? {\n renderSection: overrides.sections[configuration.sections.id],\n TableSections,\n }\n : undefined;\n\n return {\n ...commonFeatures,\n state,\n columns,\n filters: filterComponent,\n customColumns,\n onRowClick,\n stickyColumns,\n stickySelectionColumn,\n showTitleBar,\n sections,\n };\n};\n"],"mappings":"AACA,SAASA,YAAY,QAAQ,gBAAgB;AAC7C,SAASC,aAAa,EAAEC,WAAW,EAAEC,kBAAkB,QAAQ,eAAe;AAC9E,SAASC,2BAA2B,QAAQ,+BAA+B;AAC3E,SAASC,UAAU,QAAQ,cAAc;AACzC,SAASC,oBAAoB,QAAQ,wBAAwB;AAC7D,SAASC,+BAA+B,QAAQ,2CAA2C;AAC3F,SAASC,uBAAuB,QAAQ,2BAA2B;AACnE,SAASC,iBAAiB,QAAQ,qBAAqB;AACvD,SAASC,WAAW,QAAQ,OAAO;AAEnC,OAAO,MAAMC,gBAAgB,GAAIC,aAA0B,IAAK;EAAA,IAAAC,qBAAA,EAAAC,mBAAA;EAC9D,MAAM;IAAEC,eAAe;IAAEC,aAAa;IAAEC;EAAmB,CAAC,GAAGZ,UAAU,CACvEO,aAAa,CAACM,OAChB,CAAC;EACD,MAAM;IACJC,aAAa;IACbC,eAAe;IACfC,OAAO;IACPC,UAAU;IACVC,aAAa;IACbC,qBAAqB;IACrBC;EACF,CAAC,GAAGnB,oBAAoB,CAACM,aAAa,CAAC;EAEvC,MAAM;IAAEc;EAAU,CAAC,GAAG1B,YAAY,CAAC;IACjC2B,kBAAkB,EAAEP,eAAe;IACnCH;EACF,CAAC,CAAC;EAEF,MAAMW,SAAS,GAAGrB,+BAA+B,CAAC,CAAC;EAEnD,MAAMsB,MAAM,GAAGrB,uBAAuB,CAAC;IACrCsB,MAAM,EAAElB,aAAa,CAACmB,UAAU;IAChCL,SAAS;IACTR,OAAO,EAAEF;EACX,CAAC,CAAC;EAEF,MAAMgB,KAAK,GAAG7B,kBAAkB,CAAM0B,MAAM,CAAC;EAC7C,MAAMI,KAAK,GAAG/B,WAAW,CAAC,MAAM8B,KAAK,CAACD,UAAU,CAACG,MAAM,CAACD,KAAK,CAAC;EAE9D,MAAME,iBAAiB,GAAGzB,WAAW,CAAC,MAAM;IAC1C,OAAO,MAAM;MACX,OAAOsB,KAAK,CAACD,UAAU,CAACK,yBAAyB,CAAC;QAAEC,KAAK,EAAE;MAAK,CAAC,CAAC;IACpE,CAAC;EACH,CAAC,EAAE,CAACL,KAAK,CAACD,UAAU,CAAC,CAAC;EAEtBtB,iBAAiB,CAACwB,KAAK,EAAEE,iBAAiB,CAAC;EAE3C,MAAMG,cAAc,GAAGlC,2BAA2B,CAAC;IACjD,GAAGQ,aAAa;IAChB2B,eAAe,EAAEP,KAAK,CAACD;EACzB,CAAC,CAAC;EAEF,MAAMS,QAAQ,GACZ,CAAA3B,qBAAA,GAAAD,aAAa,CAAC4B,QAAQ,aAAtB3B,qBAAA,CAAwB4B,EAAE,IAC1Bb,SAAS,aAAAd,mBAAA,GAATc,SAAS,CAAEY,QAAQ,aAAnB1B,mBAAA,CAAsBF,aAAa,CAAC4B,QAAQ,CAACC,EAAE,CAAC,GAC5C;IACEC,aAAa,EAAEd,SAAS,CAACY,QAAQ,CAAC5B,aAAa,CAAC4B,QAAQ,CAACC,EAAE,CAAC;IAC5DxC;EACF,CAAC,GACD0C,SAAS;EAEf,OAAO;IACL,GAAGL,cAAc;IACjBN,KAAK;IACLX,OAAO;IACPH,OAAO,EAAEH,eAAe;IACxBI,aAAa;IACbG,UAAU;IACVC,aAAa;IACbC,qBAAqB;IACrBC,YAAY;IACZe;EACF,CAAC;AACH,CAAC","ignoreList":[]}
|
|
@@ -5,7 +5,8 @@ import { useFilters } from './useFilters';
|
|
|
5
5
|
import { useBaseGridFeatures } from './useBaseGridFeatures';
|
|
6
6
|
import { useBaseTableFeatures } from './useBaseTableFeatures';
|
|
7
7
|
import { useBaseCollectionParams } from './useBaseCollectionParams';
|
|
8
|
-
import {
|
|
8
|
+
import { useAppContextSync } from './useAppContextSync';
|
|
9
|
+
import { useCallback } from 'react';
|
|
9
10
|
export const useTableGridSwitchFeatures = config => {
|
|
10
11
|
const {
|
|
11
12
|
filterComponent,
|
|
@@ -40,7 +41,14 @@ export const useTableGridSwitchFeatures = config => {
|
|
|
40
41
|
});
|
|
41
42
|
const state = useTableGridSwitchCollection(params);
|
|
42
43
|
const items = useSelector(() => state.collection.result.items);
|
|
43
|
-
|
|
44
|
+
const refreshCollection = useCallback(() => {
|
|
45
|
+
return () => {
|
|
46
|
+
return state.collection.clearResultAndMoveToStart({
|
|
47
|
+
force: true
|
|
48
|
+
});
|
|
49
|
+
};
|
|
50
|
+
}, [state.collection]);
|
|
51
|
+
useAppContextSync(items, refreshCollection);
|
|
44
52
|
const commonFeatures = useCommonCollectionFeatures({
|
|
45
53
|
...config,
|
|
46
54
|
collectionState: state.collection
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useFetchData","useSelector","useTableGridSwitchCollection","useCommonCollectionFeatures","useFilters","useBaseGridFeatures","useBaseTableFeatures","useBaseCollectionParams","
|
|
1
|
+
{"version":3,"names":["useFetchData","useSelector","useTableGridSwitchCollection","useCommonCollectionFeatures","useFilters","useBaseGridFeatures","useBaseTableFeatures","useBaseCollectionParams","useAppContextSync","useCallback","useTableGridSwitchFeatures","config","filterComponent","filtersObject","filterFieldMapping","filters","preset","imagePlacement","visibleFieldIds","gridVisibleFieldIds","renderItem","customColumns","tableVisibleFieldIds","columns","tableColumns","onRowClick","stickyColumns","stickySelectionColumn","showTitleBar","fetchData","searchableFieldIds","Array","from","Set","params","collection","state","items","result","refreshCollection","clearResultAndMoveToStart","force","commonFeatures","collectionState","horizontalScroll"],"sources":["../../../src/hooks/useTableGridSwitchFeatures.tsx"],"sourcesContent":["import { TableGridSwitchConfig } from '../types';\nimport { useFetchData } from './useFetchData';\nimport { useSelector, useTableGridSwitchCollection } from '@wix/patterns';\nimport { useCommonCollectionFeatures } from './useCommonCollectionFeatures';\nimport { useFilters } from './useFilters';\nimport { useBaseGridFeatures } from './useBaseGridFeatures';\nimport { useBaseTableFeatures } from './useBaseTableFeatures';\nimport { useBaseCollectionParams } from './useBaseCollectionParams';\nimport { useAppContextSync } from './useAppContextSync';\nimport { useCallback } from 'react';\n\nexport const useTableGridSwitchFeatures = (config: TableGridSwitchConfig) => {\n const { filterComponent, filtersObject, filterFieldMapping } = useFilters(\n config.filters,\n );\n\n const {\n preset,\n imagePlacement,\n visibleFieldIds: gridVisibleFieldIds,\n renderItem,\n } = useBaseGridFeatures(config);\n\n const {\n customColumns,\n visibleFieldIds: tableVisibleFieldIds,\n columns: tableColumns,\n onRowClick,\n stickyColumns,\n stickySelectionColumn,\n showTitleBar,\n } = useBaseTableFeatures(config);\n\n const { fetchData } = useFetchData({\n searchableFieldIds: Array.from(\n new Set([...tableVisibleFieldIds, ...gridVisibleFieldIds]),\n ),\n filterFieldMapping,\n });\n\n const params = useBaseCollectionParams({\n config: config.collection,\n fetchData,\n filters: filtersObject,\n });\n\n const state = useTableGridSwitchCollection<any>(params);\n const items = useSelector(() => state.collection.result.items);\n\n const refreshCollection = useCallback(() => {\n return () => {\n return state.collection.clearResultAndMoveToStart({ force: true });\n };\n }, [state.collection]);\n\n useAppContextSync(items, refreshCollection);\n\n const commonFeatures = useCommonCollectionFeatures({\n ...config,\n collectionState: state.collection,\n });\n\n return {\n ...commonFeatures,\n state,\n columns: tableColumns,\n filters: filterComponent,\n customColumns,\n onRowClick,\n stickyColumns,\n stickySelectionColumn,\n horizontalScroll: true,\n // Grid specific features\n imagePlacement,\n preset,\n renderItem,\n showTitleBar,\n };\n};\n"],"mappings":"AACA,SAASA,YAAY,QAAQ,gBAAgB;AAC7C,SAASC,WAAW,EAAEC,4BAA4B,QAAQ,eAAe;AACzE,SAASC,2BAA2B,QAAQ,+BAA+B;AAC3E,SAASC,UAAU,QAAQ,cAAc;AACzC,SAASC,mBAAmB,QAAQ,uBAAuB;AAC3D,SAASC,oBAAoB,QAAQ,wBAAwB;AAC7D,SAASC,uBAAuB,QAAQ,2BAA2B;AACnE,SAASC,iBAAiB,QAAQ,qBAAqB;AACvD,SAASC,WAAW,QAAQ,OAAO;AAEnC,OAAO,MAAMC,0BAA0B,GAAIC,MAA6B,IAAK;EAC3E,MAAM;IAAEC,eAAe;IAAEC,aAAa;IAAEC;EAAmB,CAAC,GAAGV,UAAU,CACvEO,MAAM,CAACI,OACT,CAAC;EAED,MAAM;IACJC,MAAM;IACNC,cAAc;IACdC,eAAe,EAAEC,mBAAmB;IACpCC;EACF,CAAC,GAAGf,mBAAmB,CAACM,MAAM,CAAC;EAE/B,MAAM;IACJU,aAAa;IACbH,eAAe,EAAEI,oBAAoB;IACrCC,OAAO,EAAEC,YAAY;IACrBC,UAAU;IACVC,aAAa;IACbC,qBAAqB;IACrBC;EACF,CAAC,GAAGtB,oBAAoB,CAACK,MAAM,CAAC;EAEhC,MAAM;IAAEkB;EAAU,CAAC,GAAG7B,YAAY,CAAC;IACjC8B,kBAAkB,EAAEC,KAAK,CAACC,IAAI,CAC5B,IAAIC,GAAG,CAAC,CAAC,GAAGX,oBAAoB,EAAE,GAAGH,mBAAmB,CAAC,CAC3D,CAAC;IACDL;EACF,CAAC,CAAC;EAEF,MAAMoB,MAAM,GAAG3B,uBAAuB,CAAC;IACrCI,MAAM,EAAEA,MAAM,CAACwB,UAAU;IACzBN,SAAS;IACTd,OAAO,EAAEF;EACX,CAAC,CAAC;EAEF,MAAMuB,KAAK,GAAGlC,4BAA4B,CAAMgC,MAAM,CAAC;EACvD,MAAMG,KAAK,GAAGpC,WAAW,CAAC,MAAMmC,KAAK,CAACD,UAAU,CAACG,MAAM,CAACD,KAAK,CAAC;EAE9D,MAAME,iBAAiB,GAAG9B,WAAW,CAAC,MAAM;IAC1C,OAAO,MAAM;MACX,OAAO2B,KAAK,CAACD,UAAU,CAACK,yBAAyB,CAAC;QAAEC,KAAK,EAAE;MAAK,CAAC,CAAC;IACpE,CAAC;EACH,CAAC,EAAE,CAACL,KAAK,CAACD,UAAU,CAAC,CAAC;EAEtB3B,iBAAiB,CAAC6B,KAAK,EAAEE,iBAAiB,CAAC;EAE3C,MAAMG,cAAc,GAAGvC,2BAA2B,CAAC;IACjD,GAAGQ,MAAM;IACTgC,eAAe,EAAEP,KAAK,CAACD;EACzB,CAAC,CAAC;EAEF,OAAO;IACL,GAAGO,cAAc;IACjBN,KAAK;IACLb,OAAO,EAAEC,YAAY;IACrBT,OAAO,EAAEH,eAAe;IACxBS,aAAa;IACbI,UAAU;IACVC,aAAa;IACbC,qBAAqB;IACrBiB,gBAAgB,EAAE,IAAI;IACtB;IACA3B,cAAc;IACdD,MAAM;IACNI,UAAU;IACVQ;EACF,CAAC;AACH,CAAC","ignoreList":[]}
|
|
@@ -1,15 +1,17 @@
|
|
|
1
1
|
import React, { createContext, useContext } from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import { AppContextDataProvider, useAppContextData } from './AppContextData';
|
|
3
3
|
const AppContext = /*#__PURE__*/createContext(undefined);
|
|
4
4
|
const AppContextInner = _ref => {
|
|
5
5
|
let {
|
|
6
6
|
children
|
|
7
7
|
} = _ref;
|
|
8
8
|
const {
|
|
9
|
-
items
|
|
10
|
-
|
|
9
|
+
items,
|
|
10
|
+
refreshCollection
|
|
11
|
+
} = useAppContextData();
|
|
11
12
|
const contextValue = {
|
|
12
|
-
items
|
|
13
|
+
items,
|
|
14
|
+
refreshCollection
|
|
13
15
|
};
|
|
14
16
|
return /*#__PURE__*/React.createElement(AppContext.Provider, {
|
|
15
17
|
value: contextValue
|
|
@@ -19,7 +21,7 @@ export const AppContextProvider = _ref2 => {
|
|
|
19
21
|
let {
|
|
20
22
|
children
|
|
21
23
|
} = _ref2;
|
|
22
|
-
return /*#__PURE__*/React.createElement(
|
|
24
|
+
return /*#__PURE__*/React.createElement(AppContextDataProvider, null, /*#__PURE__*/React.createElement(AppContextInner, null, children));
|
|
23
25
|
};
|
|
24
26
|
export const useAppContext = () => {
|
|
25
27
|
const context = useContext(AppContext);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","createContext","useContext","
|
|
1
|
+
{"version":3,"names":["React","createContext","useContext","AppContextDataProvider","useAppContextData","AppContext","undefined","AppContextInner","_ref","children","items","refreshCollection","contextValue","createElement","Provider","value","AppContextProvider","_ref2","useAppContext","context","Error"],"sources":["../../../src/providers/AppContext.tsx"],"sourcesContent":["import React, { ReactNode, createContext, useContext } from 'react';\nimport {\n AppContextDataProvider,\n AppContextDataValue,\n useAppContextData,\n} from './AppContextData';\n\ninterface AppContextValue\n extends Pick<AppContextDataValue, 'items' | 'refreshCollection'> {}\n\nconst AppContext = createContext<AppContextValue | undefined>(undefined);\n\nexport interface AppContextProviderProps {\n children: ReactNode;\n}\n\nconst AppContextInner: React.FC<AppContextProviderProps> = ({ children }) => {\n const { items, refreshCollection } = useAppContextData();\n\n const contextValue: AppContextValue = {\n items,\n refreshCollection,\n };\n\n return (\n <AppContext.Provider value={contextValue}>{children}</AppContext.Provider>\n );\n};\n\nexport const AppContextProvider: React.FC<AppContextProviderProps> = ({\n children,\n}) => {\n return (\n <AppContextDataProvider>\n <AppContextInner>{children}</AppContextInner>\n </AppContextDataProvider>\n );\n};\n\nexport const useAppContext = (): AppContextValue => {\n const context = useContext(AppContext);\n\n if (context === undefined) {\n throw new Error('useAppContext must be used within an AppContextProvider');\n }\n\n return context;\n};\n"],"mappings":"AAAA,OAAOA,KAAK,IAAeC,aAAa,EAAEC,UAAU,QAAQ,OAAO;AACnE,SACEC,sBAAsB,EAEtBC,iBAAiB,QACZ,kBAAkB;AAKzB,MAAMC,UAAU,gBAAGJ,aAAa,CAA8BK,SAAS,CAAC;AAMxE,MAAMC,eAAkD,GAAGC,IAAA,IAAkB;EAAA,IAAjB;IAAEC;EAAS,CAAC,GAAAD,IAAA;EACtE,MAAM;IAAEE,KAAK;IAAEC;EAAkB,CAAC,GAAGP,iBAAiB,CAAC,CAAC;EAExD,MAAMQ,YAA6B,GAAG;IACpCF,KAAK;IACLC;EACF,CAAC;EAED,oBACEX,KAAA,CAAAa,aAAA,CAACR,UAAU,CAACS,QAAQ;IAACC,KAAK,EAAEH;EAAa,GAAEH,QAA8B,CAAC;AAE9E,CAAC;AAED,OAAO,MAAMO,kBAAqD,GAAGC,KAAA,IAE/D;EAAA,IAFgE;IACpER;EACF,CAAC,GAAAQ,KAAA;EACC,oBACEjB,KAAA,CAAAa,aAAA,CAACV,sBAAsB,qBACrBH,KAAA,CAAAa,aAAA,CAACN,eAAe,QAAEE,QAA0B,CACtB,CAAC;AAE7B,CAAC;AAED,OAAO,MAAMS,aAAa,GAAGA,CAAA,KAAuB;EAClD,MAAMC,OAAO,GAAGjB,UAAU,CAACG,UAAU,CAAC;EAEtC,IAAIc,OAAO,KAAKb,SAAS,EAAE;IACzB,MAAM,IAAIc,KAAK,CAAC,yDAAyD,CAAC;EAC5E;EAEA,OAAOD,OAAO;AAChB,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import React, { createContext, useContext, useState } from 'react';
|
|
2
|
+
const AppContextDataContext = /*#__PURE__*/createContext(undefined);
|
|
3
|
+
export const AppContextDataProvider = _ref => {
|
|
4
|
+
let {
|
|
5
|
+
children
|
|
6
|
+
} = _ref;
|
|
7
|
+
const [items, setItems] = useState([]);
|
|
8
|
+
const [refreshCollection, setRefreshCollection] = useState(() => {});
|
|
9
|
+
const contextValue = {
|
|
10
|
+
items,
|
|
11
|
+
setItems,
|
|
12
|
+
refreshCollection,
|
|
13
|
+
setRefreshCollection
|
|
14
|
+
};
|
|
15
|
+
return /*#__PURE__*/React.createElement(AppContextDataContext.Provider, {
|
|
16
|
+
value: contextValue
|
|
17
|
+
}, children);
|
|
18
|
+
};
|
|
19
|
+
export const useAppContextData = () => {
|
|
20
|
+
const context = useContext(AppContextDataContext);
|
|
21
|
+
if (context === undefined) {
|
|
22
|
+
throw new Error('useAppContextData must be used within an AppContextDataProvider');
|
|
23
|
+
}
|
|
24
|
+
return context;
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=AppContextData.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","createContext","useContext","useState","AppContextDataContext","undefined","AppContextDataProvider","_ref","children","items","setItems","refreshCollection","setRefreshCollection","contextValue","createElement","Provider","value","useAppContextData","context","Error"],"sources":["../../../src/providers/AppContextData.tsx"],"sourcesContent":["import React, { ReactNode, createContext, useContext, useState } from 'react';\n\nexport interface AppContextDataValue {\n items: any[];\n setItems: (items: any[]) => void;\n refreshCollection: () => void;\n setRefreshCollection: (refreshFn: () => void) => void;\n}\n\nconst AppContextDataContext = createContext<AppContextDataValue | undefined>(\n undefined,\n);\n\nexport interface AppContextDataProviderProps {\n children: ReactNode;\n}\n\nexport const AppContextDataProvider: React.FC<AppContextDataProviderProps> = ({\n children,\n}) => {\n const [items, setItems] = useState<any[]>([]);\n const [refreshCollection, setRefreshCollection] = useState<() => void>(\n () => {},\n );\n\n const contextValue: AppContextDataValue = {\n items,\n setItems,\n refreshCollection,\n setRefreshCollection,\n };\n\n return (\n <AppContextDataContext.Provider value={contextValue}>\n {children}\n </AppContextDataContext.Provider>\n );\n};\n\nexport const useAppContextData = (): AppContextDataValue => {\n const context = useContext(AppContextDataContext);\n\n if (context === undefined) {\n throw new Error(\n 'useAppContextData must be used within an AppContextDataProvider',\n );\n }\n\n return context;\n};\n"],"mappings":"AAAA,OAAOA,KAAK,IAAeC,aAAa,EAAEC,UAAU,EAAEC,QAAQ,QAAQ,OAAO;AAS7E,MAAMC,qBAAqB,gBAAGH,aAAa,CACzCI,SACF,CAAC;AAMD,OAAO,MAAMC,sBAA6D,GAAGC,IAAA,IAEvE;EAAA,IAFwE;IAC5EC;EACF,CAAC,GAAAD,IAAA;EACC,MAAM,CAACE,KAAK,EAAEC,QAAQ,CAAC,GAAGP,QAAQ,CAAQ,EAAE,CAAC;EAC7C,MAAM,CAACQ,iBAAiB,EAAEC,oBAAoB,CAAC,GAAGT,QAAQ,CACxD,MAAM,CAAC,CACT,CAAC;EAED,MAAMU,YAAiC,GAAG;IACxCJ,KAAK;IACLC,QAAQ;IACRC,iBAAiB;IACjBC;EACF,CAAC;EAED,oBACEZ,KAAA,CAAAc,aAAA,CAACV,qBAAqB,CAACW,QAAQ;IAACC,KAAK,EAAEH;EAAa,GACjDL,QAC6B,CAAC;AAErC,CAAC;AAED,OAAO,MAAMS,iBAAiB,GAAGA,CAAA,KAA2B;EAC1D,MAAMC,OAAO,GAAGhB,UAAU,CAACE,qBAAqB,CAAC;EAEjD,IAAIc,OAAO,KAAKb,SAAS,EAAE;IACzB,MAAM,IAAIc,KAAK,CACb,iEACF,CAAC;EACH;EAEA,OAAOD,OAAO;AAChB,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import React, { createContext, useContext } from 'react';
|
|
2
|
+
const AutoPatternsOverridesContext = /*#__PURE__*/createContext(undefined);
|
|
3
|
+
export const AutoPatternsOverridesProvider = _ref => {
|
|
4
|
+
let {
|
|
5
|
+
children,
|
|
6
|
+
value
|
|
7
|
+
} = _ref;
|
|
8
|
+
return /*#__PURE__*/React.createElement(AutoPatternsOverridesContext.Provider, {
|
|
9
|
+
value: value
|
|
10
|
+
}, children);
|
|
11
|
+
};
|
|
12
|
+
export const useAutoPatternsOverridesContext = () => {
|
|
13
|
+
return useContext(AutoPatternsOverridesContext);
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
// For backwards compatibility
|
|
17
|
+
|
|
18
|
+
export const PatternsWizardOverridesProvider = AutoPatternsOverridesProvider;
|
|
19
|
+
//# sourceMappingURL=AutoPatternsOverridesContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","createContext","useContext","AutoPatternsOverridesContext","undefined","AutoPatternsOverridesProvider","_ref","children","value","createElement","Provider","useAutoPatternsOverridesContext","PatternsWizardOverridesProvider"],"sources":["../../../src/providers/AutoPatternsOverridesContext.tsx"],"sourcesContent":["import React, { createContext, useContext, ReactNode } from 'react';\nimport {\n CustomComponentProps,\n CustomActionCellPrimaryActionResolver,\n CustomActionCellSecondaryActionResolver,\n CustomEntityPageActionResolver,\n CustomBulkActionsActionResolver,\n CustomActionCollectionPageActionResolver,\n CustomActionCollectionPageActionOnRowClickResolver,\n IColumnValue,\n SchemaConfig,\n} from '../types';\n\nimport { Section, useOptimisticActions } from '@wix/patterns';\nimport { BadgeSkin, IconElement } from '@wix/design-system';\nimport { collections } from '@wix/data';\n\nexport interface AutoPatternsOverridesContextProps {\n actions?: Record<\n string,\n | CustomActionCellPrimaryActionResolver\n | CustomActionCellSecondaryActionResolver\n | CustomBulkActionsActionResolver\n | CustomEntityPageActionResolver\n | CustomActionCollectionPageActionResolver\n | CustomActionCollectionPageActionOnRowClickResolver\n >;\n columns?: Record<string, (props: IColumnValue<any>) => void>;\n modals?: Record<string, React.FC<any>>;\n emptyState?: Record<string, () => void>;\n components?: Record<string, React.FC<CustomComponentProps>>;\n slots?: Record<string, React.FC>;\n entityPageHeaderSubtitle?: Record<\n string,\n (entity: Record<string, any>) => { text: string }\n >;\n entityPageHeaderBadges?: Record<\n string,\n (entity: Record<string, any>) => {\n text: string;\n skin?: BadgeSkin;\n prefixIcon?: IconElement;\n suffixIcon?: IconElement;\n }[]\n >;\n customDataSources?: Record<\n string,\n (collectionId: string, context: any) => Promise<SchemaConfig>\n >;\n cmsSchema?: Record<string, collections.DataCollection>;\n sections?: Record<string, (item: any) => Section>;\n optimisticActions?: Record<\n string,\n Parameters<typeof useOptimisticActions>[1]\n >;\n}\n\nconst AutoPatternsOverridesContext = createContext<\n AutoPatternsOverridesContextProps | undefined\n>(undefined);\n\nexport const AutoPatternsOverridesProvider: React.FC<{\n children: ReactNode;\n value: AutoPatternsOverridesContextProps;\n}> = ({ children, value }) => {\n return (\n <AutoPatternsOverridesContext.Provider value={value}>\n {children}\n </AutoPatternsOverridesContext.Provider>\n );\n};\n\nexport const useAutoPatternsOverridesContext = ():\n | AutoPatternsOverridesContextProps\n | undefined => {\n return useContext(AutoPatternsOverridesContext);\n};\n\n// For backwards compatibility\nexport interface PatternsWizardOverridesContextProps\n extends AutoPatternsOverridesContextProps {}\nexport const PatternsWizardOverridesProvider = AutoPatternsOverridesProvider;\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,aAAa,EAAEC,UAAU,QAAmB,OAAO;AAyDnE,MAAMC,4BAA4B,gBAAGF,aAAa,CAEhDG,SAAS,CAAC;AAEZ,OAAO,MAAMC,6BAGX,GAAGC,IAAA,IAAyB;EAAA,IAAxB;IAAEC,QAAQ;IAAEC;EAAM,CAAC,GAAAF,IAAA;EACvB,oBACEN,KAAA,CAAAS,aAAA,CAACN,4BAA4B,CAACO,QAAQ;IAACF,KAAK,EAAEA;EAAM,GACjDD,QACoC,CAAC;AAE5C,CAAC;AAED,OAAO,MAAMI,+BAA+B,GAAGA,CAAA,KAE9B;EACf,OAAOT,UAAU,CAACC,4BAA4B,CAAC;AACjD,CAAC;;AAED;;AAGA,OAAO,MAAMS,+BAA+B,GAAGP,6BAA6B","ignoreList":[]}
|
|
@@ -1,22 +1,25 @@
|
|
|
1
1
|
import React, { createContext, useContext, useState } from 'react';
|
|
2
|
-
const
|
|
3
|
-
export const
|
|
2
|
+
const AppContextDataContext = /*#__PURE__*/createContext(undefined);
|
|
3
|
+
export const AppContextDataProvider = _ref => {
|
|
4
4
|
let {
|
|
5
5
|
children
|
|
6
6
|
} = _ref;
|
|
7
7
|
const [items, setItems] = useState([]);
|
|
8
|
+
const [refreshCollection, setRefreshCollection] = useState(undefined);
|
|
8
9
|
const contextValue = {
|
|
9
10
|
items,
|
|
10
|
-
setItems
|
|
11
|
+
setItems,
|
|
12
|
+
refreshCollection,
|
|
13
|
+
setRefreshCollection
|
|
11
14
|
};
|
|
12
|
-
return /*#__PURE__*/React.createElement(
|
|
15
|
+
return /*#__PURE__*/React.createElement(AppContextDataContext.Provider, {
|
|
13
16
|
value: contextValue
|
|
14
17
|
}, children);
|
|
15
18
|
};
|
|
16
|
-
export const
|
|
17
|
-
const context = useContext(
|
|
19
|
+
export const useAppContextData = () => {
|
|
20
|
+
const context = useContext(AppContextDataContext);
|
|
18
21
|
if (context === undefined) {
|
|
19
|
-
throw new Error('
|
|
22
|
+
throw new Error('useAppContextData must be used within an AppContextDataProvider');
|
|
20
23
|
}
|
|
21
24
|
return context;
|
|
22
25
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","createContext","useContext","useState","
|
|
1
|
+
{"version":3,"names":["React","createContext","useContext","useState","AppContextDataContext","undefined","AppContextDataProvider","_ref","children","items","setItems","refreshCollection","setRefreshCollection","contextValue","createElement","Provider","value","useAppContextData","context","Error"],"sources":["../../../src/providers/ItemsContext.tsx"],"sourcesContent":["import React, { ReactNode, createContext, useContext, useState } from 'react';\n\nexport interface AppContextDataValue {\n items: any[];\n setItems: (items: any[]) => void;\n refreshCollection?: () => void;\n setRefreshCollection: (refreshFn: () => void) => void;\n}\n\nconst AppContextDataContext = createContext<AppContextDataValue | undefined>(\n undefined,\n);\n\nexport interface AppContextDataProviderProps {\n children: ReactNode;\n}\n\nexport const AppContextDataProvider: React.FC<AppContextDataProviderProps> = ({\n children,\n}) => {\n const [items, setItems] = useState<any[]>([]);\n const [refreshCollection, setRefreshCollection] = useState<\n (() => void) | undefined\n >(undefined);\n\n const contextValue: AppContextDataValue = {\n items,\n setItems,\n refreshCollection,\n setRefreshCollection,\n };\n\n return (\n <AppContextDataContext.Provider value={contextValue}>\n {children}\n </AppContextDataContext.Provider>\n );\n};\n\nexport const useAppContextData = (): AppContextDataValue => {\n const context = useContext(AppContextDataContext);\n\n if (context === undefined) {\n throw new Error(\n 'useAppContextData must be used within an AppContextDataProvider',\n );\n }\n\n return context;\n};\n"],"mappings":"AAAA,OAAOA,KAAK,IAAeC,aAAa,EAAEC,UAAU,EAAEC,QAAQ,QAAQ,OAAO;AAS7E,MAAMC,qBAAqB,gBAAGH,aAAa,CACzCI,SACF,CAAC;AAMD,OAAO,MAAMC,sBAA6D,GAAGC,IAAA,IAEvE;EAAA,IAFwE;IAC5EC;EACF,CAAC,GAAAD,IAAA;EACC,MAAM,CAACE,KAAK,EAAEC,QAAQ,CAAC,GAAGP,QAAQ,CAAQ,EAAE,CAAC;EAC7C,MAAM,CAACQ,iBAAiB,EAAEC,oBAAoB,CAAC,GAAGT,QAAQ,CAExDE,SAAS,CAAC;EAEZ,MAAMQ,YAAiC,GAAG;IACxCJ,KAAK;IACLC,QAAQ;IACRC,iBAAiB;IACjBC;EACF,CAAC;EAED,oBACEZ,KAAA,CAAAc,aAAA,CAACV,qBAAqB,CAACW,QAAQ;IAACC,KAAK,EAAEH;EAAa,GACjDL,QAC6B,CAAC;AAErC,CAAC;AAED,OAAO,MAAMS,iBAAiB,GAAGA,CAAA,KAA2B;EAC1D,MAAMC,OAAO,GAAGhB,UAAU,CAACE,qBAAqB,CAAC;EAEjD,IAAIc,OAAO,KAAKb,SAAS,EAAE;IACzB,MAAM,IAAIc,KAAK,CACb,iEACF,CAAC;EACH;EAEA,OAAOD,OAAO;AAChB,CAAC","ignoreList":[]}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import React, { createContext, useContext, useEffect, useState } from 'react';
|
|
2
|
-
import { getSchema } from '../dataSourceAdapters/factory';
|
|
3
2
|
import { useSchemaRegistry } from './SchemaRegistryContext';
|
|
4
|
-
import {
|
|
3
|
+
import { useAutoPatternsOverridesContext } from './AutoPatternsOverridesContext';
|
|
5
4
|
import { useWixPatternsContainer } from '@wix/patterns';
|
|
6
5
|
import { useError } from './ErrorContext';
|
|
6
|
+
import { fetchCmsSchema, transformCmsSchema } from '../dataSourceAdapters/cms/cmsAdapter';
|
|
7
7
|
const SchemaContext = /*#__PURE__*/createContext(null);
|
|
8
8
|
export const SchemaProvider = _ref => {
|
|
9
9
|
var _collection$custom;
|
|
@@ -26,14 +26,28 @@ export const SchemaProvider = _ref => {
|
|
|
26
26
|
} = useError();
|
|
27
27
|
const [schema, setSchema] = useState(null);
|
|
28
28
|
const [isLoading, setIsLoading] = useState(false);
|
|
29
|
-
const overrides =
|
|
29
|
+
const overrides = useAutoPatternsOverridesContext();
|
|
30
30
|
const {
|
|
31
31
|
httpClient
|
|
32
32
|
} = useWixPatternsContainer();
|
|
33
33
|
useEffect(() => {
|
|
34
|
+
const getSchema = async collectionConfig => {
|
|
35
|
+
var _collectionConfig$cms, _overrides$cmsSchema;
|
|
36
|
+
switch (collectionConfig.entityTypeSource) {
|
|
37
|
+
case 'cms':
|
|
38
|
+
const schemaInput = (_collectionConfig$cms = collectionConfig.cms) != null && (_collectionConfig$cms = _collectionConfig$cms.schema) != null && _collectionConfig$cms.id ? overrides == null || (_overrides$cmsSchema = overrides.cmsSchema) == null ? void 0 : _overrides$cmsSchema[collectionConfig.cms.schema.id] : null;
|
|
39
|
+
const currentSchema = schemaInput || (await fetchCmsSchema(collectionConfig.collectionId));
|
|
40
|
+
return transformCmsSchema(currentSchema);
|
|
41
|
+
default:
|
|
42
|
+
throw new Error(`Unsupported entityTypeSource: ${collectionConfig.entityTypeSource}`);
|
|
43
|
+
}
|
|
44
|
+
};
|
|
34
45
|
const fetchSchemaForCollection = async (targetCollectionId, targetCustomDataSourceId) => {
|
|
35
|
-
if (entityTypeSource === 'custom'
|
|
36
|
-
|
|
46
|
+
if (entityTypeSource === 'custom') {
|
|
47
|
+
if (!targetCustomDataSourceId || !(overrides != null && overrides.customDataSources)) {
|
|
48
|
+
throw new Error('Custom data source not found');
|
|
49
|
+
}
|
|
50
|
+
const customSchemaProvider = overrides == null ? void 0 : overrides.customDataSources[targetCustomDataSourceId];
|
|
37
51
|
if (customSchemaProvider) {
|
|
38
52
|
return customSchemaProvider(targetCollectionId, {
|
|
39
53
|
httpClient
|
|
@@ -41,7 +55,10 @@ export const SchemaProvider = _ref => {
|
|
|
41
55
|
}
|
|
42
56
|
throw new Error(`Custom schema provider '${targetCustomDataSourceId}' not found`);
|
|
43
57
|
}
|
|
44
|
-
return getSchema(
|
|
58
|
+
return getSchema({
|
|
59
|
+
collectionId: targetCollectionId,
|
|
60
|
+
entityTypeSource
|
|
61
|
+
});
|
|
45
62
|
};
|
|
46
63
|
const fetchReferencedSchemas = async referencedSchema => {
|
|
47
64
|
const referencedCollectionIds = new Set();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","createContext","useContext","useEffect","useState","getSchema","useSchemaRegistry","usePatternsWizardOverridesContext","useWixPatternsContainer","useError","SchemaContext","SchemaProvider","_ref","_collection$custom","collection","children","skeleton","collectionId","entityTypeSource","customDataSourceId","custom","id","undefined","getSchemaFromRegistry","addSchema","addSchemaToRegistry","showError","schema","setSchema","isLoading","setIsLoading","overrides","httpClient","fetchSchemaForCollection","targetCollectionId","targetCustomDataSourceId","customDataSources","customSchemaProvider","Error","fetchReferencedSchemas","referencedSchema","referencedCollectionIds","Set","Object","values","fields","forEach","field","type","referenceMetadata","referencedCollectionId","add","size","fetchPromises","Array","from","map","refCollectionId","refSchema","error","console","Promise","all","cachedSchema","then","fetchedSchema","catch","finally","createElement","Provider","value","useSchema","context"],"sources":["../../../src/providers/SchemaContext.tsx"],"sourcesContent":["import React, {\n createContext,\n useContext,\n useEffect,\n useState,\n ReactNode,\n} from 'react';\n\nimport { SchemaConfig, BaseCollectionConfig } from '../types';\nimport { getSchema } from '../dataSourceAdapters/factory';\nimport { useSchemaRegistry } from './SchemaRegistryContext';\nimport { usePatternsWizardOverridesContext } from './PatternsWizardOverridesContext';\nimport { useWixPatternsContainer } from '@wix/patterns';\nimport { useError } from './ErrorContext';\n\nconst SchemaContext = createContext<SchemaConfig | null>(null);\n\ninterface SchemaProviderProps {\n collection: BaseCollectionConfig;\n children: ReactNode;\n skeleton: JSX.Element;\n}\n\nexport const SchemaProvider = ({\n collection,\n children,\n skeleton,\n}: SchemaProviderProps) => {\n const { collectionId, entityTypeSource } = collection;\n const customDataSourceId =\n collection.entityTypeSource === 'custom' && 'custom' in collection\n ? collection.custom?.id\n : undefined;\n const { getSchema: getSchemaFromRegistry, addSchema: addSchemaToRegistry } =\n useSchemaRegistry();\n const { showError } = useError();\n const [schema, setSchema] = useState<SchemaConfig | null>(null);\n const [isLoading, setIsLoading] = useState<boolean>(false);\n const overrides = usePatternsWizardOverridesContext();\n const { httpClient } = useWixPatternsContainer();\n\n useEffect(() => {\n const fetchSchemaForCollection = async (\n targetCollectionId: string,\n targetCustomDataSourceId?: string,\n ): Promise<SchemaConfig> => {\n if (\n entityTypeSource === 'custom' &&\n targetCustomDataSourceId &&\n overrides?.customDataSources\n ) {\n const customSchemaProvider =\n overrides.customDataSources[targetCustomDataSourceId];\n if (customSchemaProvider) {\n return customSchemaProvider(targetCollectionId, { httpClient });\n }\n throw new Error(\n `Custom schema provider '${targetCustomDataSourceId}' not found`,\n );\n }\n\n return getSchema(targetCollectionId, entityTypeSource);\n };\n\n const fetchReferencedSchemas = async (referencedSchema: SchemaConfig) => {\n const referencedCollectionIds = new Set<string>();\n\n Object.values(referencedSchema.fields).forEach((field) => {\n if (field && field.type === 'REFERENCE' && field.referenceMetadata) {\n const { referencedCollectionId } = field.referenceMetadata;\n if (\n referencedCollectionId &&\n !getSchemaFromRegistry(referencedCollectionId)\n ) {\n referencedCollectionIds.add(referencedCollectionId);\n }\n }\n });\n\n if (referencedCollectionIds.size === 0) {\n return;\n }\n\n const fetchPromises = Array.from(referencedCollectionIds).map(\n async (refCollectionId) => {\n try {\n const refSchema = await fetchSchemaForCollection(refCollectionId);\n\n addSchemaToRegistry(refCollectionId, refSchema);\n\n await fetchReferencedSchemas(refSchema);\n } catch (error) {\n console.error(\n `Error fetching referenced schema ${refCollectionId}:`,\n error,\n );\n }\n },\n );\n\n await Promise.all(fetchPromises);\n };\n\n const cachedSchema = getSchemaFromRegistry(collectionId);\n if (cachedSchema) {\n setSchema(cachedSchema);\n return;\n }\n setIsLoading(true);\n fetchSchemaForCollection(collectionId, customDataSourceId)\n .then(async (fetchedSchema) => {\n setSchema(fetchedSchema);\n addSchemaToRegistry(collectionId, fetchedSchema);\n\n await fetchReferencedSchemas(fetchedSchema);\n })\n .catch((error) => {\n console.error('Error fetching schema config:', error);\n showError(error);\n })\n .finally(() => {\n setIsLoading(false);\n });\n }, [\n collectionId,\n entityTypeSource,\n customDataSourceId,\n addSchemaToRegistry,\n getSchemaFromRegistry,\n overrides,\n httpClient,\n showError,\n ]);\n if (!schema || isLoading) {\n return skeleton;\n }\n\n return (\n <SchemaContext.Provider value={schema}>{children}</SchemaContext.Provider>\n );\n};\n\nexport const useSchema = (): SchemaConfig => {\n const context = useContext(SchemaContext);\n if (!context) {\n throw new Error('useSchema must be used within a SchemaProvider');\n }\n return context;\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","createContext","useContext","useEffect","useState","useSchemaRegistry","useAutoPatternsOverridesContext","useWixPatternsContainer","useError","fetchCmsSchema","transformCmsSchema","SchemaContext","SchemaProvider","_ref","_collection$custom","collection","children","skeleton","collectionId","entityTypeSource","customDataSourceId","custom","id","undefined","getSchema","getSchemaFromRegistry","addSchema","addSchemaToRegistry","showError","schema","setSchema","isLoading","setIsLoading","overrides","httpClient","collectionConfig","_collectionConfig$cms","_overrides$cmsSchema","schemaInput","cms","cmsSchema","currentSchema","Error","fetchSchemaForCollection","targetCollectionId","targetCustomDataSourceId","customDataSources","customSchemaProvider","fetchReferencedSchemas","referencedSchema","referencedCollectionIds","Set","Object","values","fields","forEach","field","type","referenceMetadata","referencedCollectionId","add","size","fetchPromises","Array","from","map","refCollectionId","refSchema","error","console","Promise","all","cachedSchema","then","fetchedSchema","catch","finally","createElement","Provider","value","useSchema","context"],"sources":["../../../src/providers/SchemaContext.tsx"],"sourcesContent":["import React, {\n createContext,\n useContext,\n useEffect,\n useState,\n ReactNode,\n} from 'react';\n\nimport { SchemaConfig, BaseCollectionConfig } from '../types';\nimport { useSchemaRegistry } from './SchemaRegistryContext';\nimport { useAutoPatternsOverridesContext } from './AutoPatternsOverridesContext';\nimport { useWixPatternsContainer } from '@wix/patterns';\nimport { useError } from './ErrorContext';\nimport {\n fetchCmsSchema,\n transformCmsSchema,\n} from '../dataSourceAdapters/cms/cmsAdapter';\n\nconst SchemaContext = createContext<SchemaConfig | null>(null);\n\ninterface SchemaProviderProps {\n collection: BaseCollectionConfig;\n children: ReactNode;\n skeleton: JSX.Element;\n}\n\nexport const SchemaProvider = ({\n collection,\n children,\n skeleton,\n}: SchemaProviderProps) => {\n const { collectionId, entityTypeSource } = collection;\n const customDataSourceId =\n collection.entityTypeSource === 'custom' && 'custom' in collection\n ? collection.custom?.id\n : undefined;\n const { getSchema: getSchemaFromRegistry, addSchema: addSchemaToRegistry } =\n useSchemaRegistry();\n const { showError } = useError();\n const [schema, setSchema] = useState<SchemaConfig | null>(null);\n const [isLoading, setIsLoading] = useState<boolean>(false);\n const overrides = useAutoPatternsOverridesContext();\n const { httpClient } = useWixPatternsContainer();\n\n useEffect(() => {\n const getSchema = async (\n collectionConfig: BaseCollectionConfig,\n ): Promise<SchemaConfig> => {\n switch (collectionConfig.entityTypeSource) {\n case 'cms':\n const schemaInput = collectionConfig.cms?.schema?.id\n ? overrides?.cmsSchema?.[collectionConfig.cms.schema.id]\n : null;\n\n const currentSchema =\n schemaInput ||\n (await fetchCmsSchema(collectionConfig.collectionId));\n\n return transformCmsSchema(currentSchema);\n default:\n throw new Error(\n `Unsupported entityTypeSource: ${collectionConfig.entityTypeSource}`,\n );\n }\n };\n\n const fetchSchemaForCollection = async (\n targetCollectionId: string,\n targetCustomDataSourceId?: string,\n ): Promise<SchemaConfig> => {\n if (entityTypeSource === 'custom') {\n if (!targetCustomDataSourceId || !overrides?.customDataSources) {\n throw new Error('Custom data source not found');\n }\n const customSchemaProvider =\n overrides?.customDataSources[targetCustomDataSourceId];\n if (customSchemaProvider) {\n return customSchemaProvider(targetCollectionId, { httpClient });\n }\n throw new Error(\n `Custom schema provider '${targetCustomDataSourceId}' not found`,\n );\n }\n\n return getSchema({\n collectionId: targetCollectionId,\n entityTypeSource,\n });\n };\n\n const fetchReferencedSchemas = async (referencedSchema: SchemaConfig) => {\n const referencedCollectionIds = new Set<string>();\n\n Object.values(referencedSchema.fields).forEach((field) => {\n if (field && field.type === 'REFERENCE' && field.referenceMetadata) {\n const { referencedCollectionId } = field.referenceMetadata;\n if (\n referencedCollectionId &&\n !getSchemaFromRegistry(referencedCollectionId)\n ) {\n referencedCollectionIds.add(referencedCollectionId);\n }\n }\n });\n\n if (referencedCollectionIds.size === 0) {\n return;\n }\n\n const fetchPromises = Array.from(referencedCollectionIds).map(\n async (refCollectionId) => {\n try {\n const refSchema = await fetchSchemaForCollection(refCollectionId);\n\n addSchemaToRegistry(refCollectionId, refSchema);\n\n await fetchReferencedSchemas(refSchema);\n } catch (error) {\n console.error(\n `Error fetching referenced schema ${refCollectionId}:`,\n error,\n );\n }\n },\n );\n\n await Promise.all(fetchPromises);\n };\n\n const cachedSchema = getSchemaFromRegistry(collectionId);\n if (cachedSchema) {\n setSchema(cachedSchema);\n return;\n }\n setIsLoading(true);\n fetchSchemaForCollection(collectionId, customDataSourceId)\n .then(async (fetchedSchema) => {\n setSchema(fetchedSchema);\n addSchemaToRegistry(collectionId, fetchedSchema);\n\n await fetchReferencedSchemas(fetchedSchema);\n })\n .catch((error) => {\n console.error('Error fetching schema config:', error);\n showError(error);\n })\n .finally(() => {\n setIsLoading(false);\n });\n }, [\n collectionId,\n entityTypeSource,\n customDataSourceId,\n addSchemaToRegistry,\n getSchemaFromRegistry,\n overrides,\n httpClient,\n showError,\n ]);\n if (!schema || isLoading) {\n return skeleton;\n }\n\n return (\n <SchemaContext.Provider value={schema}>{children}</SchemaContext.Provider>\n );\n};\n\nexport const useSchema = (): SchemaConfig => {\n const context = useContext(SchemaContext);\n if (!context) {\n throw new Error('useSchema must be used within a SchemaProvider');\n }\n return context;\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
export * from './SchemaContext';
|
|
2
|
-
export * from './
|
|
2
|
+
export * from './AutoPatternsOverridesContext';
|
|
3
3
|
export * from './ModalContext';
|
|
4
4
|
export * from './SchemaRegistryContext';
|
|
5
5
|
export * from './AppConfigContext';
|
|
6
6
|
export * from './ErrorContext';
|
|
7
|
+
export * from './AppContextData';
|
|
7
8
|
export { useAppContext } from './AppContext';
|
|
8
9
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useAppContext"],"sources":["../../../src/providers/index.ts"],"sourcesContent":["export * from './SchemaContext';\nexport * from './
|
|
1
|
+
{"version":3,"names":["useAppContext"],"sources":["../../../src/providers/index.ts"],"sourcesContent":["export * from './SchemaContext';\nexport * from './AutoPatternsOverridesContext';\nexport * from './ModalContext';\nexport * from './SchemaRegistryContext';\nexport * from './AppConfigContext';\nexport * from './ErrorContext';\nexport * from './AppContextData';\nexport { useAppContext } from './AppContext';\n"],"mappings":"AAAA,cAAc,iBAAiB;AAC/B,cAAc,gCAAgC;AAC9C,cAAc,gBAAgB;AAC9B,cAAc,yBAAyB;AACvC,cAAc,oBAAoB;AAClC,cAAc,gBAAgB;AAC9B,cAAc,kBAAkB;AAChC,SAASA,aAAa,QAAQ,cAAc","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["../../../src/types/BaseSDK.ts"],"sourcesContent":["import { ModalId } from '../providers/ModalContext';\nimport {
|
|
1
|
+
{"version":3,"names":[],"sources":["../../../src/types/BaseSDK.ts"],"sourcesContent":["import { ModalId } from '../providers/ModalContext';\nimport { AutoPatternsOverridesContextProps } from '../providers';\nimport { AppConfig } from './types';\nimport { NavigateToEntityPageFunc } from '../hooks';\n\nexport interface BaseSDK {\n appConfig: AppConfig;\n openModal: (id: ModalId, props?: Record<string, any>) => void;\n closeModal: () => void;\n overrides?: AutoPatternsOverridesContextProps;\n navigateToEntityPage?: NavigateToEntityPageFunc;\n}\n"],"mappings":"","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["ComponentTypeEnum"],"sources":["../../../src/types/CollectionPageConfig.ts"],"sourcesContent":["import { CollectionToolbarFiltersProps } from '@wix/patterns';\nimport { DateRangeFilterMode, DateRangeOptions } from '@wix/patterns/core';\nimport { BaseCollectionConfig } from './types';\nimport {\n ActionCellConfig,\n BulkActionsConfig,\n CollectionPageOnRowClickActionConfig,\n CollectionPagePrimaryActions,\n CollectionPageSecondaryActions,\n} from './actions';\n\nexport interface CollectionPageTitle {\n text: string;\n hideTotal?: boolean;\n}\n\nexport interface CollectionPageSubtitle {\n text: string;\n learnMore?: {\n url: string;\n label?: string;\n };\n}\n\nexport interface CollectionPageConfig {\n route: {\n path: string;\n };\n title: CollectionPageTitle;\n subtitle?: CollectionPageSubtitle;\n actions?: {\n primaryActions?: CollectionPagePrimaryActions;\n secondaryActions?: CollectionPageSecondaryActions;\n };\n components: ComponentConfig[];\n}\n\nexport interface CollectionComponentConfig\n extends BaseCollectionComponentConfig {\n type: 'collection';\n layout: LayoutItemConfig[];\n}\n\nexport interface CustomComponentConfig {\n type: 'custom';\n id: string;\n}\n\nexport type ComponentConfig = CollectionComponentConfig | CustomComponentConfig;\n\nexport interface LayoutItemConfig {\n type: 'Table' | 'Grid';\n table?: TableSpecificConfig;\n grid?: GridSpecificConfig;\n}\n\nexport type ColumnsConfig = Column[];\n\nexport interface TableSpecificConfig {\n columns: ColumnsConfig;\n customColumns?: {\n enabled: boolean;\n };\n stickyColumns?: number;\n onRowClick?: CollectionPageOnRowClickActionConfig;\n showTitleBar?: boolean;\n sections?: {\n id: string;\n };\n}\n\nexport interface GridSpecificConfig {\n item: GridItem;\n}\n\nexport interface TableConfig\n extends BaseCollectionComponentConfig,\n TableSpecificConfig {}\nexport interface GridConfig\n extends BaseCollectionComponentConfig,\n GridSpecificConfig {}\nexport interface TableGridSwitchConfig\n extends BaseCollectionComponentConfig,\n TableSpecificConfig,\n GridSpecificConfig {}\n\nexport type CollectionConfig = BaseCollectionConfig & {\n limit?: number;\n reflectQueryInUrl?: boolean;\n selectAllScope?: 'page' | 'all';\n selectionUpdateMode?: 'preserve' | 'clear';\n optimisticActions?: {\n id: string;\n };\n paginationMode?: 'cursor' | 'offset';\n};\n\nexport interface BaseCollectionComponentConfig {\n collection: CollectionConfig;\n entityPageId?: string;\n search?: { shown?: boolean };\n toolbarTitle?: ToolbarTitle;\n actionCell?: ActionCellConfig;\n emptyState?: EmptyState;\n filters?: FiltersConfig;\n bulkActionToolbar?: BulkActionsConfig;\n}\n\nexport interface ToolbarTitle {\n title: string;\n subtitle?: {\n text: string;\n info?: {\n content: {\n text: string;\n link?: {\n url: string;\n label: string;\n };\n };\n };\n learnMore?: {\n url: string;\n label?: string;\n };\n };\n showTotal?: boolean;\n itemsLimit?: number;\n}\n\nexport interface Column {\n id: string;\n name: string;\n width: string;\n sortable?: boolean;\n defaultSortOrder?: 'asc' | 'desc';\n sortMode?: 'asc' | 'desc';\n defaultHidden?: boolean;\n hiddenFromCustomColumnsSelection?: boolean;\n hideable?: boolean;\n reorderDisabled?: boolean;\n}\n\nexport interface GridItem {\n titleFieldId: string;\n subtitleFieldId?: string;\n imageFieldId?: string;\n cardContentMode?: 'full' | 'title' | 'empty'; // Footer is not supported in auto-patterns\n imagePlacement?: 'top' | 'side';\n}\n\nexport interface EmptyState {\n title?: string;\n subtitle?: string;\n image?: {\n id: string;\n };\n addNewCta?: {\n id?: string;\n text?: string;\n };\n customCta?: {\n id?: string;\n };\n}\n\nexport interface FilterOption {\n value: string;\n label: string;\n}\n\nexport type FilterSelectionMode = 'single' | 'multiple';\nexport type FilterOptionType =\n | 'checkbox'\n | 'inlineCheckbox'\n | 'radio'\n | 'select';\n\nexport enum ComponentTypeEnum {\n SINGLE = 'single',\n MULTI_SELECT = 'multi-select',\n RADIO_GROUP = 'radio-group',\n NUMBER = 'number',\n DATE_RANGE = 'date-range',\n}\n\nexport type FilterItems = Filter[];\nexport interface FiltersConfig {\n items: FilterItems;\n maxInlineFilters?: CollectionToolbarFiltersProps['inline'];\n panelTitle?: string;\n}\n\nexport interface BaseOptionsFilterConfig {\n selectionMode: FilterSelectionMode;\n}\n\nexport interface DateFilterConfig {\n mode?: DateRangeFilterMode;\n presets?: DateRangeOptions;\n includeTime?: boolean;\n}\n\nexport interface NumberFilterConfig {\n min?: number;\n max?: number;\n allowedDecimals?: boolean;\n}\n\nexport interface BooleanFilterConfig {\n trueLabel?: string;\n falseLabel?: string;\n}\n\nexport interface EnumFilterConfig extends BaseOptionsFilterConfig {\n options: FilterOption[];\n optionType?: FilterOptionType;\n}\n\nexport interface DynamicOptionsFilterConfig extends BaseOptionsFilterConfig {}\n\nexport interface Filter {\n id: string;\n fieldId: string;\n displayName?: string;\n sectionTitle?: string;\n openByDefault?: boolean;\n tagLabel?: string;\n numberConfig?: NumberFilterConfig;\n dateConfig?: DateFilterConfig;\n booleanConfig?: BooleanFilterConfig;\n enumConfig?: EnumFilterConfig;\n dynamicOptionsConfig?: DynamicOptionsFilterConfig;\n}\n"],"mappings":"AAkLA,WAAYA,iBAAiB,0BAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAA,OAAjBA,iBAAiB;AAAA","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["ComponentTypeEnum"],"sources":["../../../src/types/CollectionPageConfig.ts"],"sourcesContent":["import { CollectionToolbarFiltersProps } from '@wix/patterns';\nimport { DateRangeFilterMode, DateRangeOptions } from '@wix/patterns/core';\nimport { BaseCollectionConfig } from './types';\nimport {\n ActionCellConfig,\n BulkActionsConfig,\n CollectionPageOnRowClickActionConfig,\n CollectionPagePrimaryActions,\n CollectionPageSecondaryActions,\n} from './actions';\n\nexport interface CollectionPageTitle {\n /**\n * The title text.\n */\n text: string;\n /**\n * Determines whether to hide the number of total entities on the title of the page.\n */\n hideTotal?: boolean;\n}\n\nexport interface CollectionPageSubtitle {\n /**\n * The subtitle text.\n */\n text: string;\n /**\n * \"Learn more\" link.\n */\n learnMore?: {\n /**\n * Where the link should navigate to.\n */\n url: string;\n /**\n * The label of the link button. defaults to \"Learn More\".\n */\n label?: string;\n };\n}\n\nexport interface CollectionPageConfig {\n /**\n * Route configuration.\n */\n route: {\n /**\n * Route path (relative path).\n */\n path: string;\n };\n /**\n * Page title configuration.\n */\n title: CollectionPageTitle;\n /**\n * Page subtitle configuration.\n */\n subtitle?: CollectionPageSubtitle;\n /**\n * Page-level actions to render in the page header.\n */\n actions?: {\n /**\n * Primary actions.\n */\n primaryActions?: CollectionPagePrimaryActions;\n /**\n * Secondary actions.\n */\n secondaryActions?: CollectionPageSecondaryActions;\n };\n /**\n * Components rendered within the page layout.\n */\n components: ComponentConfig[];\n}\n\nexport interface CollectionComponentConfig\n extends BaseCollectionComponentConfig {\n /**\n * Type discriminator.\n */\n type: 'collection';\n /**\n * Layout items to render.\n */\n layout: LayoutItemConfig[];\n}\n\nexport interface CustomComponentConfig {\n /**\n * Type discriminator.\n */\n type: 'custom';\n /**\n * Identifier that maps to a custom React component provided via overrides.\n */\n id: string;\n}\n\nexport type ComponentConfig = CollectionComponentConfig | CustomComponentConfig;\n\nexport interface LayoutItemConfig {\n /**\n * Rendering mode for the collection component.\n */\n type: 'Table' | 'Grid';\n /**\n * Table-specific configuration.\n */\n table?: TableSpecificConfig;\n /**\n * Grid-specific configuration.\n */\n grid?: GridSpecificConfig;\n}\n\nexport type ColumnsConfig = Column[];\n\nexport interface TableSpecificConfig {\n /**\n * Table columns configuration.\n */\n columns: ColumnsConfig;\n /**\n * Enables custom columns (hide/reorder columns) functionality.\n */\n customColumns?: {\n enabled: boolean;\n };\n /**\n * Number of leading columns that remain sticky on horizontal scroll.\n */\n stickyColumns?: number;\n /**\n * Row click action.\n */\n onRowClick?: CollectionPageOnRowClickActionConfig;\n /**\n * Show column headers (title bar).\n * @default true\n */\n showTitleBar?: boolean;\n /**\n * Sectioning support for table.\n *\n * The `id` must match the identifier of a custom sectioning override component.\n * This allows you to provide a custom React component for table section rendering.\n */\n sections?: {\n id: string;\n };\n}\n\nexport interface GridSpecificConfig {\n /**\n * Grid item.\n */\n item: GridItem;\n}\n\nexport interface TableConfig\n extends BaseCollectionComponentConfig,\n TableSpecificConfig {}\n\nexport interface GridConfig\n extends BaseCollectionComponentConfig,\n GridSpecificConfig {}\n\nexport interface TableGridSwitchConfig\n extends BaseCollectionComponentConfig,\n TableSpecificConfig,\n GridSpecificConfig {}\n\nexport type CollectionConfig = BaseCollectionConfig & {\n /**\n * Default fetch limit (items per page).\n */\n limit?: number;\n /**\n * Reflect search/filters/sort in the URL.\n * @default false\n */\n reflectQueryInUrl?: boolean;\n /**\n * Scope of \"Select All\":\n * - 'all': select the entire collection (server-side).\n * - 'page': select only currently visible items.\n * @default \"all\"\n */\n selectAllScope?: 'page' | 'all';\n /**\n * Selection behavior when data changes:\n * - 'preserve': keep current selections if still valid.\n * - 'clear': clear selection on data refresh.\n * @default \"clear\"\n */\n selectionUpdateMode?: 'preserve' | 'clear';\n /**\n * Enables optimistic UI actions;\n * Identifier that maps to a custom optimistic actions provided via overrides.\n */\n optimisticActions?: {\n id: string;\n };\n /**\n * Pagination strategy:\n * - 'cursor': `find()` must return { items, cursor, total? }\n * - 'offset': `find()` must return { items, hasNext, total? }\n * @default \"offset\"\n */\n paginationMode?: 'cursor' | 'offset';\n};\n\nexport interface BaseCollectionComponentConfig {\n /**\n * Collection data configuration and behavior.\n */\n collection: CollectionConfig;\n /**\n * Entity page to navigate to (by page id) when interacting with rows (e.g. onRowClick/update).\n */\n entityPageId?: string;\n /**\n * Search configuration.\n */\n search?: {\n /**\n * Whether to show the search input.\n * @default true\n */\n shown?: boolean;\n };\n /**\n * Toolbar title configuration.\n */\n toolbarTitle?: ToolbarTitle;\n /**\n * Action cell configuration per row.\n */\n actionCell?: ActionCellConfig;\n /**\n * Empty state configuration.\n */\n emptyState?: EmptyState;\n /**\n * Filters configuration.\n */\n filters?: FiltersConfig;\n /**\n * Bulk action toolbar configuration.\n */\n bulkActionToolbar?: BulkActionsConfig;\n}\n\nexport interface ToolbarTitle {\n /**\n * Title text.\n */\n title: string;\n /**\n * Subtitle configuration.\n */\n subtitle?: {\n /**\n * Subtitle text.\n */\n text: string;\n /**\n * Info tooltip content with an optional link.\n */\n info?: {\n content: {\n text: string;\n link?: {\n url: string;\n label: string;\n };\n };\n };\n /**\n * \"Learn more\" link.\n */\n learnMore?: {\n /**\n * Where the link should navigate to.\n */\n url: string;\n /**\n * The label of the link button.\n */\n label?: string;\n };\n };\n /**\n * Show total items on the toolbar.\n * @default false\n */\n showTotal?: boolean;\n /**\n * Limit displayed item count in the toolbar.\n */\n itemsLimit?: number;\n}\n\nexport interface Column {\n /**\n * FieldId to bind the column to.\n */\n id: string;\n /**\n * Column header text.\n */\n name: string;\n /**\n * CSS width value (e.g. '120px', '20%').\n */\n width: string;\n /**\n * Whether the column supports sorting.\n */\n sortable?: boolean;\n /**\n * Initial sort order when the page loads.\n */\n defaultSortOrder?: 'asc' | 'desc';\n /**\n * Current sort mode selected in UI.\n */\n sortMode?: 'asc' | 'desc';\n /**\n * Hide column by default in the custom columns panel.\n * When true, the column will not be shown initially and must be enabled by the user via the customize columns UI.\n */\n defaultHidden?: boolean;\n /**\n * Exclude from the \"customize columns\" selection UI.\n */\n hiddenFromCustomColumnsSelection?: boolean;\n /**\n * Controls whether the \"hide/show\" checkbox for this column is enabled in the custom columns panel.\n * If set to false, the checkbox will be disabled and the user cannot toggle visibility for this column.\n */\n hideable?: boolean;\n /**\n * Prevent column reordering in the customization UI.\n */\n reorderDisabled?: boolean;\n}\n\nexport interface GridItem {\n /**\n * FieldId to use as the card title.\n */\n titleFieldId: string;\n /**\n * FieldId to use as the card subtitle.\n */\n subtitleFieldId?: string;\n /**\n * FieldId to use as the card image.\n */\n imageFieldId?: string;\n /**\n * Controls which content is shown in the card (preset):\n * - 'full': shows title and subtitle.\n * - 'title': shows only the title.\n * - 'empty': hides both title and subtitle.\n */\n cardContentMode?: 'full' | 'title' | 'empty'; // Footer is not supported in auto-patterns\n /**\n * Position of the image inside the card layout.\n */\n imagePlacement?: 'top' | 'side';\n}\n\nexport interface EmptyState {\n /**\n * Empty state title.\n */\n title?: string;\n /**\n * Empty state subtitle.\n */\n subtitle?: string;\n /**\n * Image to display in the empty state.\n */\n image?: {\n id: string;\n };\n /**\n * \"Add new\" call-to-action button.\n */\n addNewCta?: {\n id?: string;\n text?: string;\n };\n /**\n * Custom CTA slot (advanced).\n */\n customCta?: {\n id?: string;\n };\n}\n\nexport interface FilterOption {\n value: string;\n label: string;\n}\n\nexport type FilterSelectionMode = 'single' | 'multiple';\n\nexport type FilterOptionType =\n | 'checkbox'\n | 'inlineCheckbox'\n | 'radio'\n | 'select';\n\nexport enum ComponentTypeEnum {\n SINGLE = 'single',\n MULTI_SELECT = 'multi-select',\n RADIO_GROUP = 'radio-group',\n NUMBER = 'number',\n DATE_RANGE = 'date-range',\n}\n\nexport type FilterItems = Filter[];\n\nexport interface FiltersConfig {\n /**\n * Filter items to display.\n */\n items: FilterItems;\n /**\n * Maximum number of filters shown inline before moving to the panel.\n * @default 0 (all in panel).\n */\n maxInlineFilters?: CollectionToolbarFiltersProps['inline'];\n /**\n * Title for the filter panel drawer.\n */\n panelTitle?: string;\n}\n\nexport interface BaseOptionsFilterConfig {\n /**\n * Selection behavior: single choice or multiple choices.\n */\n selectionMode: FilterSelectionMode;\n}\n\nexport interface DateFilterConfig {\n /**\n * Controls behavior: presets only, custom only, or both.\n */\n mode?: DateRangeFilterMode;\n /**\n * Which preset ranges to display (only if mode supports presets).\n */\n presets?: DateRangeOptions;\n /**\n * Whether to include time selection.\n * @default true\n */\n includeTime?: boolean;\n}\n\nexport interface NumberFilterConfig {\n /**\n * Minimum allowed value.\n */\n min?: number;\n /**\n * Maximum allowed value.\n */\n max?: number;\n /**\n * Whether decimal values are allowed.\n */\n allowedDecimals?: boolean;\n}\n\nexport interface BooleanFilterConfig {\n /**\n * Label for the \"true\" option.\n */\n trueLabel?: string;\n /**\n * Label for the \"false\" option.\n */\n falseLabel?: string;\n}\n\nexport interface EnumFilterConfig extends BaseOptionsFilterConfig {\n /**\n * List of available options.\n */\n options: FilterOption[];\n /**\n * Rendering control for option appearance.\n */\n optionType?: FilterOptionType;\n}\n\nexport interface DynamicOptionsFilterConfig extends BaseOptionsFilterConfig {}\n\nexport interface Filter {\n /**\n * Filter unique identifier.\n */\n id: string;\n /**\n * Target field id this filter controls.\n */\n fieldId: string;\n /**\n * Optional filter display name (defaults to field name).\n */\n displayName?: string;\n /**\n * Optional grouping label. Filters with the same `sectionTitle` are grouped together.\n */\n sectionTitle?: string;\n /**\n * Whether the filter item is expanded by default in the panel.\n */\n openByDefault?: boolean;\n /**\n * Label shown in the table/grid tag when the filter is active.\n */\n tagLabel?: string;\n /**\n * Configuration for number inputs (NUMBER fields).\n */\n numberConfig?: NumberFilterConfig;\n /**\n * Configuration for date inputs (DATETIME fields).\n */\n dateConfig?: DateFilterConfig;\n /**\n * Configuration for boolean input labels (BOOLEAN fields).\n */\n booleanConfig?: BooleanFilterConfig;\n /**\n * Configuration for enum inputs (ARRAY/ARRAY_STRING fields).\n */\n enumConfig?: EnumFilterConfig;\n /**\n * Dynamic options configuration (advanced).\n */\n dynamicOptionsConfig?: DynamicOptionsFilterConfig;\n}\n"],"mappings":"AAqaA,WAAYA,iBAAiB,0BAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAA,OAAjBA,iBAAiB;AAAA","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["../../../src/types/EntityPageConfig.ts"],"sourcesContent":["import { FieldValues, UseFormReturn } from '@wix/patterns/form';\nimport {\n EntityPageMoreActions,\n EntityPagePrimaryActions,\n EntityPageSecondaryActions,\n} from './actions/entityPageActions';\nimport { BaseCollectionConfig } from './types';\n\nexport type EntityPageBaseConfig = {\n route: {\n path: string;\n params: {\n id: string;\n };\n };\n title?: {\n text: string;\n badges?: {\n id: string;\n };\n };\n subtitle?: {\n text?: string;\n id?: string;\n learnMore?: {\n url: string;\n label?: string;\n };\n };\n parentPageId?: string;\n layout?: {\n main: CardLayout[];\n sidebar?: CardLayout[];\n };\n} & BaseCollectionConfig;\n\nexport type EditEntityPageConfig = EntityPageBaseConfig & {\n mode?: 'edit';\n actions?: {\n primaryActions?: never;\n secondaryActions?: never;\n moreActions?: EntityPageMoreActions;\n };\n};\n\nexport type ViewEntityPageConfig = EntityPageBaseConfig & {\n mode: 'view';\n actions?: {\n primaryActions?: EntityPagePrimaryActions;\n secondaryActions?: EntityPageSecondaryActions;\n moreActions?: EntityPageMoreActions;\n };\n};\n\nexport type EntityPageConfig = EditEntityPageConfig | ViewEntityPageConfig;\n\nexport interface CardLayout {\n type: 'card';\n card: {\n title: {\n text: string;\n };\n subtitle?: {\n text: string;\n };\n children: LayoutContent[];\n };\n}\n\nexport type LayoutContent =\n | FieldContent\n | ContainerContent\n | ComponentItemContent;\n\ninterface FieldContent {\n type: 'field';\n field: {\n span?: number;\n fieldId: string;\n };\n}\n\ninterface ContainerContent {\n type: 'container';\n container: {\n span?: number;\n children: LayoutContent[];\n };\n}\n\ninterface ComponentItemContent {\n type: 'component';\n component: {\n span?: number;\n componentId: string;\n };\n}\n\nexport interface CustomComponentProps {\n entity?: Record<string, any>;\n form?: UseFormReturn<FieldValues, any, undefined>;\n}\n"],"mappings":"","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":[],"sources":["../../../src/types/EntityPageConfig.ts"],"sourcesContent":["import { FieldValues, UseFormReturn } from '@wix/patterns/form';\nimport {\n EntityPageMoreActions,\n EntityPagePrimaryActions,\n EntityPageSecondaryActions,\n} from './actions/entityPageActions';\nimport { BaseCollectionConfig } from './types';\n\nexport type EntityPageBaseConfig = {\n /**\n * Route configuration for the entity page.\n */\n route: {\n /**\n * Route path (e.g. '/products/:id').\n */\n path: string;\n /**\n * Mapping for dynamic params used in the path.\n * `id` must match the placeholder used in `path`.\n */\n params: {\n id: string;\n };\n };\n /**\n * Title configuration.\n */\n title?: {\n /**\n * Title text.\n */\n text: string;\n /**\n * Badges slot identifier for dynamic overrides.\n */\n badges?: {\n id: string;\n };\n };\n /**\n * Subtitle configuration.\n */\n subtitle?: {\n /**\n * Subtitle text.\n */\n text?: string;\n /**\n * Subtitle slot identifier for dynamic overrides.\n */\n id?: string;\n /**\n * \"Learn more\" link near the subtitle.\n */\n learnMore?: {\n /**\n * Where the link should navigate to.\n */\n url: string;\n /**\n * The label of the link button.\n */\n label?: string;\n };\n };\n /**\n * Parent collection page id for navigation breadcrumbs/back behavior.\n */\n parentPageId?: string;\n /**\n * Page layout: main content cards and optional sidebar cards.\n */\n layout?: {\n /**\n * Main column card layout.\n */\n main: CardLayout[];\n /**\n * Sidebar column card layout.\n */\n sidebar?: CardLayout[];\n };\n} & BaseCollectionConfig;\n\nexport type EditEntityPageConfig = EntityPageBaseConfig & {\n /**\n * Page mode.\n * @default 'edit'\n */\n mode?: 'edit';\n /**\n * Page actions.\n *\n * Edit mode supports only `moreActions`.\n */\n actions?: {\n primaryActions?: never;\n secondaryActions?: never;\n /**\n * Contextual actions (e.g., custom actions).\n */\n moreActions?: EntityPageMoreActions;\n };\n};\n\nexport type ViewEntityPageConfig = EntityPageBaseConfig & {\n /**\n * Page mode.\n */\n mode: 'view';\n /**\n * Page actions.\n *\n * View mode supports `primaryActions`, `secondaryActions`, and `moreActions`.\n */\n actions?: {\n /**\n * Primary actions (e.g., Create).\n */\n primaryActions?: EntityPagePrimaryActions;\n /**\n * Secondary actions (e.g., menu with secondary items).\n */\n secondaryActions?: EntityPageSecondaryActions;\n /**\n * Additional context menu actions.\n */\n moreActions?: EntityPageMoreActions;\n };\n};\n\nexport type EntityPageConfig = EditEntityPageConfig | ViewEntityPageConfig;\n\nexport interface CardLayout {\n type: 'card';\n card: {\n /**\n * Card header title.\n */\n title: {\n text: string;\n };\n /**\n * Optional card subtitle.\n */\n subtitle?: {\n text: string;\n };\n /**\n * Card content items (fields, containers, or custom components).\n */\n children: LayoutContent[];\n };\n}\n\nexport type LayoutContent =\n | FieldContent\n | ContainerContent\n | ComponentItemContent;\n\ninterface FieldContent {\n type: 'field';\n field: {\n /**\n * Number of columns (out of 12) that this field should span in the layout grid.\n */\n span?: number;\n /**\n * FieldId from the schema to render in this position.\n */\n fieldId: string;\n };\n}\n\ninterface ContainerContent {\n type: 'container';\n container: {\n /**\n * Number of columns (out of 12) that this container should span in the layout grid.\n */\n span?: number;\n /**\n * Nested layout items inside the container.\n */\n children: LayoutContent[];\n };\n}\n\ninterface ComponentItemContent {\n type: 'component';\n component: {\n /**\n * Number of columns (out of 12) that this component should span in the layout grid.\n */\n span?: number;\n /**\n * Identifier mapping to a custom component provided via overrides.\n */\n componentId: string;\n };\n}\n\nexport interface CustomComponentProps {\n /**\n * Current entity data.\n */\n entity?: Record<string, any>;\n /**\n * Form APIs when in edit mode.\n */\n form?: UseFormReturn<FieldValues, any, undefined>;\n}\n"],"mappings":"","ignoreList":[]}
|