UNPKG

design-react-kit

Version:

Componenti React per Bootstrap 5

1 lines 4.49 kB
{"version":3,"sources":["../../src/LinkList/LinkListItem.tsx"],"sourcesContent":["import React, { FC, AnchorHTMLAttributes, ElementType, MouseEvent, MouseEventHandler } from 'react';\nimport classNames from 'classnames';\n\nexport interface LinkListItemProps extends AnchorHTMLAttributes<HTMLAnchorElement> {\n /** Indica se l'elemento è attivo o no */\n active?: boolean;\n /** Indica se l'elemento è disabilitato o no */\n disabled?: boolean;\n /** Indica se l'elemento ha dimensioni larghe o no */\n large?: boolean;\n /** Indica se l'elemento è bold o no */\n bold?: boolean;\n /** Indica se l'elemento è un titolo. */\n header?: boolean;\n /** Indica se l'elemento è un divisore */\n divider?: boolean;\n /** Indica se l'elemento è in un dropdown */\n inDropdown?: boolean;\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati */\n tag?: ElementType;\n /** Classi aggiuntive da usare per il componente LinkListItem */\n className?: string;\n /** Classi aggiuntive da usare per l'elemento contenitore dell'item */\n wrapperClassName?: string;\n /** Indica il link a cui l'elemento deve puntare. */\n href?: string;\n /** Indica il link route a cui l'elemento deve puntare. */\n to?: string;\n testId?: string;\n}\n\nconst handleDisabledOnClick = (e: MouseEvent<HTMLAnchorElement>) => {\n e.preventDefault();\n};\n\nexport const LinkListItem: FC<LinkListItemProps> & {\n TitleIconWrapper: typeof LinkListTitleIconWrapper;\n} = ({\n className,\n active,\n disabled,\n header,\n divider,\n bold,\n large,\n href,\n tag = 'a',\n wrapperClassName,\n testId,\n children,\n inDropdown,\n ...attributes\n}) => {\n let Tag = tag;\n const classes = classNames(\n className,\n {\n active,\n disabled,\n header,\n divider,\n large: large,\n medium: bold,\n 'dropdown-item': inDropdown\n },\n 'list-item'\n );\n\n // Prevent click event when disabled.\n const handlers: { onClick?: MouseEventHandler<HTMLAnchorElement> } = {};\n if (disabled) {\n handlers.onClick = handleDisabledOnClick;\n }\n\n if (header) {\n Tag = 'h3';\n } else if (divider) {\n Tag = 'span';\n }\n\n if (inDropdown) {\n attributes['role'] = 'menuitem';\n attributes['tabIndex'] = 0;\n }\n\n if (header && href) {\n return (\n <li className={wrapperClassName} data-testid={testId}>\n <Tag>\n <a href={href || '#'} {...attributes} className={classes} {...handlers}>\n {children}\n </a>\n </Tag>\n </li>\n );\n }\n\n return (\n <li className={wrapperClassName} data-testid={testId}>\n <Tag\n role={attributes.onClick ? 'button' : undefined}\n {...attributes}\n className={classes}\n href={href}\n {...handlers}\n >\n {children}\n </Tag>\n </li>\n );\n};\n\nconst LinkListTitleIconWrapper: FC<LinkListItemProps> = ({ children }) => {\n return <span className='list-item-title-icon-wrapper'>{children}</span>;\n};\n\nLinkListItem.TitleIconWrapper = LinkListTitleIconWrapper;\n"],"mappings":"0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,kBAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAA4F,sBAC5FC,EAAuB,2BA8BjBC,EAAyB,GAAqC,CAClE,EAAE,eAAe,CACnB,EAEaJ,EAET,CAAC,CACH,UAAAK,EACA,OAAAC,EACA,SAAAC,EACA,OAAAC,EACA,QAAAC,EACA,KAAAC,EACA,MAAAC,EACA,KAAAC,EACA,IAAAC,EAAM,IACN,iBAAAC,EACA,OAAAC,EACA,SAAAC,EACA,WAAAC,EACA,GAAGC,CACL,IAAM,CACJ,IAAIC,EAAMN,EACJO,KAAU,EAAAC,SACdhB,EACA,CACE,OAAAC,EACA,SAAAC,EACA,OAAAC,EACA,QAAAC,EACA,MAAOE,EACP,OAAQD,EACR,gBAAiBO,CACnB,EACA,WACF,EAGMK,EAA+D,CAAC,EAgBtE,OAfIf,IACFe,EAAS,QAAUlB,GAGjBI,EACFW,EAAM,KACGV,IACTU,EAAM,QAGJF,IACFC,EAAW,KAAU,WACrBA,EAAW,SAAc,GAGvBV,GAAUI,EAEV,EAAAW,QAAA,cAAC,MAAG,UAAWT,EAAkB,cAAaC,GAC5C,EAAAQ,QAAA,cAACJ,EAAA,KACC,EAAAI,QAAA,cAAC,KAAE,KAAMX,GAAQ,IAAM,GAAGM,EAAY,UAAWE,EAAU,GAAGE,GAC3DN,CACH,CACF,CACF,EAKF,EAAAO,QAAA,cAAC,MAAG,UAAWT,EAAkB,cAAaC,GAC5C,EAAAQ,QAAA,cAACJ,EAAA,CACC,KAAMD,EAAW,QAAU,SAAW,OACrC,GAAGA,EACJ,UAAWE,EACX,KAAMR,EACL,GAAGU,GAEHN,CACH,CACF,CAEJ,EAEMQ,EAAkD,CAAC,CAAE,SAAAR,CAAS,IAC3D,EAAAO,QAAA,cAAC,QAAK,UAAU,gCAAgCP,CAAS,EAGlEhB,EAAa,iBAAmBwB","names":["LinkListItem_exports","__export","LinkListItem","__toCommonJS","import_react","import_classnames","handleDisabledOnClick","className","active","disabled","header","divider","bold","large","href","tag","wrapperClassName","testId","children","inDropdown","attributes","Tag","classes","classNames","handlers","React","LinkListTitleIconWrapper"]}