@lumx/react 3.20.1-alpha.11 → 3.20.1-alpha.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/_internal/{8fcceef3.js → 0420e67b.js} +13 -14
- package/_internal/{8fcceef3.js.map → 0420e67b.js.map} +1 -1
- package/_internal/{7b214f74.js → 0a490b07.js} +29 -24
- package/_internal/{7b214f74.js.map → 0a490b07.js.map} +1 -1
- package/_internal/{4d92e13b.js → 0be1006e.js} +25 -25
- package/_internal/{4d92e13b.js.map → 0be1006e.js.map} +1 -1
- package/_internal/{dd0a245d.js → 0d1a078c.js} +44 -42
- package/_internal/{dd0a245d.js.map → 0d1a078c.js.map} +1 -1
- package/_internal/{1eab656b.js → 15eab19b.js} +25 -25
- package/_internal/{1eab656b.js.map → 15eab19b.js.map} +1 -1
- package/_internal/{87bada02.js → 179a84d1.js} +64 -67
- package/_internal/{87bada02.js.map → 179a84d1.js.map} +1 -1
- package/_internal/{4c5a7b63.js → 193521fa.js} +11 -12
- package/_internal/{4c5a7b63.js.map → 193521fa.js.map} +1 -1
- package/_internal/{f57d4eb8.js → 1a90ea3d.js} +15 -17
- package/_internal/{f57d4eb8.js.map → 1a90ea3d.js.map} +1 -1
- package/_internal/1deba7d7.js +224 -0
- package/_internal/{2d6bde7d.js.map → 1deba7d7.js.map} +1 -1
- package/_internal/{2938a251.js → 1ea72630.js} +16 -17
- package/_internal/{2938a251.js.map → 1ea72630.js.map} +1 -1
- package/_internal/21b83d16.js +137 -0
- package/_internal/{5ba8fae8.js.map → 21b83d16.js.map} +1 -1
- package/_internal/297bed8f.js +457 -0
- package/_internal/{e53b5a39.js.map → 297bed8f.js.map} +1 -1
- package/_internal/{432c85a7.js → 2c2b6a89.js} +9 -7
- package/_internal/{432c85a7.js.map → 2c2b6a89.js.map} +1 -1
- package/_internal/{bba7d4c4.js → 2f1716fa.js} +75 -63
- package/_internal/{bba7d4c4.js.map → 2f1716fa.js.map} +1 -1
- package/_internal/{2c7942af.js → 2f6c7f84.js} +16 -21
- package/_internal/{2c7942af.js.map → 2f6c7f84.js.map} +1 -1
- package/_internal/{64046d7a.js → 329b5f12.js} +10 -12
- package/_internal/{64046d7a.js.map → 329b5f12.js.map} +1 -1
- package/_internal/332e9844.js +2 -0
- package/_internal/332e9844.js.map +1 -0
- package/_internal/{85d992d2.js → 34c59f5b.js} +101 -98
- package/_internal/{85d992d2.js.map → 34c59f5b.js.map} +1 -1
- package/_internal/{30f4c83c.js → 370bdaed.js} +7 -5
- package/_internal/{30f4c83c.js.map → 370bdaed.js.map} +1 -1
- package/_internal/{7c4f4643.js → 37b007a4.js} +2 -2
- package/_internal/{7c4f4643.js.map → 37b007a4.js.map} +1 -1
- package/_internal/{07e0bd90.js → 3a4e4636.js} +51 -36
- package/_internal/{07e0bd90.js.map → 3a4e4636.js.map} +1 -1
- package/_internal/{3683d267.js → 3e653144.js} +8 -11
- package/_internal/{3683d267.js.map → 3e653144.js.map} +1 -1
- package/_internal/{c43d098b.js → 3f86608e.js} +5 -2
- package/_internal/{c43d098b.js.map → 3f86608e.js.map} +1 -1
- package/_internal/{b3bfbe72.js → 478b5c92.js} +2 -2
- package/_internal/{b3bfbe72.js.map → 478b5c92.js.map} +1 -1
- package/_internal/4962be5b.js +121 -0
- package/_internal/{70cf341b.js.map → 4962be5b.js.map} +1 -1
- package/_internal/{407735b4.js → 4cd870a5.js} +2 -2
- package/_internal/{407735b4.js.map → 4cd870a5.js.map} +1 -1
- package/_internal/{e4613195.js → 501f2f9f.js} +8 -9
- package/_internal/{e4613195.js.map → 501f2f9f.js.map} +1 -1
- package/_internal/5e7b90e2.js +2 -0
- package/_internal/5e7b90e2.js.map +1 -0
- package/_internal/{18334f0d.js → 5ec059fe.js} +48 -43
- package/_internal/{18334f0d.js.map → 5ec059fe.js.map} +1 -1
- package/_internal/{fc47f2da.js → 5f8f9454.js} +10 -12
- package/_internal/{fc47f2da.js.map → 5f8f9454.js.map} +1 -1
- package/_internal/{3f3de25e.js → 5fe09341.js} +3 -3
- package/_internal/{3f3de25e.js.map → 5fe09341.js.map} +1 -1
- package/_internal/{714809cc.js → 628468c4.js} +47 -46
- package/_internal/{714809cc.js.map → 628468c4.js.map} +1 -1
- package/_internal/{d3321a86.js → 6589b796.js} +2 -12
- package/_internal/{d3321a86.js.map → 6589b796.js.map} +1 -1
- package/_internal/{2368cb68.js → 65f91970.js} +43 -43
- package/_internal/{2368cb68.js.map → 65f91970.js.map} +1 -1
- package/_internal/66f691d3.js +74 -0
- package/_internal/{1921f348.js.map → 66f691d3.js.map} +1 -1
- package/_internal/{bdd41804.js → 68c10f98.js} +50 -41
- package/_internal/{bdd41804.js.map → 68c10f98.js.map} +1 -1
- package/_internal/{9cfa3e10.js → 690ca33e.js} +36 -35
- package/_internal/{9cfa3e10.js.map → 690ca33e.js.map} +1 -1
- package/_internal/6ca04271.js +108 -0
- package/_internal/{a67f26a8.js.map → 6ca04271.js.map} +1 -1
- package/_internal/{cdc3efab.js → 6da19518.js} +24 -32
- package/_internal/{cdc3efab.js.map → 6da19518.js.map} +1 -1
- package/_internal/{bcce6ceb.js → 7093ba23.js} +6 -4
- package/_internal/{bcce6ceb.js.map → 7093ba23.js.map} +1 -1
- package/_internal/{bc4cb4c0.js → 74a4a214.js} +29 -33
- package/_internal/{bc4cb4c0.js.map → 74a4a214.js.map} +1 -1
- package/_internal/{95a2e851.js → 76be70dd.js} +3 -3
- package/_internal/{95a2e851.js.map → 76be70dd.js.map} +1 -1
- package/_internal/{60f8e509.js → 7f54e947.js} +114 -101
- package/_internal/{60f8e509.js.map → 7f54e947.js.map} +1 -1
- package/_internal/{72407886.js → 84dfe68f.js} +50 -44
- package/_internal/{72407886.js.map → 84dfe68f.js.map} +1 -1
- package/_internal/{e2440593.js → 85e3a5ca.js} +32 -35
- package/_internal/{e2440593.js.map → 85e3a5ca.js.map} +1 -1
- package/_internal/{742d4906.js → 86aa4aa4.js} +60 -54
- package/_internal/{742d4906.js.map → 86aa4aa4.js.map} +1 -1
- package/_internal/{4e1dde79.js → 8ab42752.js} +25 -26
- package/_internal/{4e1dde79.js.map → 8ab42752.js.map} +1 -1
- package/_internal/{0f4b35b2.js → 95cfd814.js} +14 -20
- package/_internal/{0f4b35b2.js.map → 95cfd814.js.map} +1 -1
- package/_internal/{d6b3a3c0.js → 9a4dfad0.js} +48 -39
- package/_internal/{d6b3a3c0.js.map → 9a4dfad0.js.map} +1 -1
- package/_internal/{80e5c950.js → 9c9df5f2.js} +19 -19
- package/_internal/{80e5c950.js.map → 9c9df5f2.js.map} +1 -1
- package/_internal/{21aeb1c7.js → 9d1336a1.js} +6 -6
- package/_internal/{21aeb1c7.js.map → 9d1336a1.js.map} +1 -1
- package/_internal/{ee64ab0d.js → 9fdc715b.js} +37 -34
- package/_internal/{ee64ab0d.js.map → 9fdc715b.js.map} +1 -1
- package/_internal/a003602b.js +116 -0
- package/_internal/{32698205.js.map → a003602b.js.map} +1 -1
- package/_internal/{baa0a23b.js → a34639bd.js} +31 -29
- package/_internal/{baa0a23b.js.map → a34639bd.js.map} +1 -1
- package/_internal/{cb036703.js → a84f4981.js} +35 -26
- package/_internal/{cb036703.js.map → a84f4981.js.map} +1 -1
- package/_internal/{9210e2f3.js → b0a7a999.js} +10 -12
- package/_internal/{9210e2f3.js.map → b0a7a999.js.map} +1 -1
- package/_internal/{3646abc3.js → b0b2e33d.js} +117 -104
- package/_internal/{3646abc3.js.map → b0b2e33d.js.map} +1 -1
- package/_internal/{1aaa0341.js → b1af5979.js} +168 -160
- package/_internal/{1aaa0341.js.map → b1af5979.js.map} +1 -1
- package/_internal/{21cf275f.js → b477da26.js} +63 -57
- package/_internal/{21cf275f.js.map → b477da26.js.map} +1 -1
- package/_internal/{60923026.js → b8667090.js} +2 -2
- package/_internal/{60923026.js.map → b8667090.js.map} +1 -1
- package/_internal/{1e4b7ad5.js → bae266a9.js} +19 -18
- package/_internal/{1e4b7ad5.js.map → bae266a9.js.map} +1 -1
- package/_internal/{9d8130ae.js → be6da9b0.js} +69 -74
- package/_internal/{9d8130ae.js.map → be6da9b0.js.map} +1 -1
- package/_internal/{9452daf7.js → c0414b89.js} +10 -12
- package/_internal/{9452daf7.js.map → c0414b89.js.map} +1 -1
- package/_internal/{e566d502.js → c2388b10.js} +21 -17
- package/_internal/{e566d502.js.map → c2388b10.js.map} +1 -1
- package/_internal/{9cf0d217.js → c459a04d.js} +55 -54
- package/_internal/{9cf0d217.js.map → c459a04d.js.map} +1 -1
- package/_internal/c6ca7494.js +2 -0
- package/_internal/c6ca7494.js.map +1 -0
- package/_internal/{01bc8fcf.js → cdddaed8.js} +20 -18
- package/_internal/{01bc8fcf.js.map → cdddaed8.js.map} +1 -1
- package/_internal/{0361b7fb.js → d45e3f16.js} +2 -2
- package/_internal/{0361b7fb.js.map → d45e3f16.js.map} +1 -1
- package/_internal/{d66c4375.js → d5f316cb.js} +2 -2
- package/_internal/{d66c4375.js.map → d5f316cb.js.map} +1 -1
- package/_internal/{0a31e895.js → db4fdc7b.js} +63 -57
- package/_internal/{0a31e895.js.map → db4fdc7b.js.map} +1 -1
- package/_internal/dbe0cf24.js +75 -0
- package/_internal/{803945f7.js.map → dbe0cf24.js.map} +1 -1
- package/_internal/{4ceaf17c.js → e2afb13f.js} +2 -2
- package/_internal/{4ceaf17c.js.map → e2afb13f.js.map} +1 -1
- package/_internal/{b925072d.js → e52f0d3f.js} +37 -34
- package/_internal/{b925072d.js.map → e52f0d3f.js.map} +1 -1
- package/_internal/{aa8c5d9b.js → e6dd117e.js} +2 -2
- package/_internal/{aa8c5d9b.js.map → e6dd117e.js.map} +1 -1
- package/_internal/{077b7bef.js → ea04260d.js} +6 -6
- package/_internal/{077b7bef.js.map → ea04260d.js.map} +1 -1
- package/_internal/{77eb8ef3.js → eaa8b1d8.js} +39 -38
- package/_internal/{77eb8ef3.js.map → eaa8b1d8.js.map} +1 -1
- package/_internal/{aafcf80e.js → edab29ce.js} +61 -65
- package/_internal/{aafcf80e.js.map → edab29ce.js.map} +1 -1
- package/_internal/{38b3ecf3.js → f0900583.js} +54 -45
- package/_internal/{38b3ecf3.js.map → f0900583.js.map} +1 -1
- package/_internal/{881714a1.js → f23cdf84.js} +45 -51
- package/_internal/{881714a1.js.map → f23cdf84.js.map} +1 -1
- package/_internal/f52e979e.js +3 -0
- package/_internal/f52e979e.js.map +1 -0
- package/_internal/{1ce667fb.js → f5508d3d.js} +53 -51
- package/_internal/{1ce667fb.js.map → f5508d3d.js.map} +1 -1
- package/_internal/{43262bfe.js → f93fe83e.js} +11 -13
- package/_internal/{43262bfe.js.map → f93fe83e.js.map} +1 -1
- package/index.js +63 -63
- package/package.json +3 -11
- package/utils/index.js +3 -3
- package/_internal/1921f348.js +0 -72
- package/_internal/286fc728.js +0 -2
- package/_internal/286fc728.js.map +0 -1
- package/_internal/2d6bde7d.js +0 -209
- package/_internal/32698205.js +0 -107
- package/_internal/5ba8fae8.js +0 -120
- package/_internal/70cf341b.js +0 -117
- package/_internal/803945f7.js +0 -65
- package/_internal/a67f26a8.js +0 -98
- package/_internal/ac3bc511.js +0 -2
- package/_internal/ac3bc511.js.map +0 -1
- package/_internal/cc995526.js +0 -2
- package/_internal/cc995526.js.map +0 -1
- package/_internal/e2122a37.js +0 -3
- package/_internal/e2122a37.js.map +0 -1
- package/_internal/e53b5a39.js +0 -407
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"2d6bde7d.js","sources":["../../src/components/navigation/NavigationItem.tsx","../../src/components/navigation/context.tsx","../../src/components/navigation/NavigationSection.tsx","../../src/components/navigation/Navigation.tsx"],"sourcesContent":["import { ElementType, ReactNode } from 'react';\nimport { Icon, Placement, Size, Tooltip, Text } from '@lumx/react';\nimport { getRootClassName, handleBasicClasses } from '@lumx/core/js/utils/className';\nimport { ComponentRef, HasClassName, HasPolymorphicAs, HasRequiredLinkHref, HasTheme } from '@lumx/react/utils/type';\nimport classNames from 'classnames';\nimport { forwardRefPolymorphic } from '@lumx/react/utils/react/forwardRefPolymorphic';\nimport { useTheme } from '@lumx/react/utils/theme/ThemeContext';\nimport { useOverflowTooltipLabel } from '@lumx/react/hooks/useOverflowTooltipLabel';\nimport { RawClickable } from '@lumx/react/utils/react/RawClickable';\n\ntype BaseNavigationItemProps = {\n /** Icon (SVG path). */\n icon?: string;\n /** Label content. */\n label: ReactNode;\n /** Mark as the current page link */\n isCurrentPage?: boolean;\n};\n\n/**\n * Navigation item props\n */\nexport type NavigationItemProps<E extends ElementType = 'a'> = HasPolymorphicAs<E> &\n HasTheme &\n HasClassName &\n BaseNavigationItemProps &\n HasRequiredLinkHref<E>;\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'NavigationItem';\n\n/**\n * Component default class name and class prefix.\n */\nexport const CLASSNAME = getRootClassName(COMPONENT_NAME);\n\nexport const NavigationItem = Object.assign(\n forwardRefPolymorphic(<E extends ElementType = 'a'>(props: NavigationItemProps<E>, ref: ComponentRef<E>) => {\n const { className, icon, label, isCurrentPage, as: Element = 'a', ...forwardedProps } = props;\n const theme = useTheme();\n const { tooltipLabel, labelRef } = useOverflowTooltipLabel(label);\n\n return (\n <li\n className={classNames(\n className,\n handleBasicClasses({\n prefix: CLASSNAME,\n theme,\n }),\n )}\n >\n <Tooltip label={tooltipLabel} placement={Placement.TOP}>\n <RawClickable\n as={Element}\n className={handleBasicClasses({\n prefix: `${CLASSNAME}__link`,\n isSelected: isCurrentPage,\n })}\n ref={ref as React.Ref<any>}\n aria-current={isCurrentPage ? 'page' : undefined}\n {...forwardedProps}\n >\n {icon ? (\n <Icon className={`${CLASSNAME}__icon`} icon={icon} size={Size.xs} theme={theme} />\n ) : null}\n\n <Text as=\"span\" truncate className={`${CLASSNAME}__label`} ref={labelRef}>\n {label}\n </Text>\n </RawClickable>\n </Tooltip>\n </li>\n );\n }),\n {\n displayName: COMPONENT_NAME,\n className: CLASSNAME,\n },\n);\n","import { createContext } from 'react';\n\nimport { Orientation } from '@lumx/core/js/constants';\n\nexport const NavigationContext = createContext<{ orientation?: Orientation } | undefined>({\n orientation: Orientation.vertical,\n});\n","import { useRef, useState, useContext } from 'react';\n\nimport { mdiChevronDown, mdiChevronUp } from '@lumx/icons';\nimport { Icon, Size, Text, Orientation, Popover, Placement, Theme } from '@lumx/react';\nimport classNames from 'classnames';\nimport { getRootClassName, handleBasicClasses } from '@lumx/core/js/utils/className';\nimport { HasClassName } from '@lumx/react/utils/type';\nimport { ThemeProvider, useTheme } from '@lumx/react/utils/theme/ThemeContext';\nimport { useId } from '@lumx/react/hooks/useId';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\n\nimport { RawClickable } from '@lumx/react/utils/react/RawClickable';\nimport { CLASSNAME as ITEM_CLASSNAME } from './NavigationItem';\nimport { NavigationContext } from './context';\n\nexport interface NavigationSectionProps extends React.ComponentPropsWithoutRef<'button'>, HasClassName {\n /** Items inside the section */\n children: React.ReactNode;\n /** Icon (SVG path). */\n icon?: string;\n /** Label content. */\n label: string | React.ReactNode;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'NavigationSection';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = getRootClassName(COMPONENT_NAME);\n\nexport const NavigationSection = forwardRef<NavigationSectionProps, HTMLLIElement>((props, ref) => {\n const { children, className, label, icon, ...forwardedProps } = props;\n const [isOpen, setIsOpen] = useState(false);\n const buttonRef = useRef<HTMLButtonElement>(null);\n const sectionId = useId();\n const { orientation } = useContext(NavigationContext) || {};\n const theme = useTheme();\n const isDropdown = orientation === Orientation.horizontal;\n return (\n <li\n className={classNames(\n className,\n CLASSNAME,\n ITEM_CLASSNAME,\n handleBasicClasses({\n prefix: ITEM_CLASSNAME,\n theme,\n }),\n )}\n ref={ref}\n >\n <RawClickable<'button'>\n as=\"button\"\n {...forwardedProps}\n aria-controls={sectionId}\n aria-expanded={isOpen}\n className={classNames(`${ITEM_CLASSNAME}__link`)}\n ref={buttonRef}\n onClick={(event) => {\n setIsOpen(!isOpen);\n event.stopPropagation();\n }}\n >\n {icon ? <Icon className={`${ITEM_CLASSNAME}__icon`} icon={icon} size={Size.xs} /> : null}\n\n <Text as=\"span\" truncate className={`${ITEM_CLASSNAME}__label`} ref={ref}>\n {label}\n </Text>\n <Icon\n className={classNames(`${ITEM_CLASSNAME}__icon`, `${CLASSNAME}__chevron`)}\n icon={isOpen ? mdiChevronUp : mdiChevronDown}\n />\n </RawClickable>\n {isOpen &&\n (isDropdown ? (\n <Popover\n anchorRef={buttonRef}\n isOpen={isOpen}\n placement={Placement.BOTTOM_START}\n usePortal={false}\n closeOnClickAway\n closeOnEscape\n onClick={() => setIsOpen(false)}\n onClose={() => setIsOpen(false)}\n zIndex={996}\n >\n <ThemeProvider value={Theme.light}>\n <ul className={`${CLASSNAME}__drawer--popover`} id={sectionId}>\n <NavigationContext.Provider value={{ orientation: Orientation.vertical }}>\n {children}\n </NavigationContext.Provider>\n </ul>\n </ThemeProvider>\n </Popover>\n ) : (\n <ul className={`${CLASSNAME}__drawer`} id={sectionId}>\n {children}\n </ul>\n ))}\n </li>\n );\n});\nNavigationSection.displayName = COMPONENT_NAME;\nNavigationSection.className = CLASSNAME;\n","import classNames from 'classnames';\n\nimport { HasAriaLabelOrLabelledBy, HasClassName, HasTheme } from '@lumx/react/utils/type';\nimport { getRootClassName, handleBasicClasses } from '@lumx/core/js/utils/className';\nimport { Orientation, Theme } from '@lumx/react';\nimport { ThemeProvider, useTheme } from '@lumx/react/utils/theme/ThemeContext';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\n\nimport { NavigationSection } from './NavigationSection';\nimport { NavigationItem } from './NavigationItem';\nimport { NavigationContext } from './context';\n\nexport type NavigationProps = React.ComponentProps<'nav'> &\n HasClassName &\n HasTheme & {\n /** Content of the navigation. These components should be of type NavigationItem to be rendered */\n children?: React.ReactNode;\n orientation?: Orientation;\n } & HasAriaLabelOrLabelledBy;\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'Navigation';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = getRootClassName(COMPONENT_NAME);\n\n/**\n * Component default props\n */\nconst DEFAULT_PROPS = {\n orientation: Orientation.vertical,\n};\n\ntype SubComponents = {\n Section: typeof NavigationSection;\n Item: typeof NavigationItem;\n};\n\nexport const Navigation = forwardRef<NavigationProps, HTMLElement, SubComponents>((props, ref) => {\n const defaultTheme = useTheme() || Theme.light;\n const {\n children,\n className,\n theme = defaultTheme,\n orientation = DEFAULT_PROPS.orientation,\n ...forwardedProps\n } = props;\n return (\n <ThemeProvider value={theme}>\n <nav\n className={classNames(\n className,\n handleBasicClasses({\n prefix: CLASSNAME,\n theme,\n orientation,\n }),\n )}\n ref={ref}\n {...forwardedProps}\n >\n <NavigationContext.Provider value={{ orientation }}>\n <ul className={`${CLASSNAME}__list`}>{children}</ul>\n </NavigationContext.Provider>\n </nav>\n </ThemeProvider>\n );\n});\nNavigation.displayName = COMPONENT_NAME;\nNavigation.className = CLASSNAME;\nNavigation.defaultProps = DEFAULT_PROPS;\n\n// Sub components\nNavigation.Section = NavigationSection;\nNavigation.Item = NavigationItem;\n"],"names":["COMPONENT_NAME","CLASSNAME","getRootClassName","NavigationItem","Object","assign","forwardRefPolymorphic","props","ref","className","icon","label","isCurrentPage","as","Element","forwardedProps","theme","useTheme","tooltipLabel","labelRef","useOverflowTooltipLabel","React","createElement","classNames","handleBasicClasses","prefix","Tooltip","placement","Placement","TOP","RawClickable","_extends","isSelected","undefined","Icon","size","Size","xs","Text","truncate","displayName","NavigationContext","createContext","orientation","Orientation","vertical","NavigationSection","forwardRef","children","isOpen","setIsOpen","useState","buttonRef","useRef","sectionId","useId","useContext","isDropdown","horizontal","ITEM_CLASSNAME","onClick","event","stopPropagation","mdiChevronUp","mdiChevronDown","Popover","anchorRef","BOTTOM_START","usePortal","closeOnClickAway","closeOnEscape","onClose","zIndex","ThemeProvider","value","Theme","light","id","Provider","DEFAULT_PROPS","Navigation","defaultTheme","defaultProps","Section","Item"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"1deba7d7.js","sources":["../../src/components/navigation/NavigationItem.tsx","../../src/components/navigation/context.tsx","../../src/components/navigation/NavigationSection.tsx","../../src/components/navigation/Navigation.tsx"],"sourcesContent":["import { ElementType, ReactNode } from 'react';\nimport { Icon, Placement, Size, Tooltip, Text } from '@lumx/react';\nimport { getRootClassName, handleBasicClasses } from '@lumx/core/js/utils/className';\nimport { ComponentRef, HasClassName, HasPolymorphicAs, HasRequiredLinkHref, HasTheme } from '@lumx/react/utils/type';\nimport classNames from 'classnames';\nimport { forwardRefPolymorphic } from '@lumx/react/utils/react/forwardRefPolymorphic';\nimport { useTheme } from '@lumx/react/utils/theme/ThemeContext';\nimport { useOverflowTooltipLabel } from '@lumx/react/hooks/useOverflowTooltipLabel';\nimport { RawClickable } from '@lumx/react/utils/react/RawClickable';\n\ntype BaseNavigationItemProps = {\n /** Icon (SVG path). */\n icon?: string;\n /** Label content. */\n label: ReactNode;\n /** Mark as the current page link */\n isCurrentPage?: boolean;\n};\n\n/**\n * Navigation item props\n */\nexport type NavigationItemProps<E extends ElementType = 'a'> = HasPolymorphicAs<E> &\n HasTheme &\n HasClassName &\n BaseNavigationItemProps &\n HasRequiredLinkHref<E>;\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'NavigationItem';\n\n/**\n * Component default class name and class prefix.\n */\nexport const CLASSNAME = getRootClassName(COMPONENT_NAME);\n\nexport const NavigationItem = Object.assign(\n forwardRefPolymorphic(<E extends ElementType = 'a'>(props: NavigationItemProps<E>, ref: ComponentRef<E>) => {\n const { className, icon, label, isCurrentPage, as: Element = 'a', ...forwardedProps } = props;\n const theme = useTheme();\n const { tooltipLabel, labelRef } = useOverflowTooltipLabel(label);\n\n return (\n <li\n className={classNames(\n className,\n handleBasicClasses({\n prefix: CLASSNAME,\n theme,\n }),\n )}\n >\n <Tooltip label={tooltipLabel} placement={Placement.TOP}>\n <RawClickable\n as={Element}\n className={handleBasicClasses({\n prefix: `${CLASSNAME}__link`,\n isSelected: isCurrentPage,\n })}\n ref={ref as React.Ref<any>}\n aria-current={isCurrentPage ? 'page' : undefined}\n {...forwardedProps}\n >\n {icon ? (\n <Icon className={`${CLASSNAME}__icon`} icon={icon} size={Size.xs} theme={theme} />\n ) : null}\n\n <Text as=\"span\" truncate className={`${CLASSNAME}__label`} ref={labelRef}>\n {label}\n </Text>\n </RawClickable>\n </Tooltip>\n </li>\n );\n }),\n {\n displayName: COMPONENT_NAME,\n className: CLASSNAME,\n },\n);\n","import { createContext } from 'react';\n\nimport { Orientation } from '@lumx/core/js/constants';\n\nexport const NavigationContext = createContext<{ orientation?: Orientation } | undefined>({\n orientation: Orientation.vertical,\n});\n","import { useRef, useState, useContext } from 'react';\n\nimport { mdiChevronDown, mdiChevronUp } from '@lumx/icons';\nimport { Icon, Size, Text, Orientation, Popover, Placement, Theme } from '@lumx/react';\nimport classNames from 'classnames';\nimport { getRootClassName, handleBasicClasses } from '@lumx/core/js/utils/className';\nimport { HasClassName } from '@lumx/react/utils/type';\nimport { ThemeProvider, useTheme } from '@lumx/react/utils/theme/ThemeContext';\nimport { useId } from '@lumx/react/hooks/useId';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\n\nimport { RawClickable } from '@lumx/react/utils/react/RawClickable';\nimport { CLASSNAME as ITEM_CLASSNAME } from './NavigationItem';\nimport { NavigationContext } from './context';\n\nexport interface NavigationSectionProps extends React.ComponentPropsWithoutRef<'button'>, HasClassName {\n /** Items inside the section */\n children: React.ReactNode;\n /** Icon (SVG path). */\n icon?: string;\n /** Label content. */\n label: string | React.ReactNode;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'NavigationSection';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = getRootClassName(COMPONENT_NAME);\n\nexport const NavigationSection = forwardRef<NavigationSectionProps, HTMLLIElement>((props, ref) => {\n const { children, className, label, icon, ...forwardedProps } = props;\n const [isOpen, setIsOpen] = useState(false);\n const buttonRef = useRef<HTMLButtonElement>(null);\n const sectionId = useId();\n const { orientation } = useContext(NavigationContext) || {};\n const theme = useTheme();\n const isDropdown = orientation === Orientation.horizontal;\n return (\n <li\n className={classNames(\n className,\n CLASSNAME,\n ITEM_CLASSNAME,\n handleBasicClasses({\n prefix: ITEM_CLASSNAME,\n theme,\n }),\n )}\n ref={ref}\n >\n <RawClickable<'button'>\n as=\"button\"\n {...forwardedProps}\n aria-controls={sectionId}\n aria-expanded={isOpen}\n className={classNames(`${ITEM_CLASSNAME}__link`)}\n ref={buttonRef}\n onClick={(event) => {\n setIsOpen(!isOpen);\n event.stopPropagation();\n }}\n >\n {icon ? <Icon className={`${ITEM_CLASSNAME}__icon`} icon={icon} size={Size.xs} /> : null}\n\n <Text as=\"span\" truncate className={`${ITEM_CLASSNAME}__label`} ref={ref}>\n {label}\n </Text>\n <Icon\n className={classNames(`${ITEM_CLASSNAME}__icon`, `${CLASSNAME}__chevron`)}\n icon={isOpen ? mdiChevronUp : mdiChevronDown}\n />\n </RawClickable>\n {isOpen &&\n (isDropdown ? (\n <Popover\n anchorRef={buttonRef}\n isOpen={isOpen}\n placement={Placement.BOTTOM_START}\n usePortal={false}\n closeOnClickAway\n closeOnEscape\n onClick={() => setIsOpen(false)}\n onClose={() => setIsOpen(false)}\n zIndex={996}\n >\n <ThemeProvider value={Theme.light}>\n <ul className={`${CLASSNAME}__drawer--popover`} id={sectionId}>\n <NavigationContext.Provider value={{ orientation: Orientation.vertical }}>\n {children}\n </NavigationContext.Provider>\n </ul>\n </ThemeProvider>\n </Popover>\n ) : (\n <ul className={`${CLASSNAME}__drawer`} id={sectionId}>\n {children}\n </ul>\n ))}\n </li>\n );\n});\nNavigationSection.displayName = COMPONENT_NAME;\nNavigationSection.className = CLASSNAME;\n","import classNames from 'classnames';\n\nimport { HasAriaLabelOrLabelledBy, HasClassName, HasTheme } from '@lumx/react/utils/type';\nimport { getRootClassName, handleBasicClasses } from '@lumx/core/js/utils/className';\nimport { Orientation, Theme } from '@lumx/react';\nimport { ThemeProvider, useTheme } from '@lumx/react/utils/theme/ThemeContext';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\n\nimport { NavigationSection } from './NavigationSection';\nimport { NavigationItem } from './NavigationItem';\nimport { NavigationContext } from './context';\n\nexport type NavigationProps = React.ComponentProps<'nav'> &\n HasClassName &\n HasTheme & {\n /** Content of the navigation. These components should be of type NavigationItem to be rendered */\n children?: React.ReactNode;\n orientation?: Orientation;\n } & HasAriaLabelOrLabelledBy;\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'Navigation';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = getRootClassName(COMPONENT_NAME);\n\n/**\n * Component default props\n */\nconst DEFAULT_PROPS = {\n orientation: Orientation.vertical,\n};\n\ntype SubComponents = {\n Section: typeof NavigationSection;\n Item: typeof NavigationItem;\n};\n\nexport const Navigation = forwardRef<NavigationProps, HTMLElement, SubComponents>((props, ref) => {\n const defaultTheme = useTheme() || Theme.light;\n const {\n children,\n className,\n theme = defaultTheme,\n orientation = DEFAULT_PROPS.orientation,\n ...forwardedProps\n } = props;\n return (\n <ThemeProvider value={theme}>\n <nav\n className={classNames(\n className,\n handleBasicClasses({\n prefix: CLASSNAME,\n theme,\n orientation,\n }),\n )}\n ref={ref}\n {...forwardedProps}\n >\n <NavigationContext.Provider value={{ orientation }}>\n <ul className={`${CLASSNAME}__list`}>{children}</ul>\n </NavigationContext.Provider>\n </nav>\n </ThemeProvider>\n );\n});\nNavigation.displayName = COMPONENT_NAME;\nNavigation.className = CLASSNAME;\nNavigation.defaultProps = DEFAULT_PROPS;\n\n// Sub components\nNavigation.Section = NavigationSection;\nNavigation.Item = NavigationItem;\n"],"names":["COMPONENT_NAME","CLASSNAME","getRootClassName","NavigationItem","Object","assign","forwardRefPolymorphic","props","ref","className","icon","label","isCurrentPage","as","Element","forwardedProps","theme","useTheme","tooltipLabel","labelRef","useOverflowTooltipLabel","_jsx","classNames","handleBasicClasses","prefix","children","Tooltip","placement","Placement","TOP","_jsxs","RawClickable","isSelected","undefined","Icon","size","Size","xs","Text","truncate","displayName","NavigationContext","createContext","orientation","Orientation","vertical","NavigationSection","forwardRef","isOpen","setIsOpen","useState","buttonRef","useRef","sectionId","useId","useContext","isDropdown","horizontal","ITEM_CLASSNAME","onClick","event","stopPropagation","mdiChevronUp","mdiChevronDown","Popover","anchorRef","BOTTOM_START","usePortal","closeOnClickAway","closeOnEscape","onClose","zIndex","ThemeProvider","value","Theme","light","id","Provider","DEFAULT_PROPS","Navigation","defaultTheme","defaultProps","Section","Item"],"mappings":"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"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { m as getRootClassName, n as forwardRef, _ as _extends, l as classNames } from './d3321a86.js';
|
|
2
1
|
import { useEffect, useRef, useMemo, cloneElement } from 'react';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
2
|
+
import { m as getRootClassName, n as forwardRef, l as classNames } from './6589b796.js';
|
|
3
|
+
import { L as List } from './f5508d3d.js';
|
|
4
|
+
import { P as Popover } from './84dfe68f.js';
|
|
5
5
|
import { i as isComponent } from './78df9309.js';
|
|
6
|
-
import { P as Placement } from './
|
|
6
|
+
import { P as Placement } from './4cd870a5.js';
|
|
7
|
+
import { jsx } from 'react/jsx-runtime';
|
|
7
8
|
|
|
8
9
|
// The error margin in px we want to have for triggering infinite scroll
|
|
9
10
|
const SCROLL_TRIGGER_MARGIN = 5;
|
|
@@ -46,10 +47,6 @@ const useInfiniteScroll = (ref, callback, callbackOnMount = false, scrollTrigger
|
|
|
46
47
|
}, [callback, callbackOnMount]);
|
|
47
48
|
};
|
|
48
49
|
|
|
49
|
-
/**
|
|
50
|
-
* Defines the props of the component.
|
|
51
|
-
*/
|
|
52
|
-
|
|
53
50
|
/**
|
|
54
51
|
* Component display name.
|
|
55
52
|
*/
|
|
@@ -117,9 +114,9 @@ const Dropdown = forwardRef((props, ref) => {
|
|
|
117
114
|
isClickable: true
|
|
118
115
|
}) : children;
|
|
119
116
|
}, [children, closeOnClick, onClose]);
|
|
120
|
-
return isOpen ? /*#__PURE__*/
|
|
121
|
-
ref: ref
|
|
122
|
-
|
|
117
|
+
return isOpen ? /*#__PURE__*/jsx(Popover, {
|
|
118
|
+
ref: ref,
|
|
119
|
+
...forwardedProps,
|
|
123
120
|
focusAnchorOnClose: focusAnchorOnClose,
|
|
124
121
|
anchorRef: anchorRef,
|
|
125
122
|
className: classNames(className, CLASSNAME),
|
|
@@ -133,15 +130,17 @@ const Dropdown = forwardRef((props, ref) => {
|
|
|
133
130
|
offset: offset,
|
|
134
131
|
onClose: onClose,
|
|
135
132
|
placement: placement,
|
|
136
|
-
zIndex: zIndex
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
133
|
+
zIndex: zIndex,
|
|
134
|
+
children: /*#__PURE__*/jsx("div", {
|
|
135
|
+
className: `${CLASSNAME}__menu`,
|
|
136
|
+
ref: innerRef,
|
|
137
|
+
children: popperElement
|
|
138
|
+
})
|
|
139
|
+
}) : null;
|
|
141
140
|
});
|
|
142
141
|
Dropdown.displayName = COMPONENT_NAME;
|
|
143
142
|
Dropdown.className = CLASSNAME;
|
|
144
143
|
Dropdown.defaultProps = DEFAULT_PROPS;
|
|
145
144
|
|
|
146
145
|
export { Dropdown };
|
|
147
|
-
//# sourceMappingURL=
|
|
146
|
+
//# sourceMappingURL=1ea72630.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"2938a251.js","sources":["../../src/hooks/useInfiniteScroll.tsx","../../src/components/dropdown/Dropdown.tsx"],"sourcesContent":["import { useEffect } from 'react';\n\ntype useInfiniteScrollType = (\n ref: React.RefObject<HTMLElement>,\n callback?: EventCallback,\n callbackOnMount?: boolean,\n) => void;\ntype EventCallback = (evt?: Event) => void;\n\n// The error margin in px we want to have for triggering infinite scroll\nconst SCROLL_TRIGGER_MARGIN = 5;\n\n/**\n * Listen to clicks away from a given element and callback the passed in function.\n *\n * @param ref A reference to the element on which you want to listen scroll event.\n * @param [callback] A callback function to call when the bottom of the reference element is reached.\n * @param [callbackOnMount] A callback function to call when the component is mounted.\n */\nexport const useInfiniteScroll: useInfiniteScrollType = (\n ref,\n callback,\n callbackOnMount = false,\n scrollTriggerMargin = SCROLL_TRIGGER_MARGIN,\n) => {\n useEffect(() => {\n const { current } = ref;\n if (!callback || !current) {\n return undefined;\n }\n\n const isAtBottom = () =>\n Boolean(\n current && current.scrollHeight - (current.scrollTop + current.clientHeight) <= scrollTriggerMargin,\n );\n\n const onScroll = (e?: Event): void => {\n if (isAtBottom()) {\n callback(e);\n }\n };\n\n if (isAtBottom()) {\n onScroll();\n }\n\n current.addEventListener('scroll', onScroll);\n current.addEventListener('resize', onScroll);\n return () => {\n current.removeEventListener('scroll', onScroll);\n current.removeEventListener('resize', onScroll);\n };\n }, [ref, callback, scrollTriggerMargin]);\n\n useEffect(() => {\n if (callback && callbackOnMount) {\n callback();\n }\n }, [callback, callbackOnMount]);\n};\n","import { cloneElement, useMemo, useRef } from 'react';\n\nimport classNames from 'classnames';\n\nimport { List, ListProps } from '@lumx/react/components/list/List';\nimport { Popover, PopoverProps } from '@lumx/react/components/popover/Popover';\nimport { useInfiniteScroll } from '@lumx/react/hooks/useInfiniteScroll';\nimport { GenericProps, isComponent } from '@lumx/react/utils/type';\nimport { getRootClassName } from '@lumx/core/js/utils/className';\nimport { Offset, Placement } from '@lumx/react/components/popover/constants';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\n\n/**\n * Defines the props of the component.\n */\nexport interface DropdownProps extends GenericProps {\n /**\n * Reference to the element around which the dropdown is placed.\n * @see {@link PopoverProps#anchorRef}\n */\n anchorRef: PopoverProps['anchorRef'];\n /** Dropdown content. */\n children: React.ReactNode;\n /**\n * Whether a click anywhere out of the Dropdown would close it or not.\n * @see {@link PopoverProps#closeOnClickAway}\n */\n closeOnClickAway?: boolean;\n /**\n * Whether to close the Dropdown when clicking in it or not.\n */\n closeOnClick?: boolean;\n /**\n * Whether an escape key press would close the Dropdown or not.\n * @see {@link PopoverProps#closeOnEscape}\n */\n closeOnEscape?: boolean;\n /**\n * Manage dropdown width:\n * - `maxWidth`: dropdown not bigger than anchor\n * - `minWidth` or `true`: dropdown not smaller than anchor\n * - `width`: dropdown equal to the anchor.\n * @see {@link PopoverProps#fitToAnchorWidth}\n */\n fitToAnchorWidth?: PopoverProps['fitToAnchorWidth'];\n /**\n * Whether the dropdown should shrink to fit within the viewport height or not.\n * @see {@link PopoverProps#fitWithinViewportHeight}\n */\n fitWithinViewportHeight?: boolean;\n /**\n * Whether the dropdown should be displayed or not. Useful to control the Dropdown from outside the component.\n * @see {@link PopoverProps#isOpen}\n */\n isOpen: boolean;\n /**\n * Offset applied to the Dropdown position.\n * @see {@link PopoverProps#offset}\n */\n offset?: Offset;\n /**\n * Preferred Dropdown placement against the anchor element.\n * @see {@link PopoverProps#placement}\n */\n placement?: Placement;\n /** Whether the focus should be set on the list when the dropdown is open or not. */\n shouldFocusOnOpen?: boolean;\n /** Whether the dropdown should be rendered into a DOM node that exists outside the DOM hierarchy of the parent component. */\n usePortal?: boolean;\n /** Whether the focus should go back on the anchor when dropdown closes and focus is within. */\n focusAnchorOnClose?: boolean;\n /**\n * Z-axis position.\n * @see {@link PopoverProps#zIndex}\n */\n zIndex?: number;\n /**\n * On close callback.\n * @see {@link PopoverProps#onClose}\n */\n onClose?(): void;\n /** On scroll end callback. */\n onInfiniteScroll?(): void;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'Dropdown';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = getRootClassName(COMPONENT_NAME);\n\n/**\n * Component default props.\n */\nconst DEFAULT_PROPS: Partial<DropdownProps> = {\n closeOnClick: true,\n closeOnClickAway: true,\n closeOnEscape: true,\n fitToAnchorWidth: true,\n fitWithinViewportHeight: true,\n placement: Placement.BOTTOM_START,\n shouldFocusOnOpen: true,\n focusAnchorOnClose: true,\n};\n\n/**\n * Dropdown component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const Dropdown = forwardRef<DropdownProps, HTMLDivElement>((props, ref) => {\n const {\n anchorRef,\n children,\n className,\n closeOnClick = DEFAULT_PROPS.closeOnClick,\n closeOnClickAway = DEFAULT_PROPS.closeOnClickAway,\n closeOnEscape = DEFAULT_PROPS.closeOnEscape,\n fitToAnchorWidth = DEFAULT_PROPS.fitToAnchorWidth,\n fitWithinViewportHeight = DEFAULT_PROPS.fitWithinViewportHeight,\n isOpen,\n offset,\n focusAnchorOnClose = DEFAULT_PROPS.focusAnchorOnClose,\n onClose,\n onInfiniteScroll,\n placement = DEFAULT_PROPS.placement,\n shouldFocusOnOpen = DEFAULT_PROPS.shouldFocusOnOpen,\n zIndex,\n ...forwardedProps\n } = props;\n const innerRef = useRef<HTMLDivElement>(null);\n const listElement = useRef(null);\n\n useInfiniteScroll(innerRef, onInfiniteScroll);\n\n const popperElement = useMemo(() => {\n return !Array.isArray(children) && isComponent(List)(children)\n ? cloneElement<ListProps>(children, {\n ...children.props,\n ref: listElement,\n onClick(evt: MouseEvent) {\n children.props.onClick?.(evt);\n\n if (closeOnClick) {\n onClose?.();\n }\n },\n isClickable: true,\n })\n : children;\n }, [children, closeOnClick, onClose]);\n\n return isOpen ? (\n <Popover\n ref={ref}\n {...forwardedProps}\n focusAnchorOnClose={focusAnchorOnClose}\n anchorRef={anchorRef}\n className={classNames(className, CLASSNAME)}\n elevation={0 as any}\n closeOnClickAway={closeOnClickAway}\n closeOnEscape={closeOnEscape}\n fitToAnchorWidth={fitToAnchorWidth}\n fitWithinViewportHeight={fitWithinViewportHeight}\n focusElement={shouldFocusOnOpen ? listElement : undefined}\n isOpen={isOpen}\n offset={offset}\n onClose={onClose}\n placement={placement}\n zIndex={zIndex}\n >\n <div className={`${CLASSNAME}__menu`} ref={innerRef}>\n {popperElement}\n </div>\n </Popover>\n ) : null;\n});\nDropdown.displayName = COMPONENT_NAME;\nDropdown.className = CLASSNAME;\nDropdown.defaultProps = DEFAULT_PROPS;\n"],"names":["SCROLL_TRIGGER_MARGIN","useInfiniteScroll","ref","callback","callbackOnMount","scrollTriggerMargin","useEffect","current","undefined","isAtBottom","Boolean","scrollHeight","scrollTop","clientHeight","onScroll","e","addEventListener","removeEventListener","COMPONENT_NAME","CLASSNAME","getRootClassName","DEFAULT_PROPS","closeOnClick","closeOnClickAway","closeOnEscape","fitToAnchorWidth","fitWithinViewportHeight","placement","Placement","BOTTOM_START","shouldFocusOnOpen","focusAnchorOnClose","Dropdown","forwardRef","props","anchorRef","children","className","isOpen","offset","onClose","onInfiniteScroll","zIndex","forwardedProps","innerRef","useRef","listElement","popperElement","useMemo","Array","isArray","isComponent","List","cloneElement","onClick","evt","isClickable","React","createElement","Popover","_extends","classNames","elevation","focusElement","displayName","defaultProps"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"1ea72630.js","sources":["../../src/hooks/useInfiniteScroll.tsx","../../src/components/dropdown/Dropdown.tsx"],"sourcesContent":["import { useEffect } from 'react';\n\ntype useInfiniteScrollType = (\n ref: React.RefObject<HTMLElement>,\n callback?: EventCallback,\n callbackOnMount?: boolean,\n) => void;\ntype EventCallback = (evt?: Event) => void;\n\n// The error margin in px we want to have for triggering infinite scroll\nconst SCROLL_TRIGGER_MARGIN = 5;\n\n/**\n * Listen to clicks away from a given element and callback the passed in function.\n *\n * @param ref A reference to the element on which you want to listen scroll event.\n * @param [callback] A callback function to call when the bottom of the reference element is reached.\n * @param [callbackOnMount] A callback function to call when the component is mounted.\n */\nexport const useInfiniteScroll: useInfiniteScrollType = (\n ref,\n callback,\n callbackOnMount = false,\n scrollTriggerMargin = SCROLL_TRIGGER_MARGIN,\n) => {\n useEffect(() => {\n const { current } = ref;\n if (!callback || !current) {\n return undefined;\n }\n\n const isAtBottom = () =>\n Boolean(\n current && current.scrollHeight - (current.scrollTop + current.clientHeight) <= scrollTriggerMargin,\n );\n\n const onScroll = (e?: Event): void => {\n if (isAtBottom()) {\n callback(e);\n }\n };\n\n if (isAtBottom()) {\n onScroll();\n }\n\n current.addEventListener('scroll', onScroll);\n current.addEventListener('resize', onScroll);\n return () => {\n current.removeEventListener('scroll', onScroll);\n current.removeEventListener('resize', onScroll);\n };\n }, [ref, callback, scrollTriggerMargin]);\n\n useEffect(() => {\n if (callback && callbackOnMount) {\n callback();\n }\n }, [callback, callbackOnMount]);\n};\n","import { cloneElement, useMemo, useRef } from 'react';\n\nimport classNames from 'classnames';\n\nimport { List, ListProps } from '@lumx/react/components/list/List';\nimport { Popover, PopoverProps } from '@lumx/react/components/popover/Popover';\nimport { useInfiniteScroll } from '@lumx/react/hooks/useInfiniteScroll';\nimport { GenericProps, isComponent } from '@lumx/react/utils/type';\nimport { getRootClassName } from '@lumx/core/js/utils/className';\nimport { Offset, Placement } from '@lumx/react/components/popover/constants';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\n\n/**\n * Defines the props of the component.\n */\nexport interface DropdownProps extends GenericProps {\n /**\n * Reference to the element around which the dropdown is placed.\n * @see {@link PopoverProps#anchorRef}\n */\n anchorRef: PopoverProps['anchorRef'];\n /** Dropdown content. */\n children: React.ReactNode;\n /**\n * Whether a click anywhere out of the Dropdown would close it or not.\n * @see {@link PopoverProps#closeOnClickAway}\n */\n closeOnClickAway?: boolean;\n /**\n * Whether to close the Dropdown when clicking in it or not.\n */\n closeOnClick?: boolean;\n /**\n * Whether an escape key press would close the Dropdown or not.\n * @see {@link PopoverProps#closeOnEscape}\n */\n closeOnEscape?: boolean;\n /**\n * Manage dropdown width:\n * - `maxWidth`: dropdown not bigger than anchor\n * - `minWidth` or `true`: dropdown not smaller than anchor\n * - `width`: dropdown equal to the anchor.\n * @see {@link PopoverProps#fitToAnchorWidth}\n */\n fitToAnchorWidth?: PopoverProps['fitToAnchorWidth'];\n /**\n * Whether the dropdown should shrink to fit within the viewport height or not.\n * @see {@link PopoverProps#fitWithinViewportHeight}\n */\n fitWithinViewportHeight?: boolean;\n /**\n * Whether the dropdown should be displayed or not. Useful to control the Dropdown from outside the component.\n * @see {@link PopoverProps#isOpen}\n */\n isOpen: boolean;\n /**\n * Offset applied to the Dropdown position.\n * @see {@link PopoverProps#offset}\n */\n offset?: Offset;\n /**\n * Preferred Dropdown placement against the anchor element.\n * @see {@link PopoverProps#placement}\n */\n placement?: Placement;\n /** Whether the focus should be set on the list when the dropdown is open or not. */\n shouldFocusOnOpen?: boolean;\n /** Whether the dropdown should be rendered into a DOM node that exists outside the DOM hierarchy of the parent component. */\n usePortal?: boolean;\n /** Whether the focus should go back on the anchor when dropdown closes and focus is within. */\n focusAnchorOnClose?: boolean;\n /**\n * Z-axis position.\n * @see {@link PopoverProps#zIndex}\n */\n zIndex?: number;\n /**\n * On close callback.\n * @see {@link PopoverProps#onClose}\n */\n onClose?(): void;\n /** On scroll end callback. */\n onInfiniteScroll?(): void;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'Dropdown';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = getRootClassName(COMPONENT_NAME);\n\n/**\n * Component default props.\n */\nconst DEFAULT_PROPS: Partial<DropdownProps> = {\n closeOnClick: true,\n closeOnClickAway: true,\n closeOnEscape: true,\n fitToAnchorWidth: true,\n fitWithinViewportHeight: true,\n placement: Placement.BOTTOM_START,\n shouldFocusOnOpen: true,\n focusAnchorOnClose: true,\n};\n\n/**\n * Dropdown component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const Dropdown = forwardRef<DropdownProps, HTMLDivElement>((props, ref) => {\n const {\n anchorRef,\n children,\n className,\n closeOnClick = DEFAULT_PROPS.closeOnClick,\n closeOnClickAway = DEFAULT_PROPS.closeOnClickAway,\n closeOnEscape = DEFAULT_PROPS.closeOnEscape,\n fitToAnchorWidth = DEFAULT_PROPS.fitToAnchorWidth,\n fitWithinViewportHeight = DEFAULT_PROPS.fitWithinViewportHeight,\n isOpen,\n offset,\n focusAnchorOnClose = DEFAULT_PROPS.focusAnchorOnClose,\n onClose,\n onInfiniteScroll,\n placement = DEFAULT_PROPS.placement,\n shouldFocusOnOpen = DEFAULT_PROPS.shouldFocusOnOpen,\n zIndex,\n ...forwardedProps\n } = props;\n const innerRef = useRef<HTMLDivElement>(null);\n const listElement = useRef(null);\n\n useInfiniteScroll(innerRef, onInfiniteScroll);\n\n const popperElement = useMemo(() => {\n return !Array.isArray(children) && isComponent(List)(children)\n ? cloneElement<ListProps>(children, {\n ...children.props,\n ref: listElement,\n onClick(evt: MouseEvent) {\n children.props.onClick?.(evt);\n\n if (closeOnClick) {\n onClose?.();\n }\n },\n isClickable: true,\n })\n : children;\n }, [children, closeOnClick, onClose]);\n\n return isOpen ? (\n <Popover\n ref={ref}\n {...forwardedProps}\n focusAnchorOnClose={focusAnchorOnClose}\n anchorRef={anchorRef}\n className={classNames(className, CLASSNAME)}\n elevation={0 as any}\n closeOnClickAway={closeOnClickAway}\n closeOnEscape={closeOnEscape}\n fitToAnchorWidth={fitToAnchorWidth}\n fitWithinViewportHeight={fitWithinViewportHeight}\n focusElement={shouldFocusOnOpen ? listElement : undefined}\n isOpen={isOpen}\n offset={offset}\n onClose={onClose}\n placement={placement}\n zIndex={zIndex}\n >\n <div className={`${CLASSNAME}__menu`} ref={innerRef}>\n {popperElement}\n </div>\n </Popover>\n ) : null;\n});\nDropdown.displayName = COMPONENT_NAME;\nDropdown.className = CLASSNAME;\nDropdown.defaultProps = DEFAULT_PROPS;\n"],"names":["SCROLL_TRIGGER_MARGIN","useInfiniteScroll","ref","callback","callbackOnMount","scrollTriggerMargin","useEffect","current","undefined","isAtBottom","Boolean","scrollHeight","scrollTop","clientHeight","onScroll","e","addEventListener","removeEventListener","COMPONENT_NAME","CLASSNAME","getRootClassName","DEFAULT_PROPS","closeOnClick","closeOnClickAway","closeOnEscape","fitToAnchorWidth","fitWithinViewportHeight","placement","Placement","BOTTOM_START","shouldFocusOnOpen","focusAnchorOnClose","Dropdown","forwardRef","props","anchorRef","children","className","isOpen","offset","onClose","onInfiniteScroll","zIndex","forwardedProps","innerRef","useRef","listElement","popperElement","useMemo","Array","isArray","isComponent","List","cloneElement","onClick","evt","isClickable","_jsx","Popover","classNames","elevation","focusElement","displayName","defaultProps"],"mappings":"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"}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import { Children } from 'react';
|
|
2
|
+
import { m as getRootClassName, n as forwardRef, b as Theme, l as classNames, c as Size } from './6589b796.js';
|
|
3
|
+
import { h as handleBasicClasses } from './e2afb13f.js';
|
|
4
|
+
import { u as useTheme } from './3181f000.js';
|
|
5
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
6
|
+
import { Avatar } from './74a4a214.js';
|
|
7
|
+
import { Tooltip } from './9a4dfad0.js';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Comment block variants.
|
|
11
|
+
*/
|
|
12
|
+
const CommentBlockVariant = {
|
|
13
|
+
indented: 'indented',
|
|
14
|
+
linear: 'linear'
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Defines the props of the component.
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Component display name.
|
|
23
|
+
*/
|
|
24
|
+
const COMPONENT_NAME = 'CommentBlock';
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Component default class name and class prefix.
|
|
28
|
+
*/
|
|
29
|
+
const CLASSNAME = getRootClassName(COMPONENT_NAME);
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Component default props.
|
|
33
|
+
*/
|
|
34
|
+
const DEFAULT_PROPS = {
|
|
35
|
+
variant: CommentBlockVariant.indented
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* CommentBlock component.
|
|
40
|
+
*
|
|
41
|
+
* @param props Component props.
|
|
42
|
+
* @param ref Component ref.
|
|
43
|
+
* @return React element.
|
|
44
|
+
*/
|
|
45
|
+
const CommentBlock = forwardRef((props, ref) => {
|
|
46
|
+
const defaultTheme = useTheme() || Theme.light;
|
|
47
|
+
const {
|
|
48
|
+
actions,
|
|
49
|
+
avatarProps,
|
|
50
|
+
children,
|
|
51
|
+
className,
|
|
52
|
+
date,
|
|
53
|
+
fullDate,
|
|
54
|
+
hasActions,
|
|
55
|
+
headerActions,
|
|
56
|
+
isOpen,
|
|
57
|
+
isRelevant,
|
|
58
|
+
name,
|
|
59
|
+
onClick,
|
|
60
|
+
onMouseEnter,
|
|
61
|
+
onMouseLeave,
|
|
62
|
+
text,
|
|
63
|
+
theme = defaultTheme,
|
|
64
|
+
variant = DEFAULT_PROPS.variant,
|
|
65
|
+
...forwardedProps
|
|
66
|
+
} = props;
|
|
67
|
+
const hasChildren = Children.count(children) > 0;
|
|
68
|
+
return /*#__PURE__*/jsxs("div", {
|
|
69
|
+
ref: ref,
|
|
70
|
+
className: classNames(className, handleBasicClasses({
|
|
71
|
+
hasChildren: hasChildren && isOpen,
|
|
72
|
+
hasIndentedChildren: hasChildren && variant === CommentBlockVariant.indented,
|
|
73
|
+
hasLinearChildren: hasChildren && variant === CommentBlockVariant.linear,
|
|
74
|
+
isRelevant,
|
|
75
|
+
prefix: CLASSNAME,
|
|
76
|
+
theme
|
|
77
|
+
})),
|
|
78
|
+
...forwardedProps,
|
|
79
|
+
children: [/*#__PURE__*/jsxs("div", {
|
|
80
|
+
className: `${CLASSNAME}__wrapper`,
|
|
81
|
+
children: [/*#__PURE__*/jsx("div", {
|
|
82
|
+
className: `${CLASSNAME}__avatar`,
|
|
83
|
+
children: /*#__PURE__*/jsx(Avatar, {
|
|
84
|
+
...avatarProps,
|
|
85
|
+
size: Size.m,
|
|
86
|
+
onClick: onClick
|
|
87
|
+
})
|
|
88
|
+
}), /*#__PURE__*/jsxs("div", {
|
|
89
|
+
className: `${CLASSNAME}__container`,
|
|
90
|
+
children: [/*#__PURE__*/jsxs("div", {
|
|
91
|
+
className: `${CLASSNAME}__content`,
|
|
92
|
+
children: [/*#__PURE__*/jsxs("div", {
|
|
93
|
+
className: `${CLASSNAME}__meta`,
|
|
94
|
+
children: [name &&
|
|
95
|
+
/*#__PURE__*/
|
|
96
|
+
// eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions
|
|
97
|
+
jsx("span", {
|
|
98
|
+
className: `${CLASSNAME}__name`,
|
|
99
|
+
onClick: onClick,
|
|
100
|
+
onMouseEnter: onMouseEnter,
|
|
101
|
+
onMouseLeave: onMouseLeave,
|
|
102
|
+
children: name
|
|
103
|
+
}), headerActions && /*#__PURE__*/jsx("span", {
|
|
104
|
+
className: `${CLASSNAME}__header-actions`,
|
|
105
|
+
children: headerActions
|
|
106
|
+
})]
|
|
107
|
+
}), /*#__PURE__*/jsx("div", {
|
|
108
|
+
className: `${CLASSNAME}__text`,
|
|
109
|
+
children: text
|
|
110
|
+
}), date && (fullDate ? /*#__PURE__*/jsx(Tooltip, {
|
|
111
|
+
label: fullDate,
|
|
112
|
+
placement: "top",
|
|
113
|
+
children: /*#__PURE__*/jsx("span", {
|
|
114
|
+
className: `${CLASSNAME}__date`,
|
|
115
|
+
children: date
|
|
116
|
+
})
|
|
117
|
+
}) : /*#__PURE__*/jsx("span", {
|
|
118
|
+
className: `${CLASSNAME}__date`,
|
|
119
|
+
children: date
|
|
120
|
+
}))]
|
|
121
|
+
}), hasActions && /*#__PURE__*/jsx("div", {
|
|
122
|
+
className: `${CLASSNAME}__actions`,
|
|
123
|
+
children: actions
|
|
124
|
+
})]
|
|
125
|
+
})]
|
|
126
|
+
}), hasChildren && isOpen && /*#__PURE__*/jsx("div", {
|
|
127
|
+
className: `${CLASSNAME}__children`,
|
|
128
|
+
children: children
|
|
129
|
+
})]
|
|
130
|
+
});
|
|
131
|
+
});
|
|
132
|
+
CommentBlock.displayName = COMPONENT_NAME;
|
|
133
|
+
CommentBlock.className = CLASSNAME;
|
|
134
|
+
CommentBlock.defaultProps = DEFAULT_PROPS;
|
|
135
|
+
|
|
136
|
+
export { CommentBlock, CommentBlockVariant };
|
|
137
|
+
//# sourceMappingURL=21b83d16.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"5ba8fae8.js","sources":["../../src/components/comment-block/CommentBlock.tsx"],"sourcesContent":["import { Children, ReactNode } from 'react';\n\nimport classNames from 'classnames';\n\nimport { Avatar, Size, Theme, Tooltip } from '@lumx/react';\nimport { GenericProps, HasTheme, ValueOf } from '@lumx/react/utils/type';\nimport { getRootClassName, handleBasicClasses } from '@lumx/core/js/utils/className';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\n\nimport { useTheme } from '@lumx/react/utils/theme/ThemeContext';\nimport { AvatarProps } from '../avatar/Avatar';\n\n/**\n * Comment block variants.\n */\nexport const CommentBlockVariant = {\n indented: 'indented',\n linear: 'linear',\n} as const;\nexport type CommentBlockVariant = ValueOf<typeof CommentBlockVariant>;\n\n/**\n * Defines the props of the component.\n */\nexport interface CommentBlockProps extends GenericProps, HasTheme {\n /** Action toolbar content. */\n actions?: ReactNode;\n /** Props to pass to the avatar. */\n avatarProps: AvatarProps;\n /** Comment block replies. */\n children?: ReactNode;\n /** Comment date with the minimal timestamp information (xx minutes, x hours, yesterday, 6 days, Month Day, Month Day Year)*/\n date?: string;\n /** Comment date with the full timestamp information (day, month, year, time) */\n fullDate?: string;\n /** Whether the component has actions to display or not. */\n hasActions?: boolean;\n /** Action toolbar header content. */\n headerActions?: ReactNode;\n /** Whether the component is open or not. */\n isOpen?: boolean;\n /** Whether the comment is relevant or not. */\n isRelevant?: boolean;\n /** Comment author name. */\n name?: React.ReactNode;\n /**\n * On click callback.\n * @deprecated Use avatarProps instead and/or inject a clickable component in `name`\n */\n onClick?(): void;\n /**\n * On mouse enter callback.\n * @deprecated Use avatarProps instead and/or inject a clickable component in `name`\n */\n onMouseEnter?(): void;\n /**\n * On mouse leave callback.\n * @deprecated Use avatarProps instead and/or inject a clickable component in `name`\n */\n onMouseLeave?(): void;\n /** Comment content. */\n text: ReactNode | string;\n /** Comment variant. */\n variant?: CommentBlockVariant;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'CommentBlock';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = getRootClassName(COMPONENT_NAME);\n\n/**\n * Component default props.\n */\nconst DEFAULT_PROPS: Partial<CommentBlockProps> = {\n variant: CommentBlockVariant.indented,\n};\n\n/**\n * CommentBlock component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const CommentBlock = forwardRef<CommentBlockProps, HTMLDivElement>((props, ref) => {\n const defaultTheme = useTheme() || Theme.light;\n const {\n actions,\n avatarProps,\n children,\n className,\n date,\n fullDate,\n hasActions,\n headerActions,\n isOpen,\n isRelevant,\n name,\n onClick,\n onMouseEnter,\n onMouseLeave,\n text,\n theme = defaultTheme,\n variant = DEFAULT_PROPS.variant,\n ...forwardedProps\n } = props;\n const hasChildren = Children.count(children) > 0;\n\n return (\n <div\n ref={ref}\n className={classNames(\n className,\n handleBasicClasses({\n hasChildren: hasChildren && isOpen,\n hasIndentedChildren: hasChildren && variant === CommentBlockVariant.indented,\n hasLinearChildren: hasChildren && variant === CommentBlockVariant.linear,\n isRelevant,\n prefix: CLASSNAME,\n theme,\n }),\n )}\n {...forwardedProps}\n >\n <div className={`${CLASSNAME}__wrapper`}>\n <div className={`${CLASSNAME}__avatar`}>\n <Avatar {...avatarProps} size={Size.m} onClick={onClick} />\n </div>\n\n <div className={`${CLASSNAME}__container`}>\n <div className={`${CLASSNAME}__content`}>\n <div className={`${CLASSNAME}__meta`}>\n {name && (\n // eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions\n <span\n className={`${CLASSNAME}__name`}\n onClick={onClick}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n >\n {name}\n </span>\n )}\n {headerActions && <span className={`${CLASSNAME}__header-actions`}>{headerActions}</span>}\n </div>\n\n <div className={`${CLASSNAME}__text`}>{text}</div>\n {date &&\n (fullDate ? (\n <Tooltip label={fullDate} placement=\"top\">\n <span className={`${CLASSNAME}__date`}>{date}</span>\n </Tooltip>\n ) : (\n <span className={`${CLASSNAME}__date`}>{date}</span>\n ))}\n </div>\n {hasActions && <div className={`${CLASSNAME}__actions`}>{actions}</div>}\n </div>\n </div>\n {hasChildren && isOpen && <div className={`${CLASSNAME}__children`}>{children}</div>}\n </div>\n );\n});\nCommentBlock.displayName = COMPONENT_NAME;\nCommentBlock.className = CLASSNAME;\nCommentBlock.defaultProps = DEFAULT_PROPS;\n"],"names":["CommentBlockVariant","indented","linear","COMPONENT_NAME","CLASSNAME","getRootClassName","DEFAULT_PROPS","variant","CommentBlock","forwardRef","props","ref","defaultTheme","useTheme","Theme","light","actions","avatarProps","children","className","date","fullDate","hasActions","headerActions","isOpen","isRelevant","name","onClick","onMouseEnter","onMouseLeave","text","theme","forwardedProps","hasChildren","Children","count","React","createElement","_extends","classNames","handleBasicClasses","hasIndentedChildren","hasLinearChildren","prefix","Avatar","size","Size","m","Tooltip","label","placement","displayName","defaultProps"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"21b83d16.js","sources":["../../src/components/comment-block/CommentBlock.tsx"],"sourcesContent":["import { Children, ReactNode } from 'react';\n\nimport classNames from 'classnames';\n\nimport { Avatar, Size, Theme, Tooltip } from '@lumx/react';\nimport { GenericProps, HasTheme, ValueOf } from '@lumx/react/utils/type';\nimport { getRootClassName, handleBasicClasses } from '@lumx/core/js/utils/className';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\n\nimport { useTheme } from '@lumx/react/utils/theme/ThemeContext';\nimport { AvatarProps } from '../avatar/Avatar';\n\n/**\n * Comment block variants.\n */\nexport const CommentBlockVariant = {\n indented: 'indented',\n linear: 'linear',\n} as const;\nexport type CommentBlockVariant = ValueOf<typeof CommentBlockVariant>;\n\n/**\n * Defines the props of the component.\n */\nexport interface CommentBlockProps extends GenericProps, HasTheme {\n /** Action toolbar content. */\n actions?: ReactNode;\n /** Props to pass to the avatar. */\n avatarProps: AvatarProps;\n /** Comment block replies. */\n children?: ReactNode;\n /** Comment date with the minimal timestamp information (xx minutes, x hours, yesterday, 6 days, Month Day, Month Day Year)*/\n date?: string;\n /** Comment date with the full timestamp information (day, month, year, time) */\n fullDate?: string;\n /** Whether the component has actions to display or not. */\n hasActions?: boolean;\n /** Action toolbar header content. */\n headerActions?: ReactNode;\n /** Whether the component is open or not. */\n isOpen?: boolean;\n /** Whether the comment is relevant or not. */\n isRelevant?: boolean;\n /** Comment author name. */\n name?: React.ReactNode;\n /**\n * On click callback.\n * @deprecated Use avatarProps instead and/or inject a clickable component in `name`\n */\n onClick?(): void;\n /**\n * On mouse enter callback.\n * @deprecated Use avatarProps instead and/or inject a clickable component in `name`\n */\n onMouseEnter?(): void;\n /**\n * On mouse leave callback.\n * @deprecated Use avatarProps instead and/or inject a clickable component in `name`\n */\n onMouseLeave?(): void;\n /** Comment content. */\n text: ReactNode | string;\n /** Comment variant. */\n variant?: CommentBlockVariant;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'CommentBlock';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = getRootClassName(COMPONENT_NAME);\n\n/**\n * Component default props.\n */\nconst DEFAULT_PROPS: Partial<CommentBlockProps> = {\n variant: CommentBlockVariant.indented,\n};\n\n/**\n * CommentBlock component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const CommentBlock = forwardRef<CommentBlockProps, HTMLDivElement>((props, ref) => {\n const defaultTheme = useTheme() || Theme.light;\n const {\n actions,\n avatarProps,\n children,\n className,\n date,\n fullDate,\n hasActions,\n headerActions,\n isOpen,\n isRelevant,\n name,\n onClick,\n onMouseEnter,\n onMouseLeave,\n text,\n theme = defaultTheme,\n variant = DEFAULT_PROPS.variant,\n ...forwardedProps\n } = props;\n const hasChildren = Children.count(children) > 0;\n\n return (\n <div\n ref={ref}\n className={classNames(\n className,\n handleBasicClasses({\n hasChildren: hasChildren && isOpen,\n hasIndentedChildren: hasChildren && variant === CommentBlockVariant.indented,\n hasLinearChildren: hasChildren && variant === CommentBlockVariant.linear,\n isRelevant,\n prefix: CLASSNAME,\n theme,\n }),\n )}\n {...forwardedProps}\n >\n <div className={`${CLASSNAME}__wrapper`}>\n <div className={`${CLASSNAME}__avatar`}>\n <Avatar {...avatarProps} size={Size.m} onClick={onClick} />\n </div>\n\n <div className={`${CLASSNAME}__container`}>\n <div className={`${CLASSNAME}__content`}>\n <div className={`${CLASSNAME}__meta`}>\n {name && (\n // eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions\n <span\n className={`${CLASSNAME}__name`}\n onClick={onClick}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n >\n {name}\n </span>\n )}\n {headerActions && <span className={`${CLASSNAME}__header-actions`}>{headerActions}</span>}\n </div>\n\n <div className={`${CLASSNAME}__text`}>{text}</div>\n {date &&\n (fullDate ? (\n <Tooltip label={fullDate} placement=\"top\">\n <span className={`${CLASSNAME}__date`}>{date}</span>\n </Tooltip>\n ) : (\n <span className={`${CLASSNAME}__date`}>{date}</span>\n ))}\n </div>\n {hasActions && <div className={`${CLASSNAME}__actions`}>{actions}</div>}\n </div>\n </div>\n {hasChildren && isOpen && <div className={`${CLASSNAME}__children`}>{children}</div>}\n </div>\n );\n});\nCommentBlock.displayName = COMPONENT_NAME;\nCommentBlock.className = CLASSNAME;\nCommentBlock.defaultProps = DEFAULT_PROPS;\n"],"names":["CommentBlockVariant","indented","linear","COMPONENT_NAME","CLASSNAME","getRootClassName","DEFAULT_PROPS","variant","CommentBlock","forwardRef","props","ref","defaultTheme","useTheme","Theme","light","actions","avatarProps","children","className","date","fullDate","hasActions","headerActions","isOpen","isRelevant","name","onClick","onMouseEnter","onMouseLeave","text","theme","forwardedProps","hasChildren","Children","count","_jsxs","classNames","handleBasicClasses","hasIndentedChildren","hasLinearChildren","prefix","_jsx","Avatar","size","Size","m","Tooltip","label","placement","displayName","defaultProps"],"mappings":"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"}
|