UNPKG

flowbite-react

Version:

Official React components built for Flowbite and Tailwind CSS

1 lines 5.23 kB
{"version":3,"file":"DropdownItem.cjs","sources":["../../../src/components/Dropdown/DropdownItem.tsx"],"sourcesContent":["\"use client\";\n\nimport { useListItem, useMergeRefs } from \"@floating-ui/react\";\nimport { forwardRef, type ComponentProps, type ElementType, type FC, type RefCallback } from \"react\";\nimport type { PolymorphicComponentPropWithRef, PolymorphicRef } from \"../../helpers/generic-as-prop\";\nimport { get } from \"../../helpers/get\";\nimport { resolveProps } from \"../../helpers/resolve-props\";\nimport { useResolveTheme } from \"../../helpers/resolve-theme\";\nimport { twMerge } from \"../../helpers/tailwind-merge\";\nimport { useThemeProvider } from \"../../theme/provider\";\nimport type { ThemingProps } from \"../../types\";\nimport { ButtonBase } from \"../Button/ButtonBase\";\nimport { useDropdownContext } from \"./DropdownContext\";\nimport { dropdownTheme } from \"./theme\";\n\nexport interface DropdownItemTheme {\n container: string;\n base: string;\n icon: string;\n}\n\nexport type DropdownItemProps<T extends ElementType = \"button\"> = PolymorphicComponentPropWithRef<\n T,\n {\n href?: string;\n icon?: FC<ComponentProps<\"svg\">>;\n onClick?: () => void;\n }\n> &\n ThemingProps<DropdownItemTheme>;\n\ntype DropdownItemType = (<C extends ElementType = \"button\">(props: DropdownItemProps<C>) => JSX.Element) & {\n displayName?: string;\n};\n\nexport const DropdownItem = forwardRef(\n <T extends ElementType = \"button\">(props: DropdownItemProps<T>, forwardedRef: PolymorphicRef<T>) => {\n const {\n theme: rootTheme,\n clearTheme: rootClearTheme,\n applyTheme: rootApplyTheme,\n activeIndex,\n dismissOnClick,\n getItemProps,\n handleSelect,\n } = useDropdownContext();\n\n const provider = useThemeProvider();\n const theme = useResolveTheme(\n [dropdownTheme.floating.item, provider.theme?.dropdown?.floating?.item, rootTheme?.floating?.item, props.theme],\n [get(provider.clearTheme, \"dropdown.floating.item\"), get(rootClearTheme, \"floating.item\"), props.clearTheme],\n [get(provider.applyTheme, \"dropdown.floating.item\"), get(rootApplyTheme, \"floating.item\"), props.applyTheme],\n );\n\n const {\n children,\n className,\n icon: Icon,\n onClick,\n ...restProps\n } = resolveProps(props, provider.props?.dropdownItem);\n\n const { ref: listItemRef, index } = useListItem({ label: typeof children === \"string\" ? children : undefined });\n const ref = useMergeRefs([forwardedRef, listItemRef]);\n const isActive = activeIndex === index;\n\n return (\n <li role=\"menuitem\" className={theme.container}>\n <ButtonBase\n ref={ref as RefCallback<T>}\n className={twMerge(theme.base, className)}\n {...restProps}\n {...getItemProps({\n onClick: () => {\n onClick?.();\n dismissOnClick && handleSelect(null);\n },\n })}\n tabIndex={isActive ? 0 : -1}\n >\n {Icon && <Icon className={theme.icon} />}\n {children}\n </ButtonBase>\n </li>\n );\n },\n) as DropdownItemType;\n\nDropdownItem.displayName = \"DropdownItem\";\n"],"names":["forwardRef","useDropdownContext","provider","useThemeProvider","theme","useResolveTheme","dropdownTheme","get","resolveProps","useListItem","useMergeRefs","jsx","jsxs","ButtonBase","twMerge"],"mappings":";;;;;;;;;;;;;;AAaY,MAAC,YAAY,GAAGA,gBAAU;AACtC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK;AAC3B,IAAI,MAAM;AACV,MAAM,KAAK,EAAE,SAAS;AACtB,MAAM,UAAU,EAAE,cAAc;AAChC,MAAM,UAAU,EAAE,cAAc;AAChC,MAAM,WAAW;AACjB,MAAM,cAAc;AACpB,MAAM,YAAY;AAClB,MAAM;AACN,KAAK,GAAGC,kCAAkB,EAAE;AAC5B,IAAI,MAAMC,UAAQ,GAAGC,yBAAgB,EAAE;AACvC,IAAI,MAAMC,OAAK,GAAGC,4BAAe;AACjC,MAAM,CAACC,mBAAa,CAAC,QAAQ,CAAC,IAAI,EAAEJ,UAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC;AACrH,MAAM,CAACK,OAAG,CAACL,UAAQ,CAAC,UAAU,EAAE,wBAAwB,CAAC,EAAEK,OAAG,CAAC,cAAc,EAAE,eAAe,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC;AAClH,MAAM,CAACA,OAAG,CAACL,UAAQ,CAAC,UAAU,EAAE,wBAAwB,CAAC,EAAEK,OAAG,CAAC,cAAc,EAAE,eAAe,CAAC,EAAE,KAAK,CAAC,UAAU;AACjH,KAAK;AACL,IAAI,MAAM;AACV,MAAM,QAAQ;AACd,MAAM,SAAS;AACf,MAAM,IAAI,EAAE,IAAI;AAChB,MAAM,OAAO;AACb,MAAM,GAAG;AACT,KAAK,GAAGC,yBAAY,CAAC,KAAK,EAAEN,UAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;AACzD,IAAI,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,GAAGO,iBAAW,CAAC,EAAE,KAAK,EAAE,OAAO,QAAQ,KAAK,QAAQ,GAAG,QAAQ,GAAG,MAAM,EAAE,CAAC;AAChH,IAAI,MAAM,GAAG,GAAGC,kBAAY,CAAC,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;AACzD,IAAI,MAAM,QAAQ,GAAG,WAAW,KAAK,KAAK;AAC1C,IAAI,uBAAuBC,cAAG,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAEP,OAAK,CAAC,SAAS,EAAE,QAAQ,kBAAkBQ,eAAI;AACnH,MAAMC,qBAAU;AAChB,MAAM;AACN,QAAQ,GAAG;AACX,QAAQ,SAAS,EAAEC,qBAAO,CAACV,OAAK,CAAC,IAAI,EAAE,SAAS,CAAC;AACjD,QAAQ,GAAG,SAAS;AACpB,QAAQ,GAAG,YAAY,CAAC;AACxB,UAAU,OAAO,EAAE,MAAM;AACzB,YAAY,OAAO,IAAI;AACvB,YAAY,cAAc,IAAI,YAAY,CAAC,IAAI,CAAC;AAChD;AACA,SAAS,CAAC;AACV,QAAQ,QAAQ,EAAE,QAAQ,GAAG,CAAC,GAAG,EAAE;AACnC,QAAQ,QAAQ,EAAE;AAClB,UAAU,IAAI,oBAAoBO,cAAG,CAAC,IAAI,EAAE,EAAE,SAAS,EAAEP,OAAK,CAAC,IAAI,EAAE,CAAC;AACtE,UAAU;AACV;AACA;AACA,KAAK,EAAE,CAAC;AACR;AACA;AACA,YAAY,CAAC,WAAW,GAAG,cAAc;;;;"}