UNPKG

taro-hooks

Version:
89 lines (88 loc) 3.54 kB
"use strict"; function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); } Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = require("tslib"); var taro_1 = require("@tarojs/taro"); var core_1 = require("@taro-hooks/core"); var shared_1 = require("@taro-hooks/shared"); var usePromise_1 = tslib_1.__importDefault(require("../usePromise")); var useApp_1 = tslib_1.__importDefault(require("../useApp")); var tool_1 = require("../utils/tool"); function useTabBar() { var memoRedDot = (0, core_1.useRef)({}); var memoVisible = (0, core_1.useRef)(true); var _ref = (0, useApp_1["default"])(), app = _ref.app; var showRedDotAsync = (0, usePromise_1["default"])(taro_1.showTabBarRedDot); var hideRedDotAsync = (0, usePromise_1["default"])(taro_1.hideTabBarRedDot); var toggleRedDot = function toggleRedDot(index) { // first is undefined. so need set visible var memoIndexRedDotState = memoRedDot.current[index]; var toggleAction = memoIndexRedDotState ? hideRedDotAsync : showRedDotAsync; return toggleAction({ index: index }).then(function (res) { memoRedDot.current[index] = !memoIndexRedDotState; return res; }); }; var showBadgeAsync = (0, usePromise_1["default"])(taro_1.setTabBarBadge); var hideBadgeAsync = (0, usePromise_1["default"])(taro_1.removeTabBarBadge); var toggleBadge = function toggleBadge(index, text) { if (text != null && text.length) return showBadgeAsync({ index: index, text: text }); return hideBadgeAsync({ index: index }); }; var showTabBarAsync = (0, usePromise_1["default"])(taro_1.showTabBar); var hideTabBarAsync = (0, usePromise_1["default"])(taro_1.hideTabBar); // must give animation define default value. h5 will error in undefined var toggle = function toggle(animation) { if (animation === void 0) { animation = false; } var toggleAction = memoVisible.current ? hideTabBarAsync : showTabBarAsync; return toggleAction({ animation: animation }).then(function (res) { memoVisible.current = !memoVisible.current; return res; }); }; var setStyle = (0, usePromise_1["default"])(taro_1.setTabBarStyle); var setItemAsync = (0, usePromise_1["default"])(taro_1.setTabBarItem); var setItem = function setItem(option, index) { var _app$config, _app$config$tabBar; if ((0, shared_1.isObject)(option) && (0, shared_1.isNumber)(index)) { return setItemAsync(_extends({}, option, { index: index })); } // if not index, set all tabbbaritem var tabbarList = app == null ? void 0 : (_app$config = app.config) == null ? void 0 : (_app$config$tabBar = _app$config.tabBar) == null ? void 0 : _app$config$tabBar.list; if (tabbarList != null && tabbarList.length) { return Promise.all(tabbarList.map(function (v, i) { return setItemAsync(_extends({}, option, { index: i })); })).then(function (_ref2) { var res = _ref2[0]; return res; }); } return Promise.reject((0, tool_1.generateGeneralFail)('setItem', 'you must set config')); }; return { toggleRedDot: toggleRedDot, toggleBadge: toggleBadge, setStyle: setStyle, setItem: setItem, toggle: toggle }; } exports["default"] = useTabBar;