gui-one-nutui-react-taro
Version:
京东风格的轻量级移动端 React 组件库,支持一套代码生成 H5 和小程序
98 lines (97 loc) • 4.72 kB
JavaScript
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
import _defineProperty from "@babel/runtime/helpers/defineProperty";
var _excluded = ["fixednavClass", "overlay", "visible", "navList", "activeText", "unActiveText", "position", "onChange", "onSelected", "type", "slotList", "slotBtn", "iconClassPrefix", "iconFontClassName"];
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; }
import React__default from 'react';
import classNames from 'classnames';
import { I as Icon } from './icon.taro-1d0d4fb7.js';
import { O as Overlay } from './overlay.taro-be45fed5.js';
import { c as cn } from './bem-893ad28d.js';
import { u as useConfig } from './configprovider.taro-6c7b3056.js';
import { C as ComponentDefaults } from './typings-1c5f2628.js';
var defaultProps = _objectSpread(_objectSpread({}, ComponentDefaults), {}, {
fixednavClass: 'nut-fixednav',
activeText: '',
unActiveText: '',
type: 'right',
position: {
top: 'auto',
bottom: 'auto'
}
});
var FixedNav = function FixedNav(props) {
var _useConfig = useConfig(),
locale = _useConfig.locale;
var _defaultProps$props = _objectSpread(_objectSpread({}, defaultProps), props),
fixednavClass = _defaultProps$props.fixednavClass,
overlay = _defaultProps$props.overlay,
visible = _defaultProps$props.visible,
navList = _defaultProps$props.navList,
activeText = _defaultProps$props.activeText,
unActiveText = _defaultProps$props.unActiveText,
position = _defaultProps$props.position,
onChange = _defaultProps$props.onChange,
onSelected = _defaultProps$props.onSelected,
type = _defaultProps$props.type,
slotList = _defaultProps$props.slotList,
slotBtn = _defaultProps$props.slotBtn,
iconClassPrefix = _defaultProps$props.iconClassPrefix,
iconFontClassName = _defaultProps$props.iconFontClassName,
rest = _objectWithoutProperties(_defaultProps$props, _excluded);
var b = cn('fixednav');
var classes = classNames({
active: visible
}, type, fixednavClass, b(''));
var onSelectCb = function onSelectCb(event, item) {
onSelected(item, event);
};
var onUpdateValue = function onUpdateValue() {
var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : !visible;
onChange(value);
};
return React__default.createElement("div", _objectSpread({
className: classes,
style: position
}, rest), overlay && React__default.createElement(Overlay, {
visible: visible,
zIndex: 200,
onClick: function onClick() {
return onUpdateValue(false);
}
}), React__default.createElement("div", {
className: "list"
}, slotList || React__default.createElement("div", {
className: "nut-fixednav__list"
}, navList.map(function (item, index) {
return React__default.createElement("div", {
className: "nut-fixednav__list-item",
onClick: function onClick(event) {
return onSelectCb(event, item);
},
key: item.id || index
}, React__default.createElement("img", {
src: item.icon,
alt: ""
}), React__default.createElement("div", {
className: "nut-fixednav__list-text"
}, item.text), item.num && React__default.createElement("div", {
className: "b"
}, item.num));
}))), React__default.createElement("div", {
className: "nut-fixednav__btn",
onClick: function onClick() {
return onUpdateValue();
}
}, slotBtn || React__default.createElement(React__default.Fragment, null, React__default.createElement(Icon, {
classPrefix: iconClassPrefix,
fontClassName: iconFontClassName,
name: "left",
color: "#fff"
}), React__default.createElement("div", {
className: "text"
}, visible ? activeText || locale.fixednav.activeText : unActiveText || locale.fixednav.unActiveText))));
};
FixedNav.defaultProps = defaultProps;
FixedNav.displayName = 'NutFixedNav';
export { FixedNav as F };