@autobest-ui/components 3.0.0-alpha.6 → 3.0.0-alpha.8

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 (65) hide show
  1. package/esm/accordion/CollapseItem.d.ts +14 -0
  2. package/esm/accordion/CollapseItem.js +56 -0
  3. package/esm/accordion/Item.d.ts +11 -14
  4. package/esm/accordion/Item.js +11 -23
  5. package/esm/accordion/index.d.ts +9 -6
  6. package/esm/accordion/index.js +29 -13
  7. package/esm/accordion/type.d.ts +8 -0
  8. package/esm/accordion/type.js +1 -0
  9. package/esm/date-picker/calendar/Day.js +4 -3
  10. package/esm/date-picker/calendar/grid/index.css +1 -1
  11. package/esm/date-picker/calendar/grid/index.d.ts +1 -1
  12. package/esm/date-picker/calendar/grid/index.js +2 -2
  13. package/esm/date-picker/calendar/index.css +1 -1
  14. package/esm/date-picker/index.js +1 -0
  15. package/esm/date-picker/style/index.css +1 -1
  16. package/esm/index.d.ts +2 -2
  17. package/esm/index.js +1 -1
  18. package/esm/lazy-image/index.d.ts +10 -30
  19. package/esm/lazy-image/index.js +30 -51
  20. package/esm/lazy-image/style/index.css +1 -1
  21. package/esm/loading-container/index.d.ts +11 -2
  22. package/esm/loading-container/index.js +22 -8
  23. package/{lib/scroll-container → esm/scrollbar}/index.d.ts +5 -7
  24. package/esm/{scroll-container → scrollbar}/index.js +12 -27
  25. package/esm/scrollbar/style/index.css +1 -0
  26. package/esm/select/index.d.ts +3 -2
  27. package/esm/select/index.js +11 -12
  28. package/esm/select/style/index.css +1 -1
  29. package/esm/style.css +1 -1
  30. package/lib/accordion/CollapseItem.d.ts +14 -0
  31. package/lib/accordion/CollapseItem.js +64 -0
  32. package/lib/accordion/Item.d.ts +11 -14
  33. package/lib/accordion/Item.js +11 -23
  34. package/lib/accordion/index.d.ts +9 -6
  35. package/lib/accordion/index.js +28 -12
  36. package/lib/accordion/type.d.ts +8 -0
  37. package/lib/accordion/type.js +5 -0
  38. package/lib/date-picker/calendar/Day.js +4 -3
  39. package/lib/date-picker/calendar/grid/index.css +1 -1
  40. package/lib/date-picker/calendar/grid/index.d.ts +1 -1
  41. package/lib/date-picker/calendar/grid/index.js +2 -2
  42. package/lib/date-picker/calendar/index.css +1 -1
  43. package/lib/date-picker/index.js +1 -0
  44. package/lib/date-picker/style/index.css +1 -1
  45. package/lib/index.d.ts +2 -2
  46. package/lib/index.js +4 -4
  47. package/lib/lazy-image/index.d.ts +10 -30
  48. package/lib/lazy-image/index.js +30 -51
  49. package/lib/lazy-image/style/index.css +1 -1
  50. package/lib/loading-container/index.d.ts +11 -2
  51. package/lib/loading-container/index.js +22 -8
  52. package/{esm/scroll-container → lib/scrollbar}/index.d.ts +5 -7
  53. package/lib/{scroll-container → scrollbar}/index.js +13 -28
  54. package/lib/scrollbar/style/index.css +1 -0
  55. package/lib/select/index.d.ts +3 -2
  56. package/lib/select/index.js +12 -13
  57. package/lib/select/style/index.css +1 -1
  58. package/lib/style.css +1 -1
  59. package/package.json +3 -3
  60. package/esm/scroll-container/style/index.css +0 -1
  61. package/lib/scroll-container/style/index.css +0 -1
  62. /package/esm/{scroll-container → scrollbar}/composeRef.d.ts +0 -0
  63. /package/esm/{scroll-container → scrollbar}/composeRef.js +0 -0
  64. /package/lib/{scroll-container → scrollbar}/composeRef.d.ts +0 -0
  65. /package/lib/{scroll-container → scrollbar}/composeRef.js +0 -0
@@ -8,6 +8,7 @@ exports.default = void 0;
8
8
  var _react = _interopRequireDefault(require("react"));
9
9
  var _classnames = _interopRequireDefault(require("classnames"));
10
10
  var _utils = require("@autobest-ui/utils");
11
+ var _CollapseItem = _interopRequireDefault(require("./CollapseItem"));
11
12
  var _Item = _interopRequireDefault(require("./Item"));
12
13
  var __extends = void 0 && (void 0).__extends || function () {
13
14
  var _extendStatics = function extendStatics(d, b) {
@@ -48,6 +49,18 @@ var Accordion = /** @class */function (_super) {
48
49
  function Accordion(props) {
49
50
  var _this = _super.call(this, props) || this;
50
51
  _this.prefixCls = 'ab-accordion';
52
+ _this.refresh = function () {
53
+ var visibleNames = {};
54
+ var defaultVisibleNames = _this.props.defaultVisibleNames;
55
+ if (!(0, _utils.isEmptyArray)(defaultVisibleNames)) {
56
+ defaultVisibleNames.forEach(function (name) {
57
+ visibleNames[name] = true;
58
+ });
59
+ }
60
+ _this.setState({
61
+ visibleNames: visibleNames
62
+ });
63
+ };
51
64
  /** *
52
65
  * 展开下拉链接列表
53
66
  * @param name
@@ -57,25 +70,25 @@ var Accordion = /** @class */function (_super) {
57
70
  var _c = _this.props,
58
71
  interactive = _c.interactive,
59
72
  beforeVisibleChange = _c.beforeVisibleChange,
60
- onVisibleChange = _c.onVisibleChange;
61
- if (beforeVisibleChange) {
62
- beforeVisibleChange(name);
63
- }
73
+ afterVisibleChange = _c.afterVisibleChange;
64
74
  var visibleNames = _this.state.visibleNames;
65
- var isCurVisible = visibleNames[name];
75
+ var nextVisible = !visibleNames[name];
76
+ if (beforeVisibleChange && !beforeVisibleChange(nextVisible, name)) {
77
+ return;
78
+ }
66
79
  if (interactive) {
67
80
  // 能同时展开多项,只对当前项做展开/闭合操作
68
81
  _this.setState({
69
- visibleNames: __assign(__assign({}, visibleNames), (_a = {}, _a[name] = !isCurVisible, _a))
82
+ visibleNames: __assign(__assign({}, visibleNames), (_a = {}, _a[name] = nextVisible, _a))
70
83
  });
71
84
  } else {
72
85
  // 每次只能展开一项
73
86
  _this.setState({
74
- visibleNames: (_b = {}, _b[name] = !isCurVisible, _b)
87
+ visibleNames: (_b = {}, _b[name] = nextVisible, _b)
75
88
  });
76
89
  }
77
- if (onVisibleChange) {
78
- onVisibleChange(name, !isCurVisible);
90
+ if (afterVisibleChange) {
91
+ afterVisibleChange(nextVisible, name);
79
92
  }
80
93
  };
81
94
  var visibleNames = {};
@@ -97,20 +110,23 @@ var Accordion = /** @class */function (_super) {
97
110
  className = _a.className,
98
111
  children = _a.children;
99
112
  var visibleNames = this.state.visibleNames;
100
- return /*#__PURE__*/_react.default.createElement("ul", {
113
+ return /*#__PURE__*/_react.default.createElement("div", {
101
114
  className: (0, _classnames.default)(cls, className)
102
115
  }, _react.default.Children.map(children, function (child) {
103
116
  var name = child.props.name;
117
+ if ((0, _utils.isBlank)(name)) {
118
+ return child;
119
+ }
104
120
  return /*#__PURE__*/_react.default.cloneElement(child, {
105
121
  key: name,
106
- onTitleClick: function onTitleClick() {
122
+ onClick: function onClick() {
107
123
  _this.onVisibleChange(name);
108
124
  },
109
125
  visible: !!visibleNames[name]
110
126
  });
111
127
  }));
112
128
  };
113
- // 限制用户传入的参数,所以用BaseAccordionItemProps
129
+ Accordion.CollapseItem = _CollapseItem.default;
114
130
  Accordion.Item = _Item.default;
115
131
  Accordion.defaultProps = {
116
132
  className: '',
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ export interface BaseAccordionItemProps {
3
+ /**
4
+ * 用于标识Item
5
+ * 每个Item的name必须是唯一值
6
+ */
7
+ name: React.ReactText;
8
+ }
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
@@ -41,16 +41,17 @@ var DayCalendar = function DayCalendar(props) {
41
41
  isOut = false;
42
42
  }
43
43
  var disabled = (0, _utils.isOutOfDate)(date, minDate, maxDate);
44
+ var selected = (0, _utils.compareDate)(date, selectedDate) === 0;
44
45
  return {
45
46
  value: date,
46
47
  name: date.getDate(),
47
48
  disabled: disabled,
48
- selected: (0, _utils.compareDate)(date, selectedDate) === 0,
49
+ selected: selected,
49
50
  isToday: (0, _utils.compareDate)(date, today) === 0,
50
51
  onClick: disabled ? null : function () {
51
52
  return onSelect(date);
52
53
  },
53
- className: !disabled && isOut ? "".concat(cls, "-out") : null
54
+ isOut: !selected && !disabled && isOut
54
55
  };
55
56
  };
56
57
  var currentTitle = getTitle(navigatedDate);
@@ -89,7 +90,7 @@ var DayCalendar = function DayCalendar(props) {
89
90
  headList: currentHeadList,
90
91
  dateList: dayList
91
92
  };
92
- }, [today, navigatedDate, minDate, maxDate, firstDayOfWeek, selectedDate, onSelect, cls]),
93
+ }, [today, navigatedDate, minDate, maxDate, firstDayOfWeek, selectedDate, onSelect]),
93
94
  title = _a.title,
94
95
  startDate = _a.startDate,
95
96
  endDate = _a.endDate,
@@ -1 +1 @@
1
- .ab-dp-cg-content,.ab-dp-cg-head,.ab-dp-cg-title{display:flex;align-items:center}.ab-dp-cg-title{user-select:none;font-size:.14rem;padding-bottom:.08rem}.ab-dp-cg-title>strong{flex:1 1;margin-left:.1rem;cursor:default;color:#4a4a4a}.ab-dp-cg-title>strong.ab-dp-cg-clickable{cursor:pointer}.ab-dp-cg-title>strong.ab-dp-cg-clickable:hover{color:#000}.ab-dp-cg-dis-icon,.ab-dp-cg-icon{align-self:flex-end;margin-left:.08rem}.ab-dp-cg-icon{cursor:pointer}.ab-dp-cg-head{padding-bottom:.05rem}.ab-dp-cg-head>li{display:flex;align-items:center;justify-content:center;cursor:default}.ab-dp-cg-content{flex-wrap:wrap}.ab-dp-cg-content>li{cursor:pointer;display:flex;align-items:center;justify-content:center;color:#000}.ab-dp-cg-content>li:hover{background:#f0f0f0}.ab-dp-cg-content>li.ab-dp-cg-dis{cursor:not-allowed;color:#b0b0b0}.ab-dp-cg-content>li.ab-dp-cg-dis:hover{background:0 0}.ab-dp-cg-content>li.ab-dp-cg-selected,.ab-dp-cg-content>li:active{background:#c7e0f4;border:3px solid #c7e0f4;border-radius:2px;color:#000}.ab-dp-cg-content>li.ab-dp-cg-today{background:#0078d4;color:#fff}.ab-dp-cg-arrow{cursor:pointer}
1
+ .ab-dp-cg-content,.ab-dp-cg-head,.ab-dp-cg-title{display:flex;align-items:center}.ab-dp-cg-title{user-select:none;font-size:.14rem;padding-bottom:.08rem}.ab-dp-cg-title>strong{flex:1 1;margin-left:.1rem;cursor:default;color:#4a4a4a}.ab-dp-cg-title>strong.ab-dp-cg-clickable{cursor:pointer}.ab-dp-cg-title>strong.ab-dp-cg-clickable:hover{color:#000}.ab-dp-cg-dis-icon,.ab-dp-cg-icon{align-self:flex-end;margin-left:.08rem}.ab-dp-cg-icon{cursor:pointer}.ab-dp-cg-head{padding-bottom:.05rem}.ab-dp-cg-head>li{display:flex;align-items:center;justify-content:center;cursor:default}.ab-dp-cg-content{flex-wrap:wrap}.ab-dp-cg-content>li{cursor:pointer;display:flex;align-items:center;justify-content:center;color:#333;border-radius:4px}.ab-dp-cg-content>li:hover{background:#f0f0f0}.ab-dp-cg-content>li.ab-dp-cg-out{color:#666}.ab-dp-cg-content>li.ab-dp-cg-dis{cursor:not-allowed;color:#b0b0b0}.ab-dp-cg-content>li.ab-dp-cg-dis:hover{background:0 0}.ab-dp-cg-content>li.ab-dp-cg-selected{background:#0078d4;color:#fff}.ab-dp-cg-content>li.ab-dp-cg-selected:hover{background:#0078d4}.ab-dp-cg-content>li.ab-dp-cg-today{border:1px solid #0078d4}.ab-dp-cg-arrow{cursor:pointer}
@@ -1,10 +1,10 @@
1
1
  import React from 'react';
2
2
  export interface CalendarGridItemProps {
3
- className?: string;
4
3
  name: string;
5
4
  disabled: boolean;
6
5
  selected: boolean;
7
6
  isToday?: boolean;
7
+ isOut?: boolean;
8
8
  onClick: (event?: React.MouseEvent<HTMLElement, MouseEvent>) => void;
9
9
  }
10
10
  export interface CalendarGridProps {
@@ -53,10 +53,10 @@ var CalendarGrid = function CalendarGrid(_a) {
53
53
  })), /*#__PURE__*/_react.default.createElement("ul", {
54
54
  className: "".concat(cls, "-content")
55
55
  }, list.map(function (item, index) {
56
- var _a, _b, _c;
56
+ var _a, _b, _c, _d;
57
57
  return /*#__PURE__*/_react.default.createElement("li", {
58
58
  key: "".concat(index, " ").concat(item.name),
59
- className: (0, _classnames.default)((_a = {}, _a["".concat(cls, "-dis")] = item.disabled, _a), (_b = {}, _b["".concat(cls, "-selected")] = item.selected, _b), (_c = {}, _c["".concat(cls, "-today")] = item.isToday, _c), item.className),
59
+ className: (0, _classnames.default)((_a = {}, _a["".concat(cls, "-dis")] = item.disabled, _a), (_b = {}, _b["".concat(cls, "-selected")] = item.selected, _b), (_c = {}, _c["".concat(cls, "-today")] = item.isToday, _c), (_d = {}, _d["".concat(cls, "-out")] = item.isOut, _d)),
60
60
  onClick: item.onClick
61
61
  }, item.name);
62
62
  })), bottomElement);
@@ -1 +1 @@
1
- .ab-dp-cal{display:flex}.ab-dp-cal-my{padding-left:.12rem;margin-left:.12rem;border-left:1px solid #b0b0b0}.ab-dp-cal-day,.ab-dp-cal-my{width:2.1rem}.ab-dp-cal-dis{color:#c8c8c8}.ab-dp-cal-dg>ul>li{width:14.28%;height:.28rem}.ab-dp-cal-dg>ul>li.ab-dp-cal-out{color:#666}.ab-dp-cal-myg{padding-bottom:.62rem}.ab-dp-cal-myg>ul{justify-content:space-between}.ab-dp-cal-myg>ul>li{width:.4rem;height:.4rem;margin-bottom:.1rem}.ab-dp-cal-t{cursor:pointer;position:absolute;right:.08rem;bottom:.3rem}.ab-dp-cal-t.ab-dp-cal-t-dis{color:#b0b0b0;cursor:default}
1
+ .ab-dp-cal{display:flex}.ab-dp-cal-my{padding-left:.12rem;margin-left:.12rem;border-left:1px solid #b0b0b0}.ab-dp-cal-day,.ab-dp-cal-my{width:2.1rem}.ab-dp-cal-dis{color:#c8c8c8}.ab-dp-cal-dg>ul>li{width:14.28%;height:.28rem}.ab-dp-cal-myg{padding-bottom:.62rem}.ab-dp-cal-myg>ul{justify-content:space-between}.ab-dp-cal-myg>ul>li{width:.4rem;height:.4rem;margin-bottom:.1rem}.ab-dp-cal-t{cursor:pointer;position:absolute;right:.08rem;bottom:.3rem}.ab-dp-cal-t.ab-dp-cal-t-dis{color:#b0b0b0;cursor:default}
@@ -47,6 +47,7 @@ var __assign = void 0 && (void 0).__assign || function () {
47
47
  return __assign.apply(this, arguments);
48
48
  };
49
49
  // TODO: 移动端
50
+ // TODO: 时区问题导致Date().getDate()获取到的日期会有±1天的时差
50
51
  var DatePicker = /** @class */function (_super) {
51
52
  __extends(DatePicker, _super);
52
53
  function DatePicker(props) {
@@ -1 +1 @@
1
- .ab-dp-cal{display:flex}.ab-dp-cal-my{padding-left:.12rem;margin-left:.12rem;border-left:1px solid #b0b0b0}.ab-dp-cal-day,.ab-dp-cal-my{width:2.1rem}.ab-dp-cal-dis{color:#c8c8c8}.ab-dp-cal-dg>ul>li{width:14.28%;height:.28rem}.ab-dp-cal-dg>ul>li.ab-dp-cal-out{color:#666}.ab-dp-cal-myg{padding-bottom:.62rem}.ab-dp-cal-myg>ul{justify-content:space-between}.ab-dp-cal-myg>ul>li{width:.4rem;height:.4rem;margin-bottom:.1rem}.ab-dp-cal-t{cursor:pointer;position:absolute;right:.08rem;bottom:.3rem}.ab-dp-cal-t.ab-dp-cal-t-dis{color:#b0b0b0;cursor:default}.ab-dp-cg-content,.ab-dp-cg-head,.ab-dp-cg-title{display:flex;align-items:center}.ab-dp-cg-title{user-select:none;font-size:.14rem;padding-bottom:.08rem}.ab-dp-cg-title>strong{flex:1 1;margin-left:.1rem;cursor:default;color:#4a4a4a}.ab-dp-cg-title>strong.ab-dp-cg-clickable{cursor:pointer}.ab-dp-cg-title>strong.ab-dp-cg-clickable:hover{color:#000}.ab-dp-cg-dis-icon,.ab-dp-cg-icon{align-self:flex-end;margin-left:.08rem}.ab-dp-cg-icon{cursor:pointer}.ab-dp-cg-head{padding-bottom:.05rem}.ab-dp-cg-head>li{display:flex;align-items:center;justify-content:center;cursor:default}.ab-dp-cg-content{flex-wrap:wrap}.ab-dp-cg-content>li{cursor:pointer;display:flex;align-items:center;justify-content:center;color:#000}.ab-dp-cg-content>li:hover{background:#f0f0f0}.ab-dp-cg-content>li.ab-dp-cg-dis{cursor:not-allowed;color:#b0b0b0}.ab-dp-cg-content>li.ab-dp-cg-dis:hover{background:0 0}.ab-dp-cg-content>li.ab-dp-cg-selected,.ab-dp-cg-content>li:active{background:#c7e0f4;border:3px solid #c7e0f4;border-radius:2px;color:#000}.ab-dp-cg-content>li.ab-dp-cg-today{background:#0078d4;color:#fff}.ab-dp-cg-arrow{cursor:pointer}.ab-trigger-wrap{position:absolute;top:0;left:0;z-index:101}.ab-trigger-wrap.ab-trigger-hidden{display:none}.ab-trigger-mask{position:fixed;top:0;left:0;bottom:0;right:0;z-index:101;background-color:transparent;display:none}.ab-trigger-mask.ab-trigger-mask-show{display:block}.ab-trigger-fade-appear,.ab-trigger-fade-enter,.ab-trigger-fade-hr-appear,.ab-trigger-fade-hr-enter{opacity:0}.ab-trigger-fade-appear,.ab-trigger-fade-enter{transform:scale(.7)}.ab-trigger-fade-hr-appear,.ab-trigger-fade-hr-enter{opacity:0;transform:scaleY(.7)}.ab-trigger-fade-appear-active,.ab-trigger-fade-enter-active,.ab-trigger-fade-hr-appear-active,.ab-trigger-fade-hr-enter-active{opacity:1;transition:opacity .2s,transform .2s}.ab-trigger-fade-appear-active,.ab-trigger-fade-enter-active{transform:scale(1)}.ab-trigger-fade-hr-appear-active,.ab-trigger-fade-hr-enter-active{transform:scaleY(1)}.ab-trigger-fade-exit,.ab-trigger-fade-hr-exit{opacity:1}.ab-trigger-fade-exit-active,.ab-trigger-fade-hr-exit-active{opacity:0;transition:opacity .2s,transform .2s}.ab-trigger-fade-exit-active{transform:scale(.7)}.ab-trigger-fade-hr-exit-active{transform:scaleY(.7)}.ab-trigger-fade-exit-done,.ab-trigger-fade-hr-exit-done{display:none}.ab-popover-wrap{background-clip:padding-box;min-width:210px;border-radius:4px}.ab-popover-inner{padding:.08rem .11rem .05rem;position:relative;width:100%;overflow:auto;font-size:.12rem}.ab-popover-inner-expand{padding-right:.1rem}.ab-popover-arrow{position:absolute;display:block;width:8px;height:8px;border-style:solid;box-shadow:3px 3px 7px rgba(0,0,0,.07)}.ab-popover-close{position:absolute;right:.02rem;top:.05rem;cursor:pointer;padding:0 .05rem;color:#bfbfbf;font-size:.2rem;line-height:1;z-index:2}.ab-popover-close:hover{color:#4a4a4a}.ab-popover-white{background-color:#fff;box-shadow:0 2px 8px rgba(0,0,0,.15)}.ab-popover-white .ab-popover-arrow{background-color:#fff;border-color:transparent #fff #fff transparent;border-width:4px}.ab-popover-orange{border:1px solid #906c00;box-shadow:1px 1px 5px -1px #000;background-color:#fffaec}.ab-popover-orange .ab-popover-arrow{background-color:#fffaec;border-color:transparent #906c00 #906c00 transparent;border-width:1px}@media only screen and (max-width:767px){.ab-popover-wrap{width:calc(100% - .3rem)}}.ab-date-picker{position:relative}.ab-date-picker-input{outline:0;font-size:.14rem;padding:.04rem;width:1.44rem}.ab-date-picker-input.ab-date-picker-error{background:#fffacd}.ab-date-picker-icon{color:#606060;position:absolute;right:.05rem;top:50%;transform:translateY(-50%)}
1
+ .ab-dp-cal{display:flex}.ab-dp-cal-my{padding-left:.12rem;margin-left:.12rem;border-left:1px solid #b0b0b0}.ab-dp-cal-day,.ab-dp-cal-my{width:2.1rem}.ab-dp-cal-dis{color:#c8c8c8}.ab-dp-cal-dg>ul>li{width:14.28%;height:.28rem}.ab-dp-cal-myg{padding-bottom:.62rem}.ab-dp-cal-myg>ul{justify-content:space-between}.ab-dp-cal-myg>ul>li{width:.4rem;height:.4rem;margin-bottom:.1rem}.ab-dp-cal-t{cursor:pointer;position:absolute;right:.08rem;bottom:.3rem}.ab-dp-cal-t.ab-dp-cal-t-dis{color:#b0b0b0;cursor:default}.ab-dp-cg-content,.ab-dp-cg-head,.ab-dp-cg-title{display:flex;align-items:center}.ab-dp-cg-title{user-select:none;font-size:.14rem;padding-bottom:.08rem}.ab-dp-cg-title>strong{flex:1 1;margin-left:.1rem;cursor:default;color:#4a4a4a}.ab-dp-cg-title>strong.ab-dp-cg-clickable{cursor:pointer}.ab-dp-cg-title>strong.ab-dp-cg-clickable:hover{color:#000}.ab-dp-cg-dis-icon,.ab-dp-cg-icon{align-self:flex-end;margin-left:.08rem}.ab-dp-cg-icon{cursor:pointer}.ab-dp-cg-head{padding-bottom:.05rem}.ab-dp-cg-head>li{display:flex;align-items:center;justify-content:center;cursor:default}.ab-dp-cg-content{flex-wrap:wrap}.ab-dp-cg-content>li{cursor:pointer;display:flex;align-items:center;justify-content:center;color:#333;border-radius:4px}.ab-dp-cg-content>li:hover{background:#f0f0f0}.ab-dp-cg-content>li.ab-dp-cg-out{color:#666}.ab-dp-cg-content>li.ab-dp-cg-dis{cursor:not-allowed;color:#b0b0b0}.ab-dp-cg-content>li.ab-dp-cg-dis:hover{background:0 0}.ab-dp-cg-content>li.ab-dp-cg-selected{background:#0078d4;color:#fff}.ab-dp-cg-content>li.ab-dp-cg-selected:hover{background:#0078d4}.ab-dp-cg-content>li.ab-dp-cg-today{border:1px solid #0078d4}.ab-dp-cg-arrow{cursor:pointer}.ab-trigger-wrap{position:absolute;top:0;left:0;z-index:101}.ab-trigger-wrap.ab-trigger-hidden{display:none}.ab-trigger-mask{position:fixed;top:0;left:0;bottom:0;right:0;z-index:101;background-color:transparent;display:none}.ab-trigger-mask.ab-trigger-mask-show{display:block}.ab-trigger-fade-appear,.ab-trigger-fade-enter,.ab-trigger-fade-hr-appear,.ab-trigger-fade-hr-enter{opacity:0}.ab-trigger-fade-appear,.ab-trigger-fade-enter{transform:scale(.7)}.ab-trigger-fade-hr-appear,.ab-trigger-fade-hr-enter{opacity:0;transform:scaleY(.7)}.ab-trigger-fade-appear-active,.ab-trigger-fade-enter-active,.ab-trigger-fade-hr-appear-active,.ab-trigger-fade-hr-enter-active{opacity:1;transition:opacity .2s,transform .2s}.ab-trigger-fade-appear-active,.ab-trigger-fade-enter-active{transform:scale(1)}.ab-trigger-fade-hr-appear-active,.ab-trigger-fade-hr-enter-active{transform:scaleY(1)}.ab-trigger-fade-exit,.ab-trigger-fade-hr-exit{opacity:1}.ab-trigger-fade-exit-active,.ab-trigger-fade-hr-exit-active{opacity:0;transition:opacity .2s,transform .2s}.ab-trigger-fade-exit-active{transform:scale(.7)}.ab-trigger-fade-hr-exit-active{transform:scaleY(.7)}.ab-trigger-fade-exit-done,.ab-trigger-fade-hr-exit-done{display:none}.ab-popover-wrap{background-clip:padding-box;min-width:210px;border-radius:4px}.ab-popover-inner{padding:.08rem .11rem .05rem;position:relative;width:100%;overflow:auto;font-size:.12rem}.ab-popover-inner-expand{padding-right:.1rem}.ab-popover-arrow{position:absolute;display:block;width:8px;height:8px;border-style:solid;box-shadow:3px 3px 7px rgba(0,0,0,.07)}.ab-popover-close{position:absolute;right:.02rem;top:.05rem;cursor:pointer;padding:0 .05rem;color:#bfbfbf;font-size:.2rem;line-height:1;z-index:2}.ab-popover-close:hover{color:#4a4a4a}.ab-popover-white{background-color:#fff;box-shadow:0 2px 8px rgba(0,0,0,.15)}.ab-popover-white .ab-popover-arrow{background-color:#fff;border-color:transparent #fff #fff transparent;border-width:4px}.ab-popover-orange{border:1px solid #906c00;box-shadow:1px 1px 5px -1px #000;background-color:#fffaec}.ab-popover-orange .ab-popover-arrow{background-color:#fffaec;border-color:transparent #906c00 #906c00 transparent;border-width:1px}@media only screen and (max-width:767px){.ab-popover-wrap{width:calc(100% - .3rem)}}.ab-date-picker{position:relative}.ab-date-picker-input{outline:0;font-size:.14rem;padding:.04rem;width:1.44rem}.ab-date-picker-input.ab-date-picker-error{background:#fffacd}.ab-date-picker-icon{color:#606060;position:absolute;right:.05rem;top:50%;transform:translateY(-50%)}
package/lib/index.d.ts CHANGED
@@ -53,8 +53,8 @@ export type { LoadingProps } from './loading';
53
53
  export { default as Loading } from './loading';
54
54
  export type { LoadingContainerProps } from './loading-container';
55
55
  export { default as LoadingContainer } from './loading-container';
56
- export type { ScrollContainerProps } from './scroll-container';
57
- export { default as ScrollContainer, ScrollbarSize } from './scroll-container';
56
+ export type { ScrollbarProps } from './scrollbar';
57
+ export { default as Scrollbar, ScrollbarSize } from './scrollbar';
58
58
  export { default as LoadingBar } from './loading-bar';
59
59
  export type { LoadingIconProps } from './loading-icon';
60
60
  export { default as LoadingIcon } from './loading-icon';
package/lib/index.js CHANGED
@@ -167,16 +167,16 @@ Object.defineProperty(exports, "Script", {
167
167
  return _script.default;
168
168
  }
169
169
  });
170
- Object.defineProperty(exports, "ScrollContainer", {
170
+ Object.defineProperty(exports, "Scrollbar", {
171
171
  enumerable: true,
172
172
  get: function get() {
173
- return _scrollContainer.default;
173
+ return _scrollbar.default;
174
174
  }
175
175
  });
176
176
  Object.defineProperty(exports, "ScrollbarSize", {
177
177
  enumerable: true,
178
178
  get: function get() {
179
- return _scrollContainer.ScrollbarSize;
179
+ return _scrollbar.ScrollbarSize;
180
180
  }
181
181
  });
182
182
  Object.defineProperty(exports, "Select", {
@@ -272,7 +272,7 @@ var _datePicker = _interopRequireDefault(require("./date-picker"));
272
272
  var _tabs = _interopRequireDefault(require("./tabs"));
273
273
  var _loading = _interopRequireDefault(require("./loading"));
274
274
  var _loadingContainer = _interopRequireDefault(require("./loading-container"));
275
- var _scrollContainer = _interopRequireWildcard(require("./scroll-container"));
275
+ var _scrollbar = _interopRequireWildcard(require("./scrollbar"));
276
276
  var _loadingBar = _interopRequireDefault(require("./loading-bar"));
277
277
  var _loadingIcon = _interopRequireDefault(require("./loading-icon"));
278
278
  var _trigger = _interopRequireDefault(require("./trigger"));
@@ -1,5 +1,9 @@
1
- import React, { MouseEventHandler, MouseEvent } from 'react';
2
- export interface LazyImageProps extends React.ImgHTMLAttributes<HTMLImageElement> {
1
+ import React from 'react';
2
+ export interface LazyImageProps extends React.AllHTMLAttributes<HTMLElement> {
3
+ /**
4
+ * 标签名,默认div
5
+ */
6
+ tagName?: string;
3
7
  /**
4
8
  * 需要显示的图片
5
9
  */
@@ -9,34 +13,13 @@ export interface LazyImageProps extends React.ImgHTMLAttributes<HTMLImageElement
9
13
  */
10
14
  alt: string;
11
15
  /**
12
- * 鼠标悬浮时显示的文字
16
+ * 图片额外的属性
13
17
  */
14
- title?: string;
18
+ imgHTMLAttributes?: React.ImgHTMLAttributes<HTMLImageElement>;
15
19
  /**
16
20
  * 类名
17
21
  */
18
22
  className?: string;
19
- /**
20
- * hover 图片,图片透明度(需要注意不要少了isMobile属性)
21
- */
22
- hoverOpacity?: number;
23
- /**
24
- * 判断是否是移动端,如果是移动端,将不再执行hoverOpacity, onMouseOver, onMouseOut
25
- */
26
- isMobile?: boolean;
27
- /**
28
- * 判断是否需要动态loading效果,如果提供了defaultImage,则不再有loading
29
- */
30
- active?: boolean;
31
- onClick?: MouseEventHandler<HTMLImageElement>;
32
- /**
33
- * 鼠标放上去的回调(方便自定义样式)
34
- */
35
- onMouseOver?: MouseEventHandler<HTMLImageElement>;
36
- /**
37
- * 鼠标离开的回调(方便自定义样式)
38
- */
39
- onMouseOut?: MouseEventHandler<HTMLImageElement>;
40
23
  /**
41
24
  * 加载图片时的回调
42
25
  */
@@ -55,10 +38,9 @@ interface LazyImageStates {
55
38
  }
56
39
  declare class LazyImage extends React.Component<LazyImageProps, LazyImageStates> {
57
40
  static defaultProps: {
41
+ tagName: string;
58
42
  className: string;
59
- hoverOpacity: any;
60
- isMobile: boolean;
61
- active: boolean;
43
+ imgHTMLAttributes: {};
62
44
  };
63
45
  prefixCls: string;
64
46
  rootRef: React.RefObject<HTMLImageElement>;
@@ -71,8 +53,6 @@ declare class LazyImage extends React.Component<LazyImageProps, LazyImageStates>
71
53
  * 监听原生lazy loading, 并回调不同的事件
72
54
  */
73
55
  originalLazyLoad: () => void;
74
- onMouseOut: (ev: MouseEvent<HTMLImageElement>) => void;
75
- onMouseOver: (ev: MouseEvent<HTMLImageElement>) => void;
76
56
  render(): JSX.Element;
77
57
  }
78
58
  export default LazyImage;
@@ -41,6 +41,16 @@ var __assign = void 0 && (void 0).__assign || function () {
41
41
  };
42
42
  return __assign.apply(this, arguments);
43
43
  };
44
+ var __rest = void 0 && (void 0).__rest || function (s, e) {
45
+ var t = {};
46
+ for (var p in s) {
47
+ if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
48
+ }
49
+ if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
50
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
51
+ }
52
+ return t;
53
+ };
44
54
  function noop() {}
45
55
  var LazyImage = /** @class */function (_super) {
46
56
  __extends(LazyImage, _super);
@@ -97,36 +107,6 @@ var LazyImage = /** @class */function (_super) {
97
107
  };
98
108
  }
99
109
  };
100
- _this.onMouseOut = function (ev) {
101
- if (_this.props.isMobile) {
102
- return;
103
- }
104
- var _a = _this.props,
105
- hoverOpacity = _a.hoverOpacity,
106
- onMouseOut = _a.onMouseOut;
107
- var el = ev.target;
108
- if (hoverOpacity) {
109
- el.style.opacity = '1';
110
- }
111
- if (onMouseOut) {
112
- onMouseOut(ev);
113
- }
114
- };
115
- _this.onMouseOver = function (ev) {
116
- if (_this.props.isMobile) {
117
- return;
118
- }
119
- var _a = _this.props,
120
- hoverOpacity = _a.hoverOpacity,
121
- onMouseOver = _a.onMouseOver;
122
- var el = ev.target;
123
- if (hoverOpacity) {
124
- el.style.opacity = hoverOpacity.toString();
125
- }
126
- if (onMouseOver) {
127
- onMouseOver(ev);
128
- }
129
- };
130
110
  _this.state = {
131
111
  loading: true
132
112
  };
@@ -148,34 +128,33 @@ var LazyImage = /** @class */function (_super) {
148
128
  var cls = this.prefixCls;
149
129
  var _b = this.props,
150
130
  className = _b.className,
151
- active = _b.active;
131
+ alt = _b.alt,
132
+ src = _b.src,
133
+ imgHTMLAttributes = _b.imgHTMLAttributes,
134
+ tagName = _b.tagName,
135
+ onError = _b.onError,
136
+ onLoading = _b.onLoading,
137
+ onLoaded = _b.onLoaded,
138
+ extraProps = __rest(_b, ["className", "alt", "src", "imgHTMLAttributes", "tagName", "onError", "onLoading", "onLoaded"]);
152
139
  var loading = this.state.loading;
153
- var props = __assign({}, this.props);
154
- delete props.className;
155
- delete props.onMouseOver;
156
- delete props.onMouseOut;
157
- delete props.hoverOpacity;
158
- delete props.isMobile;
159
- delete props.active;
160
- delete props.onLoading;
161
- delete props.onLoaded;
162
- return /*#__PURE__*/_react.default.createElement("img", __assign({
163
- alt: ""
164
- }, props, {
165
- className: (0, _classnames.default)(cls, className, (_a = {}, _a["".concat(cls, "-loading")] = loading, _a["".concat(cls, "-active")] = loading && active, _a)),
166
- onMouseOver: this.onMouseOver,
167
- onMouseOut: this.onMouseOut,
140
+ var Wrapper = tagName;
141
+ // 需要图片根据容器自适应时,需增加mask
142
+ return /*#__PURE__*/_react.default.createElement(Wrapper, __assign({}, extraProps, {
143
+ className: (0, _classnames.default)(cls, className, (_a = {}, _a["".concat(cls, "-loading")] = loading, _a))
144
+ }), /*#__PURE__*/_react.default.createElement("img", __assign({
168
145
  onFocus: noop,
169
- onBlur: noop,
146
+ onBlur: noop
147
+ }, imgHTMLAttributes, {
148
+ src: src,
149
+ alt: alt,
170
150
  ref: this.rootRef,
171
151
  loading: "lazy"
172
- }));
152
+ })));
173
153
  };
174
154
  LazyImage.defaultProps = {
155
+ tagName: 'div',
175
156
  className: '',
176
- hoverOpacity: null,
177
- isMobile: false,
178
- active: true
157
+ imgHTMLAttributes: {}
179
158
  };
180
159
  return LazyImage;
181
160
  }(_react.default.Component);
@@ -1 +1 @@
1
- .ab-lazy-image{transition:opacity .5s}.ab-lazy-image-loading{background:#f2f2f2;overflow:hidden}.ab-lazy-image-loading.ab-lazy-image-active{background:linear-gradient(90deg,#f2f2f2 25%,#e6e6e6 37%,#f2f2f2 63%);background-size:400% 100%;animation:1.4s infinite ab-skeleton-loading}@keyframes ab-skeleton-loading{0%{background-position:100% 50%}100%{background-position:0 50%}}
1
+ .ab-lazy-image{position:relative;overflow:hidden;transition:opacity .5s;display:flex;align-items:center;justify-content:center}.ab-lazy-image::after{display:none;content:"";position:absolute;left:0;top:0;width:100%;height:100%}.ab-lazy-image-loading::after{display:block;background:linear-gradient(90deg,#f2f2f2 25%,#e6e6e6 37%,#f2f2f2 63%);background-size:400% 100%;animation:1.4s infinite ab-skeleton-loading}.ab-lazy-image img{display:block;max-width:100%;max-height:100%}@keyframes ab-skeleton-loading{0%{background-position:100% 50%}100%{background-position:0 50%}}
@@ -17,17 +17,26 @@ export interface LoadingContainerProps {
17
17
  * LoadingIcon是否需要保持在可视区域内
18
18
  */
19
19
  loadingInView?: boolean;
20
+ /**
21
+ * loadingInView为true时才生效
22
+ * LoadingIcon距离边界最近距离
23
+ */
24
+ spaceToBorder: number;
20
25
  }
21
26
  declare class LoadingContainer extends React.Component<LoadingContainerProps> {
22
27
  prefixCls: string;
23
28
  addScrollHandlerListener: AddListenerEventRemoveHandler;
29
+ addResizeHandlerListener: AddListenerEventRemoveHandler;
24
30
  wrapRef: React.RefObject<HTMLDivElement>;
25
31
  iconRef: React.RefObject<HTMLSpanElement>;
32
+ static defaultProps: {
33
+ spaceToBorder: number;
34
+ };
26
35
  componentDidMount(): void;
27
36
  componentDidUpdate(prevProps: Readonly<LoadingContainerProps>): void;
28
37
  componentWillUnmount(): void;
29
- addScrollListener: () => void;
30
- removeScrollListener: () => void;
38
+ addListener: () => void;
39
+ removeListener: () => void;
31
40
  setIconTopStyle: (top: string) => void;
32
41
  onHandlerScroll: () => void;
33
42
  render(): JSX.Element;
@@ -41,17 +41,25 @@ var LoadingContainer = /** @class */function (_super) {
41
41
  _this.prefixCls = 'ab-loading-container';
42
42
  _this.wrapRef = /*#__PURE__*/(0, _react.createRef)();
43
43
  _this.iconRef = /*#__PURE__*/(0, _react.createRef)();
44
- _this.addScrollListener = function () {
44
+ _this.addListener = function () {
45
45
  if (!_this.addScrollHandlerListener) {
46
46
  // 滚动监听
47
47
  _this.addScrollHandlerListener = (0, _utils.addEventListener)(window, 'scroll', (0, _utils.throttleWithRAF)(_this.onHandlerScroll));
48
48
  }
49
+ if (!_this.addResizeHandlerListener) {
50
+ // resize监听
51
+ _this.addResizeHandlerListener = (0, _utils.addEventListener)(window, 'resize', (0, _utils.throttleWithRAF)(_this.onHandlerScroll));
52
+ }
49
53
  };
50
- _this.removeScrollListener = function () {
54
+ _this.removeListener = function () {
51
55
  if (_this.addScrollHandlerListener) {
52
56
  _this.addScrollHandlerListener();
53
57
  _this.addScrollHandlerListener = null;
54
58
  }
59
+ if (_this.addResizeHandlerListener) {
60
+ _this.addResizeHandlerListener();
61
+ _this.addResizeHandlerListener = null;
62
+ }
55
63
  };
56
64
  _this.setIconTopStyle = function (top) {
57
65
  _this.iconRef.current.style.top = top;
@@ -81,36 +89,39 @@ var LoadingContainer = /** @class */function (_super) {
81
89
  _this.setIconTopStyle("".concat(window.innerHeight / 2 - top, "px"));
82
90
  return;
83
91
  }
92
+ var spaceToBorder = _this.props.spaceToBorder;
84
93
  if (top < 0) {
85
94
  // 组件上半部分超出可视区域
86
95
  var iconTop_1 = bottom / 2 - top;
87
- _this.setIconTopStyle("".concat(iconTop_1 > height - halfIconHeight ? height - halfIconHeight : iconTop_1, "px"));
96
+ var maxTop = height - halfIconHeight - spaceToBorder;
97
+ _this.setIconTopStyle("".concat(iconTop_1 > maxTop ? maxTop : iconTop_1, "px"));
88
98
  return;
89
99
  }
90
100
  // 组件下半部分超出可视区域
91
101
  var iconTop = (window.innerHeight - top) / 2;
92
- _this.setIconTopStyle("".concat(iconTop < halfIconHeight ? halfIconHeight : iconTop, "px"));
102
+ var minTop = halfIconHeight + spaceToBorder;
103
+ _this.setIconTopStyle("".concat(iconTop < minTop ? minTop : iconTop, "px"));
93
104
  };
94
105
  return _this;
95
106
  }
96
107
  LoadingContainer.prototype.componentDidMount = function () {
97
108
  if (this.props.loadingInView && this.props.loading) {
98
109
  this.onHandlerScroll();
99
- this.addScrollListener();
110
+ this.addListener();
100
111
  }
101
112
  };
102
113
  LoadingContainer.prototype.componentDidUpdate = function (prevProps) {
103
114
  if (prevProps.loading !== this.props.loading || prevProps.loadingInView !== this.props.loadingInView) {
104
115
  if (this.props.loadingInView && this.props.loading) {
105
116
  this.onHandlerScroll();
106
- this.addScrollListener();
117
+ this.addListener();
107
118
  return;
108
119
  }
109
- this.removeScrollListener();
120
+ this.removeListener();
110
121
  }
111
122
  };
112
123
  LoadingContainer.prototype.componentWillUnmount = function () {
113
- this.removeScrollListener();
124
+ this.removeListener();
114
125
  };
115
126
  LoadingContainer.prototype.render = function () {
116
127
  var _a;
@@ -130,6 +141,9 @@ var LoadingContainer = /** @class */function (_super) {
130
141
  ref: this.iconRef
131
142
  })));
132
143
  };
144
+ LoadingContainer.defaultProps = {
145
+ spaceToBorder: 0
146
+ };
133
147
  return LoadingContainer;
134
148
  }(_react.default.Component);
135
149
  var _default = LoadingContainer;
@@ -4,7 +4,7 @@ export declare enum ScrollbarSize {
4
4
  Medium = "md",
5
5
  Large = "lg"
6
6
  }
7
- export interface ScrollContainerProps extends React.HtmlHTMLAttributes<HTMLElement> {
7
+ export interface ScrollbarProps extends React.HtmlHTMLAttributes<HTMLElement> {
8
8
  /**
9
9
  * 滚动内容
10
10
  */
@@ -38,13 +38,13 @@ export interface ScrollContainerProps extends React.HtmlHTMLAttributes<HTMLEleme
38
38
  */
39
39
  isHiddenBar?: boolean;
40
40
  }
41
- interface ScrollContainerNotRefProps extends ScrollContainerProps {
41
+ interface ScrollbarNotRefProps extends ScrollbarProps {
42
42
  /**
43
43
  * 此属性可以忽略, storybook问题
44
44
  */
45
45
  upperRef: React.Ref<HTMLElement>;
46
46
  }
47
- export declare class ScrollContainerNotRef extends React.Component<ScrollContainerNotRefProps> {
47
+ export declare class ScrollbarNotRef extends React.Component<ScrollbarNotRefProps> {
48
48
  static defaultProps: {
49
49
  tagName: string;
50
50
  isHiddenBar: boolean;
@@ -54,9 +54,7 @@ export declare class ScrollContainerNotRef extends React.Component<ScrollContain
54
54
  };
55
55
  prefixCls: string;
56
56
  wrapRef: React.RefObject<HTMLElement>;
57
- contentRef: React.RefObject<HTMLDivElement>;
58
- getMarginValueBySize: () => "0" | "0.12rem" | "0.08rem" | "0.06rem";
59
57
  render(): JSX.Element;
60
58
  }
61
- declare const ScrollContainer: React.ForwardRefExoticComponent<ScrollContainerProps & React.RefAttributes<HTMLElement>>;
62
- export default ScrollContainer;
59
+ declare const Scrollbar: React.ForwardRefExoticComponent<ScrollbarProps & React.RefAttributes<HTMLElement>>;
60
+ export default Scrollbar;