@strapi/admin 5.14.0 → 5.15.1
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/assets/images/free-trial.png.js +6 -0
- package/dist/admin/admin/src/assets/images/free-trial.png.js.map +1 -0
- package/dist/admin/admin/src/assets/images/free-trial.png.mjs +4 -0
- package/dist/admin/admin/src/assets/images/free-trial.png.mjs.map +1 -0
- package/dist/admin/admin/src/components/ConfirmDialog.js +2 -2
- package/dist/admin/admin/src/components/ConfirmDialog.js.map +1 -1
- package/dist/admin/admin/src/components/ContentBox.js +3 -3
- package/dist/admin/admin/src/components/ContentBox.js.map +1 -1
- package/dist/admin/admin/src/components/ErrorElement.js +3 -3
- package/dist/admin/admin/src/components/ErrorElement.js.map +1 -1
- package/dist/admin/admin/src/components/GradientBadge.js +37 -0
- package/dist/admin/admin/src/components/GradientBadge.js.map +1 -0
- package/dist/admin/admin/src/components/GradientBadge.mjs +35 -0
- package/dist/admin/admin/src/components/GradientBadge.mjs.map +1 -0
- package/dist/admin/admin/src/components/GuidedTour/Modal.js +3 -3
- package/dist/admin/admin/src/components/GuidedTour/Modal.js.map +1 -1
- package/dist/admin/admin/src/components/Layouts/GridLayout.js +2 -2
- package/dist/admin/admin/src/components/Layouts/GridLayout.js.map +1 -1
- package/dist/admin/admin/src/components/Layouts/HeaderLayout.js +1 -1
- package/dist/admin/admin/src/components/Layouts/HeaderLayout.js.map +1 -1
- package/dist/admin/admin/src/components/Layouts/HeaderLayout.mjs +1 -1
- package/dist/admin/admin/src/components/Layouts/HeaderLayout.mjs.map +1 -1
- package/dist/admin/admin/src/components/Layouts/Layout.js +3 -3
- package/dist/admin/admin/src/components/Layouts/Layout.js.map +1 -1
- package/dist/admin/admin/src/components/LeftMenu.js +7 -5
- package/dist/admin/admin/src/components/LeftMenu.js.map +1 -1
- package/dist/admin/admin/src/components/LeftMenu.mjs +3 -1
- package/dist/admin/admin/src/components/LeftMenu.mjs.map +1 -1
- package/dist/admin/admin/src/components/MainNav/MainNav.js +2 -2
- package/dist/admin/admin/src/components/MainNav/MainNav.js.map +1 -1
- package/dist/admin/admin/src/components/MainNav/NavBrand.js +2 -2
- package/dist/admin/admin/src/components/MainNav/NavBrand.js.map +1 -1
- package/dist/admin/admin/src/components/MainNav/NavLink.js +3 -3
- package/dist/admin/admin/src/components/MainNav/NavLink.js.map +1 -1
- package/dist/admin/admin/src/components/MainNav/NavUser.js +8 -8
- package/dist/admin/admin/src/components/MainNav/NavUser.js.map +1 -1
- package/dist/admin/admin/src/components/MainNav/TrialCountdown.js +114 -0
- package/dist/admin/admin/src/components/MainNav/TrialCountdown.js.map +1 -0
- package/dist/admin/admin/src/components/MainNav/TrialCountdown.mjs +112 -0
- package/dist/admin/admin/src/components/MainNav/TrialCountdown.mjs.map +1 -0
- package/dist/admin/admin/src/components/NpsSurvey.js +2 -2
- package/dist/admin/admin/src/components/NpsSurvey.js.map +1 -1
- package/dist/admin/admin/src/components/SubNav.js +6 -6
- package/dist/admin/admin/src/components/SubNav.js.map +1 -1
- package/dist/admin/admin/src/components/Table.js +2 -2
- package/dist/admin/admin/src/components/Table.js.map +1 -1
- package/dist/admin/admin/src/components/Theme.js +2 -2
- package/dist/admin/admin/src/components/Theme.js.map +1 -1
- package/dist/admin/admin/src/components/UnauthenticatedLogo.js +2 -2
- package/dist/admin/admin/src/components/UnauthenticatedLogo.js.map +1 -1
- package/dist/admin/admin/src/components/UpsellBanner.js +113 -0
- package/dist/admin/admin/src/components/UpsellBanner.js.map +1 -0
- package/dist/admin/admin/src/components/UpsellBanner.mjs +111 -0
- package/dist/admin/admin/src/components/UpsellBanner.mjs.map +1 -0
- package/dist/admin/admin/src/layouts/AuthenticatedLayout.js +2 -0
- package/dist/admin/admin/src/layouts/AuthenticatedLayout.js.map +1 -1
- package/dist/admin/admin/src/layouts/AuthenticatedLayout.mjs +2 -0
- package/dist/admin/admin/src/layouts/AuthenticatedLayout.mjs.map +1 -1
- package/dist/admin/admin/src/layouts/UnauthenticatedLayout.js +3 -3
- package/dist/admin/admin/src/layouts/UnauthenticatedLayout.js.map +1 -1
- package/dist/admin/admin/src/pages/Auth/components/Register.js +2 -2
- package/dist/admin/admin/src/pages/Auth/components/Register.js.map +1 -1
- package/dist/admin/admin/src/pages/Home/HomePage.js +4 -0
- package/dist/admin/admin/src/pages/Home/HomePage.js.map +1 -1
- package/dist/admin/admin/src/pages/Home/HomePage.mjs +4 -0
- package/dist/admin/admin/src/pages/Home/HomePage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.js +183 -0
- package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.js.map +1 -0
- package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.mjs +181 -0
- package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.mjs.map +1 -0
- package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.js +128 -0
- package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.js.map +1 -0
- package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.mjs +126 -0
- package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.mjs.map +1 -0
- package/dist/admin/admin/src/pages/Marketplace/components/NpmPackageCard.js +3 -3
- package/dist/admin/admin/src/pages/Marketplace/components/NpmPackageCard.js.map +1 -1
- package/dist/admin/admin/src/pages/Marketplace/components/NpmPackagesGrid.js +2 -2
- package/dist/admin/admin/src/pages/Marketplace/components/NpmPackagesGrid.js.map +1 -1
- package/dist/admin/admin/src/pages/Marketplace/components/SortSelect.js +2 -2
- package/dist/admin/admin/src/pages/Marketplace/components/SortSelect.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/SettingsNav.js +3 -3
- package/dist/admin/admin/src/pages/Settings/components/SettingsNav.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/SettingsNav.mjs +1 -1
- package/dist/admin/admin/src/pages/Settings/components/SettingsNav.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.js +2 -2
- package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.js +2 -2
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.js +4 -4
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.js +2 -2
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.js +2 -2
- package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapseLabel.js +2 -2
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapseLabel.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.js +10 -10
- 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/ConditionsButton.js +3 -3
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsButton.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.js +5 -5
- 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/HiddenAction.js +2 -2
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/HiddenAction.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.js +3 -3
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/components/SelectRoles.js +3 -3
- package/dist/admin/admin/src/pages/Settings/pages/Users/components/SelectRoles.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/Events.js +2 -2
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/Events.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.js +2 -2
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.js.map +1 -1
- package/dist/admin/admin/src/render.js +3 -1
- package/dist/admin/admin/src/render.js.map +1 -1
- package/dist/admin/admin/src/render.mjs +3 -1
- package/dist/admin/admin/src/render.mjs.map +1 -1
- package/dist/admin/admin/src/services/admin.js +13 -2
- package/dist/admin/admin/src/services/admin.js.map +1 -1
- package/dist/admin/admin/src/services/admin.mjs +13 -3
- package/dist/admin/admin/src/services/admin.mjs.map +1 -1
- package/dist/admin/admin/src/translations/ar.json.js +1 -0
- package/dist/admin/admin/src/translations/ar.json.js.map +1 -1
- package/dist/admin/admin/src/translations/ar.json.mjs +1 -0
- package/dist/admin/admin/src/translations/ar.json.mjs.map +1 -1
- package/dist/admin/admin/src/translations/ca.json.js +1 -0
- package/dist/admin/admin/src/translations/ca.json.js.map +1 -1
- package/dist/admin/admin/src/translations/ca.json.mjs +1 -0
- package/dist/admin/admin/src/translations/ca.json.mjs.map +1 -1
- package/dist/admin/admin/src/translations/de.json.js +1 -0
- package/dist/admin/admin/src/translations/de.json.js.map +1 -1
- package/dist/admin/admin/src/translations/de.json.mjs +1 -0
- package/dist/admin/admin/src/translations/de.json.mjs.map +1 -1
- package/dist/admin/admin/src/translations/dk.json.js +1 -0
- package/dist/admin/admin/src/translations/dk.json.js.map +1 -1
- package/dist/admin/admin/src/translations/dk.json.mjs +1 -0
- package/dist/admin/admin/src/translations/dk.json.mjs.map +1 -1
- package/dist/admin/admin/src/translations/en.json.js +20 -0
- package/dist/admin/admin/src/translations/en.json.js.map +1 -1
- package/dist/admin/admin/src/translations/en.json.mjs +20 -0
- package/dist/admin/admin/src/translations/en.json.mjs.map +1 -1
- package/dist/admin/admin/src/translations/es.json.js +1 -0
- package/dist/admin/admin/src/translations/es.json.js.map +1 -1
- package/dist/admin/admin/src/translations/es.json.mjs +1 -0
- package/dist/admin/admin/src/translations/es.json.mjs.map +1 -1
- package/dist/admin/admin/src/translations/eu.json.js +1 -0
- package/dist/admin/admin/src/translations/eu.json.js.map +1 -1
- package/dist/admin/admin/src/translations/eu.json.mjs +1 -0
- package/dist/admin/admin/src/translations/eu.json.mjs.map +1 -1
- package/dist/admin/admin/src/translations/fr.json.js +1 -0
- package/dist/admin/admin/src/translations/fr.json.js.map +1 -1
- package/dist/admin/admin/src/translations/fr.json.mjs +1 -0
- package/dist/admin/admin/src/translations/fr.json.mjs.map +1 -1
- package/dist/admin/admin/src/translations/gu.json.js +1 -0
- package/dist/admin/admin/src/translations/gu.json.js.map +1 -1
- package/dist/admin/admin/src/translations/gu.json.mjs +1 -0
- package/dist/admin/admin/src/translations/gu.json.mjs.map +1 -1
- package/dist/admin/admin/src/translations/hi.json.js +1 -0
- package/dist/admin/admin/src/translations/hi.json.js.map +1 -1
- package/dist/admin/admin/src/translations/hi.json.mjs +1 -0
- package/dist/admin/admin/src/translations/hi.json.mjs.map +1 -1
- package/dist/admin/admin/src/translations/hu.json.js +1 -0
- package/dist/admin/admin/src/translations/hu.json.js.map +1 -1
- package/dist/admin/admin/src/translations/hu.json.mjs +1 -0
- package/dist/admin/admin/src/translations/hu.json.mjs.map +1 -1
- package/dist/admin/admin/src/translations/ja.json.js +1 -0
- package/dist/admin/admin/src/translations/ja.json.js.map +1 -1
- package/dist/admin/admin/src/translations/ja.json.mjs +1 -0
- package/dist/admin/admin/src/translations/ja.json.mjs.map +1 -1
- package/dist/admin/admin/src/translations/ko.json.js +1 -0
- package/dist/admin/admin/src/translations/ko.json.js.map +1 -1
- package/dist/admin/admin/src/translations/ko.json.mjs +1 -0
- package/dist/admin/admin/src/translations/ko.json.mjs.map +1 -1
- package/dist/admin/admin/src/translations/ml.json.js +1 -0
- package/dist/admin/admin/src/translations/ml.json.js.map +1 -1
- package/dist/admin/admin/src/translations/ml.json.mjs +1 -0
- package/dist/admin/admin/src/translations/ml.json.mjs.map +1 -1
- package/dist/admin/admin/src/translations/nl.json.js +1 -0
- package/dist/admin/admin/src/translations/nl.json.js.map +1 -1
- package/dist/admin/admin/src/translations/nl.json.mjs +1 -0
- package/dist/admin/admin/src/translations/nl.json.mjs.map +1 -1
- package/dist/admin/admin/src/translations/pl.json.js +1 -0
- package/dist/admin/admin/src/translations/pl.json.js.map +1 -1
- package/dist/admin/admin/src/translations/pl.json.mjs +1 -0
- package/dist/admin/admin/src/translations/pl.json.mjs.map +1 -1
- package/dist/admin/admin/src/translations/pt-BR.json.js +1 -0
- package/dist/admin/admin/src/translations/pt-BR.json.js.map +1 -1
- package/dist/admin/admin/src/translations/pt-BR.json.mjs +1 -0
- package/dist/admin/admin/src/translations/pt-BR.json.mjs.map +1 -1
- package/dist/admin/admin/src/translations/ru.json.js +1 -0
- package/dist/admin/admin/src/translations/ru.json.js.map +1 -1
- package/dist/admin/admin/src/translations/ru.json.mjs +1 -0
- package/dist/admin/admin/src/translations/ru.json.mjs.map +1 -1
- package/dist/admin/admin/src/translations/sa.json.js +1 -0
- package/dist/admin/admin/src/translations/sa.json.js.map +1 -1
- package/dist/admin/admin/src/translations/sa.json.mjs +1 -0
- package/dist/admin/admin/src/translations/sa.json.mjs.map +1 -1
- package/dist/admin/admin/src/translations/sk.json.js +1 -0
- package/dist/admin/admin/src/translations/sk.json.js.map +1 -1
- package/dist/admin/admin/src/translations/sk.json.mjs +1 -0
- package/dist/admin/admin/src/translations/sk.json.mjs.map +1 -1
- package/dist/admin/admin/src/translations/sv.json.js +1 -0
- package/dist/admin/admin/src/translations/sv.json.js.map +1 -1
- package/dist/admin/admin/src/translations/sv.json.mjs +1 -0
- package/dist/admin/admin/src/translations/sv.json.mjs.map +1 -1
- package/dist/admin/admin/src/translations/tr.json.js +1 -0
- package/dist/admin/admin/src/translations/tr.json.js.map +1 -1
- package/dist/admin/admin/src/translations/tr.json.mjs +1 -0
- package/dist/admin/admin/src/translations/tr.json.mjs.map +1 -1
- package/dist/admin/admin/src/translations/uk.json.js +1 -0
- package/dist/admin/admin/src/translations/uk.json.js.map +1 -1
- package/dist/admin/admin/src/translations/uk.json.mjs +1 -0
- package/dist/admin/admin/src/translations/uk.json.mjs.map +1 -1
- package/dist/admin/admin/src/translations/zh-Hans.json.js +1 -0
- package/dist/admin/admin/src/translations/zh-Hans.json.js.map +1 -1
- package/dist/admin/admin/src/translations/zh-Hans.json.mjs +1 -0
- package/dist/admin/admin/src/translations/zh-Hans.json.mjs.map +1 -1
- package/dist/admin/admin/src/translations/zh.json.js +1 -0
- package/dist/admin/admin/src/translations/zh.json.js.map +1 -1
- package/dist/admin/admin/src/translations/zh.json.mjs +1 -0
- package/dist/admin/admin/src/translations/zh.json.mjs.map +1 -1
- package/dist/admin/ee/admin/src/hooks/useLicenseLimits.js +2 -1
- package/dist/admin/ee/admin/src/hooks/useLicenseLimits.js.map +1 -1
- package/dist/admin/ee/admin/src/hooks/useLicenseLimits.mjs +2 -1
- package/dist/admin/ee/admin/src/hooks/useLicenseLimits.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/AuthPage/components/Login.js +2 -2
- package/dist/admin/ee/admin/src/pages/AuthPage/components/Login.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/AuthPage/components/Providers.js +2 -2
- package/dist/admin/ee/admin/src/pages/AuthPage/components/Providers.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/AuthPage/components/SSOProviders.js +3 -3
- package/dist/admin/ee/admin/src/pages/AuthPage/components/SSOProviders.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/Modal.js +2 -2
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/Modal.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.js +7 -0
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.mjs +7 -0
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.mjs.map +1 -1
- package/dist/admin/index.js +2 -0
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/index.mjs +1 -0
- package/dist/admin/index.mjs.map +1 -1
- package/dist/admin/src/components/GradientBadge.d.ts +4 -0
- package/dist/admin/src/components/MainNav/TrialCountdown.d.ts +2 -0
- package/dist/admin/src/components/UpsellBanner.d.ts +2 -0
- package/dist/admin/src/index.d.ts +1 -0
- package/dist/admin/src/pages/Home/components/FreeTrialEndedModal.d.ts +1 -0
- package/dist/admin/src/pages/Home/components/FreeTrialWelcomeModal.d.ts +1 -0
- package/dist/admin/src/services/admin.d.ts +8 -6
- package/dist/ee/admin/src/hooks/useLicenseLimits.d.ts +2 -0
- package/dist/ee/server/src/controllers/admin.d.ts +3 -0
- package/dist/ee/server/src/controllers/admin.d.ts.map +1 -1
- package/dist/ee/server/src/controllers/index.d.ts +3 -0
- package/dist/ee/server/src/controllers/index.d.ts.map +1 -1
- package/dist/ee/server/src/index.d.ts +6 -0
- package/dist/ee/server/src/index.d.ts.map +1 -1
- package/dist/server/ee/server/src/controllers/admin.js +2 -0
- package/dist/server/ee/server/src/controllers/admin.js.map +1 -1
- package/dist/server/ee/server/src/controllers/admin.mjs +2 -0
- package/dist/server/ee/server/src/controllers/admin.mjs.map +1 -1
- package/dist/server/server/src/controllers/admin.js +6 -0
- package/dist/server/server/src/controllers/admin.js.map +1 -1
- package/dist/server/server/src/controllers/admin.mjs +6 -0
- package/dist/server/server/src/controllers/admin.mjs.map +1 -1
- package/dist/server/server/src/routes/admin.js +10 -0
- package/dist/server/server/src/routes/admin.js.map +1 -1
- package/dist/server/server/src/routes/admin.mjs +10 -0
- package/dist/server/server/src/routes/admin.mjs.map +1 -1
- package/dist/server/server/src/services/content-type.js +10 -15
- package/dist/server/server/src/services/content-type.js.map +1 -1
- package/dist/server/server/src/services/content-type.mjs +11 -16
- package/dist/server/server/src/services/content-type.mjs.map +1 -1
- package/dist/server/src/controllers/admin.d.ts +3 -0
- package/dist/server/src/controllers/admin.d.ts.map +1 -1
- package/dist/server/src/controllers/index.d.ts +3 -0
- package/dist/server/src/controllers/index.d.ts.map +1 -1
- package/dist/server/src/index.d.ts +3 -0
- package/dist/server/src/index.d.ts.map +1 -1
- package/dist/server/src/routes/admin.d.ts.map +1 -1
- package/dist/server/src/services/content-type.d.ts +1 -1
- package/dist/server/src/services/content-type.d.ts.map +1 -1
- package/dist/shared/contracts/admin.d.ts +1 -0
- package/dist/shared/contracts/admin.d.ts.map +1 -1
- package/package.json +11 -11
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectRoles.js","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Users/components/SelectRoles.tsx"],"sourcesContent":["import { Field, MultiSelect, MultiSelectOption } from '@strapi/design-system';\nimport { Loader as LoadingIcon } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled, keyframes } from 'styled-components';\n\nimport { useField } from '../../../../../components/Form';\nimport { useAdminRoles } from '../../../../../hooks/useAdminRoles';\n\ninterface SelectRolesProps {\n disabled?: boolean;\n}\n\nconst SelectRoles = ({ disabled }: SelectRolesProps) => {\n const { isLoading, roles } = useAdminRoles();\n\n const { formatMessage } = useIntl();\n const { value = [], onChange, error } = useField<string[]>('roles');\n\n return (\n <Field.Root\n error={error}\n hint={formatMessage({\n id: 'app.components.Users.ModalCreateBody.block-title.roles.description',\n defaultMessage: 'A user can have one or several roles',\n })}\n name=\"roles\"\n required\n >\n <Field.Label>\n {formatMessage({\n id: 'app.components.Users.ModalCreateBody.block-title.roles',\n defaultMessage: \"User's roles\",\n })}\n </Field.Label>\n <MultiSelect\n disabled={disabled}\n onChange={(v) => {\n onChange('roles', v);\n }}\n placeholder={formatMessage({\n id: 'app.components.Select.placeholder',\n defaultMessage: 'Select',\n })}\n startIcon={isLoading ? <Loader /> : undefined}\n value={value.map((v) => v.toString())}\n withTags\n >\n {roles.map((role) => {\n return (\n <MultiSelectOption key={role.id} value={role.id.toString()}>\n {formatMessage({\n id: `global.${role.code}`,\n defaultMessage: role.name,\n })}\n </MultiSelectOption>\n );\n })}\n </MultiSelect>\n <Field.Error />\n <Field.Hint />\n </Field.Root>\n );\n};\n\nconst rotation = keyframes`\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(359deg);\n }\n`;\n\nconst LoadingWrapper = styled.div`\n animation: ${rotation} 2s infinite linear;\n`;\n\nconst Loader = () => (\n <LoadingWrapper>\n <LoadingIcon />\n </LoadingWrapper>\n);\n\nexport { SelectRoles };\n"],"names":["SelectRoles","disabled","isLoading","roles","useAdminRoles","formatMessage","useIntl","value","onChange","error","useField","_jsxs","Field","Root","hint","id","defaultMessage","name","required","_jsx","Label","MultiSelect","v","placeholder","startIcon","Loader","undefined","map","toString","withTags","role","MultiSelectOption","code","Error","Hint","rotation","keyframes","LoadingWrapper","styled","div","LoadingIcon"],"mappings":";;;;;;;;;;AAYA,MAAMA,WAAc,GAAA,CAAC,EAAEC,QAAQ,EAAoB,GAAA;AACjD,IAAA,MAAM,EAAEC,SAAS,EAAEC,KAAK,EAAE,GAAGC,2BAAAA,EAAAA;IAE7B,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAC1B,MAAM,EAAEC,QAAQ,EAAE,EAAEC,QAAQ,EAAEC,KAAK,EAAE,GAAGC,aAAmB,CAAA,OAAA,CAAA;IAE3D,qBACEC,eAAA,CAACC,mBAAMC,IAAI,EAAA;QACTJ,KAAOA,EAAAA,KAAAA;AACPK,QAAAA,IAAAA,EAAMT,aAAc,CAAA;YAClBU,EAAI,EAAA,oEAAA;YACJC,cAAgB,EAAA;AAClB,SAAA,CAAA;QACAC,IAAK,EAAA,OAAA;QACLC,QAAQ,EAAA,IAAA;;AAER,0BAAAC,cAAA,CAACP,mBAAMQ,KAAK,EAAA;0BACTf,aAAc,CAAA;oBACbU,EAAI,EAAA,wDAAA;oBACJC,cAAgB,EAAA;AAClB,iBAAA;;0BAEFG,cAACE,CAAAA,wBAAAA,EAAAA;gBACCpB,QAAUA,EAAAA,QAAAA;AACVO,gBAAAA,QAAAA,EAAU,CAACc,CAAAA,GAAAA;AACTd,oBAAAA,QAAAA,CAAS,OAASc,EAAAA,CAAAA,CAAAA;AACpB,iBAAA;AACAC,gBAAAA,WAAAA,EAAalB,aAAc,CAAA;oBACzBU,EAAI,EAAA,mCAAA;oBACJC,cAAgB,EAAA;AAClB,iBAAA,CAAA;gBACAQ,SAAWtB,EAAAA,SAAAA,iBAAYiB,eAACM,MAAYC,EAAAA,EAAAA,CAAAA,GAAAA,SAAAA;AACpCnB,gBAAAA,KAAAA,EAAOA,MAAMoB,GAAG,CAAC,CAACL,CAAAA,GAAMA,EAAEM,QAAQ,EAAA,CAAA;gBAClCC,QAAQ,EAAA,IAAA;0BAEP1B,KAAMwB,CAAAA,GAAG,CAAC,CAACG,IAAAA,GAAAA;AACV,oBAAA,qBACEX,cAACY,CAAAA,8BAAAA,EAAAA;wBAAgCxB,KAAOuB,EAAAA,IAAAA,CAAKf,EAAE,CAACa,QAAQ,EAAA;kCACrDvB,aAAc,CAAA;AACbU,4BAAAA,EAAAA,EAAI,CAAC,OAAO,EAAEe,IAAKE,CAAAA,IAAI,CAAC,CAAC;AACzBhB,4BAAAA,cAAAA,EAAgBc,KAAKb;AACvB,yBAAA;AAJsBa,qBAAAA,EAAAA,IAAAA,CAAKf,EAAE,CAAA;AAOnC,iBAAA;;AAEF,0BAAAI,cAAA,CAACP,mBAAMqB,KAAK,EAAA,EAAA,CAAA;AACZ,0BAAAd,cAAA,CAACP,mBAAMsB,IAAI,EAAA,EAAA;;;AAGjB;AAEA,MAAMC,QAAAA,GAAWC,
|
|
1
|
+
{"version":3,"file":"SelectRoles.js","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Users/components/SelectRoles.tsx"],"sourcesContent":["import { Field, MultiSelect, MultiSelectOption } from '@strapi/design-system';\nimport { Loader as LoadingIcon } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled, keyframes } from 'styled-components';\n\nimport { useField } from '../../../../../components/Form';\nimport { useAdminRoles } from '../../../../../hooks/useAdminRoles';\n\ninterface SelectRolesProps {\n disabled?: boolean;\n}\n\nconst SelectRoles = ({ disabled }: SelectRolesProps) => {\n const { isLoading, roles } = useAdminRoles();\n\n const { formatMessage } = useIntl();\n const { value = [], onChange, error } = useField<string[]>('roles');\n\n return (\n <Field.Root\n error={error}\n hint={formatMessage({\n id: 'app.components.Users.ModalCreateBody.block-title.roles.description',\n defaultMessage: 'A user can have one or several roles',\n })}\n name=\"roles\"\n required\n >\n <Field.Label>\n {formatMessage({\n id: 'app.components.Users.ModalCreateBody.block-title.roles',\n defaultMessage: \"User's roles\",\n })}\n </Field.Label>\n <MultiSelect\n disabled={disabled}\n onChange={(v) => {\n onChange('roles', v);\n }}\n placeholder={formatMessage({\n id: 'app.components.Select.placeholder',\n defaultMessage: 'Select',\n })}\n startIcon={isLoading ? <Loader /> : undefined}\n value={value.map((v) => v.toString())}\n withTags\n >\n {roles.map((role) => {\n return (\n <MultiSelectOption key={role.id} value={role.id.toString()}>\n {formatMessage({\n id: `global.${role.code}`,\n defaultMessage: role.name,\n })}\n </MultiSelectOption>\n );\n })}\n </MultiSelect>\n <Field.Error />\n <Field.Hint />\n </Field.Root>\n );\n};\n\nconst rotation = keyframes`\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(359deg);\n }\n`;\n\nconst LoadingWrapper = styled.div`\n animation: ${rotation} 2s infinite linear;\n`;\n\nconst Loader = () => (\n <LoadingWrapper>\n <LoadingIcon />\n </LoadingWrapper>\n);\n\nexport { SelectRoles };\n"],"names":["SelectRoles","disabled","isLoading","roles","useAdminRoles","formatMessage","useIntl","value","onChange","error","useField","_jsxs","Field","Root","hint","id","defaultMessage","name","required","_jsx","Label","MultiSelect","v","placeholder","startIcon","Loader","undefined","map","toString","withTags","role","MultiSelectOption","code","Error","Hint","rotation","keyframes","LoadingWrapper","styled","div","LoadingIcon"],"mappings":";;;;;;;;;;AAYA,MAAMA,WAAc,GAAA,CAAC,EAAEC,QAAQ,EAAoB,GAAA;AACjD,IAAA,MAAM,EAAEC,SAAS,EAAEC,KAAK,EAAE,GAAGC,2BAAAA,EAAAA;IAE7B,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAC1B,MAAM,EAAEC,QAAQ,EAAE,EAAEC,QAAQ,EAAEC,KAAK,EAAE,GAAGC,aAAmB,CAAA,OAAA,CAAA;IAE3D,qBACEC,eAAA,CAACC,mBAAMC,IAAI,EAAA;QACTJ,KAAOA,EAAAA,KAAAA;AACPK,QAAAA,IAAAA,EAAMT,aAAc,CAAA;YAClBU,EAAI,EAAA,oEAAA;YACJC,cAAgB,EAAA;AAClB,SAAA,CAAA;QACAC,IAAK,EAAA,OAAA;QACLC,QAAQ,EAAA,IAAA;;AAER,0BAAAC,cAAA,CAACP,mBAAMQ,KAAK,EAAA;0BACTf,aAAc,CAAA;oBACbU,EAAI,EAAA,wDAAA;oBACJC,cAAgB,EAAA;AAClB,iBAAA;;0BAEFG,cAACE,CAAAA,wBAAAA,EAAAA;gBACCpB,QAAUA,EAAAA,QAAAA;AACVO,gBAAAA,QAAAA,EAAU,CAACc,CAAAA,GAAAA;AACTd,oBAAAA,QAAAA,CAAS,OAASc,EAAAA,CAAAA,CAAAA;AACpB,iBAAA;AACAC,gBAAAA,WAAAA,EAAalB,aAAc,CAAA;oBACzBU,EAAI,EAAA,mCAAA;oBACJC,cAAgB,EAAA;AAClB,iBAAA,CAAA;gBACAQ,SAAWtB,EAAAA,SAAAA,iBAAYiB,eAACM,MAAYC,EAAAA,EAAAA,CAAAA,GAAAA,SAAAA;AACpCnB,gBAAAA,KAAAA,EAAOA,MAAMoB,GAAG,CAAC,CAACL,CAAAA,GAAMA,EAAEM,QAAQ,EAAA,CAAA;gBAClCC,QAAQ,EAAA,IAAA;0BAEP1B,KAAMwB,CAAAA,GAAG,CAAC,CAACG,IAAAA,GAAAA;AACV,oBAAA,qBACEX,cAACY,CAAAA,8BAAAA,EAAAA;wBAAgCxB,KAAOuB,EAAAA,IAAAA,CAAKf,EAAE,CAACa,QAAQ,EAAA;kCACrDvB,aAAc,CAAA;AACbU,4BAAAA,EAAAA,EAAI,CAAC,OAAO,EAAEe,IAAKE,CAAAA,IAAI,CAAC,CAAC;AACzBhB,4BAAAA,cAAAA,EAAgBc,KAAKb;AACvB,yBAAA;AAJsBa,qBAAAA,EAAAA,IAAAA,CAAKf,EAAE,CAAA;AAOnC,iBAAA;;AAEF,0BAAAI,cAAA,CAACP,mBAAMqB,KAAK,EAAA,EAAA,CAAA;AACZ,0BAAAd,cAAA,CAACP,mBAAMsB,IAAI,EAAA,EAAA;;;AAGjB;AAEA,MAAMC,QAAAA,GAAWC,gBAAS;;;;;;;AAO1B,CAAC;AAED,MAAMC,cAAAA,GAAiBC,aAAOC,CAAAA,GAAG;AACpB,aAAA,EAAEJ,QAAS,CAAA;AACxB,CAAC;AAED,MAAMV,MAAAA,GAAS,kBACbN,cAACkB,CAAAA,cAAAA,EAAAA;AACC,QAAA,QAAA,gBAAAlB,cAACqB,CAAAA,YAAAA,EAAAA,EAAAA;;;;;"}
|
|
@@ -4,7 +4,7 @@ var jsxRuntime = require('react/jsx-runtime');
|
|
|
4
4
|
require('react');
|
|
5
5
|
var designSystem = require('@strapi/design-system');
|
|
6
6
|
var reactIntl = require('react-intl');
|
|
7
|
-
var
|
|
7
|
+
var styled = require('styled-components');
|
|
8
8
|
var Form = require('../../../../../components/Form.js');
|
|
9
9
|
|
|
10
10
|
const EventsRoot = ({ children })=>{
|
|
@@ -30,7 +30,7 @@ const EventsRoot = ({ children })=>{
|
|
|
30
30
|
});
|
|
31
31
|
};
|
|
32
32
|
// TODO check whether we want to move alternating background colour tables to the design system
|
|
33
|
-
const StyledTable =
|
|
33
|
+
const StyledTable = styled.styled(designSystem.RawTable)`
|
|
34
34
|
tbody tr:nth-child(odd) {
|
|
35
35
|
background: ${({ theme })=>theme.colors.neutral100};
|
|
36
36
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Events.js","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Webhooks/components/Events.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Checkbox,\n Flex,\n RawTable as Table,\n RawTbody as Tbody,\n RawTd as Td,\n RawTh as Th,\n RawThead as Thead,\n RawTr as Tr,\n Typography,\n VisuallyHidden,\n Field,\n CheckboxProps,\n} from '@strapi/design-system';\nimport { MessageDescriptor, useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { useField } from '../../../../../components/Form';\n\n/* -------------------------------------------------------------------------------------------------\n * EventsRoot\n * -----------------------------------------------------------------------------------------------*/\n\ninterface EventsRootProps {\n children: React.ReactNode;\n}\n\nconst EventsRoot = ({ children }: EventsRootProps) => {\n const { formatMessage } = useIntl();\n\n const label = formatMessage({\n id: 'Settings.webhooks.form.events',\n defaultMessage: 'Events',\n });\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <Field.Label aria-hidden>{label}</Field.Label>\n {/* @ts-expect-error – TODO: add colCount & rowCount */}\n <StyledTable aria-label={label}>{children}</StyledTable>\n </Flex>\n );\n};\n\n// TODO check whether we want to move alternating background colour tables to the design system\nconst StyledTable = styled(Table)`\n tbody tr:nth-child(odd) {\n background: ${({ theme }) => theme.colors.neutral100};\n }\n\n thead th span {\n color: ${({ theme }) => theme.colors.neutral500};\n }\n\n td,\n th {\n padding-block-start: ${({ theme }) => theme.spaces[3]};\n padding-block-end: ${({ theme }) => theme.spaces[3]};\n width: 6%;\n vertical-align: middle;\n }\n\n tbody tr td:first-child {\n /**\n * Add padding to the start of the first column to avoid the checkbox appearing\n * too close to the edge of the table\n */\n padding-inline-start: ${({ theme }) => theme.spaces[2]};\n }\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * EventsHeaders\n * -----------------------------------------------------------------------------------------------*/\n\ninterface EventsHeadersProps {\n getHeaders?: typeof getCEHeaders;\n}\n\nconst getCEHeaders = (): MessageDescriptor[] => {\n const headers = [\n { id: 'Settings.webhooks.events.create', defaultMessage: 'Create' },\n { id: 'Settings.webhooks.events.update', defaultMessage: 'Update' },\n { id: 'app.utils.delete', defaultMessage: 'Delete' },\n { id: 'app.utils.publish', defaultMessage: 'Publish' },\n { id: 'app.utils.unpublish', defaultMessage: 'Unpublish' },\n ];\n\n return headers;\n};\n\nconst EventsHeaders = ({ getHeaders = getCEHeaders }: EventsHeadersProps) => {\n const { formatMessage } = useIntl();\n const headers = getHeaders();\n\n return (\n <Thead>\n <Tr>\n <Th>\n <VisuallyHidden>\n {formatMessage({\n id: 'Settings.webhooks.event.select',\n defaultMessage: 'Select event',\n })}\n </VisuallyHidden>\n </Th>\n {headers.map((header) => {\n if (['app.utils.publish', 'app.utils.unpublish'].includes(header?.id ?? '')) {\n return (\n <Th\n key={header.id}\n title={formatMessage({\n id: 'Settings.webhooks.event.publish-tooltip',\n defaultMessage: 'This event only exists for content with draft & publish enabled',\n })}\n >\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage(header)}\n </Typography>\n </Th>\n );\n }\n\n return (\n <Th key={header.id}>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage(header)}\n </Typography>\n </Th>\n );\n })}\n </Tr>\n </Thead>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * EventsBody\n * -----------------------------------------------------------------------------------------------*/\ninterface FormikContextValue {\n events: string[];\n}\n\ninterface EventsBodyProps {\n providedEvents?: Record<string, FormikContextValue['events']>;\n}\n\nconst EventsBody = ({ providedEvents }: EventsBodyProps) => {\n const events = providedEvents || getCEEvents();\n const { value = [], onChange } = useField<string[]>('events');\n\n const inputName = 'events';\n const inputValue = value;\n const disabledEvents: string[] = [];\n\n const formattedValue = inputValue.reduce<Record<string, string[]>>((acc, curr) => {\n const key = curr.split('.')[0];\n\n if (!acc[key]) {\n acc[key] = [];\n }\n acc[key].push(curr);\n\n return acc;\n }, {});\n\n const handleSelect: EventsRowProps['handleSelect'] = (name, value) => {\n const set = new Set(inputValue);\n\n if (value) {\n set.add(name);\n } else {\n set.delete(name);\n }\n\n onChange(inputName, Array.from(set));\n };\n\n const handleSelectAll: EventsRowProps['handleSelectAll'] = (name, value) => {\n const set = new Set(inputValue);\n\n if (value) {\n events[name].forEach((event) => {\n if (!disabledEvents.includes(event)) {\n set.add(event);\n }\n });\n } else {\n events[name].forEach((event) => set.delete(event));\n }\n\n onChange(inputName, Array.from(set));\n };\n\n return (\n <Tbody>\n {Object.entries(events).map(([event, value]) => {\n return (\n <EventsRow\n disabledEvents={disabledEvents}\n key={event}\n name={event}\n events={value}\n inputValue={formattedValue[event]}\n handleSelect={handleSelect}\n handleSelectAll={handleSelectAll}\n />\n );\n })}\n </Tbody>\n );\n};\n\nconst getCEEvents = (): Required<Pick<EventsBodyProps, 'providedEvents'>>['providedEvents'] => {\n const entryEvents: FormikContextValue['events'] = [\n 'entry.create',\n 'entry.update',\n 'entry.delete',\n 'entry.publish',\n 'entry.unpublish',\n ];\n\n return {\n entry: entryEvents,\n media: ['media.create', 'media.update', 'media.delete'],\n };\n};\n\n/* -------------------------------------------------------------------------------------------------\n * EventsRow\n * -----------------------------------------------------------------------------------------------*/\n\ninterface EventsRowProps {\n disabledEvents?: string[];\n events?: string[];\n inputValue?: string[];\n handleSelect: (name: string, value: boolean) => void;\n handleSelectAll: (name: string, value: boolean) => void;\n name: string;\n}\n\nconst EventsRow = ({\n disabledEvents = [],\n name,\n events = [],\n inputValue = [],\n handleSelect,\n handleSelectAll,\n}: EventsRowProps) => {\n const { formatMessage } = useIntl();\n const enabledCheckboxes = events.filter((event) => !disabledEvents.includes(event));\n\n const hasSomeCheckboxSelected = inputValue.length > 0;\n const areAllCheckboxesSelected = inputValue.length === enabledCheckboxes.length;\n\n const onChangeAll: CheckboxProps['onCheckedChange'] = () => {\n const valueToSet = !areAllCheckboxesSelected;\n\n handleSelectAll(name, valueToSet);\n };\n\n const targetColumns = 5;\n\n return (\n <Tr>\n <Td>\n <Checkbox\n aria-label={formatMessage({\n id: 'global.select-all-entries',\n defaultMessage: 'Select all entries',\n })}\n name={name}\n checked={\n hasSomeCheckboxSelected && !areAllCheckboxesSelected\n ? 'indeterminate'\n : areAllCheckboxesSelected\n }\n onCheckedChange={onChangeAll}\n >\n {removeHyphensAndTitleCase(name)}\n </Checkbox>\n </Td>\n\n {events.map((event) => {\n return (\n <Td key={event} textAlign=\"center\">\n <Flex width=\"100%\" justifyContent=\"center\">\n <Checkbox\n disabled={disabledEvents.includes(event)}\n aria-label={event}\n name={event}\n checked={inputValue.includes(event)}\n onCheckedChange={(value) => handleSelect(event, !!value)}\n />\n </Flex>\n </Td>\n );\n })}\n {events.length < targetColumns && <Td colSpan={targetColumns - events.length} />}\n </Tr>\n );\n};\n\n/**\n * Converts a string to title case and removes hyphens.\n */\nconst removeHyphensAndTitleCase = (str: string): string =>\n str\n .replace(/-/g, ' ')\n .split(' ')\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())\n .join(' ');\n\nconst Events = { Root: EventsRoot, Headers: EventsHeaders, Body: EventsBody, Row: EventsRow };\n\nexport { Events };\nexport type { EventsRowProps, EventsHeadersProps, EventsRootProps, EventsBodyProps };\n"],"names":["EventsRoot","children","formatMessage","useIntl","label","id","defaultMessage","_jsxs","Flex","direction","alignItems","gap","_jsx","Field","Label","aria-hidden","StyledTable","aria-label","styled","Table","theme","colors","neutral100","neutral500","spaces","getCEHeaders","headers","EventsHeaders","getHeaders","Thead","Tr","Th","VisuallyHidden","map","header","includes","title","Typography","variant","textColor","EventsBody","providedEvents","events","getCEEvents","value","onChange","useField","inputName","inputValue","disabledEvents","formattedValue","reduce","acc","curr","key","split","push","handleSelect","name","set","Set","add","delete","Array","from","handleSelectAll","forEach","event","Tbody","Object","entries","EventsRow","entryEvents","entry","media","enabledCheckboxes","filter","hasSomeCheckboxSelected","length","areAllCheckboxesSelected","onChangeAll","valueToSet","targetColumns","Td","Checkbox","checked","onCheckedChange","removeHyphensAndTitleCase","textAlign","width","justifyContent","disabled","colSpan","str","replace","word","charAt","toUpperCase","slice","toLowerCase","join","Events","Root","Headers","Body","Row"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Events.js","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Webhooks/components/Events.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Checkbox,\n Flex,\n RawTable as Table,\n RawTbody as Tbody,\n RawTd as Td,\n RawTh as Th,\n RawThead as Thead,\n RawTr as Tr,\n Typography,\n VisuallyHidden,\n Field,\n CheckboxProps,\n} from '@strapi/design-system';\nimport { MessageDescriptor, useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { useField } from '../../../../../components/Form';\n\n/* -------------------------------------------------------------------------------------------------\n * EventsRoot\n * -----------------------------------------------------------------------------------------------*/\n\ninterface EventsRootProps {\n children: React.ReactNode;\n}\n\nconst EventsRoot = ({ children }: EventsRootProps) => {\n const { formatMessage } = useIntl();\n\n const label = formatMessage({\n id: 'Settings.webhooks.form.events',\n defaultMessage: 'Events',\n });\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <Field.Label aria-hidden>{label}</Field.Label>\n {/* @ts-expect-error – TODO: add colCount & rowCount */}\n <StyledTable aria-label={label}>{children}</StyledTable>\n </Flex>\n );\n};\n\n// TODO check whether we want to move alternating background colour tables to the design system\nconst StyledTable = styled(Table)`\n tbody tr:nth-child(odd) {\n background: ${({ theme }) => theme.colors.neutral100};\n }\n\n thead th span {\n color: ${({ theme }) => theme.colors.neutral500};\n }\n\n td,\n th {\n padding-block-start: ${({ theme }) => theme.spaces[3]};\n padding-block-end: ${({ theme }) => theme.spaces[3]};\n width: 6%;\n vertical-align: middle;\n }\n\n tbody tr td:first-child {\n /**\n * Add padding to the start of the first column to avoid the checkbox appearing\n * too close to the edge of the table\n */\n padding-inline-start: ${({ theme }) => theme.spaces[2]};\n }\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * EventsHeaders\n * -----------------------------------------------------------------------------------------------*/\n\ninterface EventsHeadersProps {\n getHeaders?: typeof getCEHeaders;\n}\n\nconst getCEHeaders = (): MessageDescriptor[] => {\n const headers = [\n { id: 'Settings.webhooks.events.create', defaultMessage: 'Create' },\n { id: 'Settings.webhooks.events.update', defaultMessage: 'Update' },\n { id: 'app.utils.delete', defaultMessage: 'Delete' },\n { id: 'app.utils.publish', defaultMessage: 'Publish' },\n { id: 'app.utils.unpublish', defaultMessage: 'Unpublish' },\n ];\n\n return headers;\n};\n\nconst EventsHeaders = ({ getHeaders = getCEHeaders }: EventsHeadersProps) => {\n const { formatMessage } = useIntl();\n const headers = getHeaders();\n\n return (\n <Thead>\n <Tr>\n <Th>\n <VisuallyHidden>\n {formatMessage({\n id: 'Settings.webhooks.event.select',\n defaultMessage: 'Select event',\n })}\n </VisuallyHidden>\n </Th>\n {headers.map((header) => {\n if (['app.utils.publish', 'app.utils.unpublish'].includes(header?.id ?? '')) {\n return (\n <Th\n key={header.id}\n title={formatMessage({\n id: 'Settings.webhooks.event.publish-tooltip',\n defaultMessage: 'This event only exists for content with draft & publish enabled',\n })}\n >\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage(header)}\n </Typography>\n </Th>\n );\n }\n\n return (\n <Th key={header.id}>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage(header)}\n </Typography>\n </Th>\n );\n })}\n </Tr>\n </Thead>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * EventsBody\n * -----------------------------------------------------------------------------------------------*/\ninterface FormikContextValue {\n events: string[];\n}\n\ninterface EventsBodyProps {\n providedEvents?: Record<string, FormikContextValue['events']>;\n}\n\nconst EventsBody = ({ providedEvents }: EventsBodyProps) => {\n const events = providedEvents || getCEEvents();\n const { value = [], onChange } = useField<string[]>('events');\n\n const inputName = 'events';\n const inputValue = value;\n const disabledEvents: string[] = [];\n\n const formattedValue = inputValue.reduce<Record<string, string[]>>((acc, curr) => {\n const key = curr.split('.')[0];\n\n if (!acc[key]) {\n acc[key] = [];\n }\n acc[key].push(curr);\n\n return acc;\n }, {});\n\n const handleSelect: EventsRowProps['handleSelect'] = (name, value) => {\n const set = new Set(inputValue);\n\n if (value) {\n set.add(name);\n } else {\n set.delete(name);\n }\n\n onChange(inputName, Array.from(set));\n };\n\n const handleSelectAll: EventsRowProps['handleSelectAll'] = (name, value) => {\n const set = new Set(inputValue);\n\n if (value) {\n events[name].forEach((event) => {\n if (!disabledEvents.includes(event)) {\n set.add(event);\n }\n });\n } else {\n events[name].forEach((event) => set.delete(event));\n }\n\n onChange(inputName, Array.from(set));\n };\n\n return (\n <Tbody>\n {Object.entries(events).map(([event, value]) => {\n return (\n <EventsRow\n disabledEvents={disabledEvents}\n key={event}\n name={event}\n events={value}\n inputValue={formattedValue[event]}\n handleSelect={handleSelect}\n handleSelectAll={handleSelectAll}\n />\n );\n })}\n </Tbody>\n );\n};\n\nconst getCEEvents = (): Required<Pick<EventsBodyProps, 'providedEvents'>>['providedEvents'] => {\n const entryEvents: FormikContextValue['events'] = [\n 'entry.create',\n 'entry.update',\n 'entry.delete',\n 'entry.publish',\n 'entry.unpublish',\n ];\n\n return {\n entry: entryEvents,\n media: ['media.create', 'media.update', 'media.delete'],\n };\n};\n\n/* -------------------------------------------------------------------------------------------------\n * EventsRow\n * -----------------------------------------------------------------------------------------------*/\n\ninterface EventsRowProps {\n disabledEvents?: string[];\n events?: string[];\n inputValue?: string[];\n handleSelect: (name: string, value: boolean) => void;\n handleSelectAll: (name: string, value: boolean) => void;\n name: string;\n}\n\nconst EventsRow = ({\n disabledEvents = [],\n name,\n events = [],\n inputValue = [],\n handleSelect,\n handleSelectAll,\n}: EventsRowProps) => {\n const { formatMessage } = useIntl();\n const enabledCheckboxes = events.filter((event) => !disabledEvents.includes(event));\n\n const hasSomeCheckboxSelected = inputValue.length > 0;\n const areAllCheckboxesSelected = inputValue.length === enabledCheckboxes.length;\n\n const onChangeAll: CheckboxProps['onCheckedChange'] = () => {\n const valueToSet = !areAllCheckboxesSelected;\n\n handleSelectAll(name, valueToSet);\n };\n\n const targetColumns = 5;\n\n return (\n <Tr>\n <Td>\n <Checkbox\n aria-label={formatMessage({\n id: 'global.select-all-entries',\n defaultMessage: 'Select all entries',\n })}\n name={name}\n checked={\n hasSomeCheckboxSelected && !areAllCheckboxesSelected\n ? 'indeterminate'\n : areAllCheckboxesSelected\n }\n onCheckedChange={onChangeAll}\n >\n {removeHyphensAndTitleCase(name)}\n </Checkbox>\n </Td>\n\n {events.map((event) => {\n return (\n <Td key={event} textAlign=\"center\">\n <Flex width=\"100%\" justifyContent=\"center\">\n <Checkbox\n disabled={disabledEvents.includes(event)}\n aria-label={event}\n name={event}\n checked={inputValue.includes(event)}\n onCheckedChange={(value) => handleSelect(event, !!value)}\n />\n </Flex>\n </Td>\n );\n })}\n {events.length < targetColumns && <Td colSpan={targetColumns - events.length} />}\n </Tr>\n );\n};\n\n/**\n * Converts a string to title case and removes hyphens.\n */\nconst removeHyphensAndTitleCase = (str: string): string =>\n str\n .replace(/-/g, ' ')\n .split(' ')\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())\n .join(' ');\n\nconst Events = { Root: EventsRoot, Headers: EventsHeaders, Body: EventsBody, Row: EventsRow };\n\nexport { Events };\nexport type { EventsRowProps, EventsHeadersProps, EventsRootProps, EventsBodyProps };\n"],"names":["EventsRoot","children","formatMessage","useIntl","label","id","defaultMessage","_jsxs","Flex","direction","alignItems","gap","_jsx","Field","Label","aria-hidden","StyledTable","aria-label","styled","Table","theme","colors","neutral100","neutral500","spaces","getCEHeaders","headers","EventsHeaders","getHeaders","Thead","Tr","Th","VisuallyHidden","map","header","includes","title","Typography","variant","textColor","EventsBody","providedEvents","events","getCEEvents","value","onChange","useField","inputName","inputValue","disabledEvents","formattedValue","reduce","acc","curr","key","split","push","handleSelect","name","set","Set","add","delete","Array","from","handleSelectAll","forEach","event","Tbody","Object","entries","EventsRow","entryEvents","entry","media","enabledCheckboxes","filter","hasSomeCheckboxSelected","length","areAllCheckboxesSelected","onChangeAll","valueToSet","targetColumns","Td","Checkbox","checked","onCheckedChange","removeHyphensAndTitleCase","textAlign","width","justifyContent","disabled","colSpan","str","replace","word","charAt","toUpperCase","slice","toLowerCase","join","Events","Root","Headers","Body","Row"],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@ var React = require('react');
|
|
|
5
5
|
var designSystem = require('@strapi/design-system');
|
|
6
6
|
var icons = require('@strapi/icons');
|
|
7
7
|
var reactIntl = require('react-intl');
|
|
8
|
-
var
|
|
8
|
+
var styled = require('styled-components');
|
|
9
9
|
var Form = require('../../../../../components/Form.js');
|
|
10
10
|
var String = require('../../../../../components/FormInputs/String.js');
|
|
11
11
|
|
|
@@ -28,7 +28,7 @@ function _interopNamespaceDefault(e) {
|
|
|
28
28
|
|
|
29
29
|
var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
|
|
30
30
|
|
|
31
|
-
const AddHeaderButton =
|
|
31
|
+
const AddHeaderButton = styled.styled(designSystem.TextButton)`
|
|
32
32
|
cursor: pointer;
|
|
33
33
|
`;
|
|
34
34
|
const HeadersInput = ()=>{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HeadersInput.js","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Box,\n Flex,\n Grid,\n TextButton,\n ComboboxOption,\n Combobox,\n ComboboxProps,\n IconButton,\n Field as DSField,\n} from '@strapi/design-system';\nimport { Minus, Plus } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { useField, useForm } from '../../../../../components/Form';\nimport { StringInput } from '../../../../../components/FormInputs/String';\n\nconst AddHeaderButton = styled(TextButton)`\n cursor: pointer;\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * HeadersInput\n * -----------------------------------------------------------------------------------------------*/\n\ninterface Header {\n key: HTTPHeaders;\n value: string;\n}\n\nconst HeadersInput = () => {\n const { formatMessage } = useIntl();\n\n const addFieldRow = useForm('HeadersInput', (state) => state.addFieldRow);\n const removeFieldRow = useForm('HeadersInput', (state) => state.removeFieldRow);\n const setFieldValue = useForm('HeadersInput', (state) => state.onChange);\n const { value = [] } = useField<Header[]>('headers');\n\n const removeRow = (index: number) => {\n // if we are removing the last row, simply clear it\n if (value.length === 1) {\n setFieldValue('headers', [{ key: '', value: '' }]);\n } else {\n removeFieldRow('headers', index);\n }\n };\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <DSField.Label>\n {formatMessage({\n id: 'Settings.webhooks.form.headers',\n defaultMessage: 'Headers',\n })}\n </DSField.Label>\n <Box padding={8} background=\"neutral100\" hasRadius>\n {value.map((val, index) => {\n return (\n <Grid.Root key={`${index}-${JSON.stringify(val.key)}`} gap={4} padding={2}>\n <Grid.Item col={6} direction=\"column\" alignItems=\"stretch\">\n <HeaderCombobox\n name={`headers.${index}.key`}\n aria-label={`row ${index + 1} key`}\n label={formatMessage({\n id: 'Settings.webhooks.key',\n defaultMessage: 'Key',\n })}\n />\n </Grid.Item>\n <Grid.Item col={6} direction=\"column\" alignItems=\"stretch\">\n <Flex alignItems=\"flex-end\" gap={2}>\n <Box style={{ flex: 1 }}>\n <StringInput\n name={`headers.${index}.value`}\n aria-label={`row ${index + 1} value`}\n label={formatMessage({\n id: 'Settings.webhooks.value',\n defaultMessage: 'Value',\n })}\n type=\"string\"\n />\n </Box>\n <IconButton\n width=\"4rem\"\n height=\"4rem\"\n onClick={() => removeRow(index)}\n color=\"primary600\"\n label={formatMessage(\n {\n id: 'Settings.webhooks.headers.remove',\n defaultMessage: 'Remove header row {number}',\n },\n { number: index + 1 }\n )}\n type=\"button\"\n >\n <Minus width=\"0.8rem\" />\n </IconButton>\n </Flex>\n </Grid.Item>\n </Grid.Root>\n );\n })}\n <Box paddingTop={4}>\n <AddHeaderButton\n type=\"button\"\n onClick={() => {\n addFieldRow('headers', { key: '', value: '' });\n }}\n startIcon={<Plus />}\n >\n {formatMessage({\n id: 'Settings.webhooks.create.header',\n defaultMessage: 'Create new header',\n })}\n </AddHeaderButton>\n </Box>\n </Box>\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * HeaderCombobox\n * -----------------------------------------------------------------------------------------------*/\n\ninterface HeaderComboboxProps extends Omit<ComboboxProps, 'children' | 'name'> {\n name: string;\n label: string;\n}\n\nconst HeaderCombobox = ({ name, label, ...restProps }: HeaderComboboxProps) => {\n const [options, setOptions] = React.useState<HTTPHeaders[]>([...HTTP_HEADERS]);\n const { value: headers } = useField<Header[]>('headers');\n const field = useField(name);\n\n React.useEffect(() => {\n const headerOptions = HTTP_HEADERS.filter(\n (key) => !headers?.some((header) => header.key !== field.value && header.key === key)\n );\n\n setOptions(headerOptions);\n }, [headers, field.value]);\n\n const handleChange: ComboboxProps['onChange'] = (value) => {\n field.onChange(name, value);\n };\n\n const handleCreateOption = (value?: string) => {\n setOptions((prev) => [...prev, value as HTTPHeaders]);\n\n if (value) {\n handleChange(value);\n }\n };\n\n return (\n <DSField.Root name={name} error={field.error}>\n <DSField.Label>{label}</DSField.Label>\n <Combobox\n {...restProps}\n onClear={() => handleChange('')}\n onChange={handleChange}\n onCreateOption={handleCreateOption}\n placeholder=\"\"\n creatable\n value={field.value}\n >\n {options.map((key) => (\n <ComboboxOption value={key} key={key}>\n {key}\n </ComboboxOption>\n ))}\n </Combobox>\n <DSField.Error />\n </DSField.Root>\n );\n};\n\nconst HTTP_HEADERS = [\n 'A-IM',\n 'Accept',\n 'Accept-Charset',\n 'Accept-Encoding',\n 'Accept-Language',\n 'Accept-Datetime',\n 'Access-Control-Request-Method',\n 'Access-Control-Request-Headers',\n 'Authorization',\n 'Cache-Control',\n 'Connection',\n 'Content-Length',\n 'Content-Type',\n 'Cookie',\n 'Date',\n 'Expect',\n 'Forwarded',\n 'From',\n 'Host',\n 'If-Match',\n 'If-Modified-Since',\n 'If-None-Match',\n 'If-Range',\n 'If-Unmodified-Since',\n 'Max-Forwards',\n 'Origin',\n 'Pragma',\n 'Proxy-Authorization',\n 'Range',\n 'Referer',\n 'TE',\n 'User-Agent',\n 'Upgrade',\n 'Via',\n 'Warning',\n] as const;\n\ntype HTTPHeaders = (typeof HTTP_HEADERS)[number];\n\nexport { HeadersInput };\n"],"names":["AddHeaderButton","styled","TextButton","HeadersInput","formatMessage","useIntl","addFieldRow","useForm","state","removeFieldRow","setFieldValue","onChange","value","useField","removeRow","index","length","key","_jsxs","Flex","direction","alignItems","gap","_jsx","DSField","Label","id","defaultMessage","Box","padding","background","hasRadius","map","val","Grid","Root","Item","col","HeaderCombobox","name","aria-label","label","style","flex","StringInput","type","IconButton","width","height","onClick","color","number","Minus","JSON","stringify","paddingTop","startIcon","Plus","restProps","options","setOptions","React","useState","HTTP_HEADERS","headers","field","useEffect","headerOptions","filter","some","header","handleChange","handleCreateOption","prev","error","Combobox","onClear","onCreateOption","placeholder","creatable","ComboboxOption","Error"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"HeadersInput.js","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Box,\n Flex,\n Grid,\n TextButton,\n ComboboxOption,\n Combobox,\n ComboboxProps,\n IconButton,\n Field as DSField,\n} from '@strapi/design-system';\nimport { Minus, Plus } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { useField, useForm } from '../../../../../components/Form';\nimport { StringInput } from '../../../../../components/FormInputs/String';\n\nconst AddHeaderButton = styled(TextButton)`\n cursor: pointer;\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * HeadersInput\n * -----------------------------------------------------------------------------------------------*/\n\ninterface Header {\n key: HTTPHeaders;\n value: string;\n}\n\nconst HeadersInput = () => {\n const { formatMessage } = useIntl();\n\n const addFieldRow = useForm('HeadersInput', (state) => state.addFieldRow);\n const removeFieldRow = useForm('HeadersInput', (state) => state.removeFieldRow);\n const setFieldValue = useForm('HeadersInput', (state) => state.onChange);\n const { value = [] } = useField<Header[]>('headers');\n\n const removeRow = (index: number) => {\n // if we are removing the last row, simply clear it\n if (value.length === 1) {\n setFieldValue('headers', [{ key: '', value: '' }]);\n } else {\n removeFieldRow('headers', index);\n }\n };\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <DSField.Label>\n {formatMessage({\n id: 'Settings.webhooks.form.headers',\n defaultMessage: 'Headers',\n })}\n </DSField.Label>\n <Box padding={8} background=\"neutral100\" hasRadius>\n {value.map((val, index) => {\n return (\n <Grid.Root key={`${index}-${JSON.stringify(val.key)}`} gap={4} padding={2}>\n <Grid.Item col={6} direction=\"column\" alignItems=\"stretch\">\n <HeaderCombobox\n name={`headers.${index}.key`}\n aria-label={`row ${index + 1} key`}\n label={formatMessage({\n id: 'Settings.webhooks.key',\n defaultMessage: 'Key',\n })}\n />\n </Grid.Item>\n <Grid.Item col={6} direction=\"column\" alignItems=\"stretch\">\n <Flex alignItems=\"flex-end\" gap={2}>\n <Box style={{ flex: 1 }}>\n <StringInput\n name={`headers.${index}.value`}\n aria-label={`row ${index + 1} value`}\n label={formatMessage({\n id: 'Settings.webhooks.value',\n defaultMessage: 'Value',\n })}\n type=\"string\"\n />\n </Box>\n <IconButton\n width=\"4rem\"\n height=\"4rem\"\n onClick={() => removeRow(index)}\n color=\"primary600\"\n label={formatMessage(\n {\n id: 'Settings.webhooks.headers.remove',\n defaultMessage: 'Remove header row {number}',\n },\n { number: index + 1 }\n )}\n type=\"button\"\n >\n <Minus width=\"0.8rem\" />\n </IconButton>\n </Flex>\n </Grid.Item>\n </Grid.Root>\n );\n })}\n <Box paddingTop={4}>\n <AddHeaderButton\n type=\"button\"\n onClick={() => {\n addFieldRow('headers', { key: '', value: '' });\n }}\n startIcon={<Plus />}\n >\n {formatMessage({\n id: 'Settings.webhooks.create.header',\n defaultMessage: 'Create new header',\n })}\n </AddHeaderButton>\n </Box>\n </Box>\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * HeaderCombobox\n * -----------------------------------------------------------------------------------------------*/\n\ninterface HeaderComboboxProps extends Omit<ComboboxProps, 'children' | 'name'> {\n name: string;\n label: string;\n}\n\nconst HeaderCombobox = ({ name, label, ...restProps }: HeaderComboboxProps) => {\n const [options, setOptions] = React.useState<HTTPHeaders[]>([...HTTP_HEADERS]);\n const { value: headers } = useField<Header[]>('headers');\n const field = useField(name);\n\n React.useEffect(() => {\n const headerOptions = HTTP_HEADERS.filter(\n (key) => !headers?.some((header) => header.key !== field.value && header.key === key)\n );\n\n setOptions(headerOptions);\n }, [headers, field.value]);\n\n const handleChange: ComboboxProps['onChange'] = (value) => {\n field.onChange(name, value);\n };\n\n const handleCreateOption = (value?: string) => {\n setOptions((prev) => [...prev, value as HTTPHeaders]);\n\n if (value) {\n handleChange(value);\n }\n };\n\n return (\n <DSField.Root name={name} error={field.error}>\n <DSField.Label>{label}</DSField.Label>\n <Combobox\n {...restProps}\n onClear={() => handleChange('')}\n onChange={handleChange}\n onCreateOption={handleCreateOption}\n placeholder=\"\"\n creatable\n value={field.value}\n >\n {options.map((key) => (\n <ComboboxOption value={key} key={key}>\n {key}\n </ComboboxOption>\n ))}\n </Combobox>\n <DSField.Error />\n </DSField.Root>\n );\n};\n\nconst HTTP_HEADERS = [\n 'A-IM',\n 'Accept',\n 'Accept-Charset',\n 'Accept-Encoding',\n 'Accept-Language',\n 'Accept-Datetime',\n 'Access-Control-Request-Method',\n 'Access-Control-Request-Headers',\n 'Authorization',\n 'Cache-Control',\n 'Connection',\n 'Content-Length',\n 'Content-Type',\n 'Cookie',\n 'Date',\n 'Expect',\n 'Forwarded',\n 'From',\n 'Host',\n 'If-Match',\n 'If-Modified-Since',\n 'If-None-Match',\n 'If-Range',\n 'If-Unmodified-Since',\n 'Max-Forwards',\n 'Origin',\n 'Pragma',\n 'Proxy-Authorization',\n 'Range',\n 'Referer',\n 'TE',\n 'User-Agent',\n 'Upgrade',\n 'Via',\n 'Warning',\n] as const;\n\ntype HTTPHeaders = (typeof HTTP_HEADERS)[number];\n\nexport { HeadersInput };\n"],"names":["AddHeaderButton","styled","TextButton","HeadersInput","formatMessage","useIntl","addFieldRow","useForm","state","removeFieldRow","setFieldValue","onChange","value","useField","removeRow","index","length","key","_jsxs","Flex","direction","alignItems","gap","_jsx","DSField","Label","id","defaultMessage","Box","padding","background","hasRadius","map","val","Grid","Root","Item","col","HeaderCombobox","name","aria-label","label","style","flex","StringInput","type","IconButton","width","height","onClick","color","number","Minus","JSON","stringify","paddingTop","startIcon","Plus","restProps","options","setOptions","React","useState","HTTP_HEADERS","headers","field","useEffect","headerOptions","filter","some","header","handleChange","handleCreateOption","prev","error","Combobox","onClear","onCreateOption","placeholder","creatable","ComboboxOption","Error"],"mappings":"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"}
|
|
@@ -17,6 +17,7 @@ const renderAdmin = async (mountNode, { plugins, customisations, features })=>{
|
|
|
17
17
|
* To ensure that the backendURL is always set, we use the window.location.origin as a fallback.
|
|
18
18
|
*/ backendURL: urls.createAbsoluteUrl(process.env.STRAPI_ADMIN_BACKEND_URL),
|
|
19
19
|
isEE: false,
|
|
20
|
+
isTrial: false,
|
|
20
21
|
telemetryDisabled: process.env.STRAPI_TELEMETRY_DISABLED === 'true',
|
|
21
22
|
future: {
|
|
22
23
|
isEnabled: (name)=>{
|
|
@@ -41,8 +42,9 @@ const renderAdmin = async (mountNode, { plugins, customisations, features })=>{
|
|
|
41
42
|
};
|
|
42
43
|
const { get } = getFetchClient.getFetchClient();
|
|
43
44
|
try {
|
|
44
|
-
const { data: { data: { isEE, features, flags } } } = await get('/admin/project-type');
|
|
45
|
+
const { data: { data: { isEE, isTrial, features, flags } } } = await get('/admin/project-type');
|
|
45
46
|
window.strapi.isEE = isEE;
|
|
47
|
+
window.strapi.isTrialLicense = isTrial;
|
|
46
48
|
window.strapi.flags = flags;
|
|
47
49
|
window.strapi.features = {
|
|
48
50
|
...window.strapi.features,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.js","sources":["../../../../admin/src/render.ts"],"sourcesContent":["/* eslint-disable no-undef */\nimport { createRoot } from 'react-dom/client';\n\nimport { StrapiApp, StrapiAppConstructorArgs } from './StrapiApp';\nimport { getFetchClient } from './utils/getFetchClient';\nimport { createAbsoluteUrl } from './utils/urls';\n\nimport type { Modules } from '@strapi/types';\n\ninterface RenderAdminArgs {\n customisations: {\n register?: (app: StrapiApp) => Promise<void> | void;\n bootstrap?: (app: StrapiApp) => Promise<void> | void;\n config?: StrapiAppConstructorArgs['config'];\n };\n plugins: StrapiAppConstructorArgs['appPlugins'];\n features?: Modules.Features.FeaturesService['config'];\n}\n\nconst renderAdmin = async (\n mountNode: HTMLElement | null,\n { plugins, customisations, features }: RenderAdminArgs\n) => {\n if (!mountNode) {\n throw new Error('[@strapi/admin]: Could not find the root element to mount the admin app');\n }\n\n window.strapi = {\n /**\n * This ENV variable is passed from the strapi instance, by default no url is set\n * in the config and therefore the instance returns you an empty string so URLs are relative.\n *\n * To ensure that the backendURL is always set, we use the window.location.origin as a fallback.\n */\n backendURL: createAbsoluteUrl(process.env.STRAPI_ADMIN_BACKEND_URL),\n isEE: false,\n telemetryDisabled: process.env.STRAPI_TELEMETRY_DISABLED === 'true',\n future: {\n isEnabled: (name: keyof NonNullable<Modules.Features.FeaturesConfig['future']>) => {\n return features?.future?.[name] === true;\n },\n },\n // @ts-expect-error – there's pollution from the global scope of Node.\n features: {\n SSO: 'sso',\n AUDIT_LOGS: 'audit-logs',\n REVIEW_WORKFLOWS: 'review-workflows',\n /**\n * If we don't get the license then we know it's not EE\n * so no feature is enabled.\n */\n isEnabled: () => false,\n },\n projectType: 'Community',\n flags: {\n nps: false,\n promoteEE: true,\n },\n };\n\n const { get } = getFetchClient();\n\n interface ProjectType extends Pick<Window['strapi'], 'flags'> {\n isEE: boolean;\n features: {\n name: string;\n }[];\n }\n\n try {\n const {\n data: {\n data: { isEE, features, flags },\n },\n } = await get<{ data: ProjectType }>('/admin/project-type');\n\n window.strapi.isEE = isEE;\n window.strapi.flags = flags;\n window.strapi.features = {\n ...window.strapi.features,\n isEnabled: (featureName) => features.some((feature) => feature.name === featureName),\n };\n window.strapi.projectType = isEE ? 'Enterprise' : 'Community';\n } catch (err) {\n /**\n * If this fails, we simply don't activate any EE features.\n * Should we warn clearer in the UI?\n */\n console.error(err);\n }\n\n const app = new StrapiApp({\n config: customisations?.config,\n appPlugins: plugins,\n });\n\n await app.register(customisations?.register);\n await app.bootstrap(customisations?.bootstrap);\n await app.loadTrads(customisations?.config?.translations);\n\n createRoot(mountNode).render(app.render());\n\n if (\n typeof module !== 'undefined' &&\n module &&\n 'hot' in module &&\n typeof module.hot === 'object' &&\n module.hot !== null &&\n 'accept' in module.hot &&\n typeof module.hot.accept === 'function'\n ) {\n module.hot.accept();\n }\n\n if (typeof import.meta.hot?.accept === 'function') {\n import.meta.hot.accept();\n }\n};\n\nexport { renderAdmin };\nexport type { RenderAdminArgs };\n"],"names":["renderAdmin","mountNode","plugins","customisations","features","Error","window","strapi","backendURL","createAbsoluteUrl","process","env","STRAPI_ADMIN_BACKEND_URL","isEE","telemetryDisabled","STRAPI_TELEMETRY_DISABLED","future","isEnabled","name","SSO","AUDIT_LOGS","REVIEW_WORKFLOWS","projectType","flags","nps","promoteEE","get","getFetchClient","data","featureName","some","feature","err","console","error","app","StrapiApp","config","appPlugins","register","bootstrap","loadTrads","translations","createRoot","render","module","hot","accept"],"mappings":";;;;;;;AAmBMA,MAAAA,WAAAA,GAAc,OAClBC,SACA,EAAA,EAAEC,OAAO,EAAEC,cAAc,EAAEC,QAAQ,EAAmB,GAAA;AAEtD,IAAA,IAAI,CAACH,SAAW,EAAA;AACd,QAAA,MAAM,IAAII,KAAM,CAAA,yEAAA,CAAA;AAClB;AAEAC,IAAAA,MAAAA,CAAOC,MAAM,GAAG;AACd;;;;;AAKC,QACDC,UAAYC,EAAAA,sBAAAA,CAAkBC,OAAQC,CAAAA,GAAG,CAACC,wBAAwB,CAAA;QAClEC,IAAM,EAAA,KAAA;
|
|
1
|
+
{"version":3,"file":"render.js","sources":["../../../../admin/src/render.ts"],"sourcesContent":["/* eslint-disable no-undef */\nimport { createRoot } from 'react-dom/client';\n\nimport { StrapiApp, StrapiAppConstructorArgs } from './StrapiApp';\nimport { getFetchClient } from './utils/getFetchClient';\nimport { createAbsoluteUrl } from './utils/urls';\n\nimport type { Modules } from '@strapi/types';\n\ninterface RenderAdminArgs {\n customisations: {\n register?: (app: StrapiApp) => Promise<void> | void;\n bootstrap?: (app: StrapiApp) => Promise<void> | void;\n config?: StrapiAppConstructorArgs['config'];\n };\n plugins: StrapiAppConstructorArgs['appPlugins'];\n features?: Modules.Features.FeaturesService['config'];\n}\n\nconst renderAdmin = async (\n mountNode: HTMLElement | null,\n { plugins, customisations, features }: RenderAdminArgs\n) => {\n if (!mountNode) {\n throw new Error('[@strapi/admin]: Could not find the root element to mount the admin app');\n }\n\n window.strapi = {\n /**\n * This ENV variable is passed from the strapi instance, by default no url is set\n * in the config and therefore the instance returns you an empty string so URLs are relative.\n *\n * To ensure that the backendURL is always set, we use the window.location.origin as a fallback.\n */\n backendURL: createAbsoluteUrl(process.env.STRAPI_ADMIN_BACKEND_URL),\n isEE: false,\n isTrial: false,\n telemetryDisabled: process.env.STRAPI_TELEMETRY_DISABLED === 'true',\n future: {\n isEnabled: (name: keyof NonNullable<Modules.Features.FeaturesConfig['future']>) => {\n return features?.future?.[name] === true;\n },\n },\n // @ts-expect-error – there's pollution from the global scope of Node.\n features: {\n SSO: 'sso',\n AUDIT_LOGS: 'audit-logs',\n REVIEW_WORKFLOWS: 'review-workflows',\n /**\n * If we don't get the license then we know it's not EE\n * so no feature is enabled.\n */\n isEnabled: () => false,\n },\n projectType: 'Community',\n flags: {\n nps: false,\n promoteEE: true,\n },\n };\n\n const { get } = getFetchClient();\n\n interface ProjectType extends Pick<Window['strapi'], 'flags'> {\n isEE: boolean;\n isTrial: boolean;\n features: {\n name: string;\n }[];\n }\n\n try {\n const {\n data: {\n data: { isEE, isTrial, features, flags },\n },\n } = await get<{ data: ProjectType }>('/admin/project-type');\n\n window.strapi.isEE = isEE;\n window.strapi.isTrialLicense = isTrial;\n window.strapi.flags = flags;\n window.strapi.features = {\n ...window.strapi.features,\n isEnabled: (featureName) => features.some((feature) => feature.name === featureName),\n };\n window.strapi.projectType = isEE ? 'Enterprise' : 'Community';\n } catch (err) {\n /**\n * If this fails, we simply don't activate any EE features.\n * Should we warn clearer in the UI?\n */\n console.error(err);\n }\n\n const app = new StrapiApp({\n config: customisations?.config,\n appPlugins: plugins,\n });\n\n await app.register(customisations?.register);\n await app.bootstrap(customisations?.bootstrap);\n await app.loadTrads(customisations?.config?.translations);\n\n createRoot(mountNode).render(app.render());\n\n if (\n typeof module !== 'undefined' &&\n module &&\n 'hot' in module &&\n typeof module.hot === 'object' &&\n module.hot !== null &&\n 'accept' in module.hot &&\n typeof module.hot.accept === 'function'\n ) {\n module.hot.accept();\n }\n\n if (typeof import.meta.hot?.accept === 'function') {\n import.meta.hot.accept();\n }\n};\n\nexport { renderAdmin };\nexport type { RenderAdminArgs };\n"],"names":["renderAdmin","mountNode","plugins","customisations","features","Error","window","strapi","backendURL","createAbsoluteUrl","process","env","STRAPI_ADMIN_BACKEND_URL","isEE","isTrial","telemetryDisabled","STRAPI_TELEMETRY_DISABLED","future","isEnabled","name","SSO","AUDIT_LOGS","REVIEW_WORKFLOWS","projectType","flags","nps","promoteEE","get","getFetchClient","data","isTrialLicense","featureName","some","feature","err","console","error","app","StrapiApp","config","appPlugins","register","bootstrap","loadTrads","translations","createRoot","render","module","hot","accept"],"mappings":"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"}
|
|
@@ -15,6 +15,7 @@ const renderAdmin = async (mountNode, { plugins, customisations, features })=>{
|
|
|
15
15
|
* To ensure that the backendURL is always set, we use the window.location.origin as a fallback.
|
|
16
16
|
*/ backendURL: createAbsoluteUrl(process.env.STRAPI_ADMIN_BACKEND_URL),
|
|
17
17
|
isEE: false,
|
|
18
|
+
isTrial: false,
|
|
18
19
|
telemetryDisabled: process.env.STRAPI_TELEMETRY_DISABLED === 'true',
|
|
19
20
|
future: {
|
|
20
21
|
isEnabled: (name)=>{
|
|
@@ -39,8 +40,9 @@ const renderAdmin = async (mountNode, { plugins, customisations, features })=>{
|
|
|
39
40
|
};
|
|
40
41
|
const { get } = getFetchClient();
|
|
41
42
|
try {
|
|
42
|
-
const { data: { data: { isEE, features, flags } } } = await get('/admin/project-type');
|
|
43
|
+
const { data: { data: { isEE, isTrial, features, flags } } } = await get('/admin/project-type');
|
|
43
44
|
window.strapi.isEE = isEE;
|
|
45
|
+
window.strapi.isTrialLicense = isTrial;
|
|
44
46
|
window.strapi.flags = flags;
|
|
45
47
|
window.strapi.features = {
|
|
46
48
|
...window.strapi.features,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.mjs","sources":["../../../../admin/src/render.ts"],"sourcesContent":["/* eslint-disable no-undef */\nimport { createRoot } from 'react-dom/client';\n\nimport { StrapiApp, StrapiAppConstructorArgs } from './StrapiApp';\nimport { getFetchClient } from './utils/getFetchClient';\nimport { createAbsoluteUrl } from './utils/urls';\n\nimport type { Modules } from '@strapi/types';\n\ninterface RenderAdminArgs {\n customisations: {\n register?: (app: StrapiApp) => Promise<void> | void;\n bootstrap?: (app: StrapiApp) => Promise<void> | void;\n config?: StrapiAppConstructorArgs['config'];\n };\n plugins: StrapiAppConstructorArgs['appPlugins'];\n features?: Modules.Features.FeaturesService['config'];\n}\n\nconst renderAdmin = async (\n mountNode: HTMLElement | null,\n { plugins, customisations, features }: RenderAdminArgs\n) => {\n if (!mountNode) {\n throw new Error('[@strapi/admin]: Could not find the root element to mount the admin app');\n }\n\n window.strapi = {\n /**\n * This ENV variable is passed from the strapi instance, by default no url is set\n * in the config and therefore the instance returns you an empty string so URLs are relative.\n *\n * To ensure that the backendURL is always set, we use the window.location.origin as a fallback.\n */\n backendURL: createAbsoluteUrl(process.env.STRAPI_ADMIN_BACKEND_URL),\n isEE: false,\n telemetryDisabled: process.env.STRAPI_TELEMETRY_DISABLED === 'true',\n future: {\n isEnabled: (name: keyof NonNullable<Modules.Features.FeaturesConfig['future']>) => {\n return features?.future?.[name] === true;\n },\n },\n // @ts-expect-error – there's pollution from the global scope of Node.\n features: {\n SSO: 'sso',\n AUDIT_LOGS: 'audit-logs',\n REVIEW_WORKFLOWS: 'review-workflows',\n /**\n * If we don't get the license then we know it's not EE\n * so no feature is enabled.\n */\n isEnabled: () => false,\n },\n projectType: 'Community',\n flags: {\n nps: false,\n promoteEE: true,\n },\n };\n\n const { get } = getFetchClient();\n\n interface ProjectType extends Pick<Window['strapi'], 'flags'> {\n isEE: boolean;\n features: {\n name: string;\n }[];\n }\n\n try {\n const {\n data: {\n data: { isEE, features, flags },\n },\n } = await get<{ data: ProjectType }>('/admin/project-type');\n\n window.strapi.isEE = isEE;\n window.strapi.flags = flags;\n window.strapi.features = {\n ...window.strapi.features,\n isEnabled: (featureName) => features.some((feature) => feature.name === featureName),\n };\n window.strapi.projectType = isEE ? 'Enterprise' : 'Community';\n } catch (err) {\n /**\n * If this fails, we simply don't activate any EE features.\n * Should we warn clearer in the UI?\n */\n console.error(err);\n }\n\n const app = new StrapiApp({\n config: customisations?.config,\n appPlugins: plugins,\n });\n\n await app.register(customisations?.register);\n await app.bootstrap(customisations?.bootstrap);\n await app.loadTrads(customisations?.config?.translations);\n\n createRoot(mountNode).render(app.render());\n\n if (\n typeof module !== 'undefined' &&\n module &&\n 'hot' in module &&\n typeof module.hot === 'object' &&\n module.hot !== null &&\n 'accept' in module.hot &&\n typeof module.hot.accept === 'function'\n ) {\n module.hot.accept();\n }\n\n if (typeof import.meta.hot?.accept === 'function') {\n import.meta.hot.accept();\n }\n};\n\nexport { renderAdmin };\nexport type { RenderAdminArgs };\n"],"names":["renderAdmin","mountNode","plugins","customisations","features","Error","window","strapi","backendURL","createAbsoluteUrl","process","env","STRAPI_ADMIN_BACKEND_URL","isEE","telemetryDisabled","STRAPI_TELEMETRY_DISABLED","future","isEnabled","name","SSO","AUDIT_LOGS","REVIEW_WORKFLOWS","projectType","flags","nps","promoteEE","get","getFetchClient","data","featureName","some","feature","err","console","error","app","StrapiApp","config","appPlugins","register","bootstrap","loadTrads","translations","createRoot","render","module","hot","accept"],"mappings":";;;;;AAmBMA,MAAAA,WAAAA,GAAc,OAClBC,SACA,EAAA,EAAEC,OAAO,EAAEC,cAAc,EAAEC,QAAQ,EAAmB,GAAA;AAEtD,IAAA,IAAI,CAACH,SAAW,EAAA;AACd,QAAA,MAAM,IAAII,KAAM,CAAA,yEAAA,CAAA;AAClB;AAEAC,IAAAA,MAAAA,CAAOC,MAAM,GAAG;AACd;;;;;AAKC,QACDC,UAAYC,EAAAA,iBAAAA,CAAkBC,OAAQC,CAAAA,GAAG,CAACC,wBAAwB,CAAA;QAClEC,IAAM,EAAA,KAAA;
|
|
1
|
+
{"version":3,"file":"render.mjs","sources":["../../../../admin/src/render.ts"],"sourcesContent":["/* eslint-disable no-undef */\nimport { createRoot } from 'react-dom/client';\n\nimport { StrapiApp, StrapiAppConstructorArgs } from './StrapiApp';\nimport { getFetchClient } from './utils/getFetchClient';\nimport { createAbsoluteUrl } from './utils/urls';\n\nimport type { Modules } from '@strapi/types';\n\ninterface RenderAdminArgs {\n customisations: {\n register?: (app: StrapiApp) => Promise<void> | void;\n bootstrap?: (app: StrapiApp) => Promise<void> | void;\n config?: StrapiAppConstructorArgs['config'];\n };\n plugins: StrapiAppConstructorArgs['appPlugins'];\n features?: Modules.Features.FeaturesService['config'];\n}\n\nconst renderAdmin = async (\n mountNode: HTMLElement | null,\n { plugins, customisations, features }: RenderAdminArgs\n) => {\n if (!mountNode) {\n throw new Error('[@strapi/admin]: Could not find the root element to mount the admin app');\n }\n\n window.strapi = {\n /**\n * This ENV variable is passed from the strapi instance, by default no url is set\n * in the config and therefore the instance returns you an empty string so URLs are relative.\n *\n * To ensure that the backendURL is always set, we use the window.location.origin as a fallback.\n */\n backendURL: createAbsoluteUrl(process.env.STRAPI_ADMIN_BACKEND_URL),\n isEE: false,\n isTrial: false,\n telemetryDisabled: process.env.STRAPI_TELEMETRY_DISABLED === 'true',\n future: {\n isEnabled: (name: keyof NonNullable<Modules.Features.FeaturesConfig['future']>) => {\n return features?.future?.[name] === true;\n },\n },\n // @ts-expect-error – there's pollution from the global scope of Node.\n features: {\n SSO: 'sso',\n AUDIT_LOGS: 'audit-logs',\n REVIEW_WORKFLOWS: 'review-workflows',\n /**\n * If we don't get the license then we know it's not EE\n * so no feature is enabled.\n */\n isEnabled: () => false,\n },\n projectType: 'Community',\n flags: {\n nps: false,\n promoteEE: true,\n },\n };\n\n const { get } = getFetchClient();\n\n interface ProjectType extends Pick<Window['strapi'], 'flags'> {\n isEE: boolean;\n isTrial: boolean;\n features: {\n name: string;\n }[];\n }\n\n try {\n const {\n data: {\n data: { isEE, isTrial, features, flags },\n },\n } = await get<{ data: ProjectType }>('/admin/project-type');\n\n window.strapi.isEE = isEE;\n window.strapi.isTrialLicense = isTrial;\n window.strapi.flags = flags;\n window.strapi.features = {\n ...window.strapi.features,\n isEnabled: (featureName) => features.some((feature) => feature.name === featureName),\n };\n window.strapi.projectType = isEE ? 'Enterprise' : 'Community';\n } catch (err) {\n /**\n * If this fails, we simply don't activate any EE features.\n * Should we warn clearer in the UI?\n */\n console.error(err);\n }\n\n const app = new StrapiApp({\n config: customisations?.config,\n appPlugins: plugins,\n });\n\n await app.register(customisations?.register);\n await app.bootstrap(customisations?.bootstrap);\n await app.loadTrads(customisations?.config?.translations);\n\n createRoot(mountNode).render(app.render());\n\n if (\n typeof module !== 'undefined' &&\n module &&\n 'hot' in module &&\n typeof module.hot === 'object' &&\n module.hot !== null &&\n 'accept' in module.hot &&\n typeof module.hot.accept === 'function'\n ) {\n module.hot.accept();\n }\n\n if (typeof import.meta.hot?.accept === 'function') {\n import.meta.hot.accept();\n }\n};\n\nexport { renderAdmin };\nexport type { RenderAdminArgs };\n"],"names":["renderAdmin","mountNode","plugins","customisations","features","Error","window","strapi","backendURL","createAbsoluteUrl","process","env","STRAPI_ADMIN_BACKEND_URL","isEE","isTrial","telemetryDisabled","STRAPI_TELEMETRY_DISABLED","future","isEnabled","name","SSO","AUDIT_LOGS","REVIEW_WORKFLOWS","projectType","flags","nps","promoteEE","get","getFetchClient","data","isTrialLicense","featureName","some","feature","err","console","error","app","StrapiApp","config","appPlugins","register","bootstrap","loadTrads","translations","createRoot","render","module","hot","accept"],"mappings":"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"}
|
|
@@ -6,7 +6,8 @@ var api = require('./api.js');
|
|
|
6
6
|
const admin = api.adminApi.enhanceEndpoints({
|
|
7
7
|
addTagTypes: [
|
|
8
8
|
'ProjectSettings',
|
|
9
|
-
'LicenseLimits'
|
|
9
|
+
'LicenseLimits',
|
|
10
|
+
'LicenseTrialTimeLeft'
|
|
10
11
|
]
|
|
11
12
|
}).injectEndpoints({
|
|
12
13
|
endpoints: (builder)=>({
|
|
@@ -90,13 +91,23 @@ const admin = api.adminApi.enhanceEndpoints({
|
|
|
90
91
|
providesTags: [
|
|
91
92
|
'LicenseLimits'
|
|
92
93
|
]
|
|
94
|
+
}),
|
|
95
|
+
getLicenseTrialTimeLeft: builder.query({
|
|
96
|
+
query: ()=>({
|
|
97
|
+
url: '/admin/license-trial-time-left',
|
|
98
|
+
method: 'GET'
|
|
99
|
+
}),
|
|
100
|
+
providesTags: [
|
|
101
|
+
'LicenseTrialTimeLeft'
|
|
102
|
+
]
|
|
93
103
|
})
|
|
94
104
|
}),
|
|
95
105
|
overrideExisting: false
|
|
96
106
|
});
|
|
97
|
-
const { useInitQuery, useTelemetryPropertiesQuery, useInformationQuery, useProjectSettingsQuery, useUpdateProjectSettingsMutation, useGetPluginsQuery, useGetLicenseLimitsQuery } = admin;
|
|
107
|
+
const { useInitQuery, useTelemetryPropertiesQuery, useInformationQuery, useProjectSettingsQuery, useUpdateProjectSettingsMutation, useGetPluginsQuery, useGetLicenseLimitsQuery, useGetLicenseTrialTimeLeftQuery } = admin;
|
|
98
108
|
|
|
99
109
|
exports.useGetLicenseLimitsQuery = useGetLicenseLimitsQuery;
|
|
110
|
+
exports.useGetLicenseTrialTimeLeftQuery = useGetLicenseTrialTimeLeftQuery;
|
|
100
111
|
exports.useGetPluginsQuery = useGetPluginsQuery;
|
|
101
112
|
exports.useInformationQuery = useInformationQuery;
|
|
102
113
|
exports.useInitQuery = useInitQuery;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin.js","sources":["../../../../../admin/src/services/admin.ts"],"sourcesContent":["import {\n type TelemetryProperties,\n type Init,\n type Information,\n type GetProjectSettings,\n type UpdateProjectSettings,\n type Plugins,\n type GetLicenseLimitInformation,\n} from '../../../shared/contracts/admin';\nimport { prefixFileUrlWithBackendUrl } from '../utils/urls';\n\nimport { adminApi } from './api';\n\ninterface ConfigurationLogo {\n custom?: {\n name?: string;\n url?: string;\n };\n default: string;\n}\n\nconst admin = adminApi\n .enhanceEndpoints({\n addTagTypes: ['ProjectSettings', 'LicenseLimits'],\n })\n .injectEndpoints({\n endpoints: (builder) => ({\n init: builder.query<Init.Response['data'], void>({\n query: () => ({\n url: '/admin/init',\n method: 'GET',\n }),\n transformResponse(res: Init.Response) {\n return res.data;\n },\n }),\n information: builder.query<Information.Response['data'], void>({\n query: () => ({\n url: '/admin/information',\n method: 'GET',\n }),\n transformResponse(res: Information.Response) {\n return res.data;\n },\n }),\n telemetryProperties: builder.query<TelemetryProperties.Response['data'], void>({\n query: () => ({\n url: '/admin/telemetry-properties',\n method: 'GET',\n config: {\n validateStatus: (status: number) => status < 500,\n },\n }),\n transformResponse(res: TelemetryProperties.Response) {\n return res.data;\n },\n }),\n projectSettings: builder.query<\n { authLogo?: ConfigurationLogo['custom']; menuLogo?: ConfigurationLogo['custom'] },\n void\n >({\n query: () => ({\n url: '/admin/project-settings',\n method: 'GET',\n }),\n providesTags: ['ProjectSettings'],\n transformResponse(data: GetProjectSettings.Response) {\n return {\n authLogo: data.authLogo\n ? {\n name: data.authLogo.name,\n url: prefixFileUrlWithBackendUrl(data.authLogo.url),\n }\n : undefined,\n menuLogo: data.menuLogo\n ? {\n name: data.menuLogo.name,\n url: prefixFileUrlWithBackendUrl(data.menuLogo.url),\n }\n : undefined,\n };\n },\n }),\n updateProjectSettings: builder.mutation<UpdateProjectSettings.Response, FormData>({\n query: (data) => ({\n url: '/admin/project-settings',\n method: 'POST',\n data,\n config: {\n headers: {\n 'Content-Type': 'multipart/form-data',\n },\n },\n }),\n invalidatesTags: ['ProjectSettings'],\n }),\n getPlugins: builder.query<Plugins.Response, void>({\n query: () => ({\n url: '/admin/plugins',\n method: 'GET',\n }),\n }),\n getLicenseLimits: builder.query<GetLicenseLimitInformation.Response, void>({\n query: () => ({\n url: '/admin/license-limit-information',\n method: 'GET',\n }),\n providesTags: ['LicenseLimits'],\n }),\n }),\n overrideExisting: false,\n });\n\nconst {\n useInitQuery,\n useTelemetryPropertiesQuery,\n useInformationQuery,\n useProjectSettingsQuery,\n useUpdateProjectSettingsMutation,\n useGetPluginsQuery,\n useGetLicenseLimitsQuery,\n} = admin;\n\nexport {\n useInitQuery,\n useTelemetryPropertiesQuery,\n useInformationQuery,\n useProjectSettingsQuery,\n useUpdateProjectSettingsMutation,\n useGetPluginsQuery,\n useGetLicenseLimitsQuery,\n};\n\nexport type { ConfigurationLogo };\n"],"names":["admin","adminApi","enhanceEndpoints","addTagTypes","injectEndpoints","endpoints","builder","init","query","url","method","transformResponse","res","data","information","telemetryProperties","config","validateStatus","status","projectSettings","providesTags","authLogo","name","prefixFileUrlWithBackendUrl","undefined","menuLogo","updateProjectSettings","mutation","headers","invalidatesTags","getPlugins","getLicenseLimits","overrideExisting","useInitQuery","useTelemetryPropertiesQuery","useInformationQuery","useProjectSettingsQuery","useUpdateProjectSettingsMutation","useGetPluginsQuery","useGetLicenseLimitsQuery"],"mappings":";;;;;AAqBA,MAAMA,KAAAA,GAAQC,YACXC,CAAAA,gBAAgB,CAAC;IAChBC,WAAa,EAAA;AAAC,QAAA,iBAAA;AAAmB,QAAA;
|
|
1
|
+
{"version":3,"file":"admin.js","sources":["../../../../../admin/src/services/admin.ts"],"sourcesContent":["import {\n type TelemetryProperties,\n type Init,\n type Information,\n type GetProjectSettings,\n type UpdateProjectSettings,\n type Plugins,\n type GetLicenseLimitInformation,\n} from '../../../shared/contracts/admin';\nimport { prefixFileUrlWithBackendUrl } from '../utils/urls';\n\nimport { adminApi } from './api';\n\ninterface ConfigurationLogo {\n custom?: {\n name?: string;\n url?: string;\n };\n default: string;\n}\n\nconst admin = adminApi\n .enhanceEndpoints({\n addTagTypes: ['ProjectSettings', 'LicenseLimits', 'LicenseTrialTimeLeft'],\n })\n .injectEndpoints({\n endpoints: (builder) => ({\n init: builder.query<Init.Response['data'], void>({\n query: () => ({\n url: '/admin/init',\n method: 'GET',\n }),\n transformResponse(res: Init.Response) {\n return res.data;\n },\n }),\n information: builder.query<Information.Response['data'], void>({\n query: () => ({\n url: '/admin/information',\n method: 'GET',\n }),\n transformResponse(res: Information.Response) {\n return res.data;\n },\n }),\n telemetryProperties: builder.query<TelemetryProperties.Response['data'], void>({\n query: () => ({\n url: '/admin/telemetry-properties',\n method: 'GET',\n config: {\n validateStatus: (status: number) => status < 500,\n },\n }),\n transformResponse(res: TelemetryProperties.Response) {\n return res.data;\n },\n }),\n projectSettings: builder.query<\n { authLogo?: ConfigurationLogo['custom']; menuLogo?: ConfigurationLogo['custom'] },\n void\n >({\n query: () => ({\n url: '/admin/project-settings',\n method: 'GET',\n }),\n providesTags: ['ProjectSettings'],\n transformResponse(data: GetProjectSettings.Response) {\n return {\n authLogo: data.authLogo\n ? {\n name: data.authLogo.name,\n url: prefixFileUrlWithBackendUrl(data.authLogo.url),\n }\n : undefined,\n menuLogo: data.menuLogo\n ? {\n name: data.menuLogo.name,\n url: prefixFileUrlWithBackendUrl(data.menuLogo.url),\n }\n : undefined,\n };\n },\n }),\n updateProjectSettings: builder.mutation<UpdateProjectSettings.Response, FormData>({\n query: (data) => ({\n url: '/admin/project-settings',\n method: 'POST',\n data,\n config: {\n headers: {\n 'Content-Type': 'multipart/form-data',\n },\n },\n }),\n invalidatesTags: ['ProjectSettings'],\n }),\n getPlugins: builder.query<Plugins.Response, void>({\n query: () => ({\n url: '/admin/plugins',\n method: 'GET',\n }),\n }),\n getLicenseLimits: builder.query<GetLicenseLimitInformation.Response, void>({\n query: () => ({\n url: '/admin/license-limit-information',\n method: 'GET',\n }),\n providesTags: ['LicenseLimits'],\n }),\n getLicenseTrialTimeLeft: builder.query<{ trialEndsAt: string }, void>({\n query: () => ({\n url: '/admin/license-trial-time-left',\n method: 'GET',\n }),\n providesTags: ['LicenseTrialTimeLeft'],\n }),\n }),\n overrideExisting: false,\n });\n\nconst {\n useInitQuery,\n useTelemetryPropertiesQuery,\n useInformationQuery,\n useProjectSettingsQuery,\n useUpdateProjectSettingsMutation,\n useGetPluginsQuery,\n useGetLicenseLimitsQuery,\n useGetLicenseTrialTimeLeftQuery,\n} = admin;\n\nexport {\n useInitQuery,\n useTelemetryPropertiesQuery,\n useInformationQuery,\n useProjectSettingsQuery,\n useUpdateProjectSettingsMutation,\n useGetPluginsQuery,\n useGetLicenseLimitsQuery,\n useGetLicenseTrialTimeLeftQuery,\n};\n\nexport type { ConfigurationLogo };\n"],"names":["admin","adminApi","enhanceEndpoints","addTagTypes","injectEndpoints","endpoints","builder","init","query","url","method","transformResponse","res","data","information","telemetryProperties","config","validateStatus","status","projectSettings","providesTags","authLogo","name","prefixFileUrlWithBackendUrl","undefined","menuLogo","updateProjectSettings","mutation","headers","invalidatesTags","getPlugins","getLicenseLimits","getLicenseTrialTimeLeft","overrideExisting","useInitQuery","useTelemetryPropertiesQuery","useInformationQuery","useProjectSettingsQuery","useUpdateProjectSettingsMutation","useGetPluginsQuery","useGetLicenseLimitsQuery","useGetLicenseTrialTimeLeftQuery"],"mappings":"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"}
|
|
@@ -4,7 +4,8 @@ import { adminApi } from './api.mjs';
|
|
|
4
4
|
const admin = adminApi.enhanceEndpoints({
|
|
5
5
|
addTagTypes: [
|
|
6
6
|
'ProjectSettings',
|
|
7
|
-
'LicenseLimits'
|
|
7
|
+
'LicenseLimits',
|
|
8
|
+
'LicenseTrialTimeLeft'
|
|
8
9
|
]
|
|
9
10
|
}).injectEndpoints({
|
|
10
11
|
endpoints: (builder)=>({
|
|
@@ -88,11 +89,20 @@ const admin = adminApi.enhanceEndpoints({
|
|
|
88
89
|
providesTags: [
|
|
89
90
|
'LicenseLimits'
|
|
90
91
|
]
|
|
92
|
+
}),
|
|
93
|
+
getLicenseTrialTimeLeft: builder.query({
|
|
94
|
+
query: ()=>({
|
|
95
|
+
url: '/admin/license-trial-time-left',
|
|
96
|
+
method: 'GET'
|
|
97
|
+
}),
|
|
98
|
+
providesTags: [
|
|
99
|
+
'LicenseTrialTimeLeft'
|
|
100
|
+
]
|
|
91
101
|
})
|
|
92
102
|
}),
|
|
93
103
|
overrideExisting: false
|
|
94
104
|
});
|
|
95
|
-
const { useInitQuery, useTelemetryPropertiesQuery, useInformationQuery, useProjectSettingsQuery, useUpdateProjectSettingsMutation, useGetPluginsQuery, useGetLicenseLimitsQuery } = admin;
|
|
105
|
+
const { useInitQuery, useTelemetryPropertiesQuery, useInformationQuery, useProjectSettingsQuery, useUpdateProjectSettingsMutation, useGetPluginsQuery, useGetLicenseLimitsQuery, useGetLicenseTrialTimeLeftQuery } = admin;
|
|
96
106
|
|
|
97
|
-
export { useGetLicenseLimitsQuery, useGetPluginsQuery, useInformationQuery, useInitQuery, useProjectSettingsQuery, useTelemetryPropertiesQuery, useUpdateProjectSettingsMutation };
|
|
107
|
+
export { useGetLicenseLimitsQuery, useGetLicenseTrialTimeLeftQuery, useGetPluginsQuery, useInformationQuery, useInitQuery, useProjectSettingsQuery, useTelemetryPropertiesQuery, useUpdateProjectSettingsMutation };
|
|
98
108
|
//# sourceMappingURL=admin.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin.mjs","sources":["../../../../../admin/src/services/admin.ts"],"sourcesContent":["import {\n type TelemetryProperties,\n type Init,\n type Information,\n type GetProjectSettings,\n type UpdateProjectSettings,\n type Plugins,\n type GetLicenseLimitInformation,\n} from '../../../shared/contracts/admin';\nimport { prefixFileUrlWithBackendUrl } from '../utils/urls';\n\nimport { adminApi } from './api';\n\ninterface ConfigurationLogo {\n custom?: {\n name?: string;\n url?: string;\n };\n default: string;\n}\n\nconst admin = adminApi\n .enhanceEndpoints({\n addTagTypes: ['ProjectSettings', 'LicenseLimits'],\n })\n .injectEndpoints({\n endpoints: (builder) => ({\n init: builder.query<Init.Response['data'], void>({\n query: () => ({\n url: '/admin/init',\n method: 'GET',\n }),\n transformResponse(res: Init.Response) {\n return res.data;\n },\n }),\n information: builder.query<Information.Response['data'], void>({\n query: () => ({\n url: '/admin/information',\n method: 'GET',\n }),\n transformResponse(res: Information.Response) {\n return res.data;\n },\n }),\n telemetryProperties: builder.query<TelemetryProperties.Response['data'], void>({\n query: () => ({\n url: '/admin/telemetry-properties',\n method: 'GET',\n config: {\n validateStatus: (status: number) => status < 500,\n },\n }),\n transformResponse(res: TelemetryProperties.Response) {\n return res.data;\n },\n }),\n projectSettings: builder.query<\n { authLogo?: ConfigurationLogo['custom']; menuLogo?: ConfigurationLogo['custom'] },\n void\n >({\n query: () => ({\n url: '/admin/project-settings',\n method: 'GET',\n }),\n providesTags: ['ProjectSettings'],\n transformResponse(data: GetProjectSettings.Response) {\n return {\n authLogo: data.authLogo\n ? {\n name: data.authLogo.name,\n url: prefixFileUrlWithBackendUrl(data.authLogo.url),\n }\n : undefined,\n menuLogo: data.menuLogo\n ? {\n name: data.menuLogo.name,\n url: prefixFileUrlWithBackendUrl(data.menuLogo.url),\n }\n : undefined,\n };\n },\n }),\n updateProjectSettings: builder.mutation<UpdateProjectSettings.Response, FormData>({\n query: (data) => ({\n url: '/admin/project-settings',\n method: 'POST',\n data,\n config: {\n headers: {\n 'Content-Type': 'multipart/form-data',\n },\n },\n }),\n invalidatesTags: ['ProjectSettings'],\n }),\n getPlugins: builder.query<Plugins.Response, void>({\n query: () => ({\n url: '/admin/plugins',\n method: 'GET',\n }),\n }),\n getLicenseLimits: builder.query<GetLicenseLimitInformation.Response, void>({\n query: () => ({\n url: '/admin/license-limit-information',\n method: 'GET',\n }),\n providesTags: ['LicenseLimits'],\n }),\n }),\n overrideExisting: false,\n });\n\nconst {\n useInitQuery,\n useTelemetryPropertiesQuery,\n useInformationQuery,\n useProjectSettingsQuery,\n useUpdateProjectSettingsMutation,\n useGetPluginsQuery,\n useGetLicenseLimitsQuery,\n} = admin;\n\nexport {\n useInitQuery,\n useTelemetryPropertiesQuery,\n useInformationQuery,\n useProjectSettingsQuery,\n useUpdateProjectSettingsMutation,\n useGetPluginsQuery,\n useGetLicenseLimitsQuery,\n};\n\nexport type { ConfigurationLogo };\n"],"names":["admin","adminApi","enhanceEndpoints","addTagTypes","injectEndpoints","endpoints","builder","init","query","url","method","transformResponse","res","data","information","telemetryProperties","config","validateStatus","status","projectSettings","providesTags","authLogo","name","prefixFileUrlWithBackendUrl","undefined","menuLogo","updateProjectSettings","mutation","headers","invalidatesTags","getPlugins","getLicenseLimits","overrideExisting","useInitQuery","useTelemetryPropertiesQuery","useInformationQuery","useProjectSettingsQuery","useUpdateProjectSettingsMutation","useGetPluginsQuery","useGetLicenseLimitsQuery"],"mappings":";;;AAqBA,MAAMA,KAAAA,GAAQC,QACXC,CAAAA,gBAAgB,CAAC;IAChBC,WAAa,EAAA;AAAC,QAAA,iBAAA;AAAmB,QAAA;
|
|
1
|
+
{"version":3,"file":"admin.mjs","sources":["../../../../../admin/src/services/admin.ts"],"sourcesContent":["import {\n type TelemetryProperties,\n type Init,\n type Information,\n type GetProjectSettings,\n type UpdateProjectSettings,\n type Plugins,\n type GetLicenseLimitInformation,\n} from '../../../shared/contracts/admin';\nimport { prefixFileUrlWithBackendUrl } from '../utils/urls';\n\nimport { adminApi } from './api';\n\ninterface ConfigurationLogo {\n custom?: {\n name?: string;\n url?: string;\n };\n default: string;\n}\n\nconst admin = adminApi\n .enhanceEndpoints({\n addTagTypes: ['ProjectSettings', 'LicenseLimits', 'LicenseTrialTimeLeft'],\n })\n .injectEndpoints({\n endpoints: (builder) => ({\n init: builder.query<Init.Response['data'], void>({\n query: () => ({\n url: '/admin/init',\n method: 'GET',\n }),\n transformResponse(res: Init.Response) {\n return res.data;\n },\n }),\n information: builder.query<Information.Response['data'], void>({\n query: () => ({\n url: '/admin/information',\n method: 'GET',\n }),\n transformResponse(res: Information.Response) {\n return res.data;\n },\n }),\n telemetryProperties: builder.query<TelemetryProperties.Response['data'], void>({\n query: () => ({\n url: '/admin/telemetry-properties',\n method: 'GET',\n config: {\n validateStatus: (status: number) => status < 500,\n },\n }),\n transformResponse(res: TelemetryProperties.Response) {\n return res.data;\n },\n }),\n projectSettings: builder.query<\n { authLogo?: ConfigurationLogo['custom']; menuLogo?: ConfigurationLogo['custom'] },\n void\n >({\n query: () => ({\n url: '/admin/project-settings',\n method: 'GET',\n }),\n providesTags: ['ProjectSettings'],\n transformResponse(data: GetProjectSettings.Response) {\n return {\n authLogo: data.authLogo\n ? {\n name: data.authLogo.name,\n url: prefixFileUrlWithBackendUrl(data.authLogo.url),\n }\n : undefined,\n menuLogo: data.menuLogo\n ? {\n name: data.menuLogo.name,\n url: prefixFileUrlWithBackendUrl(data.menuLogo.url),\n }\n : undefined,\n };\n },\n }),\n updateProjectSettings: builder.mutation<UpdateProjectSettings.Response, FormData>({\n query: (data) => ({\n url: '/admin/project-settings',\n method: 'POST',\n data,\n config: {\n headers: {\n 'Content-Type': 'multipart/form-data',\n },\n },\n }),\n invalidatesTags: ['ProjectSettings'],\n }),\n getPlugins: builder.query<Plugins.Response, void>({\n query: () => ({\n url: '/admin/plugins',\n method: 'GET',\n }),\n }),\n getLicenseLimits: builder.query<GetLicenseLimitInformation.Response, void>({\n query: () => ({\n url: '/admin/license-limit-information',\n method: 'GET',\n }),\n providesTags: ['LicenseLimits'],\n }),\n getLicenseTrialTimeLeft: builder.query<{ trialEndsAt: string }, void>({\n query: () => ({\n url: '/admin/license-trial-time-left',\n method: 'GET',\n }),\n providesTags: ['LicenseTrialTimeLeft'],\n }),\n }),\n overrideExisting: false,\n });\n\nconst {\n useInitQuery,\n useTelemetryPropertiesQuery,\n useInformationQuery,\n useProjectSettingsQuery,\n useUpdateProjectSettingsMutation,\n useGetPluginsQuery,\n useGetLicenseLimitsQuery,\n useGetLicenseTrialTimeLeftQuery,\n} = admin;\n\nexport {\n useInitQuery,\n useTelemetryPropertiesQuery,\n useInformationQuery,\n useProjectSettingsQuery,\n useUpdateProjectSettingsMutation,\n useGetPluginsQuery,\n useGetLicenseLimitsQuery,\n useGetLicenseTrialTimeLeftQuery,\n};\n\nexport type { ConfigurationLogo };\n"],"names":["admin","adminApi","enhanceEndpoints","addTagTypes","injectEndpoints","endpoints","builder","init","query","url","method","transformResponse","res","data","information","telemetryProperties","config","validateStatus","status","projectSettings","providesTags","authLogo","name","prefixFileUrlWithBackendUrl","undefined","menuLogo","updateProjectSettings","mutation","headers","invalidatesTags","getPlugins","getLicenseLimits","getLicenseTrialTimeLeft","overrideExisting","useInitQuery","useTelemetryPropertiesQuery","useInformationQuery","useProjectSettingsQuery","useUpdateProjectSettingsMutation","useGetPluginsQuery","useGetLicenseLimitsQuery","useGetLicenseTrialTimeLeftQuery"],"mappings":";;;AAqBA,MAAMA,KAAAA,GAAQC,QACXC,CAAAA,gBAAgB,CAAC;IAChBC,WAAa,EAAA;AAAC,QAAA,iBAAA;AAAmB,QAAA,eAAA;AAAiB,QAAA;AAAuB;AAC3E,CAAA,CAAA,CACCC,eAAe,CAAC;IACfC,SAAW,EAAA,CAACC,WAAa;YACvBC,IAAMD,EAAAA,OAAAA,CAAQE,KAAK,CAA8B;AAC/CA,gBAAAA,KAAAA,EAAO,KAAO;wBACZC,GAAK,EAAA,aAAA;wBACLC,MAAQ,EAAA;qBACV,CAAA;AACAC,gBAAAA,iBAAAA,CAAAA,CAAkBC,GAAkB,EAAA;AAClC,oBAAA,OAAOA,IAAIC,IAAI;AACjB;AACF,aAAA,CAAA;YACAC,WAAaR,EAAAA,OAAAA,CAAQE,KAAK,CAAqC;AAC7DA,gBAAAA,KAAAA,EAAO,KAAO;wBACZC,GAAK,EAAA,oBAAA;wBACLC,MAAQ,EAAA;qBACV,CAAA;AACAC,gBAAAA,iBAAAA,CAAAA,CAAkBC,GAAyB,EAAA;AACzC,oBAAA,OAAOA,IAAIC,IAAI;AACjB;AACF,aAAA,CAAA;YACAE,mBAAqBT,EAAAA,OAAAA,CAAQE,KAAK,CAA6C;AAC7EA,gBAAAA,KAAAA,EAAO,KAAO;wBACZC,GAAK,EAAA,6BAAA;wBACLC,MAAQ,EAAA,KAAA;wBACRM,MAAQ,EAAA;4BACNC,cAAgB,EAAA,CAACC,SAAmBA,MAAS,GAAA;AAC/C;qBACF,CAAA;AACAP,gBAAAA,iBAAAA,CAAAA,CAAkBC,GAAiC,EAAA;AACjD,oBAAA,OAAOA,IAAIC,IAAI;AACjB;AACF,aAAA,CAAA;YACAM,eAAiBb,EAAAA,OAAAA,CAAQE,KAAK,CAG5B;AACAA,gBAAAA,KAAAA,EAAO,KAAO;wBACZC,GAAK,EAAA,yBAAA;wBACLC,MAAQ,EAAA;qBACV,CAAA;gBACAU,YAAc,EAAA;AAAC,oBAAA;AAAkB,iBAAA;AACjCT,gBAAAA,iBAAAA,CAAAA,CAAkBE,IAAiC,EAAA;oBACjD,OAAO;wBACLQ,QAAUR,EAAAA,IAAAA,CAAKQ,QAAQ,GACnB;4BACEC,IAAMT,EAAAA,IAAAA,CAAKQ,QAAQ,CAACC,IAAI;AACxBb,4BAAAA,GAAAA,EAAKc,2BAA4BV,CAAAA,IAAAA,CAAKQ,QAAQ,CAACZ,GAAG;yBAEpDe,GAAAA,SAAAA;wBACJC,QAAUZ,EAAAA,IAAAA,CAAKY,QAAQ,GACnB;4BACEH,IAAMT,EAAAA,IAAAA,CAAKY,QAAQ,CAACH,IAAI;AACxBb,4BAAAA,GAAAA,EAAKc,2BAA4BV,CAAAA,IAAAA,CAAKY,QAAQ,CAAChB,GAAG;yBAEpDe,GAAAA;AACN,qBAAA;AACF;AACF,aAAA,CAAA;YACAE,qBAAuBpB,EAAAA,OAAAA,CAAQqB,QAAQ,CAA2C;gBAChFnB,KAAO,EAAA,CAACK,QAAU;wBAChBJ,GAAK,EAAA,yBAAA;wBACLC,MAAQ,EAAA,MAAA;AACRG,wBAAAA,IAAAA;wBACAG,MAAQ,EAAA;4BACNY,OAAS,EAAA;gCACP,cAAgB,EAAA;AAClB;AACF;qBACF,CAAA;gBACAC,eAAiB,EAAA;AAAC,oBAAA;AAAkB;AACtC,aAAA,CAAA;YACAC,UAAYxB,EAAAA,OAAAA,CAAQE,KAAK,CAAyB;AAChDA,gBAAAA,KAAAA,EAAO,KAAO;wBACZC,GAAK,EAAA,gBAAA;wBACLC,MAAQ,EAAA;qBACV;AACF,aAAA,CAAA;YACAqB,gBAAkBzB,EAAAA,OAAAA,CAAQE,KAAK,CAA4C;AACzEA,gBAAAA,KAAAA,EAAO,KAAO;wBACZC,GAAK,EAAA,kCAAA;wBACLC,MAAQ,EAAA;qBACV,CAAA;gBACAU,YAAc,EAAA;AAAC,oBAAA;AAAgB;AACjC,aAAA,CAAA;YACAY,uBAAyB1B,EAAAA,OAAAA,CAAQE,KAAK,CAAgC;AACpEA,gBAAAA,KAAAA,EAAO,KAAO;wBACZC,GAAK,EAAA,gCAAA;wBACLC,MAAQ,EAAA;qBACV,CAAA;gBACAU,YAAc,EAAA;AAAC,oBAAA;AAAuB;AACxC,aAAA;SACF,CAAA;IACAa,gBAAkB,EAAA;AACpB,CAAA,CAAA;AAEF,MAAM,EACJC,YAAY,EACZC,2BAA2B,EAC3BC,mBAAmB,EACnBC,uBAAuB,EACvBC,gCAAgC,EAChCC,kBAAkB,EAClBC,wBAAwB,EACxBC,+BAA+B,EAChC,GAAGzC;;;;"}
|
|
@@ -233,6 +233,7 @@ var ar = {
|
|
|
233
233
|
"app.components.LeftMenu.general": "عام",
|
|
234
234
|
"app.components.LeftMenu.logo.alt": "شعار التطبيق",
|
|
235
235
|
"app.components.LeftMenu.logout": "تسجيل خروج",
|
|
236
|
+
"app.components.LeftMenu.trialCountdown": "تنتهي محادة الاختبار في {date}.",
|
|
236
237
|
"app.components.LeftMenu.navbrand.title": "Strapi لوحة القيادة",
|
|
237
238
|
"app.components.LeftMenu.navbrand.workplace": "مكان العمل",
|
|
238
239
|
"app.components.LeftMenu.plugins": "الإضافات",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ar.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ar.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -229,6 +229,7 @@ var ar = {
|
|
|
229
229
|
"app.components.LeftMenu.general": "عام",
|
|
230
230
|
"app.components.LeftMenu.logo.alt": "شعار التطبيق",
|
|
231
231
|
"app.components.LeftMenu.logout": "تسجيل خروج",
|
|
232
|
+
"app.components.LeftMenu.trialCountdown": "تنتهي محادة الاختبار في {date}.",
|
|
232
233
|
"app.components.LeftMenu.navbrand.title": "Strapi لوحة القيادة",
|
|
233
234
|
"app.components.LeftMenu.navbrand.workplace": "مكان العمل",
|
|
234
235
|
"app.components.LeftMenu.plugins": "الإضافات",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ar.json.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ar.json.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -311,6 +311,7 @@ var ca = {
|
|
|
311
311
|
"app.components.LeftMenu.collapse": "Contreure la barra de navegació",
|
|
312
312
|
"app.components.LeftMenu.expand": "Expandir la barra de navegació",
|
|
313
313
|
"app.components.LeftMenu.logout": "Tancar sessió",
|
|
314
|
+
"app.components.LeftMenu.trialCountdown": "El vostre període d'assaig finalitza el {date}.",
|
|
314
315
|
"app.components.LeftMenu.navbrand.title": "Panell de Strapi",
|
|
315
316
|
"app.components.LeftMenu.navbrand.workplace": "Lloc de treball",
|
|
316
317
|
"app.components.LeftMenuFooter.help": "Ajuda",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ca.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ca.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -307,6 +307,7 @@ var ca = {
|
|
|
307
307
|
"app.components.LeftMenu.collapse": "Contreure la barra de navegació",
|
|
308
308
|
"app.components.LeftMenu.expand": "Expandir la barra de navegació",
|
|
309
309
|
"app.components.LeftMenu.logout": "Tancar sessió",
|
|
310
|
+
"app.components.LeftMenu.trialCountdown": "El vostre període d'assaig finalitza el {date}.",
|
|
310
311
|
"app.components.LeftMenu.navbrand.title": "Panell de Strapi",
|
|
311
312
|
"app.components.LeftMenu.navbrand.workplace": "Lloc de treball",
|
|
312
313
|
"app.components.LeftMenuFooter.help": "Ajuda",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ca.json.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ca.json.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -308,6 +308,7 @@ var de = {
|
|
|
308
308
|
"app.components.LeftMenu.logout": "Abmelden",
|
|
309
309
|
"app.components.LeftMenu.navbrand.title": "Strapi Dashboard",
|
|
310
310
|
"app.components.LeftMenu.navbrand.workplace": "Arbeitsplatz",
|
|
311
|
+
"app.components.LeftMenu.trialCountdown": "Dein Test läuft am {date} ab.",
|
|
311
312
|
"app.components.LeftMenuFooter.help": "Hilfe",
|
|
312
313
|
"app.components.LeftMenuFooter.poweredBy": "Powered by ",
|
|
313
314
|
"app.components.LeftMenuLinkContainer.collectionTypes": "Sammlungen",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"de.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"de.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -304,6 +304,7 @@ var de = {
|
|
|
304
304
|
"app.components.LeftMenu.logout": "Abmelden",
|
|
305
305
|
"app.components.LeftMenu.navbrand.title": "Strapi Dashboard",
|
|
306
306
|
"app.components.LeftMenu.navbrand.workplace": "Arbeitsplatz",
|
|
307
|
+
"app.components.LeftMenu.trialCountdown": "Dein Test läuft am {date} ab.",
|
|
307
308
|
"app.components.LeftMenuFooter.help": "Hilfe",
|
|
308
309
|
"app.components.LeftMenuFooter.poweredBy": "Powered by ",
|
|
309
310
|
"app.components.LeftMenuLinkContainer.collectionTypes": "Sammlungen",
|