|
@@ -2,23 +2,34 @@ import React, { useEffect, useState } from 'react';
|
|
|
import PropTypes from 'prop-types';
|
|
import PropTypes from 'prop-types';
|
|
|
import { withTranslation } from 'react-i18next';
|
|
import { withTranslation } from 'react-i18next';
|
|
|
|
|
|
|
|
|
|
+import AppContainer from '../../../services/AppContainer';
|
|
|
|
|
+
|
|
|
import AdminUpdateButtonRow from '../Common/AdminUpdateButtonRow';
|
|
import AdminUpdateButtonRow from '../Common/AdminUpdateButtonRow';
|
|
|
|
|
+import { toastSuccess, toastError } from '../../../util/apiNotification';
|
|
|
|
|
|
|
|
const CustomizeLayoutSetting = (props) => {
|
|
const CustomizeLayoutSetting = (props) => {
|
|
|
- const { t } = props;
|
|
|
|
|
|
|
+ const { t, appContainer } = props;
|
|
|
|
|
|
|
|
const [isContainerFluid, setIsContainerFluid] = useState(false);
|
|
const [isContainerFluid, setIsContainerFluid] = useState(false);
|
|
|
|
|
|
|
|
useEffect(() => {
|
|
useEffect(() => {
|
|
|
- const fetchData = () => {
|
|
|
|
|
- // TODO implement
|
|
|
|
|
- console.log('fetchData');
|
|
|
|
|
|
|
+ const fetchData = async() => {
|
|
|
|
|
+ const res = await appContainer.apiv3Get('/customize-setting/layout');
|
|
|
|
|
+ setIsContainerFluid(res.data.isContainerFluid);
|
|
|
};
|
|
};
|
|
|
fetchData();
|
|
fetchData();
|
|
|
}, []);
|
|
}, []);
|
|
|
|
|
|
|
|
- const onClickSubmit = () => {};
|
|
|
|
|
- console.log(isContainerFluid);
|
|
|
|
|
|
|
+ const onClickSubmit = async() => {
|
|
|
|
|
+ try {
|
|
|
|
|
+ await appContainer.apiv3Put('/customize-setting/layout', { isContainerFluid });
|
|
|
|
|
+ toastSuccess(t('toaster.update_successed', { target: t('admin:customize_setting.layout') }));
|
|
|
|
|
+ }
|
|
|
|
|
+ catch (err) {
|
|
|
|
|
+ toastError(err);
|
|
|
|
|
+ }
|
|
|
|
|
+ };
|
|
|
|
|
+
|
|
|
return (
|
|
return (
|
|
|
<React.Fragment>
|
|
<React.Fragment>
|
|
|
<div className="row">
|
|
<div className="row">
|
|
@@ -27,13 +38,13 @@ const CustomizeLayoutSetting = (props) => {
|
|
|
|
|
|
|
|
<div className="d-flex justify-content-around mt-5">
|
|
<div className="d-flex justify-content-around mt-5">
|
|
|
<div className="card-deck">
|
|
<div className="card-deck">
|
|
|
- <div className="card" onClick={() => setIsContainerFluid(true)} role="button">
|
|
|
|
|
|
|
+ <div className={`card ${isContainerFluid ? 'border border-info' : ''}`} onClick={() => setIsContainerFluid(true)} role="button">
|
|
|
<img src="https://via.placeholder.com/350x150" />
|
|
<img src="https://via.placeholder.com/350x150" />
|
|
|
<div className="card-body text-center">
|
|
<div className="card-body text-center">
|
|
|
{t('admin:customize_setting.layout_options.default')}
|
|
{t('admin:customize_setting.layout_options.default')}
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
- <div className="card" onClick={() => setIsContainerFluid(false)} role="button">
|
|
|
|
|
|
|
+ <div className={`card ${!isContainerFluid ? 'border border-info' : ''}`} onClick={() => setIsContainerFluid(false)} role="button">
|
|
|
<img src="https://via.placeholder.com/350x150" />
|
|
<img src="https://via.placeholder.com/350x150" />
|
|
|
<div className="card-body text-center">
|
|
<div className="card-body text-center">
|
|
|
{t('admin:customize_setting.layout_options.expanded')}
|
|
{t('admin:customize_setting.layout_options.expanded')}
|
|
@@ -51,6 +62,8 @@ const CustomizeLayoutSetting = (props) => {
|
|
|
|
|
|
|
|
CustomizeLayoutSetting.propTypes = {
|
|
CustomizeLayoutSetting.propTypes = {
|
|
|
t: PropTypes.func.isRequired, // i18next
|
|
t: PropTypes.func.isRequired, // i18next
|
|
|
|
|
+
|
|
|
|
|
+ appContainer: PropTypes.instanceOf(AppContainer).isRequired,
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
export default withTranslation()(CustomizeLayoutSetting);
|
|
export default withTranslation()(CustomizeLayoutSetting);
|