@riil-frontend/component-topology 10.0.1 → 10.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (26) hide show
  1. package/build/1.js +1 -1
  2. package/build/index.css +1 -1
  3. package/build/index.js +12 -12
  4. package/es/core/editor/components/BackgroundView/index.js +4 -2
  5. package/es/core/editor/components/BackgroundView/index.module.scss +12 -3
  6. package/es/core/editor/components/Sidebar/panes.js +1 -1
  7. package/es/core/editor/components/Sidebar/views/ImagePanel/CiTypeImagePanel.js +2 -5
  8. package/es/core/editor/components/Sidebar/views/ImagePanel/HtImagePalette.js +7 -0
  9. package/es/core/editor/components/Sidebar/views/ImagePanel/ImagePanel.js +123 -34
  10. package/es/core/editor/components/Toolbar/components/Tooltip.js +0 -1
  11. package/es/core/editor/components/Toolbar/widgets/FontSizeWidget.js +1 -1
  12. package/es/core/editor/components/Toolbar/widgets/NodeSizeButton/NodeSizeButton.js +1 -1
  13. package/es/core/models/AttributeMetricDisplay.js +10 -8
  14. package/es/core/models/TopoApp.js +6 -3
  15. package/lib/core/editor/components/BackgroundView/index.js +4 -2
  16. package/lib/core/editor/components/BackgroundView/index.module.scss +12 -3
  17. package/lib/core/editor/components/Sidebar/panes.js +1 -1
  18. package/lib/core/editor/components/Sidebar/views/ImagePanel/CiTypeImagePanel.js +2 -6
  19. package/lib/core/editor/components/Sidebar/views/ImagePanel/HtImagePalette.js +7 -0
  20. package/lib/core/editor/components/Sidebar/views/ImagePanel/ImagePanel.js +123 -32
  21. package/lib/core/editor/components/Toolbar/components/Tooltip.js +0 -1
  22. package/lib/core/editor/components/Toolbar/widgets/FontSizeWidget.js +1 -1
  23. package/lib/core/editor/components/Toolbar/widgets/NodeSizeButton/NodeSizeButton.js +1 -1
  24. package/lib/core/models/AttributeMetricDisplay.js +10 -8
  25. package/lib/core/models/TopoApp.js +6 -3
  26. package/package.json +2 -2
@@ -286,7 +286,7 @@ export default function BackgroundView(props) {
286
286
  return /*#__PURE__*/React.createElement("div", {
287
287
  className: styles['background-view']
288
288
  }, /*#__PURE__*/React.createElement("div", {
289
- className: styles.option
289
+ className: styles.header
290
290
  }, /*#__PURE__*/React.createElement(_Button, {
291
291
  title: "\u6062\u590D\u9ED8\u8BA4",
292
292
  onClick: resetDefault
@@ -299,6 +299,8 @@ export default function BackgroundView(props) {
299
299
  }, /*#__PURE__*/React.createElement(_Icon, {
300
300
  type: "topo_button_icon_export"
301
301
  })))), /*#__PURE__*/React.createElement("div", {
302
+ className: styles.content
303
+ }, /*#__PURE__*/React.createElement("div", {
302
304
  className: styles.list
303
305
  }, /*#__PURE__*/React.createElement(List, {
304
306
  selected: (current === null || current === void 0 ? void 0 : current.id) || '',
@@ -328,7 +330,7 @@ export default function BackgroundView(props) {
328
330
  setUploadDialogVisible(false);
329
331
  getBackground();
330
332
  }
331
- }), /*#__PURE__*/React.createElement(_Loading, {
333
+ })), /*#__PURE__*/React.createElement(_Loading, {
332
334
  visible: loadingBackground,
333
335
  fullScreen: true
334
336
  }));
@@ -2,18 +2,27 @@
2
2
 
3
3
  .background-view {
4
4
  width: 260px;
5
- padding: 16px;
6
5
  background: #fff;
7
6
  height: 100%;
8
7
  overflow: auto;
9
- .option {
8
+ display: flex;
9
+ flex-direction: column;
10
+
11
+ .header {
12
+ padding: 16px 16px 12px 16px;
10
13
  text-align: right;
11
14
  button {
12
15
  margin-left: 8px;
13
16
  }
14
17
  }
18
+
19
+ .content {
20
+ flex: 1;
21
+ overflow: auto;
22
+ padding: 0 16px 16px 16px;
23
+ }
24
+
15
25
  .list {
16
- margin-top: 8px;
17
26
  .tag {
18
27
  width: 100%;
19
28
  height: 129px;
@@ -28,7 +28,7 @@ var panes = [{
28
28
  icon: '/img/topo/editor/sidebar/icon/背景.svg',
29
29
  content: BackgroundPanel
30
30
  }, {
31
- title: '画布',
31
+ title: '主题',
32
32
  key: 'canvas',
33
33
  titleTootip: '拓扑图画布底图',
34
34
  icon: '/img/topo/editor/sidebar/icon/画布.svg',
@@ -1,7 +1,6 @@
1
1
  import React, { useMemo } from 'react';
2
2
  import rlog from '@riil-frontend/component-topology-utils/es/rlog';
3
3
  import ImagePalette from "./HtImagePalette";
4
- import { getResourceIcons } from "../../../../../common/icons/icon";
5
4
  /**
6
5
  * 组件面板
7
6
  * @param {*} props
@@ -9,10 +8,8 @@ import { getResourceIcons } from "../../../../../common/icons/icon";
9
8
  */
10
9
 
11
10
  export default function CiTypeImagePanel(props) {
12
- var topo = props.topo;
13
- var icons = useMemo(function () {
14
- return getResourceIcons(topo);
15
- }, []);
11
+ var topo = props.topo,
12
+ icons = props.icons;
16
13
  return /*#__PURE__*/React.createElement(ImagePalette, {
17
14
  icons: icons,
18
15
  topo: topo
@@ -46,6 +46,13 @@ export default function HtImagePalette(props) {
46
46
  }
47
47
  };
48
48
  }, []);
49
+ useEffect(function () {
50
+ var view = viewRef.current;
51
+
52
+ if (view && view.setIcons) {
53
+ view.setIcons(icons);
54
+ }
55
+ }, [icons]);
49
56
  return /*#__PURE__*/React.createElement("div", {
50
57
  ref: divRef,
51
58
  className: styles.container
@@ -1,54 +1,143 @@
1
+ import _Box from "@alifd/next/es/box";
2
+ import _Search from "@alifd/next/es/search";
1
3
  import _extends from "@babel/runtime/helpers/extends";
2
4
  import _Button from "@alifd/next/es/button";
3
5
  import _Icon from "@alifd/next/es/icon";
4
- import React, { useMemo } from 'react';
6
+ import React, { useMemo, useState } from 'react';
5
7
  import Collapse from "../../../../../../components/collapse/Collapse";
6
8
  import CiTypeImagePanel from "./CiTypeImagePanel";
7
9
  import CustomImagePanel from "./CustomImagePanel";
8
- import { getBasicIcons } from "../../../../../common/icons/icon";
10
+ import { getResourceIcons, getBasicIcons } from "../../../../../common/icons/icon";
9
11
  import ImagePalette from "./HtImagePalette";
10
12
  import { useCustomIcons } from "../../../../../common/icons/useIcons";
11
13
  var CollapsePanel = Collapse.Panel;
12
14
  export default function ImagePanel(props) {
13
15
  var topo = props.topo;
16
+
17
+ var _useState = useState(''),
18
+ searchValue = _useState[0],
19
+ setSearchValue = _useState[1];
20
+
21
+ var resourceIcons = useMemo(function () {
22
+ return getResourceIcons(topo).filter(function (icon) {
23
+ if (!searchValue) {
24
+ return true;
25
+ }
26
+
27
+ return icon.name.toLocaleLowerCase().includes(searchValue.toLocaleLowerCase());
28
+ });
29
+ }, [searchValue]);
14
30
  var basicIcons = useMemo(function () {
15
- return getBasicIcons(topo, false);
16
- }, []);
31
+ return getBasicIcons(topo, false).filter(function (icon) {
32
+ if (!searchValue) {
33
+ return true;
34
+ }
35
+
36
+ return icon.name.toLocaleLowerCase().includes(searchValue.toLocaleLowerCase());
37
+ });
38
+ }, [searchValue]);
17
39
  var customIcons = useCustomIcons(topo);
40
+ var searchCustomIcons = useMemo(function () {
41
+ return customIcons.filter(function (icon) {
42
+ if (!searchValue) {
43
+ return true;
44
+ }
45
+
46
+ return icon.name.toLocaleLowerCase().includes(searchValue.toLocaleLowerCase());
47
+ });
48
+ }, [customIcons, searchValue]);
18
49
 
19
50
  var handleDownloadCustomImages = function handleDownloadCustomImages() {
20
51
  window.open('/topo/v1/api/shape/download/all');
21
52
  };
22
53
 
23
- return /*#__PURE__*/React.createElement(Collapse, {
24
- accordion: true,
25
- defaultExpandedKeys: ['资源图片'],
54
+ var handleSearch = function handleSearch(v) {
55
+ setSearchValue(v);
56
+ };
57
+
58
+ var handleSearchChange = function handleSearchChange(value) {
59
+ setSearchValue(value); // if (!value) {
60
+ // }
61
+ };
62
+
63
+ var renderImageContent = function renderImageContent() {
64
+ var panels = [{
65
+ key: '资源图片',
66
+ render: function render() {
67
+ return /*#__PURE__*/React.createElement(CollapsePanel, {
68
+ key: "\u8D44\u6E90\u56FE\u7247",
69
+ title: "\u8D44\u6E90\u56FE\u7247"
70
+ }, /*#__PURE__*/React.createElement(CiTypeImagePanel, {
71
+ topo: topo,
72
+ icons: resourceIcons
73
+ }));
74
+ }
75
+ }, {
76
+ key: '基础图片',
77
+ render: function render() {
78
+ return /*#__PURE__*/React.createElement(CollapsePanel, {
79
+ key: "\u57FA\u7840\u56FE\u7247",
80
+ title: "\u57FA\u7840\u56FE\u7247"
81
+ }, /*#__PURE__*/React.createElement(ImagePalette, {
82
+ icons: basicIcons,
83
+ topo: topo
84
+ }));
85
+ }
86
+ }, {
87
+ key: '自定义图片',
88
+ hidden: searchValue && !searchCustomIcons.length,
89
+ render: function render() {
90
+ return /*#__PURE__*/React.createElement(CollapsePanel, {
91
+ key: "\u81EA\u5B9A\u4E49\u56FE\u7247",
92
+ title: "\u81EA\u5B9A\u4E49\u56FE\u7247",
93
+ extra: /*#__PURE__*/React.createElement(_Button, {
94
+ title: "\u5BFC\u51FA",
95
+ onClick: handleDownloadCustomImages,
96
+ disabled: !customIcons.length
97
+ }, /*#__PURE__*/React.createElement(_Icon, {
98
+ type: "topo_button_icon_export"
99
+ }))
100
+ }, /*#__PURE__*/React.createElement(CustomImagePanel, _extends({}, props, {
101
+ icons: searchCustomIcons
102
+ })));
103
+ }
104
+ }].filter(function (panel) {
105
+ return !panel.hidden;
106
+ });
107
+ return /*#__PURE__*/React.createElement(Collapse, {
108
+ accordion: true,
109
+ defaultExpandedKeys: ['资源图片'],
110
+ style: {
111
+ border: 'none',
112
+ minWidth: '300px'
113
+ },
114
+ fullheight: true,
115
+ noContentPadding: true
116
+ }, panels.map(function (panel) {
117
+ return panel.render();
118
+ }));
119
+ };
120
+
121
+ return /*#__PURE__*/React.createElement(_Box, {
122
+ direction: "column",
123
+ style: {
124
+ height: '100%'
125
+ }
126
+ }, /*#__PURE__*/React.createElement("div", {
127
+ style: {
128
+ margin: '16px 16px 0px 16px'
129
+ }
130
+ }, /*#__PURE__*/React.createElement(_Search, {
131
+ value: searchValue,
132
+ onChange: handleSearchChange,
133
+ onSearch: handleSearch,
134
+ placeholder: "\u8BF7\u8F93\u5165\u5173\u952E\u8BCD",
135
+ shape: "simple",
136
+ hasClear: true,
26
137
  style: {
27
- border: 'none',
28
- minWidth: '300px'
29
- },
30
- fullheight: true,
31
- noContentPadding: true
32
- }, /*#__PURE__*/React.createElement(CollapsePanel, {
33
- key: "\u8D44\u6E90\u56FE\u7247",
34
- title: "\u8D44\u6E90\u56FE\u7247"
35
- }, /*#__PURE__*/React.createElement(CiTypeImagePanel, props)), /*#__PURE__*/React.createElement(CollapsePanel, {
36
- key: "\u57FA\u7840\u56FE\u7247",
37
- title: "\u57FA\u7840\u56FE\u7247"
38
- }, /*#__PURE__*/React.createElement(ImagePalette, {
39
- icons: basicIcons,
40
- topo: topo
41
- })), /*#__PURE__*/React.createElement(CollapsePanel, {
42
- key: "\u81EA\u5B9A\u4E49\u56FE\u7247",
43
- title: "\u81EA\u5B9A\u4E49\u56FE\u7247",
44
- extra: /*#__PURE__*/React.createElement(_Button, {
45
- title: "\u5BFC\u51FA",
46
- onClick: handleDownloadCustomImages,
47
- disabled: !customIcons.length
48
- }, /*#__PURE__*/React.createElement(_Icon, {
49
- type: "topo_button_icon_export"
50
- }))
51
- }, /*#__PURE__*/React.createElement(CustomImagePanel, _extends({}, props, {
52
- icons: customIcons
53
- }))));
138
+ width: '100%'
139
+ }
140
+ })), /*#__PURE__*/React.createElement(_Box, {
141
+ flex: 1
142
+ }, renderImageContent()));
54
143
  }
@@ -6,7 +6,6 @@ import styles from "./Tooltip.module.scss";
6
6
  function Tooltip(props) {
7
7
  var title = props.title;
8
8
  return /*#__PURE__*/React.createElement(_Balloon, _extends({
9
- v2: true,
10
9
  triggerType: "hover",
11
10
  title: "\u79FB\u52A8",
12
11
  align: "br",
@@ -40,7 +40,7 @@ function FontSizeWidget(props) {
40
40
  useEffect(function () {}, [selection]);
41
41
  return /*#__PURE__*/React.createElement(WidgetBox, {
42
42
  label: "\u5B57\u53F7",
43
- tooltip: "\u9009\u53D6\u6587\u5B57\u7684\u65B0\u5B57\u4F53",
43
+ tooltip: "\u66F4\u6539\u6587\u5B57\u5927\u5C0F",
44
44
  showLabel: showLabel,
45
45
  disabled: disabled
46
46
  }, /*#__PURE__*/React.createElement(FontSizeSelect, {
@@ -74,7 +74,7 @@ function NodeSizeButton(props) {
74
74
  return /*#__PURE__*/React.createElement(WidgetBox, {
75
75
  label: "\u56FE\u7247\u5C3A\u5BF8",
76
76
  disabled: disabled,
77
- tooltip: "\u56FE\u7247\u5C3A\u5BF8",
77
+ tooltip: "\u5C3A\u5BF8\u8BBE\u7F6E",
78
78
  showLabel: showLabel
79
79
  }, /*#__PURE__*/React.createElement("div", {
80
80
  className: styles.toolbarNodeSizeSetting
@@ -612,12 +612,11 @@ var AttributeMetricDisplay = /*#__PURE__*/function () {
612
612
  ;
613
613
 
614
614
  _proto.buildTagsTips = function buildTagsTips() {
615
- var _this6 = this;
616
-
617
615
  var data = this.getData(); // 获取标注、悬浮框配置
618
616
 
619
617
  var ciConfigs = this.getResourceTagTipConfig(); // console.log("buildTagsTips---ciConfigs", ciConfigs);
620
618
 
619
+ var formatter = new AttributeFormatter(this.topo);
621
620
  var ciTagsAndTips = ciConfigs.map(function (ciConfig) {
622
621
  var ciDataItem = findItem(data, "id", ciConfig.id); // console.log("buildTagsTips-ciDataItem", ciDataItem);
623
622
 
@@ -630,13 +629,17 @@ var AttributeMetricDisplay = /*#__PURE__*/function () {
630
629
  } // 获取ci数据
631
630
 
632
631
 
633
- var ciData = _extends({}, findItem(data, "id", ciConfig.id), {
632
+ var ciData = _extends({}, ciDataItem, {
634
633
  ciType: ciConfig.ciType
635
- });
634
+ }); // console.log("AttributeFormatter-----", ciData, ciConfig);
636
635
 
637
- var formatter = new AttributeFormatter(_this6.topo); // console.log("AttributeFormatter-----", ciData, ciConfig);
638
636
 
639
- var tags = formatter.formatAttrs(ciConfig.tags, ciData); // 链路标注箭头
637
+ var tags = formatter.formatAttrs(ciConfig.tags, ciData) // 展示的所有标注不带对应的名字(包括属性和指标)
638
+ .map(function (item) {
639
+ return _extends({}, item, {
640
+ name: ''
641
+ });
642
+ }); // 链路标注箭头
640
643
 
641
644
  if (ciConfig.type === "edge") {
642
645
  tags = {
@@ -653,8 +656,7 @@ var AttributeMetricDisplay = /*#__PURE__*/function () {
653
656
  };
654
657
  }); // console.log("ciTagsAndTips", ciTagsAndTips);
655
658
 
656
- var elementTagsAndTips = [].concat(ciTagsAndTips, this.extElementTagTipBuilder ? this.extElementTagTipBuilder.getExtElementTagsAndTips() : []);
657
- console.log("ciTagsAndTips", elementTagsAndTips); // 刷新标注、浮层
659
+ var elementTagsAndTips = [].concat(ciTagsAndTips, this.extElementTagTipBuilder ? this.extElementTagTipBuilder.getExtElementTagsAndTips() : []); // 刷新标注、浮层
658
660
  // rlog.debug('AttributeMetricDisplay.buildTagsTips', {tagsAndTips: elementTagsAndTips, ciConfigs});
659
661
 
660
662
  return elementTagsAndTips;
@@ -24,7 +24,7 @@ import ElementTagTipConfig from "./tagstips/ElementTagTipConfig";
24
24
  import SelectionModel from "./SelectionModel";
25
25
  import CiCache from "./cache/CiCache"; // eslint-disable-next-line no-undef
26
26
 
27
- var version = typeof "10.0.1" === 'string' ? "10.0.1" : null;
27
+ var version = typeof "10.0.3" === 'string' ? "10.0.3" : null;
28
28
  console.info("\u62D3\u6251\u7248\u672C: " + version);
29
29
  /**
30
30
  * 拓扑显示和编辑
@@ -570,8 +570,11 @@ var Topo = /*#__PURE__*/function () {
570
570
  return this.options.onSwitchToEditMode(this);
571
571
 
572
572
  case 13:
573
- // 更新节点名称显示隐藏
574
- this.attributeMetricDisplay.updateNodesNameVisible(); // 加载自定义上传的图标
573
+ if (this.getDataModel()) {
574
+ // 更新节点名称显示隐藏
575
+ this.attributeMetricDisplay.updateNodesNameVisible();
576
+ } // 加载自定义上传的图标
577
+
575
578
 
576
579
  iconManageDispatchers = this.store.getModelDispatchers('customIcon');
577
580
  iconManageDispatchers.loadEditorIcons();
@@ -315,7 +315,7 @@ function BackgroundView(props) {
315
315
  return /*#__PURE__*/_react["default"].createElement("div", {
316
316
  className: _indexModule["default"]['background-view']
317
317
  }, /*#__PURE__*/_react["default"].createElement("div", {
318
- className: _indexModule["default"].option
318
+ className: _indexModule["default"].header
319
319
  }, /*#__PURE__*/_react["default"].createElement(_button["default"], {
320
320
  title: "\u6062\u590D\u9ED8\u8BA4",
321
321
  onClick: resetDefault
@@ -328,6 +328,8 @@ function BackgroundView(props) {
328
328
  }, /*#__PURE__*/_react["default"].createElement(_icon["default"], {
329
329
  type: "topo_button_icon_export"
330
330
  })))), /*#__PURE__*/_react["default"].createElement("div", {
331
+ className: _indexModule["default"].content
332
+ }, /*#__PURE__*/_react["default"].createElement("div", {
331
333
  className: _indexModule["default"].list
332
334
  }, /*#__PURE__*/_react["default"].createElement(List, {
333
335
  selected: (current === null || current === void 0 ? void 0 : current.id) || '',
@@ -357,7 +359,7 @@ function BackgroundView(props) {
357
359
  setUploadDialogVisible(false);
358
360
  getBackground();
359
361
  }
360
- }), /*#__PURE__*/_react["default"].createElement(_loading["default"], {
362
+ })), /*#__PURE__*/_react["default"].createElement(_loading["default"], {
361
363
  visible: loadingBackground,
362
364
  fullScreen: true
363
365
  }));
@@ -2,18 +2,27 @@
2
2
 
3
3
  .background-view {
4
4
  width: 260px;
5
- padding: 16px;
6
5
  background: #fff;
7
6
  height: 100%;
8
7
  overflow: auto;
9
- .option {
8
+ display: flex;
9
+ flex-direction: column;
10
+
11
+ .header {
12
+ padding: 16px 16px 12px 16px;
10
13
  text-align: right;
11
14
  button {
12
15
  margin-left: 8px;
13
16
  }
14
17
  }
18
+
19
+ .content {
20
+ flex: 1;
21
+ overflow: auto;
22
+ padding: 0 16px 16px 16px;
23
+ }
24
+
15
25
  .list {
16
- margin-top: 8px;
17
26
  .tag {
18
27
  width: 100%;
19
28
  height: 129px;
@@ -40,7 +40,7 @@ var panes = [{
40
40
  icon: '/img/topo/editor/sidebar/icon/背景.svg',
41
41
  content: _BackgroundPanel["default"]
42
42
  }, {
43
- title: '画布',
43
+ title: '主题',
44
44
  key: 'canvas',
45
45
  titleTootip: '拓扑图画布底图',
46
46
  icon: '/img/topo/editor/sidebar/icon/画布.svg',
@@ -11,8 +11,6 @@ var _rlog = _interopRequireDefault(require("@riil-frontend/component-topology-ut
11
11
 
12
12
  var _HtImagePalette = _interopRequireDefault(require("./HtImagePalette"));
13
13
 
14
- var _icon = require("../../../../../common/icons/icon");
15
-
16
14
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
17
15
 
18
16
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
@@ -23,10 +21,8 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
23
21
  * @returns
24
22
  */
25
23
  function CiTypeImagePanel(props) {
26
- var topo = props.topo;
27
- var icons = (0, _react.useMemo)(function () {
28
- return (0, _icon.getResourceIcons)(topo);
29
- }, []);
24
+ var topo = props.topo,
25
+ icons = props.icons;
30
26
  return /*#__PURE__*/_react["default"].createElement(_HtImagePalette["default"], {
31
27
  icons: icons,
32
28
  topo: topo
@@ -60,6 +60,13 @@ function HtImagePalette(props) {
60
60
  }
61
61
  };
62
62
  }, []);
63
+ (0, _react.useEffect)(function () {
64
+ var view = viewRef.current;
65
+
66
+ if (view && view.setIcons) {
67
+ view.setIcons(icons);
68
+ }
69
+ }, [icons]);
63
70
  return /*#__PURE__*/_react["default"].createElement("div", {
64
71
  ref: divRef,
65
72
  className: _HtImagePaletteModule["default"].container
@@ -5,6 +5,10 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  exports.__esModule = true;
6
6
  exports["default"] = ImagePanel;
7
7
 
8
+ var _box = _interopRequireDefault(require("@alifd/next/lib/box"));
9
+
10
+ var _search = _interopRequireDefault(require("@alifd/next/lib/search"));
11
+
8
12
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
13
 
10
14
  var _button = _interopRequireDefault(require("@alifd/next/lib/button"));
@@ -33,44 +37,131 @@ var CollapsePanel = _Collapse["default"].Panel;
33
37
 
34
38
  function ImagePanel(props) {
35
39
  var topo = props.topo;
40
+
41
+ var _useState = (0, _react.useState)(''),
42
+ searchValue = _useState[0],
43
+ setSearchValue = _useState[1];
44
+
45
+ var resourceIcons = (0, _react.useMemo)(function () {
46
+ return (0, _icon2.getResourceIcons)(topo).filter(function (icon) {
47
+ if (!searchValue) {
48
+ return true;
49
+ }
50
+
51
+ return icon.name.toLocaleLowerCase().includes(searchValue.toLocaleLowerCase());
52
+ });
53
+ }, [searchValue]);
36
54
  var basicIcons = (0, _react.useMemo)(function () {
37
- return (0, _icon2.getBasicIcons)(topo, false);
38
- }, []);
55
+ return (0, _icon2.getBasicIcons)(topo, false).filter(function (icon) {
56
+ if (!searchValue) {
57
+ return true;
58
+ }
59
+
60
+ return icon.name.toLocaleLowerCase().includes(searchValue.toLocaleLowerCase());
61
+ });
62
+ }, [searchValue]);
39
63
  var customIcons = (0, _useIcons.useCustomIcons)(topo);
64
+ var searchCustomIcons = (0, _react.useMemo)(function () {
65
+ return customIcons.filter(function (icon) {
66
+ if (!searchValue) {
67
+ return true;
68
+ }
69
+
70
+ return icon.name.toLocaleLowerCase().includes(searchValue.toLocaleLowerCase());
71
+ });
72
+ }, [customIcons, searchValue]);
40
73
 
41
74
  var handleDownloadCustomImages = function handleDownloadCustomImages() {
42
75
  window.open('/topo/v1/api/shape/download/all');
43
76
  };
44
77
 
45
- return /*#__PURE__*/_react["default"].createElement(_Collapse["default"], {
46
- accordion: true,
47
- defaultExpandedKeys: ['资源图片'],
78
+ var handleSearch = function handleSearch(v) {
79
+ setSearchValue(v);
80
+ };
81
+
82
+ var handleSearchChange = function handleSearchChange(value) {
83
+ setSearchValue(value); // if (!value) {
84
+ // }
85
+ };
86
+
87
+ var renderImageContent = function renderImageContent() {
88
+ var panels = [{
89
+ key: '资源图片',
90
+ render: function render() {
91
+ return /*#__PURE__*/_react["default"].createElement(CollapsePanel, {
92
+ key: "\u8D44\u6E90\u56FE\u7247",
93
+ title: "\u8D44\u6E90\u56FE\u7247"
94
+ }, /*#__PURE__*/_react["default"].createElement(_CiTypeImagePanel["default"], {
95
+ topo: topo,
96
+ icons: resourceIcons
97
+ }));
98
+ }
99
+ }, {
100
+ key: '基础图片',
101
+ render: function render() {
102
+ return /*#__PURE__*/_react["default"].createElement(CollapsePanel, {
103
+ key: "\u57FA\u7840\u56FE\u7247",
104
+ title: "\u57FA\u7840\u56FE\u7247"
105
+ }, /*#__PURE__*/_react["default"].createElement(_HtImagePalette["default"], {
106
+ icons: basicIcons,
107
+ topo: topo
108
+ }));
109
+ }
110
+ }, {
111
+ key: '自定义图片',
112
+ hidden: searchValue && !searchCustomIcons.length,
113
+ render: function render() {
114
+ return /*#__PURE__*/_react["default"].createElement(CollapsePanel, {
115
+ key: "\u81EA\u5B9A\u4E49\u56FE\u7247",
116
+ title: "\u81EA\u5B9A\u4E49\u56FE\u7247",
117
+ extra: /*#__PURE__*/_react["default"].createElement(_button["default"], {
118
+ title: "\u5BFC\u51FA",
119
+ onClick: handleDownloadCustomImages,
120
+ disabled: !customIcons.length
121
+ }, /*#__PURE__*/_react["default"].createElement(_icon["default"], {
122
+ type: "topo_button_icon_export"
123
+ }))
124
+ }, /*#__PURE__*/_react["default"].createElement(_CustomImagePanel["default"], (0, _extends2["default"])({}, props, {
125
+ icons: searchCustomIcons
126
+ })));
127
+ }
128
+ }].filter(function (panel) {
129
+ return !panel.hidden;
130
+ });
131
+ return /*#__PURE__*/_react["default"].createElement(_Collapse["default"], {
132
+ accordion: true,
133
+ defaultExpandedKeys: ['资源图片'],
134
+ style: {
135
+ border: 'none',
136
+ minWidth: '300px'
137
+ },
138
+ fullheight: true,
139
+ noContentPadding: true
140
+ }, panels.map(function (panel) {
141
+ return panel.render();
142
+ }));
143
+ };
144
+
145
+ return /*#__PURE__*/_react["default"].createElement(_box["default"], {
146
+ direction: "column",
147
+ style: {
148
+ height: '100%'
149
+ }
150
+ }, /*#__PURE__*/_react["default"].createElement("div", {
151
+ style: {
152
+ margin: '16px 16px 0px 16px'
153
+ }
154
+ }, /*#__PURE__*/_react["default"].createElement(_search["default"], {
155
+ value: searchValue,
156
+ onChange: handleSearchChange,
157
+ onSearch: handleSearch,
158
+ placeholder: "\u8BF7\u8F93\u5165\u5173\u952E\u8BCD",
159
+ shape: "simple",
160
+ hasClear: true,
48
161
  style: {
49
- border: 'none',
50
- minWidth: '300px'
51
- },
52
- fullheight: true,
53
- noContentPadding: true
54
- }, /*#__PURE__*/_react["default"].createElement(CollapsePanel, {
55
- key: "\u8D44\u6E90\u56FE\u7247",
56
- title: "\u8D44\u6E90\u56FE\u7247"
57
- }, /*#__PURE__*/_react["default"].createElement(_CiTypeImagePanel["default"], props)), /*#__PURE__*/_react["default"].createElement(CollapsePanel, {
58
- key: "\u57FA\u7840\u56FE\u7247",
59
- title: "\u57FA\u7840\u56FE\u7247"
60
- }, /*#__PURE__*/_react["default"].createElement(_HtImagePalette["default"], {
61
- icons: basicIcons,
62
- topo: topo
63
- })), /*#__PURE__*/_react["default"].createElement(CollapsePanel, {
64
- key: "\u81EA\u5B9A\u4E49\u56FE\u7247",
65
- title: "\u81EA\u5B9A\u4E49\u56FE\u7247",
66
- extra: /*#__PURE__*/_react["default"].createElement(_button["default"], {
67
- title: "\u5BFC\u51FA",
68
- onClick: handleDownloadCustomImages,
69
- disabled: !customIcons.length
70
- }, /*#__PURE__*/_react["default"].createElement(_icon["default"], {
71
- type: "topo_button_icon_export"
72
- }))
73
- }, /*#__PURE__*/_react["default"].createElement(_CustomImagePanel["default"], (0, _extends2["default"])({}, props, {
74
- icons: customIcons
75
- }))));
162
+ width: '100%'
163
+ }
164
+ })), /*#__PURE__*/_react["default"].createElement(_box["default"], {
165
+ flex: 1
166
+ }, renderImageContent()));
76
167
  }