Skip to content
Merged
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
28 changes: 7 additions & 21 deletions apps/www/src/components/playground/popover-examples.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,57 +8,43 @@ export function PopoverExamples() {
<PlaygroundLayout title='Popover'>
<Flex gap='medium' wrap='wrap'>
<Popover>
<Popover.Trigger asChild>
<Button>Top Popover</Button>
</Popover.Trigger>
<Popover.Trigger render={<Button />}>Top Popover</Popover.Trigger>
<Popover.Content side='top'>
<Text size='2'>Content appears above the trigger</Text>
</Popover.Content>
</Popover>
<Popover>
<Popover.Trigger asChild>
<Button>Right Popover</Button>
</Popover.Trigger>
<Popover.Trigger render={<Button />}>Right Popover</Popover.Trigger>
<Popover.Content side='right'>
<Text size='2'>Content appears to the right</Text>
</Popover.Content>
</Popover>
<Popover>
<Popover.Trigger asChild>
<Button>Bottom Popover</Button>
</Popover.Trigger>
<Popover.Trigger render={<Button />}>Bottom Popover</Popover.Trigger>
<Popover.Content side='bottom'>
<Text size='2'>Content appears below the trigger</Text>
</Popover.Content>
</Popover>
<Popover>
<Popover.Trigger asChild>
<Button>Left Popover</Button>
</Popover.Trigger>
<Popover.Trigger render={<Button />}>Left Popover</Popover.Trigger>
<Popover.Content side='left'>
<Text size='2'>Content appears to the left</Text>
</Popover.Content>
</Popover>
<Popover>
<Popover.Trigger asChild>
<Button>Center Aligned</Button>
</Popover.Trigger>
<Popover.Trigger render={<Button />}>Center Aligned</Popover.Trigger>
<Popover.Content align='center'>
<Text size='2'>Centered with the trigger</Text>
</Popover.Content>
</Popover>
<Popover>
<Popover.Trigger asChild>
<Button>Start Aligned</Button>
</Popover.Trigger>
<Popover.Trigger render={<Button />}>Start Aligned</Popover.Trigger>
<Popover.Content align='start'>
<Text size='2'>Aligned to the start</Text>
</Popover.Content>
</Popover>
<Popover>
<Popover.Trigger asChild>
<Button>End Aligned</Button>
</Popover.Trigger>
<Popover.Trigger render={<Button />}>End Aligned</Popover.Trigger>
<Popover.Content align='end'>
<Text size='2'>Aligned to the end</Text>
</Popover.Content>
Expand Down
23 changes: 12 additions & 11 deletions apps/www/src/components/popover-color-picker.tsx
Original file line number Diff line number Diff line change
@@ -1,21 +1,22 @@
import { Button, Flex, Popover } from '@raystack/apsara';
import { ColorPicker } from '@raystack/apsara';
import { Button, ColorPicker, Flex, Popover } from '@raystack/apsara';
import { useState } from 'react';

export default function PopoverColorPicker() {
const [color, setColor] = useState('#DA2929');

return (
<Popover>
<Popover.Trigger asChild>
<Button
style={{
width: 60,
height: 60,
background: color
}}
/>
</Popover.Trigger>
<Popover.Trigger
render={
<Button
style={{
width: 60,
height: 60,
background: color
}}
/>
}
/>
<Popover.Content>
<ColorPicker
value={color}
Expand Down
18 changes: 14 additions & 4 deletions apps/www/src/content/docs/components/alert-dialog/props.ts
Original file line number Diff line number Diff line change
Expand Up @@ -61,16 +61,26 @@ export interface AlertDialogDescriptionProps {
}

export interface AlertDialogTriggerProps {
/** Boolean to merge props onto child element */
asChild?: boolean;
/**
* Allows rendering as a different element.
* Accepts a React element or a function that receives props and returns an element.
*
* @remarks `ReactElement | function`
*/
render?: React.ReactElement;

/** Additional CSS class names */
className?: string;
}

export interface AlertDialogCloseButtonProps {
/** Boolean to merge props onto child element */
asChild?: boolean;
/**
* Allows rendering as a different element.
* Accepts a React element or a function that receives props and returns an element.
*
* @remarks `ReactElement | function`
*/
render?: React.ReactElement;

/** Additional CSS class names */
className?: string;
Expand Down
7 changes: 2 additions & 5 deletions apps/www/src/content/docs/components/color-picker/demo.ts
Original file line number Diff line number Diff line change
Expand Up @@ -48,15 +48,12 @@ export const popoverDemo = {

return (
<Popover>
<Popover.Trigger asChild>
<Button
style={{
<Popover.Trigger render={<Button style={{
width: 60,
height: 60,
background: color
}}
}} />}
/>
</Popover.Trigger>
<Popover.Content>
<ColorPicker
value={color}
Expand Down
18 changes: 14 additions & 4 deletions apps/www/src/content/docs/components/dialog/props.ts
Original file line number Diff line number Diff line change
Expand Up @@ -67,16 +67,26 @@ export interface DialogDescriptionProps {
}

export interface DialogTriggerProps {
/** Boolean to merge props onto child element */
asChild?: boolean;
/**
* Allows rendering as a different element.
* Accepts a React element or a function that receives props and returns an element.
*
* @remarks `ReactElement | function`
*/
render?: React.ReactElement;

/** Additional CSS class names */
className?: string;
}

export interface DialogCloseButtonProps {
/** Boolean to merge props onto child element */
asChild?: boolean;
/**
* Allows rendering as a different element.
* Accepts a React element or a function that receives props and returns an element.
*
* @remarks `ReactElement | function`
*/
render?: React.ReactElement;

/** Additional CSS class names */
className?: string;
Expand Down
32 changes: 15 additions & 17 deletions apps/www/src/content/docs/components/popover/demo.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,7 @@ export const getCode = (props: any) => {
const { children, ...rest } = props;
return `
<Popover>
<Popover.Trigger asChild>
<Button>Popover</Button>
</Popover.Trigger>
<Popover.Trigger render={<Button />}>Popover</Popover.Trigger>
<Popover.Content${getPropsString(rest)}>
${children}
</Popover.Content>
Expand Down Expand Up @@ -43,8 +41,8 @@ export const positionDemo = {
name: 'Top',
code: `
<Popover>
<Popover.Trigger asChild>
<Button>Top Popover</Button>
<Popover.Trigger render={<Button />}>
Top Popover
</Popover.Trigger>
<Popover.Content side="top">
<Text size="2">Content appears above the trigger</Text>
Expand All @@ -55,8 +53,8 @@ export const positionDemo = {
name: 'Right',
code: `
<Popover>
<Popover.Trigger asChild>
<Button>Right Popover</Button>
<Popover.Trigger render={<Button />}>
Right Popover
</Popover.Trigger>
<Popover.Content side="right">
<Text size="2">Content appears to the right</Text>
Expand All @@ -67,8 +65,8 @@ export const positionDemo = {
name: 'Bottom',
code: `
<Popover>
<Popover.Trigger asChild>
<Button>Bottom Popover</Button>
<Popover.Trigger render={<Button />}>
Bottom Popover
</Popover.Trigger>
<Popover.Content side="bottom">
<Text size="2">Content appears below the trigger</Text>
Expand All @@ -79,8 +77,8 @@ export const positionDemo = {
name: 'Left',
code: `
<Popover>
<Popover.Trigger asChild>
<Button>Left Popover</Button>
<Popover.Trigger render={<Button />}>
Left Popover
</Popover.Trigger>
<Popover.Content side="left">
<Text size="2">Content appears to the left</Text>
Expand All @@ -96,8 +94,8 @@ export const alignDemo = {
name: 'Center',
code: `
<Popover>
<Popover.Trigger asChild>
<Button>Center Aligned</Button>
<Popover.Trigger render={<Button />}>
Center Aligned
</Popover.Trigger>
<Popover.Content align="center">
<Text size="2">Centered with the trigger</Text>
Expand All @@ -108,8 +106,8 @@ export const alignDemo = {
name: 'Start',
code: `
<Popover>
<Popover.Trigger asChild>
<Button>Start Aligned</Button>
<Popover.Trigger render={<Button />}>
Start Aligned
</Popover.Trigger>
<Popover.Content align="start">
<Text size="2">Aligned to the start</Text>
Expand All @@ -120,8 +118,8 @@ export const alignDemo = {
name: 'End',
code: `
<Popover>
<Popover.Trigger asChild>
<Button>End Aligned</Button>
<Popover.Trigger render={<Button />}>
End Aligned
</Popover.Trigger>
<Popover.Content align="end">
<Text size="2">Aligned to the end</Text>
Expand Down
27 changes: 21 additions & 6 deletions apps/www/src/content/docs/components/select/props.ts
Original file line number Diff line number Diff line change
Expand Up @@ -78,22 +78,37 @@ export interface SelectGroupProps {
/** Additional CSS class names */
className?: string;

/** Boolean to merge props onto child element */
asChild?: boolean;
/**
* Allows rendering as a different element.
* Accepts a React element or a function that receives props and returns an element.
*
* @remarks `ReactElement | function`
*/
render?: React.ReactElement;
}

export interface SelectLabelProps {
/** Additional CSS class names */
className?: string;

/** Boolean to merge props onto child element */
asChild?: boolean;
/**
* Allows rendering as a different element.
* Accepts a React element or a function that receives props and returns an element.
*
* @remarks `ReactElement | function`
*/
render?: React.ReactElement;
}

export interface SelectSeparatorProps {
/** Additional CSS class names */
className?: string;

/** Boolean to merge props onto child element */
asChild?: boolean;
/**
* Allows rendering as a different element.
* Accepts a React element or a function that receives props and returns an element.
*
* @remarks `ReactElement | function`
*/
render?: React.ReactElement;
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import { MixerHorizontalIcon } from '@radix-ui/react-icons';

import { ReactNode } from 'react';
import { isValidElement, ReactNode } from 'react';
import { Button } from '../../button';
import { Flex } from '../../flex';
import { Popover } from '../../popover';
Expand Down Expand Up @@ -85,7 +85,9 @@ export function DisplaySettings<TData, TValue>({

return (
<Popover>
<Popover.Trigger asChild>{trigger}</Popover.Trigger>
<Popover.Trigger
render={isValidElement(trigger) ? trigger : <button>{trigger}</button>}
/>
<Popover.Content
className={styles['display-popover-content']}
align='end'
Expand Down
Loading