@lobehub/ui
Version:
Lobe UI is an open-source UI component library for building AIGC web apps
1 lines • 4.2 kB
Source Map (JSON)
{"version":3,"file":"ActionIconGroup.mjs","names":[],"sources":["../../src/ActionIconGroup/ActionIconGroup.tsx"],"sourcesContent":["'use client';\n\nimport { cx } from 'antd-style';\nimport { MoreHorizontal } from 'lucide-react';\nimport { type FC, useMemo } from 'react';\n\nimport ActionIcon from '@/ActionIcon';\nimport DropdownMenu from '@/DropdownMenu';\nimport { Center } from '@/Flex';\nimport { TooltipGroup } from '@/Tooltip';\n\nimport { variants } from './style';\nimport type { ActionIconGroupProps } from './type';\n\nconst ActionIconGroup: FC<ActionIconGroupProps> = ({\n variant = 'filled',\n disabled,\n shadow,\n glass,\n actionIconProps,\n items = [],\n horizontal = true,\n menu,\n onActionClick,\n className,\n size = 'small',\n ref,\n ...rest\n}) => {\n const tooltipPlacement = useMemo(\n () => (actionIconProps?.tooltipProps?.placement || horizontal ? 'top' : 'right'),\n [actionIconProps, horizontal],\n );\n\n const menuItems = useMemo(() => {\n const rawItems = typeof menu === 'function' ? menu() : menu;\n if (!rawItems) return [];\n return rawItems.map((item) => ({\n ...(item as any),\n onClick: (info: any) => {\n (item as any)?.onClick?.(info);\n onActionClick?.(info);\n },\n }));\n }, [menu, onActionClick]);\n\n return (\n <TooltipGroup>\n <Center\n className={cx(variants({ disabled, glass, shadow, variant }), className)}\n horizontal={horizontal}\n padding={2}\n ref={ref}\n {...rest}\n >\n {items?.length > 0 &&\n items.map((item) => {\n const { icon, key, label, onClick, danger, loading, ...itemRest } = item;\n return (\n <ActionIcon\n danger={danger}\n icon={icon}\n key={key}\n loading={loading}\n size={size}\n title={label}\n tooltipProps={{\n placement: tooltipPlacement,\n }}\n onClick={(e) => {\n onActionClick?.({\n domEvent: e,\n key: String(key),\n keyPath: [String(key)],\n });\n onClick?.(e as any);\n }}\n {...actionIconProps}\n disabled={disabled || loading || itemRest?.disabled}\n />\n );\n })}\n {menu && (\n <DropdownMenu items={menuItems} nativeButton={false}>\n <ActionIcon\n disabled={disabled}\n icon={MoreHorizontal}\n key=\"more\"\n size={size}\n {...actionIconProps}\n tooltipProps={{\n placement: tooltipPlacement,\n ...actionIconProps?.tooltipProps,\n }}\n />\n </DropdownMenu>\n )}\n </Center>\n </TooltipGroup>\n );\n};\n\nActionIconGroup.displayName = 'ActionIconGroup';\n\nexport default ActionIconGroup;\n"],"mappings":";;;;;;;;;;;AAcA,MAAM,mBAA6C,EACjD,UAAU,UACV,UACA,QACA,OACA,iBACA,QAAQ,CAAC,GACT,aAAa,MACb,MACA,eACA,WACA,OAAO,SACP,KACA,GAAG,WACC;CACJ,MAAM,mBAAmB,cAChB,iBAAiB,cAAc,aAAa,aAAa,QAAQ,SACxE,CAAC,iBAAiB,UAAU,CAC9B;CAEA,MAAM,YAAY,cAAc;EAC9B,MAAM,WAAW,OAAO,SAAS,aAAa,KAAK,IAAI;EACvD,IAAI,CAAC,UAAU,OAAO,CAAC;EACvB,OAAO,SAAS,KAAK,UAAU;GAC7B,GAAI;GACJ,UAAU,SAAc;IACtB,MAAe,UAAU,IAAI;IAC7B,gBAAgB,IAAI;GACtB;EACF,EAAE;CACJ,GAAG,CAAC,MAAM,aAAa,CAAC;CAExB,OACE,oBAAC,cAAD,EAAA,UACE,qBAAC,QAAD;EACE,WAAW,GAAG,SAAS;GAAE;GAAU;GAAO;GAAQ;EAAQ,CAAC,GAAG,SAAS;EAC3D;EACZ,SAAS;EACJ;EACL,GAAI;YALN,CAOG,OAAO,SAAS,KACf,MAAM,KAAK,SAAS;GAClB,MAAM,EAAE,MAAM,KAAK,OAAO,SAAS,QAAQ,SAAS,GAAG,aAAa;GACpE,OACE,oBAAC,YAAD;IACU;IACF;IAEG;IACH;IACN,OAAO;IACP,cAAc,EACZ,WAAW,iBACb;IACA,UAAU,MAAM;KACd,gBAAgB;MACd,UAAU;MACV,KAAK,OAAO,GAAG;MACf,SAAS,CAAC,OAAO,GAAG,CAAC;KACvB,CAAC;KACD,UAAU,CAAQ;IACpB;IACA,GAAI;IACJ,UAAU,YAAY,WAAW,UAAU;GAC5C,GAjBM,GAiBN;EAEL,CAAC,GACF,QACC,oBAAC,cAAD;GAAc,OAAO;GAAW,cAAc;aAC5C,oBAAC,YAAD;IACY;IACV,MAAM;IAEA;IACN,GAAI;IACJ,cAAc;KACZ,WAAW;KACX,GAAG,iBAAiB;IACtB;GACD,GAPK,MAOL;EACW,CAAA,CAEV;IACI,CAAA;AAElB;AAEA,gBAAgB,cAAc"}