@payfit/unity-components 2.0.0 → 2.1.4
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/dist/esm/components/alert/Alert.js +41 -29
- package/dist/esm/components/alert/parts/AlertTitle.js +8 -8
- package/dist/esm/components/app-layout/AppLayout.d.ts +2 -0
- package/dist/esm/components/app-menu/parts/AppMenuFooter.js +23 -23
- package/dist/esm/components/app-menu/parts/AppMenuHeader.d.ts +1 -1
- package/dist/esm/components/app-menu/parts/AppMenuHeader.js +9 -9
- package/dist/esm/components/autocomplete/Autocomplete.d.ts +0 -9
- package/dist/esm/components/autocomplete/Autocomplete.js +54 -57
- package/dist/esm/components/autocomplete/parts/AutocompleteItem.js +8 -8
- package/dist/esm/components/avatar/Avatar.variants.js +1 -1
- package/dist/esm/components/avatar/parts/AvatarFallback.js +26 -27
- package/dist/esm/components/badge/Badge.js +1 -1
- package/dist/esm/components/breadcrumbs/Breadcrumbs.variant.js +1 -1
- package/dist/esm/components/button/Button.js +6 -6
- package/dist/esm/components/button/Button.variants.d.ts +1 -0
- package/dist/esm/components/button/Button.variants.js +22 -15
- package/dist/esm/components/card/Card.context.d.ts +5 -0
- package/dist/esm/components/card/Card.context.js +14 -0
- package/dist/esm/components/card/Card.d.ts +210 -0
- package/dist/esm/components/card/Card.js +93 -0
- package/dist/esm/components/card/parts/CardContent.d.ts +37 -0
- package/dist/esm/components/card/parts/CardContent.js +8 -0
- package/dist/esm/components/card/parts/CardTitle.d.ts +55 -0
- package/dist/esm/components/card/parts/CardTitle.js +33 -0
- package/dist/esm/components/checkbox/Checkbox.js +38 -30
- package/dist/esm/components/checkbox/Checkbox.variants.d.ts +9 -9
- package/dist/esm/components/checkbox/Checkbox.variants.js +23 -7
- package/dist/esm/components/checkbox/TanstackCheckbox.d.ts +28 -0
- package/dist/esm/components/checkbox/TanstackCheckbox.js +51 -0
- package/dist/esm/components/checkbox/parts/CheckboxIndicator.js +7 -7
- package/dist/esm/components/checkbox-field/CheckboxField.d.ts +2 -0
- package/dist/esm/components/checkbox-field/TanstackCheckboxField.d.ts +14 -0
- package/dist/esm/components/checkbox-field/TanstackCheckboxField.js +40 -0
- package/dist/esm/components/checkbox-group/TanstackCheckboxGroup.d.ts +4 -0
- package/dist/esm/components/checkbox-group/TanstackCheckboxGroup.js +37 -0
- package/dist/esm/components/checkbox-group-field/CheckboxGroupField.d.ts +2 -0
- package/dist/esm/components/checkbox-group-field/TanstackCheckGroupField.d.ts +72 -0
- package/dist/esm/components/checkbox-group-field/TanstackCheckGroupField.js +40 -0
- package/dist/esm/components/client-side-pagination/parts/PaginationNavButton.js +1 -1
- package/dist/esm/components/client-side-pagination/parts/RawPaginationLink.js +10 -10
- package/dist/esm/components/collapsible/parts/CollapsibleContent.js +5 -5
- package/dist/esm/components/collapsible/parts/CollapsibleTitle.js +8 -8
- package/dist/esm/components/data-table/DataTable.d.ts +109 -16
- package/dist/esm/components/data-table/DataTable.js +107 -93
- package/dist/esm/components/data-table/mocks/employee-data.d.ts +1 -0
- package/dist/esm/components/date-calendar/DateCalendar.js +1 -1
- package/dist/esm/components/date-calendar/parts/DateSegmentSelect.js +1 -1
- package/dist/esm/components/date-picker/DatePicker.d.ts +1 -1
- package/dist/esm/components/date-picker/DatePicker.js +59 -50
- package/dist/esm/components/date-picker/TanstackDatePicker.d.ts +22 -0
- package/dist/esm/components/date-picker/TanstackDatePicker.js +53 -0
- package/dist/esm/components/date-picker/parts/DateInput.js +4 -4
- package/dist/esm/components/date-picker-field/DatePickerField.d.ts +2 -0
- package/dist/esm/components/date-picker-field/TanstackDatePickerField.d.ts +71 -0
- package/dist/esm/components/date-picker-field/TanstackDatePickerField.js +41 -0
- package/dist/esm/components/definition-list/DefinitionList.context.d.ts +19 -0
- package/dist/esm/components/definition-list/DefinitionList.d.ts +24 -0
- package/dist/esm/components/definition-list/parts/DefinitionItem.d.ts +25 -0
- package/dist/esm/components/dialog/Dialog.d.ts +34 -22
- package/dist/esm/components/dialog/Dialog.js +90 -52
- package/dist/esm/components/dialog/parts/DialogActions.js +6 -6
- package/dist/esm/components/dialog/parts/DialogTitle.js +7 -4
- package/dist/esm/components/dialog/test-utils.d.ts +28 -0
- package/dist/esm/components/dialog/test-utils.js +78 -0
- package/dist/esm/components/error-state/ErrorState.js +7 -7
- package/dist/esm/components/filter/Filter.controls.d.ts +192 -0
- package/dist/esm/components/filter/Filter.controls.js +45 -0
- package/dist/esm/components/filter/Filter.d.ts +189 -0
- package/dist/esm/components/filter/Filter.js +147 -0
- package/dist/esm/components/filter/Filter.types.d.ts +121 -0
- package/dist/esm/components/filter/hooks/useFilterIds.d.ts +49 -0
- package/dist/esm/components/filter/hooks/useFilterIds.js +13 -0
- package/dist/esm/components/filter/hooks/useFilterState.d.ts +74 -0
- package/dist/esm/components/filter/hooks/useFilterState.js +23 -0
- package/dist/esm/components/filter/hooks/useFilterValue.d.ts +61 -0
- package/dist/esm/components/filter/hooks/useFilterValue.js +31 -0
- package/dist/esm/components/filter/parts/FilterButton.d.ts +75 -0
- package/dist/esm/components/filter/parts/FilterButton.js +55 -0
- package/dist/esm/components/filter/parts/FilterLabel.d.ts +96 -0
- package/dist/esm/components/filter/parts/FilterLabel.js +57 -0
- package/dist/esm/components/filter/parts/FilterPopover.d.ts +95 -0
- package/dist/esm/components/filter/parts/FilterPopover.js +79 -0
- package/dist/esm/components/filter/utils/value-formatters.d.ts +62 -0
- package/dist/esm/components/filter/utils/value-formatters.js +14 -0
- package/dist/esm/components/filter-toolbar/FilterToolbar.d.ts +110 -0
- package/dist/esm/components/filter-toolbar/FilterToolbar.js +172 -0
- package/dist/esm/components/filter-toolbar/FilterToolbar.types.d.ts +119 -0
- package/dist/esm/components/filter-toolbar/hooks/use-filter-toolbar-state.d.ts +96 -0
- package/dist/esm/components/filter-toolbar/hooks/use-filter-toolbar-state.js +132 -0
- package/dist/esm/components/filter-toolbar/parts/AddFilter.d.ts +63 -0
- package/dist/esm/components/filter-toolbar/parts/AddFilter.js +107 -0
- package/dist/esm/components/filter-toolbar/parts/AddFilterItem.d.ts +18 -0
- package/dist/esm/components/filter-toolbar/parts/AddFilterItem.js +18 -0
- package/dist/esm/components/filter-toolbar/utils/filter-adapters.d.ts +93 -0
- package/dist/esm/components/filter-toolbar/utils/filter-adapters.js +88 -0
- package/dist/esm/components/filter-toolbar/utils/normalize-filter-value.d.ts +24 -0
- package/dist/esm/components/filter-toolbar/utils/normalize-filter-value.js +19 -0
- package/dist/esm/components/form/Form.d.ts +2 -0
- package/dist/esm/components/form/TanstackForm.d.ts +24 -0
- package/dist/esm/components/form/TanstackForm.js +29 -0
- package/dist/esm/components/form-field/FormField.d.ts +2 -0
- package/dist/esm/components/form-field/TanstackFormField.context.d.ts +10 -0
- package/dist/esm/components/form-field/TanstackFormField.context.js +14 -0
- package/dist/esm/components/form-field/TanstackFormField.d.ts +49 -0
- package/dist/esm/components/form-field/TanstackFormField.js +46 -0
- package/dist/esm/components/form-field/parts/FormControl.d.ts +2 -0
- package/dist/esm/components/form-field/parts/FormFeedbackText.d.ts +2 -0
- package/dist/esm/components/form-field/parts/FormHelperText.d.ts +2 -0
- package/dist/esm/components/form-field/parts/FormLabel.d.ts +2 -0
- package/dist/esm/components/form-field/parts/RawFormContextualLink.d.ts +2 -0
- package/dist/esm/components/form-field/parts/TanstackFormFeedbackText.d.ts +12 -0
- package/dist/esm/components/form-field/parts/TanstackFormFeedbackText.js +32 -0
- package/dist/esm/components/form-field/parts/TanstackFormHelperText.d.ts +11 -0
- package/dist/esm/components/form-field/parts/TanstackFormHelperText.js +25 -0
- package/dist/esm/components/form-field/parts/TanstackFormLabel.d.ts +8 -0
- package/dist/esm/components/form-field/parts/TanstackFormLabel.js +26 -0
- package/dist/esm/components/form-field/parts/TanstackRawFormContextualLink.d.ts +26 -0
- package/dist/esm/components/form-field/parts/TanstackRawFormContextualLink.js +45 -0
- package/dist/esm/components/icon-button/CircularIconButton.d.ts +9 -9
- package/dist/esm/components/icon-button/CircularIconButton.js +53 -36
- package/dist/esm/components/icon-button/IconButton.variants.d.ts +1 -0
- package/dist/esm/components/icon-button/IconButton.variants.js +44 -28
- package/dist/esm/components/input/Input.js +36 -35
- package/dist/esm/components/input/TanstackInput.d.ts +22 -0
- package/dist/esm/components/input/TanstackInput.js +38 -0
- package/dist/esm/components/label/Label.js +12 -12
- package/dist/esm/components/link/RawLink.js +38 -31
- package/dist/esm/components/list-view/ListView.d.ts +56 -0
- package/dist/esm/components/list-view/ListView.fixtures.d.ts +20 -0
- package/dist/esm/components/list-view/ListView.js +44 -0
- package/dist/esm/components/list-view/parts/ListViewItemLabel.d.ts +34 -0
- package/dist/esm/components/list-view/parts/ListViewItemLabel.js +22 -0
- package/dist/esm/components/list-view/parts/ListViewItemText.d.ts +33 -0
- package/dist/esm/components/list-view/parts/ListViewItemText.js +22 -0
- package/dist/esm/components/list-view/parts/ListViewSection.d.ts +14 -0
- package/dist/esm/components/list-view/parts/ListViewSection.js +21 -0
- package/dist/esm/components/list-view/parts/RawListViewItem.d.ts +102 -0
- package/dist/esm/components/list-view/parts/RawListViewItem.js +80 -0
- package/dist/esm/components/multi-select/MultiSelect.d.ts +5 -7
- package/dist/esm/components/multi-select/MultiSelect.js +199 -176
- package/dist/esm/components/multi-select/MultiselectTypes.d.ts +114 -0
- package/dist/esm/components/multi-select/TanstackMultiSelect.d.ts +7 -0
- package/dist/esm/components/multi-select/TanstackMultiSelect.js +41 -0
- package/dist/esm/components/multi-select/parts/MultiSelectButton.d.ts +2 -0
- package/dist/esm/components/multi-select/parts/MultiSelectButton.js +62 -46
- package/dist/esm/components/multi-select/parts/MultiSelectPopover.js +15 -15
- package/dist/esm/components/multi-select-field/MultiSelectField.d.ts +45 -12
- package/dist/esm/components/multi-select-field/MultiSelectField.js +56 -66
- package/dist/esm/components/multi-select-field/TanstackMultiSelectField.d.ts +92 -0
- package/dist/esm/components/multi-select-field/TanstackMultiSelectField.js +48 -0
- package/dist/esm/components/multi-select-field/test-utils.d.ts +17 -0
- package/dist/esm/components/multi-select-field/test-utils.js +45 -0
- package/dist/esm/components/nav/parts/RawNavItem.js +6 -6
- package/dist/esm/components/navigation-card/NavigationCard.context.d.ts +31 -0
- package/dist/esm/components/navigation-card/NavigationCard.context.js +13 -0
- package/dist/esm/components/navigation-card/NavigationCard.d.ts +46 -0
- package/dist/esm/components/navigation-card/NavigationCard.js +62 -0
- package/dist/esm/components/navigation-card/NavigationCard.types.d.ts +37 -0
- package/dist/esm/components/navigation-card/NavigationCard.variants.d.ts +1147 -0
- package/dist/esm/components/navigation-card/NavigationCard.variants.js +164 -0
- package/dist/esm/components/navigation-card/parts/NavigationCardDescription.d.ts +39 -0
- package/dist/esm/components/navigation-card/parts/NavigationCardDescription.js +22 -0
- package/dist/esm/components/navigation-card/parts/NavigationCardGroup.d.ts +146 -0
- package/dist/esm/components/navigation-card/parts/NavigationCardGroup.js +93 -0
- package/dist/esm/components/navigation-card/parts/NavigationCardLabel.d.ts +32 -0
- package/dist/esm/components/navigation-card/parts/NavigationCardLabel.js +24 -0
- package/dist/esm/components/number-field/NumberField.d.ts +2 -0
- package/dist/esm/components/number-field/TanstackNumberField.d.ts +74 -0
- package/dist/esm/components/number-field/TanstackNumberField.js +44 -0
- package/dist/esm/components/number-input/NumberInput.js +31 -29
- package/dist/esm/components/number-input/TanstackNumberInput.d.ts +58 -0
- package/dist/esm/components/number-input/TanstackNumberInput.js +38 -0
- package/dist/esm/components/page/Page.js +12 -11
- package/dist/esm/components/pagination/parts/RawPaginationLink.js +22 -22
- package/dist/esm/components/pagination/parts/RawPaginationNext.js +13 -13
- package/dist/esm/components/pagination/parts/RawPaginationPrevious.js +10 -10
- package/dist/esm/components/payfit-brand/PayFitBrand.d.ts +4 -0
- package/dist/esm/components/payfit-brand/PayFitBrand.js +30 -22
- package/dist/esm/components/payfit-brand/PayFitPreprod.js +25 -25
- package/dist/esm/components/phone-number/PhoneNumberInput.d.ts +67 -0
- package/dist/esm/components/phone-number/PhoneNumberInput.js +322 -0
- package/dist/esm/components/phone-number/TanstackPhoneNumberInput.d.ts +64 -0
- package/dist/esm/components/phone-number/TanstackPhoneNumberInput.js +33 -0
- package/dist/esm/components/phone-number/parts/PhoneNumberItem.d.ts +42 -0
- package/dist/esm/components/phone-number/parts/PhoneNumberItem.js +68 -0
- package/dist/esm/components/phone-number/unknownFlag.svg.js +4 -0
- package/dist/esm/components/phone-number-field/TanstackPhoneNumberField.d.ts +15 -0
- package/dist/esm/components/phone-number-field/TanstackPhoneNumberField.js +32 -0
- package/dist/esm/components/pill/Pill.d.ts +2 -2
- package/dist/esm/components/pill/Pill.js +8 -8
- package/dist/esm/components/popover/Popover.js +6 -6
- package/dist/esm/components/promo-dialog/PromoDialog.d.ts +149 -0
- package/dist/esm/components/promo-dialog/PromoDialog.js +219 -0
- package/dist/esm/components/promo-dialog/parts/PromoDialogActions.d.ts +44 -0
- package/dist/esm/components/promo-dialog/parts/PromoDialogActions.js +29 -0
- package/dist/esm/components/promo-dialog/parts/PromoDialogContent.d.ts +43 -0
- package/dist/esm/components/promo-dialog/parts/PromoDialogContent.js +20 -0
- package/dist/esm/components/promo-dialog/parts/PromoDialogHero.d.ts +47 -0
- package/dist/esm/components/promo-dialog/parts/PromoDialogHero.js +25 -0
- package/dist/esm/components/promo-dialog/parts/PromoDialogSubtitle.d.ts +53 -0
- package/dist/esm/components/promo-dialog/parts/PromoDialogSubtitle.js +21 -0
- package/dist/esm/components/promo-dialog/parts/PromoDialogTitle.d.ts +6 -0
- package/dist/esm/components/promo-dialog/parts/PromoDialogTitle.js +18 -0
- package/dist/esm/components/radio-button-group/TanstackRadioButtonGroup.d.ts +13 -0
- package/dist/esm/components/radio-button-group/TanstackRadioButtonGroup.js +43 -0
- package/dist/esm/components/radio-button-group/parts/RadioButton.d.ts +29 -11
- package/dist/esm/components/radio-button-group/parts/RadioButton.js +53 -51
- package/dist/esm/components/radio-button-group-field/RadioButtonGroupField.d.ts +2 -0
- package/dist/esm/components/radio-button-group-field/TanstackRadioButtonGroupField.d.ts +13 -0
- package/dist/esm/components/radio-button-group-field/TanstackRadioButtonGroupField.js +38 -0
- package/dist/esm/components/search/Search.js +46 -46
- package/dist/esm/components/segmented-button-group/parts/ToggleButton.js +5 -5
- package/dist/esm/components/select/Select.d.ts +5 -4
- package/dist/esm/components/select/Select.js +53 -45
- package/dist/esm/components/select/TanstackSelect.d.ts +80 -0
- package/dist/esm/components/select/TanstackSelect.js +34 -0
- package/dist/esm/components/select/parts/SearchInput.d.ts +4 -1
- package/dist/esm/components/select/parts/SearchInput.js +49 -31
- package/dist/esm/components/select/parts/SelectButton.js +19 -17
- package/dist/esm/components/select-field/SelectField.d.ts +2 -0
- package/dist/esm/components/select-field/SelectField.js +8 -9
- package/dist/esm/components/select-field/TanstackSelectField.d.ts +124 -0
- package/dist/esm/components/select-field/TanstackSelectField.js +44 -0
- package/dist/esm/components/select-list/SelectList.d.ts +95 -0
- package/dist/esm/components/select-list/SelectList.js +79 -0
- package/dist/esm/components/select-list/SelectList.types.d.ts +29 -0
- package/dist/esm/components/select-list/constants.d.ts +36 -0
- package/dist/esm/components/select-list/constants.js +29 -0
- package/dist/esm/components/select-list/helpers.d.ts +42 -0
- package/dist/esm/components/select-list/helpers.js +48 -0
- package/dist/esm/components/select-list/hooks/useControlledSelection.d.ts +23 -0
- package/dist/esm/components/select-list/hooks/useControlledSelection.js +16 -0
- package/dist/esm/components/select-list/hooks/useSelectedFirstSorting.d.ts +23 -0
- package/dist/esm/components/select-list/hooks/useSelectedFirstSorting.js +31 -0
- package/dist/esm/components/select-list/parts/SelectListEmptyState.d.ts +8 -0
- package/dist/esm/components/select-list/parts/SelectListEmptyState.js +25 -0
- package/dist/esm/components/select-list/parts/SelectListOptGroup.d.ts +118 -0
- package/dist/esm/components/select-list/parts/SelectListOptGroup.js +28 -0
- package/dist/esm/components/select-list/parts/SelectListOption.d.ts +24 -0
- package/dist/esm/components/select-list/parts/SelectListOption.js +72 -0
- package/dist/esm/components/select-list/parts/SelectListSearchInput.d.ts +2 -0
- package/dist/esm/components/select-list/parts/SelectListSearchInput.js +43 -0
- package/dist/esm/components/select-list/parts/SelectedItemsSection.d.ts +54 -0
- package/dist/esm/components/select-list/parts/SelectedItemsSection.js +35 -0
- package/dist/esm/components/select-list/utils/partition.d.ts +13 -0
- package/dist/esm/components/select-list/utils/partition.js +9 -0
- package/dist/esm/components/selectable-button-group/SelectableButtonGroup.context.d.ts +1 -5
- package/dist/esm/components/selectable-button-group/SelectableButtonGroup.d.ts +6 -1
- package/dist/esm/components/selectable-button-group/SelectableButtonGroup.js +23 -23
- package/dist/esm/components/selectable-button-group/TanstackSelectableButtonGroup.d.ts +27 -0
- package/dist/esm/components/selectable-button-group/TanstackSelectableButtonGroup.js +34 -0
- package/dist/esm/components/selectable-button-group/parts/SelectableButton.d.ts +1 -16
- package/dist/esm/components/selectable-button-group/parts/SelectableButton.js +56 -57
- package/dist/esm/components/selectable-button-group-field/SelectableButtonGroupField.d.ts +2 -0
- package/dist/esm/components/selectable-button-group-field/TanstackSelectableButtonGroupField.d.ts +81 -0
- package/dist/esm/components/selectable-button-group-field/TanstackSelectableButtonGroupField.js +47 -0
- package/dist/esm/components/selectable-card/internals/Description.js +1 -1
- package/dist/esm/components/selectable-card/selectable-card-checkbox-group/SelectableCardCheckboxGroup.js +1 -1
- package/dist/esm/components/selectable-card/selectable-card-checkbox-group/TanstackSelectableCardCheckboxGroup.d.ts +26 -0
- package/dist/esm/components/selectable-card/selectable-card-checkbox-group/TanstackSelectableCardCheckboxGroup.js +32 -0
- package/dist/esm/components/selectable-card/selectable-card-checkbox-group/parts/SelectableCardCheckbox.js +24 -24
- package/dist/esm/components/selectable-card/selectable-card-radio-group/SelectableCardRadioGroup.d.ts +2 -0
- package/dist/esm/components/selectable-card/selectable-card-radio-group/SelectableCardRadioGroup.js +12 -14
- package/dist/esm/components/selectable-card/selectable-card-radio-group/TanstackSelectableCardRadioGroup.d.ts +28 -0
- package/dist/esm/components/selectable-card/selectable-card-radio-group/TanstackSelectableCardRadioGroup.js +32 -0
- package/dist/esm/components/selectable-card/selectable-card-radio-group/parts/RadioIndicator.js +14 -13
- package/dist/esm/components/selectable-card/selectable-card-radio-group/parts/SelectableCardRadio.js +27 -25
- package/dist/esm/components/selectable-card/selectableCard.variant.js +5 -5
- package/dist/esm/components/selectable-card-checkbox-group-field/SelectableCardCheckboxGroupField.d.ts +2 -0
- package/dist/esm/components/selectable-card-checkbox-group-field/TanstackSelectableCardCheckboxGroupField.d.ts +10 -0
- package/dist/esm/components/selectable-card-checkbox-group-field/TanstackSelectableCardCheckboxGroupField.js +38 -0
- package/dist/esm/components/selectable-card-radio-group-field/SelectableCardRadioGroupField.d.ts +2 -0
- package/dist/esm/components/selectable-card-radio-group-field/TanstackSelectableCardRadioGroupField.d.ts +10 -0
- package/dist/esm/components/selectable-card-radio-group-field/TanstackSelectableCardRadioGroupField.js +38 -0
- package/dist/esm/components/table/Table.context.d.ts +5 -0
- package/dist/esm/components/table/Table.context.js +14 -13
- package/dist/esm/components/table/Table.d.ts +93 -0
- package/dist/esm/components/table/Table.js +135 -107
- package/dist/esm/components/table/parts/TableBody.js +83 -21
- package/dist/esm/components/table/parts/TableEmptyState.js +6 -6
- package/dist/esm/components/table/parts/TableHeader.js +1 -1
- package/dist/esm/components/table/parts/TablePagination.js +1 -1
- package/dist/esm/components/table/parts/TableRow.js +1 -0
- package/dist/esm/components/tabs/Tabs.variant.d.ts +0 -6
- package/dist/esm/components/tabs/Tabs.variant.js +11 -12
- package/dist/esm/components/task-menu/parts/RawSubTask.js +26 -26
- package/dist/esm/components/task-menu/parts/RawTask.js +32 -28
- package/dist/esm/components/task-menu/parts/TaskGroup.js +30 -26
- package/dist/esm/components/task-menu/parts/task.variants.js +4 -2
- package/dist/esm/components/text/Text.d.ts +11 -1
- package/dist/esm/components/text/Text.js +41 -31
- package/dist/esm/components/text/Text.variants.d.ts +12 -0
- package/dist/esm/components/text/Text.variants.js +4 -0
- package/dist/esm/components/text-area/TanstackTextArea.d.ts +21 -0
- package/dist/esm/components/text-area/TanstackTextArea.js +35 -0
- package/dist/esm/components/text-area/TextArea.js +31 -29
- package/dist/esm/components/text-field/TanstackTextField.d.ts +79 -0
- package/dist/esm/components/text-field/TanstackTextField.js +60 -0
- package/dist/esm/components/text-field/TextField.d.ts +2 -0
- package/dist/esm/components/toast/UnityToast.js +5 -5
- package/dist/esm/components/toast/test-utils.d.ts +36 -0
- package/dist/esm/components/toast/test-utils.js +118 -0
- package/dist/esm/components/toggle-switch/TanstackToggleSwitch.d.ts +46 -0
- package/dist/esm/components/toggle-switch/TanstackToggleSwitch.js +25 -0
- package/dist/esm/components/toggle-switch/ToggleSwitch.d.ts +21 -9
- package/dist/esm/components/toggle-switch/ToggleSwitch.js +71 -32
- package/dist/esm/components/toggle-switch-field/TanstackToggleSwitchField.d.ts +11 -0
- package/dist/esm/components/toggle-switch-field/TanstackToggleSwitchField.js +34 -0
- package/dist/esm/components/toggle-switch-field/ToggleSwitchField.d.ts +2 -0
- package/dist/esm/components/toggle-switch-group/TanstackToggleSwitchGroup.d.ts +57 -0
- package/dist/esm/components/toggle-switch-group/TanstackToggleSwitchGroup.js +23 -0
- package/dist/esm/components/toggle-switch-group/ToggleSwitchGroup.js +1 -1
- package/dist/esm/components/toggle-switch-group-field/TanstackToggleSwitchGroupField.d.ts +19 -0
- package/dist/esm/components/toggle-switch-group-field/TanstackToggleSwitchGroupField.js +50 -0
- package/dist/esm/components/toggle-switch-group-field/ToggleSwitchGroupField.d.ts +2 -0
- package/dist/esm/docs/{table → examples/data}/mocks/employee-columns.d.ts +1 -1
- package/dist/esm/hooks/tanstack-form-context.d.ts +1 -0
- package/dist/esm/hooks/tanstack-form-context.js +8 -0
- package/dist/esm/hooks/use-form.d.ts +2 -0
- package/dist/esm/hooks/use-has-scroll.d.ts +71 -0
- package/dist/esm/hooks/use-has-scroll.js +75 -0
- package/dist/esm/hooks/use-tanstack-form.d.ts +369 -0
- package/dist/esm/hooks/use-tanstack-form.js +209 -0
- package/dist/esm/index.d.ts +44 -20
- package/dist/esm/index.js +457 -394
- package/dist/esm/index.storybook-testing.d.ts +3 -0
- package/dist/esm/integrations/tanstack-router/components/form-contextual-link/FormContextualLink.d.ts +6 -1
- package/dist/esm/integrations/tanstack-router/components/form-contextual-link/TanstackFormContextualLink.d.ts +43 -0
- package/dist/esm/integrations/tanstack-router/components/list-view/ListView.d.ts +34 -0
- package/dist/esm/integrations/tanstack-router/components/list-view/ListView.js +25 -0
- package/dist/esm/integrations/tanstack-router/components/list-view/parts/ListViewItem.d.ts +51 -0
- package/dist/esm/integrations/tanstack-router/components/list-view/parts/ListViewItem.js +32 -0
- package/dist/esm/integrations/tanstack-router/components/navigation-card/NavigationCard.d.ts +73 -0
- package/dist/esm/integrations/tanstack-router/components/navigation-card/NavigationCard.js +37 -0
- package/dist/esm/integrations/tanstack-router/index.d.ts +3 -0
- package/dist/esm/integrations/tanstack-router/utils/decorators.d.ts +1 -1
- package/dist/esm/integrations/tanstack-router.js +32 -26
- package/dist/esm/mocks/employees.d.ts +1 -5
- package/dist/esm/storybook-testing.js +8 -2
- package/dist/esm/storybook-utilities/previewTransform.d.ts +1 -0
- package/dist/esm/utils/scroll-detection.d.ts +77 -0
- package/dist/esm/utils/scroll-detection.js +33 -0
- package/dist/esm/utils/spacing.d.ts +63 -0
- package/dist/esm/utils/spacing.js +15 -0
- package/i18n/en-GB.json +21 -8
- package/i18n/es-ES.json +23 -10
- package/i18n/fr-FR.json +24 -11
- package/package.json +41 -42
- package/dist/esm/components/multi-select/Multiselect.types.d.ts +0 -109
- package/dist/esm/integrations/react-router/v5/UnityReactRouterV5Provider.d.ts +0 -6
- package/dist/esm/integrations/react-router/v5/UnityReactRouterV5Provider.js +0 -28
- package/dist/esm/integrations/react-router/v5/index.d.ts +0 -1
- package/dist/esm/integrations/react-router/v5.js +0 -4
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { jsx as i, jsxs as l } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef as g, useRef as w, useLayoutEffect as x } from "react";
|
|
3
|
+
import { Icon as v } from "@payfit/unity-icons";
|
|
4
|
+
import { uyTv as h } from "@payfit/unity-themes";
|
|
5
|
+
import { ListBoxItem as I } from "react-aria-components";
|
|
6
|
+
const L = h({
|
|
7
|
+
// add the component styles
|
|
8
|
+
slots: {
|
|
9
|
+
root: ["uy:group uy:focus-visible:outline-0"],
|
|
10
|
+
wrapper: [
|
|
11
|
+
"uy:p-200",
|
|
12
|
+
"uy:flex uy:gap-150",
|
|
13
|
+
"uy:transition-colors",
|
|
14
|
+
"uy:bg-surface-neutral",
|
|
15
|
+
"uy:border-b uy:border-b-solid uy:border-b-border-neutral",
|
|
16
|
+
// Hover when list is static
|
|
17
|
+
"uy:group-hover:bg-surface-neutral-hover uy:group-hover:cursor-pointer",
|
|
18
|
+
// Hover when list is interactive
|
|
19
|
+
"uy:group-data-[hovered=true]:bg-surface-neutral-hover uy:group-data-[hovered=true]:cursor-pointer",
|
|
20
|
+
// Press styles when list is interactive
|
|
21
|
+
"uy:group-data-[pressed=true]:bg-surface-neutral-pressed",
|
|
22
|
+
// Focus styles when list is interactive
|
|
23
|
+
"uy:group-data-[focus-visible=true]:bg-surface-neutral-focus uy:group-data-[focus-visible=true]:outline uy:group-data-[focus-visible=true]:-outline-offset-4 uy:group-data-[focus-visible=true]:outline-utility-focus-ring",
|
|
24
|
+
// disabled Styles when list is interactive
|
|
25
|
+
"uy:group-data-[disabled=true]:bg-surface-neutral-disabled uy:group-data-[disabled=true]:text-content-neutral-disabled uy:group-data-[disabled=true]:cursor-not-allowed",
|
|
26
|
+
// current page styles
|
|
27
|
+
'uy:group-data-[status="active"]:bg-surface-neutral-selected'
|
|
28
|
+
],
|
|
29
|
+
prefix: ["uy:grow-0"],
|
|
30
|
+
content: ["uy:flex-1 uy:typography-body-small"],
|
|
31
|
+
suffix: ["uy:grow-0 uy:flex uy:gap-100"]
|
|
32
|
+
}
|
|
33
|
+
}), V = (n, r) => {
|
|
34
|
+
const o = w(), { children: c, prefix: u, suffix: a, hideDisclosureIndicator: s, ...e } = n, {
|
|
35
|
+
root: d,
|
|
36
|
+
wrapper: f,
|
|
37
|
+
prefix: y,
|
|
38
|
+
suffix: p,
|
|
39
|
+
content: b
|
|
40
|
+
} = L(), m = !!a || !s;
|
|
41
|
+
return x(() => {
|
|
42
|
+
const t = o.current;
|
|
43
|
+
if (!t) return;
|
|
44
|
+
t.querySelector('[data-unity-slot="ListViewItemLabel"]') || !("aria-label" in e) && !("aria-labelledby" in e) && !("textValue" in e) && console.error(
|
|
45
|
+
"ListViewItem: Either a ListViewItemLabel component, an aria-label, aria-labelledby, or textValue prop is required for accessibility. Provide one to ensure screen reader users can identify the item."
|
|
46
|
+
);
|
|
47
|
+
}, [e, o]), /* @__PURE__ */ i(I, { ...e, className: d(), "data-dd-privacy": "mask", children: /* @__PURE__ */ l(
|
|
48
|
+
"div",
|
|
49
|
+
{
|
|
50
|
+
ref: (t) => {
|
|
51
|
+
o.current = t, typeof r == "function" ? r(t) : r && (r.current = t);
|
|
52
|
+
},
|
|
53
|
+
"data-unity-slot": "ListViewItem",
|
|
54
|
+
className: f(),
|
|
55
|
+
children: [
|
|
56
|
+
u && /* @__PURE__ */ i("div", { "data-unity-slot": "ListViewItem.prefix", className: y(), children: u }),
|
|
57
|
+
/* @__PURE__ */ i("div", { "data-unity-slot": "ListViewItem.content", className: b(), children: c }),
|
|
58
|
+
m && /* @__PURE__ */ l("div", { "data-unity-slot": "ListViewItem.suffix", className: p(), children: [
|
|
59
|
+
a,
|
|
60
|
+
!s && /* @__PURE__ */ i(
|
|
61
|
+
v,
|
|
62
|
+
{
|
|
63
|
+
src: "CaretRightOutlined",
|
|
64
|
+
role: "presentation",
|
|
65
|
+
size: 20,
|
|
66
|
+
color: e.isDisabled ? "content.neutral.disabled" : "content.neutral.low"
|
|
67
|
+
}
|
|
68
|
+
)
|
|
69
|
+
] })
|
|
70
|
+
]
|
|
71
|
+
}
|
|
72
|
+
) });
|
|
73
|
+
}, R = g(
|
|
74
|
+
V
|
|
75
|
+
);
|
|
76
|
+
R.displayName = "RawListViewItem";
|
|
77
|
+
export {
|
|
78
|
+
R as RawListViewItem,
|
|
79
|
+
L as listViewItem
|
|
80
|
+
};
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { MultiSelectComponent
|
|
2
|
-
declare const MultiSelectComponent: <TItem extends Record<string | number, unknown>, TItemKey extends keyof TItem, TKeyType extends TItem[TItemKey] & (string | number)>(props: MultiSelectProps<TItem, TItemKey, TKeyType>, ref: React.ForwardedRef<HTMLButtonElement>) => import("react/jsx-runtime").JSX.Element;
|
|
1
|
+
import { MultiSelectComponent } from './MultiselectTypes.js';
|
|
3
2
|
/**
|
|
4
3
|
* The MultiSelect component allows users to select multiple items from a dropdown list.
|
|
5
4
|
* The component provides two different APIs:
|
|
@@ -52,11 +51,10 @@ declare const MultiSelectComponent: <TItem extends Record<string | number, unkno
|
|
|
52
51
|
* </MultiSelect>
|
|
53
52
|
* ```
|
|
54
53
|
* @component
|
|
55
|
-
* @template
|
|
56
|
-
* @template TItemKey - The key name within TItem used as the selection value (must be a key of TItem). Applies only to the dynamic API.
|
|
57
|
-
* @template TKeyType - The type of the property at TItem[TItemKey] (must be string or number). Applies only to the dynamic API.
|
|
54
|
+
* @template TItems - The type of the items collection. Use `Set<T>` for flat lists or `Map<string, T[]>` for grouped lists. When omitted or undefined, the component uses the static API with React children.
|
|
58
55
|
* @remarks
|
|
59
56
|
* [API & Docs](https://unity-components.payfit.io/?path=/docs/inputs-multiselect--docs) • [Design Guidelines](https://www.payfit.design/24f360409/p/928776-multiselect)
|
|
60
57
|
*/
|
|
61
|
-
export declare const MultiSelect: MultiSelectComponent
|
|
62
|
-
|
|
58
|
+
export declare const MultiSelect: MultiSelectComponent & {
|
|
59
|
+
displayName: string;
|
|
60
|
+
};
|
|
@@ -1,233 +1,256 @@
|
|
|
1
|
-
import { jsx as
|
|
2
|
-
import { forwardRef as
|
|
3
|
-
import { ComboboxProvider as
|
|
1
|
+
import { jsx as f, jsxs as ie, Fragment as fe } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef as de, useMemo as I, useCallback as i, useRef as me } from "react";
|
|
3
|
+
import { ComboboxProvider as Se, SelectProvider as q, useSelectContext as ye, useStoreState as pe } from "@ariakit/react";
|
|
4
4
|
import { useComboboxFilter as he } from "./hooks/use-combobox-filter.js";
|
|
5
5
|
import { useMultiSelectionState as Ve } from "./hooks/use-multiselection-state.js";
|
|
6
|
-
import { MultiSelectContext as
|
|
7
|
-
import { MultiSelectButton as
|
|
8
|
-
import { MultiSelectPopover as
|
|
9
|
-
function
|
|
6
|
+
import { MultiSelectContext as z } from "./Multiselect.context.js";
|
|
7
|
+
import { MultiSelectButton as ge } from "./parts/MultiSelectButton.js";
|
|
8
|
+
import { MultiSelectPopover as ve } from "./parts/MultiSelectPopover.js";
|
|
9
|
+
function J(t) {
|
|
10
10
|
return t instanceof Map;
|
|
11
11
|
}
|
|
12
|
-
function
|
|
12
|
+
function Ie(t) {
|
|
13
13
|
return !Object.prototype.hasOwnProperty.call(t, "items");
|
|
14
14
|
}
|
|
15
15
|
function a(t) {
|
|
16
16
|
return String(t);
|
|
17
17
|
}
|
|
18
|
-
function
|
|
18
|
+
function b(t) {
|
|
19
19
|
return isNaN(Number(t)) ? t : Number(t);
|
|
20
20
|
}
|
|
21
|
-
function
|
|
21
|
+
function X(t) {
|
|
22
22
|
return Array.from(t, a);
|
|
23
23
|
}
|
|
24
|
-
function
|
|
25
|
-
return new Set(
|
|
24
|
+
function U(t) {
|
|
25
|
+
return new Set(X(t));
|
|
26
26
|
}
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
27
|
+
function W({
|
|
28
|
+
props: t,
|
|
29
|
+
ref: C,
|
|
30
|
+
content: r,
|
|
31
|
+
typedRenderValue: A,
|
|
32
|
+
selectedItemsForDisplay: O
|
|
33
|
+
}) {
|
|
34
|
+
const K = ye(), P = pe(K, "open"), u = me(!1), {
|
|
35
|
+
placeholder: M,
|
|
36
|
+
isDisabled: c,
|
|
37
|
+
isReadOnly: y,
|
|
38
|
+
isLoading: p,
|
|
39
|
+
isInvalid: w,
|
|
40
|
+
onClearButtonPress: x,
|
|
41
|
+
onBlur: n,
|
|
42
|
+
onFocus: R,
|
|
43
|
+
...j
|
|
44
|
+
} = t, h = i(() => {
|
|
45
|
+
P || !u.current && n && (u.current = !0, n());
|
|
46
|
+
}, [P, n]), d = i(() => {
|
|
47
|
+
u.current = !1, R?.();
|
|
48
|
+
}, [R]), V = i(() => {
|
|
49
|
+
setTimeout(() => {
|
|
50
|
+
const S = document.activeElement, g = K?.getState().contentElement;
|
|
51
|
+
g && S !== g && !g.contains(S) && !u.current && n && (u.current = !0, n());
|
|
52
|
+
}, 0);
|
|
53
|
+
}, [n, K]);
|
|
54
|
+
return /* @__PURE__ */ ie(fe, { children: [
|
|
55
|
+
/* @__PURE__ */ f(
|
|
56
|
+
ge,
|
|
57
|
+
{
|
|
58
|
+
ref: C,
|
|
59
|
+
placeholder: M,
|
|
60
|
+
isDisabled: c,
|
|
61
|
+
isReadOnly: y,
|
|
62
|
+
isLoading: p,
|
|
63
|
+
isInvalid: w,
|
|
64
|
+
renderValue: A,
|
|
65
|
+
selectedItems: O,
|
|
66
|
+
onClearButtonPress: x,
|
|
67
|
+
onBlur: h,
|
|
68
|
+
onFocus: d,
|
|
69
|
+
...j
|
|
70
|
+
}
|
|
71
|
+
),
|
|
72
|
+
/* @__PURE__ */ f(ve, { onBlur: V, children: r })
|
|
73
|
+
] });
|
|
74
|
+
}
|
|
75
|
+
const be = (t, C) => {
|
|
76
|
+
const r = Ie(t), A = (e) => typeof e == "object" && e !== null && "value" in e && (typeof e.value == "string" || typeof e.value == "number") ? e.value : typeof e == "object" && e !== null && "id" in e && (typeof e.id == "string" || typeof e.id == "number") ? e.id : typeof e == "string" || typeof e == "number" ? e : String(e), P = r ? (e) => Array.from(e).map(String).join(", ") : (e) => Array.from(e).map((o) => A(o)).join(", "), u = t, M = t, c = I(
|
|
77
|
+
() => r ? void 0 : u.items,
|
|
78
|
+
[r, u.items]
|
|
79
|
+
), y = r ? void 0 : u.getItemValue, { children: p } = r ? M : u, w = r ? void 0 : u.searchOptions, { children: x } = M, n = i(
|
|
80
|
+
(e) => r || !y ? A(e) : y(e),
|
|
81
|
+
[r, y]
|
|
82
|
+
), {
|
|
41
83
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
42
|
-
children:
|
|
84
|
+
children: R,
|
|
43
85
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
44
|
-
getItemValue:
|
|
45
|
-
value:
|
|
46
|
-
defaultValue:
|
|
47
|
-
onChange:
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
isReadOnly: D,
|
|
53
|
-
isSearchable: h,
|
|
54
|
-
placeholder: R,
|
|
55
|
-
onClearButtonPress: F,
|
|
56
|
-
renderValue: re,
|
|
57
|
-
maxVisibleItems: N = 7,
|
|
58
|
-
...B
|
|
59
|
-
} = t, ne = re ?? ee, y = d(() => n || !c ? [] : X(c) ? Array.from(c.values()).flat() : Array.from(c), [c, n]), oe = d(() => {
|
|
86
|
+
getItemValue: j,
|
|
87
|
+
value: h,
|
|
88
|
+
defaultValue: d,
|
|
89
|
+
onChange: V,
|
|
90
|
+
isSearchable: S,
|
|
91
|
+
renderValue: g,
|
|
92
|
+
maxVisibleItems: N = 7
|
|
93
|
+
} = t, Y = g ?? P, v = i(() => r || !c ? [] : J(c) ? Array.from(c.values()).flat() : Array.from(c), [c, r]), Z = i(() => {
|
|
60
94
|
if ("value" in t)
|
|
61
|
-
return
|
|
62
|
-
}, [t,
|
|
95
|
+
return h ? U(h) : /* @__PURE__ */ new Set();
|
|
96
|
+
}, [t, h]), $ = i(() => d ? U(d) : /* @__PURE__ */ new Set(), [d]), ee = i(
|
|
63
97
|
(e) => {
|
|
64
|
-
if (!
|
|
65
|
-
const
|
|
66
|
-
Array.from(e).map((
|
|
98
|
+
if (!V) return;
|
|
99
|
+
const o = new Set(
|
|
100
|
+
Array.from(e).map((s) => b(s))
|
|
67
101
|
);
|
|
68
|
-
|
|
102
|
+
V(o);
|
|
69
103
|
},
|
|
70
|
-
[
|
|
104
|
+
[V]
|
|
71
105
|
), {
|
|
72
|
-
selectedKeys:
|
|
73
|
-
selectKey:
|
|
106
|
+
selectedKeys: m,
|
|
107
|
+
selectKey: E,
|
|
74
108
|
unselectKey: T
|
|
75
109
|
} = Ve({
|
|
76
|
-
selectedKeys:
|
|
77
|
-
defaultSelectedKeys:
|
|
78
|
-
onSelectionChange:
|
|
79
|
-
}),
|
|
110
|
+
selectedKeys: Z(),
|
|
111
|
+
defaultSelectedKeys: $(),
|
|
112
|
+
onSelectionChange: ee
|
|
113
|
+
}), te = i(
|
|
80
114
|
(e) => {
|
|
81
|
-
|
|
115
|
+
E(a(e));
|
|
82
116
|
},
|
|
83
|
-
[
|
|
84
|
-
),
|
|
117
|
+
[E]
|
|
118
|
+
), re = i(
|
|
85
119
|
(e) => {
|
|
86
120
|
T(a(e));
|
|
87
121
|
},
|
|
88
122
|
[T]
|
|
89
|
-
), { setSearchQuery:
|
|
90
|
-
items:
|
|
91
|
-
extractSearchableText: (e) =>
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
const e = y();
|
|
101
|
-
return Array.from(u).map((r) => {
|
|
102
|
-
const l = e.find(
|
|
103
|
-
(o) => a(
|
|
104
|
-
s?.(o) || ""
|
|
105
|
-
) === r
|
|
123
|
+
), { setSearchQuery: ne, matchingItems: F } = he({
|
|
124
|
+
items: v(),
|
|
125
|
+
extractSearchableText: (e) => r ? [""] : [a(n(e))],
|
|
126
|
+
enabled: S,
|
|
127
|
+
searchOptions: w
|
|
128
|
+
}), oe = () => {
|
|
129
|
+
if (r) return Array.from(m);
|
|
130
|
+
const e = v();
|
|
131
|
+
return Array.from(m).map((o) => {
|
|
132
|
+
const s = e.find(
|
|
133
|
+
(l) => a(n(l)) === o
|
|
106
134
|
);
|
|
107
|
-
return
|
|
135
|
+
return s ? n(s) : b(o);
|
|
108
136
|
});
|
|
109
|
-
},
|
|
110
|
-
if (
|
|
137
|
+
}, le = () => {
|
|
138
|
+
if (r)
|
|
111
139
|
return new Set(
|
|
112
|
-
Array.from(
|
|
140
|
+
Array.from(m).map((s) => b(s))
|
|
113
141
|
);
|
|
114
|
-
const e =
|
|
115
|
-
return Array.from(
|
|
116
|
-
const
|
|
117
|
-
(
|
|
118
|
-
s?.(K) || ""
|
|
119
|
-
) === l
|
|
142
|
+
const e = v(), o = /* @__PURE__ */ new Set();
|
|
143
|
+
return Array.from(m).forEach((s) => {
|
|
144
|
+
const l = e.find(
|
|
145
|
+
(D) => a(n(D)) === s
|
|
120
146
|
);
|
|
121
|
-
|
|
122
|
-
}),
|
|
123
|
-
},
|
|
124
|
-
if (
|
|
125
|
-
return
|
|
126
|
-
},
|
|
127
|
-
|
|
147
|
+
l && o.add(l);
|
|
148
|
+
}), o;
|
|
149
|
+
}, se = () => {
|
|
150
|
+
if (d)
|
|
151
|
+
return X(d);
|
|
152
|
+
}, B = I(oe, [
|
|
153
|
+
m,
|
|
154
|
+
r,
|
|
128
155
|
n,
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
156
|
+
v
|
|
157
|
+
]), G = I(le, [
|
|
158
|
+
m,
|
|
159
|
+
r,
|
|
133
160
|
n,
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
)
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
161
|
+
v
|
|
162
|
+
]), L = I(se, [d]), _ = (e) => {
|
|
163
|
+
const o = new Set(e), s = new Set(B.map((l) => a(l)));
|
|
164
|
+
for (const l of o)
|
|
165
|
+
s.has(l) || te(b(l));
|
|
166
|
+
for (const l of s)
|
|
167
|
+
o.has(l) || re(b(l));
|
|
168
|
+
}, H = i(() => {
|
|
169
|
+
if (r)
|
|
170
|
+
return x;
|
|
171
|
+
if (!c) return null;
|
|
172
|
+
if (J(c)) {
|
|
173
|
+
const e = c;
|
|
174
|
+
return Array.from(e.entries()).map(
|
|
175
|
+
([o, s]) => {
|
|
176
|
+
const l = s.filter(
|
|
177
|
+
(D) => F.some((ue) => {
|
|
178
|
+
const ce = n(D), ae = n(ue);
|
|
179
|
+
return a(ae) === a(ce);
|
|
180
|
+
})
|
|
181
|
+
);
|
|
182
|
+
return p(o, l);
|
|
183
|
+
}
|
|
184
|
+
);
|
|
185
|
+
}
|
|
186
|
+
return F.map(
|
|
187
|
+
(e) => p(e)
|
|
150
188
|
);
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
189
|
+
}, [
|
|
190
|
+
p,
|
|
191
|
+
c,
|
|
192
|
+
F,
|
|
193
|
+
x,
|
|
194
|
+
n,
|
|
195
|
+
r
|
|
196
|
+
]), Q = I(() => H(), [H]), k = Y;
|
|
197
|
+
return S ? /* @__PURE__ */ f(Se, { resetValueOnHide: !0, setValue: ne, children: /* @__PURE__ */ f(
|
|
198
|
+
q,
|
|
159
199
|
{
|
|
160
|
-
value:
|
|
200
|
+
value: B.map(
|
|
161
201
|
(e) => a(e)
|
|
162
202
|
),
|
|
163
|
-
defaultValue:
|
|
164
|
-
setValue:
|
|
203
|
+
defaultValue: L,
|
|
204
|
+
setValue: _,
|
|
165
205
|
focusLoop: !0,
|
|
166
|
-
children: /* @__PURE__ */
|
|
167
|
-
|
|
206
|
+
children: /* @__PURE__ */ f(
|
|
207
|
+
z.Provider,
|
|
168
208
|
{
|
|
169
|
-
value: { isSearchable:
|
|
170
|
-
children:
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
renderValue: Q,
|
|
181
|
-
selectedItems: _,
|
|
182
|
-
onClearButtonPress: F,
|
|
183
|
-
...B
|
|
184
|
-
}
|
|
185
|
-
),
|
|
186
|
-
/* @__PURE__ */ i(W, { onBlur: O, children: H })
|
|
187
|
-
]
|
|
209
|
+
value: { isSearchable: S, maxVisibleItems: N, selectedKeys: m },
|
|
210
|
+
children: /* @__PURE__ */ f(
|
|
211
|
+
W,
|
|
212
|
+
{
|
|
213
|
+
props: t,
|
|
214
|
+
ref: C,
|
|
215
|
+
content: Q,
|
|
216
|
+
typedRenderValue: k,
|
|
217
|
+
selectedItemsForDisplay: G
|
|
218
|
+
}
|
|
219
|
+
)
|
|
188
220
|
}
|
|
189
221
|
)
|
|
190
222
|
}
|
|
191
|
-
) }) : /* @__PURE__ */
|
|
192
|
-
|
|
223
|
+
) }) : /* @__PURE__ */ f(
|
|
224
|
+
q,
|
|
193
225
|
{
|
|
194
|
-
value:
|
|
226
|
+
value: B.map(
|
|
195
227
|
(e) => a(e)
|
|
196
228
|
),
|
|
197
|
-
defaultValue:
|
|
198
|
-
setValue:
|
|
229
|
+
defaultValue: L,
|
|
230
|
+
setValue: _,
|
|
199
231
|
focusLoop: !0,
|
|
200
|
-
children: /* @__PURE__ */
|
|
201
|
-
|
|
232
|
+
children: /* @__PURE__ */ f(
|
|
233
|
+
z.Provider,
|
|
202
234
|
{
|
|
203
|
-
value: { isSearchable:
|
|
204
|
-
children:
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
renderValue: Q,
|
|
215
|
-
selectedItems: _,
|
|
216
|
-
onClearButtonPress: F,
|
|
217
|
-
...B
|
|
218
|
-
}
|
|
219
|
-
),
|
|
220
|
-
/* @__PURE__ */ i(W, { onBlur: O, children: H })
|
|
221
|
-
]
|
|
235
|
+
value: { isSearchable: S, maxVisibleItems: N, selectedKeys: m },
|
|
236
|
+
children: /* @__PURE__ */ f(
|
|
237
|
+
W,
|
|
238
|
+
{
|
|
239
|
+
props: t,
|
|
240
|
+
ref: C,
|
|
241
|
+
content: Q,
|
|
242
|
+
typedRenderValue: k,
|
|
243
|
+
selectedItemsForDisplay: G
|
|
244
|
+
}
|
|
245
|
+
)
|
|
222
246
|
}
|
|
223
247
|
)
|
|
224
248
|
}
|
|
225
249
|
);
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
const De = Se(
|
|
229
|
-
$
|
|
250
|
+
}, Ce = de(
|
|
251
|
+
be
|
|
230
252
|
);
|
|
253
|
+
Ce.displayName = "MultiSelect";
|
|
231
254
|
export {
|
|
232
|
-
|
|
255
|
+
Ce as MultiSelect
|
|
233
256
|
};
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { UseComboboxFilterProps } from './hooks/use-combobox-filter.js';
|
|
2
|
+
type Key = string | number;
|
|
3
|
+
/**
|
|
4
|
+
* Common props shared by all MultiSelect variants.
|
|
5
|
+
*/
|
|
6
|
+
export interface MultiSelectBaseProps {
|
|
7
|
+
/** The ID of the element */
|
|
8
|
+
id?: string;
|
|
9
|
+
/** Default content when no value is selected */
|
|
10
|
+
placeholder?: string;
|
|
11
|
+
/** Whether the select is searchable and shows a search input on top of the options */
|
|
12
|
+
isSearchable?: boolean;
|
|
13
|
+
/** Whether the select is disabled */
|
|
14
|
+
isDisabled?: boolean;
|
|
15
|
+
/** Whether the select is invalid */
|
|
16
|
+
isInvalid?: boolean;
|
|
17
|
+
/** Whether the select is read only */
|
|
18
|
+
isReadOnly?: boolean;
|
|
19
|
+
/** Whether the select is in a loading state */
|
|
20
|
+
isLoading?: boolean;
|
|
21
|
+
/** Callback when the clear button is pressed */
|
|
22
|
+
onClearButtonPress?: () => void;
|
|
23
|
+
/** Maximum number of items to show in the select button before showing a counter badge */
|
|
24
|
+
maxVisibleItems?: number;
|
|
25
|
+
/** Callback when the select is focused */
|
|
26
|
+
onFocus?: () => void;
|
|
27
|
+
/** Callback when the select is blurred */
|
|
28
|
+
onBlur?: () => void;
|
|
29
|
+
/** The ID of the element that labels this select when no visible label is provided */
|
|
30
|
+
'aria-labelledby'?: string;
|
|
31
|
+
/** The ID of the element that labels this select when no visible label is provided */
|
|
32
|
+
'aria-label'?: string;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Props for flat (non-grouped) dynamic items MultiSelect.
|
|
36
|
+
* @template TItems The type of set of items.
|
|
37
|
+
*/
|
|
38
|
+
export interface FlatSelectProps<TItems extends Set<unknown>> extends MultiSelectBaseProps {
|
|
39
|
+
/** The items to display in the select */
|
|
40
|
+
items: TItems;
|
|
41
|
+
/** Function to get the value from an item, defaults to String(item) */ getItemValue?: (item: TItems extends Set<infer U> ? U : never) => Key;
|
|
42
|
+
/** The currently selected values (controlled mode) */
|
|
43
|
+
value?: Set<Key>;
|
|
44
|
+
/** The default selected values (uncontrolled mode) */
|
|
45
|
+
defaultValue?: Set<Key>;
|
|
46
|
+
/** Callback when the selection changes */
|
|
47
|
+
onChange?: (value: Set<Key>) => void;
|
|
48
|
+
/** Function to render the selected value(s) in the button */
|
|
49
|
+
renderValue?: (value: Set<TItems extends Set<infer U> ? U : never>) => string;
|
|
50
|
+
/** Children must be a render function that returns Option components */ children: (item: TItems extends Set<infer U> ? U : never) => React.JSX.Element;
|
|
51
|
+
/** Options for filtering the items */
|
|
52
|
+
searchOptions?: UseComboboxFilterProps<TItems extends Set<infer U> ? U : never>['searchOptions'];
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Props for grouped dynamic items MultiSelect.
|
|
56
|
+
* @template TItems The type of map from group key to array of items.
|
|
57
|
+
*/
|
|
58
|
+
export interface GroupedSelectProps<TItems extends Map<string, unknown[]>> extends MultiSelectBaseProps {
|
|
59
|
+
/** The items to display in the select, grouped by category */
|
|
60
|
+
items: TItems;
|
|
61
|
+
/** Function to get the value from an item, defaults to String(item) */
|
|
62
|
+
getItemValue?: (item: TItems extends Map<string, Array<infer U>> ? U : never) => Key;
|
|
63
|
+
/** The currently selected values (controlled mode) */
|
|
64
|
+
value?: Set<Key>;
|
|
65
|
+
/** The default selected values (uncontrolled mode) */
|
|
66
|
+
defaultValue?: Set<Key>;
|
|
67
|
+
/** Callback when the selection changes */
|
|
68
|
+
onChange?: (value: Set<Key>) => void;
|
|
69
|
+
/** Function to render the selected value(s) in the button */
|
|
70
|
+
renderValue?: (value: Set<TItems extends Map<string, Array<infer U>> ? U : never>) => string;
|
|
71
|
+
/** Children must be a render function that returns OptGroup components */
|
|
72
|
+
children: (groupKey: string, items: TItems extends Map<string, Array<infer U>> ? U[] : never) => React.JSX.Element;
|
|
73
|
+
/** Options for filtering the items */
|
|
74
|
+
searchOptions?: UseComboboxFilterProps<TItems extends Map<string, Array<infer U>> ? U : never>['searchOptions'];
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Props for static MultiSelect API (all items are defined via React children).
|
|
78
|
+
*/
|
|
79
|
+
export interface StaticItemsProps<TItem = Key> extends MultiSelectBaseProps {
|
|
80
|
+
/** The items to display in the select (for dynamic API) */
|
|
81
|
+
items?: never;
|
|
82
|
+
/** Function to get the value from an item, defaults to String(item) */
|
|
83
|
+
getItemValue?: never;
|
|
84
|
+
/** The currently selected values (controlled mode) */
|
|
85
|
+
value?: Set<TItem>;
|
|
86
|
+
/** The default selected values (uncontrolled mode) */
|
|
87
|
+
defaultValue?: Set<TItem>;
|
|
88
|
+
/** Callback when the selection changes */
|
|
89
|
+
onChange?: (value: Set<TItem>) => void;
|
|
90
|
+
/** Function to render the selected value(s) in the button */
|
|
91
|
+
renderValue?: (value: Set<TItem>) => string;
|
|
92
|
+
/** Children must be Option components */
|
|
93
|
+
children: React.ReactNode;
|
|
94
|
+
/** Options for filtering the items */
|
|
95
|
+
searchOptions?: UseComboboxFilterProps<TItem>['searchOptions'];
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Helper type to simplify usage for dynamic MultiSelect props.
|
|
99
|
+
* Picks flat or grouped variant depending on items type.
|
|
100
|
+
*/
|
|
101
|
+
export type DynamicMultiSelectProps<TItems = Set<unknown> | Map<string, unknown[]>> = TItems extends Set<unknown> ? FlatSelectProps<TItems> : TItems extends Map<string, unknown[]> ? GroupedSelectProps<TItems> : never;
|
|
102
|
+
/**
|
|
103
|
+
* Top-level MultiSelect props type, picks static or dynamic variant as appropriate.
|
|
104
|
+
*/
|
|
105
|
+
export type MultiSelectProps<TItems = Set<unknown> | Map<string, unknown[]> | undefined> = TItems extends undefined ? StaticItemsProps : DynamicMultiSelectProps<TItems>;
|
|
106
|
+
/**
|
|
107
|
+
* MultiSelect component type signature.
|
|
108
|
+
*/
|
|
109
|
+
export type MultiSelectComponent = <TItems = undefined>(props: MultiSelectProps<TItems> & {
|
|
110
|
+
ref?: React.ForwardedRef<HTMLButtonElement>;
|
|
111
|
+
} & {
|
|
112
|
+
displayName?: string;
|
|
113
|
+
}) => React.JSX.Element;
|
|
114
|
+
export {};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { MultiSelectComponent, MultiSelectProps } from './MultiselectTypes.js';
|
|
2
|
+
export type TanstackMultiSelectProps<TItems = undefined> = Omit<MultiSelectProps<TItems>, 'value' | 'defaultValue' | 'onChange' | 'onBlur' | 'isInvalid'> & {
|
|
3
|
+
children?: MultiSelectProps<TItems>['children'];
|
|
4
|
+
};
|
|
5
|
+
export declare const TanstackMultiSelect: MultiSelectComponent & {
|
|
6
|
+
displayName: string;
|
|
7
|
+
};
|