@lobehub/ui
Version:
Lobe UI is an open-source UI component library for building AIGC web apps
1 lines • 3.1 kB
Source Map (JSON)
{"version":3,"file":"List.mjs","names":[],"sources":["../../../src/base-ui/List/List.tsx"],"sourcesContent":["'use client';\n\nimport { cx } from 'antd-style';\nimport { type Key, memo, type MouseEvent, useState } from 'react';\n\nimport ListRow from './ListRow';\nimport { styles } from './style';\nimport type { ListDividerType, ListItem, ListItemType, ListProps } from './type';\n\nconst isDivider = (item: ListItem): item is ListDividerType => item.type === 'divider';\n\nconst variantClass = {\n borderless: undefined,\n filled: styles.filled,\n outlined: styles.outlined,\n};\n\nconst List = memo<ListProps>(\n ({\n activeKey,\n className,\n classNames,\n compact = false,\n defaultActiveKey,\n items,\n onActiveChange,\n onClick,\n ref,\n selectable = false,\n styles: customStyles,\n variant = 'borderless',\n ...rest\n }) => {\n const [innerKey, setInnerKey] = useState<Key | undefined>(defaultActiveKey);\n const currentKey = activeKey === undefined ? innerKey : activeKey;\n\n const handleSelect = (item: ListItemType, domEvent: MouseEvent<HTMLElement>) => {\n const info = { domEvent, item, key: item.key };\n item.onClick?.(info);\n onClick?.(info);\n\n if (!selectable || item.key === currentKey) return;\n if (activeKey === undefined) setInnerKey(item.key);\n onActiveChange?.(item.key);\n };\n\n return (\n <ul\n className={cx(styles.root, variantClass[variant], compact && styles.compact, className)}\n ref={ref}\n role=\"list\"\n {...rest}\n >\n {items.map((item, index) =>\n isDivider(item) ? (\n <li className={styles.divider} key={item.key ?? `divider-${index}`} role=\"separator\" />\n ) : (\n <ListRow\n active={currentKey !== undefined && currentKey !== null && item.key === currentKey}\n classNames={classNames}\n item={item}\n key={item.key}\n styles={customStyles}\n onSelect={handleSelect}\n />\n ),\n )}\n </ul>\n );\n },\n);\n\nList.displayName = 'List';\n\nexport default List;\n"],"mappings":";;;;;;;AASA,MAAM,aAAa,SAA4C,KAAK,SAAS;AAE7E,MAAM,eAAe;CACnB,YAAY,KAAA;CACZ,QAAQ,OAAO;CACf,UAAU,OAAO;AACnB;AAEA,MAAM,OAAO,MACV,EACC,WACA,WACA,YACA,UAAU,OACV,kBACA,OACA,gBACA,SACA,KACA,aAAa,OACb,QAAQ,cACR,UAAU,cACV,GAAG,WACC;CACJ,MAAM,CAAC,UAAU,eAAe,SAA0B,gBAAgB;CAC1E,MAAM,aAAa,cAAc,KAAA,IAAY,WAAW;CAExD,MAAM,gBAAgB,MAAoB,aAAsC;EAC9E,MAAM,OAAO;GAAE;GAAU;GAAM,KAAK,KAAK;EAAI;EAC7C,KAAK,UAAU,IAAI;EACnB,UAAU,IAAI;EAEd,IAAI,CAAC,cAAc,KAAK,QAAQ,YAAY;EAC5C,IAAI,cAAc,KAAA,GAAW,YAAY,KAAK,GAAG;EACjD,iBAAiB,KAAK,GAAG;CAC3B;CAEA,OACE,oBAAC,MAAD;EACE,WAAW,GAAG,OAAO,MAAM,aAAa,UAAU,WAAW,OAAO,SAAS,SAAS;EACjF;EACL,MAAK;EACL,GAAI;EAEH,UAAA,MAAM,KAAK,MAAM,UAChB,UAAU,IAAI,IACZ,oBAAC,MAAD;GAAI,WAAW,OAAO;GAA8C,MAAK;EAAa,GAAlD,KAAK,OAAO,WAAW,OAA2B,IAEtF,oBAAC,SAAD;GACE,QAAQ,eAAe,KAAA,KAAa,eAAe,QAAQ,KAAK,QAAQ;GAC5D;GACN;GAEN,QAAQ;GACR,UAAU;EACX,GAHM,KAAK,GAGX,CAEL;CACE,CAAA;AAER,CACF;AAEA,KAAK,cAAc"}