From aa56e53c4de310e6d1a5f77a4c6b2d52c141b0b7 Mon Sep 17 00:00:00 2001 From: wanglin2 <1013335014@qq.com> Date: Tue, 15 Nov 2022 20:00:03 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BE=A7=E8=BE=B9=E6=A0=8F?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E5=92=8C=E9=9A=90=E8=97=8F=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- web/src/assets/icon-font/demo.css | 105 +- web/src/assets/icon-font/demo_index.html | 1961 +++++++++-------- web/src/assets/icon-font/iconfont.css | 105 +- web/src/assets/icon-font/iconfont.js | 69 +- web/src/assets/icon-font/iconfont.json | 14 + web/src/assets/icon-font/iconfont.ttf | Bin 13800 -> 14468 bytes web/src/assets/icon-font/iconfont.woff | Bin 8544 -> 9008 bytes web/src/assets/icon-font/iconfont.woff2 | Bin 7224 -> 7688 bytes web/src/config/en.js | 34 + web/src/config/index.js | 14 +- web/src/config/zh.js | 34 + web/src/pages/Edit/components/BaseStyle.vue | 16 +- web/src/pages/Edit/components/Edit.vue | 5 +- web/src/pages/Edit/components/Outline.vue | 19 +- web/src/pages/Edit/components/ShortcutKey.vue | 16 +- web/src/pages/Edit/components/Sidebar.vue | 11 +- .../pages/Edit/components/SidebarTrigger.vue | 107 + web/src/pages/Edit/components/Structure.vue | 17 +- web/src/pages/Edit/components/Style.vue | 35 +- web/src/pages/Edit/components/Theme.vue | 17 +- web/src/pages/Edit/components/Toolbar.vue | 23 - web/src/store.js | 13 +- 22 files changed, 1423 insertions(+), 1192 deletions(-) create mode 100644 web/src/pages/Edit/components/SidebarTrigger.vue diff --git a/web/src/assets/icon-font/demo.css b/web/src/assets/icon-font/demo.css index 54f3c06c..a67054a0 100644 --- a/web/src/assets/icon-font/demo.css +++ b/web/src/assets/icon-font/demo.css @@ -1,19 +1,15 @@ /* Logo 字体 */ @font-face { - font-family: 'iconfont logo'; + font-family: "iconfont logo"; src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834'); - src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834#iefix') - format('embedded-opentype'), - url('https://at.alicdn.com/t/font_985780_km7mi63cihi.woff?t=1545807318834') - format('woff'), - url('https://at.alicdn.com/t/font_985780_km7mi63cihi.ttf?t=1545807318834') - format('truetype'), - url('https://at.alicdn.com/t/font_985780_km7mi63cihi.svg?t=1545807318834#iconfont') - format('svg'); + src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834#iefix') format('embedded-opentype'), + url('https://at.alicdn.com/t/font_985780_km7mi63cihi.woff?t=1545807318834') format('woff'), + url('https://at.alicdn.com/t/font_985780_km7mi63cihi.ttf?t=1545807318834') format('truetype'), + url('https://at.alicdn.com/t/font_985780_km7mi63cihi.svg?t=1545807318834#iconfont') format('svg'); } .logo { - font-family: 'iconfont logo'; + font-family: "iconfont logo"; font-size: 160px; font-style: normal; -webkit-font-smoothing: antialiased; @@ -52,6 +48,7 @@ color: #666; } + #tabs .active { border-bottom-color: #f00; color: #222; @@ -218,35 +215,35 @@ margin: 1em 0; } -.markdown > p, -.markdown > blockquote, -.markdown > .highlight, -.markdown > ol, -.markdown > ul { +.markdown>p, +.markdown>blockquote, +.markdown>.highlight, +.markdown>ol, +.markdown>ul { width: 80%; } -.markdown ul > li { +.markdown ul>li { list-style: circle; } -.markdown > ul li, -.markdown blockquote ul > li { +.markdown>ul li, +.markdown blockquote ul>li { margin-left: 20px; padding-left: 4px; } -.markdown > ul li p, -.markdown > ol li p { +.markdown>ul li p, +.markdown>ol li p { margin: 0.6em 0; } -.markdown ol > li { +.markdown ol>li { list-style: decimal; } -.markdown > ol li, -.markdown blockquote ol > li { +.markdown>ol li, +.markdown blockquote ol>li { margin-left: 20px; padding-left: 4px; } @@ -263,7 +260,7 @@ font-weight: 600; } -.markdown > table { +.markdown>table { border-collapse: collapse; border-spacing: 0px; empty-cells: show; @@ -272,21 +269,21 @@ margin-bottom: 24px; } -.markdown > table th { +.markdown>table th { white-space: nowrap; color: #333; font-weight: 600; } -.markdown > table th, -.markdown > table td { +.markdown>table th, +.markdown>table td { border: 1px solid #e9e9e9; padding: 8px 16px; text-align: left; } -.markdown > table th { - background: #f7f7f7; +.markdown>table th { + background: #F7F7F7; } .markdown blockquote { @@ -321,11 +318,12 @@ display: inline-block; } -.markdown > br, -.markdown > p > br { +.markdown>br, +.markdown>p>br { clear: both; } + .hljs { display: block; background: white; @@ -401,8 +399,8 @@ https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javasc * Based on dabblet (http://dabblet.com) * @author Lea Verou */ -code[class*='language-'], -pre[class*='language-'] { +code[class*="language-"], +pre[class*="language-"] { color: black; background: none; text-shadow: 0 1px white; @@ -424,45 +422,46 @@ pre[class*='language-'] { hyphens: none; } -pre[class*='language-']::-moz-selection, -pre[class*='language-'] ::-moz-selection, -code[class*='language-']::-moz-selection, -code[class*='language-'] ::-moz-selection { +pre[class*="language-"]::-moz-selection, +pre[class*="language-"] ::-moz-selection, +code[class*="language-"]::-moz-selection, +code[class*="language-"] ::-moz-selection { text-shadow: none; background: #b3d4fc; } -pre[class*='language-']::selection, -pre[class*='language-'] ::selection, -code[class*='language-']::selection, -code[class*='language-'] ::selection { +pre[class*="language-"]::selection, +pre[class*="language-"] ::selection, +code[class*="language-"]::selection, +code[class*="language-"] ::selection { text-shadow: none; background: #b3d4fc; } @media print { - code[class*='language-'], - pre[class*='language-'] { + + code[class*="language-"], + pre[class*="language-"] { text-shadow: none; } } /* Code blocks */ -pre[class*='language-'] { +pre[class*="language-"] { padding: 1em; - margin: 0.5em 0; + margin: .5em 0; overflow: auto; } -:not(pre) > code[class*='language-'], -pre[class*='language-'] { +:not(pre)>code[class*="language-"], +pre[class*="language-"] { background: #f5f2f0; } /* Inline code */ -:not(pre) > code[class*='language-'] { - padding: 0.1em; - border-radius: 0.3em; +:not(pre)>code[class*="language-"] { + padding: .1em; + border-radius: .3em; white-space: normal; } @@ -478,7 +477,7 @@ pre[class*='language-'] { } .namespace { - opacity: 0.7; + opacity: .7; } .token.property, @@ -506,7 +505,7 @@ pre[class*='language-'] { .language-css .token.string, .style .token.string { color: #9a6e3a; - background: hsla(0, 0%, 100%, 0.5); + background: hsla(0, 0%, 100%, .5); } .token.atrule, @@ -517,7 +516,7 @@ pre[class*='language-'] { .token.function, .token.class-name { - color: #dd4a68; + color: #DD4A68; } .token.regex, diff --git a/web/src/assets/icon-font/demo_index.html b/web/src/assets/icon-font/demo_index.html index d1d52fef..90c0ab8d 100644 --- a/web/src/assets/icon-font/demo_index.html +++ b/web/src/assets/icon-font/demo_index.html @@ -1,368 +1,354 @@ - - - iconfont Demo - - - - - - - - - - - - - -
-

- - - -

- -
-
+ .main .logo .sub-title { + margin-left: 0.5em; + font-size: 22px; + color: #fff; + background: linear-gradient(-45deg, #3967FF, #B500FE); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + } + + + +
+

+ + +

+ +
+
    + +
  • + +
    选择
    +
    &#xe6c5;
    +
  • + +
  • + +
    主题
    +
    &#xe7aa;
    +
  • +
  • -
    导出
    -
    &#xe63e;
    -
  • - +
    导出
    +
    &#xe63e;
    + +
  • -
    另存为
    -
    &#xe657;
    -
  • - +
    另存为
    +
    &#xe657;
    + +
  • -
    export
    -
    &#xe642;
    -
  • - +
    export
    +
    &#xe642;
    + +
  • -
    打开
    -
    &#xebdf;
    -
  • - +
    打开
    +
    &#xebdf;
    + +
  • -
    新建
    -
    &#xe64e;
    -
  • - +
    新建
    +
    &#xe64e;
    + +
  • -
    剪切
    -
    &#xe601;
    -
  • - +
    剪切
    +
    &#xe601;
    + +
  • -
    整理
    -
    &#xe83b;
    -
  • - +
    整理
    +
    &#xe83b;
    + +
  • -
    复制
    -
    &#xe604;
    -
  • - +
    复制
    +
    &#xe604;
    + +
  • -
    粘贴
    -
    &#xe63f;
    -
  • - +
    粘贴
    +
    &#xe63f;
    + +
  • -
    上移
    -
    &#xe6be;
    -
  • - +
    上移
    +
    &#xe6be;
    + +
  • -
    下移
    -
    &#xe6bf;
    -
  • - +
    下移
    +
    &#xe6bf;
    + +
  • -
    概括总览
    -
    &#xe609;
    -
  • - +
    概括总览
    +
    &#xe609;
    + +
  • -
    全选
    -
    &#xf199;
    -
  • - +
    全选
    +
    &#xf199;
    + +
  • -
    导入
    -
    &#xe6a3;
    -
  • - +
    导入
    +
    &#xe6a3;
    + +
  • -
    后退-实
    -
    &#xe656;
    -
  • - +
    后退-实
    +
    &#xe656;
    + +
  • -
    前进
    -
    &#xe654;
    -
  • - +
    前进
    +
    &#xe654;
    + +
  • -
    撤回
    -
    &#xe603;
    -
  • - +
    撤回
    +
    &#xe603;
    + +
  • -
    前进
    -
    &#xe600;
    -
  • - +
    前进
    +
    &#xe600;
    + +
  • -
    恢复默认
    -
    &#xe60e;
    -
  • - +
    恢复默认
    +
    &#xe60e;
    + +
  • -
    换行
    -
    &#xe61e;
    -
  • - +
    换行
    +
    &#xe61e;
    + +
  • -
    缩小
    -
    &#xec13;
    -
  • - +
    缩小
    +
    &#xec13;
    + +
  • -
    编辑
    -
    &#xe626;
    -
  • - +
    编辑
    +
    &#xe626;
    + +
  • -
    放大
    -
    &#xe663;
    -
  • - +
    放大
    +
    &#xe663;
    + +
  • -
    全屏
    -
    &#xe664;
    -
  • - +
    全屏
    +
    &#xe664;
    + +
  • -
    定位
    -
    &#xe616;
    -
  • - +
    定位
    +
    &#xe616;
    + +
  • -
    导航
    -
    &#xe611;
    -
  • - +
    导航
    +
    &#xe611;
    + +
  • -
    键盘
    -
    &#xe64d;
    -
  • - +
    键盘
    +
    &#xe64d;
    + +
  • -
    全屏
    -
    &#xe602;
    -
  • - +
    全屏
    +
    &#xe602;
    + +
  • -
    导出
    -
    &#xe63d;
    -
  • - +
    导出
    +
    &#xe63d;
    + +
  • -
    标签
    -
    &#xe63c;
    -
  • - +
    标签
    +
    &#xe63c;
    + +
  • -
    流程-备注
    -
    &#xe65b;
    -
  • - +
    流程-备注
    +
    &#xe65b;
    + +
  • -
    超链接
    -
    &#xe6f4;
    -
  • - +
    超链接
    +
    &#xe6f4;
    + +
  • -
    主题
    -
    &#xe610;
    -
  • - +
    主题
    +
    &#xe610;
    + +
  • -
    笑脸
    -
    &#xe60f;
    -
  • - +
    笑脸
    +
    &#xe60f;
    + +
  • -
    图 片
    -
    &#xe629;
    -
  • - +
    图 片
    +
    &#xe629;
    + +
  • -
    结构
    -
    &#xe61d;
    -
  • - +
    结构
    +
    &#xe61d;
    + +
  • -
    样式
    -
    &#xe631;
    -
  • - +
    样式
    +
    &#xe631;
    + +
  • -
    符号-大纲树
    -
    &#xe71f;
    -
  • - +
    符号-大纲树
    +
    &#xe71f;
    + +
  • -
    添加子节点
    -
    &#xe622;
    -
  • - +
    添加子节点
    +
    &#xe622;
    + +
  • -
    节点
    -
    &#xe655;
    -
  • - +
    节点
    +
    &#xe655;
    + +
  • -
    删 除
    -
    &#xe696;
    -
  • - +
    删 除
    +
    &#xe696;
    + +
  • -
    HTSCIT_展开
    -
    &#xe64c;
    -
  • - +
    HTSCIT_展开
    +
    &#xe64c;
    + +
  • -
    HTSCIT_展开2
    -
    &#xe673;
    -
  • +
    HTSCIT_展开2
    +
    &#xe673;
    + +
-

Unicode 引用

-
+

Unicode 引用

+
-

Unicode 是字体在网页端最原始的应用方式,特点是:

-
    -
  • 支持按字体的方式去动态调整图标大小,颜色等等。
  • -
  • 默认情况下不支持多色,直接添加多色图标会自动去色。
  • -
-
-

- 注意:新版 iconfont 支持两种方式引用多色图标:SVG symbol - 引用方式和彩色字体图标模式。(使用彩色字体图标需要在「编辑项目」中开启「彩色」选项后并重新生成。) -

-
-

Unicode 使用步骤如下:

-

- 第一步:拷贝项目下面生成的 @font-face -

-
Unicode 是字体在网页端最原始的应用方式,特点是:

+
    +
  • 支持按字体的方式去动态调整图标大小,颜色等等。
  • +
  • 默认情况下不支持多色,直接添加多色图标会自动去色。
  • +
+
+

注意:新版 iconfont 支持两种方式引用多色图标:SVG symbol 引用方式和彩色字体图标模式。(使用彩色字体图标需要在「编辑项目」中开启「彩色」选项后并重新生成。)

+
+

Unicode 使用步骤如下:

+

第一步:拷贝项目下面生成的 @font-face

+
@font-face {
   font-family: 'iconfont';
-  src: url('iconfont.woff2?t=1664005697217') format('woff2'),
-       url('iconfont.woff?t=1664005697217') format('woff'),
-       url('iconfont.ttf?t=1664005697217') format('truetype');
+  src: url('iconfont.woff2?t=1668512547595') format('woff2'),
+       url('iconfont.woff?t=1668512547595') format('woff'),
+       url('iconfont.ttf?t=1668512547595') format('truetype');
 }
 
-

第二步:定义使用 iconfont 的样式

-
第二步:定义使用 iconfont 的样式
+
.iconfont {
   font-family: "iconfont" !important;
   font-size: 16px;
@@ -371,773 +357,830 @@
   -moz-osx-font-smoothing: grayscale;
 }
 
-

第三步:挑选相应图标并获取字体编码,应用于页面

-
+          

第三步:挑选相应图标并获取字体编码,应用于页面

+
 <span class="iconfont">&#x33;</span>
 
-
-

- "iconfont" 是你项目下的 - font-family。可以通过编辑项目查看,默认是 "iconfont"。 -

-
+
+

"iconfont" 是你项目下的 font-family。可以通过编辑项目查看,默认是 "iconfont"。

+
-
-
+
+
+
    + +
  • + +
    + 选择 +
    +
    .iconchoose1 +
    +
  • + +
  • + +
    + 主题 +
    +
    .iconzhuti +
    +
  • + +
  • + +
    + 导出 +
    +
    .icondaochu1 +
    +
  • + +
  • + +
    + 另存为 +
    +
    .iconlingcunwei +
    +
  • + +
  • + +
    + export +
    +
    .iconexport +
    +
  • + +
  • + +
    + 打开 +
    +
    .icondakai +
    +
  • + +
  • + +
    + 新建 +
    +
    .iconxinjian +
    +
  • + +
  • + +
    + 剪切 +
    +
    .iconjianqie +
    +
  • + +
  • + +
    + 整理 +
    +
    .iconzhengli +
    +
  • + +
  • + +
    + 复制 +
    +
    .iconfuzhi +
    +
  • + +
  • + +
    + 粘贴 +
    +
    .iconniantie +
    +
  • + +
  • + +
    + 上移 +
    +
    .iconshangyi +
    +
  • + +
  • + +
    + 下移 +
    +
    .iconxiayi +
    +
  • + +
  • + +
    + 概括总览 +
    +
    .icongaikuozonglan +
    +
  • + +
  • + +
    + 全选 +
    +
    .iconquanxuan +
    +
  • + +
  • + +
    + 导入 +
    +
    .icondaoru +
    +
  • + +
  • + +
    + 后退-实 +
    +
    .iconhoutui-shi +
    +
  • + +
  • + +
    + 前进 +
    +
    .iconqianjin1 +
    +
  • + +
  • + +
    + 撤回 +
    +
    .iconwithdraw +
    +
  • + +
  • + +
    + 前进 +
    +
    .iconqianjin +
    +
  • + +
  • + +
    + 恢复默认 +
    +
    .iconhuifumoren +
    +
  • + +
  • + +
    + 换行 +
    +
    .iconhuanhang +
    +
  • + +
  • + +
    + 缩小 +
    +
    .iconsuoxiao +
    +
  • + +
  • + +
    + 编辑 +
    +
    .iconbianji +
    +
  • + +
  • + +
    + 放大 +
    +
    .iconfangda +
    +
  • + +
  • + +
    + 全屏 +
    +
    .iconquanping1 +
    +
  • + +
  • + +
    + 定位 +
    +
    .icondingwei +
    +
  • + +
  • + +
    + 导航 +
    +
    .icondaohang +
    +
  • + +
  • + +
    + 键盘 +
    +
    .iconjianpan +
    +
  • + +
  • + +
    + 全屏 +
    +
    .iconquanping +
    +
  • + +
  • + +
    + 导出 +
    +
    .icondaochu +
    +
  • + +
  • + +
    + 标签 +
    +
    .iconbiaoqian +
    +
  • + +
  • + +
    + 流程-备注 +
    +
    .iconflow-Mark +
    +
  • + +
  • + +
    + 超链接 +
    +
    .iconchaolianjie +
    +
  • + +
  • + +
    + 主题 +
    +
    .iconjingzi +
    +
  • + +
  • + +
    + 笑脸 +
    +
    .iconxiaolian +
    +
  • + +
  • + +
    + 图 片 +
    +
    .iconimage +
    +
  • + +
  • + +
    + 结构 +
    +
    .iconjiegou +
    +
  • + +
  • + +
    + 样式 +
    +
    .iconyangshi +
    +
  • + +
  • + +
    + 符号-大纲树 +
    +
    .iconfuhao-dagangshu +
    +
  • + +
  • + +
    + 添加子节点 +
    +
    .icontianjiazijiedian +
    +
  • + +
  • + +
    + 节点 +
    +
    .iconjiedian +
    +
  • + +
  • + +
    + 删 除 +
    +
    .iconshanchu +
    +
  • + +
  • + +
    + HTSCIT_展开 +
    +
    .iconzhankai +
    +
  • + +
  • + +
    + HTSCIT_展开2 +
    +
    .iconzhankai1 +
    +
  • + +
+
+

font-class 引用

+
+ +

font-class 是 Unicode 使用方式的一种变种,主要是解决 Unicode 书写不直观,语意不明确的问题。

+

与 Unicode 使用方式相比,具有如下特点:

+
    +
  • 相比于 Unicode 语意明确,书写更直观。可以很容易分辨这个 icon 是什么。
  • +
  • 因为使用 class 来定义图标,所以当要替换图标时,只需要修改 class 里面的 Unicode 引用。
  • +
+

使用步骤如下:

+

第一步:引入项目下面生成的 fontclass 代码:

+
<link rel="stylesheet" href="./iconfont.css">
+
+

第二步:挑选相应图标并获取类名,应用于页面:

+
<span class="iconfont iconxxx"></span>
+
+
+

" + iconfont" 是你项目下的 font-family。可以通过编辑项目查看,默认是 "iconfont"。

+
+
+
+
    +
  • - -
    - 导出 -
    -
    .icondaochu1
    + +
    选择
    +
    #iconchoose1
  • - +
  • - -
    - 另存为 -
    -
    .iconlingcunwei
    + +
    主题
    +
    #iconzhuti
  • - +
  • - -
    - export -
    -
    .iconexport
    + +
    导出
    +
    #icondaochu1
  • - +
  • - -
    - 打开 -
    -
    .icondakai
    + +
    另存为
    +
    #iconlingcunwei
  • - +
  • - -
    - 新建 -
    -
    .iconxinjian
    + +
    export
    +
    #iconexport
  • - +
  • - -
    - 剪切 -
    -
    .iconjianqie
    + +
    打开
    +
    #icondakai
  • - +
  • - -
    - 整理 -
    -
    .iconzhengli
    + +
    新建
    +
    #iconxinjian
  • - +
  • - -
    - 复制 -
    -
    .iconfuzhi
    + +
    剪切
    +
    #iconjianqie
  • - +
  • - -
    - 粘贴 -
    -
    .iconniantie
    + +
    整理
    +
    #iconzhengli
  • - +
  • - -
    - 上移 -
    -
    .iconshangyi
    + +
    复制
    +
    #iconfuzhi
  • - +
  • - -
    - 下移 -
    -
    .iconxiayi
    + +
    粘贴
    +
    #iconniantie
  • - +
  • - -
    - 概括总览 -
    -
    .icongaikuozonglan
    + +
    上移
    +
    #iconshangyi
  • - +
  • - -
    - 全选 -
    -
    .iconquanxuan
    + +
    下移
    +
    #iconxiayi
  • - +
  • - -
    - 导入 -
    -
    .icondaoru
    + +
    概括总览
    +
    #icongaikuozonglan
  • - +
  • - -
    - 后退-实 -
    -
    .iconhoutui-shi
    + +
    全选
    +
    #iconquanxuan
  • - +
  • - -
    - 前进 -
    -
    .iconqianjin1
    + +
    导入
    +
    #icondaoru
  • - +
  • - -
    - 撤回 -
    -
    .iconwithdraw
    + +
    后退-实
    +
    #iconhoutui-shi
  • - +
  • - -
    - 前进 -
    -
    .iconqianjin
    + +
    前进
    +
    #iconqianjin1
  • - +
  • - -
    - 恢复默认 -
    -
    .iconhuifumoren
    + +
    撤回
    +
    #iconwithdraw
  • - +
  • - -
    - 换行 -
    -
    .iconhuanhang
    + +
    前进
    +
    #iconqianjin
  • - +
  • - -
    - 缩小 -
    -
    .iconsuoxiao
    + +
    恢复默认
    +
    #iconhuifumoren
  • - +
  • - -
    - 编辑 -
    -
    .iconbianji
    + +
    换行
    +
    #iconhuanhang
  • - +
  • - -
    - 放大 -
    -
    .iconfangda
    + +
    缩小
    +
    #iconsuoxiao
  • - +
  • - -
    - 全屏 -
    -
    .iconquanping1
    + +
    编辑
    +
    #iconbianji
  • - +
  • - -
    - 定位 -
    -
    .icondingwei
    + +
    放大
    +
    #iconfangda
  • - +
  • - -
    - 导航 -
    -
    .icondaohang
    + +
    全屏
    +
    #iconquanping1
  • - +
  • - -
    - 键盘 -
    -
    .iconjianpan
    + +
    定位
    +
    #icondingwei
  • - +
  • - -
    - 全屏 -
    -
    .iconquanping
    + +
    导航
    +
    #icondaohang
  • - +
  • - -
    - 导出 -
    -
    .icondaochu
    + +
    键盘
    +
    #iconjianpan
  • - +
  • - -
    - 标签 -
    -
    .iconbiaoqian
    + +
    全屏
    +
    #iconquanping
  • - +
  • - -
    - 流程-备注 -
    -
    .iconflow-Mark
    + +
    导出
    +
    #icondaochu
  • - +
  • - -
    - 超链接 -
    -
    .iconchaolianjie
    + +
    标签
    +
    #iconbiaoqian
  • - +
  • - -
    - 主题 -
    -
    .iconjingzi
    + +
    流程-备注
    +
    #iconflow-Mark
  • - +
  • - -
    - 笑脸 -
    -
    .iconxiaolian
    + +
    超链接
    +
    #iconchaolianjie
  • - +
  • - -
    - 图 片 -
    -
    .iconimage
    + +
    主题
    +
    #iconjingzi
  • - +
  • - -
    - 结构 -
    -
    .iconjiegou
    + +
    笑脸
    +
    #iconxiaolian
  • - +
  • - -
    - 样式 -
    -
    .iconyangshi
    + +
    图 片
    +
    #iconimage
  • - +
  • - -
    - 符号-大纲树 -
    -
    .iconfuhao-dagangshu
    + +
    结构
    +
    #iconjiegou
  • - +
  • - -
    - 添加子节点 -
    -
    .icontianjiazijiedian
    + +
    样式
    +
    #iconyangshi
  • - +
  • - -
    - 节点 -
    -
    .iconjiedian
    + +
    符号-大纲树
    +
    #iconfuhao-dagangshu
  • - +
  • - -
    - 删 除 -
    -
    .iconshanchu
    + +
    添加子节点
    +
    #icontianjiazijiedian
  • - +
  • - -
    - HTSCIT_展开 -
    -
    .iconzhankai
    + +
    节点
    +
    #iconjiedian
  • - +
  • - -
    - HTSCIT_展开2 -
    -
    .iconzhankai1
    + +
    删 除
    +
    #iconshanchu
  • + +
  • + +
    HTSCIT_展开
    +
    #iconzhankai
    +
  • + +
  • + +
    HTSCIT_展开2
    +
    #iconzhankai1
    +
  • +
-

font-class 引用

-
+

Symbol 引用

+
-

- font-class 是 Unicode 使用方式的一种变种,主要是解决 Unicode - 书写不直观,语意不明确的问题。 -

-

与 Unicode 使用方式相比,具有如下特点:

-
    -
  • - 相比于 Unicode 语意明确,书写更直观。可以很容易分辨这个 icon - 是什么。 -
  • -
  • - 因为使用 class 来定义图标,所以当要替换图标时,只需要修改 class - 里面的 Unicode 引用。 -
  • -
-

使用步骤如下:

-

- 第一步:引入项目下面生成的 fontclass 代码: -

-
<link rel="stylesheet" href="./iconfont.css">
-
-

第二步:挑选相应图标并获取类名,应用于页面:

-
<span class="iconfont iconxxx"></span>
-
-
-

- " iconfont" 是你项目下的 - font-family。可以通过编辑项目查看,默认是 "iconfont"。 -

-
-
-
-
-
    -
  • - -
    导出
    -
    #icondaochu1
    -
  • - -
  • - -
    另存为
    -
    #iconlingcunwei
    -
  • - -
  • - -
    export
    -
    #iconexport
    -
  • - -
  • - -
    打开
    -
    #icondakai
    -
  • - -
  • - -
    新建
    -
    #iconxinjian
    -
  • - -
  • - -
    剪切
    -
    #iconjianqie
    -
  • - -
  • - -
    整理
    -
    #iconzhengli
    -
  • - -
  • - -
    复制
    -
    #iconfuzhi
    -
  • - -
  • - -
    粘贴
    -
    #iconniantie
    -
  • - -
  • - -
    上移
    -
    #iconshangyi
    -
  • - -
  • - -
    下移
    -
    #iconxiayi
    -
  • - -
  • - -
    概括总览
    -
    #icongaikuozonglan
    -
  • - -
  • - -
    全选
    -
    #iconquanxuan
    -
  • - -
  • - -
    导入
    -
    #icondaoru
    -
  • - -
  • - -
    后退-实
    -
    #iconhoutui-shi
    -
  • - -
  • - -
    前进
    -
    #iconqianjin1
    -
  • - -
  • - -
    撤回
    -
    #iconwithdraw
    -
  • - -
  • - -
    前进
    -
    #iconqianjin
    -
  • - -
  • - -
    恢复默认
    -
    #iconhuifumoren
    -
  • - -
  • - -
    换行
    -
    #iconhuanhang
    -
  • - -
  • - -
    缩小
    -
    #iconsuoxiao
    -
  • - -
  • - -
    编辑
    -
    #iconbianji
    -
  • - -
  • - -
    放大
    -
    #iconfangda
    -
  • - -
  • - -
    全屏
    -
    #iconquanping1
    -
  • - -
  • - -
    定位
    -
    #icondingwei
    -
  • - -
  • - -
    导航
    -
    #icondaohang
    -
  • - -
  • - -
    键盘
    -
    #iconjianpan
    -
  • - -
  • - -
    全屏
    -
    #iconquanping
    -
  • - -
  • - -
    导出
    -
    #icondaochu
    -
  • - -
  • - -
    标签
    -
    #iconbiaoqian
    -
  • - -
  • - -
    流程-备注
    -
    #iconflow-Mark
    -
  • - -
  • - -
    超链接
    -
    #iconchaolianjie
    -
  • - -
  • - -
    主题
    -
    #iconjingzi
    -
  • - -
  • - -
    笑脸
    -
    #iconxiaolian
    -
  • - -
  • - -
    图 片
    -
    #iconimage
    -
  • - -
  • - -
    结构
    -
    #iconjiegou
    -
  • - -
  • - -
    样式
    -
    #iconyangshi
    -
  • - -
  • - -
    符号-大纲树
    -
    #iconfuhao-dagangshu
    -
  • - -
  • - -
    添加子节点
    -
    #icontianjiazijiedian
    -
  • - -
  • - -
    节点
    -
    #iconjiedian
    -
  • - -
  • - -
    删 除
    -
    #iconshanchu
    -
  • - -
  • - -
    HTSCIT_展开
    -
    #iconzhankai
    -
  • - -
  • - -
    HTSCIT_展开2
    -
    #iconzhankai1
    -
  • +

    这是一种全新的使用方式,应该说这才是未来的主流,也是平台目前推荐的用法。相关介绍可以参考这篇文章 + 这种用法其实是做了一个 SVG 的集合,与另外两种相比具有如下特点:

    +
      +
    • 支持多色图标了,不再受单色限制。
    • +
    • 通过一些技巧,支持像字体那样,通过 font-size, color 来调整样式。
    • +
    • 兼容性较差,支持 IE9+,及现代浏览器。
    • +
    • 浏览器渲染 SVG 的性能一般,还不如 png。
    -
    -

    Symbol 引用

    -
    - -

    - 这是一种全新的使用方式,应该说这才是未来的主流,也是平台目前推荐的用法。相关介绍可以参考这篇文章 - 这种用法其实是做了一个 SVG 的集合,与另外两种相比具有如下特点: -

    -
      -
    • 支持多色图标了,不再受单色限制。
    • -
    • - 通过一些技巧,支持像字体那样,通过 font-size, - color 来调整样式。 -
    • -
    • 兼容性较差,支持 IE9+,及现代浏览器。
    • -
    • 浏览器渲染 SVG 的性能一般,还不如 png。
    • -
    -

    使用步骤如下:

    -

    第一步:引入项目下面生成的 symbol 代码:

    -
    <script src="./iconfont.js"></script>
    +          

    使用步骤如下:

    +

    第一步:引入项目下面生成的 symbol 代码:

    +
    <script src="./iconfont.js"></script>
     
    -

    第二步:加入通用 CSS 代码(引入一次就行):

    -
    <style>
    +          

    第二步:加入通用 CSS 代码(引入一次就行):

    +
    <style>
     .icon {
       width: 1em;
       height: 1em;
    @@ -1147,36 +1190,34 @@
     }
     </style>
     
    -

    第三步:挑选相应图标并获取类名,应用于页面:

    -
    <svg class="icon" aria-hidden="true">
    +          

    第三步:挑选相应图标并获取类名,应用于页面:

    +
    <svg class="icon" aria-hidden="true">
       <use xlink:href="#icon-xxx"></use>
     </svg>
     
    -
+
- - + }) + + diff --git a/web/src/assets/icon-font/iconfont.css b/web/src/assets/icon-font/iconfont.css index 4461587d..eddeb889 100644 --- a/web/src/assets/icon-font/iconfont.css +++ b/web/src/assets/icon-font/iconfont.css @@ -1,186 +1,195 @@ @font-face { - font-family: 'iconfont'; /* Project id 2479351 */ - src: url('iconfont.woff2?t=1664005697217') format('woff2'), - url('iconfont.woff?t=1664005697217') format('woff'), - url('iconfont.ttf?t=1664005697217') format('truetype'); + font-family: "iconfont"; /* Project id 2479351 */ + src: url('iconfont.woff2?t=1668512547595') format('woff2'), + url('iconfont.woff?t=1668512547595') format('woff'), + url('iconfont.ttf?t=1668512547595') format('truetype'); } .iconfont { - font-family: 'iconfont' !important; + font-family: "iconfont" !important; font-size: 16px; font-style: normal; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } +.iconchoose1:before { + content: "\e6c5"; +} + +.iconzhuti:before { + content: "\e7aa"; +} + .icondaochu1:before { - content: '\e63e'; + content: "\e63e"; } .iconlingcunwei:before { - content: '\e657'; + content: "\e657"; } .iconexport:before { - content: '\e642'; + content: "\e642"; } .icondakai:before { - content: '\ebdf'; + content: "\ebdf"; } .iconxinjian:before { - content: '\e64e'; + content: "\e64e"; } .iconjianqie:before { - content: '\e601'; + content: "\e601"; } .iconzhengli:before { - content: '\e83b'; + content: "\e83b"; } .iconfuzhi:before { - content: '\e604'; + content: "\e604"; } .iconniantie:before { - content: '\e63f'; + content: "\e63f"; } .iconshangyi:before { - content: '\e6be'; + content: "\e6be"; } .iconxiayi:before { - content: '\e6bf'; + content: "\e6bf"; } .icongaikuozonglan:before { - content: '\e609'; + content: "\e609"; } .iconquanxuan:before { - content: '\f199'; + content: "\f199"; } .icondaoru:before { - content: '\e6a3'; + content: "\e6a3"; } .iconhoutui-shi:before { - content: '\e656'; + content: "\e656"; } .iconqianjin1:before { - content: '\e654'; + content: "\e654"; } .iconwithdraw:before { - content: '\e603'; + content: "\e603"; } .iconqianjin:before { - content: '\e600'; + content: "\e600"; } .iconhuifumoren:before { - content: '\e60e'; + content: "\e60e"; } .iconhuanhang:before { - content: '\e61e'; + content: "\e61e"; } .iconsuoxiao:before { - content: '\ec13'; + content: "\ec13"; } .iconbianji:before { - content: '\e626'; + content: "\e626"; } .iconfangda:before { - content: '\e663'; + content: "\e663"; } .iconquanping1:before { - content: '\e664'; + content: "\e664"; } .icondingwei:before { - content: '\e616'; + content: "\e616"; } .icondaohang:before { - content: '\e611'; + content: "\e611"; } .iconjianpan:before { - content: '\e64d'; + content: "\e64d"; } .iconquanping:before { - content: '\e602'; + content: "\e602"; } .icondaochu:before { - content: '\e63d'; + content: "\e63d"; } .iconbiaoqian:before { - content: '\e63c'; + content: "\e63c"; } .iconflow-Mark:before { - content: '\e65b'; + content: "\e65b"; } .iconchaolianjie:before { - content: '\e6f4'; + content: "\e6f4"; } .iconjingzi:before { - content: '\e610'; + content: "\e610"; } .iconxiaolian:before { - content: '\e60f'; + content: "\e60f"; } .iconimage:before { - content: '\e629'; + content: "\e629"; } .iconjiegou:before { - content: '\e61d'; + content: "\e61d"; } .iconyangshi:before { - content: '\e631'; + content: "\e631"; } .iconfuhao-dagangshu:before { - content: '\e71f'; + content: "\e71f"; } .icontianjiazijiedian:before { - content: '\e622'; + content: "\e622"; } .iconjiedian:before { - content: '\e655'; + content: "\e655"; } .iconshanchu:before { - content: '\e696'; + content: "\e696"; } .iconzhankai:before { - content: '\e64c'; + content: "\e64c"; } .iconzhankai1:before { - content: '\e673'; + content: "\e673"; } + diff --git a/web/src/assets/icon-font/iconfont.js b/web/src/assets/icon-font/iconfont.js index 894d6ff8..b6dfda68 100644 --- a/web/src/assets/icon-font/iconfont.js +++ b/web/src/assets/icon-font/iconfont.js @@ -1,68 +1 @@ -(window._iconfont_svg_string_2479351 = - ''), - (function(l) { - var c = (c = document.getElementsByTagName('script'))[c.length - 1], - a = c.getAttribute('data-injectcss'), - c = c.getAttribute('data-disable-injectsvg') - if (!c) { - var h, - t, - i, - o, - s, - z = function(c, a) { - a.parentNode.insertBefore(c, a) - } - if (a && !l.__iconfont__svg__cssinject__) { - l.__iconfont__svg__cssinject__ = !0 - try { - document.write( - '' - ) - } catch (c) { - console && console.log(c) - } - } - (h = function() { - var c, - a = document.createElement('div') - ;(a.innerHTML = l._iconfont_svg_string_2479351), - (a = a.getElementsByTagName('svg')[0]) && - (a.setAttribute('aria-hidden', 'true'), - (a.style.position = 'absolute'), - (a.style.width = 0), - (a.style.height = 0), - (a.style.overflow = 'hidden'), - (a = a), - (c = document.body).firstChild - ? z(a, c.firstChild) - : c.appendChild(a)) - }), - document.addEventListener - ? ~['complete', 'loaded', 'interactive'].indexOf(document.readyState) - ? setTimeout(h, 0) - : ((t = function() { - document.removeEventListener('DOMContentLoaded', t, !1), h() - }), - document.addEventListener('DOMContentLoaded', t, !1)) - : document.attachEvent && - ((i = h), - (o = l.document), - (s = !1), - d(), - (o.onreadystatechange = function() { - 'complete' == o.readyState && ((o.onreadystatechange = null), v()) - })) - } - function v() { - s || ((s = !0), i()) - } - function d() { - try { - o.documentElement.doScroll('left') - } catch (c) { - return void setTimeout(d, 50) - } - v() - } - })(window) +window._iconfont_svg_string_2479351='',function(l){var c=(c=document.getElementsByTagName("script"))[c.length-1],a=c.getAttribute("data-injectcss"),c=c.getAttribute("data-disable-injectsvg");if(!c){var h,t,i,o,s,z=function(c,a){a.parentNode.insertBefore(c,a)};if(a&&!l.__iconfont__svg__cssinject__){l.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(c){console&&console.log(c)}}h=function(){var c,a=document.createElement("div");a.innerHTML=l._iconfont_svg_string_2479351,(a=a.getElementsByTagName("svg")[0])&&(a.setAttribute("aria-hidden","true"),a.style.position="absolute",a.style.width=0,a.style.height=0,a.style.overflow="hidden",a=a,(c=document.body).firstChild?z(a,c.firstChild):c.appendChild(a))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(h,0):(t=function(){document.removeEventListener("DOMContentLoaded",t,!1),h()},document.addEventListener("DOMContentLoaded",t,!1)):document.attachEvent&&(i=h,o=l.document,s=!1,d(),o.onreadystatechange=function(){"complete"==o.readyState&&(o.onreadystatechange=null,v())})}function v(){s||(s=!0,i())}function d(){try{o.documentElement.doScroll("left")}catch(c){return void setTimeout(d,50)}v()}}(window); \ No newline at end of file diff --git a/web/src/assets/icon-font/iconfont.json b/web/src/assets/icon-font/iconfont.json index 79d5f75f..f39f2aee 100644 --- a/web/src/assets/icon-font/iconfont.json +++ b/web/src/assets/icon-font/iconfont.json @@ -5,6 +5,20 @@ "css_prefix_text": "icon", "description": "思维导图", "glyphs": [ + { + "icon_id": "1009019", + "name": "选择", + "font_class": "choose1", + "unicode": "e6c5", + "unicode_decimal": 59077 + }, + { + "icon_id": "493507", + "name": "主题", + "font_class": "zhuti", + "unicode": "e7aa", + "unicode_decimal": 59306 + }, { "icon_id": "1305460", "name": "导出", diff --git a/web/src/assets/icon-font/iconfont.ttf b/web/src/assets/icon-font/iconfont.ttf index e1c046547d03d67bb204a8e6d30a39f961463486..2d1e5659d50cc2af98b1f99d09e2b9b3f32c3a33 100644 GIT binary patch delta 1746 zcmY+EZERCj7{{M;U(UU^FZZr%dpicSrG-|uwrp!@F$0EE&XQ#1A)=o^*_$wz zY7OXL1`Df0wL_N%XMQDOw=ur7Z)8XRpT}-Jj{WN}er~A$&?tL?wcvXb#>wISpul}{oS^fw4HB1oQJl%Ts-}lV# zGj(mJdK6=m6mJ%fx34e}XC@n;X6ATCc{6)>c9PgZQfGTPynVRoFlh{K(lSbtMor^C zC|TpGxI3AcJby|phVFN#I&a;)9lmpVW@bF3Rq71OSHaf69{bOFsE3}SUfAaQ)<^$0 zq6oZMF|7t!J?DjwCr>2s^1z)Wpoj-QTn|qcVM*X6 ziTl7`5{?9(lR)-85Ce&jq>gY%xDo_LV!i|+lJG7B2$n=jg0M+=-v9(4;f(>LAki*? zC?u9kAPCbf8@csBkJfEHJE0Hj7xmxx0G~42jLpUgv)MdpDOSchY2EO>@82G91ABr~_FMKhj_aIi z$TeIJ^@PqfRvW(zw}d~cM^n+0(VyKC4o602#?-&nF%-+g1bG*wQ<W=?j(dRh6YktS^voSNMZhB8|a4geyxKiY*9yG7_YL+#o>w}77 z>sz1Psyp^q(~FOrfw6p28BFH$$>}q*y9d4Yp4X2$Gh`V*e#SK(G*vQ!T+ye=JNJe! zq7@ZZRP3qbFM(K{UATAT3=%LK{dej`wSWpApi%rMabwn6St^@>62T438CfXct$?Ld*p%kpxIM*V2;KEg!7B9di@6;*rQF5Jm6a?T=JgbomdYLY6fx8x zJ<&C?Vo@Z{-00G+Z>*l*WXG3<3^g2ycOQST+i~2aX1iN*O^)+*&F^xA=62`pP>esflH8;nWY}a%?{4CcDHQuQ*%clpd!qaOFeOq53 zz%1Kln$fq|46NV7RdrR;4Em?na$FD!dW|trGd|3*!gyn;H;gJ-LdK5j$jJU(?fNU# N1GVQT_Lg2{{{UAiQ?392 delta 1104 zcmYL{O-NKx7>3_F_d5UMj5?ZGj=yQ@5Q;SknufTN5&|OOF+Xt-Z?xmKIxk(@~&I}8n?M= z@6l>STNnoSlJwgj6_@=jd+=DC0M@&Q*8cXH@0o-ZGiNz=!lq{VsQ<#tA;W1TkJ;{5 z$M+{-T!E>V*t>ac9F`H`*5fFJg<$fFt=in(C`o$FMj!jl=B@Q~-p+g`lRRfOCJgRt zVQXjW_}4noi7s@r_55kQ_}_qB*l`#+6z4@A%29?Q97H98s73)Qa0DR~Q4FzAe(AE0g9}GgF^G+V~F;}GRsI%y_diiRBt|YfUr~WZV0VVPz8kc zD5wWwYN!lCR~6Id|Mjeyi>XbGf2LvtW48rlS5eJW@eq*bBfR}r>p=pv+DLq8#BG;|hnRzr^=T^hO# z>DJJ9$axJj0O`>%7ZBE^LKT=?(l9@e!~kD}se;5bOd4cTv!9Nq{3c8!WKqMELQ)!4 zitj(*2S$1i8U^R;Wt9dV~Ur@bj(%=g@v&W`(S{>OpJ!0nvY qoCmqcy^;4b*dJWUr(ESjX3bnPmtF2BVI!Pei1Zp*cAcCtxbhp~&*A(4 diff --git a/web/src/assets/icon-font/iconfont.woff b/web/src/assets/icon-font/iconfont.woff index a68c4bfb8c513cc73e37c1265636a52142aa94d2..ab09adb34b9f2832c46aaaa55ae769e001681ad3 100644 GIT binary patch delta 8552 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 U%G$`tI^*>_2!cQQRgTO603!K^0RR91 diff --git a/web/src/assets/icon-font/iconfont.woff2 b/web/src/assets/icon-font/iconfont.woff2 index bea05a0c2897bdb948d4eb2dd5b262de6fed9ac8..8f420e00b3e399f43cf0a18c9e831f1a53b5f0e6 100644 GIT binary patch literal 7688 zcmV+j9{1sQPew8T0RR9103HYc3jhEB062sI03Emh0RR9100000000000000000000 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 C+vdLj literal 7224 zcmV-89LM8#Pew8T0RR91030{~3jhEB05#|U02}E50RR9100000000000000000000 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 GwE_S^X7Zr` diff --git a/web/src/config/en.js b/web/src/config/en.js index 53305ff6..bece8c4e 100644 --- a/web/src/config/en.js +++ b/web/src/config/en.js @@ -319,3 +319,37 @@ export const shapeList = [ value: 'circle' } ] + +// 侧边栏列表 +export const sidebarTriggerList = [ + { + name: 'Node style', + value: 'nodeStyle', + icon: 'iconzhuti' + }, + { + name: 'Base style', + value: 'baseStyle', + icon: 'iconyangshi' + }, + { + name: 'Theme', + value: 'theme', + icon: 'iconjingzi' + }, + { + name: 'Structure', + value: 'structure', + icon: 'iconjiegou' + }, + { + name: 'Outline', + value: 'outline', + icon: 'iconfuhao-dagangshu' + }, + { + name: 'ShortcutKey', + value: 'shortcutKey', + icon: 'iconjianpan' + } +] diff --git a/web/src/config/index.js b/web/src/config/index.js index cf506c98..20e4549b 100644 --- a/web/src/config/index.js +++ b/web/src/config/index.js @@ -13,7 +13,8 @@ import { backgroundRepeatList as backgroundRepeatListZh, backgroundPositionList as backgroundPositionListZh, shortcutKeyList as shortcutKeyListZh, - shapeList as shapeListZh + shapeList as shapeListZh, + sidebarTriggerList as sidebarTriggerListZh } from './zh' import { fontFamilyList as fontFamilyListEn, @@ -22,7 +23,8 @@ import { backgroundRepeatList as backgroundRepeatListEn, backgroundPositionList as backgroundPositionListEn, shortcutKeyList as shortcutKeyListEn, - shapeList as shapeListEn + shapeList as shapeListEn, + sidebarTriggerList as sidebarTriggerListEn } from './en' const fontFamilyList = { @@ -60,6 +62,11 @@ const shapeList = { en: shapeListEn } +const sidebarTriggerList = { + zh: sidebarTriggerListZh, + en: sidebarTriggerListEn +} + export { fontSizeList, lineHeightList, @@ -75,5 +82,6 @@ export { backgroundRepeatList, backgroundPositionList, shortcutKeyList, - shapeList + shapeList, + sidebarTriggerList } diff --git a/web/src/config/zh.js b/web/src/config/zh.js index b38e164f..1a919f7d 100644 --- a/web/src/config/zh.js +++ b/web/src/config/zh.js @@ -391,3 +391,37 @@ export const langList = [ name: 'English' } ] + +// 侧边栏列表 +export const sidebarTriggerList = [ + { + name: '节点样式', + value: 'nodeStyle', + icon: 'iconzhuti' + }, + { + name: '基础样式', + value: 'baseStyle', + icon: 'iconyangshi' + }, + { + name: '主题', + value: 'theme', + icon: 'iconjingzi' + }, + { + name: '结构', + value: 'structure', + icon: 'iconjiegou' + }, + { + name: '大纲', + value: 'outline', + icon: 'iconfuhao-dagangshu' + }, + { + name: '快捷键', + value: 'shortcutKey', + icon: 'iconjianpan' + } +] diff --git a/web/src/pages/Edit/components/BaseStyle.vue b/web/src/pages/Edit/components/BaseStyle.vue index 13765843..14b0f8ee 100644 --- a/web/src/pages/Edit/components/BaseStyle.vue +++ b/web/src/pages/Edit/components/BaseStyle.vue @@ -298,6 +298,7 @@ import Color from './Color' import { lineWidthList, lineStyleList, backgroundRepeatList } from '@/config' import ImgUpload from '@/components/ImgUpload' import { storeConfig } from '@/api' +import { mapState } from 'vuex' /** * @Author: 王林 @@ -345,6 +346,8 @@ export default { } }, computed: { + ...mapState(['activeSidebar']), + lineStyleList() { return lineStyleList[this.$i18n.locale] || lineStyleList.zh }, @@ -352,14 +355,15 @@ export default { return backgroundRepeatList[this.$i18n.locale] || backgroundRepeatList.zh } }, - created() { - this.$bus.$on('showBaseStyle', () => { - this.$refs.sidebar.show = false - this.$nextTick(() => { + watch: { + activeSidebar(val) { + if (val === 'baseStyle') { this.$refs.sidebar.show = true this.initStyle() - }) - }) + } else { + this.$refs.sidebar.show = false + } + } }, methods: { /** diff --git a/web/src/pages/Edit/components/Edit.vue b/web/src/pages/Edit/components/Edit.vue index faf3b1ae..8abb204c 100644 --- a/web/src/pages/Edit/components/Edit.vue +++ b/web/src/pages/Edit/components/Edit.vue @@ -16,6 +16,7 @@ :mindMap="mindMap" > +
@@ -34,6 +35,7 @@ import NodeNoteContentShow from './NodeNoteContentShow.vue' import { getData, storeData, storeConfig } from '@/api' import Navigator from './Navigator.vue' import NodeImgPreview from './NodeImgPreview.vue' +import SidebarTrigger from './SidebarTrigger.vue' import { mapState } from 'vuex' /** @@ -55,7 +57,8 @@ export default { Contextmenu, NodeNoteContentShow, Navigator, - NodeImgPreview + NodeImgPreview, + SidebarTrigger }, data() { return { diff --git a/web/src/pages/Edit/components/Outline.vue b/web/src/pages/Edit/components/Outline.vue index 724a1c50..14d26731 100644 --- a/web/src/pages/Edit/components/Outline.vue +++ b/web/src/pages/Edit/components/Outline.vue @@ -6,6 +6,7 @@ diff --git a/web/src/pages/Edit/components/ShortcutKey.vue b/web/src/pages/Edit/components/ShortcutKey.vue index 3fe30186..247c5d7e 100644 --- a/web/src/pages/Edit/components/ShortcutKey.vue +++ b/web/src/pages/Edit/components/ShortcutKey.vue @@ -22,6 +22,7 @@ diff --git a/web/src/pages/Edit/components/Sidebar.vue b/web/src/pages/Edit/components/Sidebar.vue index e753b4b4..97968017 100644 --- a/web/src/pages/Edit/components/Sidebar.vue +++ b/web/src/pages/Edit/components/Sidebar.vue @@ -5,7 +5,7 @@ :class="{ show: show }" :style="{ zIndex: zIndex }" > - +
{{ title }}
@@ -17,6 +17,7 @@ diff --git a/web/src/pages/Edit/components/SidebarTrigger.vue b/web/src/pages/Edit/components/SidebarTrigger.vue new file mode 100644 index 00000000..e2676f73 --- /dev/null +++ b/web/src/pages/Edit/components/SidebarTrigger.vue @@ -0,0 +1,107 @@ + + + + + diff --git a/web/src/pages/Edit/components/Structure.vue b/web/src/pages/Edit/components/Structure.vue index fb2fee16..aa8bfa45 100644 --- a/web/src/pages/Edit/components/Structure.vue +++ b/web/src/pages/Edit/components/Structure.vue @@ -21,6 +21,7 @@ import Sidebar from './Sidebar' import { layoutList } from 'simple-mind-map/src/utils/constant' import { storeConfig } from '@/api' +import { mapState } from 'vuex' /** * @Author: 王林 @@ -43,14 +44,18 @@ export default { layout: '' } }, - created() { - this.$bus.$on('showStructure', () => { - this.$refs.sidebar.show = false - this.$nextTick(() => { + computed: { + ...mapState(['activeSidebar']) + }, + watch: { + activeSidebar(val) { + if (val === 'structure') { this.layout = this.mindMap.getLayout() this.$refs.sidebar.show = true - }) - }) + } else { + this.$refs.sidebar.show = false + } + } }, methods: { /** diff --git a/web/src/pages/Edit/components/Style.vue b/web/src/pages/Edit/components/Style.vue index a10f2861..70fb3a8d 100644 --- a/web/src/pages/Edit/components/Style.vue +++ b/web/src/pages/Edit/components/Style.vue @@ -1,6 +1,6 @@ @@ -383,6 +387,7 @@ import { shapeList } from '@/config' import { supportActiveStyle } from 'simple-mind-map/src/themes/default' +import { mapState } from 'vuex' /** * @Author: 王林 @@ -429,6 +434,8 @@ export default { } }, computed: { + ...mapState(['activeSidebar']), + fontFamilyList() { return fontFamilyList[this.$i18n.locale] || fontFamilyList.zh }, @@ -439,6 +446,15 @@ export default { return shapeList[this.$i18n.locale] || shapeList.zh } }, + watch: { + activeSidebar(val) { + if (val === 'nodeStyle') { + this.$refs.sidebar.show = true + } else { + this.$refs.sidebar.show = false + } + } + }, created() { this.$bus.$on('node_active', this.onNodeActive) }, @@ -452,12 +468,9 @@ export default { * @Desc: 监听节点激活事件 */ onNodeActive(...args) { - if (this.$refs.sidebar) this.$refs.sidebar.show = false this.$nextTick(() => { this.activeTab = 'normal' this.activeNodes = args[1] - if (this.$refs.sidebar) - this.$refs.sidebar.show = this.activeNodes.length > 0 this.initNodeStyle() }) }, @@ -616,6 +629,20 @@ export default { } } +.tipBox { + width: 100%; + height: 100%; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + color: #666; + + .tipIcon { + font-size: 100px; + } +} + .sidebarContent { padding: 20px; padding-top: 10px; diff --git a/web/src/pages/Edit/components/Theme.vue b/web/src/pages/Edit/components/Theme.vue index 682298da..1c091621 100644 --- a/web/src/pages/Edit/components/Theme.vue +++ b/web/src/pages/Edit/components/Theme.vue @@ -21,6 +21,7 @@ import Sidebar from './Sidebar' import { themeList } from 'simple-mind-map/src/utils/constant' import { storeConfig } from '@/api' +import { mapState } from 'vuex' /** * @Author: 王林 @@ -43,14 +44,18 @@ export default { theme: '' } }, - created() { - this.$bus.$on('showTheme', () => { - this.$refs.sidebar.show = false - this.$nextTick(() => { + computed: { + ...mapState(['activeSidebar']) + }, + watch: { + activeSidebar(val) { + if (val === 'theme') { this.theme = this.mindMap.getTheme() this.$refs.sidebar.show = true - }) - }) + } else { + this.$refs.sidebar.show = false + } + } }, methods: { /** diff --git a/web/src/pages/Edit/components/Toolbar.vue b/web/src/pages/Edit/components/Toolbar.vue index abb08640..fc7759cf 100644 --- a/web/src/pages/Edit/components/Toolbar.vue +++ b/web/src/pages/Edit/components/Toolbar.vue @@ -114,25 +114,6 @@ {{ $t('toolbar.summary') }}
- -
-
- - {{ $t('toolbar.displayOutline') }} -
-
- - {{ $t('toolbar.baseStyle') }} -
-
- - {{ $t('toolbar.theme') }} -
-
- - {{ $t('toolbar.strusture') }} -
-
@@ -155,10 +136,6 @@ {{ $t('toolbar.export') }}
-
- - {{ $t('toolbar.shortcutKey') }} -
diff --git a/web/src/store.js b/web/src/store.js index 1444ac2b..ad4f748d 100644 --- a/web/src/store.js +++ b/web/src/store.js @@ -12,7 +12,8 @@ const store = new Vuex.Store({ localConfig: { // 本地配置 isZenMode: false // 是否是禅模式 - } + }, + activeSidebar: '' // 当前显示的侧边栏 }, mutations: { /** @@ -46,6 +47,16 @@ const store = new Vuex.Store({ ...data } storeLocalConfig(state.localConfig) + }, + + /** + * javascript comment + * @Author: 王林25 + * @Date: 2022-11-15 19:25:26 + * @Desc: 设置当前显示的侧边栏 + */ + setActiveSidebar(state, data) { + state.activeSidebar = data } }, actions: {