@wecareu/select 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +165 -0
- package/lib/commonjs/Select.js +272 -0
- package/lib/commonjs/Select.js.map +1 -0
- package/lib/commonjs/Select.types.js +6 -0
- package/lib/commonjs/Select.types.js.map +1 -0
- package/lib/commonjs/SelectChip.js +74 -0
- package/lib/commonjs/SelectChip.js.map +1 -0
- package/lib/commonjs/SelectDropdown.js +156 -0
- package/lib/commonjs/SelectDropdown.js.map +1 -0
- package/lib/commonjs/SelectErrorMessage.js +32 -0
- package/lib/commonjs/SelectErrorMessage.js.map +1 -0
- package/lib/commonjs/SelectIcon.js +64 -0
- package/lib/commonjs/SelectIcon.js.map +1 -0
- package/lib/commonjs/SelectOption.js +140 -0
- package/lib/commonjs/SelectOption.js.map +1 -0
- package/lib/commonjs/SelectSearch.js +79 -0
- package/lib/commonjs/SelectSearch.js.map +1 -0
- package/lib/commonjs/animations/shake.js +45 -0
- package/lib/commonjs/animations/shake.js.map +1 -0
- package/lib/commonjs/index.js +13 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/commonjs/index.stories.js +383 -0
- package/lib/commonjs/index.stories.js.map +1 -0
- package/lib/module/Select.js +265 -0
- package/lib/module/Select.js.map +1 -0
- package/lib/module/Select.types.js +2 -0
- package/lib/module/Select.types.js.map +1 -0
- package/lib/module/SelectChip.js +67 -0
- package/lib/module/SelectChip.js.map +1 -0
- package/lib/module/SelectDropdown.js +149 -0
- package/lib/module/SelectDropdown.js.map +1 -0
- package/lib/module/SelectErrorMessage.js +25 -0
- package/lib/module/SelectErrorMessage.js.map +1 -0
- package/lib/module/SelectIcon.js +57 -0
- package/lib/module/SelectIcon.js.map +1 -0
- package/lib/module/SelectOption.js +133 -0
- package/lib/module/SelectOption.js.map +1 -0
- package/lib/module/SelectSearch.js +72 -0
- package/lib/module/SelectSearch.js.map +1 -0
- package/lib/module/animations/shake.js +39 -0
- package/lib/module/animations/shake.js.map +1 -0
- package/lib/module/index.js +2 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/index.stories.js +376 -0
- package/lib/module/index.stories.js.map +1 -0
- package/lib/typescript/src/Select.d.ts +3 -0
- package/lib/typescript/src/Select.d.ts.map +1 -0
- package/lib/typescript/src/Select.types.d.ts +245 -0
- package/lib/typescript/src/Select.types.d.ts.map +1 -0
- package/lib/typescript/src/SelectChip.d.ts +3 -0
- package/lib/typescript/src/SelectChip.d.ts.map +1 -0
- package/lib/typescript/src/SelectDropdown.d.ts +3 -0
- package/lib/typescript/src/SelectDropdown.d.ts.map +1 -0
- package/lib/typescript/src/SelectErrorMessage.d.ts +3 -0
- package/lib/typescript/src/SelectErrorMessage.d.ts.map +1 -0
- package/lib/typescript/src/SelectIcon.d.ts +3 -0
- package/lib/typescript/src/SelectIcon.d.ts.map +1 -0
- package/lib/typescript/src/SelectOption.d.ts +3 -0
- package/lib/typescript/src/SelectOption.d.ts.map +1 -0
- package/lib/typescript/src/SelectSearch.d.ts +3 -0
- package/lib/typescript/src/SelectSearch.d.ts.map +1 -0
- package/lib/typescript/src/animations/shake.d.ts +32 -0
- package/lib/typescript/src/animations/shake.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +3 -0
- package/lib/typescript/src/index.d.ts.map +1 -0
- package/package.json +66 -0
- package/src/Select.tsx +338 -0
- package/src/Select.types.ts +256 -0
- package/src/SelectChip.tsx +75 -0
- package/src/SelectDropdown.tsx +184 -0
- package/src/SelectErrorMessage.tsx +31 -0
- package/src/SelectIcon.tsx +63 -0
- package/src/SelectOption.tsx +168 -0
- package/src/SelectSearch.tsx +81 -0
- package/src/animations/shake.ts +76 -0
- package/src/index.stories.tsx +336 -0
- package/src/index.tsx +2 -0
package/README.md
ADDED
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
# @wecareu/select
|
|
2
|
+
|
|
3
|
+
Controlled select component for the WeCareU Design System. Supports single and multiple selection with modal bottom sheet, search, chips display, and full validation feedback.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install @wecareu/select
|
|
9
|
+
# or
|
|
10
|
+
yarn add @wecareu/select
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
### Peer Dependencies
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
npm install @wecareu/icons @wecareu/theme @wecareu/tokens react react-native
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Usage
|
|
20
|
+
|
|
21
|
+
### Single Select
|
|
22
|
+
|
|
23
|
+
```tsx
|
|
24
|
+
import { Select } from '@wecareu/select'
|
|
25
|
+
|
|
26
|
+
const GENDER_OPTIONS = [
|
|
27
|
+
{ label: 'Female', value: 'F' },
|
|
28
|
+
{ label: 'Male', value: 'M' },
|
|
29
|
+
{ label: 'Prefer not to say', value: 'X' }
|
|
30
|
+
]
|
|
31
|
+
|
|
32
|
+
function GenderPicker() {
|
|
33
|
+
const [gender, setGender] = React.useState<string | null>(null)
|
|
34
|
+
|
|
35
|
+
return (
|
|
36
|
+
<Select
|
|
37
|
+
options={GENDER_OPTIONS}
|
|
38
|
+
value={gender}
|
|
39
|
+
onChange={setGender}
|
|
40
|
+
placeholder="Select gender"
|
|
41
|
+
clearable
|
|
42
|
+
/>
|
|
43
|
+
)
|
|
44
|
+
}
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### Single Select with Search (large list)
|
|
48
|
+
|
|
49
|
+
```tsx
|
|
50
|
+
import { Select } from '@wecareu/select'
|
|
51
|
+
|
|
52
|
+
function CountryPicker() {
|
|
53
|
+
const [country, setCountry] = React.useState<string | null>(null)
|
|
54
|
+
|
|
55
|
+
return (
|
|
56
|
+
<Select
|
|
57
|
+
options={countries}
|
|
58
|
+
value={country}
|
|
59
|
+
onChange={setCountry}
|
|
60
|
+
placeholder="Select country"
|
|
61
|
+
searchable
|
|
62
|
+
clearable
|
|
63
|
+
/>
|
|
64
|
+
)
|
|
65
|
+
}
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### Multiple Select
|
|
69
|
+
|
|
70
|
+
```tsx
|
|
71
|
+
import { Select } from '@wecareu/select'
|
|
72
|
+
|
|
73
|
+
function TagsPicker() {
|
|
74
|
+
const [tags, setTags] = React.useState<string[]>([])
|
|
75
|
+
|
|
76
|
+
return (
|
|
77
|
+
<Select
|
|
78
|
+
multiple
|
|
79
|
+
options={tagOptions}
|
|
80
|
+
value={tags}
|
|
81
|
+
onChange={setTags}
|
|
82
|
+
placeholder="Select tags"
|
|
83
|
+
clearable
|
|
84
|
+
/>
|
|
85
|
+
)
|
|
86
|
+
}
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
### With Validation
|
|
90
|
+
|
|
91
|
+
```tsx
|
|
92
|
+
import { Select } from '@wecareu/select'
|
|
93
|
+
|
|
94
|
+
function ValidatedSelect() {
|
|
95
|
+
const [value, setValue] = React.useState<string | null>(null)
|
|
96
|
+
const [isValid, setIsValid] = React.useState(true)
|
|
97
|
+
|
|
98
|
+
return (
|
|
99
|
+
<Select
|
|
100
|
+
options={options}
|
|
101
|
+
value={value}
|
|
102
|
+
onChange={setValue}
|
|
103
|
+
required
|
|
104
|
+
inputError={!isValid}
|
|
105
|
+
errorMessage="This field is required"
|
|
106
|
+
onValidation={setIsValid}
|
|
107
|
+
placeholder="Select an option"
|
|
108
|
+
/>
|
|
109
|
+
)
|
|
110
|
+
}
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
## Props
|
|
114
|
+
|
|
115
|
+
### SelectOption
|
|
116
|
+
|
|
117
|
+
| Prop | Type | Required | Description |
|
|
118
|
+
|------|------|----------|-------------|
|
|
119
|
+
| `value` | `string \| number` | Yes | Unique identifier for the option |
|
|
120
|
+
| `label` | `string` | Yes | Display text |
|
|
121
|
+
| `description` | `string` | No | Secondary text shown below label |
|
|
122
|
+
| `icon` | `IconName` | No | Icon from @wecareu/icons |
|
|
123
|
+
| `disabled` | `boolean` | No | Prevents selection |
|
|
124
|
+
|
|
125
|
+
### Select (Single)
|
|
126
|
+
|
|
127
|
+
| Prop | Type | Default | Description |
|
|
128
|
+
|------|------|---------|-------------|
|
|
129
|
+
| `value` | `string \| number \| null` | — | Selected value |
|
|
130
|
+
| `onChange` | `(value: string \| number \| null) => void` | — | Called on selection change |
|
|
131
|
+
| `options` | `SelectOption[]` | — | List of options |
|
|
132
|
+
| `placeholder` | `string` | `'Select...'` | Placeholder text |
|
|
133
|
+
| `clearable` | `boolean` | `false` | Shows clear button |
|
|
134
|
+
| `searchable` | `boolean` | `false` | Enables search inside dropdown |
|
|
135
|
+
| `disabled` | `boolean` | `false` | Blocks interaction |
|
|
136
|
+
| `readonly` | `boolean` | `false` | Blocks interaction (read-only visual) |
|
|
137
|
+
| `required` | `boolean` | `false` | Enables required validation |
|
|
138
|
+
| `inputError` | `boolean` | `false` | Forces error state with shake animation |
|
|
139
|
+
| `errorMessage` | `string` | — | Message shown in error state |
|
|
140
|
+
| `onValidation` | `(isValid: boolean) => void` | — | Validation callback |
|
|
141
|
+
| `leftIcon` | `SelectIconProps` | — | Icon on the left side |
|
|
142
|
+
| `style` | `StyleProp<ViewStyle>` | — | Container style override |
|
|
143
|
+
| `testID` | `string` | — | Test identifier |
|
|
144
|
+
|
|
145
|
+
### Select (Multiple)
|
|
146
|
+
|
|
147
|
+
Same as single select, plus:
|
|
148
|
+
|
|
149
|
+
| Prop | Type | Default | Description |
|
|
150
|
+
|------|------|---------|-------------|
|
|
151
|
+
| `multiple` | `true` | — | Enables multiple selection |
|
|
152
|
+
| `value` | `Array<string \| number>` | — | Selected values |
|
|
153
|
+
| `onChange` | `(values: Array<string \| number>) => void` | — | Called on selection change |
|
|
154
|
+
|
|
155
|
+
## Accessibility
|
|
156
|
+
|
|
157
|
+
- `accessibilityRole="combobox"` on the field
|
|
158
|
+
- `accessibilityState={{ disabled, expanded }}` reflects open state
|
|
159
|
+
- Each option has `accessibilityRole="option"` with `selected` state
|
|
160
|
+
- Modal has `accessibilityViewIsModal` set
|
|
161
|
+
- Chips have accessible remove buttons
|
|
162
|
+
|
|
163
|
+
## Theme Integration
|
|
164
|
+
|
|
165
|
+
The component uses `@wecareu/theme` tokens for all colors, spacing, radius, and typography. It supports both light and dark modes automatically through `useTheme()`.
|
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.Select = Select;
|
|
7
|
+
var _react = _interopRequireDefault(require("react"));
|
|
8
|
+
var _reactNative = require("react-native");
|
|
9
|
+
var _theme = require("@wecareu/theme");
|
|
10
|
+
var _shake = require("./animations/shake");
|
|
11
|
+
var _SelectChip = require("./SelectChip");
|
|
12
|
+
var _SelectDropdown = require("./SelectDropdown");
|
|
13
|
+
var _SelectErrorMessage = require("./SelectErrorMessage");
|
|
14
|
+
var _SelectIcon = require("./SelectIcon");
|
|
15
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
16
|
+
function Select(props) {
|
|
17
|
+
const theme = (0, _theme.useTheme)();
|
|
18
|
+
const styles = _react.default.useMemo(() => createStyles(theme), [theme]);
|
|
19
|
+
const {
|
|
20
|
+
clearable = false,
|
|
21
|
+
disabled = false,
|
|
22
|
+
errorMessage,
|
|
23
|
+
inputError = false,
|
|
24
|
+
labels,
|
|
25
|
+
leftIcon,
|
|
26
|
+
multiple,
|
|
27
|
+
onValidation,
|
|
28
|
+
options,
|
|
29
|
+
placeholder,
|
|
30
|
+
readonly = false,
|
|
31
|
+
required = false,
|
|
32
|
+
searchable = false,
|
|
33
|
+
style,
|
|
34
|
+
testID,
|
|
35
|
+
value
|
|
36
|
+
} = props;
|
|
37
|
+
if (!options || options.length === 0) {
|
|
38
|
+
console.error('[Select] The "options" prop must be a non-empty array. Received:', options);
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
const isInteractive = !(disabled || readonly);
|
|
42
|
+
const [isOpen, setIsOpen] = _react.default.useState(false);
|
|
43
|
+
const [touched, setTouched] = _react.default.useState(false);
|
|
44
|
+
const {
|
|
45
|
+
animatedStyle,
|
|
46
|
+
triggerShake
|
|
47
|
+
} = (0, _shake.useShakeAnimation)({
|
|
48
|
+
distance: theme.spacing.sm
|
|
49
|
+
});
|
|
50
|
+
const isEmpty = multiple ? value.length === 0 : value === null || value === undefined;
|
|
51
|
+
const internalHasError = _react.default.useMemo(() => {
|
|
52
|
+
if (!required || !touched) {
|
|
53
|
+
return false;
|
|
54
|
+
}
|
|
55
|
+
return isEmpty;
|
|
56
|
+
}, [isEmpty, required, touched]);
|
|
57
|
+
_react.default.useEffect(() => {
|
|
58
|
+
if (!required || !touched) {
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
onValidation?.(!internalHasError);
|
|
62
|
+
}, [internalHasError, onValidation, required, touched]);
|
|
63
|
+
const shouldShowError = inputError || internalHasError;
|
|
64
|
+
const requiredErrorMessage = labels?.requiredError ?? 'This field is required';
|
|
65
|
+
const effectiveErrorMessage = inputError ? errorMessage : internalHasError ? requiredErrorMessage : undefined;
|
|
66
|
+
const previousErrorRef = _react.default.useRef(false);
|
|
67
|
+
_react.default.useEffect(() => {
|
|
68
|
+
if (shouldShowError && !previousErrorRef.current) {
|
|
69
|
+
triggerShake();
|
|
70
|
+
}
|
|
71
|
+
previousErrorRef.current = shouldShowError;
|
|
72
|
+
}, [shouldShowError, triggerShake]);
|
|
73
|
+
const selectedValues = _react.default.useMemo(() => {
|
|
74
|
+
if (multiple) {
|
|
75
|
+
return value ?? [];
|
|
76
|
+
}
|
|
77
|
+
if (value !== null && value !== undefined) {
|
|
78
|
+
return [value];
|
|
79
|
+
}
|
|
80
|
+
return [];
|
|
81
|
+
}, [multiple, value]);
|
|
82
|
+
const selectedOptions = _react.default.useMemo(() => options.filter(o => selectedValues.includes(o.value)), [options, selectedValues]);
|
|
83
|
+
const singleLabel = _react.default.useMemo(() => {
|
|
84
|
+
if (multiple || isEmpty) {
|
|
85
|
+
return null;
|
|
86
|
+
}
|
|
87
|
+
return options.find(o => o.value === value)?.label ?? null;
|
|
88
|
+
}, [isEmpty, multiple, options, value]);
|
|
89
|
+
const handleOpen = _react.default.useCallback(() => {
|
|
90
|
+
if (!isInteractive) {
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
setTouched(true);
|
|
94
|
+
setIsOpen(true);
|
|
95
|
+
}, [isInteractive]);
|
|
96
|
+
const handleClose = _react.default.useCallback(() => {
|
|
97
|
+
setIsOpen(false);
|
|
98
|
+
}, []);
|
|
99
|
+
const handleToggleOption = _react.default.useCallback(option => {
|
|
100
|
+
if (multiple) {
|
|
101
|
+
const multiProps = props;
|
|
102
|
+
const current = multiProps.value;
|
|
103
|
+
const isSelected = current.includes(option.value);
|
|
104
|
+
const next = isSelected ? current.filter(v => v !== option.value) : [...current, option.value];
|
|
105
|
+
multiProps.onChange(next);
|
|
106
|
+
} else {
|
|
107
|
+
const singleProps = props;
|
|
108
|
+
singleProps.onChange(option.value);
|
|
109
|
+
setIsOpen(false);
|
|
110
|
+
}
|
|
111
|
+
}, [multiple, props]);
|
|
112
|
+
const handleClear = _react.default.useCallback(() => {
|
|
113
|
+
if (multiple) {
|
|
114
|
+
const multiProps = props;
|
|
115
|
+
multiProps.onChange([]);
|
|
116
|
+
} else {
|
|
117
|
+
const singleProps = props;
|
|
118
|
+
singleProps.onChange(null);
|
|
119
|
+
}
|
|
120
|
+
}, [multiple, props]);
|
|
121
|
+
const handleRemoveChip = _react.default.useCallback(optionValue => {
|
|
122
|
+
if (!multiple) {
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
const multiProps = props;
|
|
126
|
+
multiProps.onChange(multiProps.value.filter(v => v !== optionValue));
|
|
127
|
+
}, [multiple, props]);
|
|
128
|
+
const showClearButton = clearable && !isEmpty && isInteractive;
|
|
129
|
+
const renderFieldContent = () => {
|
|
130
|
+
if (multiple && selectedOptions.length > 0) {
|
|
131
|
+
return /*#__PURE__*/_react.default.createElement(_reactNative.ScrollView, {
|
|
132
|
+
horizontal: true,
|
|
133
|
+
keyboardShouldPersistTaps: "handled",
|
|
134
|
+
showsHorizontalScrollIndicator: false,
|
|
135
|
+
style: styles.chipsScroll,
|
|
136
|
+
contentContainerStyle: styles.chipsContainer
|
|
137
|
+
}, selectedOptions.map(opt => /*#__PURE__*/_react.default.createElement(_SelectChip.SelectChip, {
|
|
138
|
+
key: String(opt.value),
|
|
139
|
+
disabled: disabled,
|
|
140
|
+
label: opt.label,
|
|
141
|
+
onRemove: () => handleRemoveChip(opt.value)
|
|
142
|
+
})));
|
|
143
|
+
}
|
|
144
|
+
if (!isEmpty && singleLabel) {
|
|
145
|
+
return /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
|
|
146
|
+
numberOfLines: 1,
|
|
147
|
+
style: styles.selectedLabel
|
|
148
|
+
}, singleLabel);
|
|
149
|
+
}
|
|
150
|
+
return /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
|
|
151
|
+
numberOfLines: 1,
|
|
152
|
+
style: styles.placeholder
|
|
153
|
+
}, placeholder ?? 'Select...');
|
|
154
|
+
};
|
|
155
|
+
return /*#__PURE__*/_react.default.createElement(_reactNative.View, {
|
|
156
|
+
style: styles.wrapper
|
|
157
|
+
}, /*#__PURE__*/_react.default.createElement(_reactNative.Animated.View, {
|
|
158
|
+
accessible: false,
|
|
159
|
+
style: [styles.container, !isInteractive && styles.containerDisabled, shouldShowError && styles.containerError, animatedStyle, style],
|
|
160
|
+
testID: testID
|
|
161
|
+
}, leftIcon ? /*#__PURE__*/_react.default.createElement(_reactNative.View, {
|
|
162
|
+
style: styles.iconLeft
|
|
163
|
+
}, /*#__PURE__*/_react.default.createElement(_SelectIcon.SelectIcon, leftIcon)) : null, /*#__PURE__*/_react.default.createElement(_reactNative.Pressable, {
|
|
164
|
+
accessibilityHint: placeholder,
|
|
165
|
+
accessibilityLabel: singleLabel ?? placeholder ?? 'Select option',
|
|
166
|
+
accessibilityRole: "combobox",
|
|
167
|
+
accessibilityState: {
|
|
168
|
+
disabled: !isInteractive,
|
|
169
|
+
expanded: isOpen
|
|
170
|
+
},
|
|
171
|
+
disabled: !isInteractive,
|
|
172
|
+
onPress: handleOpen,
|
|
173
|
+
style: styles.fieldPressable
|
|
174
|
+
}, renderFieldContent()), /*#__PURE__*/_react.default.createElement(_reactNative.View, {
|
|
175
|
+
style: styles.rightIcons
|
|
176
|
+
}, showClearButton ? /*#__PURE__*/_react.default.createElement(_reactNative.Pressable, {
|
|
177
|
+
accessibilityLabel: "Clear selection",
|
|
178
|
+
accessibilityRole: "button",
|
|
179
|
+
hitSlop: 8,
|
|
180
|
+
onPress: handleClear
|
|
181
|
+
}, /*#__PURE__*/_react.default.createElement(_SelectIcon.SelectIcon, {
|
|
182
|
+
color: theme.colors.text.tertiary,
|
|
183
|
+
name: "close",
|
|
184
|
+
size: theme.spacing.md
|
|
185
|
+
})) : /*#__PURE__*/_react.default.createElement(_reactNative.Pressable, {
|
|
186
|
+
accessibilityLabel: isOpen ? 'Close options' : 'Open options',
|
|
187
|
+
accessibilityRole: "button",
|
|
188
|
+
disabled: !isInteractive,
|
|
189
|
+
hitSlop: 8,
|
|
190
|
+
onPress: handleOpen
|
|
191
|
+
}, /*#__PURE__*/_react.default.createElement(_SelectIcon.SelectIcon, {
|
|
192
|
+
color: theme.colors.text.tertiary,
|
|
193
|
+
name: isOpen ? 'chevronUp' : 'chevronDown',
|
|
194
|
+
size: theme.spacing.md
|
|
195
|
+
})))), /*#__PURE__*/_react.default.createElement(_SelectErrorMessage.SelectErrorMessage, {
|
|
196
|
+
message: shouldShowError ? effectiveErrorMessage : undefined,
|
|
197
|
+
testID: effectiveErrorMessage ? `${testID ?? 'select'}-error` : undefined
|
|
198
|
+
}), /*#__PURE__*/_react.default.createElement(_SelectDropdown.SelectDropdown, {
|
|
199
|
+
isMulti: multiple,
|
|
200
|
+
isOpen: isOpen,
|
|
201
|
+
onClose: handleClose,
|
|
202
|
+
onToggleOption: handleToggleOption,
|
|
203
|
+
options: options,
|
|
204
|
+
searchable: searchable,
|
|
205
|
+
selectedValues: selectedValues
|
|
206
|
+
}));
|
|
207
|
+
}
|
|
208
|
+
function createStyles(theme) {
|
|
209
|
+
return _reactNative.StyleSheet.create({
|
|
210
|
+
chipsContainer: {
|
|
211
|
+
alignItems: 'center',
|
|
212
|
+
flexDirection: 'row',
|
|
213
|
+
gap: theme.spacing.xs,
|
|
214
|
+
paddingVertical: 2
|
|
215
|
+
},
|
|
216
|
+
chipsScroll: {
|
|
217
|
+
flex: 1
|
|
218
|
+
},
|
|
219
|
+
container: {
|
|
220
|
+
alignItems: 'center',
|
|
221
|
+
backgroundColor: 'transparent',
|
|
222
|
+
borderColor: theme.colors.brand.primary,
|
|
223
|
+
borderRadius: theme.radius.xxl,
|
|
224
|
+
borderWidth: 1,
|
|
225
|
+
flexDirection: 'row',
|
|
226
|
+
minHeight: 48,
|
|
227
|
+
paddingHorizontal: theme.spacing.xl,
|
|
228
|
+
paddingVertical: theme.spacing.xs,
|
|
229
|
+
width: '100%'
|
|
230
|
+
},
|
|
231
|
+
containerDisabled: {
|
|
232
|
+
backgroundColor: theme.colors.surface.disabled,
|
|
233
|
+
borderColor: theme.colors.border.disabled
|
|
234
|
+
},
|
|
235
|
+
containerError: {
|
|
236
|
+
borderColor: theme.colors.status.error
|
|
237
|
+
},
|
|
238
|
+
fieldPressable: {
|
|
239
|
+
alignItems: 'center',
|
|
240
|
+
flex: 1,
|
|
241
|
+
flexDirection: 'row',
|
|
242
|
+
justifyContent: 'center',
|
|
243
|
+
minHeight: 32
|
|
244
|
+
},
|
|
245
|
+
iconLeft: {
|
|
246
|
+
marginRight: theme.spacing.xs
|
|
247
|
+
},
|
|
248
|
+
placeholder: {
|
|
249
|
+
color: theme.colors.text.tertiary,
|
|
250
|
+
flex: 1,
|
|
251
|
+
fontFamily: theme.typography.fontFamily.body,
|
|
252
|
+
lineHeight: theme.typography.lineHeight.bodySmall,
|
|
253
|
+
textAlign: 'center'
|
|
254
|
+
},
|
|
255
|
+
rightIcons: {
|
|
256
|
+
alignItems: 'center',
|
|
257
|
+
flexDirection: 'row',
|
|
258
|
+
marginLeft: theme.spacing.xs
|
|
259
|
+
},
|
|
260
|
+
selectedLabel: {
|
|
261
|
+
color: theme.colors.text.primary,
|
|
262
|
+
flex: 1,
|
|
263
|
+
fontFamily: theme.typography.fontFamily.body,
|
|
264
|
+
lineHeight: theme.typography.lineHeight.bodySmall,
|
|
265
|
+
textAlign: 'center'
|
|
266
|
+
},
|
|
267
|
+
wrapper: {
|
|
268
|
+
width: '100%'
|
|
269
|
+
}
|
|
270
|
+
});
|
|
271
|
+
}
|
|
272
|
+
//# sourceMappingURL=Select.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_theme","_shake","_SelectChip","_SelectDropdown","_SelectErrorMessage","_SelectIcon","e","__esModule","default","Select","props","theme","useTheme","styles","React","useMemo","createStyles","clearable","disabled","errorMessage","inputError","labels","leftIcon","multiple","onValidation","options","placeholder","readonly","required","searchable","style","testID","value","length","console","error","isInteractive","isOpen","setIsOpen","useState","touched","setTouched","animatedStyle","triggerShake","useShakeAnimation","distance","spacing","sm","isEmpty","undefined","internalHasError","useEffect","shouldShowError","requiredErrorMessage","requiredError","effectiveErrorMessage","previousErrorRef","useRef","current","selectedValues","selectedOptions","filter","o","includes","singleLabel","find","label","handleOpen","useCallback","handleClose","handleToggleOption","option","multiProps","isSelected","next","v","onChange","singleProps","handleClear","handleRemoveChip","optionValue","showClearButton","renderFieldContent","createElement","ScrollView","horizontal","keyboardShouldPersistTaps","showsHorizontalScrollIndicator","chipsScroll","contentContainerStyle","chipsContainer","map","opt","SelectChip","key","String","onRemove","Text","numberOfLines","selectedLabel","View","wrapper","Animated","accessible","container","containerDisabled","containerError","iconLeft","SelectIcon","Pressable","accessibilityHint","accessibilityLabel","accessibilityRole","accessibilityState","expanded","onPress","fieldPressable","rightIcons","hitSlop","color","colors","text","tertiary","name","size","md","SelectErrorMessage","message","SelectDropdown","isMulti","onClose","onToggleOption","StyleSheet","create","alignItems","flexDirection","gap","xs","paddingVertical","flex","backgroundColor","borderColor","brand","primary","borderRadius","radius","xxl","borderWidth","minHeight","paddingHorizontal","xl","width","surface","border","status","justifyContent","marginRight","fontFamily","typography","body","lineHeight","bodySmall","textAlign","marginLeft"],"sourceRoot":"..\\..\\src","sources":["Select.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"..\\..\\src","sources":["Select.types.ts"],"mappings":"","ignoreList":[]}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.SelectChip = SelectChip;
|
|
7
|
+
var _react = _interopRequireDefault(require("react"));
|
|
8
|
+
var _reactNative = require("react-native");
|
|
9
|
+
var _icons = require("@wecareu/icons");
|
|
10
|
+
var _theme = require("@wecareu/theme");
|
|
11
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
12
|
+
function SelectChip({
|
|
13
|
+
disabled,
|
|
14
|
+
label,
|
|
15
|
+
onRemove
|
|
16
|
+
}) {
|
|
17
|
+
const theme = (0, _theme.useTheme)();
|
|
18
|
+
const styles = _react.default.useMemo(() => createStyles(theme), [theme]);
|
|
19
|
+
return /*#__PURE__*/_react.default.createElement(_reactNative.View, {
|
|
20
|
+
accessibilityLabel: label,
|
|
21
|
+
accessibilityRole: "none",
|
|
22
|
+
style: [styles.chip, disabled && styles.chipDisabled]
|
|
23
|
+
}, /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
|
|
24
|
+
numberOfLines: 1,
|
|
25
|
+
style: [styles.label, disabled && styles.labelDisabled]
|
|
26
|
+
}, label), onRemove && !disabled ? /*#__PURE__*/_react.default.createElement(_reactNative.Pressable, {
|
|
27
|
+
accessibilityHint: `Remove ${label}`,
|
|
28
|
+
accessibilityLabel: `Remove ${label}`,
|
|
29
|
+
accessibilityRole: "button",
|
|
30
|
+
hitSlop: 4,
|
|
31
|
+
onPress: onRemove,
|
|
32
|
+
style: styles.removeButton
|
|
33
|
+
}, /*#__PURE__*/_react.default.createElement(_icons.Icon, {
|
|
34
|
+
color: theme.colors.brand.primary,
|
|
35
|
+
name: "close",
|
|
36
|
+
size: 10
|
|
37
|
+
})) : null);
|
|
38
|
+
}
|
|
39
|
+
function createStyles(theme) {
|
|
40
|
+
return _reactNative.StyleSheet.create({
|
|
41
|
+
chip: {
|
|
42
|
+
alignItems: 'center',
|
|
43
|
+
backgroundColor: theme.colors.surface.secondary,
|
|
44
|
+
borderColor: theme.colors.brand.primary,
|
|
45
|
+
borderRadius: theme.radius.sm,
|
|
46
|
+
borderWidth: 1,
|
|
47
|
+
flexDirection: 'row',
|
|
48
|
+
flexShrink: 1,
|
|
49
|
+
gap: 4,
|
|
50
|
+
maxWidth: 120,
|
|
51
|
+
paddingHorizontal: theme.spacing.xs,
|
|
52
|
+
paddingVertical: 2
|
|
53
|
+
},
|
|
54
|
+
chipDisabled: {
|
|
55
|
+
backgroundColor: theme.colors.surface.disabled,
|
|
56
|
+
borderColor: theme.colors.border.disabled
|
|
57
|
+
},
|
|
58
|
+
label: {
|
|
59
|
+
color: theme.colors.brand.primary,
|
|
60
|
+
flexShrink: 1,
|
|
61
|
+
fontFamily: theme.typography.fontFamily.caption,
|
|
62
|
+
fontSize: theme.typography.fontSize.xs,
|
|
63
|
+
lineHeight: theme.typography.lineHeight.labelSmall
|
|
64
|
+
},
|
|
65
|
+
labelDisabled: {
|
|
66
|
+
color: theme.colors.text.disabled
|
|
67
|
+
},
|
|
68
|
+
removeButton: {
|
|
69
|
+
alignItems: 'center',
|
|
70
|
+
justifyContent: 'center'
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=SelectChip.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_icons","_theme","e","__esModule","default","SelectChip","disabled","label","onRemove","theme","useTheme","styles","React","useMemo","createStyles","createElement","View","accessibilityLabel","accessibilityRole","style","chip","chipDisabled","Text","numberOfLines","labelDisabled","Pressable","accessibilityHint","hitSlop","onPress","removeButton","Icon","color","colors","brand","primary","name","size","StyleSheet","create","alignItems","backgroundColor","surface","secondary","borderColor","borderRadius","radius","sm","borderWidth","flexDirection","flexShrink","gap","maxWidth","paddingHorizontal","spacing","xs","paddingVertical","border","fontFamily","typography","caption","fontSize","lineHeight","labelSmall","text","justifyContent"],"sourceRoot":"..\\..\\src","sources":["SelectChip.tsx"],"mappings":"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","ignoreList":[]}
|