main
expressgy 1 year ago
parent 2961feb2e9
commit cc77d3465a
  1. 2
      index.html
  2. 61
      package-lock.json
  3. 1
      package.json
  4. 21
      src/App.jsx
  5. 6
      src/main.jsx
  6. 25
      src/pages/Edit/index.jsx
  7. 19
      src/pages/Edit/index.module.scss
  8. 33
      src/pages/Home/index.jsx
  9. 87
      src/pages/Home/index.module.scss
  10. 49
      src/routes/index.jsx
  11. 4
      src/scss/style.scss

@ -1,5 +1,5 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="en"> <html lang="zh">
<head> <head>
<meta charset="UTF-8" /> <meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/vite.svg" /> <link rel="icon" type="image/svg+xml" href="/vite.svg" />

61
package-lock.json generated

@ -24,6 +24,7 @@
"qs": "6.5.1", "qs": "6.5.1",
"react": "^16.14.0", "react": "^16.14.0",
"react-dom": "^16.14.0", "react-dom": "^16.14.0",
"react-router-dom": "^6.14.0",
"sass": "^1.63.4" "sass": "^1.63.4"
}, },
"devDependencies": { "devDependencies": {
@ -1204,6 +1205,14 @@
"resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz", "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz",
"integrity": "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==" "integrity": "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw=="
}, },
"node_modules/@remix-run/router": {
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.7.0.tgz",
"integrity": "sha512-Eu1V3kz3mV0wUpVTiFHuaT8UD1gj/0VnoFHQYX35xlslQUpe8CuYoKFn9d4WZFHm3yDywz6ALZuGdnUPKrNeAw==",
"engines": {
"node": ">=14"
}
},
"node_modules/@restart/hooks": { "node_modules/@restart/hooks": {
"version": "0.3.27", "version": "0.3.27",
"resolved": "https://registry.npmjs.org/@restart/hooks/-/hooks-0.3.27.tgz", "resolved": "https://registry.npmjs.org/@restart/hooks/-/hooks-0.3.27.tgz",
@ -5469,6 +5478,36 @@
"node": ">=0.10.0" "node": ">=0.10.0"
} }
}, },
"node_modules/react-router": {
"version": "6.14.0",
"resolved": "https://registry.npmjs.org/react-router/-/react-router-6.14.0.tgz",
"integrity": "sha512-OD+vkrcGbvlwkspUFDgMzsu1RXwdjNh83YgG/28lBnDzgslhCgxIqoExLlxsfTpIygp7fc+Hd3esloNwzkm2xA==",
"dependencies": {
"@remix-run/router": "1.7.0"
},
"engines": {
"node": ">=14"
},
"peerDependencies": {
"react": ">=16.8"
}
},
"node_modules/react-router-dom": {
"version": "6.14.0",
"resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.14.0.tgz",
"integrity": "sha512-YEwlApKwzMMMbGbhh+Q7MsloTldcwMgHxUY/1g0uA62+B1hZo2jsybCWIDCL8zvIDB1FA0pBKY9chHbZHt+2dQ==",
"dependencies": {
"@remix-run/router": "1.7.0",
"react-router": "6.14.0"
},
"engines": {
"node": ">=14"
},
"peerDependencies": {
"react": ">=16.8",
"react-dom": ">=16.8"
}
},
"node_modules/react-textarea-autosize": { "node_modules/react-textarea-autosize": {
"version": "8.3.3", "version": "8.3.3",
"resolved": "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-8.3.3.tgz", "resolved": "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-8.3.3.tgz",
@ -7313,6 +7352,11 @@
} }
} }
}, },
"@remix-run/router": {
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.7.0.tgz",
"integrity": "sha512-Eu1V3kz3mV0wUpVTiFHuaT8UD1gj/0VnoFHQYX35xlslQUpe8CuYoKFn9d4WZFHm3yDywz6ALZuGdnUPKrNeAw=="
},
"@restart/hooks": { "@restart/hooks": {
"version": "0.3.27", "version": "0.3.27",
"resolved": "https://registry.npmjs.org/@restart/hooks/-/hooks-0.3.27.tgz", "resolved": "https://registry.npmjs.org/@restart/hooks/-/hooks-0.3.27.tgz",
@ -10469,6 +10513,23 @@
"integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==", "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==",
"dev": true "dev": true
}, },
"react-router": {
"version": "6.14.0",
"resolved": "https://registry.npmjs.org/react-router/-/react-router-6.14.0.tgz",
"integrity": "sha512-OD+vkrcGbvlwkspUFDgMzsu1RXwdjNh83YgG/28lBnDzgslhCgxIqoExLlxsfTpIygp7fc+Hd3esloNwzkm2xA==",
"requires": {
"@remix-run/router": "1.7.0"
}
},
"react-router-dom": {
"version": "6.14.0",
"resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.14.0.tgz",
"integrity": "sha512-YEwlApKwzMMMbGbhh+Q7MsloTldcwMgHxUY/1g0uA62+B1hZo2jsybCWIDCL8zvIDB1FA0pBKY9chHbZHt+2dQ==",
"requires": {
"@remix-run/router": "1.7.0",
"react-router": "6.14.0"
}
},
"react-textarea-autosize": { "react-textarea-autosize": {
"version": "8.3.3", "version": "8.3.3",
"resolved": "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-8.3.3.tgz", "resolved": "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-8.3.3.tgz",

@ -26,6 +26,7 @@
"qs": "6.5.1", "qs": "6.5.1",
"react": "^16.14.0", "react": "^16.14.0",
"react-dom": "^16.14.0", "react-dom": "^16.14.0",
"react-router-dom": "^6.14.0",
"sass": "^1.63.4" "sass": "^1.63.4"
}, },
"devDependencies": { "devDependencies": {

@ -1,17 +1,8 @@
import {Editor} from 'amis-editor' import { NavLink, useRoutes } from 'react-router-dom'
import { DatePicker } from 'antd'; import routes from './routes/index.jsx' //
export default function App(){
const data = { export default
value:{}, function App () {
onChange: (value ) => { const element = useRoutes(routes)
console.log(value) return element
}
}
return (
<div className="Editor-Demo">
<div className="Editor-header"><DatePicker /></div>
<Editor value={data.value} onChange={data.onChange}/>
</div>
)
} }

@ -22,9 +22,13 @@ import 'amis-editor-core/lib/style.css';
import './scss/style.scss'; import './scss/style.scss';
import {setDefaultTheme} from 'amis'; import {setDefaultTheme} from 'amis';
import 'antd/dist/reset.css'; import 'antd/dist/reset.css';
import { BrowserRouter } from "react-router-dom";
setDefaultTheme('cxd'); setDefaultTheme('cxd');
// react < 18 // react < 18
ReactDOM.render(<App />, document.getElementById('root')); ReactDOM.render(
<BrowserRouter>
<App />
</BrowserRouter>, document.getElementById('root'));
// node -v 18.16.0 // node -v 18.16.0

@ -0,0 +1,25 @@
import {Editor} from 'amis-editor'
import { useEffect } from 'react';
import css from './index.module.scss'
export default function Edit(){
useEffect(() => {
console.log('EDIT')
})
const data = {
value:{},
onChange: (value ) => {
console.log(value)
}
}
return (
<div className={css.main}>
<div className={css.left}></div>
<div className={css.right}>
<div className="Editor-Demo">
<div className="Editor-header"></div>
<Editor value={data.value} onChange={data.onChange}/>
</div>
</div>
</div>
)
}

@ -0,0 +1,19 @@
.main{
position: relative;
height: 100%;
display: flex;
overflow: hidden;
& > div{
position: relative;
}
& > div.left{
height: 100%;
flex-shrink: 0;
width: 200px;
border-right: 1px solid #cdcdcd;
}
& > div.right{
height: 100%;
flex:1;
}
}

@ -0,0 +1,33 @@
import css from './index.module.scss';
import {useNavigate, Outlet} from 'react-router-dom'
export default function Home(){
const navigate = useNavigate()
function gotoEdit(){
navigate('/amis/edit')
}
function gotoBackManagement(){
window.location.href = '/'
}
return <div className={css.main}>
<header>
<div>
<div className={css.nav}></div>
<div className={css.cmd}>
<div>
<div className={css.title}>管理</div>
<div className={css.menuBox}>
<div onClick={gotoEdit}>页面管理</div>
<div onClick={gotoBackManagement}>后台管理</div>
</div>
</div>
</div>
</div>
</header>
<div className={css.body}>
<Outlet></Outlet>
</div>
</div>
}

@ -0,0 +1,87 @@
.main {
position: relative;
height: 100%;
width: 100%;
overflow: hidden;
display: flex;
flex-direction: column;
& > header {
position: relative;
flex-shrink: 0;
height: 80px;
border-bottom: 1px solid #cdcdcd;
z-index: 10000 !important;
overflow: visible;
& > div{
position: relative;
margin: 0 auto;
max-width: 1200px;
min-width: 800px;
height: 100%;
display: flex;
& > div.nav{
position: relative;
flex: 1;
}
& > div.cmd{
position: relative;
flex-shrink: 0;
min-width: 100px;
display: flex;
align-items: center;
justify-content: center;
& > div{
position: relative;
cursor: pointer;
width: 100%;
&:hover .menuBox{
height: 6em;
padding: 1em 0em;
border: 1px solid #cdcdcd;
}
& > div.title{
position: relative;
height: 2.1em;
padding: 0 1em;
line-height: 2em;
border: 2px solid #cdcdcd;
border-radius: 10px;
font-size: 1em;
font-weight: bold;
text-align: center;
color: #666;
}
& > div.menuBox{
position: absolute;
line-height: 2em;
height: 0;
//top: 2.5em;
overflow: hidden;
transition: height ease-in-out 300ms, padding ease-in-out 300ms;
background: #dedede;
width: 100%;
border-radius: 10px;
//border: 1px solid #cdcdcdff;
& > div{
padding: 0em 1em;
text-align: center;
&:hover{
background: #fefefe;
transition: background ease-in-out 300ms;
}
}
}
}
}
}
}
& > div.body{
position: relative;
flex: 1;
overflow: hidden;
}
}

@ -0,0 +1,49 @@
import { Navigate } from 'react-router-dom'
import Edit from '../pages/Edit/index.jsx'
import Home from "../pages/Home/index.jsx";
//eslint-disable-next-line
export default [
{
path: '/amis',
element: <Home/>,
children: [
{
path: 'edit',
element: <Edit/>,
}
]
},
{
path: '/', //'<Navigate>'
element: <Navigate to="/amis"/> //`<Navigate>`
}
// {
// path: '/home', //'/'
// element: <Home/>, //
// children: [ //home //
// {
// path: 'message', //'/''/'
// element: <Message/>, //
// children: [ //message //
// {
// //使paramspath
// // path: 'detail/:id/:title/:msg',
// path: 'detail', //'/'
// element: <Detail/> //
// }
// ]
// },
// {
// path: 'news',
// element: <News/>,
// children: [
// {
// path: 'detail',
// element: <Detail/>
// }
// ]
// },
// ]
// },
]

@ -13,7 +13,7 @@ $disabled-bg-color: #f7f7f9; // 禁用背景颜色
html { html {
font-size: 16px; font-size: 16px;
} }
html,body{ html,body,#root{
position: relative; position: relative;
height: 100%; height: 100%;
width: 100%; width: 100%;
@ -40,7 +40,7 @@ html,body{
.Editor-Demo { .Editor-Demo {
position: relative; position: relative;
height: 100vh; height: 100%;
min-height: 510px; min-height: 510px;
display: flex; display: flex;
flex-direction: column; flex-direction: column;

Loading…
Cancel
Save