@fruits-chain/react-native-xiaoshu
Version:
🌈 React Native UI library
102 lines (100 loc) • 4.11 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _isNil = _interopRequireDefault(require("lodash/isNil"));
var _react = _interopRequireWildcard(require("react"));
var _index = require("../helpers/index.js");
var _index2 = require("../hooks/index.js");
var _useStateUpdate = _interopRequireDefault(require("../hooks/useStateUpdate.js"));
var _index3 = _interopRequireDefault(require("../locale/index.js"));
var _context = require("./context.js");
var _dropdownSelector = _interopRequireDefault(require("./dropdown-selector.js"));
var _dropdownText = _interopRequireDefault(require("./dropdown-text.js"));
var _jsxRuntime = require("react/jsx-runtime");
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
const DropdownItem = ({
popupTestID,
titleStyle,
titleTextStyle,
options,
duration,
zIndex,
closeOnPressOutside,
loading,
placeholder = '',
search,
onSearch,
cancellable,
...restProps
}) => {
const locale = _index3.default.useLocale().DropdownItem;
const config = (0, _context.useDropdownConfig)();
const [active, setActive] = (0, _useStateUpdate.default)(false);
const [value, onChange] = (0, _index2.useControllableValue)(restProps);
const _selectOption = (0, _react.useMemo)(() => {
if (loading) {
const x = {
label: locale.labelLoadingText,
value: null
};
return x;
}
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
let selectOption = {};
const findX = list => {
list.forEach(item => {
if (item.value === value) {
selectOption = item;
} else if (item.children?.length) {
findX(item.children);
}
});
};
findX(options);
return selectOption;
}, [loading, locale.labelLoadingText, options, value]);
duration = (0, _index.getDefaultValue)(duration, config.duration);
zIndex = (0, _index.getDefaultValue)(zIndex, config.zIndex);
closeOnPressOutside = (0, _index.getDefaultValue)(closeOnPressOutside, config.closeOnPressOutside);
const onPressText = (0, _index2.usePersistFn)(() => {
// 计算 Menu çš„ Top å’Œå…ƒç´ é«˜åº¦
// eslint-disable-next-line max-params
config.MenuRef.current?.measure((x, y, width, height, pageX, pageY) => {
setActive(true);
(0, _dropdownSelector.default)({
targetHeight: height,
targetPageY: pageY,
defaultValue: value,
options,
duration,
zIndex,
closeOnPressOutside,
activeColor: config.activeColor,
search,
onSearch,
cancellable,
testID: popupTestID
}).then(d => {
onChange(d.value, d.data[0]);
}).catch(() => {}).finally(() => {
setActive(false);
});
});
});
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_dropdownText.default, {
...restProps,
style: titleStyle,
textStyle: titleTextStyle,
title: !(0, _isNil.default)(_selectOption.label) ? _selectOption.label : placeholder,
badge: _selectOption.badge,
active: active,
onPress: onPressText,
disabled: restProps.disabled || loading
});
};
var _default = exports.default = /*#__PURE__*/(0, _react.memo)(DropdownItem);
//# sourceMappingURL=dropdown-item.js.map
;