Merge branch 'release/v1.2' into feature/smart-banner
This commit is contained in:
commit
dc7d837e46
@ -798,38 +798,66 @@
|
||||
},
|
||||
{
|
||||
"Excludes": [
|
||||
"A-Ω",
|
||||
"αδειάζοντάς",
|
||||
"Αζερική",
|
||||
"αναγνωσμένου",
|
||||
"αναγνωσμένων",
|
||||
"ανακατευθυνθείτε",
|
||||
"αντιγράφηκαν",
|
||||
"αντιγράφηκε",
|
||||
"Αντιγράφηκε",
|
||||
"απενεργοποιημένοι",
|
||||
"Έκδ",
|
||||
"επαληθευτή",
|
||||
"Επαληθευτής",
|
||||
"Λαοτινή",
|
||||
"ΛΔΚ",
|
||||
"Λετονικά",
|
||||
"λπ",
|
||||
"Μεταφορτώθηκε",
|
||||
"μεταφορτώνετε",
|
||||
"Ξεκαρφίτσωμα",
|
||||
"πάροχος",
|
||||
"περιήγησής",
|
||||
"προεπιλεγμένου",
|
||||
"Προεπισκόπηση",
|
||||
"υποφάκελό",
|
||||
"υποφακέλους",
|
||||
"ψήφιο",
|
||||
"Ω-A",
|
||||
"Desktop",
|
||||
"Check-in",
|
||||
"Office",
|
||||
"Enterprise"
|
||||
"A-Ω",
|
||||
"αδειάζοντάς",
|
||||
"Αζερική",
|
||||
"αναγνωσμένου",
|
||||
"αναγνωσμένων",
|
||||
"ανακατευθυνθείτε",
|
||||
"αντιγράφηκαν",
|
||||
"αντιγράφηκε",
|
||||
"Αντιγράφηκε",
|
||||
"απενεργοποιημένοι",
|
||||
"αποεπιλέξτε",
|
||||
"Αποθέστε",
|
||||
"αυτοεγγραφή",
|
||||
"Έκδ",
|
||||
"επαληθευτή",
|
||||
"Επαληθευτής",
|
||||
"Επαναποστολή",
|
||||
"Ξεκαρφίτσωμα",
|
||||
"Λαοτινή",
|
||||
"παρόχου",
|
||||
"ΛΔΚ",
|
||||
"Λετονικά",
|
||||
"λπ",
|
||||
"ληγμένος",
|
||||
"πάροχος",
|
||||
"περιήγησής",
|
||||
"προεπιλεγμένου",
|
||||
"Μεταφορτώθηκε",
|
||||
"μεταφορτώνετε",
|
||||
"Μεταφορτώθηκαν",
|
||||
"mέλη",
|
||||
"Προεπισκόπηση",
|
||||
"υποενότητα",
|
||||
"υποφάκελό",
|
||||
"υποφακέλους",
|
||||
"ψήφιο",
|
||||
"Ω-A",
|
||||
"Check-in",
|
||||
"Cloud",
|
||||
"Desktop",
|
||||
"domain",
|
||||
"DOCXF",
|
||||
"DropBox",
|
||||
"com",
|
||||
"Editors",
|
||||
"Enterprise",
|
||||
"GZ",
|
||||
"Http",
|
||||
"label",
|
||||
"Linux",
|
||||
"Mac",
|
||||
"Nextcloud",
|
||||
"Office",
|
||||
"OS",
|
||||
"PDF",
|
||||
"SaaS",
|
||||
"SSO",
|
||||
"White",
|
||||
"Play",
|
||||
"Store"
|
||||
],
|
||||
"Language": "el"
|
||||
},
|
||||
@ -1349,6 +1377,7 @@
|
||||
"resetate",
|
||||
"SaaS",
|
||||
"Saptamanal",
|
||||
"servere",
|
||||
"sînt",
|
||||
"SMS-ul",
|
||||
"SSO",
|
||||
|
@ -40,7 +40,6 @@ const Navigation = ({
|
||||
isCurrentFolderInfo,
|
||||
toggleInfoPanel,
|
||||
isInfoPanelVisible,
|
||||
isShowRootFolder,
|
||||
titles,
|
||||
...rest
|
||||
}) => {
|
||||
@ -190,7 +189,6 @@ const Navigation = ({
|
||||
isRootFolder={isRootFolder}
|
||||
toggleInfoPanel={toggleInfoPanel}
|
||||
isInfoPanelVisible={isInfoPanelVisible}
|
||||
isShowRootFolder={isShowRootFolder}
|
||||
/>
|
||||
)}
|
||||
</>
|
||||
|
@ -39,8 +39,7 @@ const StyledContainer = styled.div`
|
||||
`;
|
||||
|
||||
const StyledInfoPanelToggleWrapper = styled.div`
|
||||
display: ${(props) =>
|
||||
props.isInfoPanelVisible && !props.isShowRootFolder ? "none" : "flex"};
|
||||
display: ${(props) => (props.isInfoPanelVisible ? "none" : "flex")};
|
||||
|
||||
align-items: center;
|
||||
align-self: center;
|
||||
@ -87,13 +86,11 @@ const ToggleInfoPanelButton = ({
|
||||
isRootFolder,
|
||||
isInfoPanelVisible,
|
||||
toggleInfoPanel,
|
||||
isShowRootFolder,
|
||||
}) => {
|
||||
return (
|
||||
<StyledInfoPanelToggleWrapper
|
||||
isRootFolder={isRootFolder}
|
||||
isInfoPanelVisible={isInfoPanelVisible}
|
||||
isShowRootFolder={isShowRootFolder}
|
||||
>
|
||||
<div className="info-panel-toggle-bg">
|
||||
<IconButton
|
||||
|
@ -133,22 +133,8 @@ const StyledCrossIcon = styled(CrossIcon)`
|
||||
|
||||
StyledCrossIcon.defaultProps = { theme: Base };
|
||||
|
||||
const InfoPanel = ({
|
||||
children,
|
||||
isVisible,
|
||||
setIsVisible,
|
||||
viewAs,
|
||||
isRootFolder,
|
||||
selectedItems,
|
||||
|
||||
isShowRootFolder,
|
||||
setIsShowRootFolder,
|
||||
}) => {
|
||||
if (isRootFolder && selectedItems.length === 0) setIsShowRootFolder(true);
|
||||
else setIsShowRootFolder(false);
|
||||
|
||||
const InfoPanel = ({ children, isVisible, setIsVisible, viewAs }) => {
|
||||
if (!isVisible) return null;
|
||||
if (isShowRootFolder) return null;
|
||||
|
||||
const closeInfoPanel = () => setIsVisible(false);
|
||||
|
||||
@ -196,44 +182,17 @@ StyledInfoPanelWrapper.defaultProps = { theme: Base };
|
||||
StyledInfoPanel.defaultProps = { theme: Base };
|
||||
InfoPanel.defaultProps = { theme: Base };
|
||||
|
||||
export default inject(({ infoPanelStore, selectedFolderStore, filesStore }) => {
|
||||
let isVisible = false,
|
||||
isRootFolder = false,
|
||||
setIsVisible = () => {},
|
||||
selection = [],
|
||||
bufferSelection = null,
|
||||
isShowRootFolder = false,
|
||||
setIsShowRootFolder = () => {};
|
||||
export default inject(({ infoPanelStore }) => {
|
||||
let isVisible = false;
|
||||
let setIsVisible = () => {};
|
||||
|
||||
if (infoPanelStore) {
|
||||
isVisible = infoPanelStore.isVisible;
|
||||
setIsVisible = infoPanelStore.setIsVisible;
|
||||
isShowRootFolder = infoPanelStore.isShowRootFolder;
|
||||
setIsShowRootFolder = infoPanelStore.setIsShowRootFolder;
|
||||
}
|
||||
|
||||
if (selectedFolderStore) {
|
||||
isRootFolder = selectedFolderStore.isRootFolder;
|
||||
}
|
||||
|
||||
if (filesStore) {
|
||||
selection = filesStore.selection;
|
||||
bufferSelection = filesStore.bufferSelection;
|
||||
}
|
||||
|
||||
const selectedItems =
|
||||
selection?.length > 0
|
||||
? [...selection]
|
||||
: bufferSelection
|
||||
? [bufferSelection]
|
||||
: [];
|
||||
|
||||
return {
|
||||
isVisible,
|
||||
setIsVisible,
|
||||
isRootFolder,
|
||||
selectedItems,
|
||||
isShowRootFolder,
|
||||
setIsShowRootFolder,
|
||||
};
|
||||
})(InfoPanel);
|
||||
|
@ -1,62 +1,67 @@
|
||||
import React from "react";
|
||||
import React, { useRef } from "react";
|
||||
import PropTypes from "prop-types";
|
||||
import { StyledTextarea, StyledScrollbar } from "./styled-textarea";
|
||||
|
||||
// eslint-disable-next-line react/prop-types, no-unused-vars
|
||||
|
||||
class Textarea extends React.PureComponent {
|
||||
render() {
|
||||
// console.log('Textarea render');
|
||||
const {
|
||||
className,
|
||||
id,
|
||||
isDisabled,
|
||||
isReadOnly,
|
||||
hasError,
|
||||
heightScale,
|
||||
maxLength,
|
||||
name,
|
||||
onChange,
|
||||
placeholder,
|
||||
style,
|
||||
tabIndex,
|
||||
value,
|
||||
fontSize,
|
||||
heightTextArea,
|
||||
color,
|
||||
theme,
|
||||
autoFocus,
|
||||
} = this.props;
|
||||
const Textarea = ({
|
||||
className,
|
||||
id,
|
||||
isDisabled,
|
||||
isReadOnly,
|
||||
hasError,
|
||||
heightScale,
|
||||
maxLength,
|
||||
name,
|
||||
onChange,
|
||||
placeholder,
|
||||
style,
|
||||
tabIndex,
|
||||
value,
|
||||
fontSize,
|
||||
heightTextArea,
|
||||
color,
|
||||
theme,
|
||||
autoFocus,
|
||||
areaSelect,
|
||||
}) => {
|
||||
const areaRef = useRef(null);
|
||||
|
||||
return (
|
||||
<StyledScrollbar
|
||||
className={className}
|
||||
style={style}
|
||||
stype="preMediumBlack"
|
||||
React.useEffect(() => {
|
||||
if (areaSelect && areaRef.current) {
|
||||
areaRef.current.select();
|
||||
}
|
||||
}, [areaRef.current]);
|
||||
|
||||
return (
|
||||
<StyledScrollbar
|
||||
className={className}
|
||||
style={style}
|
||||
stype="preMediumBlack"
|
||||
isDisabled={isDisabled}
|
||||
hasError={hasError}
|
||||
heightScale={heightScale}
|
||||
heighttextarea={heightTextArea}
|
||||
>
|
||||
<StyledTextarea
|
||||
id={id}
|
||||
placeholder={placeholder}
|
||||
onChange={(e) => onChange && onChange(e)}
|
||||
maxLength={maxLength}
|
||||
name={name}
|
||||
tabIndex={tabIndex}
|
||||
isDisabled={isDisabled}
|
||||
hasError={hasError}
|
||||
heightScale={heightScale}
|
||||
heighttextarea={heightTextArea}
|
||||
>
|
||||
<StyledTextarea
|
||||
id={id}
|
||||
placeholder={placeholder}
|
||||
onChange={(e) => onChange && onChange(e)}
|
||||
maxLength={maxLength}
|
||||
name={name}
|
||||
tabIndex={tabIndex}
|
||||
isDisabled={isDisabled}
|
||||
disabled={isDisabled}
|
||||
readOnly={isReadOnly}
|
||||
value={value}
|
||||
fontSize={fontSize}
|
||||
color={color}
|
||||
autoFocus={autoFocus}
|
||||
/>
|
||||
</StyledScrollbar>
|
||||
);
|
||||
}
|
||||
}
|
||||
disabled={isDisabled}
|
||||
readOnly={isReadOnly}
|
||||
value={value}
|
||||
fontSize={fontSize}
|
||||
color={color}
|
||||
autoFocus={autoFocus}
|
||||
ref={areaRef}
|
||||
/>
|
||||
</StyledScrollbar>
|
||||
);
|
||||
};
|
||||
|
||||
Textarea.propTypes = {
|
||||
/** Class name */
|
||||
@ -92,6 +97,7 @@ Textarea.propTypes = {
|
||||
/** Specifies the text color */
|
||||
color: PropTypes.string,
|
||||
autoFocus: PropTypes.bool,
|
||||
areaSelect: PropTypes.bool,
|
||||
};
|
||||
|
||||
Textarea.defaultProps = {
|
||||
@ -105,6 +111,7 @@ Textarea.defaultProps = {
|
||||
value: "",
|
||||
fontSize: 13,
|
||||
isAutoFocussed: false,
|
||||
areaSelect: false,
|
||||
};
|
||||
|
||||
export default Textarea;
|
||||
|
@ -40,13 +40,11 @@ StyledScrollbar.defaultProps = {
|
||||
};
|
||||
|
||||
// eslint-disable-next-line react/prop-types, no-unused-vars
|
||||
const ClearTextareaAutosize = ({
|
||||
isDisabled,
|
||||
heightScale,
|
||||
hasError,
|
||||
color,
|
||||
...props
|
||||
}) => <TextareaAutosize {...props} />;
|
||||
const ClearTextareaAutosize = React.forwardRef(
|
||||
({ isDisabled, heightScale, hasError, color, ...props }, ref) => (
|
||||
<TextareaAutosize {...props} ref={ref} />
|
||||
)
|
||||
);
|
||||
|
||||
const StyledTextarea = styled(ClearTextareaAutosize).attrs((props) => ({
|
||||
autoFocus: props.autoFocus,
|
||||
|
Binary file not shown.
After Width: | Height: | Size: 5.5 KiB |
@ -76,7 +76,7 @@
|
||||
"TrashEmptyDescription": "Όλα τα διαγραμμένα αρχεία μεταφέρονται στον Κάδο ανακύκλωσης. Επαναφέρετε τα αρχεία που διαγράφηκαν κατά λάθος ή διαγράψτε τα οριστικά. Λάβετε υπόψη ότι τα αρχεία που έχουν διαγραφεί από τον Κάδο ανακύκλωσης δεν μπορούν πλέον να ανακτηθούν",
|
||||
"UnblockVersion": "Αναίρεση αποκλεισμού / Check-in",
|
||||
"UploadToFolder": "Μεταφόρτωση σε φάκελο",
|
||||
"VersionBadge": "V.{{version}}",
|
||||
"VersionBadge": "Έκδ.{{version}}",
|
||||
"VersionHistory": "Ιστορικό Εκδόσεων",
|
||||
"ViewList": "Λίστα",
|
||||
"ViewTiles": "Πλακίδια"
|
||||
|
@ -8,5 +8,6 @@
|
||||
"SystemProperties": "System properties",
|
||||
"Versions": "Versions",
|
||||
"ViewDetails": "View Details",
|
||||
"WhoHasAccess": "Who has access"
|
||||
"WhoHasAccess": "Who has access",
|
||||
"EmptyScreenText": "See file and folder details here"
|
||||
}
|
||||
|
@ -8,5 +8,6 @@
|
||||
"SystemProperties": "Системные свойства",
|
||||
"Versions": "Версии",
|
||||
"ViewDetails": "Просмотреть подробную информацию",
|
||||
"WhoHasAccess": "У кого есть доступ"
|
||||
"WhoHasAccess": "У кого есть доступ",
|
||||
"EmptyScreenText": "Здесь будут представлены свойства файлов и папок"
|
||||
}
|
||||
|
@ -89,13 +89,13 @@ class Tile extends React.PureComponent {
|
||||
|
||||
onCreateForm = () => {
|
||||
const { match, history } = this.props;
|
||||
const { setInfoPanelVisible } = this.props;
|
||||
const { setIsInfoPanelVisible } = this.props;
|
||||
|
||||
const filter = FilesFilter.getDefault();
|
||||
filter.folder = match.params.folderId;
|
||||
const urlFilter = filter.toUrlParams();
|
||||
|
||||
setInfoPanelVisible(false);
|
||||
setIsInfoPanelVisible(false);
|
||||
|
||||
history.push(
|
||||
combineUrl(
|
||||
@ -108,7 +108,7 @@ class Tile extends React.PureComponent {
|
||||
|
||||
onShowTemplateInfo = () => {
|
||||
if (!this.props.isInfoPanelVisible) {
|
||||
this.props.setInfoPanelVisible(true);
|
||||
this.props.setIsInfoPanelVisible(true);
|
||||
}
|
||||
};
|
||||
|
||||
@ -212,7 +212,7 @@ export default inject(
|
||||
({ filesStore, settingsStore, infoPanelStore }, { item }) => {
|
||||
const { gallerySelected, setGallerySelected } = filesStore;
|
||||
const { getIcon } = settingsStore;
|
||||
const { setIsVisible, isVisible } = infoPanelStore;
|
||||
const { isVisible, setIsVisible } = infoPanelStore;
|
||||
|
||||
const isSelected = item.id === gallerySelected?.id;
|
||||
|
||||
@ -220,7 +220,7 @@ export default inject(
|
||||
isSelected,
|
||||
setGallerySelected,
|
||||
getIcon,
|
||||
setInfoPanelVisible: setIsVisible,
|
||||
setIsInfoPanelVisible: setIsVisible,
|
||||
isInfoPanelVisible: isVisible,
|
||||
};
|
||||
}
|
||||
|
@ -0,0 +1,39 @@
|
||||
import React from "react";
|
||||
import styled from "styled-components";
|
||||
import { withTranslation } from "react-i18next";
|
||||
|
||||
const EmptyScreenContainer = styled.div`
|
||||
margin: 80px auto;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
flex-direction: column;
|
||||
gap: 32px;
|
||||
|
||||
.empty-screen-text {
|
||||
font-family: "Open Sans";
|
||||
font-style: normal;
|
||||
font-weight: 600;
|
||||
font-size: 14px;
|
||||
line-height: 16px;
|
||||
text-align: center;
|
||||
}
|
||||
`;
|
||||
|
||||
const EmptyScreen = ({ t }) => {
|
||||
return (
|
||||
<EmptyScreenContainer>
|
||||
<div className="no-thumbnail-img-wrapper">
|
||||
<img
|
||||
size="96px"
|
||||
className="no-thumbnail-img"
|
||||
src="images/empty_screen_info_panel.png"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div className="empty-screen-text">{t("EmptyScreenText")}</div>
|
||||
</EmptyScreenContainer>
|
||||
);
|
||||
};
|
||||
|
||||
export default withTranslation(["InfoPanel"])(EmptyScreen);
|
@ -28,6 +28,7 @@ const SingleItem = (props) => {
|
||||
dontShowSize,
|
||||
dontShowLocation,
|
||||
dontShowAccess,
|
||||
dontShowOwner,
|
||||
personal,
|
||||
createThumbnail,
|
||||
culture,
|
||||
@ -161,6 +162,7 @@ const SingleItem = (props) => {
|
||||
},
|
||||
];
|
||||
|
||||
if (dontShowOwner) result.shift();
|
||||
if (item.isFolder) return result;
|
||||
|
||||
result.splice(3, 0, {
|
||||
|
@ -8,6 +8,7 @@ import GalleryItem from "./GalleryItem";
|
||||
import GalleryEmptyScreen from "./GalleryEmptyScreen";
|
||||
import { StyledInfoRoomBody } from "./styles/styles.js";
|
||||
import { Base } from "@appserver/components/themes";
|
||||
import EmptyScreen from "./EmptyScreen";
|
||||
|
||||
const InfoPanelBodyContent = ({
|
||||
t,
|
||||
@ -19,9 +20,13 @@ const InfoPanelBodyContent = ({
|
||||
getShareUsers,
|
||||
onSelectItem,
|
||||
setSharingPanelVisible,
|
||||
isRootFolder,
|
||||
isRecycleBinFolder,
|
||||
isRecentFolder,
|
||||
isFavoritesFolder,
|
||||
isShareFolder,
|
||||
isCommonFolder,
|
||||
isPrivacyFolder,
|
||||
isGallery,
|
||||
gallerySelected,
|
||||
personal,
|
||||
@ -29,13 +34,14 @@ const InfoPanelBodyContent = ({
|
||||
culture,
|
||||
}) => {
|
||||
const singleItem = (item) => {
|
||||
const dontShowLocation = item.isFolder && item.parentId === 0;
|
||||
const dontShowLocation = isRootFolder;
|
||||
const dontShowSize = item.isFolder && (isFavoritesFolder || isRecentFolder);
|
||||
const dontShowAccess =
|
||||
isRecycleBinFolder ||
|
||||
(item.isFolder && item.parentId === 0) ||
|
||||
isRootFolder ||
|
||||
item.rootFolderId === 7 ||
|
||||
(item.isFolder && item.pathParts && item.pathParts[0] === 7);
|
||||
const dontShowOwner = isRootFolder && (isFavoritesFolder || isRecentFolder);
|
||||
|
||||
return (
|
||||
<SingleItem
|
||||
@ -50,6 +56,7 @@ const InfoPanelBodyContent = ({
|
||||
dontShowLocation={dontShowLocation}
|
||||
dontShowSize={dontShowSize}
|
||||
dontShowAccess={dontShowAccess}
|
||||
dontShowOwner={dontShowOwner}
|
||||
personal={personal}
|
||||
culture={culture}
|
||||
createThumbnail={createThumbnail}
|
||||
@ -69,10 +76,21 @@ const InfoPanelBodyContent = ({
|
||||
<StyledInfoRoomBody>
|
||||
<>
|
||||
{selectedItems.length === 0 ? (
|
||||
singleItem({
|
||||
...selectedFolder,
|
||||
isFolder: true,
|
||||
})
|
||||
// Can get future changes, currently only "My documents" displays its info
|
||||
isRootFolder &&
|
||||
(isRecycleBinFolder ||
|
||||
isRecentFolder ||
|
||||
isFavoritesFolder ||
|
||||
isShareFolder ||
|
||||
isCommonFolder ||
|
||||
isPrivacyFolder) ? (
|
||||
<EmptyScreen />
|
||||
) : (
|
||||
singleItem({
|
||||
...selectedFolder,
|
||||
isFolder: true,
|
||||
})
|
||||
)
|
||||
) : selectedItems.length === 1 ? (
|
||||
singleItem(selectedItems[0])
|
||||
) : (
|
||||
@ -108,10 +126,14 @@ export default inject(
|
||||
const { getIcon, getFolderIcon } = settingsStore;
|
||||
const { onSelectItem } = filesActionsStore;
|
||||
const { setSharingPanelVisible } = dialogsStore;
|
||||
const { isRootFolder } = selectedFolderStore;
|
||||
const {
|
||||
isRecycleBinFolder,
|
||||
isRecentFolder,
|
||||
isFavoritesFolder,
|
||||
isShareFolder,
|
||||
isCommonFolder,
|
||||
isPrivacyFolder,
|
||||
} = treeFoldersStore;
|
||||
|
||||
const selectedItems =
|
||||
@ -130,9 +152,15 @@ export default inject(
|
||||
getFolderIcon,
|
||||
onSelectItem,
|
||||
setSharingPanelVisible,
|
||||
|
||||
isRootFolder,
|
||||
isRecycleBinFolder,
|
||||
isRecentFolder,
|
||||
isFavoritesFolder,
|
||||
isShareFolder,
|
||||
isCommonFolder,
|
||||
isPrivacyFolder,
|
||||
|
||||
gallerySelected,
|
||||
personal,
|
||||
createThumbnail,
|
||||
|
@ -362,7 +362,6 @@ class SectionHeaderContent extends React.Component {
|
||||
isHeaderIndeterminate,
|
||||
showText,
|
||||
toggleInfoPanel,
|
||||
isShowRootFolder,
|
||||
} = this.props;
|
||||
const menuItems = this.getMenuItems();
|
||||
const isLoading = !title || !tReady;
|
||||
@ -420,7 +419,6 @@ class SectionHeaderContent extends React.Component {
|
||||
onBackToParentFolder={this.onBackToParentFolder}
|
||||
toggleInfoPanel={toggleInfoPanel}
|
||||
isInfoPanelVisible={isInfoPanelVisible}
|
||||
isShowRootFolder={isShowRootFolder}
|
||||
titles={{
|
||||
trash: t("EmptyRecycleBin"),
|
||||
}}
|
||||
@ -485,7 +483,7 @@ export default inject(
|
||||
backToParentFolder,
|
||||
} = filesActionsStore;
|
||||
|
||||
const { isVisible, isShowRootFolder, toggleIsVisible } = infoPanelStore;
|
||||
const { toggleIsVisible, isVisible } = infoPanelStore;
|
||||
|
||||
return {
|
||||
showText: auth.settingsStore.showText,
|
||||
@ -498,7 +496,6 @@ export default inject(
|
||||
canCreate,
|
||||
toggleInfoPanel: toggleIsVisible,
|
||||
isInfoPanelVisible: isVisible,
|
||||
isShowRootFolder,
|
||||
isHeaderVisible,
|
||||
isHeaderIndeterminate,
|
||||
isHeaderChecked,
|
||||
|
@ -173,6 +173,7 @@ const VersionRow = (props) => {
|
||||
value={commentValue}
|
||||
isDisabled={isSavingComment}
|
||||
autoFocus={true}
|
||||
areaSelect={true}
|
||||
/>
|
||||
</>
|
||||
)}
|
||||
|
@ -2,7 +2,6 @@ import { makeAutoObservable } from "mobx";
|
||||
|
||||
class InfoPanelStore {
|
||||
isVisible = false;
|
||||
isShowRootFolder = false;
|
||||
|
||||
constructor() {
|
||||
makeAutoObservable(this);
|
||||
@ -12,17 +11,13 @@ class InfoPanelStore {
|
||||
this.isVisible = !this.isVisible;
|
||||
};
|
||||
|
||||
setVisible = () => {
|
||||
this.isVisible = true;
|
||||
};
|
||||
|
||||
setIsVisible = (bool) => {
|
||||
this.isVisible = bool;
|
||||
};
|
||||
|
||||
setIsToggleVisible = (bool) => {
|
||||
this.isToggleVisible = bool;
|
||||
};
|
||||
|
||||
setIsShowRootFolder = (bool) => {
|
||||
this.isShowRootFolder = bool;
|
||||
};
|
||||
}
|
||||
|
||||
export default InfoPanelStore;
|
||||
|
@ -0,0 +1,42 @@
|
||||
{
|
||||
"count": 1,
|
||||
"response": {
|
||||
"files": [],
|
||||
"folders": [],
|
||||
"current": {
|
||||
"parentId": 0,
|
||||
"filesCount": 6390,
|
||||
"foldersCount": 40,
|
||||
"new": 0,
|
||||
"id": 8,
|
||||
"rootFolderId": 8,
|
||||
"canShare": false,
|
||||
"canEdit": false,
|
||||
"title": "Trash",
|
||||
"access": 0,
|
||||
"shared": false,
|
||||
"created": "2021-09-16T12:09:15.0000000Z",
|
||||
"createdBy": {
|
||||
"id": "fcfa85e3-15fc-11ec-8f4f-80ce62334fc7",
|
||||
"displayName": "Administrator ",
|
||||
"avatarSmall": "/images/default_user_photo_size_32-32.png",
|
||||
"profileUrl": "http://localhost:8092/products/people/view/administrator"
|
||||
},
|
||||
"updated": "2021-09-16T12:09:15.0000000Z",
|
||||
"rootFolderType": 3,
|
||||
"updatedBy": {
|
||||
"id": "fcfa85e3-15fc-11ec-8f4f-80ce62334fc7",
|
||||
"displayName": "Administrator ",
|
||||
"avatarSmall": "/images/default_user_photo_size_32-32.png",
|
||||
"profileUrl": "http://localhost:8092/products/people/view/administrator"
|
||||
}
|
||||
},
|
||||
"pathParts": [8],
|
||||
"startIndex": 0,
|
||||
"count": 1,
|
||||
"total": 1,
|
||||
"new": 0
|
||||
},
|
||||
"status": 0,
|
||||
"statusCode": 200
|
||||
}
|
@ -139,7 +139,15 @@ namespace ASC.Web.Files.Services.WCFService.FileOperations
|
||||
else if (!string.IsNullOrEmpty(error2))
|
||||
{
|
||||
Error = error2;
|
||||
}
|
||||
}
|
||||
|
||||
var finished1 = thirdpartyTask.GetProperty<bool?>(FINISHED);
|
||||
var finished2 = daoTask.GetProperty<bool?>(FINISHED);
|
||||
|
||||
if (finished1 != null && finished2 != null)
|
||||
{
|
||||
TaskInfo.SetProperty(FINISHED, finished1);
|
||||
}
|
||||
|
||||
successProcessed = thirdpartyTask.GetProperty<int>(PROCESSED) + daoTask.GetProperty<int>(PROCESSED);
|
||||
|
||||
|
@ -19,6 +19,7 @@
|
||||
"i18next": "^21.6.5",
|
||||
"prop-types": "^15.7.2",
|
||||
"react": "^17.0.1",
|
||||
"react-device-detect": "^2.2.2",
|
||||
"react-dom": "^17.0.1",
|
||||
"react-helmet": "^6.1.0",
|
||||
"react-i18next": "^11.15.3",
|
||||
|
@ -9,7 +9,10 @@ import {
|
||||
SectionContent,
|
||||
SectionHeader,
|
||||
SectionWrapper,
|
||||
StyledIframe } from "./styled-section";
|
||||
StyledIframe,
|
||||
StyledAction } from "./styled-section";
|
||||
|
||||
import cross from './images/cross.react.svg'
|
||||
|
||||
export const Section = ({name, origin, lang}) => {
|
||||
|
||||
@ -31,8 +34,11 @@ export const Section = ({name, origin, lang}) => {
|
||||
}
|
||||
|
||||
return <StyledSection>
|
||||
<div>
|
||||
<div style={{position: "relative"}}>
|
||||
<StyledIframe scrolling="no" className="iframe" src={url} />
|
||||
<StyledAction>
|
||||
<img style={{width: "16px"}} src={cross} />
|
||||
</StyledAction>
|
||||
</div>
|
||||
<SectionWrapper>
|
||||
<SectionHeader>My documents</SectionHeader>
|
||||
|
@ -0,0 +1,3 @@
|
||||
<svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M7.76288 6.35869C7.56764 6.16343 7.56764 5.84687 7.76288 5.65161L10.9493 2.46498C11.1445 2.26973 11.1445 1.95316 10.9493 1.75791L10.2422 1.05077C10.0469 0.855489 9.73031 0.855489 9.53504 1.05077L6.34878 4.23729C6.15352 4.43257 5.83691 4.43257 5.64165 4.23729L2.46017 1.05556C2.26491 0.860275 1.9483 0.860275 1.75304 1.05556L1.04596 1.76269C0.850716 1.95795 0.850716 2.27451 1.04596 2.46977L4.22755 5.65161C4.42279 5.84687 4.42279 6.16343 4.22755 6.35869L1.0501 9.53639C0.854858 9.73165 0.854858 10.0482 1.0501 10.2435L1.75718 10.9506C1.95245 11.1459 2.26905 11.1459 2.46432 10.9506L5.64165 7.77302C5.83691 7.57774 6.15352 7.57774 6.34878 7.77302L9.5309 10.9554C9.72616 11.1507 10.0428 11.1507 10.238 10.9554L10.9451 10.2483C11.1404 10.053 11.1404 9.73644 10.9451 9.54118L7.76288 6.35869Z" fill="#999976"/>
|
||||
</svg>
|
After Width: | Height: | Size: 958 B |
@ -1,4 +1,5 @@
|
||||
import styled from "styled-components";
|
||||
import styled, { css } from "styled-components";
|
||||
import { isMobile } from "react-device-detect";
|
||||
|
||||
const StyledSection = styled.div`
|
||||
width: 100%;
|
||||
@ -50,5 +51,21 @@ const StyledIframe = styled.iframe`
|
||||
width: 100%;
|
||||
`;
|
||||
|
||||
const StyledAction = styled.div`
|
||||
position: absolute;
|
||||
right: 8px;
|
||||
top: 10px;
|
||||
background: inherit;
|
||||
display: inline-block;
|
||||
border: none;
|
||||
font-size: inherit;
|
||||
color: "#333";
|
||||
cursor: pointer;
|
||||
text-decoration: underline;
|
||||
${isMobile &&
|
||||
css`
|
||||
right: 14px;
|
||||
`};
|
||||
`;
|
||||
|
||||
export {StyledSection, Icon, Name, MainLoader, FilterLoader, SectionContent, SectionHeader, SectionWrapper, StyledIframe}
|
||||
export {StyledSection, Icon, Name, MainLoader, FilterLoader, SectionContent, SectionHeader, SectionWrapper, StyledIframe, StyledAction}
|
@ -15028,6 +15028,13 @@ react-dev-utils@^11.0.4:
|
||||
strip-ansi "6.0.0"
|
||||
text-table "0.2.0"
|
||||
|
||||
react-device-detect@^2.2.2:
|
||||
version "2.2.2"
|
||||
resolved "https://registry.yarnpkg.com/react-device-detect/-/react-device-detect-2.2.2.tgz#dbabbce798ec359c83f574c3edb24cf1cca641a5"
|
||||
integrity sha512-zSN1gIAztUekp5qUT/ybHwQ9fmOqVT1psxpSlTn1pe0CO+fnJHKRLOWWac5nKxOxvOpD/w84hk1I+EydrJp7SA==
|
||||
dependencies:
|
||||
ua-parser-js "^1.0.2"
|
||||
|
||||
react-docgen-typescript@^2.0.0:
|
||||
version "2.2.2"
|
||||
resolved "https://registry.yarnpkg.com/react-docgen-typescript/-/react-docgen-typescript-2.2.2.tgz#4611055e569edc071204aadb20e1c93e1ab1659c"
|
||||
@ -17435,6 +17442,11 @@ typedarray@^0.0.6:
|
||||
resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
|
||||
integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
|
||||
|
||||
ua-parser-js@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-1.0.2.tgz#e2976c34dbfb30b15d2c300b2a53eac87c57a775"
|
||||
integrity sha512-00y/AXhx0/SsnI51fTc0rLRmafiGOM4/O+ny10Ps7f+j/b8p/ZY11ytMgznXkOVo4GQ+KwQG5UQLkLGirsACRg==
|
||||
|
||||
uglify-js@^3.1.4:
|
||||
version "3.15.5"
|
||||
resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.15.5.tgz#2b10f9e0bfb3f5c15a8e8404393b6361eaeb33b3"
|
||||
|
@ -14,7 +14,7 @@
|
||||
"AdministratorsAddedSuccessfully": "Οι διαχειριστές προστέθηκαν με επιτυχία",
|
||||
"AdministratorsRemovedSuccessfully": "Οι διαχειριστές καταργήθηκαν επιτυχώς",
|
||||
"Admins": "Διαχειριστές",
|
||||
"AllDomains": "Οποιoδήποτε domain",
|
||||
"AllDomains": "Οποιοιδήποτε domain",
|
||||
"AutoBackup": "Αυτόματα αντίγραφα ασφαλείας",
|
||||
"AutoBackupDescription": "Χρησιμοποιήστε αυτήν την επιλογή για να δημιουργήσετε αυτόματα αντίγραφα ασφαλείας των δεδομένων της πύλης.",
|
||||
"AutoBackupHelp": "Η επιλογή <strong>Αυτόματα αντίγραφα ασφαλείας</strong> χρησιμοποιείται για την αυτοματοποίηση της διαδικασίας δημιουργίας αντιγράφων ασφαλείας των δεδομένων της πύλης, ώστε να είναι δυνατή η επαναφορά τους αργότερα σε έναν τοπικό διακομιστή.",
|
||||
@ -23,7 +23,7 @@
|
||||
"AutoSavePeriodHelp": "Η ώρα που εμφανίζεται παρακάτω αντιστοιχεί στη ζώνη ώρας που έχει οριστεί στην πύλη.",
|
||||
"Backup": "Αντίγραφα ασφαλείας",
|
||||
"BackupCreatedError": "Προέκυψε σφάλμα. Παρακαλώ επικοινωνήστε με τον διαχειριστή σας.",
|
||||
"BackupCreatedSuccess": "Το εφερδρικό αντίγραφο έχει δημιουργηθεί επιτυχώς.",
|
||||
"BackupCreatedSuccess": "Το εφεδρικό αντίγραφο έχει δημιουργηθεί επιτυχώς.",
|
||||
"BackupList": "Εφεδρική λίστα",
|
||||
"BackupListWarningText": "Εάν διαγράψετε στοιχεία από τη λίστα, θα διαγραφούν και τα αντίστοιχα αρχεία τους. Αυτή η ενέργεια δεν μπορεί να αναιρεθεί. Για να διαγράψετε όλα τα αρχεία, χρησιμοποιήστε τον σύνδεσμο:",
|
||||
"BrowserNoCanvasSupport": "Το πρόγραμμα περιήγησής σας δεν υποστηρίζει την ετικέτα καμβά HTML5.",
|
||||
@ -146,7 +146,7 @@
|
||||
"ThirdPartyStorageDescription": "Το αντίγραφο ασφαλείας μπορεί να αποθηκευτεί σε αποθηκευτικό χώρο τρίτου μέρους. Πριν από αυτό, πρέπει να συνδέσετε την αντίστοιχη υπηρεσία στην ενότητα 'Ενοποίηση'. Διαφορετικά, οι παρακάτω ρυθμίσεις θα είναι ανενεργές.",
|
||||
"ThirdPartyTitleDescription": "Με τα κλειδιά εξουσιοδότησης, μπορείτε να συνδέσετε υπηρεσίες τρίτων μερών στην πύλη σας. Συνδεθείτε εύκολα με το Facebook, το Twitter ή το LinkedIn, προσθέστε το Dropbox, το OneDrive κ.λπ. για να εργάζεστε με αρχεία που είναι αποθηκευμένα εκεί από την ενότητα Έγγραφα.",
|
||||
"TimeZone": "Ζώνη ώρας",
|
||||
"TrustedMail": "Ρυθμίσεις Αξιόπιστου Mail Domain",
|
||||
"TrustedMail": "Ρυθμίσεις τομέα αξιόπιστης αλληλογραφίας",
|
||||
"TrustedMailDescription": "Οι ρυθμίσεις τομέα αξιόπιστης αλληλογραφίας είναι ένας τρόπος για να καθορίσετε τους διακομιστές αλληλογραφίας που χρησιμοποιούνται για την αυτοεγγραφή των χρηστών.",
|
||||
"TrustedMailHelper": "Μπορείτε είτε να επιλέξετε το Προσαρμοσμένοι τομείς και να εισάγετε τον διακομιστή αξιόπιστης αλληλογραφίας στο παρακάτω πεδίο, ώστε ένα άτομο που έχει λογαριασμό σε αυτόν να μπορεί να εγγραφεί μόνο του κάνοντας κλικ στον σύνδεσμο Συμμετοχή στη σελίδα Είσοδος, είτε να απενεργοποιήσετε αυτήν την επιλογή.",
|
||||
"TwoFactorAuth": "Έλεγχος ταυτότητας δύο παραγόντων",
|
||||
|
@ -36,12 +36,16 @@ const StyledAboutBody = styled.div`
|
||||
}
|
||||
|
||||
.logo-theme {
|
||||
#svg_4-4 {
|
||||
fill: ${(props) => props.theme.studio.about.logoColor};
|
||||
}
|
||||
svg {
|
||||
g:nth-child(2) {
|
||||
path:nth-child(5) {
|
||||
fill: ${(props) => props.theme.studio.about.logoColor};
|
||||
}
|
||||
|
||||
#svg_5-5 {
|
||||
fill: ${(props) => props.theme.studio.about.logoColor};
|
||||
path:nth-child(6) {
|
||||
fill: ${(props) => props.theme.studio.about.logoColor};
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
`;
|
||||
|
Loading…
Reference in New Issue
Block a user