UNPKG

fomantic-ui-react

Version:

Fomantic-UI React -- A React Component Library.

150 lines (131 loc) 4.94 kB
/** * fomantic-ui-react v0.0.1-alpha.10 * (c) 2022 FireLoong <fireloong@foxmail.com> * @license MIT */ import { _ as _defineProperty, a as _objectWithoutProperties } from '../_chunks/dep-9f1126c1.js'; import { _ as _slicedToArray } from '../_chunks/dep-dc9b74a1.js'; import classNames from 'classnames'; import React, { useState, useEffect, Children, isValidElement } from 'react'; import TweenOne from 'rc-tween-one'; import { Transition } from '../transition/index.js'; import '../transition/Transition.js'; import 'lodash'; import './style/css.js'; import '../transition/type.js'; var _excluded = ["as", "active", "duration", "className", "style", "content", "children"]; function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } var AccordionContent = function AccordionContent(_ref) { var _ref$as = _ref.as, as = _ref$as === void 0 ? "div" : _ref$as, active = _ref.active, _ref$duration = _ref.duration, duration = _ref$duration === void 0 ? 300 : _ref$duration, className = _ref.className, style = _ref.style, content = _ref.content, children = _ref.children, props = _objectWithoutProperties(_ref, _excluded); if (!as) { as = "div"; } var _useState = useState(true), _useState2 = _slicedToArray(_useState, 2), paused = _useState2[0], setPaused = _useState2[1]; var _useState3 = useState(false), _useState4 = _slicedToArray(_useState3, 2), reverse = _useState4[0], setReverse = _useState4[1]; var _useState5 = useState(0), _useState6 = _slicedToArray(_useState5, 2), moment = _useState6[0], setMoment = _useState6[1]; var _useState7 = useState(active), _useState8 = _slicedToArray(_useState7, 2), toggle = _useState8[0], setToggle = _useState8[1]; var _useState9 = useState(false), _useState10 = _slicedToArray(_useState9, 2), start = _useState10[0], setStart = _useState10[1]; var _useState11 = useState("to"), _useState12 = _slicedToArray(_useState11, 2), type = _useState12[0], setType = _useState12[1]; var _useState13 = useState(true), _useState14 = _slicedToArray(_useState13, 2), visible = _useState14[0], setVisible = _useState14[1]; useEffect(function () { setStart(true); setType(active ? "to" : "from"); }, []); useEffect(function () { setToggle(active); }, [active]); useEffect(function () { if (start) { if (type === "to" ? !active : active) { setPaused(false); setReverse(false); } else { setPaused(false); setReverse(true); setTimeout(function () { setMoment(void 0); setTimeout(function () { setMoment(0); }); }, duration); } } }, [toggle]); children = children || content; if (typeof children !== "string" && Children.count(children) > 0) { children = Children.map(children, function (child) { if ( /*#__PURE__*/isValidElement(child)) { return /* @__PURE__ */React.createElement(Transition, _objectSpread({ key: child.key, as: child.type, duration: duration, animation: "fade", visible: active }, child.props)); } }); } return /* @__PURE__ */React.createElement(TweenOne, { animation: { height: 0, paddingTop: 0, paddingBottom: 0, marginTop: 0, marginBottom: 0, duration: duration, type: type, onStart: function onStart() { setVisible(type === "to"); }, onComplete: function onComplete() { setVisible(type !== "to"); } }, paused: paused, reverse: reverse, moment: moment, component: as, componentProps: _objectSpread({ className: classNames("content", { active: active || visible }, className), style: _objectSpread({ overflow: "hidden" }, style) }, props) }, children); }; AccordionContent.displayName = "AccordionContent"; export { AccordionContent as default }; //# sourceMappingURL=AccordionContent.js.map