@strapi/admin 5.44.0 → 5.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/admin/admin/src/components/Table.js.map +1 -1
- package/dist/admin/admin/src/components/Table.mjs.map +1 -1
- package/dist/admin/admin/src/constants.js +49 -0
- package/dist/admin/admin/src/constants.js.map +1 -1
- package/dist/admin/admin/src/constants.mjs +49 -0
- package/dist/admin/admin/src/constants.mjs.map +1 -1
- package/dist/admin/admin/src/core/apis/router.js +4 -4
- package/dist/admin/admin/src/core/apis/router.js.map +1 -1
- package/dist/admin/admin/src/core/apis/router.mjs +4 -4
- package/dist/admin/admin/src/core/apis/router.mjs.map +1 -1
- package/dist/admin/admin/src/features/Tracking.js.map +1 -1
- package/dist/admin/admin/src/features/Tracking.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/{pages/ApiTokens/EditView/components → components/Tokens}/FormApiTokenContainer.js +48 -11
- package/dist/admin/admin/src/pages/Settings/components/Tokens/FormApiTokenContainer.js.map +1 -0
- package/dist/admin/admin/src/pages/Settings/{pages/ApiTokens/EditView/components → components/Tokens}/FormApiTokenContainer.mjs +49 -12
- package/dist/admin/admin/src/pages/Settings/components/Tokens/FormApiTokenContainer.mjs.map +1 -0
- package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.js +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.mjs +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/LifeSpanInput.js +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/LifeSpanInput.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/LifeSpanInput.mjs +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/LifeSpanInput.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.js +21 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.mjs +21 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenBox.js +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenBox.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenBox.mjs +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenBox.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/constants.js +33 -0
- package/dist/admin/admin/src/pages/Settings/components/Tokens/constants.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/constants.mjs +14 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/constants.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/{pages/ApiTokens/EditView → components/Tokens}/utils/getDateOfExpiration.js +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/utils/getDateOfExpiration.js.map +1 -0
- package/dist/admin/admin/src/pages/Settings/{pages/ApiTokens/EditView → components/Tokens}/utils/getDateOfExpiration.mjs +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/utils/getDateOfExpiration.mjs.map +1 -0
- package/dist/admin/admin/src/pages/Settings/constants.js +182 -151
- package/dist/admin/admin/src/pages/Settings/constants.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/constants.mjs +182 -151
- package/dist/admin/admin/src/pages/Settings/constants.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/CreateView.js +17 -0
- package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/CreateView.js.map +1 -0
- package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/CreateView.mjs +15 -0
- package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/CreateView.mjs.map +1 -0
- package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/EditView/EditViewPage.js +314 -0
- package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/EditView/EditViewPage.js.map +1 -0
- package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/EditView/EditViewPage.mjs +292 -0
- package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/EditView/EditViewPage.mjs.map +1 -0
- package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/EditView/components/AdminPermissions.js +70 -0
- package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/EditView/components/AdminPermissions.js.map +1 -0
- package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/EditView/components/AdminPermissions.mjs +49 -0
- package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/EditView/components/AdminPermissions.mjs.map +1 -0
- package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/ListView.js +254 -0
- package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/ListView.js.map +1 -0
- package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/ListView.mjs +231 -0
- package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/ListView.mjs.map +1 -0
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.js +42 -33
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.mjs +43 -34
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.js +3 -2
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.mjs +3 -2
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.js +23 -12
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.mjs +23 -12
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsModal.js +124 -35
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsModal.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsModal.mjs +126 -37
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsModal.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.js +24 -9
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.mjs +24 -9
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/GlobalActions.js +5 -3
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/GlobalActions.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/GlobalActions.mjs +5 -3
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/GlobalActions.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.js +171 -36
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.mjs +172 -37
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.js +5 -3
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.mjs +5 -3
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/hooks/usePermissionsDataManager.js +59 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/hooks/usePermissionsDataManager.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/hooks/usePermissionsDataManager.mjs +40 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/hooks/usePermissionsDataManager.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/createPermissionChecker.js +89 -0
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/createPermissionChecker.js.map +1 -0
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/createPermissionChecker.mjs +86 -0
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/createPermissionChecker.mjs.map +1 -0
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/updateValues.js +35 -9
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/updateValues.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/updateValues.mjs +35 -10
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/updateValues.mjs.map +1 -1
- package/dist/admin/admin/src/render.js +6 -3
- package/dist/admin/admin/src/render.js.map +1 -1
- package/dist/admin/admin/src/render.mjs +6 -3
- package/dist/admin/admin/src/render.mjs.map +1 -1
- package/dist/admin/admin/src/router.js +4 -4
- package/dist/admin/admin/src/router.js.map +1 -1
- package/dist/admin/admin/src/router.mjs +1 -1
- package/dist/admin/admin/src/router.mjs.map +1 -1
- package/dist/admin/admin/src/services/apiTokens.js +85 -2
- package/dist/admin/admin/src/services/apiTokens.js.map +1 -1
- package/dist/admin/admin/src/services/apiTokens.mjs +80 -3
- package/dist/admin/admin/src/services/apiTokens.mjs.map +1 -1
- package/dist/admin/admin/src/translations/en.json.js +16 -1
- package/dist/admin/admin/src/translations/en.json.js.map +1 -1
- package/dist/admin/admin/src/translations/en.json.mjs +16 -1
- package/dist/admin/admin/src/translations/en.json.mjs.map +1 -1
- package/dist/admin/admin/src/utils/getFetchClient.js +4 -1
- package/dist/admin/admin/src/utils/getFetchClient.js.map +1 -1
- package/dist/admin/admin/src/utils/getFetchClient.mjs +4 -1
- package/dist/admin/admin/src/utils/getFetchClient.mjs.map +1 -1
- package/dist/admin/admin/tests/server.js +99 -21
- package/dist/admin/admin/tests/server.js.map +1 -1
- package/dist/admin/admin/tests/server.mjs +99 -21
- package/dist/admin/admin/tests/server.mjs.map +1 -1
- package/dist/admin/src/constants.d.ts +26 -0
- package/dist/admin/src/core/apis/router.d.ts +1 -1
- package/dist/admin/src/features/Tracking.d.ts +2 -1
- package/dist/admin/src/pages/Settings/components/Tokens/FormApiTokenContainer.d.ts +24 -0
- package/dist/admin/src/pages/Settings/components/Tokens/Table.d.ts +2 -1
- package/dist/admin/src/pages/Settings/components/Tokens/constants.d.ts +17 -0
- package/dist/admin/src/pages/Settings/constants.d.ts +1 -1
- package/dist/admin/src/pages/Settings/pages/AdminTokens/CreateView.d.ts +1 -0
- package/dist/admin/src/pages/Settings/pages/AdminTokens/EditView/EditViewPage.d.ts +2 -0
- package/dist/admin/src/pages/Settings/pages/AdminTokens/EditView/components/AdminPermissions.d.ts +13 -0
- package/dist/admin/src/pages/Settings/pages/AdminTokens/ListView.d.ts +2 -0
- package/dist/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.d.ts +4 -3
- package/dist/admin/src/pages/Settings/pages/Roles/components/ConditionsModal.d.ts +3 -1
- package/dist/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.d.ts +1 -0
- package/dist/admin/src/pages/Settings/pages/Roles/components/Permissions.d.ts +5 -0
- package/dist/admin/src/pages/Settings/pages/Roles/hooks/usePermissionsDataManager.d.ts +8 -7
- package/dist/admin/src/pages/Settings/pages/Roles/utils/createPermissionChecker.d.ts +27 -0
- package/dist/admin/src/pages/Settings/pages/Roles/utils/updateValues.d.ts +8 -2
- package/dist/admin/src/services/apiTokens.d.ts +5 -2
- package/dist/admin/src/types/permissions.d.ts +1 -1
- package/dist/server/server/src/bootstrap.js +37 -5
- package/dist/server/server/src/bootstrap.js.map +1 -1
- package/dist/server/server/src/bootstrap.mjs +37 -5
- package/dist/server/server/src/bootstrap.mjs.map +1 -1
- package/dist/server/server/src/config/admin-actions.js +48 -0
- package/dist/server/server/src/config/admin-actions.js.map +1 -1
- package/dist/server/server/src/config/admin-actions.mjs +48 -0
- package/dist/server/server/src/config/admin-actions.mjs.map +1 -1
- package/dist/server/server/src/content-types/Permission.js +10 -1
- package/dist/server/server/src/content-types/Permission.js.map +1 -1
- package/dist/server/server/src/content-types/Permission.mjs +10 -1
- package/dist/server/server/src/content-types/Permission.mjs.map +1 -1
- package/dist/server/server/src/content-types/User.js +8 -0
- package/dist/server/server/src/content-types/User.js.map +1 -1
- package/dist/server/server/src/content-types/User.mjs +8 -0
- package/dist/server/server/src/content-types/User.mjs.map +1 -1
- package/dist/server/server/src/content-types/api-token.js +27 -1
- package/dist/server/server/src/content-types/api-token.js.map +1 -1
- package/dist/server/server/src/content-types/api-token.mjs +27 -1
- package/dist/server/server/src/content-types/api-token.mjs.map +1 -1
- package/dist/server/server/src/controllers/admin-token.js +194 -0
- package/dist/server/server/src/controllers/admin-token.js.map +1 -0
- package/dist/server/server/src/controllers/admin-token.mjs +192 -0
- package/dist/server/server/src/controllers/admin-token.mjs.map +1 -0
- package/dist/server/server/src/controllers/api-token.js +48 -47
- package/dist/server/server/src/controllers/api-token.js.map +1 -1
- package/dist/server/server/src/controllers/api-token.mjs +48 -47
- package/dist/server/server/src/controllers/api-token.mjs.map +1 -1
- package/dist/server/server/src/controllers/index.js +2 -0
- package/dist/server/server/src/controllers/index.js.map +1 -1
- package/dist/server/server/src/controllers/index.mjs +2 -0
- package/dist/server/server/src/controllers/index.mjs.map +1 -1
- package/dist/server/server/src/domain/permission/index.js +2 -1
- package/dist/server/server/src/domain/permission/index.js.map +1 -1
- package/dist/server/server/src/domain/permission/index.mjs +2 -1
- package/dist/server/server/src/domain/permission/index.mjs.map +1 -1
- package/dist/server/server/src/policies/index.js +2 -0
- package/dist/server/server/src/policies/index.js.map +1 -1
- package/dist/server/server/src/policies/index.mjs +2 -0
- package/dist/server/server/src/policies/index.mjs.map +1 -1
- package/dist/server/server/src/policies/isAdminTokensEnabled.js +16 -0
- package/dist/server/server/src/policies/isAdminTokensEnabled.js.map +1 -0
- package/dist/server/server/src/policies/isAdminTokensEnabled.mjs +14 -0
- package/dist/server/server/src/policies/isAdminTokensEnabled.mjs.map +1 -0
- package/dist/server/server/src/register.js +4 -2
- package/dist/server/server/src/register.js.map +1 -1
- package/dist/server/server/src/register.mjs +4 -2
- package/dist/server/server/src/register.mjs.map +1 -1
- package/dist/server/server/src/routes/admin-tokens.js +140 -0
- package/dist/server/server/src/routes/admin-tokens.js.map +1 -0
- package/dist/server/server/src/routes/admin-tokens.mjs +138 -0
- package/dist/server/server/src/routes/admin-tokens.mjs.map +1 -0
- package/dist/server/server/src/routes/index.js +2 -0
- package/dist/server/server/src/routes/index.js.map +1 -1
- package/dist/server/server/src/routes/index.mjs +2 -0
- package/dist/server/server/src/routes/index.mjs.map +1 -1
- package/dist/server/server/src/services/api-token.js +805 -101
- package/dist/server/server/src/services/api-token.js.map +1 -1
- package/dist/server/server/src/services/api-token.mjs +800 -101
- package/dist/server/server/src/services/api-token.mjs.map +1 -1
- package/dist/server/server/src/services/constants.js +2 -0
- package/dist/server/server/src/services/constants.js.map +1 -1
- package/dist/server/server/src/services/constants.mjs +2 -0
- package/dist/server/server/src/services/constants.mjs.map +1 -1
- package/dist/server/server/src/services/homepage.js +1 -1
- package/dist/server/server/src/services/homepage.js.map +1 -1
- package/dist/server/server/src/services/homepage.mjs +1 -1
- package/dist/server/server/src/services/homepage.mjs.map +1 -1
- package/dist/server/server/src/services/index.js +2 -1
- package/dist/server/server/src/services/index.js.map +1 -1
- package/dist/server/server/src/services/index.mjs +3 -2
- package/dist/server/server/src/services/index.mjs.map +1 -1
- package/dist/server/server/src/services/permission/engine.js +6 -0
- package/dist/server/server/src/services/permission/engine.js.map +1 -1
- package/dist/server/server/src/services/permission/engine.mjs +6 -0
- package/dist/server/server/src/services/permission/engine.mjs.map +1 -1
- package/dist/server/server/src/services/permission/queries.js +11 -2
- package/dist/server/server/src/services/permission/queries.js.map +1 -1
- package/dist/server/server/src/services/permission/queries.mjs +12 -3
- package/dist/server/server/src/services/permission/queries.mjs.map +1 -1
- package/dist/server/server/src/services/role.js +3 -0
- package/dist/server/server/src/services/role.js.map +1 -1
- package/dist/server/server/src/services/role.mjs +3 -0
- package/dist/server/server/src/services/role.mjs.map +1 -1
- package/dist/server/server/src/strategies/admin-token.js +110 -0
- package/dist/server/server/src/strategies/admin-token.js.map +1 -0
- package/dist/server/server/src/strategies/admin-token.mjs +104 -0
- package/dist/server/server/src/strategies/admin-token.mjs.map +1 -0
- package/dist/server/server/src/strategies/api-token-utils.js +56 -0
- package/dist/server/server/src/strategies/api-token-utils.js.map +1 -0
- package/dist/server/server/src/strategies/api-token-utils.mjs +52 -0
- package/dist/server/server/src/strategies/api-token-utils.mjs.map +1 -0
- package/dist/server/server/src/strategies/content-api-token.js +104 -0
- package/dist/server/server/src/strategies/content-api-token.js.map +1 -0
- package/dist/server/server/src/strategies/content-api-token.mjs +98 -0
- package/dist/server/server/src/strategies/content-api-token.mjs.map +1 -0
- package/dist/server/server/src/validation/admin-tokens.js +28 -0
- package/dist/server/server/src/validation/admin-tokens.js.map +1 -0
- package/dist/server/server/src/validation/admin-tokens.mjs +25 -0
- package/dist/server/server/src/validation/admin-tokens.mjs.map +1 -0
- package/dist/server/server/src/validation/api-tokens.js +5 -2
- package/dist/server/server/src/validation/api-tokens.js.map +1 -1
- package/dist/server/server/src/validation/api-tokens.mjs +5 -2
- package/dist/server/server/src/validation/api-tokens.mjs.map +1 -1
- package/dist/server/server/src/validation/project-settings.js +15 -16
- package/dist/server/server/src/validation/project-settings.js.map +1 -1
- package/dist/server/server/src/validation/project-settings.mjs +4 -5
- package/dist/server/server/src/validation/project-settings.mjs.map +1 -1
- package/dist/server/src/bootstrap.d.ts.map +1 -1
- package/dist/server/src/config/admin-actions.d.ts.map +1 -1
- package/dist/server/src/content-types/Permission.d.ts +9 -0
- package/dist/server/src/content-types/Permission.d.ts.map +1 -1
- package/dist/server/src/content-types/User.d.ts +8 -0
- package/dist/server/src/content-types/User.d.ts.map +1 -1
- package/dist/server/src/content-types/api-token.d.ts +23 -0
- package/dist/server/src/content-types/api-token.d.ts.map +1 -1
- package/dist/server/src/content-types/index.d.ts +40 -0
- package/dist/server/src/content-types/index.d.ts.map +1 -1
- package/dist/server/src/controllers/admin-token.d.ts +12 -0
- package/dist/server/src/controllers/admin-token.d.ts.map +1 -0
- package/dist/server/src/controllers/api-token.d.ts +0 -1
- package/dist/server/src/controllers/api-token.d.ts.map +1 -1
- package/dist/server/src/controllers/index.d.ts +9 -1
- package/dist/server/src/controllers/index.d.ts.map +1 -1
- package/dist/server/src/domain/permission/index.d.ts.map +1 -1
- package/dist/server/src/index.d.ts +56 -2
- package/dist/server/src/index.d.ts.map +1 -1
- package/dist/server/src/policies/index.d.ts +5 -0
- package/dist/server/src/policies/index.d.ts.map +1 -1
- package/dist/server/src/policies/isAdminTokensEnabled.d.ts +7 -0
- package/dist/server/src/policies/isAdminTokensEnabled.d.ts.map +1 -0
- package/dist/server/src/register.d.ts.map +1 -1
- package/dist/server/src/routes/admin-tokens.d.ts +15 -0
- package/dist/server/src/routes/admin-tokens.d.ts.map +1 -0
- package/dist/server/src/routes/index.d.ts.map +1 -1
- package/dist/server/src/services/api-token.d.ts +136 -12
- package/dist/server/src/services/api-token.d.ts.map +1 -1
- package/dist/server/src/services/constants.d.ts +13 -11
- package/dist/server/src/services/constants.d.ts.map +1 -1
- package/dist/server/src/services/index.d.ts +2 -2
- package/dist/server/src/services/index.d.ts.map +1 -1
- package/dist/server/src/services/permission/engine.d.ts +5 -0
- package/dist/server/src/services/permission/engine.d.ts.map +1 -1
- package/dist/server/src/services/permission/queries.d.ts.map +1 -1
- package/dist/server/src/services/permission.d.ts +1 -0
- package/dist/server/src/services/permission.d.ts.map +1 -1
- package/dist/server/src/services/role.d.ts.map +1 -1
- package/dist/server/src/strategies/admin-token.d.ts +51 -0
- package/dist/server/src/strategies/admin-token.d.ts.map +1 -0
- package/dist/server/src/strategies/api-token-utils.d.ts +13 -0
- package/dist/server/src/strategies/api-token-utils.d.ts.map +1 -0
- package/dist/server/src/strategies/{api-token.d.ts → content-api-token.d.ts} +10 -11
- package/dist/server/src/strategies/content-api-token.d.ts.map +1 -0
- package/dist/server/src/strategies/index.d.ts +2 -1
- package/dist/server/src/strategies/index.d.ts.map +1 -1
- package/dist/server/src/validation/admin-tokens.d.ts +75 -0
- package/dist/server/src/validation/admin-tokens.d.ts.map +1 -0
- package/dist/server/src/validation/api-tokens.d.ts +4 -2
- package/dist/server/src/validation/api-tokens.d.ts.map +1 -1
- package/dist/server/src/validation/project-settings.d.ts +10 -10
- package/dist/server/src/validation/project-settings.d.ts.map +1 -1
- package/dist/shared/contracts/admin-token.d.ts +122 -0
- package/dist/shared/contracts/admin-token.d.ts.map +1 -0
- package/dist/shared/contracts/api-token.d.ts +6 -95
- package/dist/shared/contracts/api-token.d.ts.map +1 -1
- package/dist/shared/contracts/content-api-token.d.ts +97 -0
- package/dist/shared/contracts/content-api-token.d.ts.map +1 -0
- package/dist/shared/contracts/shared.d.ts +1 -0
- package/dist/shared/contracts/shared.d.ts.map +1 -1
- package/package.json +7 -7
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/FormApiTokenContainer.js.map +0 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/FormApiTokenContainer.mjs.map +0 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/constants.js +0 -37
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/constants.js.map +0 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/constants.mjs +0 -16
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/constants.mjs.map +0 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/utils/getDateOfExpiration.js.map +0 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/utils/getDateOfExpiration.mjs.map +0 -1
- package/dist/admin/src/pages/Settings/pages/ApiTokens/EditView/components/FormApiTokenContainer.d.ts +0 -20
- package/dist/admin/src/pages/Settings/pages/ApiTokens/EditView/constants.d.ts +0 -17
- package/dist/server/server/src/strategies/api-token.js +0 -144
- package/dist/server/server/src/strategies/api-token.js.map +0 -1
- package/dist/server/server/src/strategies/api-token.mjs +0 -138
- package/dist/server/server/src/strategies/api-token.mjs.map +0 -1
- package/dist/server/src/strategies/api-token.d.ts.map +0 -1
- /package/dist/admin/src/pages/Settings/{pages/ApiTokens/EditView → components/Tokens}/utils/getDateOfExpiration.d.ts +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
1
|
+
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
2
2
|
import * as React from 'react';
|
|
3
|
-
import { Modal, Breadcrumbs, Crumb, Typography, Button, Flex,
|
|
3
|
+
import { Modal, Breadcrumbs, Crumb, Box, Typography, Button, Flex, MultiSelectNested } from '@strapi/design-system';
|
|
4
4
|
import { produce } from 'immer';
|
|
5
5
|
import get from 'lodash/get';
|
|
6
6
|
import groupBy from 'lodash/groupBy';
|
|
@@ -9,7 +9,7 @@ import { useIntl } from 'react-intl';
|
|
|
9
9
|
import { capitalise } from '../../../../../utils/strings.mjs';
|
|
10
10
|
import { usePermissionsDataManager } from '../hooks/usePermissionsDataManager.mjs';
|
|
11
11
|
|
|
12
|
-
const ConditionsModal = ({ actions = [], headerBreadCrumbs = [], isFormDisabled, onClose })=>{
|
|
12
|
+
const ConditionsModal = ({ actions = [], headerBreadCrumbs = [], isFormDisabled, isReadOnly = false, onClose })=>{
|
|
13
13
|
const { formatMessage } = useIntl();
|
|
14
14
|
const { availableConditions, modifiedData, onChangeConditions } = usePermissionsDataManager();
|
|
15
15
|
const arrayOfOptionsGroupedByCategory = React.useMemo(()=>{
|
|
@@ -17,21 +17,43 @@ const ConditionsModal = ({ actions = [], headerBreadCrumbs = [], isFormDisabled,
|
|
|
17
17
|
}, [
|
|
18
18
|
availableConditions
|
|
19
19
|
]);
|
|
20
|
-
const actionsToDisplay = actions.filter(// @ts-expect-error – TODO: fix this type issue
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
20
|
+
const actionsToDisplay = React.useMemo(()=>actions.filter(// @ts-expect-error – TODO: fix this type issue
|
|
21
|
+
({ isDisplayed, hasSomeActionsSelected, hasAllActionsSelected })=>isDisplayed && Boolean(hasSomeActionsSelected || hasAllActionsSelected)), [
|
|
22
|
+
actions
|
|
23
|
+
]);
|
|
24
|
+
const [state, setState] = React.useState(()=>createDefaultConditionsForm(actionsToDisplay, modifiedData, arrayOfOptionsGroupedByCategory));
|
|
25
|
+
React.useEffect(()=>{
|
|
26
|
+
if (isReadOnly === false) {
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
setState(createDefaultConditionsForm(actionsToDisplay, modifiedData, arrayOfOptionsGroupedByCategory));
|
|
30
|
+
}, [
|
|
31
|
+
isReadOnly,
|
|
32
|
+
actionsToDisplay,
|
|
33
|
+
modifiedData,
|
|
34
|
+
arrayOfOptionsGroupedByCategory
|
|
35
|
+
]);
|
|
36
|
+
const handleChange = React.useCallback((name, values)=>{
|
|
37
|
+
if (isReadOnly === true) {
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
24
40
|
setState(produce((draft)=>{
|
|
25
|
-
if (
|
|
41
|
+
if (draft[name] === undefined) {
|
|
26
42
|
draft[name] = {};
|
|
27
43
|
}
|
|
28
|
-
if (
|
|
44
|
+
if (draft[name].default === undefined) {
|
|
29
45
|
draft[name].default = {};
|
|
30
46
|
}
|
|
31
47
|
draft[name].default = values;
|
|
32
48
|
}));
|
|
33
|
-
}
|
|
34
|
-
|
|
49
|
+
}, [
|
|
50
|
+
isReadOnly
|
|
51
|
+
]);
|
|
52
|
+
const handleSubmit = React.useCallback(()=>{
|
|
53
|
+
if (isReadOnly === true) {
|
|
54
|
+
onClose?.();
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
35
57
|
const conditionsWithoutCategory = Object.entries(state).reduce((acc, current)=>{
|
|
36
58
|
const [key, value] = current;
|
|
37
59
|
const merged = Object.values(value).reduce((acc1, current1)=>{
|
|
@@ -44,12 +66,22 @@ const ConditionsModal = ({ actions = [], headerBreadCrumbs = [], isFormDisabled,
|
|
|
44
66
|
return acc;
|
|
45
67
|
}, {});
|
|
46
68
|
onChangeConditions(conditionsWithoutCategory);
|
|
47
|
-
onClose
|
|
48
|
-
}
|
|
49
|
-
|
|
69
|
+
onClose?.();
|
|
70
|
+
}, [
|
|
71
|
+
isReadOnly,
|
|
72
|
+
state,
|
|
73
|
+
onChangeConditions,
|
|
74
|
+
onClose
|
|
75
|
+
]);
|
|
76
|
+
const onCloseModal = React.useCallback(()=>{
|
|
50
77
|
setState(createDefaultConditionsForm(actionsToDisplay, modifiedData, arrayOfOptionsGroupedByCategory));
|
|
51
|
-
onClose
|
|
52
|
-
}
|
|
78
|
+
onClose?.();
|
|
79
|
+
}, [
|
|
80
|
+
actionsToDisplay,
|
|
81
|
+
modifiedData,
|
|
82
|
+
arrayOfOptionsGroupedByCategory,
|
|
83
|
+
onClose
|
|
84
|
+
]);
|
|
53
85
|
return /*#__PURE__*/ jsxs(Modal.Content, {
|
|
54
86
|
children: [
|
|
55
87
|
/*#__PURE__*/ jsx(Modal.Header, {
|
|
@@ -67,6 +99,16 @@ const ConditionsModal = ({ actions = [], headerBreadCrumbs = [], isFormDisabled,
|
|
|
67
99
|
}),
|
|
68
100
|
/*#__PURE__*/ jsxs(Modal.Body, {
|
|
69
101
|
children: [
|
|
102
|
+
isReadOnly && /*#__PURE__*/ jsx(Box, {
|
|
103
|
+
paddingBottom: 4,
|
|
104
|
+
children: /*#__PURE__*/ jsx(Typography, {
|
|
105
|
+
textColor: "neutral600",
|
|
106
|
+
children: formatMessage({
|
|
107
|
+
id: 'Settings.permissions.conditions.inherited-readonly',
|
|
108
|
+
defaultMessage: 'These conditions are inherited from your permissions and are read-only.'
|
|
109
|
+
})
|
|
110
|
+
})
|
|
111
|
+
}),
|
|
70
112
|
actionsToDisplay.length === 0 && /*#__PURE__*/ jsx(Typography, {
|
|
71
113
|
children: formatMessage({
|
|
72
114
|
id: 'Settings.permissions.conditions.no-actions',
|
|
@@ -79,7 +121,8 @@ const ConditionsModal = ({ actions = [], headerBreadCrumbs = [], isFormDisabled,
|
|
|
79
121
|
return /*#__PURE__*/ jsx(ActionRow, {
|
|
80
122
|
arrayOfOptionsGroupedByCategory: arrayOfOptionsGroupedByCategory,
|
|
81
123
|
label: label,
|
|
82
|
-
isFormDisabled: isFormDisabled,
|
|
124
|
+
isFormDisabled: isFormDisabled || isReadOnly,
|
|
125
|
+
isReadOnly: isReadOnly,
|
|
83
126
|
isGrey: index % 2 === 0,
|
|
84
127
|
name: name,
|
|
85
128
|
onChange: handleChange,
|
|
@@ -89,24 +132,33 @@ const ConditionsModal = ({ actions = [], headerBreadCrumbs = [], isFormDisabled,
|
|
|
89
132
|
})
|
|
90
133
|
]
|
|
91
134
|
}),
|
|
92
|
-
/*#__PURE__*/
|
|
93
|
-
children:
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
defaultMessage: 'Cancel'
|
|
100
|
-
})
|
|
101
|
-
}),
|
|
102
|
-
/*#__PURE__*/ jsx(Button, {
|
|
103
|
-
onClick: handleSubmit,
|
|
104
|
-
children: formatMessage({
|
|
105
|
-
id: 'Settings.permissions.conditions.apply',
|
|
106
|
-
defaultMessage: 'Apply'
|
|
107
|
-
})
|
|
135
|
+
/*#__PURE__*/ jsx(Modal.Footer, {
|
|
136
|
+
children: isReadOnly ? /*#__PURE__*/ jsx(Button, {
|
|
137
|
+
variant: "tertiary",
|
|
138
|
+
onClick: ()=>onCloseModal(),
|
|
139
|
+
children: formatMessage({
|
|
140
|
+
id: 'app.components.Button.close',
|
|
141
|
+
defaultMessage: 'Close'
|
|
108
142
|
})
|
|
109
|
-
|
|
143
|
+
}) : /*#__PURE__*/ jsxs(Fragment, {
|
|
144
|
+
children: [
|
|
145
|
+
/*#__PURE__*/ jsx(Button, {
|
|
146
|
+
variant: "tertiary",
|
|
147
|
+
onClick: ()=>onCloseModal(),
|
|
148
|
+
children: formatMessage({
|
|
149
|
+
id: 'app.components.Button.cancel',
|
|
150
|
+
defaultMessage: 'Cancel'
|
|
151
|
+
})
|
|
152
|
+
}),
|
|
153
|
+
/*#__PURE__*/ jsx(Button, {
|
|
154
|
+
onClick: handleSubmit,
|
|
155
|
+
children: formatMessage({
|
|
156
|
+
id: 'Settings.permissions.conditions.apply',
|
|
157
|
+
defaultMessage: 'Apply'
|
|
158
|
+
})
|
|
159
|
+
})
|
|
160
|
+
]
|
|
161
|
+
})
|
|
110
162
|
})
|
|
111
163
|
]
|
|
112
164
|
});
|
|
@@ -130,13 +182,14 @@ const createDefaultConditionsForm = (actionsToDisplay, modifiedData, arrayOfOpti
|
|
|
130
182
|
return acc;
|
|
131
183
|
}, {});
|
|
132
184
|
};
|
|
133
|
-
const ActionRow = ({ arrayOfOptionsGroupedByCategory, isFormDisabled = false, isGrey = false, label, name, onChange, value })=>{
|
|
185
|
+
const ActionRow = ({ arrayOfOptionsGroupedByCategory, isFormDisabled = false, isGrey = false, isReadOnly = false, label, name, onChange, value })=>{
|
|
134
186
|
const { formatMessage } = useIntl();
|
|
135
187
|
const handleChange = (val)=>{
|
|
136
188
|
if (onChange) {
|
|
137
189
|
onChange(name, getNewStateFromChangedValues(arrayOfOptionsGroupedByCategory, val));
|
|
138
190
|
}
|
|
139
191
|
};
|
|
192
|
+
const selectedValues = getSelectedValues(value);
|
|
140
193
|
return /*#__PURE__*/ jsxs(Flex, {
|
|
141
194
|
tag: "li",
|
|
142
195
|
background: isGrey ? 'neutral100' : 'neutral0',
|
|
@@ -188,11 +241,47 @@ const ActionRow = ({ arrayOfOptionsGroupedByCategory, isFormDisabled = false, is
|
|
|
188
241
|
maxWidth: 430,
|
|
189
242
|
width: '100%'
|
|
190
243
|
},
|
|
191
|
-
children: /*#__PURE__*/ jsx(
|
|
244
|
+
children: isReadOnly ? /*#__PURE__*/ jsx(Flex, {
|
|
245
|
+
direction: "column",
|
|
246
|
+
alignItems: "flex-start",
|
|
247
|
+
gap: 3,
|
|
248
|
+
children: selectedValues.length === 0 ? /*#__PURE__*/ jsx(Typography, {
|
|
249
|
+
textColor: "neutral600",
|
|
250
|
+
children: formatMessage({
|
|
251
|
+
id: 'Settings.permissions.conditions.none-applied',
|
|
252
|
+
defaultMessage: 'No conditions applied.'
|
|
253
|
+
})
|
|
254
|
+
}) : arrayOfOptionsGroupedByCategory.map(([categoryName, conditions])=>{
|
|
255
|
+
const selectedConditions = conditions.filter((c)=>selectedValues.includes(c.id));
|
|
256
|
+
if (selectedConditions.length === 0) {
|
|
257
|
+
return null;
|
|
258
|
+
}
|
|
259
|
+
return /*#__PURE__*/ jsxs(Flex, {
|
|
260
|
+
direction: "column",
|
|
261
|
+
alignItems: "flex-start",
|
|
262
|
+
gap: 2,
|
|
263
|
+
children: [
|
|
264
|
+
/*#__PURE__*/ jsx(Typography, {
|
|
265
|
+
variant: "pi",
|
|
266
|
+
fontWeight: "bold",
|
|
267
|
+
textColor: "neutral600",
|
|
268
|
+
children: categoryName
|
|
269
|
+
}),
|
|
270
|
+
/*#__PURE__*/ jsx(Box, {
|
|
271
|
+
children: /*#__PURE__*/ jsx(Typography, {
|
|
272
|
+
variant: "omega",
|
|
273
|
+
textColor: "neutral800",
|
|
274
|
+
children: selectedConditions.map((condition)=>condition.displayName).join(', ')
|
|
275
|
+
})
|
|
276
|
+
})
|
|
277
|
+
]
|
|
278
|
+
}, categoryName);
|
|
279
|
+
}).filter(Boolean)
|
|
280
|
+
}) : /*#__PURE__*/ jsx(MultiSelectNested, {
|
|
192
281
|
id: name,
|
|
193
282
|
customizeContent: (values = [])=>`${values.length} currently selected`,
|
|
194
283
|
onChange: handleChange,
|
|
195
|
-
value:
|
|
284
|
+
value: selectedValues,
|
|
196
285
|
options: getNestedOptions(arrayOfOptionsGroupedByCategory),
|
|
197
286
|
disabled: isFormDisabled
|
|
198
287
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConditionsModal.mjs","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Roles/components/ConditionsModal.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Box,\n Button,\n Flex,\n Modal,\n MultiSelectNested,\n MultiSelectNestedProps,\n Typography,\n Breadcrumbs,\n Crumb,\n} from '@strapi/design-system';\nimport { produce } from 'immer';\nimport get from 'lodash/get';\nimport groupBy from 'lodash/groupBy';\nimport upperFirst from 'lodash/upperFirst';\nimport { useIntl } from 'react-intl';\n\nimport { capitalise } from '../../../../../utils/strings';\nimport {\n PermissionsDataManagerContextValue,\n usePermissionsDataManager,\n} from '../hooks/usePermissionsDataManager';\n\nimport type { HiddenCheckboxAction, VisibleCheckboxAction } from './ContentTypeCollapses';\nimport type { ConditionForm } from '../utils/forms';\n\n/* -------------------------------------------------------------------------------------------------\n * ConditionsModal\n * -----------------------------------------------------------------------------------------------*/\n\ninterface ConditionAction extends Pick<ActionRowProps, 'label'> {\n actionId: string;\n isDisplayed: boolean;\n hasSomeActionsSelected?: boolean;\n hasAllActionsSelected?: boolean;\n pathToConditionsObject: string[];\n}\n\ninterface ConditionsModalProps extends Pick<ActionRowProps, 'isFormDisabled'> {\n actions?: Array<ConditionAction | HiddenCheckboxAction | VisibleCheckboxAction>;\n headerBreadCrumbs?: string[];\n onClose?: () => void;\n}\n\nconst ConditionsModal = ({\n actions = [],\n headerBreadCrumbs = [],\n isFormDisabled,\n onClose,\n}: ConditionsModalProps) => {\n const { formatMessage } = useIntl();\n const { availableConditions, modifiedData, onChangeConditions } = usePermissionsDataManager();\n\n const arrayOfOptionsGroupedByCategory = React.useMemo(() => {\n return Object.entries(groupBy(availableConditions, 'category'));\n }, [availableConditions]);\n\n const actionsToDisplay = actions.filter<VisibleCheckboxAction | ConditionAction>(\n // @ts-expect-error – TODO: fix this type issue\n ({ isDisplayed, hasSomeActionsSelected, hasAllActionsSelected }) =>\n isDisplayed && Boolean(hasSomeActionsSelected || hasAllActionsSelected)\n );\n\n const [state, setState] = React.useState(\n createDefaultConditionsForm(actionsToDisplay, modifiedData, arrayOfOptionsGroupedByCategory)\n );\n\n const handleChange = (name: string, values: ConditionForm) => {\n setState(\n produce((draft) => {\n if (!draft[name]) {\n draft[name] = {};\n }\n\n if (!draft[name].default) {\n draft[name].default = {};\n }\n\n draft[name].default = values;\n })\n );\n };\n\n const handleSubmit = () => {\n const conditionsWithoutCategory = Object.entries(state).reduce<Record<string, ConditionForm>>(\n (acc, current) => {\n const [key, value] = current;\n\n const merged = Object.values(value).reduce((acc1, current1) => {\n return { ...acc1, ...current1 };\n }, {});\n\n acc[key] = merged;\n\n return acc;\n },\n {}\n );\n\n onChangeConditions(conditionsWithoutCategory);\n onClose && onClose();\n };\n\n const onCloseModal = () => {\n setState(\n createDefaultConditionsForm(actionsToDisplay, modifiedData, arrayOfOptionsGroupedByCategory)\n );\n\n onClose && onClose();\n };\n\n return (\n <Modal.Content>\n <Modal.Header>\n <Breadcrumbs id=\"condition-modal-breadcrumbs\" label={headerBreadCrumbs.join(', ')}>\n {headerBreadCrumbs.map((label, index, arr) => (\n <Crumb isCurrent={index === arr.length - 1} key={label}>\n {upperFirst(\n formatMessage({\n id: label,\n defaultMessage: label,\n })\n )}\n </Crumb>\n ))}\n </Breadcrumbs>\n </Modal.Header>\n <Modal.Body>\n {actionsToDisplay.length === 0 && (\n <Typography>\n {formatMessage({\n id: 'Settings.permissions.conditions.no-actions',\n defaultMessage:\n 'You first need to select actions (create, read, update, ...) before defining conditions on them.',\n })}\n </Typography>\n )}\n <ul>\n {actionsToDisplay.map(({ actionId, label, pathToConditionsObject }, index) => {\n const name = pathToConditionsObject.join('..');\n\n return (\n <ActionRow\n key={actionId}\n arrayOfOptionsGroupedByCategory={arrayOfOptionsGroupedByCategory}\n label={label}\n isFormDisabled={isFormDisabled}\n isGrey={index % 2 === 0}\n name={name}\n onChange={handleChange}\n value={get(state, name, {})}\n />\n );\n })}\n </ul>\n </Modal.Body>\n <Modal.Footer>\n <Button variant=\"tertiary\" onClick={() => onCloseModal()}>\n {formatMessage({ id: 'app.components.Button.cancel', defaultMessage: 'Cancel' })}\n </Button>\n <Button onClick={handleSubmit}>\n {formatMessage({\n id: 'Settings.permissions.conditions.apply',\n defaultMessage: 'Apply',\n })}\n </Button>\n </Modal.Footer>\n </Modal.Content>\n );\n};\n\nconst createDefaultConditionsForm = (\n actionsToDisplay: Array<ConditionAction | VisibleCheckboxAction>,\n modifiedData: PermissionsDataManagerContextValue['modifiedData'],\n arrayOfOptionsGroupedByCategory: ActionRowProps['arrayOfOptionsGroupedByCategory']\n) => {\n return actionsToDisplay.reduce<Record<string, Record<string, ConditionForm>>>((acc, current) => {\n const valueFromModifiedData: ConditionForm = get(\n modifiedData,\n [...current.pathToConditionsObject, 'conditions'],\n {}\n );\n\n const categoryDefaultForm = arrayOfOptionsGroupedByCategory.reduce<\n Record<string, ConditionForm>\n >((acc, current) => {\n const [categoryName, relatedConditions] = current;\n\n const conditionsForm = relatedConditions.reduce<ConditionForm>((acc, current) => {\n acc[current.id] = get(valueFromModifiedData, current.id, false);\n\n return acc;\n }, {});\n\n acc[categoryName] = conditionsForm;\n\n return acc;\n }, {});\n\n acc[current.pathToConditionsObject.join('..')] = categoryDefaultForm;\n\n return acc;\n }, {});\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ActionRow\n * -----------------------------------------------------------------------------------------------*/\n\ninterface ActionRowProps {\n arrayOfOptionsGroupedByCategory: Array<\n [string, PermissionsDataManagerContextValue['availableConditions']]\n >;\n isFormDisabled?: boolean;\n isGrey?: boolean;\n label: string;\n name: string;\n onChange?: (name: string, values: Record<string, boolean>) => void;\n value: Record<string, ConditionForm>;\n}\n\nconst ActionRow = ({\n arrayOfOptionsGroupedByCategory,\n isFormDisabled = false,\n isGrey = false,\n label,\n name,\n onChange,\n value,\n}: ActionRowProps) => {\n const { formatMessage } = useIntl();\n\n const handleChange: MultiSelectNestedProps['onChange'] = (val) => {\n if (onChange) {\n onChange(name, getNewStateFromChangedValues(arrayOfOptionsGroupedByCategory, val));\n }\n };\n\n return (\n <Flex\n tag=\"li\"\n background={isGrey ? 'neutral100' : 'neutral0'}\n paddingBottom={3}\n paddingTop={3}\n justifyContent={'space-evenly'}\n >\n <Flex style={{ width: 180 }}>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'Settings.permissions.conditions.can',\n defaultMessage: 'Can',\n })}\n \n </Typography>\n <Typography variant=\"sigma\" title={label} textColor=\"primary600\" ellipsis>\n {formatMessage({\n id: `Settings.roles.form.permissions.${label.toLowerCase()}`,\n defaultMessage: label,\n })}\n </Typography>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n \n {formatMessage({\n id: 'Settings.permissions.conditions.when',\n defaultMessage: 'When',\n })}\n </Typography>\n </Flex>\n <Box style={{ maxWidth: 430, width: '100%' }}>\n <MultiSelectNested\n id={name}\n customizeContent={(values = []) => `${values.length} currently selected`}\n onChange={handleChange}\n value={getSelectedValues(value)}\n options={getNestedOptions(arrayOfOptionsGroupedByCategory)}\n disabled={isFormDisabled}\n />\n </Box>\n </Flex>\n );\n};\n\nconst getSelectedValues = (rawValue: Record<string, ConditionForm>): string[] =>\n Object.values(rawValue)\n .map((x) =>\n Object.entries(x)\n .filter(([, value]) => value)\n .map(([key]) => key)\n )\n .flat();\n\nconst getNestedOptions = (options: ActionRowProps['arrayOfOptionsGroupedByCategory']) =>\n options.reduce<MultiSelectNestedProps['options']>((acc, [label, children]) => {\n acc.push({\n label: capitalise(label),\n children: children.map((child) => ({\n label: child.displayName,\n value: child.id,\n })),\n });\n\n return acc;\n }, []);\n\nconst getNewStateFromChangedValues = (\n options: ActionRowProps['arrayOfOptionsGroupedByCategory'],\n changedValues: string[]\n) =>\n options\n .map(([, values]) => values)\n .flat()\n .reduce<Record<string, boolean>>(\n (acc, curr) => ({ [curr.id]: changedValues.includes(curr.id), ...acc }),\n {}\n );\n\nexport { ConditionsModal };\nexport type { ConditionsModalProps };\n"],"names":["ConditionsModal","actions","headerBreadCrumbs","isFormDisabled","onClose","formatMessage","useIntl","availableConditions","modifiedData","onChangeConditions","usePermissionsDataManager","arrayOfOptionsGroupedByCategory","React","useMemo","Object","entries","groupBy","actionsToDisplay","filter","isDisplayed","hasSomeActionsSelected","hasAllActionsSelected","Boolean","state","setState","useState","createDefaultConditionsForm","handleChange","name","values","produce","draft","default","handleSubmit","conditionsWithoutCategory","reduce","acc","current","key","value","merged","acc1","current1","onCloseModal","_jsxs","Modal","Content","_jsx","Header","Breadcrumbs","id","label","join","map","index","arr","Crumb","isCurrent","length","upperFirst","defaultMessage","Body","Typography","ul","actionId","pathToConditionsObject","ActionRow","isGrey","onChange","get","Footer","Button","variant","onClick","valueFromModifiedData","categoryDefaultForm","categoryName","relatedConditions","conditionsForm","val","getNewStateFromChangedValues","Flex","tag","background","paddingBottom","paddingTop","justifyContent","style","width","textColor","title","ellipsis","toLowerCase","Box","maxWidth","MultiSelectNested","customizeContent","getSelectedValues","options","getNestedOptions","disabled","rawValue","x","flat","children","push","capitalise","child","displayName","changedValues","curr","includes"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ConditionsModal.mjs","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Roles/components/ConditionsModal.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Box,\n Button,\n Flex,\n Modal,\n MultiSelectNested,\n MultiSelectNestedProps,\n Typography,\n Breadcrumbs,\n Crumb,\n} from '@strapi/design-system';\nimport { produce } from 'immer';\nimport get from 'lodash/get';\nimport groupBy from 'lodash/groupBy';\nimport upperFirst from 'lodash/upperFirst';\nimport { useIntl } from 'react-intl';\n\nimport { capitalise } from '../../../../../utils/strings';\nimport {\n PermissionsDataManagerContextValue,\n usePermissionsDataManager,\n} from '../hooks/usePermissionsDataManager';\n\nimport type { HiddenCheckboxAction, VisibleCheckboxAction } from './ContentTypeCollapses';\nimport type { ConditionForm } from '../utils/forms';\n\n/* -------------------------------------------------------------------------------------------------\n * ConditionsModal\n * -----------------------------------------------------------------------------------------------*/\n\ninterface ConditionAction extends Pick<ActionRowProps, 'label'> {\n actionId: string;\n isDisplayed: boolean;\n hasSomeActionsSelected?: boolean;\n hasAllActionsSelected?: boolean;\n pathToConditionsObject: string[];\n}\n\ninterface ConditionsModalProps extends Pick<ActionRowProps, 'isFormDisabled'> {\n actions?: Array<ConditionAction | HiddenCheckboxAction | VisibleCheckboxAction>;\n headerBreadCrumbs?: string[];\n isReadOnly?: boolean;\n onClose?: () => void;\n}\n\nconst ConditionsModal = ({\n actions = [],\n headerBreadCrumbs = [],\n isFormDisabled,\n isReadOnly = false,\n onClose,\n}: ConditionsModalProps) => {\n const { formatMessage } = useIntl();\n const { availableConditions, modifiedData, onChangeConditions } = usePermissionsDataManager();\n\n const arrayOfOptionsGroupedByCategory = React.useMemo(() => {\n return Object.entries(groupBy(availableConditions, 'category'));\n }, [availableConditions]);\n\n const actionsToDisplay = React.useMemo(\n () =>\n actions.filter<VisibleCheckboxAction | ConditionAction>(\n // @ts-expect-error – TODO: fix this type issue\n ({ isDisplayed, hasSomeActionsSelected, hasAllActionsSelected }) =>\n isDisplayed && Boolean(hasSomeActionsSelected || hasAllActionsSelected)\n ),\n [actions]\n );\n\n const [state, setState] = React.useState(() =>\n createDefaultConditionsForm(actionsToDisplay, modifiedData, arrayOfOptionsGroupedByCategory)\n );\n\n React.useEffect(() => {\n if (isReadOnly === false) {\n return;\n }\n\n setState(\n createDefaultConditionsForm(actionsToDisplay, modifiedData, arrayOfOptionsGroupedByCategory)\n );\n }, [isReadOnly, actionsToDisplay, modifiedData, arrayOfOptionsGroupedByCategory]);\n\n const handleChange = React.useCallback(\n (name: string, values: ConditionForm) => {\n if (isReadOnly === true) {\n return;\n }\n\n setState(\n produce((draft) => {\n if (draft[name] === undefined) {\n draft[name] = {};\n }\n\n if (draft[name].default === undefined) {\n draft[name].default = {};\n }\n\n draft[name].default = values;\n })\n );\n },\n [isReadOnly]\n );\n\n const handleSubmit = React.useCallback(() => {\n if (isReadOnly === true) {\n onClose?.();\n return;\n }\n\n const conditionsWithoutCategory = Object.entries(state).reduce<Record<string, ConditionForm>>(\n (acc, current) => {\n const [key, value] = current;\n\n const merged = Object.values(value).reduce((acc1, current1) => {\n return { ...acc1, ...current1 };\n }, {});\n\n acc[key] = merged;\n\n return acc;\n },\n {}\n );\n\n onChangeConditions(conditionsWithoutCategory);\n onClose?.();\n }, [isReadOnly, state, onChangeConditions, onClose]);\n\n const onCloseModal = React.useCallback(() => {\n setState(\n createDefaultConditionsForm(actionsToDisplay, modifiedData, arrayOfOptionsGroupedByCategory)\n );\n\n onClose?.();\n }, [actionsToDisplay, modifiedData, arrayOfOptionsGroupedByCategory, onClose]);\n\n return (\n <Modal.Content>\n <Modal.Header>\n <Breadcrumbs id=\"condition-modal-breadcrumbs\" label={headerBreadCrumbs.join(', ')}>\n {headerBreadCrumbs.map((label, index, arr) => (\n <Crumb isCurrent={index === arr.length - 1} key={label}>\n {upperFirst(\n formatMessage({\n id: label,\n defaultMessage: label,\n })\n )}\n </Crumb>\n ))}\n </Breadcrumbs>\n </Modal.Header>\n <Modal.Body>\n {isReadOnly && (\n <Box paddingBottom={4}>\n <Typography textColor=\"neutral600\">\n {formatMessage({\n id: 'Settings.permissions.conditions.inherited-readonly',\n defaultMessage:\n 'These conditions are inherited from your permissions and are read-only.',\n })}\n </Typography>\n </Box>\n )}\n {actionsToDisplay.length === 0 && (\n <Typography>\n {formatMessage({\n id: 'Settings.permissions.conditions.no-actions',\n defaultMessage:\n 'You first need to select actions (create, read, update, ...) before defining conditions on them.',\n })}\n </Typography>\n )}\n <ul>\n {actionsToDisplay.map(({ actionId, label, pathToConditionsObject }, index) => {\n const name = pathToConditionsObject.join('..');\n\n return (\n <ActionRow\n key={actionId}\n arrayOfOptionsGroupedByCategory={arrayOfOptionsGroupedByCategory}\n label={label}\n isFormDisabled={isFormDisabled || isReadOnly}\n isReadOnly={isReadOnly}\n isGrey={index % 2 === 0}\n name={name}\n onChange={handleChange}\n value={get(state, name, {})}\n />\n );\n })}\n </ul>\n </Modal.Body>\n <Modal.Footer>\n {isReadOnly ? (\n <Button variant=\"tertiary\" onClick={() => onCloseModal()}>\n {formatMessage({ id: 'app.components.Button.close', defaultMessage: 'Close' })}\n </Button>\n ) : (\n <>\n <Button variant=\"tertiary\" onClick={() => onCloseModal()}>\n {formatMessage({ id: 'app.components.Button.cancel', defaultMessage: 'Cancel' })}\n </Button>\n <Button onClick={handleSubmit}>\n {formatMessage({\n id: 'Settings.permissions.conditions.apply',\n defaultMessage: 'Apply',\n })}\n </Button>\n </>\n )}\n </Modal.Footer>\n </Modal.Content>\n );\n};\n\nconst createDefaultConditionsForm = (\n actionsToDisplay: Array<ConditionAction | VisibleCheckboxAction>,\n modifiedData: PermissionsDataManagerContextValue['modifiedData'],\n arrayOfOptionsGroupedByCategory: ActionRowProps['arrayOfOptionsGroupedByCategory']\n) => {\n return actionsToDisplay.reduce<Record<string, Record<string, ConditionForm>>>((acc, current) => {\n const valueFromModifiedData: ConditionForm = get(\n modifiedData,\n [...current.pathToConditionsObject, 'conditions'],\n {}\n );\n\n const categoryDefaultForm = arrayOfOptionsGroupedByCategory.reduce<\n Record<string, ConditionForm>\n >((acc, current) => {\n const [categoryName, relatedConditions] = current;\n\n const conditionsForm = relatedConditions.reduce<ConditionForm>((acc, current) => {\n acc[current.id] = get(valueFromModifiedData, current.id, false);\n\n return acc;\n }, {});\n\n acc[categoryName] = conditionsForm;\n\n return acc;\n }, {});\n\n acc[current.pathToConditionsObject.join('..')] = categoryDefaultForm;\n\n return acc;\n }, {});\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ActionRow\n * -----------------------------------------------------------------------------------------------*/\n\ninterface ActionRowProps {\n arrayOfOptionsGroupedByCategory: Array<\n [string, PermissionsDataManagerContextValue['availableConditions']]\n >;\n isFormDisabled?: boolean;\n isGrey?: boolean;\n isReadOnly?: boolean;\n label: string;\n name: string;\n onChange?: (name: string, values: Record<string, boolean>) => void;\n value: Record<string, ConditionForm>;\n}\n\nconst ActionRow = ({\n arrayOfOptionsGroupedByCategory,\n isFormDisabled = false,\n isGrey = false,\n isReadOnly = false,\n label,\n name,\n onChange,\n value,\n}: ActionRowProps) => {\n const { formatMessage } = useIntl();\n\n const handleChange: MultiSelectNestedProps['onChange'] = (val) => {\n if (onChange) {\n onChange(name, getNewStateFromChangedValues(arrayOfOptionsGroupedByCategory, val));\n }\n };\n\n const selectedValues = getSelectedValues(value);\n\n return (\n <Flex\n tag=\"li\"\n background={isGrey ? 'neutral100' : 'neutral0'}\n paddingBottom={3}\n paddingTop={3}\n justifyContent={'space-evenly'}\n >\n <Flex style={{ width: 180 }}>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'Settings.permissions.conditions.can',\n defaultMessage: 'Can',\n })}\n \n </Typography>\n <Typography variant=\"sigma\" title={label} textColor=\"primary600\" ellipsis>\n {formatMessage({\n id: `Settings.roles.form.permissions.${label.toLowerCase()}`,\n defaultMessage: label,\n })}\n </Typography>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n \n {formatMessage({\n id: 'Settings.permissions.conditions.when',\n defaultMessage: 'When',\n })}\n </Typography>\n </Flex>\n <Box style={{ maxWidth: 430, width: '100%' }}>\n {isReadOnly ? (\n <Flex direction=\"column\" alignItems=\"flex-start\" gap={3}>\n {selectedValues.length === 0 ? (\n <Typography textColor=\"neutral600\">\n {formatMessage({\n id: 'Settings.permissions.conditions.none-applied',\n defaultMessage: 'No conditions applied.',\n })}\n </Typography>\n ) : (\n arrayOfOptionsGroupedByCategory\n .map(([categoryName, conditions]) => {\n const selectedConditions = conditions.filter((c) =>\n selectedValues.includes(c.id)\n );\n\n if (selectedConditions.length === 0) {\n return null;\n }\n\n return (\n <Flex key={categoryName} direction=\"column\" alignItems=\"flex-start\" gap={2}>\n <Typography variant=\"pi\" fontWeight=\"bold\" textColor=\"neutral600\">\n {categoryName}\n </Typography>\n <Box>\n <Typography variant=\"omega\" textColor=\"neutral800\">\n {selectedConditions.map((condition) => condition.displayName).join(', ')}\n </Typography>\n </Box>\n </Flex>\n );\n })\n .filter(Boolean)\n )}\n </Flex>\n ) : (\n <MultiSelectNested\n id={name}\n customizeContent={(values = []) => `${values.length} currently selected`}\n onChange={handleChange}\n value={selectedValues}\n options={getNestedOptions(arrayOfOptionsGroupedByCategory)}\n disabled={isFormDisabled}\n />\n )}\n </Box>\n </Flex>\n );\n};\n\nconst getSelectedValues = (rawValue: Record<string, ConditionForm>): string[] =>\n Object.values(rawValue)\n .map((x) =>\n Object.entries(x)\n .filter(([, value]) => value)\n .map(([key]) => key)\n )\n .flat();\n\nconst getNestedOptions = (options: ActionRowProps['arrayOfOptionsGroupedByCategory']) =>\n options.reduce<MultiSelectNestedProps['options']>((acc, [label, children]) => {\n acc.push({\n label: capitalise(label),\n children: children.map((child) => ({\n label: child.displayName,\n value: child.id,\n })),\n });\n\n return acc;\n }, []);\n\nconst getNewStateFromChangedValues = (\n options: ActionRowProps['arrayOfOptionsGroupedByCategory'],\n changedValues: string[]\n) =>\n options\n .map(([, values]) => values)\n .flat()\n .reduce<Record<string, boolean>>(\n (acc, curr) => ({ [curr.id]: changedValues.includes(curr.id), ...acc }),\n {}\n );\n\nexport { ConditionsModal };\nexport type { ConditionsModalProps };\n"],"names":["ConditionsModal","actions","headerBreadCrumbs","isFormDisabled","isReadOnly","onClose","formatMessage","useIntl","availableConditions","modifiedData","onChangeConditions","usePermissionsDataManager","arrayOfOptionsGroupedByCategory","React","useMemo","Object","entries","groupBy","actionsToDisplay","filter","isDisplayed","hasSomeActionsSelected","hasAllActionsSelected","Boolean","state","setState","useState","createDefaultConditionsForm","useEffect","handleChange","useCallback","name","values","produce","draft","undefined","default","handleSubmit","conditionsWithoutCategory","reduce","acc","current","key","value","merged","acc1","current1","onCloseModal","_jsxs","Modal","Content","_jsx","Header","Breadcrumbs","id","label","join","map","index","arr","Crumb","isCurrent","length","upperFirst","defaultMessage","Body","Box","paddingBottom","Typography","textColor","ul","actionId","pathToConditionsObject","ActionRow","isGrey","onChange","get","Footer","Button","variant","onClick","_Fragment","valueFromModifiedData","categoryDefaultForm","categoryName","relatedConditions","conditionsForm","val","getNewStateFromChangedValues","selectedValues","getSelectedValues","Flex","tag","background","paddingTop","justifyContent","style","width","title","ellipsis","toLowerCase","maxWidth","direction","alignItems","gap","conditions","selectedConditions","c","includes","fontWeight","condition","displayName","MultiSelectNested","customizeContent","options","getNestedOptions","disabled","rawValue","x","flat","children","push","capitalise","child","changedValues","curr"],"mappings":"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"}
|
|
@@ -45,13 +45,24 @@ const ContentTypeCollapses = ({ actions = [], isFormDisabled, pathToData, subjec
|
|
|
45
45
|
const nextCollapseToOpen = collapseToOpen === collapseName ? null : collapseName;
|
|
46
46
|
setCollapseToOpen(nextCollapseToOpen);
|
|
47
47
|
};
|
|
48
|
-
|
|
49
|
-
children: subjects.map(({ uid, label, properties }, index)=>{
|
|
50
|
-
const isActive = collapseToOpen === uid;
|
|
48
|
+
const subjectsWithActions = React__namespace.useMemo(()=>subjects.map(({ uid, label, properties })=>{
|
|
51
49
|
const availableActions = actions.map((action)=>({
|
|
52
50
|
...action,
|
|
53
51
|
isDisplayed: Array.isArray(action.subjects) && action.subjects.indexOf(uid) !== -1
|
|
54
52
|
}));
|
|
53
|
+
return {
|
|
54
|
+
uid,
|
|
55
|
+
label,
|
|
56
|
+
properties,
|
|
57
|
+
availableActions
|
|
58
|
+
};
|
|
59
|
+
}), [
|
|
60
|
+
subjects,
|
|
61
|
+
actions
|
|
62
|
+
]);
|
|
63
|
+
return /*#__PURE__*/ jsxRuntime.jsx(jsxRuntime.Fragment, {
|
|
64
|
+
children: subjectsWithActions.map(({ uid, label, properties, availableActions }, index)=>{
|
|
65
|
+
const isActive = collapseToOpen === uid;
|
|
55
66
|
return /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
|
|
56
67
|
direction: "column",
|
|
57
68
|
display: "inline-flex",
|
|
@@ -69,7 +80,8 @@ const ContentTypeCollapses = ({ actions = [], isFormDisabled, pathToData, subjec
|
|
|
69
80
|
pathToData: [
|
|
70
81
|
pathToData,
|
|
71
82
|
uid
|
|
72
|
-
].join('..')
|
|
83
|
+
].join('..'),
|
|
84
|
+
subject: uid
|
|
73
85
|
}),
|
|
74
86
|
isActive && properties.map(({ label: propertyLabel, value, children: childrenForm })=>{
|
|
75
87
|
return /*#__PURE__*/ jsxRuntime.jsx(CollapsePropertyMatrix.CollapsePropertyMatrix, {
|
|
@@ -81,7 +93,8 @@ const ContentTypeCollapses = ({ actions = [], isFormDisabled, pathToData, subjec
|
|
|
81
93
|
pathToData,
|
|
82
94
|
uid
|
|
83
95
|
].join('..'),
|
|
84
|
-
propertyName: value
|
|
96
|
+
propertyName: value,
|
|
97
|
+
subject: uid
|
|
85
98
|
}, value);
|
|
86
99
|
})
|
|
87
100
|
]
|
|
@@ -89,9 +102,9 @@ const ContentTypeCollapses = ({ actions = [], isFormDisabled, pathToData, subjec
|
|
|
89
102
|
})
|
|
90
103
|
});
|
|
91
104
|
};
|
|
92
|
-
const Collapse = ({ availableActions = [], isActive = false, isGrey = false, isFormDisabled = false, label, onClickToggle, pathToData })=>{
|
|
105
|
+
const Collapse = ({ availableActions = [], isActive = false, isGrey = false, isFormDisabled = false, label, onClickToggle, pathToData, subject })=>{
|
|
93
106
|
const { formatMessage } = reactIntl.useIntl();
|
|
94
|
-
const { modifiedData, onChangeParentCheckbox, onChangeSimpleCheckbox } = usePermissionsDataManager.usePermissionsDataManager();
|
|
107
|
+
const { modifiedData, onChangeParentCheckbox, onChangeSimpleCheckbox, checkUserHasPermission, userPermissions } = usePermissionsDataManager.usePermissionsDataManager();
|
|
95
108
|
const [isConditionModalOpen, setIsConditionModalOpen] = React__namespace.useState(false);
|
|
96
109
|
// This corresponds to the data related to the CT left checkbox
|
|
97
110
|
// modifiedData: { collectionTypes: { [ctuid]: {create: {properties: { fields: {f1: true} }, update: {}, ... } } } }
|
|
@@ -152,6 +165,7 @@ const Collapse = ({ availableActions = [], isActive = false, isGrey = false, isF
|
|
|
152
165
|
return /*#__PURE__*/ jsxRuntime.jsx(HiddenAction.HiddenAction, {}, actionId);
|
|
153
166
|
}
|
|
154
167
|
const { hasConditions, hasAllActionsSelected, isParentCheckbox, checkboxName, label: permissionLabel } = restAction;
|
|
168
|
+
const userHasPermission = checkUserHasPermission(actionId, subject);
|
|
155
169
|
if (isParentCheckbox) {
|
|
156
170
|
return /*#__PURE__*/ jsxRuntime.jsx(Cell, {
|
|
157
171
|
justifyContent: "center",
|
|
@@ -171,7 +185,7 @@ const Collapse = ({ availableActions = [], isActive = false, isGrey = false, isF
|
|
|
171
185
|
background: "primary600"
|
|
172
186
|
}),
|
|
173
187
|
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Checkbox, {
|
|
174
|
-
disabled: isFormDisabled,
|
|
188
|
+
disabled: isFormDisabled || !userHasPermission,
|
|
175
189
|
name: checkboxName,
|
|
176
190
|
"aria-label": formatMessage({
|
|
177
191
|
id: `Settings.permissions.select-by-permission`,
|
|
@@ -209,7 +223,7 @@ const Collapse = ({ availableActions = [], isActive = false, isGrey = false, isF
|
|
|
209
223
|
background: "primary600"
|
|
210
224
|
}),
|
|
211
225
|
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Checkbox, {
|
|
212
|
-
disabled: isFormDisabled,
|
|
226
|
+
disabled: isFormDisabled || !userHasPermission,
|
|
213
227
|
name: checkboxName,
|
|
214
228
|
// Keep same signature as packages/core/admin/admin/src/components/Roles/Permissions/index.js l.91
|
|
215
229
|
onCheckedChange: (value)=>{
|
|
@@ -250,6 +264,7 @@ const Collapse = ({ availableActions = [], isActive = false, isGrey = false, isF
|
|
|
250
264
|
],
|
|
251
265
|
actions: checkboxesActions,
|
|
252
266
|
isFormDisabled: isFormDisabled,
|
|
267
|
+
isReadOnly: userPermissions !== undefined,
|
|
253
268
|
onClose: ()=>{
|
|
254
269
|
setIsConditionModalOpen(false);
|
|
255
270
|
}
|
package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContentTypeCollapses.js","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Checkbox, Box, BoxComponent, Flex, FlexComponent, Modal } from '@strapi/design-system';\nimport { ChevronDown, ChevronUp } from '@strapi/icons';\nimport get from 'lodash/get';\nimport isEmpty from 'lodash/isEmpty';\nimport omit from 'lodash/omit';\nimport { useIntl } from 'react-intl';\nimport { styled, DefaultTheme } from 'styled-components';\n\nimport { Action, Subject } from '../../../../../../../shared/contracts/permissions';\nimport { capitalise } from '../../../../../utils/strings';\nimport {\n PermissionsDataManagerContextValue,\n usePermissionsDataManager,\n} from '../hooks/usePermissionsDataManager';\nimport { cellWidth, rowHeight } from '../utils/constants';\nimport { createArrayOfValues } from '../utils/createArrayOfValues';\nimport { ConditionForm } from '../utils/forms';\nimport { getCheckboxState } from '../utils/getCheckboxState';\n\nimport { CollapsePropertyMatrix } from './CollapsePropertyMatrix';\nimport { ConditionsButton } from './ConditionsButton';\nimport { ConditionsModal } from './ConditionsModal';\nimport { HiddenAction } from './HiddenAction';\nimport { RowLabelWithCheckbox, RowLabelWithCheckboxProps } from './RowLabelWithCheckbox';\n\n/* -------------------------------------------------------------------------------------------------\n * ContentTypeCollapses\n * -----------------------------------------------------------------------------------------------*/\n\ninterface ContentTypeCollapsesProps extends Pick<CollapseProps, 'pathToData'> {\n actions?: Action[];\n isFormDisabled?: boolean;\n subjects?: Subject[];\n}\n\nconst ContentTypeCollapses = ({\n actions = [],\n isFormDisabled,\n pathToData,\n subjects = [],\n}: ContentTypeCollapsesProps) => {\n const [collapseToOpen, setCollapseToOpen] = React.useState<string | null>(null);\n\n const handleClickToggleCollapse = (collapseName: string) => () => {\n const nextCollapseToOpen = collapseToOpen === collapseName ? null : collapseName;\n\n setCollapseToOpen(nextCollapseToOpen);\n };\n\n return (\n <>\n {subjects.map(({ uid, label, properties }, index) => {\n const isActive = collapseToOpen === uid;\n const availableActions = actions.map((action) => ({\n ...action,\n isDisplayed: Array.isArray(action.subjects) && action.subjects.indexOf(uid) !== -1,\n }));\n return (\n <Flex\n key={uid}\n direction=\"column\"\n display=\"inline-flex\"\n alignItems=\"stretch\"\n minWidth=\"100%\"\n borderColor={isActive ? 'primary600' : undefined}\n >\n <Collapse\n availableActions={availableActions}\n isActive={isActive}\n isGrey={index % 2 === 0}\n isFormDisabled={isFormDisabled}\n label={label}\n onClickToggle={handleClickToggleCollapse(uid)}\n pathToData={[pathToData, uid].join('..')}\n />\n {isActive &&\n properties.map(({ label: propertyLabel, value, children: childrenForm }) => {\n return (\n <CollapsePropertyMatrix\n availableActions={availableActions}\n childrenForm={childrenForm}\n isFormDisabled={isFormDisabled}\n label={propertyLabel}\n pathToData={[pathToData, uid].join('..')}\n propertyName={value}\n key={value}\n />\n );\n })}\n </Flex>\n );\n })}\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Collapse\n * -----------------------------------------------------------------------------------------------*/\n\ninterface CollapseProps\n extends Pick<RowLabelWithCheckboxProps, 'isActive' | 'isFormDisabled' | 'label'> {\n availableActions?: Array<Action & { isDisplayed: boolean }>;\n isGrey?: boolean;\n onClickToggle: RowLabelWithCheckboxProps['onClick'];\n pathToData: string;\n}\n\nconst Collapse = ({\n availableActions = [],\n isActive = false,\n isGrey = false,\n isFormDisabled = false,\n label,\n onClickToggle,\n pathToData,\n}: CollapseProps) => {\n const { formatMessage } = useIntl();\n const { modifiedData, onChangeParentCheckbox, onChangeSimpleCheckbox } =\n usePermissionsDataManager();\n const [isConditionModalOpen, setIsConditionModalOpen] = React.useState(false);\n\n // This corresponds to the data related to the CT left checkbox\n // modifiedData: { collectionTypes: { [ctuid]: {create: {properties: { fields: {f1: true} }, update: {}, ... } } } }\n const mainData = get(modifiedData, pathToData.split('..'), {});\n // The utils we are using: getCheckboxState, retrieves all the boolean leafs of an object in order\n // to return the state of checkbox. Since the conditions are not related to the property we need to remove the key from the object.\n const dataWithoutCondition = React.useMemo(() => {\n return Object.keys(mainData).reduce<Record<string, ConditionForm>>((acc, current) => {\n acc[current] = omit(mainData[current], 'conditions');\n\n return acc;\n }, {});\n }, [mainData]);\n\n const { hasAllActionsSelected, hasSomeActionsSelected } = getCheckboxState(dataWithoutCondition);\n\n // Here we create an array of <checkbox>, since the state of each one of them is used in\n // order to know if whether or not we need to display the associated action in\n // the <ConditionsModal />\n const checkboxesActions = React.useMemo(() => {\n return generateCheckboxesActions(availableActions, modifiedData, pathToData);\n }, [availableActions, modifiedData, pathToData]);\n\n // @ts-expect-error – hasConditions does not exist on all versions of checkboxesActions.\n const doesConditionButtonHasConditions = checkboxesActions.some((action) => action.hasConditions);\n\n return (\n <BoxWrapper $isActive={isActive}>\n <Wrapper\n height={rowHeight}\n flex={1}\n alignItems=\"center\"\n background={isGrey ? 'neutral100' : 'neutral0'}\n >\n <RowLabelWithCheckbox\n isCollapsable\n isFormDisabled={isFormDisabled}\n label={capitalise(label)}\n checkboxName={pathToData}\n onChange={onChangeParentCheckbox}\n onClick={onClickToggle}\n someChecked={hasSomeActionsSelected}\n value={hasAllActionsSelected}\n isActive={isActive}\n >\n <Chevron paddingLeft={2}>{isActive ? <ChevronUp /> : <ChevronDown />}</Chevron>\n </RowLabelWithCheckbox>\n\n <Flex style={{ flex: 1 }}>\n {checkboxesActions.map(\n ({ actionId, hasSomeActionsSelected, isDisplayed, ...restAction }) => {\n if (!isDisplayed) {\n return <HiddenAction key={actionId} />;\n }\n\n const {\n hasConditions,\n hasAllActionsSelected,\n isParentCheckbox,\n checkboxName,\n label: permissionLabel,\n } = restAction as VisibleCheckboxAction;\n\n if (isParentCheckbox) {\n return (\n <Cell key={actionId} justifyContent=\"center\" alignItems=\"center\">\n <Box position=\"relative\" zIndex={1}>\n {hasConditions && (\n <Box\n tag=\"span\"\n position=\"absolute\"\n top=\"-6px\"\n left=\"37px\"\n width=\"6px\"\n height=\"6px\"\n borderRadius=\"20px\"\n background=\"primary600\"\n />\n )}\n <Checkbox\n disabled={isFormDisabled}\n name={checkboxName}\n aria-label={formatMessage(\n {\n id: `Settings.permissions.select-by-permission`,\n defaultMessage: 'Select {label} permission',\n },\n { label: `${permissionLabel} ${label}` }\n )}\n // Keep same signature as packages/core/admin/admin/src/components/Roles/Permissions/index.js l.91\n onCheckedChange={(value) => {\n onChangeParentCheckbox({\n target: {\n name: checkboxName,\n value: !!value,\n },\n });\n }}\n checked={hasSomeActionsSelected ? 'indeterminate' : hasAllActionsSelected}\n />\n </Box>\n </Cell>\n );\n }\n\n return (\n <Cell key={actionId} justifyContent=\"center\" alignItems=\"center\">\n {hasConditions && (\n <Box\n tag=\"span\"\n position=\"absolute\"\n top=\"-6px\"\n left=\"37px\"\n width=\"6px\"\n height=\"6px\"\n borderRadius=\"20px\"\n background=\"primary600\"\n />\n )}\n <Checkbox\n disabled={isFormDisabled}\n name={checkboxName}\n // Keep same signature as packages/core/admin/admin/src/components/Roles/Permissions/index.js l.91\n onCheckedChange={(value) => {\n onChangeSimpleCheckbox({\n target: {\n name: checkboxName,\n value: !!value,\n },\n });\n }}\n checked={hasConditions ? 'indeterminate' : hasAllActionsSelected}\n />\n </Cell>\n );\n }\n )}\n </Flex>\n </Wrapper>\n <Box bottom=\"10px\" right=\"9px\" position=\"absolute\">\n <Modal.Root\n open={isConditionModalOpen}\n onOpenChange={() => {\n setIsConditionModalOpen((prev) => !prev);\n }}\n >\n <Modal.Trigger>\n <ConditionsButton hasConditions={doesConditionButtonHasConditions} />\n </Modal.Trigger>\n <ConditionsModal\n headerBreadCrumbs={[label, 'Settings.permissions.conditions.conditions']}\n actions={checkboxesActions}\n isFormDisabled={isFormDisabled}\n onClose={() => {\n setIsConditionModalOpen(false);\n }}\n />\n </Modal.Root>\n </Box>\n </BoxWrapper>\n );\n};\n\ninterface VisibleCheckboxAction {\n actionId: string;\n hasAllActionsSelected: boolean;\n hasSomeActionsSelected: boolean;\n isDisplayed: true;\n isParentCheckbox: boolean;\n checkboxName: string;\n label: string;\n hasConditions: boolean;\n pathToConditionsObject: string[];\n}\n\ninterface HiddenCheckboxAction {\n actionId: string;\n isDisplayed: false;\n hasAllActionsSelected?: never;\n hasSomeActionsSelected: boolean;\n}\n\nconst generateCheckboxesActions = (\n availableActions: Array<Action & { isDisplayed: boolean }>,\n modifiedData: PermissionsDataManagerContextValue['modifiedData'],\n pathToData: string\n): Array<VisibleCheckboxAction | HiddenCheckboxAction> => {\n return availableActions.map(({ actionId, isDisplayed, applyToProperties, label }) => {\n if (!isDisplayed) {\n return { actionId, hasSomeActionsSelected: false, isDisplayed };\n }\n\n const baseCheckboxNameArray = [...pathToData.split('..'), actionId];\n const checkboxNameArray = isEmpty(applyToProperties)\n ? [...baseCheckboxNameArray, 'properties', 'enabled']\n : baseCheckboxNameArray;\n const conditionsValue = get(modifiedData, [...baseCheckboxNameArray, 'conditions'], null);\n\n const baseCheckboxAction = {\n actionId,\n checkboxName: checkboxNameArray.join('..'),\n hasConditions: createArrayOfValues(conditionsValue).some((val) => val),\n isDisplayed,\n label,\n pathToConditionsObject: baseCheckboxNameArray,\n };\n\n if (isEmpty(applyToProperties)) {\n const value = get(modifiedData, checkboxNameArray, false);\n\n // Since applyToProperties is empty it is not a parent checkbox, therefore hasAllActionsSelected is\n // equal to hasSomeActionsSelected\n return {\n ...baseCheckboxAction,\n hasAllActionsSelected: value,\n hasSomeActionsSelected: value,\n isParentCheckbox: false,\n };\n }\n\n const mainData = get(modifiedData, checkboxNameArray, null);\n\n const { hasAllActionsSelected, hasSomeActionsSelected } = getCheckboxState(mainData);\n\n return {\n ...baseCheckboxAction,\n hasAllActionsSelected,\n hasSomeActionsSelected,\n isParentCheckbox: true,\n };\n });\n};\n\nconst activeRowStyle = (theme: DefaultTheme, isActive?: boolean): string => `\n ${Wrapper} {\n background-color: ${theme.colors.primary100};\n color: ${theme.colors.primary600};\n border-radius: ${isActive ? '2px 2px 0 0' : '2px'};\n font-weight: ${theme.fontWeights.bold};\n }\n\n ${Chevron} {\n display: flex;\n }\n ${ConditionsButton} {\n display: block;\n }\n\n &:focus-within {\n ${() => activeRowStyle(theme, isActive)}\n }\n`;\n\nconst Wrapper = styled<FlexComponent>(Flex)`\n border: 1px solid transparent;\n`;\n\nconst BoxWrapper = styled.div<{ $isActive: boolean }>`\n display: inline-flex;\n min-width: 100%;\n position: relative;\n\n ${ConditionsButton} {\n display: none;\n }\n\n ${({ $isActive, theme }) => $isActive && activeRowStyle(theme, $isActive)}\n\n &:hover {\n ${({ theme, $isActive }) => activeRowStyle(theme, $isActive)}\n }\n`;\n\nconst Cell = styled<FlexComponent>(Flex)`\n width: ${cellWidth};\n position: relative;\n`;\n\nconst Chevron = styled<BoxComponent>(Box)`\n display: none;\n\n svg {\n width: 1.4rem;\n }\n\n path {\n fill: ${({ theme }) => theme.colors.primary600};\n }\n`;\n\nexport { ContentTypeCollapses };\nexport type { ContentTypeCollapsesProps, HiddenCheckboxAction, VisibleCheckboxAction };\n"],"names":["ContentTypeCollapses","actions","isFormDisabled","pathToData","subjects","collapseToOpen","setCollapseToOpen","React","useState","handleClickToggleCollapse","collapseName","nextCollapseToOpen","_jsx","_Fragment","map","uid","label","properties","index","isActive","availableActions","action","isDisplayed","Array","isArray","indexOf","_jsxs","Flex","direction","display","alignItems","minWidth","borderColor","undefined","Collapse","isGrey","onClickToggle","join","propertyLabel","value","children","childrenForm","CollapsePropertyMatrix","propertyName","formatMessage","useIntl","modifiedData","onChangeParentCheckbox","onChangeSimpleCheckbox","usePermissionsDataManager","isConditionModalOpen","setIsConditionModalOpen","mainData","get","split","dataWithoutCondition","useMemo","Object","keys","reduce","acc","current","omit","hasAllActionsSelected","hasSomeActionsSelected","getCheckboxState","checkboxesActions","generateCheckboxesActions","doesConditionButtonHasConditions","some","hasConditions","BoxWrapper","$isActive","Wrapper","height","rowHeight","flex","background","RowLabelWithCheckbox","isCollapsable","capitalise","checkboxName","onChange","onClick","someChecked","Chevron","paddingLeft","ChevronUp","ChevronDown","style","actionId","restAction","HiddenAction","isParentCheckbox","permissionLabel","Cell","justifyContent","Box","position","zIndex","tag","top","left","width","borderRadius","Checkbox","disabled","name","aria-label","id","defaultMessage","onCheckedChange","target","checked","bottom","right","Modal","Root","open","onOpenChange","prev","Trigger","ConditionsButton","ConditionsModal","headerBreadCrumbs","onClose","applyToProperties","baseCheckboxNameArray","checkboxNameArray","isEmpty","conditionsValue","baseCheckboxAction","createArrayOfValues","val","pathToConditionsObject","activeRowStyle","theme","colors","primary100","primary600","fontWeights","bold","styled","div","cellWidth"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ContentTypeCollapses.js","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Checkbox, Box, BoxComponent, Flex, FlexComponent, Modal } from '@strapi/design-system';\nimport { ChevronDown, ChevronUp } from '@strapi/icons';\nimport get from 'lodash/get';\nimport isEmpty from 'lodash/isEmpty';\nimport omit from 'lodash/omit';\nimport { useIntl } from 'react-intl';\nimport { styled, DefaultTheme } from 'styled-components';\n\nimport { Action, Subject } from '../../../../../../../shared/contracts/permissions';\nimport { capitalise } from '../../../../../utils/strings';\nimport {\n PermissionsDataManagerContextValue,\n usePermissionsDataManager,\n} from '../hooks/usePermissionsDataManager';\nimport { cellWidth, rowHeight } from '../utils/constants';\nimport { createArrayOfValues } from '../utils/createArrayOfValues';\nimport { ConditionForm } from '../utils/forms';\nimport { getCheckboxState } from '../utils/getCheckboxState';\n\nimport { CollapsePropertyMatrix } from './CollapsePropertyMatrix';\nimport { ConditionsButton } from './ConditionsButton';\nimport { ConditionsModal } from './ConditionsModal';\nimport { HiddenAction } from './HiddenAction';\nimport { RowLabelWithCheckbox, RowLabelWithCheckboxProps } from './RowLabelWithCheckbox';\n\n/* -------------------------------------------------------------------------------------------------\n * ContentTypeCollapses\n * -----------------------------------------------------------------------------------------------*/\n\ninterface ContentTypeCollapsesProps extends Pick<CollapseProps, 'pathToData'> {\n actions?: Action[];\n isFormDisabled?: boolean;\n subjects?: Subject[];\n}\n\nconst ContentTypeCollapses = ({\n actions = [],\n isFormDisabled,\n pathToData,\n subjects = [],\n}: ContentTypeCollapsesProps) => {\n const [collapseToOpen, setCollapseToOpen] = React.useState<string | null>(null);\n\n const handleClickToggleCollapse = (collapseName: string) => () => {\n const nextCollapseToOpen = collapseToOpen === collapseName ? null : collapseName;\n\n setCollapseToOpen(nextCollapseToOpen);\n };\n\n const subjectsWithActions = React.useMemo(\n () =>\n subjects.map(({ uid, label, properties }) => {\n const availableActions = actions.map((action) => ({\n ...action,\n isDisplayed: Array.isArray(action.subjects) && action.subjects.indexOf(uid) !== -1,\n }));\n return { uid, label, properties, availableActions };\n }),\n [subjects, actions]\n );\n\n return (\n <>\n {subjectsWithActions.map(({ uid, label, properties, availableActions }, index) => {\n const isActive = collapseToOpen === uid;\n return (\n <Flex\n key={uid}\n direction=\"column\"\n display=\"inline-flex\"\n alignItems=\"stretch\"\n minWidth=\"100%\"\n borderColor={isActive ? 'primary600' : undefined}\n >\n <Collapse\n availableActions={availableActions}\n isActive={isActive}\n isGrey={index % 2 === 0}\n isFormDisabled={isFormDisabled}\n label={label}\n onClickToggle={handleClickToggleCollapse(uid)}\n pathToData={[pathToData, uid].join('..')}\n subject={uid}\n />\n {isActive &&\n properties.map(({ label: propertyLabel, value, children: childrenForm }) => {\n return (\n <CollapsePropertyMatrix\n availableActions={availableActions}\n childrenForm={childrenForm}\n isFormDisabled={isFormDisabled}\n label={propertyLabel}\n pathToData={[pathToData, uid].join('..')}\n propertyName={value}\n key={value}\n subject={uid}\n />\n );\n })}\n </Flex>\n );\n })}\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Collapse\n * -----------------------------------------------------------------------------------------------*/\n\ninterface CollapseProps\n extends Pick<RowLabelWithCheckboxProps, 'isActive' | 'isFormDisabled' | 'label'> {\n availableActions?: Array<Action & { isDisplayed: boolean }>;\n isGrey?: boolean;\n onClickToggle: RowLabelWithCheckboxProps['onClick'];\n pathToData: string;\n subject: string;\n}\n\nconst Collapse = ({\n availableActions = [],\n isActive = false,\n isGrey = false,\n isFormDisabled = false,\n label,\n onClickToggle,\n pathToData,\n subject,\n}: CollapseProps) => {\n const { formatMessage } = useIntl();\n const {\n modifiedData,\n onChangeParentCheckbox,\n onChangeSimpleCheckbox,\n checkUserHasPermission,\n userPermissions,\n } = usePermissionsDataManager();\n const [isConditionModalOpen, setIsConditionModalOpen] = React.useState(false);\n\n // This corresponds to the data related to the CT left checkbox\n // modifiedData: { collectionTypes: { [ctuid]: {create: {properties: { fields: {f1: true} }, update: {}, ... } } } }\n const mainData = get(modifiedData, pathToData.split('..'), {});\n // The utils we are using: getCheckboxState, retrieves all the boolean leafs of an object in order\n // to return the state of checkbox. Since the conditions are not related to the property we need to remove the key from the object.\n const dataWithoutCondition = React.useMemo(() => {\n return Object.keys(mainData).reduce<Record<string, ConditionForm>>((acc, current) => {\n acc[current] = omit(mainData[current], 'conditions');\n\n return acc;\n }, {});\n }, [mainData]);\n\n const { hasAllActionsSelected, hasSomeActionsSelected } = getCheckboxState(dataWithoutCondition);\n\n // Here we create an array of <checkbox>, since the state of each one of them is used in\n // order to know if whether or not we need to display the associated action in\n // the <ConditionsModal />\n const checkboxesActions = React.useMemo(() => {\n return generateCheckboxesActions(availableActions, modifiedData, pathToData);\n }, [availableActions, modifiedData, pathToData]);\n\n // @ts-expect-error – hasConditions does not exist on all versions of checkboxesActions.\n const doesConditionButtonHasConditions = checkboxesActions.some((action) => action.hasConditions);\n\n return (\n <BoxWrapper $isActive={isActive}>\n <Wrapper\n height={rowHeight}\n flex={1}\n alignItems=\"center\"\n background={isGrey ? 'neutral100' : 'neutral0'}\n >\n <RowLabelWithCheckbox\n isCollapsable\n isFormDisabled={isFormDisabled}\n label={capitalise(label)}\n checkboxName={pathToData}\n onChange={onChangeParentCheckbox}\n onClick={onClickToggle}\n someChecked={hasSomeActionsSelected}\n value={hasAllActionsSelected}\n isActive={isActive}\n >\n <Chevron paddingLeft={2}>{isActive ? <ChevronUp /> : <ChevronDown />}</Chevron>\n </RowLabelWithCheckbox>\n\n <Flex style={{ flex: 1 }}>\n {checkboxesActions.map(\n ({ actionId, hasSomeActionsSelected, isDisplayed, ...restAction }) => {\n if (!isDisplayed) {\n return <HiddenAction key={actionId} />;\n }\n\n const {\n hasConditions,\n hasAllActionsSelected,\n isParentCheckbox,\n checkboxName,\n label: permissionLabel,\n } = restAction as VisibleCheckboxAction;\n\n const userHasPermission = checkUserHasPermission(actionId, subject);\n\n if (isParentCheckbox) {\n return (\n <Cell key={actionId} justifyContent=\"center\" alignItems=\"center\">\n <Box position=\"relative\" zIndex={1}>\n {hasConditions && (\n <Box\n tag=\"span\"\n position=\"absolute\"\n top=\"-6px\"\n left=\"37px\"\n width=\"6px\"\n height=\"6px\"\n borderRadius=\"20px\"\n background=\"primary600\"\n />\n )}\n <Checkbox\n disabled={isFormDisabled || !userHasPermission}\n name={checkboxName}\n aria-label={formatMessage(\n {\n id: `Settings.permissions.select-by-permission`,\n defaultMessage: 'Select {label} permission',\n },\n { label: `${permissionLabel} ${label}` }\n )}\n // Keep same signature as packages/core/admin/admin/src/components/Roles/Permissions/index.js l.91\n onCheckedChange={(value) => {\n onChangeParentCheckbox({\n target: {\n name: checkboxName,\n value: !!value,\n },\n });\n }}\n checked={hasSomeActionsSelected ? 'indeterminate' : hasAllActionsSelected}\n />\n </Box>\n </Cell>\n );\n }\n\n return (\n <Cell key={actionId} justifyContent=\"center\" alignItems=\"center\">\n {hasConditions && (\n <Box\n tag=\"span\"\n position=\"absolute\"\n top=\"-6px\"\n left=\"37px\"\n width=\"6px\"\n height=\"6px\"\n borderRadius=\"20px\"\n background=\"primary600\"\n />\n )}\n <Checkbox\n disabled={isFormDisabled || !userHasPermission}\n name={checkboxName}\n // Keep same signature as packages/core/admin/admin/src/components/Roles/Permissions/index.js l.91\n onCheckedChange={(value) => {\n onChangeSimpleCheckbox({\n target: {\n name: checkboxName,\n value: !!value,\n },\n });\n }}\n checked={hasConditions ? 'indeterminate' : hasAllActionsSelected}\n />\n </Cell>\n );\n }\n )}\n </Flex>\n </Wrapper>\n <Box bottom=\"10px\" right=\"9px\" position=\"absolute\">\n <Modal.Root\n open={isConditionModalOpen}\n onOpenChange={() => {\n setIsConditionModalOpen((prev) => !prev);\n }}\n >\n <Modal.Trigger>\n <ConditionsButton hasConditions={doesConditionButtonHasConditions} />\n </Modal.Trigger>\n <ConditionsModal\n headerBreadCrumbs={[label, 'Settings.permissions.conditions.conditions']}\n actions={checkboxesActions}\n isFormDisabled={isFormDisabled}\n isReadOnly={userPermissions !== undefined}\n onClose={() => {\n setIsConditionModalOpen(false);\n }}\n />\n </Modal.Root>\n </Box>\n </BoxWrapper>\n );\n};\n\ninterface VisibleCheckboxAction {\n actionId: string;\n hasAllActionsSelected: boolean;\n hasSomeActionsSelected: boolean;\n isDisplayed: true;\n isParentCheckbox: boolean;\n checkboxName: string;\n label: string;\n hasConditions: boolean;\n pathToConditionsObject: string[];\n}\n\ninterface HiddenCheckboxAction {\n actionId: string;\n isDisplayed: false;\n hasAllActionsSelected?: never;\n hasSomeActionsSelected: boolean;\n}\n\nconst generateCheckboxesActions = (\n availableActions: Array<Action & { isDisplayed: boolean }>,\n modifiedData: PermissionsDataManagerContextValue['modifiedData'],\n pathToData: string\n): Array<VisibleCheckboxAction | HiddenCheckboxAction> => {\n return availableActions.map(({ actionId, isDisplayed, applyToProperties, label }) => {\n if (!isDisplayed) {\n return { actionId, hasSomeActionsSelected: false, isDisplayed };\n }\n\n const baseCheckboxNameArray = [...pathToData.split('..'), actionId];\n const checkboxNameArray = isEmpty(applyToProperties)\n ? [...baseCheckboxNameArray, 'properties', 'enabled']\n : baseCheckboxNameArray;\n const conditionsValue = get(modifiedData, [...baseCheckboxNameArray, 'conditions'], null);\n\n const baseCheckboxAction = {\n actionId,\n checkboxName: checkboxNameArray.join('..'),\n hasConditions: createArrayOfValues(conditionsValue).some((val) => val),\n isDisplayed,\n label,\n pathToConditionsObject: baseCheckboxNameArray,\n };\n\n if (isEmpty(applyToProperties)) {\n const value = get(modifiedData, checkboxNameArray, false);\n\n // Since applyToProperties is empty it is not a parent checkbox, therefore hasAllActionsSelected is\n // equal to hasSomeActionsSelected\n return {\n ...baseCheckboxAction,\n hasAllActionsSelected: value,\n hasSomeActionsSelected: value,\n isParentCheckbox: false,\n };\n }\n\n const mainData = get(modifiedData, checkboxNameArray, null);\n\n const { hasAllActionsSelected, hasSomeActionsSelected } = getCheckboxState(mainData);\n\n return {\n ...baseCheckboxAction,\n hasAllActionsSelected,\n hasSomeActionsSelected,\n isParentCheckbox: true,\n };\n });\n};\n\nconst activeRowStyle = (theme: DefaultTheme, isActive?: boolean): string => `\n ${Wrapper} {\n background-color: ${theme.colors.primary100};\n color: ${theme.colors.primary600};\n border-radius: ${isActive ? '2px 2px 0 0' : '2px'};\n font-weight: ${theme.fontWeights.bold};\n }\n\n ${Chevron} {\n display: flex;\n }\n ${ConditionsButton} {\n display: block;\n }\n\n &:focus-within {\n ${() => activeRowStyle(theme, isActive)}\n }\n`;\n\nconst Wrapper = styled<FlexComponent>(Flex)`\n border: 1px solid transparent;\n`;\n\nconst BoxWrapper = styled.div<{ $isActive: boolean }>`\n display: inline-flex;\n min-width: 100%;\n position: relative;\n\n ${ConditionsButton} {\n display: none;\n }\n\n ${({ $isActive, theme }) => $isActive && activeRowStyle(theme, $isActive)}\n\n &:hover {\n ${({ theme, $isActive }) => activeRowStyle(theme, $isActive)}\n }\n`;\n\nconst Cell = styled<FlexComponent>(Flex)`\n width: ${cellWidth};\n position: relative;\n`;\n\nconst Chevron = styled<BoxComponent>(Box)`\n display: none;\n\n svg {\n width: 1.4rem;\n }\n\n path {\n fill: ${({ theme }) => theme.colors.primary600};\n }\n`;\n\nexport { ContentTypeCollapses };\nexport type { ContentTypeCollapsesProps, HiddenCheckboxAction, VisibleCheckboxAction };\n"],"names":["ContentTypeCollapses","actions","isFormDisabled","pathToData","subjects","collapseToOpen","setCollapseToOpen","React","useState","handleClickToggleCollapse","collapseName","nextCollapseToOpen","subjectsWithActions","useMemo","map","uid","label","properties","availableActions","action","isDisplayed","Array","isArray","indexOf","_jsx","_Fragment","index","isActive","_jsxs","Flex","direction","display","alignItems","minWidth","borderColor","undefined","Collapse","isGrey","onClickToggle","join","subject","propertyLabel","value","children","childrenForm","CollapsePropertyMatrix","propertyName","formatMessage","useIntl","modifiedData","onChangeParentCheckbox","onChangeSimpleCheckbox","checkUserHasPermission","userPermissions","usePermissionsDataManager","isConditionModalOpen","setIsConditionModalOpen","mainData","get","split","dataWithoutCondition","Object","keys","reduce","acc","current","omit","hasAllActionsSelected","hasSomeActionsSelected","getCheckboxState","checkboxesActions","generateCheckboxesActions","doesConditionButtonHasConditions","some","hasConditions","BoxWrapper","$isActive","Wrapper","height","rowHeight","flex","background","RowLabelWithCheckbox","isCollapsable","capitalise","checkboxName","onChange","onClick","someChecked","Chevron","paddingLeft","ChevronUp","ChevronDown","style","actionId","restAction","HiddenAction","isParentCheckbox","permissionLabel","userHasPermission","Cell","justifyContent","Box","position","zIndex","tag","top","left","width","borderRadius","Checkbox","disabled","name","aria-label","id","defaultMessage","onCheckedChange","target","checked","bottom","right","Modal","Root","open","onOpenChange","prev","Trigger","ConditionsButton","ConditionsModal","headerBreadCrumbs","isReadOnly","onClose","applyToProperties","baseCheckboxNameArray","checkboxNameArray","isEmpty","conditionsValue","baseCheckboxAction","createArrayOfValues","val","pathToConditionsObject","activeRowStyle","theme","colors","primary100","primary600","fontWeights","bold","styled","div","cellWidth"],"mappings":"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"}
|