UNPKG

baseui

Version:

A React Component library implementing the Base design language

156 lines (154 loc) • 7.12 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var React = _interopRequireWildcard(require("react")); var _overrides = require("../helpers/overrides"); var _styledComponents = require("./styled-components"); var _reactMovable = require("react-movable"); var _grab = _interopRequireDefault(require("../icon/grab")); var _delete = _interopRequireDefault(require("../icon/delete")); var _focusVisible = require("../utils/focusVisible"); var _layer = require("../layer"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); } function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; } function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); } function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } /* Copyright (c) Uber Technologies, Inc. This source code is licensed under the MIT license found in the LICENSE file in the root directory of this source tree. */ const ItemLayer = ({ children, dragged }) => { if (!dragged) { return /*#__PURE__*/React.createElement(React.Fragment, null, children); } return /*#__PURE__*/React.createElement(_layer.Layer, null, children); }; class StatelessList extends React.Component { constructor(...args) { super(...args); _defineProperty(this, "state", { isFocusVisible: false }); _defineProperty(this, "handleFocus", event => { if ((0, _focusVisible.isFocusVisible)(event)) { this.setState({ isFocusVisible: true }); } }); // eslint-disable-next-line @typescript-eslint/no-unused-vars _defineProperty(this, "handleBlur", event => { if (this.state.isFocusVisible !== false) { this.setState({ isFocusVisible: false }); } }); } render() { const { overrides = {}, items, onChange, removable } = this.props; const { Root: RootOverride, List: ListOverride, Item: ItemOverride, DragHandle: DragHandleOverride, CloseHandle: CloseHandleOverride, Label: LabelOverride } = overrides; const [Root, rootProps] = (0, _overrides.getOverrides)(RootOverride, _styledComponents.Root); const [List, listProps] = (0, _overrides.getOverrides)(ListOverride, _styledComponents.List); const [Item, itemProps] = (0, _overrides.getOverrides)(ItemOverride, _styledComponents.Item); const [DragHandle, dragHandleProps] = (0, _overrides.getOverrides)(DragHandleOverride, _styledComponents.DragHandle); const [CloseHandle, closeHandleProps] = (0, _overrides.getOverrides)(CloseHandleOverride, _styledComponents.CloseHandle); const [Label, labelProps] = (0, _overrides.getOverrides)(LabelOverride, _styledComponents.Label); const isRemovable = this.props.removable || false; const isRemovableByMove = this.props.removableByMove || false; return /*#__PURE__*/React.createElement(Root, _extends({ $isRemovable: isRemovable, "data-baseweb": "dnd-list" }, rootProps, { onFocus: (0, _focusVisible.forkFocus)(rootProps, this.handleFocus), onBlur: (0, _focusVisible.forkBlur)(rootProps, this.handleBlur) }), /*#__PURE__*/React.createElement(_reactMovable.List, { removableByMove: isRemovableByMove, values: items, onChange: onChange, renderList: ({ children, props, isDragged }) => /*#__PURE__*/React.createElement(List, _extends({ $isRemovable: isRemovable, $isDragged: isDragged, ref: props.ref }, listProps), children), renderItem: ({ value, props, isDragged, isSelected, isOutOfBounds, index }) => { const sharedProps = { $isRemovable: isRemovable, $isRemovableByMove: isRemovableByMove, $isDragged: isDragged, $isSelected: isSelected, $isFocusVisible: this.state.isFocusVisible, $isOutOfBounds: isOutOfBounds, $value: value, // @ts-ignore $index: index }; return /*#__PURE__*/React.createElement(ItemLayer, { dragged: isDragged, key: props.key }, /*#__PURE__*/React.createElement(Item, _extends({}, sharedProps, { ref: props.ref, tabIndex: props.tabIndex, "aria-roledescription": props['aria-roledescription'], onKeyDown: props.onKeyDown, onWheel: props.onWheel }, itemProps, { style: { ...props.style, display: 'flex' } }), /*#__PURE__*/React.createElement(DragHandle, _extends({}, sharedProps, dragHandleProps), /*#__PURE__*/React.createElement(_grab.default, { size: 24 })), /*#__PURE__*/React.createElement(Label, _extends({}, sharedProps, labelProps), value), removable && /*#__PURE__*/React.createElement(CloseHandle, _extends({}, sharedProps, { // @ts-ignore onClick: evt => { evt.preventDefault(); onChange && onChange({ oldIndex: typeof index !== 'undefined' ? index : 0, newIndex: -1 }); } }, closeHandleProps), /*#__PURE__*/React.createElement(_delete.default, { size: 24, color: "#CCC" })))); } })); } } _defineProperty(StatelessList, "defaultProps", { items: [], onChange: () => {} }); var _default = exports.default = StatelessList;