UNPKG

@nayan-ui/react-native

Version:

React Native Component Library for smooth and faster mobile application development.

80 lines (79 loc) 2.58 kB
"use strict"; import React, { useMemo } from 'react'; import { ScrollView, View } from 'react-native'; import { useSafeAreaInsets } from 'react-native-safe-area-context'; import { NText } from "./NText.js"; import { Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectTrigger, SelectValue } from "./ui/select.js"; import { cn } from "../lib/utils.js"; import { jsx as _jsx, jsxs as _jsxs } from "react-native-css-interop/jsx-runtime"; export const NSelect = /*#__PURE__*/React.memo(({ label = '', selectLabel = '', placeholder = '', disabled = false, value, items, onChange, className = '', labelClassName = '', inputClassName = '' }) => { const insets = useSafeAreaInsets(); const contentInsets = useMemo(() => ({ top: insets.top, bottom: insets.bottom, left: 12, right: 12 }), [insets.top, insets.bottom]); return _jsxs(View, { className: cn('flex-1 mb-3', className), children: [label && _jsx(NText, { className: cn('mb-1', labelClassName), children: label }), _jsxs(Select, { defaultValue: value, onValueChange: onChange, disabled: disabled, children: [_jsx(SelectTrigger, { className: cn('w-full bg-card border-border', disabled && 'opacity-70'), disabled: disabled, children: _jsx(SelectValue, { className: "text-text text-sm native:text-lg", placeholder: placeholder }) }), _jsx(SelectContent, { insets: contentInsets, className: cn('w-full bg-card border-border shadow', inputClassName), children: _jsx(View, { style: { maxHeight: 550 }, children: _jsx(ScrollView, { showsVerticalScrollIndicator: true, nestedScrollEnabled: true, persistentScrollbar: false, indicatorStyle: "black", scrollIndicatorInsets: { right: 1 }, keyboardShouldPersistTaps: "handled", scrollEventThrottle: 1, children: _jsxs(SelectGroup, { children: [selectLabel && _jsx(SelectLabel, { className: "text-text", children: selectLabel }), items.map(item => _jsx(SelectItem, { className: "text-text", label: item.label, value: item.value, children: item.label }, item.value))] }) }) }) })] })] }); }); NSelect.displayName = 'NSelect'; //# sourceMappingURL=NSelect.js.map