UNPKG

17.4 kBSource Map (JSON)View Raw
1{"version":3,"file":"Button.js","sources":["../src/components/Button/Button.js"],"sourcesContent":["import React, { useMemo } from 'react'\nimport PropTypes from 'prop-types'\nimport { Inside, useInside } from 'use-inside'\nimport { textStyle, GU, RADIUS } from '../../style'\nimport { useTheme } from '../../theme'\nimport { warn, warnOnce, unselectable } from '../../utils'\nimport { useLayout } from '../Layout/Layout'\nimport ButtonBase from '../ButtonBase/ButtonBase'\n\n// Base styles related to every size.\n// See src/icons/icon-size.js for the corresponding icon sizes.\nconst SIZE_STYLES = {\n medium: {\n textStyleName: 'body2',\n height: 5 * GU,\n padding: 3 * GU,\n iconPadding: 2 * GU,\n minWidth: 14.5 * GU,\n middleSpace: 1 * GU,\n },\n small: {\n textStyleName: 'body2',\n height: 4 * GU,\n padding: 2 * GU,\n iconPadding: 1.5 * GU,\n minWidth: 13 * GU,\n middleSpace: 1 * GU,\n },\n mini: {\n textStyleName: 'body4',\n height: 3 * GU,\n padding: 1.5 * GU,\n iconPadding: 1 * GU,\n minWidth: 9.25 * GU,\n middleSpace: 0.5 * GU,\n },\n}\n\nfunction getPadding(size, displayIcon, displayLabel) {\n const { padding, iconPadding } = SIZE_STYLES[size]\n\n if (displayIcon && !displayLabel) {\n return '0'\n }\n\n if (displayIcon && displayLabel) {\n return `0 ${padding}px 0 ${iconPadding}px`\n }\n\n return `0 ${padding}px`\n}\n\nfunction getWidth(size, displayIconOnly, wide) {\n const { height } = SIZE_STYLES[size]\n\n if (wide) {\n return '100%'\n }\n\n if (displayIconOnly) {\n return `${height}px`\n }\n\n return 'auto'\n}\n\nfunction getMinWidth(size, displayLabelOnly) {\n const { minWidth } = SIZE_STYLES[size]\n return displayLabelOnly ? `${minWidth}px` : '0'\n}\n\n// CSS styles related to the current size\nfunction sizeStyles(size, wide, displayIcon, displayLabel) {\n const { height, textStyleName, middleSpace } = SIZE_STYLES[size]\n\n return {\n height: `${height}px`,\n middleSpace: displayIcon && displayLabel ? `${middleSpace}px` : '0',\n minWidth: getMinWidth(size, !displayIcon && displayLabel),\n padding: getPadding(size, displayIcon, displayLabel),\n textStyleCss: textStyle(textStyleName),\n width: getWidth(size, displayIcon && !displayLabel, wide),\n }\n}\n\n// CSS styles related to the current mode\nfunction modeStyles(theme, mode, disabled) {\n if (disabled) {\n return {\n background: theme.disabled,\n color: theme.disabledContent,\n iconColor: theme.disabledContent,\n border: '0',\n }\n }\n if (mode === 'strong') {\n return {\n background: `\n linear-gradient(\n 190deg,\n ${theme.accentStart} -100%,\n ${theme.accentEnd} 80%\n )\n `,\n color: theme.accentContent,\n iconColor: theme.accentContent,\n border: '0',\n }\n }\n\n if (mode === 'positive') {\n return {\n background: theme.positive,\n color: theme.positiveContent,\n iconColor: theme.positiveContent,\n border: '0',\n }\n }\n\n if (mode === 'negative') {\n return {\n background: theme.negative,\n color: theme.negativeContent,\n iconColor: theme.negativeContent,\n border: '0',\n }\n }\n\n return {\n background: theme.surfaceInteractive,\n color: theme.surfaceContent,\n iconColor: theme.surfaceIcon,\n border: `1px solid ${theme.border}`,\n }\n}\n\nfunction Button({\n children,\n disabled,\n display,\n icon,\n iconOnly,\n innerRef,\n label,\n mode,\n size,\n wide,\n ...props\n}) {\n // backward compatibility and deprecated props\n if (iconOnly) {\n warnOnce(\n 'Button:iconOnly',\n 'Button: \"iconOnly\" is deprecated, please use \"display\".'\n )\n display = 'icon'\n }\n if (mode === 'outline' || mode === 'secondary') {\n warnOnce(\n 'Button:mode',\n `Button: the mode \"${mode}\" is deprecated, please use \"normal\".`\n )\n mode = 'normal'\n }\n if (size === 'normal' || size === 'large') {\n warnOnce(\n 'Button:size',\n `Button: the size \"${size}\" is deprecated, please use \"medium\".`\n )\n size = 'medium'\n }\n\n // prop warnings\n if (display === 'icon' && !icon) {\n warn('Button: the display \"icon\" was used without providing an icon.')\n }\n if (!children && !label) {\n warn('Button: please provide a label.')\n }\n\n const theme = useTheme()\n const { layoutName } = useLayout()\n\n const [insideEmptyStateCard] = useInside('EmptyStateCard')\n const [insideHeaderSecondary] = useInside('Header:secondary')\n\n // Always wide + strong when used as an empty state card action\n if (insideEmptyStateCard) {\n mode = 'strong'\n wide = true\n }\n\n // Alternate between icon and label automatically when used in Header\n if (insideHeaderSecondary && display === 'auto' && icon && label) {\n display = layoutName === 'small' ? 'icon' : 'label'\n }\n\n // Otherwise, display both\n if (display === 'auto') {\n display = 'all'\n }\n\n const displayIcon = icon && (display === 'all' || display === 'icon')\n const displayLabel = label && (display === 'all' || display === 'label')\n\n // Mode styles\n const { background, color, iconColor, border } = useMemo(\n () => modeStyles(theme, mode, disabled),\n [mode, theme, disabled]\n )\n\n // Size styles\n const {\n height,\n middleSpace,\n minWidth,\n padding,\n textStyleCss,\n width,\n } = useMemo(() => sizeStyles(size, wide, displayIcon, displayLabel), [\n size,\n wide,\n displayIcon,\n displayLabel,\n ])\n\n // Use the label as a title when only the icon is displayed\n if (displayIcon && !displayLabel && label && typeof label === 'string') {\n props.title = label\n }\n\n const insideData = { size }\n\n return (\n <ButtonBase\n ref={innerRef}\n focusRingSpacing={border === '0' ? 0 : 1}\n focusRingRadius={RADIUS}\n disabled={disabled}\n {...props}\n css={`\n display: ${wide ? 'flex' : 'inline-flex'};\n align-items: center;\n justify-content: center;\n width: ${width};\n height: ${height};\n min-width: ${minWidth};\n padding: ${padding};\n ${textStyleCss};\n ${unselectable};\n background: ${background};\n color: ${color};\n white-space: nowrap;\n border: ${border};\n box-shadow: ${disabled ? 'none' : '0 1px 3px rgba(0, 0, 0, 0.1)'};\n transition-property: transform, box-shadow;\n transition-duration: 50ms;\n transition-timing-function: ease-in-out;\n &:active {\n transform: ${disabled ? 'none' : 'translateY(1px)'};\n box-shadow: ${disabled ? 'none' : '0px 1px 2px rgba(0, 0, 0, 0.08)'};\n }\n `}\n >\n <Inside name=\"Button\" data={insideData}>\n {children || (\n <React.Fragment>\n {displayIcon && (\n <Inside name=\"Button:icon\" data={insideData}>\n <span\n css={`\n position: relative;\n top: -1px;\n display: flex;\n color: ${iconColor};\n margin-right: ${middleSpace};\n `}\n >\n {icon}\n </span>\n </Inside>\n )}\n {displayLabel && (\n <Inside name=\"Button:label\" data={insideData}>\n {label}\n </Inside>\n )}\n </React.Fragment>\n )}\n </Inside>\n </ButtonBase>\n )\n}\n\nButton.propTypes = {\n children: PropTypes.node,\n disabled: PropTypes.bool,\n display: PropTypes.oneOf(['auto', 'all', 'icon', 'label']),\n icon: PropTypes.node,\n innerRef: PropTypes.any,\n label: PropTypes.string,\n mode: PropTypes.oneOf([\n 'normal',\n 'strong',\n 'positive',\n 'negative',\n\n // deprecated\n 'outline',\n 'secondary',\n 'text',\n ]),\n size: PropTypes.oneOf([\n 'medium',\n 'small',\n 'mini',\n\n // deprecated\n 'large',\n 'normal',\n ]),\n wide: PropTypes.bool,\n\n // deprecated\n iconOnly: PropTypes.bool,\n}\n\nButton.defaultProps = {\n disabled: false,\n display: 'auto',\n mode: 'normal',\n size: 'medium',\n wide: false,\n}\n\nconst ButtonWithRef = React.forwardRef((props, ref) => (\n <Button innerRef={ref} {...props} />\n))\n\nButtonWithRef.Anchor = React.forwardRef((props, ref) => {\n warnOnce(\n 'Button.Anchor',\n 'Button.Anchor is deprecated: please use Button with a href prop instead.'\n )\n return <ButtonWithRef ref={ref} {...props} />\n})\n\nexport default ButtonWithRef\n"],"names":["SIZE_STYLES","medium","textStyleName","height","GU","padding","iconPadding","minWidth","middleSpace","small","mini","getPadding","size","displayIcon","displayLabel","getWidth","displayIconOnly","wide","getMinWidth","displayLabelOnly","sizeStyles","textStyleCss","textStyle","width","modeStyles","theme","mode","disabled","background","color","disabledContent","iconColor","border","accentStart","accentEnd","accentContent","positive","positiveContent","negative","negativeContent","surfaceInteractive","surfaceContent","surfaceIcon","unselectable","Button","children","display","icon","iconOnly","innerRef","label","props","warnOnce","warn","useTheme","useLayout","layoutName","useInside","insideEmptyStateCard","insideHeaderSecondary","useMemo","title","insideData","React","RADIUS","Inside","propTypes","PropTypes","node","bool","oneOf","any","string","defaultProps","ButtonWithRef","forwardRef","ref","Anchor"],"mappings":"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"}
\No newline at end of file