Merge branch 'master' of github.com:ONLYOFFICE/CommunityServer-AspNetCore
This commit is contained in:
commit
09535f8a30
@ -11,6 +11,8 @@ import {
|
||||
} from "asc-web-components";
|
||||
import submit from "./submit";
|
||||
import validate from "./validate";
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { department, headOfDepartment, typeUser } from './../../../../../../helpers/customNames';
|
||||
|
||||
const generateItems = numItems =>
|
||||
Array(numItems)
|
||||
@ -22,6 +24,7 @@ const generateItems = numItems =>
|
||||
|
||||
const GroupForm = props => {
|
||||
const { error, handleSubmit, submitting, initialValues, history } = props;
|
||||
const { t } = useTranslation();
|
||||
|
||||
const selectedList = generateItems(100);
|
||||
|
||||
@ -35,7 +38,7 @@ const GroupForm = props => {
|
||||
<form onSubmit={handleSubmit(submit)}>
|
||||
<div>
|
||||
<label htmlFor="group-name">
|
||||
<Text.Body as="span" isBold={true}>Department name:</Text.Body>
|
||||
<Text.Body as="span" isBold={true}>{t('CustomDepartmentName', { department })}:</Text.Body>
|
||||
</label>
|
||||
<div style={{width: "320px"}}>
|
||||
<TextInput id="group-name" name="group-name" scale={true} />
|
||||
@ -43,11 +46,11 @@ const GroupForm = props => {
|
||||
</div>
|
||||
<div style={{ marginTop: "16px" }}>
|
||||
<label htmlFor="head-selector">
|
||||
<Text.Body as="span" isBold={true}>Head of department:</Text.Body>
|
||||
<Text.Body as="span" isBold={true}>{t('CustomHeadOfDepartment', { headOfDepartment })}:</Text.Body>
|
||||
</label>
|
||||
<InputBlock
|
||||
id="head-selector"
|
||||
value="Add employee"
|
||||
value={t('CustomAddEmployee', { typeUser })}
|
||||
iconName="ExpanderDownIcon"
|
||||
iconSize={8}
|
||||
isIconFill={true}
|
||||
@ -64,7 +67,7 @@ const GroupForm = props => {
|
||||
</label>
|
||||
<InputBlock
|
||||
id="employee-selector"
|
||||
value="Add employee"
|
||||
value={t('CustomAddEmployee', { typeUser })}
|
||||
iconName="ExpanderDownIcon"
|
||||
iconSize={8}
|
||||
isIconFill={true}
|
||||
@ -87,9 +90,9 @@ const GroupForm = props => {
|
||||
</div>
|
||||
<div>{error && <strong>{error}</strong>}</div>
|
||||
<div style={{ marginTop: "60px" }}>
|
||||
<Button label="Save" primary type="submit" isDisabled={submitting} size="big" />
|
||||
<Button label={t('SaveButton')} primary type="submit" isDisabled={submitting} size="big" />
|
||||
<Button
|
||||
label="Cancel"
|
||||
label={t('CancelButton')}
|
||||
style={{ marginLeft: "8px" }}
|
||||
size="big"
|
||||
isDisabled={submitting}
|
||||
|
@ -3,6 +3,8 @@ import { connect } from 'react-redux';
|
||||
import { withRouter } from "react-router";
|
||||
import PropTypes from "prop-types";
|
||||
import { IconButton, Text } from 'asc-web-components';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { department } from './../../../../../helpers/customNames';
|
||||
|
||||
|
||||
const wrapperStyle = {
|
||||
@ -16,8 +18,9 @@ const textStyle = {
|
||||
|
||||
const SectionHeaderContent = (props) => {
|
||||
const {group, history, settings} = props;
|
||||
const { t } = useTranslation();
|
||||
|
||||
const headerText = "New department";
|
||||
const headerText = t('CustomNewDepartment', { department });
|
||||
|
||||
return (
|
||||
<div style={wrapperStyle}>
|
||||
|
@ -0,0 +1,58 @@
|
||||
import i18n from "i18next";
|
||||
import Backend from "i18next-xhr-backend";
|
||||
import config from "../../../../package.json";
|
||||
|
||||
const newInstance = i18n.createInstance();
|
||||
|
||||
if (process.env.NODE_ENV === "production") {
|
||||
newInstance
|
||||
.use(Backend)
|
||||
.init({
|
||||
lng: 'en',
|
||||
fallbackLng: "en",
|
||||
debug: true,
|
||||
|
||||
interpolation: {
|
||||
escapeValue: false, // not needed for react as it escapes by default
|
||||
format: function (value, format) {
|
||||
if (format === 'lowercase') return value.toLowerCase();
|
||||
return value;
|
||||
}
|
||||
},
|
||||
|
||||
react: {
|
||||
useSuspense: true
|
||||
},
|
||||
backend: {
|
||||
loadPath: `${config.homepage}/locales/GroupAction/{{lng}}/{{ns}}.json`
|
||||
}
|
||||
});
|
||||
} else if (process.env.NODE_ENV === "development") {
|
||||
|
||||
const resources = {
|
||||
en: {
|
||||
translation: require("./locales/en/translation.json")
|
||||
}
|
||||
};
|
||||
|
||||
newInstance.init({
|
||||
resources: resources,
|
||||
lng: 'en',
|
||||
fallbackLng: "en",
|
||||
debug: true,
|
||||
|
||||
interpolation: {
|
||||
escapeValue: false, // not needed for react as it escapes by default
|
||||
format: function (value, format) {
|
||||
if (format === 'lowercase') return value.toLowerCase();
|
||||
return value;
|
||||
}
|
||||
},
|
||||
|
||||
react: {
|
||||
useSuspense: true
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
export default newInstance;
|
@ -3,6 +3,8 @@ import { connect } from "react-redux";
|
||||
import { PageLayout } from "asc-web-components";
|
||||
import { ArticleHeaderContent, ArticleMainButtonContent, ArticleBodyContent } from '../../Article';
|
||||
import { SectionHeaderContent, SectionBodyContent } from './Section';
|
||||
import i18n from "./i18n";
|
||||
import { I18nextProvider } from "react-i18next";
|
||||
|
||||
class GroupAction extends React.Component {
|
||||
|
||||
@ -10,13 +12,15 @@ class GroupAction extends React.Component {
|
||||
console.log("GroupAction render")
|
||||
|
||||
return (
|
||||
<PageLayout
|
||||
<I18nextProvider i18n={i18n}>
|
||||
<PageLayout
|
||||
articleHeaderContent={<ArticleHeaderContent />}
|
||||
articleMainButtonContent={<ArticleMainButtonContent />}
|
||||
articleBodyContent={<ArticleBodyContent />}
|
||||
sectionHeaderContent={<SectionHeaderContent />}
|
||||
sectionBodyContent={<SectionBodyContent />}
|
||||
/>
|
||||
</I18nextProvider>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,11 @@
|
||||
{
|
||||
"SaveButton": "Save",
|
||||
"CancelButton": "Cancel",
|
||||
|
||||
|
||||
|
||||
"CustomHeadOfDepartment": "{{headOfDepartment}}",
|
||||
"CustomAddEmployee": "Add {{typeUser, lowercase}}",
|
||||
"CustomNewDepartment": "New {{department, lowercase}}",
|
||||
"CustomDepartmentName": "{{department}} name"
|
||||
}
|
@ -6,7 +6,7 @@ import find from "lodash/find";
|
||||
import result from "lodash/result";
|
||||
import { isAdmin } from "../../../../../store/auth/selectors";
|
||||
import { useTranslation } from "react-i18next";
|
||||
import { typeGuest, typeUser, departmentName } from './../../../../../helpers/customNames';
|
||||
import { typeGuest, typeUser, department } from './../../../../../helpers/customNames';
|
||||
|
||||
const getSortData = ( t ) => {
|
||||
return [
|
||||
@ -162,7 +162,7 @@ const SectionFilterContent = React.memo(({
|
||||
label: t("LblOther"),
|
||||
isHeader: true
|
||||
},
|
||||
{ key: "filter-type-group", group: "filter-other", subgroup: 'filter-group', label: t('CustomDepartmentName', { departmentName }) },
|
||||
{ key: "filter-type-group", group: "filter-other", subgroup: 'filter-group', label: t('CustomDepartment', { department }) },
|
||||
...groupOptions
|
||||
];
|
||||
|
||||
|
@ -45,7 +45,7 @@
|
||||
"CustomTypeUser": "{{typeUser}}",
|
||||
"CustomMakeUser": "Make {{typeUser, lowercase}}",
|
||||
"CustomMakeGuest": "Make {{typeGuest, lowercase}}",
|
||||
"CustomDepartmentName": "{{departmentName}}" ,
|
||||
"CustomDepartment": "{{department}}",
|
||||
"CountPerPage": "{{count}} per page",
|
||||
"PageOfTotalPage": "{{page}} of {{totalPage}}"
|
||||
}
|
@ -1,7 +1,7 @@
|
||||
import React, { useCallback } from "react";
|
||||
import { withRouter } from "react-router";
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { departmentName, position, employedSinceDate } from '../../../../../helpers/customNames';
|
||||
import { department as departmentName, position, employedSinceDate } from '../../../../../helpers/customNames';
|
||||
import {
|
||||
Text,
|
||||
Avatar,
|
||||
@ -190,7 +190,7 @@ const ProfileInfo = (props) => {
|
||||
{department &&
|
||||
<InfoItem>
|
||||
<InfoItemLabel>
|
||||
{t("CustomDepartmentName", { departmentName })}:
|
||||
{t("CustomDepartment", { department: departmentName })}:
|
||||
</InfoItemLabel>
|
||||
<InfoItemValue>
|
||||
{formatedDepartments}
|
||||
|
@ -30,5 +30,5 @@
|
||||
|
||||
"CustomEmployedSinceDate": "{{employedSinceDate}}",
|
||||
"CustomPosition": "{{position}}",
|
||||
"CustomDepartmentName": "{{departmentName}}"
|
||||
"CustomDepartment": "{{department}}"
|
||||
}
|
@ -10,7 +10,7 @@ import PasswordField from './FormFields/PasswordField'
|
||||
import DateField from './FormFields/DateField'
|
||||
import RadioField from './FormFields/RadioField'
|
||||
import DepartmentField from './FormFields/DepartmentField'
|
||||
import { departmentName, position, employedSinceDate } from '../../../../../helpers/customNames';
|
||||
import { department, position, employedSinceDate } from '../../../../../helpers/customNames';
|
||||
|
||||
class CreateUserForm extends React.Component {
|
||||
|
||||
@ -215,7 +215,7 @@ class CreateUserForm extends React.Component {
|
||||
inputOnChange={this.onTextChange}
|
||||
/>
|
||||
<DepartmentField
|
||||
labelText={`${this.props.t("CustomDepartmentName", { departmentName })}:`}
|
||||
labelText={`${this.props.t("CustomDepartment", { department })}:`}
|
||||
departments={this.state.profile.groups}
|
||||
onRemoveDepartment={this.onGroupClose}
|
||||
/>
|
||||
|
@ -10,7 +10,7 @@ import TextChangeField from './FormFields/TextChangeField'
|
||||
import DateField from './FormFields/DateField'
|
||||
import RadioField from './FormFields/RadioField'
|
||||
import DepartmentField from './FormFields/DepartmentField'
|
||||
import { departmentName, position, employedSinceDate, typeGuest, typeUser } from '../../../../../helpers/customNames';
|
||||
import { department, position, employedSinceDate, typeGuest, typeUser } from '../../../../../helpers/customNames';
|
||||
|
||||
class UpdateUserForm extends React.Component {
|
||||
|
||||
@ -227,7 +227,7 @@ class UpdateUserForm extends React.Component {
|
||||
inputOnChange={this.onTextChange}
|
||||
/>
|
||||
<DepartmentField
|
||||
labelText={`${this.props.t("CustomDepartmentName", { departmentName })}:`}
|
||||
labelText={`${this.props.t("CustomDepartment", { department })}:`}
|
||||
departments={this.state.profile.groups}
|
||||
onRemoveDepartment={this.onGroupClose}
|
||||
/>
|
||||
|
@ -26,7 +26,7 @@
|
||||
|
||||
"CustomEmployedSinceDate": "{{employedSinceDate}}",
|
||||
"CustomPosition": "{{position}}",
|
||||
"CustomDepartmentName": "{{departmentName}}",
|
||||
"CustomDepartment": "{{department}}",
|
||||
"CustomTypeGuest": "{{typeGuest}}",
|
||||
"CustomTypeUser": "{{typeUser}}"
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
export const departmentName = 'Department';
|
||||
export const department = 'Department';
|
||||
export const position = 'Position';
|
||||
export const employedSinceDate = 'Employed since';
|
||||
export const typeGuest = 'Guest';
|
||||
|
@ -97,5 +97,11 @@
|
||||
"AboutCompanyTitle",
|
||||
"LogoutButton"
|
||||
]
|
||||
},
|
||||
"GroupAction": {
|
||||
"Resource": [
|
||||
"SaveButton",
|
||||
"CancelButton"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "asc-web-components",
|
||||
"version": "1.0.26",
|
||||
"version": "1.0.27",
|
||||
"description": "Ascensio System SIA component library",
|
||||
"license": "AGPL-3.0",
|
||||
"main": "dist/asc-web-components.cjs.js",
|
||||
|
@ -1,7 +1,7 @@
|
||||
import React from "react";
|
||||
import styled from 'styled-components';
|
||||
import { Icons } from '../icons';
|
||||
import {Popover, PopoverBody } from 'reactstrap';
|
||||
import { Popover, PopoverBody } from 'reactstrap';
|
||||
|
||||
const Caret = styled.div`
|
||||
width: 7px;
|
||||
@ -10,6 +10,11 @@ const Caret = styled.div`
|
||||
transform: ${props => props.isOpen ? 'rotate(180deg)' : 'rotate(0)'};
|
||||
top: ${props => props.isOpen ? '2px' : '0'};
|
||||
`;
|
||||
const StyledPopover = styled(Popover)`
|
||||
.popover{
|
||||
border: none
|
||||
}
|
||||
`;
|
||||
const StyledHideFilterButton = styled.div`
|
||||
display: flex;
|
||||
position: relative;
|
||||
@ -53,7 +58,7 @@ class HideFilter extends React.Component {
|
||||
}
|
||||
|
||||
toggle() {
|
||||
if(!this.props.isDisabled){
|
||||
if (!this.props.isDisabled) {
|
||||
this.setState({
|
||||
popoverOpen: !this.state.popoverOpen
|
||||
});
|
||||
@ -64,17 +69,18 @@ class HideFilter extends React.Component {
|
||||
//console.log("HideFilter render");
|
||||
return (
|
||||
<StyledHideFilter>
|
||||
<StyledHideFilterButton id="PopoverLegacy" isDisabled={this.props.isDisabled} >{this.props.count} <Caret isOpen={this.state.popoverOpen}><Icons.ExpanderDownIcon size='scale' isfill={true} color="#A3A9AE"/></Caret></StyledHideFilterButton>
|
||||
|
||||
<Popover
|
||||
isOpen={this.state.popoverOpen}
|
||||
trigger="legacy"
|
||||
placement="bottom-start"
|
||||
<StyledHideFilterButton id="PopoverLegacy" isDisabled={this.props.isDisabled} >{this.props.count} <Caret isOpen={this.state.popoverOpen}><Icons.ExpanderDownIcon size='scale' isfill={true} color="#A3A9AE" /></Caret></StyledHideFilterButton>
|
||||
|
||||
<StyledPopover
|
||||
isOpen={this.state.popoverOpen}
|
||||
trigger="legacy"
|
||||
placement="bottom-start"
|
||||
target="PopoverLegacy"
|
||||
hideArrow={true}
|
||||
hideArrow={true}
|
||||
toggle={this.toggle}>
|
||||
<StyledPopoverBody>{this.props.children}</StyledPopoverBody>
|
||||
</Popover>
|
||||
</StyledPopover>
|
||||
|
||||
</StyledHideFilter>
|
||||
);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user