@grafana/ui
Version:
Grafana Components Library
1 lines • 3.67 kB
Source Map (JSON)
{"version":3,"file":"AbstractList.cjs","sources":["../../../../src/components/List/AbstractList.tsx"],"sourcesContent":["import { cx, css } from '@emotion/css';\nimport { useMemo, type JSX } from 'react';\n\nimport { Trans } from '@grafana/i18n';\n\nimport { stylesFactory } from '../../themes/stylesFactory';\nimport { Button } from '../Button/Button';\n\nimport { useLimit } from './hooks';\n\nexport interface ListProps<T> {\n items: T[];\n renderItem: (item: T, index: number) => JSX.Element;\n getItemKey?: (item: T) => string;\n className?: string;\n limit?: number;\n}\n\ninterface AbstractListProps<T> extends ListProps<T> {\n inline?: boolean;\n limit?: number;\n}\n\nconst getStyles = stylesFactory((inlineList = false) => ({\n list: css({\n listStyleType: 'none',\n margin: 0,\n padding: 0,\n }),\n\n item: css({\n display: (inlineList && 'inline-block') || 'block',\n }),\n}));\n\n/** @deprecated Use ul/li/arr.map directly instead */\n// no point converting, this is deprecated\n// eslint-disable-next-line react-prefer-function-component/react-prefer-function-component\nexport const AbstractList = <T,>({\n items,\n renderItem,\n getItemKey,\n className,\n inline,\n limit = 0,\n}: AbstractListProps<T>) => {\n const styles = getStyles(inline);\n\n const [curLimit, setLimit] = useLimit(limit);\n\n const limitedItems = useMemo(() => (curLimit > 0 ? items.slice(0, curLimit) : items), [items, curLimit]);\n\n return (\n <ul className={cx(styles.list, className)}>\n {limitedItems.map((item, i) => {\n return (\n <li className={styles.item} key={getItemKey ? getItemKey(item) : i}>\n {renderItem(item, i)}\n </li>\n );\n })}\n {curLimit > 0 && items.length > curLimit && (\n <li className={styles.item} key=\"__limit\">\n <Button fill=\"text\" variant=\"primary\" size=\"sm\" onClick={() => setLimit(0)}>\n <Trans i18nKey={'legend.container.show-all-series'}>...show all {{ total: items.length }} items</Trans>\n </Button>\n </li>\n )}\n </ul>\n );\n};\n"],"names":["stylesFactory","css","useLimit","useMemo","cx","jsx","Button","jsxs","Trans"],"mappings":";;;;;;;;;;;;;AAuBA,MAAM,SAAA,GAAYA,2BAAA,CAAc,CAAC,UAAA,GAAa,KAAA,MAAW;AAAA,EACvD,MAAMC,OAAA,CAAI;AAAA,IACR,aAAA,EAAe,MAAA;AAAA,IACf,MAAA,EAAQ,CAAA;AAAA,IACR,OAAA,EAAS;AAAA,GACV,CAAA;AAAA,EAED,MAAMA,OAAA,CAAI;AAAA,IACR,OAAA,EAAU,cAAc,cAAA,IAAmB;AAAA,GAC5C;AACH,CAAA,CAAE,CAAA;AAKK,MAAM,eAAe,CAAK;AAAA,EAC/B,KAAA;AAAA,EACA,UAAA;AAAA,EACA,UAAA;AAAA,EACA,SAAA;AAAA,EACA,MAAA;AAAA,EACA,KAAA,GAAQ;AACV,CAAA,KAA4B;AAC1B,EAAA,MAAM,MAAA,GAAS,UAAU,MAAM,CAAA;AAE/B,EAAA,MAAM,CAAC,QAAA,EAAU,QAAQ,CAAA,GAAIC,eAAS,KAAK,CAAA;AAE3C,EAAA,MAAM,YAAA,GAAeC,aAAA,CAAQ,MAAO,QAAA,GAAW,IAAI,KAAA,CAAM,KAAA,CAAM,CAAA,EAAG,QAAQ,CAAA,GAAI,KAAA,EAAQ,CAAC,KAAA,EAAO,QAAQ,CAAC,CAAA;AAEvG,EAAA,uCACG,IAAA,EAAA,EAAG,SAAA,EAAWC,OAAG,MAAA,CAAO,IAAA,EAAM,SAAS,CAAA,EACrC,QAAA,EAAA;AAAA,IAAA,YAAA,CAAa,GAAA,CAAI,CAAC,IAAA,EAAM,CAAA,KAAM;AAC7B,MAAA,uBACEC,cAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAW,MAAA,CAAO,IAAA,EACnB,QAAA,EAAA,UAAA,CAAW,IAAA,EAAM,CAAC,CAAA,EAAA,EADY,UAAA,GAAa,UAAA,CAAW,IAAI,IAAI,CAEjE,CAAA;AAAA,IAEJ,CAAC,CAAA;AAAA,IACA,QAAA,GAAW,CAAA,IAAK,KAAA,CAAM,MAAA,GAAS,QAAA,oBAC9BA,cAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAW,MAAA,CAAO,IAAA,EACpB,QAAA,kBAAAA,cAAA,CAACC,aAAA,EAAA,EAAO,IAAA,EAAK,QAAO,OAAA,EAAQ,SAAA,EAAU,IAAA,EAAK,IAAA,EAAK,OAAA,EAAS,MAAM,QAAA,CAAS,CAAC,CAAA,EACvE,QAAA,kBAAAC,eAAA,CAACC,UAAA,EAAA,EAAM,OAAA,EAAS,kCAAA,EAAoC,QAAA,EAAA;AAAA,MAAA,cAAA;AAAA,MAAa,EAAE,KAAA,EAAO,KAAA,CAAM,MAAA,EAAO;AAAA,MAAE;AAAA,KAAA,EAAM,CAAA,EACjG,KAH8B,SAIhC;AAAA,GAAA,EAEJ,CAAA;AAEJ;;;;"}