@strapi/admin 4.1.7 → 4.1.10-beta.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/admin/src/assets/images/icon_offline-cloud.svg +5 -0
- package/admin/src/components/ConfigurationsProvider/index.js +51 -0
- package/admin/src/components/ConfigurationsProvider/reducer.js +28 -0
- package/admin/src/components/LeftMenu/index.js +4 -2
- package/admin/src/components/Providers/index.js +8 -4
- package/admin/src/components/UnauthenticatedLogo/index.js +4 -2
- package/admin/src/content-manager/components/DynamicTable/CellContent/utils/hasContent.js +4 -0
- package/admin/src/content-manager/components/EditViewDataManagerProvider/index.js +5 -5
- package/admin/src/content-manager/components/EditViewDataManagerProvider/utils/schema.js +12 -12
- package/admin/src/content-manager/components/FieldComponent/index.js +0 -1
- package/admin/src/content-manager/components/Inputs/index.js +4 -4
- package/admin/src/content-manager/components/RepeatableComponent/index.js +2 -14
- package/admin/src/content-manager/components/RepeatableComponent/utils/getComponentErrorKeys.js +10 -0
- package/admin/src/content-manager/pages/EditSettingsView/index.js +1 -1
- package/admin/src/hooks/useNavigatorOnLine/index.js +31 -0
- package/admin/src/pages/App/index.js +7 -2
- package/admin/src/pages/MarketplacePage/components/MissingPluginBanner/index.js +40 -0
- package/admin/src/pages/MarketplacePage/components/PageHeader/index.js +46 -0
- package/admin/src/pages/MarketplacePage/index.js +48 -26
- package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/components/Form/index.js +85 -0
- package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/components/Form/init.js +13 -0
- package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/components/Form/reducer.js +43 -0
- package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/components/LogoInput/index.js +116 -0
- package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/components/LogoInput/reducer.js +28 -0
- package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/components/LogoInput/stepper.js +25 -0
- package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/components/LogoModalStepper/AddLogoDialog.js +67 -0
- package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/components/LogoModalStepper/FromComputerForm.js +176 -0
- package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/components/LogoModalStepper/FromUrlForm.js +82 -0
- package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/components/LogoModalStepper/ImageCardAsset.js +51 -0
- package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/components/LogoModalStepper/PendingLogoDialog.js +97 -0
- package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/components/LogoModalStepper/index.js +85 -0
- package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/components/LogoModalStepper/reducer.js +28 -0
- package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/index.js +149 -87
- package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/utils/api.js +16 -0
- package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/utils/constants.js +3 -0
- package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/utils/getFormData.js +17 -0
- package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/utils/parseFileMetadatas.js +76 -0
- package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/utils/prefixAllUrls.js +17 -0
- package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/utils/urlToFile.js +21 -0
- package/admin/src/translations/de.json +244 -23
- package/admin/src/translations/en.json +29 -0
- package/build/1856.521a99fd.chunk.js +172 -0
- package/build/2481.7ba28142.chunk.js +184 -0
- package/build/2758.927ecb6d.chunk.js +162 -0
- package/build/2912.79c2b3c8.chunk.js +253 -0
- package/build/372.3720845e.chunk.js +899 -0
- package/build/4715.77e04177.chunk.js +385 -0
- package/build/4800.d3ebc81d.chunk.js +1 -0
- package/build/497.fbd75558.chunk.js +284 -0
- package/build/4982.f53b78a4.chunk.js +308 -0
- package/build/5289.0341db2d.chunk.js +336 -0
- package/build/6404.80bf5858.chunk.js +506 -0
- package/build/6925.fafef528.chunk.js +761 -0
- package/build/7197.959bbe97.chunk.js +113 -0
- package/build/7589.f3b26345.chunk.js +194 -0
- package/build/7841.f0e7d629.chunk.js +253 -0
- package/build/8469.3af1823d.chunk.js +1 -0
- package/build/9115.318a6841.chunk.js +1 -0
- package/build/9298.f97fcef0.chunk.js +334 -0
- package/build/948.d64fb515.chunk.js +2 -0
- package/build/9853.d96fbc67.chunk.js +356 -0
- package/build/Admin-authenticatedApp.d8767873.chunk.js +80 -0
- package/build/Admin_homePage.50b6c129.chunk.js +71 -0
- package/build/Admin_marketplace.514ace37.chunk.js +11 -0
- package/build/Admin_pluginsPage.e895d79f.chunk.js +1 -0
- package/build/Admin_profilePage.33cfed9b.chunk.js +15 -0
- package/build/Admin_settingsPage.0d94a598.chunk.js +180 -0
- package/build/a6b842e0b6d2b61135d1.svg +5 -0
- package/build/admin-edit-roles-page.06f3d288.chunk.js +1 -0
- package/build/admin-edit-users.6a325cca.chunk.js +11 -0
- package/build/admin-users.b89adf82.chunk.js +12 -0
- package/build/api-tokens-create-page.635e20c8.chunk.js +1 -0
- package/build/api-tokens-edit-page.db07253e.chunk.js +1 -0
- package/build/api-tokens-list-page.346c2149.chunk.js +15 -0
- package/build/ar-json.d4cb26d9.chunk.js +1 -0
- package/build/codemirror-addon-closebrackets.c0f97916.chunk.js +2 -0
- package/build/codemirror-addon-lint-js.7c35dcb0.chunk.js +1 -0
- package/build/codemirror-addon-lint.505ff1d4.chunk.js +1 -0
- package/build/codemirror-addon-mark-selection.653e904d.chunk.js +1 -0
- package/build/codemirror-css.98490df3.chunk.js +346 -0
- package/build/codemirror-javacript.cafbda9c.chunk.js +1 -0
- package/build/codemirror-theme.b3c64617.chunk.js +34 -0
- package/build/content-manager.78e3f35c.chunk.js +1204 -0
- package/build/content-type-builder-translation-ar-json.142327af.chunk.js +1 -0
- package/build/content-type-builder-translation-cs-json.4aafb972.chunk.js +1 -0
- package/build/content-type-builder-translation-de-json.0d7696b9.chunk.js +1 -0
- package/build/{content-type-builder-translation-dk-json.52805572.chunk.js → content-type-builder-translation-dk-json.4729f055.chunk.js} +1 -1
- package/build/content-type-builder-translation-en-json.e5110288.chunk.js +1 -0
- package/build/{content-type-builder-translation-es-json.5a362abf.chunk.js → content-type-builder-translation-es-json.333cf47f.chunk.js} +1 -1
- package/build/content-type-builder-translation-fr-json.aa6eeea8.chunk.js +1 -0
- package/build/{content-type-builder-translation-id-json.4a21dfab.chunk.js → content-type-builder-translation-id-json.7c00a32a.chunk.js} +1 -1
- package/build/content-type-builder-translation-it-json.a906b389.chunk.js +1 -0
- package/build/content-type-builder-translation-ja-json.87f71930.chunk.js +1 -0
- package/build/content-type-builder-translation-ko-json.51201b12.chunk.js +1 -0
- package/build/{content-type-builder-translation-ms-json.3755f8c8.chunk.js → content-type-builder-translation-ms-json.963a1a01.chunk.js} +1 -1
- package/build/{content-type-builder-translation-nl-json.6f8d924b.chunk.js → content-type-builder-translation-nl-json.c46c8f30.chunk.js} +1 -1
- package/build/{content-type-builder-translation-pl-json.fc0b0c20.chunk.js → content-type-builder-translation-pl-json.a866acda.chunk.js} +1 -1
- package/build/content-type-builder-translation-pt-BR-json.5739a2aa.chunk.js +1 -0
- package/build/content-type-builder-translation-pt-json.766bd747.chunk.js +1 -0
- package/build/content-type-builder-translation-ru-json.cf8d7c5c.chunk.js +1 -0
- package/build/content-type-builder-translation-sk-json.3a6defe0.chunk.js +1 -0
- package/build/content-type-builder-translation-th-json.c96a2d3f.chunk.js +1 -0
- package/build/content-type-builder-translation-tr-json.2e52bc60.chunk.js +1 -0
- package/build/content-type-builder-translation-uk-json.d8c0b6dd.chunk.js +1 -0
- package/build/content-type-builder-translation-zh-Hans-json.92a27f59.chunk.js +1 -0
- package/build/content-type-builder-translation-zh-json.2cc55621.chunk.js +1 -0
- package/build/content-type-builder.0d8729ad.chunk.js +141 -0
- package/build/cropper-css.0055cd53.chunk.js +306 -0
- package/build/cs-json.c8f28ba8.chunk.js +1 -0
- package/build/de-json.0b92acd2.chunk.js +1 -0
- package/build/{dk-json.fb9ee45a.chunk.js → dk-json.9f1bc016.chunk.js} +1 -1
- package/build/email-settings-page.fcc7e65d.chunk.js +103 -0
- package/build/{email-translation-de-json.559a7d5f.chunk.js → email-translation-ar-json.c624512d.chunk.js} +1 -1
- package/build/{email-translation-ar-json.95d90eb4.chunk.js → email-translation-cs-json.cb18caab.chunk.js} +1 -1
- package/build/{email-translation-it-json.3de61cb6.chunk.js → email-translation-de-json.54743260.chunk.js} +1 -1
- package/build/{email-translation-dk-json.f8a595bf.chunk.js → email-translation-dk-json.f323fe4e.chunk.js} +1 -1
- package/build/{email-translation-en-json.fa0dc92b.chunk.js → email-translation-en-json.6da7e388.chunk.js} +1 -1
- package/build/{email-translation-es-json.eb303dea.chunk.js → email-translation-es-json.9021417d.chunk.js} +1 -1
- package/build/{email-translation-fr-json.49c3c888.chunk.js → email-translation-fr-json.9f125db0.chunk.js} +1 -1
- package/build/email-translation-id-json.3bcae5f5.chunk.js +1 -0
- package/build/{email-translation-cs-json.dfd1f3f2.chunk.js → email-translation-it-json.6ffd1774.chunk.js} +1 -1
- package/build/email-translation-ja-json.72b3f73c.chunk.js +1 -0
- package/build/email-translation-ko-json.e61d4e7a.chunk.js +1 -0
- package/build/email-translation-ms-json.b2b11e05.chunk.js +1 -0
- package/build/email-translation-nl-json.5349635f.chunk.js +1 -0
- package/build/email-translation-pl-json.6da50d0f.chunk.js +1 -0
- package/build/email-translation-pt-BR-json.2c98ab20.chunk.js +1 -0
- package/build/email-translation-pt-json.959ea070.chunk.js +1 -0
- package/build/email-translation-ru-json.d508cf3e.chunk.js +1 -0
- package/build/email-translation-sk-json.fa1fd4b3.chunk.js +1 -0
- package/build/email-translation-th-json.989cfecc.chunk.js +1 -0
- package/build/email-translation-tr-json.87f2feb3.chunk.js +1 -0
- package/build/email-translation-uk-json.0396a803.chunk.js +1 -0
- package/build/email-translation-vi-json.c0d8c414.chunk.js +1 -0
- package/build/email-translation-zh-Hans-json.b463cb25.chunk.js +1 -0
- package/build/email-translation-zh-json.3455468b.chunk.js +1 -0
- package/build/en-json.ca572384.chunk.js +1 -0
- package/build/{es-json.8f4d89e2.chunk.js → es-json.2a5a9fc1.chunk.js} +1 -1
- package/build/fontawesome-css-all.b88d464e.chunk.js +4618 -0
- package/build/fontawesome-css.59dc4459.chunk.js +6 -0
- package/build/fontawesome-js.252cc5f3.chunk.js +7 -0
- package/build/fr-json.84064a0b.chunk.js +1 -0
- package/build/he-json.d40da459.chunk.js +1 -0
- package/build/highlight.js.9d8ef460.chunk.js +86 -0
- package/build/hu-json.c81ce352.chunk.js +1 -0
- package/build/i18n-settings-page.477ffac7.chunk.js +101 -0
- package/build/{i18n-translation-de-json.96ae1f68.chunk.js → i18n-translation-de-json.92534555.chunk.js} +1 -1
- package/build/{i18n-translation-dk-json.ecf02d28.chunk.js → i18n-translation-dk-json.54f410ca.chunk.js} +1 -1
- package/build/{i18n-translation-en-json.4d823f62.chunk.js → i18n-translation-en-json.85bc892c.chunk.js} +1 -1
- package/build/i18n-translation-es-json.488206ae.chunk.js +1 -0
- package/build/i18n-translation-fr-json.0839d68d.chunk.js +1 -0
- package/build/i18n-translation-ko-json.d0bc1203.chunk.js +1 -0
- package/build/i18n-translation-zh-Hans-json.560a98e3.chunk.js +1 -0
- package/build/{id-json.fef679cb.chunk.js → id-json.fad45d17.chunk.js} +1 -1
- package/build/index.html +1 -1
- package/build/it-json.12df4cdf.chunk.js +1 -0
- package/build/ja-json.850237e9.chunk.js +1 -0
- package/build/ko-json.2f3d256e.chunk.js +1 -0
- package/build/main.06f66609.js +7909 -0
- package/build/{ms-json.f46167ef.chunk.js → ms-json.836ed013.chunk.js} +1 -1
- package/build/nl-json.465b173f.chunk.js +1 -0
- package/build/{no-json.17ecda5d.chunk.js → no-json.e8749dd4.chunk.js} +1 -1
- package/build/{pl-json.0db77f2c.chunk.js → pl-json.94f05d2c.chunk.js} +1 -1
- package/build/{pt-BR-json.4c90cb2d.chunk.js → pt-BR-json.6301d49b.chunk.js} +1 -1
- package/build/pt-json.c23020ab.chunk.js +1 -0
- package/build/ru-json.4560906c.chunk.js +1 -0
- package/build/runtime~main.dc1c7ef6.js +2 -0
- package/build/sk-json.5b33afc2.chunk.js +1 -0
- package/build/sso-settings-page.0b4d2106.chunk.js +1 -0
- package/build/sv-json.cdcac02d.chunk.js +1 -0
- package/build/th-json.3aadaec6.chunk.js +1 -0
- package/build/tr-json.276e59fe.chunk.js +1 -0
- package/build/uk-json.5b5b9c27.chunk.js +1 -0
- package/build/upload-settings.1456cd65.chunk.js +101 -0
- package/build/upload-translation-de-json.b642da08.chunk.js +1 -0
- package/build/{upload-translation-dk-json.b74134c8.chunk.js → upload-translation-dk-json.fc61df13.chunk.js} +1 -1
- package/build/{upload-translation-en-json.c4e56528.chunk.js → upload-translation-en-json.59269508.chunk.js} +1 -1
- package/build/{upload-translation-es-json.15a3015f.chunk.js → upload-translation-es-json.8ec935ef.chunk.js} +1 -1
- package/build/upload-translation-fr-json.eb9b4f84.chunk.js +1 -0
- package/build/upload-translation-he-json.c226f2dc.chunk.js +1 -0
- package/build/upload-translation-it-json.8e58456e.chunk.js +1 -0
- package/build/upload-translation-ja-json.1378a2e7.chunk.js +1 -0
- package/build/upload-translation-ko-json.5e06e112.chunk.js +1 -0
- package/build/{upload-translation-ms-json.30974c82.chunk.js → upload-translation-ms-json.dc3bf0d7.chunk.js} +1 -1
- package/build/{upload-translation-pl-json.3740abed.chunk.js → upload-translation-pl-json.6071e38c.chunk.js} +1 -1
- package/build/upload-translation-pt-BR-json.7e8d9550.chunk.js +1 -0
- package/build/upload-translation-ru-json.da2529f3.chunk.js +1 -0
- package/build/upload-translation-sk-json.bfdf4f09.chunk.js +1 -0
- package/build/upload-translation-th-json.6a48b826.chunk.js +1 -0
- package/build/upload-translation-uk-json.6fb09148.chunk.js +1 -0
- package/build/upload-translation-zh-Hans-json.c9622577.chunk.js +1 -0
- package/build/upload-translation-zh-json.711f804b.chunk.js +1 -0
- package/build/upload.d45af2c9.chunk.js +105 -0
- package/build/users-advanced-settings-page.5aa21b84.chunk.js +101 -0
- package/build/users-email-settings-page.8b561ea3.chunk.js +1 -0
- package/build/users-permissions-translation-ar-json.e8123ed2.chunk.js +1 -0
- package/build/users-permissions-translation-cs-json.e6649c5f.chunk.js +1 -0
- package/build/{users-permissions-translation-de-json.a5c8db9c.chunk.js → users-permissions-translation-de-json.c3628843.chunk.js} +1 -1
- package/build/{users-permissions-translation-dk-json.1fe5e07a.chunk.js → users-permissions-translation-dk-json.fe39c74b.chunk.js} +1 -1
- package/build/users-permissions-translation-en-json.3fe86528.chunk.js +1 -0
- package/build/{users-permissions-translation-es-json.05669296.chunk.js → users-permissions-translation-es-json.1bb9cde2.chunk.js} +1 -1
- package/build/users-permissions-translation-fr-json.172aa69f.chunk.js +1 -0
- package/build/{users-permissions-translation-id-json.186a3f65.chunk.js → users-permissions-translation-id-json.5aadd143.chunk.js} +1 -1
- package/build/users-permissions-translation-it-json.7d377480.chunk.js +1 -0
- package/build/users-permissions-translation-ja-json.4967badf.chunk.js +1 -0
- package/build/users-permissions-translation-ko-json.3be77775.chunk.js +1 -0
- package/build/{users-permissions-translation-ms-json.3a128ff4.chunk.js → users-permissions-translation-ms-json.ea8a2baf.chunk.js} +1 -1
- package/build/{users-permissions-translation-nl-json.4146aed1.chunk.js → users-permissions-translation-nl-json.d638c4ce.chunk.js} +1 -1
- package/build/{users-permissions-translation-pl-json.a61de7ed.chunk.js → users-permissions-translation-pl-json.3c4fe81c.chunk.js} +1 -1
- package/build/users-permissions-translation-pt-BR-json.f6791a86.chunk.js +1 -0
- package/build/users-permissions-translation-pt-json.38afed04.chunk.js +1 -0
- package/build/users-permissions-translation-ru-json.319d51ef.chunk.js +1 -0
- package/build/users-permissions-translation-sk-json.ba1cd385.chunk.js +1 -0
- package/build/users-permissions-translation-sv-json.83c60841.chunk.js +1 -0
- package/build/users-permissions-translation-th-json.68873214.chunk.js +1 -0
- package/build/users-permissions-translation-tr-json.cdc49a3c.chunk.js +1 -0
- package/build/users-permissions-translation-uk-json.63eaa01c.chunk.js +1 -0
- package/build/users-permissions-translation-vi-json.dccc02fc.chunk.js +1 -0
- package/build/users-permissions-translation-zh-Hans-json.c3fd301b.chunk.js +1 -0
- package/build/users-permissions-translation-zh-json.e03ae2a4.chunk.js +1 -0
- package/build/users-providers-settings-page.82141ace.chunk.js +1 -0
- package/build/users-roles-settings-page.97d7092d.chunk.js +30 -0
- package/build/vi-json.3d14e91e.chunk.js +1 -0
- package/build/webhook-edit-page.2e6727ab.chunk.js +23 -0
- package/build/webhook-list-page.927257b5.chunk.js +133 -0
- package/build/zh-Hans-json.c84ce330.chunk.js +1 -0
- package/build/zh-json.96bf6019.chunk.js +1 -0
- package/package.json +10 -14
- package/scripts/build.js +1 -1
- package/server/bootstrap.js +3 -1
- package/server/config/admin-actions.js +14 -0
- package/server/config/index.js +0 -1
- package/server/controllers/admin.js +40 -2
- package/server/routes/admin.js +28 -0
- package/server/services/api-token.js +15 -14
- package/server/services/index.js +1 -0
- package/server/services/project-settings.js +173 -0
- package/server/services/token.js +13 -0
- package/server/utils/index.d.ts +2 -0
- package/server/validation/project-settings.js +39 -0
- package/webpack.config.js +78 -59
- package/build/1094.e1db3a1a.chunk.js +0 -1
- package/build/1454.f065d92a.chunk.js +0 -2
- package/build/1454.f065d92a.chunk.js.LICENSE.txt +0 -7
- package/build/1856.a30bd09b.chunk.js +0 -1
- package/build/2481.4eae9408.chunk.js +0 -1
- package/build/2912.c5f76e65.chunk.js +0 -1
- package/build/4362.d8299f0c.chunk.js +0 -1
- package/build/4715.8a2db02a.chunk.js +0 -1
- package/build/4800.f4a1384a.chunk.js +0 -1
- package/build/497.3fcf6196.chunk.js +0 -1
- package/build/4982.601f6196.chunk.js +0 -1
- package/build/6404.3c2d0a81.chunk.js +0 -1
- package/build/6925.bd694b04.chunk.js +0 -2
- package/build/6925.bd694b04.chunk.js.LICENSE.txt +0 -5
- package/build/7841.490dbbf1.chunk.js +0 -1
- package/build/8042.1d66811a.chunk.js +0 -2
- package/build/8042.1d66811a.chunk.js.LICENSE.txt +0 -4
- package/build/8469.8d819a3c.chunk.js +0 -1
- package/build/849.82c29ba7.chunk.js +0 -1
- package/build/9235.ced8aebf.chunk.js +0 -1
- package/build/9260.4233fae2.chunk.js +0 -2
- package/build/9260.4233fae2.chunk.js.LICENSE.txt +0 -15
- package/build/9853.6ff595fa.chunk.js +0 -1
- package/build/9988.fe838ba6.chunk.js +0 -2
- package/build/9988.fe838ba6.chunk.js.LICENSE.txt +0 -9
- package/build/Admin-authenticatedApp.61248de6.chunk.js +0 -1
- package/build/Admin_homePage.4a3aa22e.chunk.js +0 -1
- package/build/Admin_marketplace.4748c8f6.chunk.js +0 -1
- package/build/Admin_pluginsPage.89a96d29.chunk.js +0 -1
- package/build/Admin_profilePage.7869a07a.chunk.js +0 -1
- package/build/Admin_settingsPage.2763454c.chunk.js +0 -1
- package/build/admin-edit-roles-page.fbcc195d.chunk.js +0 -1
- package/build/admin-edit-users.91e8f5e4.chunk.js +0 -1
- package/build/admin-users.0a6acd73.chunk.js +0 -1
- package/build/api-tokens-create-page.76e13a35.chunk.js +0 -1
- package/build/api-tokens-edit-page.b3d48a7f.chunk.js +0 -1
- package/build/api-tokens-list-page.4e822ac8.chunk.js +0 -1
- package/build/ar-json.cc19c13c.chunk.js +0 -1
- package/build/codemirror-addon-closebrackets.0cfe64d0.chunk.js +0 -1
- package/build/codemirror-addon-lint-js.a6eeef9c.chunk.js +0 -1
- package/build/codemirror-addon-lint.91580cda.chunk.js +0 -1
- package/build/codemirror-addon-mark-selection.4dca121f.chunk.js +0 -1
- package/build/codemirror-css.48b438c9.chunk.js +0 -1
- package/build/codemirror-javacript.8c7c015d.chunk.js +0 -1
- package/build/codemirror-theme.b5559efc.chunk.js +0 -1
- package/build/content-manager.abde723b.chunk.js +0 -1
- package/build/content-type-builder-translation-ar-json.ab0a0caa.chunk.js +0 -1
- package/build/content-type-builder-translation-cs-json.e3913c9f.chunk.js +0 -1
- package/build/content-type-builder-translation-de-json.5eb3135d.chunk.js +0 -1
- package/build/content-type-builder-translation-en-json.e51b2ec3.chunk.js +0 -1
- package/build/content-type-builder-translation-fr-json.afd4a12f.chunk.js +0 -1
- package/build/content-type-builder-translation-it-json.4fa203b1.chunk.js +0 -1
- package/build/content-type-builder-translation-ja-json.cbb3b88a.chunk.js +0 -1
- package/build/content-type-builder-translation-ko-json.7daf86c3.chunk.js +0 -1
- package/build/content-type-builder-translation-pt-BR-json.86b192fa.chunk.js +0 -1
- package/build/content-type-builder-translation-pt-json.b584f79f.chunk.js +0 -1
- package/build/content-type-builder-translation-ru-json.7648049a.chunk.js +0 -1
- package/build/content-type-builder-translation-sk-json.c12a8dec.chunk.js +0 -1
- package/build/content-type-builder-translation-th-json.668cd5f5.chunk.js +0 -1
- package/build/content-type-builder-translation-tr-json.0f52e1e8.chunk.js +0 -1
- package/build/content-type-builder-translation-uk-json.4bf80448.chunk.js +0 -1
- package/build/content-type-builder-translation-zh-Hans-json.76e58138.chunk.js +0 -1
- package/build/content-type-builder-translation-zh-json.0bec81f1.chunk.js +0 -1
- package/build/content-type-builder.19ae7eef.chunk.js +0 -1
- package/build/cropper-css.ace19575.chunk.js +0 -1
- package/build/cs-json.ce6f2e52.chunk.js +0 -1
- package/build/de-json.2087d61e.chunk.js +0 -1
- package/build/email-settings-page.40ee2bda.chunk.js +0 -1
- package/build/email-translation-id-json.e3c2101d.chunk.js +0 -1
- package/build/email-translation-ja-json.66337e44.chunk.js +0 -1
- package/build/email-translation-ko-json.52bbd7b4.chunk.js +0 -1
- package/build/email-translation-ms-json.e39256df.chunk.js +0 -1
- package/build/email-translation-nl-json.12d28adb.chunk.js +0 -1
- package/build/email-translation-pl-json.9585a84e.chunk.js +0 -1
- package/build/email-translation-pt-BR-json.6c04b3ef.chunk.js +0 -1
- package/build/email-translation-pt-json.0239be04.chunk.js +0 -1
- package/build/email-translation-ru-json.f3b4fecc.chunk.js +0 -1
- package/build/email-translation-sk-json.76dbaaa6.chunk.js +0 -1
- package/build/email-translation-th-json.25ad73e7.chunk.js +0 -1
- package/build/email-translation-tr-json.ae04a9f2.chunk.js +0 -1
- package/build/email-translation-uk-json.03b27b08.chunk.js +0 -1
- package/build/email-translation-vi-json.3e1dd5b3.chunk.js +0 -1
- package/build/email-translation-zh-Hans-json.0df4ca59.chunk.js +0 -1
- package/build/email-translation-zh-json.82978eb0.chunk.js +0 -1
- package/build/en-json.94e6ed8a.chunk.js +0 -1
- package/build/fontawesome-css-all.3b89f909.chunk.js +0 -1
- package/build/fontawesome-css.36cff9ae.chunk.js +0 -1
- package/build/fontawesome-js.2639263c.chunk.js +0 -2
- package/build/fontawesome-js.2639263c.chunk.js.LICENSE.txt +0 -4
- package/build/fr-json.2a0b93ed.chunk.js +0 -1
- package/build/he-json.917d416c.chunk.js +0 -1
- package/build/highlight.js.6321cb45.chunk.js +0 -1
- package/build/hu-json.bee23c51.chunk.js +0 -1
- package/build/i18n-settings-page.1f6be747.chunk.js +0 -1
- package/build/i18n-translation-es-json.7049afa2.chunk.js +0 -1
- package/build/i18n-translation-fr-json.c6367bc9.chunk.js +0 -1
- package/build/i18n-translation-ko-json.aecb7e01.chunk.js +0 -1
- package/build/i18n-translation-zh-Hans-json.258b2e1a.chunk.js +0 -1
- package/build/it-json.937b2108.chunk.js +0 -1
- package/build/ja-json.b4818378.chunk.js +0 -1
- package/build/ko-json.8294a7fc.chunk.js +0 -1
- package/build/main.cd1c939f.js +0 -2
- package/build/main.cd1c939f.js.LICENSE.txt +0 -91
- package/build/nl-json.86eae27d.chunk.js +0 -1
- package/build/pt-json.ef0efd89.chunk.js +0 -1
- package/build/ru-json.da33236d.chunk.js +0 -1
- package/build/runtime~main.c5ab8a8f.js +0 -1
- package/build/sk-json.797e898f.chunk.js +0 -1
- package/build/sso-settings-page.c5dda65d.chunk.js +0 -1
- package/build/sv-json.5bbe6a4f.chunk.js +0 -1
- package/build/th-json.c1393c06.chunk.js +0 -1
- package/build/tr-json.57cde8b0.chunk.js +0 -1
- package/build/uk-json.c6df66d2.chunk.js +0 -1
- package/build/upload-settings.9d3231f4.chunk.js +0 -1
- package/build/upload-translation-de-json.55a7e43a.chunk.js +0 -1
- package/build/upload-translation-fr-json.b12f7247.chunk.js +0 -1
- package/build/upload-translation-he-json.bee013d1.chunk.js +0 -1
- package/build/upload-translation-it-json.43ec0a8d.chunk.js +0 -1
- package/build/upload-translation-ja-json.03f1af04.chunk.js +0 -1
- package/build/upload-translation-ko-json.08ad9013.chunk.js +0 -1
- package/build/upload-translation-pt-BR-json.c7656183.chunk.js +0 -1
- package/build/upload-translation-ru-json.0dd4f526.chunk.js +0 -1
- package/build/upload-translation-sk-json.55cacd22.chunk.js +0 -1
- package/build/upload-translation-th-json.f7aa9392.chunk.js +0 -1
- package/build/upload-translation-uk-json.696a16f3.chunk.js +0 -1
- package/build/upload-translation-zh-Hans-json.de7bc63f.chunk.js +0 -1
- package/build/upload-translation-zh-json.bbc1ed41.chunk.js +0 -1
- package/build/upload.8edef1ea.chunk.js +0 -1
- package/build/users-advanced-settings-page.48c437f0.chunk.js +0 -1
- package/build/users-email-settings-page.f39866d6.chunk.js +0 -1
- package/build/users-permissions-translation-ar-json.667e7eee.chunk.js +0 -1
- package/build/users-permissions-translation-cs-json.995b5d76.chunk.js +0 -1
- package/build/users-permissions-translation-en-json.0e0bc290.chunk.js +0 -1
- package/build/users-permissions-translation-fr-json.3e3522c3.chunk.js +0 -1
- package/build/users-permissions-translation-it-json.ee5742c4.chunk.js +0 -1
- package/build/users-permissions-translation-ja-json.c9cafa6e.chunk.js +0 -1
- package/build/users-permissions-translation-ko-json.170f89c2.chunk.js +0 -1
- package/build/users-permissions-translation-pt-BR-json.51b1cc15.chunk.js +0 -1
- package/build/users-permissions-translation-pt-json.85f0e0e1.chunk.js +0 -1
- package/build/users-permissions-translation-ru-json.a19b2400.chunk.js +0 -1
- package/build/users-permissions-translation-sk-json.27af7260.chunk.js +0 -1
- package/build/users-permissions-translation-sv-json.739657b9.chunk.js +0 -1
- package/build/users-permissions-translation-th-json.f001fff3.chunk.js +0 -1
- package/build/users-permissions-translation-tr-json.3aae5dda.chunk.js +0 -1
- package/build/users-permissions-translation-uk-json.a66c7a8c.chunk.js +0 -1
- package/build/users-permissions-translation-vi-json.685c65cc.chunk.js +0 -1
- package/build/users-permissions-translation-zh-Hans-json.2202741e.chunk.js +0 -1
- package/build/users-permissions-translation-zh-json.429a3190.chunk.js +0 -1
- package/build/users-providers-settings-page.574ed765.chunk.js +0 -1
- package/build/users-roles-settings-page.b836dc30.chunk.js +0 -1
- package/build/vi-json.104a6f3a.chunk.js +0 -1
- package/build/webhook-edit-page.b791c6f9.chunk.js +0 -1
- package/build/webhook-list-page.502d1236.chunk.js +0 -1
- package/build/zh-Hans-json.9afc1adf.chunk.js +0 -1
- package/build/zh-json.f36abb77.chunk.js +0 -1
- package/server/config/api-token.js +0 -7
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<svg width="88" height="88" viewBox="0 0 88 88" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<rect x="0.5" y="0.5" width="87" height="87" rx="43.5" fill="#F0F0FF"/>
|
|
3
|
+
<path d="M34.0469 39.2969H30C27.4479 39.2969 25.2604 40.2448 23.4375 42.1406C21.6146 43.9635 20.7031 46.151 20.7031 48.7031C20.7031 51.2552 21.6146 53.4427 23.4375 55.2656C25.2604 57.0885 27.4479 58 30 58H52.75L34.0469 39.2969ZM23 28.25L25.9531 25.2969L65 64.3438L62.0469 67.2969L57.3438 62.7031H30C26.1354 62.7031 22.8177 61.3542 20.0469 58.6562C17.349 55.8854 16 52.5677 16 48.7031C16 44.9115 17.3125 41.6667 19.9375 38.9688C22.5625 36.2708 25.7344 34.849 29.4531 34.7031L23 28.25ZM61.1719 39.4062C64.1615 39.625 66.7135 40.8646 68.8281 43.125C70.9427 45.3125 72 47.9375 72 51C72 55.0104 70.3594 58.1823 67.0781 60.5156L63.6875 57.125C66.0938 55.8125 67.2969 53.7708 67.2969 51C67.2969 49.1042 66.6042 47.4635 65.2188 46.0781C63.8333 44.6927 62.1927 44 60.2969 44H56.7969V42.7969C56.7969 39.224 55.5573 36.1979 53.0781 33.7188C50.599 31.2396 47.5729 30 44 30C41.9583 30 39.9896 30.474 38.0938 31.4219L34.5938 28.0312C37.4375 26.2083 40.5729 25.2969 44 25.2969C47.9375 25.2969 51.5833 26.6823 54.9375 29.4531C58.3646 32.224 60.4427 35.5417 61.1719 39.4062Z" fill="#4945FF"/>
|
|
4
|
+
<rect x="0.5" y="0.5" width="87" height="87" rx="43.5" stroke="#D9D8FF"/>
|
|
5
|
+
</svg>
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import React, { useReducer, useRef } from 'react';
|
|
2
|
+
import PropTypes from 'prop-types';
|
|
3
|
+
import { ConfigurationsContext } from '../../contexts';
|
|
4
|
+
import reducer, { initialState } from './reducer';
|
|
5
|
+
|
|
6
|
+
const ConfigurationsProvider = ({
|
|
7
|
+
children,
|
|
8
|
+
authLogo,
|
|
9
|
+
menuLogo: defaultMenuLogo,
|
|
10
|
+
showReleaseNotification,
|
|
11
|
+
showTutorials,
|
|
12
|
+
}) => {
|
|
13
|
+
const [{ menuLogo }, dispatch] = useReducer(reducer, initialState);
|
|
14
|
+
|
|
15
|
+
const updateProjectSettings = ({ menuLogo }) => {
|
|
16
|
+
return dispatch({
|
|
17
|
+
type: 'UPDATE_PROJECT_SETTINGS',
|
|
18
|
+
values: {
|
|
19
|
+
menuLogo: menuLogo || defaultMenuLogo,
|
|
20
|
+
},
|
|
21
|
+
});
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
const updateProjectSettingsRef = useRef(updateProjectSettings);
|
|
25
|
+
|
|
26
|
+
return (
|
|
27
|
+
<ConfigurationsContext.Provider
|
|
28
|
+
value={{
|
|
29
|
+
logos: {
|
|
30
|
+
menu: { custom: menuLogo, default: defaultMenuLogo },
|
|
31
|
+
auth: { custom: null, default: authLogo },
|
|
32
|
+
},
|
|
33
|
+
updateProjectSettings: updateProjectSettingsRef.current,
|
|
34
|
+
showReleaseNotification,
|
|
35
|
+
showTutorials,
|
|
36
|
+
}}
|
|
37
|
+
>
|
|
38
|
+
{children}
|
|
39
|
+
</ConfigurationsContext.Provider>
|
|
40
|
+
);
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
ConfigurationsProvider.propTypes = {
|
|
44
|
+
authLogo: PropTypes.string.isRequired,
|
|
45
|
+
children: PropTypes.element.isRequired,
|
|
46
|
+
menuLogo: PropTypes.string.isRequired,
|
|
47
|
+
showReleaseNotification: PropTypes.bool.isRequired,
|
|
48
|
+
showTutorials: PropTypes.bool.isRequired,
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
export default ConfigurationsProvider;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/* eslint-disable consistent-return */
|
|
2
|
+
/*
|
|
3
|
+
*
|
|
4
|
+
* ConfigurationsProvider reducer
|
|
5
|
+
*
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import produce from 'immer';
|
|
9
|
+
|
|
10
|
+
const initialState = {
|
|
11
|
+
menuLogo: null,
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
const reducer = (state = initialState, action) =>
|
|
15
|
+
produce(state, draftState => {
|
|
16
|
+
switch (action.type) {
|
|
17
|
+
case 'UPDATE_PROJECT_SETTINGS': {
|
|
18
|
+
Object.assign(draftState, action.values);
|
|
19
|
+
break;
|
|
20
|
+
}
|
|
21
|
+
default: {
|
|
22
|
+
return draftState;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
export default reducer;
|
|
28
|
+
export { initialState };
|
|
@@ -53,7 +53,9 @@ const LinkUser = styled(Link)`
|
|
|
53
53
|
const LeftMenu = ({ generalSectionLinks, pluginsSectionLinks }) => {
|
|
54
54
|
const buttonRef = useRef();
|
|
55
55
|
const [userLinksVisible, setUserLinksVisible] = useState(false);
|
|
56
|
-
const {
|
|
56
|
+
const {
|
|
57
|
+
logos: { menu },
|
|
58
|
+
} = useConfigurations();
|
|
57
59
|
const [condensed, setCondensed] = usePersistentState('navbar-condensed', false);
|
|
58
60
|
const { userDisplayName } = useAppInfos();
|
|
59
61
|
const { formatMessage } = useIntl();
|
|
@@ -93,7 +95,7 @@ const LeftMenu = ({ generalSectionLinks, pluginsSectionLinks }) => {
|
|
|
93
95
|
defaultMessage: 'Workplace',
|
|
94
96
|
})}
|
|
95
97
|
title={menuTitle}
|
|
96
|
-
icon={<img src={
|
|
98
|
+
icon={<img src={menu.custom || menu.default} alt={menuTitle} />}
|
|
97
99
|
/>
|
|
98
100
|
|
|
99
101
|
<Divider />
|
|
@@ -3,7 +3,8 @@ import PropTypes from 'prop-types';
|
|
|
3
3
|
import { QueryClientProvider, QueryClient } from 'react-query';
|
|
4
4
|
import { LibraryProvider, StrapiAppProvider } from '@strapi/helper-plugin';
|
|
5
5
|
import { Provider } from 'react-redux';
|
|
6
|
-
import { AdminContext
|
|
6
|
+
import { AdminContext } from '../../contexts';
|
|
7
|
+
import ConfigurationsProvider from '../ConfigurationsProvider';
|
|
7
8
|
import LanguageProvider from '../LanguageProvider';
|
|
8
9
|
import GuidedTour from '../GuidedTour';
|
|
9
10
|
import AutoReloadOverlayBlockerProvider from '../AutoReloadOverlayBlockerProvider';
|
|
@@ -47,8 +48,11 @@ const Providers = ({
|
|
|
47
48
|
<QueryClientProvider client={queryClient}>
|
|
48
49
|
<Provider store={store}>
|
|
49
50
|
<AdminContext.Provider value={{ getAdminInjectedComponents }}>
|
|
50
|
-
<
|
|
51
|
-
|
|
51
|
+
<ConfigurationsProvider
|
|
52
|
+
authLogo={authLogo}
|
|
53
|
+
menuLogo={menuLogo}
|
|
54
|
+
showReleaseNotification={showReleaseNotification}
|
|
55
|
+
showTutorials={showTutorials}
|
|
52
56
|
>
|
|
53
57
|
<StrapiAppProvider
|
|
54
58
|
getPlugin={getPlugin}
|
|
@@ -71,7 +75,7 @@ const Providers = ({
|
|
|
71
75
|
</LanguageProvider>
|
|
72
76
|
</LibraryProvider>
|
|
73
77
|
</StrapiAppProvider>
|
|
74
|
-
</
|
|
78
|
+
</ConfigurationsProvider>
|
|
75
79
|
</AdminContext.Provider>
|
|
76
80
|
</Provider>
|
|
77
81
|
</QueryClientProvider>
|
|
@@ -7,9 +7,11 @@ const Img = styled.img`
|
|
|
7
7
|
`;
|
|
8
8
|
|
|
9
9
|
const Logo = () => {
|
|
10
|
-
const {
|
|
10
|
+
const {
|
|
11
|
+
logos: { auth },
|
|
12
|
+
} = useConfigurations();
|
|
11
13
|
|
|
12
|
-
return <Img src={
|
|
14
|
+
return <Img src={auth.default} aria-hidden alt="" />;
|
|
13
15
|
};
|
|
14
16
|
|
|
15
17
|
export default Logo;
|
|
@@ -269,7 +269,7 @@ const EditViewDataManagerProvider = ({
|
|
|
269
269
|
);
|
|
270
270
|
|
|
271
271
|
const createFormData = useCallback(
|
|
272
|
-
|
|
272
|
+
data => {
|
|
273
273
|
// First we need to remove the added keys needed for the dnd
|
|
274
274
|
const preparedData = removeKeyInObject(cloneDeep(data), '__temp_key__');
|
|
275
275
|
// Then we need to apply our helper
|
|
@@ -293,7 +293,7 @@ const EditViewDataManagerProvider = ({
|
|
|
293
293
|
}, [hasDraftAndPublish, shouldNotRunValidations]);
|
|
294
294
|
|
|
295
295
|
const handleSubmit = useCallback(
|
|
296
|
-
async
|
|
296
|
+
async e => {
|
|
297
297
|
e.preventDefault();
|
|
298
298
|
let errors = {};
|
|
299
299
|
|
|
@@ -363,8 +363,8 @@ const EditViewDataManagerProvider = ({
|
|
|
363
363
|
}, [allLayoutData, currentContentTypeLayout, isCreatingEntry, modifiedData, onPublish]);
|
|
364
364
|
|
|
365
365
|
const shouldCheckDZErrors = useCallback(
|
|
366
|
-
|
|
367
|
-
const doesDZHaveError = Object.keys(formErrors).some(
|
|
366
|
+
dzName => {
|
|
367
|
+
const doesDZHaveError = Object.keys(formErrors).some(key => key.split('.')[0] === dzName);
|
|
368
368
|
const shouldCheckErrors = !isEmpty(formErrors) && doesDZHaveError;
|
|
369
369
|
|
|
370
370
|
return shouldCheckErrors;
|
|
@@ -418,7 +418,7 @@ const EditViewDataManagerProvider = ({
|
|
|
418
418
|
});
|
|
419
419
|
}, []);
|
|
420
420
|
|
|
421
|
-
const onRemoveRelation = useCallback(
|
|
421
|
+
const onRemoveRelation = useCallback(keys => {
|
|
422
422
|
dispatch({
|
|
423
423
|
type: 'REMOVE_RELATION',
|
|
424
424
|
keys,
|
|
@@ -10,11 +10,11 @@ import { translatedErrors as errorsTrads } from '@strapi/helper-plugin';
|
|
|
10
10
|
import isFieldTypeNumber from '../../../utils/isFieldTypeNumber';
|
|
11
11
|
|
|
12
12
|
yup.addMethod(yup.mixed, 'defined', function() {
|
|
13
|
-
return this.test('defined', errorsTrads.required,
|
|
13
|
+
return this.test('defined', errorsTrads.required, value => value !== undefined);
|
|
14
14
|
});
|
|
15
15
|
|
|
16
16
|
yup.addMethod(yup.array, 'notEmptyMin', function(min) {
|
|
17
|
-
return this.test('notEmptyMin', errorsTrads.min,
|
|
17
|
+
return this.test('notEmptyMin', errorsTrads.min, value => {
|
|
18
18
|
if (isEmpty(value)) {
|
|
19
19
|
return true;
|
|
20
20
|
}
|
|
@@ -51,7 +51,7 @@ yup.addMethod(yup.string, 'isSuperior', function(message, min) {
|
|
|
51
51
|
});
|
|
52
52
|
});
|
|
53
53
|
|
|
54
|
-
const getAttributes =
|
|
54
|
+
const getAttributes = data => get(data, ['attributes'], {});
|
|
55
55
|
|
|
56
56
|
const createYupSchema = (
|
|
57
57
|
model,
|
|
@@ -97,7 +97,7 @@ const createYupSchema = (
|
|
|
97
97
|
if (attribute.repeatable === true) {
|
|
98
98
|
const { min, max, required } = attribute;
|
|
99
99
|
|
|
100
|
-
let componentSchema = yup.lazy(
|
|
100
|
+
let componentSchema = yup.lazy(value => {
|
|
101
101
|
let baseSchema = yup.array().of(componentFieldSchema);
|
|
102
102
|
|
|
103
103
|
if (min) {
|
|
@@ -123,7 +123,7 @@ const createYupSchema = (
|
|
|
123
123
|
|
|
124
124
|
return acc;
|
|
125
125
|
}
|
|
126
|
-
const componentSchema = yup.lazy(
|
|
126
|
+
const componentSchema = yup.lazy(obj => {
|
|
127
127
|
if (obj !== undefined) {
|
|
128
128
|
return attribute.required === true && !options.isDraft
|
|
129
129
|
? componentFieldSchema.defined()
|
|
@@ -154,7 +154,7 @@ const createYupSchema = (
|
|
|
154
154
|
if (min) {
|
|
155
155
|
if (attribute.required) {
|
|
156
156
|
dynamicZoneSchema = dynamicZoneSchema
|
|
157
|
-
.test('min', errorsTrads.min,
|
|
157
|
+
.test('min', errorsTrads.min, value => {
|
|
158
158
|
if (options.isCreatingEntry) {
|
|
159
159
|
return value && value.length >= min;
|
|
160
160
|
}
|
|
@@ -165,7 +165,7 @@ const createYupSchema = (
|
|
|
165
165
|
|
|
166
166
|
return value !== null && value.length >= min;
|
|
167
167
|
})
|
|
168
|
-
.test('required', errorsTrads.required,
|
|
168
|
+
.test('required', errorsTrads.required, value => {
|
|
169
169
|
if (options.isCreatingEntry) {
|
|
170
170
|
return value !== null || value !== undefined;
|
|
171
171
|
}
|
|
@@ -180,7 +180,7 @@ const createYupSchema = (
|
|
|
180
180
|
dynamicZoneSchema = dynamicZoneSchema.notEmptyMin(min);
|
|
181
181
|
}
|
|
182
182
|
} else if (attribute.required && !options.isDraft) {
|
|
183
|
-
dynamicZoneSchema = dynamicZoneSchema.test('required', errorsTrads.required,
|
|
183
|
+
dynamicZoneSchema = dynamicZoneSchema.test('required', errorsTrads.required, value => {
|
|
184
184
|
if (options.isCreatingEntry) {
|
|
185
185
|
return value !== null || value !== undefined;
|
|
186
186
|
}
|
|
@@ -215,7 +215,7 @@ const createYupSchemaAttribute = (type, validations, options) => {
|
|
|
215
215
|
if (type === 'json') {
|
|
216
216
|
schema = yup
|
|
217
217
|
.mixed(errorsTrads.json)
|
|
218
|
-
.test('isJSON', errorsTrads.json,
|
|
218
|
+
.test('isJSON', errorsTrads.json, value => {
|
|
219
219
|
if (value === undefined) {
|
|
220
220
|
return true;
|
|
221
221
|
}
|
|
@@ -238,7 +238,7 @@ const createYupSchemaAttribute = (type, validations, options) => {
|
|
|
238
238
|
if (['number', 'integer', 'float', 'decimal'].includes(type)) {
|
|
239
239
|
schema = yup
|
|
240
240
|
.number()
|
|
241
|
-
.transform(
|
|
241
|
+
.transform(cv => (isNaN(cv) ? undefined : cv))
|
|
242
242
|
.typeError();
|
|
243
243
|
}
|
|
244
244
|
|
|
@@ -250,7 +250,7 @@ const createYupSchemaAttribute = (type, validations, options) => {
|
|
|
250
250
|
schema = yup.date();
|
|
251
251
|
}
|
|
252
252
|
|
|
253
|
-
Object.keys(validations).forEach(
|
|
253
|
+
Object.keys(validations).forEach(validation => {
|
|
254
254
|
const validationValue = validations[validation];
|
|
255
255
|
|
|
256
256
|
if (
|
|
@@ -269,7 +269,7 @@ const createYupSchemaAttribute = (type, validations, options) => {
|
|
|
269
269
|
if (options.isCreatingEntry) {
|
|
270
270
|
schema = schema.required(errorsTrads.required);
|
|
271
271
|
} else {
|
|
272
|
-
schema = schema.test('required', errorsTrads.required,
|
|
272
|
+
schema = schema.test('required', errorsTrads.required, value => {
|
|
273
273
|
// Field is not touched and the user is editing the entry
|
|
274
274
|
if (value === undefined && !options.isFromComponent) {
|
|
275
275
|
return true;
|
|
@@ -157,10 +157,10 @@ function Inputs({
|
|
|
157
157
|
return disabled;
|
|
158
158
|
}, [disabled, isCreatingEntry, isUserAllowedToEditField, isUserAllowedToReadField]);
|
|
159
159
|
|
|
160
|
-
const options = useMemo(
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
);
|
|
160
|
+
const options = useMemo(() => generateOptions(fieldSchema.enum || [], isRequired), [
|
|
161
|
+
fieldSchema,
|
|
162
|
+
isRequired,
|
|
163
|
+
]);
|
|
164
164
|
|
|
165
165
|
const { label, description, placeholder, visible } = metadatas;
|
|
166
166
|
|
|
@@ -5,7 +5,6 @@ import { useIntl } from 'react-intl';
|
|
|
5
5
|
import styled from 'styled-components';
|
|
6
6
|
import PropTypes from 'prop-types';
|
|
7
7
|
import get from 'lodash/get';
|
|
8
|
-
import take from 'lodash/take';
|
|
9
8
|
import { useNotification } from '@strapi/helper-plugin';
|
|
10
9
|
import { Box } from '@strapi/design-system/Box';
|
|
11
10
|
import { Flex } from '@strapi/design-system/Flex';
|
|
@@ -17,6 +16,7 @@ import ItemTypes from '../../utils/ItemTypes';
|
|
|
17
16
|
import ComponentInitializer from '../ComponentInitializer';
|
|
18
17
|
import connect from './utils/connect';
|
|
19
18
|
import select from './utils/select';
|
|
19
|
+
import getComponentErrorKeys from './utils/getComponentErrorKeys';
|
|
20
20
|
import DraggedItem from './DraggedItem';
|
|
21
21
|
import AccordionGroupCustom from './AccordionGroupCustom';
|
|
22
22
|
|
|
@@ -38,7 +38,6 @@ const RepeatableComponent = ({
|
|
|
38
38
|
componentUid,
|
|
39
39
|
componentValue,
|
|
40
40
|
componentValueLength,
|
|
41
|
-
isNested,
|
|
42
41
|
isReadOnly,
|
|
43
42
|
max,
|
|
44
43
|
min,
|
|
@@ -59,16 +58,7 @@ const RepeatableComponent = ({
|
|
|
59
58
|
return getMaxTempKey(componentValue || []) + 1;
|
|
60
59
|
}, [componentValue]);
|
|
61
60
|
|
|
62
|
-
const componentErrorKeys =
|
|
63
|
-
.filter(errorKey => {
|
|
64
|
-
return take(errorKey.split('.'), isNested ? 3 : 1).join('.') === name;
|
|
65
|
-
})
|
|
66
|
-
.map(errorKey => {
|
|
67
|
-
return errorKey
|
|
68
|
-
.split('.')
|
|
69
|
-
.slice(0, name.split('.').length + 1)
|
|
70
|
-
.join('.');
|
|
71
|
-
});
|
|
61
|
+
const componentErrorKeys = getComponentErrorKeys(name, formErrors);
|
|
72
62
|
|
|
73
63
|
const toggleCollapses = () => {
|
|
74
64
|
setCollapseToOpen('');
|
|
@@ -187,7 +177,6 @@ RepeatableComponent.defaultProps = {
|
|
|
187
177
|
componentValue: null,
|
|
188
178
|
componentValueLength: 0,
|
|
189
179
|
formErrors: {},
|
|
190
|
-
isNested: false,
|
|
191
180
|
max: Infinity,
|
|
192
181
|
min: 0,
|
|
193
182
|
};
|
|
@@ -198,7 +187,6 @@ RepeatableComponent.propTypes = {
|
|
|
198
187
|
componentValue: PropTypes.oneOfType([PropTypes.array, PropTypes.object]),
|
|
199
188
|
componentValueLength: PropTypes.number,
|
|
200
189
|
formErrors: PropTypes.object,
|
|
201
|
-
isNested: PropTypes.bool,
|
|
202
190
|
isReadOnly: PropTypes.bool.isRequired,
|
|
203
191
|
max: PropTypes.number,
|
|
204
192
|
min: PropTypes.number,
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { useEffect, useState } from 'react';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* For more details about this hook see:
|
|
5
|
+
* https://www.30secondsofcode.org/react/s/use-navigator-on-line
|
|
6
|
+
*/
|
|
7
|
+
const useNavigatorOnLine = () => {
|
|
8
|
+
const onlineStatus =
|
|
9
|
+
typeof navigator !== 'undefined' && typeof navigator.onLine === 'boolean'
|
|
10
|
+
? navigator.onLine
|
|
11
|
+
: true;
|
|
12
|
+
|
|
13
|
+
const [isOnline, setIsOnline] = useState(onlineStatus);
|
|
14
|
+
|
|
15
|
+
const setOnline = () => setIsOnline(true);
|
|
16
|
+
const setOffline = () => setIsOnline(false);
|
|
17
|
+
|
|
18
|
+
useEffect(() => {
|
|
19
|
+
window.addEventListener('online', setOnline);
|
|
20
|
+
window.addEventListener('offline', setOffline);
|
|
21
|
+
|
|
22
|
+
return () => {
|
|
23
|
+
window.removeEventListener('online', setOnline);
|
|
24
|
+
window.removeEventListener('offline', setOffline);
|
|
25
|
+
};
|
|
26
|
+
}, []);
|
|
27
|
+
|
|
28
|
+
return isOnline;
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
export default useNavigatorOnLine;
|
|
@@ -12,6 +12,7 @@ import {
|
|
|
12
12
|
request,
|
|
13
13
|
useNotification,
|
|
14
14
|
TrackingContext,
|
|
15
|
+
prefixFileUrlWithBackendUrl,
|
|
15
16
|
} from '@strapi/helper-plugin';
|
|
16
17
|
import { SkipToContent } from '@strapi/design-system/Main';
|
|
17
18
|
import { useIntl } from 'react-intl';
|
|
@@ -22,6 +23,7 @@ import NotFoundPage from '../NotFoundPage';
|
|
|
22
23
|
import UseCasePage from '../UseCasePage';
|
|
23
24
|
import { getUID } from './utils';
|
|
24
25
|
import routes from './utils/routes';
|
|
26
|
+
import { useConfigurations } from '../../hooks';
|
|
25
27
|
|
|
26
28
|
const AuthenticatedApp = lazy(() =>
|
|
27
29
|
import(/* webpackChunkName: "Admin-authenticatedApp" */ '../../components/AuthenticatedApp')
|
|
@@ -29,6 +31,7 @@ const AuthenticatedApp = lazy(() =>
|
|
|
29
31
|
|
|
30
32
|
function App() {
|
|
31
33
|
const toggleNotification = useNotification();
|
|
34
|
+
const { updateProjectSettings } = useConfigurations();
|
|
32
35
|
const { formatMessage } = useIntl();
|
|
33
36
|
const [{ isLoading, hasAdmin, uuid }, setState] = useState({ isLoading: true, hasAdmin: false });
|
|
34
37
|
|
|
@@ -66,9 +69,11 @@ function App() {
|
|
|
66
69
|
const getData = async () => {
|
|
67
70
|
try {
|
|
68
71
|
const {
|
|
69
|
-
data: { hasAdmin, uuid },
|
|
72
|
+
data: { hasAdmin, uuid, menuLogo },
|
|
70
73
|
} = await request('/admin/init', { method: 'GET' });
|
|
71
74
|
|
|
75
|
+
updateProjectSettings({ menuLogo: prefixFileUrlWithBackendUrl(menuLogo) });
|
|
76
|
+
|
|
72
77
|
if (uuid) {
|
|
73
78
|
try {
|
|
74
79
|
const deviceId = await getUID();
|
|
@@ -99,7 +104,7 @@ function App() {
|
|
|
99
104
|
};
|
|
100
105
|
|
|
101
106
|
getData();
|
|
102
|
-
}, [toggleNotification]);
|
|
107
|
+
}, [toggleNotification, updateProjectSettings]);
|
|
103
108
|
|
|
104
109
|
const setHasAdmin = hasAdmin => setState(prev => ({ ...prev, hasAdmin }));
|
|
105
110
|
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { useIntl } from 'react-intl';
|
|
3
|
+
import { ContentBox, useTracking } from '@strapi/helper-plugin';
|
|
4
|
+
import GlassesSquare from '@strapi/icons/GlassesSquare';
|
|
5
|
+
import ExternalLink from '@strapi/icons/ExternalLink';
|
|
6
|
+
import { Icon } from '@strapi/design-system/Icon';
|
|
7
|
+
|
|
8
|
+
const MissingPluginBanner = () => {
|
|
9
|
+
const { formatMessage } = useIntl();
|
|
10
|
+
const { trackUsage } = useTracking();
|
|
11
|
+
|
|
12
|
+
return (
|
|
13
|
+
<a
|
|
14
|
+
href="https://strapi.canny.io/plugin-requests"
|
|
15
|
+
target="_blank"
|
|
16
|
+
rel="noopener noreferrer nofollow"
|
|
17
|
+
style={{ textDecoration: 'none' }}
|
|
18
|
+
onClick={() => trackUsage('didMissMarketplacePlugin')}
|
|
19
|
+
>
|
|
20
|
+
<ContentBox
|
|
21
|
+
title={formatMessage({
|
|
22
|
+
id: 'admin.pages.MarketPlacePage.missingPlugin.title',
|
|
23
|
+
defaultMessage: 'Documentation',
|
|
24
|
+
})}
|
|
25
|
+
subtitle={formatMessage({
|
|
26
|
+
id: 'admin.pages.MarketPlacePage.missingPlugin.description',
|
|
27
|
+
defaultMessage:
|
|
28
|
+
"Tell us what plugin you are looking for and we'll let our community plugin developers know in case they are in search for inspiration!",
|
|
29
|
+
})}
|
|
30
|
+
icon={<GlassesSquare />}
|
|
31
|
+
iconBackground="alternative100"
|
|
32
|
+
endAction={
|
|
33
|
+
<Icon as={ExternalLink} color="neutral600" width={3} height={3} marginLeft={2} />
|
|
34
|
+
}
|
|
35
|
+
/>
|
|
36
|
+
</a>
|
|
37
|
+
);
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
export default MissingPluginBanner;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import PropTypes from 'prop-types';
|
|
3
|
+
import { useIntl } from 'react-intl';
|
|
4
|
+
import { HeaderLayout } from '@strapi/design-system/Layout';
|
|
5
|
+
import { LinkButton } from '@strapi/design-system/LinkButton';
|
|
6
|
+
import Upload from '@strapi/icons/Upload';
|
|
7
|
+
import { useTracking } from '@strapi/helper-plugin';
|
|
8
|
+
|
|
9
|
+
const PageHeader = ({ isOnline }) => {
|
|
10
|
+
const { formatMessage } = useIntl();
|
|
11
|
+
const { trackUsage } = useTracking();
|
|
12
|
+
|
|
13
|
+
return (
|
|
14
|
+
<HeaderLayout
|
|
15
|
+
title={formatMessage({
|
|
16
|
+
id: 'global.marketplace',
|
|
17
|
+
defaultMessage: 'Marketplace',
|
|
18
|
+
})}
|
|
19
|
+
subtitle={formatMessage({
|
|
20
|
+
id: 'admin.pages.MarketPlacePage.subtitle',
|
|
21
|
+
defaultMessage: 'Get more out of Strapi',
|
|
22
|
+
})}
|
|
23
|
+
primaryAction={
|
|
24
|
+
isOnline && (
|
|
25
|
+
<LinkButton
|
|
26
|
+
startIcon={<Upload />}
|
|
27
|
+
variant="tertiary"
|
|
28
|
+
href="https://market.strapi.io/submit-plugin"
|
|
29
|
+
onClick={() => trackUsage('didSubmitPlugin')}
|
|
30
|
+
>
|
|
31
|
+
{formatMessage({
|
|
32
|
+
id: 'admin.pages.MarketPlacePage.submit.plugin.link',
|
|
33
|
+
defaultMessage: 'Submit your plugin',
|
|
34
|
+
})}
|
|
35
|
+
</LinkButton>
|
|
36
|
+
)
|
|
37
|
+
}
|
|
38
|
+
/>
|
|
39
|
+
);
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
export default PageHeader;
|
|
43
|
+
|
|
44
|
+
PageHeader.propTypes = {
|
|
45
|
+
isOnline: PropTypes.bool.isRequired,
|
|
46
|
+
};
|