@qsxy/element-plus-react 1.0.0-next.21 → 1.0.0-next.22
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.
- package/dist/Breadcrumb/BreadcrumbItem.js +7 -4
- package/dist/DateTimePicker/DateTimePicker.d.ts +1 -1
- package/dist/Menu/Menu.d.ts +4 -0
- package/dist/Menu/Menu.js +231 -0
- package/dist/Menu/MenuCollapseTransition.d.ts +6 -0
- package/dist/Menu/MenuCollapseTransition.js +40 -0
- package/dist/Menu/MenuContext.d.ts +16 -0
- package/dist/Menu/MenuContext.js +18 -0
- package/dist/Menu/MenuItem.d.ts +4 -0
- package/dist/Menu/MenuItem.js +76 -0
- package/dist/Menu/MenuItemGroup.d.ts +4 -0
- package/dist/Menu/MenuItemGroup.js +44 -0
- package/dist/Menu/SubMenu.d.ts +4 -0
- package/dist/Menu/SubMenu.js +242 -0
- package/dist/Menu/SubMenuCollapseTransition.d.ts +6 -0
- package/dist/Menu/SubMenuCollapseTransition.js +52 -0
- package/dist/Menu/index.d.ts +5 -0
- package/dist/Menu/index.js +4 -0
- package/dist/Menu/typings.d.ts +121 -0
- package/dist/Menu/typings.js +1 -0
- package/dist/Menu/useEllipsis.d.ts +6 -0
- package/dist/Menu/useEllipsis.js +82 -0
- package/dist/Popper/Popper.js +9 -4
- package/dist/Popper/popperOptions.d.ts +2 -2
- package/dist/Popper/popperOptions.js +41 -2
- package/dist/Radio/Radio.js +4 -3
- package/dist/Radio/RadioButton.d.ts +1 -1
- package/dist/Radio/RadioButton.js +3 -2
- package/dist/Radio/typings.d.ts +1 -1
- package/dist/Tooltip/Tooltip.js +3 -1
- package/dist/Transition/CssTransiton.d.ts +15 -0
- package/dist/Transition/CssTransiton.js +29 -0
- package/dist/Transition/Transition.d.ts +2 -0
- package/dist/Transition/Transition.js +7 -2
- package/dist/hooks/useCssTransiton.d.ts +27 -0
- package/dist/hooks/useCssTransiton.js +87 -0
- package/dist/hooks/useResizeObserver.d.ts +42 -0
- package/dist/hooks/useResizeObserver.js +42 -0
- package/dist/index.css +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.js +1 -0
- package/dist/types/common.d.ts +2 -2
- package/package.json +4 -3
- package/theme-chalk/common/transition.scss +142 -0
- package/theme-chalk/index.scss +3 -0
- package/theme-chalk/menu-item-group.scss +0 -0
- package/theme-chalk/menu-item.scss +0 -0
- package/theme-chalk/menu.scss +352 -0
package/dist/Radio/Radio.js
CHANGED
|
@@ -131,8 +131,9 @@ var InternalRadio = function InternalRadio(props, ref) {
|
|
|
131
131
|
}, /*#__PURE__*/React.createElement("input", _extends({
|
|
132
132
|
key: name
|
|
133
133
|
}, htmlInputProps, {
|
|
134
|
-
name: name
|
|
135
|
-
|
|
134
|
+
name: name
|
|
135
|
+
// value={value}
|
|
136
|
+
,
|
|
136
137
|
type: "radio",
|
|
137
138
|
ref: inputRef,
|
|
138
139
|
className: e(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["hidden"]))),
|
|
@@ -149,7 +150,7 @@ var InternalRadio = function InternalRadio(props, ref) {
|
|
|
149
150
|
})), /*#__PURE__*/React.createElement("span", {
|
|
150
151
|
className: e(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["label"])))
|
|
151
152
|
}, children));
|
|
152
|
-
}, [b, checked, children, className, disabled, e, handleChange, htmlInputProps, is, m, name, readOnly, size, tooltipEvents
|
|
153
|
+
}, [b, checked, children, className, disabled, e, handleChange, htmlInputProps, is, m, name, readOnly, size, tooltipEvents]);
|
|
153
154
|
if (plaintext) {
|
|
154
155
|
return checked ? /*#__PURE__*/React.createElement("div", _extends({}, tooltipEvents, {
|
|
155
156
|
ref: containerRef,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { RadioProps, RadioRef } from './typings';
|
|
3
|
-
declare const RadioButton: React.ForwardRefExoticComponent<RadioProps<
|
|
3
|
+
declare const RadioButton: React.ForwardRefExoticComponent<RadioProps<import("./typings").ValueType> & React.RefAttributes<RadioRef>>;
|
|
4
4
|
export default RadioButton;
|
|
@@ -116,8 +116,9 @@ var RadioButton = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
|
116
116
|
}), /*#__PURE__*/React.createElement("input", _extends({
|
|
117
117
|
key: name
|
|
118
118
|
}, htmlInputProps, {
|
|
119
|
-
name: name
|
|
120
|
-
|
|
119
|
+
name: name
|
|
120
|
+
// value={value}
|
|
121
|
+
,
|
|
121
122
|
type: "radio",
|
|
122
123
|
ref: inputRef,
|
|
123
124
|
className: e(_templateObject || (_templateObject = _taggedTemplateLiteral(["original-radio"]))),
|
package/dist/Radio/typings.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React, { RefObject } from 'react';
|
|
2
2
|
import { BaseProps, FormControlBaseProps, NativeProps } from '../types/common';
|
|
3
|
-
export type ValueType =
|
|
3
|
+
export type ValueType = string | number | boolean;
|
|
4
4
|
export type RadioRef = {
|
|
5
5
|
ref: RefObject<HTMLSpanElement>;
|
|
6
6
|
input: HTMLInputElement;
|
package/dist/Tooltip/Tooltip.js
CHANGED
|
@@ -108,7 +108,9 @@ var Tooltip = /*#__PURE__*/memo( /*#__PURE__*/forwardRef(function (props, ref) {
|
|
|
108
108
|
},
|
|
109
109
|
onOpen: handleMouseEnter,
|
|
110
110
|
onClose: handleMouseLeave,
|
|
111
|
-
hide:
|
|
111
|
+
hide: function hide() {
|
|
112
|
+
setVisible(false);
|
|
113
|
+
}
|
|
112
114
|
};
|
|
113
115
|
});
|
|
114
116
|
return /*#__PURE__*/React.createElement(React.Fragment, null, Children.map(filterChildren, function (child) {
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import React, { FC } from 'react';
|
|
2
|
+
import { BaseProps, NativeProps } from '../types/common';
|
|
3
|
+
export interface CssTransitonProps extends BaseProps<React.ReactElement>, NativeProps {
|
|
4
|
+
}
|
|
5
|
+
export declare enum STATUS {
|
|
6
|
+
UNMOUNTED = 0,
|
|
7
|
+
BEFORE_ENTER = 1,
|
|
8
|
+
ENTER = 2,
|
|
9
|
+
AFTER_ENTER = 3,
|
|
10
|
+
BEFORE_LEAVE = 4,
|
|
11
|
+
LEAVE = 5,
|
|
12
|
+
AFTER_LEAVE = 6
|
|
13
|
+
}
|
|
14
|
+
declare const CssTransiton: FC<CssTransitonProps>;
|
|
15
|
+
export default CssTransiton;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
2
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
3
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
4
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
5
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
6
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
7
|
+
import { useComposeRef } from 'rc-util';
|
|
8
|
+
import React from 'react';
|
|
9
|
+
export var STATUS = /*#__PURE__*/function (STATUS) {
|
|
10
|
+
STATUS[STATUS["UNMOUNTED"] = 0] = "UNMOUNTED";
|
|
11
|
+
STATUS[STATUS["BEFORE_ENTER"] = 1] = "BEFORE_ENTER";
|
|
12
|
+
STATUS[STATUS["ENTER"] = 2] = "ENTER";
|
|
13
|
+
STATUS[STATUS["AFTER_ENTER"] = 3] = "AFTER_ENTER";
|
|
14
|
+
STATUS[STATUS["BEFORE_LEAVE"] = 4] = "BEFORE_LEAVE";
|
|
15
|
+
STATUS[STATUS["LEAVE"] = 5] = "LEAVE";
|
|
16
|
+
STATUS[STATUS["AFTER_LEAVE"] = 6] = "AFTER_LEAVE";
|
|
17
|
+
return STATUS;
|
|
18
|
+
}({});
|
|
19
|
+
var CssTransiton = function CssTransiton(props) {
|
|
20
|
+
var _props$children$props;
|
|
21
|
+
var _React$useState = React.useState(STATUS.UNMOUNTED),
|
|
22
|
+
_React$useState2 = _slicedToArray(_React$useState, 2),
|
|
23
|
+
status = _React$useState2[0],
|
|
24
|
+
setStatus = _React$useState2[1];
|
|
25
|
+
var nodeRef = React.useRef(null);
|
|
26
|
+
var mergedRef = useComposeRef(nodeRef, (_props$children$props = props.children.props) === null || _props$children$props === void 0 ? void 0 : _props$children$props.ref);
|
|
27
|
+
return /*#__PURE__*/React.cloneElement(props.children);
|
|
28
|
+
};
|
|
29
|
+
export default CssTransiton;
|
|
@@ -19,6 +19,8 @@ export interface TransitionProps extends AnimationEventProps {
|
|
|
19
19
|
/** Additional classes */
|
|
20
20
|
className?: string;
|
|
21
21
|
name?: string;
|
|
22
|
+
disabled?: boolean;
|
|
23
|
+
cssTransition?: boolean;
|
|
22
24
|
display?: string;
|
|
23
25
|
/** Show the component; triggers the enter or exit animation */
|
|
24
26
|
visible?: boolean;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var _excluded = ["children", "className", "name"];
|
|
1
|
+
var _excluded = ["children", "className", "name", "disabled", "cssTransition"];
|
|
2
2
|
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
3
3
|
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; }
|
|
4
4
|
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; }
|
|
@@ -247,7 +247,12 @@ var Transition = /*#__PURE__*/function (_Component) {
|
|
|
247
247
|
children = _this$props5.children,
|
|
248
248
|
className = _this$props5.className,
|
|
249
249
|
name = _this$props5.name,
|
|
250
|
+
disabled = _this$props5.disabled,
|
|
251
|
+
cssTransition = _this$props5.cssTransition,
|
|
250
252
|
rest = _objectWithoutProperties(_this$props5, _excluded);
|
|
253
|
+
if (disabled) {
|
|
254
|
+
return children;
|
|
255
|
+
}
|
|
251
256
|
var childProps = omit(rest, ['animation', 'className', 'visible', 'unmountOnExit', 'transitionAppear', 'duration', 'beforeEnter', 'onEnter', 'afterEnter', 'beforeLeave', 'onLeave', 'afterLeave', 'nodeRef']);
|
|
252
257
|
var transitionClassName;
|
|
253
258
|
if (name) {
|
|
@@ -277,7 +282,7 @@ var Transition = /*#__PURE__*/function (_Component) {
|
|
|
277
282
|
// @ts-ignore
|
|
278
283
|
className: classNames(className, (_child$props = child.props) === null || _child$props === void 0 ? void 0 : _child$props.className, transitionClassName),
|
|
279
284
|
style: _objectSpread(_objectSpread({}, ((_child$props2 = child.props) === null || _child$props2 === void 0 ? void 0 : _child$props2.style) || {}), {}, {
|
|
280
|
-
display: _this5.state.status > 1 ? (_this5$props$display = _this5.props.display) !== null && _this5$props$display !== void 0 ? _this5$props$display : 'block' : 'none'
|
|
285
|
+
display: _this5.state.status > 1 || cssTransition ? (_this5$props$display = _this5.props.display) !== null && _this5$props$display !== void 0 ? _this5$props$display : 'block' : 'none'
|
|
281
286
|
})
|
|
282
287
|
}));
|
|
283
288
|
});
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export interface CssTransitonProps {
|
|
3
|
+
nodeRef: React.RefObject<HTMLElement>;
|
|
4
|
+
visible: boolean;
|
|
5
|
+
disabled?: boolean;
|
|
6
|
+
duration?: number;
|
|
7
|
+
beforeLeave?: (el: HTMLElement) => void;
|
|
8
|
+
onLeave?: (el: HTMLElement) => void;
|
|
9
|
+
afterLeave?: (el: HTMLElement) => void;
|
|
10
|
+
beforeEnter?: (el: HTMLElement) => void;
|
|
11
|
+
onEnter?: (el: HTMLElement, done?: () => void) => void;
|
|
12
|
+
afterEnter?: (el: HTMLElement) => void;
|
|
13
|
+
done?: () => void;
|
|
14
|
+
}
|
|
15
|
+
export declare enum STATUS {
|
|
16
|
+
UNMOUNTED = 0,
|
|
17
|
+
BEFORE_LEAVE = 1,
|
|
18
|
+
LEAVE = 2,
|
|
19
|
+
AFTER_LEAVE = 3,
|
|
20
|
+
BEFORE_ENTER = 4,
|
|
21
|
+
ENTER = 5,
|
|
22
|
+
AFTER_ENTER = 6
|
|
23
|
+
}
|
|
24
|
+
declare const useCssTransiton: (props: CssTransitonProps) => {
|
|
25
|
+
mounted: boolean;
|
|
26
|
+
};
|
|
27
|
+
export default useCssTransiton;
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
2
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
3
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
4
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
5
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
6
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
7
|
+
import { addStyle } from 'dom-lib';
|
|
8
|
+
import { useCallback, useEffect, useState } from 'react';
|
|
9
|
+
export var STATUS = /*#__PURE__*/function (STATUS) {
|
|
10
|
+
STATUS[STATUS["UNMOUNTED"] = 0] = "UNMOUNTED";
|
|
11
|
+
STATUS[STATUS["BEFORE_LEAVE"] = 1] = "BEFORE_LEAVE";
|
|
12
|
+
STATUS[STATUS["LEAVE"] = 2] = "LEAVE";
|
|
13
|
+
STATUS[STATUS["AFTER_LEAVE"] = 3] = "AFTER_LEAVE";
|
|
14
|
+
STATUS[STATUS["BEFORE_ENTER"] = 4] = "BEFORE_ENTER";
|
|
15
|
+
STATUS[STATUS["ENTER"] = 5] = "ENTER";
|
|
16
|
+
STATUS[STATUS["AFTER_ENTER"] = 6] = "AFTER_ENTER";
|
|
17
|
+
return STATUS;
|
|
18
|
+
}({});
|
|
19
|
+
var useCssTransiton = function useCssTransiton(props) {
|
|
20
|
+
var nodeRef = props.nodeRef,
|
|
21
|
+
visible = props.visible,
|
|
22
|
+
disabled = props.disabled,
|
|
23
|
+
_props$duration = props.duration,
|
|
24
|
+
duration = _props$duration === void 0 ? 250 : _props$duration,
|
|
25
|
+
beforeLeave = props.beforeLeave,
|
|
26
|
+
onLeave = props.onLeave,
|
|
27
|
+
afterLeave = props.afterLeave,
|
|
28
|
+
beforeEnter = props.beforeEnter,
|
|
29
|
+
onEnter = props.onEnter,
|
|
30
|
+
afterEnter = props.afterEnter,
|
|
31
|
+
done = props.done;
|
|
32
|
+
var _useState = useState(STATUS.UNMOUNTED),
|
|
33
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
34
|
+
status = _useState2[0],
|
|
35
|
+
setStatus = _useState2[1];
|
|
36
|
+
var _useState3 = useState(false),
|
|
37
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
38
|
+
mounted = _useState4[0],
|
|
39
|
+
setMounted = _useState4[1];
|
|
40
|
+
var startCssTransition = useCallback(function () {
|
|
41
|
+
setStatus(STATUS.BEFORE_LEAVE);
|
|
42
|
+
}, []);
|
|
43
|
+
useEffect(function () {
|
|
44
|
+
if (!disabled) {
|
|
45
|
+
if (mounted) {
|
|
46
|
+
startCssTransition();
|
|
47
|
+
} else {
|
|
48
|
+
setMounted(true);
|
|
49
|
+
done === null || done === void 0 || done();
|
|
50
|
+
}
|
|
51
|
+
} else {
|
|
52
|
+
done === null || done === void 0 || done();
|
|
53
|
+
}
|
|
54
|
+
}, [visible]);
|
|
55
|
+
useEffect(function () {
|
|
56
|
+
if (status === STATUS.BEFORE_LEAVE) {
|
|
57
|
+
beforeLeave === null || beforeLeave === void 0 || beforeLeave(nodeRef.current);
|
|
58
|
+
setStatus(STATUS.LEAVE);
|
|
59
|
+
} else if (status === STATUS.LEAVE) {
|
|
60
|
+
onLeave === null || onLeave === void 0 || onLeave(nodeRef.current);
|
|
61
|
+
setStatus(STATUS.AFTER_LEAVE);
|
|
62
|
+
} else if (status === STATUS.AFTER_LEAVE) {
|
|
63
|
+
setTimeout(function () {
|
|
64
|
+
afterLeave === null || afterLeave === void 0 || afterLeave(nodeRef.current);
|
|
65
|
+
setStatus(STATUS.BEFORE_ENTER);
|
|
66
|
+
addStyle(nodeRef.current, {
|
|
67
|
+
display: 'none'
|
|
68
|
+
});
|
|
69
|
+
}, duration);
|
|
70
|
+
} else if (status === STATUS.BEFORE_ENTER) {
|
|
71
|
+
beforeEnter === null || beforeEnter === void 0 || beforeEnter(nodeRef.current);
|
|
72
|
+
setStatus(STATUS.ENTER);
|
|
73
|
+
} else if (status === STATUS.ENTER) {
|
|
74
|
+
addStyle(nodeRef.current, {
|
|
75
|
+
display: ''
|
|
76
|
+
});
|
|
77
|
+
onEnter === null || onEnter === void 0 || onEnter(nodeRef.current, done);
|
|
78
|
+
setStatus(STATUS.AFTER_ENTER);
|
|
79
|
+
} else if (status === STATUS.AFTER_ENTER) {
|
|
80
|
+
afterEnter === null || afterEnter === void 0 || afterEnter(nodeRef.current);
|
|
81
|
+
}
|
|
82
|
+
}, [status]);
|
|
83
|
+
return {
|
|
84
|
+
mounted: mounted
|
|
85
|
+
};
|
|
86
|
+
};
|
|
87
|
+
export default useCssTransiton;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { RefObject } from 'react';
|
|
2
|
+
export interface ResizeObserverSize {
|
|
3
|
+
readonly inlineSize: number;
|
|
4
|
+
readonly blockSize: number;
|
|
5
|
+
}
|
|
6
|
+
export interface ResizeObserverEntry {
|
|
7
|
+
readonly target: Element;
|
|
8
|
+
readonly contentRect: DOMRectReadOnly;
|
|
9
|
+
readonly borderBoxSize: ReadonlyArray<ResizeObserverSize>;
|
|
10
|
+
readonly contentBoxSize: ReadonlyArray<ResizeObserverSize>;
|
|
11
|
+
readonly devicePixelContentBoxSize: ReadonlyArray<ResizeObserverSize>;
|
|
12
|
+
}
|
|
13
|
+
export type ResizeObserverCallback = (entries: ReadonlyArray<ResizeObserverEntry>, observer: ResizeObserver) => void;
|
|
14
|
+
export interface UseResizeObserverOptions {
|
|
15
|
+
/**
|
|
16
|
+
* Sets which box model the observer will observe changes to. Possible values
|
|
17
|
+
* are `content-box` (the default), `border-box` and `device-pixel-content-box`.
|
|
18
|
+
*
|
|
19
|
+
* @default 'content-box'
|
|
20
|
+
*/
|
|
21
|
+
box?: ResizeObserverBoxOptions;
|
|
22
|
+
window?: Window;
|
|
23
|
+
}
|
|
24
|
+
declare class ResizeObserver {
|
|
25
|
+
constructor(callback: ResizeObserverCallback);
|
|
26
|
+
disconnect(): void;
|
|
27
|
+
observe(target: Element, options?: UseResizeObserverOptions): void;
|
|
28
|
+
unobserve(target: Element): void;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Reports changes to the dimensions of an Element's content or the border-box
|
|
32
|
+
*
|
|
33
|
+
* @param target
|
|
34
|
+
* @param callback
|
|
35
|
+
* @param options
|
|
36
|
+
*/
|
|
37
|
+
export declare function useResizeObserver(target: RefObject<HTMLElement>, callback: ResizeObserverCallback, options?: UseResizeObserverOptions): {
|
|
38
|
+
isSupported: boolean;
|
|
39
|
+
stop: () => void;
|
|
40
|
+
};
|
|
41
|
+
export type UseResizeObserverReturn = ReturnType<typeof useResizeObserver>;
|
|
42
|
+
export {};
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
function _objectDestructuringEmpty(obj) { if (obj == null) throw new TypeError("Cannot destructure " + obj); }
|
|
2
|
+
import { useEffect, useMemo } from 'react';
|
|
3
|
+
/**
|
|
4
|
+
* Reports changes to the dimensions of an Element's content or the border-box
|
|
5
|
+
*
|
|
6
|
+
* @param target
|
|
7
|
+
* @param callback
|
|
8
|
+
* @param options
|
|
9
|
+
*/
|
|
10
|
+
export function useResizeObserver(target, callback) {
|
|
11
|
+
var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
12
|
+
var observerOptions = Object.assign({}, (_objectDestructuringEmpty(options), options));
|
|
13
|
+
var observer;
|
|
14
|
+
var isSupported = useMemo(function () {
|
|
15
|
+
return window && 'ResizeObserver' in window;
|
|
16
|
+
}, []);
|
|
17
|
+
var cleanup = function cleanup() {
|
|
18
|
+
if (observer) {
|
|
19
|
+
observer.disconnect();
|
|
20
|
+
observer = undefined;
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
var stop = function stop() {
|
|
24
|
+
cleanup();
|
|
25
|
+
};
|
|
26
|
+
useEffect(function () {
|
|
27
|
+
cleanup();
|
|
28
|
+
if (isSupported && window) {
|
|
29
|
+
observer = new ResizeObserver(callback);
|
|
30
|
+
if (target.current) {
|
|
31
|
+
observer.observe(target.current, observerOptions);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return function () {
|
|
35
|
+
cleanup();
|
|
36
|
+
};
|
|
37
|
+
}, []);
|
|
38
|
+
return {
|
|
39
|
+
isSupported: isSupported,
|
|
40
|
+
stop: stop
|
|
41
|
+
};
|
|
42
|
+
}
|