UNPKG

20.3 kBSource Map (JSON)View Raw
1{"version":3,"file":"DropDown.js","sources":["../src/components/DropDown/DropDown.js"],"sourcesContent":["import React, { useState, useRef, useEffect, useCallback, useMemo } from 'react'\nimport PropTypes from 'prop-types'\nimport { Inside } from 'use-inside'\nimport { warnOnce, unselectable } from '../../utils'\nimport { GU, RADIUS, textStyle } from '../../style'\nimport { useTheme } from '../../theme'\nimport { IconDown } from '../../icons'\nimport { useViewport } from '../../providers/Viewport/Viewport'\nimport ButtonBase from '../ButtonBase/ButtonBase'\nimport Popover from '../Popover/Popover'\n\nconst MIN_WIDTH = 128\n\nfunction useDropDown({\n buttonRef,\n items,\n displayedLabel,\n onChange,\n placeholder,\n selected,\n}) {\n const [selectedLabel, setSelectedLabel] = useState(displayedLabel)\n const [opened, setOpened] = useState(false)\n\n const close = useCallback(() => {\n setOpened(false)\n\n if (buttonRef.current) {\n buttonRef.current.focus()\n }\n }, [buttonRef])\n\n const toggle = useCallback(() => setOpened(opened => !opened), [])\n\n const handleItemSelect = useCallback(\n index => {\n onChange(index)\n close()\n },\n [onChange, close]\n )\n\n useEffect(() => {\n if (selected === -1 || !items[selected]) {\n if (displayedLabel) {\n setSelectedLabel(displayedLabel)\n }\n return\n }\n setSelectedLabel(items[selected])\n }, [items, selected, displayedLabel])\n\n return {\n handleItemSelect,\n close,\n toggle,\n opened,\n selectedLabel,\n }\n}\n\nfunction useButtonRef(cb) {\n const buttonRef = useRef(null)\n\n const refCallback = useCallback(\n el => {\n if (el) {\n cb(el)\n }\n buttonRef.current = el\n },\n [cb]\n )\n\n return {\n buttonRef,\n refCallback,\n }\n}\n\nconst DropDown = React.memo(function DropDown({\n disabled,\n header,\n items,\n onChange,\n placeholder,\n renderLabel,\n selected,\n wide,\n width,\n\n // deprecated\n active,\n label,\n\n // rest\n ...props\n}) {\n if (active !== undefined) {\n warnOnce(\n 'DropDown:active',\n 'The “active” prop is deprecated. Please use “selected” to pass the selected index instead.'\n )\n }\n if (label !== undefined) {\n warnOnce(\n 'DropDown:label',\n 'DropDown: the “label” prop is deprecated, please use “placeholder” instead.'\n )\n }\n\n const theme = useTheme()\n const { width: vw } = useViewport()\n\n const [widthNoPx = MIN_WIDTH] = (width || '').split('px')\n const [buttonWidth, setButtonWidth] = useState(0)\n const [measureWidth, setMeasureWidth] = useState(true)\n\n // Adjust the button width if the item widths are larger than declared width\n const [placeholderMinWidth, setPlaceholderMinWidth] = useState(\n Math.min(widthNoPx, MIN_WIDTH)\n )\n const popoverRefCallback = useCallback(el => {\n if (!el) {\n return\n }\n setPlaceholderMinWidth(el.clientWidth)\n setMeasureWidth(false)\n }, [])\n useEffect(() => {\n setMeasureWidth(true)\n }, [vw, items])\n\n // Update the button width every time the reference updates\n const { refCallback, buttonRef } = useButtonRef(el => {\n setButtonWidth(el.clientWidth)\n })\n // And every time the viewport resizes\n useEffect(() => {\n if (!buttonRef.current) {\n return\n }\n setButtonWidth(buttonRef.current.clientWidth)\n }, [buttonRef, vw])\n\n const selectedIndex = useMemo(() => {\n if (selected !== undefined) {\n return selected\n }\n if (active !== undefined) {\n return active\n }\n return -1\n }, [active, selected])\n\n const {\n handleItemSelect,\n close,\n toggle,\n opened,\n selectedLabel,\n } = useDropDown({\n buttonRef,\n displayedLabel: placeholder || label,\n items,\n onChange,\n selected,\n })\n\n const closedWithChanges = !opened && selectedIndex !== -1\n const Label = renderLabel\n\n return (\n <Inside name=\"DropDown\">\n <ButtonBase\n ref={refCallback}\n disabled={disabled}\n onClick={toggle}\n focusRingRadius={RADIUS}\n focusRingSpacing={1}\n css={`\n display: ${wide ? 'flex' : 'inline-flex'};\n justify-content: space-between;\n align-items: center;\n height: ${5 * GU}px;\n padding-left: ${2 * GU}px;\n padding-right: ${1.5 * GU}px;\n width: ${width || (wide ? '100%' : 'auto')};\n min-width: ${wide ? 'auto' : `${placeholderMinWidth}px`};\n background: ${disabled ? theme.disabled : theme.surface};\n color: ${disabled ? theme.disabledContent : theme.surfaceContent};\n border: ${disabled ? 0 : 1}px solid\n ${closedWithChanges ? theme.selected : theme.border};\n ${textStyle('body2')};\n ${disabled\n ? 'font-weight: 600;'\n : `\n &:active {\n background: ${theme.surfacePressed};\n }\n `}\n `}\n {...props}\n >\n <div css=\"overflow: hidden;\">\n <Label selectedIndex={selectedIndex} selectedLabel={selectedLabel} />\n </div>\n <IconDown\n size=\"tiny\"\n css={`\n margin-left: ${1.5 * GU}px;\n color: ${disabled\n ? theme.disabledIcon\n : closedWithChanges\n ? theme.accent\n : theme.surfaceIcon};\n `}\n />\n </ButtonBase>\n {measureWidth && (\n <div\n css={`\n position: absolute;\n top: -100vh;\n left: -100vw;\n opacity: 0;\n visibility: hidden;\n `}\n >\n <PopoverContent\n refCallback={popoverRefCallback}\n buttonWidth={buttonWidth}\n header={header}\n items={items}\n />\n </div>\n )}\n <Popover onClose={close} opener={buttonRef.current} visible={opened}>\n <PopoverContent\n buttonWidth={buttonWidth}\n header={header}\n items={items}\n handleItemSelect={handleItemSelect}\n selectedIndex={selectedIndex}\n />\n </Popover>\n </Inside>\n )\n})\n\nDropDown.propTypes = {\n disabled: PropTypes.bool,\n header: PropTypes.node,\n items: PropTypes.arrayOf(PropTypes.node).isRequired,\n onChange: PropTypes.func.isRequired,\n placeholder: PropTypes.node,\n renderLabel: PropTypes.func,\n selected: PropTypes.number,\n wide: PropTypes.bool,\n width: PropTypes.string,\n\n // deprecated\n active: PropTypes.number,\n label: PropTypes.string,\n}\n\nDropDown.defaultProps = {\n placeholder: 'Select an item',\n renderLabel: ({ selectedLabel }) => selectedLabel,\n wide: false,\n}\n\nconst PopoverContent = React.memo(function PopoverContent({\n refCallback,\n buttonWidth,\n header,\n items,\n handleItemSelect,\n selectedIndex,\n}) {\n const theme = useTheme()\n return (\n <div\n css={`\n min-width: ${buttonWidth}px;\n color: ${theme.surfaceContentSecondary};\n `}\n >\n {header && (\n <div\n css={`\n padding: ${1.5 * GU}px ${2 * GU}px ${1.25 * GU}px;\n ${textStyle('label2')};\n ${unselectable};\n `}\n >\n {header}\n </div>\n )}\n <ul\n ref={refCallback}\n css={`\n margin: 0;\n padding: 0;\n list-style: none;\n width: 100%;\n `}\n >\n <Inside name=\"DropDown:menu\">\n {items.map((item, index) => {\n return (\n <Item\n key={index}\n index={index}\n onSelect={handleItemSelect}\n theme={theme}\n item={item}\n header={header}\n length={items.length}\n selected={selectedIndex}\n />\n )\n })}\n </Inside>\n </ul>\n </div>\n )\n})\n\nPopoverContent.propTypes = {\n refCallback: PropTypes.func.isRequired,\n buttonWidth: PropTypes.number.isRequired,\n header: PropTypes.node,\n items: PropTypes.array.isRequired,\n handleItemSelect: PropTypes.func.isRequired,\n selectedIndex: PropTypes.number.isRequired,\n}\n\nPopoverContent.defaultProps = {\n refCallback: () => null,\n handleItemSelect: () => null,\n selectedIndex: -1,\n}\n\nconst Item = React.memo(function Item({\n header,\n index,\n item,\n length,\n onSelect,\n selected,\n theme,\n}) {\n const handleClick = useCallback(() => {\n onSelect(index)\n }, [index, onSelect])\n\n return (\n <li>\n <ButtonBase\n onClick={handleClick}\n css={`\n width: 100%;\n text-align: left;\n padding: ${1.25 * GU}px ${2 * GU}px;\n border-radius: 0;\n color: ${theme.content};\n\n ${textStyle('body2')};\n ${\n !header && index === 0 ? `border-top-left-radius: ${RADIUS}px;` : ''\n }\n ${\n index === length - 1\n ? `border-bottom-left-radius: ${RADIUS}px;`\n : ''\n }\n ${\n selected === index\n ? `\n border-left: 2px solid ${theme.accent};\n background: ${theme.surfaceSelected};\n `\n : ''\n }\n\n &:active {\n background: ${theme.surfacePressed};\n }\n `}\n >\n {item}\n </ButtonBase>\n </li>\n )\n})\n\nItem.propTypes = {\n header: PropTypes.node,\n index: PropTypes.number.isRequired,\n item: PropTypes.node.isRequired,\n length: PropTypes.number.isRequired,\n onSelect: PropTypes.func.isRequired,\n selected: PropTypes.number.isRequired,\n theme: PropTypes.object.isRequired,\n}\n\nexport default DropDown\n"],"names":["MIN_WIDTH","useDropDown","buttonRef","items","displayedLabel","onChange","placeholder","selected","useState","selectedLabel","setSelectedLabel","opened","setOpened","close","useCallback","current","focus","toggle","handleItemSelect","index","useEffect","useButtonRef","cb","useRef","refCallback","el","DropDown","React","memo","disabled","header","renderLabel","wide","width","active","label","props","undefined","warnOnce","theme","useTheme","useViewport","vw","split","widthNoPx","buttonWidth","setButtonWidth","measureWidth","setMeasureWidth","Math","min","placeholderMinWidth","setPlaceholderMinWidth","popoverRefCallback","clientWidth","selectedIndex","useMemo","closedWithChanges","Label","Inside","RADIUS","GU","surface","disabledContent","surfaceContent","border","textStyle","surfacePressed","disabledIcon","accent","surfaceIcon","Popover","propTypes","PropTypes","bool","node","arrayOf","isRequired","func","number","string","defaultProps","unselectable","PopoverContent","surfaceContentSecondary","map","item","length","array","Item","onSelect","handleClick","content","surfaceSelected","object"],"mappings":"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"}
\No newline at end of file