taro-hooks
Version:
为 Taro 而设计的 Hooks Library
89 lines (88 loc) • 3.54 kB
JavaScript
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;
;