UNPKG

@bnorth/components

Version:

bnorth, components, react

216 lines (181 loc) 6.84 kB
"use strict"; var _interopRequireWildcard = require("@babel/runtime-corejs2/helpers/interopRequireWildcard"); var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault"); var _Object$defineProperty2 = require("@babel/runtime-corejs2/core-js/object/define-property"); _Object$defineProperty2(exports, "__esModule", { value: true }); exports.default = void 0; var _defineProperty = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/define-property")); var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/extends")); var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/objectWithoutProperties")); var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass")); var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/possibleConstructorReturn")); var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/getPrototypeOf")); var _inherits2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/inherits")); var _react = _interopRequireDefault(require("react")); var _BaseComponent = _interopRequireDefault(require("./BaseComponent")); var _Panel = _interopRequireWildcard(require("./Panel")); var _Icon = require("./Icon"); /** * @module */ /** * 标签页组件 * @component * @augments BaseComponent * @augments Panel.module:Container~PanelContainer * @exportdefault */ var TabBar = /*#__PURE__*/ function (_React$Component) { (0, _inherits2.default)(TabBar, _React$Component); function TabBar(props) { var _this; (0, _classCallCheck2.default)(this, TabBar); _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(TabBar).call(this, props)); _this.state = { selectedIndex: props.selectedIndexDefault || 0 }; return _this; } (0, _createClass2.default)(TabBar, [{ key: "render", value: function render() { var _this2 = this; var aprops = (0, _BaseComponent.default)(this.props); var _aprops$selectedIndex = aprops.selectedIndex, selectedIndex = _aprops$selectedIndex === void 0 ? this.state.selectedIndex : _aprops$selectedIndex, selectedIndexDefault = aprops.selectedIndexDefault, onWillChange = aprops.onWillChange, onAction = aprops.onAction, navProps = aprops.navProps, containerProps = aprops.containerProps, children = aprops.children, props = (0, _objectWithoutProperties2.default)(aprops, ["selectedIndex", "selectedIndexDefault", "onWillChange", "onAction", "navProps", "containerProps", "children"]); children = _react.default.Children.toArray(children).filter(function (v) { return v; }); return _react.default.createElement(_Panel.PanelContainer, (0, _extends2.default)({ panelContainerProps: aprops, ctype: "primary", direction: "v", align: "stretch" }, props), _react.default.createElement(_Panel.PanelContainer, (0, _extends2.default)({ panelContainerProps: navProps, ctype: "justify", selectedIndex: selectedIndex }, navProps), children.map(function (v, i) { var _v$props = v.props, event = _v$props.event, _onClick = _v$props.onClick, children = _v$props.children, props = (0, _objectWithoutProperties2.default)(_v$props, ["event", "onClick", "children"]); return _react.default.createElement(_Panel.default, (0, _extends2.default)({ key: v.key || i, component: _Icon.PanelIcon, selected: selectedIndex === i, "bp-panelTheme-sensitiveSelect": true, onClick: function onClick(e) { if (onWillChange && onWillChange(i, v.props, event) === false) return; _this2.setState({ selectedIndex: i }, function () { if (onAction) onAction(i, v.props, event); if (_onClick) _onClick(e); }); } }, props)); })), _react.default.createElement(_Panel.PanelContainer, (0, _extends2.default)({ panelContainerProps: containerProps, panelItemSelected: true, ctype: "scroll", selectedIndex: selectedIndex, onSelectedChange: function onSelectedChange(i) { var props = children[i].props; if (onWillChange && onWillChange(i, props, props && props.event) === false) return; _this2.setState({ selectedIndex: i }, function () { if (onAction) onAction(i, props, props && props.event); }); } }, containerProps), children.map(function (v) { return _react.default.createElement(_Panel.default, { key: v.key, children: v.props.children }); }))); } }]); return TabBar; }(_react.default.Component); TabBar.defaultProps = {}; /** * @callback TabBarActionCallback * @param {number} i - 标签的索引 * @param {*} event - 标签的事件名称 * @param {object} props - 标签的属性 * @returns {boolean} 返回为真,将阻止导航条组件的点击事件 */ /** * 设置标签页页面切换的动作回调函数 * @attribute module:TabBar.TabBar.onAction * @type {module:TabBar~TabBarActionCallback} */ /** * 设置标签页当前选中索引 * @attribute module:TabBar.TabBar.selectedIndex * @type {number} */ /** * 设置标签页默认的选中索引 * @attribute module:TabBar.TabBar.selectedIndexDefault * @type {number} */ /** * 设置标签页的标签导航组件的属性 * @attribute module:TabBar.TabBar.navProps * @type {object} */ /** * 设置标签页的标签内容容器组件的属性 * @attribute module:TabBar.TabBar.containerProps * @type {object} */ (0, _defineProperty.default)(TabBar, "TabBar", { get: function get() { return TabBar; }, set: function set(val) { TabBar = val; } }); TabBar.isBnorth = true; TabBar.defaultProps['b-precast'] = {}; var _default = TabBar; /** * 标签页组件条目 * @component * @augments BaseComponent * @augments Panel.module:Container~PanelContainer * @exportdefault */ exports.default = _default; var _Item = function Item(aprops) { var props = (0, _BaseComponent.default)(aprops, _Item); return _react.default.createElement(_Panel.default, props); }; _Item.defaultProps = {}; (0, _defineProperty.default)(TabBar, "Item", { get: function get() { return _Item; }, set: function set(val) { _Item = val; } }); _Item.isBnorth = true; _Item.defaultProps['b-precast'] = {};