mirror of https://github.com/openspug/spug
fix issue
parent
709d539382
commit
5e06e74612
|
@ -1,13 +1,39 @@
|
||||||
import React from 'react';
|
/**
|
||||||
|
* Copyright (c) OpenSpug Organization. https://github.com/openspug/spug
|
||||||
|
* Copyright (c) <spug.dev@gmail.com>
|
||||||
|
* Released under the AGPL-3.0 License.
|
||||||
|
*/
|
||||||
|
import React, { useState, useEffect } from 'react';
|
||||||
import { Avatar, Button, Card, Col, Row } from 'antd';
|
import { Avatar, Button, Card, Col, Row } from 'antd';
|
||||||
|
import { LeftSquareOutlined, RightSquareOutlined, EditOutlined, PlusOutlined } from '@ant-design/icons';
|
||||||
|
import NavForm from './NavForm';
|
||||||
import styles from './index.module.less';
|
import styles from './index.module.less';
|
||||||
|
|
||||||
function NavIndex(props) {
|
function NavIndex(props) {
|
||||||
|
const [isEdit, setIsEdit] = useState(true);
|
||||||
|
const [record, setRecord] = useState();
|
||||||
|
|
||||||
|
function handleSubmit() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Card title="便捷导航" className={styles.nav} extra={<Button type="link">编辑</Button>}>
|
<Card title="便捷导航" className={styles.nav} extra={<Button type="link">编辑</Button>}>
|
||||||
|
{isEdit ? (
|
||||||
<Row gutter={24}>
|
<Row gutter={24}>
|
||||||
<Col span={6}>
|
<Col span={6}>
|
||||||
<Card>
|
<div className={styles.add} onClick={() => setRecord({links: [{}]})}><PlusOutlined/></div>
|
||||||
|
</Col>
|
||||||
|
</Row>
|
||||||
|
) : (
|
||||||
|
<Row gutter={24}>
|
||||||
|
<Col span={6}>
|
||||||
|
<div className={styles.add}><PlusOutlined/></div>
|
||||||
|
</Col>
|
||||||
|
<Col span={6}>
|
||||||
|
<Card actions={[
|
||||||
|
<span>演示地址</span>
|
||||||
|
]}>
|
||||||
<Card.Meta
|
<Card.Meta
|
||||||
avatar={<Avatar src="https://gitee.com/openspug/index/raw/master/img/gitlab.png"/>}
|
avatar={<Avatar src="https://gitee.com/openspug/index/raw/master/img/gitlab.png"/>}
|
||||||
title="Gitlab"
|
title="Gitlab"
|
||||||
|
@ -15,7 +41,11 @@ function NavIndex(props) {
|
||||||
</Card>
|
</Card>
|
||||||
</Col>
|
</Col>
|
||||||
<Col span={6}>
|
<Col span={6}>
|
||||||
<Card>
|
<Card actions={[
|
||||||
|
<LeftSquareOutlined/>,
|
||||||
|
<RightSquareOutlined/>,
|
||||||
|
<EditOutlined/>
|
||||||
|
]}>
|
||||||
<Card.Meta
|
<Card.Meta
|
||||||
avatar={<Avatar src="https://gitee.com/openspug/index/raw/master/img/wiki.png"/>}
|
avatar={<Avatar src="https://gitee.com/openspug/index/raw/master/img/wiki.png"/>}
|
||||||
title="Wiki系统"
|
title="Wiki系统"
|
||||||
|
@ -23,7 +53,9 @@ function NavIndex(props) {
|
||||||
</Card>
|
</Card>
|
||||||
</Col>
|
</Col>
|
||||||
</Row>
|
</Row>
|
||||||
</Card>
|
)}
|
||||||
|
{record ? <NavForm record={record} onCancel={() => setRecord(null)}/> : null}
|
||||||
|
</Card>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,77 @@
|
||||||
|
/**
|
||||||
|
* Copyright (c) OpenSpug Organization. https://github.com/openspug/spug
|
||||||
|
* Copyright (c) <spug.dev@gmail.com>
|
||||||
|
* Released under the AGPL-3.0 License.
|
||||||
|
*/
|
||||||
|
import React, { useState } from 'react';
|
||||||
|
import { Form, Input, Modal, Button } from 'antd';
|
||||||
|
import { PlusOutlined, MinusCircleOutlined } from '@ant-design/icons';
|
||||||
|
import styles from './index.module.less';
|
||||||
|
import lds from 'lodash';
|
||||||
|
|
||||||
|
function NavForm(props) {
|
||||||
|
const [form] = Form.useForm();
|
||||||
|
const [loading, setLoading] = useState(false);
|
||||||
|
const [record, setRecord] = useState(props.record);
|
||||||
|
|
||||||
|
function handleSubmit() {
|
||||||
|
const formData = form.getFieldsValue();
|
||||||
|
console.log(formData)
|
||||||
|
}
|
||||||
|
|
||||||
|
function add() {
|
||||||
|
record.links.push({});
|
||||||
|
setRecord(lds.cloneDeep(record))
|
||||||
|
}
|
||||||
|
|
||||||
|
function remove(index) {
|
||||||
|
record.links.splice(index, 1);
|
||||||
|
setRecord(lds.cloneDeep(record))
|
||||||
|
}
|
||||||
|
|
||||||
|
function changeLink(e, index, key) {
|
||||||
|
record.links[index][key] = e.target.value;
|
||||||
|
setRecord(lds.cloneDeep(record))
|
||||||
|
}
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Modal
|
||||||
|
visible
|
||||||
|
title={`${record.id ? '编辑' : '新建'}导航`}
|
||||||
|
afterClose={() => console.log('after close')}
|
||||||
|
onCancel={props.onCancel}
|
||||||
|
confirmLoading={loading}
|
||||||
|
onOk={handleSubmit}>
|
||||||
|
<Form form={form} initialValues={record} labelCol={{span: 5}} wrapperCol={{span: 18}}>
|
||||||
|
<Form.Item required name="title" label="导航标题">
|
||||||
|
<Input placeholder="请输入"/>
|
||||||
|
</Form.Item>
|
||||||
|
<Form.Item required name="desc" label="导航描述">
|
||||||
|
<Input placeholder="请输入"/>
|
||||||
|
</Form.Item>
|
||||||
|
<Form.Item required label="导航链接" style={{marginBottom: 0}}>
|
||||||
|
{record.links.map((item, index) => (
|
||||||
|
<div key={index} style={{display: 'flex', alignItems: 'center', marginBottom: 12}}>
|
||||||
|
<Form.Item style={{display: 'inline-block', margin: 0, width: 100}}>
|
||||||
|
<Input value={item.name} onChange={e => changeLink(e, index, 'name')} placeholder="链接名称"/>
|
||||||
|
</Form.Item>
|
||||||
|
<Form.Item style={{display: 'inline-block', width: 210, margin: '0 8px'}}>
|
||||||
|
<Input value={item.url} onChange={e => changeLink(e, index, 'url')} placeholder="请输入链接地址"/>
|
||||||
|
</Form.Item>
|
||||||
|
{record.links.length > 1 && (
|
||||||
|
<MinusCircleOutlined className={styles.minusIcon} onClick={() => remove(index)}/>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
))}
|
||||||
|
</Form.Item>
|
||||||
|
<Form.Item wrapperCol={{span: 18, offset: 5}}>
|
||||||
|
<Button type="dashed" onClick={add} style={{width: 318}} icon={<PlusOutlined/>}>
|
||||||
|
添加链接(推荐最多三个)
|
||||||
|
</Button>
|
||||||
|
</Form.Item>
|
||||||
|
</Form>
|
||||||
|
</Modal>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
export default NavForm
|
|
@ -1,3 +1,8 @@
|
||||||
|
/**
|
||||||
|
* Copyright (c) OpenSpug Organization. https://github.com/openspug/spug
|
||||||
|
* Copyright (c) <spug.dev@gmail.com>
|
||||||
|
* Released under the AGPL-3.0 License.
|
||||||
|
*/
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { Button, Card, List } from 'antd';
|
import { Button, Card, List } from 'antd';
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,8 @@
|
||||||
|
/**
|
||||||
|
* Copyright (c) OpenSpug Organization. https://github.com/openspug/spug
|
||||||
|
* Copyright (c) <spug.dev@gmail.com>
|
||||||
|
* Released under the AGPL-3.0 License.
|
||||||
|
*/
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { Row, Col } from 'antd';
|
import { Row, Col } from 'antd';
|
||||||
import { Breadcrumb } from 'components';
|
import { Breadcrumb } from 'components';
|
||||||
|
|
|
@ -63,10 +63,27 @@
|
||||||
.nav {
|
.nav {
|
||||||
margin-top: 12px;
|
margin-top: 12px;
|
||||||
|
|
||||||
:global(.ant-card) {
|
.add {
|
||||||
height: 120px;
|
|
||||||
background-color: #fafafa;
|
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
|
height: 166px;
|
||||||
|
border: 1px dashed #d9d9d9;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.add:hover {
|
||||||
|
border: 1px dashed #1890ff;
|
||||||
|
color: #1890ff;
|
||||||
|
}
|
||||||
|
|
||||||
|
:global(.ant-card) {
|
||||||
|
height: 166px;
|
||||||
|
background-color: #fafafa;
|
||||||
|
|
||||||
|
:global(.ant-card-actions) {
|
||||||
|
background-color: #f0f0f0;
|
||||||
|
}
|
||||||
|
|
||||||
:global(.ant-card-meta-description) {
|
:global(.ant-card-meta-description) {
|
||||||
display: -webkit-box;
|
display: -webkit-box;
|
||||||
|
@ -76,5 +93,12 @@
|
||||||
-webkit-box-orient: vertical;
|
-webkit-box-orient: vertical;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
.minusIcon {
|
||||||
|
font-size: 26px;
|
||||||
|
color: #a6a6a6;
|
||||||
|
}
|
||||||
|
.minusIcon:hover {
|
||||||
|
color: #ff4d4f;
|
||||||
|
}
|
Loading…
Reference in New Issue