UNPKG

@sap-ux/ui-components

Version:

SAP UI Components Library

60 lines 2.06 kB
import * as React from 'react'; import { UIDefaultButton } from './UIDefaultButton.js'; import { UIContextualMenu } from '../UIContextualMenu/index.js'; import { UiIcons } from '../Icons.js'; import { getUIId } from '../../utilities/index.js'; /** * UISplitButton component * * @exports * @class UISplitButton * @extends {React.Component<UISplitButtonProps, UISplitButtonState>} */ export class UISplitButton extends React.Component { /** * Initializes component properties. * * @param {UISplitButtonProps} props */ constructor(props) { super(props); this.id = this.props.id ? this.props.id : getUIId('ui-split-button-'); this.onClick = () => { this.props.callback(this.props.button.key); }; this.onMenuItemClick = (ev, item) => { if (item?.key) { this.props.callback(item.key); } }; this.state = { menu: { items: props.menuItems, onItemClick: this.onMenuItemClick } }; this.onClick = this.onClick.bind(this); } /** * Gets derived state from properties. * * @param {UISplitButtonProps} newProps * @param {UISplitButtonState} prevState * @returns {UISplitButtonState} */ static getDerivedStateFromProps(newProps, prevState) { return { menu: { items: newProps.menuItems, onItemClick: prevState.menu.onItemClick } }; } /** * @returns {JSX.Element} */ render() { return (React.createElement(UIDefaultButton, { ariaLabel: this.props.ariaLabel, ariaDescription: this.props.ariaDescription, id: this.id, className: "ui-split-button", primary: true, split: true, onClick: this.onClick.bind(this), menuProps: this.state.menu, menuIconProps: { iconName: UiIcons.ArrowDown }, menuAs: UIContextualMenu, disabled: this.props.disabled }, this.props.button.text)); } } //# sourceMappingURL=UISplitButton.js.map