UNPKG

@atlaskit/button

Version:

A button triggers an event or action. They let users know what will happen next.

142 lines (139 loc) 6.04 kB
/* split-button.tsx generated by @compiled/babel-plugin v0.39.1 */ import "./split-button.compiled.css"; import * as React from 'react'; import { ax, ix } from "@compiled/react/runtime"; import { fg } from '@atlaskit/platform-feature-flags'; import { SplitButtonContext } from './split-button-context'; import { getActions } from './utils'; var dividerStyles = { baseDivider: "_1bsbe4h9 _kqswh2mm _1pbykb7n", dividerDisabled: "_bfhk9xzm _80om13gf", dividerOffset: "_195g1n1a" }; var dividerAppearanceStyles = { default: "_bfhkmuej", primary: "_bfhkveue _tzy41wzo", navigation: "_1mouu2gc _195g1h5n _4t3i7vkz _bfhkdud1 _tzy419lr" }; var dividerHeightStyles = { default: "_4t3iviql", compact: "_4t3i1k8s" }; // The divider height is calculated by subtracting twice the border width from the button height. // This ensures the divider does not intersect with the button's border, avoiding visual issues // caused by overlapping alpha colors (color.border) at the intersection. var defaultDividerHeightStyles = { default: "_4t3im1ee", compact: "_4t3i1hvu" }; /** * TODO: Add JSDoc */ export var Divider = function Divider(_ref) { var appearance = _ref.appearance, spacing = _ref.spacing, _ref$isDisabled = _ref.isDisabled, isDisabled = _ref$isDisabled === void 0 ? false : _ref$isDisabled; var isDefaultDivider = appearance === 'default' && !isDisabled; return /*#__PURE__*/React.createElement("div", { className: ax([dividerStyles.baseDivider, isDefaultDivider && defaultDividerHeightStyles[spacing], !isDefaultDivider && dividerHeightStyles[spacing], isDisabled && dividerStyles.dividerDisabled, !isDisabled && dividerAppearanceStyles[appearance], dividerStyles.dividerOffset]) }); }; var buttonStyles = { splitButton: "_1e0c116y _kqswh2mm _4cvr1h6o _o5721q9c", primaryButton: "_traeidpf _anlpidpf _p9ykidpf _bepvidpf", secondaryButton: "_1j4hidpf _1553idpf _1qgbidpf _y1n3idpf", defaultAppearanceContainer: "_2rkofajl _12ji1l7x _1cwg1n1a _1qu2nqa1 _12y3t94y", defaultAppearanceContainerT26Shape: "_2rko1qi0", defaultAppearanceDisabledContainer: "_12jibk0g" }; /** * TODO: Add JSdoc */ export var SplitButtonContainer = function SplitButtonContainer(_ref2) { var appearance = _ref2.appearance, children = _ref2.children, _ref2$isDisabled = _ref2.isDisabled, isDisabled = _ref2$isDisabled === void 0 ? false : _ref2$isDisabled; return /*#__PURE__*/React.createElement("div", { className: ax([appearance === 'default' && buttonStyles.defaultAppearanceContainer, appearance === 'default' && fg('platform-dst-shape-theme-default') && buttonStyles.defaultAppearanceContainerT26Shape, appearance === 'default' && isDisabled && buttonStyles.defaultAppearanceDisabledContainer, buttonStyles.splitButton]) }, children); }; /** * __Split Button__ * * A split button lets people perform an action or choose from a small group of similar actions. * * - [Examples](https://atlassian.design/components/button/split-button/examples) * - [Code](https://atlassian.design/components/button/split-button/code) * - [Usage](https://atlassian.design/components/button/split-button/usage) */ export var SplitButton = function SplitButton(_ref3) { var children = _ref3.children, _ref3$appearance = _ref3.appearance, appearance = _ref3$appearance === void 0 ? 'default' : _ref3$appearance, _ref3$spacing = _ref3.spacing, spacing = _ref3$spacing === void 0 ? 'default' : _ref3$spacing, _ref3$isDisabled = _ref3.isDisabled, isDisabled = _ref3$isDisabled === void 0 ? false : _ref3$isDisabled; var _getActions = getActions(children), PrimaryAction = _getActions.PrimaryAction, SecondaryAction = _getActions.SecondaryAction; return /*#__PURE__*/React.createElement(SplitButtonContainer, { appearance: appearance, isDisabled: isDisabled }, /*#__PURE__*/React.createElement(SplitButtonContext.Provider, { value: { appearance: appearance, spacing: spacing, isDisabled: isDisabled } }, /*#__PURE__*/React.createElement("div", { className: ax([buttonStyles.primaryButton]) }, PrimaryAction), /*#__PURE__*/React.createElement(Divider, { appearance: appearance, spacing: spacing, isDisabled: isDisabled }), /*#__PURE__*/React.createElement("div", { className: ax([buttonStyles.secondaryButton]) }, SecondaryAction))); }; // TODO: Fill in the component {description} and ensure links point to the correct {packageName} location. // Remove links that the component does not have (such as usage). If there are no links remove them all. /** * __Split button with slots__ * * A split button with slots {description}. * * - [Examples](https://atlassian.design/components/{packageName}/examples) * - [Code](https://atlassian.design/components/{packageName}/code) * - [Usage](https://atlassian.design/components/{packageName}/usage) */ export var SplitButtonWithSlots = function SplitButtonWithSlots(_ref4) { var primaryAction = _ref4.primaryAction, secondaryAction = _ref4.secondaryAction, _ref4$appearance = _ref4.appearance, appearance = _ref4$appearance === void 0 ? 'default' : _ref4$appearance, _ref4$spacing = _ref4.spacing, spacing = _ref4$spacing === void 0 ? 'default' : _ref4$spacing, _ref4$isDisabled = _ref4.isDisabled, isDisabled = _ref4$isDisabled === void 0 ? false : _ref4$isDisabled; return /*#__PURE__*/React.createElement(SplitButtonContainer, { appearance: appearance, isDisabled: isDisabled }, /*#__PURE__*/React.createElement(SplitButtonContext.Provider, { value: { appearance: appearance, spacing: spacing, isDisabled: isDisabled } }, /*#__PURE__*/React.createElement("div", { className: ax([buttonStyles.primaryButton]) }, primaryAction), /*#__PURE__*/React.createElement(Divider, { appearance: appearance, spacing: spacing, isDisabled: isDisabled }), /*#__PURE__*/React.createElement("div", { className: ax([buttonStyles.secondaryButton]) }, secondaryAction))); };