@vellira-ui/react-native 2.30.0 → 2.31.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.
Files changed (3) hide show
  1. package/README.md +1 -1
  2. package/dist/index.js +30 -11
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -100,7 +100,7 @@ export function RoleSelect() {
100
100
  <Select
101
101
  label='Role'
102
102
  value={role}
103
- onChange={setRole}
103
+ onValueChange={setRole}
104
104
  options={[
105
105
  { label: 'Admin', value: 'admin' },
106
106
  { label: 'Editor', value: 'editor' },
package/dist/index.js CHANGED
@@ -1548,8 +1548,11 @@ function Select({
1548
1548
  description,
1549
1549
  value,
1550
1550
  defaultValue,
1551
- onChange,
1552
- options,
1551
+ onValueChange,
1552
+ options: optionsProp,
1553
+ multiple = false,
1554
+ maxSelected,
1555
+ closeOnSelect,
1553
1556
  placeholder = "Select...",
1554
1557
  size = "md",
1555
1558
  required = false,
@@ -1564,24 +1567,39 @@ function Select({
1564
1567
  }) {
1565
1568
  const { theme } = useTheme();
1566
1569
  const styles = useThemeStyles(createStyles15);
1567
- const { selectedValue, setSelectedValue, selectedOption, isOpen, setIsOpen } = useSelect({
1570
+ const options = optionsProp ?? [];
1571
+ const {
1572
+ selectedValue,
1573
+ selectedValues,
1574
+ selectedOption,
1575
+ selectedOptions,
1576
+ isOpen,
1577
+ setIsOpen,
1578
+ selectValue
1579
+ } = useSelect({
1568
1580
  value,
1569
1581
  defaultValue,
1570
- onChange,
1582
+ onValueChange,
1571
1583
  options,
1584
+ multiple,
1585
+ maxSelected,
1586
+ closeOnSelect,
1572
1587
  disabled
1573
1588
  });
1574
- const [draftValue, setDraftValue] = useState2(selectedValue);
1589
+ const resolvedSelectedValues = selectedValues ?? [];
1590
+ const resolvedSelectedOptions = selectedOptions ?? [];
1591
+ const selectedValueText = Array.isArray(selectedValue) ? selectedValue[0] ?? "" : selectedValue ?? "";
1592
+ const [draftValue, setDraftValue] = useState2(selectedValueText);
1575
1593
  const hasError = !!error;
1576
1594
  useEffect2(() => {
1577
1595
  if (isOpen) {
1578
- setDraftValue(selectedValue);
1596
+ setDraftValue(selectedValueText);
1579
1597
  }
1580
- }, [isOpen, selectedValue]);
1598
+ }, [isOpen, selectedValueText]);
1581
1599
  const resolvedLabel = accessibilityLabel ?? label ?? selectedOption?.label ?? placeholder ?? "Select";
1582
1600
  const openPicker = () => {
1583
1601
  if (disabled) return;
1584
- setDraftValue(selectedValue);
1602
+ setDraftValue(selectedValueText);
1585
1603
  setIsOpen(true);
1586
1604
  };
1587
1605
  const closePicker = () => {
@@ -1600,9 +1618,10 @@ function Select({
1600
1618
  setIsOpen(false);
1601
1619
  return;
1602
1620
  }
1603
- setSelectedValue(draftValue);
1621
+ selectValue(draftValue);
1604
1622
  setIsOpen(false);
1605
1623
  };
1624
+ const displayText = multiple && resolvedSelectedOptions.length ? resolvedSelectedOptions.map((option) => option.label).join(", ") : selectedOption?.label ?? placeholder;
1606
1625
  return /* @__PURE__ */ jsxs9(
1607
1626
  FormField,
1608
1627
  {
@@ -1616,8 +1635,8 @@ function Select({
1616
1635
  /* @__PURE__ */ jsx17(
1617
1636
  SelectTrigger,
1618
1637
  {
1619
- displayText: selectedOption?.label ?? placeholder,
1620
- isPlaceholder: !selectedOption,
1638
+ displayText,
1639
+ isPlaceholder: resolvedSelectedValues.length === 0,
1621
1640
  isOpen,
1622
1641
  size,
1623
1642
  disabled,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vellira-ui/react-native",
3
- "version": "2.30.0",
3
+ "version": "2.31.0",
4
4
  "description": "React Native components for Vellira Design System",
5
5
  "author": "Roman Bakurov",
6
6
  "license": "MIT",