UNPKG

@lobehub/ui

Version:

Lobe UI is an open-source UI component library for building AIGC web apps

1 lines • 4.27 kB
{"version":3,"file":"ListRow.mjs","names":[],"sources":["../../../src/base-ui/List/ListRow.tsx"],"sourcesContent":["'use client';\n\nimport { cx } from 'antd-style';\nimport { memo, type MouseEvent } from 'react';\n\nimport A from '@/A';\nimport Icon from '@/Icon';\n\nimport { styles } from './style';\nimport type { ListItemType, ListProps } from './type';\n\ninterface ListRowProps {\n active: boolean;\n classNames?: ListProps['classNames'];\n item: ListItemType;\n onSelect: (item: ListItemType, event: MouseEvent<HTMLElement>) => void;\n styles?: ListProps['styles'];\n}\n\nconst ListRow = memo<ListRowProps>(\n ({ active, classNames, item, onSelect, styles: customStyles }) => {\n const { actions, avatar, danger, description, disabled, extra, href, icon, label, showAction } =\n item;\n\n const handleClick = (event: MouseEvent<HTMLElement>) => {\n if (disabled) {\n event.preventDefault();\n return;\n }\n onSelect(item, event);\n };\n\n const rowClassName = cx(\n styles.row,\n active && styles.active,\n danger && styles.danger,\n disabled && styles.disabled,\n classNames?.item,\n item.className,\n );\n const rowStyle = { ...customStyles?.item, ...item.style };\n\n const content = (\n <>\n {avatar ?? (icon ? <Icon icon={icon} size={16} /> : null)}\n <span className={styles.body}>\n <span className={cx(styles.label, classNames?.label)} style={customStyles?.label}>\n {label}\n </span>\n {description != null && (\n <span\n className={cx(styles.description, classNames?.description)}\n style={customStyles?.description}\n >\n {description}\n </span>\n )}\n </span>\n {extra != null && (\n <span className={cx(styles.extra, classNames?.extra)} style={customStyles?.extra}>\n {extra}\n </span>\n )}\n </>\n );\n\n return (\n <li className={cx(styles.item, showAction && styles.showAction)}>\n {href && !disabled ? (\n <A\n aria-current={active ? 'page' : undefined}\n className={rowClassName}\n href={href}\n style={rowStyle}\n onClick={handleClick}\n >\n {content}\n </A>\n ) : (\n <button\n aria-current={active ? 'true' : undefined}\n aria-disabled={disabled || undefined}\n className={rowClassName}\n style={rowStyle}\n type=\"button\"\n onClick={handleClick}\n >\n {content}\n </button>\n )}\n {actions != null && (\n <span className={cx(styles.actions, classNames?.actions)} style={customStyles?.actions}>\n {actions}\n </span>\n )}\n </li>\n );\n },\n);\n\nListRow.displayName = 'ListRow';\n\nexport default ListRow;\n"],"mappings":";;;;;;;;AAmBA,MAAM,UAAU,MACb,EAAE,QAAQ,YAAY,MAAM,UAAU,QAAQ,mBAAmB;CAChE,MAAM,EAAE,SAAS,QAAQ,QAAQ,aAAa,UAAU,OAAO,MAAM,MAAM,OAAO,eAChF;CAEF,MAAM,eAAe,UAAmC;EACtD,IAAI,UAAU;GACZ,MAAM,eAAe;GACrB;EACF;EACA,SAAS,MAAM,KAAK;CACtB;CAEA,MAAM,eAAe,GACnB,OAAO,KACP,UAAU,OAAO,QACjB,UAAU,OAAO,QACjB,YAAY,OAAO,UACnB,YAAY,MACZ,KAAK,SACP;CACA,MAAM,WAAW;EAAE,GAAG,cAAc;EAAM,GAAG,KAAK;CAAM;CAExD,MAAM,UACJ,qBAAA,YAAA,EAAA,UAAA;EACG,WAAW,OAAO,oBAAC,MAAD;GAAY;GAAM,MAAM;EAAK,CAAA,IAAI;EACpD,qBAAC,QAAD;GAAM,WAAW,OAAO;GAAxB,UAAA,CACE,oBAAC,QAAD;IAAM,WAAW,GAAG,OAAO,OAAO,YAAY,KAAK;IAAG,OAAO,cAAc;IACxE,UAAA;GACG,CAAA,GACL,eAAe,QACd,oBAAC,QAAD;IACE,WAAW,GAAG,OAAO,aAAa,YAAY,WAAW;IACzD,OAAO,cAAc;IAEpB,UAAA;GACG,CAAA,CAEJ;;EACL,SAAS,QACR,oBAAC,QAAD;GAAM,WAAW,GAAG,OAAO,OAAO,YAAY,KAAK;GAAG,OAAO,cAAc;GACxE,UAAA;EACG,CAAA;CAER,EAAA,CAAA;CAGJ,OACE,qBAAC,MAAD;EAAI,WAAW,GAAG,OAAO,MAAM,cAAc,OAAO,UAAU;EAA9D,UAAA,CACG,QAAQ,CAAC,WACR,oBAAC,GAAD;GACE,gBAAc,SAAS,SAAS,KAAA;GAChC,WAAW;GACL;GACN,OAAO;GACP,SAAS;GAER,UAAA;EACA,CAAA,IAEH,oBAAC,UAAD;GACE,gBAAc,SAAS,SAAS,KAAA;GAChC,iBAAe,YAAY,KAAA;GAC3B,WAAW;GACX,OAAO;GACP,MAAK;GACL,SAAS;GAER,UAAA;EACK,CAAA,GAET,WAAW,QACV,oBAAC,QAAD;GAAM,WAAW,GAAG,OAAO,SAAS,YAAY,OAAO;GAAG,OAAO,cAAc;GAC5E,UAAA;EACG,CAAA,CAEN;;AAER,CACF;AAEA,QAAQ,cAAc"}