UNPKG

react-native-autocomplete-dropdown

Version:

Dropdown Item picker with search and autocomplete (typeahead) functionality for react native

80 lines (79 loc) 3.11 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Dropdown = void 0; var _react = _interopRequireWildcard(require("react")); var _reactNative = require("react-native"); var Animatable = _interopRequireWildcard(require("react-native-animatable")); var _helpers = require("./helpers"); var _theme = require("./theme"); var _jsxRuntime = require("react/jsx-runtime"); function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); } const Dropdown = exports.Dropdown = /*#__PURE__*/(0, _react.memo)(props => { const { dataSet, suggestionsListMaxHeight, renderItem, ListEmptyComponent, ItemSeparatorComponent, direction, theme, ...rest } = props; const themeName = theme || (0, _reactNative.useColorScheme)(); const styles = (0, _react.useMemo)(() => getStyles(themeName || 'light'), [themeName]); const defaultItemSeparator = (0, _react.useMemo)(() => { return () => /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, { style: styles.itemSeparator }); }, [styles.itemSeparator]); return /*#__PURE__*/(0, _jsxRuntime.jsx)(Animatable.View, { useNativeDriver: true, animation: direction === 'up' ? _helpers.fadeInUpShort : _helpers.fadeInDownShort, easing: "ease-out-quad", delay: direction === 'up' ? 150 : 0, duration: 150, style: { ...styles.listContainer, ...rest.suggestionsListContainerStyle }, children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.FlatList, { keyboardDismissMode: "on-drag", keyboardShouldPersistTaps: "handled", nestedScrollEnabled: true, data: dataSet, style: { maxHeight: suggestionsListMaxHeight }, renderItem: renderItem, keyExtractor: item => item.id, ListEmptyComponent: ListEmptyComponent, ItemSeparatorComponent: ItemSeparatorComponent ?? defaultItemSeparator, ...rest.flatListProps }) }); }); const getStyles = (themeName = 'light') => _reactNative.StyleSheet.create({ container: {}, listContainer: { backgroundColor: _theme.theme[themeName].suggestionsListBackgroundColor, width: '100%', zIndex: 9, borderRadius: 5, shadowColor: _theme.theme[themeName || 'light'].shadowColor, shadowOffset: { width: 0, height: 12 }, shadowOpacity: 0.3, shadowRadius: 15.46, elevation: 20 }, itemSeparator: { height: 1, width: '100%', backgroundColor: _theme.theme[themeName || 'light'].itemSeparatorColor } }); //# sourceMappingURL=Dropdown.js.map