UNPKG

@ttk/component

Version:

ttk组件库

608 lines (525 loc) 22.2 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var defineProperty = require('../defineProperty-ad97b418.js'); var index = require('../index-11a467e5.js'); var getPrototypeOf = require('../getPrototypeOf-3a7a3df9.js'); var React = require('react'); var classNames = require('classnames'); var isequal = require('lodash.isequal'); var clonedeep = require('lodash.clonedeep'); var Button = require('../button'); var Tabs = require('../tabs'); var Checkbox = require('../checkbox'); var Icon = require('../icon'); var Input = require('../input'); require('../_commonjsHelpers-badc9712.js'); function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var React__default = /*#__PURE__*/_interopDefaultLegacy(React); var classNames__default = /*#__PURE__*/_interopDefaultLegacy(classNames); var isequal__default = /*#__PURE__*/_interopDefaultLegacy(isequal); var clonedeep__default = /*#__PURE__*/_interopDefaultLegacy(clonedeep); var Button__default = /*#__PURE__*/_interopDefaultLegacy(Button); var Tabs__default = /*#__PURE__*/_interopDefaultLegacy(Tabs); var Checkbox__default = /*#__PURE__*/_interopDefaultLegacy(Checkbox); var Icon__default = /*#__PURE__*/_interopDefaultLegacy(Icon); var Input__default = /*#__PURE__*/_interopDefaultLegacy(Input); function ownKeys$1(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; } function _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$1(Object(source), true).forEach(function (key) { defineProperty._defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$1(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } function _createSuper$1(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$1(); return function _createSuperInternal() { var Super = getPrototypeOf._getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = getPrototypeOf._getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return getPrototypeOf._possibleConstructorReturn(this, result); }; } function _isNativeReflectConstruct$1() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } var ItemOption = /*#__PURE__*/function (_React$Component) { getPrototypeOf._inherits(ItemOption, _React$Component); var _super = _createSuper$1(ItemOption); function ItemOption(props) { var _this; getPrototypeOf._classCallCheck(this, ItemOption); _this = _super.call(this, props); _this.checkAllChecked = function (option, checkedKey) { if (!option) { return false; } var flag = true; option.forEach(function (item) { if (!item[checkedKey]) { flag = false; } }); return flag; }; _this.checkIndeterminate = function () { var _this$state = _this.state, option = _this$state.option, checkAll = _this$state.checkAll; var checkedKey = _this.props.checkedKey; if (checkAll || !option) { return false; } var flag = false; option.forEach(function (item) { if (item[checkedKey]) { flag = true; } }); return flag; }; _this.componentWillUnmount = function () { if (window.removeEventListener) { window.removeEventListener('click', _this.winClick, false); } else if (window.detachEvent) { window.detachEvent('click', _this.winClick); } else { window.onclick = undefined; } }; _this.componentDidMount = function () { if (window.addEventListener) { window.addEventListener('click', _this.winClick, false); } else if (window.attachEvent) { window.attachEvent('click', _this.winClick); } else { window.onclick = _this.winClick; } }; _this.checkInputHidden = function (className) { if (!className) { return true; } else { return !className.includes('ttk-ColumnsSetting-item-input') && !className.includes('ttk-ColumnsSetting-item-action-edit'); } }; _this.winClick = function (e) { if (e && e.target && _this.state.editingKey && _this.checkInputHidden(e.target.className)) { _this.setState({ editingKey: null }); } }; _this.itemClick = function (key, e) { var _this$props = _this.props, singleKey = _this$props.singleKey, checkedKey = _this$props.checkedKey, itemClick = _this$props.itemClick; var option = _this.state.option; var index = option.findIndex(function (item) { return item[singleKey] == key; }); if (index > -1) { option[index][checkedKey] = e.target.checked; _this.setState({ option: option, checkAll: _this.checkAllChecked(option, checkedKey) }); itemClick && itemClick(option, option[index]); } }; _this.exchangeArritemPosition = function (arr, x, y) { var a = arr[x], b = arr[y]; arr[y] = a; arr[x] = b; return arr; }; _this.arrowUp = function (key) { var singleKey = _this.props.singleKey; var option = _this.state.option; var index = option.findIndex(function (item) { return item[singleKey] == key; }); if (index > 0) { _this.setState({ option: _this.exchangeArritemPosition(option, index, index - 1) }); } }; _this.arrowDown = function (key) { var singleKey = _this.props.singleKey; var option = _this.state.option; var index = option.findIndex(function (item) { return item[singleKey] == key; }); if (index < option.length - 1) { _this.setState({ option: _this.exchangeArritemPosition(option, index, index + 1) }); } }; _this.editClick = function (key) { _this.setState({ editingKey: key }); }; _this.inputEdit = function (key, e) { var _this$props2 = _this.props, singleKey = _this$props2.singleKey, labelKey = _this$props2.labelKey; var option = _this.state.option; var index = option.findIndex(function (item) { return item[singleKey] == key; }); option[index][labelKey] = e.target.value; _this.setState({ option: option }); }; _this.renderItem = function (arr) { var _this$props3 = _this.props, itemClassName = _this$props3.itemClassName, labelKey = _this$props3.labelKey, checkedKey = _this$props3.checkedKey, singleKey = _this$props3.singleKey, sort = _this$props3.sort, editName = _this$props3.editName; var editingKey = _this.state.editingKey; var className = classNames__default["default"](defineProperty._defineProperty({ 'ttk-ColumnsSetting-item': true }, itemClassName, !!itemClassName)); return arr.map(function (item) { return /*#__PURE__*/React__default["default"].createElement("div", { className: className, key: item[singleKey] }, /*#__PURE__*/React__default["default"].createElement("div", { className: "ttk-ColumnsSetting-item-container" }, editingKey == item[singleKey] ? /*#__PURE__*/React__default["default"].createElement(Input__default["default"], { className: "ttk-ColumnsSetting-item-input", value: item[labelKey], onChange: function onChange(e) { return _this.inputEdit(item[singleKey], e); } }) : /*#__PURE__*/React__default["default"].createElement(Checkbox__default["default"], { checked: item[checkedKey], disabled: item.isMustSelect == true ? true : false, onChange: function onChange(e) { return _this.itemClick(item[singleKey], e); } }, item[labelKey])), /*#__PURE__*/React__default["default"].createElement("div", { className: "ttk-ColumnsSetting-item-action", style: { textAlign: "right" } }, sort ? /*#__PURE__*/React__default["default"].createElement(Icon__default["default"], { type: "arrow-up", title: "\u4E0A\u79FB", onClick: function onClick() { return _this.arrowUp(item[singleKey]); } }) : null, sort ? /*#__PURE__*/React__default["default"].createElement(Icon__default["default"], { type: "arrow-down", title: "\u4E0B\u79FB", onClick: function onClick() { return _this.arrowDown(item[singleKey]); } }) : null, editName ? /*#__PURE__*/React__default["default"].createElement(Icon__default["default"], { className: "ttk-ColumnsSetting-item-action-edit", fontFamily: "edficon", type: "bianji", title: "\u7F16\u8F91", onClick: function onClick() { return _this.editClick(item[singleKey]); } }) : null)); }); }; _this.getValue = function () { return clonedeep__default["default"](_this.state.option); }; _this.onCheckAllChange = function (e) { var option = _this.state.option; var checkedKey = _this.props.checkedKey; var flag = false; if (!option) { option = []; } option.forEach(function (item) { if (!item[checkedKey]) { flag = true; } }); var value; if (flag) { value = option.map(function (item) { return _objectSpread$1(_objectSpread$1({}, item), {}, defineProperty._defineProperty({}, checkedKey, true)); }); } else { value = option.map(function (item) { return _objectSpread$1(_objectSpread$1({}, item), {}, defineProperty._defineProperty({}, checkedKey, false)); }); } _this.setState({ option: value, checkAll: flag }); }; _this.state = { option: clonedeep__default["default"](props.option) || [], label: '', editingKey: null, checkAll: _this.checkAllChecked(props.option, props.checkedKey) }; return _this; } getPrototypeOf._createClass(ItemOption, [{ key: "componentWillReceiveProps", value: function componentWillReceiveProps(nextProps) { if (!isequal__default["default"](nextProps, this.props)) { this.setState({ option: clonedeep__default["default"](nextProps.option) || [], checkAll: this.checkAllChecked(nextProps.option, nextProps.checkedKey) }); } } }, { key: "render", value: function render() { var props = this.props; var option = this.state.option; classNames__default["default"](defineProperty._defineProperty({ 'ttk-ColumnsSetting': true }, props.className, !!props.className)); return /*#__PURE__*/React__default["default"].createElement("div", { className: "ttk-ColumnsSetting-container" }, /*#__PURE__*/React__default["default"].createElement(Checkbox__default["default"], { indeterminate: this.checkIndeterminate(), onChange: this.onCheckAllChange, checked: this.state.checkAll }, "\u5168\u9009"), this.renderItem(option)); } }]); return ItemOption; }(React__default["default"].Component); function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { defineProperty._defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = getPrototypeOf._getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = getPrototypeOf._getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return getPrototypeOf._possibleConstructorReturn(this, result); }; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } Tabs__default["default"].TabPane; var ColumnsSetting = /*#__PURE__*/function (_PureComponent) { getPrototypeOf._inherits(ColumnsSetting, _PureComponent); var _super = _createSuper(ColumnsSetting); function ColumnsSetting(_props) { var _this; getPrototypeOf._classCallCheck(this, ColumnsSetting); _this = _super.call(this, _props); _this.onOk = /*#__PURE__*/index._asyncToGenerator( /*#__PURE__*/index.regenerator.mark(function _callee() { var option, value; return index.regenerator.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: // const { confirmClick } = this.props option = _this.state.option; value = option.map(function (item) { if (_this.childRef[item.key]) { return _objectSpread(_objectSpread({}, item), {}, { option: _this.childRef[item.key].getValue() }); } return item; }); _this.setState({ option: value }); return _context.abrupt("return", { type: 'confirm', option: clonedeep__default["default"](value) }); case 4: case "end": return _context.stop(); } } }, _callee); })); _this.onCancel = /*#__PURE__*/index._asyncToGenerator( /*#__PURE__*/index.regenerator.mark(function _callee2() { return index.regenerator.wrap(function _callee2$(_context2) { while (1) { switch (_context2.prev = _context2.next) { case 0: case "end": return _context2.stop(); } } }, _callee2); })); _this.getProps = function (props) { var option = props.option, singleKey = props.singleKey, checkedKey = props.checkedKey, labelKey = props.labelKey, sort = props.sort, editName = props.editName, itemClassName = props.itemClassName; return { option: option, singleKey: singleKey, checkedKey: checkedKey, labelKey: labelKey, sort: sort, editName: editName, itemClassName: itemClassName }; }; _this.renderItem = function (arr) { var _this$props = _this.props, itemClassName = _this$props.itemClassName, labelKey = _this$props.labelKey, checkedKey = _this$props.checkedKey, singleKey = _this$props.singleKey, sort = _this$props.sort, editName = _this$props.editName; _this.state.editingKey; classNames__default["default"](defineProperty._defineProperty({ 'ttk-ColumnsSetting-item': true }, itemClassName, !!itemClassName)); var width = 100 / arr.length; var childArr = arr.map(function (item) { var key = item.key ? item.key : item.name; return /*#__PURE__*/React__default["default"].createElement("div", { key: key, style: { width: "".concat(width, "%") }, className: "ttk-ColumnsSetting-modal-item" }, /*#__PURE__*/React__default["default"].createElement("div", { className: "ttk-ColumnsSetting-modal-item-tit" }, item.name), /*#__PURE__*/React__default["default"].createElement(ItemOption, { num: _this.state.num, ref: function ref(child) { return _this.childRef[key] = child; }, option: item.option, labelKey: labelKey, checkedKey: checkedKey, singleKey: singleKey, sort: sort, editName: editName, itemClassName: itemClassName })); }); return /*#__PURE__*/React__default["default"].createElement("div", { className: "ttk-ColumnsSetting-modal" }, /*#__PURE__*/React__default["default"].createElement("span", { className: "ttk-ColumnsSetting-modal-line" }), childArr); }; _this.resetClick = function () { var _this$props2 = _this.props, option = _this$props2.option, resetClick = _this$props2.resetClick; _this.setState({ option: clonedeep__default["default"](option) }); if (_this.props.closeModal) { return _this.props.closeModal({ type: 'reset', option: clonedeep__default["default"](_this.props.option) }); } return resetClick && resetClick(); }; _this.confirmClick = function () { var confirmClick = _this.props.confirmClick; var option = _this.state.option; var value = option.map(function (item) { var key = item.key ? item.key : item.name; if (_this.childRef[key]) { return _objectSpread(_objectSpread({}, item), {}, { option: _this.childRef[key].getValue() }); } return item; }); _this.setState({ option: value }); if (_this.props.closeModal) { return _this.props.closeModal({ type: 'confirm', option: clonedeep__default["default"](value) }); } return confirmClick && confirmClick(value); }; _this.cancelClick = function () { var _this$props3 = _this.props, cancelClick = _this$props3.cancelClick, option = _this$props3.option; _this.setState({ option: clonedeep__default["default"](option), num: Math.random() }); if (_this.props.closeModal) { return _this.props.closeModal({ type: 'cancel', option: clonedeep__default["default"](_this.props.option) }); } return cancelClick && cancelClick(); }; _this.state = { option: clonedeep__default["default"](_props.option) || [], num: 0 //该字段的作用是itemoption组件重新实例()。 }; _this.childRef = {}; if (_props.setOkListener) { _props.setOkListener(_this.onOk); } if (_props.setCancelLister) { _props.setCancelLister(_this.onCancel); } return _this; } getPrototypeOf._createClass(ColumnsSetting, [{ key: "componentWillReceiveProps", value: function componentWillReceiveProps(nextProps) { var nextOption = this.getProps(nextProps); var preOption = this.getProps(this.props); if (!isequal__default["default"](nextOption, preOption)) { this.setState({ option: clonedeep__default["default"](nextProps.option) || [] }); } } }, { key: "render", value: function render() { var props = this.props; var option = this.state.option; var className = classNames__default["default"](defineProperty._defineProperty({ 'ttk-ColumnsSetting': true }, props.className, !!props.className)); return /*#__PURE__*/React__default["default"].createElement("div", { className: className, style: { paddingBottom: 0, paddingTop: 0 } }, /*#__PURE__*/React__default["default"].createElement("div", { className: "ttk-ColumnsSetting-container" }, this.renderItem(option)), /*#__PURE__*/React__default["default"].createElement("div", { className: "ttk-ColumnsSetting-footer", style: { marginTop: 12 } }, /*#__PURE__*/React__default["default"].createElement("span", { className: "ttk-ColumnsSetting-footer-line" }), /*#__PURE__*/React__default["default"].createElement(Button__default["default"], { style: { width: 60 }, onClick: this.cancelClick }, "\u53D6\u6D88"), /*#__PURE__*/React__default["default"].createElement(Button__default["default"], { style: { width: 60 }, onClick: this.resetClick }, "\u91CD\u7F6E"), /*#__PURE__*/React__default["default"].createElement(Button__default["default"], { style: { width: 60 }, type: "primary", onClick: this.confirmClick }, "\u786E\u5B9A")) ); } }]); return ColumnsSetting; }(React.PureComponent); exports["default"] = ColumnsSetting;