@alicloud/console-base-rc-side-panel 1.1.11 → 1.1.12-beta.0

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 (78) hide show
  1. package/build/cjs/model/const/index.js +2 -4
  2. package/build/cjs/model/enum/index.js +0 -1
  3. package/build/cjs/model/hook/index.js +1 -15
  4. package/build/cjs/model/hook/use-effects.js +0 -2
  5. package/build/cjs/model/reducer/index.js +0 -3
  6. package/build/cjs/ui/index.js +4 -3
  7. package/build/cjs/ui/rc/side-panel-item-button/index.js +14 -28
  8. package/build/cjs/ui/rc/side-panel-item-button/styles.js +32 -0
  9. package/build/cjs/ui/rc/side-panel-item-wrap/index.js +1 -1
  10. package/build/cjs/ui/rc-container/collapse-aside/index.js +28 -0
  11. package/build/cjs/ui/rc-container/collapse-aside/styles.js +36 -0
  12. package/build/cjs/ui/rc-container/collapse-toggle/index.js +30 -58
  13. package/build/cjs/ui/rc-container/collapse-toggle/styles.js +43 -0
  14. package/build/cjs/ui/rc-container/index.js +11 -5
  15. package/build/cjs/ui/rc-container/item/index.js +55 -20
  16. package/build/cjs/ui/rc-container/items/index.js +27 -8
  17. package/build/esm/model/const/index.js +1 -3
  18. package/build/esm/model/enum/index.js +0 -1
  19. package/build/esm/model/hook/index.js +1 -3
  20. package/build/esm/model/hook/use-effects.js +0 -2
  21. package/build/esm/model/reducer/index.js +0 -3
  22. package/build/esm/ui/index.js +5 -4
  23. package/build/esm/ui/rc/side-panel-item-button/index.js +15 -25
  24. package/build/esm/ui/rc/side-panel-item-button/styles.js +22 -0
  25. package/build/esm/ui/rc/side-panel-item-wrap/index.js +1 -1
  26. package/build/esm/ui/rc-container/collapse-aside/index.js +19 -0
  27. package/build/esm/ui/rc-container/collapse-aside/styles.js +27 -0
  28. package/build/esm/ui/rc-container/collapse-toggle/index.js +31 -59
  29. package/build/esm/ui/rc-container/collapse-toggle/styles.js +34 -0
  30. package/build/esm/ui/rc-container/index.js +3 -3
  31. package/build/esm/ui/rc-container/item/index.js +56 -21
  32. package/build/esm/ui/rc-container/items/index.js +28 -10
  33. package/build/types/model/const/index.d.ts +0 -1
  34. package/build/types/model/enum/index.d.ts +1 -2
  35. package/build/types/model/hook/index.d.ts +0 -2
  36. package/build/types/model/types/action.d.ts +1 -1
  37. package/build/types/model/types/common.d.ts +49 -12
  38. package/build/types/model/types/props.d.ts +0 -8
  39. package/build/types/model/types/state.d.ts +0 -1
  40. package/build/types/ui/rc/side-panel-item-button/index.d.ts +2 -2
  41. package/build/types/ui/rc/side-panel-item-button/styles.d.ts +4 -0
  42. package/build/types/ui/rc-container/collapse-aside/index.d.ts +1 -0
  43. package/build/types/ui/rc-container/collapse-aside/styles.d.ts +3 -0
  44. package/build/types/ui/rc-container/collapse-toggle/styles.d.ts +10 -0
  45. package/build/types/ui/rc-container/index.d.ts +2 -2
  46. package/build/types/ui/rc-container/item/index.d.ts +1 -1
  47. package/build/types/ui/rc-container/items/index.d.ts +2 -6
  48. package/package.json +4 -2
  49. package/build/cjs/model/hook/use-dispatch-set-quick-top-visible.js +0 -19
  50. package/build/cjs/model/hook/use-effect-quick-top.js +0 -40
  51. package/build/cjs/model/hook/use-handle-go-top.js +0 -22
  52. package/build/cjs/model/hook/use-handle-set-quick-top-visible.js +0 -19
  53. package/build/cjs/model/hook/use-quick-top.js +0 -19
  54. package/build/cjs/model/reducer/reduce-set-quick-top-visible.js +0 -15
  55. package/build/cjs/ui/rc-container/items-bottom/index.js +0 -28
  56. package/build/cjs/ui/rc-container/items-bottom/quick-top/index.js +0 -29
  57. package/build/cjs/ui/rc-container/items-top/index.js +0 -20
  58. package/build/cjs/ui/types/index.js +0 -5
  59. package/build/esm/model/hook/use-dispatch-set-quick-top-visible.js +0 -12
  60. package/build/esm/model/hook/use-effect-quick-top.js +0 -33
  61. package/build/esm/model/hook/use-handle-go-top.js +0 -15
  62. package/build/esm/model/hook/use-handle-set-quick-top-visible.js +0 -12
  63. package/build/esm/model/hook/use-quick-top.js +0 -12
  64. package/build/esm/model/reducer/reduce-set-quick-top-visible.js +0 -8
  65. package/build/esm/ui/rc-container/items-bottom/index.js +0 -21
  66. package/build/esm/ui/rc-container/items-bottom/quick-top/index.js +0 -22
  67. package/build/esm/ui/rc-container/items-top/index.js +0 -13
  68. package/build/esm/ui/types/index.js +0 -1
  69. package/build/types/model/hook/use-dispatch-set-quick-top-visible.d.ts +0 -1
  70. package/build/types/model/hook/use-effect-quick-top.d.ts +0 -1
  71. package/build/types/model/hook/use-handle-go-top.d.ts +0 -1
  72. package/build/types/model/hook/use-handle-set-quick-top-visible.d.ts +0 -1
  73. package/build/types/model/hook/use-quick-top.d.ts +0 -6
  74. package/build/types/model/reducer/reduce-set-quick-top-visible.d.ts +0 -2
  75. package/build/types/ui/rc-container/items-bottom/index.d.ts +0 -1
  76. package/build/types/ui/rc-container/items-bottom/quick-top/index.d.ts +0 -1
  77. package/build/types/ui/rc-container/items-top/index.d.ts +0 -1
  78. package/build/types/ui/types/index.d.ts +0 -5
@@ -4,9 +4,13 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.default = Items;
7
+ exports.ItemsBottom = ItemsBottom;
8
+ exports.ItemsTop = ItemsTop;
8
9
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
10
  var _react = _interopRequireDefault(require("react"));
11
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
12
+ var _consoleBaseRcFlex = _interopRequireDefault(require("@alicloud/console-base-rc-flex"));
13
+ var _consoleBaseThemeScBase = require("@alicloud/console-base-theme-sc-base");
10
14
  var _model = require("../../../model");
11
15
  var _const = require("../../const");
12
16
  var _item = _interopRequireDefault(require("../item"));
@@ -14,13 +18,28 @@ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbol
14
18
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
15
19
  function Items(_ref) {
16
20
  var items = _ref.items;
17
- var collapsed = (0, _model.useCollapsed)();
18
21
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, items.map(function (v) {
19
- var _v$tooltipOptions;
20
- // 侧边栏收起时,默认展示的 tooltip 需要关闭,不能放在 Item 中,否则会使其重复渲染。
21
- if (collapsed && v !== null && v !== void 0 && (_v$tooltipOptions = v.tooltipOptions) !== null && _v$tooltipOptions !== void 0 && _v$tooltipOptions.open) {
22
- v.tooltipOptions.open = false;
23
- }
24
- return /*#__PURE__*/_react.default.createElement(_item.default, _objectSpread((0, _defineProperty2.default)((0, _defineProperty2.default)({}, _const.DATA_KEY_SIDE_PANEL_ITEM, v.key), "spm", v.key), v));
22
+ return /*#__PURE__*/_react.default.createElement(_item.default, _objectSpread(_objectSpread({}, v), {}, (0, _defineProperty2.default)((0, _defineProperty2.default)({}, _const.DATA_KEY_SIDE_PANEL_ITEM, v.key), "spm", v.key)));
23
+ }));
24
+ }
25
+ function ItemsTop() {
26
+ var items = (0, _model.useItemsTop)();
27
+ return /*#__PURE__*/_react.default.createElement(_consoleBaseRcFlex.default, {
28
+ vertical: true,
29
+ flex: true
30
+ }, /*#__PURE__*/_react.default.createElement(Items, {
31
+ items: items
32
+ }));
33
+ }
34
+ var ScHr = (0, _styledComponents.default)(_consoleBaseThemeScBase.HrBase).withConfig({
35
+ componentId: "sc-1h5t3jq-0"
36
+ })(["margin:", "px 4px;"], _const.SPACING_Y);
37
+ function ItemsBottom() {
38
+ var children = (0, _model.useChildren)();
39
+ var items = (0, _model.useItemsBottom)();
40
+ return /*#__PURE__*/_react.default.createElement(_consoleBaseRcFlex.default, {
41
+ vertical: true
42
+ }, children || items.length ? /*#__PURE__*/_react.default.createElement(ScHr, null) : null, children || /*#__PURE__*/_react.default.createElement(Items, {
43
+ items: items
25
44
  }));
26
45
  }
@@ -1,6 +1,4 @@
1
1
  export var BODY_CLASS_WITH_SIDE_PANEL = 'with-side-panel';
2
- export var QUICK_TOP_VISIBLE_OFFSET = 200;
3
2
  export var DEFAULT_CONTEXT_STATE = {
4
- collapsed: false,
5
- quickTopVisible: false
3
+ collapsed: true
6
4
  };
@@ -1,5 +1,4 @@
1
1
  export var EAction = /*#__PURE__*/function (EAction) {
2
2
  EAction[EAction["SET_COLLAPSED"] = 0] = "SET_COLLAPSED";
3
- EAction[EAction["SET_QUICK_TOP_VISIBLE"] = 1] = "SET_QUICK_TOP_VISIBLE";
4
3
  return EAction;
5
4
  }({});
@@ -4,8 +4,6 @@ export { default as useVisible } from './use-visible';
4
4
  export { default as useCollapsed } from './use-collapsed';
5
5
  export { default as useItemsTop } from './use-items-top';
6
6
  export { default as useItemsBottom } from './use-items-bottom';
7
- export { default as useQuickTop } from './use-quick-top';
8
7
 
9
8
  // handlers
10
- export { default as useHandleCollapsedChange } from './use-handle-collapsed-change';
11
- export { default as useHandleGoTop } from './use-handle-go-top';
9
+ export { default as useHandleCollapsedChange } from './use-handle-collapsed-change';
@@ -1,6 +1,4 @@
1
1
  import useEffectToggleBodyClass from './use-effect-toggle-body-class';
2
- import useEffectQuickTop from './use-effect-quick-top';
3
2
  export default function useEffects() {
4
3
  useEffectToggleBodyClass();
5
- useEffectQuickTop();
6
4
  }
@@ -1,12 +1,9 @@
1
1
  import { EAction } from '../enum';
2
2
  import reduceSetCollapsed from './reduce-set-collapsed';
3
- import reduceSetQuickTopVisible from './reduce-set-quick-top-visible';
4
3
  export default function reducer(state, action) {
5
4
  switch (action.type) {
6
5
  case EAction.SET_COLLAPSED:
7
6
  return reduceSetCollapsed(state, action.payload);
8
- case EAction.SET_QUICK_TOP_VISIBLE:
9
- return reduceSetQuickTopVisible(state, action.payload);
10
7
  default:
11
8
  return state;
12
9
  }
@@ -5,11 +5,12 @@ import { SIZE, Z_INDEX, mixinBgPrimary, mixinBorderTertiaryLeft } from '@aliclou
5
5
  import { useVisible, useCollapsed } from '../model';
6
6
  import { SIZE_BUTTON_WRAP_HEIGHT, SPACING_Y, DATA_KEY_J } from './const';
7
7
  import { GlobalStyleOnBody } from './rc';
8
- import { ItemsTop, ItemsBottom, CollapseToggle } from './rc-container';
8
+ import { ItemsTop, ItemsBottom, CollapseToggle, CollapseAside } from './rc-container';
9
9
  var ScAside = styled.aside.withConfig({
10
10
  componentId: "sc-1ok6knf-0"
11
- })(["display:flex;flex-direction:column;position:fixed;top:0;right:0;bottom:0;z-index:", ";padding:", "px 0 ", "px 0;width:", "px;transition:transform ease-in-out 250ms;box-shadow:none;", " ", " ", " .hasTopbar &{top:", "px;}"], Z_INDEX.SIDE_PANEL, SPACING_Y * 1.5, SIZE_BUTTON_WRAP_HEIGHT + SPACING_Y, SIZE.WIDTH_SIDE_PANEL, mixinBgPrimary, mixinBorderTertiaryLeft, function (props) {
12
- return props.$collapsed ? css(["transform:translateX(101%);border:none !important;"]) : mixinBorderTertiaryLeft;
11
+ })(["z-index:", ";position:fixed;top:0;right:0;bottom:0;display:flex;flex-direction:column;padding:", "px 0 ", "px 0;width:", "px;transition:transform ease-in-out 250ms;box-shadow:none;", " ", " ", " .hasTopbar &{top:", "px;}"], Z_INDEX.SIDE_PANEL, SPACING_Y * 1.5, SIZE_BUTTON_WRAP_HEIGHT + SPACING_Y, SIZE.WIDTH_SIDE_PANEL, mixinBgPrimary, mixinBorderTertiaryLeft, function (_ref) {
12
+ var $collapsed = _ref.$collapsed;
13
+ return $collapsed ? css(["transform:translateX(101%);border:none !important;"]) : mixinBorderTertiaryLeft;
13
14
  }, SIZE.HEIGHT_TOP_NAV);
14
15
  export default function Ui() {
15
16
  var visible = useVisible();
@@ -17,5 +18,5 @@ export default function Ui() {
17
18
  return visible ? /*#__PURE__*/React.createElement(ScAside, _defineProperty({
18
19
  $collapsed: collapsed,
19
20
  className: 'J_fixed_right_will_be_pushed_left'
20
- }, DATA_KEY_J, ''), /*#__PURE__*/React.createElement(GlobalStyleOnBody, null), /*#__PURE__*/React.createElement(ItemsTop, null), /*#__PURE__*/React.createElement(ItemsBottom, null), /*#__PURE__*/React.createElement(CollapseToggle, null)) : null;
21
+ }, DATA_KEY_J, ''), /*#__PURE__*/React.createElement(GlobalStyleOnBody, null), /*#__PURE__*/React.createElement(ItemsTop, null), /*#__PURE__*/React.createElement(ItemsBottom, null), /*#__PURE__*/React.createElement(CollapseAside, null), /*#__PURE__*/React.createElement(CollapseToggle, null)) : null;
21
22
  }
@@ -1,38 +1,28 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
2
  import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
3
- var _excluded = ["title", "onlyShowIcon"];
3
+ var _excluded = ["title", "icon", "onlyShowIcon", "active"];
4
4
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
5
5
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
6
- import React from "react";
7
- import styled, { css } from "styled-components";
8
- import { mixinTextSecondary, mixinBgSecondaryFade, mixinBgTertiaryFade, mixinShadowSDown } from "@alicloud/console-base-theme";
9
- import Button, { ButtonSize, ButtonTheme } from "@alicloud/console-base-rc-button";
10
- import { SIZE_BUTTON, SIZE_BUTTON_ICON } from "../../const";
11
- var ScButton = styled(Button).withConfig({
12
- componentId: "sc-titsgb-0"
13
- })(["border-radius:", "px;width:", "px;height:", "px;line-height:", "px;", " ", " ", " i{font-size:", "px;}svg,img{display:inline-block;width:", "px;height:", "px;vertical-align:middle;}&:hover{", "}a:link&,a:visited&{", "}"], SIZE_BUTTON, SIZE_BUTTON, SIZE_BUTTON, SIZE_BUTTON, mixinBgSecondaryFade, mixinTextSecondary, function (props) {
14
- return props.active ? css(["", " ", ""], mixinBgTertiaryFade, mixinShadowSDown) : null;
15
- }, SIZE_BUTTON_ICON, SIZE_BUTTON_ICON, SIZE_BUTTON_ICON, mixinBgTertiaryFade, mixinTextSecondary);
16
- var ScButtonIcon = styled(Button).withConfig({
17
- componentId: "sc-titsgb-1"
18
- })(["border-radius:", "px;width:", "px;height:", "px;line-height:", "px;svg,img{display:inline-block;width:", "px;height:", "px;vertical-align:middle;}"], SIZE_BUTTON, SIZE_BUTTON, SIZE_BUTTON, SIZE_BUTTON, SIZE_BUTTON, SIZE_BUTTON);
6
+ import React from 'react';
7
+ import { ButtonSize, ButtonTheme } from '@alicloud/console-base-rc-button';
8
+ import { renderEasyIcon } from '@alicloud/console-base-rc-easy-icon';
9
+ import { ScButton } from './styles';
19
10
 
20
11
  /**
21
12
  * 工具的按钮
22
13
  */
23
14
  export default function SidePanelItemButton(_ref) {
24
15
  var title = _ref.title,
16
+ icon = _ref.icon,
25
17
  onlyShowIcon = _ref.onlyShowIcon,
26
- props = _objectWithoutProperties(_ref, _excluded);
27
- return onlyShowIcon ? /*#__PURE__*/React.createElement(ScButtonIcon, _objectSpread(_objectSpread({
28
- "aria-label": title
29
- }, props), {}, {
18
+ active = _ref.active,
19
+ rest = _objectWithoutProperties(_ref, _excluded);
20
+ return /*#__PURE__*/React.createElement(ScButton, _objectSpread({
30
21
  size: ButtonSize.NONE,
31
- theme: ButtonTheme.NONE
32
- })) : /*#__PURE__*/React.createElement(ScButton, _objectSpread(_objectSpread({
33
- "aria-label": title
34
- }, props), {}, {
35
- size: ButtonSize.NONE,
36
- theme: ButtonTheme.NONE
37
- }));
22
+ theme: ButtonTheme.NONE,
23
+ 'aria-label': title,
24
+ label: renderEasyIcon(icon) || '',
25
+ $onlyShowIcon: onlyShowIcon || false,
26
+ $active: active || false
27
+ }, rest));
38
28
  }
@@ -0,0 +1,22 @@
1
+ import styled, { css } from 'styled-components';
2
+ import Button from '@alicloud/console-base-rc-button';
3
+ import { mixinTextSecondary, mixinBgSecondaryFade, mixinBgTertiaryFade, mixinShadowSDown } from '@alicloud/console-base-theme';
4
+ import { SIZE_BUTTON, SIZE_BUTTON_ICON } from '../../const';
5
+ export var ScButton = styled(Button).withConfig({
6
+ componentId: "sc-1fk7xls-0"
7
+ })(["width:", "px;height:", "px;line-height:", "px;border-radius:", "px;", " ", " i{font-size:", "px;}svg,img{display:inline-block;width:", "px;height:", "px;vertical-align:middle;}"], SIZE_BUTTON, SIZE_BUTTON, SIZE_BUTTON, SIZE_BUTTON, function (_ref) {
8
+ var $onlyShowIcon = _ref.$onlyShowIcon;
9
+ return !$onlyShowIcon ? css(["", " ", " &:hover{", "}a:link&,a:visited&{", "}"], mixinBgSecondaryFade, mixinTextSecondary, mixinBgTertiaryFade, mixinTextSecondary) : null;
10
+ }, function (_ref2) {
11
+ var $active = _ref2.$active;
12
+ return $active ? css(["", " ", ""], mixinBgTertiaryFade, mixinShadowSDown) : null;
13
+ }, function (_ref3) {
14
+ var $onlyShowIcon = _ref3.$onlyShowIcon;
15
+ return !$onlyShowIcon ? SIZE_BUTTON_ICON : SIZE_BUTTON;
16
+ }, function (_ref4) {
17
+ var $onlyShowIcon = _ref4.$onlyShowIcon;
18
+ return !$onlyShowIcon ? SIZE_BUTTON_ICON : SIZE_BUTTON;
19
+ }, function (_ref5) {
20
+ var $onlyShowIcon = _ref5.$onlyShowIcon;
21
+ return !$onlyShowIcon ? SIZE_BUTTON_ICON : SIZE_BUTTON;
22
+ });
@@ -6,4 +6,4 @@ import { SIZE_BUTTON_WRAP_WIDTH, SIZE_BUTTON_WRAP_HEIGHT } from '../../const';
6
6
  */
7
7
  export default styled.div.withConfig({
8
8
  componentId: "sc-3r2cly-0"
9
- })(["display:flex;align-items:center;justify-content:center;position:relative;width:", "px;height:", "px;transition:all ease-in-out 250ms;"], SIZE_BUTTON_WRAP_WIDTH, SIZE_BUTTON_WRAP_HEIGHT);
9
+ })(["display:flex;align-items:center;justify-content:center;position:relative;width:", "px;height:", "px;"], SIZE_BUTTON_WRAP_WIDTH, SIZE_BUTTON_WRAP_HEIGHT);
@@ -0,0 +1,19 @@
1
+ import React, { useRef } from 'react';
2
+ import { useCollapsed, useProps } from '../../../model';
3
+ import { ScCollapseAsideWrap, ScCSSTransition } from './styles';
4
+ export default function CollapseAside() {
5
+ var collapseAsideRef = useRef(null);
6
+ var _useProps = useProps(),
7
+ collapsedAside = _useProps.collapsedAside;
8
+ var collapsed = useCollapsed();
9
+ return collapsedAside ? /*#__PURE__*/React.createElement(ScCSSTransition, {
10
+ nodeRef: collapseAsideRef,
11
+ in: collapsed,
12
+ classNames: "cb-collapse-aside",
13
+ timeout: 200,
14
+ mountOnEnter: true,
15
+ unmountOnExit: true
16
+ }, /*#__PURE__*/React.createElement(ScCollapseAsideWrap, {
17
+ ref: collapseAsideRef
18
+ }, collapsedAside)) : null;
19
+ }
@@ -0,0 +1,27 @@
1
+ import styled, { keyframes } from 'styled-components';
2
+ import { CSSTransition } from 'react-transition-group';
3
+ var KfZoomBigIn = keyframes(["0%{transform:scale(0);opacity:0;}100%{transform:scale(1);opacity:1;}"]);
4
+ export var ScCSSTransition = styled(CSSTransition).withConfig({
5
+ componentId: "sc-1slnea7-0"
6
+ })(["&.", "{animation-timing-function:cubic-bezier(0.08,0.82,0.17,1);animation-duration:", ";animation-fill-mode:both;animation-play-state:paused;}&.", "{animation-name:", ";animation-play-state:running;}&.", "{pointer-events:none;animation-timing-function:cubic-bezier(0.78,0.14,0.15,0.86);animation-duration:", ";animation-fill-mode:both;animation-play-state:paused;}&.", "{animation-name:", ";animation-direction:reverse;animation-play-state:running;}"], function (_ref) {
7
+ var classNames = _ref.classNames;
8
+ return "".concat(classNames, "-enter");
9
+ }, function (_ref2) {
10
+ var timeout = _ref2.timeout;
11
+ return "".concat(timeout, "ms");
12
+ }, function (_ref3) {
13
+ var classNames = _ref3.classNames;
14
+ return "".concat(classNames, "-enter-active");
15
+ }, KfZoomBigIn, function (_ref4) {
16
+ var classNames = _ref4.classNames;
17
+ return "".concat(classNames, "-exit");
18
+ }, function (_ref5) {
19
+ var timeout = _ref5.timeout;
20
+ return "".concat(timeout, "ms");
21
+ }, function (_ref6) {
22
+ var classNames = _ref6.classNames;
23
+ return "".concat(classNames, "-exit-active");
24
+ }, KfZoomBigIn);
25
+ export var ScCollapseAsideWrap = styled.div.withConfig({
26
+ componentId: "sc-1slnea7-1"
27
+ })(["position:absolute;right:100%;bottom:50px;margin-right:10px;"]);
@@ -1,84 +1,56 @@
1
1
  import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
2
2
  import React, { useState } from 'react';
3
- import styled, { css } from 'styled-components';
4
- import { mixinBgAccent, mixinTextWhite } from '@alicloud/console-base-theme';
5
3
  import Icon from '@alicloud/console-base-rc-icon';
6
4
  import { TooltipV1 } from '@alicloud/console-base-rc-tooltip';
7
5
  import CONF_ENV from '@alicloud/console-base-conf-env';
8
6
  import CONF_LOCALE, { ELanguage } from '@alicloud/console-base-conf-locale';
9
- import { SidePanelItemWrap, SidePanelItemButton, SidePanelItemBadge } from '../../rc';
10
- import { useCollapsed, useItemsTop, useHandleCollapsedChange, useProps } from '../../../model';
11
- import { SPACING_Y } from '../../const';
7
+ import { useCollapsed, useItemsTop, useHandleCollapsedChange } from '../../../model';
8
+ import { ScCollapseToggleWrap, ScCollapseToggle, ScCollapseToggleButton } from './styles';
9
+ import { SidePanelItemBadge } from '../../rc';
12
10
  import intl from '../../intl';
13
- /**
14
- * 站点是否处于简体中文环境下,即国内站
15
- */
16
- var isSimpleCN = function isSimpleCN() {
17
- return CONF_ENV.SITE === 'CN' && CONF_LOCALE.LANGUAGE === ELanguage.ZH;
18
- };
19
- var cssToggleIn = css(["transform:translateX(-100%);"]);
20
- var ScCollapseToggle = styled(SidePanelItemWrap).withConfig({
21
- componentId: "sc-15z8r94-0"
22
- })(["position:absolute;right:0;bottom:", "px;flex-direction:column;", ""], SPACING_Y, function (props) {
23
- if (!props.collapsed) {
24
- return null;
25
- }
26
- if (isSimpleCN()) {
27
- return cssToggleIn;
28
- }
29
- return props.hovered ? cssToggleIn : css(["transform:translateX(-50%);"]);
30
- });
31
- var ScCollapseToggleButton = styled(SidePanelItemButton).withConfig({
32
- componentId: "sc-15z8r94-1"
33
- })(["", " ", ""], function (props) {
34
- return props.active ? css(["", " ", " &:hover{", " ", "}"], mixinBgAccent, mixinTextWhite, mixinBgAccent, mixinTextWhite) : null;
35
- }, isSimpleCN() ? null : function (props) {
36
- return props.collapsed && !props.hovered ? css(["padding-left:4px;text-align:left;"]) : null;
37
- });
38
11
  export default function PanelToggle() {
39
- var _useProps = useProps(),
40
- collapsedAside = _useProps.collapsedAside;
12
+ var _useState = useState(false),
13
+ _useState2 = _slicedToArray(_useState, 2),
14
+ isHovered = _useState2[0],
15
+ setIsHovered = _useState2[1];
41
16
  var collapsed = useCollapsed();
42
17
  var unread = useItemsTop().some(function (v) {
43
18
  return v.unread;
44
19
  });
45
20
  var handleToggleCollapsed = useHandleCollapsedChange();
46
- var _useState = useState(false),
47
- _useState2 = _slicedToArray(_useState, 2),
48
- isHovered = _useState2[0],
49
- setIsHovered = _useState2[1];
50
21
  var title = intl(collapsed ? 'op:toggle_visible' : 'op:toggle_hidden');
51
- return /*#__PURE__*/React.createElement(ScCollapseToggle, {
52
- hovered: isHovered,
53
- collapsed: collapsed,
22
+ // 站点是否处于简体中文环境下,即国内站
23
+ var isSimpleCN = CONF_ENV.SITE === 'CN' && CONF_LOCALE.LANGUAGE === ELanguage.ZH;
24
+ return /*#__PURE__*/React.createElement(ScCollapseToggleWrap, null, /*#__PURE__*/React.createElement(TooltipV1, {
25
+ title: title,
26
+ placement: "left",
27
+ destroyTooltipOnHide: true,
28
+ fixed: true,
29
+ overlayStyle: collapsed ? {
30
+ transform: 'translateX(10px)'
31
+ } : {}
32
+ }, /*#__PURE__*/React.createElement(ScCollapseToggle, {
33
+ $hovered: isHovered,
34
+ $collapsed: collapsed,
35
+ $isSimpleCN: isSimpleCN,
54
36
  onMouseEnter: function onMouseEnter() {
55
37
  return setIsHovered(true);
56
38
  },
57
39
  onMouseLeave: function onMouseLeave() {
58
40
  return setIsHovered(false);
59
41
  }
60
- }, collapsedAside ? collapsedAside : null, /*#__PURE__*/React.createElement(TooltipV1, {
61
- title: title,
62
- placement: "left",
63
- mouseEnterDelay: collapsed ? 200 : 0 // 收起状态下 hover 时,需等待动画结束后再显示提示框,避免位置错误
64
- ,
65
- destroyTooltipOnHide: true,
66
- fixed: true,
67
- overlayStyle: collapsed ? {} : {
68
- transform: 'translateX(-10px)'
69
- }
70
- }, /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(ScCollapseToggleButton, {
71
- hovered: isHovered,
72
- collapsed: collapsed,
73
- active: collapsed,
42
+ }, /*#__PURE__*/React.createElement(ScCollapseToggleButton, {
74
43
  title: title,
75
- label: /*#__PURE__*/React.createElement(Icon, {
44
+ icon: /*#__PURE__*/React.createElement(Icon, {
76
45
  type: "angle-right",
77
- rotate: collapsed ? 180 : undefined
46
+ rotate: collapsed ? 180 : 0
78
47
  }),
79
- onClick: handleToggleCollapsed
80
- }))), collapsed && unread ? /*#__PURE__*/React.createElement(SidePanelItemBadge, {
48
+ onClick: handleToggleCollapsed,
49
+ $collapsed: collapsed,
50
+ $isSimpleCN: isSimpleCN,
51
+ $hovered: isHovered
52
+ }), collapsed && unread ? /*#__PURE__*/React.createElement(SidePanelItemBadge, {
81
53
  unread: true,
82
- alignLeft: !isHovered && !isSimpleCN()
83
- }) : null);
54
+ alignLeft: !isSimpleCN && !isHovered
55
+ }) : null)));
84
56
  }
@@ -0,0 +1,34 @@
1
+ import styled, { css } from 'styled-components';
2
+ import { mixinBgAccent, mixinTextWhite } from '@alicloud/console-base-theme';
3
+ import { SidePanelItemWrap, SidePanelItemButton } from '../../rc';
4
+ import { SPACING_Y } from '../../const';
5
+ export var ScCollapseToggleWrap = styled.div.withConfig({
6
+ componentId: "sc-xm41v7-0"
7
+ })(["position:absolute;right:0;bottom:", "px;"], SPACING_Y);
8
+ var cssToggleNone = css(["transform:translateX(0);"]);
9
+ var cssToggleIn = css(["transform:translateX(-100%);"]);
10
+ var cssToggleOut = css(["transform:translateX(-50%);"]);
11
+ export var ScCollapseToggle = styled(SidePanelItemWrap).withConfig({
12
+ componentId: "sc-xm41v7-1"
13
+ })(["transition:transform 250ms ease-in-out 0s;", ""], function (_ref) {
14
+ var $collapsed = _ref.$collapsed,
15
+ $isSimpleCN = _ref.$isSimpleCN,
16
+ $hovered = _ref.$hovered;
17
+ if (!$collapsed) {
18
+ return cssToggleNone;
19
+ }
20
+ return $isSimpleCN || $hovered ? cssToggleIn : cssToggleOut;
21
+ });
22
+ var collapsedStyles = css(["&,&:hover{", " ", "}"], mixinBgAccent, mixinTextWhite);
23
+ var nonSimpleCnPadding = css(["padding-left:4px;text-align:left;"]);
24
+ export var ScCollapseToggleButton = styled(SidePanelItemButton).withConfig({
25
+ componentId: "sc-xm41v7-2"
26
+ })(["", " ", ""], function (_ref2) {
27
+ var $collapsed = _ref2.$collapsed;
28
+ return $collapsed && collapsedStyles;
29
+ }, function (_ref3) {
30
+ var $collapsed = _ref3.$collapsed,
31
+ $isSimpleCN = _ref3.$isSimpleCN,
32
+ $hovered = _ref3.$hovered;
33
+ return $collapsed && !$isSimpleCN && !$hovered && nonSimpleCnPadding;
34
+ });
@@ -1,3 +1,3 @@
1
- export { default as ItemsTop } from './items-top';
2
- export { default as ItemsBottom } from './items-bottom';
3
- export { default as CollapseToggle } from './collapse-toggle';
1
+ export { ItemsTop, ItemsBottom } from './items';
2
+ export { default as CollapseToggle } from './collapse-toggle';
3
+ export { default as CollapseAside } from './collapse-aside';
@@ -1,47 +1,82 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
3
+ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
2
4
  import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
3
- var _excluded = ["id", "className", "style", "active", "title", "icon", "unread", "mark", "tooltip", "tooltipAsHtml", "tooltipOptions", "onlyShowIcon", "onClick", "onActiveChange"];
4
- import React, { useCallback } from 'react';
5
- import { renderEasyIcon } from '@alicloud/console-base-rc-easy-icon';
5
+ var _excluded = ["title", "unread", "mark", "tooltip", "tooltipAsHtml", "tooltipOptions", "active", "onActiveChange", "onClick", "id", "className", "style"];
6
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
7
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
8
+ import React, { useCallback, useEffect, useState } from 'react';
6
9
  import { TooltipV1 } from '@alicloud/console-base-rc-tooltip';
7
10
  import HtmlTrusted from '@alicloud/console-base-rc-html-trusted';
11
+ import { useCollapsed } from '../../../model';
8
12
  import { SidePanelItemWrap, SidePanelItemButton, SidePanelItemBadge } from '../../rc';
9
13
  export default function Item(_ref) {
10
- var id = _ref.id,
11
- className = _ref.className,
12
- style = _ref.style,
13
- active = _ref.active,
14
- title = _ref.title,
15
- icon = _ref.icon,
14
+ var title = _ref.title,
16
15
  unread = _ref.unread,
17
16
  mark = _ref.mark,
18
17
  tooltip = _ref.tooltip,
19
18
  tooltipAsHtml = _ref.tooltipAsHtml,
20
19
  tooltipOptions = _ref.tooltipOptions,
21
- onlyShowIcon = _ref.onlyShowIcon,
22
- onClick = _ref.onClick,
20
+ active = _ref.active,
23
21
  onActiveChange = _ref.onActiveChange,
22
+ onClick = _ref.onClick,
23
+ id = _ref.id,
24
+ className = _ref.className,
25
+ style = _ref.style,
24
26
  rest = _objectWithoutProperties(_ref, _excluded);
25
- var handleClick = useCallback(function (e) {
26
- onClick === null || onClick === void 0 ? void 0 : onClick(e);
27
+ var collapsed = useCollapsed();
28
+ var _useState = useState(),
29
+ _useState2 = _slicedToArray(_useState, 2),
30
+ formatTitle = _useState2[0],
31
+ setFormatTitle = _useState2[1];
32
+ var _useState3 = useState(tooltipOptions),
33
+ _useState4 = _slicedToArray(_useState3, 2),
34
+ formatTooltipOptions = _useState4[0],
35
+ setFormatTooltipOptions = _useState4[1];
36
+ var handleClick = useCallback(function (event) {
37
+ onClick === null || onClick === void 0 ? void 0 : onClick(event);
27
38
  onActiveChange === null || onActiveChange === void 0 ? void 0 : onActiveChange(!active);
28
- }, [active, onClick, onActiveChange]);
39
+ }, [onClick, onActiveChange, active]);
40
+
41
+ // 处理复杂 title
42
+ useEffect(function () {
43
+ var formatTitle = tooltip || title;
44
+ if (tooltipAsHtml && typeof tooltip === 'string') {
45
+ formatTitle = /*#__PURE__*/React.createElement(HtmlTrusted, {
46
+ text: tooltip
47
+ });
48
+ }
49
+ setFormatTitle(formatTitle);
50
+ }, [tooltip, title, tooltipAsHtml]);
51
+
52
+ // 侧边栏收起时,内部弹窗需全部关闭
53
+ useEffect(function () {
54
+ var formatTooltipOptions = _objectSpread({}, tooltipOptions);
55
+ if (collapsed) {
56
+ if (formatTooltipOptions.defaultOpen) {
57
+ formatTooltipOptions.defaultOpen = false;
58
+ }
59
+ if (formatTooltipOptions.open) {
60
+ formatTooltipOptions.open = false;
61
+ }
62
+ if (formatTooltipOptions.onOpenChange && typeof formatTooltipOptions.onOpenChange === 'function') {
63
+ formatTooltipOptions.onOpenChange(false);
64
+ }
65
+ }
66
+ setFormatTooltipOptions(formatTooltipOptions);
67
+ }, [tooltipOptions, collapsed]);
29
68
  return /*#__PURE__*/React.createElement(TooltipV1, _extends({
30
- title: tooltipAsHtml && typeof tooltip === 'string' ? /*#__PURE__*/React.createElement(HtmlTrusted, {
31
- text: tooltip
32
- }) : tooltip || title,
69
+ title: formatTitle,
33
70
  placement: "left",
34
71
  destroyTooltipOnHide: true,
35
72
  fixed: true
36
- }, tooltipOptions), /*#__PURE__*/React.createElement(SidePanelItemWrap, {
73
+ }, formatTooltipOptions), /*#__PURE__*/React.createElement(SidePanelItemWrap, {
37
74
  id: id,
38
75
  className: className,
39
76
  style: style
40
77
  }, /*#__PURE__*/React.createElement(SidePanelItemButton, _extends({
41
- active: active,
42
78
  title: title,
43
- label: renderEasyIcon(icon) || title,
44
- onlyShowIcon: onlyShowIcon,
79
+ active: active,
45
80
  onClick: handleClick
46
81
  }, rest)), /*#__PURE__*/React.createElement(SidePanelItemBadge, {
47
82
  unread: unread,
@@ -2,18 +2,36 @@ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
2
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
3
3
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
4
4
  import React from 'react';
5
- import { useCollapsed } from '../../../model';
6
- import { DATA_KEY_SIDE_PANEL_ITEM } from '../../const';
5
+ import styled from 'styled-components';
6
+ import Flex from '@alicloud/console-base-rc-flex';
7
+ import { HrBase } from '@alicloud/console-base-theme-sc-base';
8
+ import { useChildren, useItemsTop, useItemsBottom } from '../../../model';
9
+ import { DATA_KEY_SIDE_PANEL_ITEM, SPACING_Y } from '../../const';
7
10
  import PanelItem from '../item';
8
- export default function Items(_ref) {
11
+ function Items(_ref) {
9
12
  var items = _ref.items;
10
- var collapsed = useCollapsed();
11
13
  return /*#__PURE__*/React.createElement(React.Fragment, null, items.map(function (v) {
12
- var _v$tooltipOptions;
13
- // 侧边栏收起时,默认展示的 tooltip 需要关闭,不能放在 Item 中,否则会使其重复渲染。
14
- if (collapsed && v !== null && v !== void 0 && (_v$tooltipOptions = v.tooltipOptions) !== null && _v$tooltipOptions !== void 0 && _v$tooltipOptions.open) {
15
- v.tooltipOptions.open = false;
16
- }
17
- return /*#__PURE__*/React.createElement(PanelItem, _objectSpread(_defineProperty(_defineProperty({}, DATA_KEY_SIDE_PANEL_ITEM, v.key), "spm", v.key), v));
14
+ return /*#__PURE__*/React.createElement(PanelItem, _objectSpread(_objectSpread({}, v), {}, _defineProperty(_defineProperty({}, DATA_KEY_SIDE_PANEL_ITEM, v.key), "spm", v.key)));
15
+ }));
16
+ }
17
+ export function ItemsTop() {
18
+ var items = useItemsTop();
19
+ return /*#__PURE__*/React.createElement(Flex, {
20
+ vertical: true,
21
+ flex: true
22
+ }, /*#__PURE__*/React.createElement(Items, {
23
+ items: items
24
+ }));
25
+ }
26
+ var ScHr = styled(HrBase).withConfig({
27
+ componentId: "sc-1h5t3jq-0"
28
+ })(["margin:", "px 4px;"], SPACING_Y);
29
+ export function ItemsBottom() {
30
+ var children = useChildren();
31
+ var items = useItemsBottom();
32
+ return /*#__PURE__*/React.createElement(Flex, {
33
+ vertical: true
34
+ }, children || items.length ? /*#__PURE__*/React.createElement(ScHr, null) : null, children || /*#__PURE__*/React.createElement(Items, {
35
+ items: items
18
36
  }));
19
37
  }
@@ -1,4 +1,3 @@
1
1
  import { IModelState } from '../types';
2
2
  export declare const BODY_CLASS_WITH_SIDE_PANEL = "with-side-panel";
3
- export declare const QUICK_TOP_VISIBLE_OFFSET = 200;
4
3
  export declare const DEFAULT_CONTEXT_STATE: IModelState;
@@ -1,4 +1,3 @@
1
1
  export declare enum EAction {
2
- SET_COLLAPSED = 0,
3
- SET_QUICK_TOP_VISIBLE = 1
2
+ SET_COLLAPSED = 0
4
3
  }
@@ -4,6 +4,4 @@ export { default as useVisible } from './use-visible';
4
4
  export { default as useCollapsed } from './use-collapsed';
5
5
  export { default as useItemsTop } from './use-items-top';
6
6
  export { default as useItemsBottom } from './use-items-bottom';
7
- export { default as useQuickTop } from './use-quick-top';
8
7
  export { default as useHandleCollapsedChange } from './use-handle-collapsed-change';
9
- export { default as useHandleGoTop } from './use-handle-go-top';
@@ -1,7 +1,7 @@
1
1
  import { Dispatch } from 'react';
2
2
  import { EAction } from '../enum';
3
3
  export type TModelAction = {
4
- type: EAction.SET_COLLAPSED | EAction.SET_QUICK_TOP_VISIBLE;
4
+ type: EAction.SET_COLLAPSED;
5
5
  payload: boolean;
6
6
  };
7
7
  export type TModelDispatch = Dispatch<TModelAction>;