diff --git a/package.json b/package.json index 0e79cd09c0c1cb1324346d96268f19639f63bb79..c4a07b73d41ed2d4cdf17be83bcfa53f0ff0146a 100755 --- a/package.json +++ b/package.json @@ -74,7 +74,6 @@ "mockjs": "^1.0.1-beta3", "prettier": "1.14.2", "pro-download": "^1.0.1", - "react-loadable": "^5.4.0", "redbox-react": "^1.5.0", "regenerator-runtime": "^0.12.0", "stylelint": "^9.4.0", diff --git a/src/components/SettingDarwer/index.js b/src/components/SettingDarwer/index.js index 3b8f28489ee6f513d99d1e140437e9aa95126c66..4c81b4209145cf1046d1ddf69e69484825953819 100644 --- a/src/components/SettingDarwer/index.js +++ b/src/components/SettingDarwer/index.js @@ -224,6 +224,9 @@ class SettingDarwer extends PureComponent { {formatMessage({ id: 'app.setting.copy' })} +
+ {formatMessage({ id: 'app.setting.production.hint' })} +
); diff --git a/src/components/SettingDarwer/index.less b/src/components/SettingDarwer/index.less index f43db072b04522755e4b5497dd9d467462e61d2f..462fa36d853343ba0e62a0e3294ac43f5ca64ad1 100644 --- a/src/components/SettingDarwer/index.less +++ b/src/components/SettingDarwer/index.less @@ -12,7 +12,7 @@ margin-right: 16px; position: relative; // box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.1); - border-radius: 4px; + border-radius: @border-radius-base; cursor: pointer; img { width: 48px; @@ -31,6 +31,7 @@ font-weight: bold; } } + .color_block { width: 38px; height: 22px; @@ -41,9 +42,10 @@ display: inline-block; vertical-align: middle; } + .title { font-size: 14px; - color: rgba(0, 0, 0, 0.85); + color: @heading-color; line-height: 22px; margin-bottom: 12px; } @@ -51,7 +53,7 @@ .handle { position: fixed; top: 240px; - background: #1890ff; + background: @primary-color; width: 48px; height: 48px; right: 273px; @@ -65,3 +67,9 @@ font-size: 16px; border-radius: 4px 0 0 4px; } + +.productionHint { + font-size: 12px; + color: @text-color-secondary; + margin-top: 4px; +} diff --git a/src/defaultSetting.js b/src/defaultSetting.js new file mode 100644 index 0000000000000000000000000000000000000000..93509816626f779f0dbf96f0abff8dbde1d547fe --- /dev/null +++ b/src/defaultSetting.js @@ -0,0 +1,11 @@ +export default { + collapse: false, + silderTheme: 'dark', + themeColor: '#1890FF', + layout: 'sidemenu', + grid: 'Fluid', + fixedHeader: false, + autoHideHeader: false, + fixSiderbar: false, + colorWeak: false, +}; diff --git a/src/locales/zh-CN.js b/src/locales/zh-CN.js index 52683dcbfd4f21acf0700c7b0b6032b8160f7c3e..05107549cda08b8ae28c6ae67900b6b34e8fb57a 100644 --- a/src/locales/zh-CN.js +++ b/src/locales/zh-CN.js @@ -162,5 +162,6 @@ export default { 'app.setting.othersettings': '其他设置', 'app.setting.weakmode': '色弱模式', 'app.setting.copy': '拷贝设置', - 'app.setting.copyinfo': '拷贝成功,请到 src/models/setting.js 中替换 defaultSetting', + 'app.setting.copyinfo': '拷贝成功,请到 src/defaultSetting.js 中替换', + 'app.setting.production.hint': '设置侧边栏只会出现在开发环境,请手动配置 src/defaultSetting.js', }; diff --git a/src/models/setting.js b/src/models/setting.js index f968d6cefe935446f02539b60336d8629248383d..ffb7d807c10cdc20f5252fde255d788c88c84eb7 100644 --- a/src/models/setting.js +++ b/src/models/setting.js @@ -1,42 +1,59 @@ import { message } from 'antd'; +import defaultSetting from '../defaultSetting'; -const defaultSetting = { - collapse: false, - silderTheme: 'dark', - themeColor: '#1890FF', - layout: 'sidemenu', - grid: 'Fluid', - fixedHeader: false, - autoHideHeader: false, - fixSiderbar: false, - colorWeak: false, -}; - -const buildLessAndWeak = (themeColor, colorWeak) => { +let lessNodesAppended; +const buildSettings = (themeColor, colorWeak) => { + document.body.className = colorWeak ? 'colorWeak' : ''; // Determine if the component is remounted - if (themeColor && themeColor !== '#1890FF' && themeColor !== window['antd_pro_less_color']) { - window.less.refresh().then(() => { - const hideMessage = message.loading('正在编译主题!', 0); - setTimeout(() => { - window.less - .modifyVars({ - '@primary-color': themeColor, - '@input-hover-border-color': themeColor, - }) - .then(() => { - window['antd_pro_less_color'] = themeColor; - hideMessage(); - }) - .catch(() => { - message.error(`Failed to update theme`); - }); - }, 200); - }); + if (!themeColor || themeColor === '#1890FF' || themeColor === window['antd_pro_less_color']) { + return; } - if (colorWeak) { - document.body.className = 'colorWeak'; + const hideMessage = message.loading('正在编译主题!', 0); + if (!lessNodesAppended) { + console.log('append less nodes'); + const lessStyleNode = document.createElement('link'); + const lessConfigNode = document.createElement('script'); + const lessScriptNode = document.createElement('script'); + lessStyleNode.setAttribute('rel', 'stylesheet/less'); + lessStyleNode.setAttribute('href', '/color.less'); + lessConfigNode.innerHTML = ` + window.less = { + async: true, + env: 'production', + javascriptEnabled: true + }; + `; + lessScriptNode.src = 'https://gw.alipayobjects.com/os/lib/less.js/3.8.1/less.min.js'; + lessScriptNode.async = true; + lessScriptNode.onload = () => { + buildIt(); + lessScriptNode.onload = null; + }; + document.head.appendChild(lessStyleNode); + document.head.appendChild(lessConfigNode); + document.head.appendChild(lessScriptNode); + lessNodesAppended = true; } else { - document.body.className = ''; + buildIt(); + } + function buildIt() { + if (!window.less) { + return; + } + window.less + .modifyVars({ + '@primary-color': themeColor, + '@input-hover-border-color': themeColor, + }) + .then(() => { + console.log('start to compile'); + window['antd_pro_less_color'] = themeColor; + hideMessage(); + }) + .catch(() => { + message.error(`Failed to update theme`); + hideMessage(); + }); } }; @@ -54,7 +71,7 @@ export default { } }); const { themeColor, colorWeak } = setting; - buildLessAndWeak(themeColor, colorWeak); + buildSettings(themeColor, colorWeak); return { ...state, ...setting, @@ -80,7 +97,7 @@ export default { } }); const { themeColor, colorWeak } = payload; - buildLessAndWeak(themeColor, colorWeak); + buildSettings(themeColor, colorWeak); window.history.replaceState(null, 'setting', urlParams.href); return { ...state, diff --git a/src/pages/document.ejs b/src/pages/document.ejs index a3644cbfecda3154b80a8b4b7ef6e3738f8c6b77..43ae1f3e596869ce4156e4b36a84f339a1df4658 100644 --- a/src/pages/document.ejs +++ b/src/pages/document.ejs @@ -10,13 +10,5 @@
- - -