@wix/auto-patterns 1.44.0 → 1.45.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/AutoPatternsApp/AutoPatternsApp.uni.driver.js +3 -0
- package/dist/cjs/components/AutoPatternsApp/AutoPatternsApp.uni.driver.js.map +1 -1
- package/dist/cjs/components/AutoPatternsEntityPage/AutoPatternsEntityPage.js +3 -3
- package/dist/cjs/components/AutoPatternsEntityPage/AutoPatternsEntityPage.js.map +1 -1
- package/dist/cjs/components/AutoPatternsEntityPage/EditModeEntityPage.js +26 -14
- package/dist/cjs/components/AutoPatternsEntityPage/EditModeEntityPage.js.map +1 -1
- package/dist/cjs/components/AutoPatternsEntityPage/ViewModeEntityPage.js +38 -29
- package/dist/cjs/components/AutoPatternsEntityPage/ViewModeEntityPage.js.map +1 -1
- package/dist/cjs/components/AutoPatternsEntityPage/index.js +0 -6
- package/dist/cjs/components/AutoPatternsEntityPage/index.js.map +1 -1
- package/dist/cjs/components/AutoPatternsRoute/AutoPatternsPage.js +67 -12
- package/dist/cjs/components/AutoPatternsRoute/AutoPatternsPage.js.map +1 -1
- package/dist/cjs/components/AutoPatternsRoute/AutoPatternsRoutes.js +8 -7
- package/dist/cjs/components/AutoPatternsRoute/AutoPatternsRoutes.js.map +1 -1
- package/dist/cjs/components/AutoPatternsSettingsPage/AutoPatternsSettingsPage.js +165 -0
- package/dist/cjs/components/AutoPatternsSettingsPage/AutoPatternsSettingsPage.js.map +1 -0
- package/dist/cjs/components/AutoPatternsSettingsPage/AutoPatternsSettingsPage.uni.driver.js +15 -0
- package/dist/cjs/components/AutoPatternsSettingsPage/AutoPatternsSettingsPage.uni.driver.js.map +1 -0
- package/dist/cjs/components/AutoPatternsSettingsPage/index.js +10 -0
- package/dist/cjs/components/AutoPatternsSettingsPage/index.js.map +1 -0
- package/dist/cjs/components/AutoPatternsTable/AutoPatternsTable.js +2 -3
- package/dist/cjs/components/AutoPatternsTable/AutoPatternsTable.js.map +1 -1
- package/dist/cjs/components/{AutoPatternsEntityPage/Fields → fields}/Checkbox.js +1 -1
- package/dist/cjs/components/fields/Checkbox.js.map +1 -0
- package/dist/cjs/components/{AutoPatternsEntityPage/Fields → fields}/DateInput.js +9 -8
- package/dist/cjs/components/fields/DateInput.js.map +1 -0
- package/dist/cjs/components/{AutoPatternsEntityPage/Fields → fields}/DateTime.js +13 -12
- package/dist/cjs/components/fields/DateTime.js.map +1 -0
- package/dist/cjs/components/{AutoPatternsEntityPage/Fields → fields}/ImageInput.js +11 -10
- package/dist/cjs/components/fields/ImageInput.js.map +1 -0
- package/dist/cjs/components/{AutoPatternsEntityPage/Fields → fields}/LongText.js +9 -8
- package/dist/cjs/components/fields/LongText.js.map +1 -0
- package/dist/cjs/components/{AutoPatternsEntityPage/Fields → fields}/Number.js +9 -8
- package/dist/cjs/components/fields/Number.js.map +1 -0
- package/dist/cjs/components/{AutoPatternsEntityPage/Fields → fields}/ShortText.js +9 -8
- package/dist/cjs/components/fields/ShortText.js.map +1 -0
- package/dist/cjs/components/{AutoPatternsEntityPage/Fields → fields}/Url.js +11 -10
- package/dist/cjs/components/fields/Url.js.map +1 -0
- package/dist/cjs/components/fields/index.js +38 -0
- package/dist/cjs/components/fields/index.js.map +1 -0
- package/dist/cjs/components/fields/types.js.map +1 -0
- package/dist/cjs/components/fields/utils/dates.js.map +1 -0
- package/dist/cjs/components/{AutoPatternsEntityPage/RenderLayout/RenderLayoutCard.js → layouts/ContentCard.js} +26 -15
- package/dist/cjs/components/layouts/ContentCard.js.map +1 -0
- package/dist/cjs/components/layouts/ContentCardLayout.js +157 -0
- package/dist/cjs/components/layouts/ContentCardLayout.js.map +1 -0
- package/dist/cjs/components/layouts/ContentSkeleton.js +98 -0
- package/dist/cjs/components/layouts/ContentSkeleton.js.map +1 -0
- package/dist/cjs/components/layouts/FormField.js +52 -0
- package/dist/cjs/components/layouts/FormField.js.map +1 -0
- package/dist/cjs/components/layouts/ViewField.js +68 -0
- package/dist/cjs/components/layouts/ViewField.js.map +1 -0
- package/dist/cjs/components/layouts/types.js +4 -0
- package/dist/cjs/components/layouts/types.js.map +1 -0
- package/dist/cjs/hooks/useBaseTableFeatures.js +2 -1
- package/dist/cjs/hooks/useBaseTableFeatures.js.map +1 -1
- package/dist/cjs/hooks/usePagePath.js +4 -1
- package/dist/cjs/hooks/usePagePath.js.map +1 -1
- package/dist/cjs/hooks/useSettingsPageMoreActions.js +36 -0
- package/dist/cjs/hooks/useSettingsPageMoreActions.js.map +1 -0
- package/dist/cjs/providers/AutoPatternsOverridesContext.js +1 -1
- package/dist/cjs/providers/AutoPatternsOverridesContext.js.map +1 -1
- package/dist/cjs/types/SettingsPageConfig.js +4 -0
- package/dist/cjs/types/SettingsPageConfig.js.map +1 -0
- package/dist/cjs/types/actions/base.js.map +1 -1
- package/dist/cjs/types/actions/entityPageActions.js.map +1 -1
- package/dist/cjs/types/actions/formPageActions.js +4 -0
- package/dist/cjs/types/actions/formPageActions.js.map +1 -0
- package/dist/cjs/types/actions/index.js +6 -0
- package/dist/cjs/types/actions/index.js.map +1 -1
- package/dist/cjs/types/index.js +6 -0
- package/dist/cjs/types/index.js.map +1 -1
- package/dist/cjs/types/types.js.map +1 -1
- package/dist/esm/components/AutoPatternsApp/AutoPatternsApp.uni.driver.js +4 -1
- package/dist/esm/components/AutoPatternsApp/AutoPatternsApp.uni.driver.js.map +1 -1
- package/dist/esm/components/AutoPatternsEntityPage/AutoPatternsEntityPage.js +3 -3
- package/dist/esm/components/AutoPatternsEntityPage/AutoPatternsEntityPage.js.map +1 -1
- package/dist/esm/components/AutoPatternsEntityPage/EditModeEntityPage.js +21 -8
- package/dist/esm/components/AutoPatternsEntityPage/EditModeEntityPage.js.map +1 -1
- package/dist/esm/components/AutoPatternsEntityPage/ViewModeEntityPage.js +21 -12
- package/dist/esm/components/AutoPatternsEntityPage/ViewModeEntityPage.js.map +1 -1
- package/dist/esm/components/AutoPatternsEntityPage/index.js +0 -1
- package/dist/esm/components/AutoPatternsEntityPage/index.js.map +1 -1
- package/dist/esm/components/AutoPatternsRoute/AutoPatternsPage.js +31 -6
- package/dist/esm/components/AutoPatternsRoute/AutoPatternsPage.js.map +1 -1
- package/dist/esm/components/AutoPatternsRoute/AutoPatternsRoutes.js +2 -1
- package/dist/esm/components/AutoPatternsRoute/AutoPatternsRoutes.js.map +1 -1
- package/dist/esm/components/AutoPatternsSettingsPage/AutoPatternsSettingsPage.js +108 -0
- package/dist/esm/components/AutoPatternsSettingsPage/AutoPatternsSettingsPage.js.map +1 -0
- package/dist/esm/components/AutoPatternsSettingsPage/AutoPatternsSettingsPage.uni.driver.js +10 -0
- package/dist/esm/components/AutoPatternsSettingsPage/AutoPatternsSettingsPage.uni.driver.js.map +1 -0
- package/dist/esm/components/AutoPatternsSettingsPage/index.js +2 -0
- package/dist/esm/components/AutoPatternsSettingsPage/index.js.map +1 -0
- package/dist/esm/components/AutoPatternsTable/AutoPatternsTable.js +0 -1
- package/dist/esm/components/AutoPatternsTable/AutoPatternsTable.js.map +1 -1
- package/dist/esm/components/fields/Checkbox.js.map +1 -0
- package/dist/esm/components/{AutoPatternsEntityPage/Fields → fields}/DateInput.js +7 -6
- package/dist/esm/components/fields/DateInput.js.map +1 -0
- package/dist/esm/components/{AutoPatternsEntityPage/Fields → fields}/DateTime.js +7 -6
- package/dist/esm/components/fields/DateTime.js.map +1 -0
- package/dist/esm/components/{AutoPatternsEntityPage/Fields → fields}/ImageInput.js +9 -8
- package/dist/esm/components/fields/ImageInput.js.map +1 -0
- package/dist/esm/components/{AutoPatternsEntityPage/Fields → fields}/LongText.js +7 -6
- package/dist/esm/components/fields/LongText.js.map +1 -0
- package/dist/esm/components/{AutoPatternsEntityPage/Fields → fields}/Number.js +7 -6
- package/dist/esm/components/fields/Number.js.map +1 -0
- package/dist/esm/components/{AutoPatternsEntityPage/Fields → fields}/ShortText.js +7 -6
- package/dist/esm/components/fields/ShortText.js.map +1 -0
- package/dist/esm/components/{AutoPatternsEntityPage/Fields → fields}/Url.js +7 -6
- package/dist/esm/components/fields/Url.js.map +1 -0
- package/dist/esm/components/fields/index.js +10 -0
- package/dist/esm/components/fields/index.js.map +1 -0
- package/dist/esm/components/fields/types.js.map +1 -0
- package/dist/esm/components/fields/utils/dates.js.map +1 -0
- package/dist/esm/components/{AutoPatternsEntityPage/RenderLayout/RenderLayoutCard.js → layouts/ContentCard.js} +19 -8
- package/dist/esm/components/layouts/ContentCard.js.map +1 -0
- package/dist/esm/components/{AutoPatternsEntityPage/RenderLayout/RenderLayoutContent.js → layouts/ContentCardLayout.js} +38 -19
- package/dist/esm/components/layouts/ContentCardLayout.js.map +1 -0
- package/dist/esm/components/layouts/ContentSkeleton.js +47 -0
- package/dist/esm/components/layouts/ContentSkeleton.js.map +1 -0
- package/dist/esm/components/layouts/FormField.js +40 -0
- package/dist/esm/components/layouts/FormField.js.map +1 -0
- package/dist/esm/components/layouts/ViewField.js +43 -0
- package/dist/esm/components/layouts/ViewField.js.map +1 -0
- package/dist/esm/components/layouts/types.js +2 -0
- package/dist/esm/components/layouts/types.js.map +1 -0
- package/dist/esm/hooks/useBaseTableFeatures.js +1 -0
- package/dist/esm/hooks/useBaseTableFeatures.js.map +1 -1
- package/dist/esm/hooks/usePagePath.js +4 -1
- package/dist/esm/hooks/usePagePath.js.map +1 -1
- package/dist/esm/hooks/useSettingsPageMoreActions.js +32 -0
- package/dist/esm/hooks/useSettingsPageMoreActions.js.map +1 -0
- package/dist/esm/providers/AutoPatternsOverridesContext.js.map +1 -1
- package/dist/esm/types/SettingsPageConfig.js +2 -0
- package/dist/esm/types/SettingsPageConfig.js.map +1 -0
- package/dist/esm/types/actions/base.js.map +1 -1
- package/dist/esm/types/actions/entityPageActions.js.map +1 -1
- package/dist/esm/types/actions/formPageActions.js +2 -0
- package/dist/esm/types/actions/formPageActions.js.map +1 -0
- package/dist/esm/types/actions/index.js +1 -0
- package/dist/esm/types/actions/index.js.map +1 -1
- package/dist/esm/types/index.js +1 -0
- package/dist/esm/types/index.js.map +1 -1
- package/dist/esm/types/types.js.map +1 -1
- package/dist/types/components/AutoPatternsApp/AutoPatternsApp.uni.driver.d.ts +4 -1
- package/dist/types/components/AutoPatternsApp/AutoPatternsApp.uni.driver.d.ts.map +1 -1
- package/dist/types/components/AutoPatternsEntityPage/EditModeEntityPage.d.ts.map +1 -1
- package/dist/types/components/AutoPatternsEntityPage/ViewModeEntityPage.d.ts.map +1 -1
- package/dist/types/components/AutoPatternsEntityPage/index.d.ts +0 -1
- package/dist/types/components/AutoPatternsEntityPage/index.d.ts.map +1 -1
- package/dist/types/components/AutoPatternsRoute/AutoPatternsPage.d.ts.map +1 -1
- package/dist/types/components/AutoPatternsRoute/AutoPatternsRoutes.d.ts.map +1 -1
- package/dist/types/components/AutoPatternsSettingsPage/AutoPatternsSettingsPage.d.ts +6 -0
- package/dist/types/components/AutoPatternsSettingsPage/AutoPatternsSettingsPage.d.ts.map +1 -0
- package/dist/types/components/AutoPatternsSettingsPage/AutoPatternsSettingsPage.uni.driver.d.ts +145 -0
- package/dist/types/components/AutoPatternsSettingsPage/AutoPatternsSettingsPage.uni.driver.d.ts.map +1 -0
- package/dist/types/components/AutoPatternsSettingsPage/index.d.ts +2 -0
- package/dist/types/components/AutoPatternsSettingsPage/index.d.ts.map +1 -0
- package/dist/types/components/AutoPatternsTable/AutoPatternsTable.d.ts.map +1 -1
- package/dist/types/components/fields/Checkbox.d.ts.map +1 -0
- package/dist/types/components/fields/DateInput.d.ts.map +1 -0
- package/dist/types/components/fields/DateTime.d.ts.map +1 -0
- package/dist/types/components/fields/ImageInput.d.ts.map +1 -0
- package/dist/types/components/fields/LongText.d.ts.map +1 -0
- package/dist/types/components/fields/Number.d.ts.map +1 -0
- package/dist/types/components/fields/ShortText.d.ts.map +1 -0
- package/dist/types/components/fields/Url.d.ts.map +1 -0
- package/dist/types/components/fields/index.d.ts +10 -0
- package/dist/types/components/fields/index.d.ts.map +1 -0
- package/dist/types/components/{AutoPatternsEntityPage/Fields → fields}/types.d.ts +4 -1
- package/dist/types/components/fields/types.d.ts.map +1 -0
- package/dist/types/components/fields/utils/dates.d.ts.map +1 -0
- package/dist/types/components/layouts/ContentCard.d.ts +17 -0
- package/dist/types/components/layouts/ContentCard.d.ts.map +1 -0
- package/dist/types/components/layouts/ContentCardLayout.d.ts +18 -0
- package/dist/types/components/layouts/ContentCardLayout.d.ts.map +1 -0
- package/dist/types/components/layouts/ContentSkeleton.d.ts +9 -0
- package/dist/types/components/layouts/ContentSkeleton.d.ts.map +1 -0
- package/dist/types/components/layouts/FormField.d.ts +13 -0
- package/dist/types/components/layouts/FormField.d.ts.map +1 -0
- package/dist/types/components/layouts/ViewField.d.ts +8 -0
- package/dist/types/components/layouts/ViewField.d.ts.map +1 -0
- package/dist/types/components/layouts/types.d.ts +3 -0
- package/dist/types/components/layouts/types.d.ts.map +1 -0
- package/dist/types/hooks/useBaseTableFeatures.d.ts +2 -0
- package/dist/types/hooks/useBaseTableFeatures.d.ts.map +1 -1
- package/dist/types/hooks/usePagePath.d.ts.map +1 -1
- package/dist/types/hooks/useSettingsPageMoreActions.d.ts +5 -0
- package/dist/types/hooks/useSettingsPageMoreActions.d.ts.map +1 -0
- package/dist/types/providers/AutoPatternsOverridesContext.d.ts +2 -2
- package/dist/types/providers/AutoPatternsOverridesContext.d.ts.map +1 -1
- package/dist/types/testkit/enzyme.d.ts +1 -0
- package/dist/types/testkit/enzyme.d.ts.map +1 -1
- package/dist/types/testkit/jsdom.d.ts +1 -0
- package/dist/types/testkit/jsdom.d.ts.map +1 -1
- package/dist/types/testkit/playwright.d.ts +1 -0
- package/dist/types/testkit/playwright.d.ts.map +1 -1
- package/dist/types/testkit/puppeteer.d.ts +1 -0
- package/dist/types/testkit/puppeteer.d.ts.map +1 -1
- package/dist/types/types/SettingsPageConfig.d.ts +140 -0
- package/dist/types/types/SettingsPageConfig.d.ts.map +1 -0
- package/dist/types/types/actions/base.d.ts +1 -0
- package/dist/types/types/actions/base.d.ts.map +1 -1
- package/dist/types/types/actions/entityPageActions.d.ts +2 -7
- package/dist/types/types/actions/entityPageActions.d.ts.map +1 -1
- package/dist/types/types/actions/formPageActions.d.ts +8 -0
- package/dist/types/types/actions/formPageActions.d.ts.map +1 -0
- package/dist/types/types/actions/index.d.ts +1 -0
- package/dist/types/types/actions/index.d.ts.map +1 -1
- package/dist/types/types/index.d.ts +1 -0
- package/dist/types/types/index.d.ts.map +1 -1
- package/dist/types/types/types.d.ts +20 -1
- package/dist/types/types/types.d.ts.map +1 -1
- package/docs/GETTING_STARTED.md +73 -18
- package/mcp-docs/app_config_structure.md +66 -3
- package/mcp-docs/auto-patterns-guide.md +86 -6
- package/mcp-docs/index.md +4 -0
- package/mcp-docs/pages_configuration.md +20 -3
- package/mcp-docs/settings_page.md +599 -0
- package/package.json +3 -3
- package/dist/cjs/components/AutoPatternsEntityPage/Fields/Checkbox.js.map +0 -1
- package/dist/cjs/components/AutoPatternsEntityPage/Fields/DateInput.js.map +0 -1
- package/dist/cjs/components/AutoPatternsEntityPage/Fields/DateTime.js.map +0 -1
- package/dist/cjs/components/AutoPatternsEntityPage/Fields/FormFieldInput.js +0 -59
- package/dist/cjs/components/AutoPatternsEntityPage/Fields/FormFieldInput.js.map +0 -1
- package/dist/cjs/components/AutoPatternsEntityPage/Fields/ImageInput.js.map +0 -1
- package/dist/cjs/components/AutoPatternsEntityPage/Fields/LongText.js.map +0 -1
- package/dist/cjs/components/AutoPatternsEntityPage/Fields/Number.js.map +0 -1
- package/dist/cjs/components/AutoPatternsEntityPage/Fields/ShortText.js.map +0 -1
- package/dist/cjs/components/AutoPatternsEntityPage/Fields/Url.js.map +0 -1
- package/dist/cjs/components/AutoPatternsEntityPage/Fields/types.js.map +0 -1
- package/dist/cjs/components/AutoPatternsEntityPage/Fields/utils/dates.js.map +0 -1
- package/dist/cjs/components/AutoPatternsEntityPage/RenderLayout/RenderLayoutCard.js.map +0 -1
- package/dist/cjs/components/AutoPatternsEntityPage/RenderLayout/RenderLayoutContent.js +0 -119
- package/dist/cjs/components/AutoPatternsEntityPage/RenderLayout/RenderLayoutContent.js.map +0 -1
- package/dist/cjs/components/AutoPatternsEntityPage/RenderLayout/RenderViewField.js +0 -79
- package/dist/cjs/components/AutoPatternsEntityPage/RenderLayout/RenderViewField.js.map +0 -1
- package/dist/cjs/components/AutoPatternsEntityPage/RenderLayout/index.js +0 -16
- package/dist/cjs/components/AutoPatternsEntityPage/RenderLayout/index.js.map +0 -1
- package/dist/cjs/components/AutoPatternsEntityPage/SkeletonEntity.js +0 -198
- package/dist/cjs/components/AutoPatternsEntityPage/SkeletonEntity.js.map +0 -1
- package/dist/cjs/components/AutoPatternsEntityPage/ViewEntityPage/RenderViewLayoutCard.js +0 -77
- package/dist/cjs/components/AutoPatternsEntityPage/ViewEntityPage/RenderViewLayoutCard.js.map +0 -1
- package/dist/cjs/components/AutoPatternsEntityPage/ViewEntityPage/RenderViewLayoutContent.js +0 -109
- package/dist/cjs/components/AutoPatternsEntityPage/ViewEntityPage/RenderViewLayoutContent.js.map +0 -1
- package/dist/esm/components/AutoPatternsEntityPage/Fields/Checkbox.js.map +0 -1
- package/dist/esm/components/AutoPatternsEntityPage/Fields/DateInput.js.map +0 -1
- package/dist/esm/components/AutoPatternsEntityPage/Fields/DateTime.js.map +0 -1
- package/dist/esm/components/AutoPatternsEntityPage/Fields/FormFieldInput.js +0 -46
- package/dist/esm/components/AutoPatternsEntityPage/Fields/FormFieldInput.js.map +0 -1
- package/dist/esm/components/AutoPatternsEntityPage/Fields/ImageInput.js.map +0 -1
- package/dist/esm/components/AutoPatternsEntityPage/Fields/LongText.js.map +0 -1
- package/dist/esm/components/AutoPatternsEntityPage/Fields/Number.js.map +0 -1
- package/dist/esm/components/AutoPatternsEntityPage/Fields/ShortText.js.map +0 -1
- package/dist/esm/components/AutoPatternsEntityPage/Fields/Url.js.map +0 -1
- package/dist/esm/components/AutoPatternsEntityPage/Fields/types.js.map +0 -1
- package/dist/esm/components/AutoPatternsEntityPage/Fields/utils/dates.js.map +0 -1
- package/dist/esm/components/AutoPatternsEntityPage/RenderLayout/RenderLayoutCard.js.map +0 -1
- package/dist/esm/components/AutoPatternsEntityPage/RenderLayout/RenderLayoutContent.js.map +0 -1
- package/dist/esm/components/AutoPatternsEntityPage/RenderLayout/RenderViewField.js +0 -48
- package/dist/esm/components/AutoPatternsEntityPage/RenderLayout/RenderViewField.js.map +0 -1
- package/dist/esm/components/AutoPatternsEntityPage/RenderLayout/index.js +0 -3
- package/dist/esm/components/AutoPatternsEntityPage/RenderLayout/index.js.map +0 -1
- package/dist/esm/components/AutoPatternsEntityPage/SkeletonEntity.js +0 -91
- package/dist/esm/components/AutoPatternsEntityPage/SkeletonEntity.js.map +0 -1
- package/dist/esm/components/AutoPatternsEntityPage/ViewEntityPage/RenderViewLayoutCard.js +0 -31
- package/dist/esm/components/AutoPatternsEntityPage/ViewEntityPage/RenderViewLayoutCard.js.map +0 -1
- package/dist/esm/components/AutoPatternsEntityPage/ViewEntityPage/RenderViewLayoutContent.js +0 -66
- package/dist/esm/components/AutoPatternsEntityPage/ViewEntityPage/RenderViewLayoutContent.js.map +0 -1
- package/dist/types/components/AutoPatternsEntityPage/Fields/Checkbox.d.ts.map +0 -1
- package/dist/types/components/AutoPatternsEntityPage/Fields/DateInput.d.ts.map +0 -1
- package/dist/types/components/AutoPatternsEntityPage/Fields/DateTime.d.ts.map +0 -1
- package/dist/types/components/AutoPatternsEntityPage/Fields/FormFieldInput.d.ts +0 -10
- package/dist/types/components/AutoPatternsEntityPage/Fields/FormFieldInput.d.ts.map +0 -1
- package/dist/types/components/AutoPatternsEntityPage/Fields/ImageInput.d.ts.map +0 -1
- package/dist/types/components/AutoPatternsEntityPage/Fields/LongText.d.ts.map +0 -1
- package/dist/types/components/AutoPatternsEntityPage/Fields/Number.d.ts.map +0 -1
- package/dist/types/components/AutoPatternsEntityPage/Fields/ShortText.d.ts.map +0 -1
- package/dist/types/components/AutoPatternsEntityPage/Fields/Url.d.ts.map +0 -1
- package/dist/types/components/AutoPatternsEntityPage/Fields/types.d.ts.map +0 -1
- package/dist/types/components/AutoPatternsEntityPage/Fields/utils/dates.d.ts.map +0 -1
- package/dist/types/components/AutoPatternsEntityPage/RenderLayout/RenderLayoutCard.d.ts +0 -11
- package/dist/types/components/AutoPatternsEntityPage/RenderLayout/RenderLayoutCard.d.ts.map +0 -1
- package/dist/types/components/AutoPatternsEntityPage/RenderLayout/RenderLayoutContent.d.ts +0 -13
- package/dist/types/components/AutoPatternsEntityPage/RenderLayout/RenderLayoutContent.d.ts.map +0 -1
- package/dist/types/components/AutoPatternsEntityPage/RenderLayout/RenderViewField.d.ts +0 -8
- package/dist/types/components/AutoPatternsEntityPage/RenderLayout/RenderViewField.d.ts.map +0 -1
- package/dist/types/components/AutoPatternsEntityPage/RenderLayout/index.d.ts +0 -3
- package/dist/types/components/AutoPatternsEntityPage/RenderLayout/index.d.ts.map +0 -1
- package/dist/types/components/AutoPatternsEntityPage/SkeletonEntity.d.ts +0 -7
- package/dist/types/components/AutoPatternsEntityPage/SkeletonEntity.d.ts.map +0 -1
- package/dist/types/components/AutoPatternsEntityPage/ViewEntityPage/RenderViewLayoutCard.d.ts +0 -8
- package/dist/types/components/AutoPatternsEntityPage/ViewEntityPage/RenderViewLayoutCard.d.ts.map +0 -1
- package/dist/types/components/AutoPatternsEntityPage/ViewEntityPage/RenderViewLayoutContent.d.ts +0 -8
- package/dist/types/components/AutoPatternsEntityPage/ViewEntityPage/RenderViewLayoutContent.d.ts.map +0 -1
- /package/dist/cjs/components/{AutoPatternsEntityPage/Fields → fields}/types.js +0 -0
- /package/dist/cjs/components/{AutoPatternsEntityPage/Fields → fields}/utils/dates.js +0 -0
- /package/dist/esm/components/{AutoPatternsEntityPage/Fields → fields}/Checkbox.js +0 -0
- /package/dist/esm/components/{AutoPatternsEntityPage/Fields → fields}/types.js +0 -0
- /package/dist/esm/components/{AutoPatternsEntityPage/Fields → fields}/utils/dates.js +0 -0
- /package/dist/types/components/{AutoPatternsEntityPage/Fields → fields}/Checkbox.d.ts +0 -0
- /package/dist/types/components/{AutoPatternsEntityPage/Fields → fields}/DateInput.d.ts +0 -0
- /package/dist/types/components/{AutoPatternsEntityPage/Fields → fields}/DateTime.d.ts +0 -0
- /package/dist/types/components/{AutoPatternsEntityPage/Fields → fields}/ImageInput.d.ts +0 -0
- /package/dist/types/components/{AutoPatternsEntityPage/Fields → fields}/LongText.d.ts +0 -0
- /package/dist/types/components/{AutoPatternsEntityPage/Fields → fields}/Number.d.ts +0 -0
- /package/dist/types/components/{AutoPatternsEntityPage/Fields → fields}/ShortText.d.ts +0 -0
- /package/dist/types/components/{AutoPatternsEntityPage/Fields → fields}/Url.d.ts +0 -0
- /package/dist/types/components/{AutoPatternsEntityPage/Fields → fields}/utils/dates.d.ts +0 -0
|
@@ -0,0 +1,599 @@
|
|
|
1
|
+
# Settings Page Configuration
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
The Settings Page is a dedicated page type for managing application settings and preferences. It provides a form-based interface with automatic save/cancel functionality, validation, and a flexible card-based layout system. The Settings Page uses the same custom data source pattern as Collection Pages for consistency across the framework.
|
|
6
|
+
|
|
7
|
+
## Key Features
|
|
8
|
+
|
|
9
|
+
- **Custom Data Source Pattern**: Uses SchemaConfig with standard CRUD actions (same as Collection Pages)
|
|
10
|
+
- **Form-based Interface**: Built-in form state management with `@wix/patterns/form`
|
|
11
|
+
- **Auto Save/Cancel**: Automatic save and cancel button handling
|
|
12
|
+
- **Validation Support**: Field validation with focus on invalid fields
|
|
13
|
+
- **Flexible Layout**: Card-based layout with main content and optional sidebar
|
|
14
|
+
- **Header Configuration**: Title, subtitle, and more actions support
|
|
15
|
+
|
|
16
|
+
## Page Type
|
|
17
|
+
|
|
18
|
+
Set `type: 'settingsPage'` in your page configuration:
|
|
19
|
+
|
|
20
|
+
```json
|
|
21
|
+
{
|
|
22
|
+
"id": "settings",
|
|
23
|
+
"type": "settingsPage",
|
|
24
|
+
"appMainPage": true,
|
|
25
|
+
"settingsPage": {
|
|
26
|
+
"entityTypeSource": "custom",
|
|
27
|
+
"custom": {
|
|
28
|
+
"id": "app-settings"
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Settings Page Configuration
|
|
35
|
+
|
|
36
|
+
### Required Properties
|
|
37
|
+
|
|
38
|
+
| Property | Type | Description |
|
|
39
|
+
|----------|------|-------------|
|
|
40
|
+
| `route.path` | `string` | Route path for the settings page (e.g., `/settings`) |
|
|
41
|
+
| `entityTypeSource` | `'custom'` | Must be `'custom'` - settings pages use custom data sources |
|
|
42
|
+
| `custom.id` | `string` | ID matching the custom data source identifier |
|
|
43
|
+
|
|
44
|
+
### Optional Properties
|
|
45
|
+
|
|
46
|
+
| Property | Type | Description |
|
|
47
|
+
|----------|------|-------------|
|
|
48
|
+
| `title` | `object` | Page title configuration |
|
|
49
|
+
| `subtitle` | `object` | Page subtitle with optional learn more link |
|
|
50
|
+
| `actions.moreActions` | `MoreActionsType` | Additional actions menu (export, import, reset, etc.) |
|
|
51
|
+
| `layout` | `object` | Card layout for main and sidebar content |
|
|
52
|
+
|
|
53
|
+
## Custom Data Source
|
|
54
|
+
|
|
55
|
+
The settings page requires a custom data source that provides the schema and CRUD actions. This follows the same pattern as Collection Pages. See the [Complete Configuration Example](#complete-configuration-example) section for a full implementation.
|
|
56
|
+
|
|
57
|
+
### Registering the Data Source
|
|
58
|
+
|
|
59
|
+
Create a hook to register your custom data source:
|
|
60
|
+
|
|
61
|
+
```typescript
|
|
62
|
+
// useCustomDataSources.tsx
|
|
63
|
+
import { appSettingsDataSource } from './appSettingsDataSource';
|
|
64
|
+
|
|
65
|
+
export const useCustomDataSources = () => {
|
|
66
|
+
return {
|
|
67
|
+
'app-settings': appSettingsDataSource,
|
|
68
|
+
};
|
|
69
|
+
};
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### Supported Field Types
|
|
73
|
+
|
|
74
|
+
- `SHORT_TEXT` - Single-line text input
|
|
75
|
+
- `LONG_TEXT` - Multi-line text area
|
|
76
|
+
- `BOOLEAN` - Toggle/checkbox
|
|
77
|
+
- `NUMBER` - Numeric input
|
|
78
|
+
- `URL` - URL input with validation
|
|
79
|
+
- `DATE` - Date picker
|
|
80
|
+
- `DATETIME` - Date and time picker
|
|
81
|
+
|
|
82
|
+
## Actions Configuration
|
|
83
|
+
|
|
84
|
+
### More Actions (Custom Actions)
|
|
85
|
+
|
|
86
|
+
Define custom actions in the `actions.moreActions` array. See the [Complete Configuration Example](#complete-configuration-example) for the full configuration.
|
|
87
|
+
|
|
88
|
+
### Custom Action Resolvers
|
|
89
|
+
|
|
90
|
+
Create action resolvers using `CustomFormPageActionResolver`:
|
|
91
|
+
|
|
92
|
+
```tsx
|
|
93
|
+
// actions/exportSettings.tsx
|
|
94
|
+
import React from 'react';
|
|
95
|
+
import { CustomFormPageActionResolver } from '@wix/auto-patterns';
|
|
96
|
+
import { Download } from '@wix/wix-ui-icons-common';
|
|
97
|
+
|
|
98
|
+
export const exportSettings: CustomFormPageActionResolver = (params) => {
|
|
99
|
+
// params.form provides access to form state if needed
|
|
100
|
+
return {
|
|
101
|
+
label: 'Export settings',
|
|
102
|
+
icon: <Download />,
|
|
103
|
+
onClick: () => {
|
|
104
|
+
// Export logic here
|
|
105
|
+
console.log('Exporting settings');
|
|
106
|
+
},
|
|
107
|
+
biName: 'export-settings-action',
|
|
108
|
+
};
|
|
109
|
+
};
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
```tsx
|
|
113
|
+
// actions/importSettings.tsx
|
|
114
|
+
import React from 'react';
|
|
115
|
+
import { CustomFormPageActionResolver } from '@wix/auto-patterns';
|
|
116
|
+
import { Upload } from '@wix/wix-ui-icons-common';
|
|
117
|
+
|
|
118
|
+
export const importSettings: CustomFormPageActionResolver = () => {
|
|
119
|
+
return {
|
|
120
|
+
label: 'Import settings',
|
|
121
|
+
icon: <Upload />,
|
|
122
|
+
onClick: () => console.log('Importing settings'),
|
|
123
|
+
biName: 'import-settings-action',
|
|
124
|
+
};
|
|
125
|
+
};
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
```tsx
|
|
129
|
+
// actions/resetSettings.tsx
|
|
130
|
+
import React from 'react';
|
|
131
|
+
import { CustomFormPageActionResolver } from '@wix/auto-patterns';
|
|
132
|
+
import { Undo } from '@wix/wix-ui-icons-common';
|
|
133
|
+
|
|
134
|
+
export const resetSettings: CustomFormPageActionResolver = () => {
|
|
135
|
+
return {
|
|
136
|
+
label: 'Reset settings',
|
|
137
|
+
icon: <Undo />,
|
|
138
|
+
onClick: () => console.log('Resetting to defaults'),
|
|
139
|
+
biName: 'reset-settings-action',
|
|
140
|
+
};
|
|
141
|
+
};
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
### Registering Actions
|
|
145
|
+
|
|
146
|
+
Create a hook to register your custom actions:
|
|
147
|
+
|
|
148
|
+
```typescript
|
|
149
|
+
// useActions.tsx
|
|
150
|
+
import { exportSettings, importSettings, resetSettings } from './actions';
|
|
151
|
+
|
|
152
|
+
export const useActions = () => {
|
|
153
|
+
return {
|
|
154
|
+
exportSettings,
|
|
155
|
+
importSettings,
|
|
156
|
+
resetSettings,
|
|
157
|
+
};
|
|
158
|
+
};
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
## Header Configuration
|
|
162
|
+
|
|
163
|
+
The header supports `title` and `subtitle` with optional `learnMore` link. See the [Complete Configuration Example](#complete-configuration-example) for usage.
|
|
164
|
+
|
|
165
|
+
## Layout Configuration
|
|
166
|
+
|
|
167
|
+
The settings page uses a card-based layout with main content and optional sidebar areas.
|
|
168
|
+
|
|
169
|
+
### Layout Structure
|
|
170
|
+
|
|
171
|
+
```typescript
|
|
172
|
+
layout: {
|
|
173
|
+
main: CardLayout[]; // Main content area (required)
|
|
174
|
+
sidebar?: CardLayout[]; // Sidebar area (optional)
|
|
175
|
+
}
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
### Card Layout
|
|
179
|
+
|
|
180
|
+
Each card in the layout has the following structure:
|
|
181
|
+
|
|
182
|
+
```typescript
|
|
183
|
+
{
|
|
184
|
+
type: 'card',
|
|
185
|
+
card: {
|
|
186
|
+
title: { text: 'Card Title' },
|
|
187
|
+
subtitle?: { text: 'Optional subtitle' },
|
|
188
|
+
children: LayoutContent[]
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
### Layout Content Types
|
|
194
|
+
|
|
195
|
+
#### 1. Field Content
|
|
196
|
+
|
|
197
|
+
Renders a form field from the data source schema:
|
|
198
|
+
|
|
199
|
+
```typescript
|
|
200
|
+
{
|
|
201
|
+
type: 'field',
|
|
202
|
+
field: {
|
|
203
|
+
fieldId: 'name', // Must match a field ID from the data source schema
|
|
204
|
+
span?: 6 // Grid columns (1-12), default is 12
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
#### 2. Container Content
|
|
210
|
+
|
|
211
|
+
Groups related content items:
|
|
212
|
+
|
|
213
|
+
```typescript
|
|
214
|
+
{
|
|
215
|
+
type: 'container',
|
|
216
|
+
container: {
|
|
217
|
+
span?: 12, // Grid columns (1-12)
|
|
218
|
+
children: [ // Nested layout content
|
|
219
|
+
{ type: 'field', field: { fieldId: 'field1', span: 4 } },
|
|
220
|
+
{ type: 'field', field: { fieldId: 'field2', span: 4 } },
|
|
221
|
+
{ type: 'field', field: { fieldId: 'field3', span: 4 } }
|
|
222
|
+
]
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
#### 3. Component Content
|
|
228
|
+
|
|
229
|
+
Renders a custom component via overrides:
|
|
230
|
+
|
|
231
|
+
```typescript
|
|
232
|
+
{
|
|
233
|
+
type: 'component',
|
|
234
|
+
component: {
|
|
235
|
+
componentId: 'myCustomComponent', // Matches override key
|
|
236
|
+
span?: 12 // Grid columns (1-12)
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
### Grid System
|
|
242
|
+
|
|
243
|
+
- **12-Column Grid**: The layout uses a 12-column grid system
|
|
244
|
+
- The `span` property controls how many columns an item occupies (1-12)
|
|
245
|
+
- When items in a row exceed 12 columns total, the next item wraps to a new line
|
|
246
|
+
|
|
247
|
+
## Complete Configuration Example
|
|
248
|
+
|
|
249
|
+
### App Config (settingPageConfig.patterns.ts)
|
|
250
|
+
|
|
251
|
+
```typescript
|
|
252
|
+
import type { AppConfig } from '@wix/auto-patterns';
|
|
253
|
+
|
|
254
|
+
export const appConfig: AppConfig = {
|
|
255
|
+
pages: [
|
|
256
|
+
{
|
|
257
|
+
id: 'settings',
|
|
258
|
+
type: 'settingsPage',
|
|
259
|
+
appMainPage: true,
|
|
260
|
+
settingsPage: {
|
|
261
|
+
route: {
|
|
262
|
+
path: '/settings',
|
|
263
|
+
},
|
|
264
|
+
entityTypeSource: 'custom',
|
|
265
|
+
custom: {
|
|
266
|
+
id: 'app-settings',
|
|
267
|
+
},
|
|
268
|
+
|
|
269
|
+
// Header
|
|
270
|
+
title: {
|
|
271
|
+
text: 'App Settings',
|
|
272
|
+
},
|
|
273
|
+
subtitle: {
|
|
274
|
+
text: 'Configure your application preferences and defaults',
|
|
275
|
+
learnMore: {
|
|
276
|
+
url: 'https://support.wix.com/en/article/wix-apps',
|
|
277
|
+
label: 'Learn more',
|
|
278
|
+
},
|
|
279
|
+
},
|
|
280
|
+
|
|
281
|
+
// Custom actions
|
|
282
|
+
actions: {
|
|
283
|
+
moreActions: [
|
|
284
|
+
{
|
|
285
|
+
id: 'exportSettings',
|
|
286
|
+
type: 'custom',
|
|
287
|
+
label: 'Export Settings',
|
|
288
|
+
biName: 'export-settings',
|
|
289
|
+
},
|
|
290
|
+
{
|
|
291
|
+
id: 'importSettings',
|
|
292
|
+
type: 'custom',
|
|
293
|
+
label: 'Import Settings',
|
|
294
|
+
biName: 'import-settings',
|
|
295
|
+
},
|
|
296
|
+
{
|
|
297
|
+
id: 'resetSettings',
|
|
298
|
+
type: 'custom',
|
|
299
|
+
label: 'Reset to Defaults',
|
|
300
|
+
biName: 'reset-settings',
|
|
301
|
+
},
|
|
302
|
+
],
|
|
303
|
+
},
|
|
304
|
+
|
|
305
|
+
// Layout
|
|
306
|
+
layout: {
|
|
307
|
+
main: [
|
|
308
|
+
{
|
|
309
|
+
type: 'card',
|
|
310
|
+
card: {
|
|
311
|
+
title: { text: 'General Settings' },
|
|
312
|
+
subtitle: { text: 'Basic configuration for your application' },
|
|
313
|
+
children: [
|
|
314
|
+
{ type: 'field', field: { fieldId: 'name', span: 6 } },
|
|
315
|
+
{ type: 'field', field: { fieldId: 'description', span: 6 } },
|
|
316
|
+
],
|
|
317
|
+
},
|
|
318
|
+
},
|
|
319
|
+
{
|
|
320
|
+
type: 'card',
|
|
321
|
+
card: {
|
|
322
|
+
title: { text: 'Display Options' },
|
|
323
|
+
subtitle: { text: 'Customize how content appears to users' },
|
|
324
|
+
children: [
|
|
325
|
+
{
|
|
326
|
+
type: 'container',
|
|
327
|
+
container: {
|
|
328
|
+
span: 12,
|
|
329
|
+
children: [
|
|
330
|
+
{ type: 'field', field: { fieldId: 'showHeader', span: 4 } },
|
|
331
|
+
{ type: 'field', field: { fieldId: 'showFooter', span: 4 } },
|
|
332
|
+
{ type: 'field', field: { fieldId: 'showSidebar', span: 4 } },
|
|
333
|
+
],
|
|
334
|
+
},
|
|
335
|
+
},
|
|
336
|
+
{ type: 'field', field: { fieldId: 'maxItemsPerPage', span: 6 } },
|
|
337
|
+
],
|
|
338
|
+
},
|
|
339
|
+
},
|
|
340
|
+
{
|
|
341
|
+
type: 'card',
|
|
342
|
+
card: {
|
|
343
|
+
title: { text: 'Notification Settings' },
|
|
344
|
+
children: [
|
|
345
|
+
{ type: 'field', field: { fieldId: 'emailNotifications', span: 6 } },
|
|
346
|
+
{ type: 'field', field: { fieldId: 'pushNotifications', span: 6 } },
|
|
347
|
+
{ type: 'field', field: { fieldId: 'notificationEmail', span: 12 } },
|
|
348
|
+
],
|
|
349
|
+
},
|
|
350
|
+
},
|
|
351
|
+
],
|
|
352
|
+
sidebar: [
|
|
353
|
+
{
|
|
354
|
+
type: 'card',
|
|
355
|
+
card: {
|
|
356
|
+
title: { text: 'Branding' },
|
|
357
|
+
subtitle: { text: 'Set your website URL' },
|
|
358
|
+
children: [
|
|
359
|
+
{ type: 'field', field: { fieldId: 'websiteUrl', span: 12 } },
|
|
360
|
+
],
|
|
361
|
+
},
|
|
362
|
+
},
|
|
363
|
+
],
|
|
364
|
+
},
|
|
365
|
+
},
|
|
366
|
+
},
|
|
367
|
+
],
|
|
368
|
+
};
|
|
369
|
+
```
|
|
370
|
+
|
|
371
|
+
### Data Source (appSettingsDataSource.ts)
|
|
372
|
+
|
|
373
|
+
```typescript
|
|
374
|
+
import type { SchemaConfig } from '@wix/auto-patterns';
|
|
375
|
+
|
|
376
|
+
export const appSettingsDataSource = async (
|
|
377
|
+
_collectionId: string,
|
|
378
|
+
_context: any,
|
|
379
|
+
): Promise<SchemaConfig> => {
|
|
380
|
+
return {
|
|
381
|
+
id: 'app-settings',
|
|
382
|
+
displayField: 'name',
|
|
383
|
+
idField: 'id',
|
|
384
|
+
fields: {
|
|
385
|
+
id: {
|
|
386
|
+
id: 'id',
|
|
387
|
+
type: 'SHORT_TEXT',
|
|
388
|
+
displayName: 'ID',
|
|
389
|
+
validation: { required: true },
|
|
390
|
+
},
|
|
391
|
+
name: {
|
|
392
|
+
id: 'name',
|
|
393
|
+
type: 'SHORT_TEXT',
|
|
394
|
+
displayName: 'App Name',
|
|
395
|
+
validation: { required: true },
|
|
396
|
+
},
|
|
397
|
+
description: {
|
|
398
|
+
id: 'description',
|
|
399
|
+
type: 'LONG_TEXT',
|
|
400
|
+
displayName: 'Description',
|
|
401
|
+
},
|
|
402
|
+
showHeader: {
|
|
403
|
+
id: 'showHeader',
|
|
404
|
+
type: 'BOOLEAN',
|
|
405
|
+
displayName: 'Show Header',
|
|
406
|
+
},
|
|
407
|
+
showFooter: {
|
|
408
|
+
id: 'showFooter',
|
|
409
|
+
type: 'BOOLEAN',
|
|
410
|
+
displayName: 'Show Footer',
|
|
411
|
+
},
|
|
412
|
+
showSidebar: {
|
|
413
|
+
id: 'showSidebar',
|
|
414
|
+
type: 'BOOLEAN',
|
|
415
|
+
displayName: 'Show Sidebar',
|
|
416
|
+
},
|
|
417
|
+
maxItemsPerPage: {
|
|
418
|
+
id: 'maxItemsPerPage',
|
|
419
|
+
type: 'NUMBER',
|
|
420
|
+
displayName: 'Max Items Per Page',
|
|
421
|
+
},
|
|
422
|
+
emailNotifications: {
|
|
423
|
+
id: 'emailNotifications',
|
|
424
|
+
type: 'BOOLEAN',
|
|
425
|
+
displayName: 'Email Notifications',
|
|
426
|
+
},
|
|
427
|
+
pushNotifications: {
|
|
428
|
+
id: 'pushNotifications',
|
|
429
|
+
type: 'BOOLEAN',
|
|
430
|
+
displayName: 'Push Notifications',
|
|
431
|
+
},
|
|
432
|
+
notificationEmail: {
|
|
433
|
+
id: 'notificationEmail',
|
|
434
|
+
type: 'SHORT_TEXT',
|
|
435
|
+
displayName: 'Notification Email',
|
|
436
|
+
},
|
|
437
|
+
websiteUrl: {
|
|
438
|
+
id: 'websiteUrl',
|
|
439
|
+
type: 'URL',
|
|
440
|
+
displayName: 'Website URL',
|
|
441
|
+
},
|
|
442
|
+
},
|
|
443
|
+
actions: {
|
|
444
|
+
get: async (entityId: string) => {
|
|
445
|
+
console.log('Getting settings:', entityId);
|
|
446
|
+
return {
|
|
447
|
+
id: 'app-settings',
|
|
448
|
+
name: 'My App',
|
|
449
|
+
description: 'App description',
|
|
450
|
+
showHeader: true,
|
|
451
|
+
showFooter: true,
|
|
452
|
+
showSidebar: false,
|
|
453
|
+
maxItemsPerPage: 10,
|
|
454
|
+
emailNotifications: true,
|
|
455
|
+
pushNotifications: false,
|
|
456
|
+
notificationEmail: 'admin@example.com',
|
|
457
|
+
websiteUrl: 'https://example.com',
|
|
458
|
+
};
|
|
459
|
+
},
|
|
460
|
+
create: async (newEntity: any) => {
|
|
461
|
+
console.log('Creating settings:', newEntity);
|
|
462
|
+
return newEntity;
|
|
463
|
+
},
|
|
464
|
+
update: async (updatedEntity: any) => {
|
|
465
|
+
console.log('Saving settings:', updatedEntity);
|
|
466
|
+
return updatedEntity;
|
|
467
|
+
},
|
|
468
|
+
delete: async (entityId: string) => {
|
|
469
|
+
console.log('Deleting settings:', entityId);
|
|
470
|
+
return { id: entityId };
|
|
471
|
+
},
|
|
472
|
+
bulkDelete: async (entityIds: string[]) => {
|
|
473
|
+
console.log('Bulk deleting settings:', entityIds);
|
|
474
|
+
return entityIds.map((id) => ({ id }));
|
|
475
|
+
},
|
|
476
|
+
find: async () => {
|
|
477
|
+
console.log('Fetching settings...');
|
|
478
|
+
return {
|
|
479
|
+
items: [
|
|
480
|
+
{
|
|
481
|
+
id: 'app-settings',
|
|
482
|
+
name: 'My App',
|
|
483
|
+
description: 'App description',
|
|
484
|
+
showHeader: true,
|
|
485
|
+
showFooter: true,
|
|
486
|
+
showSidebar: false,
|
|
487
|
+
maxItemsPerPage: 10,
|
|
488
|
+
emailNotifications: true,
|
|
489
|
+
pushNotifications: false,
|
|
490
|
+
notificationEmail: 'admin@example.com',
|
|
491
|
+
websiteUrl: 'https://example.com',
|
|
492
|
+
},
|
|
493
|
+
],
|
|
494
|
+
hasNext: false,
|
|
495
|
+
total: 1,
|
|
496
|
+
};
|
|
497
|
+
},
|
|
498
|
+
},
|
|
499
|
+
};
|
|
500
|
+
};
|
|
501
|
+
```
|
|
502
|
+
|
|
503
|
+
## Usage with AutoPatternsApp
|
|
504
|
+
|
|
505
|
+
```tsx
|
|
506
|
+
import React from 'react';
|
|
507
|
+
import { WixDesignSystemProvider } from '@wix/design-system';
|
|
508
|
+
import '@wix/design-system/styles.global.css';
|
|
509
|
+
import {
|
|
510
|
+
AutoPatternsOverridesProvider,
|
|
511
|
+
AutoPatternsApp,
|
|
512
|
+
} from '@wix/auto-patterns';
|
|
513
|
+
import { WixPatternsBMProvider } from '@wix/patterns/bm';
|
|
514
|
+
import { appConfig } from './settingPageConfig.patterns';
|
|
515
|
+
import { useActions } from './useActions';
|
|
516
|
+
import { useCustomDataSources } from './useCustomDataSources';
|
|
517
|
+
|
|
518
|
+
const App = () => {
|
|
519
|
+
const actions = useActions();
|
|
520
|
+
const customDataSources = useCustomDataSources();
|
|
521
|
+
|
|
522
|
+
return (
|
|
523
|
+
<WixDesignSystemProvider features={{ newColorsBranding: true }}>
|
|
524
|
+
<WixPatternsBMProvider>
|
|
525
|
+
<AutoPatternsOverridesProvider
|
|
526
|
+
value={{
|
|
527
|
+
actions,
|
|
528
|
+
customDataSources,
|
|
529
|
+
}}
|
|
530
|
+
>
|
|
531
|
+
<AutoPatternsApp configuration={appConfig} />
|
|
532
|
+
</AutoPatternsOverridesProvider>
|
|
533
|
+
</WixPatternsBMProvider>
|
|
534
|
+
</WixDesignSystemProvider>
|
|
535
|
+
);
|
|
536
|
+
};
|
|
537
|
+
```
|
|
538
|
+
|
|
539
|
+
## Validation
|
|
540
|
+
|
|
541
|
+
Field validation is configured in the data source schema:
|
|
542
|
+
|
|
543
|
+
```typescript
|
|
544
|
+
fields: {
|
|
545
|
+
email: {
|
|
546
|
+
id: 'email',
|
|
547
|
+
type: 'SHORT_TEXT',
|
|
548
|
+
displayName: 'Email',
|
|
549
|
+
validation: { required: true },
|
|
550
|
+
},
|
|
551
|
+
}
|
|
552
|
+
```
|
|
553
|
+
|
|
554
|
+
When a user attempts to save with invalid fields:
|
|
555
|
+
1. The first invalid field is focused
|
|
556
|
+
2. The save action is prevented
|
|
557
|
+
3. An error is thrown to indicate form validation failure
|
|
558
|
+
|
|
559
|
+
## Best Practices
|
|
560
|
+
|
|
561
|
+
1. **Use Custom Data Source Pattern**: Settings pages use the same data source pattern as collection pages for consistency
|
|
562
|
+
2. **Group Related Settings**: Use cards to organize related settings together
|
|
563
|
+
3. **Use Descriptive Labels**: Field `displayName` should clearly describe the setting
|
|
564
|
+
4. **Provide Context**: Use card subtitles and learn more links to help users understand settings
|
|
565
|
+
5. **Validate Required Fields**: Mark essential settings as required in the schema
|
|
566
|
+
6. **Handle Errors**: Implement proper error handling in data source actions
|
|
567
|
+
7. **Use Appropriate Field Types**: Choose the right field type for each setting (BOOLEAN for toggles, NUMBER for numeric values, etc.)
|
|
568
|
+
|
|
569
|
+
## Common Mistakes to Avoid
|
|
570
|
+
|
|
571
|
+
- Missing `entityTypeSource: 'custom'` and `custom.id` configuration
|
|
572
|
+
- Not registering the custom data source in `AutoPatternsOverridesProvider`
|
|
573
|
+
- Field IDs in layout not matching field definitions in the data source schema
|
|
574
|
+
- Forgetting to wrap with required providers (WixDesignSystemProvider, WixPatternsBMProvider, AutoPatternsOverridesProvider)
|
|
575
|
+
- Not handling async errors in data source actions
|
|
576
|
+
- Using span values that exceed 12 columns per row
|
|
577
|
+
- Forgetting to export and register custom actions
|
|
578
|
+
|
|
579
|
+
## File Structure
|
|
580
|
+
|
|
581
|
+
A typical settings page implementation has the following structure:
|
|
582
|
+
|
|
583
|
+
```
|
|
584
|
+
src/
|
|
585
|
+
├── components/
|
|
586
|
+
│ └── Settings/
|
|
587
|
+
│ ├── settingPageConfig.patterns.ts # AppConfig with page configuration
|
|
588
|
+
│ ├── appSettingsDataSource.ts # Custom data source with schema and actions
|
|
589
|
+
│ ├── useCustomDataSources.tsx # Hook to register data source
|
|
590
|
+
│ ├── useActions.tsx # Hook to register custom actions
|
|
591
|
+
│ └── actions/
|
|
592
|
+
│ ├── index.ts # Export all actions
|
|
593
|
+
│ ├── exportSettings.tsx # Export action resolver
|
|
594
|
+
│ ├── importSettings.tsx # Import action resolver
|
|
595
|
+
│ └── resetSettings.tsx # Reset action resolver
|
|
596
|
+
└── pages/
|
|
597
|
+
└── settings/
|
|
598
|
+
└── index.tsx # Page component with providers
|
|
599
|
+
```
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wix/auto-patterns",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.45.0",
|
|
4
4
|
"license": "UNLICENSED",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Matvey Oklander",
|
|
@@ -94,7 +94,7 @@
|
|
|
94
94
|
"@wix/sdk": "^1.17.2",
|
|
95
95
|
"@wix/sdk-testkit": ">=0.1.9",
|
|
96
96
|
"@wix/wix-data-items-common": "^1.0.270",
|
|
97
|
-
"@wix/wix-data-items-sdk": "^1.0.
|
|
97
|
+
"@wix/wix-data-items-sdk": "^1.0.440",
|
|
98
98
|
"@wix/yoshi-flow-library": "^6.163.0",
|
|
99
99
|
"@wix/yoshi-style-dependencies": "^6.163.0",
|
|
100
100
|
"chance": "^1.1.13",
|
|
@@ -160,5 +160,5 @@
|
|
|
160
160
|
"wallaby": {
|
|
161
161
|
"autoDetect": true
|
|
162
162
|
},
|
|
163
|
-
"falconPackageHash": "
|
|
163
|
+
"falconPackageHash": "3915a980411ec11e3ce247a04e1f7aa76cfa8c3c0a038cc3c51bc004"
|
|
164
164
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireDefault","require","_designSystem","_jsxFileName","Checkbox","props","field","onChange","value","default","createElement","checked","e","target","dataHook","id","__self","__source","fileName","lineNumber","columnNumber","displayName","exports"],"sources":["../../../../../src/components/AutoPatternsEntityPage/Fields/Checkbox.tsx"],"sourcesContent":["import React from 'react';\nimport { Checkbox as CheckboxWSR } from '@wix/design-system';\nimport { BaseInputProps } from './types';\n\nexport interface CheckboxProps extends BaseInputProps<boolean> {}\n\nexport const Checkbox = (props: CheckboxProps) => {\n const { field, onChange, value } = props;\n\n return (\n <CheckboxWSR\n checked={value}\n onChange={(e) => {\n onChange(e.target.checked);\n }}\n dataHook={`checkbox-${field.id}`}\n >\n {field.displayName}\n </CheckboxWSR>\n );\n};\n"],"mappings":";;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,aAAA,GAAAD,OAAA;AAA6D,IAAAE,YAAA;AAKtD,MAAMC,QAAQ,GAAIC,KAAoB,IAAK;EAChD,MAAM;IAAEC,KAAK;IAAEC,QAAQ;IAAEC;EAAM,CAAC,GAAGH,KAAK;EAExC,oBACEN,MAAA,CAAAU,OAAA,CAAAC,aAAA,CAACR,aAAA,CAAAE,QAAW;IACVO,OAAO,EAAEH,KAAM;IACfD,QAAQ,EAAGK,CAAC,IAAK;MACfL,QAAQ,CAACK,CAAC,CAACC,MAAM,CAACF,OAAO,CAAC;IAC5B,CAAE;IACFG,QAAQ,EAAE,YAAYR,KAAK,CAACS,EAAE,EAAG;IAAAC,MAAA;IAAAC,QAAA;MAAAC,QAAA,EAAAf,YAAA;MAAAgB,UAAA;MAAAC,YAAA;IAAA;EAAA,GAEhCd,KAAK,CAACe,WACI,CAAC;AAElB,CAAC;AAACC,OAAA,CAAAlB,QAAA,GAAAA,QAAA","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_designSystem","_dates","_patterns","_form","_jsxFileName","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","validateDateField","value","validation","format","validationType","required","undefined","dateFormat","DateInput","props","_pageState$entity","_field$validation","field","dataHook","inputRef","translate","container","useWixPatternsContainer","useSelector","initTask","status","pageState","useEntityPageContext","controller","useController","name","id","control","form","defaultValue","entity","rules","validate","error","date","setDate","useState","getDateWithoutTimezone","getISODateStringWithFixedTimezone","ref","useRef","errorMessage","setErrorMessage","createElement","FormField","label","displayName","__self","__source","fileName","lineNumber","columnNumber","DatePicker","internalRef","current","focus","_internalRef$state","state","width","onChange","newValue","formattedDate","split","onValidate","invalid","statusMessage","exports"],"sources":["../../../../../src/components/AutoPatternsEntityPage/Fields/DateInput.tsx"],"sourcesContent":["import React, { useState, useRef } from 'react';\nimport { FormField, DatePicker } from '@wix/design-system';\nimport {\n getDateWithoutTimezone,\n getISODateStringWithFixedTimezone,\n} from './utils/dates';\nimport { BaseInputProps, BaseInputRef } from './types';\nimport {\n useSelector,\n useWixPatternsContainer,\n useEntityPageContext,\n} from '@wix/patterns';\nimport { useController } from '@wix/patterns/form';\nimport { Translate } from '@wix/patterns/core';\n\nexport interface DateProps extends BaseInputProps<string | null> {}\n\nfunction validateDateField(\n value: string | null | undefined,\n validation: DateProps['field']['validation'],\n t: Translate,\n format?: string,\n validationType?: 'outOfBoundsError' | 'formatError' | 'valid',\n) {\n if (\n validation?.required &&\n (value === null || value === undefined || value === '')\n ) {\n return t('cairo.fieldValidation.requiredField');\n } else if (validationType === 'formatError' && format) {\n return t('cairo.customFields.fieldType.date.invalid.value', {\n dateFormat: format,\n });\n }\n\n return '';\n}\n\nexport const DateInput = (props: DateProps) => {\n const { field, dataHook, inputRef } = props;\n const { translate: t, ...container } = useWixPatternsContainer();\n useSelector(() => container.initTask.status);\n const pageState = useEntityPageContext();\n\n const controller = useController({\n name: field?.id ?? '',\n control: pageState.form.control,\n defaultValue: (pageState.entity as any)?.[field?.id ?? ''],\n rules: {\n validate: (value) => {\n const error = validateDateField(value, field.validation, t);\n return error || true;\n },\n },\n });\n\n const [date, setDate] = useState<Date | undefined>(() => {\n if (controller.field.value) {\n return getDateWithoutTimezone(\n getISODateStringWithFixedTimezone(controller.field.value),\n );\n }\n return undefined;\n });\n\n const ref = useRef<BaseInputRef>({});\n const [errorMessage, setErrorMessage] = useState<string>('');\n\n return (\n <FormField\n label={field.displayName}\n required={field.validation?.required}\n dataHook={dataHook}\n >\n <DatePicker\n ref={(internalRef) => {\n inputRef?.(ref.current);\n // @ts-expect-error: WSR internal API hack for focusing\n ref.current.focus = () => internalRef?.state?.inputRef?.focus?.();\n }}\n dataHook={`date-${field.id}`}\n width=\"100%\"\n value={date}\n onChange={(newValue: Date) => {\n setDate(newValue);\n if (newValue) {\n const formattedDate = getISODateStringWithFixedTimezone(newValue);\n controller.field.onChange(formattedDate.split('T')[0]);\n } else {\n controller.field.onChange(null);\n }\n }}\n onValidate={({ validationType, value: newValue, format }) => {\n const error = validateDateField(\n newValue,\n field.validation,\n t,\n format,\n validationType,\n );\n setErrorMessage(error);\n ref.current.invalid = !!error;\n\n if (validationType === 'formatError' && newValue === '') {\n setDate(undefined);\n controller.field.onChange(null);\n }\n }}\n status={errorMessage ? 'error' : undefined}\n statusMessage={errorMessage}\n />\n </FormField>\n );\n};\n"],"mappings":"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","ignoreList":[]}
|