mirror of
https://github.com/nextui-org/nextui.git
synced 2025-12-08 19:26:11 +00:00
* chore(root): menu and select components in progress * chore(root): merged with main * feat(menu): stories created * feat(dropdown): menu migrated to menu component * feat(select): base implementation in progress * feat(select): listbox implemented * feat(select): scroll overflow and auto scroll added * feat(select): colors & variants improved, inside placement complete, outside pending * feat(scroll-shadow): new component in progress * feat(select): scroll shadow integrated * fix(select): popover implementation, more scroll shadow stories added * feat(listbox): custom styles example added to stories * chore(listbox): overflow hidden removed * feat(select): variants and styles completed * chore(select): description story added * feat(select): more stories added * fix(select): dynamic collections inference, styles improved, more stories added * fix(select): auto scroll to selected item, scroll padding added * chore(select): scroll behavior changed to nearest * feat(select): custom item story added * fix(select): autoscroll fixed * feat(select): multi select support added * feat(select): more examples added, clean-package modified to remove dev packages * chore(modal): useImperativeHandle removed * feat(select): render value story improved * feat(docs): listbox & scroll shadow docs done * feat(docs): select documentation in progress * fix: select aria label (#1425) * feat(docs): more examples added * feat(docs): select multiple added, storybook favicon changed * fix: added value to aria label of select (#1431) * feat(select): more examples added, storybook favicon changed * fix(popover): dialog role removed * feat(select): api added, async loading exampled added * fix: fixed list box on click not working with sr click (#1439) * feat(select): async items loading support added and documented * feat(root): input styles updated to be as the select ones * chore(root): listbox and scroll shadow readme updated * feat(select): ts examples added, banner updated * fix(popover): voiceover closes when focusing an item fixed * chore(select): focus scope removed * fix(popover): free solo popover added to use without a trigger * feat(select): blog post added * chore(docs): search meta generated, multi controlled onchange example fixed * chore(root): changeset added --------- Co-authored-by: Jakob Guddas <github@jguddas.de>
133 lines
3.7 KiB
TypeScript
133 lines
3.7 KiB
TypeScript
const PlusIcon = `export const PlusIcon = (props) => (
|
|
<svg
|
|
aria-hidden="true"
|
|
fill="none"
|
|
focusable="false"
|
|
height="1em"
|
|
role="presentation"
|
|
viewBox="0 0 24 24"
|
|
width="1em"
|
|
{...props}
|
|
>
|
|
<g
|
|
fill="none"
|
|
stroke="currentColor"
|
|
strokeLinecap="round"
|
|
strokeLinejoin="round"
|
|
strokeWidth={1.5}
|
|
>
|
|
<path d="M6 12h12" />
|
|
<path d="M12 18V6" />
|
|
</g>
|
|
</svg>
|
|
);`;
|
|
|
|
const App = `import {Dropdown, DropdownTrigger, DropdownMenu, DropdownSection, DropdownItem, Button, User} from "@nextui-org/react";
|
|
import {PlusIcon} from "./PlusIcon.jsx";
|
|
export default function App() {
|
|
return (
|
|
<Dropdown
|
|
showArrow
|
|
radius="sm"
|
|
classNames={{
|
|
base: "p-0 border-small border-divider bg-background",
|
|
arrow: "bg-default-200",
|
|
}}
|
|
>
|
|
<DropdownTrigger>
|
|
<Button variant="ghost" disableRipple>Open Menu</Button>
|
|
</DropdownTrigger>
|
|
<DropdownMenu
|
|
aria-label="Custom item styles"
|
|
disabledKeys={["profile"]}
|
|
className="p-3"
|
|
itemClasses={{
|
|
base: [
|
|
"rounded-md",
|
|
"text-default-500",
|
|
"transition-opacity",
|
|
"data-[hover=true]:text-foreground",
|
|
"data-[hover=true]:bg-default-100",
|
|
"dark:data-[hover=true]:bg-default-50",
|
|
"data-[selectable=true]:focus:bg-default-50",
|
|
"data-[pressed=true]:opacity-70",
|
|
"data-[focus-visible=true]:ring-default-500",
|
|
],
|
|
}}
|
|
>
|
|
<DropdownSection aria-label="Profile & Actions" showDivider>
|
|
<DropdownItem
|
|
isReadOnly
|
|
key="profile"
|
|
className="h-14 gap-2"
|
|
className="opacity-100"
|
|
>
|
|
<User
|
|
name="Junior Garcia"
|
|
description="@jrgarciadev"
|
|
classNames={{
|
|
name: "text-default-600",
|
|
description: "text-default-500",
|
|
}}
|
|
avatarProps={{
|
|
size: "sm",
|
|
src: "https://avatars.githubusercontent.com/u/30373425?v=4",
|
|
}}
|
|
/>
|
|
</DropdownItem>
|
|
<DropdownItem key="dashboard">
|
|
Dashboard
|
|
</DropdownItem>
|
|
<DropdownItem key="settings">Settings</DropdownItem>
|
|
<DropdownItem
|
|
key="new_project"
|
|
endContent={<PlusIcon className="text-large" />}
|
|
>
|
|
New Project
|
|
</DropdownItem>
|
|
</DropdownSection>
|
|
|
|
<DropdownSection aria-label="Preferences" showDivider>
|
|
<DropdownItem key="quick_search" shortcut="⌘K">
|
|
Quick search
|
|
</DropdownItem>
|
|
<DropdownItem
|
|
isReadOnly
|
|
key="theme"
|
|
className="cursor-default"
|
|
endContent={
|
|
<select
|
|
className="z-10 outline-none w-16 py-0.5 rounded-md text-tiny group-data-[hover=true]:border-default-500 border-small border-default-300 dark:border-default-200 bg-transparent text-default-500"
|
|
id="theme"
|
|
name="theme"
|
|
>
|
|
<option>System</option>
|
|
<option>Dark</option>
|
|
<option>Light</option>
|
|
</select>
|
|
}
|
|
>
|
|
Theme
|
|
</DropdownItem>
|
|
</DropdownSection>
|
|
|
|
<DropdownSection aria-label="Help & Feedback">
|
|
<DropdownItem key="help_and_feedback">
|
|
Help & Feedback
|
|
</DropdownItem>
|
|
<DropdownItem key="logout">Log Out</DropdownItem>
|
|
</DropdownSection>
|
|
</DropdownMenu>
|
|
</Dropdown>
|
|
);
|
|
}`;
|
|
|
|
const react = {
|
|
"/App.jsx": App,
|
|
"/PlusIcon.jsx": PlusIcon,
|
|
};
|
|
|
|
export default {
|
|
...react,
|
|
};
|