UNPKG

@wix/design-system

Version:

@wix/design-system

306 lines (305 loc) 13.1 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); exports.__esModule = true; exports.default = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _react = _interopRequireWildcard(require("react")); var _TableListItem = require("./TableListItem.constants"); var _TableListItemSt = require("./TableListItem.st.css.js"); var _Checkbox = _interopRequireDefault(require("../Checkbox")); var _DragHandle = require("../DragHandle/DragHandle"); var _forkRef = require("../utils/forkRef"); var _useDraggableContainer = require("../DraggableContainer/useDraggableContainer"); var _system = require("@wix/wix-ui-icons-common/system"); var _context = require("../WixDesignSystemProvider/context"); var _WixDesignSystemIconThemeProvider = require("../WixDesignSystemIconThemeProvider"); var _WixDesignSystemDefaultPropsProvider = require("../WixDesignSystemDefaultPropsProvider"); var _jsxFileName = "/home/builduser/work/57e038ea7326c1ec/packages/wix-design-system/dist/cjs/TableListItem/TableListItem.tsx"; function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); } var getWidthStyle = options => options.reduce((acc, _ref) => { var width = _ref.width; return "".concat(acc, " ").concat(typeof width === 'number' ? width + 'px' : width || '1fr'); }, ''); var TableListItem = /*#__PURE__*/(0, _react.forwardRef)((props, ref) => { var Icons = (0, _WixDesignSystemIconThemeProvider.useIcons)('TableListItem', { CaretRight: _system.CaretRight }); var _useDefaultProps = (0, _WixDesignSystemDefaultPropsProvider.useDefaultProps)('TableListItem', props), options = _useDefaultProps.options, _useDefaultProps$vert = _useDefaultProps.verticalPadding, verticalPadding = _useDefaultProps$vert === void 0 ? _TableListItem.PADDING.small : _useDefaultProps$vert, _useDefaultProps$hori = _useDefaultProps.horizontalPadding, horizontalPadding = _useDefaultProps$hori === void 0 ? _TableListItem.PADDING.large : _useDefaultProps$hori, _useDefaultProps$sele = _useDefaultProps.selectable, selectable = _useDefaultProps$sele === void 0 ? false : _useDefaultProps$sele, _useDefaultProps$chec = _useDefaultProps.checkbox, checkbox = _useDefaultProps$chec === void 0 ? false : _useDefaultProps$chec, checkboxDisabled = _useDefaultProps.checkboxDisabled, checkboxTooltipContent = _useDefaultProps.checkboxTooltipContent, checkboxTooltipProps = _useDefaultProps.checkboxTooltipProps, checked = _useDefaultProps.checked, _useDefaultProps$onCh = _useDefaultProps.onCheckboxChange, onCheckboxChange = _useDefaultProps$onCh === void 0 ? () => {} : _useDefaultProps$onCh, focused = _useDefaultProps.focused, onBlur = _useDefaultProps.onBlur, onFocus = _useDefaultProps.onFocus, _useDefaultProps$show = _useDefaultProps.showDivider, showDivider = _useDefaultProps$show === void 0 ? false : _useDefaultProps$show, onKeyUp = _useDefaultProps.onKeyUp, onClick = _useDefaultProps.onClick, onContextMenu = _useDefaultProps.onContextMenu, onMouseEnter = _useDefaultProps.onMouseEnter, onMouseLeave = _useDefaultProps.onMouseLeave, className = _useDefaultProps.className, dataHook = _useDefaultProps.dataHook, _useDefaultProps$drag = _useDefaultProps.draggable, draggable = _useDefaultProps$drag === void 0 ? false : _useDefaultProps$drag, dragging = _useDefaultProps.dragging, dragDisabled = _useDefaultProps.dragDisabled, dragHandleProps = _useDefaultProps.dragHandleProps, hideDragHandle = _useDefaultProps.hideDragHandle, _useDefaultProps$drag2 = _useDefaultProps.dragHandleSize, dragHandleSize = _useDefaultProps$drag2 === void 0 ? 'large' : _useDefaultProps$drag2, _useDefaultProps$show2 = _useDefaultProps.showDragHandleOnHover, showDragHandleOnHover = _useDefaultProps$show2 === void 0 ? false : _useDefaultProps$show2, _useDefaultProps$bord = _useDefaultProps.border, border = _useDefaultProps$bord === void 0 ? false : _useDefaultProps$bord, borderRadius = _useDefaultProps.borderRadius, _useDefaultProps$show3 = _useDefaultProps.showSelectionBorder, showSelectionBorder = _useDefaultProps$show3 === void 0 ? true : _useDefaultProps$show3, _useDefaultProps$expa = _useDefaultProps.expandable, expandable = _useDefaultProps$expa === void 0 ? false : _useDefaultProps$expa, expandDisabled = _useDefaultProps.expandDisabled, reserveExpandHandleSpace = _useDefaultProps.reserveExpandHandleSpace, reserveDragHandleSpace = _useDefaultProps.reserveDragHandleSpace, onClickExpand = _useDefaultProps.onClickExpand, _useDefaultProps$expa2 = _useDefaultProps.expanded, expanded = _useDefaultProps$expa2 === void 0 ? false : _useDefaultProps$expa2, ariaLabel = _useDefaultProps.ariaLabel; var _useContext = (0, _react.useContext)(_context.WixDesignSystemContext), mobile = _useContext.mobile; var draggableRef = (0, _react.useRef)(null); var rootRef = (0, _react.useRef)(null); var hasControls = draggable || expandable || checkbox || reserveExpandHandleSpace || reserveDragHandleSpace; var isSelectableWithoutCheckbox = !!(selectable && onClick && !checkbox); var noVisibleControls = hideDragHandle && !expandable && !checkbox && !reserveExpandHandleSpace && !reserveDragHandleSpace; _react.default.useEffect(() => { if (draggableRef.current && focused) { draggableRef.current.focus(); } }, [draggableRef, focused]); _react.default.useImperativeHandle(ref, () => ({ focus: () => rootRef.current && rootRef.current.focus() })); var _useDraggableContaine = (0, _useDraggableContainer.useDraggableContainer)({ dragging, draggable, dragDisabled, highlight: true }), draggableContainerClassName = _useDraggableContaine.className; function selectItem(e) { if (e.key === 'Enter' && document.activeElement === (rootRef == null ? void 0 : rootRef.current)) { onClick == null || onClick(e); } } function interceptOnClickExpand(e) { onClickExpand == null || onClickExpand(e); e.stopPropagation(); } var ExpandHandle = _ref2 => { var children = _ref2.children; if (expandable) { return /*#__PURE__*/_react.default.createElement("div", { className: (0, _TableListItemSt.st)(_TableListItemSt.classes.expandHandle, { expandable: expandable && !expandDisabled }), onClick: expandDisabled ? undefined : interceptOnClickExpand, "data-hook": _TableListItem.DATA_HOOKS.tableListItemExpandHandleContainer, __self: void 0, __source: { fileName: _jsxFileName, lineNumber: 115, columnNumber: 9 } }, children); } if (reserveExpandHandleSpace) { return /*#__PURE__*/_react.default.createElement("div", { className: (0, _TableListItemSt.st)(_TableListItemSt.classes.expandHandle, { hidden: reserveExpandHandleSpace }), __self: void 0, __source: { fileName: _jsxFileName, lineNumber: 129, columnNumber: 9 } }, children); } return null; }; return /*#__PURE__*/_react.default.createElement("div", { ref: rootRef, "data-hook": dataHook, className: (0, _TableListItemSt.st)(_TableListItemSt.classes.root, { draggable: draggable && !dragDisabled, dragDisabled, dragging, showDragHandleOnHover, checked: (checkbox || selectable) && checked, showDivider, clickable: !!onClick, selectable: isSelectableWithoutCheckbox, verticalPadding, horizontalPadding, border, borderRadius, showSelectionBorder, dragHandleSize, hideDragHandle, noVisibleControls, mobile }, className, draggableContainerClassName), tabIndex: !isSelectableWithoutCheckbox ? -1 : 0, "aria-label": !isSelectableWithoutCheckbox ? undefined : ariaLabel, "aria-selected": !isSelectableWithoutCheckbox ? undefined : checked, onKeyDown: !isSelectableWithoutCheckbox ? undefined : e => selectItem(e), onFocus: onFocus, onBlur: onBlur, onMouseEnter: onMouseEnter, onMouseLeave: onMouseLeave, onClick: onClick, onContextMenu: onContextMenu, __self: void 0, __source: { fileName: _jsxFileName, lineNumber: 143, columnNumber: 5 } }, hasControls && /*#__PURE__*/_react.default.createElement("div", { className: (0, _TableListItemSt.st)(_TableListItemSt.classes.controlsContainer, { dragHandleSize }), __self: void 0, __source: { fileName: _jsxFileName, lineNumber: 182, columnNumber: 9 } }, draggable ? /*#__PURE__*/_react.default.createElement("div", { className: _TableListItemSt.classes.handleContainer, __self: void 0, __source: { fileName: _jsxFileName, lineNumber: 184, columnNumber: 13 } }, /*#__PURE__*/_react.default.createElement(_DragHandle.DragHandle, (0, _extends2.default)({ tabIndex: onKeyUp ? 0 : undefined }, dragHandleProps, { domRef: (0, _forkRef.forkRef)(draggableRef, (dragHandleProps == null ? void 0 : dragHandleProps.domRef) || null), onBlur: onBlur, onKeyUp: onKeyUp, dragging: dragging, disabled: dragDisabled, dataHook: _TableListItem.DATA_HOOKS.tableListItemDragHandle, dragHandleSize: dragHandleSize, __self: void 0, __source: { fileName: _jsxFileName, lineNumber: 185, columnNumber: 15 } }))) : reserveDragHandleSpace ? /*#__PURE__*/_react.default.createElement("div", { className: (0, _TableListItemSt.st)(_TableListItemSt.classes.handleContainer, { hidden: reserveDragHandleSpace }), __self: void 0, __source: { fileName: _jsxFileName, lineNumber: 198, columnNumber: 13 } }, /*#__PURE__*/_react.default.createElement(_DragHandle.DragHandle, { dragHandleSize: dragHandleSize, __self: void 0, __source: { fileName: _jsxFileName, lineNumber: 203, columnNumber: 15 } })) : null, /*#__PURE__*/_react.default.createElement(ExpandHandle, { __self: void 0, __source: { fileName: _jsxFileName, lineNumber: 207, columnNumber: 11 } }, /*#__PURE__*/_react.default.createElement(Icons.CaretRight, { className: (0, _TableListItemSt.st)(_TableListItemSt.classes.caretIcon, { expanded }), __self: void 0, __source: { fileName: _jsxFileName, lineNumber: 208, columnNumber: 13 } })), checkbox && /*#__PURE__*/_react.default.createElement("div", { className: (0, _TableListItemSt.st)(_TableListItemSt.classes.checkbox, { checkboxDisabled }), "data-hook": _TableListItem.DATA_HOOKS.tableListItemCheckboxContainer, __self: void 0, __source: { fileName: _jsxFileName, lineNumber: 212, columnNumber: 13 } }, /*#__PURE__*/_react.default.createElement(_Checkbox.default, { checked: checked, disabled: checkboxDisabled, onChange: checkboxDisabled ? undefined : onCheckboxChange, dataHook: _TableListItem.DATA_HOOKS.tableListItemCheckbox, tooltipContent: checkboxTooltipContent, tooltipProps: checkboxTooltipProps, __self: void 0, __source: { fileName: _jsxFileName, lineNumber: 216, columnNumber: 15 } }))), /*#__PURE__*/_react.default.createElement("div", { className: _TableListItemSt.classes.optionsContainer, style: { gridTemplateColumns: getWidthStyle(options) }, "data-hook": _TableListItem.DATA_HOOKS.tableListItemOptionsContainer, __self: void 0, __source: { fileName: _jsxFileName, lineNumber: 228, columnNumber: 7 } }, options.map((_ref3, index) => { var value = _ref3.value, align = _ref3.align; return /*#__PURE__*/_react.default.createElement("div", { className: (0, _TableListItemSt.st)(_TableListItemSt.classes.align, { position: align && _TableListItem.ALIGN[align] }), key: index, "data-hook": _TableListItem.DATA_HOOKS.tableListItemValue, __self: void 0, __source: { fileName: _jsxFileName, lineNumber: 236, columnNumber: 11 } }, value); }))); }); TableListItem.displayName = 'TableListItem'; var _default = exports.default = TableListItem; //# sourceMappingURL=TableListItem.js.map