UNPKG

ultra-design

Version:
122 lines (106 loc) 5.45 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var _defineProperty = require('@babel/runtime/helpers/defineProperty'); var _slicedToArray = require('@babel/runtime/helpers/slicedToArray'); var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties'); var _pt = require('prop-types'); var clsx = require('clsx'); var React = require('react'); var reactTransitionGroup = require('react-transition-group'); var mergeProps = require('../utils/mergeProps.js'); var withStyle = require('../utils/withStyle.js'); var tabsStyles = require('./tabs-styles.js'); var jsxRuntime = require('@emotion/react/jsx-runtime'); function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty); var _slicedToArray__default = /*#__PURE__*/_interopDefaultLegacy(_slicedToArray); var _objectWithoutProperties__default = /*#__PURE__*/_interopDefaultLegacy(_objectWithoutProperties); var _pt__default = /*#__PURE__*/_interopDefaultLegacy(_pt); var clsx__default = /*#__PURE__*/_interopDefaultLegacy(clsx); var React__default = /*#__PURE__*/_interopDefaultLegacy(React); var _excluded = ["value", "defaultValue", "onChange", "children", "className"]; function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (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 = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty__default["default"](target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } var defaultProps = {}; var Tabs = function Tabs(p) { var props = mergeProps.useMergeProps(defaultProps, p); var value = props.value, defaultValue = props.defaultValue, onChange = props.onChange, children = props.children, className = props.className, rest = _objectWithoutProperties__default["default"](props, _excluded); var _useState = React.useState(defaultValue), _useState2 = _slicedToArray__default["default"](_useState, 2), selfValue = _useState2[0], setSelfValue = _useState2[1]; React.useEffect(function () { if (typeof value === 'undefined') return; setSelfValue(value); }, [value]); var clickHandler = function clickHandler(value) { setSelfValue(value); onChange && onChange(value); }; var tabList = React.useMemo(function () { return React__default["default"].Children.toArray(children).filter(function (c) { return c.type.displayName === 'UltraTabsItem'; }).map(function (child) { var _child$props = child.props, label = _child$props.label, value = _child$props.value, icon = _child$props.icon, disabled = _child$props.disabled; return { label: label, value: value, icon: icon, disabled: disabled }; }); }, [children]); return jsxRuntime.jsxs("div", _objectSpread(_objectSpread({ className: clsx__default["default"]('ultra-tabs', className) }, rest), {}, { css: tabsStyles.tabsStyles(props), children: [jsxRuntime.jsx("div", { className: "ultra-tabs-header", children: tabList.map(function (tab) { return jsxRuntime.jsxs("div", { className: clsx__default["default"]('ultra-tabs-header-item', tab.disabled && 'ultra-tabs-header-item__disabled', selfValue === tab.value && 'ultra-tabs-header-item__active'), onClick: function onClick() { return !tab.disabled && clickHandler(tab.value); }, children: [tab.icon && jsxRuntime.jsx("div", { className: "ultra-tabs-header-item__icon", children: tab.icon }), tab.label] }, tab.value); }) }), jsxRuntime.jsx("div", { className: "ultra-tabs-content", children: React__default["default"].Children.toArray(children).filter(function (c) { return c.type.displayName === 'UltraTabsItem'; }).map(function (child) { return jsxRuntime.jsx(reactTransitionGroup.CSSTransition, { classNames: "ultra-tabs-item-transition", "in": selfValue === child.props.value, timeout: 300, unmountOnExit: true, children: /*#__PURE__*/React__default["default"].cloneElement(child, { className: "ultra-tabs-item__".concat(selfValue === child.props.value ? 'active' : 'inactive') }) }, child.props.value); }) })] })); }; Tabs.propTypes = { defaultValue: _pt__default["default"].string, value: _pt__default["default"].string, onChange: _pt__default["default"].func, className: _pt__default["default"].string }; Tabs.displayName = 'UltraTabs'; var TabsComponent = withStyle["default"](Tabs); exports["default"] = TabsComponent;