Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -196,10 +196,28 @@ If you don't do this, the props for `MyBox` are all inferred as `Record<string,

Some specific props have been removed from components:

- `error` prop from `Accordion` component
- `noBorder` prop from `IconButton`
- `active` prop from `PageLink`
- `showBullet` from `Status`
#### `Accordion` component

- `error` prop is no longer supported

#### `IconButton` component

- `noBorder` prop is no longer supported
- To achieve the same effect, use styled-components:

```tsx
const IconButtonWithoutBorder = styled(IconButton)`
border: 0;
`;
```

#### `PageLink` component

- `active` prop has been removed

#### `Status` component

- `showBullet` prop has been removed

### Removed CMS specific components

Expand Down
60 changes: 24 additions & 36 deletions docs/stories/02-primitives/Combobox.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -74,30 +74,26 @@ The `Combobox` primitive is composed of the following components:
and is combined in the following way:

```tsx
() => {
return (
<Combobox.Root>
<Combobox.Trigger>
<Combobox.TextInput placeholder="Pick me" />
<Combobox.Icon />
</Combobox.Trigger>
<Combobox.Portal>
<Combobox.Content>
<Combobox.Viewport>
<Combobox.Item value="1">
<Combobox.ItemText>Option 1</Combobox.ItemText>
<Combobox.ItemIndicator>
<Check />
</Combobox.ItemIndicator>
</Combobox.Item>
<Combobox.NoValueFound>No value found</Combobox.NoValueFound>
<Combobox.CreateItem>Create a new value</Combobox.CreateItem>
</Combobox.Viewport>
</Combobox.Content>
</Combobox.Portal>
</Combobox.Root>
);
};
<Combobox.Root>
<Combobox.Trigger>
<Combobox.TextInput placeholder="Pick me" />
<Combobox.Icon />
</Combobox.Trigger>
<Combobox.Portal>
<Combobox.Content>
<Combobox.Viewport>
<Combobox.Item value="1">
<Combobox.ItemText>Option 1</Combobox.ItemText>
<Combobox.ItemIndicator>
<Check />
</Combobox.ItemIndicator>
</Combobox.Item>
<Combobox.NoValueFound>No value found</Combobox.NoValueFound>
<Combobox.CreateItem>Create a new value</Combobox.CreateItem>
</Combobox.Viewport>
</Combobox.Content>
</Combobox.Portal>
</Combobox.Root>
```

## API Reference
Expand All @@ -106,30 +102,22 @@ and is combined in the following way:

<ArgTypes of={Combobox.Root} />

### Trigger

### TextInput

### Icon

### Portal

<ArgTypes of={Combobox.Portal} />

### Content

### Viewport
<ArgTypes of={Combobox.Content} />

### Item

### ItemText

### ItemIndicator

### NoValueFound
<ArgTypes of={Combobox.Item} />

### CreateItem

<ArgTypes of={Combobox.CreateItem} />

## Accessibility

Adheres to the [Combobox WAI-ARIA design pattern](https://www.w3.org/WAI/ARIA/apg/patterns/combobox/)
Expand Down
203 changes: 199 additions & 4 deletions docs/stories/02-primitives/Combobox.stories.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { Meta, StoryObj } from '@storybook/react-vite';
import { Check } from '@strapi/icons';
import { Combobox } from '@strapi/ui-primitives';
import { default as outdent } from 'outdent';

const meta: Meta<typeof Combobox.Root> = {
title: 'Primitives/Combobox',
Expand Down Expand Up @@ -51,7 +52,51 @@ export const BasicUsage = {
</Combobox.Portal>
</Combobox.Root>
),

parameters: {
docs: {
source: {
type: 'code',
code: outdent`
<Combobox.Root>
<Combobox.Trigger>
<Combobox.TextInput placeholder="Pick me" />
<Combobox.Icon />
</Combobox.Trigger>
<Combobox.Portal>
<Combobox.Content>
<Combobox.Viewport>
<Combobox.Item value="1">
<Combobox.ItemText>Option 1</Combobox.ItemText>
<Combobox.ItemIndicator>
<Check />
</Combobox.ItemIndicator>
</Combobox.Item>
<Combobox.Item value="2">
<Combobox.ItemText>Option 2</Combobox.ItemText>
<Combobox.ItemIndicator>
<Check />
</Combobox.ItemIndicator>
</Combobox.Item>
<Combobox.Item value="3">
<Combobox.ItemText>Option 3</Combobox.ItemText>
<Combobox.ItemIndicator>
<Check />
</Combobox.ItemIndicator>
</Combobox.Item>
<Combobox.Item value="4">
<Combobox.ItemText>Option 4</Combobox.ItemText>
<Combobox.ItemIndicator>
<Check />
</Combobox.ItemIndicator>
</Combobox.Item>
<Combobox.NoValueFound>No value</Combobox.NoValueFound>
</Combobox.Viewport>
</Combobox.Content>
</Combobox.Portal>
</Combobox.Root>`,
},
},
},
name: 'Basic Usage',
} satisfies Story;

Expand Down Expand Up @@ -101,7 +146,57 @@ export const ListAutocomplete = {
</Combobox.Portal>
</Combobox.Root>
),

parameters: {
docs: {
source: {
type: 'code',
code: outdent`
<Combobox.Root autocomplete="list">
<Combobox.Trigger>
<Combobox.TextInput placeholder="Pick me" />
<Combobox.Icon />
</Combobox.Trigger>
<Combobox.Portal>
<Combobox.Content>
<Combobox.Viewport>
<Combobox.Item value="mango">
<Combobox.ItemText>Mango</Combobox.ItemText>
<Combobox.ItemIndicator>
<Check />
</Combobox.ItemIndicator>
</Combobox.Item>
<Combobox.Item value="apple">
<Combobox.ItemText>Apple</Combobox.ItemText>
<Combobox.ItemIndicator>
<Check />
</Combobox.ItemIndicator>
</Combobox.Item>
<Combobox.Item value="Banana">
<Combobox.ItemText>Banana</Combobox.ItemText>
<Combobox.ItemIndicator>
<Check />
</Combobox.ItemIndicator>
</Combobox.Item>
<Combobox.Item value="papaya">
<Combobox.ItemText>Papaya</Combobox.ItemText>
<Combobox.ItemIndicator>
<Check />
</Combobox.ItemIndicator>
</Combobox.Item>
<Combobox.Item value="avocado">
<Combobox.ItemText>Avocado</Combobox.ItemText>
<Combobox.ItemIndicator>
<Check />
</Combobox.ItemIndicator>
</Combobox.Item>
<Combobox.NoValueFound>No value</Combobox.NoValueFound>
</Combobox.Viewport>
</Combobox.Content>
</Combobox.Portal>
</Combobox.Root>`,
},
},
},
name: 'List Autocomplete',
} satisfies Story;

Expand Down Expand Up @@ -151,7 +246,57 @@ export const BothAutocomplete = {
</Combobox.Portal>
</Combobox.Root>
),

parameters: {
docs: {
source: {
type: 'code',
code: outdent`
<Combobox.Root autocomplete="both">
<Combobox.Trigger>
<Combobox.TextInput placeholder="Pick me" />
<Combobox.Icon />
</Combobox.Trigger>
<Combobox.Portal>
<Combobox.Content>
<Combobox.Viewport>
<Combobox.Item value="1">
<Combobox.ItemText>Banana</Combobox.ItemText>
<Combobox.ItemIndicator>
<Check />
</Combobox.ItemIndicator>
</Combobox.Item>
<Combobox.Item value="4">
<Combobox.ItemText>Apples</Combobox.ItemText>
<Combobox.ItemIndicator>
<Check />
</Combobox.ItemIndicator>
</Combobox.Item>
<Combobox.Item value="2">
<Combobox.ItemText>Oranges</Combobox.ItemText>
<Combobox.ItemIndicator>
<Check />
</Combobox.ItemIndicator>
</Combobox.Item>
<Combobox.Item value="3">
<Combobox.ItemText>Kiwis</Combobox.ItemText>
<Combobox.ItemIndicator>
<Check />
</Combobox.ItemIndicator>
</Combobox.Item>
<Combobox.Item value="5">
<Combobox.ItemText>Avocado</Combobox.ItemText>
<Combobox.ItemIndicator>
<Check />
</Combobox.ItemIndicator>
</Combobox.Item>
<Combobox.NoValueFound>No value</Combobox.NoValueFound>
</Combobox.Viewport>
</Combobox.Content>
</Combobox.Portal>
</Combobox.Root>`,
},
},
},
name: 'Both Autocomplete',
} satisfies Story;

Expand Down Expand Up @@ -201,7 +346,57 @@ export const ListContainsAutocomplete = {
</Combobox.Portal>
</Combobox.Root>
),

parameters: {
docs: {
source: {
type: 'code',
code: outdent`
<Combobox.Root autocomplete={{ type: 'list', filter: 'contains' }}>
<Combobox.Trigger>
<Combobox.TextInput placeholder="Pick me" />
<Combobox.Icon />
</Combobox.Trigger>
<Combobox.Portal>
<Combobox.Content>
<Combobox.Viewport>
<Combobox.Item value="1">
<Combobox.ItemText>Banana</Combobox.ItemText>
<Combobox.ItemIndicator>
<Check />
</Combobox.ItemIndicator>
</Combobox.Item>
<Combobox.Item value="4">
<Combobox.ItemText>Apples</Combobox.ItemText>
<Combobox.ItemIndicator>
<Check />
</Combobox.ItemIndicator>
</Combobox.Item>
<Combobox.Item value="2">
<Combobox.ItemText>Oranges</Combobox.ItemText>
<Combobox.ItemIndicator>
<Check />
</Combobox.ItemIndicator>
</Combobox.Item>
<Combobox.Item value="3">
<Combobox.ItemText>Kiwis</Combobox.ItemText>
<Combobox.ItemIndicator>
<Check />
</Combobox.ItemIndicator>
</Combobox.Item>
<Combobox.Item value="5">
<Combobox.ItemText>Avocado</Combobox.ItemText>
<Combobox.ItemIndicator>
<Check />
</Combobox.ItemIndicator>
</Combobox.Item>
<Combobox.NoValueFound>No value</Combobox.NoValueFound>
</Combobox.Viewport>
</Combobox.Content>
</Combobox.Portal>
</Combobox.Root>`,
},
},
},
name: 'List Contains Autocomplete',
} satisfies Story;

Expand Down
Loading
Loading