UNPKG

office-ui-fabric-react

Version:

Reusable React components for building experiences for Office 365.

110 lines 5.41 kB
import * as tslib_1 from "tslib"; import * as React from 'react'; import { autobind, customizable } from '../../Utilities'; import { getColorFromString } from '../../utilities/color/colors'; import { GridCell } from '../../utilities/grid/GridCell'; import { getStyles as getActionButtonStyles } from '../Button/ActionButton/ActionButton.styles'; import { mergeStyleSets } from '../../Styling'; import { classNamesFunction } from '../../Utilities'; var getClassNames = classNamesFunction(); var ColorCell = /** @class */ (function (_super) { tslib_1.__extends(ColorCell, _super); function ColorCell() { return _super !== null && _super.apply(this, arguments) || this; } return ColorCell; }(GridCell)); var ColorPickerGridCellBase = /** @class */ (function (_super) { tslib_1.__extends(ColorPickerGridCellBase, _super); function ColorPickerGridCellBase() { return _super !== null && _super.apply(this, arguments) || this; } ColorPickerGridCellBase.prototype.render = function () { var _a = this.props, item = _a.item, id = _a.id, selected = _a.selected, disabled = _a.disabled, getStyles = _a.getStyles, theme = _a.theme, circle = _a.circle, color = _a.color, onClick = _a.onClick, onHover = _a.onHover, onFocus = _a.onFocus, onMouseEnter = _a.onMouseEnter, onMouseMove = _a.onMouseMove, onMouseLeave = _a.onMouseLeave, onWheel = _a.onWheel, onKeyDown = _a.onKeyDown; this._classNames = getClassNames(getStyles, { theme: theme, disabled: disabled, selected: selected, circle: circle, isWhite: this._isWhiteCell(color) }); return (React.createElement(ColorCell, { item: item, id: id + "-" + item.id + "-" + item.index, key: item.id, disabled: disabled, role: 'gridcell', onRenderItem: this._onRenderColorOption, selected: selected, onClick: onClick, onHover: onHover, onFocus: onFocus, label: item.label, className: this._classNames.colorCell, getClassNames: this._getClassNames, index: item.index, onMouseEnter: onMouseEnter, onMouseMove: onMouseMove, onMouseLeave: onMouseLeave, onWheel: onWheel, onKeyDown: onKeyDown })); }; /** * Render the core of a color cell * @returns {JSX.Element} - Element representing the core of the item */ ColorPickerGridCellBase.prototype._onRenderColorOption = function (colorOption) { // Build an SVG for the cell with the given shape and color properties return (React.createElement("svg", { className: this._classNames.svg, viewBox: '0 0 20 20', fill: getColorFromString(colorOption.color).str }, this.props.circle ? React.createElement("circle", { cx: '50%', cy: '50%', r: '50%' }) : React.createElement("rect", { width: '100%', height: '100%' }))); }; /** * Validate if the cell's color is white or not to apply whiteCell style * @param inputColor - The color of the current cell * @returns - Whether the cell's color is white or not. */ ColorPickerGridCellBase.prototype._isWhiteCell = function (inputColor) { return inputColor.toLocaleLowerCase() === '#ffffff'; }; /** * Method to override the getClassNames func in a button. */ ColorPickerGridCellBase.prototype._getClassNames = function (theme, className, variantClassName, iconClassName, menuIconClassName, disabled, checked, expanded, isSplit) { var styles = getActionButtonStyles(theme); return mergeStyleSets(this._classNames, { root: [ 'ms-Button', styles.root, variantClassName, className, checked && [ 'is-checked', styles.rootChecked ], disabled && [ 'is-disabled', styles.rootDisabled ], !disabled && !checked && { selectors: { ':hover': styles.rootHovered, ':focus': styles.rootFocused, ':active': styles.rootPressed, } }, disabled && checked && [ styles.rootCheckedDisabled ], !disabled && checked && { selectors: { ':hover': styles.rootCheckedHovered, ':active': styles.rootCheckedPressed } } ], flexContainer: [ 'ms-Button-flexContainer', styles.flexContainer ] }); }; ColorPickerGridCellBase.defaultProps = { circle: true, disabled: false, selected: false, }; tslib_1.__decorate([ autobind ], ColorPickerGridCellBase.prototype, "_onRenderColorOption", null); tslib_1.__decorate([ autobind ], ColorPickerGridCellBase.prototype, "_getClassNames", null); ColorPickerGridCellBase = tslib_1.__decorate([ customizable('ColorPickerGridCell', ['theme']) ], ColorPickerGridCellBase); return ColorPickerGridCellBase; }(React.Component)); export { ColorPickerGridCellBase }; //# sourceMappingURL=ColorPickerGridCell.base.js.map