components APIs
- Header
- Button
- Layout
- Footer
- Text
- Box
- Card
- Table
- Loading
- Select
- Loader
- Toolbar
- Icon
- CodeInput
- BottomSheet
- InfoBlock
- LanguageToggle
- ProgressCircles
- Ripple
- Toggle
- Tag
- Input
- Paginator
- Filter
- AsyncSelect
- CatalogBigButton
- ReadMore
- ConditionalWrapper
- LastCheckedDisplay
- PriceLabel
- PageTitle
- CartTable
- CartFinalPriceTable
- LoadingSpin
- InfoModal
- ProductCard
- RecommendCoupon
- PriceVales
- NomalLayout
- Web3ReactManager
- Popups
- CurrencyInput
- TransactionErrorContent
- TransactionConfirmationModal
- ConfirmationModalContent
- DoubleCurrencyLogo
- CustomModal
- CurrencySearchModal
- CurrencyLogo
- NumericalInput
- Logo
- QuestionHelper
- ListLogo
- DataTable
- WalletModal
- CustomTable
- MinimalPositionCard
- RemoveLiquidityModal
- CustomTooltip
- ColoredSlider
- ToggleSwitch
- FormattedPriceImpact
- SettingsModal
- ConfirmSwapModal
- AdvancedSwapDetails
- AddressInput
- LineChart
- StakeSyrupModal
- AccountDetails
- BetaWarningBanner
- AreaChart
- ChartType
- TokensTable
- PairTable
- TopMovers
- BarChart
- TransactionsTable
- StakeQuickModal
- UnstakeQuickModal
- SyrupCard
- CustomMenu
- SearchInput
- CustomSwitch
- FarmCard
- BuyFiatModal
- MoonpayModal
- RewardSlider
- Swap
- AddLiquidity
- PoolFinderModal
- PoolPositionCard
- SwapTokenDetails
- SuperHeader
- GlobalStyles
- PrimaryButton
- SectionTitle
- Section
- AccentSection
- ChainSelection
- CoinSelection
- AddressSelection
- SendAction
- Buttons
- Content
- Particles
- IconButton
- NotSupported
- InputSearch
- RouteGuard
- SearchBar
- FileInput
- GovBanner
- AuthForm
- DomainDetails
- Subnav
- ColumnFilter
- ImportExport
- selectFilter
- TaggedArrayInput
- FacetFilter
- ButtonSingleLine
- TextMultiline
- ButtonSelect
- BottomSheetBehavior
- InfoButton
- BulletPointX
- BulletPointCheck
- Title
- LoadingIcon
- SelectFilterControls
- CORInputForm
- SdnInputForm
- Navbar
- HomeRoute
- AuthRoute
- DocumentDetails
- DocumentStepper
- AddGame
- Auth
- Effectiveness
- Export
- PokemonType
- Moves
- Member
- MoveSelector
- Type
- Natures
- Move
- PokeInfo
- Share
- Badges
- Status
- UpdateSW
- About
- Builder
- Calculator
- Changelog
- Import
- Pokestats
- Report
- Rules
- Settings
- Tracker
- DarkThemeProvider
- NotificationHandler
- Background
- Indicator
- StyledButton
- StyledText
- Illustration
- OnboardingSlider
- FlexList
- AppLayout
- ScrollableList
- Visualization
- DataSearch
- Region
- App
- CompareApiLegend
- CompareApiBreadcrumbs
- CompareApiLink
- CompareApiCard
- ExploreApiBreadcrumbs
- ExploreApiLink
- ExploreApiSearch
- ExploreApiConst
- ApiLoader
- RefreshButton
- Listing
- PriceModal
- ConfirmationModal
- Transition
- AutoComplete
- useInput
- Avatar
- Badge
- Breadcrumbs
- ButtonDropdown
- ButtonGroup
- Capacity
- Checkbox
- Code
- Collapse
- CssBaseline
- GeistProvider
- Description
- Display
- Divider
- Dot
- Drawer
- useModal
- Fieldset
- Grid
- Image
- Keyboard
- Link
- Modal
- Note
- Page
- Pagination
- Popover
- Progress
- Radio
- Rating
- Slider
- Snippet
- Spacer
- Spinner
- Tabs
- Textarea
- Tooltip
- Tree
- useBodyScroll
- useClasses
- useClickAway
- useClipboard
- useCurrentState
- useKeyboard
- KeyMod
- KeyCode
- useMediaQuery
- useTabs
- useToasts
- User
- useTheme
- Themes
- GeistUIThemes
- useAllThemes
- CollapsableDialog
- Map
- IPForm
- IPMenu
- Container
- Parallax
- Nav
- SEO
- BlogNav
- ExtensionCard
- MenuComp
Other Related APIs
components#AsyncSelect TypeScript Examples
The following examples show how to use
components#AsyncSelect.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: APIBasicDetailsForm.tsx From one-platform with MIT License | 4 votes |
APIBasicDetailsForm = forwardRef<HTMLDivElement, Props>(
({ onSearchOwners }: Props, ref): JSX.Element => {
const { control, trigger } = useFormContext<FormData>();
// PFE select selected value could be either string or object
// Object when its a select from the list of provided
// String when creating or deleting
const onSelectOwner = (
onChange: (...event: any[]) => void,
value: FormData['owners'],
selected: string | SelectOptionObject,
isPlaceholder?: boolean
) => {
if (isPlaceholder) return;
const isSelectedString = typeof selected === 'string';
const id =
typeof selected === 'string' ? selected : (selected as { rhatUUID: string }).rhatUUID;
const isSelected = value.findIndex(({ mid, email }) => mid === id || email === id) !== -1;
if (isSelected) {
onChange(value.filter(({ mid, email }) => mid !== id && email !== id));
} else if (isSelectedString) {
onChange([...value, { group: ApiEmailGroup.MAILING_LIST, mid: selected, email: selected }]);
} else {
onChange([
...value,
{ group: ApiEmailGroup.USER, mid: id, email: (selected as { mail: string }).mail },
]);
}
// What it does: This triggers a validation on owner field after onChange
// Why: when react hook form in blur validation mode. The multi select has a text field and a selected view component
// On clicking select onblur is triggered before onchange on select view causing the validtion to fail
// thus onchange i trigger validation again
trigger('owners', { shouldFocus: false });
};
return (
<Card ref={ref}>
<CardTitle>
<Title headingLevel="h1">Add API to Catalog</Title>
</CardTitle>
<CardBody>
<Stack hasGutter>
<StackItem>
<Controller
control={control}
name="name"
defaultValue=""
render={({ field, fieldState: { error } }) => (
<FormGroup
label="API Source name"
fieldId="api-source-name"
validated={error ? 'error' : 'success'}
helperTextInvalid={error?.message}
>
<TextInput
id="api-source-name"
placeholder="Give a name for the API datasource"
{...field}
/>
</FormGroup>
)}
/>
</StackItem>
<StackItem>
<Controller
control={control}
name="description"
defaultValue=""
render={({ field, fieldState: { error } }) => (
<FormGroup
label="Description"
fieldId="api-desc-name"
validated={error ? 'error' : 'success'}
helperTextInvalid={error?.message}
>
<TextArea
id="api-source-name"
placeholder="Give a name for the API datasource"
{...field}
/>
</FormGroup>
)}
/>
</StackItem>
<StackItem>
<Controller
control={control}
name="owners"
defaultValue={[]}
render={({ field: { onChange, value, onBlur, name }, fieldState: { error } }) => (
<FormGroup
label="Owners"
fieldId="api-owners"
validated={error ? 'error' : 'success'}
helperTextInvalid={error?.message}
>
<AsyncSelect
render={debouncePromise(onSearchOwners)}
variant={SelectVariant.typeaheadMulti}
isCreatable
// onCreateOption={(mid) =>
// onChange([...value, { group: ApiEmailGroup.MAILING_LIST, mid, email: mid }])
// }
onSelect={(_, selected, isPlaceholder) =>
onSelectOwner(onChange, value, selected, isPlaceholder)
}
name={name}
onBlur={onBlur}
selections={value.map(({ email }) => email)}
createText="Use mailing list: "
placeholderText="Search by kerberos id or add mailing list"
customFilter={() => true}
maxHeight="320px"
/>
</FormGroup>
)}
/>
</StackItem>
</Stack>
</CardBody>
</Card>
);
}
)