Repository URL to install this package:
|
Version:
2.1.16 ▾
|
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
const tslib_1 = require("tslib");
const react_1 = tslib_1.__importDefault(require("react"));
const mobx_react_1 = require("xmobx/mobx-react");
const utils_1 = require("@skava/utils");
const react_animate_height_1 = tslib_1.__importDefault(require("react-animate-height"));
const styled_1 = require("./styled");
const renderProps_1 = require("./renderProps");
/**
* !!! @mohan
* @todo split to another file
* @todo typings
*/
let ObservableAnimatedExpandableCard = class ObservableAnimatedExpandableCard extends react_1.default.Component {
render() {
const _a = this.props,
{
renderHeaderView,
renderFooterView,
renderExpandableView,
state
} = _a,
remainingProps = tslib_1.__rest(_a, ["renderHeaderView", "renderFooterView", "renderExpandableView", "state"]);
console.debug('renderAnimateHeight view');
const animatingHeight = state.isExpanded ? 'auto' : 0;
return react_1.default.createElement(react_1.default.Fragment, {
key: "animated"
}, renderHeaderView(remainingProps, state), react_1.default.createElement(react_animate_height_1.default, {
duration: 500,
height: animatingHeight
}, renderExpandableView(remainingProps, state)), renderFooterView(remainingProps, state));
}
};
ObservableAnimatedExpandableCard = tslib_1.__decorate([mobx_react_1.observer], ObservableAnimatedExpandableCard);
/**
* predefined function with height animation
* @note not observable as a renderProp
*/
function renderView(props, state) {
return react_1.default.createElement(ObservableAnimatedExpandableCard, Object.assign({}, props, {
state: state
}));
}
const KNOWN_PROPS = ['renderDefaultView', 'renderExpandedView'];
Object.freeze(KNOWN_PROPS);
class AnimatedExpandableCard extends react_1.default.Component {
render() {
const remainingProps = utils_1.omit(this.props, KNOWN_PROPS);
return react_1.default.createElement(styled_1.StyledExpandableCard, Object.assign({
renderHeaderView: renderProps_1.defaultRenderHeaderView,
renderDefaultView: renderView,
renderExpandedView: renderView
}, remainingProps));
}
}
AnimatedExpandableCard.defaultProps = {
className: '',
renderToggleButton: renderProps_1.defaultRenderToggleButton,
renderHeaderView: renderProps_1.defaultRenderHeaderView,
renderExpandableView: renderProps_1.defaultRenderExpandableView,
renderFooterView: renderProps_1.defaultRenderFooterView
};
exports.AnimatedExpandableCard = AnimatedExpandableCard;
exports.default = AnimatedExpandableCard;