diff --git a/packages/asc-web-common/components/Loaders/DialogAsideLoader/DialogAsideLoader.js b/packages/asc-web-common/components/Loaders/DialogAsideLoader/DialogAsideLoader.js new file mode 100644 index 00000000000..2aca8af3227 --- /dev/null +++ b/packages/asc-web-common/components/Loaders/DialogAsideLoader/DialogAsideLoader.js @@ -0,0 +1,41 @@ +import React from "react"; +import Loaders from "../../Loaders"; +import StyledDialogAsideLoader from "./StyledDialogAsideLoader"; +import Aside from "@appserver/components/aside"; +import Backdrop from "@appserver/components/backdrop"; + +const DialogAsideLoader = ({ isPanel, withoutAside }) => { + const zIndex = 310; + + const renderClearDialogAsideLoader = () => { + return ( + +
+ +
+
+ +
+ +
+ +
+
+ ); + }; + + return withoutAside ? ( + renderClearDialogAsideLoader() + ) : ( + <> + + + + + + ); +}; + +export default DialogAsideLoader; diff --git a/packages/asc-web-common/components/Loaders/DialogAsideLoader/StyledDialogAsideLoader.js b/packages/asc-web-common/components/Loaders/DialogAsideLoader/StyledDialogAsideLoader.js new file mode 100644 index 00000000000..19b438b8630 --- /dev/null +++ b/packages/asc-web-common/components/Loaders/DialogAsideLoader/StyledDialogAsideLoader.js @@ -0,0 +1,59 @@ +import styled, { css } from "styled-components"; + +const StyledDialogAsideLoader = styled.div` + ${(props) => + props.isPanel && + css` + .dialog-aside-loader { + padding: 0; + transform: translateX(${(props) => (props.visible ? "0" : "500px")}); + width: 500px; + + @media (max-width: 550px) { + width: 320px; + transform: translateX(${(props) => (props.visible ? "0" : "320px")}); + } + } + `} + + ${(props) => + props.isPanel + ? css` + .dialog-loader-header { + padding: 12px 16px; + } + + .dialog-loader-body { + padding: 16px; + } + + .dialog-loader-footer { + padding: 12px 16px; + position: fixed; + bottom: 0; + width: 468px; + + @media (max-width: 550px) { + width: 288px; + } + } + ` + : css` + .dialog-loader-header { + border-bottom: 1px solid rgb(222, 226, 230); + padding: 12px 0; + } + + .dialog-loader-body { + padding: 16px 0; + } + + .dialog-loader-footer { + position: fixed; + bottom: 16px; + width: 293px; + } + `} +`; + +export default StyledDialogAsideLoader; diff --git a/packages/asc-web-common/components/Loaders/DialogAsideLoader/index.js b/packages/asc-web-common/components/Loaders/DialogAsideLoader/index.js new file mode 100644 index 00000000000..93a057aee83 --- /dev/null +++ b/packages/asc-web-common/components/Loaders/DialogAsideLoader/index.js @@ -0,0 +1 @@ +export default from "./DialogAsideLoader"; diff --git a/packages/asc-web-common/components/Loaders/DialogLoader/DialogLoader.js b/packages/asc-web-common/components/Loaders/DialogLoader/DialogLoader.js new file mode 100644 index 00000000000..a94b6b8b1e0 --- /dev/null +++ b/packages/asc-web-common/components/Loaders/DialogLoader/DialogLoader.js @@ -0,0 +1,32 @@ +import React from "react"; +import Loaders from "../../Loaders"; +import StyledDialogLoader from "./StyledDialogLoader"; + +const DialogLoader = () => { + return ( + +
+ + +
+
+ +
+ +
+ + +
+
+ ); +}; + +export default DialogLoader; diff --git a/packages/asc-web-common/components/Loaders/DialogLoader/StyledDialogLoader.js b/packages/asc-web-common/components/Loaders/DialogLoader/StyledDialogLoader.js new file mode 100644 index 00000000000..d4f33b77f1c --- /dev/null +++ b/packages/asc-web-common/components/Loaders/DialogLoader/StyledDialogLoader.js @@ -0,0 +1,27 @@ +import styled from "styled-components"; + +const StyledDialogLoader = styled.div` + .dialog-loader-header { + border-bottom: 1px solid rgb(222, 226, 230); + display: flex; + padding: 12px 0; + } + + .dialog-loader-body { + display: flex; + flex-direction: column; + justify-content: center; + padding-top: 12px; + } + + .dialog-loader-footer { + display: flex; + padding-top: 12px; + } + + .dialog-loader-icon { + margin-left: auto; + } +`; + +export default StyledDialogLoader; diff --git a/packages/asc-web-common/components/Loaders/DialogLoader/index.js b/packages/asc-web-common/components/Loaders/DialogLoader/index.js new file mode 100644 index 00000000000..7f451024a10 --- /dev/null +++ b/packages/asc-web-common/components/Loaders/DialogLoader/index.js @@ -0,0 +1 @@ +export default from "./DialogLoader"; diff --git a/packages/asc-web-common/components/Loaders/TreeFolderLoader/TreeFolderLoader.js b/packages/asc-web-common/components/Loaders/TreeFolderLoader/TreeFolderLoader.js index a3a3fe91895..4217798d250 100644 --- a/packages/asc-web-common/components/Loaders/TreeFolderLoader/TreeFolderLoader.js +++ b/packages/asc-web-common/components/Loaders/TreeFolderLoader/TreeFolderLoader.js @@ -2,7 +2,7 @@ import React from "react"; import PropTypes from "prop-types"; import { StyledTreeFolder, StyledContainer } from "./StyledTreeFolderLoader"; import RectangleLoader from "../RectangleLoader"; -import CircleLoader from "../CircleLoader"; +import TreeNodeLoader from "../TreeNodeLoader"; const TreeFolderLoader = ({ id, className, style, ...rest }) => { const { @@ -19,173 +19,19 @@ const TreeFolderLoader = ({ id, className, style, ...rest }) => { return (
- - - - - - + + + - - - - - - + + + - - + diff --git a/packages/asc-web-common/components/Loaders/TreeNodeLoader/TreeNodeLoader.js b/packages/asc-web-common/components/Loaders/TreeNodeLoader/TreeNodeLoader.js new file mode 100644 index 00000000000..2ad3531aa52 --- /dev/null +++ b/packages/asc-web-common/components/Loaders/TreeNodeLoader/TreeNodeLoader.js @@ -0,0 +1,44 @@ +import React from "react"; +import RectangleLoader from "../RectangleLoader"; +import CircleLoader from "../CircleLoader"; + +const TreeNodeLoader = ({ + title, + borderRadius, + backgroundColor, + foregroundColor, + backgroundOpacity, + foregroundOpacity, + speed, + animate, +}) => { + return ( + <> + + + + ); +}; + +export default TreeNodeLoader; diff --git a/packages/asc-web-common/components/Loaders/TreeNodeLoader/index.js b/packages/asc-web-common/components/Loaders/TreeNodeLoader/index.js new file mode 100644 index 00000000000..81d7a967c7e --- /dev/null +++ b/packages/asc-web-common/components/Loaders/TreeNodeLoader/index.js @@ -0,0 +1 @@ +export default from "./TreeNodeLoader"; diff --git a/packages/asc-web-common/components/Loaders/TreeSettingsLoader/StyledTreeSettingsLoader.js b/packages/asc-web-common/components/Loaders/TreeSettingsLoader/StyledTreeSettingsLoader.js new file mode 100644 index 00000000000..9171b5d0c17 --- /dev/null +++ b/packages/asc-web-common/components/Loaders/TreeSettingsLoader/StyledTreeSettingsLoader.js @@ -0,0 +1,12 @@ +import styled from "styled-components"; + +const StyledTreeSettingsLoader = styled.div` + width: 90%; + display: grid; + grid-template-columns: 8px 1fr; + grid-template-rows: 1fr; + grid-column-gap: 6px; + margin: 24px 0; +`; + +export default StyledTreeSettingsLoader; diff --git a/packages/asc-web-common/components/Loaders/TreeSettingsLoader/TreeSettingsLoader.js b/packages/asc-web-common/components/Loaders/TreeSettingsLoader/TreeSettingsLoader.js new file mode 100644 index 00000000000..f0fdf434f18 --- /dev/null +++ b/packages/asc-web-common/components/Loaders/TreeSettingsLoader/TreeSettingsLoader.js @@ -0,0 +1,28 @@ +import React from "react"; +import PropTypes from "prop-types"; +import StyledTreeSettingsLoader from "./StyledTreeSettingsLoader"; +import TreeNodeLoader from "../TreeNodeLoader"; + +const TreeSettingsLoader = ({ id, className, style, ...rest }) => { + return ( +
+ + + +
+ ); +}; + +TreeSettingsLoader.propTypes = { + id: PropTypes.string, + className: PropTypes.string, + style: PropTypes.object, +}; + +TreeSettingsLoader.defaultProps = { + id: undefined, + className: undefined, + style: undefined, +}; + +export default TreeSettingsLoader; diff --git a/packages/asc-web-common/components/Loaders/TreeSettingsLoader/index.js b/packages/asc-web-common/components/Loaders/TreeSettingsLoader/index.js new file mode 100644 index 00000000000..dba2dfe9df8 --- /dev/null +++ b/packages/asc-web-common/components/Loaders/TreeSettingsLoader/index.js @@ -0,0 +1 @@ +export default from "./TreeSettingsLoader"; diff --git a/packages/asc-web-common/components/Loaders/index.js b/packages/asc-web-common/components/Loaders/index.js index 729ea41a801..4c9035cbffa 100644 --- a/packages/asc-web-common/components/Loaders/index.js +++ b/packages/asc-web-common/components/Loaders/index.js @@ -4,6 +4,7 @@ import Header from "./HeaderLoader"; import SectionHeader from "./SectionHeaderLoader"; import ArticleHeader from "./ArticleHeaderLoader"; import TreeFolders from "./TreeFolderLoader"; +import TreeSettingsLoader from "./TreeSettingsLoader"; import Row from "./RowLoader"; import Rows from "./RowsLoader"; import Text from "./TextLoader"; @@ -14,6 +15,8 @@ import Group from "./GroupLoader"; import HistoryRows from "./HistoryRowsLoader"; import Tile from "./TileLoader"; import Tiles from "./TilesLoader"; +import DialogLoader from "./DialogLoader"; +import DialogAsideLoader from "./DialogAsideLoader"; export default { Rectangle, @@ -22,6 +25,7 @@ export default { SectionHeader, ArticleHeader, TreeFolders, + TreeSettingsLoader, Row, Rows, Text, @@ -32,4 +36,6 @@ export default { HistoryRows, Tile, Tiles, + DialogLoader, + DialogAsideLoader, }; diff --git a/packages/asc-web-components/modal-dialog/index.js b/packages/asc-web-components/modal-dialog/index.js index e877714ddab..27fcfc36f8f 100644 --- a/packages/asc-web-components/modal-dialog/index.js +++ b/packages/asc-web-components/modal-dialog/index.js @@ -15,6 +15,7 @@ import { BodyBox, } from "./styled-modal-dialog"; import Portal from "../portal"; +import Loaders from "@appserver/common/components/Loaders"; function Header() { return null; @@ -104,6 +105,7 @@ class ModalDialog extends React.Component { id, style, children, + isLoading, } = this.props; let header = null; @@ -143,16 +145,22 @@ class ModalDialog extends React.Component { style={style} > - - - {header ? header.props.children : null} - - - - - {body ? body.props.children : null} - - {footer ? footer.props.children : null} + {isLoading ? ( + + ) : ( + <> + + + {header ? header.props.children : null} + + + + + {body ? body.props.children : null} + + {footer ? footer.props.children : null} + + )} @@ -171,21 +179,27 @@ class ModalDialog extends React.Component { className="modal-dialog-aside not-selectable" > - - - {header ? header.props.children : null} - - {scale ? : ""} - - - {body ? body.props.children : null} - - - {footer ? footer.props.children : null} - + {isLoading ? ( + + ) : ( + <> + + + {header ? header.props.children : null} + + {scale ? : ""} + + + {body ? body.props.children : null} + + + {footer ? footer.props.children : null} + + + )} @@ -214,6 +228,7 @@ ModalDialog.propTypes = { bodyPadding: PropTypes.string, contentHeight: PropTypes.string, contentWidth: PropTypes.string, + isLoading: PropTypes.bool, className: PropTypes.string, id: PropTypes.string, style: PropTypes.oneOfType([PropTypes.object, PropTypes.array]), diff --git a/products/ASC.CRM/Client/public/index.html b/products/ASC.CRM/Client/public/index.html index 8eb5fffff02..974dc7a9dbd 100644 --- a/products/ASC.CRM/Client/public/index.html +++ b/products/ASC.CRM/Client/public/index.html @@ -91,7 +91,7 @@
-
+