Merge pull request #1784 from ONLYOFFICE/bugfix/Bug64290

bugfix/Bug64290
This commit is contained in:
Alexey Safronov 2023-09-29 14:54:59 +04:00 committed by GitHub
commit 218706f2ac
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 90 additions and 57 deletions

View File

@ -1,24 +1,30 @@
import IntegrationSvgUrl from "PUBLIC_DIR/images/integration.svg?url";
import IntegrationDarkSvgUrl from "PUBLIC_DIR/images/integration.dark.svg?url";
import React from "react";
import PropTypes from "prop-types";
import { withTranslation } from "react-i18next";
import { inject, observer } from "mobx-react";
import styled from "styled-components";
import { showLoader, hideLoader } from "@docspace/common/utils";
import Box from "@docspace/components/box";
import Text from "@docspace/components/text";
import Link from "@docspace/components/link";
import Badge from "@docspace/components/badge";
import toastr from "@docspace/components/toast/toastr";
import Button from "@docspace/components/button";
import { showLoader, hideLoader } from "@docspace/common/utils";
import ConsumerItem from "./sub-components/consumerItem";
import ConsumerModalDialog from "./sub-components/consumerModalDialog";
import { inject, observer } from "mobx-react";
import {
mobile,
smallTablet,
isSmallTablet,
} from "@docspace/components/utils/device";
import IntegrationSvgUrl from "PUBLIC_DIR/images/integration.svg?url";
import IntegrationDarkSvgUrl from "PUBLIC_DIR/images/integration.dark.svg?url";
import ConsumerItem from "./sub-components/consumerItem";
import ConsumerModalDialog from "./sub-components/consumerModalDialog";
import ThirdPartyLoader from "./sub-components/thirdPartyLoader";
const RootContainer = styled(Box)`
max-width: 700px;
@ -40,7 +46,6 @@ const RootContainer = styled(Box)`
display: grid;
grid-template-columns: repeat(auto-fill, minmax(293px, 1fr));
gap: 20px;
margin-bottom: 20px;
}
.consumer-item-wrapper {
@ -66,10 +71,11 @@ const RootContainer = styled(Box)`
}
.business-plan {
grid-column: 1 / -1;
display: flex;
gap: 8px;
align-items: center;
margin-bottom: 16px;
margin-bottom: -4px;
}
`;
@ -218,54 +224,56 @@ class ThirdPartyServices extends React.Component {
scale={isSmallTablet()}
/>
</Box>
<div className="consumers-list-container">
{freeConsumers.map((consumer) => (
<Box className="consumer-item-wrapper" key={consumer.name}>
<ConsumerItem
consumer={consumer}
dialogVisible={dialogVisible}
isLoading={isLoading}
onChangeLoading={onChangeLoading}
onModalClose={onModalClose}
onModalOpen={onModalOpen}
setConsumer={setConsumer}
updateConsumerProps={updateConsumerProps}
t={t}
isThirdPartyAvailable={isThirdPartyAvailable}
/>
</Box>
))}
</div>
{!isThirdPartyAvailable && (
<div className="business-plan">
<Text fontSize="16px" fontWeight={700}>
{t("IncludedInBusiness")}
</Text>
<Badge
backgroundColor="#EDC409"
label={t("Common:Paid")}
isPaidBadge={true}
/>
{!consumers.length ? (
<ThirdPartyLoader />
) : (
<div className="consumers-list-container">
{freeConsumers.map((consumer) => (
<Box className="consumer-item-wrapper" key={consumer.name}>
<ConsumerItem
consumer={consumer}
dialogVisible={dialogVisible}
isLoading={isLoading}
onChangeLoading={onChangeLoading}
onModalClose={onModalClose}
onModalOpen={onModalOpen}
setConsumer={setConsumer}
updateConsumerProps={updateConsumerProps}
t={t}
isThirdPartyAvailable={isThirdPartyAvailable}
/>
</Box>
))}
{!isThirdPartyAvailable && (
<div className="business-plan">
<Text fontSize="16px" fontWeight={700}>
{t("IncludedInBusiness")}
</Text>
<Badge
backgroundColor="#EDC409"
label={t("Common:Paid")}
isPaidBadge={true}
/>
</div>
)}
{paidConsumers.map((consumer) => (
<Box className="consumer-item-wrapper" key={consumer.name}>
<ConsumerItem
consumer={consumer}
dialogVisible={dialogVisible}
isLoading={isLoading}
onChangeLoading={onChangeLoading}
onModalClose={onModalClose}
onModalOpen={onModalOpen}
setConsumer={setConsumer}
updateConsumerProps={updateConsumerProps}
t={t}
isThirdPartyAvailable={isThirdPartyAvailable}
/>
</Box>
))}
</div>
)}
<div className="consumers-list-container">
{paidConsumers.map((consumer) => (
<Box className="consumer-item-wrapper" key={consumer.name}>
<ConsumerItem
consumer={consumer}
dialogVisible={dialogVisible}
isLoading={isLoading}
onChangeLoading={onChangeLoading}
onModalClose={onModalClose}
onModalOpen={onModalOpen}
setConsumer={setConsumer}
updateConsumerProps={updateConsumerProps}
t={t}
isThirdPartyAvailable={isThirdPartyAvailable}
/>
</Box>
))}
</div>
</RootContainer>
{dialogVisible && (
<ConsumerModalDialog

View File

@ -28,7 +28,7 @@ const StyledBox = styled(Box)`
css`
path {
fill: #ffffff;
opacity: ${props.isSet ? 1 : 0.16};
opacity: 1;
}
${props.isLinkedIn &&
css`
@ -45,7 +45,7 @@ const StyledBox = styled(Box)`
${(props) =>
!props.isThirdPartyAvailable &&
!props.isSet &&
props.canSet &&
css`
path {
opacity: 0.5;
@ -81,7 +81,7 @@ class ConsumerItem extends React.Component {
widthProp="100%"
>
<StyledBox
isSet={isSet}
canSet={consumer.canSet}
isLinkedIn={consumer.name === "linkedin"}
isThirdPartyAvailable={isThirdPartyAvailable}
>

View File

@ -0,0 +1,25 @@
import styled from "styled-components";
import Loaders from "@docspace/common/components/Loaders";
const StyledLoader = styled.div`
max-width: 700px;
width: 100%;
display: grid;
grid-template-columns: repeat(auto-fill, minmax(293px, 1fr));
gap: 20px;
`;
const ThirdPartyLoader = () => {
const rectangles = new Array(6).fill(0);
return (
<StyledLoader>
{rectangles.map((_) => (
<Loaders.Rectangle height="120px" borderRadius="6px" />
))}
</StyledLoader>
);
};
export default ThirdPartyLoader;