react-native-autocomplete-dropdown
Version:
Dropdown Item picker with search and autocomplete (typeahead) functionality for react native
80 lines (79 loc) • 3.11 kB
JavaScript
;
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