UNPKG

@antmjs/vantui

Version:

一套适用于Taro3及React的vantui组件库

167 lines (166 loc) 8.47 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _typeof = require("@babel/runtime/helpers/typeof"); Object.defineProperty(exports, "__esModule", { value: true }); exports.MiniNavBar = MiniNavBar; exports.default = void 0; var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties")); var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); var _taro = require("@tarojs/taro"); var _react = require("react"); var _components = require("@tarojs/components"); var utils = _interopRequireWildcard(require("../wxs/utils")); var _icon = require("../icon"); var _utils2 = require("../common/utils"); var computed = _interopRequireWildcard(require("./wxs")); var _jsxRuntime = require("react/jsx-runtime"); var _excluded = ["fixed", "placeholder", "border", "zIndex", "renderTitle", "homeUrl", "buttonColor", "title", "style", "className"]; function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } 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) { (0, _defineProperty2.default)(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; } function MiniNavBar(props) { var _useState = (0, _react.useState)({ height: 40, fromTop: 44, fromLeft: 7, menuHeight: 32, menuWidth: 87, screenWidth: 375 }), _useState2 = (0, _slicedToArray2.default)(_useState, 2), state = _useState2[0], setState = _useState2[1]; var _props$fixed = props.fixed, fixed = _props$fixed === void 0 ? true : _props$fixed, _props$placeholder = props.placeholder, placeholder = _props$placeholder === void 0 ? true : _props$placeholder, _props$border = props.border, border = _props$border === void 0 ? true : _props$border, zIndex = props.zIndex, renderTitle = props.renderTitle, homeUrl = props.homeUrl, _props$buttonColor = props.buttonColor, buttonColor = _props$buttonColor === void 0 ? 'white' : _props$buttonColor, title = props.title, style = props.style, className = props.className, others = (0, _objectWithoutProperties2.default)(props, _excluded); var height = state.height, fromTop = state.fromTop, fromLeft = state.fromLeft, menuHeight = state.menuHeight, menuWidth = state.menuWidth, screenWidth = state.screenWidth; var handleGoBack = (0, _react.useCallback)(function () { (0, _taro.navigateBack)({ delta: 1 }); }, []); var handleGoHome = (0, _react.useCallback)(function () { (0, _taro.reLaunch)({ url: homeUrl }); }, [homeUrl]); var _useState3 = (0, _react.useState)(false), _useState4 = (0, _slicedToArray2.default)(_useState3, 2), backButton = _useState4[0], setBackButton = _useState4[1]; var _useState5 = (0, _react.useState)(false), _useState6 = (0, _slicedToArray2.default)(_useState5, 2), homeButton = _useState6[0], setHomeButton = _useState6[1]; (0, _react.useEffect)(function () { var pages = (0, _taro.getCurrentPages)(); if (pages.length >= 1) { var ins = pages[pages.length - 1]; var url = ins.route || ins.__route__ || ins['$taroPath']; if (url !== homeUrl) { setHomeButton(true); } if (pages.length > 1) { setBackButton(true); } } }, [homeUrl]); (0, _react.useEffect)(function () { var sysInfo = (0, _utils2.getWindowInfo)(); var menuInfo = (0, _utils2.getMenuButtonBoundingClientRect)(); if (sysInfo && menuInfo) { setState({ height: (menuInfo.top - sysInfo.statusBarHeight) * 2 + menuInfo.height, fromTop: sysInfo.statusBarHeight, fromLeft: sysInfo.screenWidth - menuInfo.right, menuHeight: menuInfo.height, menuWidth: menuInfo.width, screenWidth: sysInfo.screenWidth }); } }, []); var getMiniNavbarHeight = (0, _react.useMemo)(function () { return utils.style([computed.barStyle({ zIndex: zIndex, fromTop: fromTop, height: height, fromLeft: fromLeft }) + '; ' + style]); }, [zIndex, fromTop, height, fromLeft, style]); return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, { children: [fixed && placeholder && /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.View, { style: getMiniNavbarHeight }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.View, _objectSpread(_objectSpread({ className: utils.bem('mini-nav-bar', { fixed: fixed }) + ' ' + (border ? 'van-hairline--bottom' : '') + " ".concat(className || ''), style: getMiniNavbarHeight }, others), {}, { children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_components.View, { className: "van-mini-nav-bar__content", children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_components.View, { className: "van-mini-nav-bar__left", style: { left: "".concat(fromLeft, "px") }, children: [backButton && /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.View, { className: "van-mini-nav-bar__left-menu van-mini-nav-bar__left-menu-".concat(buttonColor), onClick: handleGoBack, style: { width: "".concat(menuHeight, "px"), height: "".concat(menuHeight, "px") }, children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_icon.Icon, { name: "arrow-left", size: 40 }) }), homeButton && /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.View, { className: "van-mini-nav-bar__left-menu van-mini-nav-bar__left-menu-".concat(buttonColor), onClick: handleGoHome, style: { width: "".concat(menuHeight, "px"), height: "".concat(menuHeight, "px") }, children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_icon.Icon, { name: "wap-home", size: 40 }) })] }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.View, { className: "van-mini-nav-bar__title title-class van-ellipsis", style: { width: "".concat(screenWidth - menuWidth * 2 - fromLeft * 4, "px") }, children: title ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, { children: title }) : renderTitle }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.View, { className: "van-mini-nav-bar__right" })] }) }))] }); } var _default = MiniNavBar; exports.default = _default;