@fruits-chain/react-native-xiaoshu
Version:
π React Native UI library
62 lines (59 loc) β’ 2.16 kB
JavaScript
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
import React, { useMemo, useRef, memo } from 'react';
import { View } from 'react-native';
import { varCreator as varCreatorDivider } from '../divider/style';
import { getDefaultValue } from '../helpers';
import Theme from '../theme';
import { DropdownConfig } from './context';
import { varCreator, styleCreator } from './style';
/**
* DropdownMenu δΈζθεηζ¨ͺζ‘
*/
const DropdownMenu = _ref => {
let {
titleStyle,
titleTextStyle,
iconStyle,
activeColor,
direction = 'down',
duration,
zIndex = 10,
// overlay = true,
// closeOnPressOverlay = true,
closeOnPressOutside = true,
divider = true,
style,
...restProps
} = _ref;
const MenuRef = useRef(null);
const TOKENS = Theme.useThemeTokens();
const CV = Theme.createVar(TOKENS, varCreator);
const CV_DIVIDER = Theme.createVar(TOKENS, varCreatorDivider);
const STYLES = Theme.createStyle(CV, styleCreator);
activeColor = getDefaultValue(activeColor, CV.dropdown_active_color);
duration = getDefaultValue(duration, TOKENS.animation_duration_fast);
const config = useMemo(() => ({
titleStyle,
titleTextStyle,
iconStyle,
activeColor,
direction,
duration,
zIndex,
closeOnPressOutside,
MenuRef
}), [activeColor, closeOnPressOutside, direction, duration, iconStyle, titleStyle, titleTextStyle, zIndex]);
const dividerStyle = {
borderBottomColor: CV_DIVIDER.divider_color_light,
borderBottomWidth: divider ? 1 : 0
};
return /*#__PURE__*/React.createElement(DropdownConfig.Provider, {
value: config
}, /*#__PURE__*/React.createElement(View, _extends({}, restProps, {
collapsable: false,
ref: MenuRef,
style: [STYLES.menu, dividerStyle, style]
})));
};
export default /*#__PURE__*/memo(DropdownMenu);
//# sourceMappingURL=dropdown-menu.js.map